diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 60fe82d86c..62e7186360 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -108,7 +108,7 @@ For bug reports, the next step is that one of the core LAMMPS developers will se For submitting pull requests, there is a [detailed tutorial](https://lammps.sandia.gov/doc/Howto_github.html) in the LAMMPS manual. Thus only a brief breakdown of the steps is presented here. Please note, that the LAMMPS developers are still reviewing and trying to improve the process. If you are unsure about something, do not hesitate to post a question on the lammps-users mailing list or contact one fo the core LAMMPS developers. Immediately after the submission, the LAMMPS continuing integration server at ci.lammps.org will download your submitted branch and perform a simple compilation test, i.e. will test whether your submitted code can be compiled under various conditions. It will also do a check on whether your included documentation translates cleanly. Whether these tests are successful or fail will be recorded. If a test fails, please inspect the corresponding output on the CI server and take the necessary steps, if needed, so that the code can compile cleanly again. The test will be re-run each the pull request is updated with a push to the remote branch on GitHub. -Next a LAMMPS core developer will self-assign and do an overall technical assessment of the submission. If you are not yet registered as a LAMMPS collaborator, you will receive an invitation for that. As part of the assesment, the pull request will be categorized with labels. There are two special labels: `needs_work` (indicates that work from the submitter of the pull request is needed) and `work_in_progress` (indicates, that the assigned LAMMPS developer will make changes, if not done by the contributor who made the submit). +Next a LAMMPS core developer will self-assign and do an overall technical assessment of the submission. If you are not yet registered as a LAMMPS collaborator, you will receive an invitation for that. As part of the assessment, the pull request will be categorized with labels. There are two special labels: `needs_work` (indicates that work from the submitter of the pull request is needed) and `work_in_progress` (indicates, that the assigned LAMMPS developer will make changes, if not done by the contributor who made the submit). You may also receive comments and suggestions on the overall submission or specific details and on occasion specific requests for changes as part of the review. If permitted, also additional changes may be pushed into your pull request branch or a pull request may be filed in your LAMMPS fork on GitHub to include those changes. The LAMMPS developer may then decide to assign the pull request to another developer (e.g. when that developer is more knowledgeable about the submitted feature or enhancement or has written the modified code). It may also happen, that additional developers are requested to provide a review and approve the changes. For submissions, that may change the general behavior of LAMMPS, or where a possibility of unwanted side effects exists, additional tests may be requested by the assigned developer. If the assigned developer is satisfied and considers the submission ready for inclusion into LAMMPS, the pull request will receive approvals and be merged into the master branch by one of the core LAMMPS developers. After the pull request is merged, you may delete the feature branch used for the pull request in your personal LAMMPS fork. diff --git a/cmake/Modules/Documentation.cmake b/cmake/Modules/Documentation.cmake index 6125155ad5..189c32e301 100644 --- a/cmake/Modules/Documentation.cmake +++ b/cmake/Modules/Documentation.cmake @@ -57,20 +57,14 @@ if(BUILD_DOC) # download mathjax distribution and unpack to folder "mathjax" if(NOT EXISTS ${DOC_BUILD_STATIC_DIR}/mathjax/es5) - file(DOWNLOAD "https://github.com/mathjax/MathJax/archive/3.0.5.tar.gz" + file(DOWNLOAD "https://github.com/mathjax/MathJax/archive/3.1.2.tar.gz" "${CMAKE_CURRENT_BINARY_DIR}/mathjax.tar.gz" - EXPECTED_MD5 5d9d3799cce77a1a95eee6be04eb68e7) + EXPECTED_MD5 a4a6a093a89bc2ccab1452d766b98e53) execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf mathjax.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) file(GLOB MATHJAX_VERSION_DIR ${CMAKE_CURRENT_BINARY_DIR}/MathJax-*) execute_process(COMMAND ${CMAKE_COMMAND} -E rename ${MATHJAX_VERSION_DIR} ${DOC_BUILD_STATIC_DIR}/mathjax) endif() - # for increased browser compatibility - if(NOT EXISTS ${DOC_BUILD_STATIC_DIR}/polyfill.js) - file(DOWNLOAD "https://polyfill.io/v3/polyfill.min.js?features=es6" - "${DOC_BUILD_STATIC_DIR}/polyfill.js") - endif() - # set up doxygen and add targets to run it file(MAKE_DIRECTORY ${DOXYGEN_BUILD_DIR}) file(COPY ${LAMMPS_DOC_DIR}/doxygen/lammps-logo.png DESTINATION ${DOXYGEN_BUILD_DIR}/lammps-logo.png) diff --git a/cmake/Modules/Tools.cmake b/cmake/Modules/Tools.cmake index d033681c79..078b4ebcf4 100644 --- a/cmake/Modules/Tools.cmake +++ b/cmake/Modules/Tools.cmake @@ -34,13 +34,24 @@ if(BUILD_LAMMPS_SHELL) if(NOT LAMMPS_EXCEPTIONS) message(WARNING "The LAMMPS shell needs LAMMPS_EXCEPTIONS enabled for full functionality") endif() - add_executable(lammps-shell ${LAMMPS_TOOLS_DIR}/lammps-shell/lammps-shell.cpp) + + # include resource compiler to embed icons into the executable on Windows + if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + enable_language(RC) + set(ICON_RC_FILE ${LAMMPS_TOOLS_DIR}/lammps-shell/lmpicons.rc) + endif() + + add_executable(lammps-shell ${LAMMPS_TOOLS_DIR}/lammps-shell/lammps-shell.cpp ${ICON_RC_FILE}) + target_include_directories(lammps-shell PRIVATE ${LAMMPS_TOOLS_DIR}/lammps-shell) + # workaround for broken readline pkg-config file on FreeBSD if(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) target_include_directories(lammps-shell PRIVATE /usr/local/include) endif() target_link_libraries(lammps-shell PRIVATE lammps PkgConfig::READLINE) install(TARGETS lammps-shell EXPORT LAMMPS_Targets DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(DIRECTORY ${LAMMPS_TOOLS_DIR}/lammps-shell/icons DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/) + install(FILES ${LAMMPS_TOOLS_DIR}/lammps-shell/lammps-shell.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications/) endif() diff --git a/cmake/Modules/YAML.cmake b/cmake/Modules/YAML.cmake new file mode 100644 index 0000000000..a080b566be --- /dev/null +++ b/cmake/Modules/YAML.cmake @@ -0,0 +1,32 @@ +message(STATUS "Downloading and building YAML library") + +include(ExternalProject) +set(YAML_URL "https://pyyaml.org/download/libyaml/yaml-0.2.5.tar.gz" CACHE STRING "URL for libyaml tarball") +mark_as_advanced(YAML_URL) +ExternalProject_Add(libyaml + URL ${YAML_URL} + URL_MD5 bb15429d8fb787e7d3f1c83ae129a999 + SOURCE_DIR "${CMAKE_BINARY_DIR}/yaml-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/yaml-build" + CONFIGURE_COMMAND /configure ${CONFIGURE_REQUEST_PIC} + CXX=${CMAKE_CXX_COMPILER} + CC=${CMAKE_C_COMPILER} + --prefix= --disable-shared + BUILD_BYPRODUCTS /lib/${CMAKE_FIND_LIBRARY_PREFIXES}yaml.a + TEST_COMMAND "") + +ExternalProject_Get_Property(libyaml INSTALL_DIR) +set(YAML_INCLUDE_DIR ${INSTALL_DIR}/include) +set(YAML_LIBRARY_DIR ${INSTALL_DIR}/lib) + +# workaround for CMake 3.10 on ubuntu 18.04 +file(MAKE_DIRECTORY ${YAML_INCLUDE_DIR}) +file(MAKE_DIRECTORY ${YAML_LIBRARY_DIR}) + +set(YAML_LIBRARY_PATH ${INSTALL_DIR}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}yaml.a) + +add_library(Yaml::Yaml UNKNOWN IMPORTED) +set_target_properties(Yaml::Yaml PROPERTIES + IMPORTED_LOCATION ${YAML_LIBRARY_PATH} + INTERFACE_INCLUDE_DIRECTORIES ${YAML_INCLUDE_DIR}) +add_dependencies(Yaml::Yaml libyaml) diff --git a/cmake/Modules/generate_lmpgitversion.cmake b/cmake/Modules/generate_lmpgitversion.cmake index afd4447867..4ff01c7501 100644 --- a/cmake/Modules/generate_lmpgitversion.cmake +++ b/cmake/Modules/generate_lmpgitversion.cmake @@ -7,17 +7,20 @@ set(temp_git_info "false") message(STATUS "Git Directory: ${LAMMPS_DIR}/.git") if(GIT_FOUND AND EXISTS ${LAMMPS_DIR}/.git) set(temp_git_info "true") - execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} rev-parse HEAD + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD OUTPUT_VARIABLE temp_git_commit ERROR_QUIET + WORKING_DIRECTORY ${LAMMPS_DIR} OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} rev-parse --abbrev-ref HEAD + execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD OUTPUT_VARIABLE temp_git_branch ERROR_QUIET + WORKING_DIRECTORY ${LAMMPS_DIR} OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${GIT_EXECUTABLE} -C ${LAMMPS_DIR} describe --dirty=-modified + execute_process(COMMAND ${GIT_EXECUTABLE} describe --dirty=-modified OUTPUT_VARIABLE temp_git_describe ERROR_QUIET + WORKING_DIRECTORY ${LAMMPS_DIR} OUTPUT_STRIP_TRAILING_WHITESPACE) endif() diff --git a/doc/Makefile b/doc/Makefile index 18fba1bab4..59700f03aa 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -14,7 +14,6 @@ TXT2RST = $(VENV)/bin/txt2rst ANCHORCHECK = $(VENV)/bin/rst_anchor_check SPHINXCONFIG = $(BUILDDIR)/utils/sphinx-config MATHJAX = $(SPHINXCONFIG)/_static/mathjax -POLYFILL = $(SPHINXCONFIG)/_static/polyfill.js PYTHON = $(shell which python3) DOXYGEN = $(shell which doxygen) @@ -81,7 +80,7 @@ help: # ------------------------------------------ clean-all: clean - rm -rf $(BUILDDIR)/docenv $(MATHJAX) $(POLYFILL) $(BUILDDIR)/LAMMPS.mobi $(BUILDDIR)/LAMMPS.epub $(BUILDDIR)/Manual.pdf + rm -rf $(BUILDDIR)/docenv $(MATHJAX) $(BUILDDIR)/LAMMPS.mobi $(BUILDDIR)/LAMMPS.epub $(BUILDDIR)/Manual.pdf clean: clean-spelling rm -rf $(BUILDDIR)/html $(BUILDDIR)/epub $(BUILDDIR)/latex $(BUILDDIR)/doctrees $(BUILDDIR)/doxygen/xml $(BUILDDIR)/doxygen-warn.log $(BUILDDIR)/doxygen/Doxyfile $(SPHINXCONFIG)/conf.py @@ -95,7 +94,7 @@ $(SPHINXCONFIG)/conf.py: $(SPHINXCONFIG)/conf.py.in -e 's,@LAMMPS_PYTHON_DIR@,$(BUILDDIR)/../python,g' \ -e 's,@LAMMPS_DOC_DIR@,$(BUILDDIR),g' $< > $@ -html: xmlgen $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX) $(POLYFILL) +html: xmlgen $(SPHINXCONFIG)/conf.py $(ANCHORCHECK) $(MATHJAX) @if [ "$(HAS_BASH)" == "NO" ] ; then echo "bash was not found at $(OSHELL)! Please use: $(MAKE) SHELL=/path/to/bash" 1>&2; exit 1; fi @$(MAKE) $(MFLAGS) -C graphviz all @(\ @@ -237,13 +236,6 @@ $(VENV): $(MATHJAX): @git clone --depth 1 https://github.com/mathjax/MathJax.git $@ -# fall back to using wget and/or unencrypted download, if curl fails -$(POLYFILL): $(MATHJAX) - @curl -s -o $@ "https://polyfill.io/v3/polyfill.min.js?features=es6" > /dev/null 2>&1 || \ - curl -s -o $@ "http://polyfill.io/v3/polyfill.min.js?features=es6" > /dev/null 2>&1 || \ - wget -O $@ "https://polyfill.io/v3/polyfill.min.js?features=es6" > /dev/null 2>&1 || \ - wget -O $@ "http://polyfill.io/v3/polyfill.min.js?features=es6" > /dev/null 2>&1 - $(TXT2RST) $(ANCHORCHECK): $(VENV) @( \ . $(VENV)/bin/activate; \ diff --git a/doc/github-development-workflow.md b/doc/github-development-workflow.md index a7d41dd32a..c34a67dfcf 100644 --- a/doc/github-development-workflow.md +++ b/doc/github-development-workflow.md @@ -95,7 +95,7 @@ on the pull request discussion page on GitHub, so that other developers can later review the entire discussion after the fact and understand the rationale behind choices made. Exceptions to this policy are technical discussions, that are centered on tools or policies themselves -(git, github, c++) rather than on the content of the pull request. +(git, GitHub, c++) rather than on the content of the pull request. ### Checklist for Pull Requests diff --git a/doc/lammps.1 b/doc/lammps.1 index 970da8c313..9490b71155 100644 --- a/doc/lammps.1 +++ b/doc/lammps.1 @@ -1,4 +1,4 @@ -.TH LAMMPS "9 October 2020" "2020-10-09" +.TH LAMMPS "29 October 2020" "2020-10-29" .SH NAME .B LAMMPS \- Molecular Dynamics Simulator. diff --git a/doc/src/Build_development.rst b/doc/src/Build_development.rst index cf3e2fb750..1b076caac0 100644 --- a/doc/src/Build_development.rst +++ b/doc/src/Build_development.rst @@ -111,8 +111,10 @@ error margin). The status of this automated testing can be viewed on The unit testing facility is integrated into the CMake build process of the LAMMPS source code distribution itself. It can be enabled by setting ``-D ENABLE_TESTING=on`` during the CMake configuration step. -It requires the `PyYAML `_ library and development -headers to compile and will download and compile a recent version of the +It requires the `YAML `_ library and development +headers (if not found locally a recent version will be downloaded +and compiled transparently) to compile and will download and compile +a specific recent version of the `Googletest `_ C++ test framework for implementing the tests. diff --git a/doc/src/Build_manual.rst b/doc/src/Build_manual.rst index 129e256cfd..59e4e3235b 100644 --- a/doc/src/Build_manual.rst +++ b/doc/src/Build_manual.rst @@ -73,8 +73,8 @@ after the documentation folder is returned to a pristine state with For the documentation build a python virtual environment is set up in the folder ``doc/docenv`` and various python packages are installed into that virtual environment via the ``pip`` tool. For rendering embedded -LaTeX code also the `MathJax `_ and the -`Polyfill `_ JavaScript engines need to be downloaded. +LaTeX code also the `MathJax `_ JavaScript +engine needs to be downloaded. The actual translation is then done via ``make`` commands in the doc folder. The following ``make`` commands are available: diff --git a/doc/src/Commands_fix.rst b/doc/src/Commands_fix.rst index 9a3c5df9cd..227409e45c 100644 --- a/doc/src/Commands_fix.rst +++ b/doc/src/Commands_fix.rst @@ -195,7 +195,7 @@ OPT. * :doc:`saed/vtk ` * :doc:`setforce (k) ` * :doc:`setforce/spin ` - * :doc:`shake ` + * :doc:`shake (k) ` * :doc:`shardlow (k) ` * :doc:`smd ` * :doc:`smd/adjust_dt ` diff --git a/doc/src/Commands_pair.rst b/doc/src/Commands_pair.rst index 70a6fe6e35..eb9d9c13a4 100644 --- a/doc/src/Commands_pair.rst +++ b/doc/src/Commands_pair.rst @@ -241,6 +241,7 @@ OPT. * :doc:`spin/dipole/long ` * :doc:`spin/dmi ` * :doc:`spin/exchange ` + * :doc:`spin/exchange/biquadratic ` * :doc:`spin/magelec ` * :doc:`spin/neel ` * :doc:`srp ` diff --git a/doc/src/Errors_warnings.rst b/doc/src/Errors_warnings.rst index 306c9b7b31..4f29fad9dd 100644 --- a/doc/src/Errors_warnings.rst +++ b/doc/src/Errors_warnings.rst @@ -119,7 +119,6 @@ Doc page with :doc:`ERROR messages ` :doc:`pair style zero ` with a suitable cutoff or use :doc:`comm_modify cutoff `. *Communication cutoff is shorter than a bond length based estimate. This may lead to errors.* - Since LAMMPS stores topology data with individual atoms, all atoms comprising a bond, angle, dihedral or improper must be present on any sub-domain that "owns" the atom with the information, either as a diff --git a/doc/src/Howto_github.rst b/doc/src/Howto_github.rst index 63cb8945e8..311d716f18 100644 --- a/doc/src/Howto_github.rst +++ b/doc/src/Howto_github.rst @@ -72,7 +72,7 @@ explained in more detail here: `feature branch workflow ` -command. At some point we plan to allow regoin surfaces to be used as +command. At some point we plan to allow region surfaces to be used as frictional walls, as well as triangulated surfaces. diff --git a/doc/src/Intro_citing.rst b/doc/src/Intro_citing.rst index 4346e00bc0..a74d3134f3 100644 --- a/doc/src/Intro_citing.rst +++ b/doc/src/Intro_citing.rst @@ -24,13 +24,15 @@ DOI for the LAMMPS code LAMMPS developers use the `Zenodo service at CERN `_ to create digital object identifies (DOI) for stable releases of the LAMMPS code. There are two types of DOIs for the -LAMMPS source code: 1) the canonical DOI for **all** versions of LAMMPS, -which will always point to the latest stable release version is: +LAMMPS source code: the canonical DOI for **all** versions of LAMMPS, +which will always point to the **latest** stable release version is: - `DOI: 10.5281/zenodo.3726416 `_ +- DOI: `10.5281/zenodo.3726416 `_ -In addition there are DOIs for individual stable releases starting with -the `3 March 2020 version, DOI:10.5281/zenodo.3726417 `_ +In addition there are DOIs for individual stable releases. Currently there are: + +- 3 March 2020 version: `DOI:10.5281/zenodo.3726417 `_ +- 29 October 2020 version: `DOI:10.5281/zenodo.4157471 `_ Home page diff --git a/doc/src/Library_create.rst b/doc/src/Library_create.rst index 7303c499d1..350569e54e 100644 --- a/doc/src/Library_create.rst +++ b/doc/src/Library_create.rst @@ -9,7 +9,6 @@ This section documents the following functions: - :cpp:func:`lammps_close` - :cpp:func:`lammps_mpi_init` - :cpp:func:`lammps_mpi_finalize` -- :cpp:func:`lammps_free` -------------------- @@ -75,11 +74,6 @@ that may only be called once. See :cpp:func:`lammps_mpi_finalize` for an alternative to invoking ``MPI_Finalize()`` explicitly from the calling program. -The :cpp:func:`lammps_free` function is a clean-up -function to free memory that the library allocated previously -via other function calls. See below for notes in the descriptions -of the individual commands where such memory buffers were allocated. - ----------------------- .. doxygenfunction:: lammps_open @@ -109,8 +103,3 @@ of the individual commands where such memory buffers were allocated. .. doxygenfunction:: lammps_mpi_finalize :project: progguide - ------------------------ - -.. doxygenfunction:: lammps_free - :project: progguide diff --git a/doc/src/Library_utility.rst b/doc/src/Library_utility.rst index 2e81a785af..b2f3666f88 100644 --- a/doc/src/Library_utility.rst +++ b/doc/src/Library_utility.rst @@ -9,11 +9,18 @@ functions. They do not directly call the LAMMPS library. - :cpp:func:`lammps_set_fix_external_callback` - :cpp:func:`lammps_fix_external_set_energy_global` - :cpp:func:`lammps_fix_external_set_virial_global` +- :cpp:func:`lammps_free` - :cpp:func:`lammps_is_running` - :cpp:func:`lammps_force_timeout` - :cpp:func:`lammps_has_error` - :cpp:func:`lammps_get_last_error_message` +The :cpp:func:`lammps_free` function is a clean-up function to free +memory that the library had allocated previously via other function +calls. Look for notes in the descriptions of the individual commands +where such memory buffers were allocated that require the use of +:cpp:func:`lammps_free`. + ----------------------- .. doxygenfunction:: lammps_encode_image_flags @@ -41,6 +48,11 @@ functions. They do not directly call the LAMMPS library. ----------------------- +.. doxygenfunction:: lammps_free + :project: progguide + +----------------------- + .. doxygenfunction:: lammps_is_running :project: progguide diff --git a/doc/src/Manual.rst b/doc/src/Manual.rst index 88e2497c98..9198f545bc 100644 --- a/doc/src/Manual.rst +++ b/doc/src/Manual.rst @@ -21,10 +21,16 @@ where all LAMMPS development is coordinated. ---------- -The content for this manual is part of the LAMMPS distribution. You can -build a local copy of the Manual as HTML pages or a PDF file, by -following the steps on the :doc:`Build_manual` page. The manual is -organized in two parts: +The content for this manual is part of the LAMMPS distribution. The +online version always corresponds to the latest development version. +If needed, you can download or build a local copy of the manual as +HTML pages or a PDF file by following the steps on the +:doc:`Build_manual` page. If you have difficulties viewing the pages +please :ref:`see this note `. + +----------- + +The manual is organized in two parts: 1) the :ref:`User Guide ` for how to install and use LAMMPS and 2) the :ref:`Programmer Guide ` for how to write programs using the LAMMPS library from different @@ -107,3 +113,15 @@ Indices and tables * :ref:`genindex` * :ref:`search` + +.. _webbrowser: +.. admonition:: Web Browser Compatibility + + The HTML version of the manual makes use of advanced features present + int "modern" web browsers. This can lead to incompatibilities with older + web browsers (released more than 4 years ago) and specific vendor browsers + (e.g. Internet Explorer on Windows; Microsoft Edge works well though) + where parts of the pages are not rendered as expected (e.g. the layout is + broken or mathematical expressions not typeset). In that case we + recommend to install/use a different/newer web browser or use + the `PDF version of the manual `_. diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index 74214e2e0e..2b2cb90aff 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -1036,9 +1036,11 @@ the usual manner via MD. Various pair, fix, and compute styles. * :doc:`pair_style spin/dipole/long ` * :doc:`pair_style spin/dmi ` * :doc:`pair_style spin/exchange ` +* :doc:`pair_style spin/exchange/biquadratic ` * :doc:`pair_style spin/magelec ` * :doc:`pair_style spin/neel ` * :doc:`fix nve/spin ` +* :doc:`fix langevin/spin ` * :doc:`fix precession/spin ` * :doc:`compute spin ` * :doc:`neb/spin ` diff --git a/doc/src/Run_options.rst b/doc/src/Run_options.rst index f5435ec3a9..9c269e552f 100644 --- a/doc/src/Run_options.rst +++ b/doc/src/Run_options.rst @@ -62,15 +62,18 @@ used. **-in file** -Specify a file to use as an input script. This is an optional switch -when running LAMMPS in one-partition mode. If it is not specified, -LAMMPS reads its script from standard input, typically from a script -via I/O redirection; e.g. lmp_linux < in.run. I/O redirection should -also work in parallel, but if it does not (in the unlikely case that -an MPI implementation does not support it), then use the -in flag. +Specify a file to use as an input script. This is an optional but +recommended switch when running LAMMPS in one-partition mode. If it +is not specified, LAMMPS reads its script from standard input, typically +from a script via I/O redirection; e.g. lmp_linux < in.run. +With many MPI implementations I/O redirection also works in parallel, +but using the -in flag will always work. + Note that this is a required switch when running LAMMPS in multi-partition mode, since multiple processors cannot all read from -stdin. +stdin concurrently. The file name may be "none" for starting +multi-partition calculations without reading an initial input file +from the library interface. ---------- @@ -296,7 +299,7 @@ command-line option. **-pscreen file** Specify the base name for the partition screen file, so partition N -writes screen information to file.N. If file is none, then no +writes screen information to file.N. If file is "none", then no partition screen files are created. This overrides the filename specified in the -screen command-line option. This option is useful when working with large numbers of partitions, allowing the partition diff --git a/doc/src/atc_output.rst b/doc/src/atc_output.rst index 3fb1491be1..5003817daa 100644 --- a/doc/src/atc_output.rst +++ b/doc/src/atc_output.rst @@ -14,7 +14,7 @@ Syntax * AtC fixID = ID of :doc:`fix atc ` instance * *output* or *output index* = name of the AtC sub-command * filename_prefix = prefix for data files (for *output*) -* frequency = frequency of output in time-steps (for *output*) +* frequency = frequency of output in timesteps (for *output*) * optional keywords for *output*: - text = creates text output of index, step and nodal variable values for unique nodes diff --git a/doc/src/atom_style.rst b/doc/src/atom_style.rst index 4957901676..a250f44b25 100644 --- a/doc/src/atom_style.rst +++ b/doc/src/atom_style.rst @@ -42,6 +42,7 @@ Examples atom_style hybrid charge body nparticle 2 5 atom_style spin atom_style template myMols + atom_style hybrid template twomols charge atom_style tdpd 2 Description @@ -239,6 +240,8 @@ can save memory for systems comprised of a large number of small molecules, all of a single type (or small number of types). See the paper by Grime and Voth, in :ref:`(Grime) `, for examples of how this can be advantageous for large-scale coarse-grained systems. +The ``examples/template`` directory has a few demo inputs and examples +showing the use of the *template* atom style versus *molecular*. .. note:: diff --git a/doc/src/compute_stress_atom.rst b/doc/src/compute_stress_atom.rst index 16afd49548..9ebb51a3eb 100644 --- a/doc/src/compute_stress_atom.rst +++ b/doc/src/compute_stress_atom.rst @@ -33,32 +33,31 @@ Examples Description """"""""""" -Define a computation that computes per-atom stress -tensor for each atom in a group. In case of compute *stress/atom*, -the tensor for each atom is symmetric with 6 -components and is stored as a 6-element vector in the following order: -:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`. -In case of compute *centroid/stress/atom*, -the tensor for each atom is asymmetric with 9 components -and is stored as a 9-element vector in the following order: -:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, :math:`yz`, -:math:`yx`, :math:`zx`, :math:`zy`. -See the :doc:`compute pressure ` command if you want the stress tensor +Define a computation that computes per-atom stress tensor for each +atom in a group. In case of compute *stress/atom*, the tensor for +each atom is symmetric with 6 components and is stored as a 6-element +vector in the following order: :math:`xx`, :math:`yy`, :math:`zz`, +:math:`xy`, :math:`xz`, :math:`yz`. In case of compute +*centroid/stress/atom*, the tensor for each atom is asymmetric with 9 +components and is stored as a 9-element vector in the following order: +:math:`xx`, :math:`yy`, :math:`zz`, :math:`xy`, :math:`xz`, +:math:`yz`, :math:`yx`, :math:`zx`, :math:`zy`. See the :doc:`compute +pressure ` command if you want the stress tensor (pressure) of the entire system. -The stress tensor for atom :math:`I` is given by the following formula, -where :math:`a` and :math:`b` take on values :math:`x`, :math:`y`, :math:`z` -to generate the components of the tensor: +The stress tensor for atom :math:`I` is given by the following +formula, where :math:`a` and :math:`b` take on values :math:`x`, +:math:`y`, :math:`z` to generate the components of the tensor: .. math:: S_{ab} = - m v_a v_b - W_{ab} -The first term is a kinetic energy contribution for atom :math:`I`. See -details below on how the specified *temp-ID* can affect the velocities -used in this calculation. The second term is the virial -contribution due to intra and intermolecular interactions, -where the exact computation details are determined by the compute style. +The first term is a kinetic energy contribution for atom :math:`I`. +See details below on how the specified *temp-ID* can affect the +velocities used in this calculation. The second term is the virial +contribution due to intra and intermolecular interactions, where the +exact computation details are determined by the compute style. In case of compute *stress/atom*, the virial contribution is: @@ -68,29 +67,26 @@ In case of compute *stress/atom*, the virial contribution is: & + \frac{1}{3} \sum_{n = 1}^{N_a} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b} + r_{3_a} F_{3_b}) + \frac{1}{4} \sum_{n = 1}^{N_d} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b} + r_{3_a} F_{3_b} + r_{4_a} F_{4_b}) \\ & + \frac{1}{4} \sum_{n = 1}^{N_i} (r_{1_a} F_{1_b} + r_{2_a} F_{2_b} + r_{3_a} F_{3_b} + r_{4_a} F_{4_b}) + {\rm Kspace}(r_{i_a},F_{i_b}) + \sum_{n = 1}^{N_f} r_{i_a} F_{i_b} -The first term is a pairwise energy -contribution where :math:`n` loops over the :math:`N_p` -neighbors of atom :math:`I`, :math:`\mathbf{r}_1` and :math:`\mathbf{r}_2` -are the positions of the 2 atoms in the pairwise interaction, -and :math:`\mathbf{F}_1` and :math:`\mathbf{F}_2` are the forces -on the 2 atoms resulting from the pairwise interaction. -The second term is a bond contribution of -similar form for the :math:`N_b` bonds which atom :math:`I` is part of. -There are similar terms for the :math:`N_a` angle, :math:`N_d` dihedral, -and :math:`N_i` improper interactions atom :math:`I` is part of. -There is also a term for the KSpace -contribution from long-range Coulombic interactions, if defined. -Finally, there is a term for the :math:`N_f` :doc:`fixes ` that apply -internal constraint forces to atom :math:`I`. Currently, only the -:doc:`fix shake ` and :doc:`fix rigid ` commands -contribute to this term. -As the coefficients in the formula imply, a virial contribution -produced by a small set of atoms (e.g. 4 atoms in a dihedral or 3 -atoms in a Tersoff 3-body interaction) is assigned in equal portions -to each atom in the set. E.g. 1/4 of the dihedral virial to each of -the 4 atoms, or 1/3 of the fix virial due to SHAKE constraints applied -to atoms in a water molecule via the :doc:`fix shake ` -command. +The first term is a pairwise energy contribution where :math:`n` loops +over the :math:`N_p` neighbors of atom :math:`I`, :math:`\mathbf{r}_1` +and :math:`\mathbf{r}_2` are the positions of the 2 atoms in the +pairwise interaction, and :math:`\mathbf{F}_1` and +:math:`\mathbf{F}_2` are the forces on the 2 atoms resulting from the +pairwise interaction. The second term is a bond contribution of +similar form for the :math:`N_b` bonds which atom :math:`I` is part +of. There are similar terms for the :math:`N_a` angle, :math:`N_d` +dihedral, and :math:`N_i` improper interactions atom :math:`I` is part +of. There is also a term for the KSpace contribution from long-range +Coulombic interactions, if defined. Finally, there is a term for the +:math:`N_f` :doc:`fixes ` that apply internal constraint forces +to atom :math:`I`. Currently, only the :doc:`fix shake ` +and :doc:`fix rigid ` commands contribute to this term. As +the coefficients in the formula imply, a virial contribution produced +by a small set of atoms (e.g. 4 atoms in a dihedral or 3 atoms in a +Tersoff 3-body interaction) is assigned in equal portions to each atom +in the set. E.g. 1/4 of the dihedral virial to each of the 4 atoms, +or 1/3 of the fix virial due to SHAKE constraints applied to atoms in +a water molecule via the :doc:`fix shake ` command. In case of compute *centroid/stress/atom*, the virial contribution is: @@ -99,71 +95,69 @@ In case of compute *centroid/stress/atom*, the virial contribution is: W_{ab} & = \sum_{n = 1}^{N_p} r_{I0_a} F_{I_b} + \sum_{n = 1}^{N_b} r_{I0_a} F_{I_b} + \sum_{n = 1}^{N_a} r_{I0_a} F_{I_b} + \sum_{n = 1}^{N_d} r_{I0_a} F_{I_b} + \sum_{n = 1}^{N_i} r_{I0_a} F_{I_b} \\ & + {\rm Kspace}(r_{i_a},F_{i_b}) + \sum_{n = 1}^{N_f} r_{i_a} F_{i_b} -As with compute *stress/atom*, the first, second, third, fourth and fifth terms -are pairwise, bond, angle, dihedral and improper contributions, -but instead of assigning the virial contribution equally to each atom, -only the force :math:`\mathbf{F}_I` acting on atom :math:`I` -due to the interaction and the relative -position :math:`\mathbf{r}_{I0}` of the atom :math:`I` to the geometric center -of the interacting atoms, i.e. centroid, is used. -As the geometric center is different -for each interaction, the :math:`\mathbf{r}_{I0}` also differs. -The sixth and seventh terms, Kspace and :doc:`fix ` contribution -respectively, are computed identical to compute *stress/atom*. -Although the total system virial is the same as compute *stress/atom*, -compute *centroid/stress/atom* is know to result in more consistent -heat flux values for angle, dihedrals and improper contributions -when computed via :doc:`compute heat/flux `. +As with compute *stress/atom*, the first, second, third, fourth and +fifth terms are pairwise, bond, angle, dihedral and improper +contributions, but instead of assigning the virial contribution +equally to each atom, only the force :math:`\mathbf{F}_I` acting on +atom :math:`I` due to the interaction and the relative position +:math:`\mathbf{r}_{I0}` of the atom :math:`I` to the geometric center +of the interacting atoms, i.e. centroid, is used. As the geometric +center is different for each interaction, the :math:`\mathbf{r}_{I0}` +also differs. The sixth and seventh terms, Kspace and :doc:`fix +` contribution respectively, are computed identical to compute +*stress/atom*. Although the total system virial is the same as +compute *stress/atom*, compute *centroid/stress/atom* is know to +result in more consistent heat flux values for angle, dihedrals and +improper contributions when computed via :doc:`compute heat/flux +`. -If no extra keywords are listed, the kinetic contribution -all of the virial contribution terms are -included in the per-atom stress tensor. If any extra keywords are -listed, only those terms are summed to compute the tensor. The -*virial* keyword means include all terms except the kinetic energy -*ke*\ . +If no extra keywords are listed, the kinetic contribution all of the +virial contribution terms are included in the per-atom stress tensor. +If any extra keywords are listed, only those terms are summed to +compute the tensor. The *virial* keyword means include all terms +except the kinetic energy *ke*\ . Note that the stress for each atom is due to its interaction with all other atoms in the simulation, not just with other atoms in the group. -Details of how compute *stress/atom* obtains the virial for individual atoms for -either pairwise or many-body potentials, and including the effects of -periodic boundary conditions is discussed in :ref:`(Thompson) `. -The basic idea for many-body potentials is to treat each component of -the force computation between a small cluster of atoms in the same -manner as in the formula above for bond, angle, dihedral, etc -interactions. Namely the quantity :math:`\mathbf{r} \cdot \mathbf{F}` -is summed over the atoms in -the interaction, with the :math:`r` vectors unwrapped by periodic boundaries -so that the cluster of atoms is close together. The total +Details of how compute *stress/atom* obtains the virial for individual +atoms for either pairwise or many-body potentials, and including the +effects of periodic boundary conditions is discussed in +:ref:`(Thompson) `. The basic idea for many-body +potentials is to treat each component of the force computation between +a small cluster of atoms in the same manner as in the formula above +for bond, angle, dihedral, etc interactions. Namely the quantity +:math:`\mathbf{r} \cdot \mathbf{F}` is summed over the atoms in the +interaction, with the :math:`r` vectors unwrapped by periodic +boundaries so that the cluster of atoms is close together. The total contribution for the cluster interaction is divided evenly among those -atoms. Details of how compute *centroid/stress/atom* obtains -the virial for individual atoms -is given in :ref:`(Surblys) `, -where the idea is that the virial of the atom :math:`I` -is the result of only the force :math:`\mathbf{F}_I` on the atom due -to the interaction -and its positional vector :math:`\mathbf{r}_{I0}`, -relative to the geometric center of the -interacting atoms, regardless of the number of participating atoms. -The periodic boundary treatment is identical to +atoms. + +Details of how compute *centroid/stress/atom* obtains the virial for +individual atoms is given in :ref:`(Surblys) `, where the +idea is that the virial of the atom :math:`I` is the result of only +the force :math:`\mathbf{F}_I` on the atom due to the interaction and +its positional vector :math:`\mathbf{r}_{I0}`, relative to the +geometric center of the interacting atoms, regardless of the number of +participating atoms. The periodic boundary treatment is identical to that of compute *stress/atom*, and both of them reduce to identical -expressions for two-body interactions, -i.e. computed values for contributions from bonds and two-body pair styles, -such as :doc:`Lennard-Jones `, will be the same, -while contributions from angles, dihedrals and impropers will be different. +expressions for two-body interactions, i.e. computed values for +contributions from bonds and two-body pair styles, such as +:doc:`Lennard-Jones `, will be the same, while contributions +from angles, dihedrals and impropers will be different. The :doc:`dihedral_style charmm ` style calculates pairwise interactions between 1-4 atoms. The virial contribution of these terms is included in the pair virial, not the dihedral virial. The KSpace contribution is calculated using the method in -:ref:`(Heyes) ` for the Ewald method and by the methodology described -in :ref:`(Sirk) ` for PPPM. The choice of KSpace solver is specified -by the :doc:`kspace_style pppm ` command. Note that for -PPPM, the calculation requires 6 extra FFTs each timestep that -per-atom stress is calculated. Thus it can significantly increase the -cost of the PPPM calculation if it is needed on a large fraction of -the simulation timesteps. +:ref:`(Heyes) ` for the Ewald method and by the methodology +described in :ref:`(Sirk) ` for PPPM. The choice of KSpace +solver is specified by the :doc:`kspace_style pppm ` +command. Note that for PPPM, the calculation requires 6 extra FFTs +each timestep that per-atom stress is calculated. Thus it can +significantly increase the cost of the PPPM calculation if it is +needed on a large fraction of the simulation timesteps. The *temp-ID* argument can be used to affect the per-atom velocities used in the kinetic energy contribution to the total stress. If the @@ -189,10 +183,10 @@ See the :doc:`compute voronoi/atom ` command for one possible way to estimate a per-atom volume. Thus, if the diagonal components of the per-atom stress tensor are -summed for all atoms in the system and the sum is divided by :math:`dV`, where -:math:`d` = dimension and :math:`V` is the volume of the system, -the result should be :math:`-P`, where :math:`P` -is the total pressure of the system. +summed for all atoms in the system and the sum is divided by +:math:`dV`, where :math:`d` = dimension and :math:`V` is the volume of +the system, the result should be :math:`-P`, where :math:`P` is the +total pressure of the system. These lines in an input script for a 3d system should yield that result. I.e. the last 2 columns of thermo output will be the same: @@ -207,33 +201,43 @@ result. I.e. the last 2 columns of thermo output will be the same: .. note:: The per-atom stress does not include any Lennard-Jones tail - corrections to the pressure added by the :doc:`pair_modify tail yes ` command, since those are contributions to the - global system pressure. + corrections to the pressure added by the :doc:`pair_modify tail yes + ` command, since those are contributions to the global + system pressure. Output info """"""""""" -This compute *stress/atom* calculates a per-atom array with 6 columns, which can be -accessed by indices 1-6 by any command that uses per-atom values from -a compute as input. -The compute *centroid/stress/atom* produces a per-atom array with 9 columns, -but otherwise can be used in an identical manner to compute *stress/atom*. -See the :doc:`Howto output ` doc page -for an overview of LAMMPS output options. +Compute *stress/atom* calculates a per-atom array with 6 columns, +which can be accessed by indices 1-6 by any command that uses per-atom +values from a compute as input. Compute *centroid/stress/atom* +produces a per-atom array with 9 columns, but otherwise can be used in +an identical manner to compute *stress/atom*. See the :doc:`Howto +output ` doc page for an overview of LAMMPS output +options. -The per-atom array values will be in pressure\*volume -:doc:`units ` as discussed above. +The per-atom array values will be in pressure\*volume :doc:`units +` as discussed above. Restrictions """""""""""" -Currently (Spring 2020), compute *centroid/stress/atom* does not support -pair styles with many-body interactions, such as :doc:`Tersoff -`, or pair styles with long-range Coulomb interactions. -LAMMPS will generate an error in such cases. In principal, equivalent -formulation to that of angle, dihedral and improper contributions in the -virial :math:`W_{ab}` formula can also be applied to the many-body pair -styles, and is planned in the future. +Currently, compute *centroid/stress/atom* does not support pair styles +with many-body interactions (:doc:`EAM ` is an exception, +since its computations are performed pairwise), nor granular pair +styles with pairwise forces which are not aligned with the vector +between the pair of particles. All bond styles are supported. All +angle, dihedral, improper styles are supported with the exception of +USER-INTEL and KOKKOS variants of specific styles. It also does not +support models with long-range Coulombic or dispersion forces, +i.e. the kspace_style command in LAMMPS. It also does not support the +following fixes which add rigid-body constraints: :doc:`fix shake +`, :doc:`fix rattle `, :doc:`fix rigid +`, :doc:`fix rigid/small `. + +LAMMPS will generate an error if one of these options is included in +your model. Extension of centroid stress calculations to these force +and fix styles is planned for the futre. Related commands """""""""""""""" diff --git a/doc/src/create_atoms.rst b/doc/src/create_atoms.rst index 4239933721..26da54573a 100644 --- a/doc/src/create_atoms.rst +++ b/doc/src/create_atoms.rst @@ -28,7 +28,7 @@ Syntax * zero or more keyword/value pairs may be appended * keyword = *mol* or *basis* or *ratio* or *subset* or *remap* or *var* or *set* or *rotate* or *units* - .. code-block:: LAMMPS + .. parsed-literal:: *mol* value = template-ID seed template-ID = ID of molecule template specified in a separate :doc:`molecule ` command diff --git a/doc/src/fix_bond_react.rst b/doc/src/fix_bond_react.rst index 159e39d075..8a23149aa9 100644 --- a/doc/src/fix_bond_react.rst +++ b/doc/src/fix_bond_react.rst @@ -174,10 +174,12 @@ integer. Three physical conditions must be met for a reaction to occur. First, a bonding atom pair must be identified within the reaction distance cutoffs. Second, the topology surrounding the bonding atom pair must -match the topology of the pre-reaction template. Finally, any reaction -constraints listed in the map file (see below) must be satisfied. If -all of these conditions are met, the reaction site is eligible to be -modified to match the post-reaction template. +match the topology of the pre-reaction template. Only atom types and +bond connectivity are used to identify a valid reaction site (not bond +types, etc.). Finally, any reaction constraints listed in the map file +(see below) must be satisfied. If all of these conditions are met, the +reaction site is eligible to be modified to match the post-reaction +template. A bonding atom pair will be identified if several conditions are met. First, a pair of atoms I,J within the specified react-group-ID of type @@ -192,19 +194,26 @@ be a function of the reaction conversion using the following commands: fix myrxn all bond/react react myrxn1 all 1 0 v_rmax mol1 mol2 map_file.txt variable rmax equal 3+f_myrxn[1]/100 # arbitrary function of reaction count -It is possible that multiple bonding atom pairs are identified: if the -bonding atoms in the pre-reacted template are 1-2 neighbors, i.e. -directly bonded, the farthest bonding atom partner is set as its -bonding partner; otherwise, the closest potential partner is chosen. -Then, if both an atom I and atom J have each other as their bonding -partners, these two atoms are identified as the bonding atom pair of -the reaction site. Once this unique bonding atom pair is identified -for each reaction, there could two or more reactions that involve a -given atom on the same timestep. If this is the case, only one such -reaction is permitted to occur. This reaction is chosen randomly from -all potential reactions. This capability allows e.g. for different -reaction pathways to proceed from identical reaction sites with -user-specified probabilities. +The following criteria are used if multiple candidate bonding atom +pairs are identified within the cutoff distance: 1) If the bonding +atoms in the pre-reaction template are not 1-2 neighbors (i.e. not +directly bonded) the closest potential partner is chosen. 2) +Otherwise, if the bonding atoms in the pre-reaction template are 1-2 +neighbors (i.e. directly bonded) the farthest potential partner is +chosen. 3) Then, if both an atom I and atom J have each other as their +bonding partners, these two atoms are identified as the bonding atom +pair of the reaction site. Note that it can be helpful to select +unique atom types for the bonding atoms: if a bonding atom pair is +identified, as described in the previous steps, but does not +correspond to the same pair specified in the pre-reaction template, an +otherwise eligible reaction could be prevented from occurring. Once +this unique bonding atom pair is identified for each reaction, there +could be two or more reactions that involve the same atom on the same +timestep. If this is the case, only one such reaction is permitted to +occur. This reaction is chosen randomly from all potential reactions +involving the overlapping atom. This capability allows e.g. for +different reaction pathways to proceed from identical reaction sites +with user-specified probabilities. The pre-reacted molecule template is specified by a molecule command. This molecule template file contains a sample reaction site and its diff --git a/doc/src/fix_filter_corotate.rst b/doc/src/fix_filter_corotate.rst index ee608e5361..e33fc0ac4a 100644 --- a/doc/src/fix_filter_corotate.rst +++ b/doc/src/fix_filter_corotate.rst @@ -56,7 +56,7 @@ is slightly modified only for the computation of long-range forces. A good cluster decomposition constitutes in building clusters which contain the fastest covalent bonds inside clusters. -If the clusters are chosen suitably, the :doc:`run_style respa ` is stable for outer time-steps of at least 8fs. +If the clusters are chosen suitably, the :doc:`run_style respa ` is stable for outer timesteps of at least 8fs. ---------- diff --git a/doc/src/fix_precession_spin.rst b/doc/src/fix_precession_spin.rst index 92819684cc..0cb8cc1148 100644 --- a/doc/src/fix_precession_spin.rst +++ b/doc/src/fix_precession_spin.rst @@ -62,7 +62,7 @@ with: The field value in Tesla is multiplied by the gyromagnetic ratio, :math:`g \cdot \mu_B/\hbar`, converting it into a precession frequency in -rad.THz (in metal units and with :math:`\mu_B = 5.788 eV/T`). +rad.THz (in metal units and with :math:`\mu_B = 5.788\cdot 10^{-5}` eV/T). As a comparison, the figure below displays the simulation of a single spin (of norm :math:`\mu_i = 1.0`) submitted to an external diff --git a/doc/src/fix_rx.rst b/doc/src/fix_rx.rst index c1a1d0950c..9eab06ffad 100644 --- a/doc/src/fix_rx.rst +++ b/doc/src/fix_rx.rst @@ -90,10 +90,10 @@ accepted, *h* is increased by a proportional amount, and the next ODE step is be Otherwise, *h* is shrunk and the ODE step is repeated. Run-time diagnostics are available for the rkf45 ODE solver. The frequency -(in time-steps) that diagnostics are reported is controlled by the last (optional) +(in timesteps) that diagnostics are reported is controlled by the last (optional) 12th argument. A negative frequency means that diagnostics are reported once at the end of each run. A positive value N means that the diagnostics are reported once -per N time-steps. +per N timesteps. The diagnostics report the average # of integrator steps and RHS function evaluations and run-time per ODE as well as the average/RMS/min/max per process. If the diff --git a/doc/src/fix_shake.rst b/doc/src/fix_shake.rst index eb7add7035..116edd8c7e 100644 --- a/doc/src/fix_shake.rst +++ b/doc/src/fix_shake.rst @@ -1,9 +1,12 @@ .. index:: fix shake +.. index:: fix shake/kk .. index:: fix rattle fix shake command ================= +Accelerator Variants: *shake/kk* + fix rattle command ================== diff --git a/doc/src/molecule.rst b/doc/src/molecule.rst index 7b316b9d24..b86983766d 100644 --- a/doc/src/molecule.rst +++ b/doc/src/molecule.rst @@ -79,9 +79,9 @@ make it easy to use the same molecule file in different molecule templates or in different simulations. You can specify the same file multiple times with different optional keywords. -The *offset*\ , *toff*\ , *aoff*\ , *doff*\ , *ioff* keywords add the -specified offset values to the atom types, bond types, angle types, -dihedral types, and/or improper types as they are read from the +The *offset*\ , *toff*\ , *boff*\ , *aoff*\ , *doff*\ , *ioff* keywords +add the specified offset values to the atom types, bond types, angle +types, dihedral types, and/or improper types as they are read from the molecule file. E.g. if *toff* = 2, and the file uses atom types 1,2,3, then each created molecule will have atom types 3,4,5. For the *offset* keyword, all five offset values must be specified, but @@ -201,11 +201,12 @@ bonds between nuclear cores and Drude electrons in a different manner. Each section is listed below in alphabetic order. The format of each section is described including the number of lines it must contain and -rules (if any) for whether it can appear in the data file. In each -case the ID is ignored; it is simply included for readability, and -should be a number from 1 to Nlines for the section, indicating which -atom (or bond, etc) the entry applies to. The lines are assumed to be -listed in order from 1 to Nlines, but LAMMPS does not check for this. +rules (if any) for whether it can appear in the data file. For per- +atom sections, entries should be numbered from 1 to Natoms (where +Natoms is the number of atoms in the template), indicating which atom +(or bond, etc) the entry applies to. Per-atom sections need to +include a setting for every atom, but the atoms can be listed in any +order. ---------- @@ -484,9 +485,7 @@ of SHAKE clusters. Restrictions """""""""""" -This command must come after the simulation box is define by a -:doc:`read_data `, :doc:`read_restart `, or -:doc:`create_box ` command. +None Related commands """""""""""""""" diff --git a/doc/src/pair_atm.rst b/doc/src/pair_atm.rst index c0dfb64c50..0bdfecd517 100644 --- a/doc/src/pair_atm.rst +++ b/doc/src/pair_atm.rst @@ -143,7 +143,7 @@ combinations, else an error will result. Mixing, shift, table, tail correction, restart, rRESPA info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -This pair styles do not support the :doc:`pair_modify ` +This pair style do not support the :doc:`pair_modify ` mix, shift, table, and tail options. This pair style writes its information to :doc:`binary restart files diff --git a/doc/src/pair_buck_long.rst b/doc/src/pair_buck_long.rst index 1883cee637..0e19873500 100644 --- a/doc/src/pair_buck_long.rst +++ b/doc/src/pair_buck_long.rst @@ -117,7 +117,7 @@ global Coulombic cutoff is allowed. Mixing, shift, table, tail correction, restart, rRESPA info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -This pair styles does not support mixing. Thus, coefficients for all +This pair style does not support mixing. Thus, coefficients for all I,J pairs must be specified explicitly. This pair style supports the :doc:`pair_modify ` shift diff --git a/doc/src/pair_gayberne.rst b/doc/src/pair_gayberne.rst index 309e949f97..19597b9018 100644 --- a/doc/src/pair_gayberne.rst +++ b/doc/src/pair_gayberne.rst @@ -160,7 +160,7 @@ For atom type pairs I,J and I != J, the epsilon and sigma coefficients and cutoff distance for this pair style can be mixed. The default mix value is *geometric*\ . See the "pair_modify" command for details. -This pair styles supports the :doc:`pair_modify ` shift +This pair style supports the :doc:`pair_modify ` shift option for the energy of the Lennard-Jones portion of the pair interaction, but only for sphere-sphere interactions. There is no shifting performed for ellipsoidal interactions due to the anisotropic diff --git a/doc/src/pair_lcbop.rst b/doc/src/pair_lcbop.rst index fa2d3c0609..c44ad1f8a4 100644 --- a/doc/src/pair_lcbop.rst +++ b/doc/src/pair_lcbop.rst @@ -75,14 +75,15 @@ This pair style can only be used via the *pair* keyword of the Restrictions """""""""""" -This pair styles is part of the MANYBODY package. It is only enabled -if LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info. +This pair style is part of the MANYBODY package. It is only enabled +if LAMMPS was built with that package. +See the :doc:`Build package ` doc page for more info. This pair potential requires the :doc:`newton ` setting to be "on" for pair interactions. -The C.lcbop potential file provided with LAMMPS (see the potentials -directory) is parameterized for metal :doc:`units `. You can use +The ``C.lcbop`` potential file provided with LAMMPS (see the potentials +directory) is parameterized for :doc:`metal units `. You can use the LCBOP potential with any LAMMPS units, but you would need to create your own LCBOP potential file with coefficients listed in the appropriate units if your simulation does not use "metal" units. diff --git a/doc/src/pair_polymorphic.rst b/doc/src/pair_polymorphic.rst index 04be107e02..6abe037581 100644 --- a/doc/src/pair_polymorphic.rst +++ b/doc/src/pair_polymorphic.rst @@ -298,7 +298,7 @@ described above. For each of the F functions, nx values are listed. Mixing, shift, table, tail correction, restart, rRESPA info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -This pair styles does not support the :doc:`pair_modify ` +This pair style does not support the :doc:`pair_modify ` shift, table, and tail options. This pair style does not write their information to :doc:`binary restart diff --git a/doc/src/pair_resquared.rst b/doc/src/pair_resquared.rst index d34588682c..0932730469 100644 --- a/doc/src/pair_resquared.rst +++ b/doc/src/pair_resquared.rst @@ -173,7 +173,7 @@ equation for the Hamaker constant presented here. Mixing of sigma and epsilon followed by calculation of the energy prefactors using the equations above is recommended. -This pair styles supports the :doc:`pair_modify ` shift +This pair style supports the :doc:`pair_modify ` shift option for the energy of the Lennard-Jones portion of the pair interaction, but only for sphere-sphere interactions. There is no shifting performed for ellipsoidal interactions due to the anisotropic diff --git a/doc/src/pair_spin_exchange.rst b/doc/src/pair_spin_exchange.rst index 350a533649..630ec6608e 100644 --- a/doc/src/pair_spin_exchange.rst +++ b/doc/src/pair_spin_exchange.rst @@ -1,14 +1,19 @@ .. index:: pair_style spin/exchange +.. index:: pair_style spin/exchange/biquadratic pair_style spin/exchange command ================================ +pair_style spin/exchange/biquadratic command +============================================ + Syntax """""" .. code-block:: LAMMPS pair_style spin/exchange cutoff + pair_style spin/exchange/biquadratic cutoff * cutoff = global cutoff pair (distance in metal units) @@ -19,7 +24,11 @@ Examples pair_style spin/exchange 4.0 pair_coeff * * exchange 4.0 0.0446928 0.003496 1.4885 - pair_coeff 1 2 exchange 6.0 -0.01575 0.0 1.965 + pair_coeff 1 2 exchange 6.0 -0.01575 0.0 1.965 offset yes + + pair_style spin/exchange/biquadratic 4.0 + pair_coeff * * biquadratic 4.0 0.05 0.03 1.48 0.05 0.03 1.48 offset no + pair_coeff 1 2 biquadratic 6.0 -0.01 0.0 1.9 0.0 0.1 19 Description """"""""""" @@ -31,69 +40,163 @@ pairs of magnetic spins: H_{ex} = -\sum_{i,j}^N J_{ij} (r_{ij}) \,\vec{s}_i \cdot \vec{s}_j -where :math:`\vec{s}_i` and :math:`\vec{s}_j` are two neighboring magnetic spins of two particles, -:math:`r_{ij} = \vert \vec{r}_i - \vec{r}_j \vert` is the inter-atomic distance between the two -particles. The summation is over pairs of nearest neighbors. -:math:`J(r_{ij})` is a function defining the intensity and the sign of the exchange -interaction for different neighboring shells. This function is defined as: +where :math:`\vec{s}_i` and :math:`\vec{s}_j` are two unit vectors representing +the magnetic spins of two particles (usually atoms), and +:math:`r_{ij} = \vert \vec{r}_i - \vec{r}_j \vert` is the inter-atomic distance +between those two particles. The summation is over pairs of nearest neighbors. +:math:`J(r_{ij})` is a function defining the intensity and the sign of the +exchange interaction for different neighboring shells. + +Style *spin/exchange/biquadratic* computes a biquadratic exchange interaction +between pairs of magnetic spins: .. math:: - {J}\left( r_{ij} \right) = 4 a \left( \frac{r_{ij}}{d} \right)^2 \left( 1 - b \left( \frac{r_{ij}}{d} \right)^2 \right) e^{-\left( \frac{r_{ij}}{d} \right)^2 }\Theta (R_c - r_{ij}) + H_{bi} = -\sum_{i, j}^{N} {J}_{ij} \left(r_{ij} \right)\, + \vec{s}_{i}\cdot \vec{s}_{j} + -\sum_{i, j}^{N} {K}_{ij} \left(r_{ij} \right)\, + \left(\vec{s}_{i}\cdot + \vec{s}_{j}\right)^2 -where :math:`a`, :math:`b` and :math:`d` are the three constant coefficients defined in the associated -"pair_coeff" command, and :math:`R_c` is the radius cutoff associated to -the pair interaction (see below for more explanations). +where :math:`\vec{s}_i`, :math:`\vec{s}_j`, :math:`r_{ij}` and +:math:`J(r_{ij})` have the same definitions as above, and :math:`K(r_{ij})` is +a second function, defining the intensity and the sign of the biquadratic term. -The coefficients :math:`a`, :math:`b`, and :math:`d` need to be fitted so that the function above matches with -the value of the exchange interaction for the :math:`N` neighbor shells taken into account. -Examples and more explanations about this function and its parameterization are reported -in :ref:`(Tranchida) `. +The interatomic dependence of :math:`J(r_{ij})` and :math:`K(r_{ij})` in both +interactions above is defined by the following function: + +.. math:: + + {f}\left( r_{ij} \right) = 4 a \left( \frac{r_{ij}}{d} \right)^2 + \left( 1 - b \left( \frac{r_{ij}}{d} \right)^2 \right) + e^{-\left( \frac{r_{ij}}{d} \right)^2 }\Theta (R_c - r_{ij}) + +where :math:`a`, :math:`b` and :math:`d` are the three constant coefficients +defined in the associated "pair_coeff" command, and :math:`R_c` is the radius +cutoff associated to the pair interaction (see below for more explanations). + +The coefficients :math:`a`, :math:`b`, and :math:`d` need to be fitted so that +the function above matches with the value of the exchange interaction for the +:math:`N` neighbor shells taken into account. +Examples and more explanations about this function and its parameterization +are reported in :ref:`(Tranchida) `. + +When a *spin/exchange/biquadratic* pair style is defined, six coefficients +(three for :math:`J(r_{ij})`, and three for :math:`K(r_{ij})`) have to be +fitted. From this exchange interaction, each spin :math:`i` will be submitted -to a magnetic torque :math:`\vec{\omega}`, and its associated atom can be submitted to a -force :math:`\vec{F}` for spin-lattice calculations (see :doc:`fix nve/spin `), -such as: +to a magnetic torque :math:`\vec{\omega}_{i}`, and its associated atom can be +submitted to a force :math:`\vec{F}_{i}` for spin-lattice calculations (see +:doc:`fix nve/spin `), such as: .. math:: \vec{\omega}_{i} = \frac{1}{\hbar} \sum_{j}^{Neighb} {J} \left(r_{ij} \right)\,\vec{s}_{j} ~~{\rm and}~~ - \vec{F}_{i} = \sum_{j}^{Neighb} \frac{\partial {J} \left(r_{ij} \right)}{ \partial r_{ij}} \left( \vec{s}_{i}\cdot \vec{s}_{j} \right) \vec{e}_{ij} + \vec{F}_{i} = \sum_{j}^{Neighb} \frac{\partial {J} \left(r_{ij} \right)}{ + \partial r_{ij}} \left( \vec{s}_{i}\cdot \vec{s}_{j} \right) \vec{e}_{ij} -with :math:`\hbar` the Planck constant (in metal units), and :math:`\vec{e}_{ij} = \frac{\vec{r}_i - \vec{r}_j}{\vert \vec{r}_i-\vec{r}_j \vert}` the unit +with :math:`\hbar` the Planck constant (in metal units), and :math:`\vec{e}_{ij} += \frac{\vec{r}_i - \vec{r}_j}{\vert \vec{r}_i-\vec{r}_j \vert}` the unit vector between sites :math:`i` and :math:`j`. +Equivalent forces and magnetic torques are generated for the biquadratic term +when a *spin/exchange/biquadratic* pair style is defined. More details about the derivation of these torques/forces are reported in :ref:`(Tranchida) `. -For the *spin/exchange* pair style, the following coefficients must be defined -for each pair of atoms types via the :doc:`pair_coeff ` command as in -the examples above, or in the data file or restart files read by the -:doc:`read_data ` or :doc:`read_restart ` commands, and -set in the following order: +For the *spin/exchange* and *spin/exchange/biquadratic* pair styles, the +following coefficients must be defined for each pair of atoms types via the +:doc:`pair_coeff ` command as in the examples above, or in the data +file or restart files read by the :doc:`read_data ` or +:doc:`read_restart ` commands, and set in the following order: * :math:`R_c` (distance units) * :math:`a` (energy units) * :math:`b` (adim parameter) * :math:`d` (distance units) -Note that :math:`R_c` is the radius cutoff of the considered exchange interaction, -and :math:`a`, :math:`b` and :math:`d` are the three coefficients performing the parameterization -of the function :math:`J(r_{ij})` defined above. +for the *spin/exchange* pair style, and: + +* :math:`R_c` (distance units) +* :math:`a_j` (energy units) +* :math:`b_j` (adim parameter) +* :math:`d_j` (distance units) +* :math:`a_k` (energy units) +* :math:`b_k` (adim parameter) +* :math:`d_k` (distance units) + +for the *spin/exchange/biquadratic* pair style. + +Note that :math:`R_c` is the radius cutoff of the considered exchange +interaction, and :math:`a`, :math:`b` and :math:`d` are the three coefficients +performing the parameterization of the function :math:`J(r_{ij})` defined +above (in the *biquadratic* style, :math:`a_j`, :math:`b_j`, :math:`d_j` and +:math:`a_k`, :math:`b_k`, :math:`d_k` are the coefficients of :math:`J(r_{ij})` +and :math:`K(r_{ij})` respectively). + None of those coefficients is optional. If not specified, the *spin/exchange* pair style cannot be used. ---------- +**Offsetting magnetic forces and energies**\ : + +For spin-lattice simulation, it can be useful to offset the +mechanical forces and energies generated by the exchange +interaction. +The *offset* keyword allows to apply this offset. +By setting *offset* to *yes*, the energy definitions above are +replaced by: + +.. math:: + + H_{ex} = -\sum_{i,j}^N J_{ij} (r_{ij}) \,[ \vec{s}_i \cdot \vec{s}_j-1 ] + +for the *spin/exchange* pair style, and: + +.. math:: + + H_{bi} = -\sum_{i, j}^{N} {J}_{ij} \left(r_{ij} \right)\, + [ \vec{s}_{i}\cdot \vec{s}_{j} -1 ] + -\sum_{i, j}^{N} {K}_{ij} \left(r_{ij} \right)\, + [ \left(\vec{s}_{i}\cdot + \vec{s}_{j}\right)^2 -1] + +for the *spin/exchange/biquadratic* pair style. + +Note that this offset only affects the calculation of the energy +and mechanical forces. It does not modify the calculation of the +precession vectors (and thus does no impact the purely magnetic +properties). +This ensures that when all spins are aligned, the magnetic energy +and the associated mechanical forces (and thus the pressure +generated by the magnetic potential) are null. + +.. note:: + This offset term can be very important when calculations such as + equations of state (energy vs volume, or energy vs pressure) are + being performed. Indeed, setting the *offset* term ensures that + at the ground state of the crystal and at the equilibrium magnetic + configuration (typically ferromagnetic), the pressure is null, + as expected. + Otherwise, magnetic forces could generate a residual pressure. + +When the *offset* option is set to *no*, no offset is applied +(also corresponding to the default option). + +---------- + Restrictions """""""""""" All the *pair/spin* styles are part of the SPIN package. These styles are only enabled if LAMMPS was built with this package, and if the -atom_style "spin" was declared. See the :doc:`Build package ` doc page for more info. +atom_style "spin" was declared. +See the :doc:`Build package ` doc page for more info. Related commands """""""""""""""" @@ -105,7 +208,7 @@ Default """"""" -none +The default *offset* keyword value is *no*. ---------- diff --git a/doc/src/pair_srp.rst b/doc/src/pair_srp.rst index 620c74d515..59df8be1e2 100644 --- a/doc/src/pair_srp.rst +++ b/doc/src/pair_srp.rst @@ -124,7 +124,7 @@ at the cutoff distance :math:`r_c`. Mixing, shift, table, tail correction, restart, rRESPA info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -This pair styles does not support mixing. +This pair style does not support mixing. This pair style does not support the :doc:`pair_modify ` shift option for the energy of the pair interaction. Note that as diff --git a/doc/src/pair_style.rst b/doc/src/pair_style.rst index 887840cedf..c429fde213 100644 --- a/doc/src/pair_style.rst +++ b/doc/src/pair_style.rst @@ -305,6 +305,7 @@ accelerated styles exist. * :doc:`spin/dipole/long ` - * :doc:`spin/dmi ` - * :doc:`spin/exchange ` - +* :doc:`spin/exchange/biquadratic ` - * :doc:`spin/magelec ` - * :doc:`spin/neel ` - * :doc:`srp ` - diff --git a/doc/src/read_data.rst b/doc/src/read_data.rst index 3bdd37e02a..eb46700ce0 100644 --- a/doc/src/read_data.rst +++ b/doc/src/read_data.rst @@ -618,7 +618,7 @@ of analysis. * - tdpd - atom-ID atom-type x y z cc1 cc2 ... ccNspecies * - template - - atom-ID molecule-ID template-index template-atom atom-type x y z + - atom-ID atom-type molecule-ID template-index template-atom x y z * - tri - atom-ID molecule-ID atom-type triangleflag density x y z * - wavepacket @@ -695,9 +695,9 @@ triangle, or body in the corresponding *Ellipsoids*\ , *Lines*\ , The *template-index* and *template-atom* are only defined used by :doc:`atom_style template `. In this case the :doc:`molecule ` command is used to define a molecule template -which contains one or more molecules. If an atom belongs to one of -those molecules, its *template-index* and *template-atom* are both set -to positive integers; if not the values are both 0. The +which contains one or more molecules (as separate files). If an atom +belongs to one of those molecules, its *template-index* and *template-atom* +are both set to positive integers; if not the values are both 0. The *template-index* is which molecule (1 to Nmols) the atom belongs to. The *template-atom* is which atom (1 to Natoms) within the molecule the atom is. diff --git a/doc/src/read_dump.rst b/doc/src/read_dump.rst index c46c12c951..f9a8c87c86 100644 --- a/doc/src/read_dump.rst +++ b/doc/src/read_dump.rst @@ -370,6 +370,8 @@ needed to generate absolute, unscaled coordinates. Restrictions """""""""""" +The *native* dump file reader does not support binary .bin dump files. + To read gzipped dump files, you must compile LAMMPS with the -DLAMMPS_GZIP option. See the :doc:`Build settings ` doc page for details. diff --git a/doc/src/rerun.rst b/doc/src/rerun.rst index 16b036b449..7d51fba868 100644 --- a/doc/src/rerun.rst +++ b/doc/src/rerun.rst @@ -99,14 +99,15 @@ files do not match the specified output frequency. ---------- If more than one dump file is specified, the dump files are read one -after the other. It is assumed that snapshot timesteps will be in -ascending order. If a snapshot is encountered that is not in -ascending order, it will skip the snapshot until it reads one that is. +after the other in the order specified. It is assumed that snapshot +timesteps will be in ascending order. If a snapshot is encountered that +is not in ascending order, it will skip the snapshot until it reads one +that is. This allows skipping of a duplicate snapshot (same timestep), e.g. that appeared at the end of one file and beginning of the next. However if you specify a series of dump files in an incorrect order (with respect to the timesteps they contain), you may skip large -numbers of snapshots +numbers of snapshots. Note that the dump files specified as part of the *dump* keyword can be parallel files, i.e. written as multiple files either per processor @@ -118,17 +119,24 @@ and write parallel dump files. The *first*\ , *last*\ , *every*\ , *skip* keywords determine which snapshots are read from the dump file(s). Snapshots are skipped until -they have a timestamp >= *Nfirst*\ . When a snapshot with a timestamp > -*Nlast* is encountered, the rerun command finishes. Note below that +they have a timestep >= *Nfirst*\ . When a snapshot with a timestep > +*Nlast* is encountered, the rerun command finishes. Note that the defaults for *first* and *last* are to read all snapshots. If the *every* keyword is set to a value > 0, then only snapshots with -timestamps that are a multiple of *Nevery* are read (the first +timesteps that are a multiple of *Nevery* are read (the first snapshot is always read). If *Nevery* = 0, then this criterion is ignored, i.e. every snapshot is read that meets the other criteria. If the *skip* keyword is used, then after the first snapshot is read, every Nth snapshot is read, where N = *Nskip*\ . E.g. if *Nskip* = 3, then only 1 out of every 3 snapshots is read, assuming the snapshot -timestamp is also consistent with the other criteria. +timestep is also consistent with the other criteria. + +.. note:: + + Not all dump formats contain the timestep and not all dump readers + support reading it. In that case individual snapshots are assigned + consecutive timestep numbers starting at 1. + The *start* and *stop* keywords do not affect which snapshots are read from the dump file(s). Rather, they have the same meaning that they @@ -205,9 +213,8 @@ thermodynamic output or new dump file output. Restrictions """""""""""" -To read gzipped dump files, you must compile LAMMPS with the --DLAMMPS_GZIP option. See the :doc:`Build settings ` -doc page for details. +The *rerun* command is subject to all restrictions of +the :doc:`read_dump ` command. Related commands """""""""""""""" diff --git a/doc/utils/sphinx-config/_themes/lammps_theme/layout.html b/doc/utils/sphinx-config/_themes/lammps_theme/layout.html index 8e0d235d55..845f213a4c 100644 --- a/doc/utils/sphinx-config/_themes/lammps_theme/layout.html +++ b/doc/utils/sphinx-config/_themes/lammps_theme/layout.html @@ -48,6 +48,10 @@ + + {# Keep modernizr in head - http://modernizr.com/docs/#installing #} + + {%- if not embedded %} {# XXX Sphinx 1.8.0 made this an external js-file, quick fix until we refactor the template to inherert more blocks directly from sphinx #} {% if sphinx_version >= "1.8.0" %} @@ -103,12 +107,6 @@ {%- endif %} {%- endblock %} {%- block extrahead %} {% endblock %} - - {# Keep modernizr in head - http://modernizr.com/docs/#installing #} - - - {# for improved browser compatibility #} - diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 279b5b3b70..58deeaedc3 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -240,6 +240,7 @@ bigint Bij bilayer bilayers +biquadratic binsize binstyle binutils @@ -2619,7 +2620,6 @@ Ree refactored refactoring reflectionstyle -regoin Reinders reinit relaxbox @@ -2985,6 +2985,8 @@ Subclassed subcutoff subcycle subcycling +subhi +sublo Subramaniyan subscripted subscripting diff --git a/examples/README b/examples/README index 7eaa63bbd1..b48e5cd00c 100644 --- a/examples/README +++ b/examples/README @@ -111,6 +111,7 @@ srd: stochastic rotation dynamics (SRD) particles as solvent steinhardt: Steinhardt-Nelson Q_l and W_l parameters usng orientorder/atom streitz: Streitz-Mintmire potential for Al2O3 tad: temperature-accelerated dynamics of vacancy diffusion in bulk Si +template: examples for using atom_style template and comparing to atom style molecular threebody: regression test input for a variety of manybody potentials vashishta: models using the Vashishta potential voronoi: Voronoi tesselation via compute voronoi/atom command diff --git a/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp b/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp index 2bfa8393f3..6429cec349 100644 --- a/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp +++ b/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp @@ -26,7 +26,7 @@ velocity all create 100 4928459 rot yes dist gaussian #pair_style hybrid/overlay eam/alloy spin/exchange 4.0 spin/neel 4.0 pair_style hybrid/overlay eam/alloy spin/exchange 4.0 pair_coeff * * eam/alloy Co_PurjaPun_2012.eam.alloy Co -pair_coeff * * spin/exchange exchange 4.0 -0.3593 1.135028015e-05 1.064568567 +pair_coeff * * spin/exchange exchange 4.0 -0.3593 1.135028015e-05 1.0645 offset yes #pair_coeff * * spin/neel neel 4.0 0.0048 0.234 1.168 2.6905 0.705 0.652 neighbor 0.1 bin diff --git a/examples/SPIN/iron/in.spin.iron b/examples/SPIN/iron/in.spin.iron index 58c0537af7..f678d39f56 100644 --- a/examples/SPIN/iron/in.spin.iron +++ b/examples/SPIN/iron/in.spin.iron @@ -25,7 +25,7 @@ velocity all create 100 4928459 rot yes dist gaussian pair_style hybrid/overlay eam/alloy spin/exchange 3.5 pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe -pair_coeff * * spin/exchange exchange 3.4 0.02726 0.2171 1.841 +pair_coeff * * spin/exchange exchange 3.4 0.02726 0.2171 1.841 offset yes neighbor 0.1 bin neigh_modify every 10 check yes delay 20 diff --git a/examples/SPIN/iron/in.spin.iron_cubic b/examples/SPIN/iron/in.spin.iron_cubic index 30a3e0e97c..35011e796f 100644 --- a/examples/SPIN/iron/in.spin.iron_cubic +++ b/examples/SPIN/iron/in.spin.iron_cubic @@ -21,9 +21,9 @@ mass 1 55.845 set group all spin 2.2 -1.0 0.0 0.0 velocity all create 100 4928459 rot yes dist gaussian -pair_style hybrid/overlay eam/alloy spin/exchange 3.5 +pair_style hybrid/overlay eam/alloy spin/exchange/biquadratic 3.5 pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe -pair_coeff * * spin/exchange exchange 3.4 0.02726 0.2171 1.841 +pair_coeff * * spin/exchange/biquadratic biquadratic 3.4 0.02726 0.2171 1.841 0.0 0.0 2.0 offset yes neighbor 0.1 bin neigh_modify every 10 check yes delay 20 diff --git a/examples/SPIN/test_problems/validation_damped_exchange/llg_exchange.py b/examples/SPIN/test_problems/validation_damped_exchange/llg_exchange.py index 49eecb5b44..5b93ac5c2d 100755 --- a/examples/SPIN/test_problems/validation_damped_exchange/llg_exchange.py +++ b/examples/SPIN/test_problems/validation_damped_exchange/llg_exchange.py @@ -6,9 +6,17 @@ import matplotlib.pyplot as plt import mpmath as mp hbar=0.658212 # Planck's constant (eV.fs/rad) -J0=0.05 # per-neighbor exchange interaction (eV) +# J0=0.05 # per-neighbor exchange interaction (eV) + +# exchange interaction parameters +J1 = 11.254 # in eV +J2 = 0.0 # adim +J3 = 1.0 # in Ang. + +# initial spins S1 = np.array([1.0, 0.0, 0.0]) S2 = np.array([0.0, 1.0, 0.0]) + alpha=0.01 # damping coefficient pi=math.pi @@ -30,6 +38,14 @@ def rotation_matrix(axis, theta): [2 * (bc - ad), aa + cc - bb - dd, 2 * (cd + ab)], [2 * (bd + ac), 2 * (cd - ab), aa + dd - bb - cc]]) +#Definition of the Bethe-Slater function +def func_BS(x,a,b,c): + return 4*a*((x/c)**2)*(1-b*(x/c)**2)*np.exp(-(x/c)**2) + +#Definition of the derivative of the Bethe-Slater function +def func_dBS(x,a,b,c): + return 4*a*((x/c)**2)*(1-b*(x/c)**2)*np.exp(-(x/c)**2) + # calculating precession field of spin Sr def calc_rot_vector(Sr,Sf): rot = (J0/hbar)*(Sf-alpha*np.cross(Sf,Sr))/(1.0+alpha**2) @@ -65,6 +81,6 @@ for t in range (0,N): # calc. average magnetization Sm = (S1+S2)*0.5 # calc. energy - en = -2.0*J0*(np.dot(S1,S2)) + en = -J0*(np.dot(S1,S2)) # print res. in ps for comparison with LAMMPS print(t*dt/1000.0,Sm[0],Sm[1],Sm[2],en) diff --git a/examples/SPIN/test_problems/validation_damped_exchange/run-test-exchange.sh b/examples/SPIN/test_problems/validation_damped_exchange/run-test-exchange.sh index 599730fe7b..bd878a52de 100755 --- a/examples/SPIN/test_problems/validation_damped_exchange/run-test-exchange.sh +++ b/examples/SPIN/test_problems/validation_damped_exchange/run-test-exchange.sh @@ -13,7 +13,7 @@ en="$(echo "$en-$in" | bc -l)" tail -n +$in log.lammps | head -n $en > res_lammps.dat # compute Langevin -python3 -m llg_exchange.py > res_llg.dat +python3 llg_exchange.py > res_llg.dat # plot results -python3 -m plot_precession.py res_lammps.dat res_llg.dat +python3 plot_precession.py res_lammps.dat res_llg.dat diff --git a/examples/SPIN/test_problems/validation_damped_exchange/test-spin-precession.in b/examples/SPIN/test_problems/validation_damped_exchange/test-spin-precession.in index 0ca49364d2..9dfb4a98d6 100644 --- a/examples/SPIN/test_problems/validation_damped_exchange/test-spin-precession.in +++ b/examples/SPIN/test_problems/validation_damped_exchange/test-spin-precession.in @@ -5,22 +5,24 @@ atom_style spin atom_modify map array boundary f f f -read_data two_spins.data +atom_modify map array +lattice sc 3.0 +region box block 0 2 0 1 0 1 +create_box 1 box +create_atoms 1 box + +mass 1 55.845 +set atom 1 spin 2.0 1.0 0.0 0.0 +set atom 2 spin 2.0 0.0 1.0 0.0 pair_style spin/exchange 3.1 pair_coeff * * exchange 3.1 11.254 0.0 1.0 -group bead type 1 - -variable H equal 0.0 -variable Kan equal 0.0 variable Temperature equal 0.0 variable RUN equal 30000 -fix 1 all nve/spin lattice no -fix 2 all precession/spin zeeman ${H} 0.0 0.0 1.0 anisotropy ${Kan} 0.0 0.0 1.0 -fix_modify 2 energy yes -fix 3 all langevin/spin ${Temperature} 0.01 12345 +fix 1 all nve/spin lattice frozen +fix 2 all langevin/spin ${Temperature} 0.01 12345 compute out_mag all spin compute out_pe all pe @@ -34,6 +36,9 @@ variable emag equal c_out_mag[5] thermo_style custom step time v_magx v_magy v_magz v_emag pe etotal thermo 10 +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 10 dump.data type x y z c_outsp[1] c_outsp[2] c_outsp[3] fx fy fz + timestep 0.0001 run ${RUN} diff --git a/examples/SPIN/test_problems/validation_damped_exchange/two_spins.data b/examples/SPIN/test_problems/validation_damped_exchange/two_spins.data deleted file mode 100644 index 013f813751..0000000000 --- a/examples/SPIN/test_problems/validation_damped_exchange/two_spins.data +++ /dev/null @@ -1,22 +0,0 @@ -LAMMPS data file via write_data, version 19 Sep 2019, timestep = 0 - -2 atoms -1 atom types - -0.0 6.0 xlo xhi -0.0 3.0 ylo yhi -0.0 3.0 zlo zhi - -Masses - -1 1 - -Atoms # spin - -1 1 2.0 0.0 0.0 0.0 1.0 0.0 0.0 0 0 0 -2 1 2.0 3.0 0.0 0.0 0.0 1.0 0.0 0 0 0 - -Velocities - -1 0.0 0.0 0.0 -2 0.0 0.0 0.0 diff --git a/examples/SPIN/test_problems/validation_nve/run-test-nve.sh b/examples/SPIN/test_problems/validation_nve/run-test-nve.sh index 441e7cf46d..18cedd9503 100755 --- a/examples/SPIN/test_problems/validation_nve/run-test-nve.sh +++ b/examples/SPIN/test_problems/validation_nve/run-test-nve.sh @@ -13,4 +13,4 @@ en="$(echo "$en-$in" | bc -l)" tail -n +$in log.lammps | head -n $en > res_lammps.dat # plot results -python3 -m plot_nve.py res_lammps.dat res_llg.dat +python3 plot_nve.py res_lammps.dat res_llg.dat diff --git a/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_lattice b/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_lattice index 1d63f01d43..2375c0ff8d 100644 --- a/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_lattice +++ b/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_lattice @@ -30,7 +30,7 @@ neighbor 0.1 bin neigh_modify every 10 check yes delay 20 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 -fix 2 all langevin 200.0 200.0 10.0 48279 +fix 2 all langevin 200.0 200.0 1.0 48279 fix 3 all langevin/spin 0.0 0.00001 321 fix 4 all nve/spin lattice moving timestep 0.001 diff --git a/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_spin b/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_spin index 435e877bdf..6b65df7109 100644 --- a/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_spin +++ b/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_spin @@ -29,7 +29,7 @@ neighbor 0.1 bin neigh_modify every 10 check yes delay 20 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 -fix 2 all langevin/spin 200.0 0.1 321 +fix 2 all langevin/spin 200.0 0.01 321 fix 3 all nve/spin lattice moving timestep 0.001 diff --git a/examples/SPIN/test_problems/validation_nvt/plot_nvt.py b/examples/SPIN/test_problems/validation_nvt/plot_nvt.py index 06c48b4c28..4109d60245 100755 --- a/examples/SPIN/test_problems/validation_nvt/plot_nvt.py +++ b/examples/SPIN/test_problems/validation_nvt/plot_nvt.py @@ -39,5 +39,5 @@ plt.xlabel('Time (in ps)') plt.legend() plt.show() -fig.savefig(os.path.join(os.getcwd(), "nve_spin_lattice.pdf"), bbox_inches="tight") +fig.savefig(os.path.join(os.getcwd(), "nvt_spin_lattice.pdf"), bbox_inches="tight") plt.close(fig) diff --git a/examples/gcmc/data.spce b/examples/gcmc/data.spce index 03f10e290f..5459e23014 100644 --- a/examples/gcmc/data.spce +++ b/examples/gcmc/data.spce @@ -28,8 +28,8 @@ LAMMPS data file. CGCMM style. atom_style full generated by VMD/TopoTools v1.8 o Masses - 1 1.007940 # 1 - 2 15.999400 # 2 + 1 15.999400 # 1 + 2 1.007940 # 2 Atoms # full diff --git a/examples/granular/in.pour.drum b/examples/granular/in.pour.drum index 54372cd391..e0a0455f61 100644 --- a/examples/granular/in.pour.drum +++ b/examples/granular/in.pour.drum @@ -2,99 +2,98 @@ # 'turn' cylinder by changing direction of gravity, then rotate it. # This simulates a rotating drum powder characterization experiment. -variable name string rotating_drum_two_types +variable name string rotating_drum_two_types -atom_style sphere -units lj +atom_style sphere +units lj ############################################### # Geometry-related parameters ############################################### -variable boxx equal 30 -variable boxy equal 30 -variable boxz equal 50 +variable boxx equal 30 +variable boxy equal 30 +variable boxz equal 50 -variable drum_rad equal ${boxx}*0.5 -variable drum_height equal 20 +variable drum_rad equal ${boxx}*0.5 +variable drum_height equal 20 -variable xc equal 0.5*${boxx} -variable yc equal 0.5*${boxx} -variable zc equal 0.5*${boxz} +variable xc equal 0.5*${boxx} +variable yc equal 0.5*${boxx} +variable zc equal 0.5*${boxz} ############################################### # Particle-related parameters ############################################### -variable rlo equal 0.25 -variable rhi equal 0.5 -variable dlo equal 2.0*${rlo} -variable dhi equal 2.0*${rhi} +variable rlo equal 0.25 +variable rhi equal 0.5 +variable dlo equal 2.0*${rlo} +variable dhi equal 2.0*${rhi} -variable cyl_rad_inner equal ${drum_rad}-1.1*${rhi} +variable cyl_rad_inner equal ${drum_rad}-1.1*${rhi} -variable dens equal 1.0 +variable dens equal 1.0 variable skin equal 0.4*${rhi} ############# processors * * 1 -region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz} -create_box 2 boxreg -change_box all boundary p p f -comm_modify vel yes +region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz} +create_box 2 boxreg +change_box all boundary p p f -variable theta equal 0 +pair_style granular +pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji +pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji -region curved_wall cylinder z ${xc} ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1 -region bottom_wall plane ${xc} ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1 +variable theta equal 0 -region insreg cylinder z ${xc} ${yc} ${cyl_rad_inner} ${drum_height} ${boxz} +region curved_wall cylinder z ${xc} ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1 +region bottom_wall plane ${xc} ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1 -fix 0 all balance 100 1.0 shift xy 5 1.1 -fix 1 all nve/sphere -fix grav all gravity 10 vector 0 0 -1 -fix ins1 all pour 2000 1 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens} -fix ins2 all pour 2000 2 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens} +region insreg cylinder z ${xc} ${yc} ${cyl_rad_inner} ${drum_height} ${boxz} -comm_modify vel yes +fix 0 all balance 100 1.0 shift xy 5 1.1 +fix 1 all nve/sphere +fix grav all gravity 10 vector 0 0 -1 +fix ins1 all pour 2000 1 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens} +fix ins2 all pour 2000 2 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens} -neighbor ${skin} bin -neigh_modify delay 0 every 1 check yes +comm_modify vel yes -pair_style granular -pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji -pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji +neighbor ${skin} bin +neigh_modify delay 0 every 1 check yes -fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall -fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall +fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall +fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall -thermo_style custom step atoms ke v_theta -thermo_modify lost warn -thermo 100 +thermo_style custom step atoms ke v_theta +thermo_modify lost warn +thermo 100 -timestep 0.001 +timestep 0.001 -#dump 1 all custom 100 ${name}.dump id type radius mass x y z +#dump 1 all custom 100 ${name}.dump id type radius mass x y z #For removal later -compute 1 all property/atom radius -variable zmax atom z+c_1>0.5*${drum_height} -group delgroup dynamic all var zmax every 10000 +compute 1 all property/atom radius +variable zmax atom z+c_1>0.5*${drum_height} +group delgroup dynamic all var zmax every 10000 -run 2000 +run 2000 #Remove any particles that are above z > 0.5*drum_height -delete_atoms group delgroup +delete_atoms group delgroup #Add top lid -region top_wall plane ${xc} ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1 -fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region top_wall +region top_wall plane ${xc} ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1 +fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region top_wall # 'Turn' drum by switching the direction of gravity -unfix grav -unfix ins1 -unfix ins2 -fix grav all gravity 10 vector 0 -1 0 +unfix grav +unfix ins1 +unfix ins2 +fix grav all gravity 10 vector 0 -1 0 -variable theta equal 2*PI*elapsed/20000.0 -run 3000 +variable theta equal 2*PI*elapsed/20000.0 +run 3000 diff --git a/examples/granular/in.pour.flatwall b/examples/granular/in.pour.flatwall index cfa70e2d84..74d7c7370e 100644 --- a/examples/granular/in.pour.flatwall +++ b/examples/granular/in.pour.flatwall @@ -1,67 +1,65 @@ # pour two types of particles (cohesive and non-cohesive) on flat wall -variable name string pour_two_types +variable name string pour_two_types -atom_style sphere -units lj +atom_style sphere +units lj ############################################### # Geometry-related parameters ############################################### -variable boxx equal 20 -variable boxy equal 20 -variable boxz equal 30 +variable boxx equal 20 +variable boxy equal 20 +variable boxz equal 30 -variable xc1 equal 0.3*${boxx} -variable xc2 equal 0.7*${boxx} -variable yc equal 0.5*${boxy} +variable xc1 equal 0.3*${boxx} +variable xc2 equal 0.7*${boxx} +variable yc equal 0.5*${boxy} ############################################### # Particle-related parameters ############################################### -variable rlo equal 0.25 -variable rhi equal 0.5 -variable dlo equal 2.0*${rlo} -variable dhi equal 2.0*${rhi} +variable rlo equal 0.25 +variable rhi equal 0.5 +variable dlo equal 2.0*${rlo} +variable dhi equal 2.0*${rhi} -variable dens equal 1.0 +variable dens equal 1.0 variable skin equal 0.3*${rhi} ############# -processors * * 1 -region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz} -create_box 2 boxreg -change_box all boundary p p f +processors * * 1 +region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz} +create_box 2 boxreg +change_box all boundary p p f -comm_modify vel yes +pair_style granular +pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall +pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall -region insreg1 cylinder z ${xc1} ${yc} 5 15 ${boxz} -region insreg2 cylinder z ${xc2} ${yc} 5 15 ${boxz} +comm_modify vel yes -fix 1 all nve/sphere -fix grav all gravity 10.0 vector 0 0 -1 -fix ins1 all pour 1500 1 3123 region insreg1 diam range ${dlo} ${dhi} dens ${dens} ${dens} -fix ins2 all pour 1500 2 3123 region insreg2 diam range ${dlo} ${dhi} dens ${dens} ${dens} +region insreg1 cylinder z ${xc1} ${yc} 5 15 ${boxz} +region insreg2 cylinder z ${xc2} ${yc} 5 15 ${boxz} -comm_modify vel yes +fix 1 all nve/sphere +fix grav all gravity 10.0 vector 0 0 -1 +fix ins1 all pour 1500 1 3123 region insreg1 diam range ${dlo} ${dhi} dens ${dens} ${dens} +fix ins2 all pour 1500 2 3123 region insreg2 diam range ${dlo} ${dhi} dens ${dens} ${dens} -neighbor ${skin} bin -neigh_modify delay 0 every 1 check yes +neighbor ${skin} bin +neigh_modify delay 0 every 1 check yes -pair_style granular -pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall -pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall +fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL -fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL +thermo_style custom step atoms ke +thermo_modify lost warn +thermo 100 -thermo_style custom step cpu atoms ke -thermo_modify lost warn -thermo 100 +timestep 0.001 -timestep 0.001 +#dump 1 all custom 100 ${name}.dump id type radius mass x y z -#dump 1 all custom 100 ${name}.dump id type radius mass x y z - -run 5000 +run 5000 diff --git a/examples/granular/log.29Mar19.pour.drum.g++.1 b/examples/granular/log.29Oct20.pour.drum.g++.1 similarity index 69% rename from examples/granular/log.29Mar19.pour.drum.g++.1 rename to examples/granular/log.29Oct20.pour.drum.g++.1 index 71232ed8dd..8c4b828488 100644 --- a/examples/granular/log.29Mar19.pour.drum.g++.1 +++ b/examples/granular/log.29Oct20.pour.drum.g++.1 @@ -1,5 +1,4 @@ -LAMMPS (29 Mar 2019) -OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88) +LAMMPS (29 Oct 2020) using 1 OpenMP thread(s) per MPI task # pour two types of particles (cohesive and non-cohesive) into cylinder # 'turn' cylinder by changing direction of gravity, then rotate it. @@ -55,10 +54,14 @@ region boxreg block 0 30 0 ${boxy} 0 ${boxz} region boxreg block 0 30 0 30 0 ${boxz} region boxreg block 0 30 0 30 0 50 create_box 2 boxreg -Created orthogonal box = (0 0 0) to (30 30 50) +Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (30.000000 30.000000 50.000000) 1 by 1 by 1 MPI processor grid change_box all boundary p p f -comm_modify vel yes +Changing box ... + +pair_style granular +pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji +pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji variable theta equal 0 @@ -104,10 +107,6 @@ neighbor ${skin} bin neighbor 0.2 bin neigh_modify delay 0 every 1 check yes -pair_style granular -pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji -pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji - fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall @@ -117,8 +116,7 @@ thermo 100 timestep 0.001 -dump 1 all custom 100 ${name}.dump id type radius mass x y z -dump 1 all custom 100 rotating_drum_two_types.dump id type radius mass x y z +#dump 1 all custom 100 ${name}.dump id type radius mass x y z #For removal later compute 1 all property/atom radius @@ -140,7 +138,7 @@ Neighbor list info ... pair build: half/size/bin/newton stencil: half/bin/3d/newton bin: standard -Per MPI rank memory allocation (min/avg/max) = 13.02 | 13.02 | 13.02 Mbytes +Per MPI rank memory allocation (min/avg/max) = 13.03 | 13.03 | 13.03 Mbytes Step Atoms KinEng v_theta 0 0 -0 0 100 4000 -0 0 @@ -163,32 +161,32 @@ Step Atoms KinEng v_theta 1800 4000 -0 0 1900 4000 -0 0 2000 4000 -0 0 -Loop time of 3.54461 on 1 procs for 2000 steps with 4000 atoms +Loop time of 10.5178 on 1 procs for 2000 steps with 4000 atoms -Performance: 48750.057 tau/day, 564.237 timesteps/s -99.5% CPU use with 1 MPI tasks x 1 OpenMP threads +Performance: 16429.309 tau/day, 190.154 timesteps/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.61949 | 0.61949 | 0.61949 | 0.0 | 17.48 -Neigh | 1.2492 | 1.2492 | 1.2492 | 0.0 | 35.24 -Comm | 0.046404 | 0.046404 | 0.046404 | 0.0 | 1.31 -Output | 0.15901 | 0.15901 | 0.15901 | 0.0 | 4.49 -Modify | 1.4165 | 1.4165 | 1.4165 | 0.0 | 39.96 -Other | | 0.05391 | | | 1.52 +Pair | 1.0701 | 1.0701 | 1.0701 | 0.0 | 10.17 +Neigh | 4.2135 | 4.2135 | 4.2135 | 0.0 | 40.06 +Comm | 0.38276 | 0.38276 | 0.38276 | 0.0 | 3.64 +Output | 0.0013647 | 0.0013647 | 0.0013647 | 0.0 | 0.01 +Modify | 4.7076 | 4.7076 | 4.7076 | 0.0 | 44.76 +Other | | 0.1424 | | | 1.35 -Nlocal: 4000 ave 4000 max 4000 min +Nlocal: 4000.00 ave 4000 max 4000 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 166 ave 166 max 166 min +Nghost: 171.000 ave 171 max 171 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 8195 ave 8195 max 8195 min +Neighs: 8093.00 ave 8093 max 8093 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Total # of neighbors = 8195 -Ave neighs/atom = 2.04875 +Total # of neighbors = 8093 +Ave neighs/atom = 2.0232500 Neighbor list builds = 1004 -Dangerous builds = 3 +Dangerous builds = 4 #Remove any particles that are above z > 0.5*drum_height delete_atoms group delgroup @@ -205,67 +203,69 @@ fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindl # 'Turn' drum by switching the direction of gravity unfix grav +unfix ins1 +unfix ins2 fix grav all gravity 10 vector 0 -1 0 variable theta equal 2*PI*elapsed/20000.0 run 3000 -Per MPI rank memory allocation (min/avg/max) = 24.81 | 24.81 | 24.81 Mbytes +Per MPI rank memory allocation (min/avg/max) = 19.37 | 19.37 | 19.37 Mbytes Step Atoms KinEng v_theta - 2000 4000 64.333531 0 - 2100 4000 106.69182 0.031415927 - 2200 4000 121.8461 0.062831853 - 2300 4000 88.767952 0.09424778 - 2400 4000 82.850721 0.12566371 - 2500 4000 91.683284 0.15707963 - 2600 4000 31.56344 0.18849556 - 2700 4000 4.5697672 0.21991149 - 2800 4000 3.9879051 0.25132741 - 2900 4000 4.4394235 0.28274334 - 3000 4000 5.1212931 0.31415927 - 3100 4000 5.8608892 0.34557519 - 3200 4000 6.600714 0.37699112 - 3300 4000 7.3497851 0.40840704 - 3400 4000 8.0490988 0.43982297 - 3500 4000 8.6712396 0.4712389 - 3600 4000 9.1328667 0.50265482 - 3700 4000 9.4683561 0.53407075 - 3800 4000 9.5878145 0.56548668 - 3900 4000 9.387745 0.5969026 - 4000 4000 8.9117631 0.62831853 - 4100 4000 8.2344368 0.65973446 - 4200 4000 7.5335088 0.69115038 - 4300 4000 6.8426179 0.72256631 - 4400 4000 6.0567247 0.75398224 - 4500 4000 5.4166132 0.78539816 - 4600 4000 4.6012409 0.81681409 - 4700 4000 3.8314982 0.84823002 - 4800 4000 3.1916415 0.87964594 - 4900 4000 2.7833964 0.91106187 - 5000 4000 2.5051362 0.9424778 -Loop time of 11.9545 on 1 procs for 3000 steps with 4000 atoms + 2000 4000 65.647582 0 + 2100 4000 105.60001 0.031415927 + 2200 4000 112.27573 0.062831853 + 2300 4000 92.758671 0.09424778 + 2400 4000 88.925835 0.12566371 + 2500 4000 81.369163 0.15707963 + 2600 4000 32.046943 0.18849556 + 2700 4000 4.1926368 0.21991149 + 2800 4000 3.9933453 0.25132741 + 2900 4000 4.5062193 0.28274334 + 3000 4000 5.3409521 0.31415927 + 3100 4000 6.0165991 0.34557519 + 3200 4000 6.606767 0.37699112 + 3300 4000 7.3997751 0.40840704 + 3400 4000 8.1098807 0.43982297 + 3500 4000 8.6552424 0.4712389 + 3600 4000 9.8445204 0.50265482 + 3700 4000 10.098753 0.53407075 + 3800 4000 10.039489 0.56548668 + 3900 4000 9.6376278 0.5969026 + 4000 4000 9.2598836 0.62831853 + 4100 4000 8.7116037 0.65973446 + 4200 4000 8.1274117 0.69115038 + 4300 4000 7.1487627 0.72256631 + 4400 4000 6.2253778 0.75398224 + 4500 4000 5.3061398 0.78539816 + 4600 4000 4.4319316 0.81681409 + 4700 4000 4.205607 0.84823002 + 4800 4000 3.2112987 0.87964594 + 4900 4000 2.6449777 0.91106187 + 5000 4000 2.3475497 0.9424778 +Loop time of 32.4926 on 1 procs for 3000 steps with 4000 atoms -Performance: 21682.142 tau/day, 250.951 timesteps/s -99.7% CPU use with 1 MPI tasks x 1 OpenMP threads +Performance: 7977.205 tau/day, 92.329 timesteps/s +99.9% CPU use with 1 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 4.8291 | 4.8291 | 4.8291 | 0.0 | 40.40 -Neigh | 2.7489 | 2.7489 | 2.7489 | 0.0 | 22.99 -Comm | 0.071249 | 0.071249 | 0.071249 | 0.0 | 0.60 -Output | 0.20547 | 0.20547 | 0.20547 | 0.0 | 1.72 -Modify | 4.0179 | 4.0179 | 4.0179 | 0.0 | 33.61 -Other | | 0.0819 | | | 0.69 +Pair | 8.0124 | 8.0124 | 8.0124 | 0.0 | 24.66 +Neigh | 10.993 | 10.993 | 10.993 | 0.0 | 33.83 +Comm | 0.86697 | 0.86697 | 0.86697 | 0.0 | 2.67 +Output | 0.0021827 | 0.0021827 | 0.0021827 | 0.0 | 0.01 +Modify | 12.367 | 12.367 | 12.367 | 0.0 | 38.06 +Other | | 0.2515 | | | 0.77 -Nlocal: 4000 ave 4000 max 4000 min +Nlocal: 4000.00 ave 4000 max 4000 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Nghost: 322 ave 322 max 322 min +Nghost: 318.000 ave 318 max 318 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Neighs: 14849 ave 14849 max 14849 min +Neighs: 14807.0 ave 14807 max 14807 min Histogram: 1 0 0 0 0 0 0 0 0 0 -Total # of neighbors = 14849 -Ave neighs/atom = 3.71225 -Neighbor list builds = 1290 -Dangerous builds = 672 -Total wall time: 0:00:15 +Total # of neighbors = 14807 +Ave neighs/atom = 3.7017500 +Neighbor list builds = 2189 +Dangerous builds = 1536 +Total wall time: 0:00:43 diff --git a/examples/granular/log.29Mar19.pour.drum.g++.4 b/examples/granular/log.29Oct20.pour.drum.g++.4 similarity index 69% rename from examples/granular/log.29Mar19.pour.drum.g++.4 rename to examples/granular/log.29Oct20.pour.drum.g++.4 index ccd4365a38..e53da50b9b 100644 --- a/examples/granular/log.29Mar19.pour.drum.g++.4 +++ b/examples/granular/log.29Oct20.pour.drum.g++.4 @@ -1,5 +1,4 @@ -LAMMPS (29 Mar 2019) -OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88) +LAMMPS (29 Oct 2020) using 1 OpenMP thread(s) per MPI task # pour two types of particles (cohesive and non-cohesive) into cylinder # 'turn' cylinder by changing direction of gravity, then rotate it. @@ -55,10 +54,14 @@ region boxreg block 0 30 0 ${boxy} 0 ${boxz} region boxreg block 0 30 0 30 0 ${boxz} region boxreg block 0 30 0 30 0 50 create_box 2 boxreg -Created orthogonal box = (0 0 0) to (30 30 50) +Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (30.000000 30.000000 50.000000) 2 by 2 by 1 MPI processor grid change_box all boundary p p f -comm_modify vel yes +Changing box ... + +pair_style granular +pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji +pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji variable theta equal 0 @@ -104,10 +107,6 @@ neighbor ${skin} bin neighbor 0.2 bin neigh_modify delay 0 every 1 check yes -pair_style granular -pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji -pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji - fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall @@ -117,8 +116,7 @@ thermo 100 timestep 0.001 -dump 1 all custom 100 ${name}.dump id type radius mass x y z -dump 1 all custom 100 rotating_drum_two_types.dump id type radius mass x y z +#dump 1 all custom 100 ${name}.dump id type radius mass x y z #For removal later compute 1 all property/atom radius @@ -163,32 +161,32 @@ Step Atoms KinEng v_theta 1800 4000 -0 0 1900 4000 -0 0 2000 4000 -0 0 -Loop time of 2.0709 on 4 procs for 2000 steps with 4000 atoms +Loop time of 3.86825 on 4 procs for 2000 steps with 4000 atoms -Performance: 83442.024 tau/day, 965.764 timesteps/s -97.7% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 44671.398 tau/day, 517.030 timesteps/s +96.7% CPU use with 4 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 0.24679 | 0.26336 | 0.28853 | 3.0 | 12.72 -Neigh | 0.52279 | 0.5332 | 0.53858 | 0.9 | 25.75 -Comm | 0.17418 | 0.20253 | 0.23266 | 4.7 | 9.78 -Output | 0.092897 | 0.093531 | 0.09515 | 0.3 | 4.52 -Modify | 0.88151 | 0.89571 | 0.90582 | 0.9 | 43.25 -Other | | 0.08257 | | | 3.99 +Pair | 0.26114 | 0.27918 | 0.28728 | 2.0 | 7.22 +Neigh | 1.2044 | 1.2414 | 1.3105 | 3.7 | 32.09 +Comm | 0.38592 | 0.47065 | 0.51052 | 7.4 | 12.17 +Output | 0.0007236 | 0.0013456 | 0.0024846 | 1.8 | 0.03 +Modify | 1.6217 | 1.6723 | 1.7801 | 5.0 | 43.23 +Other | | 0.2034 | | | 5.26 -Nlocal: 1000 ave 1001 max 999 min +Nlocal: 1000.00 ave 1012 max 988 min Histogram: 2 0 0 0 0 0 0 0 0 2 -Nghost: 267.75 ave 276 max 262 min -Histogram: 1 0 1 0 1 0 0 0 0 1 -Neighs: 2031.5 ave 2091 max 1958 min -Histogram: 1 0 0 0 1 0 0 1 0 1 +Nghost: 269.250 ave 278 max 256 min +Histogram: 1 0 0 0 0 0 1 1 0 1 +Neighs: 2060.50 ave 2156 max 1921 min +Histogram: 1 0 0 1 0 0 0 0 0 2 -Total # of neighbors = 8126 -Ave neighs/atom = 2.0315 +Total # of neighbors = 8242 +Ave neighs/atom = 2.0605000 Neighbor list builds = 1004 -Dangerous builds = 3 +Dangerous builds = 4 #Remove any particles that are above z > 0.5*drum_height delete_atoms group delgroup @@ -205,67 +203,69 @@ fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindl # 'Turn' drum by switching the direction of gravity unfix grav +unfix ins1 +unfix ins2 fix grav all gravity 10 vector 0 -1 0 variable theta equal 2*PI*elapsed/20000.0 run 3000 -Per MPI rank memory allocation (min/avg/max) = 21.6 | 22.6 | 23.82 Mbytes +Per MPI rank memory allocation (min/avg/max) = 18.55 | 18.55 | 18.55 Mbytes Step Atoms KinEng v_theta - 2000 4000 64.255821 0 - 2100 4000 106.47082 0.031415927 - 2200 4000 121.52634 0.062831853 - 2300 4000 87.748818 0.09424778 - 2400 4000 82.712784 0.12566371 - 2500 4000 90.618713 0.15707963 - 2600 4000 30.096031 0.18849556 - 2700 4000 4.0838611 0.21991149 - 2800 4000 3.7485959 0.25132741 - 2900 4000 4.2159774 0.28274334 - 3000 4000 4.8730048 0.31415927 - 3100 4000 5.6109465 0.34557519 - 3200 4000 6.4290528 0.37699112 - 3300 4000 7.2699677 0.40840704 - 3400 4000 8.0895944 0.43982297 - 3500 4000 8.7222781 0.4712389 - 3600 4000 9.133205 0.50265482 - 3700 4000 9.3404584 0.53407075 - 3800 4000 9.3359844 0.56548668 - 3900 4000 9.0916854 0.5969026 - 4000 4000 8.5596424 0.62831853 - 4100 4000 7.9734883 0.65973446 - 4200 4000 7.2154383 0.69115038 - 4300 4000 6.7039232 0.72256631 - 4400 4000 6.1542738 0.75398224 - 4500 4000 5.4049454 0.78539816 - 4600 4000 4.4603192 0.81681409 - 4700 4000 3.6197985 0.84823002 - 4800 4000 2.9895571 0.87964594 - 4900 4000 2.5314553 0.91106187 - 5000 4000 2.2645533 0.9424778 -Loop time of 6.64209 on 4 procs for 3000 steps with 4000 atoms + 2000 4000 65.819213 0 + 2100 4000 105.02389 0.031415927 + 2200 4000 112.02469 0.062831853 + 2300 4000 92.271262 0.09424778 + 2400 4000 89.369506 0.12566371 + 2500 4000 80.910925 0.15707963 + 2600 4000 31.620722 0.18849556 + 2700 4000 4.3019937 0.21991149 + 2800 4000 3.9913967 0.25132741 + 2900 4000 4.5203726 0.28274334 + 3000 4000 5.484886 0.31415927 + 3100 4000 6.1085958 0.34557519 + 3200 4000 6.7085635 0.37699112 + 3300 4000 7.4787777 0.40840704 + 3400 4000 8.2116413 0.43982297 + 3500 4000 8.7979302 0.4712389 + 3600 4000 9.871649 0.50265482 + 3700 4000 10.012426 0.53407075 + 3800 4000 9.9067754 0.56548668 + 3900 4000 9.725458 0.5969026 + 4000 4000 9.3350056 0.62831853 + 4100 4000 8.8337295 0.65973446 + 4200 4000 8.2712493 0.69115038 + 4300 4000 6.9609934 0.72256631 + 4400 4000 6.0120294 0.75398224 + 4500 4000 5.0490036 0.78539816 + 4600 4000 4.2796544 0.81681409 + 4700 4000 4.1736483 0.84823002 + 4800 4000 3.0860106 0.87964594 + 4900 4000 2.6670909 0.91106187 + 5000 4000 2.2901814 0.9424778 +Loop time of 10.7627 on 4 procs for 3000 steps with 4000 atoms -Performance: 39023.861 tau/day, 451.665 timesteps/s -96.6% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 24083.252 tau/day, 278.741 timesteps/s +97.9% CPU use with 4 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 1.8376 | 2.126 | 2.3131 | 12.6 | 32.01 -Neigh | 0.97762 | 1.0518 | 1.1337 | 5.4 | 15.84 -Comm | 0.53699 | 0.84265 | 1.2325 | 27.6 | 12.69 -Output | 0.13922 | 0.14159 | 0.14388 | 0.4 | 2.13 -Modify | 1.8815 | 2.1026 | 2.3368 | 11.2 | 31.66 -Other | | 0.3774 | | | 5.68 +Pair | 1.6731 | 2.0701 | 2.3327 | 18.9 | 19.23 +Neigh | 2.7389 | 3.1706 | 3.5146 | 15.7 | 29.46 +Comm | 0.93507 | 1.5441 | 2.1182 | 39.1 | 14.35 +Output | 0.0021682 | 0.0044412 | 0.006026 | 2.2 | 0.04 +Modify | 3.0031 | 3.4223 | 3.9262 | 18.3 | 31.80 +Other | | 0.5511 | | | 5.12 -Nlocal: 1000 ave 1256 max 744 min +Nlocal: 1000.00 ave 1277 max 723 min Histogram: 2 0 0 0 0 0 0 0 0 2 -Nghost: 579.5 ave 789 max 498 min -Histogram: 2 1 0 0 0 0 0 0 0 1 -Neighs: 3696.25 ave 4853 max 2590 min -Histogram: 2 0 0 0 0 0 0 0 1 1 +Nghost: 569.750 ave 809 max 454 min +Histogram: 1 2 0 0 0 0 0 0 0 1 +Neighs: 3690.50 ave 4937 max 2426 min +Histogram: 1 1 0 0 0 0 0 0 0 2 -Total # of neighbors = 14785 -Ave neighs/atom = 3.69625 -Neighbor list builds = 1230 -Dangerous builds = 676 -Total wall time: 0:00:08 +Total # of neighbors = 14762 +Ave neighs/atom = 3.6905000 +Neighbor list builds = 2187 +Dangerous builds = 1610 +Total wall time: 0:00:14 diff --git a/examples/granular/log.29Mar19.pour.flatwall.g++.1 b/examples/granular/log.29Oct20.pour.flatwall.g++.1 similarity index 56% rename from examples/granular/log.29Mar19.pour.flatwall.g++.1 rename to examples/granular/log.29Oct20.pour.flatwall.g++.1 index daab5efce3..00fc8e31a1 100644 --- a/examples/granular/log.29Mar19.pour.flatwall.g++.1 +++ b/examples/granular/log.29Oct20.pour.flatwall.g++.1 @@ -1,5 +1,4 @@ -LAMMPS (29 Mar 2019) -OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88) +LAMMPS (29 Oct 2020) using 1 OpenMP thread(s) per MPI task # pour two types of particles (cohesive and non-cohesive) on flat wall @@ -45,9 +44,14 @@ region boxreg block 0 20 0 ${boxy} 0 ${boxz} region boxreg block 0 20 0 20 0 ${boxz} region boxreg block 0 20 0 20 0 30 create_box 2 boxreg -Created orthogonal box = (0 0 0) to (20 20 30) +Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (20.000000 20.000000 30.000000) 1 by 1 by 1 MPI processor grid change_box all boundary p p f +Changing box ... + +pair_style granular +pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall +pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall comm_modify vel yes @@ -75,19 +79,13 @@ fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 ${dens} fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 1 Particle insertion: 562 every 346 steps, 1500 by step 693 -comm_modify vel yes - neighbor ${skin} bin neighbor 0.15 bin neigh_modify delay 0 every 1 check yes -pair_style granular -pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall -pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall - fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL -thermo_style custom step cpu atoms ke +thermo_style custom step atoms ke thermo_modify lost warn thermo 100 @@ -109,26 +107,82 @@ Neighbor list info ... stencil: half/bin/3d/newton bin: standard Per MPI rank memory allocation (min/avg/max) = 12.22 | 12.22 | 12.22 Mbytes -Step CPU Atoms KinEng - 0 0 0 -0 - 100 3.8153191 855 -0 - 200 4.195287 855 -0 - 300 4.5890362 855 -0 - 400 10.636087 1500 -0 - 500 11.306909 1500 -0 - 600 11.968198 1500 -0 - 700 22.631892 2288 -0 - 800 23.711387 2288 -0 - 900 24.754344 2288 -0 - 1000 25.811778 2288 -0 - 1100 35.368869 2845 -0 - 1200 37.149843 2845 -0 - 1300 39.026458 2845 -0 - 1400 41.757583 3000 -0 - 1500 45.155503 3000 -0 - 1600 48.570241 3000 -0 - 1700 52.839322 3000 -0 - 1800 59.772697 3000 -0 - 1900 69.493305 3000 -0 - 2000 114.61886 3000 -0 - 2100 152.89232 3000 -0 +Step Atoms KinEng + 0 0 -0 + 100 926 -0 + 200 926 -0 + 300 926 -0 + 400 1498 -0 + 500 1498 -0 + 600 1498 -0 + 700 2275 -0 + 800 2275 -0 + 900 2275 -0 + 1000 2275 -0 + 1100 2954 -0 + 1200 2954 -0 + 1300 2954 -0 + 1400 3000 -0 + 1500 3000 -0 + 1600 3000 -0 + 1700 3000 -0 + 1800 3000 -0 + 1900 3000 -0 + 2000 3000 -0 + 2100 3000 -0 + 2200 3000 -0 + 2300 3000 -0 + 2400 3000 -0 + 2500 3000 -0 + 2600 3000 -0 + 2700 3000 -0 + 2800 3000 -0 + 2900 3000 -0 + 3000 3000 -0 + 3100 3000 -0 + 3200 3000 -0 + 3300 3000 -0 + 3400 3000 -0 + 3500 3000 -0 + 3600 3000 -0 + 3700 3000 -0 + 3800 3000 -0 + 3900 3000 -0 + 4000 3000 -0 + 4100 3000 -0 + 4200 3000 -0 + 4300 3000 -0 + 4400 3000 -0 + 4500 3000 -0 + 4600 3000 -0 + 4700 3000 -0 + 4800 3000 -0 + 4900 3000 -0 + 5000 3000 -0 +Loop time of 24.3889 on 1 procs for 5000 steps with 3000 atoms + +Performance: 17713.003 tau/day, 205.012 timesteps/s +99.9% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 14.362 | 14.362 | 14.362 | 0.0 | 58.89 +Neigh | 3.3483 | 3.3483 | 3.3483 | 0.0 | 13.73 +Comm | 0.42893 | 0.42893 | 0.42893 | 0.0 | 1.76 +Output | 0.0025065 | 0.0025065 | 0.0025065 | 0.0 | 0.01 +Modify | 6.059 | 6.059 | 6.059 | 0.0 | 24.84 +Other | | 0.1876 | | | 0.77 + +Nlocal: 3000.00 ave 3000 max 3000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 462.000 ave 462 max 462 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 17694.0 ave 17694 max 17694 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 17694 +Ave neighs/atom = 5.8980000 +Neighbor list builds = 1133 +Dangerous builds = 0 +Total wall time: 0:00:24 diff --git a/examples/granular/log.29Mar19.pour.flatwall.g++.4 b/examples/granular/log.29Oct20.pour.flatwall.g++.4 similarity index 52% rename from examples/granular/log.29Mar19.pour.flatwall.g++.4 rename to examples/granular/log.29Oct20.pour.flatwall.g++.4 index 62a8b96c05..1688e52b43 100644 --- a/examples/granular/log.29Mar19.pour.flatwall.g++.4 +++ b/examples/granular/log.29Oct20.pour.flatwall.g++.4 @@ -1,5 +1,4 @@ -LAMMPS (29 Mar 2019) -OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88) +LAMMPS (29 Oct 2020) using 1 OpenMP thread(s) per MPI task # pour two types of particles (cohesive and non-cohesive) on flat wall @@ -45,9 +44,14 @@ region boxreg block 0 20 0 ${boxy} 0 ${boxz} region boxreg block 0 20 0 20 0 ${boxz} region boxreg block 0 20 0 20 0 30 create_box 2 boxreg -Created orthogonal box = (0 0 0) to (20 20 30) +Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (20.000000 20.000000 30.000000) 2 by 2 by 1 MPI processor grid change_box all boundary p p f +Changing box ... + +pair_style granular +pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall +pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall comm_modify vel yes @@ -75,26 +79,19 @@ fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 ${dens} fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 1 Particle insertion: 562 every 346 steps, 1500 by step 693 -comm_modify vel yes - neighbor ${skin} bin neighbor 0.15 bin neigh_modify delay 0 every 1 check yes -pair_style granular -pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall -pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall - fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL -thermo_style custom step cpu atoms ke +thermo_style custom step atoms ke thermo_modify lost warn thermo 100 timestep 0.001 -dump 1 all custom 100 ${name}.dump id type radius mass x y z -dump 1 all custom 100 pour_two_types.dump id type radius mass x y z +#dump 1 all custom 100 ${name}.dump id type radius mass x y z run 5000 Neighbor list info ... @@ -110,82 +107,82 @@ Neighbor list info ... stencil: half/bin/3d/newton bin: standard Per MPI rank memory allocation (min/avg/max) = 11.98 | 11.98 | 11.98 Mbytes -Step CPU Atoms KinEng - 0 0 0 -0 - 100 0.11584234 855 -0 - 200 0.12743592 855 -0 - 300 0.13925815 855 -0 - 400 0.35203671 1500 -0 - 500 0.37055922 1500 -0 - 600 0.38671875 1500 -0 - 700 0.71736908 2288 -0 - 800 0.74506783 2288 -0 - 900 0.77112222 2288 -0 - 1000 0.79632139 2288 -0 - 1100 1.0384252 2845 -0 - 1200 1.08093 2845 -0 - 1300 1.1224561 2845 -0 - 1400 1.1811485 3000 -0 - 1500 1.2414908 3000 -0 - 1600 1.3105879 3000 -0 - 1700 1.390928 3000 -0 - 1800 1.4869275 3000 -0 - 1900 1.5958266 3000 -0 - 2000 1.7172487 3000 -0 - 2100 1.851155 3000 -0 - 2200 1.9957182 3000 -0 - 2300 2.1593764 3000 -0 - 2400 2.3433132 3000 -0 - 2500 2.532742 3000 -0 - 2600 2.7376895 3000 -0 - 2700 2.9463468 3000 -0 - 2800 3.1645725 3000 -0 - 2900 3.3879526 3000 -0 - 3000 3.6152103 3000 -0 - 3100 3.8467371 3000 -0 - 3200 4.0787683 3000 -0 - 3300 4.3097105 3000 -0 - 3400 4.5423617 3000 -0 - 3500 4.7773693 3000 -0 - 3600 5.0127218 3000 -0 - 3700 5.2519271 3000 -0 - 3800 5.4951298 3000 -0 - 3900 5.7210469 3000 -0 - 4000 5.9432652 3000 -0 - 4100 6.1687591 3000 -0 - 4200 6.3942792 3000 -0 - 4300 6.6331475 3000 -0 - 4400 6.8632154 3000 -0 - 4500 7.0979366 3000 -0 - 4600 7.3305347 3000 -0 - 4700 7.5670528 3000 -0 - 4800 7.8086057 3000 -0 - 4900 8.0407174 3000 -0 - 5000 8.2765219 3000 -0 -Loop time of 8.27669 on 4 procs for 5000 steps with 3000 atoms +Step Atoms KinEng + 0 0 -0 + 100 926 -0 + 200 926 -0 + 300 926 -0 + 400 1498 -0 + 500 1498 -0 + 600 1498 -0 + 700 2275 -0 + 800 2275 -0 + 900 2275 -0 + 1000 2275 -0 + 1100 2954 -0 + 1200 2954 -0 + 1300 2954 -0 + 1400 3000 -0 + 1500 3000 -0 + 1600 3000 -0 + 1700 3000 -0 + 1800 3000 -0 + 1900 3000 -0 + 2000 3000 -0 + 2100 3000 -0 + 2200 3000 -0 + 2300 3000 -0 + 2400 3000 -0 + 2500 3000 -0 + 2600 3000 -0 + 2700 3000 -0 + 2800 3000 -0 + 2900 3000 -0 + 3000 3000 -0 + 3100 3000 -0 + 3200 3000 -0 + 3300 3000 -0 + 3400 3000 -0 + 3500 3000 -0 + 3600 3000 -0 + 3700 3000 -0 + 3800 3000 -0 + 3900 3000 -0 + 4000 3000 -0 + 4100 3000 -0 + 4200 3000 -0 + 4300 3000 -0 + 4400 3000 -0 + 4500 3000 -0 + 4600 3000 -0 + 4700 3000 -0 + 4800 3000 -0 + 4900 3000 -0 + 5000 3000 -0 +Loop time of 12.1982 on 4 procs for 5000 steps with 3000 atoms -Performance: 52194.788 tau/day, 604.106 timesteps/s -97.7% CPU use with 4 MPI tasks x 1 OpenMP threads +Performance: 35414.923 tau/day, 409.895 timesteps/s +97.0% CPU use with 4 MPI tasks x 1 OpenMP threads MPI task timing breakdown: Section | min time | avg time | max time |%varavg| %total --------------------------------------------------------------- -Pair | 1.6106 | 3.4073 | 5.4191 | 95.7 | 41.17 -Neigh | 0.51456 | 0.64572 | 0.81542 | 16.6 | 7.80 -Comm | 0.2808 | 2.5222 | 4.4998 | 121.9 | 30.47 -Output | 0.15695 | 0.15919 | 0.16502 | 0.8 | 1.92 -Modify | 1.3517 | 1.4192 | 1.4904 | 4.9 | 17.15 -Other | | 0.123 | | | 1.49 +Pair | 1.7141 | 3.8131 | 6.2143 | 107.3 | 31.26 +Neigh | 0.77648 | 0.96585 | 1.1892 | 18.3 | 7.92 +Comm | 0.7427 | 3.5566 | 5.9731 | 128.4 | 29.16 +Output | 0.0067544 | 0.0086352 | 0.011408 | 1.8 | 0.07 +Modify | 3.3476 | 3.5826 | 3.8235 | 11.5 | 29.37 +Other | | 0.2715 | | | 2.23 -Nlocal: 750 ave 1036 max 482 min -Histogram: 2 0 0 0 0 0 0 0 1 1 -Nghost: 429.75 ave 475 max 386 min +Nlocal: 750.000 ave 1033 max 463 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 435.000 ave 492 max 378 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 4434.50 ave 7028 max 1967 min Histogram: 2 0 0 0 0 0 0 0 0 2 -Neighs: 4051.75 ave 6274 max 2057 min -Histogram: 2 0 0 0 0 0 0 0 1 1 -Total # of neighbors = 16207 -Ave neighs/atom = 5.40233 -Neighbor list builds = 1165 +Total # of neighbors = 17738 +Ave neighs/atom = 5.9126667 +Neighbor list builds = 1139 Dangerous builds = 0 -Total wall time: 0:00:08 +Total wall time: 0:00:12 diff --git a/examples/template/co2.mol b/examples/template/co2.mol new file mode 100644 index 0000000000..29e64b9d18 --- /dev/null +++ b/examples/template/co2.mol @@ -0,0 +1,63 @@ +# CO2 molecule file. TraPPE model. + +3 atoms +2 bonds +1 angles + +Coords + +1 0.0 0.0 0.0 +2 -1.16 0.0 0.0 +3 1.16 0.0 0.0 + +Types + +1 1 +2 2 +3 2 + +Charges + +1 0.7 +2 -0.35 +3 -0.35 + +Bonds + +1 1 1 2 +2 1 1 3 + +Angles + +1 1 2 1 3 + +Special Bond Counts + +1 2 0 0 +2 1 1 0 +3 1 1 0 + +Special Bonds + +1 2 3 +2 1 3 +3 1 2 + +Shake Flags + +1 0 +2 0 +3 0 + +Shake Atoms + +1 +2 +3 + +Shake Bond Types + +1 +2 +3 + diff --git a/examples/template/cyclohexane.mol b/examples/template/cyclohexane.mol new file mode 100644 index 0000000000..ae1bd58ef8 --- /dev/null +++ b/examples/template/cyclohexane.mol @@ -0,0 +1,68 @@ +LAMMPS molecule file. Cyclohexane(UA) + 6 atoms + 6 bonds + 6 angles + 6 dihedrals + +Coords + +1 0.000000 0.000000 0.000000 +2 0.000000 0.000000 1.536000 +3 1.431000 0.000000 2.094000 +4 2.247000 1.176000 1.536000 +5 2.247000 1.176000 0.000000 +6 0.815000 1.176000 -0.557000 + +Types + +1 1 +2 1 +3 1 +4 1 +5 1 +6 1 + +Bonds + +1 1 1 6 +2 1 1 2 +3 1 2 3 +4 1 3 4 +5 1 4 5 +6 1 5 6 + +Angles + +1 1 2 1 6 +2 1 1 2 3 +3 1 2 3 4 +4 1 3 4 5 +5 1 4 5 6 +6 1 1 6 5 + +Dihedrals + +1 1 2 1 6 5 +2 1 6 1 2 3 +3 1 1 2 3 4 +4 1 2 3 4 5 +5 1 3 4 5 6 +6 1 4 5 6 1 + +Special Bond Counts + +1 2 2 1 +2 2 2 1 +3 2 2 1 +4 2 2 1 +5 2 2 1 +6 2 2 1 + +Special Bonds + +1 2 6 3 5 4 +2 3 1 4 6 5 +3 4 2 5 1 6 +4 5 3 6 2 1 +5 6 4 1 3 2 +6 1 5 2 4 3 diff --git a/examples/template/h2o-co2.data b/examples/template/h2o-co2.data new file mode 100644 index 0000000000..d1b2e92419 --- /dev/null +++ b/examples/template/h2o-co2.data @@ -0,0 +1,428 @@ +LAMMPS data file via write_data, version 22 Oct 2020, timestep = 0 + +384 atoms +4 atom types +2 bond types +2 angle types + +-10.0 10.0 xlo xhi +-10.0 10.0 ylo yhi +-10.0 10.0 zlo zhi + +Masses + +1 15.9994 +2 1 +3 12.0107 +4 15.9994 + +PairIJ Coeffs # lj/cut/coul/cut + +1 1 0.15535 3.166 14 +1 2 0 0 14 +1 3 0.0912928 2.983 14 +1 4 0.156159 3.108 14 +2 2 0 0 14 +2 3 0 1.4 14 +2 4 0 1.525 14 +3 3 0.053649 2.8 14 +3 4 0.0917684 2.925 14 +4 4 0.156973 3.05 14 + +Bond Coeffs # harmonic + +1 1000 1 +2 1000 1.16 + +Angle Coeffs # harmonic + +1 100 109.47 +2 100 180 + +Atoms # hybrid + +1 1 -9.915603425183674 9.642074614047225 9.886373806057632 1 1 1 -0.8472 0 -1 -1 +2 2 -9.955077256991814 9.952071397945474 -9.163725932085827 1 1 2 0.4236 0 -1 0 +3 2 9.870680682175488 -9.594146011992699 9.277352126028195 1 1 3 0.4236 -1 0 -1 +4 1 -5.377413308169694 -9.975845367284359 9.928445655374531 2 1 1 -0.8472 0 0 -1 +5 2 -4.868089392205772 9.173804835517629 -9.939414010387674 2 1 2 0.4236 0 -1 0 +6 2 -4.754497299624534 -9.19795946823327 -9.989031644986857 2 1 3 0.4236 0 0 0 +7 1 0.2862645369165933 -9.834750023705109 9.802796207089045 3 1 1 -0.8472 0 0 -1 +8 2 -0.20506315473823142 -9.416615546409432 -9.433183272761259 3 1 2 0.4236 0 0 0 +9 2 -0.08120138217836187 9.25136557011454 9.630387065672213 3 1 3 0.4236 0 -1 -1 +10 1 4.954244542709665 9.733846444128554 9.725750116636055 4 1 1 -0.8472 0 -1 -1 +11 2 5.314186858355006 9.562011307112279 -9.357254293410282 4 1 2 0.4236 0 -1 0 +12 2 4.731568598935329 -9.295857751240833 9.631504176774227 4 1 3 0.4236 0 0 -1 +13 1 -9.885042196263848 -5.366646729833796 -9.977658232783796 5 1 1 -0.8472 0 0 0 +14 2 -9.499988310087788 -4.607821917003056 -9.452410572081622 5 1 2 0.4236 0 0 0 +15 2 9.385030506351637 -5.025531353163147 9.430068804865417 5 1 3 0.4236 -1 0 -1 +16 1 -5.3381930384891545 -4.817187821023332 -9.98130637447481 6 1 1 -0.8472 0 0 0 +17 2 -4.814226078866727 -5.143876565241305 -9.194731656774504 6 1 2 0.4236 0 0 0 +18 2 -4.8475808826441185 -5.038935613735363 9.176038031249314 6 1 3 0.4236 0 0 -1 +19 1 -0.17437585816420464 -5.00267209015634 -9.656881659301497 7 1 1 -0.8472 0 0 0 +20 2 0.5142734508723548 -5.661488493390246 -9.959684850984493 7 1 2 0.4236 0 0 0 +21 2 -0.3398975927081498 -4.335839416453415 9.61656651028599 7 1 3 0.4236 0 0 -1 +22 1 5.027007160081784 -5.376778433628809 -9.926156239555816 8 1 1 -0.8472 0 0 0 +23 2 5.040872603784614 -4.651165711374701 -9.238216835484566 8 1 2 0.4236 0 0 0 +24 2 4.932120236133603 -4.97205585499649 9.164373075040384 8 1 3 0.4236 0 0 -1 +25 1 -9.774983021942727 -0.11627625671956153 9.710187185567547 9 1 1 -0.8472 0 0 -1 +26 2 -9.547719336441409 -0.18624762678535645 -9.31851372479864 9 1 2 0.4236 0 0 0 +27 2 9.322702358384136 0.30252388350491777 9.608326539231093 9 1 3 0.4236 -1 0 -1 +28 1 -4.839301125374413 -0.3224292196811998 9.864502598955395 10 1 1 -0.8472 0 0 -1 +29 2 -4.437095111731628 0.2761002399087885 -9.442706303026958 10 1 2 0.4236 0 0 0 +30 2 -5.723603762893959 0.04632897977241136 9.578203704071562 10 1 3 0.4236 0 0 -1 +31 1 0.3575211513985558 0.13924369294039318 -9.96943701619651 11 1 1 -0.8472 0 0 0 +32 2 -0.15738037709944985 -0.29662855771206287 -9.231291709389254 11 1 2 0.4236 0 0 0 +33 2 -0.20014077429910587 0.1573848647716694 9.200728725585764 11 1 3 0.4236 0 0 -1 +34 1 4.945607877161568 0.17822976107332558 -9.663221252242849 12 1 1 -0.8472 0 0 0 +35 2 5.686261102802035 -0.4628832126235319 -9.864153208899683 12 1 2 0.4236 0 0 0 +36 2 4.368131020036397 0.284653451550206 9.527374461142534 12 1 3 0.4236 0 0 -1 +37 1 9.834131265901467 5.002816508870191 -9.652690475186276 13 1 1 -0.8472 -1 0 0 +38 2 -9.523525531039581 4.309893511844079 -9.980134556788492 13 1 2 0.4236 0 0 0 +39 2 9.689394265138116 5.68728997928573 9.63282503197477 13 1 3 0.4236 -1 0 -1 +40 1 -4.896522832471423 4.844697230053857 -9.6633729049121 14 1 1 -0.8472 0 0 0 +41 2 -5.719481843054487 5.391203391339132 -9.818408963548082 14 1 2 0.4236 0 0 0 +42 2 -4.383995324474091 4.764099378607011 9.481781868460182 14 1 3 0.4236 0 0 -1 +43 1 0.08644475731548724 4.625177647828908 -9.986591646424854 15 1 1 -0.8472 0 0 0 +44 2 0.483199632298402 5.33056133050579 -9.399236450405876 15 1 2 0.4236 0 0 0 +45 2 -0.5696443896138887 5.044261021665302 9.38582809683073 15 1 3 0.4236 0 0 -1 +46 1 5.279904505775219 4.8738580855036995 9.767866502301072 16 1 1 -0.8472 0 0 -1 +47 2 5.051646557564443 5.834165665231483 9.928098703484146 16 1 2 0.4236 0 0 -1 +48 2 4.6684489366603374 4.291976249264819 -9.695965205785217 16 1 3 0.4236 0 0 0 +49 1 9.908445669769623 9.636632008310487 -4.912103567014368 17 1 1 -0.8472 -1 -1 0 +50 2 -9.305514433129819 -9.862297561377305 -4.550114063115585 17 1 2 0.4236 0 0 0 +51 2 9.397068763360195 -9.774334446933182 -5.537782369870047 17 1 3 0.4236 -1 0 0 +52 1 -5.201907594124834 -9.68877920222961 -5.102563220356437 18 1 1 -0.8472 0 0 0 +53 2 -4.940302726022812 9.565133612451614 -5.714840528272083 18 1 2 0.4236 0 -1 0 +54 2 -4.857789679852353 -9.876354410222005 -4.182596251371481 18 1 3 0.4236 0 0 0 +55 1 0.37327634941779875 -9.91440084751388 -4.961505484040201 19 1 1 -0.8472 0 0 0 +56 2 -0.024482580199505652 9.563262486125167 -5.715772636834634 19 1 2 0.4236 0 -1 0 +57 2 -0.34879376921829297 -9.648861638611287 -4.322721879125167 19 1 3 0.4236 0 0 0 +58 1 5.099017423466195 9.70150361815792 -4.778099717040957 20 1 1 -0.8472 0 -1 0 +59 2 5.136067712418359 9.715462771782358 -5.77729895393951 20 1 2 0.4236 0 -1 0 +60 2 4.764914864115446 -9.416966389940278 -4.444601329019534 20 1 3 0.4236 0 0 0 +61 1 9.67209962879851 -5.197853819118096 -5.0384641199861475 21 1 1 -0.8472 -1 0 0 +62 2 9.738936599885 -4.205377815142725 -4.936039036490629 21 1 2 0.4236 -1 0 0 +63 2 -9.41103622868351 -5.5967683657391785 -5.025496843523223 21 1 3 0.4236 0 0 0 +64 1 -4.689795490189235 -5.165487837213749 -4.843375565356555 22 1 1 -0.8472 0 0 0 +65 2 -4.832160266019467 -5.015491947934958 -5.82174165261749 22 1 2 0.4236 0 0 0 +66 2 -5.478044243791298 -4.819020214851294 -4.334882782025955 22 1 3 0.4236 0 0 0 +67 1 -0.0615634035841769 -4.677472055633765 -5.200823176306976 23 1 1 -0.8472 0 0 0 +68 2 -0.6036354578743581 -5.514703146142694 -5.272716750031286 23 1 2 0.4236 0 0 0 +69 2 0.6651988614585344 -4.807824798223541 -4.526460073661738 23 1 3 0.4236 0 0 0 +70 1 4.802754604301762 -5.1046044449424395 -5.313522630242427 24 1 1 -0.8472 0 0 0 +71 2 4.674742935683063 -5.484552334539641 -4.397433491136363 24 1 2 0.4236 0 0 0 +72 2 5.522502460015175 -4.410843220517918 -5.28904387862121 24 1 3 0.4236 0 0 0 +73 1 -9.83451039343324 -0.34326467353508094 -4.9458998177338245 25 1 1 -0.8472 0 0 0 +74 2 -9.500257580872022 0.5235593797386398 -4.5759568290706625 25 1 2 0.4236 0 0 0 +75 2 9.334767974305263 -0.18029470620355853 -5.478143353195513 25 1 3 0.4236 -1 0 0 +76 1 -5.307686388170551 -0.09393136703842697 -4.788693917454198 26 1 1 -0.8472 0 0 0 +77 2 -5.322666676950796 0.48158209129479823 -5.606328644655405 26 1 2 0.4236 0 0 0 +78 2 -4.369646934878654 -0.38765072425637087 -4.604977437890398 26 1 3 0.4236 0 0 0 +79 1 0.25915920502631956 0.1183661006970869 -5.258786105415057 27 1 1 -0.8472 0 0 0 +80 2 0.4129987454382328 0.060712811699061064 -4.2723905503898125 27 1 2 0.4236 0 0 0 +81 2 -0.6721579504645518 -0.17907891239614798 -5.46882334419513 27 1 3 0.4236 0 0 0 +82 1 4.645093317547853 -0.032892978577141976 -5.145270693572841 28 1 1 -0.8472 0 0 0 +83 2 5.384532151641317 -0.6939822880761514 -5.272384156276919 28 1 2 0.4236 0 0 0 +84 2 4.9703745308108305 0.7268752666532926 -4.58234515015024 28 1 3 0.4236 0 0 0 +85 1 -9.935887941471492 4.620929536576184 -4.981574381668706 29 1 1 -0.8472 0 0 0 +86 2 -9.510577225229298 5.307736013867678 -4.392189656467925 29 1 2 0.4236 0 0 0 +87 2 9.44646516670079 5.071334449556138 -5.626235961863369 29 1 3 0.4236 -1 0 0 +88 1 -5.008590477951656 4.617494616944972 -5.041953680678674 30 1 1 -0.8472 0 0 0 +89 2 -4.783022517847073 5.100600801092718 -4.195966560733896 30 1 2 0.4236 0 0 0 +90 2 -5.2083870042012705 5.281904581962309 -5.762079758587429 30 1 3 0.4236 0 0 0 +91 1 -0.10236681102215972 4.670575674519795 -5.170718849231903 31 1 1 -0.8472 0 0 0 +92 2 0.6714005117953412 5.244086072416178 -5.439673586212998 31 1 2 0.4236 0 0 0 +93 2 -0.569033700773181 5.085338253064027 -4.389607564555099 31 1 3 0.4236 0 0 0 +94 1 4.793442916655695 4.895053625339889 -4.692648888946219 32 1 1 -0.8472 0 0 0 +95 2 5.78790922296981 4.82542619694358 -4.771105779790033 32 1 2 0.4236 0 0 0 +96 2 4.418647860374495 5.279520177716531 -5.536245331263747 32 1 3 0.4236 0 0 0 +97 1 -9.972346516877309 9.813426641245107 0.3355144443598525 33 1 1 -0.8472 0 -1 0 +98 2 9.902394946876838 9.380578255545881 -0.5571889055807204 33 1 2 0.4236 -1 -1 0 +99 2 -9.930048429999529 -9.194004896790988 0.22167446122086756 33 1 3 0.4236 0 0 0 +100 1 -5.055092848610487 9.62043108608943 -0.032194616393628146 34 1 1 -0.8472 0 -1 0 +101 2 -4.242564100118214 -9.944998495531546 0.35627968294091067 34 1 2 0.4236 0 0 0 +102 2 -5.702343051271298 -9.675432590557886 -0.3240850665472822 34 1 3 0.4236 0 0 0 +103 1 -0.16422105747150104 -9.658585046539034 0.06790839076424156 35 1 1 -0.8472 0 0 0 +104 2 0.24178705531724526 9.747651563696497 0.7625803609956086 35 1 2 0.4236 0 -1 0 +105 2 -0.07756599784574403 9.910933482842538 -0.8304887517598495 35 1 3 0.4236 0 -1 0 +106 1 5.252774480020046 -9.731538918744256 0.11035391158265477 36 1 1 -0.8472 0 0 0 +107 2 4.897417222941987 -9.843232415673553 -0.8176614328409508 36 1 2 0.4236 0 0 0 +108 2 4.849808297037967 9.57477133441781 0.7073075212582953 36 1 3 0.4236 0 -1 0 +109 1 -9.974235357986496 -5.3824393899672485 -0.03493668449344743 37 1 1 -0.8472 0 0 0 +110 2 -9.424638978370009 -4.718082489267676 -0.5414348828173003 37 1 2 0.4236 0 0 0 +111 2 9.398874336356506 -4.8994781207650755 0.5763715673107472 37 1 3 0.4236 -1 0 0 +112 1 -4.9279099757557 -5.3611565776237216 -0.11186255201619967 38 1 1 -0.8472 0 0 0 +113 2 -4.312252322613385 -4.791643655121096 0.43273581570979314 38 1 2 0.4236 0 0 0 +114 2 -5.759837701630914 -4.847199767255183 -0.3208732636935932 38 1 3 0.4236 0 0 0 +115 1 -0.1760601646477313 -4.705054107276162 0.17364911312630318 39 1 1 -0.8472 0 0 0 +116 2 -0.5420681618198102 -5.220988302880955 -0.6008292588839926 39 1 2 0.4236 0 0 0 +117 2 0.718128326467541 -5.073957589842884 0.42718014575768887 39 1 3 0.4236 0 0 0 +118 1 4.903025698266734 -5.298533854737944 0.22275052879544271 40 1 1 -0.8472 0 0 0 +119 2 5.616278707356452 -4.629646152095917 0.43209733000991873 40 1 2 0.4236 0 0 0 +120 2 4.480695594376815 -5.071819993166138 -0.654847858805361 40 1 3 0.4236 0 0 0 +121 1 -9.873572998065784 0.3496117939501917 0.09965983349802573 41 1 1 -0.8472 0 0 0 +122 2 -9.29961582738827 -0.39891518603423753 -0.23237513960458678 41 1 2 0.4236 0 0 0 +123 2 9.173188825454053 0.049303392084045605 0.1327153061065609 41 1 3 0.4236 -1 0 0 +124 1 -4.9726203993223415 0.3762262293330992 0.07647520858768621 42 1 1 -0.8472 0 0 0 +125 2 -4.438314607446875 -0.11323391388289276 -0.6126639543332082 42 1 2 0.4236 0 0 0 +126 2 -5.589064993230783 -0.2629923154502063 0.5361887457455214 42 1 3 0.4236 0 0 0 +127 1 0.18831172963220283 -0.0017827385000351538 -0.33567810477653826 43 1 1 -0.8472 0 0 0 +128 2 0.5388694262034436 -0.37110526230565655 0.5249477556788119 43 1 2 0.4236 0 0 0 +129 2 -0.7271811558356458 0.37288800080569134 -0.18926965090227335 43 1 3 0.4236 0 0 0 +130 1 5.104261929822929 -0.37049035001218517 -0.0032597910127999223 44 1 1 -0.8472 0 0 0 +131 2 5.443981207967718 0.31928842752835596 0.6360857704885375 44 1 2 0.4236 0 0 0 +132 2 4.451756862209354 0.05120192248382927 -0.632825979475737 44 1 3 0.4236 0 0 0 +133 1 -9.716043338324948 4.963029008083921 -0.2571887162126298 45 1 1 -0.8472 0 0 0 +134 2 9.633590016729197 4.245448234803103 -0.008054700350535071 45 1 2 0.4236 -1 0 0 +135 2 -9.91754667840425 5.7915227571129755 0.2652434165631647 45 1 3 0.4236 0 0 0 +136 1 -4.931156721648044 5.071542291899035 -0.37186903500505175 46 1 1 -0.8472 0 0 0 +137 2 -4.7201838672715 5.691314393753101 0.38400112142368736 46 1 2 0.4236 0 0 0 +138 2 -5.348659411080455 4.237143314347865 -0.01213208641863553 46 1 3 0.4236 0 0 0 +139 1 -0.29471440691413636 4.8919898068292405 -0.22275882076466474 47 1 1 -0.8472 0 0 0 +140 2 0.47778738080671596 4.311370196843371 0.03431811979582844 47 1 2 0.4236 0 0 0 +141 2 -0.1830729738925793 5.796639996327388 0.1884407009688362 47 1 3 0.4236 0 0 0 +142 1 5.244491723131163 4.903715118454363 -0.28124241253071613 48 1 1 -0.8472 0 0 0 +143 2 5.50417215460746 5.126383429014502 0.6584126273006984 48 1 2 0.4236 0 0 0 +144 2 4.251336122261378 4.969901452531135 -0.37717021476998186 48 1 3 0.4236 0 0 0 +145 1 -9.75433202641418 9.779421187196018 4.802170503220012 49 1 1 -0.8472 0 -1 0 +146 2 -9.650691740312444 -9.238436410716417 4.959083504652068 49 1 2 0.4236 0 0 0 +147 2 9.405023766726625 9.4590152235204 5.23874599212792 49 1 3 0.4236 -1 -1 0 +148 1 -5.055559152245123 9.796109196537483 5.321692394322919 50 1 1 -0.8472 0 -1 0 +149 2 -4.236869822621204 -9.669811657248509 5.110803930818502 50 1 2 0.4236 0 0 0 +150 2 -5.707571025133673 9.873702460711026 4.567503674858579 50 1 3 0.4236 0 -1 0 +151 1 -0.3144184450941294 9.858810634406513 5.171320985661122 51 1 1 -0.8472 0 -1 0 +152 2 0.615199476372441 9.80483357605659 5.535825710129903 51 1 2 0.4236 0 -1 0 +153 2 -0.3007810312783112 -9.663644210463103 4.2928533042089745 51 1 3 0.4236 0 0 0 +154 1 5.179923035894489 -9.84699214646902 5.303908824505562 52 1 1 -0.8472 0 0 0 +155 2 4.677889877415472 9.288179903352757 5.305330541115184 52 1 2 0.4236 0 -1 0 +156 2 5.142187086690039 -9.441187756883737 4.390760634379253 52 1 3 0.4236 0 0 0 +157 1 -9.76115088009254 -5.067151371069817 5.294255105279205 53 1 1 -0.8472 0 0 0 +158 2 9.804521478005048 -5.770185852326005 4.7311665558091125 53 1 2 0.4236 -1 0 0 +159 2 9.956629402087492 -4.162662776604179 4.974578338911683 53 1 3 0.4236 -1 0 0 +160 1 -4.819922322428162 -5.012318205300016 5.339947889475019 54 1 1 -0.8472 0 0 0 +161 2 -4.552065575809134 -4.439732159321751 4.565115855972501 54 1 2 0.4236 0 0 0 +162 2 -5.628012101762703 -5.547949635378233 5.094936254552479 54 1 3 0.4236 0 0 0 +163 1 0.29966811591104 -5.191175652071799 5.147631859912588 55 1 1 -0.8472 0 0 0 +164 2 0.3611846876298095 -4.438894380085313 4.491693374898662 55 1 2 0.4236 0 0 0 +165 2 -0.6608528035408491 -5.369929967842888 5.36067476518875 55 1 3 0.4236 0 0 0 +166 1 5.3306179671843905 -5.068017854599851 5.184958392430555 56 1 1 -0.8472 0 0 0 +167 2 4.476738522756953 -4.77740396721618 5.616699240328971 56 1 2 0.4236 0 0 0 +168 2 5.192643510058656 -5.15457817818397 4.198342367240475 56 1 3 0.4236 0 0 0 +169 1 9.638387780386097 -0.05547861370703253 4.880404842292622 57 1 1 -0.8472 -1 0 0 +170 2 -9.563668781750316 -0.5682641712421934 4.563696871357572 57 1 2 0.4236 0 0 0 +171 2 9.925281001364219 0.6237427849492254 5.555898286349805 57 1 3 0.4236 -1 0 0 +172 1 -4.92778155001994 -0.37347611049974844 5.058688721816523 58 1 1 -0.8472 0 0 0 +173 2 -4.424197210986553 0.3841495388065775 5.4738668593592825 58 1 2 0.4236 0 0 0 +174 2 -5.648021238993507 -0.010673428306828894 4.467444418824195 58 1 3 0.4236 0 0 0 +175 1 -0.18546503303408043 -0.19411622829904296 4.724199551971681 59 1 1 -0.8472 0 0 0 +176 2 0.12350879890318767 -0.5797357237270384 5.593566835013698 59 1 2 0.4236 0 0 0 +177 2 0.06195623413089274 0.7738519520260807 4.6822336130146205 59 1 3 0.4236 0 0 0 +178 1 5.024542870757014 0.35521327726870416 4.8538307458901455 60 1 1 -0.8472 0 0 0 +179 2 4.467087613939382 -0.3858533028483605 4.47962404180805 60 1 2 0.4236 0 0 0 +180 2 5.508369515303603 0.030640025579656158 5.666545212301804 60 1 3 0.4236 0 0 0 +181 1 -9.847544046825007 4.880766990446809 5.332693473747822 61 1 1 -0.8472 0 0 0 +182 2 9.515349627917418 5.644715153580236 5.230490581118248 61 1 2 0.4236 -1 0 0 +183 2 -9.667805581092411 4.474517855972955 4.4368159451339295 61 1 3 0.4236 0 0 0 +184 1 -4.983147898074708 4.80201241412343 4.670362019482786 62 1 1 -0.8472 0 0 0 +185 2 -5.672581470726773 4.677668740177936 5.383935208826349 62 1 2 0.4236 0 0 0 +186 2 -4.34427063119852 5.520318845698633 4.945702771690865 62 1 3 0.4236 0 0 0 +187 1 0.07042696284035434 4.658502024966576 5.162982979642521 63 1 1 -0.8472 0 0 0 +188 2 0.34620602341786555 5.544257758500404 5.536278287889138 63 1 2 0.4236 0 0 0 +189 2 -0.41663298625821943 4.79724021653302 4.300738732468342 63 1 3 0.4236 0 0 0 +190 1 5.127488702006002 4.733664731038008 5.246893562224226 64 1 1 -0.8472 0 0 0 +191 2 4.64413754361587 5.5715868659899 5.500319784901714 64 1 2 0.4236 0 0 0 +192 2 5.228373754378127 4.694748402972092 4.25278665287406 64 1 3 0.4236 0 0 0 +193 3 -7.5 -7.5 -7.5 65 2 1 0.7 0 0 0 +194 4 -7.363090579820503 -8.108207908322568 -8.478232564843351 65 2 2 -0.35 0 0 0 +195 4 -7.636909420179497 -6.8917920916774325 -6.521767435156649 65 2 3 -0.35 0 0 0 +196 3 -2.5 -7.5 -7.5 66 2 1 0.7 0 0 0 +197 4 -1.9890145185459458 -8.507238712895377 -7.764507113303278 66 2 2 -0.35 0 0 0 +198 4 -3.010985481454054 -6.492761287104623 -7.235492886696722 66 2 3 -0.35 0 0 0 +199 3 2.5 -7.5 -7.5 67 2 1 0.7 0 0 0 +200 4 1.3412381615021542 -7.520352744205465 -7.4504342109474795 67 2 2 -0.35 0 0 0 +201 4 3.6587618384978455 -7.479647255794535 -7.5495657890525205 67 2 3 -0.35 0 0 0 +202 3 7.5 -7.5 -7.5 68 2 1 0.7 0 0 0 +203 4 8.30819917176506 -6.684226989986137 -7.33590096011495 68 2 2 -0.35 0 0 0 +204 4 6.691800828234942 -8.315773010013862 -7.66409903988505 68 2 3 -0.35 0 0 0 +205 3 -7.5 -2.5 -7.5 69 2 1 0.7 0 0 0 +206 4 -7.042985934526503 -2.3910630732039384 -8.560599306967347 69 2 2 -0.35 0 0 0 +207 4 -7.957014065473497 -2.6089369267960616 -6.4394006930326535 69 2 3 -0.35 0 0 0 +208 3 -2.5 -2.5 -7.5 70 2 1 0.7 0 0 0 +209 4 -2.463675404493939 -2.5978807004677122 -6.344707875800553 70 2 2 -0.35 0 0 0 +210 4 -2.536324595506061 -2.4021192995322878 -8.655292124199448 70 2 3 -0.35 0 0 0 +211 3 2.5 -2.5 -7.5 71 2 1 0.7 0 0 0 +212 4 3.194913946357355 -2.0817981930843534 -6.670661796460253 71 2 2 -0.35 0 0 0 +213 4 1.8050860536426452 -2.9182018069156466 -8.329338203539747 71 2 3 -0.35 0 0 0 +214 3 7.5 -2.5 -7.5 72 2 1 0.7 0 0 0 +215 4 7.892546142220834 -2.47905949037101 -8.591361086572185 72 2 2 -0.35 0 0 0 +216 4 7.107453857779166 -2.52094050962899 -6.408638913427816 72 2 3 -0.35 0 0 0 +217 3 -7.5 2.5 -7.5 73 2 1 0.7 0 0 0 +218 4 -7.3828346282522315 1.479592808564327 -6.96088828678133 73 2 2 -0.35 0 0 0 +219 4 -7.6171653717477685 3.520407191435673 -8.03911171321867 73 2 3 -0.35 0 0 0 +220 3 -2.5 2.5 -7.5 74 2 1 0.7 0 0 0 +221 4 -2.060468233000571 2.976742396757671 -8.461836011455233 74 2 2 -0.35 0 0 0 +222 4 -2.939531766999429 2.023257603242329 -6.538163988544768 74 2 3 -0.35 0 0 0 +223 3 2.5 2.5 -7.5 75 2 1 0.7 0 0 0 +224 4 2.3501758165742057 3.3407716363704516 -8.28501959818577 75 2 2 -0.35 0 0 0 +225 4 2.6498241834257943 1.6592283636295486 -6.71498040181423 75 2 3 -0.35 0 0 0 +226 3 7.5 2.5 -7.5 76 2 1 0.7 0 0 0 +227 4 6.491384484733663 2.798405737744011 -7.989130614504423 76 2 2 -0.35 0 0 0 +228 4 8.508615515266337 2.201594262255989 -7.010869385495577 76 2 3 -0.35 0 0 0 +229 3 -7.5 7.5 -7.5 77 2 1 0.7 0 0 0 +230 4 -8.223742289003038 8.374984745462024 -7.26293715112359 77 2 2 -0.35 0 0 0 +231 4 -6.776257710996962 6.625015254537976 -7.73706284887641 77 2 3 -0.35 0 0 0 +232 3 -2.5 7.5 -7.5 78 2 1 0.7 0 0 0 +233 4 -3.61460324665069 7.680615494066614 -7.7657774366999845 78 2 2 -0.35 0 0 0 +234 4 -1.3853967533493103 7.319384505933386 -7.2342225633000155 78 2 3 -0.35 0 0 0 +235 3 2.5 7.5 -7.5 79 2 1 0.7 0 0 0 +236 4 2.7768699697291033 8.100687316711076 -6.547047867201792 79 2 2 -0.35 0 0 0 +237 4 2.2231300302708967 6.899312683288924 -8.452952132798208 79 2 3 -0.35 0 0 0 +238 3 7.5 7.5 -7.5 80 2 1 0.7 0 0 0 +239 4 7.16783620529347 7.207818725743377 -6.4276673480398285 80 2 2 -0.35 0 0 0 +240 4 7.83216379470653 7.792181274256623 -8.57233265196017 80 2 3 -0.35 0 0 0 +241 3 -7.5 -7.5 -2.5 81 2 1 0.7 0 0 0 +242 4 -6.904167548557492 -8.34992426129338 -1.9821076947154799 81 2 2 -0.35 0 0 0 +243 4 -8.095832451442508 -6.6500757387066205 -3.01789230528452 81 2 3 -0.35 0 0 0 +244 3 -2.5 -7.5 -2.5 82 2 1 0.7 0 0 0 +245 4 -3.342504009848425 -6.73061486491979 -2.7093645321130886 82 2 2 -0.35 0 0 0 +246 4 -1.6574959901515751 -8.26938513508021 -2.2906354678869114 82 2 3 -0.35 0 0 0 +247 3 2.5 -7.5 -2.5 83 2 1 0.7 0 0 0 +248 4 2.1689944159865804 -6.498569494779038 -2.0171208778950747 83 2 2 -0.35 0 0 0 +249 4 2.8310055840134196 -8.501430505220963 -2.9828791221049253 83 2 3 -0.35 0 0 0 +250 3 7.5 -7.5 -2.5 84 2 1 0.7 0 0 0 +251 4 7.672524274844629 -6.627256087060682 -1.7555851714153565 84 2 2 -0.35 0 0 0 +252 4 7.327475725155371 -8.372743912939317 -3.2444148285846435 84 2 3 -0.35 0 0 0 +253 3 -7.5 -2.5 -2.5 85 2 1 0.7 0 0 0 +254 4 -7.9562680998953565 -2.81558187201847 -1.4812618083770501 85 2 2 -0.35 0 0 0 +255 4 -7.0437319001046435 -2.18441812798153 -3.51873819162295 85 2 3 -0.35 0 0 0 +256 3 -2.5 -2.5 -2.5 86 2 1 0.7 0 0 0 +257 4 -3.655855156414235 -2.500158391730412 -2.597973630649695 86 2 2 -0.35 0 0 0 +258 4 -1.3441448435857646 -2.499841608269588 -2.402026369350305 86 2 3 -0.35 0 0 0 +259 3 2.5 -2.5 -2.5 87 2 1 0.7 0 0 0 +260 4 2.3492190747015416 -2.0985959396284857 -3.577840383769045 87 2 2 -0.35 0 0 0 +261 4 2.6507809252984584 -2.9014040603715143 -1.422159616230955 87 2 3 -0.35 0 0 0 +262 3 7.5 -2.5 -2.5 88 2 1 0.7 0 0 0 +263 4 6.369167808148362 -2.680475446720884 -2.685059901121005 88 2 2 -0.35 0 0 0 +264 4 8.630832191851638 -2.319524553279116 -2.314940098878995 88 2 3 -0.35 0 0 0 +265 3 -7.5 2.5 -2.5 89 2 1 0.7 0 0 0 +266 4 -8.653001820685228 2.600334495702883 -2.5782290896572104 89 2 2 -0.35 0 0 0 +267 4 -6.346998179314771 2.399665504297117 -2.4217709103427896 89 2 3 -0.35 0 0 0 +268 3 -2.5 2.5 -2.5 90 2 1 0.7 0 0 0 +269 4 -2.4389431621625337 2.9182920508772057 -1.4197667739204507 90 2 2 -0.35 0 0 0 +270 4 -2.5610568378374663 2.0817079491227943 -3.5802332260795495 90 2 3 -0.35 0 0 0 +271 3 2.5 2.5 -2.5 91 2 1 0.7 0 0 0 +272 4 1.7245732398737652 2.522972739967341 -1.637569948982224 91 2 2 -0.35 0 0 0 +273 4 3.275426760126235 2.477027260032659 -3.362430051017776 91 2 3 -0.35 0 0 0 +274 3 7.5 2.5 -2.5 92 2 1 0.7 0 0 0 +275 4 6.354214677495708 2.528966092667298 -2.6787091497638675 92 2 2 -0.35 0 0 0 +276 4 8.645785322504292 2.471033907332702 -2.3212908502361325 92 2 3 -0.35 0 0 0 +277 3 -7.5 7.5 -2.5 93 2 1 0.7 0 0 0 +278 4 -8.143093600185056 7.538481444597049 -3.4646500919104017 93 2 2 -0.35 0 0 0 +279 4 -6.856906399814943 7.461518555402951 -1.535349908089598 93 2 3 -0.35 0 0 0 +280 3 -2.5 7.5 -2.5 94 2 1 0.7 0 0 0 +281 4 -2.8237854486228446 7.809312312718537 -1.429911743611391 94 2 2 -0.35 0 0 0 +282 4 -2.1762145513771554 7.190687687281463 -3.570088256388609 94 2 3 -0.35 0 0 0 +283 3 2.5 7.5 -2.5 95 2 1 0.7 0 0 0 +284 4 3.21905026313534 7.538258309964428 -1.5905479557427649 95 2 2 -0.35 0 0 0 +285 4 1.78094973686466 7.461741690035572 -3.409452044257235 95 2 3 -0.35 0 0 0 +286 3 7.5 7.5 -2.5 96 2 1 0.7 0 0 0 +287 4 7.739558757849892 7.897562136690081 -3.563087930985878 96 2 2 -0.35 0 0 0 +288 4 7.260441242150108 7.102437863309919 -1.436912069014122 96 2 3 -0.35 0 0 0 +289 3 -7.5 -7.5 2.5 97 2 1 0.7 0 0 0 +290 4 -7.4900021089395485 -6.340045447267127 2.5023404633351993 97 2 2 -0.35 0 0 0 +291 4 -7.5099978910604515 -8.659954552732874 2.4976595366648007 97 2 3 -0.35 0 0 0 +292 3 -2.5 -7.5 2.5 98 2 1 0.7 0 0 0 +293 4 -3.106830756206168 -6.511472531062921 2.5130336671395352 98 2 2 -0.35 0 0 0 +294 4 -1.8931692437938321 -8.488527468937079 2.4869663328604648 98 2 3 -0.35 0 0 0 +295 3 2.5 -7.5 2.5 99 2 1 0.7 0 0 0 +296 4 1.3541840293569891 -7.32995582507702 2.4384310143483083 99 2 2 -0.35 0 0 0 +297 4 3.645815970643011 -7.67004417492298 2.5615689856516917 99 2 3 -0.35 0 0 0 +298 3 7.5 -7.5 2.5 100 2 1 0.7 0 0 0 +299 4 6.890528994434403 -6.53074739493991 2.6862645456309138 100 2 2 -0.35 0 0 0 +300 4 8.109471005565597 -8.46925260506009 2.3137354543690862 100 2 3 -0.35 0 0 0 +301 3 -7.5 -2.5 2.5 101 2 1 0.7 0 0 0 +302 4 -8.402413809003143 -1.9960963670464098 1.9733782704667298 101 2 2 -0.35 0 0 0 +303 4 -6.597586190996857 -3.00390363295359 3.0266217295332702 101 2 3 -0.35 0 0 0 +304 3 -2.5 -2.5 2.5 102 2 1 0.7 0 0 0 +305 4 -3.1146628699497816 -3.0155291909493633 1.6621341338948146 102 2 2 -0.35 0 0 0 +306 4 -1.8853371300502184 -1.9844708090506367 3.3378658661051857 102 2 3 -0.35 0 0 0 +307 3 2.5 -2.5 2.5 103 2 1 0.7 0 0 0 +308 4 1.7091896213819626 -3.348636804240857 2.505875334702054 103 2 2 -0.35 0 0 0 +309 4 3.2908103786180374 -1.651363195759143 2.494124665297946 103 2 3 -0.35 0 0 0 +310 3 7.5 -2.5 2.5 104 2 1 0.7 0 0 0 +311 4 7.846121450678692 -1.863352310559478 1.5941966764743452 104 2 2 -0.35 0 0 0 +312 4 7.153878549321308 -3.136647689440522 3.405803323525655 104 2 3 -0.35 0 0 0 +313 3 -7.5 2.5 2.5 105 2 1 0.7 0 0 0 +314 4 -7.415505185247761 1.3693275996894718 2.2549682684711767 105 2 2 -0.35 0 0 0 +315 4 -7.584494814752239 3.6306724003105284 2.7450317315288233 105 2 3 -0.35 0 0 0 +316 3 -2.5 2.5 2.5 106 2 1 0.7 0 0 0 +317 4 -1.6566227058869707 3.061399569140947 3.0649294323567706 106 2 2 -0.35 0 0 0 +318 4 -3.3433772941130293 1.938600430859053 1.9350705676432294 106 2 3 -0.35 0 0 0 +319 3 2.5 2.5 2.5 107 2 1 0.7 0 0 0 +320 4 1.8018606440593001 1.6504313913225857 2.1306294288432994 107 2 2 -0.35 0 0 0 +321 4 3.1981393559407 3.3495686086774143 2.8693705711567006 107 2 3 -0.35 0 0 0 +322 3 7.5 2.5 2.5 108 2 1 0.7 0 0 0 +323 4 7.454398927291544 1.350628262336051 2.3501162089244056 108 2 2 -0.35 0 0 0 +324 4 7.545601072708456 3.649371737663949 2.6498837910755944 108 2 3 -0.35 0 0 0 +325 3 -7.5 7.5 2.5 109 2 1 0.7 0 0 0 +326 4 -7.639487922633921 8.47694083419964 1.8903035788914426 109 2 2 -0.35 0 0 0 +327 4 -7.360512077366079 6.523059165800359 3.1096964211085574 109 2 3 -0.35 0 0 0 +328 3 -2.5 7.5 2.5 110 2 1 0.7 0 0 0 +329 4 -3.653132322293053 7.551646962835361 2.385028531744119 110 2 2 -0.35 0 0 0 +330 4 -1.3468676777069468 7.448353037164639 2.614971468255881 110 2 3 -0.35 0 0 0 +331 3 2.5 7.5 2.5 111 2 1 0.7 0 0 0 +332 4 2.8364898316331035 7.678145325449636 3.595736663723528 111 2 2 -0.35 0 0 0 +333 4 2.1635101683668965 7.321854674550364 1.4042633362764718 111 2 3 -0.35 0 0 0 +334 3 7.5 7.5 2.5 112 2 1 0.7 0 0 0 +335 4 6.479552888446932 7.807048742079671 2.958267130078399 112 2 2 -0.35 0 0 0 +336 4 8.520447111553068 7.192951257920329 2.041732869921601 112 2 3 -0.35 0 0 0 +337 3 -7.5 -7.5 7.5 113 2 1 0.7 0 0 0 +338 4 -7.6197834102650095 -6.871306065029082 8.46746879575316 113 2 2 -0.35 0 0 0 +339 4 -7.3802165897349905 -8.128693934970917 6.53253120424684 113 2 3 -0.35 0 0 0 +340 3 -2.5 -7.5 7.5 114 2 1 0.7 0 0 0 +341 4 -3.6462582687736766 -7.5580642653980155 7.6682870237177 114 2 2 -0.35 0 0 0 +342 4 -1.3537417312263231 -7.4419357346019845 7.3317129762823 114 2 3 -0.35 0 0 0 +343 3 2.5 -7.5 7.5 115 2 1 0.7 0 0 0 +344 4 1.3734554259918312 -7.525081897193473 7.224558134616524 115 2 2 -0.35 0 0 0 +345 4 3.626544574008169 -7.474918102806527 7.775441865383476 115 2 3 -0.35 0 0 0 +346 3 7.5 -7.5 7.5 116 2 1 0.7 0 0 0 +347 4 8.414658305507071 -7.215850731078148 8.154415294089395 116 2 2 -0.35 0 0 0 +348 4 6.585341694492928 -7.784149268921852 6.845584705910605 116 2 3 -0.35 0 0 0 +349 3 -7.5 -2.5 7.5 117 2 1 0.7 0 0 0 +350 4 -8.645413670915179 -2.6453055222059496 7.611865221123771 117 2 2 -0.35 0 0 0 +351 4 -6.354586329084821 -2.3546944777940504 7.388134778876229 117 2 3 -0.35 0 0 0 +352 3 -2.5 -2.5 7.5 118 2 1 0.7 0 0 0 +353 4 -2.601509341816184 -1.9084001398846042 8.492625538174135 118 2 2 -0.35 0 0 0 +354 4 -2.398490658183816 -3.091599860115396 6.507374461825866 118 2 3 -0.35 0 0 0 +355 3 2.5 -2.5 7.5 119 2 1 0.7 0 0 0 +356 4 2.2485924178438 -2.364925227008703 8.624343823452472 119 2 2 -0.35 0 0 0 +357 4 2.7514075821562 -2.635074772991297 6.375656176547529 119 2 3 -0.35 0 0 0 +358 3 7.5 -2.5 7.5 120 2 1 0.7 0 0 0 +359 4 6.784038999809617 -1.8413110953985297 8.13176639128819 120 2 2 -0.35 0 0 0 +360 4 8.215961000190383 -3.1586889046014703 6.86823360871181 120 2 3 -0.35 0 0 0 +361 3 -7.5 2.5 7.5 121 2 1 0.7 0 0 0 +362 4 -7.537548740040521 3.6593910439642627 7.49841908354891 121 2 2 -0.35 0 0 0 +363 4 -7.462451259959479 1.340608956035737 7.50158091645109 121 2 3 -0.35 0 0 0 +364 3 -2.5 2.5 7.5 122 2 1 0.7 0 0 0 +365 4 -1.649121019955475 1.7301813803117607 7.3297523741731405 122 2 2 -0.35 0 0 0 +366 4 -3.350878980044525 3.2698186196882393 7.6702476258268595 122 2 3 -0.35 0 0 0 +367 3 2.5 2.5 7.5 123 2 1 0.7 0 0 0 +368 4 3.2379752354871414 1.771831388509018 6.979651054534562 123 2 2 -0.35 0 0 0 +369 4 1.7620247645128586 3.228168611490982 8.020348945465438 123 2 3 -0.35 0 0 0 +370 3 7.5 2.5 7.5 124 2 1 0.7 0 0 0 +371 4 7.334452984137467 1.3548227605993108 7.582239138478142 124 2 2 -0.35 0 0 0 +372 4 7.665547015862533 3.645177239400689 7.417760861521858 124 2 3 -0.35 0 0 0 +373 3 -7.5 7.5 7.5 125 2 1 0.7 0 0 0 +374 4 -8.324913544328572 8.31456508779972 7.459982977108372 125 2 2 -0.35 0 0 0 +375 4 -6.675086455671429 6.6854349122002805 7.540017022891628 125 2 3 -0.35 0 0 0 +376 3 -2.5 7.5 7.5 126 2 1 0.7 0 0 0 +377 4 -2.8359455597090397 6.421926623286971 7.76551530150699 126 2 2 -0.35 0 0 0 +378 4 -2.1640544402909603 8.578073376713029 7.23448469849301 126 2 3 -0.35 0 0 0 +379 3 2.5 7.5 7.5 127 2 1 0.7 0 0 0 +380 4 1.4186788873677927 7.288670506833647 7.862883585594468 127 2 2 -0.35 0 0 0 +381 4 3.5813211126322075 7.711329493166353 7.137116414405532 127 2 3 -0.35 0 0 0 +382 3 7.5 7.5 7.5 128 2 1 0.7 0 0 0 +383 4 6.9664096100856385 6.501410755376355 7.247609793547735 128 2 2 -0.35 0 0 0 +384 4 8.03359038991436 8.498589244623645 7.752390206452265 128 2 3 -0.35 0 0 0 + diff --git a/examples/template/h2o.mol b/examples/template/h2o.mol new file mode 100644 index 0000000000..1b845d7c8b --- /dev/null +++ b/examples/template/h2o.mol @@ -0,0 +1,62 @@ +# Water molecule. SPC/E model. + +3 atoms +2 bonds +1 angles + +Coords + +1 1.12456 0.09298 1.27452 +2 1.53683 0.75606 1.89928 +3 0.49482 0.56390 0.65678 + +Types + +1 1 +2 2 +3 2 + +Charges + +1 -0.8472 +2 0.4236 +3 0.4236 + +Bonds + +1 1 1 2 +2 1 1 3 + +Angles + +1 1 2 1 3 + +Shake Flags + +1 1 +2 1 +3 1 + +Shake Atoms + +1 1 2 3 +2 1 2 3 +3 1 2 3 + +Shake Bond Types + +1 1 1 1 +2 1 1 1 +3 1 1 1 + +Special Bond Counts + +1 2 0 0 +2 1 1 0 +3 1 1 0 + +Special Bonds + +1 2 3 +2 1 3 +3 1 2 diff --git a/examples/template/in.hybrid b/examples/template/in.hybrid new file mode 100644 index 0000000000..73212b516c --- /dev/null +++ b/examples/template/in.hybrid @@ -0,0 +1,29 @@ +# demo using atom style hybrid template charge to simulate a h2o/co2 mixture + +units real +molecule twomols h2o.mol co2.mol offset 2 1 1 0 0 +atom_style hybrid template twomols charge +boundary p p p +pair_style lj/cut/coul/long 12 +pair_modify mix arithmetic tail yes +kspace_style pppm 0.0001 +pair_style lj/cut/coul/long 12 +bond_style harmonic +angle_style harmonic + +read_data h2o-co2.data + +group h2o type 1 2 +group co2 type 3 4 +neighbor 1.0 bin +neigh_modify every 1 delay 1 check yes +timestep 1.0 + +velocity all create 300.0 34672 +thermo 100 + +fix 1 all nve +fix 2 all shake 1.0e-4 1000 500 b 1 a 1 mol twomols +#dump 1 all custom 100 h2o-co2.lammpstrj id mol xu yu zu + +run 2500 diff --git a/examples/template/in.mol-data-mix b/examples/template/in.mol-data-mix new file mode 100644 index 0000000000..f007183eec --- /dev/null +++ b/examples/template/in.mol-data-mix @@ -0,0 +1,21 @@ +# demo for atom style template simulating a cyclohexane methane mixture +# part 2: continuing from data file + +units real +boundary p p p +molecule cychex cyclohexane.mol +atom_style molecular + +pair_style lj/cut 12.0 +pair_modify mix geometric tail yes +bond_style harmonic +angle_style harmonic +dihedral_style harmonic + +read_data molecular-mix.data + +thermo 100 + +fix 1 all nvt temp 300.0 300.0 1.0 +# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu +run 2000 diff --git a/examples/template/in.mol-restart-mix b/examples/template/in.mol-restart-mix new file mode 100644 index 0000000000..f6fe584e0f --- /dev/null +++ b/examples/template/in.mol-restart-mix @@ -0,0 +1,11 @@ +# demo for atom style template simulating a cyclohexane methane mixture +# part 3: continuing from restart file + +molecule cychex cyclohexane.mol +read_restart molecular-mix.restart + +thermo 100 + +fix 1 all nvt temp 300.0 300.0 1.0 +# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu +run 2000 diff --git a/examples/template/in.molecular-mix b/examples/template/in.molecular-mix new file mode 100644 index 0000000000..3e06b8f790 --- /dev/null +++ b/examples/template/in.molecular-mix @@ -0,0 +1,42 @@ +# demo for atom style template simulating a cyclohexane methane mixture + +units real +boundary p p p +molecule cychex cyclohexane.mol +atom_style molecular + +pair_style lj/cut 12.0 +pair_modify mix geometric tail yes +bond_style harmonic +angle_style harmonic +dihedral_style harmonic + +lattice sc 6.0 +variable boxlen index 4.0 +region box block -${boxlen} ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +create_box 2 box bond/types 1 angle/types 1 dihedral/types 1 extra/special/per/atom 6 & + extra/bond/per/atom 2 extra/angle/per/atom 2 extra/dihedral/per/atom 2 + +create_atoms 0 box mol cychex 734594 +create_atoms 2 random 800 495437 box + +mass 1 14.027 +mass 2 16.043 + +pair_coeff 1 1 0.1180 3.905 +pair_coeff 2 2 0.2940 3.730 + +bond_coeff 1 260.00 1.5260 +angle_coeff 1 63.0 112.40 +dihedral_coeff 1 2.0 1 3 + +thermo 100 +minimize 0.001 0.001 500 1000 +reset_timestep 0 + +velocity all create 100.0 6234235 +fix 1 all nvt temp 100.0 300.0 1.0 +# dump 1 all custom 100 cychex-methane.lammpstrj id xu yu zu +run 2500 +#write_data molecular-mix.data +#write_restart molecular-mix.restart diff --git a/examples/template/in.template-mix b/examples/template/in.template-mix new file mode 100644 index 0000000000..57a0218f19 --- /dev/null +++ b/examples/template/in.template-mix @@ -0,0 +1,42 @@ +# demo for atom style template simulating a cyclohexane methane mixture +# part 1: creating system with create_atoms + +units real +boundary p p p +molecule cychex cyclohexane.mol +atom_style template cychex + +pair_style lj/cut 12.0 +pair_modify mix geometric tail yes +bond_style harmonic +angle_style harmonic +dihedral_style harmonic + +lattice sc 6.0 +variable boxlen index 4.0 +region box block -${boxlen} ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +create_box 2 box bond/types 1 angle/types 1 dihedral/types 1 + +create_atoms 0 box mol cychex 734594 +create_atoms 2 random 800 495437 box + +mass 1 14.027 +mass 2 16.043 + +pair_coeff 1 1 0.1180 3.905 +pair_coeff 2 2 0.2940 3.730 + +bond_coeff 1 260.00 1.5260 +angle_coeff 1 63.0 112.40 +dihedral_coeff 1 2.0 1 3 + +thermo 100 +minimize 0.001 0.001 500 1000 +reset_timestep 0 + +velocity all create 100.0 6234235 +fix 1 all nvt temp 100.0 300.0 1.0 +# dump 1 all custom 100 cychex-methane.lammpstrj id xu yu zu +run 2500 +#write_data template-mix.data +#write_restart template-mix.restart diff --git a/examples/template/in.tmpl-data-mix b/examples/template/in.tmpl-data-mix new file mode 100644 index 0000000000..01714e3ed2 --- /dev/null +++ b/examples/template/in.tmpl-data-mix @@ -0,0 +1,21 @@ +# demo for atom style template simulating a cyclohexane methane mixture +# part 2: continuing from data file + +units real +boundary p p p +molecule cychex cyclohexane.mol +atom_style template cychex + +pair_style lj/cut 12.0 +pair_modify mix geometric tail yes +bond_style harmonic +angle_style harmonic +dihedral_style harmonic + +read_data template-mix.data + +thermo 100 + +fix 1 all nvt temp 300.0 300.0 1.0 +# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu +run 2000 diff --git a/examples/template/in.tmpl-restart-mix b/examples/template/in.tmpl-restart-mix new file mode 100644 index 0000000000..cd9ea605a0 --- /dev/null +++ b/examples/template/in.tmpl-restart-mix @@ -0,0 +1,11 @@ +# demo for atom style template simulating a cyclohexane methane mixture +# part 3: continuing from restart file + +molecule cychex cyclohexane.mol +read_restart template-mix.restart + +thermo 100 + +fix 1 all nvt temp 300.0 300.0 1.0 +# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu +run 2000 diff --git a/examples/template/log.22Oct20.hybrid.g++.1 b/examples/template/log.22Oct20.hybrid.g++.1 new file mode 100644 index 0000000000..1373727093 --- /dev/null +++ b/examples/template/log.22Oct20.hybrid.g++.1 @@ -0,0 +1,158 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo using atom style hybrid template charge to simulate a h2o/co2 mixture + +units real +molecule twomols h2o.mol co2.mol offset 2 1 1 0 0 +Read molecule template twomols: + 1 molecules + 3 atoms with max type 2 + 2 bonds with max type 1 + 1 angles with max type 1 + 0 dihedrals with max type 0 + 0 impropers with max type 0 +Read molecule template twomols: + 1 molecules + 3 atoms with max type 4 + 2 bonds with max type 2 + 1 angles with max type 2 + 0 dihedrals with max type 0 + 0 impropers with max type 0 +atom_style hybrid template twomols charge +boundary p p p +pair_style lj/cut/coul/long 12 +pair_modify mix arithmetic tail yes +kspace_style pppm 0.0001 +pair_style lj/cut/coul/long 12 +bond_style harmonic +angle_style harmonic + +read_data h2o-co2.data +Reading data file ... + orthogonal box = (-10.000000 -10.000000 -10.000000) to (10.000000 10.000000 10.000000) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 384 atoms + 256 template bonds + 128 template angles + read_data CPU = 0.003 seconds + +group h2o type 1 2 +192 atoms in group h2o +group co2 type 3 4 +192 atoms in group co2 +neighbor 1.0 bin +neigh_modify every 1 delay 1 check yes +timestep 1.0 + +velocity all create 300.0 34672 +thermo 100 + +fix 1 all nve +fix 2 all shake 1.0e-4 1000 500 b 1 a 1 mol twomols +WARNING: Molecule template for fix shake has multiple molecules (src/RIGID/fix_shake.cpp:174) + 0 = # of size 2 clusters + 0 = # of size 3 clusters + 0 = # of size 4 clusters + 64 = # of frozen angles + find clusters CPU = 0.000 seconds +#dump 1 all custom 100 h2o-co2.lammpstrj id mol xu yu zu + +run 2500 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:328) + G vector (1/distance) = 0.21452218 + grid = 8 8 8 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0237525 + estimated relative force accuracy = 7.1529949e-05 + using double precision FFTW3 + 3d grid and FFT values/proc = 2197 512 +Neighbor list info ... + update every 1 steps, delay 1 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 15 + ghost atom cutoff = 15 + binsize = 7.5, bins = 3 3 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +SHAKE stats (type/ave/delta/count) on step 0 + 1 1.99995 1.29379e-05 192 + 1 328.411 6.25278e-13 64 +Per MPI rank memory allocation (min/avg/max) = 5.625 | 5.625 | 5.625 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 360.18809 -173.24472 3.5527137e-13 169.25036 2429.6019 + 100 363.1919 -274.40147 44.351072 115.30094 -883.3694 + 200 427.79493 -329.78833 38.354106 115.34674 1523.3792 + 300 465.88637 -350.56147 22.604289 115.04411 385.4719 + 400 436.9596 -357.24661 57.161471 115.41032 2307.0158 +SHAKE stats (type/ave/delta/count) on step 500 + 1 2.00000 4.02911e-07 192 + 1 328.410 5.78944e-05 64 + 500 480.93508 -378.08914 36.26854 115.49018 2822.245 + 600 457.38119 -381.9922 62.73272 115.65441 -387.65281 + 700 488.20843 -393.89334 45.144546 115.47805 3086.293 + 800 463.52123 -384.28537 59.827245 116.2942 3310.9672 + 900 500.42748 -424.29715 64.614956 116.16348 -612.56056 +SHAKE stats (type/ave/delta/count) on step 1000 + 1 2.00000 8.23271e-07 192 + 1 328.410 5.98754e-05 64 + 1000 522.46734 -424.93564 44.24152 116.1088 3948.9908 + 1100 470.79532 -398.30875 66.721422 116.08177 2480.4521 + 1200 515.87076 -433.25982 58.802584 116.07313 1913.2295 + 1300 517.25521 -425.5203 49.308433 115.63494 3343.755 + 1400 515.28471 -427.75141 53.078285 115.29997 2755.9048 +SHAKE stats (type/ave/delta/count) on step 1500 + 1 2.00000 8.95165e-07 192 + 1 328.410 7.19288e-05 64 + 1500 514.22181 -421.99736 48.624007 115.58906 2400.1515 + 1600 533.9392 -430.89564 38.263047 115.07866 4331.2167 + 1700 529.29154 -424.02106 35.673551 114.94439 2973.3181 + 1800 535.52166 -438.41572 43.952454 114.75272 1799.8588 + 1900 519.40791 -413.30717 34.399008 114.9856 4270.415 +SHAKE stats (type/ave/delta/count) on step 2000 + 1 2.00000 8.04353e-07 192 + 1 328.410 7.97925e-05 64 + 2000 553.26572 -446.67936 35.423618 114.83268 1729.4708 + 2100 546.58793 -448.39367 43.475288 114.82028 1266.9778 + 2200 536.17021 -442.03485 46.968579 114.76641 2419.0965 + 2300 556.29724 -457.19766 43.217115 114.99049 1122.5796 + 2400 529.02178 -437.66639 49.530498 114.89949 1714.4747 +SHAKE stats (type/ave/delta/count) on step 2500 + 1 2.00000 6.70601e-07 192 + 1 328.410 6.39002e-05 64 + 2500 500.56024 -423.00108 62.368402 115.33925 3750.7564 +Loop time of 6.4485 on 1 procs for 2500 steps with 384 atoms + +Performance: 33.496 ns/day, 0.717 hours/ns, 387.687 timesteps/s +99.4% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 4.9332 | 4.9332 | 4.9332 | 0.0 | 76.50 +Bond | 0.013685 | 0.013685 | 0.013685 | 0.0 | 0.21 +Kspace | 0.33226 | 0.33226 | 0.33226 | 0.0 | 5.15 +Neigh | 1.0663 | 1.0663 | 1.0663 | 0.0 | 16.54 +Comm | 0.062471 | 0.062471 | 0.062471 | 0.0 | 0.97 +Output | 0.00048861 | 0.00048861 | 0.00048861 | 0.0 | 0.01 +Modify | 0.030447 | 0.030447 | 0.030447 | 0.0 | 0.47 +Other | | 0.009605 | | | 0.15 + +Nlocal: 384.000 ave 384 max 384 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 5594.00 ave 5594 max 5594 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 129739.0 ave 129739 max 129739 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 129739 +Ave neighs/atom = 337.86198 +Ave special neighs/atom = 2.0000000 +Neighbor list builds = 320 +Dangerous builds = 0 +Total wall time: 0:00:06 diff --git a/examples/template/log.22Oct20.hybrid.g++.4 b/examples/template/log.22Oct20.hybrid.g++.4 new file mode 100644 index 0000000000..07cd7b04d1 --- /dev/null +++ b/examples/template/log.22Oct20.hybrid.g++.4 @@ -0,0 +1,158 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo using atom style hybrid template charge to simulate a h2o/co2 mixture + +units real +molecule twomols h2o.mol co2.mol offset 2 1 1 0 0 +Read molecule template twomols: + 1 molecules + 3 atoms with max type 2 + 2 bonds with max type 1 + 1 angles with max type 1 + 0 dihedrals with max type 0 + 0 impropers with max type 0 +Read molecule template twomols: + 1 molecules + 3 atoms with max type 4 + 2 bonds with max type 2 + 1 angles with max type 2 + 0 dihedrals with max type 0 + 0 impropers with max type 0 +atom_style hybrid template twomols charge +boundary p p p +pair_style lj/cut/coul/long 12 +pair_modify mix arithmetic tail yes +kspace_style pppm 0.0001 +pair_style lj/cut/coul/long 12 +bond_style harmonic +angle_style harmonic + +read_data h2o-co2.data +Reading data file ... + orthogonal box = (-10.000000 -10.000000 -10.000000) to (10.000000 10.000000 10.000000) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 384 atoms + 256 template bonds + 128 template angles + read_data CPU = 0.002 seconds + +group h2o type 1 2 +192 atoms in group h2o +group co2 type 3 4 +192 atoms in group co2 +neighbor 1.0 bin +neigh_modify every 1 delay 1 check yes +timestep 1.0 + +velocity all create 300.0 34672 +thermo 100 + +fix 1 all nve +fix 2 all shake 1.0e-4 1000 500 b 1 a 1 mol twomols +WARNING: Molecule template for fix shake has multiple molecules (src/RIGID/fix_shake.cpp:174) + 0 = # of size 2 clusters + 0 = # of size 3 clusters + 0 = # of size 4 clusters + 64 = # of frozen angles + find clusters CPU = 0.000 seconds +#dump 1 all custom 100 h2o-co2.lammpstrj id mol xu yu zu + +run 2500 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:328) + G vector (1/distance) = 0.21452218 + grid = 8 8 8 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0237525 + estimated relative force accuracy = 7.1529949e-05 + using double precision FFTW3 + 3d grid and FFT values/proc = 1053 128 +Neighbor list info ... + update every 1 steps, delay 1 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 15 + ghost atom cutoff = 15 + binsize = 7.5, bins = 3 3 3 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +SHAKE stats (type/ave/delta/count) on step 0 + 1 1.99995 1.29379e-05 192 + 1 328.411 6.25278e-13 64 +Per MPI rank memory allocation (min/avg/max) = 4.952 | 4.952 | 4.952 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 360.18809 -173.24472 3.5527137e-13 169.25036 2429.6019 + 100 363.1919 -274.40147 44.351072 115.30094 -883.3694 + 200 427.79493 -329.78833 38.354106 115.34674 1523.3792 + 300 465.88637 -350.56147 22.60429 115.0441 385.47189 + 400 436.9596 -357.24661 57.161471 115.41032 2307.0158 +SHAKE stats (type/ave/delta/count) on step 500 + 1 2.00000 4.02911e-07 192 + 1 328.410 5.78945e-05 64 + 500 480.93505 -378.08914 36.268541 115.49016 2822.245 + 600 457.38144 -381.99241 62.732739 115.65446 -387.65505 + 700 488.20801 -393.89265 45.144482 115.47829 3086.2987 + 800 463.5234 -384.28682 59.826927 116.2945 3310.9691 + 900 500.48024 -424.35693 64.621298 116.16022 -612.4406 +SHAKE stats (type/ave/delta/count) on step 1000 + 1 2.00000 8.21157e-07 192 + 1 328.410 5.79572e-05 64 + 1000 522.3905 -424.85292 44.232122 116.10905 3948.1535 + 1100 466.7856 -395.03916 67.204265 116.02145 2555.2069 + 1200 505.58079 -424.30563 59.681049 116.12127 1919.2701 + 1300 510.78441 -418.28838 48.398524 115.804 3476.7443 + 1400 494.39282 -407.60176 52.9665 115.47219 2343.5129 +SHAKE stats (type/ave/delta/count) on step 1500 + 1 2.00000 7.21617e-07 192 + 1 328.410 8.01168e-05 64 + 1500 533.48096 -444.9571 53.263393 115.58182 1055.8053 + 1600 548.84084 -449.81134 43.134527 115.20409 3084.0678 + 1700 522.65205 -419.10648 37.279839 115.1519 1813.2589 + 1800 497.72839 -403.88156 45.774501 115.17212 1822.8113 + 1900 535.04509 -434.52042 40.685094 114.9275 4216.4353 +SHAKE stats (type/ave/delta/count) on step 2000 + 1 2.00000 1.03652e-06 192 + 1 328.410 5.49305e-05 64 + 2000 540.42903 -436.41996 37.284032 114.74637 1422.0078 + 2100 534.80707 -439.51681 46.068646 115.08833 1460.2864 + 2200 507.8413 -419.62464 51.912776 115.18345 3790.8003 + 2300 553.37305 -456.23124 45.592723 115.55197 515.72888 + 2400 538.60716 -447.65657 51.130476 115.62382 2087.6217 +SHAKE stats (type/ave/delta/count) on step 2500 + 1 2.00000 6.38759e-07 192 + 1 328.410 5.54712e-05 64 + 2500 507.38323 -436.58125 69.949293 115.8278 3313.9095 +Loop time of 2.62759 on 4 procs for 2500 steps with 384 atoms + +Performance: 82.205 ns/day, 0.292 hours/ns, 951.443 timesteps/s +93.7% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.1769 | 1.3595 | 1.5961 | 13.1 | 51.74 +Bond | 0.0040634 | 0.0042451 | 0.0044163 | 0.2 | 0.16 +Kspace | 0.37643 | 0.62177 | 0.8124 | 20.0 | 23.66 +Neigh | 0.35517 | 0.35603 | 0.35688 | 0.1 | 13.55 +Comm | 0.15521 | 0.16781 | 0.18101 | 2.8 | 6.39 +Output | 0.00039921 | 0.00083364 | 0.0018058 | 0.0 | 0.03 +Modify | 0.081231 | 0.095032 | 0.10957 | 3.5 | 3.62 +Other | | 0.02238 | | | 0.85 + +Nlocal: 96.0000 ave 105 max 84 min +Histogram: 1 0 0 0 1 0 0 0 1 1 +Nghost: 3764.00 ave 3776 max 3755 min +Histogram: 1 1 0 0 0 1 0 0 0 1 +Neighs: 32527.2 ave 34260 max 29030 min +Histogram: 1 0 0 0 0 0 0 1 1 1 + +Total # of neighbors = 130109 +Ave neighs/atom = 338.82552 +Ave special neighs/atom = 2.0000000 +Neighbor list builds = 321 +Dangerous builds = 0 +Total wall time: 0:00:02 diff --git a/examples/template/log.22Oct20.mol-data-mix.g++.1 b/examples/template/log.22Oct20.mol-data-mix.g++.1 new file mode 100644 index 0000000000..7b80813fe2 --- /dev/null +++ b/examples/template/log.22Oct20.mol-data-mix.g++.1 @@ -0,0 +1,122 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo for atom style template simulating a cyclohexane methane mixture +# part 2: continuing from data file + +units real +boundary p p p +molecule cychex cyclohexane.mol +Read molecule template cychex: + 1 molecules + 6 atoms with max type 1 + 6 bonds with max type 1 + 6 angles with max type 1 + 6 dihedrals with max type 1 + 0 impropers with max type 0 +atom_style molecular + +pair_style lj/cut 12.0 +pair_modify mix geometric tail yes +bond_style harmonic +angle_style harmonic +dihedral_style harmonic + +read_data molecular-mix.data +Reading data file ... + orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 3872 atoms + reading velocities ... + 3872 velocities + scanning bonds ... + 2 = max bonds/atom + scanning angles ... + 1 = max angles/atom + scanning dihedrals ... + 2 = max dihedrals/atom + reading bonds ... + 3072 bonds + reading angles ... + 3072 angles + reading dihedrals ... + 3072 dihedrals +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0.0 0.0 0.0 + special bond factors coul: 0.0 0.0 0.0 + 2 = max # of 1-2 neighbors + 2 = max # of 1-3 neighbors + 4 = max # of 1-4 neighbors + 5 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.014 seconds + +thermo 100 + +fix 1 all nvt temp 300.0 300.0 1.0 +# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu +run 2000 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 10.74 | 10.74 | 10.74 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 297.79426 -4928.7403 1686.5107 193.93377 11481.089 + 100 298.75004 -4870.5672 1619.1613 195.7859 8813.1304 + 200 296.49886 -4884.3039 1747.4798 284.39198 11537.322 + 300 295.24937 -4850.2788 1642.4584 198.97822 9160.666 + 400 297.73321 -4952.9967 1660.6439 143.10604 10751.859 + 500 293.58308 -4984.2337 1625.8355 29.173529 9530.8826 + 600 299.50756 -4999.965 1588.0327 44.000269 9233.8621 + 700 295.64728 -4958.2253 1646.2011 99.365838 11089.418 + 800 303.5841 -4895.0575 1719.7373 327.65045 8451.8685 + 900 300.80754 -5033.4853 1727.4591 164.90648 11497.526 + 1000 300.66472 -4887.4356 1763.3231 345.17233 8454.9551 + 1100 300.94922 -5003.5731 1766.1276 235.12197 11176.28 + 1200 299.81632 -4944.4257 1705.2357 220.30525 8879.3201 + 1300 299.95466 -5009.4367 1637.1947 88.849661 10379.762 + 1400 300.32601 -4999.539 1735.8132 201.65057 9698.2178 + 1500 304.10398 -4997.213 1627.5651 139.32157 9299.5337 + 1600 299.2676 -4960.8958 1746.7172 238.98516 10914.415 + 1700 293.13408 -5034.7742 1742.2452 89.861851 8213.6882 + 1800 301.9386 -5068.1221 1755.577 171.43863 11229.315 + 1900 297.67412 -5012.48 1734.5634 156.86041 8116.1348 + 2000 296.14819 -5089.1034 1774.3987 102.46517 10858.209 +Loop time of 15.6807 on 1 procs for 2000 steps with 3872 atoms + +Performance: 11.020 ns/day, 2.178 hours/ns, 127.545 timesteps/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 14.196 | 14.196 | 14.196 | 0.0 | 90.53 +Bond | 0.58712 | 0.58712 | 0.58712 | 0.0 | 3.74 +Neigh | 0.6978 | 0.6978 | 0.6978 | 0.0 | 4.45 +Comm | 0.082724 | 0.082724 | 0.082724 | 0.0 | 0.53 +Output | 0.00052338 | 0.00052338 | 0.00052338 | 0.0 | 0.00 +Modify | 0.078892 | 0.078892 | 0.078892 | 0.0 | 0.50 +Other | | 0.0374 | | | 0.24 + +Nlocal: 3872.00 ave 3872 max 3872 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11633.0 ave 11633 max 11633 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 770365.0 ave 770365 max 770365 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 770365 +Ave neighs/atom = 198.95790 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 35 +Dangerous builds = 0 +Total wall time: 0:00:15 diff --git a/examples/template/log.22Oct20.mol-data-mix.g++.4 b/examples/template/log.22Oct20.mol-data-mix.g++.4 new file mode 100644 index 0000000000..adadfda1a7 --- /dev/null +++ b/examples/template/log.22Oct20.mol-data-mix.g++.4 @@ -0,0 +1,122 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo for atom style template simulating a cyclohexane methane mixture +# part 2: continuing from data file + +units real +boundary p p p +molecule cychex cyclohexane.mol +Read molecule template cychex: + 1 molecules + 6 atoms with max type 1 + 6 bonds with max type 1 + 6 angles with max type 1 + 6 dihedrals with max type 1 + 0 impropers with max type 0 +atom_style molecular + +pair_style lj/cut 12.0 +pair_modify mix geometric tail yes +bond_style harmonic +angle_style harmonic +dihedral_style harmonic + +read_data molecular-mix.data +Reading data file ... + orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 3872 atoms + reading velocities ... + 3872 velocities + scanning bonds ... + 2 = max bonds/atom + scanning angles ... + 1 = max angles/atom + scanning dihedrals ... + 2 = max dihedrals/atom + reading bonds ... + 3072 bonds + reading angles ... + 3072 angles + reading dihedrals ... + 3072 dihedrals +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0.0 0.0 0.0 + special bond factors coul: 0.0 0.0 0.0 + 2 = max # of 1-2 neighbors + 2 = max # of 1-3 neighbors + 4 = max # of 1-4 neighbors + 5 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.039 seconds + +thermo 100 + +fix 1 all nvt temp 300.0 300.0 1.0 +# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu +run 2000 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 8.101 | 8.197 | 8.483 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 297.79426 -4928.7403 1686.5107 193.93377 11481.089 + 100 298.75001 -4870.5672 1619.1613 195.78563 8813.1303 + 200 301.9265 -4884.8594 1745.0359 344.02042 11561.79 + 300 298.78957 -4854.0769 1638.3567 231.92774 9180.5245 + 400 302 -4951.4895 1664.5419 197.74463 10784.638 + 500 299.17946 -4983.7996 1615.0068 83.354011 9578.745 + 600 294.32777 -5000.7554 1591.1992 -13.391775 9181.3926 + 700 300.90925 -4959.9309 1653.6347 165.81003 11121.514 + 800 293.14833 -4895.5912 1707.8754 194.83943 8397.927 + 900 299.0508 -5032.8395 1726.0885 143.91128 11478.847 + 1000 295.15206 -4888.4533 1777.4719 294.69437 8388.738 + 1100 301.13534 -5004.2113 1761.645 232.14877 11246.198 + 1200 296.93159 -4944.3223 1703.1744 185.06123 8808.4178 + 1300 300.79377 -5011.7826 1642.093 101.08422 10390.705 + 1400 295.85952 -4987.9927 1708.8415 134.68768 9680.88 + 1500 296.37146 -5009.887 1637.2239 47.082942 9235.3487 + 1600 298.68972 -4962.1273 1747.402 231.77054 10941.114 + 1700 299.03141 -5022.0046 1755.8881 184.32195 8248.312 + 1800 297.26645 -5023.9459 1740.9512 147.07837 11357.02 + 1900 293.16007 -5023.8887 1754.1333 112.93534 7969.1102 + 2000 307.66497 -5046.5928 1803.9999 307.46576 11249.704 +Loop time of 4.33662 on 4 procs for 2000 steps with 3872 atoms + +Performance: 39.847 ns/day, 0.602 hours/ns, 461.188 timesteps/s +98.8% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.6239 | 3.6669 | 3.7143 | 1.8 | 84.56 +Bond | 0.14954 | 0.15355 | 0.15614 | 0.7 | 3.54 +Neigh | 0.17931 | 0.17933 | 0.17934 | 0.0 | 4.14 +Comm | 0.23604 | 0.28181 | 0.32663 | 6.5 | 6.50 +Output | 0.00034802 | 0.00069388 | 0.0017292 | 0.0 | 0.02 +Modify | 0.029915 | 0.036141 | 0.039601 | 1.9 | 0.83 +Other | | 0.01821 | | | 0.42 + +Nlocal: 968.000 ave 979 max 948 min +Histogram: 1 0 0 0 0 0 0 1 1 1 +Nghost: 6321.25 ave 6336 max 6309 min +Histogram: 2 0 0 0 0 0 0 1 0 1 +Neighs: 192540.0 ave 195406 max 187182 min +Histogram: 1 0 0 0 0 0 1 0 0 2 + +Total # of neighbors = 770161 +Ave neighs/atom = 198.90522 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 35 +Dangerous builds = 0 +Total wall time: 0:00:04 diff --git a/examples/template/log.22Oct20.mol-restart-mix.g++.1 b/examples/template/log.22Oct20.mol-restart-mix.g++.1 new file mode 100644 index 0000000000..2d5120f678 --- /dev/null +++ b/examples/template/log.22Oct20.mol-restart-mix.g++.1 @@ -0,0 +1,106 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo for atom style template simulating a cyclohexane methane mixture +# part 3: continuing from restart file + +molecule cychex cyclohexane.mol +Read molecule template cychex: + 1 molecules + 6 atoms with max type 1 + 6 bonds with max type 1 + 6 angles with max type 1 + 6 dihedrals with max type 1 + 0 impropers with max type 0 +read_restart molecular-mix.restart +Reading restart file ... + restart file = 22 Oct 2020, LAMMPS = 22 Oct 2020 + restoring atom style molecular from restart + orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000) + 1 by 1 by 1 MPI processor grid + restoring pair style lj/cut from restart + restoring bond style harmonic from restart + restoring angle style harmonic from restart + restoring dihedral style harmonic from restart + 3872 atoms + 3072 bonds + 3072 angles + 3072 dihedrals +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0.0 0.0 0.0 + special bond factors coul: 0.0 0.0 0.0 + 2 = max # of 1-2 neighbors + 2 = max # of 1-3 neighbors + 4 = max # of 1-4 neighbors + 5 = max # of special neighbors + special bonds CPU = 0.002 seconds + read_restart CPU = 0.008 seconds + +thermo 100 + +fix 1 all nvt temp 300.0 300.0 1.0 +# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu +run 2000 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 10.74 | 10.74 | 10.74 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 297.79426 -4928.7403 1686.5107 193.93377 11481.089 + 100 298.75004 -4870.5672 1619.1613 195.7859 8813.1304 + 200 296.49886 -4884.3039 1747.4798 284.39198 11537.322 + 300 295.24937 -4850.2788 1642.4584 198.97822 9160.666 + 400 297.73321 -4952.9967 1660.6439 143.10604 10751.859 + 500 293.58308 -4984.2337 1625.8355 29.173529 9530.8826 + 600 299.50756 -4999.965 1588.0327 44.000269 9233.8621 + 700 295.64728 -4958.2253 1646.2011 99.365838 11089.418 + 800 303.5841 -4895.0575 1719.7373 327.65045 8451.8685 + 900 300.80754 -5033.4853 1727.4591 164.90648 11497.526 + 1000 300.66472 -4887.4356 1763.3231 345.17233 8454.9551 + 1100 300.94922 -5003.5731 1766.1276 235.12197 11176.28 + 1200 299.81632 -4944.4257 1705.2357 220.30525 8879.3201 + 1300 299.95466 -5009.4367 1637.1947 88.849661 10379.762 + 1400 300.32601 -4999.539 1735.8132 201.65057 9698.2178 + 1500 304.10398 -4997.213 1627.5651 139.32157 9299.5337 + 1600 299.2676 -4960.8958 1746.7172 238.98516 10914.415 + 1700 293.13408 -5034.7742 1742.2452 89.861851 8213.6882 + 1800 301.9386 -5068.1221 1755.577 171.43863 11229.315 + 1900 297.67412 -5012.48 1734.5634 156.86041 8116.1348 + 2000 296.14819 -5089.1034 1774.3987 102.46517 10858.209 +Loop time of 15.5879 on 1 procs for 2000 steps with 3872 atoms + +Performance: 11.086 ns/day, 2.165 hours/ns, 128.305 timesteps/s +99.5% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 14.116 | 14.116 | 14.116 | 0.0 | 90.56 +Bond | 0.58742 | 0.58742 | 0.58742 | 0.0 | 3.77 +Neigh | 0.68543 | 0.68543 | 0.68543 | 0.0 | 4.40 +Comm | 0.082574 | 0.082574 | 0.082574 | 0.0 | 0.53 +Output | 0.00054698 | 0.00054698 | 0.00054698 | 0.0 | 0.00 +Modify | 0.078446 | 0.078446 | 0.078446 | 0.0 | 0.50 +Other | | 0.03761 | | | 0.24 + +Nlocal: 3872.00 ave 3872 max 3872 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11633.0 ave 11633 max 11633 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 770365.0 ave 770365 max 770365 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 770365 +Ave neighs/atom = 198.95790 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 35 +Dangerous builds = 0 +Total wall time: 0:00:15 diff --git a/examples/template/log.22Oct20.mol-restart-mix.g++.4 b/examples/template/log.22Oct20.mol-restart-mix.g++.4 new file mode 100644 index 0000000000..1b900d588a --- /dev/null +++ b/examples/template/log.22Oct20.mol-restart-mix.g++.4 @@ -0,0 +1,107 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo for atom style template simulating a cyclohexane methane mixture +# part 3: continuing from restart file + +molecule cychex cyclohexane.mol +Read molecule template cychex: + 1 molecules + 6 atoms with max type 1 + 6 bonds with max type 1 + 6 angles with max type 1 + 6 dihedrals with max type 1 + 0 impropers with max type 0 +read_restart molecular-mix.restart +Reading restart file ... + restart file = 22 Oct 2020, LAMMPS = 22 Oct 2020 +WARNING: Restart file used different # of processors: 1 vs. 4 (src/read_restart.cpp:697) + restoring atom style molecular from restart + orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000) + 1 by 2 by 2 MPI processor grid + restoring pair style lj/cut from restart + restoring bond style harmonic from restart + restoring angle style harmonic from restart + restoring dihedral style harmonic from restart + 3872 atoms + 3072 bonds + 3072 angles + 3072 dihedrals +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0.0 0.0 0.0 + special bond factors coul: 0.0 0.0 0.0 + 2 = max # of 1-2 neighbors + 2 = max # of 1-3 neighbors + 4 = max # of 1-4 neighbors + 5 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_restart CPU = 0.031 seconds + +thermo 100 + +fix 1 all nvt temp 300.0 300.0 1.0 +# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu +run 2000 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 8.101 | 8.197 | 8.483 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 297.79426 -4928.7403 1686.5107 193.93377 11481.089 + 100 298.75001 -4870.5672 1619.1613 195.78563 8813.1303 + 200 301.9265 -4884.8594 1745.0359 344.02042 11561.79 + 300 298.78957 -4854.0769 1638.3567 231.92774 9180.5245 + 400 302 -4951.4895 1664.5419 197.74463 10784.638 + 500 299.17946 -4983.7996 1615.0068 83.354011 9578.745 + 600 294.32777 -5000.7554 1591.1992 -13.391775 9181.3926 + 700 300.90925 -4959.9309 1653.6347 165.81003 11121.514 + 800 293.14833 -4895.5912 1707.8754 194.83943 8397.927 + 900 299.0508 -5032.8395 1726.0885 143.91128 11478.847 + 1000 295.15206 -4888.4533 1777.4719 294.69437 8388.738 + 1100 301.13534 -5004.2113 1761.645 232.14877 11246.198 + 1200 296.93159 -4944.3223 1703.1744 185.06123 8808.4178 + 1300 300.79377 -5011.7826 1642.093 101.08422 10390.705 + 1400 295.85952 -4987.9927 1708.8415 134.68768 9680.88 + 1500 296.37146 -5009.887 1637.2239 47.082942 9235.3487 + 1600 298.68972 -4962.1273 1747.402 231.77054 10941.114 + 1700 299.03141 -5022.0046 1755.8881 184.32195 8248.312 + 1800 297.26645 -5023.9459 1740.9512 147.07837 11357.02 + 1900 293.16007 -5023.8887 1754.1333 112.93534 7969.1102 + 2000 307.66497 -5046.5928 1803.9999 307.46576 11249.704 +Loop time of 5.2142 on 4 procs for 2000 steps with 3872 atoms + +Performance: 33.140 ns/day, 0.724 hours/ns, 383.568 timesteps/s +94.4% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.5706 | 3.6724 | 3.7809 | 4.9 | 70.43 +Bond | 0.14654 | 0.1524 | 0.15708 | 1.2 | 2.92 +Neigh | 0.18217 | 0.1822 | 0.18221 | 0.0 | 3.49 +Comm | 0.74346 | 0.8715 | 0.9808 | 10.9 | 16.71 +Output | 0.00034776 | 0.00084716 | 0.0023413 | 0.0 | 0.02 +Modify | 0.12457 | 0.18985 | 0.31013 | 17.4 | 3.64 +Other | | 0.145 | | | 2.78 + +Nlocal: 968.000 ave 979 max 948 min +Histogram: 1 0 0 0 0 0 0 1 1 1 +Nghost: 6321.25 ave 6336 max 6309 min +Histogram: 2 0 0 0 0 0 0 1 0 1 +Neighs: 192540.0 ave 195406 max 187182 min +Histogram: 1 0 0 0 0 0 1 0 0 2 + +Total # of neighbors = 770161 +Ave neighs/atom = 198.90522 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 35 +Dangerous builds = 0 +Total wall time: 0:00:05 diff --git a/examples/template/log.22Oct20.molecular-mix.g++.1 b/examples/template/log.22Oct20.molecular-mix.g++.1 new file mode 100644 index 0000000000..61260f38c9 --- /dev/null +++ b/examples/template/log.22Oct20.molecular-mix.g++.1 @@ -0,0 +1,174 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo for atom style template simulating a cyclohexane methane mixture + +units real +boundary p p p +molecule cychex cyclohexane.mol +Read molecule template cychex: + 1 molecules + 6 atoms with max type 1 + 6 bonds with max type 1 + 6 angles with max type 1 + 6 dihedrals with max type 1 + 0 impropers with max type 0 +atom_style molecular + +pair_style lj/cut 12.0 +pair_modify mix geometric tail yes +bond_style harmonic +angle_style harmonic +dihedral_style harmonic + +lattice sc 6.0 +Lattice spacing in x,y,z = 6.0000000 6.0000000 6.0000000 +variable boxlen index 4.0 +region box block -${boxlen} ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -4.0 ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -4.0 4.0 -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -4.0 4.0 -4.0 ${boxlen} units lattice +region box block -4.0 4.0 -4.0 4.0 -4.0 4.0 units lattice +create_box 2 box bond/types 1 angle/types 1 dihedral/types 1 extra/special/per/atom 6 extra/bond/per/atom 2 extra/angle/per/atom 2 extra/dihedral/per/atom 2 +Created orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000) + 1 by 1 by 1 MPI processor grid + +create_atoms 0 box mol cychex 734594 +Created 3072 atoms + create_atoms CPU = 0.003 seconds +create_atoms 2 random 800 495437 box +Created 800 atoms + create_atoms CPU = 0.000 seconds + +mass 1 14.027 +mass 2 16.043 + +pair_coeff 1 1 0.1180 3.905 +pair_coeff 2 2 0.2940 3.730 + +bond_coeff 1 260.00 1.5260 +angle_coeff 1 63.0 112.40 +dihedral_coeff 1 2.0 1 3 + +thermo 100 +minimize 0.001 0.001 500 1000 +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 12.28 | 12.28 | 12.28 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0 4.3897851e+13 341.92144 4.3897851e+13 1.0886888e+14 + 100 0 -4351.8383 516.49891 -3835.3394 11635.037 + 190 0 -6191.8175 457.61209 -5734.2054 4365.373 +Loop time of 3.46057 on 1 procs for 190 steps with 3872 atoms + +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +Minimization stats: + Stopping criterion = energy tolerance + Energy initial, next-to-last, final = + 43897850768892.8 -5729.17187196146 -5734.20542785978 + Force two-norm initial, final = 1.1080994e+15 72.746805 + Force max component initial, final = 4.6607099e+14 17.394645 + Final line search alpha, max atom move = 0.0041634525 0.072421779 + Iterations, force evaluations = 190 297 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.0573 | 3.0573 | 3.0573 | 0.0 | 88.35 +Bond | 0.10271 | 0.10271 | 0.10271 | 0.0 | 2.97 +Neigh | 0.26654 | 0.26654 | 0.26654 | 0.0 | 7.70 +Comm | 0.013532 | 0.013532 | 0.013532 | 0.0 | 0.39 +Output | 3.3796e-05 | 3.3796e-05 | 3.3796e-05 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.02041 | | | 0.59 + +Nlocal: 3872.00 ave 3872 max 3872 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 12122.0 ave 12122 max 12122 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 774375.0 ave 774375 max 774375 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 774375 +Ave neighs/atom = 199.99354 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 14 +Dangerous builds = 0 +reset_timestep 0 + +velocity all create 100.0 6234235 +fix 1 all nvt temp 100.0 300.0 1.0 +# dump 1 all custom 100 cychex-methane.lammpstrj id xu yu zu +run 2500 +Per MPI rank memory allocation (min/avg/max) = 11.16 | 11.16 | 11.16 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 100 -6191.8175 457.61209 -4580.3339 4842.3161 + 100 106.81295 -5670.2783 921.20332 -3516.5907 5959.5039 + 200 119.22024 -5701.0103 1040.0336 -3285.3283 6755.0994 + 300 127.23574 -5706.7587 1023.9882 -3214.6335 6081.4162 + 400 133.7471 -5734.1781 1113.1696 -3077.7387 6569.8751 + 500 138.72092 -5756.3282 1191.5668 -2964.1003 6433.1441 + 600 149.02612 -5731.7291 1205.3124 -2806.8466 6366.853 + 700 153.5469 -5670.5879 925.61956 -2973.2344 7677.5226 + 800 163.38118 -5629.0757 1180.6507 -2563.216 5865.8079 + 900 173.27279 -5639.6903 1160.2138 -2480.131 8168.7364 + 1000 178.05354 -5579.0492 913.19337 -2611.3466 6220.8001 + 1100 188.99752 -5551.4873 1178.9541 -2191.7446 7734.6527 + 1200 196.9019 -5511.951 1121.4617 -2118.4942 7602.4591 + 1300 202.98293 -5433.6794 1194.3592 -1897.1579 7067.1876 + 1400 212.86876 -5411.3798 1276.3809 -1678.7668 8867.2713 + 1500 221.26247 -5359.7405 1390.3889 -1416.2668 6939.8559 + 1600 228.1783 -5288.5782 1375.3053 -1280.3883 9387.8277 + 1700 234.74001 -5255.1136 1192.2292 -1354.2862 7400.1124 + 1800 244.1285 -5282.2876 1386.5554 -1078.8029 9473.6491 + 1900 253.62148 -5158.5569 1242.3041 -989.78669 8596.2722 + 2000 260.24011 -5157.2005 1477.2039 -677.16002 9136.1769 + 2100 263.80129 -5096.4397 1403.9977 -648.51387 9640.0807 + 2200 278.10721 -5098.89 1545.7716 -344.11827 8509.7183 + 2300 278.05084 -5053.818 1495.944 -349.52438 10299.97 + 2400 287.92949 -5011.3524 1527.0261 -161.98978 8854.8877 + 2500 302.37248 -4957.687 1700.6563 231.95939 10617.134 +Loop time of 18.6761 on 1 procs for 2500 steps with 3872 atoms + +Performance: 11.566 ns/day, 2.075 hours/ns, 133.861 timesteps/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 17.06 | 17.06 | 17.06 | 0.0 | 91.35 +Bond | 0.73068 | 0.73068 | 0.73068 | 0.0 | 3.91 +Neigh | 0.63671 | 0.63671 | 0.63671 | 0.0 | 3.41 +Comm | 0.10272 | 0.10272 | 0.10272 | 0.0 | 0.55 +Output | 0.00064976 | 0.00064976 | 0.00064976 | 0.0 | 0.00 +Modify | 0.098028 | 0.098028 | 0.098028 | 0.0 | 0.52 +Other | | 0.04742 | | | 0.25 + +Nlocal: 3872.00 ave 3872 max 3872 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11793.0 ave 11793 max 11793 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 770411.0 ave 770411 max 770411 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 770411 +Ave neighs/atom = 198.96978 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 33 +Dangerous builds = 0 +write_data molecular-mix.data +System init for write_data ... +Total wall time: 0:00:22 diff --git a/examples/template/log.22Oct20.molecular-mix.g++.4 b/examples/template/log.22Oct20.molecular-mix.g++.4 new file mode 100644 index 0000000000..429ba54280 --- /dev/null +++ b/examples/template/log.22Oct20.molecular-mix.g++.4 @@ -0,0 +1,175 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo for atom style template simulating a cyclohexane methane mixture + +units real +boundary p p p +molecule cychex cyclohexane.mol +Read molecule template cychex: + 1 molecules + 6 atoms with max type 1 + 6 bonds with max type 1 + 6 angles with max type 1 + 6 dihedrals with max type 1 + 0 impropers with max type 0 +atom_style molecular + +pair_style lj/cut 12.0 +pair_modify mix geometric tail yes +bond_style harmonic +angle_style harmonic +dihedral_style harmonic + +lattice sc 6.0 +Lattice spacing in x,y,z = 6.0000000 6.0000000 6.0000000 +variable boxlen index 4.0 +region box block -${boxlen} ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -4.0 ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -4.0 4.0 -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -4.0 4.0 -4.0 ${boxlen} units lattice +region box block -4.0 4.0 -4.0 4.0 -4.0 4.0 units lattice +create_box 2 box bond/types 1 angle/types 1 dihedral/types 1 extra/special/per/atom 6 extra/bond/per/atom 2 extra/angle/per/atom 2 extra/dihedral/per/atom 2 +Created orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000) + 1 by 2 by 2 MPI processor grid + +create_atoms 0 box mol cychex 734594 +Created 3072 atoms + create_atoms CPU = 0.011 seconds +create_atoms 2 random 800 495437 box +Created 800 atoms + create_atoms CPU = 0.000 seconds + +mass 1 14.027 +mass 2 16.043 + +pair_coeff 1 1 0.1180 3.905 +pair_coeff 2 2 0.2940 3.730 + +bond_coeff 1 260.00 1.5260 +angle_coeff 1 63.0 112.40 +dihedral_coeff 1 2.0 1 3 + +thermo 100 +minimize 0.001 0.001 500 1000 +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 9.623 | 9.719 | 10.01 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0 7.5430044e+16 341.92144 7.5430044e+16 1.8707026e+17 + 100 0 -3410.6986 572.28283 -2838.4158 14603.831 + 200 0 -6109.2306 483.67771 -5625.5529 5069.1821 + 204 0 -6137.0238 483.14639 -5653.8774 4952.4081 +Loop time of 1.10481 on 4 procs for 204 steps with 3872 atoms + +98.2% CPU use with 4 MPI tasks x 1 OpenMP threads + +Minimization stats: + Stopping criterion = energy tolerance + Energy initial, next-to-last, final = + 7.54300441078755e+16 -5648.75822692028 -5653.87742448419 + Force two-norm initial, final = 8.7430661e+18 74.636845 + Force max component initial, final = 4.1468626e+18 8.6800755 + Final line search alpha, max atom move = 0.0032186736 0.02793833 + Iterations, force evaluations = 204 328 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.89902 | 0.90561 | 0.90821 | 0.4 | 81.97 +Bond | 0.029749 | 0.030411 | 0.031345 | 0.4 | 2.75 +Neigh | 0.088655 | 0.088662 | 0.088666 | 0.0 | 8.03 +Comm | 0.063187 | 0.068096 | 0.070678 | 1.1 | 6.16 +Output | 4.8304e-05 | 0.00011426 | 0.00031124 | 0.0 | 0.01 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.01191 | | | 1.08 + +Nlocal: 968.000 ave 980 max 954 min +Histogram: 1 0 1 0 0 0 0 0 1 1 +Nghost: 6630.00 ave 6644 max 6616 min +Histogram: 1 0 1 0 0 0 0 1 0 1 +Neighs: 193550.0 ave 195957 max 191376 min +Histogram: 2 0 0 0 0 0 0 0 1 1 + +Total # of neighbors = 774200 +Ave neighs/atom = 199.94835 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 14 +Dangerous builds = 0 +reset_timestep 0 + +velocity all create 100.0 6234235 +fix 1 all nvt temp 100.0 300.0 1.0 +# dump 1 all custom 100 cychex-methane.lammpstrj id xu yu zu +run 2500 +Per MPI rank memory allocation (min/avg/max) = 8.498 | 8.785 | 8.881 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 100 -6137.0238 483.14639 -4500.0059 5429.3513 + 100 107.18608 -5623.5468 925.13786 -3461.6193 5640.5924 + 200 119.37927 -5671.054 1050.9079 -3242.6626 7494.8637 + 300 127.21276 -5646.2809 1053.2662 -3125.143 5661.4525 + 400 133.89893 -5674.1417 1139.7 -2989.42 7206.4877 + 500 138.74889 -5679.3757 1234.644 -2843.7477 6741.4965 + 600 150.20403 -5665.0258 1211.9245 -2719.9398 6299.2406 + 700 156.0507 -5681.5445 978.62091 -2902.2989 8429.7188 + 800 160.67293 -5579.9146 1214.6749 -2511.2805 5217.5425 + 900 172.06808 -5627.6903 1118.4786 -2523.767 8995.6018 + 1000 179.82813 -5508.1617 925.22393 -2507.9521 5760.9688 + 1100 190.36338 -5536.6687 1176.6794 -2163.4405 8079.5754 + 1200 195.57864 -5508.64 1163.8098 -2088.1038 7738.58 + 1300 204.05249 -5401.8527 1219.9794 -1827.3697 6562.2311 + 1400 211.74944 -5365.2571 1326.2667 -1595.6738 9772.2773 + 1500 222.08023 -5265.4213 1418.3572 -1284.5435 6395.1161 + 1600 225.86408 -5316.5874 1288.1407 -1422.2653 10163.26 + 1700 232.35057 -5192.56 1254.0031 -1257.5297 7437.3606 + 1800 238.16652 -5199.008 1457.8824 -992.98993 9783.4089 + 1900 250.86418 -5166.917 1256.4887 -1015.7777 8635.027 + 2000 262.41293 -5088.5573 1494.6069 -566.04218 9100.8833 + 2100 268.55207 -5057.9273 1459.8499 -499.33144 10002.961 + 2200 279.96891 -4963.9376 1526.8577 -206.59825 8943.2443 + 2300 286.55635 -5047.2961 1538.5334 -202.27038 10711.176 + 2400 292.56468 -4910.7083 1625.6283 90.740663 8482.6522 + 2500 297.79426 -4928.7403 1686.5107 193.93377 11481.089 +Loop time of 5.954 on 4 procs for 2500 steps with 3872 atoms + +Performance: 36.278 ns/day, 0.662 hours/ns, 419.886 timesteps/s +95.5% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 4.4642 | 4.6298 | 4.8946 | 7.5 | 77.76 +Bond | 0.18992 | 0.19849 | 0.20566 | 1.3 | 3.33 +Neigh | 0.18926 | 0.18928 | 0.18929 | 0.0 | 3.18 +Comm | 0.56456 | 0.82727 | 1.0096 | 17.9 | 13.89 +Output | 0.00044023 | 0.00092791 | 0.0020343 | 0.0 | 0.02 +Modify | 0.077974 | 0.080378 | 0.082874 | 0.8 | 1.35 +Other | | 0.02782 | | | 0.47 + +Nlocal: 968.000 ave 989 max 944 min +Histogram: 1 0 1 0 0 0 0 0 0 2 +Nghost: 6381.50 ave 6416 max 6351 min +Histogram: 1 0 0 1 0 1 0 0 0 1 +Neighs: 192557.0 ave 197456 max 188754 min +Histogram: 2 0 0 0 0 0 0 1 0 1 + +Total # of neighbors = 770229 +Ave neighs/atom = 198.92278 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 34 +Dangerous builds = 0 +write_data molecular-mix.data +System init for write_data ... +Total wall time: 0:00:07 diff --git a/examples/template/log.22Oct20.template-mix.g++.1 b/examples/template/log.22Oct20.template-mix.g++.1 new file mode 100644 index 0000000000..3896f8ef81 --- /dev/null +++ b/examples/template/log.22Oct20.template-mix.g++.1 @@ -0,0 +1,175 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo for atom style template simulating a cyclohexane methane mixture +# part 1: creating system with create_atoms + +units real +boundary p p p +molecule cychex cyclohexane.mol +Read molecule template cychex: + 1 molecules + 6 atoms with max type 1 + 6 bonds with max type 1 + 6 angles with max type 1 + 6 dihedrals with max type 1 + 0 impropers with max type 0 +atom_style template cychex + +pair_style lj/cut 12.0 +pair_modify mix geometric tail yes +bond_style harmonic +angle_style harmonic +dihedral_style harmonic + +lattice sc 6.0 +Lattice spacing in x,y,z = 6.0000000 6.0000000 6.0000000 +variable boxlen index 4.0 +region box block -${boxlen} ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -4.0 ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -4.0 4.0 -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -4.0 4.0 -4.0 ${boxlen} units lattice +region box block -4.0 4.0 -4.0 4.0 -4.0 4.0 units lattice +create_box 2 box bond/types 1 angle/types 1 dihedral/types 1 +Created orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000) + 1 by 1 by 1 MPI processor grid + +create_atoms 0 box mol cychex 734594 +Created 3072 atoms + create_atoms CPU = 0.001 seconds +create_atoms 2 random 800 495437 box +Created 800 atoms + create_atoms CPU = 0.000 seconds + +mass 1 14.027 +mass 2 16.043 + +pair_coeff 1 1 0.1180 3.905 +pair_coeff 2 2 0.2940 3.730 + +bond_coeff 1 260.00 1.5260 +angle_coeff 1 63.0 112.40 +dihedral_coeff 1 2.0 1 3 + +thermo 100 +minimize 0.001 0.001 500 1000 +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 8.050 | 8.050 | 8.050 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0 4.3897851e+13 341.92144 4.3897851e+13 1.0886888e+14 + 100 0 -4351.8383 516.49891 -3835.3394 11635.037 + 190 0 -6191.8175 457.61209 -5734.2054 4365.373 +Loop time of 3.4619 on 1 procs for 190 steps with 3872 atoms + +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +Minimization stats: + Stopping criterion = energy tolerance + Energy initial, next-to-last, final = + 43897850768892.8 -5729.17187196146 -5734.20542785978 + Force two-norm initial, final = 1.1080994e+15 72.746805 + Force max component initial, final = 4.6607099e+14 17.394645 + Final line search alpha, max atom move = 0.0041634525 0.072421779 + Iterations, force evaluations = 190 297 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.0549 | 3.0549 | 3.0549 | 0.0 | 88.24 +Bond | 0.10344 | 0.10344 | 0.10344 | 0.0 | 2.99 +Neigh | 0.2695 | 0.2695 | 0.2695 | 0.0 | 7.78 +Comm | 0.013772 | 0.013772 | 0.013772 | 0.0 | 0.40 +Output | 3.3707e-05 | 3.3707e-05 | 3.3707e-05 | 0.0 | 0.00 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.02027 | | | 0.59 + +Nlocal: 3872.00 ave 3872 max 3872 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 12122.0 ave 12122 max 12122 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 774375.0 ave 774375 max 774375 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 774375 +Ave neighs/atom = 199.99354 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 14 +Dangerous builds = 0 +reset_timestep 0 + +velocity all create 100.0 6234235 +fix 1 all nvt temp 100.0 300.0 1.0 +# dump 1 all custom 100 cychex-methane.lammpstrj id xu yu zu +run 2500 +Per MPI rank memory allocation (min/avg/max) = 6.925 | 6.925 | 6.925 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 100 -6191.8175 457.61209 -4580.3339 4842.3161 + 100 106.81295 -5670.2783 921.20332 -3516.5907 5959.5039 + 200 119.22024 -5701.0103 1040.0336 -3285.3283 6755.0994 + 300 127.23574 -5706.7587 1023.9882 -3214.6335 6081.4162 + 400 133.7471 -5734.1781 1113.1696 -3077.7387 6569.8751 + 500 138.72092 -5756.3282 1191.5668 -2964.1003 6433.1441 + 600 149.02612 -5731.7291 1205.3124 -2806.8466 6366.853 + 700 153.5469 -5670.5879 925.61956 -2973.2344 7677.5226 + 800 163.38118 -5629.0757 1180.6507 -2563.216 5865.8079 + 900 173.27279 -5639.6903 1160.2138 -2480.131 8168.7364 + 1000 178.05354 -5579.0492 913.19337 -2611.3466 6220.8001 + 1100 188.99752 -5551.4873 1178.9541 -2191.7446 7734.6527 + 1200 196.9019 -5511.951 1121.4617 -2118.4942 7602.4591 + 1300 202.98293 -5433.6794 1194.3592 -1897.1579 7067.1876 + 1400 212.86876 -5411.3798 1276.3809 -1678.7668 8867.2713 + 1500 221.26247 -5359.7405 1390.3889 -1416.2668 6939.8559 + 1600 228.1783 -5288.5782 1375.3053 -1280.3883 9387.8277 + 1700 234.74001 -5255.1136 1192.2292 -1354.2862 7400.1124 + 1800 244.1285 -5282.2876 1386.5554 -1078.8029 9473.6491 + 1900 253.62148 -5158.5569 1242.3041 -989.78669 8596.2722 + 2000 260.24011 -5157.2005 1477.2039 -677.16002 9136.1769 + 2100 263.80129 -5096.4397 1403.9977 -648.51387 9640.0807 + 2200 278.10721 -5098.89 1545.7716 -344.11827 8509.7183 + 2300 278.05084 -5053.818 1495.944 -349.52438 10299.97 + 2400 287.92949 -5011.3524 1527.0261 -161.98978 8854.8877 + 2500 302.37248 -4957.687 1700.6563 231.95939 10617.134 +Loop time of 18.7845 on 1 procs for 2500 steps with 3872 atoms + +Performance: 11.499 ns/day, 2.087 hours/ns, 133.089 timesteps/s +99.5% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 17.14 | 17.14 | 17.14 | 0.0 | 91.25 +Bond | 0.74217 | 0.74217 | 0.74217 | 0.0 | 3.95 +Neigh | 0.65005 | 0.65005 | 0.65005 | 0.0 | 3.46 +Comm | 0.10364 | 0.10364 | 0.10364 | 0.0 | 0.55 +Output | 0.0006739 | 0.0006739 | 0.0006739 | 0.0 | 0.00 +Modify | 0.099647 | 0.099647 | 0.099647 | 0.0 | 0.53 +Other | | 0.04816 | | | 0.26 + +Nlocal: 3872.00 ave 3872 max 3872 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11793.0 ave 11793 max 11793 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 770411.0 ave 770411 max 770411 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 770411 +Ave neighs/atom = 198.96978 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 33 +Dangerous builds = 0 +write_data template-mix.data +System init for write_data ... +Total wall time: 0:00:22 diff --git a/examples/template/log.22Oct20.template-mix.g++.4 b/examples/template/log.22Oct20.template-mix.g++.4 new file mode 100644 index 0000000000..d029a3937e --- /dev/null +++ b/examples/template/log.22Oct20.template-mix.g++.4 @@ -0,0 +1,176 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo for atom style template simulating a cyclohexane methane mixture +# part 1: creating system with create_atoms + +units real +boundary p p p +molecule cychex cyclohexane.mol +Read molecule template cychex: + 1 molecules + 6 atoms with max type 1 + 6 bonds with max type 1 + 6 angles with max type 1 + 6 dihedrals with max type 1 + 0 impropers with max type 0 +atom_style template cychex + +pair_style lj/cut 12.0 +pair_modify mix geometric tail yes +bond_style harmonic +angle_style harmonic +dihedral_style harmonic + +lattice sc 6.0 +Lattice spacing in x,y,z = 6.0000000 6.0000000 6.0000000 +variable boxlen index 4.0 +region box block -${boxlen} ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 ${boxlen} -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -${boxlen} ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -4.0 ${boxlen} -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -4.0 4.0 -${boxlen} ${boxlen} units lattice +region box block -4.0 4.0 -4.0 4.0 -4.0 ${boxlen} units lattice +region box block -4.0 4.0 -4.0 4.0 -4.0 4.0 units lattice +create_box 2 box bond/types 1 angle/types 1 dihedral/types 1 +Created orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000) + 1 by 2 by 2 MPI processor grid + +create_atoms 0 box mol cychex 734594 +Created 3072 atoms + create_atoms CPU = 0.001 seconds +create_atoms 2 random 800 495437 box +Created 800 atoms + create_atoms CPU = 0.000 seconds + +mass 1 14.027 +mass 2 16.043 + +pair_coeff 1 1 0.1180 3.905 +pair_coeff 2 2 0.2940 3.730 + +bond_coeff 1 260.00 1.5260 +angle_coeff 1 63.0 112.40 +dihedral_coeff 1 2.0 1 3 + +thermo 100 +minimize 0.001 0.001 500 1000 +WARNING: Using 'neigh_modify every 1 delay 0 check yes' setting during minimization (src/min.cpp:187) +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 5.345 | 5.441 | 5.728 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0 7.5430044e+16 341.92144 7.5430044e+16 1.8707026e+17 + 100 0 -3410.6986 572.28283 -2838.4158 14603.831 + 200 0 -6109.2306 483.67771 -5625.5529 5069.1821 + 204 0 -6137.0238 483.14639 -5653.8774 4952.4081 +Loop time of 1.08919 on 4 procs for 204 steps with 3872 atoms + +97.9% CPU use with 4 MPI tasks x 1 OpenMP threads + +Minimization stats: + Stopping criterion = energy tolerance + Energy initial, next-to-last, final = + 7.54300441078755e+16 -5648.75822692028 -5653.87742448419 + Force two-norm initial, final = 8.7430661e+18 74.636845 + Force max component initial, final = 4.1468626e+18 8.6800755 + Final line search alpha, max atom move = 0.0032186736 0.02793833 + Iterations, force evaluations = 204 328 + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.8748 | 0.88765 | 0.9004 | 1.2 | 81.50 +Bond | 0.029354 | 0.029865 | 0.030434 | 0.2 | 2.74 +Neigh | 0.07699 | 0.077483 | 0.077966 | 0.2 | 7.11 +Comm | 0.072926 | 0.084481 | 0.097433 | 3.8 | 7.76 +Output | 4.7316e-05 | 0.00010999 | 0.00029778 | 0.0 | 0.01 +Modify | 0 | 0 | 0 | 0.0 | 0.00 +Other | | 0.009602 | | | 0.88 + +Nlocal: 968.000 ave 980 max 954 min +Histogram: 1 0 1 0 0 0 0 0 1 1 +Nghost: 6630.00 ave 6644 max 6616 min +Histogram: 1 0 1 0 0 0 0 1 0 1 +Neighs: 193550.0 ave 195957 max 191376 min +Histogram: 2 0 0 0 0 0 0 0 1 1 + +Total # of neighbors = 774200 +Ave neighs/atom = 199.94835 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 14 +Dangerous builds = 0 +reset_timestep 0 + +velocity all create 100.0 6234235 +fix 1 all nvt temp 100.0 300.0 1.0 +# dump 1 all custom 100 cychex-methane.lammpstrj id xu yu zu +run 2500 +Per MPI rank memory allocation (min/avg/max) = 4.220 | 4.507 | 4.603 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 100 -6137.0238 483.14639 -4500.0059 5429.3513 + 100 107.18608 -5623.5468 925.13786 -3461.6193 5640.5924 + 200 119.37927 -5671.054 1050.9079 -3242.6626 7494.8637 + 300 127.21276 -5646.2809 1053.2662 -3125.143 5661.4525 + 400 133.89893 -5674.1417 1139.7 -2989.42 7206.4877 + 500 138.74889 -5679.3757 1234.644 -2843.7477 6741.4965 + 600 150.20403 -5665.0258 1211.9245 -2719.9398 6299.2406 + 700 156.0507 -5681.5445 978.62091 -2902.2989 8429.7188 + 800 160.67293 -5579.9146 1214.6749 -2511.2805 5217.5425 + 900 172.06808 -5627.6903 1118.4786 -2523.767 8995.6018 + 1000 179.82813 -5508.1617 925.22393 -2507.9521 5760.9688 + 1100 190.36338 -5536.6687 1176.6794 -2163.4405 8079.5754 + 1200 195.57864 -5508.64 1163.8098 -2088.1038 7738.58 + 1300 204.05249 -5401.8527 1219.9794 -1827.3697 6562.2311 + 1400 211.74944 -5365.2571 1326.2667 -1595.6738 9772.2773 + 1500 222.08023 -5265.4213 1418.3572 -1284.5435 6395.1161 + 1600 225.86408 -5316.5874 1288.1407 -1422.2653 10163.26 + 1700 232.35057 -5192.56 1254.0031 -1257.5297 7437.3606 + 1800 238.16652 -5199.008 1457.8824 -992.98993 9783.4089 + 1900 250.86418 -5166.917 1256.4887 -1015.7777 8635.027 + 2000 262.41293 -5088.5573 1494.6069 -566.04218 9100.8833 + 2100 268.55207 -5057.9273 1459.8499 -499.33144 10002.961 + 2200 279.96891 -4963.9376 1526.8577 -206.59825 8943.2443 + 2300 286.55635 -5047.2961 1538.5334 -202.27038 10711.176 + 2400 292.56468 -4910.7083 1625.6283 90.740663 8482.6522 + 2500 297.79426 -4928.7403 1686.5107 193.93377 11481.089 +Loop time of 5.70106 on 4 procs for 2500 steps with 3872 atoms + +Performance: 37.888 ns/day, 0.633 hours/ns, 438.515 timesteps/s +96.9% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 4.4476 | 4.5874 | 4.9593 | 10.1 | 80.47 +Bond | 0.18485 | 0.19038 | 0.19543 | 0.9 | 3.34 +Neigh | 0.18057 | 0.18059 | 0.18062 | 0.0 | 3.17 +Comm | 0.30256 | 0.67081 | 0.81456 | 26.1 | 11.77 +Output | 0.00042399 | 0.00053327 | 0.00085633 | 0.0 | 0.01 +Modify | 0.035251 | 0.043755 | 0.052209 | 4.0 | 0.77 +Other | | 0.02758 | | | 0.48 + +Nlocal: 968.000 ave 989 max 944 min +Histogram: 1 0 1 0 0 0 0 0 0 2 +Nghost: 6381.50 ave 6416 max 6351 min +Histogram: 1 0 0 1 0 1 0 0 0 1 +Neighs: 192557.0 ave 197456 max 188754 min +Histogram: 2 0 0 0 0 0 0 1 0 1 + +Total # of neighbors = 770229 +Ave neighs/atom = 198.92278 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 34 +Dangerous builds = 0 +write_data template-mix.data +System init for write_data ... +Total wall time: 0:00:06 diff --git a/examples/template/log.22Oct20.tmpl-data-mix.g++.1 b/examples/template/log.22Oct20.tmpl-data-mix.g++.1 new file mode 100644 index 0000000000..3e57864b67 --- /dev/null +++ b/examples/template/log.22Oct20.tmpl-data-mix.g++.1 @@ -0,0 +1,105 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo for atom style template simulating a cyclohexane methane mixture +# part 2: continuing from data file + +units real +boundary p p p +molecule cychex cyclohexane.mol +Read molecule template cychex: + 1 molecules + 6 atoms with max type 1 + 6 bonds with max type 1 + 6 angles with max type 1 + 6 dihedrals with max type 1 + 0 impropers with max type 0 +atom_style template cychex + +pair_style lj/cut 12.0 +pair_modify mix geometric tail yes +bond_style harmonic +angle_style harmonic +dihedral_style harmonic + +read_data template-mix.data +Reading data file ... + orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 3872 atoms + reading velocities ... + 3872 velocities + 3072 template bonds + 3072 template angles + 3072 template dihedrals + read_data CPU = 0.016 seconds + +thermo 100 + +fix 1 all nvt temp 300.0 300.0 1.0 +# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu +run 2000 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.879 | 6.879 | 6.879 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 297.79426 -4928.7403 1686.5107 193.93377 11481.089 + 100 298.75004 -4870.5672 1619.1613 195.7859 8813.1304 + 200 296.49886 -4884.3039 1747.4798 284.39198 11537.322 + 300 295.24937 -4850.2788 1642.4584 198.97822 9160.666 + 400 297.73321 -4952.9967 1660.6439 143.10604 10751.859 + 500 293.58308 -4984.2337 1625.8355 29.173529 9530.8826 + 600 299.50756 -4999.965 1588.0327 44.000269 9233.8621 + 700 295.64728 -4958.2253 1646.2011 99.365838 11089.418 + 800 303.5841 -4895.0575 1719.7373 327.65045 8451.8685 + 900 300.80754 -5033.4853 1727.4591 164.90648 11497.526 + 1000 300.66472 -4887.4356 1763.3231 345.17233 8454.9551 + 1100 300.94922 -5003.5731 1766.1276 235.12197 11176.28 + 1200 299.81632 -4944.4257 1705.2357 220.30525 8879.3201 + 1300 299.95466 -5009.4367 1637.1947 88.849661 10379.762 + 1400 300.32601 -4999.539 1735.8132 201.65057 9698.2178 + 1500 304.10398 -4997.213 1627.5651 139.32157 9299.5337 + 1600 299.2676 -4960.8958 1746.7172 238.98516 10914.415 + 1700 293.13408 -5034.7742 1742.2452 89.861851 8213.6882 + 1800 301.9386 -5068.1221 1755.577 171.43863 11229.315 + 1900 297.67412 -5012.48 1734.5634 156.86041 8116.1348 + 2000 296.14819 -5089.1034 1774.3987 102.46517 10858.209 +Loop time of 15.3795 on 1 procs for 2000 steps with 3872 atoms + +Performance: 11.236 ns/day, 2.136 hours/ns, 130.043 timesteps/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 13.905 | 13.905 | 13.905 | 0.0 | 90.41 +Bond | 0.58069 | 0.58069 | 0.58069 | 0.0 | 3.78 +Neigh | 0.69766 | 0.69766 | 0.69766 | 0.0 | 4.54 +Comm | 0.08196 | 0.08196 | 0.08196 | 0.0 | 0.53 +Output | 0.00052444 | 0.00052444 | 0.00052444 | 0.0 | 0.00 +Modify | 0.077644 | 0.077644 | 0.077644 | 0.0 | 0.50 +Other | | 0.03568 | | | 0.23 + +Nlocal: 3872.00 ave 3872 max 3872 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11633.0 ave 11633 max 11633 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 770365.0 ave 770365 max 770365 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 770365 +Ave neighs/atom = 198.95790 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 35 +Dangerous builds = 0 +Total wall time: 0:00:15 diff --git a/examples/template/log.22Oct20.tmpl-data-mix.g++.4 b/examples/template/log.22Oct20.tmpl-data-mix.g++.4 new file mode 100644 index 0000000000..865639a0b7 --- /dev/null +++ b/examples/template/log.22Oct20.tmpl-data-mix.g++.4 @@ -0,0 +1,105 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo for atom style template simulating a cyclohexane methane mixture +# part 2: continuing from data file + +units real +boundary p p p +molecule cychex cyclohexane.mol +Read molecule template cychex: + 1 molecules + 6 atoms with max type 1 + 6 bonds with max type 1 + 6 angles with max type 1 + 6 dihedrals with max type 1 + 0 impropers with max type 0 +atom_style template cychex + +pair_style lj/cut 12.0 +pair_modify mix geometric tail yes +bond_style harmonic +angle_style harmonic +dihedral_style harmonic + +read_data template-mix.data +Reading data file ... + orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 3872 atoms + reading velocities ... + 3872 velocities + 3072 template bonds + 3072 template angles + 3072 template dihedrals + read_data CPU = 0.022 seconds + +thermo 100 + +fix 1 all nvt temp 300.0 300.0 1.0 +# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu +run 2000 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.193 | 4.289 | 4.575 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 297.79426 -4928.7403 1686.5107 193.93377 11481.089 + 100 298.75001 -4870.5672 1619.1613 195.78563 8813.1303 + 200 301.9265 -4884.8594 1745.0359 344.02042 11561.79 + 300 298.78957 -4854.0769 1638.3567 231.92774 9180.5245 + 400 302 -4951.4895 1664.5419 197.74463 10784.638 + 500 299.17946 -4983.7996 1615.0068 83.354011 9578.745 + 600 294.32777 -5000.7554 1591.1992 -13.391775 9181.3926 + 700 300.90925 -4959.9309 1653.6347 165.81003 11121.514 + 800 293.14833 -4895.5912 1707.8754 194.83943 8397.927 + 900 299.0508 -5032.8395 1726.0885 143.91128 11478.847 + 1000 295.15206 -4888.4533 1777.4719 294.69437 8388.738 + 1100 301.13534 -5004.2113 1761.645 232.14877 11246.198 + 1200 296.93159 -4944.3223 1703.1744 185.06123 8808.4178 + 1300 300.79377 -5011.7826 1642.093 101.08422 10390.705 + 1400 295.85952 -4987.9927 1708.8415 134.68768 9680.88 + 1500 296.37146 -5009.887 1637.2239 47.082942 9235.3487 + 1600 298.68972 -4962.1273 1747.402 231.77054 10941.114 + 1700 299.03141 -5022.0046 1755.8881 184.32195 8248.312 + 1800 297.26645 -5023.9459 1740.9512 147.07837 11357.02 + 1900 293.16007 -5023.8887 1754.1333 112.93534 7969.1102 + 2000 307.66497 -5046.5928 1803.9999 307.46576 11249.704 +Loop time of 4.67813 on 4 procs for 2000 steps with 3872 atoms + +Performance: 36.938 ns/day, 0.650 hours/ns, 427.522 timesteps/s +96.6% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.5547 | 3.689 | 3.8706 | 5.9 | 78.86 +Bond | 0.14554 | 0.15424 | 0.1658 | 2.0 | 3.30 +Neigh | 0.19598 | 0.19599 | 0.19599 | 0.0 | 4.19 +Comm | 0.39992 | 0.57068 | 0.7172 | 14.9 | 12.20 +Output | 0.00034507 | 0.00063055 | 0.0014842 | 0.0 | 0.01 +Modify | 0.036995 | 0.043513 | 0.048096 | 2.0 | 0.93 +Other | | 0.02411 | | | 0.52 + +Nlocal: 968.000 ave 979 max 948 min +Histogram: 1 0 0 0 0 0 0 1 1 1 +Nghost: 6321.25 ave 6336 max 6309 min +Histogram: 2 0 0 0 0 0 0 1 0 1 +Neighs: 192540.0 ave 195406 max 187182 min +Histogram: 1 0 0 0 0 0 1 0 0 2 + +Total # of neighbors = 770161 +Ave neighs/atom = 198.90522 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 35 +Dangerous builds = 0 +Total wall time: 0:00:04 diff --git a/examples/template/log.22Oct20.tmpl-restart-mix.g++.1 b/examples/template/log.22Oct20.tmpl-restart-mix.g++.1 new file mode 100644 index 0000000000..3c28834098 --- /dev/null +++ b/examples/template/log.22Oct20.tmpl-restart-mix.g++.1 @@ -0,0 +1,102 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo for atom style template simulating a cyclohexane methane mixture +# part 3: continuing from restart file + +molecule cychex cyclohexane.mol +Read molecule template cychex: + 1 molecules + 6 atoms with max type 1 + 6 bonds with max type 1 + 6 angles with max type 1 + 6 dihedrals with max type 1 + 0 impropers with max type 0 +read_restart template-mix.restart +Reading restart file ... + restart file = 22 Oct 2020, LAMMPS = 22 Oct 2020 +WARNING: Restart file used different # of processors: 4 vs. 1 (src/read_restart.cpp:697) + restoring atom style template from restart + orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000) + 1 by 1 by 1 MPI processor grid + restoring pair style lj/cut from restart + restoring bond style harmonic from restart + restoring angle style harmonic from restart + restoring dihedral style harmonic from restart + 3872 atoms + 3072 template bonds + 3072 template angles + 3072 template dihedrals + read_restart CPU = 0.002 seconds + +thermo 100 + +fix 1 all nvt temp 300.0 300.0 1.0 +Resetting global fix info from restart file: + fix style: nvt, fix ID: 1 +# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu +run 2000 +All restart file global fix info was re-assigned +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.879 | 6.879 | 6.879 Mbytes +Step Temp E_pair E_mol TotEng Press + 2500 297.79426 -4928.7403 1686.5107 193.93377 11481.089 + 2600 303.69861 -4872.1658 1620.5986 252.72467 8824.1501 + 2700 304.64827 -4885.5903 1747.1956 376.85504 11560.748 + 2800 298.79617 -4851.2752 1644.5913 241.04014 9198.1133 + 2900 302.323 -4949.4247 1661.0637 200.05824 10788.039 + 3000 302.8192 -4983.7441 1617.1412 127.5418 9606.2027 + 3100 305.27495 -4999.5335 1589.7081 112.65547 9258.8096 + 3200 294.9932 -4960.8253 1650.5396 93.556955 11103.25 + 3300 299.8705 -4896.6757 1711.6029 275.0477 8404.2758 + 3400 308.43113 -5035.583 1732.7837 256.09989 11520.651 + 3500 302.54 -4887.2016 1770.4336 374.15506 8359.8351 + 3600 294.00064 -5011.409 1768.0298 149.01058 11257.53 + 3700 303.26654 -4942.0636 1690.4493 247.69209 8749.4281 + 3800 294.7064 -5009.5839 1638.6276 29.577045 10460.396 + 3900 300.34826 -5011.778 1699.4384 153.29355 9558.3891 + 4000 298.76709 -5014.8089 1613.1902 45.769836 9254.1067 + 4100 297.77294 -4978.3228 1736.8967 194.49122 10810.757 + 4200 302.14768 -5049.4356 1713.0187 149.97929 8258.5093 + 4300 295.1467 -5094.2287 1757.8215 69.206733 11022.023 + 4400 305.24677 -4967.1951 1762.3252 317.28577 8423.2256 + 4500 305.53119 -5047.7285 1775.2795 252.98852 11178.338 +Loop time of 15.3536 on 1 procs for 2000 steps with 3872 atoms + +Performance: 11.255 ns/day, 2.132 hours/ns, 130.263 timesteps/s +99.6% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 13.88 | 13.88 | 13.88 | 0.0 | 90.40 +Bond | 0.58065 | 0.58065 | 0.58065 | 0.0 | 3.78 +Neigh | 0.69518 | 0.69518 | 0.69518 | 0.0 | 4.53 +Comm | 0.0826 | 0.0826 | 0.0826 | 0.0 | 0.54 +Output | 0.00053438 | 0.00053438 | 0.00053438 | 0.0 | 0.00 +Modify | 0.07779 | 0.07779 | 0.07779 | 0.0 | 0.51 +Other | | 0.03687 | | | 0.24 + +Nlocal: 3872.00 ave 3872 max 3872 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11670.0 ave 11670 max 11670 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 770032.0 ave 770032 max 770032 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 770032 +Ave neighs/atom = 198.87190 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 35 +Dangerous builds = 0 +Total wall time: 0:00:15 diff --git a/examples/template/log.22Oct20.tmpl-restart-mix.g++.4 b/examples/template/log.22Oct20.tmpl-restart-mix.g++.4 new file mode 100644 index 0000000000..078e7562dc --- /dev/null +++ b/examples/template/log.22Oct20.tmpl-restart-mix.g++.4 @@ -0,0 +1,101 @@ +LAMMPS (22 Oct 2020) + using 1 OpenMP thread(s) per MPI task +# demo for atom style template simulating a cyclohexane methane mixture +# part 3: continuing from restart file + +molecule cychex cyclohexane.mol +Read molecule template cychex: + 1 molecules + 6 atoms with max type 1 + 6 bonds with max type 1 + 6 angles with max type 1 + 6 dihedrals with max type 1 + 0 impropers with max type 0 +read_restart template-mix.restart +Reading restart file ... + restart file = 22 Oct 2020, LAMMPS = 22 Oct 2020 + restoring atom style template from restart + orthogonal box = (-24.000000 -24.000000 -24.000000) to (24.000000 24.000000 24.000000) + 1 by 2 by 2 MPI processor grid + restoring pair style lj/cut from restart + restoring bond style harmonic from restart + restoring angle style harmonic from restart + restoring dihedral style harmonic from restart + 3872 atoms + 3072 template bonds + 3072 template angles + 3072 template dihedrals + read_restart CPU = 0.006 seconds + +thermo 100 + +fix 1 all nvt temp 300.0 300.0 1.0 +Resetting global fix info from restart file: + fix style: nvt, fix ID: 1 +# dump 1 all custom 100 custom template-mix.lammpstrj id xu yu zu +run 2000 +All restart file global fix info was re-assigned +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.193 | 4.289 | 4.575 Mbytes +Step Temp E_pair E_mol TotEng Press + 2500 297.79426 -4928.7403 1686.5107 193.93377 11481.089 + 2600 303.6986 -4872.1658 1620.5986 252.72458 8824.1501 + 2700 296.80713 -4884.3012 1753.5243 293.99628 11523.482 + 2800 298.88856 -4849.1995 1639.5709 239.1615 9214.1261 + 2900 297.12578 -4949.9958 1657.7582 136.2123 10727.69 + 3000 298.19234 -4984.9797 1618.0356 73.812582 9576.9074 + 3100 301.54182 -4999.9775 1588.997 68.424766 9225.9502 + 3200 294.07259 -4962.8351 1646.3012 76.686125 11080.923 + 3300 303.55697 -4900.0696 1721.4077 323.99573 8433.7992 + 3400 297.80636 -5036.3758 1735.0734 135.00054 11440.101 + 3500 303.96121 -4882.4297 1757.4268 382.31908 8497.7685 + 3600 298.21153 -5006.6599 1759.9584 194.27658 11184.938 + 3700 300.77921 -4941.495 1688.3988 217.50964 8820.5666 + 3800 294.33206 -5011.7746 1653.7511 38.190478 10418.208 + 3900 304.38175 -5004.4071 1719.9139 227.68132 9632.0557 + 4000 302.44152 -5029.0544 1610.1577 70.889929 9237.6379 + 4100 298.82638 -4971.4109 1755.8272 232.48883 10814.056 + 4200 297.77273 -5040.0028 1718.5112 114.42322 8287.605 + 4300 300.50984 -5082.4128 1742.354 127.43881 11003.298 + 4400 310.02885 -4971.4191 1749.1209 355.03646 8502.7004 + 4500 302.62639 -5033.3284 1753.488 212.07956 11150.514 +Loop time of 4.39645 on 4 procs for 2000 steps with 3872 atoms + +Performance: 39.304 ns/day, 0.611 hours/ns, 454.913 timesteps/s +98.2% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.6185 | 3.6709 | 3.7028 | 1.7 | 83.50 +Bond | 0.14772 | 0.15338 | 0.1621 | 1.5 | 3.49 +Neigh | 0.17739 | 0.17747 | 0.17756 | 0.0 | 4.04 +Comm | 0.29637 | 0.33265 | 0.39131 | 6.7 | 7.57 +Output | 0.00034028 | 0.0006627 | 0.0016284 | 0.0 | 0.02 +Modify | 0.039076 | 0.041988 | 0.043469 | 0.9 | 0.96 +Other | | 0.01937 | | | 0.44 + +Nlocal: 968.000 ave 977 max 956 min +Histogram: 1 0 0 1 0 0 0 0 0 2 +Nghost: 6322.75 ave 6345 max 6308 min +Histogram: 2 0 0 0 0 1 0 0 0 1 +Neighs: 192555.0 ave 195249 max 188636 min +Histogram: 1 0 0 0 0 1 0 0 1 1 + +Total # of neighbors = 770221 +Ave neighs/atom = 198.92071 +Ave special neighs/atom = 3.9669421 +Neighbor list builds = 34 +Dangerous builds = 0 +Total wall time: 0:00:04 diff --git a/examples/template/molecular-mix.data b/examples/template/molecular-mix.data new file mode 100644 index 0000000000..cd8489b021 --- /dev/null +++ b/examples/template/molecular-mix.data @@ -0,0 +1,17011 @@ +LAMMPS data file via write_data, version 22 Oct 2020, timestep = 2500 + +3872 atoms +2 atom types +3072 bonds +1 bond types +3072 angles +1 angle types +3072 dihedrals +1 dihedral types + +-24.0 24.0 xlo xhi +-24.0 24.0 ylo yhi +-24.0 24.0 zlo zhi + +Masses + +1 14.027 +2 16.043 + +Pair Coeffs # lj/cut + +1 0.118 3.905 +2 0.294 3.73 + +Bond Coeffs # harmonic + +1 260 1.526 + +Angle Coeffs # harmonic + +1 63 112.4 + +Dihedral Coeffs # harmonic + +1 2 1 3 + +Atoms # molecular + +601 101 1 -1.087996679257739 -23.763201727945184 -5.490974874651076 0 0 0 +1968 328 1 17.380864125922855 -0.15934377187330695 -14.282560200070703 0 0 0 +55 10 1 -16.866982326556975 -18.98433242231812 -22.90866336623191 0 0 0 +246 41 1 -22.806791359242165 -18.98834583424509 -16.281238736867802 0 0 0 +247 42 1 -19.510137799931012 -17.185486705325555 -18.071157243319355 0 0 0 +248 42 1 -18.79984986365888 -17.019822149325375 -16.77467894984919 0 0 0 +251 42 1 -18.62361707040709 -19.38459115747375 -18.62342757280935 0 0 0 +252 42 1 -18.882600629495077 -18.001361054570765 -19.144973883717636 0 0 0 +3186 0 2 -21.22745669109329 -21.266969122142054 -19.878139528646663 0 0 0 +60 10 1 -15.395415466645606 -19.221131780547672 -22.85619111204603 0 0 0 +241 41 1 -23.935673819240257 -19.427397922207962 -17.22280988841837 0 0 0 +242 41 1 -23.836382695792274 -18.7238305404957 -18.537564392067694 0 0 0 +202 34 1 -17.483331628128706 -22.812475220445318 -16.792371219338282 0 0 0 +201 34 1 -17.803974109967687 -23.464734674352332 -18.145443117438866 0 0 0 +245 41 1 -22.828303228464268 -17.472037748962585 -16.075425322164204 0 0 0 +50 9 1 -20.69713003436234 -18.62728681403936 -22.608306993429768 0 0 0 +49 9 1 -22.182242902479718 -18.72027939820593 -22.301791681574972 0 0 0 +243 41 1 -23.901616929645385 -17.245058507174978 -18.289085421416747 0 0 0 +244 41 1 -22.789391507315052 -16.76135849977399 -17.41454060515926 0 0 0 +56 10 1 -17.7068102403434 -20.246757409973526 -22.962480599416015 0 0 0 +249 42 1 -18.510430804992005 -18.429220332439286 -16.326039078554427 0 0 0 +213 36 1 -9.667947839697714 -23.48427243724091 -18.885328275738058 0 0 0 +253 43 1 -14.750121847022669 -18.628304400624568 -18.4944504422974 0 0 0 +254 43 1 -14.00058629771486 -19.60577255724529 -17.564782049021023 0 0 0 +255 43 1 -12.858872538936469 -20.345099574994283 -18.27360320529649 0 0 0 +256 43 1 -11.83211898413238 -19.428810691742697 -18.884268362195527 0 0 0 +257 43 1 -12.541605782331942 -18.38969602703497 -19.699082650089927 0 0 0 +258 43 1 -13.72349361700717 -17.64493818142929 -19.02729757663812 0 0 0 +3090 0 2 -15.100820728893705 -21.71982220244612 -20.463684617333826 0 0 0 +3200 0 2 -11.381239138173033 -20.1832538454703 -22.626525775301893 0 0 0 +3219 0 2 -8.682258876040592 -18.496120782614405 -20.82410475255296 0 0 0 +1936 323 1 -12.194622523456982 -0.20118347866627784 -13.1695120505129 0 0 0 +259 44 1 -7.165925126765864 -17.74867118173334 -16.941784830854804 0 0 0 +214 36 1 -9.341577598320452 -22.050457402654775 -18.593392620105416 0 0 0 +215 36 1 -8.320929498181668 -21.941200336792615 -17.465303737823913 0 0 0 +61 11 1 -12.966406097646843 -15.30217974838865 -22.100236587455328 0 0 0 +611 102 1 6.360223149410101 -23.860558575673924 -7.864752127966078 0 0 0 +22 4 1 -5.842179102156164 -20.53535840131634 -22.765033123149024 0 0 0 +173 29 1 -0.5370613619664923 -4.9360339593366485 -23.726847626387368 0 0 0 +261 44 1 -6.0166886790472605 -19.60877926086168 -15.601383432708866 0 0 0 +262 44 1 -4.85752963485734 -18.678548621882904 -15.633806955292984 0 0 0 +263 44 1 -4.573456788344714 -18.1772516140454 -17.055476170148122 0 0 0 +264 44 1 -5.871053726784158 -17.795151562011334 -17.81837855265885 0 0 0 +265 45 1 -0.3415154002329032 -19.053384274393817 -19.432560490518505 0 0 0 +270 45 1 -1.4874667789129568 -18.272225231860986 -19.894267009425484 0 0 0 +3118 0 2 -4.550548680875299 -15.189775237114107 -20.331599638151776 0 0 0 +3141 0 2 -3.9577121932900687 -20.84697156647984 -19.565965306216537 0 0 0 +21 4 1 -6.467204063809296 -21.427986119678625 -21.71219426266251 0 0 0 +20 4 1 -7.72689608560336 -22.070504667468942 -22.23079911251494 0 0 0 +30 5 1 -1.6041541039814942 -21.931404511677535 -21.83247938814364 0 0 0 +268 45 1 -1.2732687147579924 -17.312401734430924 -17.579855679378014 0 0 0 +269 45 1 -1.6165820312459187 -17.033148306412524 -19.076638610350905 0 0 0 +29 5 1 -0.46404077514530434 -21.07465420086968 -22.403565328008984 0 0 0 +1963 328 1 18.43769171151929 -0.0831859955728953 -13.176148774585736 0 0 0 +3387 0 2 -3.3998662302083926 -16.85329030197125 -23.300981819542507 0 0 1 +23 4 1 -5.454235846684014 -21.340560923721643 -23.976165374668447 0 0 0 +216 36 1 -7.098313501631894 -22.750742053702062 -17.813317197504322 0 0 0 +19 4 1 -7.377298017083007 -22.94738103460055 -23.390877963430118 0 0 0 +54 9 1 -22.931352492234147 -17.544835047773976 -22.921620816312895 0 0 0 +266 45 1 0.6980219425397892 -18.162048873412452 -18.886225035550094 0 0 0 +267 45 1 0.26595150262207995 -17.359569071229497 -17.664910149951677 0 0 0 +79 14 1 5.8741506955977885 -18.446790454803082 -21.703055391090672 0 0 0 +80 14 1 5.687788172072199 -17.030894559763393 -21.171725973998473 0 0 0 +81 14 1 7.116603889315563 -16.40994072665067 -20.989702082026174 0 0 0 +222 37 1 0.6758323416490015 -22.600260539739075 -18.548375079038262 0 0 0 +225 38 1 5.254485651890854 -21.515400730418733 -18.519407869210742 0 0 0 +226 38 1 6.418571701895713 -21.61814820897104 -19.459840620323675 0 0 0 +271 46 1 4.434054454359018 -17.526838973270586 -17.829487289496445 0 0 0 +273 46 1 4.865080495268602 -19.171436832465673 -16.00956473331422 0 0 0 +274 46 1 5.969192228408781 -18.261777823533073 -15.441563020560546 0 0 0 +275 46 1 6.570845087618996 -17.299715634005043 -16.48431158528889 0 0 0 +276 46 1 5.50532537142453 -16.574881947128738 -17.252677157653128 0 0 0 +3238 0 2 2.2610533270295767 -18.861237180451962 -23.05147465201366 0 0 0 +227 38 1 7.134581143764301 -22.982099265665976 -19.339688130015553 0 0 0 +82 14 1 8.052142094833908 -16.569402757797388 -22.14414507386909 0 0 0 +28 5 1 0.6844778405120807 -21.95099554954969 -22.891361325981272 0 0 0 +236 40 1 15.739857956901547 -22.96165122592697 -16.787421489213028 0 0 0 +217 37 1 -0.6652384241691073 -22.03092259031455 -17.880718229160493 0 0 0 +272 46 1 3.7971732253740123 -18.419666725590606 -16.771968092256742 0 0 0 +34 6 1 5.158072179904194 -21.767869477588544 -23.12315864196337 0 0 0 +2156 360 1 17.47768552584836 -4.4486969106917185 -5.828422921362608 0 0 0 +152 26 1 -18.39632920112078 -9.27526552315686 -23.421911456799414 0 0 0 +231 39 1 12.25676007445503 -21.893431271754103 -16.78745014688939 0 0 0 +277 47 1 10.389251787335038 -19.33132400794079 -20.861527632905865 0 0 0 +278 47 1 9.092927260776849 -19.70524290938632 -20.180675084737832 0 0 0 +279 47 1 9.302584722613743 -19.567579178389437 -18.701164796061303 0 0 0 +280 47 1 9.77543549795247 -18.17595372823452 -18.315972673304923 0 0 0 +281 47 1 11.02430824123047 -17.86369238781503 -19.061670512890547 0 0 0 +282 47 1 10.879990564565547 -17.938929764319628 -20.562012619752966 0 0 0 +3211 0 2 14.065492375035898 -20.661015810547724 -20.728296389393304 0 0 0 +284 48 1 15.231927541354898 -15.791262110203492 -17.817130132179464 0 0 0 +86 15 1 13.439646410707258 -17.441885901449854 -22.665529745543463 0 0 0 +38 7 1 10.110834389959845 -23.0387815148242 -21.51029924164808 0 0 0 +285 48 1 14.55118883890318 -16.961195057078406 -18.46670970502327 0 0 0 +286 48 1 14.176686125020609 -18.0343705402523 -17.436053815580443 0 0 0 +237 40 1 15.369940541364391 -23.276616720543114 -18.22639235847418 0 0 0 +232 39 1 11.6396408028552 -22.21558099548064 -18.110896900872095 0 0 0 +2157 360 1 18.613885066220433 -3.8522769051256023 -6.5942332465300435 0 0 0 +39 7 1 10.779651487722326 -22.46184464628643 -22.74098074577196 0 0 0 +3139 0 2 23.847062853540198 -22.25191712207437 -21.288428368099787 0 0 0 +283 48 1 16.405772165754865 -16.286824861029057 -17.036763128287767 0 0 0 +94 16 1 17.877878854889133 -18.98750300036896 -20.68469044128161 0 0 0 +95 16 1 17.58692047460557 -19.022780192993128 -22.16921733738069 0 0 0 +96 16 1 18.53171036222113 -18.098867723459932 -22.91543973020495 0 0 0 +238 40 1 16.54136785640678 -23.51887026859318 -19.109922727315986 0 0 0 +239 40 1 17.608020097857967 -22.468107660523728 -18.777255256729845 0 0 0 +287 48 1 15.372652959110289 -18.522180955594415 -16.648583499404015 0 0 0 +288 48 1 16.0362304554089 -17.335051884450777 -15.98941926697816 0 0 0 +3198 0 2 20.487394345636474 -21.063364774927166 -21.07849567808329 0 0 0 +44 8 1 17.17479777830636 -22.450691450124584 -22.868381301402835 0 0 0 +93 16 1 18.063199997350164 -17.60230709533651 -20.055414756514804 0 0 0 +240 40 1 18.095788573126793 -22.532340767651228 -17.347634274143854 0 0 0 +92 16 1 18.889689415612544 -16.631567402170063 -20.928419064597342 0 0 0 +91 16 1 18.478270773044283 -16.645880913996926 -22.378365104326097 0 0 0 +235 40 1 16.93525561339629 -22.028328398413574 -16.53830742962036 0 0 0 +3084 0 2 22.259525752984413 -16.48716996864971 -21.358215140424694 0 0 0 +3089 0 2 20.327104472084745 -16.099808637910183 -17.94701996375636 0 0 0 +3120 0 2 20.06922282039731 -19.499947205768546 -17.04685001545412 0 0 0 +83 14 1 7.985091637532755 -17.896151023249757 -22.88706763377447 0 0 0 +174 29 1 -0.48029633048382026 -3.657649574528279 -22.984517793925303 0 0 0 +198 33 1 23.238595553485773 -23.00554940687877 -17.756920321457486 -1 0 0 +2330 389 1 -1.813951132596185 -1.5944158126940604 -0.2806261803029715 0 0 0 +193 33 1 -23.459457020663752 -23.754090564783578 -17.877777224890803 0 0 0 +2113 353 1 22.881563111854355 -0.5435154145274035 -5.646945448091273 -1 0 0 +294 49 1 -23.92686631539383 -11.065962756783737 -18.806652165021923 0 0 0 +295 50 1 -17.258700357448415 -11.2082778586503 -17.733796540391005 0 0 0 +296 50 1 -17.557715308425948 -12.587571908851285 -18.302246849859976 0 0 0 +297 50 1 -18.24803365326155 -13.387845144883585 -17.263962524387246 0 0 0 +298 50 1 -19.58757975702388 -12.757274031109736 -16.91752439667696 0 0 0 +299 50 1 -19.516178515933248 -11.318147926520458 -16.578936348507245 0 0 0 +300 50 1 -18.630381149116896 -10.578526872521108 -17.5934284431579 0 0 0 +3105 0 2 -20.651600357185625 -15.038123991759274 -20.39082951146351 0 0 0 +3196 0 2 -15.600726595285646 -10.412086114910554 -21.093959751612303 0 0 0 +98 17 1 -21.985008755344847 -12.822499370927211 -23.9010611576017 0 0 0 +3075 0 2 -20.052733912074434 -11.721833859443594 -21.09200866128642 1 0 0 +3241 0 2 -23.11441896687447 -9.470419664944107 -22.723393746221802 0 0 0 +3251 0 2 -20.705065919203157 -8.319353974987896 -19.482461700727452 0 0 0 +289 49 1 -23.585045593795986 -12.142076423334927 -17.83400054712067 0 0 0 +153 26 1 -19.521409862412053 -8.321930346634998 -22.9980370581515 0 0 0 +290 49 1 -23.226357926856853 -13.425725586832588 -18.553748270811116 0 0 0 +104 18 1 -18.51628475226044 -14.849281256352375 -23.80339991748723 0 0 0 +114 19 1 -13.369841118546399 -10.56946056953362 -23.874640090035808 0 0 0 +64 11 1 -10.345592765296546 -15.0266575138332 -23.492690694223707 0 0 0 +3152 0 2 -8.725059710527066 -15.141279834093076 -19.310014914458243 0 0 0 +301 51 1 -11.895172932446377 -10.756310786132511 -17.46716055427971 0 0 0 +302 51 1 -11.133494858999732 -11.539931047068025 -18.51215886434899 0 0 0 +303 51 1 -11.850075769756938 -12.835032548858191 -18.87220319506992 0 0 0 +304 51 1 -13.241500501973897 -12.611607231151222 -19.401985371523224 0 0 0 +305 51 1 -13.965400295049237 -11.948343081425987 -18.262626879269163 0 0 0 +306 51 1 -13.362566410924657 -10.60944359266915 -17.934471890403437 0 0 0 +3091 0 2 -16.69068769849511 -15.247439791818989 -20.586379268041803 0 0 0 +3216 0 2 -11.832131027433219 -8.340666021104619 -20.337332918163455 0 0 0 +3195 0 2 -8.489056373444964 -8.650793309950053 -21.26076699397582 0 0 0 +62 11 1 -12.392389566206816 -13.939088168679612 -22.417662889747177 0 0 0 +3221 0 2 -15.049351030176991 -15.33667467782304 -16.333917851423863 0 0 0 +63 11 1 -10.883719128290018 -13.988364895316566 -22.49292082195837 0 0 0 +109 19 1 -11.900164960665416 -10.739099665219834 -23.569630176873623 0 0 0 +77 13 1 -0.43712604234448804 -13.57214592880892 -23.90031957156992 0 0 0 +3128 0 2 -7.4636313231024785 -12.237399047655414 -22.115766037080945 0 0 0 +3154 0 2 -1.3509165892422812 -12.871229640809336 -18.80877596229653 0 0 0 +617 103 1 11.8305822704063 -23.64581378108964 -7.10499607895913 0 0 0 +312 52 1 -7.3781108864199805 -10.5744977388174 -18.201668824818288 0 0 0 +124 21 1 -0.1685293806850675 -9.69427036751694 -23.307301327697 0 0 0 +307 52 1 -6.252831547393708 -9.628863666590867 -18.597028690446944 0 0 0 +308 52 1 -4.991999257369774 -10.323709162838673 -19.11443438297379 0 0 0 +309 52 1 -4.535283485217648 -11.404424737913885 -18.170016372527144 0 0 0 +310 52 1 -5.639611934679096 -12.391447017350737 -18.030455523194217 0 0 0 +311 52 1 -6.810334208626394 -11.733226624872048 -17.38777402356823 0 0 0 +3159 0 2 -1.003143130328786 -9.833565633729584 -16.82948525528399 0 0 0 +3169 0 2 -3.9169432518958525 -10.748755407916313 -22.59203448782904 0 0 0 +123 21 1 -0.9766990636154512 -8.96671588696572 -22.265130926299364 0 0 0 +595 100 1 -5.815761427896031 -23.517298223790213 -6.073240666479942 0 0 0 +25 5 1 -2.1691457676894967 -22.864236170977566 -22.937860357499268 0 0 0 +74 13 1 0.047096117785685274 -16.2850081004622 -22.76437915134053 0 0 0 +75 13 1 -0.5574087783740891 -15.186683627863525 -21.960420658291 0 0 0 +76 13 1 -1.3328887873671507 -14.203047694488712 -22.811965342444733 0 0 0 +122 21 1 -0.17965589639253404 -8.562455551904659 -21.04161996553083 0 0 0 +121 21 1 1.0747239838641558 -7.765746002545886 -21.40754014187618 0 0 0 +3106 0 2 2.598970370671464 -15.346455237978034 -20.186333889021 0 0 0 +131 22 1 6.09269581436696 -11.889786289128583 -22.94074628820554 0 0 0 +132 22 1 6.542063277837234 -13.247382990857101 -23.469743406070354 0 0 0 +319 54 1 6.450833466818098 -12.2851086902156 -19.400439387358688 0 0 0 +320 54 1 7.882316136430194 -11.867070198111977 -19.117455383789057 0 0 0 +321 54 1 7.896674492488535 -10.399500197233673 -18.803329973663715 0 0 0 +322 54 1 7.030428211399611 -10.102093120337415 -17.635358833668178 0 0 0 +323 54 1 5.603206184975172 -10.410627731416326 -17.991652749681723 0 0 0 +324 54 1 5.548247352632631 -11.897915958702812 -18.22298177629746 0 0 0 +3181 0 2 1.7397906245324661 -11.401219638700642 -20.264643416582025 0 0 0 +127 22 1 5.391449401960421 -14.234635867045027 -23.225530382845772 0 0 0 +130 22 1 4.800347365420875 -11.44467213237242 -23.59322374838858 0 0 0 +599 100 1 -5.903949449487669 -23.316072245894837 -3.491554095524493 0 0 0 +126 21 1 1.9433094247266065 -8.624609533180994 -22.366552330820596 0 0 0 +2315 386 1 -16.57695964331577 -0.8877965960781271 -2.1853412878898486 0 0 0 +3110 0 2 9.687618581472604 -14.411288316859347 -16.73218021942933 0 0 0 +325 55 1 11.84604905279261 -9.130374193588962 -18.847185336893624 0 0 0 +326 55 1 11.950156194476717 -10.223862427185008 -19.93609009810572 0 0 0 +327 55 1 12.748378842595331 -11.477869482045808 -19.46558426690787 0 0 0 +328 55 1 12.184565155871633 -12.04321298294691 -18.207931851409764 0 0 0 +329 55 1 12.150154422331775 -10.994473467102857 -17.110991475498874 0 0 0 +330 55 1 11.347231636720103 -9.750225255546173 -17.530662851259855 0 0 0 +3111 0 2 15.516787988008323 -14.466267653429671 -21.20912561873173 0 0 0 +3127 0 2 15.476708728390546 -10.084064729879048 -21.293142149107712 0 0 0 +3184 0 2 15.022197627674288 -8.469245466029335 -17.839894255320925 0 0 0 +3206 0 2 10.380692039234162 -13.77019945665642 -21.08998491521806 0 0 0 +3199 0 2 8.924621176668623 -9.671068291463678 -21.957795609519067 0 0 0 +33 6 1 4.824570385190625 -23.202724089143643 -22.814984973276704 0 0 0 +2118 353 1 21.89194493567448 -0.153620958594776 -6.712402746996115 -1 0 0 +40 7 1 9.758624765316531 -22.135597934480412 -23.795214708577294 0 0 0 +293 49 1 22.95124181381819 -11.488356619688432 -19.702319940926312 -1 0 0 +97 17 1 -23.309637015229885 -13.576368060506931 -23.84157743503899 0 0 0 +332 56 1 16.93634265601097 -12.920452425895762 -18.27381307717419 0 0 0 +139 24 1 19.60521980481797 -12.472387710070441 -23.562280587439442 0 0 0 +140 24 1 18.581268843435023 -11.415525744721757 -23.233413615984478 0 0 0 +2325 388 1 -5.386919764005071 -0.3255277817733274 -1.1863733590276373 0 0 0 +291 49 1 23.671535184939962 -13.867902187168506 -19.491067696990164 -1 0 0 +292 49 1 23.36372293420486 -12.73742901591861 -20.47216625188533 -1 0 0 +331 56 1 18.212890365442114 -13.506976044856245 -18.847375933200592 0 0 0 +333 56 1 17.212430342679284 -11.645061984855479 -17.443875465234328 0 0 0 +334 56 1 17.94371556661538 -10.54449527434601 -18.192637070804867 0 0 0 +335 56 1 19.223680110066546 -11.21500254308691 -18.7222855740051 0 0 0 +336 56 1 19.00100761066163 -12.458121911467439 -19.587544460656083 0 0 0 +3173 0 2 21.49614482872641 -9.16621562049908 -22.268413073601813 0 0 0 +795 133 1 1.1611230315936325 -23.480909276627408 -0.6048971839331866 0 0 0 +764 128 1 19.967384659172556 -6.662788856417323 -3.6270310195103543 0 0 0 +1547 258 1 -17.58961373471324 -0.04350398099598735 -23.068843887419817 0 0 0 +147 25 1 -22.34448960687321 -4.920816685290833 -21.959883052441057 0 0 0 +344 58 1 -17.613571617531612 -5.148576351700703 -17.86717011992375 0 0 0 +345 58 1 -17.083275323260356 -4.443995919140898 -19.14715966269285 0 0 0 +346 58 1 -16.925819043858592 -5.391661373187259 -20.362308764425887 0 0 0 +347 58 1 -16.038318543990886 -6.544065747158439 -19.94044093768304 0 0 0 +348 58 1 -16.609342332912544 -7.317534583918468 -18.80320367506517 0 0 0 +1546 258 1 -18.31670303931481 -1.3797474197215052 -22.959888736820208 0 0 0 +3229 0 2 -20.54174115494792 -2.905673107446546 -19.11502906991983 0 0 0 +148 25 1 -22.1013531370462 -3.619422036382568 -22.740113874479707 0 0 0 +343 58 1 -16.724871311541982 -6.3608743158231 -17.655358968707866 0 0 0 +1765 295 1 10.551613019142437 -0.4716154892784534 -17.681937137823805 0 0 0 +146 25 1 -23.500982761834873 -5.734516096213225 -22.52364496929881 0 0 0 +387 65 1 23.87687008971806 -23.89505692539043 -11.253190967487164 -1 0 0 +1740 290 1 -16.244294065789905 -0.46269704226216224 -20.049151907517494 0 0 0 +1744 291 1 -9.522957320662846 -2.8321935159494305 -17.656292511593634 0 0 0 +3182 0 2 -13.248362585145282 -7.198564085594576 -17.3451951874102 0 0 0 +3158 0 2 -14.040573452253051 -7.054570775272596 -22.675682874306712 0 0 0 +349 59 1 -11.136486609285669 -2.6275058597552317 -22.209881520357833 0 0 0 +350 59 1 -12.343319870882723 -1.9938482427759423 -21.54465153392769 0 0 0 +351 59 1 -13.386981488804413 -3.081603495047045 -21.419413158193475 0 0 0 +352 59 1 -12.877128320349989 -4.302537987944108 -20.624258718471154 0 0 0 +353 59 1 -11.605747080971058 -4.849825266912996 -21.20657572778943 0 0 0 +354 59 1 -10.567675353318483 -3.7628484090577468 -21.339598689169136 0 0 0 +1741 291 1 -12.167709793941615 -1.780273907947206 -16.850443787541227 0 0 0 +163 28 1 -7.4160593726853685 -4.460924129338808 -23.75055526276982 0 0 0 +355 60 1 -9.080968757280345 -7.611054794852567 -16.79735105441277 0 0 0 +360 60 1 -8.88479065139087 -6.744655543723828 -18.006705326788055 0 0 0 +1743 291 1 -10.739803303634327 -3.7628072197109037 -17.478127081820492 0 0 0 +359 60 1 -7.43595798100409 -6.284959237867622 -18.056153501712387 0 0 0 +1742 291 1 -11.803856310467852 -3.211446831247152 -16.516285419343408 0 0 0 +2114 353 1 -23.666229384621925 -0.7596867150905211 -6.171136752817361 0 0 0 +1745 291 1 -9.970731377788015 -1.384434472901262 -17.858761987275408 0 0 0 +1746 291 1 -10.960848993415992 -0.8947170350134978 -16.76294713577132 0 0 0 +169 29 1 -1.6020839932244728 -2.7651195953589256 -23.49860763389197 0 0 0 +3263 0 2 -3.4825678388854975 -7.2360113625617215 -19.760471106032707 0 0 0 +164 28 1 -7.5342628989869596 -5.520781386395288 -22.665536707965202 0 0 0 +172 29 1 -1.7802227701519906 -5.706653957684616 -23.380821754260015 0 0 0 +166 28 1 -6.443177944769098 -3.975273048683047 -20.95850708958942 0 0 0 +165 28 1 -6.5103182924013705 -5.348686554754282 -21.574536684136252 0 0 0 +168 28 1 -7.371886629962083 -3.0716976352039493 -23.127230185044663 0 0 0 +357 60 1 -7.150385706478865 -6.413182413921243 -15.565470990056333 0 0 0 +358 60 1 -6.941792996227384 -5.5825597978634285 -16.798936326372928 0 0 0 +361 61 1 -0.5830776533632546 -4.519105788026014 -19.460483436473798 0 0 0 +365 61 1 -0.6765464309195843 -5.631229737229268 -17.251504224168144 0 0 0 +1747 292 1 -3.5387072750069146 -1.1825349057271388 -19.597478683352946 0 0 0 +1751 292 1 -4.954299824912713 -2.414424419259803 -17.77105265611548 0 0 0 +1752 292 1 -3.5951837665500297 -1.8852807595941266 -18.25911279442825 0 0 0 +170 29 1 -2.8737010878246263 -3.4100288259604836 -22.988367327262793 0 0 0 +171 29 1 -3.034730350937003 -4.815877509055233 -23.57336509649446 0 0 0 +362 61 1 -0.16688660238041245 -3.2263064033119075 -18.75909890666203 0 0 0 +363 61 1 -0.6424227230562658 -3.1836484698345355 -17.311026461140308 0 0 0 +167 28 1 -6.291889927507257 -2.924866940256142 -22.065811663694532 0 0 0 +364 61 1 -0.13386723035064782 -4.3843916164370915 -16.561510150084615 0 0 0 +2331 389 1 -0.3695431607287928 -1.38686683974977 -0.01715545477467575 0 0 0 +1769 295 1 12.835886126103393 -0.14452121175301424 -18.66758543411578 0 0 0 +1750 292 1 -5.881004475361282 -1.212916376900978 -17.684202208625965 0 0 0 +3162 0 2 3.2939729432740226 -7.687942118854753 -18.419667803100488 0 0 0 +3308 0 2 5.321272263609466 -8.523615419209026 -21.28436690630209 0 0 1 +366 61 1 -0.13188974010422816 -5.679113681723753 -18.630322411421925 0 0 0 +370 62 1 8.305534997775151 -4.819249371564056 -16.97828421868991 0 0 0 +1760 294 1 4.873202931764606 -1.188903397915058 -18.92157735983211 0 0 0 +1761 294 1 6.220180429409011 -1.6747776603783116 -18.44983672441239 0 0 0 +3201 0 2 2.677827596813606 -2.233677785425361 -21.312727344951988 0 0 0 +3247 0 2 3.2687166927876063 -4.152827758569936 -17.189643742296894 0 0 0 +3253 0 2 5.608103414789173 -4.702455301045534 -20.0329540127198 0 0 0 +3512 0 2 7.424479594858641 -1.5415892546660277 -21.52835103323925 0 0 0 +151 26 1 -17.13639746476139 -8.467438337380704 -23.85872121607272 0 0 0 +1967 328 1 16.075727645415068 -0.7572764477961614 -13.824641176814714 0 0 0 +3375 0 2 3.5460761016980675 -5.068032105028075 -23.50574078419801 0 0 1 +176 30 1 8.128208607254853 -6.387489646622245 -23.263787349840623 0 0 0 +2145 358 1 5.361460339280895 -0.04082426363806255 -7.93867722941194 0 0 0 +184 31 1 14.140242946899264 -6.694640206435025 -23.42031679792691 0 0 0 +368 62 1 8.425674695425865 -6.692153278707812 -18.549202389107815 0 0 0 +369 62 1 8.630223247454328 -6.284975412530915 -17.08970687345479 0 0 0 +371 62 1 9.287884680123062 -4.002634648272004 -17.794192729987437 0 0 0 +1577 263 1 13.10254166164114 -0.9562373442479447 -22.242738928783126 0 0 0 +1575 263 1 12.845401145347825 -3.411918192453834 -22.372713145477757 0 0 0 +367 62 1 9.364638476191555 -5.877543162192374 -19.405464256526052 0 0 0 +372 62 1 9.212764141544323 -4.356883810125803 -19.254035856010958 0 0 0 +1578 263 1 11.602259722834157 -0.8799517283678984 -22.251485548298298 0 0 0 +1748 292 1 -4.546027989765392 -0.05547850407583511 -19.525385941386666 0 0 0 +182 31 1 11.702112059510673 -7.18420971170296 -22.77208756047905 0 0 0 +781 131 1 -9.632455007408351 -23.60928003044595 -0.625971287368069 0 0 0 +373 63 1 12.195252681251375 -5.146486917980029 -15.597037795596666 0 0 0 +374 63 1 12.724396650800394 -5.779646681009837 -16.869380372302267 0 0 0 +375 63 1 12.92283658739014 -4.782506364710178 -17.966342603599212 0 0 0 +376 63 1 13.819372101416876 -3.660110082118929 -17.427418183205866 0 0 0 +1573 263 1 10.986186715348566 -2.0599137547536785 -22.92429543463961 0 0 0 +763 128 1 20.773115058986367 -7.567721301570857 -2.6983041994511545 0 0 0 +84 14 1 6.583340951999972 -18.471878841692106 -23.026228165763868 0 0 0 +105 18 1 -18.089511232472628 -13.565527311784994 -23.138922247815575 0 0 0 +183 31 1 13.189865711825098 -7.163629689917664 -22.29283140855887 0 0 0 +1574 263 1 11.388766656891944 -3.2420456369108615 -22.138082182683274 0 0 0 +1576 263 1 13.507190180336456 -2.291059410709925 -21.64304119409922 0 0 0 +1772 296 1 17.084658072291404 -1.1942333981305167 -17.864406671045767 0 0 0 +379 64 1 17.428847069958096 -6.513724457391349 -21.76870355847156 0 0 0 +341 57 1 21.43977548614606 -6.12958449742299 -17.621316027655702 -1 0 0 +3132 0 2 23.610348766618504 -1.263743399896759 -19.650724623298828 -1 0 0 +340 57 1 21.50557601084936 -7.566966192043195 -18.053288529279275 -1 0 0 +1771 296 1 17.85400509869887 -1.1343305721474441 -19.169409344191454 0 0 0 +342 57 1 22.236335148471603 -5.128269497997493 -18.335056092328678 -1 0 0 +337 57 1 23.692048903146297 -5.394304678048751 -18.277825321107173 -1 0 0 +338 57 1 23.970419298105107 -6.971461287611298 -18.21705033302095 -1 0 0 +339 57 1 22.787533858826635 -7.8220766766301795 -18.833813371042197 -1 0 0 +380 64 1 17.390091699425586 -5.11331642824407 -21.261871319640317 0 0 0 +381 64 1 17.04030791516189 -5.167143141065854 -19.749894579414626 0 0 0 +382 64 1 18.059991271674907 -5.891335532649512 -18.86294116005223 0 0 0 +383 64 1 18.217208029680588 -7.267807348227416 -19.35044460961872 0 0 0 +384 64 1 18.44644590543754 -7.240401528458554 -20.872081216710015 0 0 0 +1773 296 1 17.19244127180022 -2.480023895928761 -17.072703255880658 0 0 0 +3081 0 2 21.49061846349289 -3.6456468777997544 -21.91474358199003 0 0 0 +1774 296 1 18.678903663917104 -2.708190721084283 -16.98522507441636 0 0 0 +1776 296 1 19.31371550001193 -1.4155307812215618 -19.016897755409428 0 0 0 +1775 296 1 19.440911025685033 -2.7312676956858195 -18.316725886114195 0 0 0 +1583 264 1 18.728384226196916 -1.422824115615145 -23.285947594074 0 0 0 +1542 257 1 23.55662609583295 -1.1442949142018217 -23.96806262348533 -1 0 0 +203 34 1 -18.81351861035727 -22.39718383233431 -16.08706627618667 0 0 0 +73 13 1 0.9289153400827244 -15.77443430472925 -23.862633100385946 0 0 0 +250 42 1 -17.838159243357456 -19.361012050753114 -17.332485246868817 0 0 0 +204 34 1 -19.818836015437068 -23.604288827971835 -16.05030941126789 0 0 0 +389 65 1 -22.85363854702536 -22.466354730663117 -9.670141407641546 0 0 0 +388 65 1 -22.812463123591645 -23.730873353038383 -10.432083776143164 0 0 0 +439 74 1 -19.263085981318056 -21.413505679768456 -11.288044593450643 0 0 0 +440 74 1 -19.031745511092705 -20.892419043244843 -12.69814815432086 0 0 0 +441 74 1 -20.009336100851705 -19.804131749635705 -13.062544053987061 0 0 0 +442 74 1 -19.850897719387486 -18.63317870810817 -12.15112629732015 0 0 0 +443 74 1 -20.093463363684567 -18.985179394170856 -10.712262607163783 0 0 0 +444 74 1 -19.224656623700323 -20.17135784400995 -10.39052123147204 0 0 0 +3087 0 2 -22.487860972038106 -22.006494008569955 -13.832201231968499 0 0 0 +437 73 1 23.74097480560941 -17.078083222744535 -12.259123526099296 -1 0 0 +3179 0 2 -16.331676184901426 -18.090704461042588 -9.297218742603956 0 0 0 +3095 0 2 -15.48863454370277 -21.61260081547339 -7.751681152171642 0 0 0 +3672 0 2 -11.2583520688076 -20.63312925447694 -14.81154251544667 0 1 0 +398 67 1 -13.4640318439818 -23.727753970827642 -9.700023398914459 0 0 0 +399 67 1 -12.41431044423431 -22.804182054687136 -10.235995388577617 0 0 0 +400 67 1 -11.960407790527356 -23.246079704330835 -11.651574542485658 0 0 0 +445 75 1 -14.473181235234692 -18.542667943559465 -12.594816345621073 0 0 0 +446 75 1 -14.036904176892108 -19.89709478187995 -11.941494382531719 0 0 0 +447 75 1 -15.118038155093924 -20.937518531298554 -12.304317278303579 0 0 0 +448 75 1 -15.261045541354594 -20.99780494761172 -13.781144516274965 0 0 0 +449 75 1 -15.683145714516984 -19.725437681170447 -14.54496936301172 0 0 0 +450 75 1 -14.70290276507165 -18.599996996124464 -14.132526848152859 0 0 0 +451 76 1 -9.780532566699048 -18.536359536914098 -12.646429200410696 0 0 0 +452 76 1 -10.647237816280972 -19.262659746641813 -11.680893982304822 0 0 0 +453 76 1 -9.818335240686652 -20.05955416341959 -10.688677456554542 0 0 0 +3166 0 2 -12.709306214798186 -17.562522078591588 -9.39318813186229 0 0 0 +87 15 1 12.335012597109648 -16.86636732280074 -23.516829443149124 0 0 0 +260 44 1 -7.246178274009648 -18.768209097649144 -15.752686446845146 0 0 0 +3150 0 2 -8.248667587534769 -22.65054344690547 -9.191411386195748 0 0 0 +3246 0 2 -4.021602545032833 -20.650055062383878 -12.578162820540287 0 0 0 +406 68 1 -7.229376017507727 -23.842067111312637 -12.347540168887063 0 0 0 +414 69 1 -0.38899995918695324 -23.1622940411335 -13.134137308469958 0 0 0 +454 76 1 -8.839670732275472 -19.09607878303623 -10.046801549590581 0 0 0 +455 76 1 -7.914970848863158 -18.338904937834513 -11.029536490776474 0 0 0 +456 76 1 -8.838045207369069 -17.592124180597413 -11.945433454503455 0 0 0 +457 77 1 -0.8991759219366713 -18.464743740086103 -11.855311848001321 0 0 0 +461 77 1 -3.2547476001329674 -17.63455614246586 -11.169474666039443 0 0 0 +462 77 1 -1.814221929787692 -17.951408569510697 -10.772463243790824 0 0 0 +723 121 1 22.001366943963767 -5.853606043539047 -7.164674419316529 -1 0 0 +458 77 1 -0.9452137705740319 -17.496444498378853 -13.004064014548689 0 0 0 +459 77 1 -2.3134991312475672 -16.96781168534673 -13.419319053682056 0 0 0 +460 77 1 -3.259503848290999 -16.608345163363513 -12.310007353851049 0 0 0 +407 68 1 -7.952955557395577 -23.1089893853174 -13.499918817483163 0 0 0 +3189 0 2 -1.367605916676435 -20.36609427488211 -15.053102729670139 0 0 0 +409 69 1 -1.863013343271443 -23.299728209193148 -13.328425749622221 0 0 0 +648 108 1 -6.019355496845389 -19.271341313055576 -7.018252630493478 0 0 0 +647 108 1 -5.770719917437337 -19.844602999105525 -8.366859047033243 0 0 0 +3142 0 2 7.3686239251959424 -23.48444482815327 -15.20229079990514 0 0 0 +3121 0 2 -0.007553937584562694 -21.53357166936676 -9.482956902208015 0 0 0 +3100 0 2 2.3710450956706537 -20.593938225818274 -13.173282165249798 0 0 0 +880 147 1 -9.865750736565214 -14.975125283797993 -0.5160634173666355 0 0 0 +888 148 1 -5.558319411132885 -9.611248537686361 -0.7105054626398256 0 0 0 +463 78 1 6.66187284859289 -18.49478450338521 -11.364279649057844 0 0 0 +465 78 1 6.255473213018999 -19.437474414428742 -9.061446689284503 0 0 0 +466 78 1 6.0933005426896765 -20.78805247655847 -9.696662023575355 0 0 0 +467 78 1 5.657024095571625 -20.672483035079612 -11.154319046370004 0 0 0 +468 78 1 6.606130121957446 -19.86033756907609 -11.98398596258487 0 0 0 +3107 0 2 2.6765769961682637 -18.10288900169873 -9.984030865966432 0 0 0 +3131 0 2 3.7510791628389555 -15.990588462832344 -13.369265179654851 0 0 0 +464 78 1 7.196900936961058 -18.59630456202728 -9.914144818836878 0 0 0 +66 11 1 -12.451059327569155 -16.30726561324621 -23.093495446636364 0 0 0 +230 39 1 11.624452922928596 -22.6493230570278 -15.624750100140828 0 0 0 +3155 0 2 9.377682439004943 -20.31612454825073 -15.015657927456665 0 0 0 +426 71 1 14.428783080028795 -23.389384984814594 -11.683132937498918 0 0 0 +3145 0 2 10.947712593334769 -19.616444129880364 -10.298602843243268 0 0 0 +3220 0 2 12.713130999431538 -18.038325767466432 -13.728051773715073 0 0 0 +3192 0 2 9.441017903025744 -17.014986250363755 -13.729194461461221 0 0 0 +3261 0 2 15.565836186981237 -21.460103538508392 -8.947035544740297 0 0 0 +3077 0 2 8.808321484633893 -22.538704108230466 -10.964568097007861 0 0 0 +470 79 1 14.948198744463408 -14.830139056462269 -8.916334081677807 0 0 0 +471 79 1 14.475442277622497 -16.230407575957717 -8.663388601949727 0 0 0 +472 79 1 14.048592923947952 -16.930636738154835 -9.922257961600186 0 0 0 +197 33 1 22.644640218776743 -23.329470904269378 -16.410387151372728 -1 0 0 +65 11 1 -10.920973509869983 -16.381201972456747 -23.140539683228727 0 0 0 +390 65 1 23.901523057652717 -22.35314633644144 -8.805735309064653 -1 0 0 +438 73 1 22.765038899855487 -17.801921791705233 -13.154512902041638 -1 0 0 +433 73 1 22.952264213044845 -19.321096211989573 -13.194131685305331 -1 0 0 +435 73 1 -23.82398228844999 -19.184324798651172 -10.973206574462262 0 0 0 +3209 0 2 16.159903023750186 -19.84710969530698 -13.198511509567993 0 0 0 +385 65 1 22.629225300941204 -22.591852530731575 -9.593147677123552 -1 0 0 +434 73 1 23.13484175887619 -19.918399028184858 -11.821017858196335 -1 0 0 +138 23 1 13.58207643351471 -12.277658779160525 -23.271921984052945 0 0 0 +432 72 1 18.525010469116452 -23.441297040987784 -11.391891108634937 0 0 0 +436 73 1 23.80794229290283 -17.740540237186003 -10.882990620956834 -1 0 0 +475 80 1 18.26257756520904 -18.693307847230958 -10.179664679078053 0 0 0 +476 80 1 18.946345516326954 -19.66119897325612 -9.219412722965064 0 0 0 +477 80 1 20.375980962988532 -19.170624434242175 -8.952361071469488 0 0 0 +478 80 1 20.228721033531613 -17.813094474891823 -8.293675974988401 0 0 0 +479 80 1 19.52982823789353 -16.80333315723034 -9.201393039910526 0 0 0 +480 80 1 18.165513438629844 -17.300669418903407 -9.60872040119696 0 0 0 +3250 0 2 19.253025120370243 -18.27698660867225 -13.642041949071263 0 0 0 +427 72 1 19.602666035506818 -22.361998304882988 -11.66566174886788 0 0 0 +3252 0 2 -22.779776225748115 -9.122932554142851 -15.5164400332102 0 0 0 +488 82 1 -17.155372167442724 -13.445095339459675 -11.404587115577073 0 0 0 +489 82 1 -17.459922910936317 -14.894647867003634 -11.17874223943358 0 0 0 +490 82 1 -16.973697545954607 -15.720375755786534 -12.368563195009095 0 0 0 +491 82 1 -17.623868697631394 -15.209386684987477 -13.631945514600986 0 0 0 +3119 0 2 -20.63967138542946 -14.535746910589276 -9.737354043840746 0 0 0 +3134 0 2 -19.631613463720594 -11.239377930370903 -9.43765624763902 0 0 0 +3156 0 2 -21.045723483953672 -10.493364074364903 -12.532889724777052 0 0 0 +3185 0 2 -21.39748629589902 -15.382665989156859 -13.360750495666403 0 0 0 +537 90 1 -17.84439729498504 -9.40985554217935 -12.933265033236419 0 0 0 +3122 0 2 -21.837831471255278 -8.61141035287813 -9.302266025324391 0 0 0 +538 90 1 -17.10824165941662 -10.102982394656769 -14.092225784870053 0 0 0 +487 82 1 -17.828868328144544 -12.99092138354714 -12.631583955755005 0 0 0 +492 82 1 -17.333013579865963 -13.761195913539595 -13.815802000852806 0 0 0 +539 90 1 -16.361643688387865 -9.083962637870524 -14.925643578057713 0 0 0 +728 122 1 -19.22122568999577 -7.815017390396855 -7.47332249537324 0 0 0 +3243 0 2 -23.37521163978859 -12.694747649307695 -10.930621409430271 1 0 0 +3113 0 2 -11.383210507256983 -17.056037211378637 -16.26826888985922 0 0 0 +3136 0 2 -10.0315582889689 -11.016312191091123 -13.930135810964886 0 0 0 +493 83 1 -10.860728383551791 -14.056775352683443 -12.281611669688736 0 0 0 +494 83 1 -11.990302073883305 -14.771648013847612 -13.007579057792425 0 0 0 +495 83 1 -12.906723590228008 -15.451126306941894 -11.989041866753304 0 0 0 +496 83 1 -13.485730738067414 -14.353876916966104 -11.07258654021723 0 0 0 +497 83 1 -12.41373009907884 -13.708229378002883 -10.224212078691759 0 0 0 +498 83 1 -11.319475401816096 -13.158582984780715 -11.127489406734107 0 0 0 +3097 0 2 -9.441492167177497 -15.456298748973612 -8.614802079449035 0 0 0 +3138 0 2 -13.753130733301381 -11.534792483172465 -14.425273415436209 0 0 0 +3180 0 2 -15.373560891984988 -10.651505878030187 -10.197295808055827 0 0 0 +3254 0 2 -7.871542342507705 -9.23912934271906 -10.475594476673376 0 0 0 +3125 0 2 -7.507499143235298 -14.465743026004704 -15.455959395732503 0 0 0 +738 123 1 -10.81167184663272 -8.903253782497584 -7.746609744908556 0 0 0 +317 53 1 0.9478306298607513 -14.32579138845648 -15.281381889156217 0 0 0 +318 53 1 0.5284174018321323 -12.943000616347543 -14.798142056383309 0 0 0 +3133 0 2 -3.824378016908452 -7.688942965809181 -16.07465507142394 0 0 0 +3135 0 2 -2.7112114428892733 -14.09401830271838 -15.821946441089507 0 0 0 +499 84 1 -6.1973530339279925 -14.624084855409075 -10.29000188603462 0 0 0 +500 84 1 -6.422809052617069 -14.24153960203776 -11.731935988322311 0 0 0 +501 84 1 -6.403723737888396 -12.743395851323996 -11.92574647791764 0 0 0 +502 84 1 -5.11728788482329 -12.091434942245556 -11.420608238569297 0 0 0 +503 84 1 -4.848155525470341 -12.490551135659945 -9.999639058571708 0 0 0 +504 84 1 -4.90272654546178 -13.978180823422054 -9.801846659662015 0 0 0 +3130 0 2 -2.877018298396109 -10.652365035170481 -13.870888068317521 0 0 0 +3096 0 2 -6.742410914438937 -9.55146451910252 -13.88399566470553 0 0 0 +506 85 1 -1.1822283811607894 -13.730225529864878 -10.44329192006581 0 0 0 +507 85 1 -0.7282976192044984 -12.303639295487779 -10.304281576291322 0 0 0 +313 53 1 1.8118555547487332 -12.264695969246432 -14.336917934704022 0 0 0 +314 53 1 2.890439967748169 -12.190637311530173 -15.445602305700717 0 0 0 +315 53 1 3.1309749956178763 -13.568401668708548 -16.06481858024919 0 0 0 +316 53 1 1.872077094906719 -14.270762211421701 -16.483728533019676 0 0 0 +3213 0 2 5.546597232013036 -14.535545740381979 -10.20442019303003 0 0 0 +505 85 1 -0.12319542210001058 -14.790220552719891 -10.157946682558707 0 0 0 +3240 0 2 6.599827466865201 -13.769600000042587 -14.517974033958987 0 0 0 +510 85 1 1.2197769238800666 -14.50388846860688 -10.868698849837132 0 0 0 +3191 0 2 2.1430940965012746 -8.315606583694775 -14.880635813631638 0 0 0 +508 85 1 0.5017644081879103 -12.000419829065118 -11.07059351053613 0 0 0 +509 85 1 1.5948625437197552 -13.020128363092121 -10.702888165947709 0 0 0 +511 86 1 4.750778625812573 -10.462100926589397 -10.994739830263262 0 0 0 +512 86 1 6.250245057351012 -10.419471768635558 -10.852867681810826 0 0 0 +513 86 1 6.953071851982607 -10.845502366798412 -12.137004334422745 0 0 0 +514 86 1 6.435419911660401 -10.115472649987222 -13.383344942718653 0 0 0 +515 86 1 4.921697672779424 -10.097488738095768 -13.454793105675646 0 0 0 +516 86 1 4.238280593428016 -9.617745262579676 -12.176621680926054 0 0 0 +469 79 1 14.04963874085687 -13.977110867112598 -9.77400672400302 0 0 0 +473 79 1 12.959927314598854 -16.08272611614145 -10.634999374082588 0 0 0 +474 79 1 13.544393017336546 -14.709242052706594 -10.969976159487466 0 0 0 +3215 0 2 17.352582934976976 -15.401406741315196 -13.536649011745235 0 0 0 +3151 0 2 13.16790317192956 -9.117896160853693 -14.170078981003549 0 0 0 +3239 0 2 9.73677787215402 -8.05035110354828 -14.18606206086242 0 0 0 +3205 0 2 13.092838281199773 -13.652312972329876 -14.27462385638104 0 0 0 +3248 0 2 8.509203612216643 -14.236186317641035 -11.888335858094136 0 0 0 +517 87 1 10.878412668958248 -9.87877672050232 -11.116884901787376 0 0 0 +518 87 1 10.159320468070051 -9.296468107582456 -9.90944586261686 0 0 0 +519 87 1 9.418513216415882 -10.290739785965306 -8.995947850746614 0 0 0 +520 87 1 10.375417926219868 -11.383860470513527 -8.573400771260426 0 0 0 +521 87 1 10.964722102714035 -12.049475299624104 -9.787966115806555 0 0 0 +522 87 1 11.731036419543427 -11.019290068570644 -10.618712315403776 0 0 0 +3217 0 2 10.026917303936896 -11.825741467305185 -14.372143575514272 0 0 0 +523 88 1 15.751260391591458 -12.381703058181332 -12.66670785323251 0 0 0 +528 88 1 16.339454215227338 -11.827334023674975 -13.922636592490461 0 0 0 +524 88 1 16.097234329806334 -11.491825451264544 -11.5247034060609 0 0 0 +485 81 1 20.75962507358579 -12.08873769367657 -15.150939629003137 -1 0 0 +486 81 1 21.957928715472157 -11.180040115455391 -14.960826041397668 -1 0 0 +481 81 1 22.983695974666027 -11.932586353492052 -14.171872638425517 -1 0 0 +484 81 1 21.202882592509255 -13.274661542429703 -15.960552178990584 -1 0 0 +482 81 1 23.364827063656243 -13.260560902102913 -14.712919611224658 -1 0 0 +483 81 1 22.178822123889827 -14.130663933702476 -15.167822700214554 -1 0 0 +525 88 1 17.56284822736033 -11.276491807987743 -11.30382032417543 0 0 0 +526 88 1 18.19681403603269 -10.781318772471568 -12.56671631853461 0 0 0 +527 88 1 17.821883761626147 -11.716092407454953 -13.712611507474353 0 0 0 +3099 0 2 20.156492037490512 -14.081094998732333 -11.294726708979088 0 0 0 +3222 0 2 18.958962003017668 -9.030417261103771 -8.657008563373 0 0 0 +715 120 1 17.23819763587651 -12.514439118748811 -7.132878662868793 0 0 0 +3103 0 2 22.464207929578592 -14.808468123187634 -8.969240008714129 0 0 0 +3204 0 2 21.688682749639145 -10.950035414532854 -9.81198776815105 0 0 0 +3160 0 2 -20.028448925868773 -4.02488675089951 -15.142120810377207 0 0 0 +3161 0 2 -19.606828349492528 -7.5652600073495995 -15.860020721082162 0 0 0 +721 121 1 23.509192038980782 -7.8188263545925105 -6.854167290849033 -1 0 0 +3244 0 2 -23.6979917054599 -3.0403503286063924 -15.821594293217306 1 0 0 +531 89 1 23.13486876927649 -6.460592388669139 -14.291474774964207 -1 0 0 +535 90 1 -16.555048997790202 -7.3880580353868135 -13.026337609654044 0 0 0 +536 90 1 -17.00031457876123 -8.477342101085595 -12.121468567885142 0 0 0 +540 90 1 -15.700991321459108 -7.98268129778793 -14.101866248596439 0 0 0 +3168 0 2 -20.245634320003685 -1.8356449588268176 -11.880287034476433 0 0 0 +530 89 1 23.90358325953634 -6.1662211160780975 -12.98781007891805 -1 0 0 +3129 0 2 -22.380889949504635 -4.634888122421989 -9.853591319361309 0 0 0 +3171 0 2 -20.41074227625155 -6.834798733939869 -12.58130265311147 0 0 0 +3104 0 2 -16.82146829044039 -3.651113923796913 -10.062385365075574 0 0 0 +1922 321 1 -23.353962272170207 -0.8307247928615289 -11.647587591018455 0 0 0 +1930 322 1 -15.965276007498275 -2.4494689167738883 -13.094619051846358 0 0 0 +1929 322 1 -16.379484570865685 -1.3961557743987647 -14.108696760249828 0 0 0 +2130 355 1 -13.428241068360025 -2.3115844303723376 -9.60447296765382 0 0 0 +1931 322 1 -16.028489444253953 -3.900238860094762 -13.59232659382515 0 0 0 +1928 322 1 -16.839916523730928 -1.9901864005913645 -15.411986450359176 0 0 0 +1927 322 1 -15.853368607333 -2.9875831000177886 -15.959223341843277 0 0 0 +1932 322 1 -15.200947746504305 -3.9278600593212767 -14.875144800861774 0 0 0 +2126 355 1 -11.664653492677346 -3.23236566945444 -8.011063435959402 0 0 0 +3188 0 2 -14.350631265255275 -6.553303150739452 -9.380267321661265 0 0 0 +541 91 1 -11.196883624477847 -7.799851502173474 -11.600417380048494 0 0 0 +542 91 1 -11.201482874001348 -6.301270725673907 -11.675886871831926 0 0 0 +543 91 1 -11.289897860931177 -5.897770483115037 -13.124717055445005 0 0 0 +544 91 1 -12.456742533540309 -6.468783463129388 -13.959768433269558 0 0 0 +545 91 1 -12.36150280169599 -7.962250495857871 -13.8340357309444 0 0 0 +546 91 1 -12.383762762672326 -8.395946380324668 -12.387727173125358 0 0 0 +3137 0 2 -8.72751169269055 -5.571480280481379 -9.333024332222976 0 0 0 +2127 355 1 -11.36654957569394 -1.9092398316938464 -7.386470809125244 0 0 0 +1937 323 1 -11.089333312691243 -1.2206558188699883 -13.041590962115249 0 0 0 +2129 355 1 -13.143553721642906 -0.9805075381928041 -8.982535163409247 0 0 0 +2128 355 1 -12.629324238191979 -1.066454420815476 -7.521309968652809 0 0 0 +1940 324 1 -8.509700922746992 -3.3369242517210678 -13.572889982779351 0 0 0 +1941 324 1 -7.869348831167004 -3.7095262095064006 -12.268869784862373 0 0 0 +2125 355 1 -12.140594118540445 -3.087752836097067 -9.473728206385365 0 0 0 +733 123 1 -11.50329953470131 -7.557753035288924 -7.527120033926193 0 0 0 +356 60 1 -8.645233587179906 -6.784807174389429 -15.57619221939881 0 0 0 +551 92 1 -4.533200793141487 -7.470234331950804 -11.73450416958376 0 0 0 +1944 324 1 -6.934512957647603 -1.5223195205216977 -13.89411297709538 0 0 0 +1943 324 1 -6.282782047928581 -1.7729404685992962 -12.572400317325659 0 0 0 +1942 324 1 -7.1770754625246065 -2.508727265632979 -11.626929893496913 0 0 0 +1945 325 1 -1.4907763984010598 -2.4370330037585264 -9.200282488275958 0 0 0 +547 92 1 -3.271632857592948 -7.336725333151834 -9.649014035562233 0 0 0 +548 92 1 -4.221561093534662 -6.248806189848549 -9.066209383348522 0 0 0 +549 92 1 -4.819387513594367 -5.449126685943692 -10.210376776241246 0 0 0 +550 92 1 -5.479730361654855 -6.417752899550047 -11.177265136095148 0 0 0 +552 92 1 -3.892429849000564 -8.312065945058073 -10.655202982772144 0 0 0 +553 93 1 -0.9148180212791134 -5.791795111946871 -12.51621996408998 0 0 0 +557 93 1 -0.7860442587486793 -8.259997079043936 -12.22591579751101 0 0 0 +558 93 1 -1.2023951160100685 -7.108655639273606 -13.162743339648575 0 0 0 +1939 324 1 -7.500545729634672 -2.7630287268090954 -14.53933359457973 0 0 0 +1946 325 1 -0.6927130203885814 -1.13215882178044 -9.144862999760912 0 0 0 +3165 0 2 -3.735095887693471 -4.230515611228332 -14.088709142207543 0 0 0 +1949 325 1 -1.9763924160848862 -2.0491441334269775 -11.555130717215572 0 0 0 +2133 356 1 -5.9118433123882115 -1.6637151623314097 -8.400681071809666 0 0 0 +1950 325 1 -2.5848895651650463 -2.4698118608443367 -10.226842296609254 0 0 0 +1948 325 1 -1.2966236697365996 -0.6878548968596174 -11.527761493785297 0 0 0 +554 93 1 0.538430982112022 -5.734936604291423 -12.16028682682005 0 0 0 +3076 0 2 5.543425590627666 -6.7899627600020995 -15.210057460480316 0 0 0 +555 93 1 0.9046542104509231 -6.798202979612166 -11.14831143462444 0 0 0 +556 93 1 0.6299992637369839 -8.200216050073793 -11.72394951754325 0 0 0 +559 94 1 5.291419159797558 -5.9662365097169126 -11.788486417374987 0 0 0 +560 94 1 4.4214070946222 -4.760370536177068 -12.157035379255321 0 0 0 +561 94 1 4.8209457289567785 -3.5361070391427596 -11.372916181397287 0 0 0 +562 94 1 6.2997588354617635 -3.250133522419874 -11.618882843174411 0 0 0 +563 94 1 7.216766462875441 -4.439837892919495 -11.398762697432996 0 0 0 +564 94 1 6.7683272728099695 -5.705593390839083 -12.056495055471254 0 0 0 +1947 325 1 -0.15056726244544785 -0.7375123353628987 -10.521897980007882 0 0 0 +3080 0 2 5.561902926506747 -2.3926250713305897 -14.746813738439672 0 0 0 +3237 0 2 1.0676871156736858 -1.904142857167824 -14.1955227643287 0 0 0 +129 22 1 3.7357710423379435 -12.496443207115936 -23.56989950303438 0 0 0 +886 148 1 -6.55489498716053 -11.917760006588718 -0.16275668473789492 0 0 0 +752 126 1 5.653287393297693 -6.293923034094311 -8.101404008088904 0 0 0 +2146 358 1 4.751938890041581 -1.4377572574435553 -8.20032862991543 0 0 0 +377 63 1 13.32510562962902 -2.9923071772399306 -16.131483044493024 0 0 0 +378 63 1 13.090778610282836 -3.9897143890589915 -15.0522597672201 0 0 0 +3175 0 2 9.15946390549616 -2.9692744541074805 -14.265012852150061 0 0 0 +565 95 1 13.254092283350058 -7.060078787351082 -10.743180874059794 0 0 0 +566 95 1 12.782127742608171 -6.326296229308216 -11.98130043803075 0 0 0 +567 95 1 11.318756401173582 -5.903882622632563 -11.993689780704594 0 0 0 +568 95 1 10.899953930807676 -5.148309522271334 -10.73234188738371 0 0 0 +569 95 1 11.295483519727988 -5.9728526309358125 -9.533563682437263 0 0 0 +570 95 1 12.798613541830782 -6.265213123031563 -9.539236600081514 0 0 0 +3148 0 2 9.29022151670728 -1.9494306218429946 -9.397676820333476 0 0 0 +1961 327 1 12.062444183514998 -1.1456510681280234 -12.160098511612244 0 0 0 +1966 328 1 16.295942013114505 -2.000882420927826 -12.971735138826784 0 0 0 +1965 328 1 17.167651858560944 -1.7900736605654708 -11.769106316220233 0 0 0 +3083 0 2 14.60237120845769 -2.95824990305827 -8.940414159785064 0 0 0 +3177 0 2 16.871897525875323 -5.812864906057312 -9.556449824977944 0 0 0 +571 96 1 18.503221454742576 -7.139471830908783 -14.580808173466966 0 0 0 +572 96 1 17.248639691257047 -7.962682067663984 -14.67428847014941 0 0 0 +532 89 1 21.767094005173554 -6.949529919693384 -13.907207228408916 -1 0 0 +533 89 1 21.7097331690997 -8.029146894817703 -12.905192851723267 -1 0 0 +529 89 1 -23.9998807586867 -7.385042181213058 -12.054857195034867 0 0 0 +534 89 1 22.594029444700826 -7.738943238000628 -11.712173009521713 -1 0 0 +573 96 1 16.15457630691639 -7.2400825087349165 -14.072760123462368 0 0 0 +574 96 1 16.030816328587004 -5.769575294073786 -14.23033824186866 0 0 0 +575 96 1 17.315734675164162 -5.033350073581562 -14.170554483059556 0 0 0 +576 96 1 18.3603584276394 -5.648985878387909 -15.135552989662497 0 0 0 +620 104 1 18.242516900514378 -23.91743933121628 -7.353692330810063 0 0 0 +1964 328 1 18.502830504168347 -1.297520817429474 -12.229484281205751 0 0 0 +3167 0 2 21.257690590493024 -3.3798169814270853 -14.158237631327552 0 0 0 +3178 0 2 20.452466453563993 -4.922843260802922 -11.16267782237118 0 0 0 +1921 321 1 23.620326014334704 -1.9140070199947932 -11.881271528143992 -1 0 0 +879 147 1 -9.991533735960063 -13.49702136605266 -0.7313556316517886 0 0 0 +722 121 1 22.897500648645426 -6.850990488065385 -7.876660134110257 -1 0 0 +579 97 1 -19.89658507776802 -22.338812421147104 -7.502736016222637 0 0 0 +630 105 1 -21.601730738146255 -18.83348754422631 -7.4792630973399 0 0 0 +3531 0 2 -18.678253212606144 -23.723343050268596 -2.8081105132224873 0 1 0 +636 106 1 -16.19827463650999 -18.04411267696147 -5.498933928105817 0 0 0 +635 106 1 -15.105955643192832 -18.83250442209349 -4.709275227047966 0 0 0 +632 106 1 -17.857481455085605 -19.65460798265644 -4.512842753175132 0 0 0 +631 106 1 -17.36614312671023 -18.991316978050993 -5.7323794781192134 0 0 0 +629 105 1 -20.852198691866683 -18.331593515804574 -6.260309287662485 0 0 0 +628 105 1 -20.757897710609853 -16.80032368803702 -6.2325088051665585 0 0 0 +580 97 1 -20.364030845753277 -21.99274916853858 -6.142372612178491 0 0 0 +3454 0 2 -16.717735188175908 -16.837928964830567 -0.38876751417925975 0 0 0 +820 137 1 -23.06962052024438 -19.987983572610727 -1.9574413690865573 0 0 0 +821 137 1 -21.759247169728983 -20.020830923088905 -2.7905040212542747 0 0 0 +625 105 1 -22.987830043006987 -18.223590560615918 -7.5895064159613135 0 0 0 +581 97 1 -21.486729221664074 -22.91552066933581 -5.697123530686174 0 0 0 +822 137 1 -20.495086680988905 -19.438409917399206 -2.1650060394563093 0 0 0 +819 137 1 -23.26102574109077 -18.538481692617843 -1.4412845279891175 0 0 0 +818 137 1 -21.996768680465355 -18.02529082578531 -0.7183432890453774 0 0 0 +817 137 1 -20.77719789362675 -18.07250329942997 -1.6400365147084859 0 0 0 +641 107 1 -12.203161336955654 -19.856480955893574 -6.478686754520815 0 0 0 +634 106 1 -15.614250342722508 -19.43097162930733 -3.4793411342465577 0 0 0 +633 106 1 -16.77297645139879 -20.407059361679174 -3.760402467689172 0 0 0 +642 107 1 -10.983423998353825 -19.737768288650372 -7.349700083201278 0 0 0 +640 107 1 -12.175323823479332 -21.214541569306164 -5.78357484999631 0 0 0 +639 107 1 -10.903618837806164 -21.363425750677944 -4.973065906910634 0 0 0 +638 107 1 -9.71745794014269 -21.302515704228277 -5.847185750545316 0 0 0 +637 107 1 -9.732502087595286 -19.961848927352218 -6.544854994460795 0 0 0 +3172 0 2 -4.30013510605699 -23.558160015678105 -9.934388187906775 0 0 0 +833 139 1 -12.194227080813928 -19.660565974726932 -1.4893385957481213 0 0 0 +834 139 1 -12.859589422020308 -18.29054506453928 -1.4297296628771143 0 0 0 +3242 0 2 -13.898085926969921 -23.155633289846612 -2.386427621907854 0 0 0 +421 71 1 12.895688228244428 -23.510672453976976 -11.553644657278513 0 0 0 +2320 387 1 -10.163780447203946 -0.7118236568269755 -1.038968060030662 0 0 0 +832 139 1 -11.240146945589801 -19.80098449233793 -0.32556937792039853 0 0 0 +600 100 1 -6.655573906108533 -23.189545126171147 -4.851383815959041 0 0 0 +3564 0 2 -20.639353042291663 -0.6040989724943379 -15.596068854670992 0 0 0 +2141 357 1 1.3372590439173135 -0.40917037459322886 -5.009496335126118 0 0 0 +862 144 1 17.392633561569856 -19.677635607406607 -0.49406838400263237 0 0 0 +3176 0 2 -8.161614430852334 -20.746684243829055 -2.5423002852335026 0 0 0 +653 109 1 0.25923356105034856 -18.822647917738724 -5.114094342187829 0 0 0 +646 108 1 -4.259309263391483 -20.05760631787698 -8.57342055629058 0 0 0 +645 108 1 -3.5882943306209567 -20.89056827204802 -7.475064685504933 0 0 0 +644 108 1 -3.905061787209306 -20.279114909232188 -6.095922464443009 0 0 0 +643 108 1 -5.406117140099746 -20.13806229753609 -5.908517155315734 0 0 0 +835 140 1 -5.96468572452059 -18.421827571788445 -0.1940832256895432 0 0 0 +3218 0 2 -2.3788657370360555 -21.072003798637052 -2.660877315870211 0 0 0 +3636 0 2 2.3743190495227857 -23.583810311639976 -15.589783382813271 0 1 0 +615 103 1 13.998768796786871 -23.89463074699041 -5.971539158966211 0 0 0 +3085 0 2 -3.5868859730264853 -16.67544579243731 -7.154056962946621 0 0 0 +696 116 1 -7.556553061831107 -17.442894313148432 -3.931950061345586 0 0 0 +691 116 1 -7.666697686697668 -16.875192832620193 -5.319204026418976 0 0 0 +3190 0 2 -2.6550560756385875 -17.058973380066114 -3.754154336928545 0 0 0 +846 141 1 -0.5293153561814663 -19.471499258157912 -0.43935155293993966 0 0 0 +578 97 1 -19.781203168797642 -23.828890574094952 -7.412101716605861 0 0 0 +655 110 1 7.390515780479332 -16.70354495483149 -6.13850442178291 0 0 0 +656 110 1 7.493326841471907 -18.164387621223586 -5.682044397645447 0 0 0 +660 110 1 6.177657005220231 -16.564609434408275 -7.0279575203435165 0 0 0 +804 134 1 5.000973295535981 -21.377861467738814 -0.21157450637444258 0 0 0 +654 109 1 0.5320249241857321 -19.052508972696398 -6.571878603761748 0 0 0 +649 109 1 0.4216718608761672 -17.749140177823723 -7.38778926410284 0 0 0 +803 134 1 6.128543350909528 -22.377846903461577 -0.49596907657221717 0 0 0 +658 110 1 4.988677712098758 -18.439738406801077 -5.789570823559004 0 0 0 +657 110 1 6.249215378678894 -18.57456683208996 -4.947461768876827 0 0 0 +652 109 1 1.1841872764479775 -17.72657701660962 -4.6632203232589235 0 0 0 +650 109 1 1.3460227071490187 -16.647222223990514 -6.904545400800195 0 0 0 +3144 0 2 2.1945271158629946 -21.507118835508848 -2.959359472763339 0 0 0 +3157 0 2 3.179887577193914 -21.54099199481437 -7.617657463730766 0 0 0 +3233 0 2 5.556858278907169 -22.120727305510858 -4.119106043218379 0 0 0 +3249 0 2 3.957483113851467 -18.096180159047417 -1.9948683415400534 0 0 0 +3260 0 2 9.361532017562512 -18.595697204793222 -0.9858705778601969 0 0 0 +659 110 1 4.906243935024628 -17.040271888247876 -6.354202070005135 0 0 0 +845 141 1 -0.021451284780850073 -18.203263842380935 -1.1250725054262543 0 0 0 +1581 264 1 16.51632427852508 -0.37887000934272475 -23.15099826553299 0 0 0 +1582 264 1 17.994319175173835 -0.10590152255957008 -23.07010765913378 0 0 0 +853 143 1 13.986397776247808 -18.288928346278436 -1.3662845794100846 0 0 0 +3123 0 2 17.435754655509427 -2.0874417668695076 -1.6430358463813803 0 0 0 +3183 0 2 9.573270023533272 -20.79989809580537 -7.330054469924412 0 0 0 +3212 0 2 9.026379124232962 -21.636533458764248 -3.978941894687348 0 0 0 +666 111 1 12.968718183643741 -19.119999612560825 -6.3696283693732845 0 0 0 +665 111 1 12.305774713081465 -17.811618572364473 -6.71483010491058 0 0 0 +664 111 1 10.930086525667255 -17.70797700524511 -6.05139628309682 0 0 0 +663 111 1 10.935188186503687 -18.097746592689305 -4.591327448785047 0 0 0 +662 111 1 11.6805196805031 -19.36671413470485 -4.31779861409759 0 0 0 +661 111 1 13.090831551321576 -19.26693243461802 -4.891117113487709 0 0 0 +616 103 1 13.158385125480184 -23.00818475343258 -6.836482502755769 0 0 0 +85 15 1 14.562183641748646 -18.006099747264862 -23.524521837739282 0 0 0 +858 143 1 13.621700682427848 -16.853365817045326 -1.253556855847603 0 0 0 +808 135 1 11.794656585024446 -23.180868122336804 -0.5856892935513152 0 0 0 +3143 0 2 10.203498027790753 -15.072868940784131 -0.8627659432104435 0 0 0 +3174 0 2 20.234370093674528 -23.147554783763443 -1.5638790937304234 0 0 0 +766 128 1 17.81842532901368 -6.701096632968706 -2.4116313231312874 0 0 0 +627 105 1 -22.14942526706658 -16.18464956162029 -6.352012182984475 0 0 0 +626 105 1 -22.86533919362293 -16.717317927611983 -7.574983185495223 0 0 0 +3093 0 2 14.65003451927572 -21.755902669409792 -2.214400040966117 0 0 0 +670 112 1 16.465853053125024 -17.07939197015856 -5.231184021171746 0 0 0 +667 112 1 17.12919585166761 -19.890389695516962 -4.6687301222453925 0 0 0 +3086 0 2 23.172987073367466 -20.365873086975718 -5.760678890136071 0 0 0 +672 112 1 16.448054184482416 -19.5434093055903 -5.933998915700637 0 0 0 +671 112 1 16.75491054652512 -18.124701493834454 -6.272668786067622 0 0 0 +669 112 1 17.034586330453955 -17.507607614346213 -3.8802481916566696 0 0 0 +668 112 1 16.623948883183154 -18.94323486270151 -3.610900748000308 0 0 0 +624 104 1 19.71817369968715 -22.329657154211557 -6.164334273923679 0 0 0 +623 104 1 19.156599715636496 -22.7891692710351 -4.850970213163579 0 0 0 +3098 0 2 20.79549224027839 -18.962487282372233 -2.4814062813203743 0 0 0 +3255 0 2 22.19264002854216 -16.794479533509456 -5.008671013480766 0 0 0 +619 104 1 19.680350706718936 -23.450174161948237 -7.1707235980691175 0 0 0 +679 114 1 -16.861404498198077 -14.074759674690386 -7.692648760754269 0 0 0 +3187 0 2 -18.683752938231642 -15.86114210617157 -3.1074710351590022 0 0 0 +920 154 1 -20.323063716425327 -8.28152479962954 -2.1630328574794344 0 0 0 +919 154 1 -19.369493487160685 -7.9717640518134045 -1.0115313332063571 0 0 0 +1926 321 1 22.214532178122255 -1.5581031817232773 -11.408618100815023 -1 0 0 +684 114 1 -17.876076944114466 -14.670792004864047 -6.740947658661283 0 0 0 +683 114 1 -18.756123717884275 -13.610114294596746 -6.089066734355772 0 0 0 +682 114 1 -17.93945426156533 -12.64012807114829 -5.2484357512249264 0 0 0 +681 114 1 -16.93660226244936 -12.037829001113463 -6.184208047100466 0 0 0 +678 113 1 -21.768608645404864 -11.504000142952899 -5.2145968436744425 0 0 0 +677 113 1 -22.147020918100004 -12.98700992399975 -5.113004072088983 0 0 0 +673 113 1 -21.904530765062976 -11.066778588074438 -6.667725380199407 0 0 0 +871 146 1 -18.072401869345263 -12.761801911694715 -1.0658126470640092 0 0 0 +872 146 1 -19.279428711392647 -12.318227829724721 -1.851150078097736 0 0 0 +674 113 1 -23.308026198912227 -11.31059798305446 -7.213402135319285 0 0 0 +727 122 1 -18.011786256645113 -8.582456896681077 -6.988900784562113 0 0 0 +921 154 1 -19.652901539391127 -8.190727225012491 -3.5145759152248246 0 0 0 +922 154 1 -18.354579691785837 -8.994213473644875 -3.6793499685473563 0 0 0 +868 145 1 -23.961650227176094 -11.740083830134264 -0.7316839653127634 0 0 0 +675 113 1 -23.813544313118076 -12.723311708337821 -7.002058035004708 0 0 0 +873 146 1 -20.565787598139707 -12.48811884178478 -1.080398563369402 0 0 0 +428 72 1 19.614728929681778 -21.868239757477724 -13.087674506567444 0 0 0 +680 114 1 -16.076530233336964 -12.98039132545505 -7.029821001825243 0 0 0 +3258 0 2 -8.713740858117731 -12.097221122503214 -8.625529957852123 0 0 0 +878 147 1 -11.46359426559149 -13.061193652461 -0.5085138396380513 0 0 0 +3112 0 2 -14.523836301527039 -14.827477999222483 -2.7171466440435577 0 0 0 +690 115 1 -11.508429099519061 -16.539138946403323 -4.8642426211973975 0 0 0 +689 115 1 -11.289155354649871 -15.322646311143169 -4.067748103600146 0 0 0 +688 115 1 -10.96571097384465 -14.129182789170041 -4.963500477938649 0 0 0 +687 115 1 -12.16460277719881 -13.79815317235867 -5.872864343401376 0 0 0 +686 115 1 -12.741238682701532 -15.059052371155087 -6.503027981898485 0 0 0 +685 115 1 -12.77629102528627 -16.309039820386367 -5.613798789043217 0 0 0 +429 72 1 19.67178158835479 -23.071556275884024 -13.995019899402386 0 0 0 +1962 327 1 12.395347564867139 -0.4522249123205933 -10.832192834751613 0 0 0 +3234 0 2 -14.667552367625762 -10.882813637299709 -2.1534078370296967 0 0 0 +3357 0 2 -8.243276734494327 -11.18644223646588 -3.7601183658991517 0 0 0 +929 155 1 -11.229407279817696 -9.266945599227496 -0.5277411674019409 0 0 0 +930 155 1 -10.73806396375861 -9.328014753757127 -2.0496342081920425 0 0 0 +737 123 1 -11.80458041210423 -10.061518807885735 -7.581172804877366 0 0 0 +736 123 1 -12.514035329331858 -9.940802642426332 -6.226978249588479 0 0 0 +884 148 1 -5.058016356734086 -11.515781417177864 -2.10016423278053 0 0 0 +885 148 1 -5.573489022792124 -12.538659052017701 -1.0565304602901497 0 0 0 +744 124 1 -6.796495587589989 -8.132041093334005 -6.908056743679377 0 0 0 +700 117 1 -2.4785150947560255 -13.051536145022128 -3.7618521277595893 0 0 0 +699 117 1 -3.5231917839367943 -12.61563979373402 -4.803967755446361 0 0 0 +698 117 1 -3.1939688745402526 -13.447599604809804 -6.0998933797479316 0 0 0 +695 116 1 -8.075111957514888 -16.39912770316067 -3.006503437727264 0 0 0 +694 116 1 -7.3290238105061345 -15.088988105138911 -3.0694372220243356 0 0 0 +693 116 1 -7.127246550837067 -14.576957230143467 -4.4960434102996025 0 0 0 +692 116 1 -6.728701734705894 -15.683541445456052 -5.477981270018243 0 0 0 +3194 0 2 -1.231456085341191 -9.744081806438304 -2.766797344202566 0 0 0 +697 117 1 -1.8908867585009133 -13.000678279960505 -6.854688826004112 0 0 0 +743 124 1 -6.151645007576958 -9.473977498811106 -6.5767202187833655 0 0 0 +702 117 1 -0.8919238364636716 -12.552501688098591 -5.636504008457076 0 0 0 +701 117 1 -1.1289139797913377 -13.231201482328972 -4.260511970959163 0 0 0 +742 124 1 -5.053794173543709 -9.185046399794158 -5.62753686784592 0 0 0 +745 125 1 -1.0163971903552498 -9.202777412913234 -6.601053029762865 0 0 0 +883 148 1 -4.439256647852137 -10.195355782547773 -1.5854220649168889 0 0 0 +898 150 1 3.7892095144553313 -13.505953449602622 -0.30181627435510133 0 0 0 +750 125 1 -0.02282908976705894 -9.519346547516617 -7.745747426742618 0 0 0 +3153 0 2 2.818914229543667 -13.174645122949102 -7.2640051452410335 0 0 0 +899 150 1 3.7944103013151236 -12.22251771318739 -1.0814341235631753 0 0 0 +897 150 1 3.7949356569390362 -14.69534268745218 -1.304105632315127 0 0 0 +651 109 1 1.1244915827808728 -16.428847912997565 -5.457673549108037 0 0 0 +3108 0 2 2.120693880370002 -9.39010730429765 -4.160997146840728 0 0 0 +708 118 1 6.863828128037181 -13.208442193532914 -6.00939590080831 0 0 0 +707 118 1 5.922433654701295 -13.245838257029785 -4.841511813007163 0 0 0 +706 118 1 6.00991708903188 -11.944638177248002 -4.087627233609485 0 0 0 +705 118 1 5.662766464084579 -10.741853828918114 -4.948058290085926 0 0 0 +704 118 1 6.62020242151925 -10.752156168121486 -6.162268884474601 0 0 0 +703 118 1 6.618363410105859 -12.045891918898462 -6.95777471616502 0 0 0 +895 150 1 2.3995835099560496 -13.348396534473457 -2.7880327765091297 0 0 0 +896 150 1 2.5611880974651005 -14.69016348497507 -2.1852785744844723 0 0 0 +900 150 1 2.5141107116762904 -12.092916695975378 -1.9180593546954754 0 0 0 +3210 0 2 6.92327992732037 -15.820746501456187 -2.2073150247137487 0 0 0 +749 125 1 1.363426347607604 -8.905373864374068 -7.600913471897045 0 0 0 +945 158 1 5.9166171314217975 -8.566039910215778 -1.1281427787898752 0 0 0 +944 158 1 5.7802717038310565 -7.977355467684557 -2.4939413313918486 0 0 0 +748 125 1 1.2086483570492634 -7.424367068669365 -7.403374610376454 0 0 0 +3094 0 2 12.82450945202009 -9.546667608231216 -7.122978072662087 0 0 0 +3079 0 2 10.094057382532924 -9.281742678513806 -2.139368246591289 0 0 0 +709 119 1 10.285707359953944 -14.039677489515187 -4.865442690153936 0 0 0 +408 68 1 -8.988961415704619 -23.934376200573837 -14.246914367312156 0 0 0 +714 119 1 10.015768156671722 -12.813681213850396 -3.920866495502144 0 0 0 +713 119 1 11.074994992991092 -11.820727155148214 -4.322221287128473 0 0 0 +712 119 1 12.448730699002198 -12.295208213897418 -3.920182922937835 0 0 0 +711 119 1 12.77759073517954 -13.497902027231882 -4.801465300391897 0 0 0 +710 119 1 11.691560685174887 -14.583415020239979 -4.760394842392145 0 0 0 +3073 0 2 9.649354414698488 -15.500489728900117 -8.438861638363617 0 0 0 +3208 0 2 16.99599442180648 -11.081253400054232 -2.2140291038277367 0 0 0 +3074 0 2 10.421619449944043 -7.31311641295177 -5.294564290959479 0 0 0 +904 151 1 13.727814811044423 -11.305338050420625 -0.4207332695504249 0 0 0 +26 5 1 -1.0579171183405067 -23.80807725469021 -23.466739304148046 0 0 0 +720 120 1 16.986662463838172 -13.522694524093202 -6.027317543818168 0 0 0 +719 120 1 18.26286514988587 -14.024909640445806 -5.318360907235192 0 0 0 +870 145 1 21.61785446110006 -11.521016709469846 -1.4410065217395496 -1 0 0 +3232 0 2 23.992334672918947 -9.459206168443181 -3.268198138145527 -1 0 0 +676 113 1 -23.596543220773434 -13.221961757755555 -5.5866869567609685 0 0 0 +3126 0 2 16.56570073240039 -14.663655900424427 -1.9695458137410293 0 0 0 +3226 0 2 -23.719435162719105 -15.276362411218907 -2.4142710283327173 1 0 0 +3114 0 2 21.114968050344995 -10.620520221115346 -5.517446711535181 0 0 0 +718 120 1 19.367932626935087 -14.45381070288218 -6.286312317928286 0 0 0 +717 120 1 19.560397931400964 -13.399665399013587 -7.358145634822249 0 0 0 +716 120 1 18.25153447213369 -13.07609579313792 -8.095934205837017 0 0 0 +869 145 1 22.812220715357185 -12.45885392209724 -1.258096418683605 -1 0 0 +3163 0 2 19.886328676401245 -14.804812163242207 -1.3392006253824567 0 0 0 +3347 0 2 -16.906384335570422 -5.832702564400965 -0.21799326483390966 0 0 0 +1960 327 1 11.178528727977206 -0.3103026013022536 -13.083035536799056 0 0 0 +45 8 1 15.74354653000786 -22.970376101305703 -22.84534527479079 0 0 0 +2306 385 1 -21.67579250390473 -1.598238916768613 -0.5149871570172689 0 0 0 +2121 354 1 -16.22894603247263 -1.293348058562442 -7.086068621755833 0 0 0 +2307 385 1 -20.464315142480746 -2.471280852207409 -0.8344096916304995 0 0 0 +924 154 1 -18.113164297518654 -8.818321209630026 -1.1236291384205088 0 0 0 +2316 386 1 -16.434832195406802 -1.8304845699522132 -0.988162794367667 0 0 0 +916 153 1 -23.738408412201256 -6.41289976110332 -0.17008868043289535 0 0 0 +732 122 1 -16.77981596774538 -7.917358768143001 -7.462237200322155 0 0 0 +731 122 1 -16.800348875776503 -6.510012405906171 -6.92459088236922 0 0 0 +730 122 1 -17.96400021317762 -5.696069183846789 -7.466006486133622 0 0 0 +729 122 1 -19.270424291536248 -6.339955660656167 -7.135334554174885 0 0 0 +917 153 1 -23.262316485994457 -6.077945240119007 -1.5993493685399067 0 0 0 +2119 354 1 -18.60250654929685 -1.6881625773443103 -6.719927440923434 0 0 0 +2120 354 1 -17.241726763587653 -1.739085569436217 -6.0906839871896645 0 0 0 +3092 0 2 -17.724566897126994 -4.645421287585029 -3.5724893245774294 0 0 0 +3228 0 2 -21.03480151789179 -3.513866025760926 -4.7638868909098715 0 0 0 +923 154 1 -17.444733270952568 -8.66265462855767 -2.520257863962114 0 0 0 +2115 353 1 -23.59050548447787 -1.7506748647048347 -7.327009936075724 0 0 0 +3477 0 2 -13.758097932060261 -1.397644406130624 -4.121675935345573 0 0 0 +3082 0 2 -16.0322521183025 -4.287428696585516 -23.56037511034607 0 0 0 +3102 0 2 -14.496798883284525 -4.93835742289172 -5.096824270254922 0 0 0 +2319 387 1 -11.265545389925155 -0.6368014320681068 -2.085936608347984 0 0 0 +218 37 1 -1.7120296159842512 -23.273553439701825 -17.662583827377507 0 0 0 +735 123 1 -13.16837508081348 -8.599680548982784 -6.017830333432835 0 0 0 +734 123 1 -12.124450850719601 -7.521160343446087 -6.167203492089897 0 0 0 +925 155 1 -10.125268884429946 -7.9967957919557335 -2.6160113756338412 0 0 0 +926 155 1 -9.07200155553298 -7.626416372719154 -1.6277702395185158 0 0 0 +927 155 1 -9.49594496838926 -7.468799797561846 -0.20941345551365886 0 0 0 +3230 0 2 -11.64745844229247 -3.810913457737553 -0.8757236205510979 0 0 0 +3259 0 2 -13.84230358963376 -6.775048268384669 -1.1567881629435663 0 0 0 +3207 0 2 -10.205866154989831 -4.297875657788979 -4.118150702694345 0 0 0 +2333 389 1 0.1819946081739498 -2.91324193584965 -1.7003182422047012 0 0 0 +942 157 1 -1.912877980015075 -6.765631076630593 -0.7514118684025859 0 0 0 +854 143 1 12.970857207842188 -19.064076145616436 -0.6218541067169614 0 0 0 +2132 356 1 -4.755504833156404 -1.9296352993905814 -7.457208619887969 0 0 0 +3109 0 2 -1.1481266778940689 -2.9869333095453334 -5.683452557064883 0 0 0 +125 21 1 1.124254089384887 -8.973758096392729 -23.63977869585508 0 0 0 +622 104 1 17.741246655811363 -23.252448119279247 -5.051700157337856 0 0 0 +2326 388 1 -4.2393400625462885 -0.5591924295811959 -2.13821668837939 0 0 0 +2334 389 1 -1.2668603030954895 -3.2254912321399902 -1.9613354939973493 0 0 0 +739 124 1 -7.290410133439499 -7.40103375577509 -5.650227004314096 0 0 0 +2131 356 1 -4.994449284701478 -3.181682812936629 -6.62532890515973 0 0 0 +2136 356 1 -6.407194454627805 -3.0900165815573155 -5.979769510323174 0 0 0 +2327 388 1 -4.680737400544265 -0.4867159808830488 -3.6031355838240953 0 0 0 +746 125 1 -1.0324809950519611 -7.72388513335868 -6.4495110551733426 0 0 0 +741 124 1 -5.489093569040339 -8.45361444727594 -4.406553778505542 0 0 0 +740 124 1 -6.153535163155723 -7.165533916094103 -4.692814737905562 0 0 0 +931 156 1 -6.789944322805758 -3.6732305408745107 -2.396318978833473 0 0 0 +932 156 1 -6.0858246563667056 -4.929365949783989 -1.9694346222974994 0 0 0 +936 156 1 -7.952379264072627 -3.433548691538587 -1.4614426201070012 0 0 0 +2135 356 1 -7.552803625216052 -2.763996034749126 -6.883918402524329 0 0 0 +2134 356 1 -7.254386785861914 -1.4940945232015967 -7.701439552277876 0 0 0 +2332 389 1 0.39343541686495237 -1.4648910080440676 -1.2568746431669182 0 0 0 +3146 0 2 -3.022282418324306 -5.566633407043323 -3.9037113684888354 0 0 0 +933 156 1 -5.7139698213131425 -4.955996133749322 -0.5060156510280102 0 0 0 +941 157 1 -0.48185292382344086 -7.179483314417797 -0.6278244547464443 0 0 0 +2329 389 1 -2.1274620731386613 -2.9872783387432893 -0.7553398707729729 0 0 0 +2143 358 1 6.550914732804897 -0.9408894092025177 -5.742033810189089 0 0 0 +2148 358 1 5.946017697805778 -2.2700697791909272 -6.151594456752538 0 0 0 +3140 0 2 2.079694474053765 -4.171969912112626 -8.856581154254998 0 0 0 +829 139 1 -13.618007778051286 -18.159550555263415 -0.12552144225372114 0 0 0 +747 125 1 0.3424783668614345 -7.107270510375015 -6.194129228190171 0 0 0 +2147 358 1 5.6904138307963095 -2.4713336461010424 -7.650214663009076 0 0 0 +837 140 1 -3.8148768233164687 -17.260025662640018 -0.0657188937296463 0 0 0 +755 126 1 7.026031124774236 -6.174192803141756 -5.5694757279344325 0 0 0 +754 126 1 5.5401798909770354 -6.1046670772285 -5.690863629768605 0 0 0 +753 126 1 5.038896488711858 -6.937233113027644 -6.872060681155004 0 0 0 +943 158 1 5.256485556701253 -6.560598500037135 -2.3211763051122394 0 0 0 +947 158 1 7.006051622133224 -6.486612877432784 -0.481957238685627 0 0 0 +948 158 1 5.619844699899194 -6.035971073617004 -0.9043971633024049 0 0 0 +17 3 1 -12.431904332499284 -23.727849696608526 -22.536591183085207 0 0 0 +3223 0 2 2.615756882234728 -4.491544427305701 -5.370019403087668 0 0 0 +3256 0 2 4.082751517327184 -2.4209464155383045 -2.5783171508249816 0 0 0 +3458 0 2 7.837273449698774 -3.5585018083790807 -2.706289793170811 0 0 0 +751 126 1 7.17271302949661 -6.380873803207135 -7.980066867493316 0 0 0 +3214 0 2 14.074716073654136 -6.310463902428787 -5.756535056096288 0 0 0 +3235 0 2 13.89612793014047 -8.918883056963404 -3.328994936185581 0 0 0 +2346 391 1 9.720072198224953 -0.5430700156540244 -0.7717367094489974 0 0 0 +756 126 1 7.624068864236249 -5.5977952033299205 -6.805052987373579 0 0 0 +3262 0 2 11.660246639377004 -5.479299957932317 -1.5509857202427402 0 0 0 +3124 0 2 15.05782144191781 -4.398673127243339 -2.4697687653075535 0 0 0 +3078 0 2 14.290585672260883 -0.34813154173851285 -1.1873345533560518 0 0 0 +762 127 1 11.78132024764163 -0.6502861650669778 -4.050372497716318 0 0 0 +761 127 1 10.730387119947009 -1.7316139133914867 -3.9417064544964915 0 0 0 +760 127 1 10.39848750031133 -2.243263570521202 -5.3617781622688145 0 0 0 +759 127 1 11.578044583097137 -2.820786904116323 -6.147988849600955 0 0 0 +758 127 1 12.596948667299957 -1.7071982899589078 -6.165575329244287 0 0 0 +757 127 1 12.999498011594046 -1.2082882570760738 -4.741416050464298 0 0 0 +2116 353 1 23.397640411410016 -1.383645836790008 -8.381747199428665 -1 0 0 +2158 360 1 18.859700078742545 -2.5157535008115577 -5.922090876589833 0 0 0 +918 153 1 -23.33246566678586 -4.59050071876517 -1.9235302293951413 0 0 0 +913 153 1 23.27243744574968 -4.025654555949887 -1.6607926864980354 -1 0 0 +724 121 1 22.86747289341447 -5.067116307938952 -6.132160973703366 -1 0 0 +2159 360 1 17.64667681854112 -1.593189944002923 -5.950581000415051 0 0 0 +2160 360 1 16.38946518876379 -2.2132434023508725 -5.371658828642459 0 0 0 +765 128 1 18.919256336761276 -5.7406881974427035 -2.9834036620195374 0 0 0 +2117 353 1 21.941551405820324 -1.1525145723813137 -7.841311991082053 -1 0 0 +27 5 1 0.2134319719423848 -23.02841263650855 -23.842218890415 0 0 0 +914 153 1 22.87990626449045 -4.335770208239102 -0.24418282035856265 -1 0 0 +768 128 1 19.9044574866689 -8.105643314380806 -1.5548153315533308 0 0 0 +767 128 1 18.4273087353529 -8.00853556835088 -1.865119019392137 0 0 0 +3245 0 2 17.01469167714555 -9.272126256157511 -5.608802330316862 0 0 0 +3460 0 2 20.67924887214437 -0.9759300115936701 -2.037788850665542 0 0 0 +726 121 1 -23.749828964065877 -7.086574855350521 -5.750580285698449 0 0 0 +725 121 1 23.49122289203176 -5.950484794951118 -5.0608929143783214 -1 0 0 +2155 360 1 16.21581352674625 -3.6150960164136596 -5.878174119709233 0 0 0 +1762 294 1 6.76701995375078 -0.6022185176891548 -17.51073503385315 0 0 0 +1749 292 1 -5.953168093186262 -0.3810755897899148 -18.955285627676147 0 0 0 +210 35 1 -12.857740680723278 -23.625123168582682 -16.594326043136455 0 0 0 +2308 385 1 -20.582295548917052 -3.8526661552498784 -0.16314363293106618 0 0 0 +2124 354 1 -18.885559368072702 -0.27624903325245287 -7.166280489348526 0 0 0 +224 38 1 4.369765605231572 -22.74270233666041 -18.741373421909078 0 0 0 +1938 323 1 -10.228682906972256 -0.8486168953208069 -11.846311039413811 0 0 0 +233 39 1 11.65398124072304 -23.68285934578117 -18.362064531069766 0 0 0 +3497 0 2 -21.52217313277517 -0.0037256295019588723 -21.31638838811959 0 0 0 +1770 295 1 11.345787196474486 -0.1792943471202603 -18.940828970009935 0 0 0 +386 65 1 22.65329654197244 -23.90012463728174 -10.37190457362268 -1 0 0 +221 37 1 0.27703558858680644 -23.774254948648334 -19.498628845906673 0 0 0 +3511 0 2 -20.688194435719186 -0.06979091805966922 -4.230754208968255 0 0 0 +42 7 1 8.343318942567604 -23.95200892377677 -22.999104790827733 0 0 0 +3197 0 2 -3.2924899187284167 -0.20481561908748996 -15.02163803376159 0 0 0 +32 6 1 3.6024744656818544 -23.709509553147978 -23.493010259694717 0 0 0 +1925 321 1 21.790786410565232 -0.18640499291161183 -11.937596917512362 -1 0 0 +892 149 1 -1.933526671093138 -12.00220226353462 -0.23709455417397224 0 0 0 +828 138 1 -17.91492914267093 -21.4893999160858 -0.06014048039127697 0 0 0 +863 144 1 17.633975249792154 -18.203051694430286 -0.28884225169531036 0 0 0 +905 151 1 12.765981485099768 -12.463379381172562 -0.11398091919793561 0 0 0 +946 158 1 6.970518304057591 -7.954430721528828 -0.2442448713659324 0 0 0 +844 141 1 0.4178840403797861 -17.16750275435742 -0.1100043492615693 0 0 0 +2311 386 1 -15.377837430930253 -1.2454028488608084 -0.0450729876591321 0 0 0 +865 145 1 21.336303584839218 -10.826563441765046 -0.09530106135958571 -1 0 0 +3302 0 2 14.831765401721588 -7.40559511631571 -0.07198529854724271 0 0 0 +825 138 1 -17.947815513581382 -19.941848269369917 2.3572262004167346 0 0 0 +826 138 1 -16.645387548821347 -20.187567351265212 1.566720611286907 0 0 0 +962 161 1 -23.245243260989565 -23.5447947883942 7.735493173954208 0 0 0 +970 162 1 -17.77160728184587 -23.147965281186668 5.97302817970456 0 0 0 +971 162 1 -18.13639760346066 -23.834307919693575 4.673001525243099 0 0 0 +1012 169 1 23.769794870961256 -17.997708354431236 6.464452602838414 -1 0 0 +1017 170 1 -16.42038839556943 -19.44562594632789 5.899021306667442 0 0 0 +1019 170 1 -18.276060056490117 -18.426369001777953 7.240154727509453 0 0 0 +3361 0 2 -20.37592372016183 -20.5329254922289 5.09755750109135 0 0 0 +963 161 1 -22.477920096163157 -23.28947311389741 6.448531428930704 0 0 0 +1013 169 1 -22.820055939418253 -18.16575301922181 6.973809918027156 0 0 0 +3408 0 2 -21.228797160947227 -15.786795419517262 4.7536912677683665 0 0 0 +3328 0 2 -19.476505387141067 -16.163800351365715 1.7072448871911525 0 0 0 +1018 170 1 -17.626746887923982 -18.526856157552167 5.904565556783476 0 0 0 +1014 169 1 -22.496283364740655 -19.548372460834972 7.520124245006674 0 0 0 +964 161 1 -23.376932864380194 -22.585174679278154 5.4497379729300315 0 0 0 +824 138 1 -19.15103780108114 -19.968513112766416 1.4773395202109814 0 0 0 +3341 0 2 -22.338659764836493 -22.55164480074268 1.7670453200937521 0 0 0 +809 135 1 11.144167103577457 -22.172146713957154 0.4205919315622332 0 0 0 +823 138 1 -19.23784479706252 -21.25272793364145 0.7002290096755877 0 0 0 +1016 170 1 -15.415201130972516 -19.09364453629395 6.9990422086845365 0 0 0 +827 138 1 -16.733418710902416 -21.532804459911755 0.8640295408588152 0 0 0 +973 163 1 -14.124507404406128 -23.37799549884175 3.2974724913935756 0 0 0 +977 163 1 -13.675665581432341 -21.663742487361567 5.028100978831752 0 0 0 +978 163 1 -14.646771309434426 -22.154758320519463 3.9871027281523714 0 0 0 +1021 171 1 -10.36445857533906 -16.485575273165455 5.166448461520388 0 0 0 +1022 171 1 -9.604814316061052 -17.294655114909744 4.14436331602078 0 0 0 +1023 171 1 -9.882323428251896 -18.749675303349846 4.44111935861602 0 0 0 +1024 171 1 -11.340924924742387 -19.082252440786437 4.353426459935416 0 0 0 +1025 171 1 -12.13699217557138 -18.250453585722283 5.32559114597916 0 0 0 +1026 171 1 -11.839537582361622 -16.774323138360764 5.10820796155933 0 0 0 +3430 0 2 -9.015397711191875 -22.262422599457036 4.659319773622706 0 0 0 +1579 264 1 16.797672792300787 -2.176935572333541 23.235278605413125 0 0 -1 +187 32 1 18.922671763189758 -7.256956487354756 21.211691507295686 0 0 -1 +3367 0 2 -7.891526508235147 -20.771671810863946 1.302415012668749 0 0 0 +976 163 1 -13.293083225286928 -22.781205294539163 5.970787115012362 0 0 0 +990 165 1 -0.9213811803924374 -21.81335432140368 5.425699947903365 0 0 0 +1027 172 1 -4.111435342815136 -20.22476572661032 5.9633350261966 0 0 0 +1028 172 1 -5.245976146694997 -19.436455198051835 6.593956113781079 0 0 0 +1029 172 1 -6.035523712112334 -18.619254082586775 5.596667939991172 0 0 0 +1030 172 1 -6.509339174631416 -19.39033713755284 4.4000960487721 0 0 0 +1031 172 1 -5.371919912704307 -20.112810367607825 3.7380759251110383 0 0 0 +1032 172 1 -4.698319761797388 -20.98156642727746 4.777388582562297 0 0 0 +1037 173 1 -1.7582666076517373 -15.873422010025267 3.238662998072212 0 0 0 +1038 173 1 -1.8275465868684184 -17.144645868246542 4.018895700903711 0 0 0 +986 165 1 -0.23031846656616034 -22.291032180240794 7.784655049540484 0 0 0 +1033 173 1 -0.4661698524912639 -17.63135162754249 4.279877212031192 0 0 0 +989 165 1 0.45121129099874685 -21.25298113032178 5.095390094567234 0 0 0 +985 165 1 -0.905064840815274 -22.814180748168905 6.5385919558990855 0 0 0 +790 132 1 -3.259784973052714 -23.835555785654 2.876807402839859 0 0 0 +3370 0 2 -1.8876304570829885 -18.240650971266454 7.7931776430074216 0 0 0 +1375 230 1 6.301200058233522 -23.555890715102525 19.68176418889137 0 0 0 +186 31 1 12.48163612172437 -7.443539255522389 22.88556147583554 0 0 -1 +789 132 1 -2.97832871939051 -22.585580857928473 2.0826987874159597 0 0 0 +838 140 1 -4.485702942757511 -16.04603733182328 0.5382100206577913 0 0 0 +31 6 1 3.7197983084956934 -23.533671171639796 23.01333904825005 0 0 -1 +788 132 1 -4.223920709700759 -22.280731014986802 1.23414490647855 0 0 0 +2888 482 1 -20.48598042421177 -0.0480645918250935 16.577913233267537 0 0 0 +987 165 1 1.117767200232826 -21.684022136372725 7.5390158937592835 0 0 0 +849 142 1 5.3112774011391135 -17.253741241268624 2.4852383593872798 0 0 0 +841 141 1 0.5447743211090732 -19.992005583997003 0.5376007891299595 0 0 0 +800 134 1 5.920927088673508 -20.989979332433013 2.0861508503685013 0 0 0 +842 141 1 0.945829765969605 -19.00275336556104 1.6159528026477785 0 0 0 +843 141 1 1.3416935210651881 -17.67261522910054 0.9659093903570584 0 0 0 +988 165 1 0.9430905849462143 -20.6946504249846 6.415724114820948 0 0 0 +1034 173 1 0.4343312272334196 -16.715794790511257 5.117758364726594 0 0 0 +1039 174 1 4.636369979468257 -20.352671070638976 5.551762148451706 0 0 0 +1040 174 1 3.713026440407658 -19.18856811566884 5.124542833567731 0 0 0 +1041 174 1 3.666382242942735 -18.108569265809624 6.161936290857132 0 0 0 +1042 174 1 5.110481531771531 -17.77025956129795 6.526082196802357 0 0 0 +1043 174 1 5.911394514708227 -18.925354608501028 7.077230435253252 0 0 0 +1044 174 1 6.018183560771833 -19.94442240313583 5.987347752337909 0 0 0 +801 134 1 6.9197233167187395 -22.116733534678104 1.8927263123135567 0 0 0 +799 134 1 4.693606286278228 -21.291758319183174 1.275074920733106 0 0 0 +1169 195 1 -9.942286709145142 -23.967967088652298 10.29495872355987 0 0 0 +848 142 1 6.688733414342944 -17.665224818318745 2.9772461178257554 0 0 0 +802 134 1 7.381324194399122 -22.0912110098629 0.42465188942200477 0 0 0 +850 142 1 5.506682442197521 -16.307320591128843 1.30798052485593 0 0 0 +2889 482 1 -19.24341212639362 -0.37732068806733676 15.863094381497941 0 0 0 +3836 0 2 3.792689844852371 -23.466757882267355 4.184588354639091 0 1 0 +1002 167 1 15.538855082895655 -22.3019993217769 5.805665131062593 0 0 0 +847 142 1 7.426541176018866 -16.443821277994928 3.5077843443080967 0 0 0 +3286 0 2 10.316697543999464 -19.38599883759867 3.991887208574264 0 0 0 +1360 227 1 -12.714579246803664 -23.078983315466104 17.592541425843645 0 0 0 +855 143 1 12.937477151808086 -18.700751175430813 0.8174841083327137 0 0 0 +999 167 1 12.981737871021117 -21.05918069259227 5.72760869501284 0 0 0 +1000 167 1 14.087757407920204 -20.43897806876213 6.53263324709442 0 0 0 +1001 167 1 15.049178812854866 -21.5241678031044 7.024334763124826 0 0 0 +1045 175 1 10.86361286627453 -16.551550713617683 6.607916390513787 0 0 0 +1046 175 1 12.245258629615018 -16.6796084496416 7.28372374037399 0 0 0 +1047 175 1 13.516367571931971 -16.565363424360697 6.443183488910531 0 0 0 +3384 0 2 15.462991186085869 -18.464133719321445 3.2802561618269825 0 0 0 +3225 0 2 14.917531575530669 -23.09627985920959 1.20658384553709 0 0 0 +810 135 1 10.927542876182171 -22.787303131629223 1.7939908367496484 0 0 0 +998 167 1 13.488689090121397 -21.65437376368147 4.460737259325945 0 0 0 +997 167 1 14.428470544843176 -22.750078161905773 4.830441744748006 0 0 0 +1048 175 1 13.480933697546355 -15.336964037723549 5.523338343545296 0 0 0 +995 166 1 8.596436852845036 -23.379672906728757 7.0147043409322665 0 0 0 +935 156 1 -7.521996523003005 -3.417817310339845 0.004654979322226126 0 0 0 +996 166 1 8.47228236426946 -22.70188026885916 5.645626059332828 0 0 0 +856 143 1 12.618623644710521 -17.23711408311925 1.0149225588771857 0 0 0 +1533 256 1 17.547196276810283 -6.12653643011074 17.11808527968338 0 0 0 +3462 0 2 22.155326321607816 -21.171932967214264 1.1244807923948947 0 0 0 +1535 256 1 18.087616243887755 -8.256475921086814 15.950726447846021 0 0 0 +3397 0 2 18.363457643915563 -20.269561033117235 5.097131806145079 0 0 0 +859 144 1 19.017793068539554 -18.84742778994422 1.7265085748531295 0 0 0 +860 144 1 18.655717855966575 -20.31955989545773 1.5834688379947484 0 0 0 +861 144 1 17.322819947287083 -20.446526419330997 0.8395171486810715 0 0 0 +864 144 1 18.955018736907643 -18.068187597780195 0.44106963160055673 0 0 0 +1010 169 1 23.020866797481247 -19.700346690858016 8.159834655234784 -1 0 0 +1051 176 1 16.97461777099055 -15.744998216704227 7.983754834140037 0 0 0 +3321 0 2 -22.6172736683733 -18.99903731473426 2.9460841578849197 1 0 0 +3434 0 2 21.512119605856007 -19.580867690432243 4.39219144096832 0 0 0 +876 146 1 -18.03521680564244 -12.152865142078811 0.3130126107266326 0 0 0 +24 4 1 -6.631442432365954 -22.16818061556018 23.50436262084972 0 0 -1 +3696 0 2 13.332953367760366 -0.39140666376460176 19.827807707565075 0 0 0 +3088 0 2 19.740498996109856 -16.64306861697682 6.542610377306392 0 0 0 +813 136 1 19.436427070753236 -23.73436993593899 3.342995786281246 0 0 0 +3115 0 2 22.474912701695 -16.89939419922834 1.4685021701626524 0 0 0 +867 145 1 23.804558775171063 -10.918752839564059 0.5390477122881914 -1 0 0 +1345 225 1 23.487072786418093 -23.44054872058053 16.89218407142642 -1 0 0 +875 146 1 -19.33569887381712 -12.40894266709958 1.0752710419262237 0 0 0 +1060 177 1 -22.813115878465794 -11.935984900591766 5.6393857172407 0 0 0 +1061 177 1 -23.794286295429256 -12.982434746710762 5.104206606074699 0 0 0 +1063 178 1 -18.42521022697386 -12.752919128230396 5.0064653129847185 0 0 0 +1064 178 1 -17.9182631453025 -11.799765652277996 6.056571235854395 0 0 0 +1065 178 1 -18.11214188552009 -12.338299086558616 7.4437823470119815 0 0 0 +1066 178 1 -17.461231660616544 -13.665451987758786 7.570289009577071 0 0 0 +1067 178 1 -17.9302888044939 -14.62830606336065 6.502464586003645 0 0 0 +1068 178 1 -17.696059121608823 -14.04933281149815 5.112729243738505 0 0 0 +1059 177 1 -22.04595675327682 -12.620456412895454 6.808332109932299 0 0 0 +3431 0 2 -18.23139587380435 -9.57671287137203 3.1622219126868756 0 0 0 +1058 177 1 -23.001592920265413 -13.023991587891357 7.922122923801787 0 0 0 +3170 0 2 -22.453319892326775 -14.754254604360277 1.10341712269529 1 0 0 +3450 0 2 -21.14133921155722 -7.9207420373364705 7.02940260518029 0 0 0 +866 145 1 22.566192413255095 -10.054020919955892 0.4170748770030278 -1 0 0 +1062 177 1 23.257520423146055 -13.497168843516285 6.165414206853876 -1 0 0 +1057 177 1 23.97659667779991 -13.946813536914473 7.385994308670363 -1 0 0 +3403 0 2 -15.21473819502991 -8.909444124533644 1.1421888433157363 0 0 0 +3414 0 2 -15.511699670401486 -9.157178055737308 5.216631563593297 0 0 0 +3348 0 2 -15.322446718476323 -16.60862782189943 3.95390144857141 0 0 0 +1069 179 1 -13.621528833563012 -13.284700557651705 5.989979873693468 0 0 0 +1070 179 1 -13.692896262878337 -11.97723057703604 6.6861082103707465 0 0 0 +1071 179 1 -12.348539633872829 -11.513956561321555 7.217943344851085 0 0 0 +1072 179 1 -11.368103755034085 -11.469421612819646 6.044502127526391 0 0 0 +1073 179 1 -11.237112580034253 -12.798278769152155 5.3494854009395345 0 0 0 +1074 179 1 -12.594763991477736 -13.202756004079784 4.886885284509649 0 0 0 +3402 0 2 -8.976837666969855 -12.194089347397506 2.6872492435760393 0 0 0 +3464 0 2 -15.361347195827365 -12.607119898469609 2.648078246403397 0 0 0 +1075 180 1 -7.890238983812444 -13.367007819762284 6.406163393789202 0 0 0 +3442 0 2 -8.632031094829815 -8.622482017810736 4.767791646795321 0 0 0 +1079 180 1 -8.440999697940313 -11.474430568935126 7.9671403424362195 0 0 0 +1080 180 1 -8.414954166119804 -12.971329746289353 7.76089249123164 0 0 0 +1185 198 1 8.905562833556667 -23.796292552854673 10.655414975538386 0 0 0 +881 147 1 -10.31371677394445 -15.360546371027429 0.8917989947700176 0 0 0 +874 146 1 -20.48320699348137 -11.78173357345762 0.2760199343594123 0 0 0 +2881 481 1 21.255811595158093 -0.32192505405242705 17.219892869261766 -1 0 0 +1036 173 1 -0.9463329984867265 -14.960015245358143 4.085080458943398 0 0 0 +3224 0 2 -6.561559643405188 -15.441245240845806 3.3695480052766995 0 0 0 +1076 180 1 -6.534353187048512 -12.7925646802452 6.132540962478826 0 0 0 +3351 0 2 -4.380811216926613 -15.55167262329924 6.366601638662472 0 0 0 +3459 0 2 -4.547292102681271 -12.18480201659319 3.0624509785361 0 0 0 +1077 180 1 -6.50363857129574 -11.29710860119865 6.387491343189712 0 0 0 +1078 180 1 -7.005550069873508 -10.998520028535298 7.78527178034681 0 0 0 +1083 181 1 -2.132732729014939 -9.659178752708394 4.8023946894031635 0 0 0 +1084 181 1 -2.778035407631464 -10.500489131335543 5.909212712534127 0 0 0 +1085 181 1 -1.9254726396141386 -11.759527929479468 6.109574069637155 0 0 0 +893 149 1 -1.496796387626775 -11.082568264793212 0.8873205389962792 0 0 0 +1081 181 1 0.023291148538547867 -10.547745016222038 5.216161477597709 0 0 0 +1082 181 1 -0.7179023786531084 -9.254714398937526 5.119452039964877 0 0 0 +1086 181 1 -0.4644678370131602 -11.452763431014857 6.325954837930196 0 0 0 +3435 0 2 -5.312463157076066 -7.922125432116466 6.376925930115594 0 0 0 +887 148 1 -5.970288279050113 -10.66524974005194 0.35823514439235477 0 0 0 +1195 200 1 18.710879140987885 -23.948488094381105 12.387622498404081 0 0 0 +1492 249 1 -23.99794669371716 -4.559255162037272 19.47864031588119 0 0 0 +190 32 1 21.02508105808955 -6.580154004668273 23.191405739002743 0 0 -1 +851 142 1 6.332729908997644 -15.094935970437572 1.673279822077434 0 0 0 +1035 173 1 0.5002940892880385 -15.387614035762114 4.374013825659358 0 0 0 +889 149 1 0.3787305000939639 -12.466015819605833 1.3969757250358412 0 0 0 +894 149 1 -0.005063507952628216 -11.130397115312219 0.9064340785820946 0 0 0 +1087 182 1 3.512570936382949 -12.5225916095895 4.181849034091445 0 0 0 +1088 182 1 3.576412689557961 -11.07594900015623 4.6873614131121295 0 0 0 +1089 182 1 4.113578906485602 -11.218611292338803 6.0732611714008895 0 0 0 +1090 182 1 5.51121493031738 -11.838390668752439 6.058802996032068 0 0 0 +1091 182 1 5.49835502718614 -13.278459408539959 5.5281250099988855 0 0 0 +1092 182 1 4.814870782335919 -13.289616850448313 4.179080511717395 0 0 0 +3394 0 2 2.8298042209577114 -9.145035578406004 1.6312890439045855 0 0 0 +3405 0 2 6.483128952304012 -9.777952989337757 3.2753726441586495 0 0 0 +852 142 1 7.62572203669307 -15.415329206374986 2.391970501437723 0 0 0 +3273 0 2 9.620886926301736 -12.238287942956084 4.240638401542653 0 0 0 +901 151 1 12.799907015771213 -11.926883800826372 2.352520319331157 0 0 0 +1049 175 1 12.134412619162472 -15.262296103641459 4.825584520075046 0 0 0 +1050 175 1 10.933217340546554 -15.286509537130625 5.766499709798567 0 0 0 +903 151 1 14.51981443047334 -10.888176785310815 0.7868202366779056 0 0 0 +1095 183 1 14.746394369882015 -11.163875781328557 6.725437691119941 0 0 0 +1096 183 1 13.574303230458371 -11.416087102124202 5.8007068932182 0 0 0 +1097 183 1 12.22758897632243 -11.228815466261382 6.471636890368658 0 0 0 +3364 0 2 9.444656102139223 -7.891164131603252 4.603801493506349 0 0 0 +3377 0 2 9.725319565563659 -12.830812580358812 8.342517683256798 0 0 0 +909 152 1 16.426026844612807 -13.916860992832982 3.4700237873751716 0 0 0 +902 151 1 13.62255910446608 -10.711119590817036 2.031526826493124 0 0 0 +2899 484 1 -3.7105780772089867 -0.0356126625986598 17.675728632860384 0 0 0 +906 151 1 11.93367440737887 -12.272312014510742 1.161718372890089 0 0 0 +1056 176 1 16.445429630148872 -14.44317593552553 8.534977222517034 0 0 0 +908 152 1 17.57055139636679 -13.821512758994421 4.486819372216268 0 0 0 +910 152 1 16.479030530669455 -14.962830908009932 2.3716631153316325 0 0 0 +3257 0 2 22.236316009616097 -13.413679713848456 2.3523956991887442 0 0 0 +911 152 1 17.851815526777358 -14.978090915410608 1.7703150154306584 0 0 0 +3278 0 2 23.05159007341027 -9.495581504496597 6.894040592175569 -1 0 0 +1388 232 1 20.306591433053168 -23.97807643582719 18.530223300638962 0 0 0 +907 152 1 18.848647638329492 -13.894530074868351 3.7051920019728932 0 0 0 +912 152 1 18.955432573555093 -15.109379479958884 2.8355430821625127 0 0 0 +1103 184 1 20.206347003446048 -12.63416013133023 7.5563627849513795 0 0 0 +1104 184 1 20.253220187600267 -12.390394280831279 9.056051161660205 0 0 0 +3272 0 2 20.87191654420413 -10.299512323083444 3.820278787269901 0 0 0 +3320 0 2 16.807837897862797 -9.572609120621214 4.377344936883103 0 0 0 +1102 184 1 19.19192446694138 -11.71263334186716 6.903256428492904 0 0 0 +1105 185 1 -22.102655793168125 -5.95318466961866 3.614715347831778 0 0 0 +1110 185 1 -23.597791540253517 -6.026996767206477 3.6479514787615335 0 0 0 +1111 186 1 -18.735459728071735 -6.143195511477172 5.130014872597927 0 0 0 +1112 186 1 -18.174351658631053 -5.114774556736865 6.083828455681202 0 0 0 +1113 186 1 -16.743725922942556 -4.800199539739016 5.797555313370845 0 0 0 +1114 186 1 -16.492947189985614 -4.52052066312701 4.327575587230793 0 0 0 +1115 186 1 -16.905751820112396 -5.721670245941949 3.548315682473881 0 0 0 +1116 186 1 -18.412873759978474 -5.782667616378422 3.6877009295630137 0 0 0 +2309 385 1 -20.829134103933665 -3.6502935786205515 1.3200322095537986 0 0 0 +3314 0 2 23.919122931894908 -5.8603268614029504 7.122514041849684 -1 0 0 +3410 0 2 -22.44704716786636 -2.8284998700468917 5.749076803368907 0 0 0 +2310 385 1 -22.016486811552966 -2.755740469077524 1.638354932372291 0 0 0 +2506 418 1 -18.185384901319043 -0.7298677543511104 5.088153036246268 0 0 0 +2507 418 1 -19.061700472388225 -1.3353729402535153 4.0185108605167486 0 0 0 +2305 385 1 -21.81833472980705 -1.3976428602347877 0.9706038370228768 0 0 0 +1106 185 1 -21.535950804671174 -7.064810597893089 2.758453279366187 0 0 0 +2723 454 1 7.578863460990124 -0.2603220766129861 10.364871166201038 0 0 0 +2508 418 1 -18.56158688648351 -0.7609169615279996 2.709071277823106 0 0 0 +3101 0 2 -13.454062471703548 -5.848762896691145 2.8414388033622164 0 0 0 +1117 187 1 -13.071112719655039 -6.302241064726749 6.220489970538343 0 0 0 +1120 187 1 -12.188661808704634 -8.112378646759334 8.384086055395164 0 0 0 +1121 187 1 -11.56051707295376 -8.131733257865383 6.995510868214582 0 0 0 +1122 187 1 -11.651955744552259 -6.803122164939312 6.2392464386719855 0 0 0 +3311 0 2 -11.979989745297113 -9.26264957539165 3.137787985387401 0 0 0 +3323 0 2 -13.99498606005576 -1.2747242536222314 3.527954314127603 0 0 0 +3390 0 2 -10.559904208406648 -1.9059148261968153 2.217653424836197 0 0 0 +1126 188 1 -7.888180350902449 -4.814560560962669 7.582912516838958 0 0 0 +1127 188 1 -8.191822269626773 -4.915677840877184 6.11967429714855 0 0 0 +3284 0 2 -9.968871710502233 -5.61496628152287 3.1916579874985556 0 0 0 +3312 0 2 -16.571619305086116 -1.8670851393991261 8.42064259388609 0 0 0 +2513 419 1 -11.787668374502214 -2.4742715634289443 7.205650990649683 0 0 0 +2514 419 1 -13.018519669296 -1.619013198064621 7.0193007725264795 0 0 0 +2512 419 1 -10.746846510610267 -2.0775627366339298 6.177925042022491 0 0 0 +2511 419 1 -10.422376251772299 -0.62459245545211 6.243231680616188 0 0 0 +975 163 1 -12.644788068655382 -23.920682682573382 5.182320310144242 0 0 0 +939 157 1 -0.6449045350327843 -7.050221194683793 1.891093000372282 0 0 0 +3301 0 2 -5.462950493752959 -7.237740016960936 2.566559266228559 0 0 0 +2522 421 1 -0.46437303750074355 -0.7979635925097497 3.397110898235859 0 0 0 +1584 264 1 18.308050122429844 -2.0231100461693816 23.370290134151574 0 0 -1 +937 157 1 -2.694587307392272 -7.227411546710703 0.4315050550662051 0 0 0 +1123 188 1 -6.629643607638854 -3.084979832026326 5.506331456079684 0 0 0 +1124 188 1 -6.3732560403840735 -2.9206637794576085 6.983662127174146 0 0 0 +1128 188 1 -7.0193460661562135 -4.523182292701526 5.233874594023501 0 0 0 +1132 189 1 -2.0293769475553254 -4.5741298042297265 7.914627140473454 0 0 0 +1008 168 1 18.108151045566387 -23.840887618279407 8.309205335873672 0 0 0 +3452 0 2 -3.6273521777769053 -3.8901115052723156 2.2581535003949336 0 0 0 +938 157 1 -2.081171208538568 -6.725072641878276 1.7366161297523577 0 0 0 +1133 189 1 -2.3789390910107473 -6.013889059510415 7.591287072337762 0 0 0 +1134 189 1 -2.1286083588453337 -6.347621956221075 6.1238966497538145 0 0 0 +1129 189 1 -2.9225462034917054 -5.438329758934311 5.218989550379483 0 0 0 +928 155 1 -10.003771867536761 -8.740472342505047 0.3215758140589532 0 0 0 +1131 189 1 -2.903144506596247 -3.7286645652188923 7.093658948350134 0 0 0 +1130 189 1 -2.7182279456735423 -4.007110901709979 5.625408961194845 0 0 0 +3305 0 2 1.167003206758467 -2.5218756794281685 6.335466053638837 0 0 0 +3330 0 2 1.1730668529359065 -5.716967083300476 4.575740280949628 0 0 0 +1135 190 1 5.25228929412677 -4.786642914398927 7.606731966470379 0 0 0 +1136 190 1 4.1211413344714884 -5.818728090674818 7.6094138363051975 0 0 0 +1137 190 1 4.04799991893836 -6.628925573218821 6.330136444827693 0 0 0 +1138 190 1 5.377964001291636 -7.306849482883488 6.09702078415099 0 0 0 +1139 190 1 6.484588485926176 -6.280570440693184 6.036522265202944 0 0 0 +1140 190 1 6.595735430606629 -5.4406776541895825 7.295052269861041 0 0 0 +3285 0 2 5.9657564386898105 -2.525594531032543 0.9677797183391833 0 0 0 +3290 0 2 4.987722704900858 -5.591188973494137 2.5220952169969104 0 0 0 +3391 0 2 2.214354384698622 -3.7387692435055913 1.2733504061904484 0 0 0 +3428 0 2 4.047182823326397 -2.107154647097435 4.496170254203407 0 0 0 +940 157 1 0.05681222235696326 -6.641224695521231 0.6678871951989888 0 0 0 +2541 424 1 16.110329144523256 -1.2581883158808262 7.2099112731287365 0 0 0 +3329 0 2 11.631320456102223 -7.772075663291298 1.4355158018685614 0 0 0 +3419 0 2 8.653893212746373 -1.6338482211437688 2.851355908479867 0 0 0 +954 159 1 14.83290941823865 -3.262673115811718 1.6706144535372724 0 0 0 +953 159 1 14.471698295451422 -2.88943233131196 3.072807137695372 0 0 0 +3283 0 2 14.232357617169999 -6.909252196473885 3.7128715761871156 0 0 0 +952 159 1 13.384140838397293 -1.769267002905193 3.0768451282593636 0 0 0 +3360 0 2 9.176084046705784 -5.015535656519583 2.1255759912402783 0 0 0 +949 159 1 13.598561716883546 -3.8783293869776476 1.0627597718423756 0 0 0 +950 159 1 12.495577982884354 -2.8253682407099667 0.9816731263542889 0 0 0 +951 159 1 12.159664069644567 -2.059282461587678 2.2270126781889537 0 0 0 +1141 191 1 11.807055483528808 -3.206594008265493 6.566611745341369 0 0 0 +1142 191 1 13.213707740028244 -3.718871772083856 6.674020161437999 0 0 0 +1143 191 1 13.255175953525763 -4.9727245064938765 7.519815215239154 0 0 0 +1144 191 1 12.279298323909403 -6.017285563449272 6.977224600189265 0 0 0 +1145 191 1 10.867293067009204 -5.49140290561826 6.963048000137605 0 0 0 +1146 191 1 10.832550235538589 -4.279489655299183 6.091337097305894 0 0 0 +3 1 1 -21.498641833812457 -23.87117524845698 21.714549965565414 0 0 -1 +2542 424 1 15.185036744754202 -0.44857297965808923 6.291768572792281 0 0 0 +814 136 1 19.11168809581038 -23.75850984288025 1.848131479882517 0 0 0 +1149 192 1 16.760438591331884 -6.164612232670521 6.341534541456607 0 0 0 +1109 185 1 23.909369191337802 -7.391718163034026 4.150728676187785 -1 0 0 +958 160 1 20.047297670874787 -5.06140929367589 1.6678838780227145 0 0 0 +957 160 1 18.68045981934139 -4.408776993784003 1.636883235765724 0 0 0 +959 160 1 20.143562847492472 -6.390270393910953 2.4027263126809726 0 0 0 +955 160 1 17.615449968456335 -6.675863051189876 1.9570044748703035 0 0 0 +956 160 1 17.62781281212632 -5.397451606902536 1.1490274464909065 0 0 0 +960 160 1 19.02148468254359 -7.257310680036835 1.8429783127961072 0 0 0 +1107 185 1 -21.909232778195175 -8.40483843386914 3.4000284022714427 0 0 0 +1108 185 1 -23.446354603469764 -8.530585009014711 3.3995508489078508 0 0 0 +1150 192 1 18.1034850064429 -6.257023340690045 7.048904575685549 0 0 0 +1151 192 1 19.287967649722255 -5.756227564069542 6.231611316699857 0 0 0 +1152 192 1 19.123812875017148 -4.305320084136391 5.7127061724063966 0 0 0 +3270 0 2 21.980783615419092 -1.0189033103546896 1.2211752711156856 0 0 0 +3376 0 2 21.935325192538567 -2.12420322888575 5.097839591988924 0 0 0 +2540 424 1 17.551098151546334 -0.7243083242661096 7.185838367747032 0 0 0 +877 147 1 -12.018028845037117 -13.468935235376495 0.8674856732641024 0 0 0 +2349 392 1 17.756615467894747 -0.257560953348755 3.631231189974303 0 0 0 +1147 192 1 17.78610555508386 -4.328871594942509 4.9263135944557295 0 0 0 +1148 192 1 16.637814266765265 -4.743853180070569 5.885163898775647 0 0 0 +2350 392 1 18.76141343322979 -0.22331866945586076 2.485257623360999 0 0 0 +1015 170 1 -16.05760970847367 -18.967808285353097 8.385063721003688 0 0 0 +1020 170 1 -17.26975020088449 -18.008777157310163 8.31154699844652 0 0 0 +3404 0 2 22.022519301018676 -19.888515030318164 23.644735050499477 0 0 0 +3401 0 2 -19.459592525025226 -21.794368706230767 9.49355193241228 0 0 0 +1204 201 1 -22.355599188172814 -18.884995477521514 14.112997946224006 0 0 0 +1205 201 1 -21.679029559885638 -17.608408178410482 13.739253202311266 0 0 0 +1207 202 1 -17.32654508495042 -18.33244534942426 14.248288023513842 0 0 0 +1208 202 1 -15.926690492072169 -17.85868957667772 13.89743142091581 0 0 0 +1209 202 1 -15.168442527563444 -19.018813530732928 13.353310259084491 0 0 0 +1210 202 1 -15.839002724555753 -19.76451365954606 12.198007717507743 0 0 0 +1211 202 1 -17.23316065991221 -20.22749108852027 12.55582138111886 0 0 0 +1212 202 1 -18.023752701245755 -19.036327126973454 13.10013820203593 0 0 0 +3366 0 2 -19.192925899961118 -22.0444281706311 14.718213117975822 0 0 0 +1202 201 1 -21.87412028549825 -19.795293095272918 11.789867113510955 0 0 0 +1203 201 1 -21.716410331915743 -19.981451650521574 13.26769707014388 0 0 0 +1206 201 1 -21.870310764479182 -17.411744162723586 12.247975258407836 0 0 0 +1201 201 1 -21.26275030507105 -18.49312240796623 11.37848177682286 0 0 0 +41 7 1 9.019271093276394 -23.33015168079947 23.799118465447474 0 0 -1 +3316 0 2 -11.448444652202742 -20.89829828630422 8.141671254929015 0 0 0 +3266 0 2 -8.420788248473738 -17.91509273797118 8.141531807366606 0 0 0 +3416 0 2 -14.049281459072049 -23.229939510818124 10.059504480521932 0 0 0 +1213 203 1 -12.829655520132803 -16.424459722522048 8.732588356672906 0 0 0 +1214 203 1 -12.56032954525903 -17.526264583768697 9.736169861262956 0 0 0 +3332 0 2 -12.288170475383119 -21.169699334733675 12.714367143636055 0 0 0 +3349 0 2 -9.70309211689612 -19.674185783574544 11.058073564700265 0 0 0 +3467 0 2 -9.441508782193612 -19.23239835296164 14.907061124409154 0 0 0 +3468 0 2 -15.713672360727925 -21.901051880683216 15.506455579960592 0 0 0 +1173 196 1 -5.902062304663264 -22.478655467833452 14.26343243358939 0 0 0 +1410 235 1 -12.30113070589465 -18.053961825552314 17.393827961738097 0 0 0 +1405 235 1 -12.98017282943283 -17.351780363150528 16.258655013603374 0 0 0 +1172 196 1 -7.1384705754410005 -22.782565155750046 13.43260127323153 0 0 0 +1215 203 1 -12.526434027493163 -17.027186342779256 11.171378587275768 0 0 0 +3116 0 2 8.053571678304015 -11.827091003700565 0.02422607703821742 0 0 0 +1178 197 1 0.18512051418339875 -23.240745900273275 13.632583179471053 0 0 0 +1176 196 1 -6.046407849520746 -21.75838003420144 11.445316114919153 0 0 0 +1171 196 1 -6.8632621732356816 -22.942805981968828 11.919619597400388 0 0 0 +1174 196 1 -5.254450247797085 -21.24321771868416 13.755861589011891 0 0 0 +1175 196 1 -4.847840381607936 -21.4477384184298 12.310320391498081 0 0 0 +1177 197 1 -0.45373443247071865 -23.295301351460832 12.258725520045033 0 0 0 +1219 204 1 -6.253094482561783 -17.783762720392737 10.96317205060988 0 0 0 +1220 204 1 -6.88895532391108 -17.38865716023543 12.30371497794628 0 0 0 +1221 204 1 -6.003697844412144 -17.804643021606953 13.457398668397534 0 0 0 +1222 204 1 -4.6624893732831625 -17.086178850739678 13.310413821405637 0 0 0 +1223 204 1 -3.9893155415554116 -17.574240549990073 12.044195237849149 0 0 0 +1224 204 1 -4.815831997416458 -17.301099834569737 10.819842237794923 0 0 0 +3317 0 2 -7.671650984799278 -21.71004492301455 7.972930310107289 0 0 0 +3346 0 2 -1.5251137817138702 -20.072850352468656 14.768503875732762 0 0 0 +3374 0 2 -3.331090939452241 -21.693956207971738 9.313927980318866 0 0 0 +1182 197 1 -0.2520834027027356 -21.972258551816456 11.500032864531809 0 0 0 +1411 236 1 -6.784825160593357 -17.02604063701482 16.911970632937322 0 0 0 +1229 205 1 1.029425075367434 -17.638204974640253 13.092000180609162 0 0 0 +1230 205 1 -0.2158101564037198 -17.60846675267506 12.203699817054167 0 0 0 +1225 205 1 -0.6043479173407337 -16.201665128602208 11.772083021314318 0 0 0 +3293 0 2 4.668094293184816 -21.928955392399782 8.991152930870824 0 0 0 +1187 198 1 7.960885343238637 -22.829262582691438 12.789129028116566 0 0 0 +59 10 1 -15.033121939602877 -19.974599675607347 23.863544319705568 0 0 -1 +1228 205 1 2.2122069570600202 -16.94651147097188 12.423674255327807 0 0 0 +1231 206 1 5.197457075324086 -19.032030734326543 11.999322997335346 0 0 0 +1232 206 1 5.952261618443116 -18.410133724431425 13.176075206113916 0 0 0 +1233 206 1 7.297020363370095 -19.083691257820952 13.21618985182293 0 0 0 +1234 206 1 8.055441564488095 -19.003019335878257 11.90389303371626 0 0 0 +1235 206 1 7.337978810511449 -19.670115716571328 10.78162345063563 0 0 0 +1236 206 1 5.983257397453636 -19.026113761999785 10.681402548960987 0 0 0 +3334 0 2 5.158805894971885 -20.796901216924322 15.624926235212763 0 0 0 +3372 0 2 2.4518037183948422 -18.994916586292003 9.321512964736373 0 0 0 +1181 197 1 1.2764370540794854 -21.701078065385314 11.381146889004656 0 0 0 +1180 197 1 1.9076447496340623 -21.688438600120428 12.769990402016093 0 0 0 +1179 197 1 1.6754517734135106 -22.957224819476888 13.558218411859462 0 0 0 +1186 198 1 9.181776438848953 -22.923538470638167 11.863241090656784 0 0 0 +3373 0 2 10.722481327837436 -23.376917814976036 15.72683369817757 0 0 0 +3359 0 2 10.16174456979336 -16.721321620910977 10.531874655689784 0 0 0 +3313 0 2 9.974046148244138 -19.8854595224954 8.42859175809897 0 0 0 +1237 207 1 12.618487076653286 -18.129918786680733 13.390495212239815 0 0 0 +1238 207 1 12.14270425884958 -19.54719344133592 13.091992375638359 0 0 0 +1239 207 1 11.838082364697343 -19.692920499004135 11.625369816849307 0 0 0 +1240 207 1 13.074455368613254 -19.391734482737707 10.779169656627369 0 0 0 +1241 207 1 13.63418503996974 -18.023396501693945 11.125574634168117 0 0 0 +1242 207 1 13.85156947042488 -17.754109563702038 12.59200705831821 0 0 0 +3277 0 2 9.472619180073002 -16.17115036154615 14.412820000569331 0 0 0 +3433 0 2 14.0292499667197 -21.515585076001013 15.90957263215743 0 0 0 +3784 0 2 12.107732021815714 -23.048353397066172 8.775783610666997 0 1 0 +1053 176 1 17.102732154471827 -16.687826166418443 10.290590159948911 0 0 0 +1011 169 1 22.822831853857135 -18.293373203461474 7.592027563230044 -1 0 0 +1009 169 1 -23.52074124045593 -19.952643787656136 8.584380232880001 0 0 0 +1052 176 1 16.490944355154152 -16.837186007430493 8.900145414214615 0 0 0 +1246 208 1 17.770531094783067 -20.398881135047183 15.028171060366562 0 0 0 +1247 208 1 16.798447453894738 -19.651265878636014 15.922303558310732 0 0 0 +836 140 1 -4.5500751529180805 -18.46794133900421 0.3585401267170442 0 0 0 +3310 0 2 16.15469941458705 -21.509583486028852 10.775327516657974 0 0 0 +991 166 1 8.398845718925681 -23.76455117964308 4.593183058856887 0 0 0 +1197 200 1 20.27118796774351 -23.554108407168933 14.321558207421502 0 0 0 +1196 200 1 19.335300733157407 -22.88868094326526 13.3043448771391 0 0 0 +1243 208 1 16.712917947953628 -17.695528204559295 14.417118059977497 0 0 0 +1244 208 1 17.741697192530644 -18.397767548391837 13.572887158152165 0 0 0 +1245 208 1 18.64525939861331 -19.30978609022962 14.432559745240098 0 0 0 +1248 208 1 15.866124789116638 -18.702597964904786 15.218979884014356 0 0 0 +3306 0 2 22.111277319527698 -19.093303323807685 11.759831605433297 0 0 0 +3324 0 2 22.449460739472276 -20.53431005737485 15.053021484554158 0 0 0 +3358 0 2 18.714690936023 -19.62649423693753 8.733847525288066 0 0 0 +3432 0 2 22.466297165719126 -22.518224111331307 10.438915743397857 0 0 0 +3350 0 2 -21.033041691651015 -15.63128018273484 8.759374410015589 0 0 0 +3319 0 2 -18.117200848918355 -15.871254368656448 11.027852854492453 0 0 0 +1252 209 1 -22.541797660748387 -12.547976951118388 13.74058366568127 0 0 0 +1254 209 1 -23.26290086155384 -14.173721557900606 11.840768111042182 0 0 0 +1255 210 1 -19.87935126837506 -9.838489025753358 11.761130360370746 0 0 0 +1256 210 1 -18.714054944244996 -10.57436234951771 12.397800380926515 0 0 0 +1257 210 1 -19.124122982948485 -12.038719271625757 12.3813929954208 0 0 0 +1258 210 1 -19.38167553333457 -12.544455820966682 10.986827518984146 0 0 0 +1259 210 1 -20.42128058630835 -11.752425578718519 10.277606317346685 0 0 0 +1260 210 1 -20.054655940552767 -10.272468433501002 10.320033944802994 0 0 0 +3289 0 2 -23.34107684981593 -9.059463303883804 9.869992238546915 0 0 0 +3327 0 2 -19.207514567217626 -15.289999920233576 15.103648007941544 0 0 0 +1253 209 1 -22.887768298661292 -13.98218591235265 13.338213685914651 0 0 0 +3337 0 2 -17.31794553348839 -8.231680179988347 8.17594455597084 0 0 0 +1251 209 1 -23.760194641061933 -11.766510851707531 13.30137503932726 0 0 0 +3344 0 2 -23.28118086056096 -15.427518461784397 16.80368373877408 1 0 0 +1218 203 1 -14.066651297740027 -15.654455789729651 9.100205573328616 0 0 0 +3418 0 2 -8.873858629528426 -8.594080526866026 9.818734864342739 0 0 0 +1217 203 1 -14.076824153332675 -15.114256165013565 10.533588205383095 0 0 0 +1216 203 1 -13.819240552536451 -16.278293079055654 11.465105298886739 0 0 0 +1261 211 1 -10.741294231467384 -11.889705327479394 11.27119536666082 0 0 0 +1262 211 1 -11.356812948361291 -12.911839060749914 12.236219180001518 0 0 0 +1263 211 1 -12.107916769717827 -12.146842525565079 13.338256742176764 0 0 0 +1264 211 1 -12.983927090947864 -11.051990669580794 12.699031530175322 0 0 0 +1265 211 1 -12.221184276282381 -10.112035487697119 11.828074156715521 0 0 0 +1266 211 1 -11.721972560949132 -10.901622281080574 10.693556330835387 0 0 0 +3307 0 2 -15.799331796766685 -13.310276961047933 13.526840526348417 0 0 0 +3385 0 2 -15.420470179811796 -11.688271734366158 9.870706802096432 0 0 0 +3363 0 2 -9.618457025822702 -15.199917631044462 10.272708979307852 0 0 0 +1406 235 1 -11.933175544035004 -16.701578618593764 15.40605025349867 0 0 0 +3280 0 2 -8.430547066581186 -14.330405127845589 14.189219085253887 0 0 0 +3339 0 2 -8.394539988509608 -9.695999408522015 13.046661382378865 0 0 0 +3296 0 2 -16.8370068030907 -10.46576349028941 15.553059330574753 0 0 0 +3381 0 2 -1.3674656856812415 -14.871656347499558 8.198364700100067 0 0 0 +3265 0 2 -4.61288905897662 -13.721463194738455 14.928421207012066 0 0 0 +1267 212 1 -4.027220113673917 -13.537048809545988 10.510560263530628 0 0 0 +1268 212 1 -5.344382181532006 -14.135785046959784 10.160361242293337 0 0 0 +1269 212 1 -6.425867495398707 -13.829015467953333 11.139399596653396 0 0 0 +1270 212 1 -6.578584145716371 -12.373782442480476 11.409071865634537 0 0 0 +1271 212 1 -5.20540789321765 -11.777992548933135 11.776057887987566 0 0 0 +1272 212 1 -4.131089234916621 -12.041112574219293 10.751599486810493 0 0 0 +1273 213 1 -0.27888312404531235 -12.137337865804914 14.332889546166351 0 0 0 +3298 0 2 -1.6259702852348539 -9.864143561701914 9.387337369555011 0 0 0 +3409 0 2 -1.9348147014695412 -16.59096075385622 15.466982559560146 0 0 0 +1320 220 1 -5.326044253790627 -7.648513310341412 12.275396570545912 0 0 0 +1461 244 1 -5.485132017964809 -10.26399549987406 16.231970666315082 0 0 0 +1460 244 1 -4.94174552933303 -9.692195398578846 14.960531662063156 0 0 0 +3386 0 2 2.823622020371947 -15.051241389564394 7.679369779572829 0 0 0 +1227 205 1 1.7969355916248317 -15.562900477061502 12.063656755618377 0 0 0 +1277 213 1 2.1681932533036377 -11.473187671418804 14.233956785292781 0 0 0 +1278 213 1 1.1804376940123427 -12.514491050649898 14.747282058393838 0 0 0 +1226 205 1 0.5939769223060047 -15.532794516280328 11.130908621389729 0 0 0 +1276 213 1 1.9788566026137113 -11.029464995221524 12.796434218357593 0 0 0 +3444 0 2 1.947865687513546 -11.53033988037378 8.954317970805302 0 0 0 +1274 213 1 -0.4151994257607314 -11.842447761694302 12.816501969412059 0 0 0 +1275 213 1 0.5361261884144444 -10.674889590473311 12.454314445608137 0 0 0 +1279 214 1 7.019644018416185 -14.516005813442042 9.492024699284707 0 0 0 +1280 214 1 6.380859245776098 -15.520845447970233 10.416056977769914 0 0 0 +1281 214 1 6.360714877199137 -15.071997003906741 11.842335209635099 0 0 0 +1282 214 1 5.534145733475659 -13.817465971595071 12.041290206354416 0 0 0 +1284 214 1 6.29475594731161 -13.220133999955813 9.660033493908303 0 0 0 +3335 0 2 3.9288950424576954 -15.21518547380659 14.980575275713736 0 0 0 +3457 0 2 4.9364945284772315 -9.283547158270396 9.126655067204537 0 0 0 +3448 0 2 5.1710056760153025 -9.444310144847435 14.458647854420217 0 0 0 +1283 214 1 6.235370058189469 -12.808220173026337 11.160744086981323 0 0 0 +3299 0 2 7.145427051647732 -8.017255796734071 11.758388325113605 0 0 0 +3441 0 2 6.992256035727669 -12.967015331782104 15.318195047964723 0 0 0 +3362 0 2 9.024568721279724 -9.12602431414049 8.486685754361831 0 0 0 +1094 183 1 14.693199634280052 -9.75956007729086 7.337901021495834 0 0 0 +1098 183 1 12.184425495450142 -9.867029222534416 7.1476592712845965 0 0 0 +1093 183 1 13.362102389190865 -9.56360893140457 8.055750844529939 0 0 0 +1285 215 1 10.151296297925063 -12.900861293633724 13.117378400295106 0 0 0 +1286 215 1 9.60632664259085 -12.470968972655886 11.774106428601797 0 0 0 +1287 215 1 10.191676380150053 -11.085546164793474 11.399604988586011 0 0 0 +1288 215 1 11.725164485298594 -11.0840720496045 11.479100911197119 0 0 0 +1289 215 1 12.200871954922171 -11.373318475254093 12.884973217114325 0 0 0 +1290 215 1 11.650425241141258 -12.753383170134828 13.316603251711143 0 0 0 +3449 0 2 12.953770393404286 -13.586058474626363 9.686913344042503 0 0 0 +3304 0 2 12.034136880808564 -8.320896663092931 14.438498306365124 0 0 0 +3421 0 2 15.016395171421403 -13.83574966561207 13.368056465115869 0 0 0 +1294 216 1 17.43284287713118 -10.510077074284581 13.209171536775095 0 0 0 +1293 216 1 16.053914884474604 -10.423969963615994 13.786351846850174 0 0 0 +3445 0 2 8.55756541970786 -9.633712765428823 14.620129266523383 0 0 0 +1054 176 1 16.758534483115135 -15.317559349723528 10.867885177784656 0 0 0 +1055 176 1 17.133189772919295 -14.194159524929557 9.88433574488563 0 0 0 +1099 184 1 20.457326009278713 -10.901425488219607 9.352824192956861 0 0 0 +3440 0 2 20.614444697184904 -16.156520571609416 9.769807325756645 0 0 0 +3331 0 2 22.36473176637919 -16.48318291388359 14.149832305042109 0 0 0 +1100 184 1 19.317628609708358 -10.050323135667762 8.812160631637608 0 0 0 +1101 184 1 19.21849779301588 -10.226440373055901 7.337373871032383 0 0 0 +1250 209 1 23.734166275196802 -11.94126867514926 11.874531307029486 -1 0 0 +1249 209 1 23.478590041648705 -13.396493506784742 11.491314407922953 -1 0 0 +1291 216 1 15.227936819757513 -9.494522445954326 11.61824854517953 0 0 0 +1292 216 1 15.19345023339966 -9.385389692980956 13.123588350914362 0 0 0 +1295 216 1 17.472992551828966 -10.5589608333501 11.742687032491817 0 0 0 +1296 216 1 16.658960958129786 -9.435737276597614 11.165017238413908 0 0 0 +3423 0 2 18.68558557033182 -14.044646051327666 13.655478435337917 0 0 0 +3443 0 2 21.400428705753832 -9.702413061257158 14.908741043895784 0 0 0 +1298 217 1 20.680360884106786 -6.909587656005034 9.309588821120103 -1 0 0 +3268 0 2 -23.605004199989875 -7.18358346125254 14.088999013581148 0 0 0 +1303 218 1 -21.724595595668855 -5.302759950787758 11.059579639762301 0 0 0 +1304 218 1 -20.532274460347406 -6.144100270204794 11.453906251608991 0 0 0 +1305 218 1 -19.597015194787918 -6.467312320082984 10.332111077177709 0 0 0 +1306 218 1 -19.245051364420316 -5.3011810319987935 9.45763310269675 0 0 0 +1307 218 1 -20.444059422766955 -4.577661586251497 8.923272444925223 0 0 0 +1308 218 1 -21.199881825751934 -4.141467548817415 10.183452238348321 0 0 0 +3437 0 2 -23.113027559523303 -3.1118306040717796 13.564188798713424 0 0 0 +3711 0 2 -19.37326056115598 -2.4572159893676515 12.626344294344113 0 0 0 +1498 250 1 -18.19771978725765 -5.9784659497815005 14.33379549244431 0 0 0 +1497 250 1 -16.961317628584027 -5.9386944055517565 15.216207308529377 0 0 0 +1118 187 1 -13.73681845868938 -6.239845846765689 7.574813935016499 0 0 0 +1125 188 1 -7.5007498049873425 -3.3824559265130913 7.880093907625426 0 0 0 +2703 451 1 -14.16324165005486 -0.42951684255410855 10.628569153890856 0 0 0 +3447 0 2 -15.678108032840456 -8.061638721113193 12.300443024549063 0 0 0 +1119 187 1 -13.601061561680027 -7.628269327721265 8.166278555753722 0 0 0 +1309 219 1 -9.634643215562857 -4.051371260061948 12.021490400068501 0 0 0 +1310 219 1 -10.418222690031325 -3.606373247539941 10.790232103402566 0 0 0 +1311 219 1 -11.007626331582951 -4.807647746276417 10.022136929732282 0 0 0 +1312 219 1 -11.793331581978563 -5.7550478185923915 10.90455411128833 0 0 0 +1313 219 1 -10.971900384758912 -6.103009768576788 12.139510791988021 0 0 0 +1314 219 1 -10.60563436068127 -4.839792459035415 12.895260006359749 0 0 0 +2704 451 1 -13.526286017894343 -1.2297273489903677 11.711223250690477 0 0 0 +3282 0 2 -13.845998243931874 -4.860606709655933 14.468420419164634 0 0 0 +3342 0 2 -16.09953800219193 -4.390334468995647 11.589422829892152 0 0 0 +831 139 1 -11.985655165698518 -19.78975175629538 0.9910076124395633 0 0 0 +1505 251 1 -11.539547930769299 -8.641411996770417 15.029084296867628 0 0 0 +2705 451 1 -12.148802338224243 -0.7129090633510166 12.056523641767416 0 0 0 +2897 483 1 -10.395555901380046 -0.9006756019603618 15.244856144434777 0 0 0 +3291 0 2 -16.25759187390523 -2.0486970514499134 15.273264929441067 0 0 0 +1506 251 1 -13.012556336508279 -8.743003692047214 15.151124082150474 0 0 0 +1504 251 1 -11.053432301712721 -7.362445256930015 15.620998835842485 0 0 0 +2896 483 1 -11.659524349802076 -0.7160131388418983 16.04871699000266 0 0 0 +2711 452 1 -4.5245998009962225 -1.6522671130462816 14.23668558255067 0 0 0 +3723 0 2 -1.0773445443589031 -1.429659655354562 9.508780954148985 0 0 0 +2707 452 1 -5.798446072730455 -0.16774656843546196 12.693205628407174 0 0 0 +2709 452 1 -6.799050450579736 -2.305051294761272 13.637009873713188 0 0 0 +3352 0 2 -4.591497203434104 -2.2990830340452666 10.137048870334723 0 0 0 +1315 220 1 -4.804953564826351 -8.433473676565383 11.08263907080739 0 0 0 +1316 220 1 -4.360976367888692 -7.487118008967174 9.99825796035726 0 0 0 +1317 220 1 -5.464665246480334 -6.560865078666804 9.586930937173365 0 0 0 +1318 220 1 -6.015489082142427 -5.825852871128928 10.746767348466665 0 0 0 +1319 220 1 -6.475936843705972 -6.8035341659300945 11.784900277868125 0 0 0 +1321 221 1 -1.1554993456208877 -7.389486366086604 13.06787205798123 0 0 0 +2708 452 1 -7.080678461777689 -0.8823061556037692 13.173142035892383 0 0 0 +1326 221 1 -1.9413775825038024 -6.628763330656027 14.10828189246184 0 0 0 +102 17 1 23.549410420925973 -12.735918511755019 23.684750639203887 -1 0 -1 +1324 221 1 -2.155078426619359 -4.69345890909524 12.649076961729095 0 0 0 +1325 221 1 -2.927998062234759 -5.716876884071637 13.437694909048062 0 0 0 +2710 452 1 -5.777791082289005 -2.31027704153639 14.78338538302062 0 0 0 +1511 252 1 -7.068038294417964 -6.342452530903994 15.206042466909098 0 0 0 +1510 252 1 -5.690944723573231 -5.814074780522242 15.593111007604298 0 0 0 +830 139 1 -12.767117420472943 -18.471366037084202 1.0951453434702345 0 0 0 +3395 0 2 2.956565514277094 -7.141528886293294 12.103965222627702 0 0 0 +1322 221 1 -0.5042935201685547 -6.4020729240827094 12.090986587066627 0 0 0 +1323 221 1 -1.4665640992364446 -5.3763358864743065 11.515027007146278 0 0 0 +3294 0 2 1.2854965785381238 -7.62236542869708 8.957714041080887 0 0 0 +58 10 1 -15.831179821324795 -21.258926324655697 23.814732760833923 0 0 -1 +2717 453 1 0.5896940832276395 -0.8519922870112646 12.619234461514628 0 0 0 +1327 222 1 4.699457493393327 -4.083634262214908 12.687034325866916 0 0 0 +1328 222 1 5.966474068398841 -4.9213483024685045 12.481675408000955 0 0 0 +1329 222 1 7.208770333802695 -4.095699716450351 12.250074430501275 0 0 0 +1330 222 1 7.3188866188032 -3.0920044223754624 13.408515908345125 0 0 0 +1331 222 1 6.059334496470858 -2.273848182539923 13.681071684915619 0 0 0 +1332 222 1 4.902986304922568 -3.234406125237251 13.911248715115322 0 0 0 +2716 453 1 1.3901197288938847 -0.9799404312067017 13.867252824810915 0 0 0 +3340 0 2 7.067675682147373 -1.249111814164612 6.1917608166834865 0 0 0 +3415 0 2 2.2816270935212484 -3.374677824024949 9.881337999186986 0 0 0 +2715 453 1 0.46587282226714355 -1.0862443783868214 15.036663496040317 0 0 0 +3398 0 2 1.6062312517061943 -8.305665599774517 15.76658402608277 0 0 0 +1523 254 1 4.506542818784582 -4.692354301926462 17.824527265300933 0 0 0 +3267 0 2 1.8122975815601543 -4.788920337795742 15.436406684606515 0 0 0 +1333 223 1 12.576349443409281 -7.1317167308745 10.469326399553566 0 0 0 +1338 223 1 11.07854234481689 -7.3794962994573625 10.429199921181663 0 0 0 +2922 487 1 9.872458186253441 -0.340505771314809 14.221341746441015 0 0 0 +3322 0 2 8.841431739892293 -3.212435883470478 8.981925976796836 0 0 0 +1334 223 1 12.971274709544382 -6.171379484274912 11.541958412483034 0 0 0 +1335 223 1 12.280047818333296 -4.850255750470023 11.268354285914597 0 0 0 +1336 223 1 10.784096439338335 -5.004951664956316 11.358956495178209 0 0 0 +1337 223 1 10.323600287870736 -6.073513868589812 10.37584611624776 0 0 0 +3279 0 2 5.230576979974008 -0.425651191728121 23.11535742580516 0 0 0 +2726 455 1 13.436737824048189 -1.0242756296775528 9.82782861378405 0 0 0 +2727 455 1 12.206619452194678 -1.2486202818848051 10.660807001137771 0 0 0 +3297 0 2 14.04633162832404 -4.106369672416729 14.433975384296845 0 0 0 +3336 0 2 9.28214074648836 -5.906529700970416 14.370382808498109 0 0 0 +3396 0 2 14.453791262546671 -0.3464118410201113 13.605744189283536 0 0 0 +1339 224 1 16.77089554461533 -2.7905754564343153 10.25107510808049 0 0 0 +1340 224 1 15.611677430021208 -3.7620231152320995 10.15281755994512 0 0 0 +2728 455 1 11.210286528936189 -0.12317647779618165 10.536395529897149 0 0 0 +2918 487 1 10.50709590134974 -2.1129505830356115 15.846081609852213 0 0 0 +2917 487 1 10.458932830536005 -1.7544611098241 14.38648597249273 0 0 0 +2882 481 1 22.646364424005267 -0.9047615455340267 17.40594518949415 -1 0 0 +1536 256 1 18.150034110844405 -7.430820368340084 14.662580393250327 0 0 0 +3281 0 2 -23.494045057105108 -1.3448055554717266 9.148746515587176 0 0 0 +1299 217 1 21.541574433047785 -5.654039700797653 9.528355685704833 -1 0 0 +1300 217 1 22.493403730163116 -5.7239954498822465 10.681259448644823 -1 0 0 +1531 256 1 17.279898169865653 -6.186931458882643 14.678341477550234 0 0 0 +1297 217 1 20.141920657600313 -7.56643686798717 10.600518248870346 -1 0 0 +1302 217 1 21.126165226854912 -7.595067530646932 11.748347770626573 -1 0 0 +3275 0 2 20.39191582459004 -2.453558736750452 8.516016291665377 0 0 0 +1301 217 1 21.698748288383257 -6.187007502086948 11.863543159486248 -1 0 0 +1341 224 1 16.00291091446825 -5.230693555886657 10.10089139832119 0 0 0 +1342 224 1 16.838805883113533 -5.567228679317647 11.30874717163307 0 0 0 +1343 224 1 17.993167729461003 -4.634780052057883 11.498865810703018 0 0 0 +1344 224 1 17.570952789137806 -3.214928825078316 11.466412675733777 0 0 0 +3276 0 2 21.478370715034348 -2.40986254343762 11.666380379566734 0 0 0 +3388 0 2 21.085184720567657 -4.44686229531883 14.694367948532552 0 0 0 +3453 0 2 18.367608735455725 -1.6633890521792924 15.880843427281025 0 0 0 +4 1 1 -22.831125633579394 -23.19290714921885 21.445378355948375 0 0 -1 +1354 226 1 -18.24262546575699 -23.64966198247096 18.083102812565933 0 0 0 +189 32 1 19.59036341592105 -6.222307796697887 23.43769193233935 0 0 -1 +53 9 1 -22.714913633517792 -17.4611727618534 23.581504704344525 0 0 -1 +52 9 1 -21.20380901405774 -17.31173214339776 23.301770567874794 0 0 -1 +1 1 1 -21.30616558139805 -22.32399569823291 23.659543939591796 0 0 -1 +57 10 1 -17.3391048343438 -21.109241439430647 23.87733258070112 0 0 -1 +6 1 1 -22.621130765249678 -21.691891482599168 23.348148376040754 0 0 -1 +1404 234 1 -16.502396371403773 -19.128776452746433 17.50259210884741 0 0 0 +1399 234 1 -16.54273182414854 -17.874804039030114 18.364087436835135 0 0 0 +1398 233 1 -20.648837349112696 -18.105453945638512 18.065017898410424 0 0 0 +1397 233 1 -20.230023760335534 -19.05157099261734 16.918277265216105 0 0 0 +1396 233 1 -20.461430394361408 -20.53925688216481 17.298379385960466 0 0 0 +1356 226 1 -17.535729502085488 -23.736144665501353 20.620890574102017 0 0 0 +1355 226 1 -18.634496595854852 -23.607473676509503 19.557058713401283 0 0 0 +3417 0 2 -19.001964305680858 -19.018526541854573 20.8789579472513 0 0 0 +5 1 1 -23.533880145883867 -22.66202905037804 22.664227507313967 0 0 -1 +1395 233 1 -21.904974521603688 -20.77849900151562 17.82404913886948 0 0 0 +1393 233 1 -22.114249275281058 -18.356557810960087 18.42528884869289 0 0 0 +1540 257 1 22.79922706988189 -0.8605957709125875 21.62163492619196 -1 0 -1 +2 1 1 -20.61752668133171 -22.890927395807175 22.447038409223225 0 0 -1 +1532 256 1 17.756248038676947 -5.320556259351804 15.825196145033035 0 0 0 +1403 234 1 -16.559447903181972 -20.385863639951506 18.36248911328435 0 0 0 +1394 233 1 -22.238295811401954 -19.781157212953573 18.981758913023373 0 0 0 +191 32 1 21.0514837230847 -7.883422078789626 22.39982616536735 0 0 -1 +1401 234 1 -15.41389417119332 -19.074678250899044 20.19283247734573 0 0 0 +1400 234 1 -15.394894779833109 -17.82566507229614 19.338642790469557 0 0 0 +1402 234 1 -15.446868649310021 -20.361358185777014 19.38658268220904 0 0 0 +3393 0 2 -13.998593073560556 -23.000120449949687 21.417651652988585 0 0 0 +1409 235 1 -11.458431206965386 -17.112602093782094 18.18507973337524 0 0 0 +1408 235 1 -10.387410066490952 -16.408952733453404 17.338922138772638 0 0 0 +1362 227 1 -11.278906180092239 -22.90310338577537 15.637340162830696 0 0 0 +103 18 1 -17.334466694391338 -15.641501273797715 23.612232419351315 0 0 -1 +141 24 1 18.587066271716477 -10.301874394411259 23.702492781081 0 0 -1 +3295 0 2 -12.007682623226767 -18.360500455173604 21.97984998480207 0 0 0 +3371 0 2 -10.091703179420863 -21.332481941121564 22.236114903724076 0 0 0 +3425 0 2 -9.702133003533362 -19.836044353482663 18.734763935682025 0 0 0 +1361 227 1 -11.42485832750438 -22.46078918061954 17.10404514346753 0 0 0 +192 32 1 20.334287985951907 -7.759295165099078 21.05806395954976 0 0 -1 +72 12 1 -8.393579370350666 -16.861709769324044 20.88807352692069 0 0 -1 +1363 228 1 -7.825894715626405 -23.33123689176832 17.53279886150218 0 0 0 +70 12 1 -7.26599305926922 -15.794652499898255 22.833660049287673 0 0 -1 +68 12 1 -8.376535825775553 -17.92079688703394 23.20209244051418 0 0 -1 +1368 228 1 -7.004561185603747 -22.18586779428226 18.09632521109808 0 0 0 +2712 452 1 -4.763632452193641 -0.226038356791759 13.7718826987043 0 0 0 +1366 228 1 -5.8635573505875955 -23.99608184426818 19.574348911633805 0 0 0 +1419 237 1 0.41502503888902387 -17.14667844149679 18.052265128741926 0 0 0 +1418 237 1 -0.27850026030266395 -16.265070783303532 19.098219492609317 0 0 0 +1416 236 1 -6.101313989579089 -15.93516849273102 17.73443813133748 0 0 0 +1414 236 1 -4.244707318324558 -17.508050644773977 18.13058062121574 0 0 0 +1413 236 1 -4.847591420666809 -18.471174996297663 17.11727138950747 0 0 0 +1412 236 1 -6.333758158106658 -18.414088868152533 17.28704499359688 0 0 0 +1367 228 1 -5.727803463589182 -22.798849024940424 18.645529701916455 0 0 0 +71 12 1 -7.182639209637171 -16.072931410848362 21.352411147624654 0 0 -1 +3392 0 2 -1.636371910564455 -20.85447576833729 18.38397278896711 0 0 0 +3422 0 2 -4.9408460369370815 -19.49658999968548 20.90050694440559 0 0 0 +3429 0 2 -1.5668750103360525 -23.277250637196275 21.2315871258105 0 0 0 +3870 0 2 -3.0883263468076407 -23.75080087540782 16.53842928093288 0 1 0 +67 12 1 -8.45361288830557 -18.138711384184806 21.673363344519107 0 0 -1 +69 12 1 -7.199997512845722 -17.078644135945314 23.62047010535866 0 0 -1 +1372 229 1 2.040637155520693 -23.805277248481037 19.125501098111656 0 0 0 +35 6 1 5.243234767585958 -21.572621930189175 23.3615106967849 0 0 -1 +115 20 1 -6.5261457975800345 -8.817741538968427 23.247002814596517 0 0 -1 +3413 0 2 1.9484502218678843 -20.06296139868898 16.10750789665744 0 0 0 +1373 229 1 1.4998160037207071 -23.395214944693667 17.766681488192887 0 0 0 +1428 238 1 6.138190334132628 -17.134042212691767 16.96930415989828 0 0 0 +1427 238 1 7.212373583864704 -16.337584299158483 17.752588297228787 0 0 0 +1426 238 1 7.941916686734654 -17.295917674463897 18.774656896262798 0 0 0 +1425 238 1 7.492196897212834 -18.73938524884352 18.380778819803194 0 0 0 +1424 238 1 6.031384567637484 -18.955471926049004 18.53622501148835 0 0 0 +1422 237 1 1.9109711047835598 -16.46315210103634 20.34127304618285 0 0 0 +1417 237 1 0.35958606198385934 -16.422672686486347 20.389197237307062 0 0 0 +1380 230 1 6.744337367115952 -22.310520016771864 18.85824465602317 0 0 0 +36 6 1 4.001076367262596 -22.079458476261152 22.68455841264751 0 0 -1 +3264 0 2 2.4535141224561574 -20.187731896837985 19.980081184083573 0 0 0 +3274 0 2 -1.444014381174897 -19.089526563618975 22.54943477934296 0 0 0 +3164 0 2 4.716509433757238 -17.379206659854653 22.482864517150784 0 0 -1 +966 161 1 22.631946171114365 -23.403648437655526 6.543027214188916 -1 0 0 +1423 238 1 5.283006056072233 -17.91041629992975 17.84418438790226 0 0 0 +3688 0 2 12.728681613212558 -22.243137017635924 22.06251224021464 0 1 0 +796 133 1 0.33052220463209775 -23.67931009862271 0.631468836118503 0 0 0 +3338 0 2 18.812655714036186 -3.0385676099975094 19.894332579507132 0 0 0 +88 15 1 11.784080321910626 -17.95654050295412 23.559358788479347 0 0 -1 +1379 230 1 8.143383315144206 -22.44010772149329 18.331180684820225 0 0 0 +3309 0 2 15.752304122977675 -5.164274356075116 20.89121103453577 0 0 0 +3303 0 2 9.00529627352327 -19.76152401723713 21.60007596781678 0 0 0 +1434 239 1 12.484915085137867 -15.814778947651892 17.403817541947586 0 0 0 +1433 239 1 13.463090975935428 -16.820294177692244 18.04763067251431 0 0 0 +1430 239 1 11.244452783356644 -15.576157489744652 19.487901321424882 0 0 0 +1429 239 1 11.070000081512088 -15.929854829217359 18.04271041428999 0 0 0 +89 15 1 12.832642143680042 -18.563707293739345 22.653626053961286 0 0 -1 +3356 0 2 9.75887193202435 -19.01177775353824 15.897171473894716 0 0 0 +3380 0 2 16.48010786641999 -22.613529909356505 20.01539794066311 0 0 0 +3426 0 2 11.943687433482022 -20.948615111967996 18.915226051770876 0 0 0 +3420 0 2 -8.858386486316187 -0.3379394481080133 9.565033515085473 0 0 0 +90 15 1 14.004741677605063 -19.030824829175987 23.50802370696801 0 0 -1 +1378 230 1 8.98088719527866 -22.704451121670964 19.54940496469461 0 0 0 +1432 239 1 13.602291106583975 -16.499212072059912 19.523045967577886 0 0 0 +1431 239 1 12.208297737405035 -16.518576092443034 20.190088628000407 0 0 0 +43 8 1 17.766945294205883 -22.71665371506845 23.777943264656138 0 0 -1 +3269 0 2 15.657855344360447 -19.417715970435857 20.011817403001015 0 0 0 +133 23 1 12.311672396863957 -12.53675970094247 23.938756184924397 0 0 -1 +1389 232 1 20.131382011084398 -22.55763467669159 18.02307911064693 0 0 0 +134 23 1 12.6028320778271 -13.350100777387404 22.68251692909231 0 0 -1 +1440 240 1 18.67219467164329 -17.95066487327925 18.74422235789347 0 0 0 +1439 240 1 17.865201889776436 -16.844577586806178 18.0530922695137 0 0 0 +3345 0 2 18.350940832312606 -19.92926111847359 22.049474910119148 0 0 0 +1436 240 1 20.61531196055584 -17.07136483497732 17.34684366078897 0 0 0 +1435 240 1 19.846028563243923 -18.310393025433445 17.83433778358271 0 0 0 +1392 232 1 21.34987355030949 -23.09234022789171 20.635210895023683 0 0 0 +1391 232 1 21.01375966245927 -21.6748918520472 20.173033475219327 0 0 0 +1390 232 1 21.118572503483776 -21.609249669169547 18.65007752375804 0 0 0 +3343 0 2 23.039975454591325 -18.119458757237144 20.56363704052599 0 0 0 +3389 0 2 21.167503961591922 -16.346883173080915 22.987500242245364 0 0 0 +882 147 1 -11.740478360437052 -14.946000135012197 1.1273412751870653 0 0 0 +890 149 1 -0.19426108468894954 -13.516396349936686 0.42519382421241336 0 0 0 +107 18 1 -16.087613314005146 -13.552362623856713 23.338719940686538 0 0 -1 +99 17 1 -21.7215305621904 -12.424622191994395 22.68101809846425 0 0 -1 +1448 242 1 -16.847811651382095 -14.494431514367703 17.5470582634689 0 0 0 +1447 242 1 -17.305615509833874 -13.23344219431751 18.28064198423771 0 0 0 +1446 241 1 -20.862225588811885 -12.094463659611385 17.82967881499284 0 0 0 +1445 241 1 -21.954876951399218 -11.879489329865583 18.817958540144108 0 0 0 +1444 241 1 -23.172204552738318 -11.253250772938406 18.204111641170446 0 0 0 +100 17 1 -22.84701016589857 -11.592736123314918 22.112457734995715 0 0 -1 +106 18 1 -17.24233581963193 -12.744663444897439 23.921769190070265 0 0 -1 +3365 0 2 -19.144608159762004 -10.363320642547432 20.79618145941463 0 0 0 +3368 0 2 -19.611798362857076 -15.131882755710485 20.346699912170656 0 0 0 +1443 241 1 -22.91926981895213 -9.818526421461918 17.732457465135372 0 0 0 +1441 241 1 -21.001726191052004 -11.200603500850148 16.660468519845757 0 0 0 +3424 0 2 -23.57337239348993 -8.376359199605012 21.013924348205475 1 0 0 +108 18 1 -16.57967795006502 -14.798214314254349 22.624961373183986 0 0 -1 +1452 242 1 -16.32245571152935 -12.929267069424768 19.383784997093162 0 0 0 +101 17 1 23.82269526042839 -12.313278088062278 22.26124674552892 -1 0 -1 +1442 241 1 -21.52386288825177 -9.807592242127932 17.114181260179716 0 0 0 +782 131 1 -10.895040531313544 -23.24624179901291 0.11485635758192671 0 0 0 +110 19 1 -11.080402419330104 -9.680125622195423 23.749281925108438 0 0 -1 +111 19 1 -11.412359686685946 -9.635465220888378 22.243940447694516 0 0 -1 +1407 235 1 -11.031158121866566 -15.729984365665588 16.186604340999274 0 0 0 +1450 242 1 -14.497065272200393 -13.904775460181495 18.072778961628263 0 0 0 +1449 242 1 -15.500822488331794 -14.262282840067472 16.984645395542273 0 0 0 +1451 242 1 -14.963038808875684 -12.684899730471512 18.833020945592793 0 0 0 +1458 243 1 -11.219351558518124 -11.564313015435935 17.745799786884344 0 0 0 +1457 243 1 -10.248234951441825 -12.706279961267771 17.88634209397895 0 0 0 +1456 243 1 -8.847081120741922 -12.21831407171166 17.594280868675312 0 0 0 +1455 243 1 -8.470244593510651 -11.073374904654061 18.516867069333447 0 0 0 +1454 243 1 -9.489946847625175 -9.955805206302216 18.47506996154504 0 0 0 +1453 243 1 -10.889317263562505 -10.407610340949828 18.628512528617925 0 0 0 +113 19 1 -13.692002056106599 -10.537596797037862 22.63243262746209 0 0 -1 +3407 0 2 -15.85327938435509 -9.41972695151134 19.656208480548298 0 0 0 +3463 0 2 -12.686038741131785 -14.911728477148701 21.740866523872604 0 0 0 +112 19 1 -12.883994079577217 -9.440688142704023 21.940892798913943 0 0 -1 +1463 244 1 -3.2083766327373646 -10.131229220806002 17.27177398829063 0 0 0 +3427 0 2 -9.21774921829367 -12.797253972062563 22.096676886489345 0 0 0 +1415 236 1 -4.5885724860213495 -16.072123753866784 17.74995547858378 0 0 0 +3333 0 2 -3.0928589899176018 -15.346535695012816 21.151811381480126 0 0 0 +78 13 1 0.23687633988100207 -14.727616279540955 23.30290414784949 0 0 -1 +118 20 1 -5.102963040441457 -8.4647927335036 20.788779209148707 0 0 -1 +1464 244 1 -2.679352504603821 -9.556410518113378 15.96205629114355 0 0 0 +1462 244 1 -4.681677576954585 -9.804736836314953 17.41972989567919 0 0 0 +1459 244 1 -3.4899165905968386 -10.045911024205814 14.754290971561195 0 0 0 +116 20 1 -6.905995219014145 -9.646364958443629 22.05031090061916 0 0 -1 +3271 0 2 -5.234631597241472 -12.384353773175384 20.281677786390564 0 0 0 +3378 0 2 -1.8735394048674474 -11.43897016817721 21.611095891967345 0 0 0 +3438 0 2 -2.1328181508557935 -13.601600885879481 17.367985118456264 0 0 0 +117 20 1 -6.561782008856339 -8.916286923134178 20.738826485830852 0 0 -1 +857 143 1 13.573305863635031 -16.438701093561487 0.20156904264489728 0 0 0 +1420 237 1 1.937352938090838 -16.73834878860477 17.863719016548302 0 0 0 +1421 237 1 2.4075674609024724 -15.940001591088336 19.03856050341243 0 0 0 +1470 245 1 0.6551492894378408 -10.381697783201997 18.869432643076323 0 0 0 +1469 245 1 1.7197879398975886 -9.927909654654034 19.856808828321277 0 0 0 +1468 245 1 1.859135956207934 -10.882535551342654 21.02913670704288 0 0 0 +1476 246 1 5.369869091674948 -11.627713765467833 18.19955449712248 0 0 0 +1475 246 1 6.159200059665323 -10.546733192049983 18.83435775739611 0 0 0 +1474 246 1 6.076142984382891 -10.755856130618712 20.324279526221808 0 0 0 +1473 246 1 6.572503976129722 -12.19166730128158 20.697837115503535 0 0 0 +1472 246 1 5.882493908098303 -13.327116152350037 19.97607094147912 0 0 0 +1471 246 1 5.930363206888588 -12.999569217301412 18.48590469449408 0 0 0 +1467 245 1 2.0543678445322637 -12.321102078336695 20.53193047618479 0 0 0 +1466 245 1 1.0712818181677544 -12.729162817936821 19.472825347915066 0 0 0 +1465 245 1 0.9932228366041145 -11.74952487903416 18.30033917155836 0 0 0 +3465 0 2 3.928185816987335 -8.191796179737747 22.275520359647395 0 0 0 +135 23 1 13.724728839482303 -12.747853985817398 21.81476262609378 0 0 -1 +136 23 1 14.968139508085407 -12.525435388951331 22.648343626704072 0 0 -1 +1482 247 1 12.715073678205885 -11.406755441395308 18.071131770579598 0 0 0 +1481 247 1 11.862690197762577 -10.895555603741647 16.91524007404211 0 0 0 +1480 247 1 10.392895947861392 -11.32457091368961 17.071890446710704 0 0 0 +1479 247 1 9.789687765083162 -10.967643108238146 18.41633724685426 0 0 0 +1478 247 1 10.63766187772419 -11.577917692607379 19.486145975834468 0 0 0 +1477 247 1 12.0365194937185 -11.020009764034432 19.36091961517207 0 0 0 +137 23 1 14.613860416397497 -11.641365793510834 23.81808483675892 0 0 -1 +3369 0 2 14.854703674873473 -8.750019428086325 16.89379150303311 0 0 0 +3400 0 2 9.38821402761927 -10.752429127540692 22.717870161975753 0 0 0 +3227 0 2 8.382275231753702 -15.733654515836314 21.91623231538925 0 0 -1 +3383 0 2 21.493473649664455 -13.270778563508136 15.82617387615331 0 0 0 +144 24 1 19.42506892290454 -13.097464818509394 23.028736486823853 0 0 -1 +1438 240 1 18.65124359036531 -15.648468688365758 17.57613250696559 0 0 0 +1437 240 1 19.72610210258403 -16.08146880847562 16.612488460019918 0 0 0 +1483 248 1 15.588313975576812 -13.320128394804316 18.86731768362652 0 0 0 +1484 248 1 15.645988747657821 -13.773468632393222 17.391160774184016 0 0 0 +3451 0 2 -23.200436827847437 -15.058850526401695 20.405527374387784 0 0 0 +3292 0 2 17.20000188108994 -16.179701033872313 21.504315288728705 0 0 0 +1488 248 1 16.911715667693596 -12.762274015145548 19.37472599390602 0 0 0 +1487 248 1 17.40901211007528 -11.642157562725359 18.451656699769025 0 0 0 +1486 248 1 17.439524542707062 -12.021716755664151 17.00319943951105 0 0 0 +1485 248 1 16.18431622449902 -12.691359047510577 16.465230527403246 0 0 0 +142 24 1 18.394128260557082 -10.91426234039002 22.331276663257572 0 0 -1 +143 24 1 19.42466426510661 -11.991820372893386 21.995438502209424 0 0 -1 +3325 0 2 21.471714035934617 -10.73703221944445 18.72990502891195 0 0 0 +3399 0 2 21.225965122105933 -14.10565346053293 19.590976145899877 0 0 0 +3318 0 2 15.100044909964144 -9.486093329184934 20.42234731336827 0 0 0 +1489 249 1 21.776991114827098 -6.407823379361504 18.152305241342912 -1 0 0 +155 26 1 -18.531941621327245 -6.4845907430234195 23.539584727240634 0 0 -1 +1544 258 1 -20.01926389953548 -0.6113535940667848 23.41366051689577 0 0 -1 +891 149 1 -1.6832440995680464 -13.441464983816946 0.1417213099446174 0 0 0 +1496 250 1 -17.269384546599102 -6.004757210683886 16.727205559724993 0 0 0 +3412 0 2 -20.98162474481344 -3.809120294480285 16.69847650832578 0 0 0 +1495 250 1 -18.10915714712514 -7.227403778552822 17.100016807244522 0 0 0 +1494 249 1 23.263713268005368 -6.4187232604232305 17.82000433862186 -1 0 0 +1493 249 1 23.963315785513792 -5.052043405165746 18.0577346708308 -1 0 0 +150 25 1 -23.088831323319447 -4.6453652609769005 23.16079888226961 0 0 -1 +1500 250 1 -19.33293758963573 -7.27189654383761 16.206790393099073 0 0 0 +1499 250 1 -19.009696015634777 -7.206390491895027 14.721460381808706 0 0 0 +156 26 1 -17.523206393393437 -7.5187676042401534 23.044856052513563 0 0 -1 +3287 0 2 -20.164458441176595 -5.540546066269203 20.418440708936554 0 0 0 +3436 0 2 -18.658598417181583 -2.481792481967388 19.351398479491518 0 0 0 +3455 0 2 -22.070364367953726 -1.488899047683178 19.715143651317064 0 0 0 +1545 258 1 -19.05825750300898 -1.7434589500905786 23.78464283089761 0 0 -1 +1554 259 1 -11.842618123843799 -0.2189657438215812 20.364812204368828 0 0 -1 +1552 259 1 -9.306330385356285 -0.36776668269419976 20.427002133521594 0 0 -1 +1553 259 1 -10.556327688570757 -0.38875153104592325 19.561655849784223 0 0 -1 +161 27 1 -10.85513427816024 -4.97072726272301 20.712043456263626 0 0 -1 +160 27 1 -12.300204072427873 -4.971460294731774 21.255886771677403 0 0 -1 +159 27 1 -12.290213803776425 -4.656184266035774 22.7484916449799 0 0 -1 +1551 259 1 -9.34359961140328 -1.3987979792110128 21.529068375949368 0 0 -1 +1549 259 1 -11.913645203370006 -1.2091741817011257 21.48812042053574 0 0 -1 +1501 251 1 -13.46634127919963 -8.752716823020785 16.597447645767293 0 0 0 +3456 0 2 -15.722842227323433 -5.699650280478197 20.118632270919615 0 0 0 +1503 251 1 -11.419201224015948 -7.31416143610843 17.079108608327022 0 0 0 +1502 251 1 -12.9291511083832 -7.5121605350835585 17.365851256876162 0 0 0 +157 27 1 -10.115251137495271 -6.083816770981356 22.758963277889944 0 0 -1 +158 27 1 -11.515184049158552 -5.865606714801093 23.371057922692188 0 0 -1 +162 27 1 -10.049579820903501 -6.141472930110502 21.26755361624991 0 0 -1 +3288 0 2 -15.492312124983496 -1.9099443238797988 21.033578238458386 0 0 0 +3315 0 2 -9.032134270812445 -3.2112290603439395 17.702561746579207 0 0 0 +3354 0 2 -13.64808078797345 -3.3638562976183928 17.55352058497288 0 0 0 +1550 259 1 -10.631466512246938 -1.1036664794368747 22.288402521075714 0 0 -1 +1557 260 1 -5.485433858485639 -0.10373523401155425 22.530645824681507 0 0 -1 +3446 0 2 -1.8640746577474023 -3.544028955712153 16.294242599068 0 0 0 +2902 484 1 -6.524266992567832 -0.367559918552539 18.263700563645852 0 0 0 +934 156 1 -6.951899118835202 -4.759464068205575 0.3562569961798093 0 0 0 +2905 485 1 -0.001391867058694736 -1.380939236104452 20.89902633852988 0 0 0 +119 20 1 -4.923170656117652 -7.5183782131533405 21.956398739105985 0 0 -1 +120 20 1 -5.091262317557613 -8.365645069858784 23.17762978353019 0 0 -1 +2904 484 1 -4.19265423774031 -0.8128110417803419 18.88925740088455 0 0 0 +1514 253 1 -2.1571467937350044 -7.114853771154199 19.108782504154668 0 0 0 +1513 253 1 -1.1320521933331051 -6.627860227720118 18.07655912550277 0 0 0 +1512 252 1 -7.893359474351818 -6.286688016092813 16.47022044859323 0 0 0 +1509 252 1 -5.07313238838251 -6.3934284431044865 16.874976926571996 0 0 0 +1508 252 1 -5.9609545705675675 -6.223462808598708 18.067618966777353 0 0 0 +1507 252 1 -7.293305754454052 -6.8854221342667215 17.71314572422945 0 0 0 +965 161 1 23.368517031747718 -23.348869320589912 5.2318716964166825 -1 0 0 +2903 484 1 -5.528383654589846 -1.451378395711689 18.60907702332956 0 0 0 +3382 0 2 -7.01509471784617 -4.060123939900953 20.699078188613775 0 0 0 +3439 0 2 -3.3437348586168656 -3.9100957437914294 20.70829737168762 0 0 0 +1515 253 1 -1.4573996364437805 -7.672782712406087 20.30121153798876 0 0 0 +2509 419 1 -12.737289281054851 -0.15084982141806796 7.010442420322991 0 0 0 +2906 485 1 -0.12574723858802908 -1.9682162712877262 19.549087888772277 0 0 0 +1534 256 1 18.37612228812538 -7.381031365246653 17.145961677416366 0 0 0 +1491 249 1 22.71146512524363 -5.039269839239732 20.08736228747855 -1 0 0 +3117 0 2 18.04825607118351 -10.823630591063763 1.088089094258742 0 0 0 +2910 485 1 1.0259015284672697 -2.1246656588653474 21.662621767516892 0 0 0 +2909 485 1 2.3499357867145934 -1.9787424933184554 20.89855022265113 0 0 0 +2908 485 1 2.2619577781442124 -2.3415111770412294 19.385705706186535 0 0 0 +1518 253 1 -0.17588748168082036 -5.621574897289979 18.766742218299505 0 0 0 +1516 253 1 -0.5832029725427167 -6.733723922743996 21.06844101107546 0 0 0 +2914 486 1 6.880826140335288 -1.1992031048838248 17.400397548217274 0 0 0 +2912 486 1 6.166196492765763 -0.5033802734074304 19.676898567145443 0 0 0 +1524 254 1 4.034894262365156 -5.695895241940038 18.81573972654578 0 0 0 +1522 254 1 5.929954344568254 -4.867231361554626 17.352727961772775 0 0 0 +1521 254 1 6.20272296273126 -6.275203251879526 16.83607312889864 0 0 0 +1520 254 1 5.6644285011527495 -7.2777162661403025 17.799090951461785 0 0 0 +1519 254 1 4.242622868900168 -7.072087085706515 18.29084546613652 0 0 0 +1517 253 1 0.4427227767003747 -6.09472356702428 20.108332838870343 0 0 0 +2913 486 1 5.73636635299961 -1.1445446938934363 18.423533716277397 0 0 0 +2907 485 1 1.089616827894264 -1.6311000156506363 18.755009889992646 0 0 0 +3300 0 2 5.860395147435959 -3.751020193526875 21.66766093344937 0 0 0 +177 30 1 7.229893705685515 -7.2174252352965995 23.6527809437652 0 0 -1 +787 132 1 -5.078141221870781 -23.532719223553585 1.020722864660413 0 0 0 +3411 0 2 9.571872155279884 -2.174579574218373 20.212653353641436 0 0 0 +180 30 1 9.420576026167886 -5.274565047555496 22.750638700298065 0 0 -1 +178 30 1 8.189615558318314 -7.466366950580442 22.349948359842614 0 0 -1 +2919 487 1 11.278589901591804 -1.099356371471324 16.65395195385785 0 0 0 +3353 0 2 15.148584421296006 -2.5644755112259183 18.16138304771603 0 0 0 +185 31 1 13.93144393877779 -7.4191747081883275 23.267018688767504 0 0 -1 +1525 255 1 12.854596958225418 -5.9317544560016975 18.675743052755283 0 0 0 +179 30 1 8.603752842764967 -6.096015675183952 21.696209118908282 0 0 -1 +3461 0 2 12.629032683060387 -3.4355327094385344 21.593620497430333 0 0 0 +1530 255 1 12.155728161050662 -7.154095410389603 19.206998288319525 0 0 0 +1529 255 1 10.87394253358506 -7.504301654282157 18.458255821819268 0 0 0 +1528 255 1 9.891657394186861 -6.374114491405224 18.478326828938318 0 0 0 +1527 255 1 10.66247586414091 -5.2552781150059245 17.860446851797043 0 0 0 +1526 255 1 11.886931905085156 -4.8029253740638005 18.646933709870467 0 0 0 +1580 264 1 16.01515049953136 -0.8978143689621644 23.508564941682287 0 0 -1 +1541 257 1 22.77023747276018 -1.7682734174956392 22.833269984743357 -1 0 -1 +188 32 1 18.937434722078283 -6.046526207654989 22.094794958598506 0 0 -1 +1490 249 1 21.58736285334732 -5.0745434848963 18.95346742215837 -1 0 0 +2517 420 1 -7.491233598891095 -0.4961748610807839 3.012955253505507 0 0 0 +2521 421 1 -1.9555511755734605 -0.4952255281210098 3.594951906050151 0 0 0 +51 9 1 -20.408305831538456 -18.471715107087775 23.896747958710186 0 0 -1 +149 25 1 -21.983568445196223 -3.7753231223991808 23.720466394314688 0 0 -1 +840 140 1 -6.725078503453605 -17.278394638032236 0.3878070063671505 0 0 0 +3326 0 2 -4.938479078754343 -13.533182070326788 23.902105441636078 0 0 0 +154 26 1 -19.775325546954598 -7.221984993544382 23.993862706429713 0 0 -1 +175 30 1 8.496128782733274 -4.998235976316907 23.990538559527717 0 0 -1 +181 31 1 11.656528457814321 -8.05374410001131 23.98379358246836 0 0 -1 +128 22 1 4.178920527615638 -13.847316571840263 23.97835103718595 0 0 -1 +145 25 1 -23.252212891174743 -5.962675085792917 23.978154826955265 0 0 -1 +839 140 1 -5.928635125740706 -16.019772667084013 0.13225453642910828 0 0 0 +915 153 1 22.864985691160875 -5.848284841670541 0.00570975118700805 -1 0 0 +1590 265 1 -23.865336985736278 7.0332952103669735 -21.43520565008083 0 0 0 +1589 265 1 -22.666949207257744 7.892322788355774 -20.97449598850767 0 0 0 +618 103 1 11.131060407384119 23.783425580738424 -5.869048566685208 0 -1 0 +1780 297 1 -20.929722931389257 5.390219418433218 -17.46410342760142 0 0 0 +1788 298 1 -16.0134224645025 6.415081644923576 -16.626831677753902 0 0 0 +3556 0 2 -19.482337897387314 3.1118822155778854 -19.815039804651242 0 0 0 +3557 0 2 -23.42634951279546 3.106797465158306 -20.75405273666527 0 0 0 +1588 265 1 -21.72755706687331 8.195685696424395 -22.137955669538222 0 0 0 +1787 298 1 -16.685589598153545 5.114707161950987 -17.17874535855334 0 0 0 +1779 297 1 -22.347569815403283 5.113286777391653 -17.92458586643434 0 0 0 +1777 297 1 -23.063803219898812 7.419058242984144 -17.161246841281315 0 0 0 +1778 297 1 -23.406762420850438 5.908704313477 -17.179979877485685 0 0 0 +1593 266 1 -18.02056434902564 4.897215214687539 -23.418799915085806 0 0 0 +1736 290 1 -14.950660009935088 0.03526675670984989 -17.959083763487776 0 0 0 +1730 289 1 23.46827205567956 1.6986508554339819 -17.305980884227946 -1 0 0 +1585 265 1 23.472437993417394 7.668073063206751 -22.665092597359024 -1 0 0 +1717 287 1 10.928436300553535 18.44345891305696 -23.797297235860857 0 0 0 +1738 290 1 -17.412422843046897 0.17946069331381723 -17.94795300428405 0 0 0 +1737 290 1 -16.12977528479321 0.8067105431661433 -17.418559484658335 0 0 0 +1548 258 1 -18.510236160333772 1.0604415875500552 -23.508823615824678 0 0 0 +3595 0 2 23.961617158496075 19.864716071904162 -4.76818722212247 -1 0 0 +1783 298 1 -14.555908289512665 6.67508256159726 -16.942437832857838 0 0 0 +3624 0 2 -15.238902176789049 3.0712126450732664 -22.202340516439335 0 0 0 +1784 298 1 -14.147743742413423 6.0989523453180885 -18.27974875002655 0 0 0 +1785 298 1 -14.733543422717736 4.753520091378481 -18.7407163261506 0 0 0 +1786 298 1 -16.250810701797576 4.914968795181019 -18.6220011993986 0 0 0 +3659 0 2 -11.899587249861195 1.825391362898609 -20.473095983988745 0 0 0 +1597 267 1 -12.97684127137517 5.4920669460928115 -23.412917022680837 0 0 0 +1598 267 1 -13.273826444917484 6.18229031745867 -22.107661488051566 0 0 0 +1789 299 1 -7.577522609453379 5.412303892267132 -20.545421632621103 0 0 0 +1790 299 1 -8.143219993093192 4.210052563813032 -19.76269637237131 0 0 0 +1791 299 1 -9.234307366292207 4.670363012376239 -18.827738154724944 0 0 0 +1792 299 1 -10.371275240355939 5.184330983282925 -19.674732862420843 0 0 0 +1793 299 1 -9.892340862789219 6.424700812409981 -20.384335661592203 0 0 0 +1794 299 1 -8.68595912407899 6.151783988247643 -21.265053579249912 0 0 0 +401 67 1 -11.432727894777015 23.302425899512365 -11.636161892394163 0 -1 0 +1714 286 1 6.85795132506199 20.63463199458966 -23.950811361214406 0 0 0 +3674 0 2 -12.563020013430247 2.3650944820953073 -17.082812198218207 0 0 0 +3561 0 2 -8.493376374643347 0.4417392181358952 -22.389791317111015 0 0 0 +1644 274 1 -17.603709015046398 12.656397105483979 -23.455328542838064 0 0 0 +1657 277 1 -0.6333399642823153 12.08510733581814 -23.828857583162634 0 0 0 +18 3 1 -11.969422732692976 23.610523194747596 -23.815092128582435 0 -1 0 +1795 300 1 -5.328039400973514 4.951475298046841 -16.960771116396394 0 0 0 +1796 300 1 -4.461679219539173 3.73254480693116 -16.69134164046413 0 0 0 +1797 300 1 -4.147601305164482 3.0675221262962826 -17.992829713120845 0 0 0 +1798 300 1 -3.404401484863725 4.067766304657717 -18.89546934975117 0 0 0 +1799 300 1 -4.260182889757503 5.268055621206973 -19.17532406754405 0 0 0 +1800 300 1 -4.575264427119585 5.936211523545543 -17.85373228216991 0 0 0 +1806 301 1 -0.06853153147039763 7.1587752372942735 -18.788036143847773 0 0 0 +3558 0 2 -5.356839144918016 2.906638135545144 -22.415542020108795 0 0 0 +3621 0 2 -2.0385240109483336 1.402416509282515 -21.818147252471036 0 0 0 +1805 301 1 -0.5520663073815038 6.260918462814679 -19.867646184362417 0 0 0 +1614 269 1 -2.3637254944281847 5.0197438205246545 -23.058043757039044 0 0 0 +1755 293 1 -0.17296679575662718 2.7835670165479685 -17.854695743920878 0 0 0 +1613 269 1 -2.8203481792972154 6.464206935809953 -23.047196785664198 0 0 0 +1722 287 1 10.636547456807838 19.740371096842615 -23.04706289742973 0 0 0 +3668 0 2 -7.866907388771031 1.898726495680301 -15.793990002611215 0 0 0 +1756 293 1 -0.7998239360888718 1.5172470925808474 -17.321638173744294 0 0 0 +1634 273 1 23.680459576898667 12.069755839165733 -23.977812560147107 -1 0 0 +1801 301 1 1.1863357000900225 6.544186224535598 -18.207105771384214 0 0 0 +1562 261 1 2.2614941615006483 1.3643186985177316 -23.136670164147077 0 0 0 +1802 301 1 2.255933052775487 6.238465147314281 -19.26635080856246 0 0 0 +794 133 1 2.5648218727557195 23.98630823673647 -0.45255374040456997 0 -1 0 +1753 293 1 1.2779044060261437 1.3594049580566276 -19.381984072973648 0 0 0 +1754 293 1 1.2726502595331364 2.461441319618864 -18.320168728115224 0 0 0 +1763 294 1 6.740380743588474 0.8381925300858669 -17.986231428079716 0 0 0 +1764 294 1 5.327777304181885 1.188235434958465 -18.368836201789108 0 0 0 +1803 301 1 1.653510160464038 5.248136819285331 -20.23819868093174 0 0 0 +1804 301 1 0.4870274762289489 5.9197232430806075 -20.899436453179593 0 0 0 +1807 302 1 6.198930507075836 6.806240933233478 -19.184192491657512 0 0 0 +1808 302 1 6.767682758222785 7.4814194824879445 -20.433722796988704 0 0 0 +1809 302 1 7.929345893962162 6.715155005630819 -21.125501174383437 0 0 0 +1810 302 1 7.438897045933628 5.331962799594715 -21.517482935789726 0 0 0 +1811 302 1 6.87735672485017 4.6643006297603185 -20.308850926122663 0 0 0 +1812 302 1 5.822627926658303 5.422396924813699 -19.562933801266723 0 0 0 +1628 272 1 17.456123863727832 6.0444779734491885 -23.66051750493746 0 0 0 +1563 261 1 2.7627105583068685 2.6361010819206476 -23.85408721350944 0 0 0 +3620 0 2 4.267263357523655 5.740390327345787 -23.066263459740437 0 0 0 +3580 0 2 4.7917721581309465 4.05482645608166 -16.454512529942484 0 0 0 +1650 275 1 -11.635160136400359 13.257501046043656 -23.141464387591878 0 0 0 +3543 0 2 9.594931805075394 2.232216860908988 -21.23077655787067 0 0 0 +1622 271 1 13.364720194064807 7.720178383216108 -23.13035704683629 0 0 0 +1626 271 1 11.995239312434396 5.739370452261686 -22.49151741406679 0 0 0 +1587 265 1 -22.3688452449513 8.736270001133235 -23.386343623756677 0 0 0 +1813 303 1 10.04593296622182 4.6980059885005065 -15.713008707893657 0 0 0 +1814 303 1 8.981877246799844 4.4193326027462705 -16.7099648366047 0 0 0 +1815 303 1 9.480162059359449 4.571894150887098 -18.162603542804415 0 0 0 +1816 303 1 10.911222091096914 4.047122907767296 -18.490937983423574 0 0 0 +3577 0 2 13.674384749726272 2.5654270127402627 -21.00373291022498 0 0 0 +3610 0 2 13.109902382893523 7.469616398467173 -18.856506255831277 0 0 0 +1621 271 1 13.110944859262672 6.6731843246485525 -22.09662344590665 0 0 0 +1768 295 1 13.168019093138637 0.8271468458071216 -17.57507224373317 0 0 0 +1721 287 1 10.401338297383571 20.952455289902318 -23.911826319254352 0 0 0 +1817 303 1 11.849833716178358 4.638443597630222 -17.405190236678543 0 0 0 +1818 303 1 11.401670221580495 4.151110333772587 -16.063680182954425 0 0 0 +1731 289 1 22.29426957443736 2.6747076486998056 -17.29959936334069 -1 0 0 +1630 272 1 17.191334458588067 3.684198482574302 -22.71277351434024 0 0 0 +1732 289 1 21.363793972777707 2.3263498174021624 -16.130764918061484 -1 0 0 +1670 279 1 12.694156436027209 11.771774008480216 -23.387359315899094 0 0 0 +1733 289 1 21.21870985573511 0.7870138750592762 -15.907224818177374 -1 0 0 +793 133 1 2.628225724206974 22.49978840488906 -0.06500791356370997 0 -1 0 +1631 272 1 17.25472944717655 4.178732195286156 -21.281945621631085 0 0 0 +1819 304 1 15.968825757088657 4.950506758124466 -16.725779474007865 0 0 0 +1820 304 1 17.43054951440238 5.0114192156525466 -17.009806476591585 0 0 0 +1821 304 1 17.938753798935853 3.566583136821199 -17.15769787167543 0 0 0 +1822 304 1 17.267682116901167 2.7736173440129543 -18.273708058027026 0 0 0 +1823 304 1 15.78078951198211 2.8516112063234815 -17.961785401368324 0 0 0 +1824 304 1 15.292108594779547 4.299841271192725 -17.88950766017529 0 0 0 +3476 0 2 21.52199489681107 4.609813479700734 -22.409361625705742 0 0 0 +3645 0 2 21.05085533655235 5.89563372114325 -18.871799031102675 0 0 0 +1632 272 1 16.68943071345873 5.600378993826262 -21.231825540215493 0 0 0 +1627 272 1 17.411187829703216 6.532082884941275 -22.227664394937214 0 0 0 +1537 257 1 23.299790795040984 0.38160954613044656 -23.771858990326496 -1 0 0 +3231 0 2 20.66681181708739 1.7149900107748421 -20.240791165320307 0 0 0 +1727 288 1 18.53528744656329 19.83005330509703 -23.159350841480205 0 0 0 +1781 297 1 -20.55930399799803 6.854176131508734 -17.578770171585745 0 0 0 +1642 274 1 -19.581724305907333 11.13870847391568 -23.816731068625668 0 0 0 +3530 0 2 -20.69176973079299 10.68658687403931 -19.462488703680354 0 0 0 +2328 388 1 -5.269974845881091 0.8903967508189594 -3.865912361993267 0 0 0 +1637 273 1 -23.89934052033289 11.820080204398476 -21.04815603501887 0 0 0 +1829 305 1 -23.806880883309425 11.139630628882294 -16.480860609305143 0 0 0 +1831 306 1 -16.659582188169345 10.279731904410712 -17.784084773329788 0 0 0 +1832 306 1 -17.06936176069658 8.94920969782152 -18.361305282847987 0 0 0 +1833 306 1 -16.920635116296125 8.957763323610846 -19.863271270570376 0 0 0 +3680 0 2 -21.030725796811303 14.29657775342546 -18.878731516891598 0 0 0 +1830 305 1 23.623126770440983 12.302565929801847 -17.20960859765607 -1 0 0 +1638 273 1 -22.977293706001735 12.768793680300908 -21.836970289446963 0 0 0 +3579 0 2 -16.96512999183689 13.83067653851648 -18.94248579684848 0 0 0 +3604 0 2 -19.8183426539022 12.12591656255457 -15.593443450750195 0 0 0 +2140 357 1 2.118171130165553 0.2997308477210341 -5.976806684253723 0 0 0 +603 101 1 -0.4187901494465485 23.166392321694488 -7.736471962027804 0 -1 0 +1633 273 1 -22.926951697014488 12.320766326471114 -23.307416565810456 0 0 0 +1643 274 1 -18.23334944381987 11.345923345269885 -23.12677844865126 0 0 0 +1599 267 1 -12.963714033746394 7.626360105976393 -22.318887019176028 0 0 0 +1649 275 1 -12.685456836088601 13.166685942706518 -22.070564446397537 0 0 0 +1835 306 1 -15.102607868722087 10.686698094128324 -19.683941596684885 0 0 0 +1836 306 1 -15.265038611738573 10.679745341789232 -18.19661617316766 0 0 0 +1586 265 1 -23.521788995923803 7.85758372307007 -23.808774437317236 0 0 0 +1834 306 1 -15.524126893325379 9.359613985470993 -20.277872142881474 0 0 0 +3562 0 2 -13.418930607423246 14.297788903597864 -18.22537503199766 0 0 0 +1647 275 1 -13.967407342642597 14.369623869349509 -23.869191645057047 0 0 0 +1648 275 1 -13.915273145468499 14.037299143598153 -22.376355787112054 0 0 0 +1837 307 1 -11.529684883368667 9.193696042121935 -18.62898783485312 0 0 0 +1838 307 1 -10.767847735327987 10.14128542126922 -19.524849585043977 0 0 0 +1839 307 1 -10.951485217283269 11.615297767112748 -19.156029095179072 0 0 0 +1840 307 1 -10.589022491834216 11.920181198427699 -17.747576951542367 0 0 0 +1841 307 1 -11.362059371517116 10.990742854102901 -16.846027750238797 0 0 0 +1842 307 1 -11.116875395452116 9.534257701806492 -17.218514288311077 0 0 0 +3546 0 2 -9.582858234143867 14.615335320560954 -20.659348659498345 0 0 0 +3809 0 2 -9.76469197380141 9.48344949451925 -23.00690865476894 0 0 1 +3479 0 2 -7.333411218306961 8.627513628271 -16.452120009079472 0 0 0 +1600 267 1 -13.90669224760504 8.212519163601744 -23.388561347731624 0 0 0 +614 103 1 13.28156320712005 23.817836383175823 -4.6578606303647385 0 -1 0 +3632 0 2 -7.0703960112388895 9.805899529303655 -20.399494203210164 0 0 0 +3647 0 2 -3.7548232724961017 8.483508010937797 -20.123074186424862 0 0 0 +1651 276 1 -6.853584607243018 14.993323224024879 -23.120998828243334 0 0 0 +1652 276 1 -5.9632506668381655 13.784249427270577 -22.796099172458362 0 0 0 +1843 308 1 -6.965689166046955 13.924981907462339 -17.92693729158102 0 0 0 +1844 308 1 -6.802678731827018 13.128058804999908 -16.680539605797552 0 0 0 +1845 308 1 -6.205716749873819 11.762987121956613 -17.01172827060237 0 0 0 +1846 308 1 -4.886624209743762 11.93298264320571 -17.737807313334915 0 0 0 +1847 308 1 -5.016577442588856 12.776961892197276 -18.956628879402885 0 0 0 +1848 308 1 -5.6796879499786295 14.146550448606162 -18.727019926106124 0 0 0 +1850 309 1 -1.3361922963794919 12.44910134934415 -16.81708633063971 0 0 0 +1851 309 1 -0.04973317025355468 13.122549919992023 -16.428839725669913 0 0 0 +3617 0 2 -2.6511673467525294 15.105070270636944 -20.958555843524053 0 0 0 +1653 276 1 -6.732783479934939 12.50591904579572 -23.10121973703759 0 0 0 +1659 277 1 -1.2613949688487076 10.446353441087531 -22.006762724563824 0 0 0 +1660 277 1 -2.673015428258765 10.359850927049964 -22.568749072960035 0 0 0 +1661 277 1 -3.0509548031497857 11.67275936967603 -23.172830682598917 0 0 0 +1852 309 1 0.6444426795964384 13.810053116881583 -17.606663604117117 0 0 0 +1713 286 1 6.84532046942015 19.13473212489898 -23.973828399658935 0 0 0 +1658 277 1 -0.26324982096227817 10.85376920876081 -23.036880674586097 0 0 0 +1767 295 1 12.433318810927917 0.4234958244513884 -16.344420453087473 0 0 0 +1725 288 1 19.209397772533656 17.716860941518057 -21.81314510969828 0 0 0 +1849 309 1 -1.082686970899575 11.508191619069216 -17.952414985460763 0 0 0 +1591 266 1 -18.133722973951595 7.512385783413821 -23.664754452694286 0 0 0 +1853 309 1 0.8715881729914592 12.868656166561033 -18.76875465418962 0 0 0 +1854 309 1 -0.4649046361008678 12.197900166390378 -19.140068211855855 0 0 0 +1856 310 1 7.335225013110168 12.988026991047574 -18.971081629660702 0 0 0 +1857 310 1 6.306032576546015 12.073732249504571 -19.6498791647909 0 0 0 +1858 310 1 7.05295748931213 11.065176978932577 -20.4946935909366 0 0 0 +1859 310 1 8.085421772136499 11.657153233415674 -21.369875257847372 0 0 0 +3544 0 2 1.4098451263330332 14.825952309602874 -21.819316256296297 0 0 0 +1667 278 1 4.618619669945846 14.357270326088347 -23.307540226353918 0 0 0 +3634 0 2 6.936442363821458 9.80006078462032 -17.17280106400573 0 0 0 +3651 0 2 3.0169696757037974 9.553523286575704 -21.12470639059937 0 0 0 +3679 0 2 4.419592413399948 14.385783735407864 -16.542066564592016 0 0 0 +1663 278 1 3.478920642565399 12.153403346925922 -23.687516803805693 0 0 0 +1668 278 1 4.708500400382251 12.855259172910952 -23.225717566439776 0 0 0 +1735 290 1 -14.91130779357359 0.03665028264819725 -19.47941412256291 0 0 0 +1855 310 1 8.29269411838996 13.53358145366486 -19.97043035973667 0 0 0 +1860 310 1 9.083241603505604 12.528626682515647 -20.694093511390673 0 0 0 +3474 0 2 10.460649416852858 9.067724540778965 -20.925040908931418 0 0 0 +1671 279 1 13.17884455237527 12.563809581806753 -22.19704866103308 0 0 0 +1672 279 1 12.516674532294036 13.902060214091478 -22.20856916481509 0 0 0 +1861 311 1 13.689446965459963 11.042609245247746 -18.266547394134548 0 0 0 +1862 311 1 13.758507639587286 12.543812393222675 -18.38790850896159 0 0 0 +1863 311 1 12.386119470571117 13.193904903999465 -18.62249914886981 0 0 0 +1864 311 1 11.435754101021196 12.822317956333864 -17.536601351234253 0 0 0 +1865 311 1 11.323745180167073 11.313830354956199 -17.49670490492106 0 0 0 +1866 311 1 12.66527563900409 10.662681513643555 -17.210319256186576 0 0 0 +3532 0 2 15.881255545254264 9.852037341578562 -20.81777642533989 0 0 0 +1673 279 1 12.880341110481666 14.621320261451764 -23.503322235156727 0 0 0 +417 70 1 3.165754693460387 23.05598632049695 -10.242731457492777 0 -1 0 +3638 0 2 10.200348922920229 8.053125262068608 -16.93276910426566 0 0 0 +1684 281 1 22.358228082358554 15.77080433926385 -23.751554850311546 -1 0 0 +1675 280 1 18.307897209280505 14.369157828012089 -23.63551942501928 0 0 0 +1636 273 1 22.7341627355504 11.783155078223992 -21.6616097420226 -1 0 0 +1635 273 1 22.819163049057572 11.229650826006335 -23.090967749228493 -1 0 0 +1679 280 1 18.43489748459932 12.995328487589134 -21.65591618876229 0 0 0 +1680 280 1 19.153835529300416 14.116022950061316 -22.435183223107355 0 0 0 +1825 305 1 22.091515570965868 12.20722070448322 -17.371034787313288 -1 0 0 +1826 305 1 21.42869242363853 12.086497131313346 -16.03205378213855 -1 0 0 +1867 312 1 18.02985167967606 10.15802484690704 -16.230911237370062 0 0 0 +1868 312 1 17.776505273668956 11.140128858799152 -17.38839284715675 0 0 0 +1869 312 1 18.849466160474467 11.045935504952558 -18.438857280407934 0 0 0 +1870 312 1 18.956722360076075 9.628570703655944 -18.98077856885818 0 0 0 +1871 312 1 19.165255561198194 8.580549845763773 -17.874733646854175 0 0 0 +1872 312 1 18.046823593013478 8.774920330476409 -16.835519373934666 0 0 0 +3547 0 2 20.05043013672162 9.41403450466707 -23.0850295512444 0 0 0 +3576 0 2 22.456264234039523 9.092997583567763 -19.0442019468049 0 0 0 +3600 0 2 22.229573001938803 15.047442253263362 -19.661680349059612 0 0 0 +1917 320 1 17.107263837907528 14.820204623666225 -18.196716326342138 0 0 0 +1678 280 1 16.984666555662685 13.384436467919258 -21.30976853034029 0 0 0 +1677 280 1 16.21532674621501 13.715953314885923 -22.59921120085982 0 0 0 +1923 321 1 -23.82229642634871 0.42187114975488726 -12.306392867710201 0 0 0 +1918 320 1 18.328025451586385 15.627165745806305 -17.726938587790382 0 0 0 +1676 280 1 16.912770557248564 14.77051335821203 -23.383874862244454 0 0 0 +1685 281 1 23.77259793990457 15.699676298862135 -23.20586730851705 -1 0 0 +8 2 1 -16.669324101813345 21.154709267310434 -23.06935841342538 0 -1 0 +1873 313 1 -22.6726700936164 18.191852647475983 -17.05845245938929 0 0 0 +1877 313 1 -21.34241269077069 20.087756851804937 -18.09721197126143 0 0 0 +1878 313 1 -21.42356011753818 19.093637963469245 -16.94841041511318 0 0 0 +1879 314 1 -16.209787807452376 19.287584996715598 -18.431733936703786 0 0 0 +1880 314 1 -16.105265909714372 17.762103318136013 -18.53957808899301 0 0 0 +1882 314 1 -18.069576980676597 17.667568155061215 -16.974046661551373 0 0 0 +1883 314 1 -18.10821533120966 19.20422827226707 -16.737956638848082 0 0 0 +1884 314 1 -17.579184945801796 19.844232410178385 -18.025884712049105 0 0 0 +10 2 1 -17.213524002310812 22.09891190766638 -20.92146732009267 0 -1 0 +3565 0 2 -21.632460742966153 23.098852172476214 -20.919106009216776 0 0 0 +3652 0 2 -19.01426372397512 16.78566366600395 -20.91769488249676 0 0 0 +1876 313 1 -21.361320555524507 19.28717776801352 -19.373532726566904 0 0 0 +7 2 1 -16.92717277503358 22.52887238666492 -23.699412201082275 0 -1 0 +1874 313 1 -22.753929035493517 17.4330046070654 -18.35645609237011 0 0 0 +1875 313 1 -22.60615150158244 18.3900868226187 -19.525957617947775 0 0 0 +11 2 1 -17.5524267552094 23.44943898726229 -21.52877147882568 0 -1 0 +3582 0 2 -21.250940249270915 3.669782958952056 -23.566089477397668 0 0 0 +9 2 1 -16.08904946297586 21.39806093976739 -21.68199372901929 0 -1 0 +200 34 1 -18.76101144342184 23.338133024359447 -18.0045323012408 0 -1 0 +3515 0 2 -11.93389272063403 17.410227892305585 -21.579101305157923 0 0 0 +3521 0 2 -9.20467240867652 16.871730135564565 -17.498390281657404 0 0 0 +1881 314 1 -16.70048240371514 17.0806217814776 -17.332349896391726 0 0 0 +14 3 1 -11.327682917661031 21.644145149300755 -22.5516220259192 0 -1 0 +1885 315 1 -11.969338963593986 19.123351054744234 -18.057237844870404 0 0 0 +1886 315 1 -12.663702823354459 19.017995573721556 -16.73684413885513 0 0 0 +1887 315 1 -11.74481955480613 19.318262028210917 -15.55853983047105 0 0 0 +1888 315 1 -11.11741049104844 20.70997083567813 -15.691720398416512 0 0 0 +1889 315 1 -10.349461801585813 20.8047199743056 -17.033754150083805 0 0 0 +1890 315 1 -11.218878782993688 20.45278202376033 -18.22187989986791 0 0 0 +13 3 1 -10.893211842297607 22.559637852705883 -23.620446661469487 0 -1 0 +2417 403 1 -11.527067894817318 10.964092532143784 -0.5623395752880069 0 0 0 +3517 0 2 -15.162020060688786 17.977022905335303 -22.472872179941415 0 0 0 +209 35 1 -13.3661599931024 23.637609643706348 -15.383955289198234 0 -1 0 +1701 284 1 -7.8988269364289 18.286472509332775 -21.465760232529917 0 0 0 +16 3 1 -12.672521681315647 23.328607716739025 -21.396862931827222 0 -1 0 +2454 409 1 -23.496533969001067 18.26230046538043 -0.6794287973211813 0 0 0 +205 35 1 -13.009806343383294 23.63891430940494 -17.896330902439786 0 -1 0 +15 3 1 -11.505363184433277 22.40014600862862 -21.236869616684288 0 -1 0 +621 104 1 17.649281678825044 23.613802112710644 -6.03284228164 0 -1 0 +1703 284 1 -6.249505332795435 19.289149485393317 -23.02970457474909 0 0 0 +1702 284 1 -6.43238313982597 18.2555770379761 -21.947516015696444 0 0 0 +1699 284 1 -8.104267113061892 20.656778823351598 -21.909046308812883 0 0 0 +1700 284 1 -8.209253475889593 19.613141866989864 -20.8429722988859 0 0 0 +1704 284 1 -6.686177355206087 20.63731956863437 -22.507846529346534 0 0 0 +1708 285 1 -1.8881624957263317 18.60253047350966 -21.975891598389588 0 0 0 +1891 316 1 -5.878975812665528 19.46293180343572 -16.94712003595449 0 0 0 +1892 316 1 -5.709066840167524 20.925593755197227 -17.28092076415672 0 0 0 +1893 316 1 -4.321037357480817 21.203342283572663 -17.848709165990634 0 0 0 +1895 316 1 -3.9665845837996723 18.895565806518132 -18.536755192425208 0 0 0 +1896 316 1 -5.42835201908803 18.593286479302236 -18.113981968076104 0 0 0 +219 37 1 -0.994548388163525 23.454819452692732 -17.56647590019799 0 -1 0 +3510 0 2 -4.553878196440859 23.61365874627854 -20.670266051597007 0 0 0 +1709 285 1 -1.462716258429912 20.05849262149658 -21.7881992552284 0 0 0 +1710 285 1 -2.368407730706589 21.030117580972608 -22.471501375211133 0 0 0 +1686 281 1 -23.747111234772998 17.0935929939948 -22.904422898536122 0 0 0 +220 37 1 -0.5434482094395693 23.15027122383308 -18.9235226177865 0 -1 0 +1707 285 1 -1.917657747743979 18.223041511757724 -23.41595337313139 0 0 0 +1894 316 1 -3.8483996151909685 20.333617999910707 -18.99699851850201 0 0 0 +2491 416 1 18.562599719914797 18.29952637691974 -1.0509794555653897 0 0 0 +772 129 1 -21.435606016974816 22.53517347955843 -0.5991554437566697 0 -1 0 +3587 0 2 1.9020563919927 18.21980514399218 -23.004278121133105 0 0 0 +1902 317 1 -0.6746743017246453 17.693635291557424 -17.959891624012556 0 0 0 +1901 317 1 0.22396401456549997 17.29730361292106 -19.057924007469882 0 0 0 +3491 0 2 4.202033901019939 15.893312241703715 -20.0365674490228 0 0 0 +1897 317 1 -0.018724741070790474 17.282862303765473 -16.638616750698862 0 0 0 +1899 317 1 2.137835808884541 17.750316230000447 -17.651063250805212 0 0 0 +1900 317 1 1.5288878621727175 17.98584601860878 -18.992309912777465 0 0 0 +1903 318 1 5.375690552492546 18.01224992843913 -15.303814504563759 0 0 0 +1906 318 1 6.39839822404037 20.683339150980952 -16.044953968366638 0 0 0 +1908 318 1 5.540111813042559 18.485201086404246 -16.705244129198967 0 0 0 +223 38 1 5.0786535238561825 23.95861677240655 -18.40553362645225 0 -1 0 +3503 0 2 2.8495052686232496 21.24021549817674 -17.89014403700598 0 0 0 +3519 0 2 2.0684837098725493 21.428689995362085 -21.69370039334812 0 0 0 +3552 0 2 5.332696891425275 19.8017757646941 -20.50509947088369 0 0 0 +1898 317 1 1.2523758475020181 18.08146496779424 -16.469721972448408 0 0 0 +1904 318 1 5.081824536727891 19.20759582387083 -14.427327100249803 0 0 0 +1759 294 1 4.802648175597613 0.2770887228199783 -19.44162024736386 0 0 0 +2465 411 1 -10.910755442314867 15.901946375558696 -0.9223444892634332 0 0 0 +3863 0 2 5.8474173508298675 3.520588473943511 -0.1572414583546037 0 0 0 +3627 0 2 7.529770457996735 17.026653921269954 -20.845020138567307 0 0 0 +1907 318 1 6.705233918512866 19.43131195158671 -16.846468581506798 0 0 0 +3612 0 2 8.734182221434606 16.145599706250838 -17.286612204251266 0 0 0 +1909 319 1 12.391566238886202 18.31364539833744 -17.573599094100313 0 0 0 +1910 319 1 12.226494581305678 16.875264659516297 -18.03732336026312 0 0 0 +1911 319 1 11.52523820914403 16.766049210675956 -19.386775716321992 0 0 0 +1912 319 1 12.140827201931426 17.686339931877125 -20.42634798548084 0 0 0 +1913 319 1 12.079662180421565 19.135387816869606 -19.96056365117143 0 0 0 +1914 319 1 12.845349590405887 19.25588816064557 -18.665044694913533 0 0 0 +1592 266 1 -17.452495142326104 6.2988348510114385 -22.963544164675284 0 0 0 +234 39 1 11.18107981356963 23.505567902426606 -17.178810194111897 0 -1 0 +3549 0 2 9.335727607576056 20.894560047437775 -18.941336118873057 0 0 0 +3658 0 2 12.840232616734632 22.40141530703566 -21.331048409982788 0 0 0 +3599 0 2 14.943842597338563 21.072896040893465 -16.334050759837133 0 0 0 +3554 0 2 14.965913510904187 18.022821269492024 -23.08897993703277 0 0 0 +229 39 1 11.760117835036146 23.86280284552496 -15.820868723612548 0 -1 0 +1728 288 1 19.168267219201166 20.68151443361074 -22.07799186569405 0 0 0 +2492 416 1 17.816131572044213 19.434616052869984 -0.3632062457316991 0 0 0 +1916 320 1 15.775599270271291 15.525104591354852 -18.362736063922263 0 0 0 +3236 0 2 3.3439240520162294 0.11463745100620745 -11.466305489767558 0 0 0 +194 33 1 -23.71809840239824 22.778503583424204 -17.98492071595976 0 -1 0 +3495 0 2 23.579526636161408 21.09662706202979 -21.85641800621994 0 0 0 +1723 288 1 19.197494478678262 19.96461614389313 -20.736688930328913 0 0 0 +1915 320 1 16.03405551677064 16.783235944473798 -19.14835494002023 0 0 0 +1919 320 1 18.317092284504373 16.983317232794715 -18.362111881063736 0 0 0 +1920 320 1 16.991661042646676 17.6836979137039 -18.406041411426784 0 0 0 +3508 0 2 15.741596994108766 21.082097161692243 -20.03980944685226 0 0 0 +3671 0 2 21.10405639807897 18.80364231837271 -17.499369992628488 0 0 0 +3499 0 2 18.70299221998504 21.4363582325429 -17.305019655338448 0 0 0 +1724 288 1 19.850487478872523 18.582582897780906 -20.733863240710516 0 0 0 +195 33 1 23.450458304882183 22.259396401490793 -16.801576237509085 -1 -1 0 +196 33 1 22.298138136120905 23.175685699293073 -16.40259484204889 -1 -1 0 +46 8 1 15.652074817074473 23.54723194063859 -23.18796996697133 0 -1 0 +1782 297 1 -21.599009108475624 7.652834698395266 -16.7588759166715 0 0 0 +2464 411 1 -10.79897454928418 17.41757267706495 -1.1370574496400627 0 0 0 +1924 321 1 22.85930758637235 0.8814366705433822 -11.722881885978197 -1 0 0 +3193 0 2 -19.043322822428447 1.6187414197622851 -11.910437512465517 0 0 0 +3585 0 2 -18.798532107658563 2.4090558533673208 -15.48867744775466 0 0 0 +1972 329 1 -22.930116344464206 5.399064576279196 -11.180529873207508 0 0 0 +1973 329 1 -22.561401092212623 4.2746438361228485 -12.192270446922391 0 0 0 +1975 330 1 -19.639887504344234 6.494881928646107 -13.956443389243674 0 0 0 +1976 330 1 -19.919467624663067 7.322820638377478 -12.715817170993102 0 0 0 +1979 330 1 -17.35800978603664 6.369275163371595 -13.01043970859346 0 0 0 +1980 330 1 -18.42427991180889 5.599602321661132 -13.75040251721836 0 0 0 +3482 0 2 -14.811312448942422 3.295825071368157 -13.702500726412415 0 0 0 +3571 0 2 -21.726951861959154 0.7667190170225314 -9.119989962714934 0 0 0 +1974 329 1 -23.107835302858145 4.471739290301643 -13.626116598078495 0 0 0 +2172 362 1 -18.09033078009781 4.268026762577094 -10.111566092150944 0 0 0 +2167 362 1 -19.388538764527667 5.019776995913274 -9.903396518040795 0 0 0 +2375 396 1 -5.94620561440281 4.7892382311711685 -0.689939262718939 0 0 0 +199 34 1 -20.079545145659708 23.669539671341383 -17.36616348721894 0 -1 0 +1934 323 1 -10.733894977096286 1.556236893090415 -12.089110829977383 0 0 0 +1933 323 1 -9.641276896456228 0.5344866177875265 -12.080803397553241 0 0 0 +1935 323 1 -11.661033858100726 1.2367853754516318 -13.233267896382014 0 0 0 +1726 288 1 19.090836655582383 18.39598666406185 -23.212475801751662 0 0 0 +1981 331 1 -11.762456148733913 5.761405170482236 -13.689359242349656 0 0 0 +1982 331 1 -11.390968360049797 5.794690324801676 -15.18239019790859 0 0 0 +1983 331 1 -9.961794284184377 6.25323409713262 -15.420377803078477 0 0 0 +1984 331 1 -8.992663554259392 5.502374690302599 -14.477803996994634 0 0 0 +1985 331 1 -9.393504466699147 5.555569813996269 -12.996970574820871 0 0 0 +1986 331 1 -10.790135261707896 4.944357123574925 -12.833216410596117 0 0 0 +3622 0 2 -15.225654249279716 1.2210214234268695 -10.752566064379717 0 0 0 +3535 0 2 -9.203298968131671 3.4337646931673453 -9.291145797643907 0 0 0 +3673 0 2 -14.630715219419773 6.756910760427222 -10.600350800578314 0 0 0 +3567 0 2 -11.149328125865647 6.772380975505106 -9.037250838284283 0 0 0 +2387 398 1 4.03827052613687 6.803889440257458 -1.1849333920048137 0 0 0 +3661 0 2 -7.83145754684538 6.723158992052168 -9.788440145459516 0 0 0 +610 102 1 7.8319354731606765 23.861480841726802 -7.5618661506663125 0 -1 0 +1987 332 1 -4.558336090742173 3.598467185322121 -12.398248062500327 0 0 0 +1988 332 1 -5.989922477303311 3.2091677192385366 -12.154299913860882 0 0 0 +1989 332 1 -6.025312277619353 1.6547530068895442 -12.061654283823993 0 0 0 +1990 332 1 -5.230097094302382 1.0609621245347276 -10.90819472474365 0 0 0 +1991 332 1 -3.853131825295907 1.5023586793280306 -11.161316706976155 0 0 0 +1992 332 1 -3.70562985009865 2.9626507762172296 -11.258946355567915 0 0 0 +1996 333 1 -1.1173612144313132 4.146094453082279 -14.15717699694552 0 0 0 +1997 333 1 -0.2798795163163289 2.9684719616272703 -14.07529874510014 0 0 0 +3494 0 2 -2.8755248503900277 1.2892842640027264 -7.41344247985402 0 0 0 +1995 333 1 -0.4180249348893443 5.13623332035329 -15.075164967941891 0 0 0 +3641 0 2 -1.46722748521349 8.48860096522685 -12.278703900741599 0 0 0 +2187 365 1 -0.44304703316567623 6.529107301210749 -8.781035666293356 0 0 0 +1953 326 1 7.361177427529778 0.8009404234121654 -11.395744880341281 0 0 0 +1956 326 1 7.882124078624746 2.4561399411788365 -13.741997650319353 0 0 0 +1951 326 1 7.74098943936568 3.0960906772844496 -12.378177456490231 0 0 0 +1993 333 1 1.6959415162669362 4.6008605526365445 -13.893856551766286 0 0 0 +1994 333 1 1.100241867845218 5.278361661414643 -15.121005160478038 0 0 0 +1998 333 1 1.1733101768941874 3.129552850315751 -13.767226643420695 0 0 0 +1999 334 1 4.601629274601702 7.349436471217788 -13.970219744976443 0 0 0 +2000 334 1 5.308361738916095 8.267307881842596 -13.001462837553396 0 0 0 +2001 334 1 6.7284811540378495 7.785615013005633 -12.694364188252013 0 0 0 +2002 334 1 7.574602651842562 7.675637304805279 -13.915578303944155 0 0 0 +2003 334 1 6.871158255639161 6.850431080329574 -15.021690276552574 0 0 0 +2004 334 1 5.39745284371514 7.292573335684546 -15.236179770274912 0 0 0 +3484 0 2 -0.15343801103784793 2.744089433187459 -10.422022744485885 0 0 0 +1955 326 1 7.130713073909124 1.1623117954147544 -13.876673923675941 0 0 0 +2196 366 1 4.445251252304742 4.073702137088282 -11.107619170008011 0 0 0 +2195 366 1 4.20111731790613 2.9837985257419986 -10.088631545498059 0 0 0 +2194 366 1 4.066435904743076 3.4664410063351836 -8.692107509698634 0 0 0 +2193 366 1 2.9461161940100857 4.486412214902588 -8.57960552798568 0 0 0 +3606 0 2 7.5301499470925135 5.785163792441455 -9.62629580669807 0 0 0 +2192 366 1 3.3408770944165003 5.673221980413318 -9.475252794187332 0 0 0 +2191 366 1 3.4622169827323352 5.225416290243518 -10.939147641387573 0 0 0 +1954 326 1 7.5053198438083575 0.20162877394325393 -12.782928271367664 0 0 0 +1625 271 1 12.326080007399058 5.0949653246006585 -23.840140082267922 0 0 0 +2376 396 1 -7.4357681129008215 4.423579872710923 -0.6348496189395595 0 0 0 +1952 326 1 8.157937376492809 2.1171495027964875 -11.285793304979103 0 0 0 +2005 335 1 12.494716321510062 6.506682300720124 -13.494804202256619 0 0 0 +2006 335 1 10.993597537958044 6.6159259968321695 -13.318217113110725 0 0 0 +2007 335 1 10.480577420638943 5.580429752549429 -12.317556605342762 0 0 0 +2008 335 1 11.105687717439602 5.763890419895299 -10.963922392903662 0 0 0 +2009 335 1 12.637877673813703 5.7402653064167675 -11.021764755900314 0 0 0 +2010 335 1 13.141040882354918 6.703862313904119 -12.115513181217914 0 0 0 +3678 0 2 14.313249706576967 3.46124949846525 -14.270504275247768 0 0 0 +1958 327 1 11.88060306765221 1.7335101477510741 -11.645970692616602 0 0 0 +3568 0 2 14.713680071920141 8.587446481493844 -15.204242051233118 0 0 0 +1959 327 1 11.591148563903785 1.1688663828441086 -13.043510622734578 0 0 0 +1957 327 1 12.94268954483777 0.9328048048687858 -11.016007553217479 0 0 0 +2151 359 1 10.854096067567289 1.024624525375078 -7.730127053291048 0 0 0 +419 70 1 5.054265825677798 23.96268425923015 -11.491906594102161 0 -1 0 +1734 289 1 22.574067677020725 0.1931139276364439 -15.63580075715156 -1 0 0 +3574 0 2 21.414184664570797 7.336966040977574 -15.255941338472594 -1 0 0 +2299 384 1 18.96815637088001 18.84168175614777 -6.010484585131576 0 0 0 +1561 261 1 1.2175948922562059 0.6479923196432913 -23.958657076858103 0 0 0 +3676 0 2 20.172434323096976 3.465538140348646 -12.570895693492439 0 0 0 +1971 329 1 23.56255526671863 5.653882682800776 -11.161764351143288 -1 0 0 +1969 329 1 23.378273389777547 4.760006987323293 -13.588741209029838 -1 0 0 +1970 329 1 23.08696032982555 5.931314778579542 -12.577048710784398 -1 0 0 +2011 336 1 18.18157589866475 6.978160760771037 -13.204483434792241 0 0 0 +2012 336 1 19.270201290093567 7.104280838970512 -12.109484511243169 0 0 0 +2014 336 1 17.608680971571903 5.977228129706029 -10.432750368293545 0 0 0 +2015 336 1 16.576963532933803 5.87206672913921 -11.534731385963065 0 0 0 +2016 336 1 17.31632348510582 5.780391213077694 -12.87079176617846 0 0 0 +3569 0 2 20.93360972436736 3.3805227505079865 -9.027638189693773 0 0 0 +3648 0 2 16.631869081232402 2.3712079821373986 -11.523880950823244 0 0 0 +2013 336 1 18.678021432988256 7.058234495928705 -10.700369721168206 0 0 0 +2164 361 1 -23.13738368269845 3.646947006860502 -7.428903721791661 0 0 0 +2205 368 1 15.088992741938188 5.831699595758549 -7.61690168221118 0 0 0 +1729 289 1 23.636889477449497 1.0687498803326148 -15.97286235347302 -1 0 0 +2358 393 1 22.996008626335687 5.077894425589695 -0.23600024942324616 -1 0 0 +1828 305 1 23.50407961048635 10.944246931292412 -15.14037861436499 -1 0 0 +3469 0 2 -23.229087669393394 14.674032985005224 -14.918262149701146 0 0 0 +1977 330 1 -18.88294410415773 8.424907268030447 -12.697671302180641 0 0 0 +1978 330 1 -17.560060535724002 7.877278710011719 -13.312001755469993 0 0 0 +2023 338 1 -18.805203025439464 13.218626599221272 -11.619460893425185 0 0 0 +2024 338 1 -19.564910197747547 12.03101833744547 -12.20966281805367 0 0 0 +2025 338 1 -21.04630498679508 12.219292049877303 -12.258457344289507 0 0 0 +2026 338 1 -21.567986321222623 12.47748744059688 -10.884066567883265 0 0 0 +2027 338 1 -20.431560326547466 12.629932737260125 -9.855743362797742 0 0 0 +2028 338 1 -19.48478585550046 13.735073402808332 -10.324755463324374 0 0 0 +3524 0 2 -22.749384723574988 9.143489705564694 -12.304785435073143 0 0 0 +3525 0 2 -15.506830828619275 13.473953627188855 -14.736306270765489 0 0 0 +3596 0 2 -21.00581798546719 9.165754404665659 -8.754052244113524 0 0 0 +2215 370 1 -17.162128264088196 10.062425700070463 -8.01007024311889 0 0 0 +2262 377 1 -22.98037253874561 15.513777524926414 -9.45363633624633 0 0 0 +3614 0 2 -15.437442929157637 10.176583529040728 -11.48936945982871 0 0 0 +3523 0 2 -9.576235370174032 13.15560272204431 -13.931330297624722 0 0 0 +2029 339 1 -8.783710826216582 10.449967317479683 -11.770080736272675 0 0 0 +2030 339 1 -9.471898299188302 10.670686943802396 -10.46504590265047 0 0 0 +2031 339 1 -10.989395562772902 10.673479149504832 -10.569004129172741 0 0 0 +2032 339 1 -11.382830219806626 9.352369355264928 -11.144401079186121 0 0 0 +2033 339 1 -10.679182761596152 8.998590229945314 -12.449392342150041 0 0 0 +2034 339 1 -9.154541907542578 9.104725712944735 -12.343318770872303 0 0 0 +3570 0 2 -13.592059288710825 9.824395909127743 -14.242055164358861 0 0 0 +3611 0 2 -12.966177210093132 13.952474670925845 -11.890167629779775 0 0 0 +3560 0 2 -15.47953788789558 13.653061926952427 -9.564758008284743 0 0 0 +3485 0 2 -11.96744119353502 13.735620811931586 -8.434207941650367 0 0 0 +3590 0 2 -12.56940671239314 15.645666667007431 -15.194887860706189 0 0 0 +3656 0 2 -5.257641299129937 7.324559399809619 -13.4597448584306 0 0 0 +3471 0 2 -7.797634151445526 14.596704709244992 -10.406324171606691 0 0 0 +3584 0 2 -6.883863120230588 16.36511822909931 -14.658058754271032 0 0 0 +2035 340 1 -4.733259758109218 11.207154740565457 -13.927713935534973 0 0 0 +2036 340 1 -3.199367831453721 11.598629755401152 -13.772717305168513 0 0 0 +2037 340 1 -3.000304882720159 13.07085135002568 -13.108139008720837 0 0 0 +2038 340 1 -3.8238563406860377 13.201727662000561 -11.772372567563963 0 0 0 +2039 340 1 -5.33008427954141 13.263611411933672 -12.378311820451325 0 0 0 +2040 340 1 -5.660633141615746 11.709026386737964 -12.755224961379705 0 0 0 +3664 0 2 -2.6254091364329186 8.348388154278474 -15.674899392611643 0 0 0 +2232 372 1 -4.195636664828761 9.780578596631255 -9.41924188639526 0 0 0 +2237 373 1 -0.4030743497442989 11.67815356252494 -10.474316562983406 0 0 0 +2231 372 1 -3.5838133326662867 10.419424005688404 -8.234664436895718 0 0 0 +2278 380 1 -3.7296827414515907 14.668897184676393 -8.618964746407732 0 0 0 +2277 380 1 -2.368445447961048 15.329754390472006 -8.522881806758807 0 0 0 +2089 349 1 -0.020722028096156767 15.982196813184396 -12.095503854886475 0 0 0 +2094 349 1 -0.02353357373571162 15.517035415072222 -13.537859420339219 0 0 0 +2276 380 1 -2.479359936109658 16.82542361245759 -8.388627147618648 0 0 0 +2228 372 1 -6.487413036806655 10.22192373305385 -8.42442546991168 0 0 0 +2227 372 1 -5.57186438810699 9.18085670060055 -9.075010863181102 0 0 0 +2279 380 1 -4.836520292753585 15.59256397712865 -8.110003390276102 0 0 0 +2041 341 1 1.4777316261374829 9.5776317045291 -14.32440578138435 0 0 0 +2042 341 1 2.227954552366299 10.863529017653644 -14.068673180440825 0 0 0 +2046 341 1 1.1945881086233996 9.383966171480223 -15.81255145463315 0 0 0 +3603 0 2 2.2196768122147765 8.701474564569436 -10.858565795584028 0 0 0 +2043 341 1 3.5256860252301494 10.894728265317111 -14.866231226817462 0 0 0 +2044 341 1 3.1856678611164804 10.750909162447906 -16.345887207996807 0 0 0 +2045 341 1 2.488025924315072 9.438264404793589 -16.629266643779786 0 0 0 +2047 342 1 5.247818849132137 11.475812266333342 -11.526992892237415 0 0 0 +2048 342 1 4.930491665306554 11.27467898380956 -10.049817888717323 0 0 0 +2049 342 1 5.599908059530885 12.332505271635684 -9.200507577466265 0 0 0 +2050 342 1 5.415373070244612 13.74866494949136 -9.775496772965388 0 0 0 +2051 342 1 5.762488752812277 13.924136413232457 -11.264461315628678 0 0 0 +2052 342 1 5.033765507761013 12.875350989861467 -12.101311829823953 0 0 0 +2235 373 1 1.7263226903498965 13.002131501926034 -10.340979887055296 0 0 0 +2093 349 1 1.3603772928614668 15.044529222974456 -13.853976723598695 0 0 0 +2236 373 1 0.4396146539595237 12.799725458482905 -11.048038332377946 0 0 0 +2234 373 1 1.457592205256002 13.315427567064061 -8.870187927121911 0 0 0 +3597 0 2 6.023801131954434 9.86499256974765 -6.781372055007537 0 0 0 +3609 0 2 8.369959357461871 9.48157542061578 -9.670659546153367 0 0 0 +2053 343 1 11.327957345329603 10.173261680262355 -12.266170892610774 0 0 0 +2054 343 1 12.009659190448017 11.100590416600792 -13.228696369265641 0 0 0 +2055 343 1 11.918546097848216 12.533062108031817 -12.809431625859698 0 0 0 +2056 343 1 12.430395620023617 12.68403307739586 -11.37636700200998 0 0 0 +2057 343 1 11.578720111213228 11.797887829034547 -10.458199585976002 0 0 0 +2058 343 1 11.78647562736132 10.357337542225745 -10.814589895890057 0 0 0 +3473 0 2 8.407150858956053 11.800276798264115 -14.333901580955972 0 0 0 +3654 0 2 9.104528515910879 14.068342703445504 -9.892252555172586 0 0 0 +3662 0 2 11.796213397263193 15.394108448101159 -14.681497222979122 0 0 0 +3666 0 2 15.726337019212103 15.092897911033841 -12.068187259236339 0 0 0 +3539 0 2 8.301194138041884 15.412759696300657 -13.290155460494425 0 0 0 +3646 0 2 15.701523102717765 13.01031253555953 -15.013851429617548 0 0 0 +1827 305 1 21.98478065317486 10.893769620657684 -15.303110532918446 -1 0 0 +2021 337 1 22.782282402223185 11.906721956441752 -10.62601913373749 -1 0 0 +2059 344 1 15.976505510274293 9.907486012901595 -10.457600110780094 0 0 0 +2060 344 1 17.03234676428466 10.73957720023557 -9.781583643169782 0 0 0 +2019 337 1 23.516382988766527 10.718418170130818 -8.546909800598234 -1 0 0 +2020 337 1 23.044501349954622 12.015741984875158 -9.123135471068522 -1 0 0 +2017 337 1 22.18306162673547 9.512991115170806 -10.359930577397238 -1 0 0 +2018 337 1 22.57914503561747 9.547904274996633 -8.881345236149878 -1 0 0 +2022 337 1 21.74144386578162 10.842536681823344 -10.83629897756136 -1 0 0 +2061 344 1 18.306340647583333 10.756241166385271 -10.561092211910728 0 0 0 +2062 344 1 18.053896259358815 11.243900448771841 -12.007826417730863 0 0 0 +2063 344 1 16.985519569673755 10.406326420278964 -12.6901985417966 0 0 0 +2064 344 1 15.7160868425521 10.42598250181747 -11.878009506521742 0 0 0 +3615 0 2 21.411926613828427 16.272450093130757 -15.213394433091839 0 0 0 +3506 0 2 18.852802625485342 14.251790043263112 -14.073240534081359 0 0 0 +3509 0 2 20.764512259900393 14.73979588326667 -11.09547643077044 0 0 0 +393 66 1 -18.04995004409475 22.899142942603042 -13.315038991048576 0 -1 0 +392 66 1 -19.048437410328805 22.258451541965833 -12.366047128471017 0 -1 0 +3489 0 2 -20.36564853523893 17.327900553574015 -13.792722749147163 0 0 0 +2074 346 1 -16.73016324826034 17.794087249901935 -12.825713055496216 0 0 0 +2075 346 1 -16.314143875504918 19.23190380051609 -13.020008822435809 0 0 0 +3518 0 2 -22.214804749491915 20.517845848297636 -10.878290876621366 0 0 0 +3583 0 2 -18.501404364914904 19.822328608114542 -9.052812699419338 0 0 0 +3594 0 2 -22.262644356729844 22.13401439789884 -14.118038805501715 0 0 0 +391 66 1 -19.244369358835684 23.089157491822476 -11.061753063444831 0 -1 0 +396 66 1 -17.953367694385925 23.246122929270744 -10.292403730466157 0 -1 0 +2259 377 1 -22.72267650178792 18.06540248498034 -7.872860049792173 0 0 0 +394 66 1 -16.77088662260436 23.060556293589954 -12.578576164299788 0 -1 0 +2260 377 1 -23.62796540458677 16.939793187739582 -7.474623143257052 0 0 0 +2258 377 1 -21.570035592105825 17.461041184337766 -8.566539377895795 0 0 0 +2257 377 1 -21.98926636852786 16.624826750804026 -9.784819012698563 0 0 0 +395 66 1 -16.909526087480884 23.81808302636085 -11.248159245829875 0 -1 0 +397 67 1 -12.914690613800737 22.87102626854608 -9.670347601820833 0 -1 0 +207 35 1 -14.777865834793786 22.22559840196997 -16.71958963600847 0 -1 0 +208 35 1 -14.728298311922654 22.97500175985913 -15.407461054976558 0 -1 0 +2076 346 1 -14.901600595550239 19.31125450225445 -13.58886664046455 0 0 0 +206 35 1 -14.355290329269927 22.953585022599366 -18.007402233990845 0 -1 0 +2071 346 1 -13.972898642697283 18.653635813547588 -12.593202561718154 0 0 0 +2072 346 1 -14.374137862643023 17.275289933200565 -12.05655164047256 0 0 0 +2073 346 1 -15.863099317068903 17.148190561989804 -11.738295809240418 0 0 0 +2077 347 1 -11.080030400594145 18.67414150324461 -10.043596738474966 0 0 0 +2078 347 1 -10.595495894343468 17.222844606008284 -10.118373314734276 0 0 0 +2079 347 1 -10.37215128139512 16.781694104860595 -11.547665907396054 0 0 0 +2080 347 1 -9.467299217699468 17.663288344785734 -12.298362086259235 0 0 0 +2081 347 1 -9.835200398202403 19.14069469331578 -12.269913803911598 0 0 0 +2082 347 1 -10.058501616108046 19.496847524173837 -10.842356316760489 0 0 0 +402 67 1 -12.519452584135921 22.415493965868567 -11.072043725097274 0 -1 0 +3529 0 2 -15.138070525835012 19.42923475590698 -9.258901808657301 0 0 0 +403 68 1 -8.360357251591376 22.705899843908153 -14.548558093980684 0 -1 0 +404 68 1 -7.786776940924974 21.996506020465045 -13.337193696123515 0 -1 0 +37 7 1 9.216570853970454 23.746981101822136 -21.816403467413558 0 -1 0 +2449 409 1 22.989248553629295 18.371491500768187 -0.9001937732154762 -1 0 0 +410 69 1 -2.0467582057846716 23.271600558390332 -13.609678784562382 0 -1 0 +3586 0 2 -3.358824904527047 15.859777640689396 -15.545370537684025 0 0 0 +2090 349 1 1.0177503847717884 17.057982161125103 -11.832675438353318 0 0 0 +3540 0 2 -7.532515711014298 21.633188647024447 -9.539002072130648 0 0 0 +411 69 1 -1.8777615341431766 22.567162731798483 -12.288014441631104 0 -1 0 +405 68 1 -6.672447678463635 22.79004764132372 -12.685587172089292 0 -1 0 +2083 348 1 -3.7300623492724494 18.827768013014783 -12.748465776088153 0 0 0 +2084 348 1 -4.988530212322625 19.56655860360614 -12.29848608065525 0 0 0 +2085 348 1 -6.162731081410913 18.59608129474808 -12.343529127408413 0 0 0 +2086 348 1 -5.883414194277636 17.40537080671744 -11.412879771532698 0 0 0 +2087 348 1 -4.574291623035966 16.730658903164237 -11.733466562165212 0 0 0 +2088 348 1 -3.44105700356502 17.72786251741225 -11.78145391603721 0 0 0 +3618 0 2 -1.9756545934679275 20.459329286741866 -15.418489217320248 0 0 0 +3657 0 2 -4.067511576702983 20.90034345503702 -8.5755063460858 0 0 0 +3625 0 2 -0.5308636964347779 19.754292678241775 -9.953887759505445 0 0 0 +412 69 1 -1.1269742415577653 23.44294149857144 -11.273709990333762 0 -1 0 +2300 384 1 20.46963375389194 19.107253565177352 -6.151335240663628 0 0 0 +420 70 1 5.526702540047439 22.582275478955186 -11.698980100585784 0 -1 0 +1905 318 1 6.1943514957966475 20.274710628359607 -14.604393967853856 0 0 0 +3504 0 2 1.668984216535283 20.368408875649713 -13.187927444070434 0 0 0 +2091 349 1 2.37288327726667 16.547543308254866 -12.268357732229966 0 0 0 +2092 349 1 2.3952691581408407 16.116017676651822 -13.711520795786532 0 0 0 +2095 350 1 8.164850883315548 18.11624562664768 -11.117245601339429 0 0 0 +2096 350 1 6.648452158314515 17.924976961775794 -11.05062214152866 0 0 0 +2097 350 1 6.3790360026120165 17.48579416151431 -9.613714984408977 0 0 0 +2098 350 1 6.782905989354565 18.473700311555472 -8.553440330378235 0 0 0 +2099 350 1 8.257560740119935 18.829613835171156 -8.65196381294336 0 0 0 +416 70 1 3.6605150606396113 21.651617291306344 -10.379219330170462 0 -1 0 +415 70 1 5.171630266107457 21.67382488251333 -10.54161463190095 0 -1 0 +413 69 1 0.11587578354119299 23.980473069064118 -11.962852944366668 0 -1 0 +3581 0 2 2.650159359531374 16.570305768105253 -8.29832477942277 0 0 0 +2100 350 1 8.516797657005027 19.18500443029206 -10.110985278771432 0 0 0 +3492 0 2 10.157582110813767 19.20715047638418 -14.674624111098112 0 0 0 +2101 351 1 14.050186313904119 18.833682349694087 -11.368751748312171 0 0 0 +2102 351 1 12.654426816958972 18.504172895907146 -11.868046574468305 0 0 0 +2103 351 1 12.035779804744474 17.265429545896165 -11.229180816620751 0 0 0 +2104 351 1 12.495621632721676 17.01367252898999 -9.814035743953896 0 0 0 +2105 351 1 13.985937968452118 17.277210150367125 -9.583281564102377 0 0 0 +2106 351 1 14.346322723902478 18.70073797246237 -9.855487528843708 0 0 0 +423 71 1 12.92310182817848 22.238195543663963 -12.78673948838996 0 -1 0 +3635 0 2 8.89288769941493 21.965339221090172 -12.380749916294057 0 0 0 +3545 0 2 14.859743995401452 17.82007779103525 -14.882835442167659 0 0 0 +424 71 1 14.431882032206241 22.40745499841148 -12.845552674551879 0 -1 0 +422 71 1 12.313454569516326 23.06758728134546 -11.68820320008286 0 -1 0 +3608 0 2 11.692774339592187 21.228695051136913 -8.804007802661602 0 0 0 +2345 391 1 8.323838116679434 0.020093046077250248 -0.803653381821576 0 0 0 +425 71 1 14.787328083999071 23.905664271532174 -12.978242291666355 0 -1 0 +2303 384 1 19.135610465229426 17.006189947843538 -7.714214037340628 0 0 0 +2067 345 1 22.549942551727863 20.29907308941962 -13.229191680369196 -1 0 0 +2068 345 1 23.074581282512796 19.255686980862794 -14.228572018184751 -1 0 0 +2069 345 1 23.843992019273593 18.204879655963087 -13.445537904237336 -1 0 0 +3575 0 2 22.93416338849515 21.00985802162226 -8.3332699539485 -1 0 0 +430 72 1 18.545306686404256 23.934598747868357 -13.780949909938697 0 -1 0 +2070 345 1 23.173099985775576 17.591973316408485 -12.236319745789409 -1 0 0 +3640 0 2 15.911135931096837 22.26402552035697 -9.228625268648873 0 0 0 +2261 377 1 23.8761511303657 16.133589811171607 -8.643828101042873 -1 0 0 +2065 345 1 22.479804874989398 18.616081631682583 -11.338020998468277 -1 0 0 +2066 345 1 21.708227088148394 19.65485474864006 -12.119460190256138 -1 0 0 +2107 352 1 18.884083726957357 19.394749432966236 -14.07367709525513 0 0 0 +2108 352 1 18.87766543131627 17.921621183002294 -13.762014683717524 0 0 0 +2109 352 1 18.744445322354224 17.770499770008872 -12.242929334667343 0 0 0 +2110 352 1 17.538377344346333 18.507368663738294 -11.660587722456096 0 0 0 +2111 352 1 17.399844162098475 19.943538438714125 -12.11437660589165 0 0 0 +2112 352 1 17.606960235907724 20.09037128153035 -13.58927409354696 0 0 0 +228 38 1 6.212797087761711 23.826666187373746 -19.39035044944155 0 -1 0 +3498 0 2 19.518344138275623 21.193618469969575 -9.50466250235847 0 0 0 +2304 384 1 18.276714424093832 18.17724559830862 -7.2064387103259815 0 0 0 +12 2 1 -17.998775451146802 23.304886078959317 -22.959398704635536 0 -1 0 +211 36 1 -7.455890434870742 23.818957023996624 -18.136549535717 0 -1 0 +2359 394 1 -19.813431198765716 2.5128651592730016 -0.6703401985131513 0 0 0 +2171 362 1 -17.480056854349844 3.9150546591629642 -8.788406168084268 0 0 0 +2170 362 1 -17.228766168894136 5.193831824809595 -7.9616074129622385 0 0 0 +2169 362 1 -18.46824708898834 6.002335398897916 -7.746508527300511 0 0 0 +2168 362 1 -19.13108776722793 6.294029287403517 -9.079451060569614 0 0 0 +2165 361 1 -23.381402879846924 5.175329448438821 -7.742529529150434 0 0 0 +2122 354 1 -16.550427364692318 0.056580469710086755 -7.7422741149344745 0 0 0 +1757 293 1 -0.8480321081063692 0.47693883466195997 -18.416431859897223 0 0 0 +2363 394 1 -19.856272532900473 4.2896327059097805 -2.449567515736965 0 0 0 +2364 394 1 -20.205008737335422 2.8413117990820793 -2.081493193817967 0 0 0 +3593 0 2 -16.643349695132734 2.4327377220522513 -4.794956096314624 0 0 0 +3623 0 2 -19.78419514988777 3.1199281956384883 -5.966370171542481 0 0 0 +2166 361 1 -23.029253927280262 6.085702006178238 -6.564882325994975 0 0 0 +3591 0 2 22.834343447230438 23.619137905447552 -5.4513310322689215 0 0 0 +2161 361 1 -23.751466830729594 5.620553065178038 -5.3178566852102085 0 0 0 +3487 0 2 -16.4528171038362 6.402293574587802 -3.476419707797518 0 0 0 +2362 394 1 -20.468030583225417 5.275749967891862 -1.4688582280100655 0 0 0 +2314 386 1 -16.968348352419348 0.5095126730230098 -1.7525756116477316 0 0 0 +2370 395 1 -10.848092666471066 5.893575716178741 -0.6862939751412154 0 0 0 +2318 387 1 -11.948073137166489 0.6907950121139029 -1.9892085902340533 0 0 0 +2317 387 1 -11.028326575979479 1.9017488469699906 -2.0703921212769076 0 0 0 +2295 383 1 14.771400205595766 20.213569575683053 -5.728787791306872 0 0 0 +2178 363 1 -13.74426594642433 4.780067165314925 -5.346348838763591 0 0 0 +2177 363 1 -12.684012119550651 3.70055789224867 -5.207275824221418 0 0 0 +2176 363 1 -12.584385634903022 2.739671631205932 -6.394669493396722 0 0 0 +2175 363 1 -12.526272415488704 3.4723561168991024 -7.720735251226924 0 0 0 +2174 363 1 -13.771078021884643 4.336895856754874 -7.8219521912434296 0 0 0 +2173 363 1 -13.705083332928218 5.416463960406691 -6.7291024256428935 0 0 0 +2321 387 1 -9.254329070901434 0.49152610935987384 -1.1092666087698666 0 0 0 +2322 387 1 -9.935571098000965 1.812829032892151 -1.0321581314525552 0 0 0 +2365 395 1 -11.492159270473268 5.512306147136131 -2.0130834484818108 0 0 0 +3563 0 2 -9.598570723251962 0.7196939953466001 -5.403237501476704 0 0 0 +2184 364 1 -9.397582800716721 5.290478656276405 -5.002657891315456 0 0 0 +2183 364 1 -8.352151591578547 5.965882111615369 -5.90133942938482 0 0 0 +2179 364 1 -8.601468180020047 4.329917926565802 -4.182024471559311 0 0 0 +2313 386 1 -15.878615016906283 1.0539594840193305 -0.8377920752797483 0 0 0 +2367 395 1 -13.767533127648932 5.250709220975121 -0.9159115996552554 0 0 0 +2366 395 1 -12.986771650256037 5.848489697526618 -2.0553971135435187 0 0 0 +3480 0 2 20.556314557584447 23.10452757133288 -20.034687911202212 0 0 0 +2142 357 1 0.0699596184517053 0.19691487835685878 -4.728004511512185 0 0 0 +2474 413 1 -0.1532809433507732 18.080439157179537 -0.2566658383273682 0 0 0 +2188 365 1 -1.2259121281118215 5.448698500943514 -8.0634924128455 0 0 0 +2186 365 1 -0.5742134938582514 7.906153382814947 -8.122394394849435 0 0 0 +2180 364 1 -7.0909439190574926 4.684314079972506 -4.116566734906233 0 0 0 +3626 0 2 -5.986167005805066 2.60682973138861 -7.032999740824604 0 0 0 +2324 388 1 -6.0174824067851445 1.008808909068605 -1.399157545764981 0 0 0 +2182 364 1 -7.468815284554487 6.975959504780309 -5.127960781593801 0 0 0 +2181 364 1 -7.055333321938288 6.179282658452598 -3.970375204669098 0 0 0 +3475 0 2 -1.733150053104064 2.1541590556312324 -1.035870482436236 0 0 0 +3501 0 2 -3.4327863607606477 3.6234305503057866 -4.645671447677831 0 0 0 +3601 0 2 -2.930360268259236 6.807520712448605 -2.691798004809603 0 0 0 +3607 0 2 -4.63954845857514 6.209439337590575 -7.590637104719327 0 0 0 +3472 0 2 21.914366752107735 16.07090790165751 -3.553787321374488 0 0 0 +2296 383 1 15.772365334685295 20.17172316399619 -4.575926324630003 0 0 0 +2190 365 1 -0.9302298272289442 6.754046364348247 -5.957690915707376 0 0 0 +2185 365 1 -0.09216737334045652 7.785681003240202 -6.679584127859022 0 0 0 +2323 388 1 -6.419764992991108 1.081170572846866 -2.8809825490267325 0 0 0 +2137 357 1 0.18453684794179906 1.7462474590634944 -4.6904240849214105 0 0 0 +2144 358 1 5.661060922008474 0.11565598851782254 -6.412439899566996 0 0 0 +2138 357 1 0.6858814412389554 2.32121855569595 -6.115694310845563 0 0 0 +2139 357 1 1.4211409195944815 1.2173143880867463 -6.889184658125032 0 0 0 +2189 365 1 -0.8778541375756972 5.377306669318093 -6.593063055940868 0 0 0 +3637 0 2 -0.03943785227794515 4.742921555127387 -2.961653225264607 0 0 0 +2337 390 1 1.71128715740165 2.161249291294468 -0.30587513012776113 0 0 0 +2384 398 1 6.523470651523185 7.916628154739661 -0.17203125045156478 0 0 0 +2335 390 1 3.0290891300725424 1.929700212017193 -2.438556876536142 0 0 0 +2385 398 1 6.44683977093319 7.195999634498277 -1.5517178231003599 0 0 0 +2339 390 1 3.346857717272696 0.2244617190871429 -0.4749535437521076 0 0 0 +2340 390 1 3.959761124812058 0.9931198066932388 -1.6540078303853818 0 0 0 +3555 0 2 2.8935636265508937 5.010429100743618 -5.083185184205782 0 0 0 +3522 0 2 6.745441728909335 6.5433929743549015 -6.2155846709344855 0 0 0 +2336 390 1 2.4798283849926697 2.869382955832721 -1.3993490559754327 0 0 0 +2386 398 1 5.070193141000763 7.323677044279709 -2.183447166499072 0 0 0 +2149 359 1 8.62031017946049 2.212051275648625 -7.51408524132695 0 0 0 +2150 359 1 9.519055467240525 1.1026777058716293 -6.981952601149039 0 0 0 +2154 359 1 9.3603405253219 3.5233034558841396 -7.397651784875766 0 0 0 +2153 359 1 10.609550376592532 3.4579404300410705 -8.268110958901485 0 0 0 +2341 391 1 10.676736772474534 0.655527000430916 -0.7033527097235714 0 0 0 +2202 367 1 10.20920520650047 7.455817393119604 -6.84860873852618 0 0 0 +2197 367 1 10.687327544481107 6.976791123657285 -5.47069774227807 0 0 0 +2152 359 1 11.542099170429967 2.3408802262753383 -7.813095363449465 0 0 0 +3550 0 2 13.222701260725103 3.6663695247348653 -0.09417673174194643 0 0 0 +3592 0 2 6.712837184920185 3.410253206740265 -3.989943237211672 0 0 0 +3670 0 2 9.54729770301097 4.196290161499583 -1.8330184897342003 0 0 0 +2206 368 1 14.60070479832996 5.666548392876913 -6.193107916660417 0 0 0 +3149 0 2 12.587551913147873 3.0296732452276447 -3.69678407937141 0 0 0 +2208 368 1 16.717849396443185 6.619752413938728 -5.268032581672726 0 0 0 +2207 368 1 15.718048666135408 5.472717986561985 -5.200553875287182 0 0 0 +3203 0 2 15.491191850942949 2.373396753956316 -7.758898026935321 0 0 0 +2395 400 1 17.232493764745303 5.354715895624807 -1.5003775992228923 0 0 0 +2204 368 1 16.067760718810106 6.975263981873476 -7.663777903703891 0 0 0 +3541 0 2 20.78841549032004 6.612664917939734 -7.166282480982427 0 0 0 +2298 383 1 14.845161473560806 18.016359987090677 -3.717318985805564 0 0 0 +2356 393 1 23.187797111529584 7.44277708690629 -1.026879745750192 -1 0 0 +3736 0 2 23.754952631261162 1.4965145544776497 -1.843192471079308 0 0 0 +2163 361 1 -23.829065060333065 3.228230578419032 -6.121889351885381 0 0 0 +3147 0 2 3.4616021062779674 0.3803210766291573 -15.644710824182132 0 0 0 +2162 361 1 -23.457094256621257 4.222489973105523 -4.981339276633498 0 0 0 +2357 393 1 23.82329787845585 6.068743572897513 -1.0309524599195685 -1 0 0 +2203 368 1 17.232445946341077 6.630985110031023 -6.703166868563926 0 0 0 +2400 400 1 16.202280176160116 6.433597641134569 -1.1549189781300175 0 0 0 +3488 0 2 19.96829206662351 2.20424350414897 -1.7673999974239274 0 0 0 +3559 0 2 20.743989801637706 6.309685643033538 -3.44640770269267 0 0 0 +3602 0 2 19.595582540556578 3.1733800076519216 -5.2550224585628 0 0 0 +3629 0 2 16.191989002462908 1.8757155646240218 -3.54565397032477 0 0 0 +2399 400 1 16.998878669229164 7.705687563883996 -0.846946064123969 0 0 0 +2411 402 1 -19.073703608903358 9.921164904997527 -1.8682607831493994 0 0 0 +2220 370 1 -15.70392847266482 9.563389890734376 -7.780123116344971 0 0 0 +2219 370 1 -15.914115631605448 8.568642368681154 -6.602488316643249 0 0 0 +2218 370 1 -17.015137370016795 9.015598854223676 -5.600980978285928 0 0 0 +2217 370 1 -17.144501409558202 10.480075413604693 -5.60494758502412 0 0 0 +2216 370 1 -17.819272188369034 10.764044979399383 -6.8413082824566125 0 0 0 +2214 369 1 -23.055812701843987 13.116158395973 -6.111928382314773 0 0 0 +2213 369 1 -21.70416471235625 12.760095180120155 -6.691498659487811 0 0 0 +2209 369 1 -23.30644074004359 12.539459858558372 -4.740906313411111 0 0 0 +2410 402 1 -18.136555578036234 8.77114964745957 -1.606481702312642 0 0 0 +3527 0 2 -20.44096785301286 14.83799965972949 -0.3652298107020169 0 0 0 +3534 0 2 -20.567275061043485 7.855277294477281 -4.796436620633521 0 0 0 +3598 0 2 -22.718815063315905 9.491391503527666 -2.7783592989392334 0 0 0 +3548 0 2 -16.997155922568652 13.00949868390788 -3.164141335006651 0 0 0 +2212 369 1 -20.600230395450946 13.187103588432638 -5.673274676636408 0 0 0 +2409 402 1 -18.23019047742525 8.437805069265135 -0.11868903945798505 0 0 0 +2211 369 1 -20.862342799238803 12.466595308647314 -4.380592598380723 0 0 0 +2210 369 1 -22.202284408568065 12.827986978206416 -3.7997029954390587 0 0 0 +2268 378 1 -18.653060456618835 16.28432131751648 -5.767786360889106 0 0 0 +2267 378 1 -18.696862963333718 15.716446921853723 -7.166905982636567 0 0 0 +2412 402 1 -18.944663208597333 11.11313134785631 -0.9350861319705538 0 0 0 +2416 403 1 -12.493738911033587 12.20476316285281 -0.6168630064682877 0 0 0 +2302 384 1 20.57636532222017 17.416618752680115 -7.9993994449766275 0 0 0 +1766 295 1 10.930713593031799 0.41859796567066604 -16.545892582930577 0 0 0 +2414 403 1 -14.454112097569308 10.877317412848575 -0.24686494606062231 0 0 0 +3526 0 2 -7.884785965327792 13.492290749196338 -5.863367489470024 0 0 0 +2226 371 1 -10.662314576379966 10.774852737715447 -6.406226570394559 0 0 0 +2225 371 1 -9.624563044185537 10.183332767655168 -5.501284014677356 0 0 0 +2224 371 1 -10.414246871971073 9.652531409701373 -4.339429639913418 0 0 0 +2223 371 1 -11.436352912748125 8.63610456909986 -4.7538451468920435 0 0 0 +2222 371 1 -12.406141249534468 9.160537803096869 -5.827892435613565 0 0 0 +2221 371 1 -11.694089752224274 9.813430327222157 -6.986112129865442 0 0 0 +2123 354 1 -17.94180533459147 0.061016824844554084 -8.30293893825937 0 0 0 +2418 403 1 -12.268916536122639 9.619958702380325 -0.6360958354135315 0 0 0 +3502 0 2 -14.108948918364664 12.941600436339293 -5.8429192037267645 0 0 0 +3633 0 2 -11.10188229032917 13.450475943532073 -3.9098722702255895 0 0 0 +3663 0 2 -8.35517951864954 8.752151674588685 -1.7230226092359122 0 0 0 +3655 0 2 -8.051214788991826 12.502182086270123 -2.4649651979972713 0 0 0 +3643 0 2 -4.904663738972769 23.739802318773634 -15.331826268893032 0 0 0 +2404 401 1 22.324148441443374 13.608001605116625 -0.5475954517860675 -1 0 0 +3490 0 2 -2.1449118522385944 10.558706109909979 -4.7929600897149 0 0 0 +2238 373 1 -0.6484925675212291 12.073816460145913 -9.045542233744218 0 0 0 +2230 372 1 -4.531239985776611 11.452490783723263 -7.622792842815729 0 0 0 +2229 372 1 -5.83369612829366 10.842581355037462 -7.207674332333591 0 0 0 +3605 0 2 -4.398703191312671 13.204722670212496 -4.0970463947063855 0 0 0 +3613 0 2 -5.537503138217481 9.71590079966454 -3.7811073226728715 0 0 0 +3566 0 2 -3.776757818218801 15.814194401206 -0.722324648583349 0 0 0 +2284 381 1 -1.5599952231428849 14.838438384064965 -5.063147056474253 0 0 0 +2283 381 1 -1.936975673701021 15.60118540015182 -3.8072743454838527 0 0 0 +2421 404 1 -2.704298875874827 10.89238432569151 -0.7965225015175745 0 0 0 +2282 381 1 -0.7761847567339379 15.792648857119268 -2.8026159555530064 0 0 0 +3496 0 2 -6.805442505064991 16.114394175774734 -2.8469316706175527 0 0 0 +2280 380 1 -4.413138206156654 16.403976567166044 -6.877848289319443 0 0 0 +2422 404 1 -3.380322604015592 12.193086134217083 -0.4475446170226109 0 0 0 +3631 0 2 3.9978154942664434 10.669842865617577 -0.7628766076389916 0 0 0 +3505 0 2 0.5669977489830897 8.84416129905296 -2.1137720990490405 0 0 0 +2244 374 1 6.4516383752499245 14.011168164951574 -5.637937151047519 0 0 0 +2242 374 1 6.259951567198466 13.010863756408535 -3.34626091978336 0 0 0 +2241 374 1 4.781024378162771 12.815729127089524 -3.6549555989493347 0 0 0 +2240 374 1 4.154063918610142 13.815639231366973 -4.6441721276849455 0 0 0 +2239 374 1 4.953568200585549 13.862799844382161 -5.901545655985871 0 0 0 +2233 373 1 0.6265897193383253 12.229966476738728 -8.20915594576502 0 0 0 +3493 0 2 1.0343020167158308 12.175452337460115 -3.0243550493642157 0 0 0 +3516 0 2 2.9566666142061626 9.56909047851067 -5.000105749377763 0 0 0 +3650 0 2 7.529508177685294 14.986469674466717 -0.49132905086598533 0 0 0 +3669 0 2 4.142897103798718 15.94855624937794 -1.6083496901389036 0 0 0 +2243 374 1 6.981365234772586 12.971471409481653 -4.677832052599226 0 0 0 +3616 0 2 8.088097066186746 9.102842795018468 -4.169180894232419 0 0 0 +1758 293 1 0.5368009133345782 0.12834380266136663 -18.93388661630213 0 0 0 +3537 0 2 9.376539953038534 11.639216946173454 -6.620900551516478 0 0 0 +2438 407 1 12.1412664278767 12.035908834595206 -0.12469892214862748 0 0 0 +2198 367 1 11.567935099908338 7.967431547680981 -4.748983663652025 0 0 0 +2201 367 1 11.378626047561422 7.913939082843218 -7.709529204787452 0 0 0 +2199 367 1 12.728413409217298 8.438808663071871 -5.584950179458887 0 0 0 +2200 367 1 12.243224612077467 8.933942780469659 -6.976123785499148 0 0 0 +3533 0 2 10.252945152667182 15.267818478369659 -3.516778185103391 0 0 0 +2250 375 1 14.31112532443578 11.962773425967448 -6.346469285679499 0 0 0 +2249 375 1 14.38000826890294 12.375368022228558 -4.860982743825875 0 0 0 +2248 375 1 14.166518368370326 13.857875306545639 -4.66427590998562 0 0 0 +2247 375 1 12.932747974712163 14.361599765650926 -5.394790359699625 0 0 0 +2246 375 1 13.137395884501192 14.090410297419345 -6.875653880990553 0 0 0 +2245 375 1 13.149623274148258 12.585324494211845 -7.1340665151059515 0 0 0 +3551 0 2 11.065801686849914 10.891498568801962 -3.3141569488502194 0 0 0 +3639 0 2 14.611900885677315 9.453095832804978 -2.79682597914436 0 0 0 +1604 268 1 -6.5154600026655025 8.143597879840208 -23.90144430337382 0 0 0 +2439 407 1 11.44149948303497 13.405466718488062 -0.2811727741327638 0 0 0 +3630 0 2 9.858259640849614 7.734894810135244 -1.2823059790710296 0 0 0 +3478 0 2 16.201090588572928 14.330793948553403 -8.913415885036667 0 0 0 +2403 401 1 23.127843659963478 12.271823573484477 -0.5610594289678206 -1 0 0 +1629 272 1 18.01599690006115 4.6323105768974235 -23.580410039727887 0 0 0 +2448 408 1 16.821690131498237 11.91391350848974 -0.8549946376953259 0 0 0 +3704 0 2 20.293672869620984 9.87106101241468 -2.3657547060884867 0 0 0 +3644 0 2 22.444500027980922 9.121514993236673 -5.050619311300336 0 0 0 +2256 376 1 18.48870769365214 12.12748047690393 -6.939563712198812 0 0 0 +2255 376 1 19.872307973686013 12.629862117011081 -7.391569569722666 0 0 0 +2254 376 1 20.557822955699418 13.571603754274934 -6.39985884274556 0 0 0 +2253 376 1 20.7412863141206 12.847581254900787 -5.096305551531576 0 0 0 +2252 376 1 19.38567356715557 12.302341406452848 -4.630145213964317 0 0 0 +2251 376 1 18.614185691705053 11.439581363485908 -5.61700188225986 0 0 0 +3507 0 2 17.662584068334688 15.696587857275402 -3.849136712327109 0 0 0 +2443 408 1 17.510565148918047 13.251141484050992 -0.8472229485263955 0 0 0 +586 98 1 -17.572903201716652 21.879057815862705 -5.19403309737816 0 -1 0 +582 97 1 -21.272630206566905 23.62999893021759 -5.68037673354409 0 -1 0 +3379 0 2 21.369962883933216 23.77750475133039 -23.82379340947792 0 -1 1 +779 130 1 -17.635283686743644 21.48711398581814 -0.8906106863151018 0 -1 0 +577 97 1 -20.925966715423986 23.30875004173855 -7.002171906864454 0 -1 0 +774 129 1 -22.862816044475736 23.867936905681457 -2.0760402232488935 0 -1 0 +769 129 1 23.871033397738483 23.289522610286365 -1.4042864873440095 -1 -1 0 +773 129 1 -21.69885760193756 22.894125275811483 -2.0169040717121955 0 -1 0 +584 98 1 -15.441594569482346 20.534101637045005 -5.83512658577573 0 -1 0 +2266 378 1 -17.626013989140322 16.42589024056285 -7.975221947229114 0 0 0 +2265 378 1 -16.22330002323402 16.383497339807576 -7.444641975091593 0 0 0 +2264 378 1 -16.222109887547752 16.82375349050769 -6.047451232516687 0 0 0 +2263 378 1 -17.261488200698576 16.18880810024647 -5.195461393780578 0 0 0 +3536 0 2 -15.296086093514093 18.115592061894667 -2.5896568812304497 0 0 0 +3538 0 2 -20.433630444075067 20.01320017409419 -5.705831551665259 0 0 0 +3649 0 2 -22.363448033544405 16.46585921847229 -4.098806424199109 0 0 0 +770 129 1 -23.83177651086435 22.783442402305354 -0.00362212609986744 0 -1 0 +585 98 1 -16.527400792075813 20.879624343146066 -4.815535077138938 0 -1 0 +2423 404 1 -4.898654806655995 12.082073437226839 -0.4398565491984723 0 0 0 +3756 0 2 -20.16691067331444 18.812795254162825 -1.9136544853922866 0 0 0 +592 99 1 -11.027102945584327 22.93298724159472 -6.830994694184477 0 -1 0 +591 99 1 -10.212329243690855 21.69548278803057 -7.162417688423282 0 -1 0 +212 36 1 -8.41146917913926 23.735583000152516 -19.271418957782853 0 -1 0 +2487 415 1 11.22070151348338 17.412426093393 -0.703083360786186 0 0 0 +2489 415 1 13.006534913540168 19.185579450554556 -0.1911552208702408 0 0 0 +587 98 1 -16.81176241730543 23.120598561758705 -5.557922931203064 0 -1 0 +588 98 1 -15.811539331868213 22.85467039637773 -6.645344466078302 0 -1 0 +583 98 1 -14.762605122338805 21.817065121148953 -6.298663123074806 0 -1 0 +3667 0 2 -12.237250782567903 20.88155514565447 -2.0397646802795464 0 0 0 +2274 379 1 -11.739625620446175 18.89940170839249 -4.91400309761242 0 0 0 +2273 379 1 -10.41153275042253 18.189257747991903 -4.612452418442175 0 0 0 +2272 379 1 -10.32507871658377 16.749509555109967 -5.090642126498609 0 0 0 +2271 379 1 -10.850261075843193 16.551748449577424 -6.492906149006503 0 0 0 +2270 379 1 -12.266236292167802 17.153012457210334 -6.557528161690672 0 0 0 +2269 379 1 -12.293310293141122 18.628895637398113 -6.2848606888442635 0 0 0 +594 99 1 -10.014248239765639 23.004359137472218 -4.537650426969768 0 -1 0 +593 99 1 -11.297974705711404 23.030651089752105 -5.341527668878834 0 -1 0 +589 99 1 -9.172313603759447 21.739611206184517 -4.875671763961525 0 -1 0 +3675 0 2 -14.108357668513428 14.81671435516546 -2.890628646086898 0 0 0 +3202 0 2 18.278351164715826 0.24847548323126353 -8.837984468255648 0 0 0 +590 99 1 -8.933236881733706 21.57982425937155 -6.364237903827499 0 -1 0 +431 72 1 18.64264687288229 23.418375479270377 -12.390302169546283 0 -1 0 +780 130 1 -16.1426395860797 21.822444720016716 -0.7700390920924144 0 -1 0 +2490 415 1 12.335678922718628 20.237174951791882 -1.0323129924380257 0 0 0 +2396 400 1 18.277760692433358 4.987404826772072 -0.4023726946755268 0 0 0 +3528 0 2 -7.834826339985492 18.49115506482708 -7.685249710471893 0 0 0 +2275 380 1 -3.336857372123814 17.322353167811144 -7.2662642225924134 0 0 0 +602 101 1 -1.5286002402096397 23.42533699888928 -6.68878399855941 0 -1 0 +3572 0 2 -7.820750177328067 19.691888672825105 -2.2390478590180702 0 0 0 +598 100 1 -5.295503497583894 23.32550461454885 -3.3194905044422574 0 -1 0 +418 70 1 3.565956878743001 23.946815080423367 -11.386943168876607 0 -1 0 +597 100 1 -4.475868184208501 22.991491390376197 -4.549111918617107 0 -1 0 +3710 0 2 -2.5760872591761426 20.48621460972236 -2.7560746455257132 0 0 0 +596 100 1 -5.247807289950434 23.118457729700783 -5.846741123452733 0 -1 0 +2293 383 1 13.987845890001788 17.98406573024533 -4.983426473596979 0 0 0 +3513 0 2 -5.166515891099728 19.562467388889296 -5.241458296480488 0 0 0 +3588 0 2 -0.4160458149916305 19.845518046671845 -5.589062431852918 0 0 0 +606 101 1 0.15401123028018457 23.631045803536065 -4.897341098611376 0 -1 0 +608 102 1 7.104868513753745 21.60742631617994 -6.721942620507365 0 -1 0 +609 102 1 8.02894481991229 22.387585544834828 -7.673757564319838 0 -1 0 +2301 384 1 21.2149968146802 17.89022284069748 -6.686130954784494 0 0 0 +2285 381 1 -0.3712788993841086 15.413892575075874 -5.7849842996472045 0 0 0 +2286 381 1 0.8095918025411559 15.508978763986764 -4.846841665579362 0 0 0 +2281 381 1 0.4318583563951355 16.32826989944019 -3.5950130386484527 0 0 0 +604 101 1 0.9616993890612406 22.766693158667163 -7.167914014856324 0 -1 0 +3665 0 2 2.667115707313385 19.920510416857184 -7.54065504121059 0 0 0 +612 102 1 5.459644573297491 23.515564151975266 -6.833038339908403 0 -1 0 +2459 410 1 -17.424694902289595 16.278551875236953 -0.3935029388124175 0 0 0 +607 102 1 5.655975802351836 22.007609625222507 -6.849915784398851 0 -1 0 +1739 290 1 -17.4386080126658 0.2896277947803332 -19.457612131126044 0 0 0 +2292 382 1 6.7507460351539965 19.116656890607352 -3.2778563227811226 0 0 0 +2291 382 1 5.253269855236694 19.086660749298023 -3.6333457553365194 0 0 0 +2290 382 1 5.0043095961637 18.65467556170543 -5.10255017147124 0 0 0 +2289 382 1 5.752288036101169 17.348781694726 -5.42011885450264 0 0 0 +2288 382 1 7.239501219877277 17.462985176115517 -5.038848440580393 0 0 0 +2287 382 1 7.5705630117595355 17.91445922392665 -3.6210067152951324 0 0 0 +3470 0 2 4.309692877842342 22.567231250603417 -3.307957014155313 0 0 0 +3483 0 2 1.748357866372525 19.982219198657607 -2.6913373791034476 0 0 0 +605 101 1 1.30284565372134 23.53369822023975 -5.8937683857120495 0 -1 0 +3553 0 2 19.404450754851958 21.303084014498463 -3.0591851229645255 0 0 0 +807 135 1 11.10028100637009 23.43695921367467 -0.5507046153654952 0 -1 0 +2294 383 1 14.565981298191234 18.781675788226323 -6.16320581584657 0 0 0 +3486 0 2 14.42650047761157 15.048009235412986 -1.2983260496627553 0 0 0 +2297 383 1 15.248008560561075 19.411713987917484 -3.3592648834285703 0 0 0 +3653 0 2 10.03194048802675 15.925235332755175 -7.070758614469615 0 0 0 +2485 415 1 11.452170243210835 19.496250363776735 -2.043683789839637 0 0 0 +3660 0 2 8.743090350842484 22.389575170681958 -3.156119823283995 0 0 0 +2486 415 1 10.47292815735881 18.49278925028686 -1.4450092454901404 0 0 0 +3500 0 2 16.235132009166147 22.77121949739279 -1.6722664146223631 0 0 0 +613 103 1 12.043916373774442 23.006201738936 -4.982052233921803 0 -1 0 +3589 0 2 10.698627285616576 19.517832757333267 -5.998297309459528 0 0 0 +2361 394 1 -20.085416400777234 4.9797309125541815 -0.028175082863422487 0 0 0 +2481 414 1 6.162562317968746 19.319444566461545 -0.010566628202163076 0 0 0 +2496 416 1 19.011192280980744 17.27101559915357 -0.04205902494056761 0 0 0 +3514 0 2 -13.940950713044957 0.3235620234451786 -23.99075897320151 0 0 0 +3520 0 2 7.886234767543801 11.430527081795935 -0.0220069850782268 0 0 0 +1705 285 1 -2.452235401444538 20.583040333635555 -23.92591999215111 0 0 0 +2499 417 1 -21.5597283378815 2.4038639954170375 4.593980670581377 0 0 0 +2503 418 1 -18.675830222224242 0.7639913694669346 2.597709224635121 0 0 0 +2551 426 1 -17.98920959822501 7.59299975922716 4.613567729300449 0 0 0 +2552 426 1 -17.276933940852093 6.64951666976101 5.577055022426154 0 0 0 +2553 426 1 -18.16339020481791 5.558428843529774 6.131298931990904 0 0 0 +2554 426 1 -18.69897773057116 4.761971025501257 5.001423975986079 0 0 0 +2555 426 1 -19.448987638454717 5.5926806780291445 3.9951880830063384 0 0 0 +2556 426 1 -18.562097185769332 6.705062496261982 3.4617418135128792 0 0 0 +2498 417 1 -22.48531625049285 1.2773342233396567 5.117764487328866 0 0 0 +2504 418 1 -17.854454170526623 1.3503426314344407 3.746274343415506 0 0 0 +3840 0 2 -16.76565538596655 3.998934854679255 1.2841767125090497 0 0 0 +2360 394 1 -20.408971950474463 3.5274052193793244 0.2747941954625429 0 0 0 +993 166 1 7.172266019658807 22.76026192133292 6.143686590298318 0 -1 0 +2500 417 1 -22.256486582183935 3.4492289214985004 3.707978319421516 0 0 0 +3466 0 2 16.4141036920008 23.884280252135262 15.419145915591818 0 -1 0 +2353 393 1 22.92377272354099 5.525901276385726 1.250719403945135 -1 0 0 +2505 418 1 -18.233994948966973 0.7684590057259786 5.081613676020509 0 0 0 +3798 0 2 -10.872210849352681 8.398864438301839 2.913287383430674 0 0 0 +3805 0 2 -11.25547352980601 5.0391298022292625 4.179444211577445 0 0 0 +3406 0 2 -12.325689191992073 2.054158519159888 1.8863506432101902 0 0 0 +3746 0 2 -15.03918065963158 3.454625991235532 4.645785435979757 0 0 0 +2368 395 1 -13.125324623281218 5.665776413272355 0.40290880787287753 0 0 0 +2563 428 1 -8.433210465508886 6.258343315970972 7.355411008066379 0 0 0 +2568 428 1 -8.896206781226503 6.77872203492831 6.033843250825273 0 0 0 +2559 427 1 -12.92261212696814 8.894779476620212 6.5010117489754355 0 0 0 +992 166 1 7.257973215861652 23.24103814379096 4.720885827766526 0 -1 0 +2369 395 1 -11.6627783572746 5.2531191489784135 0.4395577701820179 0 0 0 +2518 420 1 -8.124667679934488 0.6372198640922738 2.229651013093622 0 0 0 +2462 411 1 -10.887836835081766 17.96268095775677 1.344577254874566 0 0 0 +2519 420 1 -9.010180552218916 1.5240579030417658 3.06715283808932 0 0 0 +2510 419 1 -11.680381182308464 0.1709039604793338 5.9912879121521865 0 0 0 +785 131 1 -9.149952291524112 22.489583900933678 1.0019514882012452 0 -1 0 +2564 428 1 -7.766381912229512 7.2849031685181185 8.22926468322638 0 0 0 +2520 420 1 -8.159074125591474 2.1195572656523445 4.169478589734029 0 0 0 +2373 396 1 -6.0988281719698 6.100623377620572 1.4367266743266678 0 0 0 +2516 420 1 -6.746571818992512 0.0717787958293172 4.194605126666757 0 0 0 +2420 404 1 -3.0877853845488183 9.765695966679566 0.12248361139177322 0 0 0 +2565 428 1 -6.536257557823395 7.826396083544313 7.575644057739351 0 0 0 +2566 428 1 -7.059232959741491 8.372124010062667 6.230374163324704 0 0 0 +2567 428 1 -7.744406008999123 7.388283204124628 5.286094498705274 0 0 0 +3734 0 2 -4.702601896449374 2.4693556175660696 2.0977751529732243 0 0 0 +3778 0 2 -4.520377110972825 5.79941638032306 4.576555712417457 0 0 0 +2380 397 1 -0.6340746110557597 5.158148817447021 0.9254667765028877 0 0 0 +2379 397 1 -1.988469584447544 5.85266397847301 1.0635076614943508 0 0 0 +2718 453 1 -0.39768349679413545 0.2884826644951896 12.740739027875925 0 0 0 +2378 397 1 -1.835783636066069 6.96123988778063 2.0782729816032024 0 0 0 +2371 396 1 -7.854780779736356 4.379466651790157 0.8460217342001665 0 0 0 +2515 420 1 -7.6024252656826 1.0105628443445656 5.029273954440327 0 0 0 +2372 396 1 -7.5325290613270655 5.6906244482110395 1.5239703898219097 0 0 0 +2526 421 1 -2.2319237586544016 0.6390265457798633 4.577826589400766 0 0 0 +2525 421 1 -1.445924190956558 1.9000834568736473 4.259831763447979 0 0 0 +3706 0 2 -4.749765797618315 4.191211593653061 8.246915274829988 0 0 0 +2884 481 1 23.423589944701437 1.3724965036117422 18.205396178188224 -1 0 0 +2377 397 1 -0.643935100781379 7.8978647842112295 1.8134749856238133 0 0 0 +2570 429 1 -0.5062058504821425 6.210619826472015 5.356243813864158 0 0 0 +2569 429 1 0.758526469824647 5.385241003699713 5.162645194409484 0 0 0 +2574 429 1 1.7398339093687825 5.499987064412204 6.28139573531533 0 0 0 +2530 422 1 6.117217309512922 2.3752357569105453 4.426103521955034 0 0 0 +2381 397 1 0.4437072608557968 6.148214634435765 0.5339834652812884 0 0 0 +2382 397 1 0.6789621337673666 7.213975270318008 1.6028665580417596 0 0 0 +2461 411 1 -10.96653016177816 16.467919508426075 1.611268823567693 0 0 0 +2531 422 1 5.4223632418549075 1.3158860356251496 3.564041232548496 0 0 0 +2532 422 1 3.921371921225822 1.215305870442015 3.681864403868964 0 0 0 +2572 429 1 -0.19559235913972467 6.079556620190433 7.766786730337511 0 0 0 +2578 430 1 6.244107002809097 7.268235007168651 4.292358166256802 0 0 0 +2579 430 1 4.770053091733617 7.119971457543521 4.620574732630335 0 0 0 +3703 0 2 3.350630976949942 4.484972725740117 2.7971652838939094 0 0 0 +2920 487 1 10.722808064867305 0.30864154039592206 16.503410908512045 0 0 0 +2527 422 1 3.488166497442667 1.2330236489595081 5.148900983819618 0 0 0 +2529 422 1 5.568751327820065 2.4153575481952685 5.856146844364119 0 0 0 +2528 422 1 4.045372036509048 2.5136185936337236 5.777435953128563 0 0 0 +2576 430 1 6.697017716357859 6.679776221159801 6.690528585938401 0 0 0 +2577 430 1 7.00493221433208 6.352381092773243 5.240851766910581 0 0 0 +2383 398 1 5.528394965887195 7.363748813998422 0.8268636233727127 0 0 0 +2388 398 1 4.147891405845685 7.421722855384816 0.23044361372626068 0 0 0 +2524 421 1 0.0396714264133794 1.586875525210851 4.0402661821204715 0 0 0 +2342 391 1 10.390487728514728 1.4436846936366092 0.5979833469574208 0 0 0 +2536 423 1 10.584427180029776 2.4435072143709844 4.535188344909669 0 0 0 +2582 431 1 11.737264374701338 5.426587309944066 7.530676789065915 0 0 0 +2583 431 1 10.67142786357032 6.164766600595798 6.751797295560134 0 0 0 +3683 0 2 13.457516025036915 3.638138816819103 3.5104222524888966 0 0 0 +3803 0 2 8.34604322147262 5.037560748166722 2.0204032541139743 0 0 0 +2533 423 1 10.068871217948413 0.5633478123010717 6.857016987789717 0 0 0 +2537 423 1 9.469767610088757 2.557516396349041 5.551552501124 0 0 0 +2344 391 1 7.995036810008915 0.779022712491032 0.4939339563323952 0 0 0 +2343 391 1 8.956070059905397 1.9127655843416975 0.7375579081971523 0 0 0 +2590 432 1 16.257709037674136 7.6669146945362225 6.222453516885871 0 0 0 +2543 424 1 15.27748032470191 1.0336693339004082 6.57622196325461 0 0 0 +2392 399 1 12.284488286022082 6.899788559506833 3.208989607129677 0 0 0 +2581 431 1 11.423425322814797 5.296802998947018 9.031425126695712 0 0 0 +2535 423 1 11.082170886567917 0.9726255225123769 4.50734036094785 0 0 0 +2391 399 1 12.746780716927764 6.572289954327951 1.8077227955036037 0 0 0 +2534 423 1 11.289779830501367 0.4335435750888726 5.933976481318157 0 0 0 +2547 425 1 23.113712832258607 7.56070291163951 6.713435741635205 -1 0 0 +2548 425 1 23.665998914593615 7.117775148471305 5.35624577818452 -1 0 0 +2549 425 1 23.44939748688275 5.650113177890259 5.21413945399491 -1 0 0 +2354 393 1 22.369063888233825 6.917524849592601 1.3112075833376708 -1 0 0 +2691 449 1 21.17341441618863 1.40827391294139 7.515241488231163 -1 0 0 +1198 200 1 21.32788769347814 23.735109857808247 13.536973307725193 0 -1 0 +2415 403 1 -13.748486779693222 12.112375058276958 0.23759232529855484 0 0 0 +2546 425 1 21.616447612129413 7.317983584208883 6.815150324245196 -1 0 0 +2352 392 1 17.384305968627256 1.541061527351656 1.2266142958407595 0 0 0 +2397 400 1 18.908643751956916 6.231230630199516 0.201937819129367 0 0 0 +2545 425 1 21.31313459816793 5.8566920080213425 6.4952356186713445 -1 0 0 +2550 425 1 21.954669330869322 5.32256375112213 5.23266445523047 -1 0 0 +2587 432 1 16.165295841128557 5.213991082961081 4.772823008938388 0 0 0 +2588 432 1 15.161543107947898 5.657402893414678 5.801638434824959 0 0 0 +2589 432 1 15.723550493984716 6.465211913977075 6.901956991350046 0 0 0 +2591 432 1 17.469254551800134 7.18162641111307 5.445380074477798 0 0 0 +2592 432 1 17.029886467235624 6.334201197836374 4.271006601967566 0 0 0 +3740 0 2 20.824379835200308 2.666912312014954 1.6509234674280955 0 0 0 +3773 0 2 20.165063053843728 8.251994016022044 3.4269763768060373 0 0 0 +3811 0 2 19.399502047402397 3.079306780334787 4.730393377870406 0 0 0 +2544 424 1 16.70251091462056 1.5518919144584087 6.747526186441784 0 0 0 +2347 392 1 16.701064168507344 1.8729160434628032 2.5544267816804114 0 0 0 +2348 392 1 16.42101367619067 0.5168135744242816 3.2565206889019462 0 0 0 +2502 417 1 -23.94044002363385 1.7107114890178146 3.132043456990622 0 0 0 +2692 449 1 22.500824808865275 1.7919599894286162 6.8604473024056 -1 0 0 +1387 232 1 20.408321590823036 23.862918571398982 20.050990337098042 0 -1 0 +2501 417 1 -23.060280742711456 2.844010213984995 2.5733420185077853 0 0 0 +2539 424 1 17.542393464799463 0.7079624146565505 7.699215088942101 0 0 0 +2693 449 1 23.213284112266965 2.8231830569205227 7.694678138437932 -1 0 0 +1539 257 1 22.2955231731286 0.5518112551095729 21.971643535980604 -1 0 -1 +2407 402 1 -19.090598657166 10.68457811823561 0.5254519096230463 0 0 0 +2408 402 1 -18.05774715149388 9.63295040709542 0.8521866033808387 0 0 0 +2597 433 1 23.974307652097007 14.998058344316146 6.53191718464996 -1 0 0 +2599 434 1 -17.636577299978946 11.227568469916013 6.014141481535157 0 0 0 +2601 434 1 -15.972336130459713 11.106204551211166 4.190115349553833 0 0 0 +2602 434 1 -16.603711969625618 12.240170102600654 3.427276508786918 0 0 0 +2603 434 1 -18.096186280871077 12.277908570480113 3.7582871277220016 0 0 0 +2604 434 1 -18.390003030901536 12.317133845416382 5.256393962390025 0 0 0 +3750 0 2 -21.611299488779142 7.890970825983605 1.8461181711306367 0 0 0 +3860 0 2 -21.22675384830832 15.138853894448454 3.3075423284496135 0 0 0 +2596 433 1 22.596012647723143 14.481599126739543 6.749753150357762 -1 0 0 +3835 0 2 -21.168140095295428 9.070751052704543 5.644943682442348 0 0 0 +2600 434 1 -16.175093901519052 11.293126537006653 5.697415131714129 0 0 0 +2401 401 1 -23.86254146821619 13.033180151070518 1.6255560069741084 0 0 0 +2593 433 1 -23.1573096522166 12.603526556152447 6.799292839317425 0 0 0 +2652 442 1 -16.202631405826086 15.541644681286318 6.527302516252849 0 0 0 +2598 433 1 -23.17444683508059 13.868450258577047 5.960478673915751 0 0 0 +2460 410 1 -17.05637511708378 15.049224970833768 0.35722761667980546 0 0 0 +2558 427 1 -12.742921658986592 9.496828836382873 7.823056078849671 0 0 0 +2456 410 1 -15.236004599115041 16.291913127920964 1.5673736391676523 0 0 0 +2455 410 1 -15.578281912940005 15.109361163198393 0.6876209439472315 0 0 0 +3871 0 2 -14.586982920906793 7.333061432659908 3.160889337849233 0 0 0 +2605 435 1 -11.349124546545701 12.684457957244913 5.883684706617599 0 0 0 +2606 435 1 -11.187066364007153 12.814042887281236 4.384347861473666 0 0 0 +2607 435 1 -12.51375013591481 13.106861486328004 3.710071353228428 0 0 0 +2608 435 1 -13.117714542026793 14.384131683120684 4.330129994196867 0 0 0 +2609 435 1 -13.285157552415892 14.190804824509682 5.835470677041023 0 0 0 +2610 435 1 -12.041823104309604 13.838884618738138 6.590297493395855 0 0 0 +3642 0 2 -7.899905869151874 9.232694487044332 1.6278217291716925 0 0 0 +3677 0 2 -8.457110362143386 15.14280039266533 4.582793650842125 0 0 0 +2351 392 1 17.99350819191055 0.12517642145802826 1.1966674622387332 0 0 0 +3628 0 2 -8.391014048822786 13.953080705330239 0.9993055479367927 0 0 0 +2426 405 1 0.3939979069923061 12.287883896358721 2.7858755364932533 0 0 0 +2611 436 1 -6.033529288788625 12.521191765114825 3.796460025446499 0 0 0 +2612 436 1 -4.506689955283473 12.585445947655423 3.7345020070236283 0 0 0 +2613 436 1 -4.004693429419552 13.212446300477708 5.009093011519236 0 0 0 +2614 436 1 -4.54147498977341 12.498682714601324 6.2161274390182975 0 0 0 +2615 436 1 -6.061759034527472 12.543961332854352 6.237461250044357 0 0 0 +2616 436 1 -6.566951666496342 11.841667905593775 5.019000453987064 0 0 0 +2618 437 1 -1.563284906344568 15.313808369746608 7.583398318166307 0 0 0 +2619 437 1 -1.1106573962637751 14.710782399229261 6.27268431253926 0 0 0 +2916 486 1 7.518429758219012 1.0869468571028231 18.292227195932774 0 0 0 +2424 404 1 -5.250064614818395 10.998251109942094 0.5253444544668258 0 0 0 +2425 405 1 -0.9615401749090001 12.962790553936488 2.567206547295295 0 0 0 +2430 405 1 -0.8974552941890926 14.118151765950135 1.587607541351707 0 0 0 +2427 405 1 0.9452954879452365 11.817006737452898 1.4380656713591418 0 0 0 +2429 405 1 -0.35787517379655337 13.660665042163362 0.25301317336882634 0 0 0 +3758 0 2 -2.6232214872855204 9.664046960368276 5.048737536310987 0 0 0 +2419 404 1 -4.589781046137464 9.647576815747605 0.20564357426617827 0 0 0 +2571 429 1 -1.208302498146354 5.89922277880321 6.64660025119497 0 0 0 +2575 430 1 5.2617888073946615 6.662748319979172 7.004847328864338 0 0 0 +2580 430 1 4.476809754937908 7.535739220879777 6.0429444463312 0 0 0 +2428 405 1 0.985317543685191 12.956047457266893 0.46404040359096127 0 0 0 +2620 437 1 0.1881702089848038 15.351451398688909 5.950032591208135 0 0 0 +2621 437 1 -0.14239621638930203 16.775148046286475 5.630356688206734 0 0 0 +2623 438 1 4.31254902242513 12.509457380292915 6.071118399184739 0 0 0 +2624 438 1 5.4472804477113925 13.421777293134678 6.436149887909582 0 0 0 +2625 438 1 5.584360674977216 13.557976588256421 7.974343783544107 0 0 0 +2626 438 1 5.709641598104475 12.220891477111623 8.646577614357566 0 0 0 +2628 438 1 4.364664420768955 11.19165421751971 6.843414073858184 0 0 0 +3681 0 2 1.1693360020795969 9.560016290507802 5.186524025632428 0 0 0 +3776 0 2 4.932224465825521 10.468216445571375 2.785060596258491 0 0 0 +2433 406 1 5.702976919265073 14.88752232116754 2.3653272806627093 0 0 0 +2434 406 1 4.281682952483105 14.493764985071387 1.9202456799339342 0 0 0 +2432 406 1 5.6822567878462475 16.230930075286548 3.058342799916272 0 0 0 +2389 399 1 14.015948725429862 8.623728717550136 1.7497463698272864 0 0 0 +2394 399 1 13.619255630940119 9.045288680264857 3.148616528202586 0 0 0 +2584 431 1 10.302296247197269 7.499775375378401 7.363262806955685 0 0 0 +3720 0 2 9.322272689743317 8.44545734235013 2.6130570412399177 0 0 0 +2441 407 1 10.789283770700271 13.380069261239754 2.1505327297011925 0 0 0 +2442 407 1 11.534541858328526 12.068024157934524 2.240975377203321 0 0 0 +2629 439 1 8.741334837409042 11.547863027965075 5.033808992025371 0 0 0 +2631 439 1 8.773784108534816 10.710078748456825 7.404459991747906 0 0 0 +2632 439 1 9.266061732716793 12.017105145791046 7.959956415782492 0 0 0 +2633 439 1 10.081689090707993 12.639596810034504 6.872767474843109 0 0 0 +2634 439 1 9.297248092457394 12.817348151796354 5.571478866618968 0 0 0 +3867 0 2 14.122835058488963 13.063582657504938 4.545552525106746 0 0 0 +2445 408 1 16.969727855208337 13.418227674015318 1.6081434624089115 0 0 0 +2440 407 1 11.277772585822959 14.231835402405894 0.9989024208600343 0 0 0 +2390 399 1 12.903216941346846 7.851872995444273 1.0795164975925937 0 0 0 +2446 408 1 16.21070729464802 12.132753170551746 1.5810343682128973 0 0 0 +2437 407 1 11.446435979770447 11.278724900630232 0.9579385403865798 0 0 0 +2630 439 1 7.960326085962802 10.818793357491884 6.099371218811063 0 0 0 +2393 399 1 13.273961444336651 7.79934845521959 3.9573167933240074 0 0 0 +2595 433 1 22.64133943145198 13.253530182777682 7.675367654329214 -1 0 0 +2405 401 1 21.95400006460725 14.175393652992192 0.864740059882504 -1 0 0 +2911 486 1 6.4645799557215184 0.9250470991307991 19.396975909084627 0 0 0 +3687 0 2 23.1090867167327 10.019215372932345 3.39249833180869 -1 0 0 +2444 408 1 18.06333395871974 13.342236171853557 0.5647041481780756 0 0 0 +2594 433 1 23.437314081395012 12.119488114973175 7.051089103592973 -1 0 0 +2635 440 1 18.358632607879496 11.52564159219604 7.4228336109076265 0 0 0 +2636 440 1 17.077675871811824 11.210557816942485 6.6921239601804094 0 0 0 +2637 440 1 17.110131933228562 11.809432539209023 5.316888818883251 0 0 0 +2638 440 1 18.280646217349293 11.366940736977773 4.494586920815423 0 0 0 +2639 440 1 19.56461238711114 11.68810614671981 5.247454791574985 0 0 0 +2640 440 1 19.543968834809622 11.064799581245982 6.638122412805696 0 0 0 +3744 0 2 20.441893600905022 10.810401254003898 1.2910749204803544 0 0 0 +3712 0 2 19.866128783711588 15.209596415108662 4.166617519751968 -1 0 0 +3787 0 2 20.170451089066358 16.83875721716127 7.891193397966874 0 0 0 +2406 401 1 23.300057216349995 14.349246766770582 1.5937540653246718 -1 0 0 +776 130 1 -16.310812447938122 22.36998754803996 1.6032642491721496 0 -1 0 +2452 409 1 -23.817996394084023 18.122480205829827 1.781388810829529 0 0 0 +2643 441 1 -22.872458699732633 18.425444193136833 7.130615492153475 0 0 0 +2645 441 1 -22.472328161258606 20.867456129220958 7.176161669568335 0 0 0 +2647 442 1 -16.917861256611122 15.425785674042888 5.222924422725694 0 0 0 +2648 442 1 -17.57323226469019 16.696496722531045 4.76674949945784 0 0 0 +2649 442 1 -18.459813680392706 17.25073808522496 5.851160322861977 0 0 0 +2650 442 1 -17.70354630974405 17.435798227368885 7.176551401969817 0 0 0 +2651 442 1 -17.148532715488244 16.079370862101477 7.572562886544578 0 0 0 +967 162 1 -19.396566847215144 22.414527882522556 5.932785816312893 0 -1 0 +968 162 1 -18.895457515500365 22.999952260522324 7.253148554394596 0 -1 0 +3729 0 2 -20.22388668222041 18.472604933903032 2.2697301898042013 0 0 0 +2641 441 1 -21.900672286409446 19.57616139754806 5.209232380396206 0 0 0 +2642 441 1 -22.749355598396313 18.387235218296485 5.6203563379338854 0 0 0 +2646 441 1 -22.551609590597593 20.83890918616303 5.692306478510428 0 0 0 +2458 410 1 -17.1358791380587 17.51017069578397 0.465797823266317 0 0 0 +972 162 1 -19.493240011503573 23.49107839202065 4.868564461026394 0 -1 0 +771 129 1 -22.625856352486014 21.83272418793565 0.059432088883730354 0 -1 0 +777 130 1 -17.791140360184734 22.23238256320437 1.5018757699510108 0 -1 0 +2453 409 1 -23.159788951444245 17.468692406278603 0.5904869749348832 0 0 0 +969 162 1 -17.635067405705833 23.860093286839856 7.099781382501291 0 -1 0 +778 130 1 -18.18638479583466 21.199087977833514 0.47784208405854534 0 -1 0 +2466 411 1 -11.597934316005908 15.651112823139334 0.4489325434241057 0 0 0 +784 131 1 -10.41663677764666 22.809083342926424 1.7625647320559854 0 -1 0 +3713 0 2 -16.08399234635565 19.90395312971815 4.444094743679036 0 0 0 +786 131 1 -8.62064848341998 23.748235165086435 0.32859748450111903 0 -1 0 +2457 410 1 -15.684627371750299 17.55161323346871 0.8798153984276068 0 0 0 +2653 443 1 -10.350725767774852 20.568250788179423 4.851313959142827 0 0 0 +2654 443 1 -11.787101665660554 20.28521378365341 5.20628037897677 0 0 0 +2655 443 1 -12.276506001589238 18.85401382061258 5.03796357273805 0 0 0 +2656 443 1 -11.373786648435956 17.98303513858105 5.833927882125596 0 0 0 +2657 443 1 -9.87365784029142 18.168375055750428 5.552821817052994 0 0 0 +2658 443 1 -9.492417034972352 19.611002179654776 5.677981052717442 0 0 0 +3764 0 2 -13.321667254538923 20.35952720470267 1.7014018935468318 0 0 0 +783 131 1 -11.418261147127145 23.497825031461275 0.8333189794875507 0 -1 0 +1357 227 1 -11.52898961358575 23.665231914140897 15.15259463631768 0 -1 0 +2402 401 1 -23.595675043986546 12.499971089967586 0.20632181258611276 0 0 0 +980 164 1 -7.737632649643463 22.586933433839178 6.671784810807122 0 -1 0 +2467 412 1 -5.491745716330817 18.750537626118046 0.6033757087369813 0 0 0 +2617 437 1 -1.8123073859040162 16.80602956530972 7.421947490204322 0 0 0 +984 164 1 -6.181593832172043 23.635121648790317 5.231169537540818 0 -1 0 +2471 412 1 -5.935558571399076 20.117729510998632 2.601738585310157 0 0 0 +3481 0 2 -3.447025474008802 16.348483375651362 2.9892001403258166 0 0 0 +2468 412 1 -6.686615886893716 17.875058187161628 0.9524448896813762 0 0 0 +2469 412 1 -7.041433910906809 17.829149658167257 2.4376804032168566 0 0 0 +2470 412 1 -7.153233592461567 19.254698375764857 2.9718859200100627 0 0 0 +2659 444 1 -5.694866393092249 17.313172984668093 6.639233215963149 0 0 0 +2660 444 1 -5.719445916730937 16.05627612535673 7.5069049276315765 0 0 0 +2663 444 1 -5.646042051761637 18.696670809778922 8.664778513921258 0 0 0 +2664 444 1 -6.386715249704081 18.413643541199274 7.3773724506081875 0 0 0 +979 164 1 -7.1321601577963465 22.472565507232627 5.299543807305191 0 -1 0 +3752 0 2 -3.41398507672448 20.160223508840872 4.798652591985838 0 0 0 +2477 413 1 -0.03264912467773538 18.902872790851074 2.617510257488447 0 0 0 +981 164 1 -6.6830130895259074 22.50908759665778 7.784856997747558 0 -1 0 +791 132 1 -3.266868273153482 22.943086213580337 1.9129670992644645 0 -1 0 +2472 412 1 -5.6794510180813695 20.146503198934397 1.1100974086394262 0 0 0 +2476 413 1 0.4830524447776633 17.517640875510573 2.2681184398629175 0 0 0 +3691 0 2 -0.3692854919001036 22.4321419175702 4.681687408086463 0 0 0 +792 132 1 -4.1205679611748005 23.271888688459967 0.6406728416898443 0 -1 0 +2670 445 1 -2.1805760196240613 20.300789693981383 8.593130071355397 0 0 0 +2665 445 1 -1.6568915693158284 21.70506121146848 8.539017864203513 0 0 0 +2478 413 1 -1.0683751888891289 19.403074834478968 1.6434475457165454 0 0 0 +1559 260 1 -3.6995786413729723 1.4943464746537043 21.837978050371177 0 0 -1 +2622 437 1 -0.551709379930364 17.457648908145657 6.857002333821722 0 0 0 +2431 406 1 4.723238200557369 16.12496486526211 4.219801405431612 0 0 0 +2435 406 1 3.305205151303966 14.455184219706197 3.0990639149896086 0 0 0 +2436 406 1 3.2978766736347507 15.796828857771995 3.8208335906924384 0 0 0 +2338 390 1 2.682557781801712 1.2183287085508008 0.4294502129782542 0 0 0 +2475 413 1 0.8648225353940533 17.46420851839786 0.7734763178523647 0 0 0 +2484 414 1 8.037754849678734 20.99328224893187 0.7029620329152744 0 0 0 +2479 414 1 6.696412366555433 21.581668041828703 1.0069731754418536 0 0 0 +2480 414 1 5.631695158621245 20.712530794456207 0.3815266224068197 0 0 0 +1376 230 1 7.2022432514436066 23.901569941743524 20.768656990362782 0 -1 0 +2482 414 1 7.089952588942955 18.74659148685836 1.0739801357988357 0 0 0 +2671 446 1 4.1720747152310675 19.916561249231602 3.794859936650766 0 0 0 +2672 446 1 2.8350111828868814 20.271023991319705 4.390221470072749 0 0 0 +2673 446 1 2.3441261278720593 19.277440852619744 5.423028647226175 0 0 0 +2674 446 1 3.40841029424659 19.171218590009815 6.482867671994969 0 0 0 +2675 446 1 4.76415688765765 18.920054287471075 5.9063588028278255 0 0 0 +2676 446 1 5.25822524972256 19.8838162117144 4.834873543131497 0 0 0 +2713 453 1 -1.3381789706478124 0.21522988069195453 13.966425716708725 0 0 0 +3731 0 2 2.96668938233854 23.03875962075936 7.390679377867615 0 0 0 +3071 512 1 17.302296680880143 16.526726738105893 15.802590240277228 0 0 0 +2473 413 1 -0.6303302885000387 19.488831528987344 0.1811635837452739 0 0 0 +798 133 1 1.8404705072381564 22.38219430043134 1.2258592006950848 0 -1 0 +797 133 1 0.4235845663574673 22.89870473981924 1.1679035973253278 0 -1 0 +2398 400 1 17.932309464860438 7.402100926089218 0.3345157407724138 0 0 0 +3692 0 2 14.142894550053365 16.1526403626717 2.3509718547035963 0 0 0 +2681 447 1 11.51376541281416 16.46936870314767 4.987026864366064 0 0 0 +2483 414 1 8.296725702004778 19.61748344965384 1.232724889457203 0 0 0 +2488 415 1 12.028887351528086 18.157561254790476 0.3459507260104857 0 0 0 +2677 447 1 10.072265233509098 18.144040607125923 3.8626947672812473 0 0 0 +2678 447 1 9.147435256230498 18.190264412229606 5.110137386411383 0 0 0 +2679 447 1 9.155543398570781 16.791954714106936 5.814262858180785 0 0 0 +2680 447 1 10.578123654464777 16.452504413108038 6.210335715738366 0 0 0 +2682 447 1 11.51596345623278 17.804426906350702 4.257396417148141 0 0 0 +3693 0 2 13.82122047459551 21.981698353062793 7.039419205724617 0 0 0 +3743 0 2 14.361362952075273 21.01329893956758 2.9788581012499193 0 0 0 +3748 0 2 10.948456661205292 21.872306228405417 4.63498134285149 0 0 0 +3759 0 2 10.302387637288112 21.265153971184983 8.415509078605453 0 0 0 +2683 448 1 16.135238375435268 16.38787486850084 6.984753768779626 0 0 0 +2684 448 1 14.834492265849718 17.21142889641214 7.260255367337623 0 0 0 +2495 416 1 17.797067994935848 16.83240531814884 0.7678475517673173 0 0 0 +2685 448 1 15.29501092940899 18.677657383577234 7.218547405828781 0 0 0 +2688 448 1 16.5651930722164 16.535637912446607 5.5756536638051 0 0 0 +2494 416 1 17.128755063229114 18.00516259552828 1.4368886223541084 0 0 0 +815 136 1 18.653615849288954 22.901650466425842 1.298768731210412 0 -1 0 +2451 409 1 22.648555753957222 18.19294921753214 1.5274354393438763 -1 0 0 +2450 409 1 22.209708335509813 18.95855883943733 0.27157804217042447 -1 0 0 +3818 0 2 8.976602651328516 13.639860218341187 23.82457175763425 0 0 0 +2686 448 1 15.824933249338153 18.954847294294446 5.827345154913709 0 0 0 +2687 448 1 16.96969433466443 18.025531376454065 5.342312616673285 0 0 0 +3797 0 2 19.417110164239034 20.80753312515069 21.694733783419657 0 0 0 +1005 168 1 18.664672157476875 21.442601514285165 7.485416473820506 0 -1 0 +1006 168 1 17.28556336687409 21.9221364052162 7.931488641848531 0 -1 0 +3737 0 2 22.008418741121407 21.88794322372437 2.390826316251537 0 0 0 +3542 0 2 19.756256146660437 19.28821359059564 3.1902009377405895 0 0 0 +3854 0 2 21.900672901214556 19.89754623359954 5.83570094061655 0 0 0 +2523 421 1 0.2762306214756022 0.46668290332782625 2.995714779206226 0 0 0 +2714 453 1 -0.4955577135094688 0.07976144206176115 15.205910569762695 0 0 0 +811 136 1 17.77097727321707 22.519387796156494 3.5945053098934587 0 -1 0 +1004 168 1 19.47129839817886 22.542767991155852 6.893340257831422 0 -1 0 +1192 199 1 13.899699620498723 23.60173433099953 12.07404981195903 0 -1 0 +816 136 1 17.47986026398235 22.44004363146259 2.1058566249542405 0 -1 0 +1612 269 1 -2.066884179239949 7.293499544844945 23.967942218560726 0 0 -1 +2887 482 1 -21.505511433652387 0.16489802271385767 15.516551787633935 0 0 0 +2891 482 1 -19.99567144787441 0.9529940654031855 13.756358652476115 0 0 0 +2695 450 1 -20.535365332107535 1.7162042847986771 8.753465367856167 0 0 0 +2698 450 1 -18.034857959745743 1.3411712898439963 10.37598120175633 0 0 0 +2699 450 1 -18.318833704625135 2.588872406022847 9.548719459013864 0 0 0 +2743 458 1 -18.47155555151711 8.472130168049556 8.837914741189813 0 0 0 +2744 458 1 -19.461216916547635 7.800511053720085 9.808487369422078 0 0 0 +2745 458 1 -19.230960099371586 6.323497270798917 9.877845453268137 0 0 0 +2746 458 1 -17.822495152487782 6.0303208974754305 10.270900313176107 0 0 0 +2747 458 1 -16.832074700466546 6.6515115566902985 9.341856906432296 0 0 0 +3684 0 2 -22.710360164204126 3.7668278894353104 11.783342555833807 0 0 0 +3802 0 2 -22.211169206149393 5.328113027609025 8.036581888786372 0 0 0 +2892 482 1 -21.17443097688008 1.3174905476390275 14.592610776144976 0 0 0 +3820 0 2 -18.81369334620508 4.310980730541335 13.27875375129881 0 0 0 +3724 0 2 -22.337309845832046 7.453357267931412 12.084519097831366 0 0 0 +2939 490 1 -21.661690965332017 4.530985495089049 15.948780977357028 0 0 0 +2938 490 1 -20.82595552509383 5.8185864865460575 15.982550439578972 0 0 0 +1616 270 1 7.374687756393483 9.77134468444574 23.901406839606953 0 0 -1 +2696 450 1 -20.35128710363221 0.494000754973561 9.653465249716987 0 0 0 +2700 450 1 -19.807732271501294 2.866768928714652 9.420313347643674 0 0 0 +2890 482 1 -18.89310528370242 0.6457338562480023 14.76858281317036 0 0 0 +2561 427 1 -12.762202489196923 6.562651693787599 7.372524420514343 0 0 0 +2706 451 1 -12.217721407648606 0.7587263185595724 12.400689802901235 0 0 0 +2701 451 1 -12.840707320792006 1.5035206888593189 11.214999835696101 0 0 0 +3807 0 2 -15.442793075894022 2.324337658396415 14.329506388040988 0 0 0 +2749 459 1 -12.550676948048219 5.733077998358207 13.6936721354544 0 0 0 +2750 459 1 -12.734106182467661 5.52914631520879 12.214713590650806 0 0 0 +2751 459 1 -14.122126734311305 4.9562051321608385 12.019669885630362 0 0 0 +2752 459 1 -15.246317013266447 5.913894655967139 12.394247031456125 0 0 0 +2753 459 1 -15.024837928256032 6.482563365252924 13.79514840218865 0 0 0 +2754 459 1 -13.540423002358564 6.8237801350150775 14.097198705162633 0 0 0 +3799 0 2 -10.868077540985778 3.175428257235172 8.103808208451815 0 0 0 +3826 0 2 -9.429131621157111 3.1332240987276836 12.540564992044187 0 0 0 +3829 0 2 -14.964568801300585 3.6681588714373943 8.396543640760118 0 0 0 +3730 0 2 -9.75517031494828 7.9714606404507 12.05175820490843 0 0 0 +2702 451 1 -14.2462200612127 1.0219361544787282 10.935402907766711 0 0 0 +2560 427 1 -13.584805613393359 7.5270551087331885 6.561005658129341 0 0 0 +3690 0 2 -3.0011793774437465 8.166873324816684 8.521815359625624 0 0 0 +3762 0 2 -7.3246648301414305 2.5620778616495175 9.830329447269422 0 0 0 +1656 276 1 -7.298489967851898 14.863826217520801 23.428283702707184 0 0 -1 +2755 460 1 -6.555545964399051 5.850492223819733 11.289828648385637 0 0 0 +2756 460 1 -6.647026106922536 5.555233969991809 12.78655035553617 0 0 0 +2757 460 1 -5.528404666024432 4.6512080703949 13.280805647095585 0 0 0 +2758 460 1 -4.166620913844651 5.170463084357802 12.963916847452229 0 0 0 +2759 460 1 -4.005040319951283 5.512741953435065 11.500273829331025 0 0 0 +2760 460 1 -5.1572526300964485 6.381562834621202 11.02480836537919 0 0 0 +2765 461 1 0.45510310824619626 5.239348596453048 11.769354041870153 0 0 0 +2766 461 1 0.005817724106163878 5.301094926191821 13.267229578634831 0 0 0 +3685 0 2 -3.2604392770549877 1.8983415814566849 11.220327915239357 0 0 0 +3786 0 2 -1.2043612574805247 2.5138669864480567 8.10890702307316 0 0 0 +3763 0 2 -3.1507071333968244 7.688812174659126 15.560698258434215 0 0 0 +3728 0 2 -2.592145657395658 3.7212941687192718 16.009918416906213 0 0 0 +2573 429 1 1.0598530362729743 5.222670341389135 7.6091359419118225 0 0 0 +2720 454 1 5.221276644033192 1.212345605605334 11.285105450914203 0 0 0 +1358 227 1 -12.84873626285121 23.2899693439894 15.76255864367073 0 -1 0 +2721 454 1 6.3539725170963965 0.8458096008166948 12.184023204502902 0 0 0 +2761 461 1 -0.19925795583853312 3.897491095928267 13.823310687933539 0 0 0 +2722 454 1 7.711776281965277 0.7302061525807756 11.491704875884846 0 0 0 +2762 461 1 1.0982103869510869 3.236966108103538 14.00936295244587 0 0 0 +2763 461 1 1.8620803738115344 3.2240266625635323 12.686026417134252 0 0 0 +2764 461 1 1.7866893402293025 4.457086862583532 11.797392822704222 0 0 0 +2767 462 1 6.559376194310278 6.361167708508603 12.865943012833087 0 0 0 +2768 462 1 5.282401093735934 5.545473480611275 13.000139155356885 0 0 0 +2769 462 1 4.927042464165006 5.222635001889214 14.433945001511212 0 0 0 +2770 462 1 4.807287630337468 6.574673407494183 15.117058940188434 0 0 0 +2771 462 1 6.052920447563895 7.4089698531593635 15.054548945740652 0 0 0 +2772 462 1 6.411677166084276 7.690716849489207 13.613915753644578 0 0 0 +3804 0 2 4.024830273700459 4.0524686763856215 9.260667206291098 0 0 0 +3851 0 2 1.790852391558609 0.828458862429242 9.201264981430821 0 0 0 +2724 454 1 6.383726540851428 0.006650557715130338 9.444179137382262 0 0 0 +2538 423 1 9.741945162802095 2.0403159463987706 6.966992948149719 0 0 0 +2921 487 1 10.69947310671578 0.6379614279402753 15.048092427954415 0 0 0 +2719 454 1 5.121583058470544 0.13364117333412323 10.251070274354888 0 0 0 +2729 455 1 11.868022730163396 1.2276068830067146 10.757064627214435 0 0 0 +2585 431 1 10.0870155154378 7.398012157912539 8.873501675320474 0 0 0 +2586 431 1 11.193502625326484 6.659408768393273 9.66435475694363 0 0 0 +3717 0 2 7.961991654149978 4.256691223532401 9.883287029152315 0 0 0 +2773 463 1 9.812561670497134 6.671974873809705 14.675528981624124 0 0 0 +2777 463 1 11.770531060658087 7.277976555363681 13.301004590099241 0 0 0 +2778 463 1 10.265517563607828 7.335770847941752 13.380596035696986 0 0 0 +3739 0 2 7.835726025796501 3.56653748722281 15.304896331959487 0 0 0 +3832 0 2 10.138829764090127 3.8784142930974204 12.623777037725205 0 0 0 +3856 0 2 13.700126127014455 3.14206049527473 13.711605608867004 0 0 0 +3855 0 2 15.201044413292779 5.112926796505686 10.548067540837387 0 0 0 +2776 463 1 12.406981974084527 7.857145940353623 14.569520231915028 0 0 0 +2730 455 1 13.170092425542208 1.384171274489147 10.001868133180661 0 0 0 +2694 449 1 23.415062699612125 2.3387869946150315 9.080700364908715 -1 0 0 +2736 456 1 19.02449832188331 0.2282206633236035 13.203229208395397 0 0 0 +2731 456 1 18.716843720197403 1.5229848802315542 13.913547605992749 0 0 0 +2733 456 1 17.44681615067323 2.2775992955594906 11.975437979709323 0 0 0 +3741 0 2 23.3388595910034 0.8612920591142005 13.024103756306566 -1 0 0 +2737 457 1 20.669956039562685 7.199181665894213 12.479966984095535 -1 0 0 +2741 457 1 21.118775655770236 5.012521888236886 11.506903708692239 -1 0 0 +2742 457 1 20.03263508692162 5.930623691980503 11.944782446596097 -1 0 0 +2739 457 1 22.379267520265802 7.102482190377134 10.686299570482879 -1 0 0 +2740 457 1 21.839678172469203 5.705446843401993 10.377039393806893 -1 0 0 +2734 456 1 17.742428082631147 0.9683644698694551 11.279167846408866 0 0 0 +2735 456 1 19.056285181698765 0.4001040658158865 11.709472895863598 0 0 0 +2738 457 1 21.36683286636026 7.966661972307045 11.395477568549927 -1 0 0 +2780 464 1 15.850500656432597 8.671131262593438 11.866869921821714 0 0 0 +2781 464 1 17.300035276823365 8.397420255147518 12.288477649110712 0 0 0 +2782 464 1 17.97185840486198 9.725846724165127 12.645144983772628 0 0 0 +3777 0 2 18.883554305980432 4.382764045848973 8.65665185540875 0 0 0 +3745 0 2 18.60398868507477 8.184855097655104 8.946179935560993 0 0 0 +2976 496 1 18.152224475561752 5.210523697177303 15.383682066580127 0 0 0 +2975 496 1 17.182494609967804 5.834013589468423 14.373688979764038 0 0 0 +2934 489 1 23.668511382944008 7.001532162343325 15.999173742141515 -1 0 0 +2732 456 1 17.393628661439596 2.1131788582618762 13.484934366628023 0 0 0 +2689 449 1 22.08918964584443 1.9717495084620245 9.786727789670262 -1 0 0 +2690 449 1 21.38197813899397 0.9465670008402163 8.94931549197664 -1 0 0 +982 164 1 -5.408008555451088 23.329261306875754 7.577368128788105 0 -1 0 +2748 458 1 -17.084234813211943 8.149062386364452 9.285745100580709 0 0 0 +3714 0 2 -22.62805627451501 9.501345912694257 8.699968963922853 0 0 0 +2788 465 1 -23.42546943919261 11.84474783057923 14.698129783127039 0 0 0 +2791 466 1 -18.539712260548075 11.649057538170986 10.878097076541168 0 0 0 +2792 466 1 -19.15646906452176 12.661589773319246 9.881503973961289 0 0 0 +2793 466 1 -20.667170699189615 12.417067054857162 9.73839852114453 0 0 0 +2794 466 1 -21.370697472573386 12.42664967606241 11.086199037606518 0 0 0 +2795 466 1 -20.780300221635432 11.399111539069718 12.028100457581807 0 0 0 +2796 466 1 -19.277579643210807 11.67964177768626 12.237101300168096 0 0 0 +3705 0 2 -20.8670896391883 15.678515258309591 8.522930083024372 0 0 0 +3808 0 2 -21.890579306550404 15.067667855899922 15.508524220702148 0 0 0 +3842 0 2 -18.49133337122044 8.20362395300825 13.266256199368554 0 0 0 +2789 465 1 -23.57108990425428 10.483481091411571 14.090959152648836 0 0 0 +2835 473 1 -22.804253785789243 16.42211663125299 12.030842472201062 0 0 0 +2843 474 1 -18.043383582597606 15.419692230693123 14.339468020057204 0 0 0 +2844 474 1 -16.83888934368053 16.287341326035655 14.09363809708512 0 0 0 +2842 474 1 -19.063674968316864 15.604098952661648 13.227933052759317 0 0 0 +2557 427 1 -11.984273491406798 8.535586524126222 8.692276393244022 0 0 0 +2562 427 1 -12.628182770684505 7.201183035520063 8.743862866710504 0 0 0 +3721 0 2 -9.465986415795644 10.733251120241256 7.925462707330098 0 0 0 +3682 0 2 -14.624489391799582 12.955610253515854 9.408105492639717 0 0 0 +2797 467 1 -11.0727750213253 11.171688038872079 11.587518867240838 0 0 0 +2798 467 1 -11.82289972121179 11.274019950965116 12.886331552675475 0 0 0 +2799 467 1 -11.73834479970242 12.61581521791669 13.602299263249115 0 0 0 +2800 467 1 -11.767494884547409 13.77194078121463 12.623539479610034 0 0 0 +2801 467 1 -10.791623803968422 13.646831264380399 11.41897026694284 0 0 0 +2802 467 1 -11.172808415104067 12.384129190842279 10.647256720603238 0 0 0 +3753 0 2 -15.352146730437525 10.535971248449735 11.636695137597346 0 0 0 +3780 0 2 -16.212116614620406 11.933558917092318 14.707614310209406 0 0 0 +3000 500 1 -8.657087693793844 10.952769365914186 14.980393305835065 0 0 0 +3766 0 2 -9.309689587847032 15.457624482030889 8.502993441849345 0 0 0 +2847 475 1 -12.473731444859952 16.411831948164057 9.832574057551442 0 0 0 +3831 0 2 -11.727739059685426 9.03643031735344 16.198666090729077 0 0 0 +3042 507 1 -11.857222303172108 16.208101115790274 15.371135324959713 0 0 0 +2803 468 1 -6.901659229630877 10.076983097391098 10.798238180422487 0 0 0 +2804 468 1 -5.418174309071572 10.101401811639889 10.537487717565604 0 0 0 +2805 468 1 -5.178276404295018 11.159915402254613 9.506016960455854 0 0 0 +2806 468 1 -5.669387014683475 12.475702678728041 10.054137300003 0 0 0 +2807 468 1 -7.161184406882768 12.577905427971539 10.331269566807876 0 0 0 +2808 468 1 -7.522564282876112 11.387294453768547 11.203682157065188 0 0 0 +2814 469 1 -0.1699666369422205 11.511438439557267 8.089506053467126 0 0 0 +3719 0 2 -3.444354507519798 15.198909000718237 11.869714676772073 0 0 0 +3796 0 2 -2.5100458414918267 9.009448187066491 12.301478725349522 0 0 0 +3852 0 2 -5.652745695291809 12.795393465205246 13.778071020718528 0 0 0 +2813 469 1 -1.226359727116043 10.981195152706748 9.07518847150511 0 0 0 +2812 469 1 -1.9726789238099038 12.035528832454958 9.935533115374858 0 0 0 +2860 477 1 -0.11909249135368781 15.289195230794414 14.699083994047665 0 0 0 +2861 477 1 -0.025028795842411418 14.9919543126923 13.208945822842601 0 0 0 +3848 0 2 -7.250553566658742 14.797232268819464 17.043685004621672 0 0 0 +3001 501 1 -2.513229994228591 12.107213858714175 16.5886474065622 0 0 0 +2999 500 1 -7.935203498997073 9.590771823690824 15.041045485847173 0 0 0 +3006 501 1 -2.198850797318235 11.512980177470645 15.283692903540015 0 0 0 +3005 501 1 -0.991529959053582 10.594351251450309 15.32330935298981 0 0 0 +2627 438 1 4.503226861361853 11.37232625957693 8.338361426321157 0 0 0 +2809 469 1 0.6993660554387529 12.45075172363114 8.884519113477527 0 0 0 +3697 0 2 2.880642452231735 15.497446098250524 9.104793928856862 0 0 0 +2810 469 1 0.470736236527657 12.384345454002956 10.433607896288173 0 0 0 +3702 0 2 1.1505997756691764 9.46987654341959 11.851872340335953 0 0 0 +2811 469 1 -0.9748829807769451 12.790070102422625 10.763659968508922 0 0 0 +2815 470 1 3.4957413960142487 12.888996841713746 12.483605096147512 0 0 0 +2816 470 1 4.460137035848165 13.688549614078381 11.693022452820395 0 0 0 +2817 470 1 5.839617493306175 13.42098280731625 12.183410299879114 0 0 0 +2818 470 1 6.159482445593063 11.976160865323337 12.022435438549916 0 0 0 +2819 470 1 5.111514100192983 11.051090380680291 12.617451177885375 0 0 0 +2820 470 1 3.7202071863638677 11.440846106292184 12.204241085120469 0 0 0 +3718 0 2 3.2605472921078893 7.796827720839493 9.306521523682646 0 0 0 +3806 0 2 3.7761665167697376 10.536762181590795 16.2553203658226 0 0 0 +2774 463 1 10.413512227380677 7.18839270711094 15.975815742296799 0 0 0 +3725 0 2 13.025436497681818 9.892756974322287 6.819173481377648 0 0 0 +3785 0 2 8.989588678876872 14.889205301528428 10.891837777535475 0 0 0 +2821 471 1 10.094472721063536 10.744774483129834 12.411648122147305 0 0 0 +2822 471 1 10.909961388393992 11.897088032698418 13.026797310129224 0 0 0 +2823 471 1 12.370914552367818 11.702852376041077 12.76201272034249 0 0 0 +2824 471 1 12.667189513900537 11.441457403411501 11.291618874236738 0 0 0 +2825 471 1 11.805100624175575 10.334666892015798 10.703053744694383 0 0 0 +2826 471 1 10.320856093182684 10.623747424673963 10.910332947660951 0 0 0 +3765 0 2 6.677434237172816 8.646550791732425 9.955926404260897 0 0 0 +3749 0 2 13.048277789372378 14.44180829296044 8.136004152681943 0 0 0 +3732 0 2 9.387442344503935 15.400539574301826 14.548671958046478 0 0 0 +2870 479 1 12.809642930904127 15.796060609478321 11.742794115903326 0 0 0 +2871 479 1 13.508691727430339 15.178999192179477 12.895511075076659 0 0 0 +2775 463 1 11.93943537135008 7.133082744992675 15.833532664458204 0 0 0 +2779 464 1 15.746468664774595 9.65148357221299 10.724354653871954 0 0 0 +2784 464 1 16.423093522368564 10.918855925181607 11.215751610313495 0 0 0 +2783 464 1 17.897135751450936 10.743705493885004 11.555239314638037 0 0 0 +3788 0 2 20.978973814485688 10.98921652358322 9.851667284448148 0 0 0 +2787 465 1 23.223326442130244 12.348811038762541 15.176743776354678 -1 0 0 +2785 465 1 22.09186326010399 11.028406821728327 13.32294810052783 -1 0 0 +2786 465 1 22.294524450527565 12.416196981107628 13.97512948115886 -1 0 0 +2790 465 1 23.434218924365407 10.453393813545754 12.961541735488057 -1 0 0 +2827 472 1 19.41698781204404 14.187000215653196 10.623148696498633 0 0 0 +2828 472 1 19.320312756589033 14.182524422813302 12.14556685807309 0 0 0 +2829 472 1 18.07269183505664 14.92873208979513 12.508136605628176 0 0 0 +2830 472 1 16.843752157436125 14.51693500125924 11.72885688412534 0 0 0 +2831 472 1 17.015278480126074 14.68437008321808 10.230293824350284 0 0 0 +2832 472 1 18.184888783578995 13.85209713095604 9.814646491817873 0 0 0 +3782 0 2 21.637043016374296 15.857321910361536 14.9194670601076 0 0 0 +3023 504 1 19.345287768260885 11.798169606662409 15.871363743966485 0 0 0 +2836 473 1 -23.498637583010197 15.357480502824872 11.21503730600688 0 0 0 +2837 473 1 23.017890798109963 15.675851933936624 11.212250091365688 -1 0 0 +3024 504 1 18.16712234411033 10.891000054126446 16.157599841434877 0 0 0 +1160 194 1 -17.033036913032497 22.90250892208275 10.950440046229255 0 -1 0 +2644 441 1 -23.243244699857268 19.724283747076335 7.786564840786946 0 0 0 +961 161 1 23.36949934247233 23.810382771783594 7.604388372015209 -1 -1 0 +1161 194 1 -17.416516753524117 23.638329944086784 12.228607646442006 0 -1 0 +1681 281 1 -23.862522036788917 18.05587419859011 23.877391517167524 0 0 -1 +1159 194 1 -16.46810400448639 21.50774575897036 11.177362509626082 0 -1 0 +3733 0 2 -19.94671890260385 19.098344654230505 9.624468985623421 0 0 0 +2833 473 1 23.287090732481865 18.029501393084374 11.667617647096959 -1 0 0 +2834 473 1 -23.205418905777183 17.883259815362962 11.699619139787451 0 0 0 +2840 474 1 -17.214750333884204 16.38470211969402 11.667479907971018 0 0 0 +1155 193 1 -20.830266501836157 23.03863579110523 11.78318632278359 0 -1 0 +3790 0 2 -18.98978735416808 19.06192050599642 13.36831512997982 0 0 0 +3841 0 2 -19.23586130827351 22.14858386733807 14.95222972248894 0 0 0 +1156 193 1 -21.803606934717486 23.941590948503663 12.517731784383399 0 -1 0 +2841 474 1 -18.404121216661576 15.487018650483444 11.83391812611722 0 0 0 +1154 193 1 -21.38173918316473 21.615151787304825 11.697416803871706 0 -1 0 +1153 193 1 -22.656649952839743 21.530507836559444 10.913238318736283 0 -1 0 +2413 403 1 -13.655223750070554 9.567398323034594 0.04687369288488912 0 0 0 +3774 0 2 -14.313877756109154 21.34612696326883 7.86022191846882 0 0 0 +1170 195 1 -10.586466291078443 23.631494387977156 9.005961037600034 0 -1 0 +2839 474 1 -16.208577962621497 16.0226079484116 12.747876590082297 0 0 0 +1164 194 1 -15.231887933299344 21.600132015136545 12.057100592125064 0 -1 0 +1163 194 1 -15.57715587818618 22.28973583449732 13.337492334789822 0 -1 0 +2845 475 1 -13.956719489148409 18.05919521998479 8.755627386481159 0 0 0 +2846 475 1 -13.529841230269255 16.601619488795855 8.780713022054988 0 0 0 +2848 475 1 -12.835116881354367 17.01303897032854 11.199479935656608 0 0 0 +2849 475 1 -13.183248977864265 18.48002305748804 11.080364931431177 0 0 0 +2850 475 1 -14.358624786628209 18.579085943514603 10.13137809614562 0 0 0 +1165 195 1 -10.78667422927766 22.14142229507488 8.947760084047301 0 -1 0 +1166 195 1 -11.68379551772802 21.741465698603992 10.109421339052025 0 -1 0 +3751 0 2 -12.318990830498542 19.980533076564043 14.739901302183911 0 0 0 +3814 0 2 -10.014440412312933 18.785099114396306 9.4850503935679 0 0 0 +3858 0 2 -8.745332453435772 21.97205508521666 14.738875167326693 0 0 0 +2853 476 1 -7.671388213767756 16.16132775055025 12.390697272833554 0 0 0 +2851 476 1 -8.816431615416487 18.198694166488472 13.353391315727464 0 0 0 +2852 476 1 -9.009681785894893 16.816141716237926 12.734648338423861 0 0 0 +1162 194 1 -16.182142946201203 23.677223446037413 13.111191873589735 0 -1 0 +1167 195 1 -11.050478369248149 22.083649133539282 11.482153529356665 0 -1 0 +1168 195 1 -10.784627953702058 23.567191936759965 11.47024222299356 0 -1 0 +2668 445 1 -0.5539717071869242 19.80498368043441 10.393418999800314 0 0 0 +2669 445 1 -1.9887010981807094 19.651635731829078 9.940876657591366 0 0 0 +2859 477 1 -0.4246811308773247 16.738246498925342 14.933584275215951 0 0 0 +2854 476 1 -6.816951046345737 16.135985460686186 13.62775086869024 0 0 0 +2661 444 1 -5.071270965109091 16.255197245640794 8.861171390882431 0 0 0 +2662 444 1 -5.5918947787776885 17.499282957151152 9.587934798116438 0 0 0 +2667 445 1 -0.046916011123334316 21.272666033939853 10.355589539443729 0 0 0 +2666 445 1 -0.1846929838759365 21.890813744276247 8.967648129668392 0 0 0 +3838 0 2 -3.7563768158691855 18.923039269308376 12.917000257060055 0 0 0 +2855 476 1 -6.611903653722736 17.524216152822138 14.234738285722395 0 0 0 +2856 476 1 -7.966978796394102 18.187894086971088 14.598513071502419 0 0 0 +2857 477 1 0.6007053018601469 17.263735546576182 12.629985687365924 0 0 0 +2858 477 1 0.4689910622390818 17.664448610838427 14.114774375206602 0 0 0 +3794 0 2 -1.6321823016698003 21.527345423907917 13.828025191543357 0 0 0 +3825 0 2 -6.913076050126541 21.023676154009884 11.415783598079818 0 0 0 +3828 0 2 -3.7174666410414985 22.928169397394413 11.169548259360498 0 0 0 +3839 0 2 -5.355381867278469 21.992483987235513 15.138298217875432 0 0 0 +2862 477 1 1.0634908063875728 15.827529582361313 12.584412302372144 0 0 0 +3865 0 2 3.08215341516462 19.171558643816677 10.017213899571907 0 0 0 +3821 0 2 6.2488482948458 17.218900497610363 8.240290900442885 0 0 0 +2863 478 1 6.79961304820846 19.59149595057712 13.443065375896458 0 0 0 +2864 478 1 7.159142935396734 18.491738650223354 12.446401791954658 0 0 0 +2865 478 1 6.520579216701831 17.157392310761796 12.828780892859196 0 0 0 +2866 478 1 5.0147392260592 17.294862480445065 12.835793662646832 0 0 0 +2867 478 1 4.6597360804146755 18.413842688285047 13.761874896623343 0 0 0 +2868 478 1 5.2954887746377945 19.713131296351726 13.39761167237 0 0 0 +1183 198 1 7.045456023195337 23.092691983643192 11.83127389840244 0 -1 0 +3707 0 2 4.436693414604323 23.381979758204093 16.16219812742204 0 0 0 +3757 0 2 6.406398212627583 21.07304540658545 9.13668924094629 0 0 0 +3801 0 2 3.0159518750443755 22.42556640034767 11.652410848888508 0 0 0 +3781 0 2 2.3009288094332687 20.626342145540733 14.709516599554096 0 0 0 +1184 198 1 8.333689908765674 22.893724076164922 11.100242599109167 0 -1 0 +3694 0 2 7.626019728366781 22.44646030708336 16.168065227348077 0 0 0 +1191 199 1 12.86434652846256 23.20127877585072 13.070691647462413 0 -1 0 +1194 199 1 13.388003245185182 21.577500123723752 10.780503836395281 0 -1 0 +1157 193 1 -23.094409709618244 23.877684914453216 11.751794712429694 0 -1 0 +2869 479 1 13.622685243332723 16.88812090648235 11.092296678774796 0 0 0 +2872 479 1 13.859507156624135 16.261688702946795 13.916862052503731 0 0 0 +2873 479 1 14.761773131414925 17.314290439740798 13.259474977140611 0 0 0 +2874 479 1 14.019217052797176 17.938496883547767 12.09227369884085 0 0 0 +1189 199 1 12.347539332733456 21.120258391887443 11.750295034831426 0 -1 0 +1190 199 1 11.780665649063492 22.303050314555442 12.462195779328948 0 -1 0 +3716 0 2 10.027156448788437 18.268479873728438 10.63506273510549 0 0 0 +3834 0 2 10.509056193874386 19.277807048161726 14.421463635896767 0 0 0 +1346 225 1 23.793395387467086 23.81644381399494 18.271848618089205 -1 -1 0 +1193 199 1 14.434610708095304 22.319659413552085 11.516164882905645 0 -1 0 +3868 0 2 -20.899072720425135 15.474751656074606 23.36942182079428 0 0 0 +1007 168 1 17.402259654854358 23.025592447014258 8.932302913545776 0 -1 0 +2915 486 1 7.227659705049295 0.2388236177388147 17.04086764963337 0 0 0 +2725 455 1 14.14284145514453 0.2561991867742448 10.223416572490823 0 0 0 +3722 0 2 15.159721379427028 20.54501187351067 14.89326366283286 0 0 0 +2838 473 1 22.61009607023991 17.084665065548013 10.700204559508869 -1 0 0 +2875 480 1 17.239299966872796 19.84757662992963 11.876705353132825 0 0 0 +2876 480 1 17.92457040362193 20.14784624432146 13.201738347493766 0 0 0 +2877 480 1 18.656474123621397 18.963383845554574 13.68888372509028 0 0 0 +2878 480 1 19.657631414337587 18.53810840966041 12.646714654654973 0 0 0 +2879 480 1 18.913564712633352 18.09339245221433 11.419954443455726 0 0 0 +2880 480 1 18.17848836974596 19.286249061785814 10.852754483398101 0 0 0 +3846 0 2 21.5591379766058 20.92686584516496 9.534104351606558 0 0 0 +3859 0 2 23.130817964879125 20.40324148438651 14.769072554472404 0 0 0 +3072 512 1 16.6565103761182 15.543974220617395 16.741026728948025 0 0 0 +1200 200 1 19.74204030868081 23.205033829464863 11.674312707146202 0 -1 0 +1199 200 1 20.719455755588974 22.651888585009523 12.706993189356666 0 -1 0 +1594 266 1 -18.14597742571191 4.808099075041864 22.990678895695723 0 0 -1 +2940 490 1 -21.80979995004257 3.8143001549009914 17.262762376994335 0 0 0 +2937 490 1 -19.410413882832213 5.542303515011293 16.44620140947802 0 0 0 +2936 490 1 -19.518756662885682 4.655295391478655 17.704156586814022 0 0 0 +2935 490 1 -20.42359463990074 3.4158491086928717 17.644622622715794 0 0 0 +1596 266 1 -18.213726620812793 7.292713209763359 22.811079822507057 0 0 -1 +3772 0 2 -22.98173316640093 5.835189998595849 20.21855035912424 0 0 0 +3795 0 2 -18.32379820176812 1.0189256288349753 19.68592518309387 0 0 0 +3817 0 2 -21.96500586475274 1.8086046019964208 21.30205482249336 0 0 0 +2355 393 1 23.056270406236976 7.941859175518065 0.38260082924947286 -1 0 0 +1712 286 1 5.474101018156991 18.51732911792434 23.928599941580675 0 0 -1 +1595 266 1 -18.927155018771707 6.010113502407483 22.395741117934183 0 0 -1 +1158 193 1 -23.62225820038134 22.447368299631478 11.635236885334761 0 -1 0 +1605 268 1 -5.690319328024967 9.296077829281938 23.619005871064665 0 0 -1 +1602 267 1 -13.946670997089853 5.97932530073038 23.54409293744624 0 0 -1 +1543 258 1 -19.256645903930288 0.6849357621339829 23.23770093390046 0 0 -1 +3686 0 2 -15.319157198063317 0.05575866373271689 17.785493551561636 0 0 0 +2894 483 1 -11.243386632599018 1.7547347616212825 16.296966203205656 0 0 0 +2949 492 1 -7.707842652038671 4.377854281502619 16.41917906934544 0 0 0 +2950 492 1 -8.740943222039943 5.4078420952112864 15.945626216036231 0 0 0 +3578 0 2 -15.385478356671452 2.2548615969721113 21.188510121412367 0 0 -1 +2946 491 1 -14.439289240625941 3.6339229186832354 17.865303753852817 0 0 0 +2945 491 1 -15.567158350969464 4.617648991586328 17.625977606569297 0 0 0 +2944 491 1 -15.915681352970319 5.4177483506856206 18.83462072935988 0 0 0 +2943 491 1 -14.67755379574466 6.078404948037709 19.419849306153107 0 0 0 +2942 491 1 -13.566272261110608 5.074550201336608 19.67333611407334 0 0 0 +2941 491 1 -13.17498147014894 4.313972209790917 18.40005783379295 0 0 0 +2898 483 1 -9.34156539772313 0.11366900845117012 15.686681666086042 0 0 0 +2893 483 1 -9.851701200224356 1.543322587796363 15.688297300733867 0 0 0 +2951 492 1 -9.30410469822799 6.027977532862739 17.2176245985714 0 0 0 +3847 0 2 -9.760823316748787 7.284893284421847 21.73931829337102 0 0 0 +3715 0 2 -9.250071090179384 3.107831440007693 19.519340757117636 0 0 0 +2895 483 1 -12.233213156297184 0.6778711149215513 15.813049116947358 0 0 0 +1601 267 1 -13.75271484768463 7.457718780082472 23.29048389733532 0 0 -1 +3573 0 2 -11.409238062403379 2.9038055050207574 23.308436700153944 0 0 -1 +1558 260 1 -4.100902572511241 0.4013818884439949 22.831223931246523 0 0 -1 +1610 269 1 -1.8184942692010424 5.447799165415413 22.515994071125824 0 0 -1 +2447 408 1 15.69166934756105 11.895693768380932 0.17627967250796703 0 0 0 +2948 492 1 -6.602612673595599 4.860870587502252 17.344465787299892 0 0 0 +3792 0 2 -0.30878980065402867 2.4634874443673005 18.92465683686538 0 0 0 +2952 492 1 -8.230099377725006 6.6711775136677165 18.062108182236965 0 0 0 +2947 492 1 -7.135628729087666 5.688158492585296 18.49114672276438 0 0 0 +2900 484 1 -4.635501261825296 1.1122845636639722 17.436809496619656 0 0 0 +1555 260 1 -6.168660914855352 2.0774778187424827 21.498462468269388 0 0 -1 +1560 260 1 -4.792622760487099 2.5751071130249503 21.864433627555023 0 0 -1 +1603 268 1 -6.071856367588174 6.7919860850274425 23.558398768047468 0 0 -1 +2901 484 1 -6.050522809321973 0.6165012232584413 17.218087979179693 0 0 0 +1608 268 1 -6.14522198804961 6.839441283248485 22.060376113246168 0 0 -1 +1611 269 1 -2.333433806175296 6.839954470065814 22.56611486335416 0 0 -1 +3864 0 2 -3.1691253525866347 4.837186335980065 19.55362395200823 0 0 0 +1556 260 1 -6.598282959325758 0.9621413239360455 22.453924629985842 0 0 -1 +3791 0 2 -4.339116204076857 9.660553580841844 18.602684807027767 0 0 0 +3824 0 2 3.0725476871361086 0.9351330899939048 16.769404032804562 0 0 0 +1566 261 1 0.04698668363144415 1.6040264490886893 23.679929812014148 0 0 -1 +1569 262 1 8.220634723227487 1.5329143410037775 23.166498481101502 0 0 -1 +2957 493 1 1.0131085195878184 7.0399141059364 19.5436619153055 0 0 0 +2956 493 1 1.52375216901344 5.63199164089756 19.364804361218894 0 0 0 +2955 493 1 1.8900811968490354 5.301705664746984 17.885753061224964 0 0 0 +2964 494 1 5.29313249495669 7.261833085145918 19.06134160493927 0 0 0 +2963 494 1 6.584852770940476 6.414446953146869 19.183258433542772 0 0 0 +2962 494 1 7.718636082875643 7.1742164676258104 18.528056991452885 0 0 0 +2958 493 1 -0.15448304215183897 7.287193907394424 18.62918555803044 0 0 0 +2954 493 1 0.8082641754600559 5.7019789858135566 16.890330608230812 0 0 0 +2953 493 1 0.237431022652342 7.051774620375621 17.18071840147221 0 0 0 +3775 0 2 2.8001388436588743 1.9190577563936313 20.308345014277634 0 0 0 +3813 0 2 5.143299620862583 3.6512474647697566 17.568759084532296 0 0 0 +3845 0 2 5.257458193174502 3.7217501277982885 21.94840202266888 0 0 0 +1570 262 1 9.356987205286659 0.5456916028875615 23.2536546532975 0 0 -1 +1565 261 1 0.5152401241988143 2.877186714413404 23.05923569783222 0 0 -1 +1567 262 1 9.417078732062755 3.0685773277678954 21.745595225443974 0 0 -1 +3355 0 2 -4.430382520557925 0.5125293069897837 7.420106906495029 0 0 0 +1568 262 1 8.593036935665602 2.972294554159407 22.990368493241913 0 0 -1 +2886 481 1 20.988897763154462 0.7630796560291592 18.29759725673417 -1 0 0 +1572 262 1 10.699198925990217 2.213682884194307 21.817001409882977 0 0 -1 +3742 0 2 15.659930028027397 0.9992229932085037 16.84960950382654 0 0 0 +1571 262 1 10.277178895766502 0.7549829302651766 22.060518439667778 0 0 -1 +2970 495 1 11.435190432436062 3.552484642121754 16.980549040183774 0 0 0 +2969 495 1 12.846462846752303 3.168681814391324 17.27101022319674 0 0 0 +2968 495 1 13.683543486739751 4.205723762920822 17.998730581337043 0 0 0 +2967 495 1 12.95132146822454 4.629862318962871 19.263133084465174 0 0 0 +2966 495 1 11.513291151607552 5.057813010346427 18.89709092731474 0 0 0 +2965 495 1 10.724800413991309 3.925364069375534 18.242973832254258 0 0 0 +3857 0 2 14.359041876721593 2.5426438485774905 23.264162382909724 0 0 0 +3861 0 2 15.054925778327767 7.566184557167748 20.220558405919423 0 0 0 +2493 416 1 16.599304081504364 18.914013348899843 0.38801094089380506 0 0 0 +2974 496 1 15.856574156416135 6.203701922532569 15.010476343637825 0 0 0 +2923 488 1 16.57433417923614 3.160086910305957 19.861855915769446 0 0 0 +1624 271 1 12.67021039240002 6.099944548867489 23.107233156685012 0 0 -1 +1623 271 1 13.751532317867474 7.114598848542947 23.536434837687963 0 0 -1 +2924 488 1 16.671040027982784 1.7624501839721278 20.44098418595009 0 0 0 +2885 481 1 21.992474837856435 1.9339511006783217 18.205834836731043 -1 0 0 +1674 279 1 12.460497926620677 13.862191949321556 23.23402284474642 0 0 -1 +3819 0 2 22.422051314579754 3.6669645450420867 14.690780626222002 0 0 0 +2972 496 1 17.049130732591863 6.414425392723232 17.1800186870488 0 0 0 +2971 496 1 18.3995917297207 6.090268464459938 16.595538098155007 0 0 0 +3843 0 2 22.980931111822226 3.869046490401936 22.354064630122753 -1 0 0 +983 164 1 -4.984011069058881 23.34408301050032 6.094427647548846 0 -1 0 +2973 496 1 16.10494643324718 7.083769561865496 16.210358399861306 0 0 0 +2930 489 1 23.44318486242379 8.82223063515978 17.854198451640432 -1 0 0 +2929 489 1 -23.638682914035513 8.108030373162723 16.84362911050567 0 0 0 +2928 488 1 17.383175984746508 4.189071760635174 20.660668957428395 0 0 0 +2927 488 1 18.8658995888241 3.77234534964301 20.72655159184544 0 0 0 +1538 257 1 22.002309039632642 0.6937981237670762 23.470944450221428 -1 0 -1 +3701 0 2 20.852554116660244 6.4832599443782915 22.687620124533712 0 0 0 +3827 0 2 21.38957103883894 5.516469715956856 18.926116367751586 0 0 0 +2926 488 1 18.97812748667126 2.3828191056887893 21.377446844618976 0 0 0 +2925 488 1 18.156913489787254 1.342673535387789 20.596586819310254 0 0 0 +2988 498 1 -19.8226278490801 11.22302447122681 16.516462390578482 0 0 0 +2987 498 1 -18.845203401374302 12.0077717572109 17.37790029903312 0 0 0 +3699 0 2 -21.646478068413952 9.357874412924359 20.74425374566796 0 0 0 +2986 498 1 -18.706192383800868 11.395806342113072 18.740142176513952 0 0 0 +2985 498 1 -18.317904515442912 9.9299263591819 18.643225790692878 0 0 0 +2984 498 1 -19.358111840325897 9.095322066218282 17.864390901009504 0 0 0 +2983 498 1 -19.556267015525073 9.739185104227614 16.478694572665567 0 0 0 +2982 497 1 -23.33638285072226 12.32407974773771 18.604664490530745 0 0 0 +1639 274 1 -17.522149197278416 12.814213923477228 23.052617593569344 0 0 -1 +1640 274 1 -18.829175673400762 12.645179520846215 22.365382886990126 0 0 -1 +2497 417 1 -23.185614979101288 0.6281486126378832 3.9258312172049163 0 0 0 +2697 450 1 -18.853992258140757 0.1834469456000646 9.80764111603123 0 0 0 +3034 506 1 -18.268371646142377 15.545350143690467 19.046690735501116 0 0 0 +3033 506 1 -19.34410487992586 15.236072288183205 20.076501492813392 0 0 0 +2978 497 1 -22.166165719822075 13.162369260711458 20.62649596071692 0 0 0 +2977 497 1 -22.083750151386738 13.038195892652691 19.110717773096788 0 0 0 +3032 506 1 -20.373087596651228 16.37133836383106 20.201273728243073 0 0 0 +3726 0 2 -15.531328487289196 8.40882931686543 16.864334534394498 0 0 0 +3771 0 2 -15.777873868536286 9.915423538898871 21.38050990104471 0 0 0 +2994 499 1 -14.716212292813996 12.408381092125046 17.98006515918425 0 0 0 +2993 499 1 -13.35705471200724 11.917486408066933 18.047886975323177 0 0 0 +2992 499 1 -12.408527085203527 12.959823908002578 18.57814948461683 0 0 0 +2991 499 1 -12.829440830545627 13.55848386474975 19.899837424384117 0 0 0 +2990 499 1 -14.330209049954574 13.908538386630395 19.933695429985843 0 0 0 +2989 499 1 -15.206270303680622 12.8155986583422 19.367189220216297 0 0 0 +1666 278 1 4.185607601358958 14.876059567133158 23.34370466931474 0 0 -1 +3800 0 2 -12.199727714440492 8.579496953679376 19.66990014726822 0 0 0 +2996 500 1 -8.186560561043017 11.405114055690673 17.377820637084266 0 0 0 +2995 500 1 -9.244439615361657 11.473050864124344 16.29858492701507 0 0 0 +3755 0 2 -9.296885381172064 14.245592273691527 19.87441119235215 0 0 0 +3833 0 2 -9.597569594282794 10.949602291777467 20.930471809202704 0 0 0 +3041 507 1 -10.74988528219667 15.97595289648503 16.34714150482355 0 0 0 +1645 275 1 -12.180554136690546 12.661957260129133 23.578698882157767 0 0 -1 +1606 268 1 -5.852548564569858 9.333851525531054 22.109918383135913 0 0 -1 +3003 501 1 -0.0262486654587617 11.978666388391813 17.13719806971644 0 0 0 +1607 268 1 -5.463433027782803 8.017321432436898 21.430606391308366 0 0 -1 +1654 276 1 -7.112758046279631 12.460482931429251 23.442992657407643 0 0 -1 +1188 198 1 7.30808130858767 23.851966214482438 13.122348612823892 0 -1 0 +3002 501 1 -1.292031593589732 12.835554458573965 17.07986693425952 0 0 0 +2998 500 1 -6.938301128862645 9.587929223019032 16.18628246390583 0 0 0 +2997 500 1 -7.5690795029460824 10.0379964349353 17.508983101969424 0 0 0 +3768 0 2 -3.59315969303124 16.109678287315432 16.67369344016591 0 0 0 +3779 0 2 -4.252822176526187 12.874974542760603 19.87397605153768 0 0 0 +3812 0 2 -3.059806797352817 15.128976300289281 22.65163652076028 0 0 0 +3004 501 1 0.1632734121222876 11.452634580627233 15.750508557941014 0 0 0 +3823 0 2 -1.2392637606184114 9.773027146783761 20.587583560233877 0 0 0 +3698 0 2 -0.003144650898551947 13.626045470487885 20.83845693234168 0 0 0 +1655 276 1 -8.018607117379846 13.577817470211427 23.120018838940886 0 0 -1 +2959 494 1 5.408705329802579 8.67405252718908 19.623523518104346 0 0 0 +1617 270 1 6.725498452053213 8.886349114641535 22.892147977588326 0 0 -1 +1618 270 1 7.245811843871333 7.464082759647637 23.057193375242306 0 0 -1 +3850 0 2 3.425849832432325 14.989114739196875 15.13784217564407 0 0 0 +2961 494 1 7.8737672176371145 8.591667813992462 19.073265880218795 0 0 0 +2960 494 1 6.604376370008103 9.357396600380023 18.959826187651434 0 0 0 +3872 0 2 2.445551093999729 8.272281725752512 22.608503644190826 0 0 0 +1664 278 1 3.0986388775857305 12.697095607540776 22.960309658018467 0 0 -1 +3008 502 1 7.240041595010061 13.113292413569608 16.64350333652181 0 0 0 +3007 502 1 6.74974212258648 11.871175140904462 15.999643166574133 0 0 0 +3783 0 2 2.2105598302072793 10.972134071375667 19.90206693612839 0 0 0 +3789 0 2 3.570117410707716 14.6099769366034 18.832939063816738 0 0 0 +3866 0 2 6.587724486106291 12.895054794123599 21.182092572070687 0 0 0 +3012 502 1 7.815762173371576 11.209836132435578 15.180616778533157 0 0 0 +1665 278 1 2.924945218036946 14.200035498190353 22.93773974246058 0 0 -1 +1615 270 1 8.834008894976945 9.825333061004015 23.681434966848194 0 0 -1 +1620 270 1 9.406121059196188 8.418879098296967 23.7645547679054 0 0 -1 +1619 270 1 8.751568255986554 7.382145587934434 22.80442139923896 0 0 -1 +3009 502 1 8.316467577781534 12.762273892628105 17.616724255409693 0 0 0 +3017 503 1 13.84195479353447 10.615311385715874 16.549816379941106 0 0 0 +1646 275 1 -13.626684266899323 13.104522447801031 23.323804385668318 0 0 -1 +3011 502 1 8.946734402744868 10.797104194228991 16.090623723330907 0 0 0 +3010 502 1 9.441134702429563 11.963597250759914 16.94060892485426 0 0 0 +3018 503 1 14.546748543857058 11.648526480623158 15.670271735821343 0 0 0 +3016 503 1 13.95675985033959 10.930741926425048 18.032411598737767 0 0 0 +3015 503 1 13.319669174174152 12.26727770565753 18.444730046558014 0 0 0 +3014 503 1 14.13450459523743 13.249290953501609 17.630240634228137 0 0 0 +3013 503 1 14.161929314199684 13.070117012379857 16.130010029685977 0 0 0 +1669 279 1 13.051845904695982 12.438662246474644 23.333131902756367 0 0 -1 +3849 0 2 11.314023300222683 8.713320571507982 19.980078678998357 0 0 0 +3830 0 2 10.201879168879893 11.911277977443786 20.932276584020528 0 0 0 +3760 0 2 14.638074858071448 15.769710365660256 21.18722774234767 0 0 0 +1682 281 1 22.718766940499762 18.122479293788032 23.297114138180792 -1 0 -1 +3022 504 1 19.16998193545666 13.064163292596692 16.70133220764598 0 0 0 +2933 489 1 22.483759820088636 7.626768252534384 15.31972622838294 -1 0 0 +2932 489 1 21.602104257587552 8.36098984865055 16.302938962896967 -1 0 0 +2931 489 1 22.266251984833342 9.451833840929279 17.14608720350499 -1 0 0 +3619 0 2 22.759524820929958 9.724946356267427 21.13561567277785 0 0 -1 +2981 497 1 23.438878530380457 13.144374188363392 18.97264682095462 -1 0 0 +2980 497 1 23.355868961600407 13.474187291559254 20.407943365829713 -1 0 0 +3810 0 2 16.80563927015213 10.006499202160338 23.776683707913445 0 0 0 +3067 512 1 17.09731835694139 15.86915204144693 18.150552565591468 0 0 0 +3793 0 2 16.610539673215047 12.603771781109792 21.584843419414817 0 0 0 +3754 0 2 18.94117853462778 8.881316202883777 20.465096811841487 0 0 0 +3021 504 1 19.006343845934083 12.72919798944163 18.1840838814213 0 0 0 +3020 504 1 17.82127818441754 11.80915261405113 18.42282282895948 0 0 0 +3019 504 1 17.95457412698314 10.539274218604783 17.612314634643383 0 0 0 +2979 497 1 -23.356803930924123 14.023417948425614 20.991446240172717 0 0 0 +3700 0 2 18.959370584099815 16.3661908585235 21.632318895423985 0 0 0 +3815 0 2 20.195616375053262 12.636184514678453 21.93524959530154 0 0 0 +3068 512 1 16.649538847177777 17.217046661777992 18.568759757874822 0 0 0 +3028 505 1 22.980225896396092 16.61706215473422 18.580773080407322 -1 0 0 +1683 281 1 22.26818801810128 16.674832655748126 23.025568525766918 -1 0 -1 +1348 225 1 -22.092184770783103 23.20579610499296 17.43433391359576 0 -1 0 +3708 0 2 -21.25559456869578 19.62761842682995 15.823558648531531 0 0 0 +3689 0 2 -20.64311213894838 21.015705722910692 23.53603611471952 0 0 0 +3035 506 1 -18.875012673725475 16.03809495049603 17.768519086943037 0 0 0 +1347 225 1 -23.247480123079853 22.605848997417777 18.191018118599796 0 -1 0 +1662 277 1 -2.058524407911626 11.945143591181486 23.69041651219682 0 0 -1 +3844 0 2 -16.59325919843099 19.619410804593166 16.120832875737047 0 0 0 +1688 282 1 -16.503439760555725 18.700260605061487 20.6023009908543 0 0 -1 +1687 282 1 -17.23800521561868 19.29018407741576 21.803355846218672 0 0 -1 +3036 506 1 -19.80538133120982 17.226025948024283 18.052315572416667 0 0 0 +3031 506 1 -20.972765567177184 16.756124532578617 18.88388044236406 0 0 0 +3029 505 1 23.88632378512069 17.681395120815356 17.933197531102742 -1 0 0 +1353 226 1 -17.31706859265228 23.213608832339112 17.832129892868664 0 -1 0 +1691 282 1 -17.131776182084064 17.075046772580404 22.900017746135486 0 0 -1 +1692 282 1 -18.04040634890019 18.20958522844445 22.528833554591294 0 0 -1 +3695 0 2 -19.96102036983975 20.501634303585355 19.857778081782374 0 0 0 +1352 226 1 -16.1837630920261 23.21228301384729 18.808468756123126 0 -1 0 +974 163 1 -13.694631294163527 23.542106639515296 4.26369932847563 0 -1 0 +3040 507 1 -10.7983031093395 16.89678605426126 17.580987089708714 0 0 0 +3039 507 1 -12.103727939724765 16.790328281233908 18.308309851352114 0 0 0 +1359 227 1 -12.846835161641874 23.45275371719849 17.26767230097117 0 -1 0 +1694 283 1 -10.93090978688769 16.37304345194382 23.005836052665128 0 0 -1 +1689 282 1 -15.516220392606842 17.68547646240771 21.088058926455723 0 0 -1 +1695 283 1 -9.818437722453393 17.428123773570686 23.213819737769334 0 0 -1 +1690 282 1 -16.220366596796246 16.543750474490036 21.789122536230938 0 0 -1 +3735 0 2 -9.728361381003806 20.29483896731702 17.86843564256177 0 0 0 +3822 0 2 -14.064634423688753 21.728131839770302 22.357354642055476 0 0 0 +3038 507 1 -13.232834534192628 16.942971436349026 17.322288312656376 0 0 0 +3037 507 1 -13.137384732784668 16.01268704169424 16.13220463729642 0 0 0 +1693 283 1 -11.825889242333046 16.707678181154233 21.846795343502947 0 0 -1 +1697 283 1 -11.336116015601116 19.157431168608912 22.242582524920483 0 0 -1 +1698 283 1 -12.404225825609009 18.117459414195416 21.975108163172752 0 0 -1 +3747 0 2 -11.254619738804232 22.860146305540948 20.535256308803064 0 0 0 +3770 0 2 -13.36790093204199 19.97596556304271 18.690616754117325 0 0 0 +3816 0 2 -8.25106028494232 21.67757743057385 22.02868719959652 0 0 0 +1696 283 1 -10.357040650669752 18.83448096989706 23.368828175926406 0 0 -1 +3738 0 2 -2.92511011277394 19.781332838401482 16.67430629160248 0 0 0 +3043 508 1 -7.346729792640925 17.32644496042835 20.53740712101804 0 0 0 +3049 509 1 0.9530750875417026 18.076018728378074 21.12568820852892 0 0 0 +3048 508 1 -7.491914318217734 18.26655057347707 19.36317042992786 0 0 0 +3047 508 1 -6.218547244611215 18.273039162353946 18.520996118398763 0 0 0 +3046 508 1 -4.908686529804855 18.568730416349158 19.29116731264241 0 0 0 +3045 508 1 -4.825509659453814 17.518709263205075 20.409494533991793 0 0 0 +3044 508 1 -6.055075350142378 17.591553394666278 21.283266210612947 0 0 0 +1365 228 1 -6.744032240535995 22.925602906272665 18.92436608583302 0 -1 0 +1364 228 1 -8.057608822785518 23.499442866874357 18.463818406637927 0 -1 0 +3709 0 2 -4.374887642561885 22.989382910186198 22.633884715732364 0 0 0 +3869 0 2 -2.9779158271568655 21.4686715798699 19.697079188838046 0 0 0 +3054 509 1 -0.4357900495625429 18.483663253537127 20.73445479013614 0 0 0 +3053 509 1 -0.9587205012394571 17.786486462524294 19.513529196416275 0 0 0 +1706 285 1 -2.8337949984110073 19.12128682554559 23.847169179042325 0 0 -1 +1350 225 1 -23.835362135168825 23.692343347515155 15.806173702553938 0 -1 0 +1374 229 1 0.3252561904958947 23.76400881152234 17.441931683047603 0 -1 0 +1609 269 1 -2.4766233055178155 4.525543851591776 23.514209150525794 0 0 -1 +1349 225 1 -22.328451525005764 23.598006164526055 16.028026065109504 0 -1 0 +1351 226 1 -16.679452031304173 23.082530876257884 20.25143986988261 0 -1 0 +806 135 1 11.136484505261711 22.871682349262606 0.8609503645390716 0 -1 0 +3837 0 2 -8.280304427597175 4.239087571042628 23.512171912835402 0 0 0 +1715 286 1 6.220981197719286 21.134878340579753 22.750864607685628 0 0 -1 +1641 274 1 -19.481160669159376 11.307531244139724 22.662656991658945 0 0 -1 +3050 509 1 1.8421992894484434 18.408232197890733 19.952853730872466 0 0 0 +3853 0 2 0.7332069660400669 21.704283092681955 22.66983696389863 0 0 0 +1369 229 1 0.6839318190761109 22.334991776166106 17.322274524889856 0 -1 0 +3060 510 1 4.9974324463686495 18.921740632710577 17.35611230494288 0 0 0 +3059 510 1 6.2978388768190205 18.148550130341256 17.262100639642032 0 0 0 +3058 510 1 7.599053347275171 18.792017825884685 17.6738714908041 0 0 0 +3057 510 1 7.444805763114175 19.555018349725877 18.961800012904597 0 0 0 +3056 510 1 6.2204191563857485 20.43205756134159 18.9521947448722 0 0 0 +3055 510 1 4.9663804555075854 19.54290516118867 18.711818078804967 0 0 0 +3052 509 1 -0.04976350388744305 17.96281418398469 18.31783548487168 0 0 0 +3051 509 1 1.3856112443806534 17.648803090418944 18.677105257359297 0 0 0 +1371 229 1 2.28624014706334 22.688880250047518 19.211654368608855 0 -1 0 +1370 229 1 1.0941766778039277 21.86820107600484 18.69542691386278 0 -1 0 +1711 286 1 4.847805932729359 19.132964467905115 22.70299975276698 0 0 -1 +1716 286 1 4.821476712071242 20.62603938089407 22.69156122795201 0 0 -1 +47 8 1 16.20689469719979 23.241838526811495 23.440168300844206 0 -1 -1 +1377 230 1 8.635898769257064 23.94075159454911 20.2176296182852 0 -1 0 +3769 0 2 6.757900986949621 16.477117859948454 20.57857221095587 0 0 0 +1720 287 1 11.63682330746196 21.157354890573107 23.234729834235072 0 0 -1 +1719 287 1 12.071440511361475 19.896562887803267 22.47659407689513 0 0 -1 +775 130 1 -15.792999613010338 22.825924139444226 0.2931623128144453 0 -1 0 +2312 386 1 -15.788545896407989 0.17824035256090107 0.3659094903857373 0 0 0 +1382 231 1 12.309197333450523 21.547773461404006 17.22842462204273 0 -1 0 +1381 231 1 10.935655277559208 21.8918077353953 17.850778902075035 0 -1 0 +1383 231 1 13.442098711995108 22.352862402169595 17.795726529568423 0 -1 0 +3066 511 1 11.21566459994007 17.206951440245906 17.81764262851046 0 0 0 +3065 511 1 11.995529002944487 17.629146055009166 19.02723345099404 0 0 0 +3064 511 1 11.370632155578809 17.044078289880275 20.323274748709917 0 0 0 +3063 511 1 11.295873736376167 15.531851826920487 20.27080092673813 0 0 0 +3062 511 1 10.35957553565365 15.218473554909393 19.12949974379249 0 0 0 +3061 511 1 11.006422620912788 15.694751418413754 17.84413345928526 0 0 0 +1386 231 1 10.887122663000902 21.753319453509384 19.344250739611173 0 -1 0 +1385 231 1 12.023194579068086 22.61958325874258 19.872236178854813 0 -1 0 +1384 231 1 13.363692848091494 22.1964406790586 19.313578668751777 0 -1 0 +1003 168 1 19.483790849490152 23.75531275246493 7.8543312923353605 0 -1 0 +1718 287 1 12.170017025142796 18.670498710569202 23.387653409978654 0 0 -1 +48 8 1 17.661127939278366 23.766657047013815 23.392587212817013 0 -1 -1 +3026 505 1 21.61513541432484 18.531350866492946 19.475385762060707 -1 0 0 +3862 0 2 16.974043954428293 21.756008216163224 18.91063516298466 0 0 0 +3069 512 1 17.315304206442764 18.25358034466533 17.776572718255718 0 0 0 +3070 512 1 17.080484421610812 17.987579725607816 16.31954875087872 0 0 0 +3761 0 2 19.719223610547214 21.049300790017945 16.523737461456744 0 0 0 +3727 0 2 15.511518725040482 19.76685125238102 21.512921733776377 0 0 0 +3027 505 1 21.596171944288518 17.121728445534178 18.901822280701076 -1 0 0 +3030 505 1 23.965432119082365 18.839893361025993 18.88439575724941 -1 0 0 +3767 0 2 22.91803957524669 21.58103354170414 22.316995791757158 0 0 0 +3025 505 1 22.61727259356269 19.47896480685076 18.824934920076373 -1 0 0 +805 135 1 10.433502128975812 23.795357812356126 1.792144644406823 0 -1 0 +2883 481 1 23.665105307885284 0.1917623275916509 17.26132694478131 -1 0 0 +994 166 1 7.322003783144428 23.855976566232904 7.199845277066027 0 -1 0 +812 136 1 18.144620836452003 23.88209034526092 3.973777418468526 0 -1 0 +1564 261 1 1.5621462383954274 3.55176851700057 23.965848420607248 0 0 -1 +2463 411 1 -10.186382091220896 18.22572732886093 0.014807674786438968 0 0 0 +2374 396 1 -5.615269009361776 6.108458561403319 0.0205904876588073 0 0 0 + +Velocities + +601 0.0032316838726594637 0.00794537541105881 0.0019793413217030925 +1968 0.0071579681633325495 -0.0036333645276728824 -0.0073367252254422375 +55 0.0013585064141440528 0.0048750338852601655 0.00314068015567091 +246 0.008072266191823422 0.0037988656848050844 -0.00025289538054964713 +247 -0.0025591066666835875 -0.0010221201833114722 0.0030667454048462573 +248 -0.00039292170139678664 0.0002690285797138837 9.25730622982952e-05 +251 -0.006787851143877177 0.0028458542282318216 0.002533274513912746 +252 -0.008460788520147504 0.00022777981107934938 0.003264847581888126 +3186 -0.002040774577325039 0.0038847625567798843 -0.0013013822733315798 +60 0.005055789896158935 0.010331541972115641 -0.004210094808599705 +241 0.0030761846902547132 0.0051667385265582845 -0.000721304010464208 +242 0.004518963620125899 -0.003907741085512501 -0.0024501534357371756 +202 -0.005025718505062069 -0.00046280409485997115 0.00071869865977524 +201 0.002477149653768898 -0.0027259756230631174 0.002429218302396309 +245 0.00625698118731932 0.0004745468015614448 0.002608342006721545 +50 -0.0024980112789385373 -0.0015636858092941777 0.0032474589564646336 +49 0.002149167277993695 -0.002464016666013496 0.005443065632506391 +243 -0.001536038856195776 -0.004389176210214911 -0.0006937321773919606 +244 0.0024308489800630223 -0.0014886634698538348 -0.003363838576712359 +56 0.005734793886006417 -0.0031757374369198415 -0.0016560078269149826 +249 0.0029482953369185053 -0.0016793079911748903 -0.004757856753071954 +213 -0.0024034460348550577 -0.0030031020275812044 0.0015910196591709452 +253 0.0018074823278342513 -0.00036015173895573413 0.002266578642805822 +254 0.006559616242340618 -0.005432406780447084 -0.0007062417998362489 +255 0.0004791946494937489 0.0016807647023977927 -0.0020236469465984884 +256 0.0024220090448146213 0.0024645016685068528 -0.00032847458612371563 +257 0.0032444192039482746 -0.002364601862655238 0.0014194035036803247 +258 -0.003801804347057847 -0.0015612454564904357 0.0010623422760469212 +3090 0.0007087133837049862 -0.005187736830536437 -0.004024365215371091 +3200 0.00018648422140009132 0.0029686031845418577 0.005269258104008174 +3219 -0.002575991242724388 -0.006978829170943638 -0.003800379526618955 +1936 0.0012492273828130372 0.0014290355800981058 -0.005631871552773617 +259 0.0026528025670360966 0.0005415241377633089 0.0024446841241966455 +214 -0.004547566920444135 -0.0026280684131370475 0.006187137457923985 +215 0.0006279179078313973 -0.0032452332901919904 0.0049571733357318334 +61 -0.0027955085906884902 -0.0005455391617297124 -0.004255573479106884 +611 0.0023577029069322152 0.003675186480546918 0.003500977449090441 +22 0.0016116582014560508 -0.0012595761157365825 -0.0032441263109609045 +173 0.0008532176378707618 -0.0024831997215156803 -0.0007701663304875478 +261 -0.006602760242706931 0.009265146059606195 0.00485802242508289 +262 0.0029832757781935366 0.004325428095123853 0.003040563802379639 +263 0.000918703774315073 -0.0035392261817736113 0.006934794637478921 +264 0.0035589437394961537 -0.005561830062017491 -0.002406737737652513 +265 0.0045753286542258315 -0.0024260725068602313 0.010567896015649633 +270 0.0019383511496130336 -0.0006381551436206873 -0.0037692488150954037 +3118 -0.005149079390532599 0.004954508000049086 -0.0038309107173041318 +3141 0.0021759119987664896 -0.0032120497457872868 -0.00013317754939502533 +21 -0.004180205785849682 -0.0003695864574943018 -0.0003584482723752279 +20 -0.005101136091144363 0.0009579578792647384 -0.01357078832613624 +30 -0.005495945568530183 0.01056954685669192 0.005111769384029935 +268 0.006275113595717743 -0.0013761309899585098 0.0022535796103848055 +269 -0.007574936957705026 0.0030681913051717642 0.004572401197762089 +29 0.0041476011352677995 -0.0006056268289178702 0.0034213099714784697 +1963 0.002992626360116527 -0.0014314758759992946 -0.0028407381170596304 +3387 -0.0003685639476823359 -0.0005917016857621566 -0.0024906182611309545 +23 0.008384751152086185 -0.00611991538327151 -0.007472236871820594 +216 0.0017660227352652284 0.007306190965025285 -0.005342900863958358 +19 -0.0001747508096339174 -0.003688703945598148 -0.013310617859239603 +54 0.002038754482741403 -0.0011103809918635414 0.007024010965788086 +266 -0.00017058638100151806 -0.002581494740404077 0.004353504323429169 +267 0.001590388006515804 -0.00806338554330775 0.001807767804618821 +79 -0.0013204357823806655 0.0047634697741664785 0.009999119322574215 +80 0.00016634665466235744 0.004382173825703827 -0.008623475221728636 +81 0.0006319929997222933 -0.00405296353280418 0.0022246652510937784 +222 -0.00945843338553859 -0.002583517746199459 -0.006013635867089602 +225 0.00362092833999717 0.0013847991973341836 0.0032927656601565453 +226 0.0008305582033053266 0.001310017771276649 0.003175971749746924 +271 -0.003937815989823967 0.006229595811158279 0.0020561910913807486 +273 -0.00018557264330067519 0.0015974140260719178 -0.00181001319917083 +274 -0.0045079815665265005 -0.001091755462914071 -0.0012434747316820555 +275 -0.003823040204205726 0.0006197593610616035 0.003479822915930659 +276 -0.008014367254701067 0.0014919113444342637 0.003962566055168363 +3238 8.354965007316653e-05 0.0003215417545165865 0.0023342795651902486 +227 0.0007936117154454114 -0.00013171120732787656 0.00043770164056296446 +82 0.0031699360834566786 0.0022997304035763584 -0.0016168032704378295 +28 -0.006870551745614322 0.003000163616849962 0.004089203736505075 +236 0.00448673953330459 -0.0036877216544352223 0.003945034010864314 +217 -0.0030991343470330693 0.001441355810398781 0.007443454448231439 +272 6.881885838760929e-05 0.0003618723185907931 -0.006941727477148575 +34 0.0004911527076959596 0.0009368094299899024 -0.0013061064482673007 +2156 0.0035301017300815893 0.0027562014946297202 0.002256998038178478 +152 -0.004255712349552147 0.006719331914594913 -0.005286970188725075 +231 0.004205052880075054 -8.904162318201874e-05 -0.006265546241546125 +277 0.00846407810507322 -0.002474628458715535 0.0003561040724458002 +278 -0.0018407751020688354 -0.0005353718381178876 -0.00032256867576698384 +279 0.004434019478713773 -2.384718515902249e-05 0.0002678326520215051 +280 -0.0015189519360833497 0.0009196016855754349 0.0011508975615229819 +281 0.00604971073119995 -0.0036773733294325006 0.002516805173397222 +282 0.003205946016380842 -0.006141318222816626 0.0019003705323080617 +3211 0.004874834249568281 0.001964503802205064 -0.0061899687678695055 +284 0.001987451178942572 0.0009656842745898972 -0.005683741462747666 +86 -0.0009269308128273573 0.0039634496985456805 0.004392447149797581 +38 0.005457747250483401 0.005997769277315725 0.0006095419832589824 +285 -0.003346538910977898 0.0032143588773232185 0.0002987224008140481 +286 -0.00786432278118586 0.0042091732442397275 0.0026805442794648054 +237 0.00101622596847052 -0.009580793576751739 0.005302152656873512 +232 0.0009886032607134892 0.002678209834169026 -0.0047958103865937615 +2157 -0.000575575270981916 0.0022465767114450727 0.006279981127068129 +39 0.001362868926831466 -0.0011567299723641285 0.006336710269238215 +3139 0.002898889093784821 0.000569800763321802 -0.003243069945780518 +283 -0.0037861898243025344 0.004911662619773804 -0.0016468872197624212 +94 -0.0018654435848628743 -0.0012435034770476763 0.003280863058117172 +95 -0.005508598681911978 0.004967868990981054 0.0037473706857089686 +96 -0.0027277624646521725 0.0030624464628809644 0.0006775300727758982 +238 0.003758006501150792 -0.002252341770764755 0.00620792336082241 +239 -0.002338527131972065 -0.0002682932339817302 0.004551569103119399 +287 -0.006775276908096652 0.0012572481724121602 0.003481059755452187 +288 0.0031849927160058533 0.0022825578510115305 -0.004799218071695235 +3198 0.0006405556769796576 -0.0071222682367007165 -0.0012697941940694225 +44 -0.0015709849986879948 -0.0039980941391633325 0.002297556514695667 +93 -0.004461441660787745 0.004292811544193741 -0.0026792750061482573 +240 0.0007418703483783744 -0.002691294323151287 0.003480111374045929 +92 0.004458427763128769 -0.0018036741133951029 -0.004830997933455644 +91 0.0003149971322084814 -0.003581395272454426 -0.00165122919539376 +235 -0.00449620644412968 -0.00046270612752115115 -0.007136757587631365 +3084 0.005585080810181661 -0.0017239442362496308 0.0012479233931804556 +3089 -0.003419389567577099 -0.0024697968162696966 -0.003075397280941907 +3120 -0.0011970105335798497 0.006714291716168972 0.0005443996505135215 +83 -0.006881007352574642 -0.0038855646079480276 0.009185591209031172 +174 -0.0017253024389488729 0.0034208924399536196 0.002622365247985346 +198 0.008288002630370607 -0.000821958483955275 0.003095852322183165 +2330 -0.00207124056027045 0.0007424494844170762 -0.006696671573874726 +193 0.005743003461772062 -0.011217632281925172 0.0030989999216688626 +2113 0.002800473574523983 -0.001343456704795588 0.001022275898295448 +294 -0.0009763058300016972 -0.0017733712131546915 -0.0037419736664026817 +295 -0.004101144600508044 0.004214437323150182 0.002665213260752625 +296 -0.007467644996132991 0.0009775870525844186 -0.004051684653959684 +297 0.0006187654734628514 -0.002159399344339254 -0.0073415198023536014 +298 0.0006529450985682904 0.0004668848816861084 0.0027228511065166268 +299 -0.0025795018725565536 -0.006514647239333125 0.0017588899256847355 +300 -0.003266470940369956 0.0013837455786756656 -0.0021729828053376507 +3105 0.0029599921927978934 -0.005444121776510173 -0.00506783576004713 +3196 0.005655694653706731 -0.003464474543914609 -0.0033063001317440413 +98 0.001981265188244205 -0.00014772641738764776 0.001153192875894335 +3075 -0.0002698408934291721 -0.0004988246185389946 -0.0010246566603116783 +3241 0.00561406290462324 0.0021456635098236025 0.007623248484347334 +3251 0.002726981606772143 0.005966349895536363 -0.004841872054629933 +289 -0.009226532594779761 1.1203503788412433e-05 -0.002693382836041138 +153 -0.001400043373882714 0.00482072016430653 -0.0014649397660225262 +290 -0.00022975088509822968 -0.00153650612354716 0.0020032439703025376 +104 -0.0027471611075917464 0.003038732152267642 -0.0013825965593358277 +114 -0.0016172155830183504 0.00028534791494032167 0.002194015244058414 +64 -0.007884379488019974 0.0035774098841656822 -0.007978307043161251 +3152 0.01298904517090324 -0.0020324403936943123 -0.011322575968674442 +301 -0.0031288133490279067 -0.0056206327298512024 0.0009734489584795486 +302 0.0005954484150826016 -0.0026906924200064933 0.0010640132971305185 +303 -0.002419576669811977 -0.0063697074784188935 0.0041707419092312905 +304 -0.0005523203716628129 -0.002463004936995113 0.009180229757782736 +305 -0.00288825852499804 0.003991186827326375 0.006035302633106992 +306 -0.003454253061608954 0.0045404819808434905 -0.00271370096048246 +3091 0.0018322314216118432 -0.003870137086490972 0.0006322426896243461 +3216 -0.0011343127148460606 0.0013871068784109784 -0.0066490258358380275 +3195 -0.004318430761136651 -0.0040616645359875785 -0.0008238850341091936 +62 -0.0019913736332273983 -0.0018913640806436786 0.0028385451218583616 +3221 0.004909021026889767 -0.0024019629844995913 0.004352289554472405 +63 -0.004657015133298379 0.0009066294247388587 0.005238353324789133 +109 -0.0028482218272112025 0.0036983039708284563 0.003806667731488362 +77 0.0046215423391457525 0.005527912153050199 0.0038118680461519433 +3128 -0.012664252952046122 0.0030494554272196854 -0.002716244544771733 +3154 -0.0025457712584420877 0.005075359012554963 -0.002787227548129567 +617 -0.0014426261599759709 -0.004969499089869205 0.0024590909133047297 +312 -0.006076475611463134 0.005454354719944105 -0.003022005084055146 +124 -0.0006482875699549528 0.0020427271561561954 -0.0005901491539239449 +307 -0.0029009877280778504 0.0016565351858204354 -0.004840980837491076 +308 0.002138645957854559 0.0017696992518782808 0.005380223359721309 +309 -0.0018044004644894908 0.004536824148675176 0.006080376581385109 +310 -0.0009765581288451675 0.00674162455338276 0.004940928373340957 +311 -0.003597523934180326 0.005788129873611139 0.0007011121710815848 +3159 0.005710994562373804 -0.003289975441492835 -0.00460198981490325 +3169 0.00029137569838463313 -0.0003448529350499042 -0.011480465886691544 +123 -0.00246468041406522 0.0020877300324483785 -0.0032425893839167995 +595 -0.002217186547443476 -0.005531272044183228 0.0003858227935027216 +25 -0.00550527618485148 -0.006290386620147048 0.0010659597813348033 +74 -0.004174664017613944 -0.00032357816911778167 0.0006439615561115869 +75 -0.0018105512305829398 -0.004113013200777466 -0.0023710952685456897 +76 0.0020727731868042725 0.0016301345302773876 0.0020453372564286647 +122 -0.005947094893927874 0.00620606353565792 -0.0036439216929718544 +121 -0.00028205355599618214 -0.0018253295680263773 -0.0014287420038623705 +3106 0.0009773142186704918 0.006300282100791342 -0.007749558627682822 +131 -0.002993323855702401 0.005750132792816172 -0.005640578205817457 +132 0.00359739017853942 -0.0007975068438956408 0.004364941718410272 +319 -0.0005198660909789616 -0.002324395005905139 -0.0073543099025178554 +320 0.0007116458707558029 0.000245159241091796 -0.003287139082808141 +321 0.0018361067700836526 0.0046702174728182316 0.001830242447622924 +322 -0.0003926497603731426 -0.00971387109822414 0.003656394193675751 +323 -0.004259885307694486 -0.003211863549594355 0.002390454116892201 +324 -0.007457778894724196 -0.007188720409977317 0.0014451813416106077 +3181 -0.0003589044868582778 -0.00032359483951284863 -0.006479100604054451 +127 -0.0018052473131182985 -0.0018327240823114964 -0.0022835875796112905 +130 -0.002718634084610338 -0.005522815085677008 -0.002106822891578524 +599 -0.006124669850457365 -0.0036314555347171686 0.003498845592536557 +126 0.003341547557123248 -0.0022367971314895077 0.002735824465114942 +2315 0.010051422624239068 0.0024880581917144894 -0.0053771369171338465 +3110 -0.0016087036670576747 0.0017280913197200418 0.0004679125523155267 +325 -0.007764286271288577 0.00330028685643918 0.003708338929170931 +326 -0.0035451742412600544 0.0008488673710464618 0.003968119558660255 +327 0.009341446983764396 0.004889655835076152 0.0029271825001083167 +328 0.007205688456709155 0.002516369374451917 0.0018106957651865437 +329 0.0037930833219164684 0.00807560989621137 0.0008595411069015068 +330 -0.006001724467579696 -0.003378782096816609 0.005026387323881236 +3111 -0.0045682056469419354 0.0007127061418659588 0.004644638427817325 +3127 -0.004757463196154057 -0.0018821535365216083 -0.0039404276287535785 +3184 0.005285011540921133 0.0025538173006037037 -0.000820285985778809 +3206 -0.0037526533964489283 -0.0015798775190263728 -0.008519902424498224 +3199 -0.0016092759270017196 0.004500578641501721 -0.0022584476381809914 +33 0.001226082731674498 0.004586191870610658 0.001310120738559494 +2118 -0.0003526041995028244 -0.0020262337907460135 0.00567121199429466 +40 -0.0012983573575634445 -0.0002606226490195831 0.0010361080816669883 +293 -0.0038624015330510283 -0.0044093437218002945 -0.0043114237608441654 +97 0.002966472316931956 0.0008517182168797181 -0.001999862347270397 +332 -0.0034127880545717494 0.0028110833802925 0.0012427954727808489 +139 -0.00043052730863172076 -0.004557781140739364 0.00013572726230317068 +140 0.008556539474557876 0.0016756228216673193 0.0005389174626934048 +2325 -0.0003893308962576601 0.0010461888586888119 -0.0009110932208354371 +291 -0.0008156669729460488 -0.0007256883023046896 -0.0056015785188042065 +292 0.0014619296964012531 -0.0023886892700016706 -0.00201852241280261 +331 -0.0051659444310447914 0.0007322967408406776 0.0002022408725657682 +333 -0.0003318507538171074 0.0035469299500551473 -0.0007712714720964572 +334 -0.0026708933736256024 -0.00117027214851644 -0.007523119974216317 +335 -0.00792529982682824 -0.004672831878350306 -0.0036526013425976517 +336 -0.002794831810690941 -0.001105817226808051 0.004045757540568067 +3173 0.0009755503347755696 0.001487906603694706 0.003741580282782934 +795 -0.0013398556829270357 -0.0003853758596228241 0.0007057328047278006 +764 -0.004890520462671821 -0.006563632051499753 0.003976018252126899 +1547 -0.0041796777948418335 -0.0017303513941111172 1.0197556129159706e-05 +147 0.007212268327277223 0.003829060773664829 0.0010759381544919661 +344 -0.002701097307472144 -0.002374075449554445 0.0029448397283056093 +345 0.002948181942555683 0.00011406987561358287 0.004295511084711742 +346 0.0030053900931798568 -0.002899629664719626 0.0011872607490999228 +347 0.001826385733630038 -0.0036448788847922835 0.001971928770429692 +348 -0.003149504438450352 -0.00028998499732042597 0.0009085432461182728 +1546 -0.0028814320695295112 0.002026162779222544 0.0023001981013294785 +3229 0.0028937008050528043 -0.0051878619642648826 -0.004722569614250858 +148 0.0035691101872830427 -0.005186410612718758 -0.007770935181973475 +343 0.0012037519488936927 -0.0012352126226876472 0.0009998523316030736 +1765 0.004662637051552451 -0.008695443360088666 0.004786351032797442 +146 0.004259418060689467 -0.003024585458704133 -0.00022391654517034564 +387 0.0010902136697008083 0.0014081679210436533 0.008903165277859471 +1740 0.0032397404923441135 0.00042683676411870195 -0.00393368636941323 +1744 0.0020414479940760745 -0.00088339177159427 0.0009220710924162349 +3182 -0.0011098921429008894 0.0028749115852043585 0.00039220535975993215 +3158 0.004769090484735709 -0.010093983210743564 -6.638999150653832e-05 +349 0.0019648098178967175 0.0022706386706325458 0.002148999403961305 +350 -0.0049912250838580205 -0.004735048108812528 0.0014735376595865777 +351 0.0008562207707015731 -0.005228441148849042 -0.004809376027508797 +352 0.003906831313677909 -0.004630550023905699 -0.007785522218688637 +353 0.007766077054797108 -0.002887699680199763 0.003298854693627999 +354 0.0007193007364508181 0.002099916337882427 0.002019834671977819 +1741 -0.004032675568287384 0.0007790448410687998 -0.0005813227435679493 +163 -0.003437745549375453 0.0026123352033605974 -0.003294513634489418 +355 0.0032117838366829358 -0.0009485471397335139 0.0026697914004436864 +360 0.005644242947072183 -0.001153449423795925 0.0006597790456952905 +1743 0.0007956066011656208 0.00026011748636405795 -0.0017313523707216782 +359 0.0032657968730046595 0.0053549085701720435 -0.0009573649877275398 +1742 0.006190341700020064 -0.002462726542710291 0.003149703986317237 +2114 -0.006680661105365231 0.0024215130563091823 0.004437419468318351 +1745 -0.0042710279349467625 0.0037678691539869804 -0.002682040630801851 +1746 -0.002477400571834007 -0.002368224869173558 -0.004315189064463706 +169 -0.006140687774315227 0.0030213422511477187 -0.0005351149833392401 +3263 0.004366761191215464 -0.0012716111048946203 -0.01013666960946775 +164 -0.0034215738689405886 0.0015436184958017918 -0.006015824512066659 +172 -0.004180622218429007 0.0027807375817318096 0.003635466440432635 +166 -0.0035722662764896404 0.0017051782061242521 -0.0014481536426706185 +165 -0.007021984552054002 0.003067808130265115 0.002358901492895314 +168 0.0012479082467478655 0.005383104367113352 -0.004475702045265426 +357 -0.0010584514908645816 -0.006432129357048799 0.001309317635480583 +358 0.005222464477106139 -0.0006515785475133217 0.003502113587913725 +361 -0.004351748389866291 0.002520557344488903 -0.0019264182035984253 +365 0.006702274319320981 -0.0025571969999812548 -0.004481170561551404 +1747 0.002222004357555455 -0.0024523684702585477 -0.0037301181194529685 +1751 0.0033460086542312245 0.00038205587955670315 -0.006713337717737352 +1752 0.0017380251731069919 4.410598022240751e-05 -0.003288653036943223 +170 -0.009315647509359825 0.000641123231811089 0.0014209778249988161 +171 0.0013807722524054272 -0.00044607941194365014 -0.004222934849951049 +362 -0.00198279691246172 0.0016221590141856001 -0.006470561608224697 +363 -0.0008474758143905378 0.005336559101677346 -0.0002275230929055451 +167 -0.005427919236518307 0.00362346933822675 0.001475845226693216 +364 0.0008580767793811538 0.002253257393545596 0.0012132987302933037 +2331 0.003788395756452632 -0.0071777517839323995 0.0011694128361659352 +1769 0.004381389041269897 0.002584829501181459 -0.0021425048984907514 +1750 0.0013605885976436985 -0.0013605405637626355 -0.0003897371290893595 +3162 0.0011235409046864361 -8.140596948010612e-05 0.0017247966693066789 +3308 -0.0017009762955230644 0.003271689556570993 0.0003627906361797161 +366 -0.001149786923211518 0.0019356196144125423 -0.004750738866846327 +370 -0.002706514094470739 -0.007756139291159102 0.0010185687284906728 +1760 -0.0011134626083829757 -0.0007521783548536686 -0.0027989514990153152 +1761 -0.002538509705192701 0.008581613485743803 -0.00016815954441391407 +3201 -0.0011539127519963987 0.001774708964762931 -0.008884813835878433 +3247 -0.005277717253460794 0.0025846297467861513 -0.0018457790573342006 +3253 0.002776483639053006 4.62026824239679e-05 0.005520537286207561 +3512 -0.0002625079893124456 -0.010027930823995307 0.0005717099398095132 +151 0.0013367291255604707 0.0020433371522526516 -0.0058887430130062255 +1967 0.004313608749474087 0.0002618783632803082 -0.00041313165768500223 +3375 -0.005587655250818483 -0.004396738033977824 -0.002778859056406709 +176 -0.002684450921222602 -0.0011007993369141743 0.0050355028456550086 +2145 0.0007819283337977864 -0.004683495591552719 -0.0018705283027533764 +184 -0.006041382961963426 -0.00041097875408040835 -0.0027556558066123542 +368 -0.0005482885426469416 -0.004475715542262185 -0.0027681420834425458 +369 -0.0006892620102130671 -0.0023927663178400236 -0.0018240399059190385 +371 -0.0016165528029220232 -0.0015703475134595552 -0.0030193143043239666 +1577 0.004964906187015274 -0.003547537664401627 -0.006288683601509525 +1575 -0.0009258260528331818 -0.0038055018732061187 0.0061535418896237195 +367 0.0016110773082294192 -0.006014243317240338 -0.0009438484498793552 +372 -0.0020048958749817212 -0.003066270831754161 0.0005668974732856485 +1578 0.00459901934963453 -0.002075994309152567 0.015470608674388231 +1748 0.0015935490526539082 -0.004631961265669164 -0.005927678504471143 +182 -0.004546710073774842 0.0005905034515154915 -0.006354124070107283 +781 0.003195914434777228 0.0007778104391669623 0.003289697720394958 +373 -0.0007608186979785788 0.0011736684339005582 0.00592694374883084 +374 -0.00884651268036003 0.00020962585822517258 0.004657211917831476 +375 -0.005110669010481737 0.0018555229353904147 0.0018455326260113443 +376 0.0014606598325046876 -0.004325202393085278 -0.0015985949569114256 +1573 0.0057736645583677205 -0.0025439729249162844 0.0023040670900209893 +763 0.005026579522868326 0.003947869226846273 -0.004009444842426631 +84 0.002830099485257549 0.002155790145444054 0.012951168665179402 +105 -0.0015691637556108594 -0.0005696076076662837 0.00034254601291532993 +183 -0.007258103006026933 0.0048676431791837655 0.00011429071969727497 +1574 -0.0030603491992196945 -0.0004657844836752697 0.002512969812791775 +1576 -0.00013929543519949184 0.001965412643409332 0.00224596686246889 +1772 -0.0025983033189741606 0.0033168876767127073 -0.0020114673507385765 +379 0.002189133723895715 -0.005676889826340984 0.0012665075471220066 +341 0.0034863387153448583 0.0004020808863942442 -0.0064270524955894436 +3132 0.002389083110601903 -0.008533878050645868 -5.919405132995514e-05 +340 -0.009817575219731419 0.007808443881886685 0.006379680695843658 +1771 -0.002236342327254433 -0.00623255617527669 -0.003591035459317832 +342 0.007129853012529889 -0.00020577787394960545 0.005853020746246973 +337 -0.001311719864633124 -0.006705466684007563 0.0070421181137778335 +338 -0.00036826842549784745 -0.0019266099144513984 0.007103321294751126 +339 0.00771924456931585 -0.0032576679343097976 -0.003370979691926571 +380 0.009393092970578443 0.0004417411264911617 0.0008654469686103887 +381 -0.00012305534382042908 -0.0007159233887796505 -0.001912110702289654 +382 0.0020943460797957594 0.001925356081331767 -0.0021776879757138216 +383 -0.000506309066887122 -0.0009187663468650237 -0.004840557719692987 +384 0.0038662507557602564 0.0008499231894067051 -0.0010105960672381947 +1773 0.00010302467458457719 0.0037208000978388245 0.0037091951904520285 +3081 -0.00548123539309086 -0.006533237451332047 -0.000861201601663996 +1774 -0.002988201475772413 -0.0027127317558380765 -0.007785418550706379 +1776 -0.002712626496082197 -0.0038097483983523433 -0.008410779226499675 +1775 -4.947078913046152e-06 -0.0017777172723987857 -0.006845164515094337 +1583 -0.004585518794441435 -0.004089446690945042 0.0045404532622654896 +1542 -0.0017678125053950814 -0.0038884288864713726 -0.011830766449287385 +203 -0.004600284447450605 0.0015915523104311341 -0.012407994488166853 +73 -0.000671095349807017 -0.0005468330690885157 0.0047893775482374 +250 0.0015130107074497958 -0.0017227456237092344 -0.006976142998252317 +204 0.009332211646251757 -0.0036059258094715686 0.005105099500543242 +389 0.0011235262208416988 0.004297466290835068 -0.002890893687684957 +388 -0.000997129640123589 0.001955415160039671 0.0020978946473910196 +439 0.006577915577293837 -0.001062879775591508 -0.00472642961607289 +440 -0.002083919039037812 0.0016180451469813366 -0.00199830135055109 +441 -0.005130176777332743 0.006142762896585932 0.009236310498308116 +442 0.0006385907070339325 0.001550905374384024 0.012089129855396223 +443 -0.0012506226405959817 0.0023245041852784205 0.007942047765295154 +444 0.0011599475076805833 -0.003368475740415662 -9.415550737774901e-05 +3087 -0.0023230281344061307 -0.007952427862343268 -0.0064389510980459395 +437 -0.010305793468399094 0.009484738358658325 0.000578212657228301 +3179 0.002488353730862256 0.005639460551972654 -0.014013161703705769 +3095 0.0011280574652195638 0.004440998656937913 -0.00585096268465095 +3672 0.0030955758403747526 -0.002010689483973234 -0.001683259628768683 +398 -0.0002605143454275149 -0.004341805868641149 -0.0017087409076608658 +399 -0.0004319440172526901 -0.002311240469867704 -0.0010115377120650001 +400 -0.003743653353713089 -0.004996800578769052 -6.737959771681343e-05 +445 0.0006523928258936432 -0.004926986192944648 0.004773288569737846 +446 -0.000824496114934727 -0.001974762423546275 -0.009927194178998247 +447 -0.005451717187118877 0.004478747239992424 -0.004101858606270392 +448 -0.013390340352748956 -0.001147013700449969 -0.003521596549784298 +449 -0.0024473887563834086 -0.006570693765812874 -0.013943561007210066 +450 -0.007515848444667766 -0.004547701781598263 -0.00438810545578205 +451 -0.0004839579688318782 0.0027428116334722377 0.0015763665949216292 +452 0.0037703206373715394 0.000791078653735705 -0.0075176224065419085 +453 -0.0016162272022409443 -0.002024077319594726 0.006375421578726829 +3166 0.007779446641812656 0.002020432137880898 0.000853265620452397 +87 0.0014822603413524773 8.647382799352721e-06 0.003908447027887423 +260 0.0015191126507932001 -0.006768593997637656 -0.003424781905479947 +3150 0.0012412545626432495 -0.0020616967152129024 0.0024953461806954103 +3246 0.01434078363108098 -0.0018419004011025286 0.008700883429772014 +406 -0.0004053768716363426 -0.002452572835369817 0.0020456489248401716 +414 0.002514838202433648 0.0003175858668010328 -0.005610614551918288 +454 -0.008131913280001011 0.00204263770970365 0.004086712751258947 +455 -0.0058138036580745005 0.0017344212393492434 -0.0038666663405294735 +456 0.0005075636075838894 0.0009821733218447959 0.0013289404369928896 +457 0.0040174060761813705 -0.0013270124572741912 -0.0037359457224793685 +461 6.110798206936708e-05 0.0009962906063527 0.0005942854212193184 +462 0.0025363721622080424 0.002611479822112311 -0.00045503120917659955 +723 0.0029112890786092186 0.0008882321833276017 -0.0016877678679313795 +458 0.0045187123308704944 0.003819742613502795 0.002019143500917777 +459 0.001828934672299623 0.003093536775250691 -0.0010292940262477926 +460 0.0017441310263817832 0.0004577216165981913 -0.001883828149229228 +407 -0.00227624400209749 -0.0073275019837831705 -0.0005880636526929659 +3189 -0.0016136558755296276 0.008030199299283424 -0.0007592235899663368 +409 0.0063082569866919225 -0.005616369713485738 0.002363821435802767 +648 -0.006194165504015981 0.0005218520852229614 -0.0013512358018297863 +647 -0.005284647357504862 -0.0004047419526336208 0.0015114532211126478 +3142 -3.523336002305963e-05 -0.006811980974426194 -0.00436903723447418 +3121 0.004950807785131895 -0.0034536004936024517 0.0030883571454765582 +3100 -0.00908117057514957 -0.00011571884317773353 0.001231553394406383 +880 -0.0010958240766496864 0.0009504154972167779 -0.001641154458232028 +888 -0.0015031471458969567 -0.0013694369492167767 0.002631961604390256 +463 0.0060003965797729006 -0.0011968200445428628 0.00027550389382187813 +465 -0.0023456729252155357 0.007346059474679059 0.0003363607534120437 +466 -0.003965879097228701 0.0003205309012289786 0.0031101318852222734 +467 0.0013622767153860526 0.0016368812679632828 0.001651939086303347 +468 0.004613286136169309 0.0007939201078044421 -0.0004505890630859835 +3107 -0.004320212252381107 -0.004473506289246962 -0.0033302944525905524 +3131 0.0034732980566188265 0.0055683843699011176 0.003829263160282366 +464 0.0068136655015774445 -0.006342571712836647 -0.0006548736010275092 +66 -0.0019112740397449846 -0.0010043859842885615 0.001741704814710755 +230 -0.0027027287934793635 0.002134939211288838 -0.0035467287140419517 +3155 -0.0030240228333546127 -0.002087404861405293 -0.0035292792950840724 +426 -0.0030680050027026657 0.002276559626309547 -0.002367924301502398 +3145 -5.234725270821074e-05 -0.001205974141217881 -0.0023757334011313062 +3220 -0.005128918797919345 0.001966059384143895 -0.0021925672577038104 +3192 0.00850901857576466 0.006197407732171604 0.008068854877345166 +3261 -0.0023986522307408637 -0.0004312504638462982 -0.002154786409400187 +3077 0.0027044183501283214 0.00041599910138497215 -0.004397220876996945 +470 0.0037548725209600132 -0.0012036091459607491 -0.0023969161548409376 +471 -0.003694044092889844 0.005942667142661808 0.0011398370590627702 +472 -0.0013830520611633006 -0.003632592728670041 -0.00484953187488952 +197 0.011186518960798563 0.0023647093987899433 -6.615594241540858e-05 +65 0.0017019636839419668 -8.295024430894132e-05 0.0022570121209270913 +390 0.0006800458006583494 -0.00030263059474750593 -0.0055578787131074945 +438 -0.000500813180407396 0.009661648860482805 -0.003943515220378494 +433 0.007843439019479249 0.0006471641132893003 -0.004525908820879075 +435 -0.006692616318058022 0.0005098440300953516 -0.0018453481813782726 +3209 0.0071627791242569435 0.010316791158059132 0.0012323956572796388 +385 0.006169625588964647 0.008493920285369395 0.0008259195169169264 +434 -0.001027673803809885 -0.00031466732311792903 -0.006632123937569553 +138 -0.00010767793223009114 -0.005697399361107477 0.004265593127584057 +432 -0.00628650956880073 -0.010492893651019837 -0.0023863527796466315 +436 -0.007724623287900811 -0.0018201775254712458 0.003687511778574155 +475 0.0023631722699339005 -0.0005842712742662443 6.233293630437206e-05 +476 0.00302190454241133 0.0021735972420214287 -0.0064144920240009964 +477 -0.0005424024123442542 0.0013153511057341883 -0.0022815785968916713 +478 0.0048731602462293725 0.0017742832538027592 -0.001264950211230255 +479 -0.005106507903845758 0.001855226921518988 0.005065396030096759 +480 0.004401736503053431 -0.0005120283503031014 -0.004404546596505028 +3250 -0.004228270883381873 0.005432763786101121 -0.00834076673029324 +427 -0.0008887346675261618 -0.006007741162803239 0.0038681005413264847 +3252 -0.00027231090853926037 0.0020112522544817706 -0.008540939854404603 +488 0.007791420834671487 0.0029883199310360687 4.591659506252718e-05 +489 0.00256828656391387 0.0008864962264920284 -0.0010615764752241706 +490 2.800786780397377e-05 -0.002071497431148776 0.0008995460558225741 +491 0.0007310008187968041 -0.0037204548733438063 -0.002308236291815854 +3119 -0.00579325810045137 0.002020002991338124 -0.0017042485712090627 +3134 0.0009618836553748837 0.005895949227454724 0.00035697196893461227 +3156 -0.0032374155784879546 -0.00295375021570358 0.0021472630370849666 +3185 -0.006582088863102125 0.0009977247580789965 0.00037040776194260006 +537 0.002163436602677984 -0.007321956358508896 0.006453150009531137 +3122 0.009559734926076093 0.0032902258067329087 0.0037544937057184076 +538 0.0027289313339404686 0.0018126832815204298 0.0012462776812597867 +487 5.1352431367430185e-05 0.0025936065393410705 0.00023722006010825473 +492 -0.002115511938201662 0.001927588228167659 0.0010112162756702268 +539 -0.003861137873269451 0.0005137688761845774 -0.0005513460814248772 +728 0.001367476759611446 0.003973706678964036 0.0036429869300294527 +3243 -9.882927611283988e-06 0.0015744119220607717 0.014977707147407709 +3113 0.0015117120126618253 -0.007031627532794569 0.0013448817627334181 +3136 0.0024429358389326493 -0.0008670867095685998 0.0018444036022875693 +493 0.005751024063529722 0.002049704330041883 -0.00017458769794448834 +494 0.006060132547113017 -0.0002287492194421555 -0.0010698925279335949 +495 0.0062024773103817035 0.004795740392258196 -0.0009043157968656619 +496 0.002444330149355368 0.0030998961001733076 -0.008082231006840144 +497 -0.003779794256720214 0.003264693568394349 -0.0013600176629294046 +498 0.004642930410742737 0.005802810010282621 0.0001814104024163827 +3097 -0.008550979772542638 0.002785028837510654 -0.0019553285986985604 +3138 0.007780244809479696 -0.0002589501030408127 -0.004271712920250788 +3180 -0.0018777628267208288 -0.010238719342715658 -0.000652900268811179 +3254 0.0006844637720887895 0.0010595468257034821 -0.004917631660191173 +3125 0.0022676134340519584 -0.006329881102959255 -0.00676242284004001 +738 0.0029440898881513923 0.001505919157809422 0.0029150633022110204 +317 0.0019209617042674266 -0.0019198663690908888 -0.003963950258346405 +318 0.0003564501171190609 -0.0045236495934743 0.0012268322707069098 +3133 -0.00438585646143596 0.0037274600637270693 -0.0018899219700514974 +3135 0.0004807277132410914 0.0022852074851377763 -0.004455080113842409 +499 -0.005025726481026649 -0.0006524727258433685 -0.002300406427294897 +500 -0.00815431009021056 0.0011791862260051432 -0.003164336137436212 +501 0.00011567442599780172 0.004454205704649259 -0.00032583203092646107 +502 0.010022142263982896 -0.00630578854364788 -0.006865649195083914 +503 -0.0011294111853351245 0.0039968863476048016 0.0012324900288695703 +504 0.0009527789259310312 -0.001994859029522539 -0.005599073024946059 +3130 0.0059767750532386974 -0.003253377822313265 0.0011050239971754727 +3096 -0.005700994706202954 0.00898382717288385 0.007160453353826285 +506 -0.003687793938818179 0.002757952489127397 -0.0015914105581428901 +507 0.0011029930407906042 0.00321561572513148 -0.006101581534620054 +313 -0.0006792097956834131 0.00019860284849658252 0.0033195080779211622 +314 0.0033645236297657234 -0.007204910598491899 0.009549552990108946 +315 0.001589794697463209 -0.0012425293154283562 0.007964925232143207 +316 0.0033335843712725926 0.0005218586532235501 0.0011001777388414294 +3213 0.0016542188821153314 0.0027190100467138997 -0.00404031168269069 +505 -0.0034970471789476975 0.008340897889720167 -0.00012372694308983138 +3240 0.0007523255019441402 0.0032677803041647724 0.004081048025596983 +510 0.005564897947164237 0.0028173833431580234 0.00955414744352074 +3191 -0.003059834690608872 0.001043456855226955 -0.0029255594537232923 +508 -0.0019601251847562117 -0.004742532902942731 0.000803377835268068 +509 0.0009764901012207112 0.0031909380662392796 0.0015748778616865894 +511 0.0026755047288098345 0.0021965318242252734 -0.005560757486394889 +512 0.004384058809880665 0.0007167412747414476 -0.0007521660100846148 +513 0.0040208765141235515 0.0029968154308792675 -0.0033608045836654023 +514 0.0014367413069044622 0.007738975842166813 3.651976918988535e-05 +515 -0.0027266440944503163 0.0036123900769322597 -0.004804681115819437 +516 0.004360728143709321 0.002022891723492974 0.00031998018504376567 +469 -0.0010478706696414757 0.0027509593488735146 -0.0015372415821983323 +473 -0.003450831077255215 -0.005450277160128516 0.00014821361829330876 +474 -0.0008422552354420012 -0.00703254069153615 -0.0018756749656058177 +3215 0.004268845720745852 -0.0016930965960459251 -0.003238184399539825 +3151 0.003535241950828453 -0.00016940709484992555 -0.002393741570199657 +3239 0.005838338334926753 -0.0030523521477884845 0.001978697054295878 +3205 -0.0024664854220923355 0.002819970784259062 0.0018512023930897983 +3248 0.001823401426235847 0.004916482329667355 0.0037049747744542392 +517 0.0030334503331631985 0.003523393972282746 -0.005185848784929929 +518 -0.0008113851449600639 0.00025983435574970613 -0.004926521417245541 +519 -0.002985514782798714 0.0068200346489725805 -0.0025420775776472627 +520 -0.004902134369668112 0.004178646470860405 -0.007417505279510463 +521 -0.006687637124598742 0.002052373650945386 -0.004282008485374258 +522 -0.0017710736515108667 2.2935129834838234e-05 1.7993202901449344e-05 +3217 0.0008228733041916448 0.0030575167520114216 0.00020376059192756042 +523 0.0016046826863387043 -0.004924850355145456 0.0006670128567726767 +528 -0.000875106333696323 -0.0007816959172402215 -0.004306533073984215 +524 -0.003215386359995726 -0.004899552780336894 0.002541429751620478 +485 0.0011415278468957526 0.0037550258302544255 0.004901206604738131 +486 0.0006925205569733448 -0.002735226039831722 -0.01308190239527047 +481 0.0031316855374405733 -0.002230254841366234 -0.0037271193421813667 +484 -0.004136468582590521 -0.001182502217293716 -0.003676977084547093 +482 0.008994848489427882 -0.0015279552082775706 -0.0003096259183078103 +483 0.005061700772365444 -0.0004755121391829153 -0.002606406806066856 +525 0.001568126649486757 -0.0017762942686054529 -0.00027130476427248286 +526 0.0035124986427330055 -0.0011138333178479416 -0.0002023028436423739 +527 0.0025078920142954783 0.00015608051415575607 -0.009107196832739911 +3099 -0.000933136374986474 -0.003527701292573692 0.0029337421456261154 +3222 -0.001127246031416316 -0.0040188868024770025 0.00470424635517072 +715 0.00336759703343117 -0.0016219075716830183 0.004767419205687457 +3103 -0.004425534856901159 -2.206518620985897e-05 -0.0014729787182825574 +3204 -0.0031296371829028754 -0.0026738720905667827 0.010612273756021964 +3160 -0.00119800807401413 0.006661607788295466 0.00016259415677013941 +3161 0.0050417206816495055 -0.0038891505613613325 -0.005395139627892323 +721 -0.003168045532573489 0.0002995700089089065 -0.001590658851026244 +3244 -0.001774820602917417 0.0028487553883266674 0.003964229971938768 +531 -6.527458466059987e-05 -0.000697431818483618 0.006300362696450773 +535 -0.0001938899199990359 -0.004014200668057423 -0.007466638969485642 +536 0.0036185044986819024 -0.002900011445925786 -0.00016287534848240408 +540 0.003578518351410851 -0.004200142893961027 0.003749092958664432 +3168 -0.0033404181583954477 0.0011276081644659036 -0.006271965022273697 +530 -0.0014859127709524454 0.0041784068330463385 -0.0002978352439617001 +3129 -0.0031692361282016058 0.0007680430493720998 0.003018256117398801 +3171 -0.0036354571776238604 0.0014134831463595056 0.0031962679760364817 +3104 -0.002629554362296331 -0.0019869945788465646 -0.009390110676445896 +1922 -0.003392600879200444 0.00622066580110241 0.009787489040461296 +1930 5.683346663435058e-05 -0.0024090457367044096 0.005610575138870282 +1929 0.002693447976083471 0.0038328270009273546 0.009147421844649454 +2130 0.008302745613356323 0.0005144668947840475 0.001633086797060286 +1931 0.007342421088835709 -0.004821856956465344 0.0043978801741858765 +1928 0.0033374924039904588 -0.00046035484369742904 6.860272257647097e-05 +1927 0.004366424801748478 -0.006173683093210944 0.002689217243615018 +1932 -0.0024230145196332945 0.0007992293060097571 0.0031282869669076907 +2126 0.0014964736833585188 -1.4260034935340768e-06 0.0022212720588453477 +3188 -0.004100877187540588 -0.005748989488844269 0.006283790680887872 +541 0.0018103469009879188 0.001063478415404351 -0.0003083818818671045 +542 -0.0023081072011404326 0.00027570046070958336 0.0006014723563356753 +543 -0.0034008639798771565 7.488472281841256e-05 0.0021481609800924127 +544 -0.002122324764985014 0.0045374377026983865 -0.0014552525543796507 +545 0.0008409874043447061 0.003804154554838497 -0.008639365058345703 +546 0.011211406477905814 -0.002532597663567556 -0.005458278132483623 +3137 0.004986622738860563 0.00029980002175963464 0.00021878802716362032 +2127 -0.0010439805480810449 0.007007846460281422 0.003107800971883997 +1937 -0.00015354728087933037 -0.001937595192363274 -0.007703953957809757 +2129 0.004263105571757841 0.00235410488337646 0.0034127471867617678 +2128 -0.003851317621434891 0.0033850175349557053 0.003562267569795562 +1940 -0.0016799427778715758 -0.0014752152630574766 0.0010855271739694658 +1941 0.005114785941695438 -0.0010409996112582954 -0.0011284275555703634 +2125 0.0030124322210657237 0.0007150851248329647 0.005215515888248596 +733 -0.006219765400662498 0.0007765353165593953 0.002557072424291514 +356 -0.0028527891644945496 0.0014181529914927438 -0.0002653065933471541 +551 -0.005460874206842858 -0.0007757882731215522 -0.0008104083623924753 +1944 -0.005973127683779687 0.0010148376425631247 0.002863237608151762 +1943 -0.0014627087513699264 0.002512857184868597 0.003257407749198872 +1942 -0.001665827541499236 0.0018179762645832021 -0.0002549330076184245 +1945 0.0010872579415234901 -0.003017517940292426 -0.002133427248760145 +547 -0.0004475462246164916 -0.005773255404901426 0.00030703122278973353 +548 -0.0012377696841254008 -0.009427722355005597 0.004338009441337854 +549 0.0019201436111360725 -0.005586870773579279 0.006097223473694474 +550 -0.0010391989852767147 0.002263759560886674 0.001832223125713162 +552 0.0037412261931996744 0.0030844211213012563 -0.0009939179900991496 +553 -0.0029610532543360357 -0.004019253641648409 0.007627208169470656 +557 0.005334726595413406 -0.005314241199098905 -0.0002674061903156136 +558 -0.007688123387711919 0.003036107488931483 0.0036237524970743574 +1939 0.0024211859082079227 0.004767267955140763 0.00424666447859016 +1946 -0.001918967210085722 -0.0010108800362441123 0.0019051775075350533 +3165 0.0006589396699268166 0.0005426055571301399 -0.003116624502570954 +1949 0.0030282195504154202 -0.004312572292208473 -0.001821952299214668 +2133 -0.0027706486327059828 0.0009708475032433155 -0.0017483842891473445 +1950 0.0007324164178540971 -0.0007767026958339838 -0.0042134581798238405 +1948 -0.0004495825458919393 -0.0039439599744366975 -0.0025631844455643754 +554 0.001938034209509147 0.00172139362773533 -0.0022046283018138106 +3076 0.001372036097233785 0.004600263315910831 -0.001389383943457692 +555 -0.003228901087384157 0.005051413496223522 -0.0003888768042471341 +556 0.004526621843598761 0.001881231533693766 -0.004215928149565098 +559 0.003194173583856176 0.00037904365717879426 0.003822382420222812 +560 0.0024470394602862326 -0.004532522182902236 -0.0033783061521016284 +561 0.0004862268595822745 0.0008552817075402892 0.0006262466055733914 +562 0.00396730560641708 -0.0016023991716564874 0.004028298939839656 +563 0.003299907828066397 -0.0014873055194656295 0.001447650267471603 +564 -0.0014373683649879516 -0.0018591148386241302 0.008985671984845348 +1947 0.003984372399412218 -0.002819687779626154 0.00040154590976032226 +3080 -0.001203762286390223 -0.004791083989105842 -6.639901119518332e-05 +3237 0.0014337445407836323 -0.001463770599384054 -0.002912989061549999 +129 -0.0015942298022410823 -0.0018101209350965333 -0.0038664192103605773 +886 0.00020826528288366868 0.000732128535213052 -0.002649636256831341 +752 0.0004733163296352567 -0.01030612750406165 -0.0035085123429871652 +2146 3.321505376146118e-05 -0.004916885549778069 0.0027847048459640968 +377 0.005046945437744217 -0.0027575564478361583 0.00019113292425749413 +378 0.0076474892961462945 -0.00477123065267456 0.004808463244890565 +3175 0.00028395744322854457 0.008780232561100013 0.00449170409787173 +565 -0.004329535476372759 -0.0049975598623179275 -0.001597212059914202 +566 -0.007866113988318319 -0.0030910982539031216 -0.006610942436607868 +567 -0.004561307257060223 0.0009012662343837621 -0.002961932810014773 +568 -0.0011201993684881138 0.0009737533764104707 -0.0008233608482268478 +569 -0.0003785739665374887 -0.0007381227963540642 -0.001439302934859119 +570 -0.002121809158397632 -0.003938053920189313 -0.006340376333447219 +3148 8.008431664840432e-05 -0.0057708723883964225 0.006732391418062048 +1961 -0.007333938120835421 0.0007400112041634329 -5.062688267164592e-05 +1966 -0.004893539685105532 -0.003685647450126201 0.004219692690602449 +1965 -0.0024314243900639856 -0.009206642706148894 -0.0002175967556254743 +3083 -0.0005632107399261846 -0.002092898322092204 0.0029595404969515082 +3177 0.005542070434726216 -0.0064231084815870605 -0.0005520585575549987 +571 -0.005887779022149858 0.00032976470086123946 -0.00022250868362797276 +572 0.0002889878629124139 -0.0117381908175392 8.77299915182052e-05 +532 -0.004087623563858985 0.0007330636168074341 0.0016115031816006083 +533 -0.002412425560675665 -0.0012700770111073378 0.0001483044148616775 +529 -0.004870158688571734 -0.0002978585556774299 -0.000576688391936459 +534 -0.002643374824133274 0.0019697480762193914 -0.0029272499187113685 +573 -0.003881567889862884 -0.007039025683768058 -0.006016825492952798 +574 -0.0036631918797314644 0.0042433558890839634 0.006440058658187044 +575 0.0008940283401114583 0.0019499325926571344 -0.004888016948780939 +576 -0.006669482895808665 -0.003351724813943233 -0.005825869112137053 +620 -0.00010641529376485468 0.005529521155100715 -0.00032622519241418184 +1964 -0.002281047463383366 0.0012795160316704734 -0.0050147539282889685 +3167 -0.0014373680203773405 -0.003365090457585227 0.0003492635903420996 +3178 -0.0005138826913673712 -0.0006569430018806024 -0.0012497705396958888 +1921 0.00226257864113387 -0.0006559509345448445 -0.00235180905064026 +879 -0.0030937267621223776 0.0022960942478765117 -0.0020303164966886914 +722 0.004020876685130152 0.004688498682893548 -0.002898602373703556 +579 -0.0022946305093530105 -0.0016037718169993427 0.003057716714212448 +630 0.004375546412739993 -0.002448772398210957 -0.011070688829205002 +3531 0.005237932246127842 -0.0043553880090041 -0.00886550808660098 +636 -0.0007019785074069002 -0.005889561971715689 0.00533982543272745 +635 -0.0033520812914675856 0.003168890795499838 -0.0039231315492034 +632 0.003311405654284226 -0.00218417319808544 0.011417049217874854 +631 0.006589497520399437 0.007696486407621179 -0.009981424345891412 +629 -0.005877279384370393 -0.0063281560591139365 -0.002864676689548441 +628 0.0008119146853459653 -0.002333176812963619 0.0007349560484780361 +580 -0.00214409067627418 0.0019859565407051275 0.005559936265990803 +3454 -0.0031913060777432143 0.0100365295126248 -0.0013152952848789275 +820 0.002744828486090002 -0.004251113434269328 0.002164752427110827 +821 -0.0021704423681992383 0.0015169744876445581 0.0002358476127805128 +625 0.0014882986875884908 -0.00016044399587712013 0.0009135292797805623 +581 0.005544638359046446 0.002761398553169804 0.0063054690486890694 +822 -0.0022398760792945904 0.00045850990828613143 -0.007507748003082477 +819 -0.004162025421434337 -0.001190011290583785 0.005294174669458707 +818 -0.0012372883217194436 -0.001475307628959368 0.0025797244334336464 +817 -0.004478661992041453 -0.0007725928155717883 -0.002213595191429313 +641 -0.0016989423999845075 -0.003986821624058905 -0.003084557452906184 +634 -0.008205489000864428 -0.0046583437830022365 0.009411084744010017 +633 -0.005630596827561488 0.004225169075218563 0.00037522370598324105 +642 0.002104018886371541 -0.00674093313402238 -0.0036160749661526357 +640 0.00030731178874825876 0.001382408116550535 0.0036276417930671953 +639 -0.0026593030216315824 0.003929741236073436 0.0025262804197326164 +638 -0.0005234715141970023 0.005126567531570231 0.00589111016505911 +637 -0.00031028333442824476 -0.0017390761363420284 -0.009807079189490324 +3172 -0.00345031863532009 -0.0028722139507691554 0.007602454582968818 +833 0.004457774665776559 -0.006602279159297221 0.0020756838990300297 +834 0.006818838326113079 -0.003498411242563501 0.003458310701173199 +3242 0.0006942774021164928 -0.005567933850423953 0.004761189819192271 +421 4.1354964620445265e-05 -0.005556592026730756 0.008459573657189877 +2320 -0.00090547303326619 0.004365668400391127 0.003732598882047516 +832 0.006106381949562407 -0.004967513330733945 0.00666077355719258 +600 -0.004667040981706111 -0.005839920802092903 -0.0005016824389851214 +3564 0.00039662334582771914 0.005245050759327359 0.0014107844879387421 +2141 0.005698379367994238 0.005362844963085817 -0.006098483989581682 +862 4.848081553618139e-05 -0.00786592432342766 -0.0005903850253537684 +3176 0.00516025538415961 0.0035237895860908666 0.0027357969530434623 +653 -6.541229853385611e-05 0.004359311956324873 0.005153985051256438 +646 -0.004380687940316987 0.005932722110629618 0.0010717874607043688 +645 -0.0036334436915396212 0.006077960906756827 -0.003289403042284149 +644 -0.006586810922253253 0.0002986954385970707 0.004401008057063596 +643 -0.003704230066025888 -0.0020706902641013827 0.001759074517809221 +835 -0.0039971099063305475 -0.0002920397552113919 0.003934132619598876 +3218 0.008948280309763983 0.0015613503700851975 -0.0019478938256462597 +3636 0.00297518885780554 -0.00027505734331355233 0.010708748381280426 +615 -0.0011497537349505497 0.0006688956116101576 0.004991492650573683 +3085 -0.0004508596541024779 -0.00043402382631724907 -0.007103065086343202 +696 0.00024713290650616853 0.0006420709480574592 0.000522162004758 +691 0.0013462446984304054 -0.0052775943167342534 -0.0006640850357862605 +3190 0.003233305237633945 0.0012795085573013647 0.006773125494834891 +846 -0.009216100806675644 -0.0009810131557830887 0.0010019755245177116 +578 -0.0006720916152605335 0.002220738856646083 -0.005700836208702882 +655 -0.0003059075481394571 0.00588726283020881 -0.007669968385079095 +656 0.0033390722002148666 0.004780426287258681 -0.0003120489929675113 +660 -0.0021381830265778585 -0.0014927749132562344 -0.005109832016617817 +804 0.004554513638890234 0.006663572190601757 0.004395241994700042 +654 0.0007454203595361527 0.00044405786953012686 0.004253609912796519 +649 0.0010268507669112116 -0.0023178427293036514 -0.00048819445742021613 +803 -0.0065496047355095436 -0.0036085268319101206 -0.0013804524840475142 +658 0.0036019211800777003 0.00032617004921645624 -0.002005905930581021 +657 0.003187870327832213 0.0012398766571791002 0.00017584862186774479 +652 -0.0007413073064078756 -0.0018786717048336124 0.007135268444849985 +650 -0.005735211564992098 -0.004046394533944853 0.006060066436422865 +3144 0.006474833236812301 0.0008639216075990009 -0.00219617109697029 +3157 0.005878659548580617 0.005635014573069178 0.00703190571463762 +3233 -0.0017843648047892904 -0.0004647193767557818 0.005205657319387296 +3249 0.0038587849248004286 0.004880673240990044 0.004545007406875091 +3260 0.002214430707920975 -0.0028402626789106496 -0.006619104206335118 +659 -0.0035703850433413922 -0.0034796684846057037 -0.0021062608385156944 +845 -0.004512513677864395 -0.0013322346962463753 -0.006175703902299134 +1581 0.00238578803355573 -0.0006408209696199838 -0.0011010323220390528 +1582 0.0021930075182062915 -0.002951869010853234 -0.0008447963620722134 +853 -0.004477383213966562 0.006143569589468841 0.0008186356664852151 +3123 0.00600428233509114 -0.002298997093488337 0.0053110724276727965 +3183 -0.0004221350174768984 -0.000458796057470973 -0.008743603649650813 +3212 -0.005090582780906284 0.001808598051294371 0.002153376813663494 +666 -0.00046899544226412603 -0.0027888086664617315 -0.001067400060080231 +665 -0.008227336980636797 -0.00676405381619436 -0.002272611388375072 +664 -0.0019869172955022598 0.0010406368544464794 0.0014902008913780654 +663 -0.0007696916672688999 -0.0015710316443005106 0.0029197837579597588 +662 -0.00027423413532009285 -0.0019635467756376414 -0.0012357402334174526 +661 0.0003208726979635686 -0.00023399445163888543 0.0024456408432994474 +616 -0.002381871018448187 0.0034707472296100356 -0.00033591534202251166 +85 -0.0013841664561349647 0.004785490893555733 -0.0010227038977226202 +858 -0.0017525673038486752 -0.0010315611022465175 -0.003494615086661294 +808 1.647688034598035e-05 0.0038688141158489823 0.006355147158666976 +3143 0.00552589577213381 -0.0027124063787690575 0.0025379664747790013 +3174 -0.0008924819535821001 0.0013836685665584343 0.0021932908090971127 +766 0.0025390831121148674 0.006613817600985631 -0.0006796505390418043 +627 0.0031797409412871987 0.0021713377705256244 0.006311190378742216 +626 0.0023894932706816038 0.006945773257396664 -0.000800834443300775 +3093 0.0015053182127015877 -0.0030534755417980703 -0.0013619984281209583 +670 -0.007684018850295139 0.0005464866407839274 0.0019680479665075052 +667 0.004336266316529172 -0.0027537759080572 0.0026609012661734815 +3086 0.006404812262473789 -0.004835629924774554 -0.005436094898771843 +672 -0.0009920349467224705 -0.002042812566952267 0.004875347477603159 +671 -0.00406218572180259 -0.0009235342014076975 0.0025148771738943265 +669 -2.995505149149469e-05 0.0007249334898185659 -0.0035546516163646185 +668 0.0005802252278856536 0.0025180799733766847 0.0022534151577615793 +624 0.0036214907353292994 -0.005799977724963607 0.003458758394229984 +623 -0.007637448011846348 0.0012006177843687756 -0.00033477031735799857 +3098 -0.0025694801492218587 -0.001489472538200418 -0.006328493593654709 +3255 0.0048357794839180785 0.004682358822378599 0.0018998688488123929 +619 -0.0028896959668142166 -0.0012702445277115915 0.0007818780897077429 +679 0.0007587873624220955 0.006494850353509171 -6.386482485000099e-05 +3187 0.0019427506272498782 0.003957933170018035 0.0005149859822735939 +920 0.0038563493465553367 0.0017972251337858465 0.0019505391970959143 +919 0.0042997206399828045 -0.0005148003327548196 0.001383461745830013 +1926 0.0036976211214750994 -0.0012113543833142059 0.00041791597089973364 +684 -0.0020077105795565935 0.007059968837399464 -0.0051055109919112196 +683 -0.0006292118497389226 0.005608856350600185 -0.005980004804006394 +682 0.0020378656804816743 -0.004332911105362859 -0.0005283076588757841 +681 0.002430684574988883 -0.0036243450911491223 0.00394221501231262 +678 0.0019344229337516687 -0.0009948072750607189 -0.006517815285027755 +677 -0.0004700614243319581 0.002678615376507039 0.0004838485839545389 +673 0.002168730549006072 -0.0034594228595392997 -0.006225694579337203 +871 0.00048002214838554905 -0.00626278570440959 -0.001026936954580656 +872 0.0016013712560315472 0.0024639942927323377 -0.002381229525144297 +674 0.0039461256805183335 0.0009127996197754159 -0.0075267046254296225 +727 -0.0014737027261252798 0.0014469547835449105 0.004914808410722564 +921 -0.0024433417747672585 -0.0038377361573925855 0.002765292724656354 +922 -0.0015406025864166757 -0.010017201718594104 0.00807177901100105 +868 -0.004776530496712308 0.006334807723014204 -0.0020739305900447595 +675 -0.005058253208259497 0.0031040573465168295 0.0008630114835779052 +873 -0.0006454762692247174 -0.0008488185212736845 -0.0010358868579243188 +428 -0.0029677068879119806 0.0034831616045440214 -0.0004670853129860808 +680 0.004105876812964706 -0.0024926982022371725 -0.0003332917782657128 +3258 0.0002888278730676365 -0.006243681942864454 0.0034918155185653193 +878 -0.00634931379857504 -0.00020717979825160478 0.00653931550665377 +3112 0.0055118327915377515 0.0038305715206589435 0.005527169987840613 +690 0.0005368432608256655 0.0014252258591251979 0.002693379702115491 +689 0.0009344745793526279 0.003070786512994057 0.0016527515534491503 +688 -0.0016448084361478787 0.00018452909672419518 -0.0004099914261404467 +687 -0.0011012129898700718 -0.0035716724044352628 -0.0005696060734601458 +686 -0.007776823212515952 -0.0037728670937690113 -0.000243013087563982 +685 -1.0618331881640206e-05 -0.0029472936583400905 0.0011381124470265618 +429 0.002252131355307607 0.00730615431478252 0.006251365695678472 +1962 -0.003006691307852444 -0.0009334800629607164 -0.00017037722739558805 +3234 0.00478436176577165 -0.007033440554079405 0.007568850772311113 +3357 0.0004813713054662668 -0.003212920492535873 -0.004086168797796892 +929 -0.010600512642099246 0.008428441419524901 -0.0030550934858199373 +930 -0.0015463026573419893 -0.0042952498566457675 0.0006451037715114904 +737 0.00361236355399735 0.0010457575010413905 -0.0012921424721088293 +736 -0.00025992564449382483 -0.0018349441054779916 0.0022707416767939977 +884 0.005071546274130525 -0.005139289571142786 0.0117071617494761 +885 0.0036097451159168934 -0.0025013390590168257 0.00031361875827291564 +744 0.0023884727699594686 -0.006247419417822505 0.0010124486645018312 +700 -0.007079413515260206 -0.010715476924679373 -0.012772460908464536 +699 0.006859106066830419 -0.011387468010764203 -0.004539796432259876 +698 -0.00040577005780628245 0.0034266460453293815 0.004491677884772769 +695 0.0034050620838909263 -0.0031335906168690124 -0.002519333609111669 +694 -0.0020290845748222254 -0.001331055245100553 0.0026649241806047134 +693 -0.0008549328224685078 -0.0030885249595000224 -0.002292894005971907 +692 0.0018982925234500075 0.0005682258300823936 0.0007117909395748632 +3194 -0.0003661417864625461 -0.0035167067952078944 8.671364976870772e-05 +697 -0.010277846973644752 2.0738958071491872e-05 -0.0017920053209959973 +743 -0.0032147708208219794 -0.008554992681415853 0.007332120690128665 +702 0.006035175456101921 -0.0023290661784128035 -0.0037065743043084697 +701 0.007962725283621592 -0.0025015947108849995 0.005590063735834766 +742 -0.005722334800978766 -0.005690847787494213 0.005353892050960501 +745 -0.005382979937286013 0.005911395290876443 -0.00034893321757300025 +883 -0.0029235436397736002 0.005438134862815833 -0.0012754005654704891 +898 -0.0028960407647400546 -0.0084066372131911 0.0011438701268707005 +750 -0.0017951068897984683 0.003283990548778044 -0.0006545838736269722 +3153 -0.0025224497189575276 0.0013811844127419176 0.00074991097092074 +899 -0.002976839784136216 0.0056043922201764315 0.0029844652688912625 +897 -0.006799479290776896 -0.0073726364301901215 0.00272992466537081 +651 0.0016003054352233537 -0.008005111726004962 0.005250126613514833 +3108 -0.007097721689231075 -0.0012362526187245824 -0.0028859024647180636 +708 0.0036128867817716618 -0.0006247835781972635 0.004526943578788225 +707 0.008778957149265673 -0.004445678808639219 0.009302174511468695 +706 0.001954097114525282 -0.0017357609911732572 0.005010601607257354 +705 -0.0051323485121546894 -0.005077167104915503 0.0032061836695060713 +704 -0.0015686596730000112 0.0009193403416915074 -0.0001336626517498589 +703 -0.004903476278611217 2.1607779557170313e-05 0.0017662376293967035 +895 -0.0005728262095339755 0.0009629433153476547 0.0009172540722021158 +896 0.005077980509995096 -0.004398378220734661 -0.005075419251580012 +900 0.004032780928898812 0.0027225845981652982 -0.00285704277158725 +3210 -0.0025232641804752284 0.004563250816076341 0.006172771118721611 +749 -0.00011458421146487752 -0.00011041213923044701 0.0002725833504619518 +945 -0.0016309499693672735 0.003041273278647417 -0.011899897800839792 +944 0.0008857246234904428 0.007066442713217396 -0.0016039927695556332 +748 -0.010401248773456127 0.004967681001051335 -0.01095403323054508 +3094 -0.0016723761747656552 -0.006090493748718211 0.00571537804898608 +3079 0.0030955411912465497 -0.004223303680451307 -0.004935657295404671 +709 0.0012682510359082225 -3.8120447485688255e-05 -0.0013558092481308704 +408 0.0026178131815163784 -0.0023399437576934585 -0.0016239205625533145 +714 -0.005704058785948385 0.004281450212573388 -0.008891640704047105 +713 -0.006253880029446248 -0.0009595575010873139 -0.005147852080167337 +712 -0.00114545916698488 -0.0026504991965629636 0.0012075893271754146 +711 0.001365874533619931 0.0045430717610220476 0.005422735689680404 +710 0.0008121133827169521 -2.8784445157028177e-05 -0.00251242875829675 +3073 0.003651397302574473 -0.003198141079384019 3.606704563808379e-05 +3208 0.001871112873666677 -0.006977741211339418 -0.0029730279456058007 +3074 -0.0054940213674587336 0.005934348251846199 0.0035945436186985815 +904 -0.005980133060367637 0.004128058719225201 0.005639620135287234 +26 -0.001182290978307888 0.00021433074848431087 0.009803188334216159 +720 0.004102330076556347 -0.001759102374760068 0.0031441678605388583 +719 0.00024552221275989957 0.00012820540095718916 -0.004540312001722162 +870 -0.0010009161640124286 -0.0037243719258106987 0.0029098022934776167 +3232 0.00019229255817375686 0.005170044438234584 -0.0018983309706778883 +676 0.0003002054747670388 -0.00512660328605611 -0.0019320952055046972 +3126 -0.006842618860660657 -0.0017703239374129447 -0.007321290805898836 +3226 -0.0015711731096374306 0.007496898512626457 0.004585645469865351 +3114 0.005921892081212568 0.0016609193675562895 0.0032340114465837892 +718 -9.289044032638987e-05 -0.0008349108141976519 -0.005423732405544851 +717 0.002489048854024445 0.0001266840792521469 -0.004758062199949072 +716 0.0017649214196338479 0.004306223299116644 0.0005153193888125057 +869 -0.003356536407884815 -0.0029275804844797557 0.006780375687358663 +3163 -0.00428235209345035 -0.006254362165624251 0.001109408495310607 +3347 0.0034863664223763633 -0.0002461042827696563 0.0006981475657799328 +1960 -0.006954622140237092 0.0003634349973618624 0.0003108376671652225 +45 -0.00028463449606177025 0.0014903070130297075 0.003569290839663456 +2306 0.0031941359527843075 0.005737198559506153 0.0007114956298978359 +2121 -0.003508840534552691 -0.0029577494399395305 -0.006371055377276624 +2307 0.0042442761140186495 0.002376707121245914 0.0004878958317082561 +924 -0.00015239593303786634 0.005812511122891328 0.0008606626905818106 +2316 -0.00031746925756134277 0.0020043405984637385 0.0029942778280234593 +916 0.00025576213567962474 -0.0036130181203091706 -0.00339050567654855 +732 0.0012538902387729898 -0.00033135588167321526 0.00722083249627519 +731 0.00021768671369802923 -0.000595474249999594 0.0008121800922145071 +730 0.0018932300267985108 0.0016746546632611637 0.0015071106686895888 +729 0.0003847719568395252 0.002438897015644224 0.0009542310183545036 +917 0.0002772600330426658 0.0044443912972020865 -0.0008501108070829287 +2119 -0.0008197996035099987 -0.0032428346715352575 -0.007614163098991004 +2120 0.004789942220431843 -0.006156349123021006 -0.007606145223234804 +3092 -0.007054187696295504 -0.005984596990819065 0.006328001286547613 +3228 0.002220048676033128 -0.00759904728922684 0.001814749646133289 +923 -0.0010832640363763854 -0.0006227146934619089 -0.0046338073869337994 +2115 -0.002758550631774085 0.003984971325506377 -0.0006063597970435221 +3477 -0.0015065755089371505 -0.007513727219338386 0.0008421646991390027 +3082 -0.004908723808788483 0.001558317337720706 0.0017863255247212108 +3102 0.010482602013645521 -0.001354287902139937 -0.0015707752439185247 +2319 0.002439902647409449 -0.003376322689868127 -0.0016368367763863188 +218 0.006098412324205964 0.0051676641845632525 -0.0038956070699920544 +735 -0.0015007784030304041 -0.0029910067664247436 0.001274199841506717 +734 -0.0036529627467697906 -0.0021140074185674847 0.0026852767829587815 +925 -0.0016825693099141719 0.007757061052188054 -0.001268454429946784 +926 -0.005327547105551697 0.007051963479761437 0.0028641875165838623 +927 0.0014204765301464744 -0.005977713688586062 0.003559766999518082 +3230 0.0007408261992078114 -0.000952459601784742 -0.0002413560752668999 +3259 0.0016898165531373205 0.005150241211134553 -0.0076644142562552605 +3207 0.007857289357799623 -0.01224269665778149 0.0036939726303281298 +2333 0.0016247638307094793 0.003913128268793877 -0.0010818562908637794 +942 -2.75547195989736e-05 -0.002884071500245441 0.001571484296093882 +854 0.0017725480998526254 -0.0014324911509771912 0.0001264085698609439 +2132 -0.0002961004370174594 -0.00587514103473653 0.004596842124333344 +3109 -0.005718858201328837 0.003966533047203555 0.005807139290038554 +125 0.006040217825751697 -0.004257231773490833 0.0007878516429459448 +622 0.0004061395843399401 0.001553607840367796 -0.004587496093143132 +2326 -0.001777526735377261 -0.0034598034318105556 -0.004064037173549166 +2334 -0.003978772528351466 0.0010423915534336487 -0.0066073910905710695 +739 0.0033470755550132065 3.293291374358793e-05 -0.001495359557175827 +2131 -0.002296934987549486 0.0034750211585159118 -0.002294206252996983 +2136 -0.006919458114569923 0.004293979486718874 0.0039040549225943075 +2327 0.004523079357298227 -0.0033654238094997604 -0.002105649505014293 +746 -0.0016130587943381078 0.004505902392740885 0.0029754269569415262 +741 0.003609306107722111 0.0006952811199641403 0.001757128843939193 +740 0.0031669358908326182 -0.0037778926945126 0.006562879579373334 +931 0.0009632501613079823 -0.001833243190669782 -0.0013458364479539985 +932 -0.0009216882644756588 -0.005240194288190035 0.0006115221676950836 +936 0.0013241507949904095 0.006789687678314655 -0.0015436026113760245 +2135 -0.001646761508969241 2.5739997427989884e-05 0.0036816114021901154 +2134 -0.003988436317112165 0.0070415789276915604 -0.000833650698144615 +2332 -0.0019394992084485279 -0.0016311779877612302 0.0015459061963164216 +3146 -0.003952823086621118 -0.0050952152681355105 -0.0014944395350084522 +933 -0.005632165988486896 -0.002966470267611605 -0.004102602589290921 +941 0.0006255430198690093 -0.0002811180522776758 0.001986229633017209 +2329 -0.002582185716220805 0.0072798748175816 -0.0018876489597582894 +2143 0.0032870883722634046 -0.005429498677288898 0.0012285750638592974 +2148 0.0025725643090494517 -0.0007209946097707601 0.006453448942308209 +3140 -0.0056898083179014215 0.007867600271773776 -0.004542154906392248 +829 0.0034598428452176986 0.008264559212228998 -0.0035440382704918696 +747 0.003186093581345016 0.003614137198778599 -0.002489055628817812 +2147 -0.0021624720034712293 0.0004043160619120819 0.0013807031078927235 +837 -0.00175661807466146 -0.00392536802536423 -0.00012718714137170122 +755 0.0014291632427603945 0.006055409985640483 -0.004613697282880731 +754 0.005466381301543143 -0.005044518927316579 -0.00565362753438424 +753 -0.003247781789719583 -0.0010351810738382582 -0.002683777695556452 +943 -0.008399896085205505 -0.004131719888595226 0.002737783755689869 +947 -0.0007335624543303903 0.011292685593160698 0.0016806356242911567 +948 0.0034365397046259667 -0.00012704193884014272 -0.0036238171120540528 +17 0.00527909888073571 -0.0021140328752828758 -0.0027835997457666263 +3223 -0.002037075972450644 0.0033873264679197485 0.005925065015169656 +3256 0.0018406437786413238 0.0030752699071494648 -0.003387965716712134 +3458 -0.004127585127637124 0.0001684271105336705 0.0030650317593778993 +751 -0.0012854878840109058 -0.0006435996043172678 -0.00015516589838873707 +3214 0.0073983365454672635 0.0038240133101939628 -0.00782748895381113 +3235 0.010066800129059607 -0.012914789353363114 0.0018372015385366364 +2346 -0.002455738463447704 -0.002512632285455672 0.007358131429565324 +756 0.004291086957320896 -0.0031188044172691535 -0.00782532331687126 +3262 0.007537149897133938 0.0031436354367494718 0.00653101043274684 +3124 -0.002564161917396049 -0.002054540505169436 -0.010725820440918807 +3078 -0.005608128945967336 -0.0016601281246068891 0.0020866853857202865 +762 0.0009012567271634508 -0.0023938009710768892 0.004180246542050736 +761 0.00330545349230287 -0.0034556908784992794 -0.002542834940469931 +760 0.0024174105866513773 -0.0009669144097252772 0.001553181178688662 +759 0.0042684957625052766 -0.004578380578361956 -0.004371405007247972 +758 0.0016577789500683898 0.002428318091664922 -0.0005249379200639027 +757 0.0010106385452665642 -0.00521097111238744 -0.004640636809387836 +2116 -0.0019532556009205647 0.018168401772518848 0.0013377885477533777 +2158 -0.0003662604822323619 0.004467156086508904 -0.0013133941269365347 +918 0.004540473467812482 0.00352662069241536 0.006331872395294394 +913 0.00031828858555505427 0.008131839557676053 0.0021923536593869506 +724 0.0055654576068241216 0.0019727586305563877 0.004414053450371441 +2159 -0.0016154577235628462 -0.0002590309574710184 -0.0013614578705129824 +2160 0.0013621174086772031 -0.0017916325924115122 0.0031791125952876065 +765 0.0008617080034792855 0.008842669526975716 -0.0005536042527534861 +2117 0.003149588703173691 0.004562114240950583 0.0026823285810564095 +27 -0.0058088238105665334 0.0031189307939292698 0.0016391934760882979 +914 0.0065596209560798875 0.007071440747359188 0.0013359491431376754 +768 -0.00035257267212574297 0.007917790652037815 -0.002086848283910619 +767 0.005697196471724337 -0.0011454738913128498 0.011314067143468488 +3245 0.0038605781637967933 0.0076674848813942705 0.005916326550745157 +3460 -0.00541500312886817 -0.0041390226281754145 0.006665997944521115 +726 -0.002047277405733137 -0.004105871559327287 0.002121152184594466 +725 -0.003100001284655931 -0.0033906222190316815 0.0011729942236051321 +2155 0.0028897537344675594 -0.0017417537763650718 0.00208863974719494 +1762 0.001146730031566457 0.0013033741973157288 0.0024719491990002726 +1749 0.002279191660694202 0.0015678020805686553 0.002291311551622406 +210 0.0008626739827281 0.0038975600057351272 0.003386698734817699 +2308 0.003009024343726937 0.005484212067303088 0.0013410141054309278 +2124 0.0027899500087151478 -0.006660483117615496 -0.0009316335104751586 +224 0.00465669021312608 0.0009880193426326472 0.0017431484277402518 +1938 -0.007671988900502672 -0.002329635350101753 -0.003159192262449673 +233 -0.0013519019475470428 0.004816400417937788 0.0004542426210661963 +3497 -0.0028024407695831613 0.001744635807353899 -0.005155330978371564 +1770 0.004078510865399355 -0.003367464573785495 0.005434652667629449 +386 -0.001460541509387091 0.001521394769483624 -0.0013581239892640463 +221 0.00691111659065165 0.006239970777530325 -0.009699228538818515 +3511 0.0007902072049583086 0.001498156428390823 -0.005643720388411517 +42 0.004947883542652983 -0.0036534185685827667 -0.00424263891573797 +3197 0.007882240534940759 -0.003486881908875361 -0.0011878586461250625 +32 -0.0012820084153605102 0.001541638391478632 0.0046436886333300394 +1925 0.005020140904659155 0.0002605732538921177 0.000512495909062923 +892 0.0072350924127099455 0.00605106830858339 -0.0017213931080228544 +828 0.000726304396120793 0.0037560676850478384 -0.004242765123372924 +863 -0.003220226858010595 -0.0056592957397144095 -0.009684653169211296 +905 -0.004646600356695492 -0.00010106439863263605 -0.002664246942502703 +946 -0.008610845104019492 -0.00304110987878612 -0.007157725968841116 +844 0.006234808749920289 -7.445987192837011e-05 -0.006250812663349651 +2311 0.0004192954505055396 0.0014077210742236296 -0.004266698565928305 +865 -0.0022444443307327857 0.00012403409128742507 -0.006390976256539505 +3302 -0.0017845799691957782 -0.002211668500600779 -0.008740695818660639 +825 0.0023946733329376644 0.003626964929507798 -0.0026437313155373756 +826 0.006404649367492879 -0.00171649724879723 0.006378354172812405 +962 0.0008947733477590886 0.0006699886149609727 -0.00396819526514057 +970 -0.001521534937666367 -0.00037573874324070284 -0.003303155442029472 +971 -0.0008447644474061905 -0.004595772494020357 -0.001264971330138071 +1012 -0.0012463349824105372 -0.0005177629520659162 -0.003588343473824299 +1017 0.0007988809630612754 0.0061929555715194 0.004381573430386252 +1019 -0.004459243453437956 -0.001652118300738777 0.001924570398287942 +3361 0.00876872860445062 -0.009319192946267717 0.0013418285385254358 +963 0.005438353229847409 -0.0015416697564448465 -0.003253996198675959 +1013 -0.002018825791542727 0.0029093550763996025 0.0018418897406684395 +3408 -0.012530955808479016 -0.00173805338358582 0.010003318193944611 +3328 -0.0008067041004904589 -0.010604847557678914 0.0019888758986571437 +1018 0.0003199852616310018 0.000538844855362906 0.005405875676871352 +1014 0.003384086784443333 0.00041792644752287753 -0.0014057393285147113 +964 0.0032166940496674424 0.00660081580458611 0.0038344582961705224 +824 -0.0036477493393304115 -0.0026504904408605995 3.8214292635492516e-05 +3341 0.0003389348927248233 -0.0059007702484973395 0.0018718681437148604 +809 -0.0018551057299762885 0.004838070331437793 0.0068818604565074664 +823 -0.001170640404903126 0.0020363687599002666 0.000490088004893543 +1016 0.0016042017687152295 0.001410359633700613 0.0036486258362727775 +827 0.003722034912057516 0.0019228041200629964 -0.004584142109694465 +973 0.004469305491535136 0.0008690047041303561 -0.000571869055710239 +977 0.0043953669838532475 0.0008229027396700005 -0.004617453192135074 +978 9.717465927920098e-05 -3.2687201761521865e-06 8.458159450968403e-05 +1021 -0.003529379638416979 0.008016778206828546 -0.0015897883638767627 +1022 -0.0018949826681996561 0.00047334913689118846 0.002693396296718142 +1023 0.0015364013826878098 0.002528429280824852 0.004032888459229294 +1024 -0.0021274149594560144 0.001197753316690378 -0.0017507597228306596 +1025 -0.003493517699812956 0.003854862693849674 -0.0049443287305748285 +1026 -0.0067506019569132285 0.0036220829171829208 -0.0032051344970101072 +3430 0.005537149070309018 -0.00961895520921351 2.9392219101149945e-05 +1579 0.0024928752110729216 0.00041677814492049604 -0.002234939250886825 +187 0.0027261880567214713 0.0005437122348044244 -0.005185879988109346 +3367 0.003632273030179838 -0.0065382367474942395 0.0065526643409921604 +976 0.0009431446232003966 -0.0016470103958429378 -0.002193745747828317 +990 0.0007275069085905067 -0.0016682432061192111 -0.0036561511763957897 +1027 0.0006097513384783678 -0.0014065896983810847 0.0016729530228762914 +1028 0.00040578892184080874 -0.005071171734631529 0.006497716694420037 +1029 0.008152856625614036 -0.0013761729909872093 0.003976751623923712 +1030 0.001581291192781958 -0.005382199016241876 0.005267603909666653 +1031 -0.0013850112088117199 -0.002904097955301169 -0.0027676120387229142 +1032 0.0007928872892050726 -0.0016813699215986711 -0.00077093651181966 +1037 0.003780004673616607 0.0008794669854177098 0.0027901090285189184 +1038 -0.003400200222112075 0.0035933936106881856 0.0054634631500153335 +986 0.0015009840244444568 -0.002413595824540618 -0.0006973118247622465 +1033 -0.004660847206199565 -0.002151030947347545 0.0005818646941611463 +989 0.0011361656619687092 -0.002408912543289242 -0.0033500382744432993 +985 0.0027550586421783508 -0.0058395634561897655 -0.0034677713394318296 +790 0.0022928244554228892 0.005351636506322427 0.004866256280858113 +3370 0.0002792739069936588 0.004070958832007874 -0.003348157353856754 +1375 -0.003149544803014233 0.002292560483282354 -0.009403776412858061 +186 0.0051785971354707475 0.0007760287122422231 -0.001968244238276768 +789 0.0015380309416412419 -0.0004902476260257074 -0.002252683784980429 +838 -0.00036725032541617866 0.0014927894131886435 0.00820918516571278 +31 -0.006903192730772426 0.006571294364755459 0.0024381053054756577 +788 0.002820236623343385 0.0024987337708040477 0.0008775630093065745 +2888 0.0030984544224108364 -0.0009494467946667671 9.387693470589186e-05 +987 0.0027896494630875114 0.0024198116562561844 0.006144585005097171 +849 -0.0016597986090000822 0.0046452983340011435 0.009434293412062601 +841 0.0033834250001957963 -0.0033378194004026972 -0.007616804040771899 +800 -0.0060852558210159275 0.002377504067012544 0.004526601967007592 +842 -0.0009677790434231218 -0.003282097866607389 -0.002894733025473851 +843 0.0010461047243734793 -0.005040134165983646 -0.002060458439149442 +988 -0.001174870870189317 -0.002159526149824824 -0.00034172371941135356 +1034 -0.002349774344271124 0.006239609026445944 0.011436343373713253 +1039 -0.0013964310588948847 0.0033046943377355305 -0.00015781705425560265 +1040 -0.0021542501280670187 0.007766409718007389 -0.0024920067000267824 +1041 -0.0014145148807730046 0.00016322973230664347 0.0004264473650901125 +1042 0.0005338933313414299 -0.0026249117923632997 0.00508601390663357 +1043 -0.002042590173360056 -0.001442876096538412 0.004753633408386282 +1044 -0.0037771723163394525 0.0016748804902017962 0.001290125852196455 +801 0.0010497086528085684 -0.008104770756819904 -0.0015820372928341646 +799 -0.002258795695033619 0.004390036747660418 0.007307088227546506 +1169 -0.0025298649603221032 -2.241101835386949e-06 -0.0005063314524213067 +848 -0.00758466658543713 0.0019099483228422144 0.0071660429609174785 +802 0.0023499850407206683 -0.010705306023626479 -0.0016488664130419382 +850 -0.0030382494860143787 -0.0009923494646644207 0.007096241741082637 +2889 0.0071781094263565605 -0.0036467875288985936 -0.0007309349141508145 +3836 0.005546477645422545 -6.21907586204849e-05 0.0019333307082866952 +1002 0.0021006397789369675 0.006348890557348377 -0.004745223347500048 +847 0.0008900231579780131 0.004555557608487648 0.0022342447559596883 +3286 -1.3335927589787267e-08 -0.006942259448539926 -8.321295025795922e-05 +1360 0.005580307170891034 0.0030750642556395796 0.0022252444592678828 +855 0.005966874217395702 -0.006976284360986654 0.008228651317670288 +999 0.0017709580515038595 0.0014594629538556808 0.001052629730425378 +1000 -0.0026670876817890665 0.0020384719565969263 -0.0022943220369075505 +1001 -0.001391731425274705 0.004506067216869541 -0.00559108374773819 +1045 0.00018219370528529567 0.0014771768795785404 -0.0020953622462172423 +1046 0.0036453585859791294 0.00040700280632535577 -0.002819272049995255 +1047 0.008175682204849514 0.0015636529185608702 0.0033420473896544206 +3384 -0.00152508474178002 -0.0019309115857277074 -0.009603150215687584 +3225 0.004577895311384567 -0.009267014578480642 0.00960772894984302 +810 -0.0038720895203322664 0.0006543494141699119 -0.0012619899789919457 +998 -0.0011336920120847652 -0.0020491292667281086 0.0015107938899661395 +997 0.00011344457723709893 0.001973689141677139 -0.0018373984427456128 +1048 -0.005512133681925918 -0.0051418755117965745 -0.0014610519248880376 +995 0.0015234140299304898 -0.002223116488805356 -0.001994158740086067 +935 -0.0011065529335012494 0.00021203237497595753 -0.003504285872494727 +996 -0.0009996759246949912 -0.0038230587655152023 -0.002081094585769531 +856 0.0010295723737570644 -0.0069164810077247995 -0.007212257964374117 +1533 0.006618715829248164 0.0002837115530474342 0.00012760746490385788 +3462 -0.005758407773050819 0.0025491765786185166 0.003379121561525041 +1535 -0.0061290939234938295 -0.0027215183780513958 -0.003321804630338311 +3397 0.005187183434233198 -3.786513778723394e-05 7.64734079494076e-05 +859 -0.0013558929257086387 0.002382501213032008 5.0658061135376155e-05 +860 -0.002163523198352459 -0.0010971211509649842 -0.0014493786374384931 +861 -0.0044182547709995836 0.0006129678972112635 0.009105323195615059 +864 -0.008812060561107796 0.004528837745439446 -0.001186098005354153 +1010 -0.0011221114157243057 0.0005969318521111744 0.001187744902192149 +1051 0.009188337934705935 0.00673769310592722 0.0068417416518101 +3321 0.0024573630941292137 0.00395854818068343 -0.0062837773339829 +3434 -0.009078280416298835 0.0018107808229071373 -0.00039941302378788973 +876 0.0012895971611235058 -0.001460308098584492 -0.0015009446068610874 +24 0.0019643624243257793 0.0014013033555583096 -0.007883870897624365 +3696 0.0007000987204681515 -0.00416543526385507 0.00030074593148040284 +3088 -0.002096354189272339 -0.0014368193809254522 0.00028457085434161546 +813 0.0009224495115231692 -0.007810323812792618 0.0013696550270441829 +3115 0.004149073842358032 -0.0025028017001632106 0.0075891150142085 +867 -0.010332451170956517 0.006501667979854528 -0.006149096217933109 +1345 0.003806009165759995 0.0012927138932813133 -0.0067084866248216975 +875 -0.0018775337577036603 0.002401005527751442 0.0011745268026170082 +1060 -0.0025368181066266213 -0.003502209191536059 0.0017943566715437856 +1061 -0.0012448119260556805 -0.0031208736837389 0.0025817855600886942 +1063 -0.0011859620979457802 -0.0005468260469365403 0.0019360027503736918 +1064 1.8734634210532548e-05 -0.0006199525137891618 -0.004418732975748914 +1065 -0.005619078954485507 0.006477890707626097 -0.006168021218127908 +1066 -0.009783604797790585 0.0024257162397250563 -0.001128375094197712 +1067 -0.004967167488468475 -0.0007410777942019365 0.0030219308981586394 +1068 -0.002994521548959397 -0.004234539145312003 0.005493618448587894 +1059 -0.0029900027986746545 -0.004780566134920591 0.003610390016607291 +3431 0.01046452348667277 0.0014037952812902107 -0.00015674663604099765 +1058 -0.00026982722560076094 -0.0011876650648223078 0.0030317715760407684 +3170 0.00045157755073757576 -0.003177475752848156 0.003784434108873852 +3450 0.006049911544424103 -0.002882336065774435 -0.0005647268283037831 +866 -0.006872752106690952 0.0017242184953378812 -0.0055563567118971395 +1062 -0.0009333357778340287 0.001205960037562938 0.0018679406487483211 +1057 -0.0049136835222846524 0.0015734600047895544 0.003921637171861163 +3403 -0.0014980124893081517 -0.0032063001059024878 -0.007431126285246649 +3414 0.008652576971719745 0.0011608501554083346 0.001615910203513227 +3348 -0.010947918716103443 0.0009822774290059444 -0.006793486735551889 +1069 0.00013994060069425846 -0.003923862240334438 0.00322634358444631 +1070 -0.0004861303716959047 -0.002479563721652478 -0.0015552387455675873 +1071 0.002034912643469854 -0.001812972908737251 -0.0003911411273213894 +1072 0.005819020686835558 0.0033415667086893236 0.002156387227610537 +1073 0.0019171439514217097 0.0011172678918384496 -0.0005236348941269007 +1074 -0.001054559698681314 0.004892213983172002 -0.0011631802669167849 +3402 0.006679654079203454 0.0052470581163403815 -0.002330639075889378 +3464 -0.0026300744661128138 -0.005133061264694174 0.005001461884891795 +1075 -0.0028856013747970474 0.0031091466642270867 -0.0008824464391068374 +3442 -0.003153971069414765 -0.0033546320774820487 -0.007329048484932011 +1079 0.01008660240228941 -0.0035966998012379 0.0024839220200385767 +1080 0.001511354778710794 0.0014834152712074648 0.0017083365982180046 +1185 0.0027864912105893896 0.006562551097462397 -0.006820864468775063 +881 0.0050076993532867774 0.004434928765270581 -0.0019536081021250657 +874 -0.002633860137021421 0.0024696683473416055 -0.0010346552766853003 +2881 0.002476325964503821 0.0036851676525072093 0.001226061044980549 +1036 -0.007644771411008363 8.976633326420469e-05 0.003071558597364971 +3224 0.00556283345131541 0.0006395240686994243 0.007047056191328602 +1076 -0.004284811168690129 0.0007965103442646421 -0.009625939263760446 +3351 0.004611524813911684 -0.00031111706731969986 0.009878126596658883 +3459 0.0029578021075535865 0.0023838026197417826 -0.0011686946685953942 +1077 0.0039512134057565025 -0.002578483002303779 -0.0037447109986895395 +1078 0.009438495813125334 -0.00857662115970969 0.000415759915010395 +1083 -0.0018798280571060517 0.0011680438182471336 -0.002650635174766603 +1084 0.00048516442194849535 0.00702709172151376 -0.0009066033903510682 +1085 -0.002734506893698139 0.0017606243768847306 0.004250095425234104 +893 0.004120823997981297 -0.0022543408810820563 -0.001548482013928587 +1081 -0.0006970349322633145 0.0022806631354345104 0.006949276724141716 +1082 -0.004197518721259466 0.0023870207518465526 -0.001313663529358628 +1086 -0.0029696623672954814 0.00017210535177145044 0.0019515941967857674 +3435 0.003835104462006647 -0.008746730886384158 -0.00467165896243699 +887 0.0006899268525117257 -0.0012114262546155375 0.0031256589556400193 +1195 -0.0013134211666386705 0.0008297339273936087 -0.0041184235243228 +1492 0.004413123450013243 0.002765786791814455 -0.0011032795583565502 +190 -0.0046599594365004 -0.005975483887095996 0.002399461912825228 +851 0.00020987128829432131 0.006079712048131204 0.0008549932760264816 +1035 -0.0034976713530771686 0.002464890612657207 0.007751196810724262 +889 -0.006479731718814895 -0.0006708739882103486 0.004776256959023641 +894 0.003046084230962384 6.780973844441683e-05 0.0036395879273757046 +1087 0.0032734224579516907 0.0025862505482901034 0.003862113269022127 +1088 0.004085539067053196 -0.0012647190981868992 0.0030649399651379596 +1089 0.0019935181775461255 0.0031021901420700358 0.0005735342405516772 +1090 -0.002061242219649593 0.0013050660593383501 -0.0004465740985681179 +1091 -0.000535034623702017 0.0064467210417432 -0.0021148894280178204 +1092 0.0006453323377469609 -0.003718943872385022 -0.003379610356834238 +3394 -0.0033934624660002907 0.005040449230362413 0.0006685926240812388 +3405 -0.003930591887208236 0.0031954353426678767 -0.009150874956039348 +852 -0.0003980996023340518 0.002439583284512219 0.0012755309975981978 +3273 0.010857704536695233 0.002959061868368585 -0.0028518383209840104 +901 -0.002352423584657027 -0.0020222736071364624 4.7876597181991995e-05 +1049 -0.003222377337143175 -0.0012290269681226914 0.0020317007252065346 +1050 -0.0038290642226346955 -0.00016625020177573938 0.003724041159095107 +903 -0.0022101523081893633 -0.004487293566825345 0.0037650353998818615 +1095 -0.0004953681925832114 -0.008531431779211842 -0.001385962611759206 +1096 -0.0055965992405704965 -0.003599558190917695 0.0007178237766230086 +1097 -0.002233172878075134 0.0033886166199017624 -0.0003015532482986836 +3364 0.0022006367891507774 -0.0004655216037804352 -0.006742373761260149 +3377 0.007584690708048994 -0.01000870136879295 0.008486022203707243 +909 0.0008847553388230741 0.0035489727998397457 -0.0003067533647019334 +902 -0.0005240475401038016 -0.006565576391003287 0.00486764434535211 +2899 0.001218149740045913 -0.001688168628966537 0.0026036849777933036 +906 -0.0049332972796940315 -0.0049170449655078115 -0.0026969434815401327 +1056 -0.0012133686887814714 -0.00019771189575395787 0.0042151917237679744 +908 0.00035942803598651977 -0.0006195743640677178 0.0005164045729187329 +910 -0.0016568921165840565 0.0005578088356932597 -0.00022475541521724843 +3257 -0.007576979007984703 -0.0020672367663349877 -0.002542497298681537 +911 0.000746556542574012 0.002702586302093468 -0.004665994788242618 +3278 -0.008055111076429193 0.0031799546982021133 -0.005148928463016086 +1388 0.0016039148383252479 0.0009096461296412765 -0.004335269746309791 +907 0.004593726866626141 -0.001766995438778488 -0.002845508035587043 +912 -0.008097367024735914 -0.0031800818301904116 -0.0017617121139074721 +1103 -0.0020030978653719804 -0.000592092875850192 -0.0020081964962333676 +1104 -0.0014110775797502356 0.006260327796413442 0.005005461693702087 +3272 -8.012774620288118e-05 0.0010051018530744479 0.0006411227813144231 +3320 0.00279731544229788 0.0022434057374111395 0.0031809104652673567 +1102 0.00028479025137753667 0.001768587089510168 -0.00016246699714889614 +1105 -0.0030419520844131367 0.001405835682996237 -0.0015713377902440765 +1110 0.0011425269252382801 -0.004084540728090939 0.004749404898032453 +1111 -0.005304692569449524 -0.000767879724781466 0.004837530353228691 +1112 0.01035654087970886 -0.004919550304254366 0.0017408331791530232 +1113 -0.005615808218235749 0.018391360928852088 -0.0010297851089140883 +1114 0.004455287911804078 -0.007955135290578138 -0.0015667768167857397 +1115 -0.003212219216890571 -0.0003881342881018079 0.003821464972729774 +1116 -0.004252774781095389 -0.003863407638471776 0.002335082947128946 +2309 -0.0011819077668647044 0.0016515469277425575 0.0005801984078631631 +3314 -0.006569955031515462 -0.0026272062828437384 0.002509490492982367 +3410 0.00913792303177288 -0.0013670085523888684 0.0022543510690881236 +2310 -0.004193816444838003 -0.0037552104213089124 -0.005067959415328115 +2506 -0.0005341283200839176 -0.002347135591135922 -0.0011267258794654812 +2507 -0.0042423941628210865 0.005393753323686064 0.002443596391444341 +2305 -0.009704867740446111 -0.0022433921329797894 0.001984104867475567 +1106 -0.0030970140175344747 -0.0006388219761666594 -0.0041018424753918 +2723 -0.0030024281884906833 -0.007155882323392124 0.006683669818044616 +2508 0.003703905046541883 -0.007938879776058873 -0.00010342596687289683 +3101 -0.0119467950607865 0.00088061835533831 -7.513109936030321e-05 +1117 0.0038366708318868605 -0.001294847129255922 -0.0015550560186689548 +1120 -0.002486424136543962 -0.00636733798941996 0.000808963363541398 +1121 -0.0010320542918811888 -0.0022002097608863737 0.0005132208273144623 +1122 0.005388053296007897 0.00035865480617159023 0.0021455163886846033 +3311 0.003090310479430872 -0.014857907701763073 -0.002522963534108729 +3323 0.005875190007330853 -0.004023839192816989 0.0008496684763929971 +3390 0.005311735275020218 0.003269961282831799 0.006648766452179877 +1126 0.0014043603228316873 -0.0010401106979587924 0.0014345949638390444 +1127 -0.0008534857359652667 -0.0021828512473077407 -0.00033088133810307027 +3284 -0.003122603674303179 -0.005978725561293986 0.0028308817582556574 +3312 0.0024704739487353337 0.001607834979316305 0.006042322521809452 +2513 -0.004086722602607848 -0.001673081574154325 -0.00073628095337274 +2514 -0.006758789413825713 -0.002213812693235879 -0.002282904304492037 +2512 0.004643260587977145 -0.0010385968084989162 -0.0008811601549866212 +2511 -0.0014735531637946092 0.002621925553578742 0.0020904542259300024 +975 0.006188568298562452 -0.007001725543605253 -0.0018779969228060595 +939 0.005461738309951118 0.006354821877840477 -0.003433230575164559 +3301 0.0011399201751827416 -0.007802173002448767 0.005090526655091518 +2522 0.005752942814902013 -0.0013473855873533764 -0.005201598787663091 +1584 0.001896329426657246 0.004149728351938079 -0.000895442606665885 +937 -0.005600010185359931 -0.004189855257884609 0.002567283127422447 +1123 0.006693681517670255 0.0005299401814545714 -0.0009661597923795165 +1124 0.007253928088665132 0.000999755067629669 0.003881246253307081 +1128 0.0013060140262860446 -0.0030810886119483653 0.0009467238382149216 +1132 -0.0003328876486097025 0.002152529198526811 0.002443391684053898 +1008 0.006692494868659117 0.0003104942767474902 0.004039008881013726 +3452 -0.009908654120815057 0.0016383489389776942 -0.0017611711276962693 +938 0.0013150500132275429 0.0029956713755382607 -0.003095354840381836 +1133 -0.0005361062758936633 -0.000798178900379506 0.00589106585995332 +1134 0.007315860605856696 -0.004818475968117745 0.006567354230153865 +1129 0.00865132347141926 -0.001955823952305132 0.002254117219955181 +928 0.0011053223145111014 0.0037077972634991744 0.0003073725684379077 +1131 -0.0027581377671215207 -0.002346264074447123 0.0008344207769067518 +1130 0.006329722812919059 -0.004986008533268954 -0.0018254237021467022 +3305 -0.003712721909075618 -0.0025020771161058603 0.0020977188902043826 +3330 0.00287785186994454 -0.01032662871662358 0.0013784530945663948 +1135 0.0005841323520416692 0.0037567048298494366 -0.0013491879253628837 +1136 -0.002513799747730197 0.002527781374674043 0.0037477811688629427 +1137 0.0016946696849007821 -0.002582559471576968 0.006275437007870209 +1138 0.003522731353962984 0.0033533253655967485 0.005445061837336879 +1139 0.0005311869144638971 0.0036519824111634013 0.003938464632913258 +1140 0.00042631481913457393 0.0053583661416412584 0.0009535240879207601 +3285 -0.0046096432502807 -0.008254477154905612 -0.00950882069695251 +3290 -0.003578618917959208 -0.0007071998317651033 0.007286777186990423 +3391 0.006483571422522863 -0.003979935214196774 0.004263915321210978 +3428 0.006501906263143629 0.0019394080412816904 -0.0017274183024248047 +940 0.009239696565954972 0.0034707236103513547 -0.003009822257675757 +2541 0.0007312268748265408 0.005004576700165301 0.00395138750655467 +3329 0.005833418353998361 0.0010561802186036574 -0.002551912594947429 +3419 -0.005646933716582623 0.008715439422801483 -0.002584806070283924 +954 0.001427286887063897 0.0015520462928809659 0.0010719023612705617 +953 0.0037439130505508046 -0.0021037374021792405 0.0031499453835681116 +3283 -0.003425414343559711 -0.0006807901141934235 -0.009550559472509866 +952 -0.001961500560877425 -0.001900060170442675 0.0026843067171152964 +3360 0.0044972550100071205 0.001466202521024456 0.007036580567284848 +949 0.0015905579185904865 0.004037315918498152 -0.001979675782546617 +950 0.004355572569658939 -0.000459696910367803 -0.000656416851460396 +951 0.0006846056340975751 0.0006657447725157825 0.003375474677367399 +1141 0.005796160187496307 0.0007600568718866946 0.0001561906867239716 +1142 0.003643882866276539 0.0008796591757942459 -0.0016413089916837071 +1143 0.0030420480545343973 0.0011685054052055475 -0.00012466669846212478 +1144 -0.0025907630393355555 0.003484050448105345 -0.00572575464658715 +1145 -0.003002402042352357 0.001207769316274594 -0.001808603451341347 +1146 -0.0020623416345295245 0.006753503273459066 0.0010695290674678283 +3 0.0007758847733244197 0.007053599213832967 -0.00450078846711922 +2542 -0.0025837907286862453 0.0006071284872365103 0.009133330747208934 +814 -0.0013191337656589864 -0.0018915412021278943 0.005708161576949617 +1149 0.0031473414417155688 -0.005315095011005132 0.001417122271031796 +1109 -0.0042666081593319 -0.004757695958709379 -0.0019860650034337064 +958 0.0031810079725689755 -0.002963165307446833 0.00835485949563757 +957 0.003247814473291041 -9.554795696943918e-06 -0.0031023110895773073 +959 -0.002492050430303405 -0.0022998361559381643 0.0017964301741655345 +955 0.001319685711456818 0.0045440870107986125 -0.005798946842389043 +956 0.003811759381141424 0.0027855936295910206 -0.004742916225877154 +960 -0.0008705746489560114 0.002634657214939329 0.004958719640112242 +1107 -0.001009100104310948 0.001010263308511967 -0.0002663024446544264 +1108 0.002253778521719247 -0.004393553518750686 -0.004029340820189235 +1150 -0.0007698288179835915 -0.0010018017288104676 0.007930602785158539 +1151 0.002161640720420645 0.0014646631804007555 0.010751081629404113 +1152 0.003858940007745141 -0.006183038891940455 -0.002509165842723883 +3270 0.0006060199604185116 0.004938724757612174 0.0028378069727809153 +3376 -0.004374763383348049 0.001217425268311534 -0.007970462068821814 +2540 -0.0016664635856615004 0.0038233591632015804 0.0021016676143089785 +877 -0.0011672752580445314 0.0006473119400522594 0.0032057773361977328 +2349 -0.0013613765209665955 0.006377935153065282 0.005867072747340217 +1147 0.00031005233252549445 0.011054487257083684 0.008455663725128895 +1148 -0.007051940744187117 -0.006405537349881808 0.006137883055409985 +2350 -0.004516199878610979 0.0001697663660925743 0.0004970340164614275 +1015 -0.00011001316506975396 0.00044815115832275685 0.0032172990135794183 +1020 -0.001200107923761263 -0.0011123972620465637 0.006313728260450943 +3404 0.0019760680261029016 -0.0030944514671048464 0.00014306414105473352 +3401 0.0010993146462274334 0.005150348667738754 -0.010309889038753628 +1204 0.0023619397878219136 0.0042761850283154984 -0.0016654031715149086 +1205 0.006783562885227785 0.0013876740518484558 0.0014329526160729382 +1207 0.0010143963068888352 0.001709819802035505 0.0006161099190132633 +1208 -0.0024323809383376823 0.0005509866916888117 0.0013676223037509885 +1209 -0.0016065684004472854 0.0006743543691508256 -6.102692400033569e-05 +1210 -0.0032468392788170754 -0.007205844267954479 0.0029674886026793785 +1211 0.0005608113816878877 -0.007636102549346115 0.0026831615386446518 +1212 -0.0010218089449218926 0.003991280606241591 0.004803461488019993 +3366 0.002391297115462228 0.0059309883325020735 0.0042539840275503706 +1202 0.0020658653631385267 -0.00030634072120295385 -0.0017274754672957785 +1203 -0.00048223381924245734 -0.0018124893500729693 0.0001461380101214359 +1206 0.0033451136642360726 0.004266864696309599 -0.0002708205127985221 +1201 -0.0016395761789569573 0.0014651909170235867 0.0003247542835447055 +41 -0.0027242811848207705 0.010081294916439784 -0.004555872247512907 +3316 -0.0014069205137817503 4.0936873995294014e-05 0.001333270242720729 +3266 0.00247837599516361 1.7602741088530612e-05 -0.0003626157013507357 +3416 0.012002980823496658 -0.0025527185049507724 -0.008874021095379532 +1213 -0.001664485503711691 -0.006096607172919993 -0.0034042991654502715 +1214 -0.0035743536090117015 -0.0035945355008319803 -0.00037710135544122487 +3332 0.0034383915448667124 0.0076505959287426215 -0.00516170371787225 +3349 0.0009134961328315227 -0.0025321535269876186 0.005453833205284878 +3467 -0.0007535107611432223 9.815173476451601e-05 0.005421845362886345 +3468 -0.0029600616453833045 -0.0013206237069222754 0.008612036480224992 +1173 0.007476850476865748 -0.00036046505357112526 -0.0012790936905651266 +1410 0.0018017001844873707 -0.003964126354045555 0.004373391734445868 +1405 -0.0027695093427935456 -0.00041727826592983895 0.005924652379096772 +1172 0.004088286874848508 -0.0019934240119951624 0.0008388231526968896 +1215 -0.0006180635137126321 0.0020333149062305863 -0.0047588694497022474 +3116 -0.0038691832027526393 0.0010437856068218174 -0.0034704051742764554 +1178 0.002493484594557816 -0.00017897032746420015 -0.0010603898591732826 +1176 -0.0025410898366821336 0.0017134635925770431 -0.0023035888102243217 +1171 0.00026994044572602215 -0.0038824872909582154 0.0026802202273906047 +1174 0.001556652426905472 -0.0012617555830563695 -0.006770372488049316 +1175 -0.0016999314833442412 -0.0004628799577812936 0.0012026793975612586 +1177 0.0014503917832784678 -0.004584641285747692 -0.0001270574141620099 +1219 0.0035438552900141584 -0.003050727215521412 0.000989272635570971 +1220 0.0012380454221533976 0.00019710842521207883 -0.0034046981890638924 +1221 0.000861934997660226 0.0018984395894003255 0.004687667992687666 +1222 -0.0012062662858794938 0.0038596334150382858 0.002730325397234067 +1223 -0.004948840765979815 0.00018482514284035798 0.005910718594452295 +1224 0.001215002431638144 -0.0007158342491829742 0.0013149641553712138 +3317 0.0019159451865530753 -0.00020412004915265953 0.002256154260218347 +3346 -0.004545764445758111 0.005919891652380851 -0.0017622659806147084 +3374 0.004347234894008019 -0.0005240075557473961 0.005964742954398556 +1182 -0.003549435501776323 -0.004919062852448991 -0.004079003904201807 +1411 -0.0014493056230985156 -0.000300920208762939 0.0037476514993687727 +1229 -0.001752831072830588 0.0006275563309357678 0.003744319485701622 +1230 0.004780311537911008 0.0019300033150727379 0.0013380089620842635 +1225 -0.0021775217980387154 0.005224695827840471 0.005700597256688057 +3293 0.00017496097039303136 -0.0009536123072997939 -0.0024423029303521433 +1187 -0.0039975652133128516 0.0010693931464399041 -0.001836868189254611 +59 0.005762609005640813 -0.009458469158229513 -0.0031799161222126173 +1228 -0.0025507603138733184 0.0005018721661405556 -0.006934836083471827 +1231 0.0035218649874734324 -0.004798149779592588 0.0012214986079725247 +1232 0.0035727650346575757 -0.0022304213325347847 0.0014975579876391123 +1233 0.003494081847315003 -0.002052306961153181 0.0026798130757787536 +1234 0.0004074930311977613 -0.000490243415559554 -0.000544347263687208 +1235 0.0008186418085585836 -0.0019643913164718516 -0.0009845104430754132 +1236 0.0019444015922076114 0.0026204152814947182 -0.0006364870298537295 +3334 0.0034670574983569668 0.0014791884961779815 0.0032329330807440936 +3372 0.0029302043043205835 9.953713768785304e-05 -0.0009449020910102143 +1181 -0.0010672410315013805 -0.004139253932016724 -0.00414914813987385 +1180 -0.0005101849463532889 -0.0008676984138769096 -0.0006086362474794195 +1179 -0.0005864397862816088 0.0054643394007421325 0.0024240561663869615 +1186 0.00011733439007849161 -0.0028881500476013217 -0.00350550478238062 +3373 0.0028118431217438256 0.0021921927781302698 -0.0006991669365014314 +3359 -0.0013711063866345293 0.002008030485463915 0.006613184674832662 +3313 -0.0029156138503295182 0.0032479311477391077 0.00148157952362592 +1237 0.0007831792189255998 -0.0001334614463025364 0.00417245796399142 +1238 -0.004670225599817303 0.0025308349692601344 0.0025379797877347387 +1239 0.003347202010192582 0.008785754094109132 -0.004258930676754022 +1240 0.003644963766918464 0.005364280817349308 -0.0023905506455344705 +1241 0.006061028895063991 0.00228316575919032 -0.0010956903595849394 +1242 -0.002900413547581103 -0.0030014429806831454 0.002840936393301746 +3277 -0.001944601160155847 0.00789693813696775 -0.006782946467171929 +3433 0.0036622628972350565 0.004635159019620438 -0.0022680011356078895 +3784 -0.00031221575760661743 0.007762732930130855 -0.004489839002818707 +1053 -0.0024149703679721586 0.0008027362232692064 0.005463078892064642 +1011 0.0013567278651593208 0.0017340325845690602 -0.0041410160460040035 +1009 -0.000678714940847367 -0.00426288664022607 -0.00048023610485292803 +1052 0.007752147852628635 0.001286110928133569 0.0003423339045708185 +1246 -0.002473300952488461 0.0016854690917701934 0.0003158956799390412 +1247 -0.0064873595399199775 0.001834207624915541 0.0036733211268618507 +836 -0.0005543222299397527 -0.003052958901358861 0.00500433492538961 +3310 -0.0010489295512421943 0.003927485417536896 0.0012488572062669472 +991 0.004630586448941931 0.0005646119241620463 -0.0038150000082794373 +1197 -0.0003026812397273071 -0.003509494205894209 -0.0036133162161206493 +1196 0.00127302801617405 0.00185384473645517 -0.0003455128527873223 +1243 -0.011717915316453562 -0.0036087144018342693 -0.004012295407394812 +1244 -0.002615767019288462 0.00019055815222699985 0.001032322815931979 +1245 -0.009839908655952996 0.0031722180659050584 0.005609161316750006 +1248 -0.001206066202980797 -0.004579123689453429 0.0017282423642713558 +3306 -0.005074753287266535 0.003752234713289155 -0.005686166536332484 +3324 -0.004887203975521429 0.0032375897225622925 0.005732017390483382 +3358 -0.005863695762578537 -0.001096556078429135 0.0006207423742485417 +3432 -0.006554838827230454 0.0021854725291940986 0.0015399788640074671 +3350 0.0016375031917151336 -0.002195540812562703 -0.005231226758809351 +3319 0.0009661754146053454 0.006856002584321863 0.0015966770979513874 +1252 0.001985056598492198 -0.003066505016072319 0.0011959787388988678 +1254 0.006864970984814869 -0.0006553450683857141 -0.005735378216719086 +1255 -0.003658146008681311 0.006614628817220903 -0.0015354030525572533 +1256 -0.0033691004444794063 0.0007444608494019206 0.0011861518717533855 +1257 -0.00542044669795887 0.004581260363415249 -0.0018635954922619352 +1258 -0.007067347611769936 0.004620710163857237 -0.005820251508357302 +1259 -0.0054421300195438595 0.007706222880673076 0.0002722878844331568 +1260 -0.0008669128406866603 0.005185989437422005 -0.005722718367010182 +3289 -0.0036055735279399296 -0.0065004588233181166 0.0016954449546145573 +3327 -0.0034589554416699065 0.0009804599238867715 0.007908027516552174 +1253 0.0003816474343087449 -0.0013061144659010718 0.0011840752226912519 +3337 -0.00625514819862732 -0.007312589211868268 0.009120204078969383 +1251 0.00646514831326196 0.0006299924186807305 -0.004774995213564857 +3344 0.004732066639652666 -0.007687805969609032 -0.004327208575410953 +1218 0.0001019100086142792 -0.0033732401332609153 -0.002084482003141531 +3418 -0.002818725478573662 -0.008272689078658512 0.0028847938078821506 +1217 0.003295945571461812 0.007534978686580661 -0.006715891732427666 +1216 -0.0023998377017329675 0.009705372615879365 -0.0021302744153325146 +1261 0.004887360593530437 0.005550931329877705 0.003459733703629805 +1262 -0.0016690903560167554 0.001323017442129053 0.0030743644848373703 +1263 0.0025158008462580587 -0.005797123530844518 0.006652657174496018 +1264 0.001909085478512057 -0.003561790246202579 0.009782736116507946 +1265 -0.0027835994839831737 -0.0012555444181227933 0.001903902967895033 +1266 0.004156371161924389 0.000839492294582476 0.0020812512358643442 +3307 -0.011787944871784521 -0.0018194308213029013 -0.000685715837357359 +3385 -0.007521127376783736 -0.00867934408631527 0.0012476070782971875 +3363 -0.0002860441780217501 0.00242768929226066 -0.009384146366438991 +1406 -0.006092078714720685 -0.003765786724146667 0.0029137345954095254 +3280 -0.0010692955543190625 0.00924490850585703 0.006384250216333552 +3339 0.00043798316286677326 -0.007487507230296484 -0.006988280744582527 +3296 -0.002056232681028471 -0.007838082789144342 -0.0015609473259966676 +3381 -0.006946527470539206 -0.002423762563113592 -7.016586056670952e-05 +3265 0.0027312493527951163 0.005284776462383357 0.0024639414575065087 +1267 -0.0012317906686426633 -0.004917316395252033 -0.006796475993634094 +1268 0.001400930375411977 -0.002666299209425123 0.0008267517773155405 +1269 0.0020905888907374894 -7.499809444965632e-05 0.008108779054601214 +1270 -0.0023904938584809994 0.0015995672221786425 -0.0020845598673097 +1271 -0.000276521080247622 0.001670935804255171 -0.0017610152645856781 +1272 0.0017416118328370562 -0.002841586018116115 -0.0006914556141233091 +1273 -0.0007491956484171737 -0.004807975730162189 -0.0015894956075763113 +3298 -0.004205697242748804 0.00129471411184132 0.0010959052996968198 +3409 -0.0018993960008845687 0.0038931270252555183 0.0019962931666688737 +1320 0.0021142293898308655 0.0006069316746766666 0.0022398164761509125 +1461 0.0007380660570293047 -0.0033662041077784435 0.003536860631019093 +1460 -0.003820633097790876 -0.0030040687555995724 -0.0016600076913252113 +3386 -5.623130373650132e-05 -4.348634557689496e-05 -0.002150799881219735 +1227 -0.0038044753895852684 0.0016834428410685861 -0.0021998907191162864 +1277 0.0007709701778383336 -0.0014043614788612898 0.0018622778989838703 +1278 0.002505781927966562 -0.000556378396708583 0.0031846409177816535 +1226 -0.005718916875836755 0.005210057583134095 0.0014447566743968313 +1276 0.0018368287639244207 -0.007196009235814238 0.0026312052927283942 +3444 -0.007328294331560347 -0.0020716257919116423 -0.0009549567708863085 +1274 0.0023643973885872646 -0.0031452184107974225 -0.005121887609021623 +1275 0.00461999640515516 -0.006207342579247106 -0.002903944396664425 +1279 0.005332291609719574 0.009439485265904138 0.002552558690694629 +1280 0.004042535867684793 0.0031094874561787213 0.002312391909461917 +1281 -0.0030852725518504313 -0.005540782238464261 -0.0004551034810880701 +1282 0.0028004207329169668 0.003421341434331583 0.005951835206806688 +1284 -0.0014531874290252273 0.0004398196057863873 -0.0003784453096949309 +3335 0.0053676211849720944 -0.0049761813214642845 -0.006891244189276678 +3457 -0.010200823462851984 -0.0071108625875858315 0.005183820666412225 +3448 -0.0025321802251345835 0.003453549238559375 -0.007152915479125348 +1283 0.0019152482593167736 0.00213602303133003 0.005574973527642619 +3299 -0.0021943110612041633 -0.0037468395761828936 -0.00450874120457632 +3441 0.002010974156432594 -0.0005777280049068225 0.0066925865210927605 +3362 0.007904006050428172 0.004623304824415763 -0.006124570684458838 +1094 -0.004680941928007418 -0.011832849950938074 0.0036378109283284406 +1098 -0.0019069954071687185 0.003068691187347261 -0.006257072190317197 +1093 -0.0018981318931037816 -0.000745579562958201 -0.001925705619108911 +1285 0.002299110938531473 -0.0010156209690349023 0.003313551547896655 +1286 -0.002624913497534193 0.001992761789404291 9.511012173632296e-05 +1287 -0.002305857336189333 -0.006018064262168383 -0.004735074533073232 +1288 0.0006247822830663989 -0.0036889775019431008 -0.004287824523985239 +1289 0.005161775887897427 -0.0029972620851082933 0.00023053455428108887 +1290 0.0030127024969745487 0.0021277773677498392 -0.003986435817220463 +3449 -0.00741533276678323 -0.0048511938825781 -0.011684243016551488 +3304 0.00665997422050886 0.006400248307684183 0.0040542564314469155 +3421 -0.004218270205556348 0.00407813751382938 -0.0004699509523284868 +1294 -0.0003312631731811187 0.00857366909277819 0.0003225092158135709 +1293 0.00232488348365447 0.0034088505307321585 0.003057957995391973 +3445 -0.001362763484362988 0.011262116457411514 -0.007170596120570123 +1054 -0.00867896026672487 0.0005481900507388043 0.005004576620588125 +1055 -0.0016269903073314429 -0.0004981441587449949 0.003595045904245544 +1099 -0.005450636521780767 0.0032050408137859797 0.0033959531114577538 +3440 0.0030225343122427515 -0.0035777068915622784 -0.004608162976300205 +3331 0.0032481732644755053 0.0005397540989906794 -0.005254901759523998 +1100 -0.0007358567943963476 0.0020347899578283223 -0.005301274305933693 +1101 0.005469162203182377 0.002087526381835831 -0.00443703509721799 +1250 0.0034185343010484457 -0.007462790658195499 -0.0031688465238044598 +1249 0.0032756685243815827 -0.011106845755637891 0.003936960613336261 +1291 0.0044325703956957455 -0.0030647158957917767 0.0008066660828525047 +1292 0.003303557150530691 -0.0022533880073129595 0.003117996573424983 +1295 9.090820115181996e-05 -0.002598008825179498 0.0009901671993831573 +1296 0.0018448988521004373 -0.010416890411387322 -0.004965357467156179 +3423 -0.001738575111675504 0.006256751649995113 0.00021008187051433776 +3443 -0.002272356329635942 -0.00021702587292808624 -0.001800793049311562 +1298 -0.006339278289916226 0.007943460773992562 -0.0007304172668063508 +3268 -0.0069288434325658 -0.006344256273682231 0.008624995619238658 +1303 -0.0024981605784459944 -0.001577297192624861 -0.0018748510656983034 +1304 -0.00025888942662421344 0.0008871644957863795 0.0028487990028687672 +1305 -0.00048132326268465574 0.002693069432082169 -0.008513749103572884 +1306 -0.001203068105259975 0.00064554875510537 -0.0024408268364318896 +1307 -0.00013905588500392688 0.0017974689291358932 -0.007569994586343579 +1308 -0.004223533569758086 -0.0033147789708374014 0.0023230329438297848 +3437 -0.012407250837504545 -0.006411123673591983 0.000680432511436592 +3711 -0.001984273253623895 0.0007341976140713258 -0.004741828471748633 +1498 0.0005922059152262107 0.0014064205348074327 0.0023935783908739378 +1497 0.008523391204212676 -0.002571612196316646 0.004403744677201881 +1118 -0.0021142016601622634 -0.0035318779156182406 -0.00478790791465725 +1125 0.0007092419539931966 0.001602710167612669 -0.0043712005107884614 +2703 0.0019833437839269466 -0.0014981015726599845 0.0021310509004250607 +3447 -0.0019282022040841647 -0.003032870292995669 -0.002642936632683479 +1119 -0.002684751009136286 -0.0020088141558294082 0.00025545556923735525 +1309 0.0033786907185612497 -0.0026059470864403713 -0.0014181727506730705 +1310 -0.0019683959079312813 0.0007794447676102189 0.004913539006336565 +1311 0.002404928618612643 -0.0010761453905303675 0.0015137283212308618 +1312 -0.00187248030935694 7.928400311521672e-05 0.0023619584991513213 +1313 -0.0031385185108994047 -0.0042711599085860814 0.0012345772554751464 +1314 -0.004564386446114077 -0.0007917001596904622 -7.770298657437911e-05 +2704 0.004420724300413291 -0.001031338019101321 0.0017256173472102057 +3282 -0.006915194281390727 -0.0032706456381173493 -0.0021741283531071026 +3342 -0.0035069556490429253 -0.0056011461896127495 0.005252661106456436 +831 0.0033894509888128433 0.0028244303599474214 0.0027002394447432593 +1505 0.0033362714259946662 -0.0016580508936064435 0.0028258719756177695 +2705 0.002435173945972046 -0.0028321093485166047 0.002293898558134928 +2897 -0.003445843699780853 -0.0018352473942880598 0.0015079256725758414 +3291 -0.004702271501930381 0.0005308886845843383 -0.005371188181806503 +1506 0.006958457252522979 0.002165148822324451 0.0014586270442147405 +1504 -0.0015301494456865764 0.0005601915226987499 -0.0032328628162094325 +2896 -0.0018144132719398178 0.0001485893515786146 -0.005205288647709245 +2711 -0.0027702997034997527 -0.003029647947176256 0.0024890413838949896 +3723 -0.009754927206160434 -0.007708842722620962 0.003558114154299279 +2707 0.00016117346254294814 0.00404414617191575 -0.0018681126367809727 +2709 -0.0023046596273943528 -0.0007059473510353489 0.002314701183254804 +3352 -0.00180689084297271 -0.00077337267646314 -0.007543708174755108 +1315 -0.002021040199815294 -0.00311100120899066 -5.35669535821892e-05 +1316 0.0001494259000094206 0.0022251156815665833 0.0004235952976084254 +1317 -0.0034797127662065997 0.0007916385022316286 0.005230878423567849 +1318 0.0026851130088632992 -0.002055419627025563 0.005238069928043854 +1319 -0.0002244246811061038 0.0010063147733280293 0.005163597870287601 +1321 0.0037466807209507584 -9.607438956423506e-06 -0.0012275869229590815 +2708 -0.0006819446221211723 -0.0017299292706552702 -0.0033550290606237532 +1326 -0.000991926655983129 -0.00146706348658094 -0.000165403629613653 +102 0.0027949857390908877 -0.0004510791103815204 0.0008309185530412466 +1324 -0.002680710959401258 -0.0021859903255021483 0.0005526740342010137 +1325 -0.0051516510130447885 -0.004975130000940093 0.0012910431218588032 +2710 0.0006047598011992317 0.0018909510754037708 0.004907655258808669 +1511 -0.0033242567123209768 0.000701661030450776 -0.0013497344992328888 +1510 -0.007850085937747915 0.006696293094029479 0.005749458405183413 +830 -0.0018889792250455857 0.003185472769026689 0.002463464048450114 +3395 0.0024473647728696047 0.0076945460054219554 -0.0017433980427584551 +1322 0.00013154670110601964 -0.005856456370567573 -0.001170556637824347 +1323 0.0017515418253546565 -0.0033353194480919925 0.0005709496749670286 +3294 -0.002922446497560313 -0.001784163314538561 -4.1431585189223966e-05 +58 0.002757341068578958 -0.00925423328978718 0.002998586665337844 +2717 -0.0014259288876867253 -0.000178398725072329 -0.0021682960982172973 +1327 0.005100888973108183 -0.001954978242588022 0.00941986827568772 +1328 0.003346453762231346 -0.003365740549723289 0.003674695844759698 +1329 0.003466114001972512 -0.00599982897742191 0.00683263856003856 +1330 -1.3037282619589282e-05 0.004315650154606262 0.009599871295099139 +1331 -0.00043400641703284827 0.005551514394408989 -0.0006272782170664749 +1332 0.0019024746090295364 0.0033225002499095023 0.007320855622192503 +2716 -0.0037257465381625656 -0.0007182995404487107 0.002142343650413791 +3340 0.003680987465505997 0.001778895271350248 -0.0009290958551092766 +3415 0.0012512545282534222 -0.00011657818685513809 -0.003936345488419281 +2715 -0.0008229808496269468 -0.0019233756660561475 0.0010537235169378908 +3398 -0.00871343653668232 0.0019770804706886248 -0.004392923812185674 +1523 -5.2833941722792765e-05 0.002545289369328112 0.00019636995259063168 +3267 -0.0016137027188660713 -0.004199960749093185 0.005584308434279396 +1333 0.0019032875307556485 0.005609232931611452 -0.00034828309883433255 +1338 0.00029108574619361494 0.0013115107040174967 -8.66505524173115e-05 +2922 -0.003162705004978077 -0.002044491468248066 -0.004702899310970911 +3322 0.005483718827922126 -0.008648743793228664 -0.003247880378740222 +1334 0.003183325661384277 0.006205782301577006 0.0012728231815831697 +1335 0.002327775384815378 0.005025137451584611 0.0012363699562255132 +1336 0.002613830472699328 0.003239797971731894 0.004834479627121535 +1337 -0.00010647602348692299 0.0008240455910157293 0.0028243324359235327 +3279 0.0009729795162177647 0.0009756490977224298 -0.001432375256132805 +2726 0.0010745702262580012 0.0037040708862547842 -0.0025025689184666167 +2727 0.0021679373957325812 0.0074426408808746436 -0.0008813032475386138 +3297 0.0013640514846903692 -0.0044239051938750485 0.013610965123147531 +3336 -0.000782845714456124 0.001462699162846882 -0.002433610670931025 +3396 -0.00300148448540785 0.005469234549032462 -0.002063803078239868 +1339 -0.0013389178700892713 -0.0020460078834111444 -0.0073860306407484595 +1340 -0.001601953421896185 0.005133450343572041 -0.0038801136198167376 +2728 -0.0029104933820428666 0.001962130989473926 0.0030368669103268057 +2918 -0.0034862936438530517 0.0011693247916021864 -0.0028612923597398834 +2917 -0.00012829042769643342 -0.003665882862692977 -0.0031120104594204727 +2882 0.0035441674236539964 0.003577148932261737 -0.0019894900571882507 +1536 0.005174959956403364 -0.0008991418107265847 0.0025132327482393696 +3281 0.011011839365592338 0.004684430067846088 0.004505599503972011 +1299 0.0009936134073606111 0.0029100398785437006 0.002879709160426132 +1300 0.00291383935273412 -0.004069839478651134 0.00496146805078116 +1531 0.0045548453677992035 -0.0029768071805115395 -0.003274932715073145 +1297 -0.001489918353670156 -0.0023392138138722198 -0.004798870892508729 +1302 -0.004034458573018325 0.002496211252559922 -0.003090696181220041 +3275 -0.002398539805259587 0.007612751158889325 -0.00414169829852487 +1301 -0.0021260132825973 -0.002276046906244221 -0.0001236210176292362 +1341 0.0017746903376130317 0.00558432938393413 -0.002689164568185397 +1342 -0.006746635439898927 0.003986727335446772 -0.0026594281827263537 +1343 0.0010164718158563 0.0023572019604647635 -0.0024394520918607915 +1344 -0.006176405294882523 -0.0006312636580133933 -0.004245609211279989 +3276 -0.012239460244625685 -0.0018220581258058834 -0.0032259908166946557 +3388 0.00606936749005069 0.0025397624205839983 0.005721794562580079 +3453 -0.0009460534456127138 -0.0018894344353803177 0.008771303039616412 +4 -0.002598864841910979 0.0037596621808501924 -0.0019958340991738746 +1354 -0.002967809997821154 -0.0030666453434663923 0.004403111206096997 +189 0.0014936049222162258 -0.0015099385516935803 -0.0028591873569667643 +53 -0.004031242276467481 0.0021632065630507514 0.00686038331072904 +52 -0.0035533798855400317 -0.004090239502810074 0.001975395360484875 +1 0.001346406851507843 0.0011498661053485329 0.0031698617954584087 +57 0.0015392229591826123 0.0012048683860336421 0.004096894704320784 +6 0.00684219295214459 -0.00027476995074774985 0.002760744265389285 +1404 -0.005910641062866629 -0.004913603663046667 -0.0022516108690493193 +1399 0.0012209613581422825 -0.00048629618206088774 -0.0027554175244228303 +1398 7.651682322843338e-05 -0.0015681267624078872 -0.00470205795196114 +1397 -0.00041025917991991404 0.00170600068185779 -0.00510149452192312 +1396 0.002147996605540105 -0.003127639898697558 -0.0005655764201438452 +1356 0.003724579323219731 -0.0010434705433479176 0.004059945397551731 +1355 0.005047527181641542 0.007095179454432288 -0.0009607121282576296 +3417 0.0014595169217112558 -0.006046100509715408 -0.00230448941137439 +5 0.004656771592902171 0.0018825205449023539 0.0013106621567736346 +1395 -0.0021158455450796575 -0.0017804714196136056 -0.004007136986815097 +1393 0.0021872316815726104 -0.000882550759788732 0.01034880874889444 +1540 0.004101652345781122 -4.061575724307214e-05 0.0014400261512983379 +2 -0.0035159394715020146 0.00559061938750695 -0.001064764049583375 +1532 0.00034627142432337894 -0.0010174842815910423 0.001936582952156587 +1403 0.007735867548907506 -0.007538132084128679 0.006766012193302013 +1394 0.0016113585462158946 -0.005576237149730879 -0.002194612826704973 +191 -0.001232097055959521 -0.005697848401306443 0.006011718123318329 +1401 -0.00017237836685147535 0.0020724675475801493 -0.004440796536382047 +1400 0.0033353442244077273 0.002823184357021208 -0.005845070065617081 +1402 0.006675141811183257 -0.002247689870818864 0.0045791048511326995 +3393 -0.007991270458398796 0.00090654912485387 -0.006020206484142931 +1409 0.002953236635529661 -0.00020154526179943027 -0.002539679793931165 +1408 0.0024181096622158792 0.00039988282636575637 -0.0037156996863569546 +1362 -0.00385490794639348 0.0001911286360179946 0.000744291932187663 +103 0.0019222472138582013 0.0026623539638638773 -0.0006106422273039836 +141 0.0010960723642380386 -0.0013497257729635059 -0.00556135494649911 +3295 -0.0008306971871987807 0.011906888747454374 0.0022803032856728994 +3371 -0.008570468143392362 0.0017865241788868034 -0.0008713372778017109 +3425 -0.003703837262019047 0.0022116686032887006 0.00895667750357993 +1361 0.004748425004579287 -0.0026696179360711503 0.003251692768454809 +192 0.0013327095475045775 -0.0045376225702870865 -0.0012869045823592112 +72 -0.0024283153994086922 0.0007947732991100758 -0.00278726019955642 +1363 0.012080805469804588 -0.0019953750488041883 -0.010652773174145166 +70 -0.003659228531573335 0.003409188727566683 0.0002967991733879718 +68 0.0013938770306628947 -0.0010080625459756723 -0.002437088566079939 +1368 -0.0022202671043133667 -0.002522168015038232 8.130072701314531e-05 +2712 3.104282177440695e-05 0.0015953767519187956 -0.00024928165612399353 +1366 0.0038594259225707022 -0.0029204601912277053 0.0036734714536057846 +1419 -0.0021711639236580245 9.063084145196266e-05 -0.005049464912407383 +1418 0.010318822503592196 -0.002902313620897086 0.0037215360175057617 +1416 0.003326239879936518 0.002611832544056274 -0.00602800098090552 +1414 0.0026753365902439136 -0.004866866567003546 -0.00030177029876729593 +1413 0.0002599349897463938 -0.0034021127923072147 -0.0012446775037875518 +1412 -0.0014793683787895215 -0.003303294044116219 0.0021658013491030587 +1367 0.005542841989933516 0.0020536361037023702 0.0019207172101572464 +71 0.001778623895740455 -0.0008712287997445519 0.0008602137411553168 +3392 -0.00901437983225244 0.000996889612571247 -0.002554740216027381 +3422 -0.0030739796747798736 -0.006251398053997796 0.007326464407817435 +3429 -0.0026815368831444556 -0.001210665007758972 0.012601127664359344 +3870 0.011796831015982574 -0.00392232132062457 -0.005209203903380576 +67 0.003622779127054742 -0.000884487562269042 -0.004580601749726664 +69 -0.0038291934249730327 0.002235352092430435 0.0029214655803921196 +1372 -0.003895998911969415 -0.0013322749977583016 0.002059405801175379 +35 0.0034772615418919104 0.008257936349547619 0.0007146649741358459 +115 0.0003024940787625563 -0.0054720837906903925 -0.0005822704179292116 +3413 0.004503769920516524 0.005432952003046054 0.001769995423726522 +1373 0.003918264309458913 0.00024233897363698414 0.0013379127672306186 +1428 0.0027500682043454967 0.001615587313796689 0.004221161581142229 +1427 0.00036611746483972385 -0.004739141693118577 1.3797930117384319e-05 +1426 0.0010844429231291358 1.6304529527949557e-05 -0.002538229111400429 +1425 0.006959844450173345 -0.0076645282984439955 -0.0023019448787709937 +1424 -0.0038998573110127412 -0.009193769879153636 -0.0035814553765597273 +1422 -0.007620940425957827 0.002820975700943153 -0.00597872778954322 +1417 0.0018110339439505144 -0.0003789285282102819 0.001872578949358195 +1380 0.003912138517703248 0.0027224851821013416 -5.269430762431772e-05 +36 -0.00020764659373388592 0.003526351018427924 -0.00058300430497494 +3264 -0.0006403905851196572 -0.004699104551664067 0.008304447304968463 +3274 -0.008555845227019819 -0.0004264894773383453 -0.006460322081251585 +3164 0.006055112092513282 -0.005460955790123508 0.0008647139077472604 +966 0.00041059373630312644 0.001282847794986219 -0.0047415468871660135 +1423 -0.001698347585250787 0.0007129708989261319 -0.005422880690951081 +3688 0.004133431543134346 0.007744098122720105 0.002307356327780475 +796 0.005518056358011031 0.008604604541468898 0.006480168944091425 +3338 0.0023646903034701522 0.002813036252624771 -0.000982834141383133 +88 -0.0011147494506819936 0.0009602283647716574 0.0023021173896869873 +1379 -0.001544876882769342 -0.006493595597949868 -0.003642820998224647 +3309 -0.005865118671260332 0.0005205903561658566 -0.004885655104394103 +3303 -0.000987317494914433 0.004468438713060107 0.0005423146462226155 +1434 -0.003021541958635925 -0.004810199754101035 0.001869321906490349 +1433 -0.0020185606113293252 -0.004797368546100125 -0.00496265232242916 +1430 0.0007884463544918993 -0.002686885884309063 0.0027402005011219286 +1429 -0.00016262655775788951 0.003643947088204707 0.003055646172361083 +89 0.0010322715192374776 0.005729232127216979 0.0010889189929263968 +3356 -0.0007085709207602415 -0.002953451341150634 -0.007756762216169518 +3380 0.0032592534838501858 0.001613923903189577 0.004540185554124429 +3426 0.003617675212923969 0.013448896081371509 0.0037482784215736717 +3420 0.00039111879437508717 0.00851402873453331 -0.003025195216767208 +90 0.0022097866536045386 0.004173396008613213 -0.00015372395059090623 +1378 -0.001352422582260325 0.0028584621594316736 0.007229831146792096 +1432 -0.0006942987407612096 -0.008658146752274174 0.001023130164558724 +1431 0.0034782097197318678 0.00032997227397878925 -0.0029756062842112205 +43 0.005000484831676715 -0.0021753498897815918 0.004671175019997807 +3269 -0.0019608125357963154 -0.00018002047226727696 -0.001740661410929863 +133 -0.003920002645618674 -0.0018398146201670398 0.006042970601266937 +1389 -0.0019111741470806637 0.0004680133331201945 -0.0025295641247198245 +134 -0.0012726178768794362 0.0015121857034198264 -6.862203380999802e-05 +1440 -0.006295488091312102 -0.00376156084620824 -0.006175772241536445 +1439 -0.004092535670426888 0.0026156972039459614 0.0016448174528476925 +3345 -0.0027309063425157267 -0.0021820914651906886 -0.008272561638026983 +1436 -0.0032923037825877705 0.001706901162611709 -0.00020830467228043982 +1435 0.001184521343631773 0.0011805503513127155 0.008125176412201323 +1392 -0.00419155563347327 -0.00030313698110908733 0.0013911708957917112 +1391 -0.0022068436296267245 -0.0044164845078985835 -0.0012952102436797695 +1390 -0.001248191751582058 -0.002025052448593382 0.0017151027184371791 +3343 -5.235905751754633e-05 -0.007332837055838224 0.0009669444451523028 +3389 -0.002828562687515151 0.008731742096925621 -0.0047542255221378745 +882 0.004521691299907135 3.225367038191891e-05 0.004490441435897536 +890 0.0014873977082232822 -2.3203052759519204e-05 -0.002682539346675288 +107 0.002483457279338004 0.004836137717189233 -0.00020909771402560857 +99 -0.0012186875946824992 -0.0005053703938304082 0.0011202398168241598 +1448 0.001237408979002924 0.007478589937215885 -0.00431016968217566 +1447 0.0005146626068458308 0.0022346563899607427 0.0005654224612362531 +1446 0.0017542343957621573 -0.004999222680824008 0.007221711353574222 +1445 -0.007110801427252705 -0.01051423307725314 -0.003741020427730709 +1444 -0.0005603432112102913 -0.006977691215880979 -0.008772907284875705 +100 -0.0037951923934738153 -0.00025496864033320264 -0.003246534800400876 +106 -0.0003319298766303892 0.006653765697527478 0.002885600096982386 +3365 0.0004948144200851836 0.0031051109491979823 0.006489366696141748 +3368 0.0010406153720731047 -0.004294182941539084 -0.0018301826296375943 +1443 0.0024228544158843195 0.00435544907901393 0.0048766619134862094 +1441 0.0037181360275983285 -0.0021769531631514326 0.00026029456455658816 +3424 -0.006597869085619178 0.0013284000623053002 0.001105560591698429 +108 0.003940882547719578 0.005870099802207415 0.000229038403647908 +1452 0.0031507020988990786 0.003046144104862546 -0.0018136869469551934 +101 -0.004238741451592976 0.004479338604713631 -0.000986275078370193 +1442 -0.006823594118965624 -0.00014996602711962582 0.0032329479417390816 +782 0.0030702544664102075 -0.003338879858822016 -0.0005333553682835677 +110 -0.0019330272651024878 -0.0009236687952842021 0.002490965087363461 +111 -0.0013024469599543776 0.0011146234486746713 -0.0021187266561144254 +1407 -0.00019688443864381916 -0.0015896527388119745 0.0006791685340496579 +1450 0.001286721547452932 1.6086087620621216e-05 -0.004374044985656243 +1449 0.002539723216755479 0.0035347636759250262 -0.00043672639805095685 +1451 0.005772862616469708 -0.0004201669031229696 -0.0013937075638733223 +1458 0.0009761751021552326 -0.00027397396500840733 0.0036235107366082747 +1457 -0.005915388061723375 -0.004329230923011305 0.007586196761286453 +1456 -0.003479862068414528 -0.009663084623921585 0.002475902991078713 +1455 -0.0011726673415884425 -0.0033903766440447746 0.0027491963366769747 +1454 0.005489682587618993 0.005113051483396545 -0.004377903486527477 +1453 0.001775535675083847 0.0004670017697743264 0.0018711737618846347 +113 0.0009771243748238918 0.007243968288580045 -0.0030364153092293537 +3407 -0.0059145032531220856 0.0030116429668657968 0.0001624086771863793 +3463 0.0020784042456718018 0.004823611931392604 0.0012279723088499514 +112 0.0034554188098841203 0.0034738073092879713 0.0005727124908211723 +1463 0.006386015068338549 -0.0008979744230057571 -0.0008504996742102052 +3427 -0.006092653308599459 -0.004492112981011469 -0.004331453008088945 +1415 0.0024561162996112776 -0.0024345496606800504 0.0037368523342086865 +3333 -0.008359544891227491 -0.0026428786438308584 -0.0031513431133656823 +78 0.005581279851935745 0.00284313542405666 0.0005589718265754975 +118 -0.005674798258747987 0.01016278083348317 0.0030276479533844674 +1464 0.00232429935788532 0.010932483185009646 -0.000717324049406679 +1462 0.005450803958387674 0.004253005945367754 -0.0003166362245689825 +1459 0.00029295671519071473 0.001476015207022851 0.0037994734951371932 +116 0.0003650654639231782 -0.0016982249437725255 -0.004345421035905157 +3271 0.003728213545843106 0.0023771573281664168 0.0028227376066422135 +3378 0.00720097590275517 0.002107491060598167 -0.009063243865814955 +3438 0.005662054491879867 0.003042023203532673 0.004767449011436468 +117 -0.001350270671470134 -9.698246457480239e-05 0.0030234492764765497 +857 -0.007641436043049799 -0.0051377249884698205 0.009519372918511602 +1420 0.009247752014211654 -0.005194868814239308 0.0006638332957821157 +1421 0.000138354880188818 0.004224071150084098 0.003924862100808463 +1470 -0.0008951827447740108 0.0018041072005418187 -5.265410047590365e-05 +1469 0.004269729642727718 -0.0006812472097199924 -0.0002947272867142068 +1468 0.0037297873593227964 0.002599364848349854 -0.0006174683834863203 +1476 -0.00035626731508386905 0.0017843714562634518 -0.005237310920304713 +1475 -0.001665143386081866 0.007375262695230459 -0.0007344335447133444 +1474 -0.0076982676667032065 0.009878113132222654 -0.006289315883175716 +1473 -5.97469747890403e-05 0.007158622876962655 -0.004518035585590847 +1472 -0.001574350631589009 0.005458617641061756 -0.002313470684474466 +1471 -0.0013560146350016483 0.003977317803834834 0.0011233379261733388 +1467 0.0005378098346436397 0.002397209673819915 -0.005611070463496766 +1466 -0.001617676218858545 0.0037446549620448973 0.0010999852228132064 +1465 -0.0040714339842342255 0.0003577136664265305 -0.002588903330587959 +3465 0.0026956309144434316 -0.0022642306856408665 -0.003663444933737803 +135 -0.0024215200938990326 0.002488570388007418 0.0003069912751921532 +136 -0.004803574359676719 -0.002206196011413447 -0.003184798293889898 +1482 -0.003267957089400107 -0.0032244413814975746 0.010371547793499539 +1481 -0.004156537387961869 -0.004562775713556437 0.004485609884136167 +1480 -0.002662280001559271 0.0007496734039403115 -0.0028228092166021723 +1479 -0.0018122143179711658 0.0025489293128246235 0.003509095640362385 +1478 -0.004901030740672571 0.0022574020451207933 0.0035506847845967783 +1477 -0.015909781837385527 0.0008391541065696796 0.002876805724341159 +137 0.002821762452230822 -0.012118263115062736 0.00432395198720666 +3369 -0.004299487077248543 0.0007495132597275297 -0.0033272700345919437 +3400 0.0027180755508233244 0.0016195269914646053 -0.004644942955912703 +3227 -0.001583318004124817 -0.001988674458293662 -0.008776883569364562 +3383 0.005225194933986208 -0.004446173912453841 -0.009717937733309033 +144 0.004053554461856922 0.0038305265937079846 -0.006401772309144337 +1438 -0.0016194020757214363 -0.00529722891119135 -0.010092167194465665 +1437 0.0007188736695928754 -0.002375055998379474 0.00021919939007336757 +1483 0.0027868412275976373 -0.001442133162376091 -0.0005335363819525234 +1484 0.00928794066327935 -0.003367186039880265 -0.004024606580437006 +3451 0.0024065841438770086 -0.0022821016739655265 -0.0027016027484898183 +3292 -0.007906576942747087 0.0020935738716765656 0.004028820438987837 +1488 0.00601015327208891 -0.004581980246713144 0.000843958325199436 +1487 0.0035720707506073845 0.0010278100786592092 0.00036958907820034445 +1486 0.003596738598454457 0.0051656446077642665 -0.005858231104315179 +1485 -0.003242117159599681 0.004944887248954824 -0.004334974625943166 +142 -0.0028558115258776147 0.00011117351857576691 -0.0013537975455846579 +143 0.00436511285757243 0.003398091343698364 -0.0004578673698045454 +3325 0.003657503761172604 -0.008583156864407809 -0.006411743761188668 +3399 -0.0004005904846922554 -0.002335304166053279 0.00780062638778354 +3318 -0.0013672730019402327 -0.0017831961081330543 0.0016793391908353982 +1489 0.002773817295485525 4.239592179815051e-05 0.0051146812430716716 +155 -0.006548190825137589 0.004881913546035648 -0.006118861881903709 +1544 -0.003977979934071197 0.0043564618794886805 0.0003477996640185655 +891 -0.0033763165974908635 -0.0033996216074534003 -0.002966673689325203 +1496 -0.0009895142896045707 0.002599833532230457 0.006618812268903634 +3412 0.003394266514059818 0.008599351594969993 -0.003397742511660164 +1495 0.001969779173792358 -0.003716943201000404 -0.004642361178197843 +1494 0.0008658347782097157 0.0009491546938966051 -0.00043628161620914004 +1493 0.007286516600183367 -0.003439757250098062 0.01053294071569767 +150 -0.0006806541234140669 0.002426740289440261 -0.003228934420060782 +1500 -0.0025762113936135546 0.0022962265789398823 0.002821719936706527 +1499 -0.004093005345283287 0.0006479620461436309 0.0025882557458353377 +156 0.003570523299728144 0.009347110381531293 0.002691055350771597 +3287 0.0007569135301696532 -0.0008291603801071554 0.00514605481975616 +3436 -0.0012889466831068161 -0.0003860412126722517 -0.0009861011536606648 +3455 -0.004861340530692328 0.001858802187021279 -0.0002999299986895778 +1545 -0.002939138823080708 0.002625626646088405 0.0010631631149142953 +1554 0.0004776190071658854 0.00047766292249974376 -0.0002965355822550846 +1552 -0.0030777938678775464 0.003681779645078039 0.003002474440868329 +1553 -0.005307318580627976 -0.0031172207981737866 0.0006940101965401893 +161 0.005848395276540892 -7.3251332061343e-05 -0.0007975059683765548 +160 0.0047782342511587025 8.617136868459629e-05 0.0020521415135442934 +159 0.0014970644058261537 0.003698313565837851 0.0004172469628267815 +1551 -0.005409158147198355 -0.0024201987683608725 -0.003242293378092621 +1549 -0.0011539552617281688 0.00448436979624882 0.0002937005058126087 +1501 0.0006900396074992985 -0.003293839393517077 0.0017437969229237955 +3456 -0.0009353904527484991 0.0028433945181094164 -0.0053466954524298204 +1503 0.0011028782008966108 0.003068022330002539 0.004053294747655607 +1502 -0.007597782811743609 -0.0007338166463531274 0.002952663354539984 +157 0.0021562712065246303 0.0035773753989780405 -0.0018335018332301294 +158 0.003986128070026529 0.011943794359825587 0.0063339511740698835 +162 0.0021506989558959123 0.0026036168128173815 -0.0026195740136953885 +3288 -0.0004386799314240437 -0.0070619350638830266 8.718186333516073e-05 +3315 0.0014297902640555617 -0.0011315255096905762 0.004367014985466488 +3354 -0.0035986054513253312 0.008935166976299964 0.0007756354269803429 +1550 -0.00018009460879556352 -0.006652298502680025 0.001178415905585395 +1557 0.0007756366253602702 2.3035133023770854e-05 -0.002085158654831771 +3446 -0.0018240003531355994 -0.003344453626296958 0.0032879961802847416 +2902 -0.0044389131289155025 -0.003581688635720338 -0.0017113925773233826 +934 -0.01200045683664227 -0.007892471034336993 -0.007008222666022353 +2905 -0.0019617753835982155 0.0019593502776854557 0.004849425684245756 +119 -0.005784259963038186 0.0008637841754186331 0.0014411754465364162 +120 -0.0011748409079273914 -0.003720847800428696 -0.008165126374580844 +2904 -0.0040496999585635735 0.0026303709125929053 0.0022175511126458643 +1514 -0.0032968804730935403 0.003946367108014117 -0.0007151205562581901 +1513 -0.00761535125698791 0.008271414709759353 0.00026745449029722 +1512 -0.008437679964763273 -4.275541661303189e-05 0.0032558126793848403 +1509 0.00039941020890386946 -0.0019295132725145304 0.0038196209044777983 +1508 0.0009345886945439443 -0.0014309428731366406 0.004286874984051509 +1507 -0.005513719762195089 -0.0004407608840521154 0.0006298675844094911 +965 0.003946131798458302 0.0018322364791293544 -0.00312222079386393 +2903 -0.0002353516822905935 0.0008091789863438477 -0.003125924020392277 +3382 0.006724395168044909 0.00785141718649785 -0.0022930119671605792 +3439 0.0056964281865176805 0.0017826366622129622 0.0014580213557107225 +1515 -0.0021881490514405596 0.0038894426843756767 -0.0019333269746188441 +2509 -0.004054515904267787 0.00131439691333163 -0.0019054177674145544 +2906 -0.004922685378126153 0.0005169637433585064 0.004388944646952394 +1534 -0.0085546124532328 -0.008367665160572305 0.003964924620281632 +1491 0.008223249479230862 0.0031796774586611955 0.0027826356886868583 +3117 0.0028209196949506624 -0.0036567948244190375 0.002756876209331053 +2910 -0.0024992804190330114 0.001248271331296789 0.001631047748679617 +2909 -0.0019540952956132998 -0.006522653341749706 0.00029965868927185065 +2908 -0.0022499007731734523 -0.002061734097466804 0.000577572443824714 +1518 -0.003423186764616376 -0.00011531388239868735 0.003441326277075 +1516 0.003930246749940136 -0.004713659775559512 -0.0018358620717785754 +2914 -0.0007795191078814898 0.00032555975223411105 0.0027684145047398314 +2912 -0.001016499071417815 0.0032835283500391543 -0.0021121880609044808 +1524 -0.0034398805242836917 -0.004249029023076419 0.0024182624620083986 +1522 0.005189373270982066 -0.0003747274871955483 0.00689301799455177 +1521 -0.006065933503209629 0.0025926078771486855 -0.0023328173210363386 +1520 -0.0045149875832427 -0.0047641508721845485 -0.005190610951142725 +1519 -0.0061988659029280895 0.0008127262478310433 -0.007029812217881185 +1517 -0.0028539178072138805 -0.00023024976815996166 0.003940352367943186 +2913 -0.004765095329737687 0.005380695881312917 -0.0010358622558615449 +2907 -0.003213656873034449 0.005905030838693822 0.00768919239065052 +3300 0.00601097977254285 -0.00314476457185218 0.001430229830280847 +177 1.1877534074746105e-05 -0.009970280490965712 0.003892978004698666 +787 -0.0012672439502740788 0.005264619510763189 0.0018668867650713556 +3411 -0.004230013882629358 0.0008733401933024491 -0.003345542775183154 +180 0.0007258154547614054 -0.009761706170129903 -0.003429891673322451 +178 -0.0025856124622145407 -0.006520054529200546 -0.0013021686350208007 +2919 -0.002141633765579422 0.0009209811016782368 -0.0009798309279983259 +3353 -0.0061636658563689805 -0.0037598565545235454 -0.004772729293561272 +185 -0.004713618021789044 -0.0016753369785462403 0.0018133783389691117 +1525 0.0045285052487934446 -0.002007045799776768 0.0036413672855156146 +179 0.010257095019666767 -0.010811731984800944 -0.0022717369462580232 +3461 -0.0007477352281198624 -0.0006528821542510885 0.009283112474742675 +1530 0.00030157822178523687 -0.004807537703679882 -0.0023881874485241475 +1529 0.0008895522722989178 -0.0013379176394834778 -0.009402374266906975 +1528 -0.003419655592975697 0.0037465770280226567 -0.0032462028161571515 +1527 0.0004427785917342244 0.006206565072397225 0.0034074177622267416 +1526 0.0011022390669025127 0.0006843762723743019 0.008618959413241603 +1580 0.008646359402368825 -0.00043975071297779717 -0.0022273942379844847 +1541 0.002434201044462414 0.00395648504618078 -0.003659023186986556 +188 0.005790421122563234 -0.0036609810043110066 -0.0032209593333722727 +1490 0.009339051451554082 0.002554810727301064 -0.0007438040790860884 +2517 0.002715875776807588 0.00013923303681362452 0.0020711916387510273 +2521 0.0058474910936874925 -0.0013086525409559526 0.000309537775842535 +51 -0.00036417342776822587 -0.0020334428643340886 0.0017630950809811657 +149 0.002697803732465022 -0.002523080374543723 -0.003726584738181382 +840 0.0010508532694752935 7.075447302892536e-05 0.00020466281904970646 +3326 0.007086824620505965 0.0008177169854859806 -0.010146469693663566 +154 -0.004113190740464393 0.009093570823592552 -0.004062314381589898 +175 0.010325436993018286 -0.0031095718032631593 -0.002009512615936958 +181 0.0052359510372217526 -0.0014412811458571165 -0.004979586217599132 +128 0.0006552559730804886 -0.0046645518249179285 -0.006968471174390161 +145 0.003387518580118076 -0.0007300703534311688 -0.00434339344353509 +839 0.0006741874881963808 0.007946975066683291 0.006142945807618293 +915 0.0053456367766704545 0.006123524285026326 0.0014851079288231296 +1590 -0.0017595427046648582 0.0019083507618427823 0.0038084889142094317 +1589 -0.0009195178772789936 0.002983171851385127 0.0013954697202874157 +618 0.0009345277826655248 -0.003254145575986672 -0.0009177295556016252 +1780 0.004443659474601046 0.002414806426369128 -0.0007472803125826828 +1788 -0.0025983781015084264 0.006185804201909345 -0.00859901597831677 +3556 -0.0015095886334128264 -0.002775177295206797 -0.005095916115935738 +3557 0.004938553089505537 -0.008097170800394718 0.0011818214912543946 +1588 -0.0020326324813914336 -0.0022574386376441164 0.0039587793003486174 +1787 0.001429448191253128 -0.0023282514623313147 0.0008994487345009713 +1779 0.004400543011177854 0.0009682443071948832 -0.003742055128710919 +1777 0.0007965111983885796 0.00361222963906624 0.0008620976476523985 +1778 0.006489415880433468 0.005587638402121045 -0.005662703897969305 +1593 0.0010522924122256892 -0.0015912810793412729 -0.004550202642732115 +1736 -0.003173799390841142 -0.003974824791538227 -0.003192170742298402 +1730 -0.00036057325450173733 -0.008687976031200523 -0.008454770281836284 +1585 -0.0019029003239802893 0.0010574836783958379 -0.005149656000112743 +1717 -0.007264866042420449 -0.001942351268838847 -0.0028040349771598022 +1738 -0.002834164961104163 0.004340095168735027 -0.004536649608213656 +1737 -0.003863610610307374 0.0011911679703249165 -0.006003727316715376 +1548 0.002705547818180477 0.0007964657442267442 -0.0024845026969772983 +3595 -0.009952805555003767 -0.004469879870943681 -0.0018095979367478779 +1783 0.0012163523790430255 -0.0023891913278235814 0.0036730682417209387 +3624 0.0033385896501916122 0.003911882193257938 -0.00581940145723225 +1784 0.0023054179829717996 0.0008109712742309002 -0.006029030218896136 +1785 0.00838354022211606 2.2304162543849547e-05 -0.007895925900619499 +1786 0.0011452356641881549 -0.00016560307447656473 -0.0030758970415392497 +3659 0.008424313961525397 0.003096869921282964 -0.001354518195060749 +1597 0.005266215637851517 0.006009719499440843 -0.0019286895710236103 +1598 0.0025925531681136793 -0.0028750704250343406 -0.0013516156863859036 +1789 -0.0011288172492480086 -0.0020284295443579146 0.003583881490522522 +1790 -0.00723854419977129 0.0017853669180997631 0.000496031210135543 +1791 4.9063686689924034e-05 0.004469548585006137 0.003881937934985278 +1792 0.002963393454282772 -0.000612872260881487 -0.0038175849699819053 +1793 0.0037046412964417998 -0.0036210003542899555 -0.0019884613437687994 +1794 0.0029544541441340927 -0.0003333240017150093 -0.003435110215651501 +401 -0.0035519295810051256 -0.0050195343244898985 -0.0002774475552265113 +1714 0.005109607961661397 0.00501323357431901 -0.0064153028249854215 +3674 -0.0012167944826831114 0.006489102095504717 0.003090322706210555 +3561 0.0002467851921346827 -0.0010993318752982582 0.00531969504646154 +1644 -0.0061319407374110044 -0.0003976184846287945 4.157179066912641e-05 +1657 0.000826521949760297 0.003040104432019917 0.005386050640556772 +18 5.6913868519593405e-05 -0.0009254552226802817 -0.002877691756184642 +1795 -0.0014154349964697636 0.0035891471753091856 0.0019298751371806082 +1796 -0.0035860734539681417 0.0038238785115371383 0.0027888192472718333 +1797 0.001189480182018117 0.003071767122740312 0.003489395935069779 +1798 -0.006654368797678981 0.00310539771812173 -0.00323320832341429 +1799 -0.0036934675517907283 0.0022557226818517018 -0.0005961643769946038 +1800 -0.006485842714420187 -0.001039519762699506 0.004911286224222277 +1806 0.0007760711994737984 -0.004192977028411869 -0.0034339473397668576 +3558 0.004505407964139215 0.003913448983265749 -0.00020112286870192534 +3621 -0.005720223040585109 -0.0033809269513744938 -0.004735594684948209 +1805 0.0010730040092138677 0.005016950584696591 -0.0072650774860225885 +1614 0.0017643470587697715 -0.0034230689033273804 -0.0024898307559289307 +1755 0.006200031254096357 0.0012020253094045456 -0.0039044861886739133 +1613 0.0033380576120288345 0.0007705444849849209 0.00014488676879652814 +1722 -0.0038156397550962503 0.0028820803021017733 -0.0006943258297309007 +3668 0.004232346223094556 0.001276456510189854 -0.0033132720752212263 +1756 -0.005207361407697065 0.004581654595976196 -0.0038176857948483854 +1634 -0.002668393972254439 -0.002212756223523235 0.002476970870970382 +1801 0.001976252101629949 0.006747793507581455 -0.005356066386748648 +1562 -0.0018640907821794689 6.773186249542115e-05 -0.002940313986334412 +1802 -0.0010272239619583349 -0.001283592431359657 -0.0030956635190323408 +794 0.0008589330030603535 -0.003571881123040486 0.0010600697399383448 +1753 0.0013391917184110951 0.008458656986844372 -0.0007938294190066981 +1754 0.0030509295426708587 0.005940117672075017 -0.0015293966764114888 +1763 0.003691711057654526 -0.0006135775825592002 0.0027541128962958864 +1764 0.0024938087736961 -0.004819436017007282 -0.006241539276657837 +1803 -0.004379849072122673 -0.0029265455804660273 0.005902779706265816 +1804 0.0007925976965345807 -0.001856766274690673 -0.000525636402711756 +1807 0.0013962159922618093 0.00013392838474721915 0.001712073117535077 +1808 0.0014894369841353678 0.003076124757574457 -0.0034948396890750917 +1809 0.004569359179617886 -0.0001671177119298378 -0.0009773024264460777 +1810 -0.0014649714012907806 -0.0005018079261328294 -0.000546643021622511 +1811 -0.0027626550917969938 0.0036680300277713786 -0.0004080892329042466 +1812 0.0010464386962206625 0.005134922129259209 -0.0029869761067835786 +1628 -0.0005830322744109343 0.00037514822898153844 0.0031548312292725244 +1563 -0.006131553860672446 0.005461699150219503 -8.735402511035644e-05 +3620 -0.0056979909320369485 0.0044021691606087 -0.0048682368417527514 +3580 -0.001008898793749206 0.007188081150345399 -0.006674576029170149 +1650 0.003800108074910534 -0.000545452766329974 0.0020312677700523455 +3543 0.001480393177684962 -0.006609432700257797 0.0022536008168134915 +1622 0.0019997267447536575 -0.006622983218190879 -0.007490843250733358 +1626 0.002974176147991255 0.0016502248950746436 -0.0016613051488892413 +1587 9.866067001753495e-06 0.005251359265185349 0.0009799532255867552 +1813 0.0007112995133666227 -0.0002597981668344812 0.0010961756953733323 +1814 -0.0019988470492608543 0.004364952258195285 0.0032377122058746413 +1815 0.0014157600819387813 -0.0026930770353435956 -0.0005543683483625292 +1816 -0.002541235837506816 0.0013601688585031925 -0.0008034061434289249 +3577 0.003992149639391911 -0.009125867759560891 -0.005906614522008467 +3610 -0.007277450200272522 0.00014905878612545706 -0.003387651255714261 +1621 0.0016171668924234795 -0.0028166269499680006 -0.0006628967510708453 +1768 0.005329859290794839 0.0034820216503499463 -0.0009814034528268804 +1721 -0.003813003532323439 0.0010707393212023 -0.00017098816944624483 +1817 0.004949296923292149 -0.004238343099851493 0.002860464967266861 +1818 -0.0011972570123630836 -0.007521395722012223 0.002450000649133566 +1731 -0.00513159530209062 0.0011081567015557544 0.0020482223638320913 +1630 -0.005311406570945069 0.004450517052107674 0.0018592323639383182 +1732 -0.00473942326286097 -0.003747471453577167 0.016364948491165283 +1670 0.0012559696371223575 -0.00046203022756023486 -0.0019999712890582744 +1733 0.005191401084047546 -0.00019094460516561894 -0.006025818333791551 +793 0.005510745085140435 0.0011920861891726875 0.0036405699378430512 +1631 -0.0018279280476566069 0.0031699322671022334 0.0023087252686622784 +1819 0.004908412957342678 0.0037204775275033746 -0.0010645608047887413 +1820 -0.000446008427589402 0.000649501832031239 -0.0065021278920153 +1821 0.004365433456344229 -0.0022738917306476627 -0.005508770281395885 +1822 -0.002248577121695977 -0.0011211315139047747 -0.003378885068229827 +1823 0.00030836412704554237 0.005491410683461186 0.003018633070613962 +1824 0.002278093752337095 0.0017734953561053387 0.0024240663582444665 +3476 0.003534298334381157 -0.012566942434700652 0.00215578869908794 +3645 -0.0013977249681889827 -0.005920826207632552 0.0003290734648392215 +1632 0.00014235745304751272 0.004345788535918659 0.0005530651308468157 +1627 0.006087638913402881 -0.0036324243388462085 0.0023252973413271333 +1537 -0.0012581335731935948 -0.002929968324350206 -0.0039394339568684916 +3231 0.0038732009543297296 0.0013466242008817447 -0.0024249579789700853 +1727 0.002509953908866506 -0.0012488604049117212 0.006124246633432354 +1781 0.0005786241482971758 0.0006036615013852173 -0.0026469578115610503 +1642 -0.0032956080987886433 0.0009461910539522861 -0.008887097754274431 +3530 0.0003362750357763527 0.008978625308160161 -0.0008764482216569206 +2328 0.0015087993118489205 -0.0017669947471260084 -0.0005763406955272786 +1637 -0.0014909362302829412 -0.003601892506953075 -0.0006122108284600652 +1829 -0.00046312249630037103 0.0004601180817470496 -0.00033445983226215747 +1831 0.0014262383882393465 -0.005680045580942726 -0.000551184423084764 +1832 0.0001281236019258831 -0.003207525821349767 -0.0002532597537903962 +1833 -0.0038514813508079867 -0.0006513547483427272 0.0024952028292201858 +3680 -0.0002811095254374138 0.004918207738100263 0.0075646477683097065 +1830 -0.001967755858861676 -0.0010257211978064336 -0.0023040035169286164 +1638 -0.004188553995822535 0.0019890847397451474 0.002202660065332257 +3579 -0.0025991549338722775 -0.004270363833274937 0.0145316933710975 +3604 -0.0024091530161031486 -0.002033497285957776 -0.008162250876423376 +2140 -6.225286856183301e-05 -0.0018190613644206634 -0.0046826236004770885 +603 -0.005070324855645445 0.007654600325093396 0.0037021271087481085 +1633 -0.0012801286055607582 0.001962819787868065 0.005318650542686613 +1643 -0.0031829876705520813 -0.0012260381962528276 0.0022359992696401342 +1599 -0.0005851306605579401 0.0016099021896325953 0.005590517263212431 +1649 0.0009652215818293219 0.007489163549000303 -0.0022962991733748023 +1835 0.0016427323971812931 -0.0017802903389171 -0.0015204182878019372 +1836 0.0011160057805248897 0.002535536115161239 -0.0034115940235260865 +1586 0.00351608624040816 0.005843737364341367 0.0009021561656880553 +1834 -0.0037868059980957916 -0.0005459914447629149 -0.0038302818067368796 +3562 -0.0007908037077810702 0.00734627128733116 -0.002460678181944903 +1647 -0.004709477644177828 -0.0029564342862790994 -0.0041264061823208156 +1648 0.0018225884608813235 0.003299871527582636 -0.009835410025208373 +1837 -0.00017455945300439725 0.0013548056015105995 -0.006467732799444491 +1838 -0.006249292806364407 0.004378173429673388 -0.004136770305557321 +1839 -0.0062685048756585 0.0006385668609933056 -0.00023167914201105612 +1840 -0.005116395581633423 -0.0020565167256590185 -0.0016404506806857813 +1841 0.0039670497102738955 -0.005845158574909393 0.004016893931029613 +1842 0.003646846346740899 -0.000613072389541463 -0.001712548050928423 +3546 -0.0017897026798267797 -0.003128894736450795 -0.0006228298667972427 +3809 -0.009053180275503461 -0.004234260453966396 -0.0039231496187032274 +3479 0.006373225978426484 -0.008401020344545549 0.0009154489080824851 +1600 0.0041566201757706036 0.003994842443355542 -0.0016344224541423769 +614 -7.537407229492853e-05 0.0009282263147580265 0.0032050067398871583 +3632 0.006527113976729122 0.003376525040047832 0.0022658470214182262 +3647 0.0020045228003430795 -0.004699852852743709 -0.0054625717624436675 +1651 0.004374919406746342 -0.005643956757282656 -0.004601917276186451 +1652 0.005139723845412268 -0.005914320041941283 0.005445159899194388 +1843 0.0014009708454264626 0.0007092921408965411 -0.004380146097104813 +1844 0.0036913707610723764 -0.0013846775847681336 0.002129481685122825 +1845 -0.00042204985565503876 0.004286242644023147 -0.001378474565083861 +1846 0.0033597968448853184 0.0007420841779031854 0.0052070226982892116 +1847 -0.000708654318633536 0.0014394568066034023 -0.0030753098277227675 +1848 0.0015030677301146166 -0.0053863157058575825 -0.0015591479017224759 +1850 0.0034680156963939244 0.004875636785984633 -0.006747478245480414 +1851 -0.0020237780831966817 0.002679252072429028 -0.0036406797932122953 +3617 0.0047338828776188014 -0.0064350662332890865 0.0038662044601923164 +1653 0.0014103309642427538 -0.0058845457474069355 0.001307782601269784 +1659 0.005208809113079392 -0.005342610860170749 -0.003992190398275957 +1660 -0.0023271055776537836 0.003021472821855668 0.0020748021730962844 +1661 0.0010658473740701837 0.0012713168508380922 0.0037788678646709438 +1852 0.003914840182455111 0.0011232173025592092 -0.0014162232666640941 +1713 0.007885751840374152 0.004096142593149046 -0.01122207326391266 +1658 0.0020095639369594707 -0.002912697614434302 -0.0022117584068794996 +1767 0.007272129290900756 -0.0015501005104038524 0.0007793524566821171 +1725 0.0038110028081274326 -0.010922621619855232 0.004487848068513674 +1849 -0.0034712820322663233 0.0017951951272815979 -0.003966494613928484 +1591 0.001194588034718083 -0.005491688493886441 -0.00202321978422958 +1853 -0.0025351229955192754 -0.005511605637654375 -0.0013536245783123623 +1854 -0.0020023096135282125 0.0023274721575155238 -0.00479786069341119 +1856 -0.010227983695050692 -0.002462494103059203 -0.0076940076730397785 +1857 9.790304572484759e-05 0.001967644724313405 -0.008573418373046737 +1858 0.001949954059418539 0.000267537407213666 -0.0006698000047733016 +1859 0.000904368142158113 0.0031185164863792767 -0.000997140066828303 +3544 0.0026809677738218384 0.0008794815763044211 0.004877533588540149 +1667 -0.004149944257754464 0.005091968468763471 0.005919843314998587 +3634 0.006006797038520923 0.0019003793303181513 -0.00973512339594079 +3651 0.00019172657081456378 -0.004959400401748475 -0.0073793436828984045 +3679 0.0008018500721371308 -0.0014821121377313212 -0.0020863640264484 +1663 0.0047604578065523545 0.0006303842727342429 -0.0036132733245715022 +1668 0.0019691001774826376 0.007792985177182234 0.0011734399998347637 +1735 0.00021695057050021393 -0.0019392594448285553 -0.00126884592009629 +1855 -0.003338828775059632 -0.0013301507111214406 -0.001506656251996401 +1860 -0.00743908655393712 0.0010867772289661726 -0.0030057095636785666 +3474 0.004040650420855735 0.003306764816538262 -0.0038535068479475794 +1671 -0.005487430666103217 0.002421722510204385 0.0009052185401101858 +1672 -0.0031785100587002828 -0.0036656167543279773 -0.0025464698970994216 +1861 0.0011256540489225496 -0.0004011703248285544 0.00012145442500639246 +1862 0.001693969168232601 0.00020828930234210118 -0.0003519942095731809 +1863 -7.947459814710754e-06 -0.0015648177456706349 -0.0005021147102595202 +1864 -0.0003772199746765562 -0.0006861414384362825 -0.0021984116392577946 +1865 0.0009831703201412254 -0.0014375171258581207 0.0058957450378621925 +1866 -0.002353132396802082 -0.002036918098566877 0.0038394753503288265 +3532 -0.004900182169256824 -2.16603419639364e-05 -0.006114774192157284 +1673 -3.89323384941194e-05 -0.002116792408263408 -0.0016173517447263179 +417 0.001258384260719822 -0.0033160910891588537 -0.0006572214949516621 +3638 0.005378853095359936 -0.0011507139233551593 0.004231236612723974 +1684 -0.0012247550413518027 0.00014636583698212385 -0.0017004718769569945 +1675 0.0042969840437437085 0.003119510834327818 0.003687517721740315 +1636 -0.00311435567329357 -0.0009220229938563764 -0.0017227766057122836 +1635 -0.005281973954550751 -0.0011989719091226839 -0.0003464704776135647 +1679 -0.0012941163978650275 0.004174014554922865 0.002591422074820366 +1680 -0.0008404802167983852 -0.0006161875832333297 0.002628077434827426 +1825 -0.0009206023018700131 -0.0039564268592939805 9.152485619437366e-05 +1826 -0.0016476838610427484 3.102095652827601e-05 -0.005412352390757212 +1867 -0.000547605498514398 -0.0016467495720934788 -0.0017508586131828358 +1868 -0.00036779301047502937 -0.0014882150340694007 0.0004193035713596557 +1869 -0.003144882373197983 0.005636427176156896 -0.001527631022164911 +1870 -0.0011857285263500127 0.0016820531973129986 -1.0202342683689911e-05 +1871 0.0005212005651176237 0.005234996529457349 -0.005469940133778791 +1872 0.0009041895567595976 -0.0024336273222054297 -0.0011844823106492391 +3547 0.009395199938872107 -0.0011103673213908962 -0.0037437955564386454 +3576 -0.007364042135738204 -0.008635496415558566 0.0007370867325652425 +3600 0.0063736446063992975 -0.0018217083298745261 -7.32343488653102e-05 +1917 0.002795879069336498 0.005670827136199612 0.0016936458367798129 +1678 -0.003951394809007294 -0.0011797368924640677 0.0010239616410346393 +1677 -0.0019582632083690087 -0.0013276255694453895 -0.0006381609151077176 +1923 0.0018227379818360693 0.006361192666115857 0.004710327275109751 +1918 0.005643906784087785 0.0009937912300414964 -0.006304521624583891 +1676 -0.0006818140737171175 0.0009323486940728407 0.0008423253556322317 +1685 0.0038297310558298957 0.003692670782855383 -0.006206082296593893 +8 0.005441324317897013 -0.0016107476308124594 0.0030004653250193026 +1873 -0.001670800018809763 2.7169626700093716e-05 -0.0017296282714189214 +1877 0.0032666373712089782 0.0026794532181646947 0.0016379934788898 +1878 -0.0067446866853158255 0.002481784392345487 0.002088550123182157 +1879 0.0028338644558034394 -0.005258928820836987 0.004650891595051943 +1880 -0.003339840678866214 -0.004094397765201396 0.0035450190270034983 +1882 -0.006660238872768836 -0.0012951448972848881 0.0014215025800870837 +1883 -0.008820041159743086 -0.00042112896172092766 -0.005807782953370993 +1884 0.0005361057108722436 -0.000827016211486181 -0.001899205184858943 +10 -0.004208585944300435 0.00536583435979698 0.00229298447362012 +3565 0.0010391776046375786 0.0038102147362461427 2.4920942740560976e-05 +3652 -0.00426706981827065 0.004658975117207216 0.004626176166532324 +1876 0.0008783952691315668 0.0019213802285663647 1.2317463975023865e-05 +7 0.0011225924762718023 -0.0011041228620653953 0.002348733492848449 +1874 -0.002518536637059824 -0.0012332006390182062 -0.0021027997327864763 +1875 0.0014321515121306896 0.003331298592901602 -0.0008974677368869003 +11 -0.004227108582080979 0.005956636293430445 0.00033412350100151905 +3582 -0.008888181575103479 0.00316308874577757 0.0038903359343522626 +9 0.0005572944531061905 0.0011091623475243148 0.005344870457755262 +200 0.0022965732642501063 -0.00041666538866177587 0.006668200741099384 +3515 -0.0023685780679253694 -0.0005552010938511095 0.0024623423121145818 +3521 -0.008922016054692615 0.006353237488468004 -9.74721845851962e-05 +1881 -0.0034401936602523327 -0.0038910858847085923 0.004218971360997317 +14 0.003403707662124497 -0.000594343435591771 0.0013502726548761262 +1885 -0.002510710139106893 -0.001291387952652374 0.008544314378711568 +1886 0.001320214297673004 -0.0008683096993957019 0.0048792430068379505 +1887 0.004638445266213451 0.0003332977317706394 0.004703829138707653 +1888 -0.0029107846832733143 -0.0019693678327163625 0.005872260069714888 +1889 -0.0026636463888113043 0.0028904230303209463 0.006030056944403631 +1890 -0.00842409042574037 0.004609341550512306 0.007751787682927342 +13 0.004897951990623131 0.0015418140263649723 -0.0006215478804972277 +2417 -0.004962352346510853 0.00327019187690722 0.0007287651538527747 +3517 0.0013964165928653826 -0.005145629964883845 0.003394678426999893 +209 0.0017805360584342868 0.0024855047706873416 0.006968602014652082 +1701 0.0009569883398245198 -0.004954722634900355 0.0002961885913261915 +16 0.00604541992917414 -0.0049042696716053635 0.006076134119027446 +2454 -0.002611967543170408 -0.0028612589385616093 -0.0007744803220898093 +205 0.004428916236134071 -0.0011025671317175171 0.0062516766081905885 +15 0.006213336513423841 -0.00037605999427318916 0.003906763805175497 +621 -0.002580271814270822 0.006032484174011841 -0.0026151959320438313 +1703 -0.0018007642695587684 0.007147211892684643 -0.0008014885492522402 +1702 -0.0007823009424548259 0.004461752642462212 -0.0003693436404720085 +1699 -6.881012840754671e-05 0.0045734191142585 -0.0017015655316322993 +1700 -0.003989854227582833 0.002133493029457649 -0.005806450994538331 +1704 0.0005373498490995456 0.005622173775158642 0.0011549066519405923 +1708 0.0005720806495398399 0.0007684700813946632 -0.0018453490944655806 +1891 0.00018963855411283242 -0.0004396048100379571 0.000805017031041489 +1892 -0.001004084947155679 2.904359467708716e-05 -0.01043948863320242 +1893 -0.0005217170371723391 -0.005362100591949148 -0.0022556509843164206 +1895 -0.009756964534141117 -0.002603147944523635 -0.0034429187946007243 +1896 -0.00654004239099892 -0.006636399670251274 0.0020769378316587723 +219 0.005819886553066677 -0.005625980421621958 6.666742006646679e-05 +3510 -0.004799168473914254 -0.004763839635859114 0.002061953938975142 +1709 -0.0017668273529614991 0.0011001422040176837 0.0014840899052223798 +1710 -0.004958543847073988 -0.004926693797050467 0.0020870811760378715 +1686 -0.0048631067916526955 0.00266875423037385 0.0026550446792035247 +220 0.012485952191945877 -0.0066012721372981035 0.004328449065923907 +1707 -0.0008371707987307408 0.002835699421631895 -0.003522387589358722 +1894 -0.007362491955379558 -0.002381399258609016 -0.0013112234880948378 +2491 -0.00806689335533982 0.0010618492335924966 -0.007972236349257348 +772 -0.004035539871019425 -0.002921893889435912 -0.00870128211666586 +3587 -0.003233598817783391 -0.0009776649376289806 0.00259891839408001 +1902 -0.00787414439531075 -0.0035472197901789777 0.005267053596335925 +1901 0.002680951104616525 -0.006077423349397069 0.0021929405902709168 +3491 0.00048102407878718737 -0.0024838125267327284 0.00019031442113917098 +1897 -0.002348917710242964 -0.013090640148100918 0.0020413535989929547 +1899 0.0037847643165995802 -0.001999089843847963 0.0025914127411255906 +1900 0.0020086502284861344 0.002742404303062673 0.0011296457261649438 +1903 0.002504338486763273 0.0005978513245410754 0.007281060258770448 +1906 -0.004232378648206126 0.0010278403578523295 0.0008494399235102063 +1908 -0.0002404693610380037 -0.002960258509229163 0.004797568987213104 +223 0.000714524474718418 0.001901905964453665 0.0005687719397841209 +3503 0.0008479313274422473 0.002895023604592219 -0.0006016612656438479 +3519 -0.0016235494309494631 0.00041958623011359864 -0.004787340081880675 +3552 -0.0011925261784761097 -0.00037135034823366836 -0.0017882567985836883 +1898 -0.006005005755769485 0.0024774274781899654 0.003543590484310094 +1904 0.0002798633223084107 -0.0025574733465636356 0.0014029742855707244 +1759 0.005409912303177956 0.0013679146897030035 -0.0017642467578673055 +2465 0.02115846512866594 0.0025574157889327945 0.0010856412715890514 +3863 -0.001396332795273474 -0.0014182453485794087 0.0014887211491733652 +3627 -0.005481825550002791 -0.0056254165178180665 0.00015130085260095616 +1907 -0.009082881837203237 0.003303761222918982 -0.0007356879060618535 +3612 0.0009232025704116325 0.00498912138926005 0.004994026821514563 +1909 -0.0054537043154709985 0.001257578627211681 0.005149270744472889 +1910 -0.0021958299733902675 0.0032599143907032276 0.007535384392776359 +1911 -0.004390045426314179 0.004317388782585672 0.007971861518423143 +1912 -0.007730154080836697 0.007054649982444395 0.0040222363693015566 +1913 -0.004181784050375902 0.005803580701179339 0.008657450548940022 +1914 -0.00039904663231504826 0.0013142015663966747 0.0017250787168833967 +1592 -0.01106235430298033 0.000540729374344115 0.0031423792141509733 +234 -0.002944873060217965 0.0036351112557218403 -0.00208407026427662 +3549 -0.004315677693101216 -0.0005494954941948522 -4.787317004605366e-05 +3658 -0.0007366681875705482 -7.643883985905492e-05 -0.007974073745081214 +3599 0.005641720569596938 -0.0038042755902119112 0.0034757743549963228 +3554 0.0014407559666886672 -0.0010577188491680664 -0.00533910848188827 +229 -0.002764433952305347 0.0005497221281325467 0.0032453225501523552 +1728 0.0012404321837064351 -0.0021396519910785636 0.0057056807016258515 +2492 -0.005459479201513854 0.0009935652916705053 -0.0012902767258548677 +1916 -0.0027812794247713494 0.00823759445421753 0.00749863152089618 +3236 -0.001981468467344817 -0.004780340893177841 0.001643200825396837 +194 -0.00010135849245046098 -0.005413378269504149 -0.00019438743214763524 +3495 -0.0011597642678718855 -0.0006791421139449165 -0.0015575655435139742 +1723 -0.0055861230077350575 -0.0031400546002046605 0.004000772693398644 +1915 -0.002411913874902318 -0.0015067619537997919 -0.0002295067040116426 +1919 -0.0031730987545943554 0.0012779450289740356 0.002704416215051982 +1920 -0.0064898225533693895 0.00043899495860222137 -0.008225086220929566 +3508 -0.0012286014952041975 -0.009877664644707986 -0.001111689046524871 +3671 0.000569121888854535 -0.0038172923677133046 0.005260243239291172 +3499 -0.0031726628017972325 0.0013583330826811369 0.007462494489162377 +1724 -0.0054751360866711635 -0.0027575739313180562 0.0037839194996043745 +195 -0.001967586423029576 0.0010987752918525608 -0.003953036020162839 +196 0.0014833534038858104 0.0009310750038875981 -0.006968628193296031 +46 0.0032040618733403772 0.00504286168647106 0.003146611754812432 +1782 0.005908386050594236 0.004587803405734006 0.0008575336119382139 +2464 0.012324262370946273 0.0007002544433674632 0.001608199479959326 +1924 0.000413274481207017 0.0024565823655957526 0.0037763715839461785 +3193 -0.003889558609244727 0.001271459891765458 -0.005843523269937843 +3585 0.002069796059561193 -0.0009647522235640152 0.001628741593659821 +1972 -0.002478143727000441 0.005502121090960161 -0.0020266545813088324 +1973 0.0001788274303425381 0.0014617218494728896 0.006831756800893373 +1975 0.005459910543056054 -0.0007650245562446964 0.003492369568666699 +1976 0.00012716201283497004 0.0029135674128351716 0.004206282495349097 +1979 -0.005146201630685981 0.001898967506154253 0.00045965201312715047 +1980 -0.005005406334562421 0.00014841313939993592 0.003039960895175782 +3482 0.0025555501206142098 -0.008693685938664344 -0.00785272644849969 +3571 -0.002528602480331877 -0.00887621545396299 -0.003672322145251333 +1974 0.004038769943954769 0.0013125832007457167 -0.0053368648584809966 +2172 0.004565599486908148 -0.0006384316707795152 -0.0017550334112743384 +2167 0.0004831149507539284 0.001362034709684776 -0.0037748822216901825 +2375 0.0049792362062823625 -0.006419389941638132 0.0010776961640601643 +199 0.0009401664658535881 0.0022560886702080556 -0.00033165124311386934 +1934 -0.010093659901974349 0.0025522996516421687 -0.001010530505378242 +1933 -0.005041077518589261 0.00042659125488989325 0.009130944677282182 +1935 0.003918611287066285 -0.00170698749460489 -0.002470098418871081 +1726 -0.007222679902852816 -0.00941510238534454 0.0010108198346802817 +1981 -0.004318146662041348 -0.008375480590369903 -0.0018856535994540853 +1982 -0.0038422120466057243 0.007406478833990503 0.0001064149219339009 +1983 0.00441372712978484 -0.004118748983809491 -0.001745211215623804 +1984 0.0003560491780269911 -8.872623322675699e-05 -0.0006997276591248611 +1985 -0.003409219589132149 0.003419532290185735 -0.0052853279941306695 +1986 0.00046991978472089277 0.008404047659730655 -0.004287561727557714 +3622 -0.0035101465336773033 -0.006793577300680575 -0.0018523610360520351 +3535 -0.0015054681941506854 0.00248087984147309 0.0025043248477613494 +3673 0.004706527568175292 -0.0028561599407440387 -0.0009715517436717571 +3567 -0.0002731924362204869 0.00021580308783671333 -0.00021343651003010662 +2387 -0.000593326851041705 0.005852654460745085 -0.0033821607858097076 +3661 0.0014791074579299619 -0.001633712319250556 -0.0022729945516848644 +610 0.005090728818991415 -0.0014455033530199456 0.004598776562109591 +1987 -0.0030570470145343974 -0.006174944282099992 -0.009060879943573057 +1988 -0.001689764383406898 0.009914843158831513 -3.0648111274334855e-05 +1989 0.005761920959085135 -0.004184529456096026 0.0004351726808763791 +1990 -0.0014307274175453502 0.0007293332211057449 0.0007069091231735217 +1991 0.0045502033008669365 -0.0005252343516413712 0.00876268362046239 +1992 -0.008345848103534052 -0.0019382770670096636 0.004179744811003609 +1996 0.0071942788422281224 0.0023990407713952305 -0.0007164156640966123 +1997 -0.002849016075135707 -0.001078558629512108 0.009533071868034535 +3494 5.185811192071261e-05 0.0016225186914303835 0.0023720688297994477 +1995 0.00040198698042401575 -0.0068435058426002116 0.005630860868560374 +3641 0.0006138599966168504 0.0017595049322700743 -0.008308996218220916 +2187 -0.004689705000437256 -0.003988130676853481 0.003211968440845247 +1953 -0.0033756733341960966 0.0022895447333542785 -0.00019616689742102145 +1956 0.002938635077075915 -0.0017990642821718512 -0.0058851706961430715 +1951 0.004590272731635944 0.003214417516001303 -0.0032310189396217745 +1993 0.00636986737001441 0.0029403930869170785 0.0011182761089137047 +1994 -0.0027643847452781018 0.004002772057918617 -0.0028152027547608816 +1998 0.002274929833833329 -0.008537039002114942 -0.0017841993748395806 +1999 0.00315079098666427 -0.009948504686425372 0.0009213606566782274 +2000 0.002446312741825093 -0.002490407404601214 0.002690432011293675 +2001 0.002534281300998579 0.00998825802511034 -0.002987609253808023 +2002 -0.00038861039773877145 0.005701303113169743 -0.0019989711887200244 +2003 -0.006126997995616793 -0.007604671937367091 -0.0013286636518715204 +2004 0.0007468968407156377 0.0035736513696691097 -0.0021193644042255427 +3484 0.0013543908098139238 -0.008038818057791561 -0.000727494701753514 +1955 6.926381137942676e-05 0.0025922632578206915 0.0005202788465906077 +2196 0.0004726881823190006 -0.0012153954208631362 -0.0005468080966294308 +2195 0.0007735146874699633 -0.0003975938470913357 0.00144459148513277 +2194 -0.005544341580281461 -0.00029528298247301707 0.0017768885781243831 +2193 -0.004508768272096063 0.0005526175908507268 -0.0010410094533602379 +3606 0.004559354728259743 0.0025362293567324085 -0.000231717815836941 +2192 0.0016374645773312203 -0.00010206696554991557 0.0009216533526166104 +2191 0.00158259184336782 -0.0009056694358623521 -0.001298470507394665 +1954 0.0025607104484032636 0.0040458234376479696 -0.0012034622749277901 +1625 0.007600199669023785 -0.003587835949029777 -0.0005361165050597395 +2376 0.0037825062990870634 -0.0022332751978838272 -0.0065440646659597704 +1952 0.0004509999663127233 -0.002459184742083149 0.001744774817409383 +2005 -0.006463356533462928 -0.0016519283730638617 0.0019976655240743807 +2006 -0.0036387288590201215 -0.007536224135950514 0.000972499748937569 +2007 -0.001753351753737641 -0.0010055223105779778 0.003290547560729933 +2008 0.0014997302384358545 0.005194125388552765 0.0010822554268051492 +2009 0.002921123881757213 0.003260496533482173 -0.0014678043233316924 +2010 0.001041197996915735 0.005017510692532278 0.0010846435289579863 +3678 -0.0015684273163413813 0.01071830476379869 0.003078511043669024 +1958 0.0008228153752458923 -0.0025084557881561954 -0.003245056765919065 +3568 0.005557056326908686 0.0065988614670324285 -0.0033984138366061935 +1959 -0.0006050587043375607 -0.007511986960230277 0.0012372718127768136 +1957 -0.005073566790490693 -0.005362554354829005 0.003170117398637592 +2151 0.003980328723585245 -0.004486381559513333 0.0016892921239075754 +419 -0.000601948690535961 0.0024726841098281034 0.00025725937523441583 +1734 -0.0012188040084916908 0.0035907807228984763 -0.011677543548989746 +3574 0.0027048299918987157 0.0009706544055265469 0.0032827396632096246 +2299 0.004246960061660437 0.004821562937641285 -0.0013755407469486752 +1561 0.004374228062770217 0.0020402747375853608 -0.0010556946282155194 +3676 0.0006853666277618171 -0.004632214117947897 0.0010952231673401903 +1971 -0.003438265983638171 0.00194528267687394 0.0015926073492545363 +1969 0.0033619618154535013 0.003242818025343891 -0.011430190196793312 +1970 -0.006072469064849097 -0.0060595792573455735 0.0012372645559574661 +2011 -0.005470832288839324 0.0008954906588602242 0.0014040816863992883 +2012 -0.002135609279878388 0.006961221272029196 0.004030834085763429 +2014 -0.009155832287130853 -0.0037023879751726064 0.0028898432890015016 +2015 -0.000861951786179173 -0.003588830550677786 0.003664401613823872 +2016 0.0013633319787313503 -0.005027216062125339 0.003943323007475217 +3569 0.007380512743818022 0.0021123850275612936 0.00261294062258026 +3648 0.007508175881997277 -0.006635562263246512 -0.002425889780547433 +2013 -0.0007420576415275555 0.0008333427169873982 -0.0037362430763946265 +2164 0.0032556977557093953 -0.0006342543215784855 -0.0015410185910088225 +2205 -0.0026025250753193424 -0.0017139268404408137 0.00021424552759403124 +1729 0.00045591430422848716 -0.004659243691219603 0.0014643508547420958 +2358 -0.00023722165355210946 -0.002114542372127202 -0.0012103960831549184 +1828 -0.0033697449875005575 0.002230230203859253 -0.001577574324922999 +3469 0.007200175517789802 -0.006741024747659008 0.005922493582489017 +1977 -0.004087550071835729 -0.000690293296571391 -0.00047538194782410466 +1978 0.0036079835098046143 -0.006191595559464254 -0.0005177981322523162 +2023 -0.00037460318746305196 -0.006354281478627195 0.0034722385746864 +2024 -0.0008317606005856091 -0.006129967959787037 -0.00400524709753449 +2025 -0.00632073324734467 0.008806095815399682 0.0030773320559097962 +2026 0.002920079801538065 0.0002473319549963313 0.0012148680812487107 +2027 -0.0018919001583337458 0.009383742003713459 0.00035643134859504404 +2028 -0.0003393220855155376 -0.005470233304098993 0.000765520662716882 +3524 -0.006331206992886474 -0.004536758573075138 -0.002551330013751556 +3525 0.005063232575321563 -0.003932505970703108 0.00806025728607376 +3596 0.005697383352709621 -0.0008882069056930085 -0.007166656739865473 +2215 -0.0012231041919731577 -0.0016729483937413011 0.0035929750626131044 +2262 0.0017464885033743997 -0.003532794564872099 -0.0046299358494856354 +3614 0.004243672064129555 0.011253694088972902 -0.0013817037511591039 +3523 0.004144696222507676 0.008994386768962736 0.0021201021456010434 +2029 -0.0037848029128149815 0.006785007531455846 -0.014146737256974271 +2030 0.0015442234389356365 -0.0010251105356913373 -0.004489871728723773 +2031 0.0003920442910256699 0.005391783701381735 0.004490982912815138 +2032 -0.002775247742124954 0.003569547313688056 0.006486712902976317 +2033 -0.00452254080490697 0.0018796960945164408 -0.0009447657130271929 +2034 -0.005239433899110173 0.004924561804229789 -0.009766549221540561 +3570 0.004033012743266614 -0.0008112093861539164 0.0017310952929610016 +3611 0.005591837014063956 -0.007403401484719849 0.0003369024259549402 +3560 0.0009196716117654884 -0.010875726407984386 0.0024410532914918162 +3485 -0.006652448675043091 0.0041390162115849055 0.004295840174488322 +3590 0.0084929632875805 -0.0019224190348461844 0.00141140186708981 +3656 -0.00017973697785591498 -0.002809142319531635 -0.0037988886587369737 +3471 0.003501319124917228 -0.0015432132186339687 0.006827691005543911 +3584 -0.0005522058240021863 -0.0033678918102561907 -0.0016723657213136471 +2035 -0.0007219909798532206 0.0043320893526155434 -0.006894493992280429 +2036 0.0051014117743546595 -0.0027656740834946267 0.006974880929917153 +2037 -0.00707601011186687 0.005396635950896531 -0.009335836588772623 +2038 -0.003716364295485327 -0.009498508947197013 0.004461767107517336 +2039 -0.002534348994205282 -0.003425070825679306 -0.010575213844106424 +2040 -0.006883339043802957 -0.0021515858105527223 0.0054737205361313915 +3664 0.00030858510470004323 0.004081969270853203 -0.009405342292427524 +2232 -0.00039490366957535604 0.0023865955540268023 -0.008688384203396519 +2237 -0.002043654390253128 0.00650029998777624 -0.0002685786187459893 +2231 0.0017514262739567708 -0.0006572124528878493 -0.0024767970305973044 +2278 -0.009011330547346838 -0.001548283737993738 -0.0062531899215137274 +2277 0.0025016744624260976 0.00462649086544787 -0.004484475636513894 +2089 0.003942794499540495 -0.006581127232271338 0.0004756649430028374 +2094 0.0007094807768453762 0.004640076226974111 0.005605416711803798 +2276 -0.0077127728972907535 -0.004811010968703405 -0.00011726476735704972 +2228 -0.00204310486272713 -0.0046855965771654485 -0.0031779796294747107 +2227 -0.000679757600558239 -0.002330680018690004 0.002791820564341151 +2279 -0.004244476612916161 0.009507054683568422 -0.00172436726106808 +2041 0.000271269329868823 0.0010204464279349181 -0.008590283259561994 +2042 -0.0017162061274534947 0.001865644759611662 -0.004890417007423929 +2046 0.0033001322525429196 0.0004818765580602003 -0.005912894457594098 +3603 -0.00672104732226778 -0.011238536409015027 0.006451222048945713 +2043 -0.00015026756540342651 0.003007282815411797 -0.006329150365792823 +2044 -0.003101632846891416 -0.00018514379305724273 -0.005409165243280534 +2045 -0.0028754709575729395 -0.0014528842074044955 -0.0022318806913334114 +2047 0.0006056590917197865 0.0008501810205795282 -0.001268752358997108 +2048 -0.0016921521166621768 0.0027375132739759344 -0.0003924220124619121 +2049 0.0006301385761270604 0.00313101246580953 0.0017574349531797907 +2050 -0.0007609847978652612 0.003076798051484992 -0.0030731345822981953 +2051 0.00564758339210646 -0.008035698381298547 -0.0014287781312277439 +2052 0.00013266156464303506 -0.0023753354014508705 0.0009802955112327102 +2235 0.0012696567802577207 0.005504086063458671 6.604711440466096e-05 +2093 -0.0033001613955761476 -0.0011521497219299439 0.0039549224519902495 +2236 0.004254682743898252 0.0010432619915322927 -0.0040996602226806055 +2234 0.00019741431322500545 -0.0006962632421895644 0.002283433204654739 +3597 0.00931815884275206 -0.007434926763649845 0.009562051693563108 +3609 -0.0010922107389391305 -0.005474120629394282 0.004970804957873986 +2053 0.0053444429304377455 0.0008357481512109683 0.00421694345347749 +2054 -0.00395784144054097 -0.0005508886330554558 -0.0017184827359798633 +2055 0.0021434911488125677 0.0013079478188953182 0.005029287410936038 +2056 0.0051629217646542115 -0.003932161642433051 -0.0008544514111962912 +2057 0.0002279436414421715 -0.004069908308438094 0.0017183095369163088 +2058 0.001749948703813234 -0.007240459510360871 0.001795131119057291 +3473 -0.003516797018805732 -0.0017900652578877409 -0.0032385683868333503 +3654 -0.003597657055780359 0.003144197579418524 0.00034431643022134987 +3662 -0.003926784209262108 -0.006840397380525757 0.007824767263442575 +3666 -0.008907717243665614 0.0013545469589091143 -0.0071335970650431854 +3539 0.0008045997129230609 0.0008711405082642309 -0.007080931363480289 +3646 -0.005204032723140139 0.008539891385693651 -0.0036963481123882653 +1827 0.002587436208492183 0.0004937814997143719 0.005738551206763735 +2021 -0.0011342953517247156 0.0013391655995196317 0.003912919741439206 +2059 0.0016795523652280982 -0.002952431916915821 0.0026456197126845478 +2060 0.002053536993689218 -0.0013431212535421522 3.6602214776871214e-05 +2019 0.009388489317860583 0.00039240748696600154 -0.003281518918053546 +2020 0.0031297562740601574 0.00012307374020062748 0.004995491309552138 +2017 -0.0029960758543297796 0.0016005051531584084 0.0029472837537083863 +2018 0.001649023604556133 0.003286022788895031 -0.0010499458000769537 +2022 0.0010062391254334203 0.002086079298760169 0.002545034280944324 +2061 0.0023905176658207032 -0.0012761606837622165 -0.0007885285909412426 +2062 -0.0021887626711160997 0.00192299439163968 -0.0005346107374349692 +2063 -0.0033272125046412493 0.00403471880170987 -0.0007155188945651811 +2064 -0.007226684260303459 -0.005625873703660576 0.0021184577093490762 +3615 -0.0009845333150066858 -0.0013373791108068692 -0.0014168330942308457 +3506 0.009844808714824696 0.004758294528097019 0.004146190938895084 +3509 -0.0032811565174717208 -0.004526955186775802 -0.0003641461659888333 +393 -0.00033053159059213115 0.0020775625336295314 -0.008009806381103615 +392 0.004324643155869394 0.00458415562482376 -0.0036669887967376857 +3489 0.007929971994242977 0.003566942972561662 0.0005219904996772889 +2074 -0.00017588351920820074 -0.0005378664789188037 -0.003355218770817666 +2075 -0.003360344160332427 0.001688796455532971 -0.00751608023087467 +3518 -0.002759236292010732 0.000787157420611874 -0.005372877489135995 +3583 0.004337083890347111 0.0055890187625444185 -0.00619086185921629 +3594 -0.0026770055290438496 -0.0025933858528007087 0.0042075508675958675 +391 0.0064164244830683835 0.004257102813450258 -0.005847628598944165 +396 0.005760401829310134 0.006102365972591532 7.461960289616225e-05 +2259 0.0038646337108230065 -0.005630456376945614 0.0020650886856075044 +394 -0.0008561226834059241 0.002319833179941939 0.0003334761273784472 +2260 -0.0007850860861328201 -0.004560806720549656 -0.004284981993486124 +2258 -0.004528194766644128 -0.0018191071897470607 0.001522305950917507 +2257 -0.0009665404332538175 -0.003502550540450546 0.0025175843894937404 +395 0.004014717641939228 -0.00095988253636694 0.0005493989733462071 +397 0.0015358551696278077 0.002098942025327216 0.0010417449838264405 +207 0.0014994158873160605 0.005029211970761269 0.0020489880485367253 +208 0.0013376112065327935 0.0004892539396731281 0.0017029764846788731 +2076 -0.0008953309138263338 -0.0019171321706430364 -0.0004623303243776822 +206 -0.00018396553130903208 0.005350892809380218 -0.006464309226682513 +2071 -0.004967340834811426 0.0015510015267807356 -0.0015285634682867765 +2072 -0.00041592201015899224 -0.005385677200337021 -0.003917429682522243 +2073 0.0015105570084923742 0.0007004586286935713 -0.005728333563523886 +2077 -0.00273594308368269 0.00516806705964639 0.00378502232506005 +2078 -0.006083220175456251 0.0035742380845403196 -0.0037162189245591613 +2079 0.0033834395457610403 0.0019794205835326076 -0.0020668482062044828 +2080 -0.0036688750994976495 0.00035335589436370855 0.000498652160070779 +2081 -0.00847727772651808 -0.001059124279552917 0.000863876899576913 +2082 0.0005761273398571176 -0.0029376423034086253 0.00035907128511614915 +402 -9.523525642363666e-05 -0.006205365583878743 0.008868648783124936 +3529 -0.006226037686523097 -0.004652653151712817 0.0038385877717699384 +403 0.0017164333473324025 -0.00011137931486513381 -0.001111077100065102 +404 0.001955877359397746 0.0010330054651255915 -0.0006128878303619024 +37 0.0011808714353077816 0.004427047968146546 -0.0007994058073929346 +2449 0.00045088113936808417 -0.00231867112946455 -0.00409711309763376 +410 0.003846790054159109 -0.005615647056282748 0.0033989269902066064 +3586 0.006034508685244999 0.007618651698961181 -0.0001831478817297819 +2090 -0.001977455346313982 -0.0027887384034228696 0.0005852615922513694 +3540 -0.0033354443760626675 0.0008820420300838862 -0.000836853981792664 +411 0.005620850404619107 -0.004988911554031946 -0.00283650969845404 +405 0.0018824822077342263 0.0025247673858030113 -0.0008914106320593414 +2083 0.0022779789891106098 -0.004029987106396666 0.003710050085338355 +2084 0.0024311776436698553 0.0017425080449082187 0.0008847003166466855 +2085 0.0021414079483740535 0.0008496232451891627 -0.005757154910971553 +2086 0.006072388541362386 0.01035671171322342 0.002432258964769426 +2087 -0.003489143412918589 0.0024055750233754588 0.003028671177490906 +2088 0.006334224614856597 0.00132871001344907 -0.00426361282252329 +3618 0.0039324295174816256 -0.004640499462232267 0.008612888423686654 +3657 -0.005663832344767086 -0.009138709369812582 0.004972086232716925 +3625 0.0017512340850112074 -0.003750042676900028 -0.009709957518231517 +412 -0.004546273625640061 0.008473437988087635 0.007742658807573587 +2300 0.0070324993514679635 0.0018501597817293255 -0.003360913892871846 +420 0.0024598950968728033 -0.0018279966524747775 0.0019290171699537226 +1905 -0.0029075901675409623 0.006313866875540599 0.0066940827360062165 +3504 -0.0021876472583982017 0.001007026681368286 0.0024286692413874305 +2091 0.0030874787988152807 0.0035620102063857943 -0.005807284761183475 +2092 0.003211610854965681 -0.00311480826764107 0.001411733420737438 +2095 -0.0016769025103858404 0.006093054733251098 -0.006719887555356467 +2096 0.0026355010767475885 0.0017569710644295803 0.0040187262304962786 +2097 0.0009073403548618076 0.0007163385351467243 0.0021110771041964954 +2098 0.004048023247576561 0.005895917021782403 -0.00040283588735420264 +2099 0.0025775220224075156 -0.0086515974558241 -0.0034665477099011075 +416 0.00016086659503188047 -0.00391423136639523 -0.002197937488305034 +415 -0.0013761381935209773 -0.004834437543720942 -0.0004063029119569533 +413 -0.0001039334589147263 -0.0009755041830989779 -0.002339073373738344 +3581 -0.0006820610246361927 0.011225650018986807 0.0037527099973018612 +2100 0.005947633749619716 -0.0027431509212074317 -0.00033502485914211694 +3492 0.002837570595961449 0.004921593161870094 -0.008329862047815672 +2101 -0.00326306107129463 0.0031126724367661297 -0.0007465346554736207 +2102 0.003596731464945492 0.001048381662945401 -0.005233325595781674 +2103 -0.0026888470959992882 0.002593999621966636 0.002604566308484907 +2104 -0.0038012095724986247 0.004683822676749477 -0.0027733884564629407 +2105 -0.0037823275467009153 0.007507838966040108 -0.00479145910083688 +2106 0.0008265623745571272 -0.0010419893973576224 -0.000810672438437765 +423 -0.002133674197170745 0.002050314891895307 0.005242865269330714 +3635 -0.0021505408451201686 -0.0043666379417774594 0.007099577486738385 +3545 0.0026707447174495738 0.002149040715225071 -0.001865716579799324 +424 -0.00817270417481744 -0.0026874120224759973 -0.001993235054237404 +422 0.0026933354884593847 3.687030060572618e-05 0.00165373484206116 +3608 0.004623198561065342 -0.0038018356491848816 0.008856564810262695 +2345 -0.0031569854858594162 0.001493632877474692 -0.0017877111866947272 +425 -0.005040108513329019 -0.0028094041461886043 0.0027622368830097187 +2303 -0.003834822131782094 0.0015224257460384075 -0.0037727560188601213 +2067 -0.001082364515140408 -0.00021066797959319838 -0.0008423400843683604 +2068 -0.009281201258615217 -0.0015768581395617148 0.00018315610334716825 +2069 0.0018996069741669954 -0.0033331748559546313 0.005286835931577101 +3575 -0.0013410404051289902 -0.0028261648250322313 0.0037317650428394847 +430 -0.004716715748168029 0.004943679183654237 0.0001446604527890762 +2070 0.009267747741240125 0.0009064930270422269 0.006108789127031135 +3640 -0.0030676526811654003 0.0053079717818801655 0.003136805426458433 +2261 0.0032630662756396515 8.43424879239268e-05 -0.0014667949003284817 +2065 -0.007759983938801097 -0.0013393554845422015 -0.006315196352676269 +2066 -0.003830708419471678 0.007925812734819465 -0.004092744523311649 +2107 0.0009984658385130108 0.0016625141864504472 0.00029577703455115463 +2108 -0.0003503919996898387 0.00019801910246652747 4.820448988457499e-05 +2109 0.004938138477219019 0.007842226653951609 0.0028079213072789893 +2110 0.003215419352983291 -0.003190614806980909 0.001754215752517428 +2111 0.007176445592147873 0.005801723461361754 0.00765142929340894 +2112 0.0022861500584786757 0.0006189891507689804 0.006418642911461088 +228 0.003367480043345671 0.0016063583668703908 -0.0013117635226172362 +3498 0.0015277337415669126 -0.006523147987800033 0.004831980840791563 +2304 -0.0006455964794753476 -0.005175965738857131 0.0054036706039634 +12 -0.00010605724707806232 -0.00349656996010065 -0.0018654432148136225 +211 -0.0039224563736357946 -0.000142532593679384 0.0008001521361305124 +2359 0.00022388548977167965 -0.00255330157355003 0.005422120705998327 +2171 -0.0025257349550059757 0.0037814900943577306 -0.0017724145115653026 +2170 0.0004619338457972974 0.0028521467132121363 -0.002861587832575755 +2169 -0.004899760449447147 -0.0005910610446924246 -0.002774869194911793 +2168 -0.0016722333014869257 -0.002255812078402449 -0.00512286267653095 +2165 -0.00043040380531555837 0.005022580648193611 0.0019460921181348094 +2122 -0.00026926680387545274 0.0031067559639242175 -0.0008660791621754149 +1757 0.002467291450024826 -0.007817563359461354 0.0023368521656600165 +2363 -0.007891516283225238 -0.002267223048741225 -0.00818818231131358 +2364 0.004007003285959073 -0.006922512487390382 0.0004450193810198783 +3593 0.005644780501363601 -0.0031354947067566284 0.0018613221809108337 +3623 -0.002121864276977409 0.0036960123602736467 -0.0013575981081454648 +2166 -0.0018688047397347094 -0.00584652146927121 -0.004623300672766048 +3591 0.0007476495485821145 -0.005401576474515761 0.003299759613721655 +2161 0.0034781194049799133 -0.0016518675951458406 0.005740596548136309 +3487 -0.007991164815400983 0.0014379027227234026 0.003319492800159722 +2362 -0.0002204136856940316 -0.006048686978024329 -0.0074526481635607215 +2314 0.002149586835400321 -0.007888067891070988 0.00433032589652967 +2370 0.006012109935047713 -0.005927748012293214 -0.004963640253766819 +2318 0.0006569706179623667 0.0020562927369158664 0.005015133560090467 +2317 0.007558687620377742 -0.00014304573697765597 -0.0009570170155153419 +2295 -0.005174815202094332 -0.0011213711807734788 0.0008610133295315003 +2178 -0.0021705960364579897 -0.006544785089837986 0.00012272287178605802 +2177 0.0028459884102157587 0.0005368878698463187 -0.00048406471500133736 +2176 0.002974392557558112 0.004255106479599167 -0.0003506028661597726 +2175 -0.0002588237343168703 0.0010480706385830535 -0.002327723606586732 +2174 -0.00235228173614041 0.004030728841542904 -0.003266383512137305 +2173 0.0030774304498832716 -0.0007567412680630185 0.0026155734920877563 +2321 0.008521397315277181 -0.0023210391816390727 0.0017889576672504084 +2322 0.0028292694833046577 0.001370718123276546 0.007391078693145265 +2365 0.0025598778908477713 -0.0006405281727274394 -0.002332553648880181 +3563 0.0008525453965895222 -0.00033587582204817076 0.002318249889783212 +2184 0.0020553542043562512 -0.0021599127557389015 -0.004303100488556886 +2183 -0.0020936987817618915 -0.002607734468950805 -0.004895294862583696 +2179 0.002542153478907969 -0.006076227639151435 0.0032365792404732735 +2313 0.007309451467204785 -0.0013086603409813088 -0.00576522156144603 +2367 -0.00018496633493994723 -0.0007131085893415937 -0.0028744436878729495 +2366 -0.000988012467973602 -0.0070505955004922525 -0.004923493593511792 +3480 0.004961437873198808 0.0014650755993527718 -0.004037194700742422 +2142 -0.010126275646337606 -0.0027162891637261682 0.003579933690458789 +2474 -0.000695204308899293 0.006240150159263574 0.0019329699410023811 +2188 0.0028018368316184367 -0.0031437273397350446 0.0049598057624300265 +2186 0.002734475256186206 -0.002296592716158496 0.004291570713244283 +2180 0.0013194737780242221 0.0032489055874773847 -0.00447347397985557 +3626 -0.0022493493939572287 0.0002454999555403851 0.008268834924259562 +2324 0.006184339088407881 0.003881082569063367 -0.0018146804283106007 +2182 0.001151206031735054 -0.008289462417271302 0.00808013151963794 +2181 -0.0006937874779364956 0.008192046868838452 0.004304143006173344 +3475 -0.0005680826608944899 -0.0027786454652548123 0.004031088763025932 +3501 0.006907094813158748 0.006746830465218074 0.007226418510864036 +3601 -0.0019521574946060004 0.0029088061781607083 -0.007022501770088554 +3607 -0.010957191395724477 0.004721248903076006 -0.00016165955000221487 +3472 0.0002487061090263773 0.0033035690581661842 -0.00027524737953614134 +2296 -0.0030734792905882935 0.00034745969604925723 0.001735957424359698 +2190 0.0016526234954475126 0.00027980810389264914 0.0006098448086623034 +2185 0.0005734454156925726 -0.0035898731192623603 -0.00016442813630753304 +2323 0.00488540725323024 -0.0024028728307447385 0.001588672876216834 +2137 -0.005977324141972464 0.004063593964043892 -0.003444743961129905 +2144 -2.826450768326309e-05 0.00023896654389814255 8.239724559545187e-07 +2138 -0.005600541911365757 0.005631597984367335 -0.004154119333584209 +2139 0.0021573687471393987 -0.0033471642030005063 0.01598003571411051 +2189 0.0001310872586039484 0.0035515195036910363 -0.002468945052690769 +3637 0.0017231197767703728 -0.0027152286982586593 -0.000562920576603308 +2337 -0.004468172856159826 -0.009193119168493389 0.002823522703834158 +2384 -0.006389863060262987 0.0007100330319665282 0.0009056102727878168 +2335 0.0011893865694412099 0.002422344532230116 -0.0008956604585120882 +2385 8.93774069116037e-05 0.0018451922280004114 -0.0008015170644437214 +2339 -0.005717365771926721 -0.005739549231059166 -0.001102731700895485 +2340 -0.005712960842963216 -0.000507434704472911 -0.0012144215615412413 +3555 -0.007057771858410031 0.008899225020415664 0.0011574151890759961 +3522 0.0014376219263941181 -0.0028350028218816405 -0.004709305733730348 +2336 -0.003454248101223242 -0.004375390938163787 0.00563339959198619 +2386 -0.0016832789375525192 0.0013366420935053362 -0.0012711140381266332 +2149 0.005259976196598735 -0.004789825415270452 0.00835078764304207 +2150 0.0075621099951595555 0.0011966223486306385 0.004230522182792506 +2154 0.004569015940185893 0.000553728137479007 0.002478608005294859 +2153 0.0013287423072039647 -0.00352525610865652 0.0019526778055775815 +2341 -0.005512935050328144 -0.0005725157875830428 -0.002818935406046246 +2202 0.0024028358462281226 0.0016544454354585074 0.0053815983720200316 +2197 -0.00023085457353929766 0.005979157714380205 -0.0007714562420328988 +2152 0.0013838103499214686 -0.0007303325302536698 0.0040050389754104935 +3550 -0.0015797600952946178 0.003543037346015219 0.01134153998491278 +3592 -0.004291327726529677 -0.008275335353034166 0.002031289571727933 +3670 0.007495444260785512 -0.004034955573059373 -0.007795485232771058 +2206 0.0002781917217329113 -0.002908010774127186 5.941680208454267e-05 +3149 0.003202493423021276 0.0014773174102162593 -0.0030208206071365403 +2208 -0.004131427824429189 0.008764254006113649 -0.0026557947501914055 +2207 0.00010436763517327209 0.003753139342841023 -0.002497811207035925 +3203 3.815764639752489e-05 -0.0017926781320553224 -0.005079131742104237 +2395 -0.0017697627849811155 0.000876238326195737 -0.000996128327742452 +2204 -0.002516974558679008 -0.0019845009492082616 0.0024503064620751466 +3541 -0.0013699215750306417 -0.0016466893317475574 -0.003619659220809333 +2298 0.002480023180572724 0.0014393576854755024 -0.002558585301911246 +2356 -0.0001528740162426352 0.001215916240855494 0.002705822429150713 +3736 0.003964174256498719 -0.0019177785160370655 0.0007261084391141981 +2163 0.0053578543505814775 -7.036927791649107e-05 0.0019188235414233047 +3147 -0.0026855410200922383 -0.004108705863922047 -0.0029319669742065005 +2162 0.00345806630991214 0.0019858630017663224 0.0005486347753703611 +2357 0.00248558538281993 -0.0014642712394506276 0.0028870650299535213 +2203 -0.004079863978570186 0.0020625873923366136 2.551674130296513e-05 +2400 -0.0016726397658423057 0.0022690510699748443 -0.003587103897170832 +3488 -0.0035405637255342356 -0.0005252148643417447 -0.0034477453361144474 +3559 0.0016080671646468403 0.003472741716758527 0.005772399665150236 +3602 0.0017500702091906753 0.0052223351259245675 -0.005678075278392658 +3629 0.003516111900991066 0.005043700229832203 -0.0016962723971209162 +2399 -0.0010306804988045237 -0.003743544641742716 0.006578743030592739 +2411 0.0014520739655358855 -0.003617919768198103 -0.00451271757148618 +2220 -0.01189381551322391 0.0015123709710767414 -0.0028831041782104135 +2219 0.008873230855117393 -0.00012261876559962353 -0.00983278899319003 +2218 0.001291027777783461 0.00907084458454872 0.002504631383687299 +2217 0.009255553255827402 0.0022391089131628956 0.00108441930163346 +2216 -0.0041351681692299224 -0.002744318466283216 0.007577128256312225 +2214 -0.005420627996192814 -0.005639730642293855 0.002122890044417805 +2213 0.0007208613411931298 -0.0054327286013966525 0.004657832496287634 +2209 0.013367933795951751 -0.0011772951474737796 0.006958090834997962 +2410 0.0012767532238552159 -0.006563200166980233 0.0014116530795973635 +3527 0.003978459030582969 -0.00020125779671296374 0.00013895918745911713 +3534 -0.003989637077164371 -0.0017225222410787013 0.003622011572177044 +3598 0.011313578137574788 -0.002476780722582809 0.0014907349775697039 +3548 -0.005454787988972441 -0.011303333212421047 -0.0022081119756170147 +2212 -0.009752135546200162 -0.008304139945354613 -0.008456140846411256 +2409 -0.0005811417696498508 -0.00513165716659409 0.0005863280894015679 +2211 0.0005580063414694963 0.005321326117565211 0.0009776277951514352 +2210 -0.009874111848078787 -0.012614641226231633 -0.008699405442704047 +2268 0.0035748387095826863 0.0035480586171973646 0.001114549326456009 +2267 -0.005938983305595301 -0.0020177247701633465 -0.0006141116633491762 +2412 -0.006990435963445671 -0.004380304106806534 -0.005938922503939095 +2416 -0.00023921091741841363 0.0018442342911412688 -0.008037397679562458 +2302 -0.001326103099560897 -0.0030208979746578785 0.0035766758419698485 +1766 0.00391124010925712 0.008428831667278484 -0.00044783700304313587 +2414 0.006913171467387435 -0.0014330978901947878 0.0018505759584297359 +3526 -0.008629483460348888 0.007597658757115517 -0.006035543307882735 +2226 0.005041268826429305 -0.0003526472133356526 -0.003946095612250337 +2225 -0.0035182204080170414 -0.0005482973049936657 -0.004009144980158603 +2224 -0.0024732391780154374 0.0016131466917721836 -0.0006347473146281213 +2223 0.0026428694176620264 0.0013735559783004275 0.004560576514763834 +2222 0.005983821090392185 -0.005505522906925096 -0.005912889914779018 +2221 0.0018185888148378878 -0.0004459415653851843 -0.002242869165483127 +2123 0.0003435712621718116 0.002774740805703343 -0.004295328156927681 +2418 0.0033269878762117893 -0.0048888249548351154 0.001320672782964784 +3502 0.003133961058638058 -0.005420863827905531 -0.0007533743569831673 +3633 0.0013007064222465734 -0.0019198890404539643 -0.0009250403501506877 +3663 0.005894987884415427 0.005777324212288102 0.007000624195701079 +3655 0.004430972690741219 0.002286917801355251 0.0033904186059098133 +3643 0.003076116592568399 -0.0027952899532048903 0.0033737000342813116 +2404 0.002098738361410363 -0.0019884584999908584 -0.0038780963237322053 +3490 -0.0013296312948146366 0.006711512742152614 0.006078651732290369 +2238 0.005023701194290645 -0.003559564871823149 -0.004648004546287966 +2230 -0.000283525132376681 0.007743885555304396 -0.002443536407090525 +2229 0.004385401500804488 0.006507111699156614 -0.0003949950197224465 +3605 0.005115852208889116 -0.0009098946126222627 -0.0026339976984880013 +3613 -0.004804105804562782 0.002269585221702785 -0.003721077186978835 +3566 -0.0034894857411971905 -0.005200404546435097 0.0005241953498607017 +2284 0.002726719914441183 0.005622125665959702 -0.001517365925034273 +2283 0.00026688393559412907 -0.0021369677949197997 0.004789465303103869 +2421 -0.0031450130809260873 -0.0009027661559336193 -0.005688312793906932 +2282 0.0029148297737682087 -0.00035739272393831375 0.0020141628513200946 +3496 0.004430554316038095 0.0036652984871950495 -0.0020563688458849257 +2280 -0.002982607895687647 -0.0008961228946967692 0.008043946081849052 +2422 0.0010574979748838066 -0.003344435401261543 -0.0018710354194065434 +3631 -0.00033243197760343023 -0.0023786419700140638 -0.00046094422057548254 +3505 0.0017418630613871833 0.0021739846991119874 0.004002201377830124 +2244 0.003870716896847289 7.415743276148633e-05 0.006345252352014539 +2242 0.003523563461151322 -0.0036202088421321793 0.0019342719505799947 +2241 0.0052910985182805905 -0.006615993569295123 -0.0013568492969908282 +2240 0.0037144957884220216 0.003584668430055144 0.005190207123158772 +2239 0.0008168875046980525 0.00744870037619243 0.007504804644498991 +2233 0.004737395586734497 -0.0009300233886826667 -0.00455774172694237 +3493 -0.0007331002865835456 -0.004261298890526836 0.0026316521952713568 +3516 0.0015193668716410786 0.0005317666337777208 -9.056436622234313e-06 +3650 -0.002247276273761818 0.00025309544591292047 -0.00020540432938314732 +3669 0.0037105936111270508 0.0013125276670863054 -0.0005054052775991424 +2243 0.0033134515694558096 -0.0023193281921970845 0.002538164975786808 +3616 -0.0011221431500585295 0.002384350915104881 0.005584822321077729 +1758 0.0049077875767579 -0.0010931360689612447 0.00608666324763996 +3537 -0.005665575410402571 -0.006942484015543251 0.0011005384433695911 +2438 0.0027652961497207263 -0.004716679400167992 0.00048447181788785335 +2198 0.00379845519046189 -0.003225362598734495 0.00011534058015752536 +2201 0.0017664660568256023 0.0023174013780081822 0.004387682659615435 +2199 -0.00139790572432177 -0.0013013163095724088 -0.0015840808443984052 +2200 -0.0029869785323980006 -0.00045236297704333116 0.00170626858266409 +3533 -0.003727509919270063 0.0011630475493802405 0.006800955652765362 +2250 0.002489594144139172 0.0006794327799800081 0.0005072411926439443 +2249 0.004679411357373865 -0.0001845386563095536 0.001537406375016705 +2248 -0.0022447044664392498 -0.00026580580277065635 0.0008348739813187026 +2247 -0.004602968367540968 0.000754990314262638 -0.003937733887360823 +2246 -0.0045400177689921585 0.0030489667486529016 -0.004242303316830909 +2245 0.0038966727598079534 -0.002387795578879138 -0.0017286253129529814 +3551 -0.0034640698492962732 0.0017945982646738838 0.005318086672864658 +3639 -0.0014345567555226868 -0.002896285296133761 -0.0025557211277484103 +1604 0.004251624664032223 -0.004301077100497986 0.0033591098076130132 +2439 0.007212497513309936 -0.0050845278671555715 0.0003745791975370379 +3630 0.0005388352008782058 0.004931720211769558 -0.001790924284511948 +3478 -0.006896298727689164 -0.0014183566640942392 0.0013341598503416364 +2403 -0.0011105210812619559 0.004613694296895682 -0.002997926666451568 +1629 -0.005942000261861458 0.0010682269095448494 -0.002016704415348972 +2448 0.00116751257021867 -0.004255601115540181 0.000393881996654927 +3704 0.005143414686216446 0.00307174067052736 0.0038688278643620013 +3644 -0.0029743449712339187 0.007531738206934944 0.00026783091384702056 +2256 0.0009821952290944252 0.00323514807552031 -0.004519902784373089 +2255 -0.0004511373617917357 0.002848722942218592 -0.0006983855591042532 +2254 0.008238447641486216 -0.00011783493238551684 -4.950021089587342e-05 +2253 0.00209117837923425 -0.003311399103743157 -0.00014772364356964215 +2252 0.005235121414882534 0.004619255526961703 -0.002617842785762765 +2251 0.000862315201431732 0.005840185522234485 -0.0023334113182252934 +3507 -0.002302885665510539 -0.00733592254463058 0.0038471368600414145 +2443 0.0010621623000048313 0.0032497203766774668 0.0009086953466650747 +586 -0.004462141363216974 0.0012940029659047197 -0.001123474960119145 +582 0.0045259431969057315 0.0047571156758439035 0.002026033637284448 +3379 0.004687951211687423 -0.001452289607128603 -0.0039029253753063158 +779 0.001982731974782221 -0.001620636505438178 -0.0014226863666119552 +577 0.0009698167900935072 0.000327893327844189 0.0015703268496786867 +774 -0.007054295387244651 0.001351379105865297 -0.0024094042317837133 +769 -0.0029416122558054737 0.0011525065179741334 0.0017952354300389871 +773 -0.005021353674864541 0.0006537173084147147 -0.008141895895932123 +584 0.006181196603695567 0.004894405518455058 -0.004647649397957154 +2266 -0.000772387519045067 -0.0040916692435858 0.0015958344460112496 +2265 -0.0016021828245391812 -0.00013544801451736795 0.003940170637780128 +2264 0.0024700276533328827 0.0069162049566813145 0.0023402514406153357 +2263 0.004374108407351389 0.0007208824338219016 0.002521418235658925 +3536 0.0008976121015521929 -0.0018589222807895336 -0.008625347859324216 +3538 0.008203232709975469 -0.0038586768026900352 -0.0023040287328020526 +3649 -0.004719772715065809 -0.0015536723837865276 0.008164093273613414 +770 -0.002999755144403654 -0.004485506820827868 0.003726833464655659 +585 -0.001059222257347669 -0.004990115999081602 -0.004755070238177361 +2423 0.003483214415564164 0.005360755895744409 -2.1726066128647542e-05 +3756 -0.0029318011395128673 -0.0024414659788464864 -0.014434195282832742 +592 0.00764117186875625 -0.003916357142802195 -0.005831706855027288 +591 0.0013136189992080073 -0.006607119236067561 -0.0038069907572919988 +212 0.0029565287026697856 -0.0044488529833543525 -0.0006831054647127873 +2487 0.0031362800616960926 -0.0027550700477679923 -0.0023565833403338655 +2489 0.0037182060982529556 -0.0005128954511749885 0.006534453035145558 +587 -0.005797659865886518 0.0048974198184196455 -0.0015070818035783926 +588 -0.0043910696591481745 0.004461482388360754 0.0025922036637213226 +583 0.003523890306822821 0.006375547221463717 0.0031468267646521807 +3667 -0.004817771552328777 -0.0054019267424952775 -0.003939624972626069 +2274 0.0035155233273094187 -0.00041814654178687496 0.001383867470014606 +2273 -0.0036427369991509986 -0.007917677078024541 0.004704744213207237 +2272 -0.004115348649771851 -0.010324061008064248 -0.002526687414806702 +2271 -0.003388435956909913 0.00043966760585671064 -0.003802126752534933 +2270 -0.0017114103807850888 0.0019800835603444858 0.0003557566975656013 +2269 0.0034585110212048396 0.003304241365137339 -0.0018262001622876849 +594 -0.0004324616566890718 -5.099727228645793e-05 -0.0010885302903298616 +593 -0.0004247958133098329 -0.0002596788265001551 -0.0021852641259004603 +589 -0.00351534231611565 -0.0031058127028033688 -0.0020572834796528917 +3675 0.0028928238871327055 0.0028936713338092845 -0.003462096357837526 +3202 -0.00222226517523857 0.00220327492887961 -1.5549634155459884e-05 +590 0.0004892683699953961 -0.008576085472772296 -0.004442751562249569 +431 -0.00026294080754518786 -0.0005828058794857196 -0.003603063832516686 +780 0.000944277943630209 0.004905351425325195 -0.007272544573058232 +2490 0.005475062635901092 4.8221981682490795e-05 0.0022313156897502033 +2396 0.0001546482665573438 -0.003053614028140843 -0.0002701021481133076 +3528 0.005287190068844625 -0.0018671864501861206 0.0006468470517432547 +2275 -0.0037370702319452437 0.0010819967056818211 -0.0014717190061616545 +602 -0.005427529539004532 0.015565558379599624 -0.0023037586130137664 +3572 -0.00044478919303786793 -0.007319066162836741 0.011371906743331548 +598 0.0010903563245987847 -0.002702421342012325 0.004685747635657697 +418 0.0009205271985883961 -0.0016250499732076622 0.00542760719079406 +597 0.0015438874586414394 0.0043176950541240645 -0.002754981873405755 +3710 -5.015775413669457e-06 -0.007529768666268829 7.956167565077183e-05 +596 -0.0011756204539073323 -0.007808824876622284 0.0053675012186099914 +2293 0.003108470169294641 -0.0003490523831217034 -0.0006708091077652897 +3513 -0.0032640467751216314 0.0013460615434204752 -0.0020114447562057432 +3588 0.009834164836098712 0.0036044698682945924 9.055708423771493e-05 +606 -0.003655042250951257 0.0003360240242838682 0.008033102877693446 +608 0.003677713022811472 -2.2142966937996045e-06 0.009593939323912688 +609 0.00022445445816350856 -0.0004990867846909649 0.005622268899343054 +2301 -0.003957701468271147 -0.0005215251031886043 0.007940545181134302 +2285 0.007395915317789188 0.006994931253524937 0.003128992017839519 +2286 -0.0012214910809936262 -0.0002454554377555585 0.004971407814162256 +2281 0.0027343266534828365 -0.0008411150209218251 0.005365036421608573 +604 -0.006055242581124009 0.0025927504830123584 0.005997281523641351 +3665 0.0014992364615763626 0.005055718334846347 -0.002554177557569619 +612 0.0010928690769770252 0.00087912970286603 -0.005824454331107559 +2459 0.005470306886267684 0.0021626856649133437 -0.00220376259277108 +607 0.002856009355751905 -0.006634979526385003 0.0010654178399468464 +1739 0.002526507399525495 0.0019643757349517015 -0.00510396674981764 +2292 -0.000312428372190585 0.003910864344739074 0.0024872037137805263 +2291 -0.0012347775769689206 0.007170238158828671 -0.003276699053262845 +2290 -0.0022658101622780023 0.00518794577164878 0.002909653577995269 +2289 -0.003809607715227297 0.0034188779445572825 0.0010833385557648134 +2288 -0.003135589033996896 0.0040178173327766655 0.0029863440592947546 +2287 -0.0021653161336488112 0.0009381496691733788 0.0031537629797621764 +3470 -0.005404852652296948 0.004935059420421185 -0.009708923859781329 +3483 -0.007048466045579855 -0.0031418018940448955 -0.0045004129988320055 +605 -0.0030720823987983926 0.00048286903532332036 0.008314335202540796 +3553 -0.007446918712900601 0.004904095978045518 -0.003415435999232469 +807 0.000501493740627843 -0.0009941945767996021 0.00435419856071273 +2294 0.0016592192158186342 -0.006526352229698926 0.002803761955743043 +3486 2.830600576474615e-05 0.001444633897977859 -0.0015120383470175723 +2297 -7.743921432129746e-05 0.0022409636467711873 -0.001536030481155913 +3653 -0.00903742567362706 0.008898919756917058 0.007905851148933886 +2485 0.004996381987806731 0.001677447483391087 0.006724159563076295 +3660 -0.0028302097960705244 0.0011122719634505693 -0.003179968241805705 +2486 0.0057287537976783275 -0.0015639479447233943 -0.000494751131938218 +3500 -0.00023176594952196264 0.001729292392956169 0.00036349062008836906 +613 0.0025167632863082753 -0.0013420159147136048 0.0029918761875960334 +3589 0.007832239530351757 0.002349867054987258 -0.0021376989947296185 +2361 -0.002698113853622684 -0.005172037893620968 -0.006032639753972633 +2481 -0.001156324349603094 0.0041751897459910295 -0.0012489669008146163 +2496 -0.0016990557756019528 0.001867803365569755 -0.0021804002966328588 +3514 -0.00045736191020045747 0.006077208020341637 0.0014494057699318418 +3520 0.001537667163704423 -0.0025405253564859593 -0.0029459775123941304 +1705 -0.006976226699020552 0.0011897267579244772 0.0008238440757166251 +2499 0.0014972291556062695 0.0017644556184254654 -0.004341250020687598 +2503 0.0067147425607910725 0.0006161841612186871 -0.002014924382064425 +2551 0.006875128067334234 0.0032481090902175334 -0.0007772504689252304 +2552 0.00236525106448897 0.004892337615603404 0.0025028946912319045 +2553 0.002099808725744507 -0.0003001621100032726 -0.0033949770931869733 +2554 -0.0010130611214021093 0.005304465339742041 -0.0038750051130740145 +2555 -0.0021483847875215824 0.007266480572636744 -0.0056570419517606085 +2556 0.004530658837845565 -0.0018752351835410518 -0.0028870311984915335 +2498 -0.0019293830340602442 0.005776996145686697 -0.00020783713105108749 +2504 0.0002011651339848735 -0.0004279472739302497 -0.0016776293913268567 +3840 -0.005016923972002336 -0.0015944452112271724 -0.001660728507810587 +2360 -0.005307109805981278 0.0006570750047988977 -0.0012631664236106414 +993 -0.00028984733014879115 -0.001174308617306351 -0.005896497847136462 +2500 -0.002532885946663977 0.0012713454792095706 0.005600439174932407 +3466 0.0004086088392196206 -0.004683490130765509 0.0020952093149849524 +2353 -0.007523528288511613 -0.004322346246308082 0.004171567455133783 +2505 0.0016856311064243218 -0.001906611065924008 -0.0026229699206011497 +3798 -0.004239122368617457 0.0045310058645208675 0.0028139421460206936 +3805 -0.0021928978162247563 -0.005577060675302099 0.0012438946711231151 +3406 0.0023044805642782693 0.0009051229347925647 -0.009715224671786106 +3746 -0.00025062024974555107 0.005514569282447026 -0.006087758464376285 +2368 0.001614510448190113 -0.005670373277466997 -0.0032248968273590945 +2563 0.00040099986816835977 -0.0012287336400289802 -0.0009612222846010416 +2568 0.003024666221083367 0.0005282317621056726 0.006403357708472095 +2559 0.011917594303457818 0.00033914070956800996 0.002968181840255835 +992 0.0015710797387633994 0.00024412960202265378 -0.00311450448934885 +2369 0.001939728745167779 0.0026620064356781513 0.002388477468629388 +2518 0.00494071512750236 -0.00026422862327767923 -0.0033589341914307498 +2462 -0.0041193605483097195 -0.0035880484962498905 -0.0029409577311477995 +2519 0.0008476991818590115 -0.004744372244846724 -0.0010505411535572733 +2510 -0.005508551940201667 -0.0007530545108285307 -0.005435309443634945 +785 1.3197863238293578e-05 -0.003440599497692895 0.00021177537645181095 +2564 -0.0032399198516929453 0.005633668716162013 0.0008886900306952304 +2520 -0.004811845416967709 -0.0047276044671298026 0.0050789690360477785 +2373 -0.004920022673048006 0.0092651901318525 0.0006685750480626856 +2516 0.001967662379249449 0.003092828481416571 -0.002735756486972674 +2420 -0.0037089034041723297 0.0005355048235768763 -0.007184317908551698 +2565 -0.004732944423813116 0.002136561594018157 0.0009269609844187079 +2566 0.0036287977467566357 -0.0002805487843033008 -0.007368732941547251 +2567 0.00019552050670091026 0.002088956498830961 -0.004540769971736416 +3734 -0.007085765790938223 0.007821839088554685 -0.00704977325685933 +3778 -0.006034534182022483 0.002616004876949354 -0.00040380025572157017 +2380 0.004001113852863686 -0.0024077025593303757 0.0004457330578140293 +2379 0.001964698349150466 -0.0017168211793277158 0.00300523872663644 +2718 0.0005224292482088954 0.0006521697518177515 0.00299295428409016 +2378 -0.0014865120212412914 -0.002680900986100763 -0.00487951429378067 +2371 0.0023795387648083742 -0.009349633404536298 0.0020489600823283306 +2515 0.0035877261495133863 0.002126037967724513 0.004189942750656351 +2372 -0.0022122693710950937 -0.0029991832121407697 0.0007959398448194354 +2526 0.004386750213898859 0.0007195165638682571 -0.0012974593579035915 +2525 0.0029856642134588884 0.003556260631533704 -0.005673651941375114 +3706 -0.008091398375839371 0.0012642630184599428 -0.000321377679865905 +2884 0.0031420384477575283 -0.001815099351657068 0.005599018787664621 +2377 0.004699250233092771 -0.004371401721675271 0.0010846774468867275 +2570 -0.004238651317847532 0.005227920521287908 0.0022733276727558644 +2569 -0.0008366177701183807 0.007781585069357425 0.005475783937608609 +2574 -0.0003914668976562449 0.010199895130804259 0.003425719145530312 +2530 0.0009169812422437437 -0.0009765087893356914 0.0022371068779841355 +2381 0.0001913940295933289 0.0005426373289057423 0.0011336974440423208 +2382 -0.0009363930165059 -0.009089052639433525 0.006982127339189735 +2461 0.0017078485454361922 -0.003116336104338087 -0.004598645050372997 +2531 -0.009864470435235405 0.005250312896490828 -0.0017140349383475714 +2532 -0.004220996211638419 0.00433458263925432 0.009295581200316658 +2572 -0.002829411747319711 -0.002949089733567717 0.00035418912658080794 +2578 -0.0006035637756176218 -0.0021211862642987974 0.0007183996473005053 +2579 -0.001698393960051388 0.003372235091576815 0.0002551079676792791 +3703 0.0033140190987417024 0.004361315354750702 0.007393131127518755 +2920 -0.0012241661274544167 -0.00048285272130381657 0.00025475959661259626 +2527 0.005278657260914147 -0.0016948752885210998 0.001874435013725953 +2529 -0.003533072588138196 0.001469138584113076 -0.004753510618424956 +2528 -0.00287207100948442 -0.00395215089303934 -0.0005678279164534637 +2576 0.001693284041624088 0.0002671959760510337 -0.002596357145878811 +2577 0.0015487309019400744 0.0010000634375480326 -0.00324451290884646 +2383 -0.009596299349510898 -0.0016541734146880967 0.003923964636517132 +2388 -0.005347487442588688 0.00308756652061473 0.0007196843453728841 +2524 0.007139465370330794 -0.0033663914017059405 0.004292256881302958 +2342 -0.005955194058545182 0.004502615618377343 -0.006361092549856126 +2536 -0.0015509783123580946 -0.0007232864578547956 -0.00201660812188642 +2582 -0.003751001589629603 -0.00524975490224377 -0.0002914329571848323 +2583 0.0051497864092431905 0.001238225400129337 -0.0007664772411704 +3683 0.0006207302259631802 -0.003468247289612233 -0.0011313093245365767 +3803 -0.0023858153134531045 -0.0023387676011918613 0.0033109389036962535 +2533 0.0019286241537312978 -0.0038853790072792462 -0.00843826783609405 +2537 0.004701718105166042 0.0015470861762405795 -0.0032052559950069698 +2344 -0.003749335289160969 -0.004104240356940665 -0.003406106874319882 +2343 -0.01053123563515529 0.0018910518829823484 -0.0030933899236732323 +2590 -0.0004022834358223579 -0.0048378962060907724 0.004064258482368506 +2543 0.002593269722315295 0.0016585819116088927 0.0015585922969069354 +2392 -0.007253329406133469 0.008809082355589836 0.004293186986360713 +2581 -0.0045802890019769164 -0.0003312189543761849 0.0037871808193821535 +2535 0.004260237715235336 -0.0019503116545536152 1.8974998325611977e-06 +2391 -0.0017473735815930992 -0.003423760475799148 0.004874269651478594 +2534 0.004156135601624127 -0.0002499455759172197 -0.003567133585806766 +2547 0.0006272072514605887 0.007821947904582242 0.00012417900264634422 +2548 -0.0044423716738196785 0.002549113711421374 0.00046360722319968795 +2549 0.0012370307444474209 0.005909640599226142 -0.003337172213577218 +2354 -0.003320558384001007 -0.005250947245851455 0.0035888437206308623 +2691 0.0008243962765180876 -0.003142184837224435 -0.005729454874742161 +1198 -0.0006949289876262421 0.0005416768243260539 -0.0030666209624295076 +2415 -0.001285207114529363 0.007087415197909818 0.0010420437895881157 +2546 0.005354059611416821 0.006171856654274774 0.0007883565854671548 +2352 0.003266333497243783 -0.0010810043357692709 -0.001402256862865794 +2397 0.0063375375303787425 0.0023486735007415727 -0.008715767485390718 +2545 0.006370256516403525 0.004152884291017184 0.004253446595026394 +2550 0.0014818697241605284 0.0018826338459986725 0.00424680336154682 +2587 0.0035799109851455723 -0.0035775367435364643 0.0007500582883514578 +2588 0.0008510428463100487 -0.007396255028130297 0.0025793861154144605 +2589 -0.0004611846114349252 -0.0025463338135957867 0.002859979763965053 +2591 -0.0016535277435159477 -0.0014072784247504038 0.004361434398717138 +2592 0.006302694223826478 -0.0028009396612541826 0.001661341737660054 +3740 0.0031330131032114477 -0.0035387310582460246 0.0017638477533280864 +3773 0.0024434406972785334 -0.0024926091168203375 0.008358619644992854 +3811 0.008034224220480356 -0.006719535340181404 -0.01292939150483705 +2544 -0.0023352327487532938 -0.002951761294110733 -0.0027704029408627826 +2347 0.004542050749278944 0.0028662838449827403 0.004889226429341204 +2348 0.005924021603622134 0.0015546732595565047 -0.0029308325036867962 +2502 0.0021864557620207923 -0.00269552158005231 -0.004876365892299726 +2692 -0.002507501209226471 -0.0036913098642708682 -0.002183860557740113 +1387 -0.0033591344853513986 0.0005997282902541894 -0.0025949368611909826 +2501 -0.006961337009956737 0.007996527474848256 0.00500778505212297 +2539 -0.0022524486038298036 0.0027683196778481504 -0.002000266530034444 +2693 0.0006787583905059777 -0.0029124302208191574 -0.0032408276810333577 +1539 -0.002806888550786406 -0.0025452415540445326 0.0025013074050470614 +2407 -0.002637321348751614 -0.002549698852471978 -0.006123538147830192 +2408 -0.001147855550651362 0.0002894456935823981 -0.00186515510827398 +2597 -0.0033011916818514193 0.0067259002321256285 0.0028480049494225682 +2599 0.0005083211129262889 0.003645060296605157 0.0004591225203763113 +2601 -0.0107941998577789 -0.0009737128545003472 -0.004039897273761968 +2602 -0.0044737520983318905 -0.003921601943584642 -0.005838926463534087 +2603 -0.005122914689221145 0.004521962551161095 -0.001264737724945281 +2604 -0.0024426783507885776 0.00035795149202084834 -0.0015284796329941004 +3750 -0.0009429864804270594 -0.0028472234464517058 0.007038842151409977 +3860 0.0046659603960235736 -0.0012762704046338769 -0.005168524886248464 +2596 -0.006854095271086807 -0.0034479483122493845 -0.005926117031979334 +3835 0.0005822315723102623 -0.005915441555256671 -0.0007828884378115359 +2600 -0.0017854511076770636 -0.00024237776801174497 -0.009226637157775277 +2401 0.000675170573872684 0.01161302830975473 0.00020034702213673241 +2593 0.003913789343960719 0.001657376606712839 0.0024634576601231454 +2652 0.005161074798686521 -0.002107336204526673 -0.0028749778665086902 +2598 -0.004551818442055715 0.0017500777816454164 -0.002606043759763656 +2460 -0.0034046534056786197 0.0037668448462537304 -0.002533158674277102 +2558 0.006887018135618971 -0.007515608143554377 0.0027226669268236078 +2456 0.00032060406776981325 -0.0024802844820587438 0.0019538333696699508 +2455 -0.0021515690130691862 0.003550583914988553 0.0026075845825182463 +3871 0.00406032292882601 -0.005786454245106235 -0.003866240716007837 +2605 -0.003059931969180532 0.006877913829364645 0.0010984138118468264 +2606 0.0010602399004898582 0.003404814379254566 0.0062393329585767 +2607 0.0023709569727246777 0.00309302538412001 0.005941930619643971 +2608 0.0032738573833762806 -0.0006538438790323733 0.0036640875391319395 +2609 0.0007674822255735719 0.005649724319191141 0.0004769890021601 +2610 -0.0005197018343115234 0.010571024796889913 -0.0034360810960369303 +3642 0.0077767568096493165 -5.661366407104412e-05 0.005215545783328156 +3677 0.002030081110941282 0.0019028631604628434 0.008199900824320904 +2351 -0.0012638856167819432 0.00210531862068635 0.0014285368374205474 +3628 -0.006874112423226151 0.0050064355810212745 -0.00046208434534591845 +2426 0.0020613278344527963 -0.00045242305558943684 0.0013626854984490541 +2611 0.0039469159774739755 0.007873950260342539 -0.0017653986295281677 +2612 0.0037917989931447976 -0.005564611292892625 -0.0013610625904485025 +2613 0.008261050783609817 -0.004512661028451385 0.0019167404630896345 +2614 -0.0023679892821058916 -0.00349117516377802 0.004626089132793334 +2615 -0.0004347143404501284 0.004184741287441989 0.0051440192555374945 +2616 -0.00416033638408639 0.007459471906747512 0.0013642383878621643 +2618 -0.00498365288726361 0.011186881042783241 0.0012608819841112122 +2619 -0.0018953434294286468 0.0007775526776434737 0.003045959177632795 +2916 0.0018661165925994612 0.0008411213544563079 0.005172792589452615 +2424 0.00421622017473081 0.009268357560874017 -0.00017076598427062642 +2425 0.0004182553338499362 -0.004686376897624915 0.002809667218308073 +2430 0.005441755996633596 0.003097590858760224 0.002062501896077134 +2427 0.000160794790580147 -0.0005680347302074999 -3.302269669797567e-05 +2429 5.866407713151668e-05 0.0027698389690030438 0.00011412474975311014 +3758 -0.00017999753581377412 0.008315746676334074 -0.002381399740735972 +2419 0.00265676434498691 0.007814423805598993 -0.002934029016677184 +2571 -0.0019552324840525284 -0.004369427132959183 -0.00662824711376077 +2575 0.0034793173236629888 1.3483693884197606e-05 -0.007912764936715718 +2580 0.0028734453181010347 0.0008650617828208388 -0.0020673312970454867 +2428 -0.004649753480384761 -0.0034295479523109122 -0.0027958076445209336 +2620 0.0007519600383827035 -8.130714756695547e-05 0.002991942449285402 +2621 -0.004565377619827817 -0.0009094063582099926 0.001100817488084788 +2623 0.0003607783243039326 -0.0022057048605086367 -0.0033793411456594503 +2624 -0.002873582210914552 0.002302238571803971 0.00027042844234374125 +2625 -0.0045830521024756606 -0.0012905728673802365 -0.0004981879919289475 +2626 0.0031611278705306876 0.0032952098472968042 -0.004905018053519458 +2628 0.004210789448779337 -0.0005321306182080703 -0.0009375170134256786 +3681 0.008205988857965403 -0.005541159286718585 -0.0015026476278314311 +3776 -0.003187778820715377 0.0026876682767428025 0.0005067679886089136 +2433 0.008029690815750883 0.006449156448811371 -0.004155527435234597 +2434 0.0036201265530186257 0.01032172348089483 -0.0018826916588521388 +2432 0.0036613185929799427 0.0021072420847829125 0.003829243805690542 +2389 -0.0014892828445451681 -0.0006825550682402554 0.0064925783347217075 +2394 -0.006803069194063427 0.0027104528201914307 0.004931678342212715 +2584 -0.0018523187432845053 -0.005759195477364697 -0.0019377235145890464 +3720 -0.0037668429618713368 0.0006724983654727595 0.0031156635662615085 +2441 -0.002289815715742698 -0.003700880914003508 -0.0028829085144771323 +2442 0.0016275488405838266 -0.00018082330380608577 0.0008213490700281356 +2629 0.0015309360016814374 -0.0010889182868555895 0.0029755835710376832 +2631 -0.002002501041835886 -0.006137907716999184 -0.0016975131188304957 +2632 -0.0035834105177794625 -0.007006288659809748 0.004654646603751443 +2633 -0.0035534092433377384 0.00696051731651415 0.0057879570531482955 +2634 0.0030943193347123723 -0.006884214143707688 -0.000879492759077415 +3867 -0.001230588401664938 0.010873503007352379 -0.0008291183534515851 +2445 0.0004945395768758943 -0.0011346933524139643 -0.006484446272981591 +2440 0.007795101490653164 -0.0013335200987944688 -0.0009221461526514713 +2390 0.0009854211280186536 -0.004334408043648626 0.004848527583105348 +2446 0.0039431861093878065 0.00016097975367589446 -0.0011183582934993052 +2437 0.004930651288989087 -0.0014976906770461662 -0.00010876496604512464 +2630 -0.002703993289262649 -0.0033614954194586054 -0.004871825205051133 +2393 0.000789083558913058 0.0023769243372440112 0.0038118534203884172 +2595 -0.0008720994566018117 -0.0043681804768059785 0.0021332417857585243 +2405 -0.004791102722006088 -0.004207317122871019 -0.0027324679604468043 +2911 -0.0015012946432512758 0.0004481958306416977 0.003446118396273733 +3687 0.0005551091961204923 0.0003642771908241385 0.016412925687940963 +2444 0.0035657116356844903 -0.011755958332460013 0.001288071870061592 +2594 0.00021638053721895957 -0.0066649539165644514 0.003757077256457701 +2635 0.0012635862879927674 0.0006233631517309782 -0.004646892160997438 +2636 -0.0010089813915813949 0.002886745964952953 0.002113083803498484 +2637 -0.00021158948035171363 0.0003890457573276523 0.004733500485963142 +2638 -0.00032950779358609266 -0.0032244412929351403 0.00373033934548538 +2639 0.003996998046933547 -0.007372013521508381 -0.004421212891131172 +2640 0.0039818319268779805 -0.005103492765269541 -0.006125454282816382 +3744 -0.004318286173406156 0.002555252018957474 -0.011190998281925489 +3712 0.0018944312654216107 0.0030740639743729366 -0.0009801933036618264 +3787 -0.0006245958364663809 0.007104686014327562 0.0006376681599051069 +2406 -0.0012477615948079902 0.0018819111782665957 -0.0023454499686162956 +776 -0.004297008145228391 0.0019237394111670122 -0.0031129681378511223 +2452 0.00010532955646080537 0.00010939402037191454 0.0017297530429042003 +2643 0.003964784226282837 -0.001154692493755278 0.0037487955360407123 +2645 0.0025989367249640927 -0.00360129892438644 0.00031615458925108995 +2647 0.008335011953808332 0.0007626608388851376 -4.9555945706834914e-05 +2648 0.0012088323568134672 0.0033694445529225837 -0.0019526016797760145 +2649 -0.0007275507826833658 -0.0039950056165827235 0.00012026413295883478 +2650 0.0017111504688632306 -0.0026978475252148765 -0.0008313678388035549 +2651 0.007010512168978055 0.0004740610649705068 0.00471817340497965 +967 0.0033467590946431184 -0.0027266671218901103 -0.0039763588192309575 +968 -0.0007668572088828365 0.004237726456276293 -0.003502833234550449 +3729 -0.00097864631540357 -0.0008681078618871001 -0.00298430850011685 +2641 -0.0009926634091055474 -0.0006828470232682441 -0.004986441044673316 +2642 0.004620200949373602 0.001134250525443843 -0.0006567364491307222 +2646 -0.003511268554719606 0.00020087574701818984 -3.027042470490815e-05 +2458 0.0012271967086452688 -0.0031890237961072782 0.0032088121247270127 +972 0.0008538130611540835 0.0021837826823705654 0.002103535497348788 +771 4.358924670625467e-05 0.0017310901063634725 -0.002312343202726821 +777 -0.00026059336682576203 -0.001603392010393802 -0.0017316925500537965 +2453 -0.002378470213801745 0.002500049027807402 0.0006065129713127206 +969 0.0023641440162416386 0.00035952753088230524 -0.004737073757190044 +778 0.003043905539543424 -0.0035559385228324733 -0.000911698681965567 +2466 0.004869669678190016 0.0017045765504892702 -0.00992462984695524 +784 0.0008767424981400389 0.002561647579619279 -0.002830481352745778 +3713 0.0028602585714667876 -0.00012413145465734355 0.0017415322059245138 +786 0.00034608838941589155 -0.008976805732791483 0.0004118711715384653 +2457 0.00018387040868890405 0.002964331011825821 0.006490267821729611 +2653 -0.00288328369674891 0.0015351228540257337 -0.003505729753685634 +2654 0.0006767955379234287 0.0027911129847507767 0.0041109621302136065 +2655 0.0014432136195131442 -0.001524698802477847 -0.0012631445613631932 +2656 0.0011394743803547502 0.0016385618982942666 0.005083876104345774 +2657 0.00234090128532541 -0.0023206910291551732 -0.002885498527512401 +2658 -6.589769727589212e-06 -0.0006156522244569554 0.0010689223904017462 +3764 -0.0041917547360300405 0.008031422644673198 0.009915086567904189 +783 0.0011978743313317546 0.0019378259657592317 -0.0015349866193050715 +1357 -0.010754870291036143 -0.0026515245769610516 -0.0003582177340764958 +2402 -0.0028098669148642693 -0.005177572992718353 0.0027009519924121542 +980 0.003780211683545022 0.003330006013096189 0.002174227162368077 +2467 0.004082808622454864 0.001438010334340464 0.0022684718774502923 +2617 -0.009857768646678694 0.0038857601523037337 0.002802288047695536 +984 0.0065139547617722015 -0.0015022653303990495 0.0027146775281028136 +2471 -0.0035698971374030853 -0.0008689709174178932 0.0019620568923215858 +3481 0.005959395959394953 -0.001715526187404982 0.001722970071130648 +2468 0.007122386004637281 0.0005222534768889452 -0.0002002352127925366 +2469 0.005317180740325671 0.0011294118639335812 0.0007812350800633077 +2470 0.0031198308369058073 0.0002550505407899732 0.0037127078488662178 +2659 0.010599990237488775 0.0026383872124104025 0.004110500417352305 +2660 0.0032692959380831296 -0.0013197222188586883 -0.0010477605751690396 +2663 0.0018653954873622675 0.0003724415636581144 -0.0004373616597813067 +2664 0.009443131525976829 -0.0008077405928637885 -0.001677203559945451 +979 -0.0020054003828844057 0.0030840147473824788 0.005461155258060601 +3752 -0.0010112820538513163 -0.011280372953128058 0.005639868556504859 +2477 0.002686105698429363 -0.0023335314366919363 0.006045372486549077 +981 0.0015684975241953049 -0.013748972696167492 0.006892384393182324 +791 0.004942390329818101 -0.001360628600388217 -0.0005063655181488113 +2472 -0.007491595182480794 0.0010687534859553532 -0.0023078580067746896 +2476 -0.0007154072974566414 0.00420808664417811 0.002714755575451337 +3691 -0.0047703905344071255 -0.010521297469950645 0.0038071308493621676 +792 -0.002625222966603549 2.7888158726766388e-05 0.001466441142470795 +2670 -0.002945030745524373 0.0024290900143583366 0.0032042413639319454 +2665 -0.0044449596575157095 0.0005342806061228781 0.004188679945209318 +2478 0.010317003015794591 0.0008426275379395347 0.005909768241344323 +1559 -0.001868635229015848 0.005023716211891733 0.005312972797839401 +2622 -0.009252975228895939 0.0076021569430627595 -0.006491151493221455 +2431 -0.0006007911679831036 0.003311339871376786 0.0029798171052938514 +2435 0.005794420009772123 0.0006843283668779604 -0.005663887721783389 +2436 0.0011794239899791 -0.003667561863471914 0.00029602153633234663 +2338 -0.002299025654563717 -0.007073813431458332 0.0012629000173416311 +2475 -0.0008527409748420944 0.007319483826805977 0.002691961463028638 +2484 -0.0032698800989345253 -0.006351223206440735 0.0025269171161173736 +2479 -0.0014725625375300617 -0.003049184405872209 -0.010644972525474904 +2480 -0.004567576833155806 -0.004379383456994296 0.0016136987447985984 +1376 -0.0006150158723642396 -0.004204772867469628 -0.003890301993999497 +2482 -0.0003612257016618395 -0.005861927942514542 0.0015698018445583107 +2671 0.0048604302987283405 -0.00910128282480794 -0.0017215755375230286 +2672 -0.00023671474554297486 -0.0032761673466600227 0.0001688227058853341 +2673 9.985124692585298e-05 -0.0015003549213316659 0.00476032476307173 +2674 0.0020829323875077087 0.0025973183370954604 0.004929432466489552 +2675 0.003820353012388717 0.0014627566710487712 -0.004097954633088091 +2676 0.005609117115332225 0.0001543856944976534 -0.0015606144645901009 +2713 0.0008223874983944667 0.0024923331369144687 0.007372674302492125 +3731 -0.0009166485071153773 0.002538621171795006 -0.0011527434012334947 +3071 -0.0027628171653464187 0.0009675595215066834 -0.00500587746986054 +2473 0.004398877273436631 -0.0012002806799008144 0.006354511591040292 +798 0.00033468104681851383 -0.008821930780636617 0.003664013554264529 +797 0.001470049092147779 0.001704331883131443 -0.0059114606107418454 +2398 -0.0012437068234103163 -0.0007436093845499843 0.0027585156568092815 +3692 -0.003718246151101125 0.004357675086280108 0.0038513774506595097 +2681 -0.0019906516145861723 -0.002164662418773561 0.0016106642749845765 +2483 -0.0042702956989624005 -0.0002149129339553577 0.005010363150364667 +2488 -0.0013947946773290591 -0.006071417227911246 0.0038687362834293874 +2677 -0.00044284800408355947 -0.0034342837093117055 -0.005075675969686482 +2678 0.009623162942966269 -0.006314342055497183 0.0009207667012778266 +2679 -0.00018139367467484837 -0.008136692106783 -0.011262609205197487 +2680 -0.003358804749844972 -0.003717205351929068 -0.002404012856228698 +2682 0.00019650179734589205 -0.003184845227019965 -0.003045875523855318 +3693 -0.005944125243972828 -0.0025854316911118813 -0.002347121103587161 +3743 -0.001954741748965885 0.007841780344954136 0.006000356224984635 +3748 0.0015914819400476973 -0.0006267552591657772 0.00794776577324058 +3759 0.0063752628467426435 0.0008991313422388429 -0.0008658344827529712 +2683 -0.0005218643496671992 -0.0011084884547567723 0.004771331278075883 +2684 0.0031681969163816917 0.010325401774571467 -0.0009616497747750565 +2495 0.012484800873107068 -0.0018001190717468762 0.0023564013359858764 +2685 0.0011404176645089502 -0.00681186968564218 0.006467368900448257 +2688 0.005398244366391143 -2.74594545562162e-05 0.0034481563240979854 +2494 0.005431848675322955 -0.0019339418909727192 0.0036581253365462305 +815 -0.003125440231427141 -0.003906772882634577 -0.0013156150287828843 +2451 -0.002748326097891712 0.0073275054077825376 -0.004142755766072078 +2450 0.004776750563382 0.0077238999477521 -0.0015765179474476053 +3818 -0.006849084511490018 0.0024341440584976243 -0.0006445656829192284 +2686 -0.006994956973167413 0.0005925187732713549 -0.005692359548783764 +2687 -0.004038333233941008 -0.002197022755761509 -0.0016405684372411025 +3797 0.002560637769802442 0.00029144628147575677 -0.0037842171419791653 +1005 -0.004648093142961037 -0.002170688051465211 0.0014720040033250148 +1006 -0.0004377425816117501 0.007490212674689358 0.0035043610719773157 +3737 0.005209397097536514 0.011804413757775762 0.004272147572302889 +3542 0.004850004835008138 -0.007013667520409759 -0.0058196306953588114 +3854 -0.007213212539723558 -0.0017707747434125398 0.00028464532610114265 +2523 0.005153135202267071 0.0005987577499772599 -0.0038506852831057385 +2714 -0.000197347750912997 -0.0014370071326990543 0.005620268493340674 +811 -0.0027216768695711674 -0.00485465939325284 0.002348490042591943 +1004 0.0008446898928127312 -0.00020626543528874783 0.003031996952886028 +1192 -0.0008578254206631059 -0.005180938392712178 -0.0003164518043803913 +816 -0.001129123362713143 -0.0032860259185873257 0.0033613685849596298 +1612 0.003955743485929036 -0.0013050755703564525 0.0012112383394220201 +2887 0.0037746311371399197 -0.004739768694163848 0.0030245843616297564 +2891 0.007368046972203189 -0.0024657521722451226 0.0017345989313628856 +2695 -0.005397916826657568 -0.004582017728402505 -0.002246128359714654 +2698 -0.0035451593377791024 -0.004335914732546722 -0.002126823325187015 +2699 -0.0005316344588499347 -0.0031797437200222554 -0.0007246363164132771 +2743 0.001188593497026266 0.004826143860970165 -0.003952449043800475 +2744 0.003183404685576806 0.0037099224798400757 0.0003538195181049219 +2745 -0.0026703124445569535 0.00511661762295612 0.0011431367626787204 +2746 -0.004403209541172971 -0.0029111062422226127 -0.0046982860452332185 +2747 -0.00405966046618542 -0.001378079731558802 0.002709516846273642 +3684 -0.0032131254765318407 0.008329476439596844 -0.003406754739601175 +3802 0.0035307472476120566 -0.009164448183721072 0.0025788515459800408 +2892 0.00015294151018537157 -0.0059117474988794405 0.0039057694912590377 +3820 -0.0016307202867685197 -0.0016718158947820973 0.0029188685556593833 +3724 0.005343469082439202 -0.0016424902242573593 0.005609643162544416 +2939 -0.0009863589506769617 -0.0013599081711903843 0.0039643127330657515 +2938 -0.003295479131020464 -0.0015541093438307518 -0.002295332821692174 +1616 0.0024666372823460682 -0.0027743453283884207 0.002108330048306466 +2696 -0.003182775333090473 -0.005359081929962468 -0.0019044114176098932 +2700 -0.005263807618272794 -0.0036356403023135833 0.0022567533184443666 +2890 0.007215491536097539 0.00087451164517866 0.0028811045711286056 +2561 -0.000870637003386317 0.007925010469177906 -0.00398393668664309 +2706 0.00024978586210921055 0.0028972971853362135 0.0031431597821925455 +2701 0.0013405212018618132 0.0010665287957069022 -0.0020266760024645904 +3807 -0.0059567157894980126 0.0009568335101013161 0.004272610930273906 +2749 0.007465954138796551 0.004841161449350465 -0.0036385515015922585 +2750 0.0032488345550498667 0.001984730096126997 -0.0027245002386461488 +2751 0.002213646773007313 0.000626470699965877 0.000836103514677501 +2752 -0.0004155794933345658 -0.0011120191200427148 0.005530351179884141 +2753 0.00032539857536443136 0.0010680446806712058 0.0022736190062109043 +2754 0.002174478347475409 0.005310126983820227 -0.0038208318290471194 +3799 -0.0008634943567004245 -0.002015383884135406 0.0018562123914314362 +3826 0.00044297011683432726 0.0019931958117158583 0.010131031950495192 +3829 0.0014759746571219902 0.00010914346240867997 -0.0021614339458664853 +3730 -0.0024217647013624072 -0.0011229997403197057 0.0019430246579994934 +2702 -0.00043853865407657663 0.0021534106188538004 -0.0044535334781259485 +2560 -0.004132850405806817 0.005747742259593778 0.005720367311364454 +3690 0.002237772230459724 0.00011571617095745251 0.003904061731536169 +3762 0.007197319061798179 0.002104753110519621 0.0005539497756923583 +1656 -0.001930473340839078 -0.0026021821653545553 -0.001648657155535509 +2755 0.0028056926171630757 0.0011047750100618046 -0.004918400963024625 +2756 0.0009755435760069118 0.007162982049993983 -0.00911521767871919 +2757 0.0006323634887163442 0.004531315832430378 -0.004711472848433713 +2758 0.004386459790771475 -0.00039892344852351756 -0.005764105077762413 +2759 0.0008836090887767586 0.008702246794316054 0.004582426014169333 +2760 0.0065262151071378595 0.0017300446103804 -0.0036207332436706137 +2765 -0.003205574344523186 0.0016763686154716555 -0.0034759287167190895 +2766 0.006883192425604427 0.0045822686924566845 0.00204880210627322 +3685 0.0040531659955292815 0.0023099313799834426 -0.0025032349802815166 +3786 0.007039769593386339 -0.004738366347291153 -0.00193195663369044 +3763 0.002687009295736014 -0.004166707609676314 0.005279218841086724 +3728 0.004061710866119197 -0.006354864976920644 0.0036656324398677137 +2573 -0.000651980677529769 0.0016199499404150107 -2.2470388276368465e-05 +2720 -0.003049016362132675 0.0011511730511114548 0.0014149824297086595 +1358 -0.0013039444719049932 0.0010246559313609983 0.005994438692999774 +2721 0.0008726029745656786 3.590129345680337e-05 0.001483826749570361 +2761 -0.005183147219358863 0.004087679523891533 0.0022735500946122374 +2722 0.0018620557492678765 -0.009636586022228054 0.004283637793107772 +2762 -0.007098770049218312 -0.005843448192907422 -0.00623194939990392 +2763 -0.01039800089584231 0.0019125798067782312 -0.004047145752959012 +2764 -0.001810208263333084 -0.0016269006624589862 0.002639493987401151 +2767 0.0066197121594592755 0.0008544800584521686 -0.0037303622558925048 +2768 0.001211835319841153 0.001533839725731559 -0.002516725483928946 +2769 0.0030011408072271126 -0.0038325363319293817 0.001965508702592033 +2770 -0.0014441543329060651 -0.0038967848125072996 -0.0008430691058120726 +2771 -0.001475107554153043 -0.004594184824768653 -0.003611553109832532 +2772 0.009247201365560858 -0.0034771167814679513 -0.0037184561283061983 +3804 -0.003764273316742882 0.003106155587044116 0.0031280184397977995 +3851 -0.001275394836158857 0.002863110202855488 0.002006581649981891 +2724 -0.006937500981624875 0.0014748708825125054 0.0011049547084368142 +2538 -0.00048160322455807037 -0.00505709206735618 -0.0013241073265696135 +2921 -0.0026668082033846643 0.001449114134470076 -0.000992542488792864 +2719 -0.0050044958644670425 -0.0015360222016688235 -0.0043422470381831325 +2729 -0.004820393777252014 0.0037732002689720053 9.079312610818035e-05 +2585 -0.0010637314160428983 0.0003119924836998784 -0.0042062337905430115 +2586 -9.858624430326672e-05 -0.004162023161435071 0.0009788254132621233 +3717 -0.0010776764336981814 0.005362383953609793 0.008499213758042978 +2773 -0.0016924213752689424 0.00016288764395940155 0.010295309727901873 +2777 0.002305109242991373 -0.0034235586670718753 0.006417203476365838 +2778 0.0030934547420873406 -0.0016820225503525977 0.0022172814942052034 +3739 0.00037540138205891806 0.004201603496078441 -0.0034654299818031174 +3832 -0.005255826020016309 0.006589122478713282 0.0039925533280441555 +3856 0.0026924553981201573 -0.0014607337654114285 -0.002654904324389613 +3855 0.00320602401752546 0.0059090945979684865 0.0044519722654969285 +2776 0.002560512773175722 -0.00021096996292059483 0.007460082236101966 +2730 0.0007725748785512405 0.00408961931642179 0.0008635015124511314 +2694 0.0008212492282626786 0.0019500904138885242 -0.0031372079907936844 +2736 0.0007796481003918286 -0.0012556606205800837 0.004960456003020623 +2731 -0.00042721251920557095 0.002699298074193646 0.0025099438881492518 +2733 -0.0013420281081587577 0.006570934850850826 0.0033494843587271532 +3741 0.0016416382519379878 0.002179948229887263 0.013624300999593423 +2737 -0.007794427725339825 -0.0006966230651124295 0.001529088461606199 +2741 -0.002789592534388466 0.00042984669774784686 -0.0025693417425473463 +2742 -0.007132211051578133 2.4891593752020426e-05 0.00016704619366700497 +2739 0.0004006219055617357 0.0013981613112537912 0.0010566883096070991 +2740 0.002009559647297903 0.0019641448743730203 -0.0024178987596139897 +2734 -0.0006842840978515189 0.001618757029103343 0.0025928451212748394 +2735 0.0005691655953515638 0.0011996865689157439 0.0036846762169457 +2738 -0.004156780150648052 0.004216439736944026 0.0040836113854784755 +2780 -0.002348534917099282 0.0009153753169505637 -0.002347685397859557 +2781 -0.005753165245108532 -0.0007082354444406372 -0.0034710336435611632 +2782 -0.006367754063066476 0.002565554973232541 -0.0027711807203887693 +3777 0.009569099879646195 -0.000933289293591109 -0.003971841364003878 +3745 -0.0013696902719517023 0.0029294553057820248 0.00828703634932802 +2976 0.004508017539358071 0.003276684963088012 -0.0045368675427072715 +2975 0.0013830422544213424 0.002288239882453208 -0.0013330116690011054 +2934 0.000498395829118885 -0.003926772307461997 0.0004952319873743155 +2732 -0.00011085737594710564 -0.0023636592600127576 0.0029859669091128506 +2689 -0.0011211942497045128 0.00456330080735552 -0.0015922581271455144 +2690 -0.006751219134139677 0.0029454128741220466 0.004349210132828939 +982 -0.0008680633223927778 -0.004430594553328393 0.007100325307261992 +2748 -0.0009529898954690821 0.005931870477360125 -0.0060462086279045885 +3714 0.0016034654793137372 -0.0023958902916630994 0.0051682729393650794 +2788 -0.0024422457338608016 -0.005184481360718435 0.004280555915638297 +2791 0.003406539103966971 -0.0022599617647323903 -0.008079737756288896 +2792 -0.0006803832511728972 0.0016089089810675259 -0.003787387864824466 +2793 0.0010607014779781398 0.005322858406472398 -0.0027292806878416852 +2794 -0.0022076910911919315 0.002827523498872535 -0.0031181937227800485 +2795 -0.00043721199550384533 0.004239977719321917 -0.0012612776365048437 +2796 0.0035921415607734967 0.005065819305424543 -0.0008125439063962503 +3705 0.006150561266071044 -0.0036003984666909596 0.0008049517687568 +3808 -0.001345769517189145 -0.0009452451518835391 -0.004167741144296736 +3842 0.00047317182064184976 -0.0016512918935364929 -0.0023310448568466713 +2789 0.005617061053717281 0.00029500593531638206 -0.001097789079641002 +2835 -0.004800583752588159 0.0015964121102612205 0.0016509209897957128 +2843 -0.002008079395367279 0.0024631705055903046 -6.267804030508595e-06 +2844 0.0015662393912721415 -0.0007678764938535519 -0.004821030213645365 +2842 -0.0011238858253136467 0.007080664071288461 0.0031978214979689373 +2557 0.009310409938884788 -0.008248349776658599 0.0009286390778137654 +2562 -0.00012182911751157106 0.0012451209834172983 -0.002385581928938285 +3721 -0.00829057086634551 0.016758565824922526 -0.0031261215247042544 +3682 -0.0014686324207958327 0.008440240525364129 -0.006225746835312391 +2797 -0.0002676927208570041 0.0018904173522861106 -0.0024266508749942635 +2798 0.002134791957391764 0.000711119593745141 -0.0003675546341195692 +2799 -0.0006736686116792853 0.00046364765771458963 0.002157148834830957 +2800 0.0029636042359104274 -0.0004708081816242437 0.007971204759078743 +2801 -0.003004408561652283 -0.0009212859135870775 -0.00274278308298499 +2802 0.0028080334765354007 0.003579818116375347 0.0028785031119698177 +3753 0.0009107342324532966 -0.01150154067277793 0.002193852673258925 +3780 -0.0002374735891951862 -0.0018860197611502876 -0.005283211729531635 +3000 -0.01292248142696468 -2.9237856265688685e-05 0.0002759739239047854 +3766 0.0009771901438764884 -0.0011401827166916249 0.0067850381065539265 +2847 0.004750740627251172 0.005200769354011774 0.0013942019955953213 +3831 0.006217866006755026 -0.0028868020994971748 -0.009282685041070984 +3042 -0.0007598693878855092 0.002239616748220761 0.0018734841622954589 +2803 -0.0014159547735181582 -0.002838394105045408 0.004214191589932114 +2804 0.0012571613980086294 0.0006052257116483659 0.0032867211331158537 +2805 0.0032722644548722397 -0.002752135669466101 0.0017747613937169693 +2806 -0.0019408584627049635 0.004785866598092316 -0.000800351276741613 +2807 -2.167326997313192e-05 -0.00815774723419279 -0.004915869176237481 +2808 0.0012706908029906476 -0.00032011899868348805 0.0035075073282499316 +2814 0.004073349823196205 0.008658238513136664 0.006545067937998082 +3719 -0.000274381684263031 1.1364584620203557e-05 -0.00158234530468815 +3796 -0.009353065069084317 -0.001344659843384747 -0.000908500619971066 +3852 0.002518527172087462 0.005771016729442214 0.000874314904491765 +2813 0.0005157038876555182 0.0034224928151607792 -0.008228586455045563 +2812 0.00952805936211162 -0.001753179615761282 -0.006263574083306455 +2860 -0.004884551624947625 0.0057606950588706875 -0.003760725253550163 +2861 -0.00028703456949301246 0.0011443737126884275 -0.0048259428928687596 +3848 -0.003954340766434496 -0.006631782254563797 -0.00016058656300211918 +3001 -0.006881353849271949 0.00925146111160732 0.0004993819784169323 +2999 -0.008306108506670806 -0.0024477723459497293 -0.0031189851194928847 +3006 0.0020550729190349703 0.002667034222535163 0.005676560179306369 +3005 0.005282432619145783 0.0023929729445461693 0.004768286922937543 +2627 0.0019202004438978449 -0.0023568175467956103 -0.010792501837911916 +2809 -0.0019385645272406843 0.006200561797176322 -0.00673906655273976 +3697 -0.001981398558349151 0.0021872971630488114 -0.0019355453232754174 +2810 -0.005974922171836498 0.003114046377363387 -0.0009372271675385776 +3702 -0.0017748539824939502 0.0027473863401399293 -0.00582998345509639 +2811 0.0029831055642786726 0.0006372592358612983 0.01125577092392093 +2815 0.0012533740552200612 7.403806895960373e-05 -0.0002805118932791901 +2816 -0.0006507256024220522 0.007398167761124245 0.0018235707785989653 +2817 0.002209143798528283 -0.0026974743345954317 0.0010013877110387356 +2818 -4.38893824277686e-05 0.0009961896333994357 -0.004355576264041017 +2819 0.0015106013118587355 -0.002034688251995763 -0.001836178080062626 +2820 0.007403786110786963 -0.001126280781005618 -0.0010160038469462173 +3718 -0.0032022152656300488 -0.004548890261026983 -0.0044236537052105805 +3806 0.003355190793888296 0.008358962457781421 0.006306646837668258 +2774 -0.0049574649907342585 0.005931718262641068 0.0065943342485676355 +3725 0.0013831768548572974 0.0002543976705240577 0.00322096997739038 +3785 0.004375822003143061 -0.0026234794107833585 -0.0002434115671215361 +2821 -0.0037753471798495984 -0.000497698043388663 -0.004987457329280379 +2822 -0.0011122317177747673 -0.001971008244344506 -0.0016333676512045475 +2823 0.005493825970127745 -0.003467815500321288 -0.0015769742047094543 +2824 -0.0037068662088358636 -0.0018431652767792559 -0.002187916999213031 +2825 0.002020486052824778 0.00484915085093272 -0.0005786749352936758 +2826 -0.0033600136801134966 0.00037523954191611537 -0.0053395621558917795 +3765 -0.00904819504686641 -0.004973223241118646 -0.0032027800127816006 +3749 -0.0024283147937898117 0.005437481064339275 -0.005164662234245402 +3732 0.008068990022756217 0.0022932605157882815 -0.0013889772914291905 +2870 -0.0032032680840182797 0.002907158822734173 -0.004636468106643306 +2871 -0.005834366572212199 0.0016100955921071693 -0.005736268703647933 +2775 -0.0003756384011724632 0.0023710165075799474 0.008852751970310341 +2779 -0.003680420106931031 0.0015980563604401277 -0.005300153555017656 +2784 0.0023467515019078206 0.0013804444083876518 -0.005011547609851879 +2783 0.001851481184221117 0.002380796876626368 -0.006512089122720693 +3788 -0.0028169398600276503 0.001839947332168626 -0.0006665322890960182 +2787 -0.005403993343642237 -0.004744500635929256 1.995955847236703e-05 +2785 0.0013394203154665659 -0.0033355499798085023 -0.009097904767054788 +2786 -0.00448147673088705 -0.003863316436132984 8.338428498270072e-06 +2790 0.0014595568753052602 0.0029261561490599728 -0.0019741603231128147 +2827 0.0016981926444990096 0.004804588596997977 0.003673663241899912 +2828 -0.001931326705802977 0.001936757463912087 0.004137307645224561 +2829 -0.0035508777325933194 -0.000181306836605733 -0.0005723801119343444 +2830 -0.0022249836838795795 -0.0011717324108254893 0.0015053563723840134 +2831 0.0036585549992544705 0.0018854724221218481 0.003352966622221307 +2832 0.011049539234707128 0.0034190829848289965 0.0010884854872142368 +3782 -0.0011688876364916662 0.003059581949289051 0.0022128428049295545 +3023 -0.0006956497214712005 -0.0025732697606754367 0.004827307013483854 +2836 -0.003060023204288492 0.00010053368336340033 -0.0004018717332940997 +2837 -0.005935759971806144 0.0030075704526631034 0.002405949638182406 +3024 -0.0019091037171398472 -0.0014855117475020482 0.0035146992898754522 +1160 0.0021667662218381257 -0.0016551809012853944 -0.005881273274527032 +2644 0.0013415920663087172 -0.0006966842671767199 -0.0016844372094176744 +961 0.004346852115803489 -0.004237858702630826 -0.005276740000874914 +1161 0.0011422998717111029 -0.0004800798804689142 0.0022123077171411058 +1681 -8.844774161660422e-06 0.004524796072638958 0.0037935627163591065 +1159 0.004455099302451324 -0.0022695128588522302 -0.006324466652170913 +3733 -0.0025068341437579577 -0.0018417188799328605 0.0012598134494200127 +2833 -0.004189225990432899 0.0004961243601747605 -0.004789338447624927 +2834 4.546588511229984e-05 -8.975016913212344e-05 0.0035809246746479266 +2840 -8.702478146343919e-05 -0.007061798670316861 -0.00033506388211066633 +1155 -0.005422564038257231 0.007873298189056976 0.0013404238546255815 +3790 0.004991887880483492 -0.005681462013796788 -0.006567297029843979 +3841 -0.0059763673673425945 0.00011205452806127855 -0.002294292257224335 +1156 -0.005802849748063269 0.0007437041531121935 0.006258030682255406 +2841 -0.0006900219680669792 -0.00869078851744703 0.004184170349616405 +1154 0.0020447496602063603 0.006065802670726811 -0.0017318642482207762 +1153 0.0004888065409412963 0.00280228658700842 -0.0027155518795585754 +2413 0.0016286153164211598 -0.0038271225231906146 0.00012986983882825793 +3774 -0.002744879397878357 -0.0011887409640249098 0.0015226340552712174 +1170 0.0031254184089604237 0.0035685217337208114 -0.0006546272357856695 +2839 -0.0020690955618131285 -0.008760299416741132 -0.005154238469250214 +1164 0.0031873646620411574 -0.0024076605745232574 -0.0026255368175313585 +1163 0.0024952560433649414 0.0021348050887752207 -0.0031784524162669476 +2845 -0.005585728482686365 -0.0034416525148974505 0.0008835781774184367 +2846 0.0016240593919845984 0.0009092726582473422 0.000507477329907427 +2848 -0.0036433407658411168 0.0065698522745560916 0.0006516788950317687 +2849 0.0030942754828674974 0.0056083659511398 -0.004971351090035005 +2850 -0.0038979506954840916 0.0011390605326529735 0.00010491359728057393 +1165 0.004712836811076865 0.0025713358309689036 -0.001812470994082126 +1166 0.007399884898528035 0.004851731819991674 -0.004322812074311048 +3751 0.005502779734401494 -0.0023892817257929098 0.005192277452498436 +3814 0.001012122394764687 0.003707782049816036 -0.00411182638791743 +3858 -0.008077799835233952 0.004524586041638488 0.0052975538744813875 +2853 -0.0005287784878253771 -0.005185444633389435 0.0030237943556636134 +2851 -0.0015459077241148983 -0.0013554828035503672 -0.003362399499549213 +2852 -0.001356096671406487 -0.005241836134223961 0.0017805303232698948 +1162 -0.000473482035108041 0.00180111718857736 -0.0020850632951550803 +1167 -0.0027297679396070013 0.002582751863308385 0.0008261463282412 +1168 -0.0008025133653990688 0.00028930550287371734 -9.236366744821609e-05 +2668 -0.0014305084730753454 0.0038154192075078156 0.0013968001174146966 +2669 0.004005495397382215 -0.0005913629779075962 0.0034741735503720905 +2859 0.00014979224336544598 0.000653125191010201 -0.0049073401847168725 +2854 0.0032992090934622826 0.004093874461787211 0.0013126169906459626 +2661 0.000350858810400534 -0.003412724012391909 -5.926168953365431e-05 +2662 -0.006953939057854743 -0.0018509603964986566 -0.005336180569477812 +2667 0.003538840688806166 0.0021960134531117653 -0.0027827766897258895 +2666 0.0008475263281667429 -0.0019261940295393631 -0.0005295179528959297 +3838 0.005558941562471185 -0.004050175907897144 0.0011961276129940134 +2855 -0.0022567814740681418 0.0009581918615167826 0.0008081825343724115 +2856 5.043234588132636e-05 -0.002996220003574454 0.0016996007671114602 +2857 0.0048025365007434324 0.0016011798513661402 -0.004195696140089937 +2858 -0.0009406590959995035 0.004634950900813754 -0.009069588459109084 +3794 0.003263813672993557 0.0036981503881106073 0.008656089429480122 +3825 0.006007436830114525 0.013496601428756689 0.0010225110115174882 +3828 0.014971648632006387 -0.005409523214777758 0.0013091438098198965 +3839 -0.0033011829471411014 0.004047502564255227 0.006281166015107815 +2862 0.0009374840905904877 0.0019071742232714386 9.687628996764847e-05 +3865 0.007347954414997983 0.0011871782316559142 0.00037595942678548156 +3821 0.0009337143769881425 -0.0024964031472627496 0.0015046562892049612 +2863 -0.00012482734668276284 0.0016574384362967197 -0.006625529614491641 +2864 0.004126549140845691 -1.1290806749686551e-05 -0.007912389968934126 +2865 0.004111945277197284 0.0033080157215703626 -0.0020410788345122228 +2866 0.004523789346185369 0.002985109697700618 -0.0019098441738306406 +2867 0.0063795799016195965 -0.003294179104865073 -0.00048822593890882353 +2868 -0.004469792542713207 -0.010616458434828568 0.0013300668351351166 +1183 -0.0015107883220159414 0.0026854980305614736 -0.003224910567085749 +3707 0.0036134505633269084 0.0038729971819440033 0.0009399284261920741 +3757 -0.002757841594979942 -0.0077533289152747105 -0.005040585836651737 +3801 -0.0013828093400276079 -0.006300947073758313 -0.006479548931552853 +3781 0.0027403268968215285 0.0020319780754957904 0.00030229711913684257 +1184 2.8179568406334793e-05 0.0031772153324544717 -0.007362584605683866 +3694 0.0031780325763432417 0.00033703888664583093 0.005424328666520245 +1191 0.00715192200969218 0.007530716026065607 0.0023400040662871764 +1194 -0.0020667785512985377 -0.0009035894839564405 -0.0032718473074562974 +1157 -0.005824779638565645 -0.00020835950656402765 0.00233183701986237 +2869 3.9676425525268685e-05 -0.0023581199263201093 -0.0014538695082791189 +2872 -0.006016729193986012 -0.004404476668176572 -0.0014838530701842202 +2873 -0.0029790127876827446 -0.007640755503197615 0.005077915710572317 +2874 0.0059789123373840325 -0.006474551618602379 -0.006961144608703636 +1189 0.0003230351455416637 0.005120766122360509 0.00153417401700084 +1190 -0.00023784998488058385 -0.000791006722388936 0.005389156266305653 +3716 0.006569071187406505 -0.005810054229731825 -0.0038266553438673205 +3834 -0.0002403466855782266 -0.007235803767734774 -0.0009399261043920177 +1346 0.0001328545113253992 0.0010721937492794316 0.0142914245706219 +1193 -0.003347564733469285 -0.005281589879686088 -0.005181743053965741 +3868 -0.00112380269705692 0.0012774964821585973 -0.005178102317745576 +1007 -0.0029621815036094596 -0.0021129458609409784 -0.004656867049940471 +2915 0.0020589894124372872 -0.00022881524226521445 0.0009642339704762887 +2725 0.006603195033796212 0.0005869506210974476 0.0018028125917312014 +3722 -0.007282240407173848 -0.003357463798654897 -0.0014238813013913332 +2838 -0.005074179716881552 -0.004346900664687233 -0.0054528037757415335 +2875 -0.003327829697113565 -0.0007902228155852543 -0.0063254826206066385 +2876 -0.004285815726145607 -0.002626527842166928 0.0018434082469305365 +2877 0.002320767053371047 -0.0025085941101506857 -0.0036138291917827466 +2878 0.001772357343296058 0.0004805242822413861 -0.007989363190528441 +2879 -0.00027659278109917865 0.0035776367351794455 -0.0022379191860260345 +2880 -0.004795298773075652 0.006032203800724943 -0.001703893537893793 +3846 -0.0014392416147217995 -0.0038859289331439947 0.0032673469879994626 +3859 0.0023016993984372796 0.0027248785669810598 -0.0012875245459025454 +3072 0.0011080373730612274 0.005874407931497166 -9.287122818949128e-05 +1200 -0.002994721013181646 -0.004088361729916722 0.0007231918585071001 +1199 -0.0015224614313433 -0.0006671191621087771 -0.0034177578265718886 +1594 -0.012079430546621037 0.0020406288624255117 0.0015282879493200782 +2940 -0.0022658012479476503 -0.00012624497706651065 0.0015095128482677958 +2937 -0.002242445841747938 0.002004055684130838 0.004666496696639716 +2936 -0.0067257486579497955 0.011430775088641277 0.010729130946712805 +2935 -0.00021109737645524386 0.006147964568419199 0.006408053844952841 +1596 -0.007256016681101715 -0.003721123776536396 0.007232829971342807 +3772 -0.0018295725756608953 -0.004979130128049303 -0.0028172344717634712 +3795 0.0029748523929933423 0.005568302155434544 -0.005908613226079255 +3817 -0.0027662710992521207 0.003856318935063087 -0.0014527291467381 +2355 -0.002354075540254529 -0.0016675675812941279 0.00033535065002856726 +1712 -0.0011850258513537494 0.009815740641198629 -0.0030507903802158677 +1595 -0.00047361739237106073 0.002363377867591139 0.004602754450448276 +1158 -0.0014106627871208887 -0.0020973737947795634 0.00041551202661231667 +1605 -8.066740801599415e-05 -0.0013424410438687244 -0.0030645495493554675 +1602 0.0024602500907554836 5.054688236820504e-05 0.0023045538291899133 +1543 -0.007669620055608338 0.0009235429923996082 -0.005093644327366447 +3686 2.553663486127285e-05 -0.00743785200590277 -0.000771570560132905 +2894 -0.0005270695396231551 0.004599655833528949 -0.0013986708634918666 +2949 -0.0022341039137360004 0.0020919789801360418 0.0017861426839643354 +2950 0.00021336247298560653 -0.0035402116246539385 0.0005857765740855489 +3578 -0.007958281691085766 -0.003964254702728626 0.007297581964336884 +2946 0.0036598439095329024 0.002551953667233114 -0.0015229196477995334 +2945 -0.0070752410245375945 -0.004787052079833057 -0.0015056627957760597 +2944 -0.004687753948538934 0.003502987432129549 -0.012436911363272041 +2943 -0.0007911592968139864 -0.0036528664506943987 -0.006592328783124334 +2942 -0.0042426917229746106 -0.0001719940723535966 -0.0016456493843250983 +2941 -0.001032876193109918 0.0013640757535873635 -0.0011386153536120877 +2898 -0.003210973891808062 -7.75384557155416e-05 0.011770003282275905 +2893 -0.003213344321350409 0.004191285594203531 -0.006554888616699142 +2951 0.002292014202336339 -2.8791569542446814e-05 -0.0016814386231284797 +3847 -0.005426153555728729 -0.006070298994080094 -0.0009306848472817331 +3715 -0.00319910646881051 0.003432316652827771 -0.0002836523228379966 +2895 -0.004522240641799287 0.007210300110578705 0.00119043147049159 +1601 0.0013794711679308179 0.004340290198876106 -0.0002800489924165411 +3573 -0.005274589404434194 -0.0016521538289728395 0.0008587466547724027 +1558 0.00032330683790110975 2.684734860562486e-05 0.0007142906910007202 +1610 0.0019907256540495056 0.004363785502957435 -0.00939011828847697 +2447 -0.002300679637618053 -0.0011725388202664378 0.0013977498388011418 +2948 -0.0035350417547484973 0.0045200880641218764 0.007555775157134215 +3792 0.003925967747053622 -0.004026628252969981 0.008752361237846949 +2952 -2.644993772833639e-05 0.0001105869668432353 0.006936593573506885 +2947 -7.696163476016145e-05 0.003740412962786674 0.004108491986704721 +2900 0.004308800403997425 0.002476556810215665 0.007911447319843383 +1555 -0.002490345126803717 0.0003512491983568309 0.004022550934675327 +1560 0.002091726772211071 0.0031710653539647462 0.0035316192490804535 +1603 -0.0006369211855955067 -0.003101624398676824 0.0026736389498875413 +2901 0.000890708161363393 -0.004582823317157708 0.00453266589787111 +1608 0.0019339919855093628 -0.0040738407444571596 0.002742459975765291 +1611 -0.0032969237294089002 0.0006392771340722058 0.004359541858191347 +3864 2.006546976083639e-06 0.002607295835030824 -0.006574013138268116 +1556 0.0001588416206564769 -0.002100418839674488 0.0054563626755132 +3791 0.0011553060652499014 0.005983217866542445 -0.000541355465987731 +3824 -0.0037694641932929664 0.0007977621834278213 0.004836402482780036 +1566 -0.0004912013822225385 -0.0014787611124489376 -0.0023488239856898087 +1569 0.0023615188390080522 0.005074361785176852 4.307611000757146e-06 +2957 -0.001764206999495237 0.0008261237611408961 0.0011804370715159044 +2956 0.012311728167172251 0.003634697447547096 -0.011257016026822313 +2955 0.005986598312978212 0.0009975683789655656 -0.0046553590209567125 +2964 0.0006422041247135489 -0.0018653205232034313 -0.0034963974425518524 +2963 0.0026299949855238427 -0.004854457240651598 -0.0054908057544468935 +2962 0.0025088333056317116 0.0006725136368586405 -0.006084720728556372 +2958 -0.0063565069938054455 0.00529578997991661 0.0009683594849433216 +2954 0.00020988055752779652 0.003257584419535579 0.00030633758002210175 +2953 -0.005323754738017867 0.002752808794935193 0.008232626042025622 +3775 0.0010973611179656997 -0.002371532193266983 -0.0023206784985981017 +3813 0.0005408900947963854 -0.0013466807898992851 -0.0033759746769859134 +3845 0.005879553995647426 -0.00721683247598195 0.004220447416057948 +1570 -0.00031549254751879366 0.0043412737991950995 0.005369323562062337 +1565 -0.010991124322628727 -0.0017919932364495064 -0.00025980228677379373 +1567 -0.009212771538729125 -0.0029399092067554033 -0.0018064344252707572 +3355 -0.0026875755858938124 -0.003490099427576247 -0.0010372010981066287 +1568 0.004633545920645305 0.0044659447655725805 0.006421795951363928 +2886 0.0030134316806028094 0.003919807857390956 -0.000855178407780295 +1572 -0.0022049402667164764 0.006600124086734199 -0.002147499697299456 +3742 0.004029745020859356 0.003029506771987114 -0.002830742975268833 +1571 0.005195951147727109 0.004466487336267082 0.0010978594924074736 +2970 0.006327580605841878 0.0033770483863173597 -0.0019178233080222994 +2969 0.00015042278144679144 -0.00195272313159687 0.0014782642032856016 +2968 0.003454362329358544 -0.0024962958648059655 0.0009900889785671393 +2967 0.0014399386251071377 0.0017168711044507356 0.0009390614548381053 +2966 0.0034637871532021192 -0.0038047274481927034 0.0002693352403141273 +2965 0.0037885134824207282 -0.004115887733285039 -0.0006728873363395512 +3857 0.011389082397238228 0.005377569930648388 0.004688174333684436 +3861 0.0004611009190578015 0.0038089660333028206 -0.0010735868774303253 +2493 0.00752788215013667 0.0019497245444463093 -0.0016233824691623674 +2974 0.0028879586856359694 0.0035562232665904176 0.0012698424474714063 +2923 -0.0010714512664711175 -0.0017577583717392118 -0.002222623650799042 +1624 0.0005928934921617688 -0.0036957994339425083 -0.0019783158731595677 +1623 0.0011138970426324028 -0.006021552394253572 0.0033296862346328315 +2924 0.0007171222157562136 0.0018294491738662295 0.0017278225448730175 +2885 0.003927015576351695 0.003559602598276819 0.00019171436343409456 +1674 0.0041812420836576355 -0.0038263936199286887 0.0034806568723521236 +3819 0.008673774875608513 -0.0006141724744141178 -0.0047973941827514415 +2972 -0.0006789552490608279 -0.0038392617265090227 -0.0023644276050296805 +2971 -0.0009381973607021201 -0.001628950907496899 0.0009776743734013491 +3843 -0.004452718409635091 -0.00018299141316014596 0.006240992601913724 +983 0.002856048795486094 0.0003998687014463664 0.0037894963929677138 +2973 0.0035638934131805673 -0.0015634475530317048 0.00176711547000821 +2930 0.0006878468729229471 0.00305274388357004 0.0032246784577527033 +2929 -0.0029386668451111216 -0.002395488112175752 0.00043849900768397744 +2928 0.0006812865737895748 -0.00238202862002142 0.0015529333636042071 +2927 -0.0006386067334890114 -0.0016972613000939055 0.00449937332168396 +1538 -0.005627932506076253 0.0019349199265163582 -0.005618959085684693 +3701 -0.00036930486099287025 -0.00650161155291767 0.00169085684561781 +3827 -0.0053873535362587615 0.008827275292087633 -0.004317781321402153 +2926 -0.0025033758272928405 -0.0032146131753729426 0.0038689559358737213 +2925 -0.0016868489149071545 0.0035458024201588173 0.0029182640973632384 +2988 -0.0023434774289622265 0.0010292889638657615 0.007263406794955067 +2987 -0.0015882031480487116 -0.001710400427447437 -0.0013931866152251974 +3699 0.0002920103739130863 -0.0045921239278257165 0.0016649001543717211 +2986 0.010173222372304362 0.006459202085339696 -0.002142672894704703 +2985 0.004518636316768437 0.0035953171969846814 0.001097975061913118 +2984 0.005768449630543495 0.0037191193595403084 -0.0007669093477153716 +2983 0.0016733559251957608 0.006316903045907398 -0.0024791635193584776 +2982 0.004112343947944592 -0.0034318987194321884 0.0009281177997358918 +1639 -0.0007684374747952682 -0.002338534379846206 -0.0009472552572508367 +1640 0.002543979645188445 0.005182528691606572 -0.004924054661776911 +2497 0.008203966445763421 0.0028031714081658225 -0.005014964781566556 +2697 -0.0008880686392525446 -0.0030079851521136506 -0.0032597385099669006 +3034 0.0005250819114676206 -0.0023366819135068016 0.0038833117311132892 +3033 0.002412705162966243 0.004560106343408596 -0.0013867972247831983 +2978 -0.0010858842438715068 -0.005867901982306259 0.00425763731944517 +2977 -0.0011941203073080027 -0.0018021865747716713 -0.000447141542834374 +3032 0.0051277564972564485 -0.00019493440931150357 -0.003129788205600871 +3726 0.0016079720974617184 -0.0002006261697190748 0.004333923267887165 +3771 -0.007024164056311604 0.0044712070268417585 0.001716999319603115 +2994 0.005532992420056303 -0.00027884663706666545 -0.0020938120527257335 +2993 -0.0071586872881581245 0.0020015099921775947 0.0006483625817010107 +2992 -0.0034986866143542107 0.00482534385982368 0.002277286247636364 +2991 0.0007681840250732916 -0.012258498418124186 0.008783709660374102 +2990 -0.0037454926768280897 0.007457151603293993 -0.008509381474629834 +2989 0.004070088399574425 0.0029343237048865324 -0.0026573311508072154 +1666 0.0031571786738463104 -0.002166835801059993 0.0027403259283139605 +3800 -0.004390179115403551 -0.002654173633709759 -0.0037714839160737815 +2996 0.0029641355407663203 0.004092024963757068 -0.001755244501993949 +2995 0.00037049279258179684 0.0006886214641969679 -0.0001817000570932967 +3755 -0.0039942471365965425 0.0012932695843658052 -0.002229326096326362 +3833 0.0041178369390612035 -0.003413920852292919 0.004152181567235542 +3041 0.0022051736270265357 -0.0039112536757836 0.002338975136394235 +1645 0.0038880973277230367 0.0026280193114401316 0.006398758324191479 +1606 -0.0035848034513901277 0.0008619705085827469 -0.0041165468336036145 +3003 -0.0037002318323584014 1.2239877454994008e-05 -0.0028058186995925495 +1607 -0.0042866553062372295 0.0008691207379502338 0.0011889996533471588 +1654 -0.0012118742200820619 -0.005250917662151563 0.0007857600232346737 +1188 -0.006834187606909603 0.004756892331959582 -0.001544624016445891 +3002 -0.0013624144618511911 0.0007636947509477263 -0.002493468774137427 +2998 -0.006426703302443001 -0.0024018941128986413 -0.0011757575744726753 +2997 -0.0007574935307733976 0.002421066192549012 -0.0003065716588060996 +3768 0.009610686309804642 -0.0014122502479657398 -0.006759197693264009 +3779 0.004384325249485348 -0.0026680446993004136 0.006481791746818361 +3812 0.001598069464350629 0.0016109507335018475 0.009328621782225776 +3004 0.005017836402676081 0.002740709530306029 -0.0035071217942617737 +3823 0.006590120558335426 0.0034858466024990957 -0.0045239152240415265 +3698 -0.01063400688125842 0.0005221985983570742 -0.003773969196966162 +1655 -0.0035715368690960774 -0.005092922136085264 -0.0014774110681000398 +2959 0.005321477061431782 -0.005883350522891494 -0.0009566870148276038 +1617 0.004047366436315419 -0.002638382755507102 -0.005209851750353986 +1618 0.0010203469013757313 -0.005148634039622836 -0.001768422101517214 +3850 -0.0041784996250050195 -0.001038860904325107 -0.002803941635354014 +2961 0.0021608348678062305 -0.0001684135281462244 -0.002428584849530906 +2960 0.002787907347053858 -0.001425958271630959 0.003267958991133489 +3872 0.004999432730469843 0.0023096616947782577 -0.003187865125778389 +1664 0.006648360655877314 -0.0031805645024134475 -0.0026188497522235833 +3008 -0.0028425048118435256 -0.007724909538895546 0.0007869543332085107 +3007 -0.002909535560049081 -0.007724066948050159 0.007342278105074434 +3783 -0.005080249314462028 0.00023492895193041784 0.0012946108941428497 +3789 7.518893323598607e-05 -0.004010839328289947 0.0037785874484175396 +3866 -0.0032555172604357275 0.0036471188522268745 -0.0004033580688648263 +3012 -0.007495017569345562 -0.0034160844804259145 0.004376834550953064 +1665 -0.0010725247681805201 -0.005542437455763804 0.0009478971066497117 +1615 0.0026354980242506753 -0.006377846737364437 -0.0015871633540780826 +1620 0.0005798838333178209 -0.0026672257708975373 0.008555071557420819 +1619 0.0010854824923323438 -0.0010420289789083198 -0.003696508628814842 +3009 0.001299207840475546 -0.004893104205129994 -0.0013220972561531928 +3017 -0.0012417158601199527 -0.007303696841195106 -0.004065356628132107 +1646 0.003644873821966301 -0.007197945933698467 0.0034189005898480063 +3011 0.0003444912262222501 0.005072294045332055 -0.00126863225289344 +3010 0.00027574980669058216 0.002286057014850083 -0.0020786944532153167 +3018 0.002679146657611691 -0.004244254570398096 -0.0012789432207934584 +3016 -0.004401874705809125 -0.003075752216397248 0.0016279005536939237 +3015 0.0006490120351407823 -0.004708151955588521 -0.004318026187367239 +3014 0.0012678835369487273 -0.002101828539450675 -0.0020035477145823933 +3013 0.002918504858457038 -0.004001083064768535 -0.00525785582824571 +1669 0.0036496977388251126 -0.0032639053076342645 -0.0017801703252298487 +3849 -0.0007597428900041403 -0.00863040474503448 0.003783046052707667 +3830 0.007141167875139819 -0.004069359183960549 -0.0020247307199722543 +3760 -0.0014028956756542885 -0.002230395712388382 -0.011516934513963444 +1682 0.0009325014743413944 0.001999647644693114 -0.0006242823013464275 +3022 -0.009164056482907749 0.004836096546287502 -0.0020637999571762665 +2933 0.00362605146584276 -0.0006943768730711006 -0.0009425806667711277 +2932 0.0037888677088306426 0.0014107788436537158 -0.0016081639940271914 +2931 -0.005352289099096616 0.0034610308177951527 0.0027320201889777843 +3619 0.004608542239422782 0.004388794872690121 -0.004108481326149086 +2981 0.001156391994854789 0.0023195075182840075 -0.0011557038022806958 +2980 0.00027071727267407165 0.005836995482804671 0.001601156816309714 +3810 0.004434066503318552 0.009237725026545705 -0.0035529675398818824 +3067 -0.0051510842931889785 0.006682852784201073 0.004865885781931819 +3793 -0.008139709455961503 0.005180207935139122 0.000620816047007868 +3754 0.004467657679684102 0.0031469891773859937 -0.0008515092291227122 +3021 -0.0054919100699343595 0.004231109240255823 -0.002300127425610257 +3020 -0.004905812937413618 0.0016611738803021972 -0.00478445014557132 +3019 0.005857648579406444 -6.442358434805168e-05 0.003854170496013148 +2979 0.0014422183692699765 0.0012163185780831984 -0.0010906786421878765 +3700 0.0055628497041560546 0.007958084808977308 0.004889281026088722 +3815 0.005148451188351573 0.004195079716066379 4.284079352617126e-05 +3068 0.0012331083688054767 0.003800410049699755 0.0013696310421613565 +3028 -0.0026974041878929365 0.004865809220832617 -0.002879069096186263 +1683 -0.0021326604262913926 -0.003647728092243554 -0.0014377337776346213 +1348 -0.0006901858139476175 -0.012385858681325222 -0.0007915787583115508 +3708 -0.0038184881398693957 0.0053777478684897476 0.001548490800633748 +3689 0.007475740240623343 0.008792111516765948 0.0007638560961454313 +3035 6.0454385034474974e-05 6.799794188572093e-05 0.001740042317095415 +1347 0.009765872941546131 0.010174138853873482 0.0013737759008198417 +1662 0.0050519232596370955 0.009581260191464831 0.00802924200617039 +3844 -0.0027360008290586266 -0.0030549049983222025 -0.003081908076078134 +1688 -0.003769981869238149 -0.004924202897269013 -0.004983604060269215 +1687 0.0035935561392337846 0.001703044629982388 -0.008807071686765523 +3036 -0.002437589486434804 0.000978992498595448 -0.0026027067445657196 +3031 -0.0026163392252466504 -0.000574387427553611 -0.003949315529767121 +3029 -0.0001645616572436231 0.0027016824461088117 0.0028747889143631673 +1353 0.0017176074186796607 0.005363049994784664 -0.002599249393169568 +1691 -0.00042934543825700363 -0.003580029006187897 0.00230698898875322 +1692 0.0003179652011786376 0.008045550270059921 0.0038565759712571217 +3695 -0.001811067617292026 -0.0027737520261012535 -0.0009526514951783845 +1352 -0.0013297978183598683 -0.0006494277886777208 -0.000527840983400445 +974 0.0030078581035814663 -0.004692988322206573 0.0021721650057180677 +3040 -0.0014843667692809007 -0.0028185171737265015 -0.000977171323468938 +3039 0.0015138525182099264 -0.006377995758912525 -0.0012304650650367785 +1359 0.003291047961482581 0.0033177840640890455 0.006033683721251847 +1694 -0.004006944751250735 -0.000963609437282222 -0.0015502178253447101 +1689 -0.0025440368168309154 -0.003572428504180876 0.003030775574641603 +1695 -0.010352780447166874 0.002805095265287604 0.004107624600504731 +1690 -0.003948056610046883 -0.001984748574898791 -0.0007782138545562507 +3735 -0.001272135393958678 0.004688783773131448 -0.00548789881087841 +3822 -0.002026664014930195 0.0036964915550192494 -0.00969577736237906 +3038 -0.00502021069535626 -0.005126377072264185 -4.1482955564582885e-05 +3037 -0.00407969170933286 0.0016297871398141814 -0.0035834732906037466 +1693 0.001534487880551637 0.00045409436526979395 0.0005746353617779795 +1697 -0.0077941921961796265 0.001329750328920151 -0.0012885948287646388 +1698 0.00030575070553781326 -0.0033283756720781875 0.00145268532422122 +3747 -0.0010571129220010122 0.0020400062142463178 -0.0006851254652590878 +3770 -0.003221955425240052 -0.010045370826284749 -0.0015803010873632847 +3816 0.0015920051285270443 -0.0026020120484988255 -0.0034130584702755195 +1696 0.0003918010809119403 0.0002969785546194676 -0.004930223262641577 +3738 0.010041248309696793 -0.003871668205178996 -0.0019475208952161505 +3043 0.005043415277210466 0.007950929137069499 -0.007256414649866993 +3049 0.005482891252939918 0.0036017608603560215 0.001554590886460039 +3048 0.0018831948397833656 0.00972591723907237 0.0031542903756446726 +3047 -0.0005859733227618854 0.0026502658309434726 -0.0009997140525464738 +3046 0.003331014127192344 -0.004194393636555822 0.003310221535120495 +3045 -0.0003961076720775664 -0.001189218741970836 -0.0070332226205768 +3044 0.0026058345077122256 0.0005054114213777102 -0.006531102783290486 +1365 0.007701417776977049 -0.005036914044010291 -0.0050934448745284765 +1364 0.006107434529155879 0.0005324261301887327 -0.005925686177785409 +3709 0.005668465411320722 0.0006577937024002293 -0.0007015353813013317 +3869 0.004306094583759192 0.0006272786651793583 -0.001654936183312845 +3054 -0.004459195259123702 -0.0005437058503866999 0.00487547362611172 +3053 0.0006467481499363373 0.0009534433124684227 0.005728523703436195 +1706 -0.002971950751166132 0.0058775939458966045 0.0018804268308476421 +1350 0.0032659985217053334 -0.004829695904685555 -0.001350388295603392 +1374 0.005317586848566642 0.0010136815052591355 -0.0035308339992096796 +1609 -0.0005489490733892638 0.001227238201395819 -0.003101571151057227 +1349 0.002548237877571727 0.0017855597226134167 0.011546159030780585 +1351 -0.003194507164682172 0.0018852237716686627 -0.004844281320332193 +806 0.0004357392917049361 0.0035899367331629346 0.003820235601090309 +3837 0.0018528962932602474 -0.009958399666307238 -0.001091362020929248 +1715 0.00774661454903921 -0.006637055837788504 -0.006111223085111637 +1641 0.0014019718894644187 0.0021025170030575177 -0.009719854803474304 +3050 0.0027982587842429974 0.0010551744413816525 -0.0027587890721041714 +3853 -0.0064879388929540895 0.008241933702070272 -0.004379354278826048 +1369 -0.0012396651118388817 -0.00226433344697986 0.0007012863767471588 +3060 -0.0037582489515992556 0.0013920056554189563 0.004302666454885187 +3059 -0.001970385671919406 0.0026847317065524195 0.00039765252603835103 +3058 -0.002875318079632514 0.0010950174244104278 -0.0029404533817200596 +3057 -0.00019796597184536659 0.0030899412388788916 -0.0017745017726153265 +3056 -0.0007195245230055897 0.0004384591144877323 0.0018235741253772387 +3055 0.0013582466647662447 -0.004660057218680595 0.0049075922435597 +3052 -0.004505203505591883 -0.0004259450835517015 0.005782795552016911 +3051 -0.0025633608083375985 -0.0031461389225159527 -0.005735734501935304 +1371 6.346839928748435e-05 -0.004113174017375221 0.0012279402765474018 +1370 -0.001119013551685631 -0.002859438487002105 -0.003894259217787757 +1711 -0.005400321620236326 0.0007975031038229862 0.000968203190785753 +1716 -0.0033326474959344166 0.004852637167152762 -0.0035942199671688472 +47 -0.003732833194663478 0.005729830935365453 0.00020227507971891034 +1377 0.004116510109210533 0.002776700357086929 -0.0032166820208529606 +3769 -0.007873707023234325 -0.00041450678543156444 0.0035409902251295213 +1720 0.0011105765560059455 -0.0038839260477228706 0.0019622483252441825 +1719 0.0003718319636638462 0.001128532146110048 -0.0004839699630933722 +775 -0.00026035077617939415 -0.0004162602323881052 -0.0017337419028457316 +2312 0.005967621501738313 0.005686902548173611 -0.005408569664973511 +1382 0.0004032756971125414 -0.0035673629147361056 0.007938085592686925 +1381 -0.003904010611417326 0.0007782130117605111 0.007382480066485634 +1383 -0.003170170806773889 0.003922836703298618 0.0043618161079096345 +3066 0.0045042106372918545 -0.009032803146696623 -0.001435700802325408 +3065 -0.0014543774860285882 -0.008338894624310601 0.0007921913631340848 +3064 0.00094776797378646 -0.002106155810520639 0.002074535422385938 +3063 -0.004872338482865468 -7.525434197564998e-05 0.001894673943005926 +3062 -0.007764770416213637 0.00035543429039083265 0.0015497928095128553 +3061 -0.0006823147219018286 -0.006998971150571402 0.0026898900852490473 +1386 0.0009533048819726316 -0.0003815959271617046 0.0019286038236530133 +1385 0.00016704908597988291 0.004369006813792316 0.005067821047638937 +1384 0.0017533479818138112 0.0037993637189219784 0.00817122050278695 +1003 -0.0010645634685356126 -0.005060227784300629 -0.00011181119268741514 +1718 -0.00510903101028501 -0.005215275960249113 0.0008694261443756619 +48 -0.003372572950585551 -0.0015196920062178227 0.0005218867554938487 +3026 0.0011406876888357474 0.006036881955311742 -0.006308468900926552 +3862 -0.0013155809096597193 -0.0002934393992620605 -0.0007918021303141434 +3069 0.00770201216898078 -0.001541497931829632 -0.0008582080318307972 +3070 0.00025919425441227643 0.0030704559945749126 -0.0020071843288406153 +3761 0.0017656749252738372 -0.003161535858114649 -0.0013386760967005074 +3727 -0.0019195848824786145 -0.0013983357117322546 -0.0010829424765747833 +3027 -0.005856939194514377 -0.0006297358114474645 0.0054651677575726035 +3030 0.0020923899908826173 0.0019158162944553892 0.004398415226393657 +3767 0.000625902857802969 -0.0041658408970507805 0.0017690893003381894 +3025 0.001916759022251055 0.0013133727996988906 -0.0006265861276618848 +805 -0.006287261413548436 -0.0014739113615672378 -0.002771120967003516 +2883 0.0034038605644399205 0.002776788752875872 0.003197184450364323 +994 0.0022496843504824964 -0.004056480681316537 -5.143825949008498e-05 +812 -0.0027893912048952666 -0.002019474007745977 0.0011298680907008128 +1564 -0.0005949677468836222 0.0013559101417520774 -0.0034944325100008922 +2463 0.0014204965513329912 0.006679581665681142 0.006247753945878244 +2374 -0.005175186672105957 0.004094189632478132 0.003460252481588267 + +Bonds + +1 1 601 606 +2 1 601 602 +3 1 55 60 +4 1 55 56 +5 1 247 252 +6 1 247 248 +7 1 248 249 +8 1 251 252 +9 1 241 246 +10 1 241 242 +11 1 242 243 +12 1 202 203 +13 1 201 202 +14 1 245 246 +15 1 50 51 +16 1 49 54 +17 1 49 50 +18 1 243 244 +19 1 244 245 +20 1 56 57 +21 1 249 250 +22 1 213 214 +23 1 253 258 +24 1 253 254 +25 1 254 255 +26 1 255 256 +27 1 256 257 +28 1 257 258 +29 1 1936 1937 +30 1 259 264 +31 1 259 260 +32 1 214 215 +33 1 215 216 +34 1 61 66 +35 1 61 62 +36 1 611 612 +37 1 22 23 +38 1 173 174 +39 1 261 262 +40 1 262 263 +41 1 263 264 +42 1 265 270 +43 1 265 266 +44 1 21 22 +45 1 20 21 +46 1 268 269 +47 1 269 270 +48 1 29 30 +49 1 1963 1968 +50 1 1963 1964 +51 1 23 24 +52 1 19 24 +53 1 19 20 +54 1 266 267 +55 1 267 268 +56 1 79 84 +57 1 79 80 +58 1 80 81 +59 1 81 82 +60 1 225 226 +61 1 226 227 +62 1 271 276 +63 1 271 272 +64 1 273 274 +65 1 274 275 +66 1 275 276 +67 1 227 228 +68 1 82 83 +69 1 28 29 +70 1 236 237 +71 1 217 222 +72 1 217 218 +73 1 272 273 +74 1 34 35 +75 1 2156 2157 +76 1 152 153 +77 1 231 232 +78 1 277 282 +79 1 277 278 +80 1 278 279 +81 1 279 280 +82 1 280 281 +83 1 281 282 +84 1 284 285 +85 1 86 87 +86 1 38 39 +87 1 285 286 +88 1 286 287 +89 1 237 238 +90 1 232 233 +91 1 2157 2158 +92 1 39 40 +93 1 283 288 +94 1 283 284 +95 1 94 95 +96 1 95 96 +97 1 238 239 +98 1 239 240 +99 1 287 288 +100 1 44 45 +101 1 93 94 +102 1 92 93 +103 1 91 96 +104 1 91 92 +105 1 235 240 +106 1 235 236 +107 1 83 84 +108 1 2330 2331 +109 1 193 198 +110 1 193 194 +111 1 2113 2118 +112 1 2113 2114 +113 1 295 300 +114 1 295 296 +115 1 296 297 +116 1 297 298 +117 1 298 299 +118 1 299 300 +119 1 98 99 +120 1 289 294 +121 1 289 290 +122 1 153 154 +123 1 290 291 +124 1 104 105 +125 1 64 65 +126 1 301 306 +127 1 301 302 +128 1 302 303 +129 1 303 304 +130 1 304 305 +131 1 305 306 +132 1 62 63 +133 1 63 64 +134 1 109 114 +135 1 109 110 +136 1 77 78 +137 1 617 618 +138 1 124 125 +139 1 307 312 +140 1 307 308 +141 1 308 309 +142 1 309 310 +143 1 310 311 +144 1 311 312 +145 1 123 124 +146 1 595 600 +147 1 595 596 +148 1 25 30 +149 1 25 26 +150 1 74 75 +151 1 75 76 +152 1 76 77 +153 1 122 123 +154 1 121 126 +155 1 121 122 +156 1 131 132 +157 1 319 324 +158 1 319 320 +159 1 320 321 +160 1 321 322 +161 1 322 323 +162 1 323 324 +163 1 127 132 +164 1 127 128 +165 1 130 131 +166 1 599 600 +167 1 2315 2316 +168 1 325 330 +169 1 325 326 +170 1 326 327 +171 1 327 328 +172 1 328 329 +173 1 329 330 +174 1 33 34 +175 1 40 41 +176 1 293 294 +177 1 97 102 +178 1 97 98 +179 1 332 333 +180 1 139 144 +181 1 139 140 +182 1 140 141 +183 1 2325 2326 +184 1 291 292 +185 1 292 293 +186 1 331 336 +187 1 331 332 +188 1 333 334 +189 1 334 335 +190 1 335 336 +191 1 795 796 +192 1 764 765 +193 1 1547 1548 +194 1 147 148 +195 1 344 345 +196 1 345 346 +197 1 346 347 +198 1 347 348 +199 1 1546 1547 +200 1 148 149 +201 1 343 348 +202 1 343 344 +203 1 1765 1770 +204 1 1765 1766 +205 1 146 147 +206 1 387 388 +207 1 1744 1745 +208 1 349 354 +209 1 349 350 +210 1 350 351 +211 1 351 352 +212 1 352 353 +213 1 353 354 +214 1 1741 1746 +215 1 1741 1742 +216 1 163 168 +217 1 163 164 +218 1 355 360 +219 1 355 356 +220 1 1743 1744 +221 1 359 360 +222 1 1742 1743 +223 1 2114 2115 +224 1 1745 1746 +225 1 169 174 +226 1 169 170 +227 1 164 165 +228 1 172 173 +229 1 166 167 +230 1 165 166 +231 1 357 358 +232 1 358 359 +233 1 361 366 +234 1 361 362 +235 1 365 366 +236 1 1747 1752 +237 1 1747 1748 +238 1 1751 1752 +239 1 170 171 +240 1 171 172 +241 1 362 363 +242 1 363 364 +243 1 167 168 +244 1 364 365 +245 1 2331 2332 +246 1 1769 1770 +247 1 1750 1751 +248 1 370 371 +249 1 1760 1761 +250 1 1761 1762 +251 1 151 156 +252 1 151 152 +253 1 1967 1968 +254 1 176 177 +255 1 2145 2146 +256 1 184 185 +257 1 368 369 +258 1 369 370 +259 1 371 372 +260 1 1577 1578 +261 1 1575 1576 +262 1 367 372 +263 1 367 368 +264 1 1748 1749 +265 1 182 183 +266 1 781 786 +267 1 781 782 +268 1 373 378 +269 1 373 374 +270 1 374 375 +271 1 375 376 +272 1 376 377 +273 1 1573 1578 +274 1 1573 1574 +275 1 763 768 +276 1 763 764 +277 1 105 106 +278 1 183 184 +279 1 1574 1575 +280 1 1576 1577 +281 1 1772 1773 +282 1 379 384 +283 1 379 380 +284 1 341 342 +285 1 340 341 +286 1 1771 1776 +287 1 1771 1772 +288 1 337 342 +289 1 337 338 +290 1 338 339 +291 1 339 340 +292 1 380 381 +293 1 381 382 +294 1 382 383 +295 1 383 384 +296 1 1773 1774 +297 1 1774 1775 +298 1 1775 1776 +299 1 1583 1584 +300 1 203 204 +301 1 73 78 +302 1 73 74 +303 1 250 251 +304 1 389 390 +305 1 388 389 +306 1 439 444 +307 1 439 440 +308 1 440 441 +309 1 441 442 +310 1 442 443 +311 1 443 444 +312 1 437 438 +313 1 398 399 +314 1 399 400 +315 1 400 401 +316 1 445 450 +317 1 445 446 +318 1 446 447 +319 1 447 448 +320 1 448 449 +321 1 449 450 +322 1 451 456 +323 1 451 452 +324 1 452 453 +325 1 453 454 +326 1 87 88 +327 1 260 261 +328 1 406 407 +329 1 454 455 +330 1 455 456 +331 1 457 462 +332 1 457 458 +333 1 461 462 +334 1 723 724 +335 1 458 459 +336 1 459 460 +337 1 460 461 +338 1 407 408 +339 1 409 414 +340 1 409 410 +341 1 647 648 +342 1 880 881 +343 1 463 468 +344 1 463 464 +345 1 465 466 +346 1 466 467 +347 1 467 468 +348 1 464 465 +349 1 230 231 +350 1 470 471 +351 1 471 472 +352 1 472 473 +353 1 197 198 +354 1 65 66 +355 1 433 438 +356 1 433 434 +357 1 435 436 +358 1 385 390 +359 1 385 386 +360 1 434 435 +361 1 436 437 +362 1 475 480 +363 1 475 476 +364 1 476 477 +365 1 477 478 +366 1 478 479 +367 1 479 480 +368 1 427 432 +369 1 427 428 +370 1 488 489 +371 1 489 490 +372 1 490 491 +373 1 491 492 +374 1 537 538 +375 1 538 539 +376 1 487 492 +377 1 487 488 +378 1 539 540 +379 1 728 729 +380 1 493 498 +381 1 493 494 +382 1 494 495 +383 1 495 496 +384 1 496 497 +385 1 497 498 +386 1 317 318 +387 1 499 504 +388 1 499 500 +389 1 500 501 +390 1 501 502 +391 1 502 503 +392 1 503 504 +393 1 506 507 +394 1 507 508 +395 1 313 318 +396 1 313 314 +397 1 314 315 +398 1 315 316 +399 1 316 317 +400 1 505 510 +401 1 505 506 +402 1 508 509 +403 1 509 510 +404 1 511 516 +405 1 511 512 +406 1 512 513 +407 1 513 514 +408 1 514 515 +409 1 515 516 +410 1 469 474 +411 1 469 470 +412 1 473 474 +413 1 517 522 +414 1 517 518 +415 1 518 519 +416 1 519 520 +417 1 520 521 +418 1 521 522 +419 1 523 528 +420 1 523 524 +421 1 524 525 +422 1 485 486 +423 1 481 486 +424 1 481 482 +425 1 484 485 +426 1 482 483 +427 1 483 484 +428 1 525 526 +429 1 526 527 +430 1 527 528 +431 1 715 720 +432 1 715 716 +433 1 721 726 +434 1 721 722 +435 1 531 532 +436 1 535 540 +437 1 535 536 +438 1 536 537 +439 1 530 531 +440 1 1922 1923 +441 1 1930 1931 +442 1 1929 1930 +443 1 1931 1932 +444 1 1928 1929 +445 1 1927 1932 +446 1 1927 1928 +447 1 2126 2127 +448 1 541 546 +449 1 541 542 +450 1 542 543 +451 1 543 544 +452 1 544 545 +453 1 545 546 +454 1 2127 2128 +455 1 1937 1938 +456 1 2129 2130 +457 1 2128 2129 +458 1 1940 1941 +459 1 1941 1942 +460 1 2125 2130 +461 1 2125 2126 +462 1 733 738 +463 1 733 734 +464 1 356 357 +465 1 551 552 +466 1 1943 1944 +467 1 1942 1943 +468 1 1945 1950 +469 1 1945 1946 +470 1 547 552 +471 1 547 548 +472 1 548 549 +473 1 549 550 +474 1 550 551 +475 1 553 558 +476 1 553 554 +477 1 557 558 +478 1 1939 1944 +479 1 1939 1940 +480 1 1946 1947 +481 1 1949 1950 +482 1 2133 2134 +483 1 1948 1949 +484 1 554 555 +485 1 555 556 +486 1 556 557 +487 1 559 564 +488 1 559 560 +489 1 560 561 +490 1 561 562 +491 1 562 563 +492 1 563 564 +493 1 1947 1948 +494 1 129 130 +495 1 886 887 +496 1 752 753 +497 1 2146 2147 +498 1 377 378 +499 1 565 570 +500 1 565 566 +501 1 566 567 +502 1 567 568 +503 1 568 569 +504 1 569 570 +505 1 1961 1962 +506 1 1966 1967 +507 1 1965 1966 +508 1 571 576 +509 1 571 572 +510 1 572 573 +511 1 532 533 +512 1 533 534 +513 1 529 534 +514 1 529 530 +515 1 573 574 +516 1 574 575 +517 1 575 576 +518 1 620 621 +519 1 1964 1965 +520 1 1921 1926 +521 1 1921 1922 +522 1 879 880 +523 1 722 723 +524 1 579 580 +525 1 635 636 +526 1 632 633 +527 1 631 636 +528 1 631 632 +529 1 629 630 +530 1 628 629 +531 1 580 581 +532 1 820 821 +533 1 821 822 +534 1 625 630 +535 1 625 626 +536 1 581 582 +537 1 819 820 +538 1 818 819 +539 1 817 822 +540 1 817 818 +541 1 641 642 +542 1 634 635 +543 1 633 634 +544 1 640 641 +545 1 639 640 +546 1 638 639 +547 1 637 642 +548 1 637 638 +549 1 833 834 +550 1 421 426 +551 1 421 422 +552 1 2320 2321 +553 1 832 833 +554 1 2141 2142 +555 1 862 863 +556 1 653 654 +557 1 646 647 +558 1 645 646 +559 1 644 645 +560 1 643 648 +561 1 643 644 +562 1 835 840 +563 1 835 836 +564 1 615 616 +565 1 691 696 +566 1 691 692 +567 1 578 579 +568 1 655 660 +569 1 655 656 +570 1 656 657 +571 1 649 654 +572 1 649 650 +573 1 803 804 +574 1 658 659 +575 1 657 658 +576 1 652 653 +577 1 650 651 +578 1 659 660 +579 1 845 846 +580 1 1581 1582 +581 1 1582 1583 +582 1 853 858 +583 1 853 854 +584 1 665 666 +585 1 664 665 +586 1 663 664 +587 1 662 663 +588 1 661 666 +589 1 661 662 +590 1 616 617 +591 1 85 90 +592 1 85 86 +593 1 808 809 +594 1 766 767 +595 1 627 628 +596 1 626 627 +597 1 670 671 +598 1 667 672 +599 1 667 668 +600 1 671 672 +601 1 669 670 +602 1 668 669 +603 1 623 624 +604 1 619 624 +605 1 619 620 +606 1 679 684 +607 1 679 680 +608 1 920 921 +609 1 919 924 +610 1 919 920 +611 1 683 684 +612 1 682 683 +613 1 681 682 +614 1 677 678 +615 1 673 678 +616 1 673 674 +617 1 871 876 +618 1 871 872 +619 1 872 873 +620 1 674 675 +621 1 727 732 +622 1 727 728 +623 1 921 922 +624 1 922 923 +625 1 868 869 +626 1 675 676 +627 1 873 874 +628 1 428 429 +629 1 680 681 +630 1 878 879 +631 1 689 690 +632 1 688 689 +633 1 687 688 +634 1 686 687 +635 1 685 690 +636 1 685 686 +637 1 429 430 +638 1 929 930 +639 1 737 738 +640 1 736 737 +641 1 884 885 +642 1 885 886 +643 1 700 701 +644 1 699 700 +645 1 698 699 +646 1 695 696 +647 1 694 695 +648 1 693 694 +649 1 692 693 +650 1 697 702 +651 1 697 698 +652 1 743 744 +653 1 701 702 +654 1 742 743 +655 1 745 750 +656 1 745 746 +657 1 883 888 +658 1 883 884 +659 1 898 899 +660 1 899 900 +661 1 897 898 +662 1 651 652 +663 1 707 708 +664 1 706 707 +665 1 705 706 +666 1 704 705 +667 1 703 708 +668 1 703 704 +669 1 895 900 +670 1 895 896 +671 1 896 897 +672 1 749 750 +673 1 945 946 +674 1 944 945 +675 1 748 749 +676 1 709 714 +677 1 709 710 +678 1 713 714 +679 1 712 713 +680 1 711 712 +681 1 710 711 +682 1 904 905 +683 1 26 27 +684 1 719 720 +685 1 676 677 +686 1 718 719 +687 1 717 718 +688 1 716 717 +689 1 869 870 +690 1 1960 1961 +691 1 45 46 +692 1 2306 2307 +693 1 2121 2122 +694 1 2307 2308 +695 1 916 917 +696 1 731 732 +697 1 730 731 +698 1 729 730 +699 1 917 918 +700 1 2119 2124 +701 1 2119 2120 +702 1 2120 2121 +703 1 923 924 +704 1 2115 2116 +705 1 2319 2320 +706 1 218 219 +707 1 735 736 +708 1 734 735 +709 1 925 930 +710 1 925 926 +711 1 926 927 +712 1 927 928 +713 1 2333 2334 +714 1 854 855 +715 1 2132 2133 +716 1 125 126 +717 1 622 623 +718 1 2326 2327 +719 1 739 744 +720 1 739 740 +721 1 2131 2136 +722 1 2131 2132 +723 1 2327 2328 +724 1 746 747 +725 1 741 742 +726 1 740 741 +727 1 931 936 +728 1 931 932 +729 1 932 933 +730 1 2135 2136 +731 1 2134 2135 +732 1 2332 2333 +733 1 933 934 +734 1 941 942 +735 1 2329 2334 +736 1 2329 2330 +737 1 2143 2148 +738 1 2143 2144 +739 1 829 834 +740 1 829 830 +741 1 747 748 +742 1 2147 2148 +743 1 837 838 +744 1 755 756 +745 1 754 755 +746 1 753 754 +747 1 943 948 +748 1 943 944 +749 1 947 948 +750 1 17 18 +751 1 751 756 +752 1 751 752 +753 1 761 762 +754 1 760 761 +755 1 759 760 +756 1 758 759 +757 1 757 762 +758 1 757 758 +759 1 2116 2117 +760 1 2158 2159 +761 1 913 918 +762 1 913 914 +763 1 724 725 +764 1 2159 2160 +765 1 765 766 +766 1 2117 2118 +767 1 27 28 +768 1 914 915 +769 1 767 768 +770 1 725 726 +771 1 2155 2160 +772 1 2155 2156 +773 1 1762 1763 +774 1 1749 1750 +775 1 2308 2309 +776 1 224 225 +777 1 233 234 +778 1 386 387 +779 1 221 222 +780 1 32 33 +781 1 1925 1926 +782 1 892 893 +783 1 863 864 +784 1 905 906 +785 1 946 947 +786 1 844 845 +787 1 2311 2316 +788 1 2311 2312 +789 1 865 870 +790 1 865 866 +791 1 825 826 +792 1 826 827 +793 1 962 963 +794 1 970 971 +795 1 971 972 +796 1 1012 1013 +797 1 1017 1018 +798 1 1019 1020 +799 1 963 964 +800 1 1013 1014 +801 1 1018 1019 +802 1 964 965 +803 1 824 825 +804 1 809 810 +805 1 823 828 +806 1 823 824 +807 1 1016 1017 +808 1 827 828 +809 1 973 978 +810 1 973 974 +811 1 977 978 +812 1 1021 1026 +813 1 1021 1022 +814 1 1022 1023 +815 1 1023 1024 +816 1 1024 1025 +817 1 1025 1026 +818 1 1579 1584 +819 1 1579 1580 +820 1 187 192 +821 1 187 188 +822 1 976 977 +823 1 1027 1032 +824 1 1027 1028 +825 1 1028 1029 +826 1 1029 1030 +827 1 1030 1031 +828 1 1031 1032 +829 1 1037 1038 +830 1 986 987 +831 1 1033 1038 +832 1 1033 1034 +833 1 989 990 +834 1 985 990 +835 1 985 986 +836 1 790 791 +837 1 1375 1380 +838 1 1375 1376 +839 1 789 790 +840 1 838 839 +841 1 31 36 +842 1 31 32 +843 1 788 789 +844 1 2888 2889 +845 1 987 988 +846 1 849 850 +847 1 841 846 +848 1 841 842 +849 1 800 801 +850 1 842 843 +851 1 843 844 +852 1 988 989 +853 1 1034 1035 +854 1 1039 1044 +855 1 1039 1040 +856 1 1040 1041 +857 1 1041 1042 +858 1 1042 1043 +859 1 1043 1044 +860 1 801 802 +861 1 799 804 +862 1 799 800 +863 1 1169 1170 +864 1 848 849 +865 1 802 803 +866 1 850 851 +867 1 2889 2890 +868 1 847 852 +869 1 847 848 +870 1 1360 1361 +871 1 855 856 +872 1 999 1000 +873 1 1000 1001 +874 1 1001 1002 +875 1 1045 1050 +876 1 1045 1046 +877 1 1046 1047 +878 1 1047 1048 +879 1 998 999 +880 1 997 1002 +881 1 997 998 +882 1 1048 1049 +883 1 995 996 +884 1 935 936 +885 1 856 857 +886 1 1533 1534 +887 1 1535 1536 +888 1 859 864 +889 1 859 860 +890 1 860 861 +891 1 861 862 +892 1 1010 1011 +893 1 1051 1056 +894 1 1051 1052 +895 1 813 814 +896 1 867 868 +897 1 1345 1350 +898 1 1345 1346 +899 1 875 876 +900 1 1060 1061 +901 1 1061 1062 +902 1 1063 1068 +903 1 1063 1064 +904 1 1064 1065 +905 1 1065 1066 +906 1 1066 1067 +907 1 1067 1068 +908 1 1059 1060 +909 1 1058 1059 +910 1 866 867 +911 1 1057 1062 +912 1 1057 1058 +913 1 1069 1074 +914 1 1069 1070 +915 1 1070 1071 +916 1 1071 1072 +917 1 1072 1073 +918 1 1073 1074 +919 1 1075 1080 +920 1 1075 1076 +921 1 1079 1080 +922 1 1185 1186 +923 1 881 882 +924 1 874 875 +925 1 2881 2886 +926 1 2881 2882 +927 1 1036 1037 +928 1 1076 1077 +929 1 1077 1078 +930 1 1078 1079 +931 1 1083 1084 +932 1 1084 1085 +933 1 1085 1086 +934 1 893 894 +935 1 1081 1086 +936 1 1081 1082 +937 1 1082 1083 +938 1 887 888 +939 1 1195 1200 +940 1 1195 1196 +941 1 1492 1493 +942 1 190 191 +943 1 851 852 +944 1 1035 1036 +945 1 889 894 +946 1 889 890 +947 1 1087 1092 +948 1 1087 1088 +949 1 1088 1089 +950 1 1089 1090 +951 1 1090 1091 +952 1 1091 1092 +953 1 901 906 +954 1 901 902 +955 1 1049 1050 +956 1 903 904 +957 1 1095 1096 +958 1 1096 1097 +959 1 1097 1098 +960 1 909 910 +961 1 902 903 +962 1 2899 2904 +963 1 2899 2900 +964 1 908 909 +965 1 910 911 +966 1 911 912 +967 1 1388 1389 +968 1 907 912 +969 1 907 908 +970 1 1103 1104 +971 1 1102 1103 +972 1 1105 1110 +973 1 1105 1106 +974 1 1111 1116 +975 1 1111 1112 +976 1 1112 1113 +977 1 1113 1114 +978 1 1114 1115 +979 1 1115 1116 +980 1 2309 2310 +981 1 2506 2507 +982 1 2507 2508 +983 1 2305 2310 +984 1 2305 2306 +985 1 1106 1107 +986 1 2723 2724 +987 1 1117 1122 +988 1 1117 1118 +989 1 1120 1121 +990 1 1121 1122 +991 1 1126 1127 +992 1 1127 1128 +993 1 2513 2514 +994 1 2512 2513 +995 1 2511 2512 +996 1 975 976 +997 1 939 940 +998 1 2522 2523 +999 1 937 942 +1000 1 937 938 +1001 1 1123 1128 +1002 1 1123 1124 +1003 1 1124 1125 +1004 1 1132 1133 +1005 1 938 939 +1006 1 1133 1134 +1007 1 1129 1134 +1008 1 1129 1130 +1009 1 928 929 +1010 1 1131 1132 +1011 1 1130 1131 +1012 1 1135 1140 +1013 1 1135 1136 +1014 1 1136 1137 +1015 1 1137 1138 +1016 1 1138 1139 +1017 1 1139 1140 +1018 1 940 941 +1019 1 2541 2542 +1020 1 953 954 +1021 1 952 953 +1022 1 949 954 +1023 1 949 950 +1024 1 950 951 +1025 1 951 952 +1026 1 1141 1146 +1027 1 1141 1142 +1028 1 1142 1143 +1029 1 1143 1144 +1030 1 1144 1145 +1031 1 1145 1146 +1032 1 3 4 +1033 1 2542 2543 +1034 1 814 815 +1035 1 1149 1150 +1036 1 1109 1110 +1037 1 958 959 +1038 1 957 958 +1039 1 959 960 +1040 1 955 960 +1041 1 955 956 +1042 1 956 957 +1043 1 1107 1108 +1044 1 1108 1109 +1045 1 1150 1151 +1046 1 1151 1152 +1047 1 2540 2541 +1048 1 877 882 +1049 1 877 878 +1050 1 2349 2350 +1051 1 1147 1152 +1052 1 1147 1148 +1053 1 1148 1149 +1054 1 2350 2351 +1055 1 1015 1020 +1056 1 1015 1016 +1057 1 1204 1205 +1058 1 1205 1206 +1059 1 1207 1212 +1060 1 1207 1208 +1061 1 1208 1209 +1062 1 1209 1210 +1063 1 1210 1211 +1064 1 1211 1212 +1065 1 1202 1203 +1066 1 1203 1204 +1067 1 1201 1206 +1068 1 1201 1202 +1069 1 41 42 +1070 1 1213 1218 +1071 1 1213 1214 +1072 1 1214 1215 +1073 1 1173 1174 +1074 1 1405 1410 +1075 1 1405 1406 +1076 1 1172 1173 +1077 1 1215 1216 +1078 1 1178 1179 +1079 1 1171 1176 +1080 1 1171 1172 +1081 1 1174 1175 +1082 1 1175 1176 +1083 1 1177 1182 +1084 1 1177 1178 +1085 1 1219 1224 +1086 1 1219 1220 +1087 1 1220 1221 +1088 1 1221 1222 +1089 1 1222 1223 +1090 1 1223 1224 +1091 1 1411 1416 +1092 1 1411 1412 +1093 1 1229 1230 +1094 1 1225 1230 +1095 1 1225 1226 +1096 1 1187 1188 +1097 1 59 60 +1098 1 1228 1229 +1099 1 1231 1236 +1100 1 1231 1232 +1101 1 1232 1233 +1102 1 1233 1234 +1103 1 1234 1235 +1104 1 1235 1236 +1105 1 1181 1182 +1106 1 1180 1181 +1107 1 1179 1180 +1108 1 1186 1187 +1109 1 1237 1242 +1110 1 1237 1238 +1111 1 1238 1239 +1112 1 1239 1240 +1113 1 1240 1241 +1114 1 1241 1242 +1115 1 1053 1054 +1116 1 1011 1012 +1117 1 1009 1014 +1118 1 1009 1010 +1119 1 1052 1053 +1120 1 1246 1247 +1121 1 1247 1248 +1122 1 836 837 +1123 1 991 996 +1124 1 991 992 +1125 1 1197 1198 +1126 1 1196 1197 +1127 1 1243 1248 +1128 1 1243 1244 +1129 1 1244 1245 +1130 1 1245 1246 +1131 1 1252 1253 +1132 1 1255 1260 +1133 1 1255 1256 +1134 1 1256 1257 +1135 1 1257 1258 +1136 1 1258 1259 +1137 1 1259 1260 +1138 1 1253 1254 +1139 1 1251 1252 +1140 1 1217 1218 +1141 1 1216 1217 +1142 1 1261 1266 +1143 1 1261 1262 +1144 1 1262 1263 +1145 1 1263 1264 +1146 1 1264 1265 +1147 1 1265 1266 +1148 1 1406 1407 +1149 1 1267 1272 +1150 1 1267 1268 +1151 1 1268 1269 +1152 1 1269 1270 +1153 1 1270 1271 +1154 1 1271 1272 +1155 1 1273 1278 +1156 1 1273 1274 +1157 1 1461 1462 +1158 1 1460 1461 +1159 1 1227 1228 +1160 1 1277 1278 +1161 1 1226 1227 +1162 1 1276 1277 +1163 1 1274 1275 +1164 1 1275 1276 +1165 1 1279 1284 +1166 1 1279 1280 +1167 1 1280 1281 +1168 1 1281 1282 +1169 1 1282 1283 +1170 1 1283 1284 +1171 1 1094 1095 +1172 1 1093 1098 +1173 1 1093 1094 +1174 1 1285 1290 +1175 1 1285 1286 +1176 1 1286 1287 +1177 1 1287 1288 +1178 1 1288 1289 +1179 1 1289 1290 +1180 1 1294 1295 +1181 1 1293 1294 +1182 1 1054 1055 +1183 1 1055 1056 +1184 1 1099 1104 +1185 1 1099 1100 +1186 1 1100 1101 +1187 1 1101 1102 +1188 1 1250 1251 +1189 1 1249 1254 +1190 1 1249 1250 +1191 1 1291 1296 +1192 1 1291 1292 +1193 1 1292 1293 +1194 1 1295 1296 +1195 1 1298 1299 +1196 1 1303 1308 +1197 1 1303 1304 +1198 1 1304 1305 +1199 1 1305 1306 +1200 1 1306 1307 +1201 1 1307 1308 +1202 1 1498 1499 +1203 1 1497 1498 +1204 1 1118 1119 +1205 1 1125 1126 +1206 1 2703 2704 +1207 1 1119 1120 +1208 1 1309 1314 +1209 1 1309 1310 +1210 1 1310 1311 +1211 1 1311 1312 +1212 1 1312 1313 +1213 1 1313 1314 +1214 1 2704 2705 +1215 1 831 832 +1216 1 1505 1506 +1217 1 2705 2706 +1218 1 2897 2898 +1219 1 1504 1505 +1220 1 2896 2897 +1221 1 2711 2712 +1222 1 2707 2712 +1223 1 2707 2708 +1224 1 2709 2710 +1225 1 1315 1320 +1226 1 1315 1316 +1227 1 1316 1317 +1228 1 1317 1318 +1229 1 1318 1319 +1230 1 1319 1320 +1231 1 1321 1326 +1232 1 1321 1322 +1233 1 2708 2709 +1234 1 1324 1325 +1235 1 1325 1326 +1236 1 2710 2711 +1237 1 1511 1512 +1238 1 1510 1511 +1239 1 830 831 +1240 1 1322 1323 +1241 1 1323 1324 +1242 1 58 59 +1243 1 2717 2718 +1244 1 1327 1332 +1245 1 1327 1328 +1246 1 1328 1329 +1247 1 1329 1330 +1248 1 1330 1331 +1249 1 1331 1332 +1250 1 2716 2717 +1251 1 2715 2716 +1252 1 1523 1524 +1253 1 1333 1338 +1254 1 1333 1334 +1255 1 1334 1335 +1256 1 1335 1336 +1257 1 1336 1337 +1258 1 1337 1338 +1259 1 2726 2727 +1260 1 2727 2728 +1261 1 1339 1344 +1262 1 1339 1340 +1263 1 1340 1341 +1264 1 2728 2729 +1265 1 2918 2919 +1266 1 2917 2922 +1267 1 2917 2918 +1268 1 2882 2883 +1269 1 1299 1300 +1270 1 1300 1301 +1271 1 1531 1536 +1272 1 1531 1532 +1273 1 1297 1302 +1274 1 1297 1298 +1275 1 1301 1302 +1276 1 1341 1342 +1277 1 1342 1343 +1278 1 1343 1344 +1279 1 4 5 +1280 1 1354 1355 +1281 1 189 190 +1282 1 53 54 +1283 1 52 53 +1284 1 1 6 +1285 1 1 2 +1286 1 57 58 +1287 1 1399 1404 +1288 1 1399 1400 +1289 1 1397 1398 +1290 1 1396 1397 +1291 1 1355 1356 +1292 1 5 6 +1293 1 1395 1396 +1294 1 1393 1398 +1295 1 1393 1394 +1296 1 1540 1541 +1297 1 2 3 +1298 1 1532 1533 +1299 1 1403 1404 +1300 1 1394 1395 +1301 1 191 192 +1302 1 1401 1402 +1303 1 1400 1401 +1304 1 1402 1403 +1305 1 1409 1410 +1306 1 1408 1409 +1307 1 103 108 +1308 1 103 104 +1309 1 141 142 +1310 1 1361 1362 +1311 1 1363 1368 +1312 1 1363 1364 +1313 1 70 71 +1314 1 68 69 +1315 1 1366 1367 +1316 1 1419 1420 +1317 1 1418 1419 +1318 1 1414 1415 +1319 1 1413 1414 +1320 1 1412 1413 +1321 1 1367 1368 +1322 1 71 72 +1323 1 67 72 +1324 1 67 68 +1325 1 69 70 +1326 1 1372 1373 +1327 1 35 36 +1328 1 115 120 +1329 1 115 116 +1330 1 1373 1374 +1331 1 1427 1428 +1332 1 1426 1427 +1333 1 1425 1426 +1334 1 1424 1425 +1335 1 1417 1422 +1336 1 1417 1418 +1337 1 1423 1428 +1338 1 1423 1424 +1339 1 796 797 +1340 1 88 89 +1341 1 1379 1380 +1342 1 1433 1434 +1343 1 1430 1431 +1344 1 1429 1434 +1345 1 1429 1430 +1346 1 89 90 +1347 1 1378 1379 +1348 1 1432 1433 +1349 1 1431 1432 +1350 1 43 48 +1351 1 43 44 +1352 1 133 138 +1353 1 133 134 +1354 1 1389 1390 +1355 1 134 135 +1356 1 1439 1440 +1357 1 1436 1437 +1358 1 1435 1440 +1359 1 1435 1436 +1360 1 1391 1392 +1361 1 1390 1391 +1362 1 890 891 +1363 1 107 108 +1364 1 99 100 +1365 1 1448 1449 +1366 1 1447 1452 +1367 1 1447 1448 +1368 1 1445 1446 +1369 1 1444 1445 +1370 1 100 101 +1371 1 106 107 +1372 1 1443 1444 +1373 1 1441 1446 +1374 1 1441 1442 +1375 1 101 102 +1376 1 1442 1443 +1377 1 782 783 +1378 1 110 111 +1379 1 111 112 +1380 1 1407 1408 +1381 1 1450 1451 +1382 1 1449 1450 +1383 1 1451 1452 +1384 1 1457 1458 +1385 1 1456 1457 +1386 1 1455 1456 +1387 1 1454 1455 +1388 1 1453 1458 +1389 1 1453 1454 +1390 1 113 114 +1391 1 112 113 +1392 1 1463 1464 +1393 1 1415 1416 +1394 1 118 119 +1395 1 1462 1463 +1396 1 1459 1464 +1397 1 1459 1460 +1398 1 116 117 +1399 1 117 118 +1400 1 857 858 +1401 1 1420 1421 +1402 1 1421 1422 +1403 1 1469 1470 +1404 1 1468 1469 +1405 1 1475 1476 +1406 1 1474 1475 +1407 1 1473 1474 +1408 1 1472 1473 +1409 1 1471 1476 +1410 1 1471 1472 +1411 1 1467 1468 +1412 1 1466 1467 +1413 1 1465 1470 +1414 1 1465 1466 +1415 1 135 136 +1416 1 136 137 +1417 1 1481 1482 +1418 1 1480 1481 +1419 1 1479 1480 +1420 1 1478 1479 +1421 1 1477 1482 +1422 1 1477 1478 +1423 1 137 138 +1424 1 1438 1439 +1425 1 1437 1438 +1426 1 1483 1488 +1427 1 1483 1484 +1428 1 1484 1485 +1429 1 1487 1488 +1430 1 1486 1487 +1431 1 1485 1486 +1432 1 142 143 +1433 1 143 144 +1434 1 1489 1494 +1435 1 1489 1490 +1436 1 155 156 +1437 1 1544 1545 +1438 1 891 892 +1439 1 1496 1497 +1440 1 1495 1500 +1441 1 1495 1496 +1442 1 1493 1494 +1443 1 1499 1500 +1444 1 1545 1546 +1445 1 1552 1553 +1446 1 1553 1554 +1447 1 161 162 +1448 1 160 161 +1449 1 159 160 +1450 1 1551 1552 +1451 1 1549 1554 +1452 1 1549 1550 +1453 1 1501 1506 +1454 1 1501 1502 +1455 1 1503 1504 +1456 1 1502 1503 +1457 1 157 162 +1458 1 157 158 +1459 1 158 159 +1460 1 1550 1551 +1461 1 1557 1558 +1462 1 2902 2903 +1463 1 934 935 +1464 1 2905 2910 +1465 1 2905 2906 +1466 1 119 120 +1467 1 1514 1515 +1468 1 1513 1518 +1469 1 1513 1514 +1470 1 1509 1510 +1471 1 1508 1509 +1472 1 1507 1512 +1473 1 1507 1508 +1474 1 965 966 +1475 1 2903 2904 +1476 1 1515 1516 +1477 1 2509 2514 +1478 1 2509 2510 +1479 1 2906 2907 +1480 1 1534 1535 +1481 1 1491 1492 +1482 1 2909 2910 +1483 1 2908 2909 +1484 1 1516 1517 +1485 1 2914 2915 +1486 1 2912 2913 +1487 1 1522 1523 +1488 1 1521 1522 +1489 1 1520 1521 +1490 1 1519 1524 +1491 1 1519 1520 +1492 1 1517 1518 +1493 1 2913 2914 +1494 1 2907 2908 +1495 1 177 178 +1496 1 787 792 +1497 1 787 788 +1498 1 178 179 +1499 1 2919 2920 +1500 1 185 186 +1501 1 1525 1530 +1502 1 1525 1526 +1503 1 179 180 +1504 1 1529 1530 +1505 1 1528 1529 +1506 1 1527 1528 +1507 1 1526 1527 +1508 1 1580 1581 +1509 1 1541 1542 +1510 1 188 189 +1511 1 1490 1491 +1512 1 2517 2518 +1513 1 2521 2526 +1514 1 2521 2522 +1515 1 51 52 +1516 1 149 150 +1517 1 154 155 +1518 1 175 180 +1519 1 175 176 +1520 1 181 186 +1521 1 181 182 +1522 1 128 129 +1523 1 145 150 +1524 1 145 146 +1525 1 839 840 +1526 1 915 916 +1527 1 1589 1590 +1528 1 1780 1781 +1529 1 1588 1589 +1530 1 1787 1788 +1531 1 1779 1780 +1532 1 1777 1782 +1533 1 1777 1778 +1534 1 1778 1779 +1535 1 1593 1594 +1536 1 1736 1737 +1537 1 1730 1731 +1538 1 1585 1590 +1539 1 1585 1586 +1540 1 1717 1722 +1541 1 1717 1718 +1542 1 1738 1739 +1543 1 1737 1738 +1544 1 1783 1788 +1545 1 1783 1784 +1546 1 1784 1785 +1547 1 1785 1786 +1548 1 1786 1787 +1549 1 1597 1602 +1550 1 1597 1598 +1551 1 1598 1599 +1552 1 1789 1794 +1553 1 1789 1790 +1554 1 1790 1791 +1555 1 1791 1792 +1556 1 1792 1793 +1557 1 1793 1794 +1558 1 401 402 +1559 1 1714 1715 +1560 1 1657 1662 +1561 1 1657 1658 +1562 1 1795 1800 +1563 1 1795 1796 +1564 1 1796 1797 +1565 1 1797 1798 +1566 1 1798 1799 +1567 1 1799 1800 +1568 1 1805 1806 +1569 1 1755 1756 +1570 1 1613 1614 +1571 1 1756 1757 +1572 1 1634 1635 +1573 1 1801 1806 +1574 1 1801 1802 +1575 1 1562 1563 +1576 1 1802 1803 +1577 1 794 795 +1578 1 1753 1758 +1579 1 1753 1754 +1580 1 1754 1755 +1581 1 1763 1764 +1582 1 1803 1804 +1583 1 1804 1805 +1584 1 1807 1812 +1585 1 1807 1808 +1586 1 1808 1809 +1587 1 1809 1810 +1588 1 1810 1811 +1589 1 1811 1812 +1590 1 1628 1629 +1591 1 1563 1564 +1592 1 1622 1623 +1593 1 1587 1588 +1594 1 1813 1818 +1595 1 1813 1814 +1596 1 1814 1815 +1597 1 1815 1816 +1598 1 1816 1817 +1599 1 1621 1626 +1600 1 1621 1622 +1601 1 1768 1769 +1602 1 1721 1722 +1603 1 1817 1818 +1604 1 1731 1732 +1605 1 1630 1631 +1606 1 1732 1733 +1607 1 1670 1671 +1608 1 1733 1734 +1609 1 793 798 +1610 1 793 794 +1611 1 1631 1632 +1612 1 1819 1824 +1613 1 1819 1820 +1614 1 1820 1821 +1615 1 1821 1822 +1616 1 1822 1823 +1617 1 1823 1824 +1618 1 1627 1632 +1619 1 1627 1628 +1620 1 1537 1542 +1621 1 1537 1538 +1622 1 1727 1728 +1623 1 1781 1782 +1624 1 1642 1643 +1625 1 1637 1638 +1626 1 1829 1830 +1627 1 1831 1836 +1628 1 1831 1832 +1629 1 1832 1833 +1630 1 1833 1834 +1631 1 2140 2141 +1632 1 603 604 +1633 1 1633 1638 +1634 1 1633 1634 +1635 1 1643 1644 +1636 1 1599 1600 +1637 1 1649 1650 +1638 1 1835 1836 +1639 1 1586 1587 +1640 1 1834 1835 +1641 1 1647 1648 +1642 1 1648 1649 +1643 1 1837 1842 +1644 1 1837 1838 +1645 1 1838 1839 +1646 1 1839 1840 +1647 1 1840 1841 +1648 1 1841 1842 +1649 1 1600 1601 +1650 1 614 615 +1651 1 1651 1656 +1652 1 1651 1652 +1653 1 1652 1653 +1654 1 1843 1848 +1655 1 1843 1844 +1656 1 1844 1845 +1657 1 1845 1846 +1658 1 1846 1847 +1659 1 1847 1848 +1660 1 1850 1851 +1661 1 1851 1852 +1662 1 1653 1654 +1663 1 1659 1660 +1664 1 1660 1661 +1665 1 1661 1662 +1666 1 1852 1853 +1667 1 1713 1714 +1668 1 1658 1659 +1669 1 1767 1768 +1670 1 1725 1726 +1671 1 1849 1854 +1672 1 1849 1850 +1673 1 1591 1596 +1674 1 1591 1592 +1675 1 1853 1854 +1676 1 1856 1857 +1677 1 1857 1858 +1678 1 1858 1859 +1679 1 1859 1860 +1680 1 1667 1668 +1681 1 1663 1668 +1682 1 1663 1664 +1683 1 1735 1740 +1684 1 1735 1736 +1685 1 1855 1860 +1686 1 1855 1856 +1687 1 1671 1672 +1688 1 1672 1673 +1689 1 1861 1866 +1690 1 1861 1862 +1691 1 1862 1863 +1692 1 1863 1864 +1693 1 1864 1865 +1694 1 1865 1866 +1695 1 1673 1674 +1696 1 417 418 +1697 1 1684 1685 +1698 1 1675 1680 +1699 1 1675 1676 +1700 1 1636 1637 +1701 1 1635 1636 +1702 1 1679 1680 +1703 1 1825 1830 +1704 1 1825 1826 +1705 1 1826 1827 +1706 1 1867 1872 +1707 1 1867 1868 +1708 1 1868 1869 +1709 1 1869 1870 +1710 1 1870 1871 +1711 1 1871 1872 +1712 1 1917 1918 +1713 1 1678 1679 +1714 1 1677 1678 +1715 1 1923 1924 +1716 1 1918 1919 +1717 1 1676 1677 +1718 1 1685 1686 +1719 1 8 9 +1720 1 1873 1878 +1721 1 1873 1874 +1722 1 1877 1878 +1723 1 1879 1884 +1724 1 1879 1880 +1725 1 1880 1881 +1726 1 1882 1883 +1727 1 1883 1884 +1728 1 10 11 +1729 1 1876 1877 +1730 1 7 12 +1731 1 7 8 +1732 1 1874 1875 +1733 1 1875 1876 +1734 1 11 12 +1735 1 9 10 +1736 1 200 201 +1737 1 1881 1882 +1738 1 14 15 +1739 1 1885 1890 +1740 1 1885 1886 +1741 1 1886 1887 +1742 1 1887 1888 +1743 1 1888 1889 +1744 1 1889 1890 +1745 1 13 18 +1746 1 13 14 +1747 1 2417 2418 +1748 1 209 210 +1749 1 1701 1702 +1750 1 16 17 +1751 1 205 210 +1752 1 205 206 +1753 1 15 16 +1754 1 621 622 +1755 1 1703 1704 +1756 1 1702 1703 +1757 1 1699 1704 +1758 1 1699 1700 +1759 1 1700 1701 +1760 1 1708 1709 +1761 1 1891 1896 +1762 1 1891 1892 +1763 1 1892 1893 +1764 1 1893 1894 +1765 1 1895 1896 +1766 1 219 220 +1767 1 1709 1710 +1768 1 220 221 +1769 1 1707 1708 +1770 1 1894 1895 +1771 1 2491 2496 +1772 1 2491 2492 +1773 1 772 773 +1774 1 1901 1902 +1775 1 1897 1902 +1776 1 1897 1898 +1777 1 1899 1900 +1778 1 1900 1901 +1779 1 1903 1908 +1780 1 1903 1904 +1781 1 1906 1907 +1782 1 223 228 +1783 1 223 224 +1784 1 1898 1899 +1785 1 1904 1905 +1786 1 1759 1764 +1787 1 1759 1760 +1788 1 2465 2466 +1789 1 1907 1908 +1790 1 1909 1914 +1791 1 1909 1910 +1792 1 1910 1911 +1793 1 1911 1912 +1794 1 1912 1913 +1795 1 1913 1914 +1796 1 1592 1593 +1797 1 229 234 +1798 1 229 230 +1799 1 2492 2493 +1800 1 1916 1917 +1801 1 194 195 +1802 1 1723 1728 +1803 1 1723 1724 +1804 1 1915 1920 +1805 1 1915 1916 +1806 1 1919 1920 +1807 1 1724 1725 +1808 1 195 196 +1809 1 196 197 +1810 1 46 47 +1811 1 2464 2465 +1812 1 1924 1925 +1813 1 1972 1973 +1814 1 1973 1974 +1815 1 1975 1980 +1816 1 1975 1976 +1817 1 1976 1977 +1818 1 1979 1980 +1819 1 2167 2172 +1820 1 2167 2168 +1821 1 2375 2376 +1822 1 199 204 +1823 1 199 200 +1824 1 1934 1935 +1825 1 1933 1938 +1826 1 1933 1934 +1827 1 1935 1936 +1828 1 1726 1727 +1829 1 1981 1986 +1830 1 1981 1982 +1831 1 1982 1983 +1832 1 1983 1984 +1833 1 1984 1985 +1834 1 1985 1986 +1835 1 2387 2388 +1836 1 610 611 +1837 1 1987 1992 +1838 1 1987 1988 +1839 1 1988 1989 +1840 1 1989 1990 +1841 1 1990 1991 +1842 1 1991 1992 +1843 1 1996 1997 +1844 1 1997 1998 +1845 1 1995 1996 +1846 1 2187 2188 +1847 1 1953 1954 +1848 1 1951 1956 +1849 1 1951 1952 +1850 1 1993 1998 +1851 1 1993 1994 +1852 1 1994 1995 +1853 1 1999 2004 +1854 1 1999 2000 +1855 1 2000 2001 +1856 1 2001 2002 +1857 1 2002 2003 +1858 1 2003 2004 +1859 1 1955 1956 +1860 1 2195 2196 +1861 1 2194 2195 +1862 1 2193 2194 +1863 1 2192 2193 +1864 1 2191 2196 +1865 1 2191 2192 +1866 1 1954 1955 +1867 1 1625 1626 +1868 1 1952 1953 +1869 1 2005 2010 +1870 1 2005 2006 +1871 1 2006 2007 +1872 1 2007 2008 +1873 1 2008 2009 +1874 1 2009 2010 +1875 1 1958 1959 +1876 1 1959 1960 +1877 1 1957 1962 +1878 1 1957 1958 +1879 1 2151 2152 +1880 1 419 420 +1881 1 2299 2304 +1882 1 2299 2300 +1883 1 1561 1566 +1884 1 1561 1562 +1885 1 1971 1972 +1886 1 1969 1974 +1887 1 1969 1970 +1888 1 1970 1971 +1889 1 2011 2016 +1890 1 2011 2012 +1891 1 2012 2013 +1892 1 2014 2015 +1893 1 2015 2016 +1894 1 2013 2014 +1895 1 2164 2165 +1896 1 2205 2206 +1897 1 1729 1734 +1898 1 1729 1730 +1899 1 1828 1829 +1900 1 1977 1978 +1901 1 1978 1979 +1902 1 2023 2028 +1903 1 2023 2024 +1904 1 2024 2025 +1905 1 2025 2026 +1906 1 2026 2027 +1907 1 2027 2028 +1908 1 2215 2220 +1909 1 2215 2216 +1910 1 2029 2034 +1911 1 2029 2030 +1912 1 2030 2031 +1913 1 2031 2032 +1914 1 2032 2033 +1915 1 2033 2034 +1916 1 2035 2040 +1917 1 2035 2036 +1918 1 2036 2037 +1919 1 2037 2038 +1920 1 2038 2039 +1921 1 2039 2040 +1922 1 2237 2238 +1923 1 2231 2232 +1924 1 2278 2279 +1925 1 2277 2278 +1926 1 2089 2094 +1927 1 2089 2090 +1928 1 2276 2277 +1929 1 2228 2229 +1930 1 2227 2232 +1931 1 2227 2228 +1932 1 2279 2280 +1933 1 2041 2046 +1934 1 2041 2042 +1935 1 2042 2043 +1936 1 2043 2044 +1937 1 2044 2045 +1938 1 2045 2046 +1939 1 2047 2052 +1940 1 2047 2048 +1941 1 2048 2049 +1942 1 2049 2050 +1943 1 2050 2051 +1944 1 2051 2052 +1945 1 2235 2236 +1946 1 2093 2094 +1947 1 2236 2237 +1948 1 2234 2235 +1949 1 2053 2058 +1950 1 2053 2054 +1951 1 2054 2055 +1952 1 2055 2056 +1953 1 2056 2057 +1954 1 2057 2058 +1955 1 1827 1828 +1956 1 2021 2022 +1957 1 2059 2064 +1958 1 2059 2060 +1959 1 2060 2061 +1960 1 2019 2020 +1961 1 2020 2021 +1962 1 2017 2022 +1963 1 2017 2018 +1964 1 2018 2019 +1965 1 2061 2062 +1966 1 2062 2063 +1967 1 2063 2064 +1968 1 393 394 +1969 1 392 393 +1970 1 2074 2075 +1971 1 2075 2076 +1972 1 391 396 +1973 1 391 392 +1974 1 2259 2260 +1975 1 394 395 +1976 1 2260 2261 +1977 1 2258 2259 +1978 1 2257 2262 +1979 1 2257 2258 +1980 1 395 396 +1981 1 397 402 +1982 1 397 398 +1983 1 207 208 +1984 1 208 209 +1985 1 206 207 +1986 1 2071 2076 +1987 1 2071 2072 +1988 1 2072 2073 +1989 1 2073 2074 +1990 1 2077 2082 +1991 1 2077 2078 +1992 1 2078 2079 +1993 1 2079 2080 +1994 1 2080 2081 +1995 1 2081 2082 +1996 1 403 408 +1997 1 403 404 +1998 1 404 405 +1999 1 37 42 +2000 1 37 38 +2001 1 2449 2454 +2002 1 2449 2450 +2003 1 410 411 +2004 1 2090 2091 +2005 1 411 412 +2006 1 405 406 +2007 1 2083 2088 +2008 1 2083 2084 +2009 1 2084 2085 +2010 1 2085 2086 +2011 1 2086 2087 +2012 1 2087 2088 +2013 1 412 413 +2014 1 2300 2301 +2015 1 1905 1906 +2016 1 2091 2092 +2017 1 2092 2093 +2018 1 2095 2100 +2019 1 2095 2096 +2020 1 2096 2097 +2021 1 2097 2098 +2022 1 2098 2099 +2023 1 2099 2100 +2024 1 416 417 +2025 1 415 420 +2026 1 415 416 +2027 1 413 414 +2028 1 2101 2106 +2029 1 2101 2102 +2030 1 2102 2103 +2031 1 2103 2104 +2032 1 2104 2105 +2033 1 2105 2106 +2034 1 423 424 +2035 1 424 425 +2036 1 422 423 +2037 1 2345 2346 +2038 1 425 426 +2039 1 2303 2304 +2040 1 2067 2068 +2041 1 2068 2069 +2042 1 2069 2070 +2043 1 430 431 +2044 1 2261 2262 +2045 1 2065 2070 +2046 1 2065 2066 +2047 1 2066 2067 +2048 1 2107 2112 +2049 1 2107 2108 +2050 1 2108 2109 +2051 1 2109 2110 +2052 1 2110 2111 +2053 1 2111 2112 +2054 1 211 216 +2055 1 211 212 +2056 1 2359 2364 +2057 1 2359 2360 +2058 1 2171 2172 +2059 1 2170 2171 +2060 1 2169 2170 +2061 1 2168 2169 +2062 1 2165 2166 +2063 1 2122 2123 +2064 1 1757 1758 +2065 1 2363 2364 +2066 1 2161 2166 +2067 1 2161 2162 +2068 1 2362 2363 +2069 1 2314 2315 +2070 1 2318 2319 +2071 1 2317 2322 +2072 1 2317 2318 +2073 1 2295 2296 +2074 1 2177 2178 +2075 1 2176 2177 +2076 1 2175 2176 +2077 1 2174 2175 +2078 1 2173 2178 +2079 1 2173 2174 +2080 1 2321 2322 +2081 1 2365 2370 +2082 1 2365 2366 +2083 1 2183 2184 +2084 1 2179 2184 +2085 1 2179 2180 +2086 1 2313 2314 +2087 1 2367 2368 +2088 1 2366 2367 +2089 1 2474 2475 +2090 1 2188 2189 +2091 1 2186 2187 +2092 1 2180 2181 +2093 1 2324 2325 +2094 1 2182 2183 +2095 1 2181 2182 +2096 1 2296 2297 +2097 1 2185 2190 +2098 1 2185 2186 +2099 1 2323 2328 +2100 1 2323 2324 +2101 1 2137 2142 +2102 1 2137 2138 +2103 1 2144 2145 +2104 1 2138 2139 +2105 1 2139 2140 +2106 1 2189 2190 +2107 1 2337 2338 +2108 1 2384 2385 +2109 1 2335 2340 +2110 1 2335 2336 +2111 1 2385 2386 +2112 1 2339 2340 +2113 1 2336 2337 +2114 1 2386 2387 +2115 1 2149 2154 +2116 1 2149 2150 +2117 1 2150 2151 +2118 1 2153 2154 +2119 1 2341 2346 +2120 1 2341 2342 +2121 1 2197 2202 +2122 1 2197 2198 +2123 1 2152 2153 +2124 1 2206 2207 +2125 1 2207 2208 +2126 1 2395 2400 +2127 1 2395 2396 +2128 1 2204 2205 +2129 1 2356 2357 +2130 1 2163 2164 +2131 1 2162 2163 +2132 1 2357 2358 +2133 1 2203 2208 +2134 1 2203 2204 +2135 1 2399 2400 +2136 1 2411 2412 +2137 1 2219 2220 +2138 1 2218 2219 +2139 1 2217 2218 +2140 1 2216 2217 +2141 1 2213 2214 +2142 1 2209 2214 +2143 1 2209 2210 +2144 1 2410 2411 +2145 1 2212 2213 +2146 1 2409 2410 +2147 1 2211 2212 +2148 1 2210 2211 +2149 1 2267 2268 +2150 1 2416 2417 +2151 1 2302 2303 +2152 1 1766 1767 +2153 1 2414 2415 +2154 1 2225 2226 +2155 1 2224 2225 +2156 1 2223 2224 +2157 1 2222 2223 +2158 1 2221 2226 +2159 1 2221 2222 +2160 1 2123 2124 +2161 1 2404 2405 +2162 1 2230 2231 +2163 1 2229 2230 +2164 1 2284 2285 +2165 1 2283 2284 +2166 1 2421 2422 +2167 1 2282 2283 +2168 1 2422 2423 +2169 1 2242 2243 +2170 1 2241 2242 +2171 1 2240 2241 +2172 1 2239 2244 +2173 1 2239 2240 +2174 1 2233 2238 +2175 1 2233 2234 +2176 1 2243 2244 +2177 1 2438 2439 +2178 1 2198 2199 +2179 1 2201 2202 +2180 1 2199 2200 +2181 1 2200 2201 +2182 1 2249 2250 +2183 1 2248 2249 +2184 1 2247 2248 +2185 1 2246 2247 +2186 1 2245 2250 +2187 1 2245 2246 +2188 1 1604 1605 +2189 1 2439 2440 +2190 1 2403 2404 +2191 1 1629 1630 +2192 1 2255 2256 +2193 1 2254 2255 +2194 1 2253 2254 +2195 1 2252 2253 +2196 1 2251 2256 +2197 1 2251 2252 +2198 1 2443 2448 +2199 1 2443 2444 +2200 1 586 587 +2201 1 779 780 +2202 1 577 582 +2203 1 577 578 +2204 1 769 774 +2205 1 769 770 +2206 1 773 774 +2207 1 584 585 +2208 1 2266 2267 +2209 1 2265 2266 +2210 1 2264 2265 +2211 1 2263 2268 +2212 1 2263 2264 +2213 1 770 771 +2214 1 585 586 +2215 1 2423 2424 +2216 1 592 593 +2217 1 591 592 +2218 1 212 213 +2219 1 2487 2488 +2220 1 2489 2490 +2221 1 587 588 +2222 1 583 588 +2223 1 583 584 +2224 1 2273 2274 +2225 1 2272 2273 +2226 1 2271 2272 +2227 1 2270 2271 +2228 1 2269 2274 +2229 1 2269 2270 +2230 1 593 594 +2231 1 589 594 +2232 1 589 590 +2233 1 590 591 +2234 1 431 432 +2235 1 2396 2397 +2236 1 2275 2280 +2237 1 2275 2276 +2238 1 602 603 +2239 1 598 599 +2240 1 418 419 +2241 1 597 598 +2242 1 596 597 +2243 1 2293 2298 +2244 1 2293 2294 +2245 1 608 609 +2246 1 609 610 +2247 1 2301 2302 +2248 1 2285 2286 +2249 1 2281 2286 +2250 1 2281 2282 +2251 1 604 605 +2252 1 2459 2460 +2253 1 607 612 +2254 1 607 608 +2255 1 1739 1740 +2256 1 2291 2292 +2257 1 2290 2291 +2258 1 2289 2290 +2259 1 2288 2289 +2260 1 2287 2292 +2261 1 2287 2288 +2262 1 605 606 +2263 1 807 808 +2264 1 2294 2295 +2265 1 2297 2298 +2266 1 2485 2490 +2267 1 2485 2486 +2268 1 2486 2487 +2269 1 613 618 +2270 1 613 614 +2271 1 2361 2362 +2272 1 2481 2482 +2273 1 1705 1710 +2274 1 1705 1706 +2275 1 2499 2500 +2276 1 2503 2508 +2277 1 2503 2504 +2278 1 2551 2556 +2279 1 2551 2552 +2280 1 2552 2553 +2281 1 2553 2554 +2282 1 2554 2555 +2283 1 2555 2556 +2284 1 2498 2499 +2285 1 2504 2505 +2286 1 2360 2361 +2287 1 993 994 +2288 1 2500 2501 +2289 1 2353 2358 +2290 1 2353 2354 +2291 1 2505 2506 +2292 1 2368 2369 +2293 1 2563 2568 +2294 1 2563 2564 +2295 1 2559 2560 +2296 1 992 993 +2297 1 2369 2370 +2298 1 2518 2519 +2299 1 2462 2463 +2300 1 2519 2520 +2301 1 2510 2511 +2302 1 785 786 +2303 1 2564 2565 +2304 1 2373 2374 +2305 1 2516 2517 +2306 1 2420 2421 +2307 1 2565 2566 +2308 1 2566 2567 +2309 1 2567 2568 +2310 1 2380 2381 +2311 1 2379 2380 +2312 1 2378 2379 +2313 1 2371 2376 +2314 1 2371 2372 +2315 1 2515 2520 +2316 1 2515 2516 +2317 1 2372 2373 +2318 1 2525 2526 +2319 1 2884 2885 +2320 1 2377 2382 +2321 1 2377 2378 +2322 1 2570 2571 +2323 1 2569 2574 +2324 1 2569 2570 +2325 1 2530 2531 +2326 1 2381 2382 +2327 1 2461 2466 +2328 1 2461 2462 +2329 1 2531 2532 +2330 1 2572 2573 +2331 1 2578 2579 +2332 1 2579 2580 +2333 1 2920 2921 +2334 1 2527 2532 +2335 1 2527 2528 +2336 1 2529 2530 +2337 1 2528 2529 +2338 1 2576 2577 +2339 1 2577 2578 +2340 1 2383 2388 +2341 1 2383 2384 +2342 1 2524 2525 +2343 1 2342 2343 +2344 1 2536 2537 +2345 1 2582 2583 +2346 1 2583 2584 +2347 1 2533 2538 +2348 1 2533 2534 +2349 1 2537 2538 +2350 1 2344 2345 +2351 1 2343 2344 +2352 1 2590 2591 +2353 1 2543 2544 +2354 1 2392 2393 +2355 1 2581 2586 +2356 1 2581 2582 +2357 1 2535 2536 +2358 1 2391 2392 +2359 1 2534 2535 +2360 1 2547 2548 +2361 1 2548 2549 +2362 1 2549 2550 +2363 1 2354 2355 +2364 1 2691 2692 +2365 1 1198 1199 +2366 1 2415 2416 +2367 1 2546 2547 +2368 1 2397 2398 +2369 1 2545 2550 +2370 1 2545 2546 +2371 1 2587 2592 +2372 1 2587 2588 +2373 1 2588 2589 +2374 1 2589 2590 +2375 1 2591 2592 +2376 1 2347 2352 +2377 1 2347 2348 +2378 1 2348 2349 +2379 1 2692 2693 +2380 1 1387 1392 +2381 1 1387 1388 +2382 1 2501 2502 +2383 1 2539 2544 +2384 1 2539 2540 +2385 1 2693 2694 +2386 1 1539 1540 +2387 1 2407 2412 +2388 1 2407 2408 +2389 1 2408 2409 +2390 1 2597 2598 +2391 1 2599 2604 +2392 1 2599 2600 +2393 1 2601 2602 +2394 1 2602 2603 +2395 1 2603 2604 +2396 1 2596 2597 +2397 1 2600 2601 +2398 1 2401 2406 +2399 1 2401 2402 +2400 1 2593 2598 +2401 1 2593 2594 +2402 1 2558 2559 +2403 1 2456 2457 +2404 1 2455 2460 +2405 1 2455 2456 +2406 1 2605 2610 +2407 1 2605 2606 +2408 1 2606 2607 +2409 1 2607 2608 +2410 1 2608 2609 +2411 1 2609 2610 +2412 1 2351 2352 +2413 1 2426 2427 +2414 1 2611 2616 +2415 1 2611 2612 +2416 1 2612 2613 +2417 1 2613 2614 +2418 1 2614 2615 +2419 1 2615 2616 +2420 1 2618 2619 +2421 1 2619 2620 +2422 1 2425 2430 +2423 1 2425 2426 +2424 1 2427 2428 +2425 1 2429 2430 +2426 1 2419 2424 +2427 1 2419 2420 +2428 1 2571 2572 +2429 1 2575 2580 +2430 1 2575 2576 +2431 1 2428 2429 +2432 1 2620 2621 +2433 1 2621 2622 +2434 1 2623 2628 +2435 1 2623 2624 +2436 1 2624 2625 +2437 1 2625 2626 +2438 1 2626 2627 +2439 1 2433 2434 +2440 1 2434 2435 +2441 1 2432 2433 +2442 1 2389 2394 +2443 1 2389 2390 +2444 1 2584 2585 +2445 1 2441 2442 +2446 1 2629 2634 +2447 1 2629 2630 +2448 1 2631 2632 +2449 1 2632 2633 +2450 1 2633 2634 +2451 1 2445 2446 +2452 1 2440 2441 +2453 1 2390 2391 +2454 1 2446 2447 +2455 1 2437 2442 +2456 1 2437 2438 +2457 1 2630 2631 +2458 1 2393 2394 +2459 1 2595 2596 +2460 1 2405 2406 +2461 1 2911 2916 +2462 1 2911 2912 +2463 1 2444 2445 +2464 1 2594 2595 +2465 1 2635 2640 +2466 1 2635 2636 +2467 1 2636 2637 +2468 1 2637 2638 +2469 1 2638 2639 +2470 1 2639 2640 +2471 1 776 777 +2472 1 2452 2453 +2473 1 2643 2644 +2474 1 2645 2646 +2475 1 2647 2652 +2476 1 2647 2648 +2477 1 2648 2649 +2478 1 2649 2650 +2479 1 2650 2651 +2480 1 2651 2652 +2481 1 967 972 +2482 1 967 968 +2483 1 968 969 +2484 1 2641 2646 +2485 1 2641 2642 +2486 1 2642 2643 +2487 1 2458 2459 +2488 1 771 772 +2489 1 777 778 +2490 1 2453 2454 +2491 1 969 970 +2492 1 778 779 +2493 1 784 785 +2494 1 2457 2458 +2495 1 2653 2658 +2496 1 2653 2654 +2497 1 2654 2655 +2498 1 2655 2656 +2499 1 2656 2657 +2500 1 2657 2658 +2501 1 783 784 +2502 1 1357 1362 +2503 1 1357 1358 +2504 1 2402 2403 +2505 1 980 981 +2506 1 2467 2472 +2507 1 2467 2468 +2508 1 2617 2622 +2509 1 2617 2618 +2510 1 2471 2472 +2511 1 2468 2469 +2512 1 2469 2470 +2513 1 2470 2471 +2514 1 2659 2664 +2515 1 2659 2660 +2516 1 2660 2661 +2517 1 2663 2664 +2518 1 979 984 +2519 1 979 980 +2520 1 2477 2478 +2521 1 981 982 +2522 1 791 792 +2523 1 2476 2477 +2524 1 2665 2670 +2525 1 2665 2666 +2526 1 1559 1560 +2527 1 2431 2436 +2528 1 2431 2432 +2529 1 2435 2436 +2530 1 2338 2339 +2531 1 2475 2476 +2532 1 2479 2484 +2533 1 2479 2480 +2534 1 2480 2481 +2535 1 1376 1377 +2536 1 2482 2483 +2537 1 2671 2676 +2538 1 2671 2672 +2539 1 2672 2673 +2540 1 2673 2674 +2541 1 2674 2675 +2542 1 2675 2676 +2543 1 2713 2718 +2544 1 2713 2714 +2545 1 3071 3072 +2546 1 2473 2478 +2547 1 2473 2474 +2548 1 797 798 +2549 1 2398 2399 +2550 1 2681 2682 +2551 1 2483 2484 +2552 1 2488 2489 +2553 1 2677 2682 +2554 1 2677 2678 +2555 1 2678 2679 +2556 1 2679 2680 +2557 1 2680 2681 +2558 1 2683 2688 +2559 1 2683 2684 +2560 1 2684 2685 +2561 1 2495 2496 +2562 1 2685 2686 +2563 1 2494 2495 +2564 1 815 816 +2565 1 2451 2452 +2566 1 2450 2451 +2567 1 2686 2687 +2568 1 2687 2688 +2569 1 1005 1006 +2570 1 1006 1007 +2571 1 2523 2524 +2572 1 2714 2715 +2573 1 811 816 +2574 1 811 812 +2575 1 1004 1005 +2576 1 1192 1193 +2577 1 1612 1613 +2578 1 2887 2892 +2579 1 2887 2888 +2580 1 2891 2892 +2581 1 2695 2700 +2582 1 2695 2696 +2583 1 2698 2699 +2584 1 2699 2700 +2585 1 2743 2748 +2586 1 2743 2744 +2587 1 2744 2745 +2588 1 2745 2746 +2589 1 2746 2747 +2590 1 2747 2748 +2591 1 2939 2940 +2592 1 2938 2939 +2593 1 1616 1617 +2594 1 2696 2697 +2595 1 2890 2891 +2596 1 2561 2562 +2597 1 2701 2706 +2598 1 2701 2702 +2599 1 2749 2754 +2600 1 2749 2750 +2601 1 2750 2751 +2602 1 2751 2752 +2603 1 2752 2753 +2604 1 2753 2754 +2605 1 2702 2703 +2606 1 2560 2561 +2607 1 2755 2760 +2608 1 2755 2756 +2609 1 2756 2757 +2610 1 2757 2758 +2611 1 2758 2759 +2612 1 2759 2760 +2613 1 2765 2766 +2614 1 2573 2574 +2615 1 2720 2721 +2616 1 1358 1359 +2617 1 2721 2722 +2618 1 2761 2766 +2619 1 2761 2762 +2620 1 2722 2723 +2621 1 2762 2763 +2622 1 2763 2764 +2623 1 2764 2765 +2624 1 2767 2772 +2625 1 2767 2768 +2626 1 2768 2769 +2627 1 2769 2770 +2628 1 2770 2771 +2629 1 2771 2772 +2630 1 2921 2922 +2631 1 2719 2724 +2632 1 2719 2720 +2633 1 2729 2730 +2634 1 2585 2586 +2635 1 2773 2778 +2636 1 2773 2774 +2637 1 2777 2778 +2638 1 2776 2777 +2639 1 2731 2736 +2640 1 2731 2732 +2641 1 2733 2734 +2642 1 2737 2742 +2643 1 2737 2738 +2644 1 2741 2742 +2645 1 2739 2740 +2646 1 2740 2741 +2647 1 2734 2735 +2648 1 2735 2736 +2649 1 2738 2739 +2650 1 2780 2781 +2651 1 2781 2782 +2652 1 2782 2783 +2653 1 2975 2976 +2654 1 2732 2733 +2655 1 2689 2694 +2656 1 2689 2690 +2657 1 2690 2691 +2658 1 982 983 +2659 1 2788 2789 +2660 1 2791 2796 +2661 1 2791 2792 +2662 1 2792 2793 +2663 1 2793 2794 +2664 1 2794 2795 +2665 1 2795 2796 +2666 1 2789 2790 +2667 1 2835 2836 +2668 1 2843 2844 +2669 1 2842 2843 +2670 1 2557 2562 +2671 1 2557 2558 +2672 1 2797 2802 +2673 1 2797 2798 +2674 1 2798 2799 +2675 1 2799 2800 +2676 1 2800 2801 +2677 1 2801 2802 +2678 1 2847 2848 +2679 1 2803 2808 +2680 1 2803 2804 +2681 1 2804 2805 +2682 1 2805 2806 +2683 1 2806 2807 +2684 1 2807 2808 +2685 1 2813 2814 +2686 1 2812 2813 +2687 1 2860 2861 +2688 1 2861 2862 +2689 1 3001 3006 +2690 1 3001 3002 +2691 1 2999 3000 +2692 1 3005 3006 +2693 1 2627 2628 +2694 1 2809 2814 +2695 1 2809 2810 +2696 1 2810 2811 +2697 1 2811 2812 +2698 1 2815 2820 +2699 1 2815 2816 +2700 1 2816 2817 +2701 1 2817 2818 +2702 1 2818 2819 +2703 1 2819 2820 +2704 1 2774 2775 +2705 1 2821 2826 +2706 1 2821 2822 +2707 1 2822 2823 +2708 1 2823 2824 +2709 1 2824 2825 +2710 1 2825 2826 +2711 1 2870 2871 +2712 1 2871 2872 +2713 1 2775 2776 +2714 1 2779 2784 +2715 1 2779 2780 +2716 1 2783 2784 +2717 1 2787 2788 +2718 1 2785 2790 +2719 1 2785 2786 +2720 1 2786 2787 +2721 1 2827 2832 +2722 1 2827 2828 +2723 1 2828 2829 +2724 1 2829 2830 +2725 1 2830 2831 +2726 1 2831 2832 +2727 1 3023 3024 +2728 1 2836 2837 +2729 1 2837 2838 +2730 1 1160 1161 +2731 1 2644 2645 +2732 1 961 966 +2733 1 961 962 +2734 1 1161 1162 +2735 1 1681 1686 +2736 1 1681 1682 +2737 1 1159 1164 +2738 1 1159 1160 +2739 1 2833 2838 +2740 1 2833 2834 +2741 1 2834 2835 +2742 1 2840 2841 +2743 1 1155 1156 +2744 1 1156 1157 +2745 1 2841 2842 +2746 1 1154 1155 +2747 1 1153 1158 +2748 1 1153 1154 +2749 1 2413 2418 +2750 1 2413 2414 +2751 1 2839 2844 +2752 1 2839 2840 +2753 1 1163 1164 +2754 1 2845 2850 +2755 1 2845 2846 +2756 1 2846 2847 +2757 1 2848 2849 +2758 1 2849 2850 +2759 1 1165 1170 +2760 1 1165 1166 +2761 1 1166 1167 +2762 1 2853 2854 +2763 1 2851 2856 +2764 1 2851 2852 +2765 1 2852 2853 +2766 1 1162 1163 +2767 1 1167 1168 +2768 1 1168 1169 +2769 1 2668 2669 +2770 1 2669 2670 +2771 1 2859 2860 +2772 1 2854 2855 +2773 1 2661 2662 +2774 1 2662 2663 +2775 1 2667 2668 +2776 1 2666 2667 +2777 1 2855 2856 +2778 1 2857 2862 +2779 1 2857 2858 +2780 1 2858 2859 +2781 1 2863 2868 +2782 1 2863 2864 +2783 1 2864 2865 +2784 1 2865 2866 +2785 1 2866 2867 +2786 1 2867 2868 +2787 1 1183 1188 +2788 1 1183 1184 +2789 1 1184 1185 +2790 1 1191 1192 +2791 1 1157 1158 +2792 1 2869 2874 +2793 1 2869 2870 +2794 1 2872 2873 +2795 1 2873 2874 +2796 1 1189 1194 +2797 1 1189 1190 +2798 1 1190 1191 +2799 1 1346 1347 +2800 1 1193 1194 +2801 1 1007 1008 +2802 1 2915 2916 +2803 1 2725 2730 +2804 1 2725 2726 +2805 1 2875 2880 +2806 1 2875 2876 +2807 1 2876 2877 +2808 1 2877 2878 +2809 1 2878 2879 +2810 1 2879 2880 +2811 1 1199 1200 +2812 1 1594 1595 +2813 1 2937 2938 +2814 1 2936 2937 +2815 1 2935 2940 +2816 1 2935 2936 +2817 1 2355 2356 +2818 1 1712 1713 +2819 1 1595 1596 +2820 1 1605 1606 +2821 1 1543 1548 +2822 1 1543 1544 +2823 1 2894 2895 +2824 1 2949 2950 +2825 1 2950 2951 +2826 1 2945 2946 +2827 1 2944 2945 +2828 1 2943 2944 +2829 1 2942 2943 +2830 1 2941 2946 +2831 1 2941 2942 +2832 1 2893 2898 +2833 1 2893 2894 +2834 1 2951 2952 +2835 1 2895 2896 +2836 1 1601 1602 +2837 1 1558 1559 +2838 1 1610 1611 +2839 1 2447 2448 +2840 1 2948 2949 +2841 1 2947 2952 +2842 1 2947 2948 +2843 1 2900 2901 +2844 1 1555 1560 +2845 1 1555 1556 +2846 1 1603 1608 +2847 1 1603 1604 +2848 1 2901 2902 +2849 1 1611 1612 +2850 1 1556 1557 +2851 1 1569 1570 +2852 1 2957 2958 +2853 1 2956 2957 +2854 1 2955 2956 +2855 1 2963 2964 +2856 1 2962 2963 +2857 1 2954 2955 +2858 1 2953 2958 +2859 1 2953 2954 +2860 1 1570 1571 +2861 1 1565 1566 +2862 1 1567 1572 +2863 1 1567 1568 +2864 1 1568 1569 +2865 1 1571 1572 +2866 1 2969 2970 +2867 1 2968 2969 +2868 1 2967 2968 +2869 1 2966 2967 +2870 1 2965 2970 +2871 1 2965 2966 +2872 1 2493 2494 +2873 1 2974 2975 +2874 1 2923 2928 +2875 1 2923 2924 +2876 1 1624 1625 +2877 1 1623 1624 +2878 1 2924 2925 +2879 1 2885 2886 +2880 1 2972 2973 +2881 1 2971 2976 +2882 1 2971 2972 +2883 1 983 984 +2884 1 2973 2974 +2885 1 2930 2931 +2886 1 2929 2934 +2887 1 2929 2930 +2888 1 2927 2928 +2889 1 1538 1539 +2890 1 2926 2927 +2891 1 2925 2926 +2892 1 2987 2988 +2893 1 2986 2987 +2894 1 2985 2986 +2895 1 2984 2985 +2896 1 2983 2988 +2897 1 2983 2984 +2898 1 1639 1644 +2899 1 1639 1640 +2900 1 1640 1641 +2901 1 2497 2502 +2902 1 2497 2498 +2903 1 2697 2698 +2904 1 3034 3035 +2905 1 3033 3034 +2906 1 2978 2979 +2907 1 2977 2982 +2908 1 2977 2978 +2909 1 3032 3033 +2910 1 2993 2994 +2911 1 2992 2993 +2912 1 2991 2992 +2913 1 2990 2991 +2914 1 2989 2994 +2915 1 2989 2990 +2916 1 1666 1667 +2917 1 2996 2997 +2918 1 2995 3000 +2919 1 2995 2996 +2920 1 3041 3042 +2921 1 1645 1650 +2922 1 1645 1646 +2923 1 1606 1607 +2924 1 3003 3004 +2925 1 1607 1608 +2926 1 1654 1655 +2927 1 3002 3003 +2928 1 2998 2999 +2929 1 2997 2998 +2930 1 3004 3005 +2931 1 1655 1656 +2932 1 2959 2964 +2933 1 2959 2960 +2934 1 1617 1618 +2935 1 1618 1619 +2936 1 2961 2962 +2937 1 2960 2961 +2938 1 1664 1665 +2939 1 3008 3009 +2940 1 3007 3012 +2941 1 3007 3008 +2942 1 1665 1666 +2943 1 1615 1620 +2944 1 1615 1616 +2945 1 1619 1620 +2946 1 3009 3010 +2947 1 3017 3018 +2948 1 1646 1647 +2949 1 3011 3012 +2950 1 3010 3011 +2951 1 3016 3017 +2952 1 3015 3016 +2953 1 3014 3015 +2954 1 3013 3018 +2955 1 3013 3014 +2956 1 1669 1674 +2957 1 1669 1670 +2958 1 1682 1683 +2959 1 3022 3023 +2960 1 2933 2934 +2961 1 2932 2933 +2962 1 2931 2932 +2963 1 2981 2982 +2964 1 2980 2981 +2965 1 3067 3072 +2966 1 3067 3068 +2967 1 3021 3022 +2968 1 3020 3021 +2969 1 3019 3024 +2970 1 3019 3020 +2971 1 2979 2980 +2972 1 3068 3069 +2973 1 3028 3029 +2974 1 1683 1684 +2975 1 1348 1349 +2976 1 3035 3036 +2977 1 1347 1348 +2978 1 1688 1689 +2979 1 1687 1692 +2980 1 1687 1688 +2981 1 3031 3036 +2982 1 3031 3032 +2983 1 3029 3030 +2984 1 1353 1354 +2985 1 1691 1692 +2986 1 1352 1353 +2987 1 974 975 +2988 1 3040 3041 +2989 1 3039 3040 +2990 1 1359 1360 +2991 1 1694 1695 +2992 1 1689 1690 +2993 1 1695 1696 +2994 1 1690 1691 +2995 1 3038 3039 +2996 1 3037 3042 +2997 1 3037 3038 +2998 1 1693 1698 +2999 1 1693 1694 +3000 1 1697 1698 +3001 1 1696 1697 +3002 1 3043 3048 +3003 1 3043 3044 +3004 1 3049 3054 +3005 1 3049 3050 +3006 1 3047 3048 +3007 1 3046 3047 +3008 1 3045 3046 +3009 1 3044 3045 +3010 1 1365 1366 +3011 1 1364 1365 +3012 1 3053 3054 +3013 1 1706 1707 +3014 1 1609 1614 +3015 1 1609 1610 +3016 1 1349 1350 +3017 1 1351 1356 +3018 1 1351 1352 +3019 1 806 807 +3020 1 1715 1716 +3021 1 1641 1642 +3022 1 3050 3051 +3023 1 1369 1374 +3024 1 1369 1370 +3025 1 3059 3060 +3026 1 3058 3059 +3027 1 3057 3058 +3028 1 3056 3057 +3029 1 3055 3060 +3030 1 3055 3056 +3031 1 3052 3053 +3032 1 3051 3052 +3033 1 1371 1372 +3034 1 1370 1371 +3035 1 1711 1716 +3036 1 1711 1712 +3037 1 47 48 +3038 1 1377 1378 +3039 1 1720 1721 +3040 1 1719 1720 +3041 1 775 780 +3042 1 775 776 +3043 1 2312 2313 +3044 1 1382 1383 +3045 1 1381 1386 +3046 1 1381 1382 +3047 1 1383 1384 +3048 1 3065 3066 +3049 1 3064 3065 +3050 1 3063 3064 +3051 1 3062 3063 +3052 1 3061 3066 +3053 1 3061 3062 +3054 1 1385 1386 +3055 1 1384 1385 +3056 1 1003 1008 +3057 1 1003 1004 +3058 1 1718 1719 +3059 1 3026 3027 +3060 1 3069 3070 +3061 1 3070 3071 +3062 1 3027 3028 +3063 1 3025 3030 +3064 1 3025 3026 +3065 1 805 810 +3066 1 805 806 +3067 1 2883 2884 +3068 1 994 995 +3069 1 812 813 +3070 1 1564 1565 +3071 1 2463 2464 +3072 1 2374 2375 + +Angles + +1 1 602 601 606 +2 1 1963 1968 1967 +3 1 56 55 60 +4 1 241 246 245 +5 1 248 247 252 +6 1 247 248 249 +7 1 250 251 252 +8 1 247 252 251 +9 1 55 60 59 +10 1 242 241 246 +11 1 241 242 243 +12 1 201 202 203 +13 1 200 201 202 +14 1 244 245 246 +15 1 49 50 51 +16 1 50 49 54 +17 1 242 243 244 +18 1 243 244 245 +19 1 55 56 57 +20 1 248 249 250 +21 1 212 213 214 +22 1 254 253 258 +23 1 253 254 255 +24 1 254 255 256 +25 1 255 256 257 +26 1 256 257 258 +27 1 253 258 257 +28 1 1935 1936 1937 +29 1 260 259 264 +30 1 213 214 215 +31 1 214 215 216 +32 1 62 61 66 +33 1 610 611 612 +34 1 21 22 23 +35 1 172 173 174 +36 1 260 261 262 +37 1 261 262 263 +38 1 262 263 264 +39 1 259 264 263 +40 1 266 265 270 +41 1 265 270 269 +42 1 20 21 22 +43 1 19 20 21 +44 1 25 30 29 +45 1 267 268 269 +46 1 268 269 270 +47 1 28 29 30 +48 1 1964 1963 1968 +49 1 22 23 24 +50 1 211 216 215 +51 1 20 19 24 +52 1 49 54 53 +53 1 265 266 267 +54 1 266 267 268 +55 1 80 79 84 +56 1 79 80 81 +57 1 80 81 82 +58 1 217 222 221 +59 1 224 225 226 +60 1 225 226 227 +61 1 272 271 276 +62 1 272 273 274 +63 1 273 274 275 +64 1 274 275 276 +65 1 271 276 275 +66 1 226 227 228 +67 1 81 82 83 +68 1 27 28 29 +69 1 235 236 237 +70 1 218 217 222 +71 1 271 272 273 +72 1 33 34 35 +73 1 2155 2156 2157 +74 1 151 152 153 +75 1 230 231 232 +76 1 278 277 282 +77 1 277 278 279 +78 1 278 279 280 +79 1 279 280 281 +80 1 280 281 282 +81 1 277 282 281 +82 1 283 284 285 +83 1 85 86 87 +84 1 37 38 39 +85 1 284 285 286 +86 1 285 286 287 +87 1 236 237 238 +88 1 231 232 233 +89 1 2156 2157 2158 +90 1 38 39 40 +91 1 284 283 288 +92 1 93 94 95 +93 1 94 95 96 +94 1 91 96 95 +95 1 237 238 239 +96 1 238 239 240 +97 1 286 287 288 +98 1 283 288 287 +99 1 43 44 45 +100 1 92 93 94 +101 1 235 240 239 +102 1 91 92 93 +103 1 92 91 96 +104 1 236 235 240 +105 1 82 83 84 +106 1 169 174 173 +107 1 193 198 197 +108 1 2329 2330 2331 +109 1 194 193 198 +110 1 2114 2113 2118 +111 1 289 294 293 +112 1 296 295 300 +113 1 295 296 297 +114 1 296 297 298 +115 1 297 298 299 +116 1 298 299 300 +117 1 295 300 299 +118 1 97 98 99 +119 1 290 289 294 +120 1 152 153 154 +121 1 289 290 291 +122 1 103 104 105 +123 1 109 114 113 +124 1 63 64 65 +125 1 302 301 306 +126 1 301 302 303 +127 1 302 303 304 +128 1 303 304 305 +129 1 304 305 306 +130 1 301 306 305 +131 1 61 62 63 +132 1 62 63 64 +133 1 110 109 114 +134 1 76 77 78 +135 1 616 617 618 +136 1 307 312 311 +137 1 123 124 125 +138 1 308 307 312 +139 1 307 308 309 +140 1 308 309 310 +141 1 309 310 311 +142 1 310 311 312 +143 1 122 123 124 +144 1 596 595 600 +145 1 26 25 30 +146 1 73 74 75 +147 1 74 75 76 +148 1 75 76 77 +149 1 121 122 123 +150 1 122 121 126 +151 1 130 131 132 +152 1 127 132 131 +153 1 320 319 324 +154 1 319 320 321 +155 1 320 321 322 +156 1 321 322 323 +157 1 322 323 324 +158 1 319 324 323 +159 1 128 127 132 +160 1 129 130 131 +161 1 598 599 600 +162 1 121 126 125 +163 1 2314 2315 2316 +164 1 326 325 330 +165 1 325 326 327 +166 1 326 327 328 +167 1 327 328 329 +168 1 328 329 330 +169 1 325 330 329 +170 1 32 33 34 +171 1 2113 2118 2117 +172 1 39 40 41 +173 1 292 293 294 +174 1 98 97 102 +175 1 331 332 333 +176 1 140 139 144 +177 1 139 140 141 +178 1 2324 2325 2326 +179 1 290 291 292 +180 1 291 292 293 +181 1 332 331 336 +182 1 332 333 334 +183 1 333 334 335 +184 1 334 335 336 +185 1 331 336 335 +186 1 794 795 796 +187 1 763 764 765 +188 1 1546 1547 1548 +189 1 146 147 148 +190 1 343 344 345 +191 1 344 345 346 +192 1 345 346 347 +193 1 346 347 348 +194 1 343 348 347 +195 1 1545 1546 1547 +196 1 147 148 149 +197 1 344 343 348 +198 1 1766 1765 1770 +199 1 145 146 147 +200 1 386 387 388 +201 1 1735 1740 1739 +202 1 1743 1744 1745 +203 1 350 349 354 +204 1 349 350 351 +205 1 350 351 352 +206 1 351 352 353 +207 1 352 353 354 +208 1 349 354 353 +209 1 1742 1741 1746 +210 1 164 163 168 +211 1 356 355 360 +212 1 355 360 359 +213 1 1742 1743 1744 +214 1 358 359 360 +215 1 1741 1742 1743 +216 1 2113 2114 2115 +217 1 1744 1745 1746 +218 1 1741 1746 1745 +219 1 170 169 174 +220 1 163 164 165 +221 1 171 172 173 +222 1 165 166 167 +223 1 164 165 166 +224 1 163 168 167 +225 1 356 357 358 +226 1 357 358 359 +227 1 362 361 366 +228 1 364 365 366 +229 1 1748 1747 1752 +230 1 1750 1751 1752 +231 1 1747 1752 1751 +232 1 169 170 171 +233 1 170 171 172 +234 1 361 362 363 +235 1 362 363 364 +236 1 166 167 168 +237 1 363 364 365 +238 1 2330 2331 2332 +239 1 1768 1769 1770 +240 1 1749 1750 1751 +241 1 361 366 365 +242 1 369 370 371 +243 1 1759 1760 1761 +244 1 1760 1761 1762 +245 1 152 151 156 +246 1 1966 1967 1968 +247 1 175 176 177 +248 1 2144 2145 2146 +249 1 183 184 185 +250 1 367 368 369 +251 1 368 369 370 +252 1 370 371 372 +253 1 1576 1577 1578 +254 1 1574 1575 1576 +255 1 368 367 372 +256 1 367 372 371 +257 1 1573 1578 1577 +258 1 1747 1748 1749 +259 1 181 182 183 +260 1 782 781 786 +261 1 374 373 378 +262 1 373 374 375 +263 1 374 375 376 +264 1 375 376 377 +265 1 1574 1573 1578 +266 1 764 763 768 +267 1 79 84 83 +268 1 104 105 106 +269 1 182 183 184 +270 1 1573 1574 1575 +271 1 1575 1576 1577 +272 1 1771 1772 1773 +273 1 380 379 384 +274 1 340 341 342 +275 1 339 340 341 +276 1 1772 1771 1776 +277 1 337 342 341 +278 1 338 337 342 +279 1 337 338 339 +280 1 338 339 340 +281 1 379 380 381 +282 1 380 381 382 +283 1 381 382 383 +284 1 382 383 384 +285 1 379 384 383 +286 1 1772 1773 1774 +287 1 1773 1774 1775 +288 1 1771 1776 1775 +289 1 1774 1775 1776 +290 1 1582 1583 1584 +291 1 1537 1542 1541 +292 1 202 203 204 +293 1 74 73 78 +294 1 249 250 251 +295 1 199 204 203 +296 1 388 389 390 +297 1 387 388 389 +298 1 440 439 444 +299 1 439 440 441 +300 1 440 441 442 +301 1 441 442 443 +302 1 442 443 444 +303 1 439 444 443 +304 1 436 437 438 +305 1 397 398 399 +306 1 398 399 400 +307 1 399 400 401 +308 1 446 445 450 +309 1 445 446 447 +310 1 446 447 448 +311 1 447 448 449 +312 1 448 449 450 +313 1 445 450 449 +314 1 452 451 456 +315 1 451 452 453 +316 1 452 453 454 +317 1 86 87 88 +318 1 259 260 261 +319 1 405 406 407 +320 1 409 414 413 +321 1 453 454 455 +322 1 454 455 456 +323 1 451 456 455 +324 1 458 457 462 +325 1 460 461 462 +326 1 457 462 461 +327 1 722 723 724 +328 1 457 458 459 +329 1 458 459 460 +330 1 459 460 461 +331 1 406 407 408 +332 1 410 409 414 +333 1 643 648 647 +334 1 646 647 648 +335 1 879 880 881 +336 1 883 888 887 +337 1 464 463 468 +338 1 464 465 466 +339 1 465 466 467 +340 1 466 467 468 +341 1 463 468 467 +342 1 463 464 465 +343 1 61 66 65 +344 1 229 230 231 +345 1 421 426 425 +346 1 469 470 471 +347 1 470 471 472 +348 1 471 472 473 +349 1 196 197 198 +350 1 64 65 66 +351 1 385 390 389 +352 1 433 438 437 +353 1 434 433 438 +354 1 434 435 436 +355 1 386 385 390 +356 1 433 434 435 +357 1 133 138 137 +358 1 427 432 431 +359 1 435 436 437 +360 1 476 475 480 +361 1 475 476 477 +362 1 476 477 478 +363 1 477 478 479 +364 1 478 479 480 +365 1 475 480 479 +366 1 428 427 432 +367 1 487 488 489 +368 1 488 489 490 +369 1 489 490 491 +370 1 490 491 492 +371 1 536 537 538 +372 1 537 538 539 +373 1 488 487 492 +374 1 487 492 491 +375 1 538 539 540 +376 1 727 728 729 +377 1 494 493 498 +378 1 493 494 495 +379 1 494 495 496 +380 1 495 496 497 +381 1 496 497 498 +382 1 493 498 497 +383 1 733 738 737 +384 1 316 317 318 +385 1 313 318 317 +386 1 500 499 504 +387 1 499 500 501 +388 1 500 501 502 +389 1 501 502 503 +390 1 502 503 504 +391 1 499 504 503 +392 1 505 506 507 +393 1 506 507 508 +394 1 314 313 318 +395 1 313 314 315 +396 1 314 315 316 +397 1 315 316 317 +398 1 506 505 510 +399 1 505 510 509 +400 1 507 508 509 +401 1 508 509 510 +402 1 512 511 516 +403 1 511 512 513 +404 1 512 513 514 +405 1 513 514 515 +406 1 514 515 516 +407 1 511 516 515 +408 1 470 469 474 +409 1 472 473 474 +410 1 469 474 473 +411 1 518 517 522 +412 1 517 518 519 +413 1 518 519 520 +414 1 519 520 521 +415 1 520 521 522 +416 1 517 522 521 +417 1 524 523 528 +418 1 523 528 527 +419 1 523 524 525 +420 1 484 485 486 +421 1 481 486 485 +422 1 482 481 486 +423 1 483 484 485 +424 1 481 482 483 +425 1 482 483 484 +426 1 524 525 526 +427 1 525 526 527 +428 1 526 527 528 +429 1 716 715 720 +430 1 722 721 726 +431 1 530 531 532 +432 1 536 535 540 +433 1 535 536 537 +434 1 535 540 539 +435 1 529 530 531 +436 1 1921 1922 1923 +437 1 1929 1930 1931 +438 1 1928 1929 1930 +439 1 2125 2130 2129 +440 1 1930 1931 1932 +441 1 1927 1928 1929 +442 1 1928 1927 1932 +443 1 1927 1932 1931 +444 1 2125 2126 2127 +445 1 542 541 546 +446 1 541 542 543 +447 1 542 543 544 +448 1 543 544 545 +449 1 544 545 546 +450 1 541 546 545 +451 1 2126 2127 2128 +452 1 1936 1937 1938 +453 1 2128 2129 2130 +454 1 2127 2128 2129 +455 1 1939 1940 1941 +456 1 1940 1941 1942 +457 1 2126 2125 2130 +458 1 734 733 738 +459 1 355 356 357 +460 1 550 551 552 +461 1 1939 1944 1943 +462 1 1942 1943 1944 +463 1 1941 1942 1943 +464 1 1946 1945 1950 +465 1 548 547 552 +466 1 547 548 549 +467 1 548 549 550 +468 1 549 550 551 +469 1 547 552 551 +470 1 554 553 558 +471 1 556 557 558 +472 1 553 558 557 +473 1 1940 1939 1944 +474 1 1945 1946 1947 +475 1 1948 1949 1950 +476 1 2132 2133 2134 +477 1 1945 1950 1949 +478 1 1947 1948 1949 +479 1 553 554 555 +480 1 554 555 556 +481 1 555 556 557 +482 1 560 559 564 +483 1 559 560 561 +484 1 560 561 562 +485 1 561 562 563 +486 1 562 563 564 +487 1 559 564 563 +488 1 1946 1947 1948 +489 1 128 129 130 +490 1 885 886 887 +491 1 751 752 753 +492 1 2145 2146 2147 +493 1 376 377 378 +494 1 373 378 377 +495 1 566 565 570 +496 1 565 566 567 +497 1 566 567 568 +498 1 567 568 569 +499 1 568 569 570 +500 1 565 570 569 +501 1 1960 1961 1962 +502 1 1965 1966 1967 +503 1 1964 1965 1966 +504 1 572 571 576 +505 1 571 572 573 +506 1 531 532 533 +507 1 532 533 534 +508 1 530 529 534 +509 1 529 534 533 +510 1 572 573 574 +511 1 573 574 575 +512 1 574 575 576 +513 1 571 576 575 +514 1 619 620 621 +515 1 1963 1964 1965 +516 1 1922 1921 1926 +517 1 878 879 880 +518 1 721 722 723 +519 1 578 579 580 +520 1 625 630 629 +521 1 631 636 635 +522 1 634 635 636 +523 1 631 632 633 +524 1 632 631 636 +525 1 628 629 630 +526 1 627 628 629 +527 1 579 580 581 +528 1 819 820 821 +529 1 820 821 822 +530 1 626 625 630 +531 1 580 581 582 +532 1 817 822 821 +533 1 818 819 820 +534 1 817 818 819 +535 1 818 817 822 +536 1 640 641 642 +537 1 633 634 635 +538 1 632 633 634 +539 1 637 642 641 +540 1 639 640 641 +541 1 638 639 640 +542 1 637 638 639 +543 1 638 637 642 +544 1 832 833 834 +545 1 829 834 833 +546 1 422 421 426 +547 1 2319 2320 2321 +548 1 831 832 833 +549 1 595 600 599 +550 1 2140 2141 2142 +551 1 861 862 863 +552 1 652 653 654 +553 1 645 646 647 +554 1 644 645 646 +555 1 643 644 645 +556 1 644 643 648 +557 1 836 835 840 +558 1 614 615 616 +559 1 691 696 695 +560 1 692 691 696 +561 1 841 846 845 +562 1 577 578 579 +563 1 656 655 660 +564 1 655 656 657 +565 1 655 660 659 +566 1 799 804 803 +567 1 649 654 653 +568 1 650 649 654 +569 1 802 803 804 +570 1 657 658 659 +571 1 656 657 658 +572 1 651 652 653 +573 1 649 650 651 +574 1 658 659 660 +575 1 844 845 846 +576 1 1580 1581 1582 +577 1 1581 1582 1583 +578 1 854 853 858 +579 1 661 666 665 +580 1 664 665 666 +581 1 663 664 665 +582 1 662 663 664 +583 1 661 662 663 +584 1 662 661 666 +585 1 615 616 617 +586 1 86 85 90 +587 1 853 858 857 +588 1 807 808 809 +589 1 765 766 767 +590 1 626 627 628 +591 1 625 626 627 +592 1 669 670 671 +593 1 668 667 672 +594 1 667 672 671 +595 1 670 671 672 +596 1 668 669 670 +597 1 667 668 669 +598 1 619 624 623 +599 1 622 623 624 +600 1 620 619 624 +601 1 680 679 684 +602 1 919 920 921 +603 1 920 919 924 +604 1 1921 1926 1925 +605 1 679 684 683 +606 1 682 683 684 +607 1 681 682 683 +608 1 680 681 682 +609 1 673 678 677 +610 1 676 677 678 +611 1 674 673 678 +612 1 872 871 876 +613 1 871 872 873 +614 1 673 674 675 +615 1 728 727 732 +616 1 920 921 922 +617 1 921 922 923 +618 1 867 868 869 +619 1 674 675 676 +620 1 872 873 874 +621 1 427 428 429 +622 1 679 680 681 +623 1 877 878 879 +624 1 685 690 689 +625 1 688 689 690 +626 1 687 688 689 +627 1 686 687 688 +628 1 685 686 687 +629 1 686 685 690 +630 1 428 429 430 +631 1 1957 1962 1961 +632 1 928 929 930 +633 1 925 930 929 +634 1 736 737 738 +635 1 735 736 737 +636 1 883 884 885 +637 1 884 885 886 +638 1 739 744 743 +639 1 699 700 701 +640 1 698 699 700 +641 1 697 698 699 +642 1 694 695 696 +643 1 693 694 695 +644 1 692 693 694 +645 1 691 692 693 +646 1 698 697 702 +647 1 742 743 744 +648 1 697 702 701 +649 1 700 701 702 +650 1 741 742 743 +651 1 746 745 750 +652 1 884 883 888 +653 1 897 898 899 +654 1 745 750 749 +655 1 898 899 900 +656 1 896 897 898 +657 1 650 651 652 +658 1 703 708 707 +659 1 706 707 708 +660 1 705 706 707 +661 1 704 705 706 +662 1 703 704 705 +663 1 704 703 708 +664 1 896 895 900 +665 1 895 896 897 +666 1 895 900 899 +667 1 748 749 750 +668 1 944 945 946 +669 1 943 944 945 +670 1 747 748 749 +671 1 710 709 714 +672 1 403 408 407 +673 1 709 714 713 +674 1 712 713 714 +675 1 711 712 713 +676 1 710 711 712 +677 1 709 710 711 +678 1 903 904 905 +679 1 25 26 27 +680 1 715 720 719 +681 1 718 719 720 +682 1 865 870 869 +683 1 675 676 677 +684 1 717 718 719 +685 1 716 717 718 +686 1 715 716 717 +687 1 868 869 870 +688 1 1959 1960 1961 +689 1 44 45 46 +690 1 2305 2306 2307 +691 1 2120 2121 2122 +692 1 2306 2307 2308 +693 1 919 924 923 +694 1 2311 2316 2315 +695 1 915 916 917 +696 1 727 732 731 +697 1 730 731 732 +698 1 729 730 731 +699 1 728 729 730 +700 1 916 917 918 +701 1 2120 2119 2124 +702 1 2119 2120 2121 +703 1 922 923 924 +704 1 2114 2115 2116 +705 1 2318 2319 2320 +706 1 217 218 219 +707 1 734 735 736 +708 1 733 734 735 +709 1 926 925 930 +710 1 925 926 927 +711 1 926 927 928 +712 1 2332 2333 2334 +713 1 937 942 941 +714 1 853 854 855 +715 1 2131 2132 2133 +716 1 124 125 126 +717 1 621 622 623 +718 1 2325 2326 2327 +719 1 2329 2334 2333 +720 1 740 739 744 +721 1 2132 2131 2136 +722 1 2131 2136 2135 +723 1 2326 2327 2328 +724 1 745 746 747 +725 1 740 741 742 +726 1 739 740 741 +727 1 932 931 936 +728 1 931 932 933 +729 1 931 936 935 +730 1 2134 2135 2136 +731 1 2133 2134 2135 +732 1 2331 2332 2333 +733 1 932 933 934 +734 1 940 941 942 +735 1 2330 2329 2334 +736 1 2144 2143 2148 +737 1 2143 2148 2147 +738 1 830 829 834 +739 1 746 747 748 +740 1 2146 2147 2148 +741 1 836 837 838 +742 1 754 755 756 +743 1 753 754 755 +744 1 752 753 754 +745 1 944 943 948 +746 1 946 947 948 +747 1 943 948 947 +748 1 16 17 18 +749 1 752 751 756 +750 1 2341 2346 2345 +751 1 751 756 755 +752 1 757 762 761 +753 1 760 761 762 +754 1 759 760 761 +755 1 758 759 760 +756 1 757 758 759 +757 1 758 757 762 +758 1 2115 2116 2117 +759 1 2157 2158 2159 +760 1 913 918 917 +761 1 914 913 918 +762 1 723 724 725 +763 1 2158 2159 2160 +764 1 2155 2160 2159 +765 1 764 765 766 +766 1 2116 2117 2118 +767 1 26 27 28 +768 1 913 914 915 +769 1 763 768 767 +770 1 766 767 768 +771 1 721 726 725 +772 1 724 725 726 +773 1 2156 2155 2160 +774 1 1761 1762 1763 +775 1 1748 1749 1750 +776 1 205 210 209 +777 1 2307 2308 2309 +778 1 2119 2124 2123 +779 1 223 224 225 +780 1 1933 1938 1937 +781 1 232 233 234 +782 1 1765 1770 1769 +783 1 385 386 387 +784 1 220 221 222 +785 1 37 42 41 +786 1 31 32 33 +787 1 1924 1925 1926 +788 1 891 892 893 +789 1 823 828 827 +790 1 862 863 864 +791 1 904 905 906 +792 1 945 946 947 +793 1 843 844 845 +794 1 2312 2311 2316 +795 1 866 865 870 +796 1 824 825 826 +797 1 825 826 827 +798 1 961 962 963 +799 1 969 970 971 +800 1 970 971 972 +801 1 1011 1012 1013 +802 1 1016 1017 1018 +803 1 1018 1019 1020 +804 1 962 963 964 +805 1 1012 1013 1014 +806 1 1017 1018 1019 +807 1 1009 1014 1013 +808 1 963 964 965 +809 1 823 824 825 +810 1 808 809 810 +811 1 824 823 828 +812 1 1015 1016 1017 +813 1 826 827 828 +814 1 974 973 978 +815 1 976 977 978 +816 1 973 978 977 +817 1 1022 1021 1026 +818 1 1021 1022 1023 +819 1 1022 1023 1024 +820 1 1023 1024 1025 +821 1 1024 1025 1026 +822 1 1021 1026 1025 +823 1 1580 1579 1584 +824 1 188 187 192 +825 1 975 976 977 +826 1 985 990 989 +827 1 1028 1027 1032 +828 1 1027 1028 1029 +829 1 1028 1029 1030 +830 1 1029 1030 1031 +831 1 1030 1031 1032 +832 1 1027 1032 1031 +833 1 1036 1037 1038 +834 1 1033 1038 1037 +835 1 985 986 987 +836 1 1034 1033 1038 +837 1 988 989 990 +838 1 986 985 990 +839 1 789 790 791 +840 1 1376 1375 1380 +841 1 181 186 185 +842 1 788 789 790 +843 1 837 838 839 +844 1 32 31 36 +845 1 787 788 789 +846 1 2887 2888 2889 +847 1 986 987 988 +848 1 848 849 850 +849 1 842 841 846 +850 1 799 800 801 +851 1 841 842 843 +852 1 842 843 844 +853 1 987 988 989 +854 1 1033 1034 1035 +855 1 1040 1039 1044 +856 1 1039 1040 1041 +857 1 1040 1041 1042 +858 1 1041 1042 1043 +859 1 1042 1043 1044 +860 1 1039 1044 1043 +861 1 800 801 802 +862 1 800 799 804 +863 1 1168 1169 1170 +864 1 847 848 849 +865 1 801 802 803 +866 1 849 850 851 +867 1 2888 2889 2890 +868 1 997 1002 1001 +869 1 848 847 852 +870 1 1359 1360 1361 +871 1 854 855 856 +872 1 998 999 1000 +873 1 999 1000 1001 +874 1 1000 1001 1002 +875 1 1046 1045 1050 +876 1 1045 1046 1047 +877 1 1046 1047 1048 +878 1 805 810 809 +879 1 997 998 999 +880 1 998 997 1002 +881 1 1047 1048 1049 +882 1 994 995 996 +883 1 934 935 936 +884 1 991 996 995 +885 1 855 856 857 +886 1 1532 1533 1534 +887 1 1534 1535 1536 +888 1 860 859 864 +889 1 859 860 861 +890 1 860 861 862 +891 1 859 864 863 +892 1 1009 1010 1011 +893 1 1052 1051 1056 +894 1 871 876 875 +895 1 19 24 23 +896 1 812 813 814 +897 1 866 867 868 +898 1 1346 1345 1350 +899 1 874 875 876 +900 1 1059 1060 1061 +901 1 1060 1061 1062 +902 1 1064 1063 1068 +903 1 1063 1064 1065 +904 1 1064 1065 1066 +905 1 1065 1066 1067 +906 1 1066 1067 1068 +907 1 1063 1068 1067 +908 1 1058 1059 1060 +909 1 1057 1058 1059 +910 1 865 866 867 +911 1 1057 1062 1061 +912 1 1058 1057 1062 +913 1 1070 1069 1074 +914 1 1069 1070 1071 +915 1 1070 1071 1072 +916 1 1071 1072 1073 +917 1 1072 1073 1074 +918 1 1069 1074 1073 +919 1 1076 1075 1080 +920 1 1078 1079 1080 +921 1 1075 1080 1079 +922 1 1184 1185 1186 +923 1 880 881 882 +924 1 873 874 875 +925 1 2882 2881 2886 +926 1 1035 1036 1037 +927 1 1075 1076 1077 +928 1 1076 1077 1078 +929 1 1077 1078 1079 +930 1 1082 1083 1084 +931 1 1083 1084 1085 +932 1 1084 1085 1086 +933 1 892 893 894 +934 1 1082 1081 1086 +935 1 1081 1082 1083 +936 1 1081 1086 1085 +937 1 886 887 888 +938 1 1196 1195 1200 +939 1 1491 1492 1493 +940 1 189 190 191 +941 1 850 851 852 +942 1 1034 1035 1036 +943 1 890 889 894 +944 1 889 894 893 +945 1 1088 1087 1092 +946 1 1087 1088 1089 +947 1 1088 1089 1090 +948 1 1089 1090 1091 +949 1 1090 1091 1092 +950 1 1087 1092 1091 +951 1 847 852 851 +952 1 902 901 906 +953 1 1048 1049 1050 +954 1 1045 1050 1049 +955 1 902 903 904 +956 1 1094 1095 1096 +957 1 1095 1096 1097 +958 1 1096 1097 1098 +959 1 908 909 910 +960 1 901 902 903 +961 1 2900 2899 2904 +962 1 901 906 905 +963 1 1051 1056 1055 +964 1 907 908 909 +965 1 909 910 911 +966 1 910 911 912 +967 1 1387 1388 1389 +968 1 908 907 912 +969 1 907 912 911 +970 1 1102 1103 1104 +971 1 1099 1104 1103 +972 1 1101 1102 1103 +973 1 1106 1105 1110 +974 1 1105 1110 1109 +975 1 1112 1111 1116 +976 1 1111 1112 1113 +977 1 1112 1113 1114 +978 1 1113 1114 1115 +979 1 1114 1115 1116 +980 1 1111 1116 1115 +981 1 2308 2309 2310 +982 1 2305 2310 2309 +983 1 2505 2506 2507 +984 1 2506 2507 2508 +985 1 2306 2305 2310 +986 1 1105 1106 1107 +987 1 2722 2723 2724 +988 1 2503 2508 2507 +989 1 1118 1117 1122 +990 1 1119 1120 1121 +991 1 1120 1121 1122 +992 1 1117 1122 1121 +993 1 1125 1126 1127 +994 1 1126 1127 1128 +995 1 2512 2513 2514 +996 1 2509 2514 2513 +997 1 2511 2512 2513 +998 1 2510 2511 2512 +999 1 974 975 976 +1000 1 938 939 940 +1001 1 2521 2522 2523 +1002 1 1579 1584 1583 +1003 1 938 937 942 +1004 1 1124 1123 1128 +1005 1 1123 1124 1125 +1006 1 1123 1128 1127 +1007 1 1131 1132 1133 +1008 1 1003 1008 1007 +1009 1 937 938 939 +1010 1 1132 1133 1134 +1011 1 1129 1134 1133 +1012 1 1130 1129 1134 +1013 1 927 928 929 +1014 1 1130 1131 1132 +1015 1 1129 1130 1131 +1016 1 1136 1135 1140 +1017 1 1135 1136 1137 +1018 1 1136 1137 1138 +1019 1 1137 1138 1139 +1020 1 1138 1139 1140 +1021 1 1135 1140 1139 +1022 1 939 940 941 +1023 1 2540 2541 2542 +1024 1 949 954 953 +1025 1 952 953 954 +1026 1 951 952 953 +1027 1 950 949 954 +1028 1 949 950 951 +1029 1 950 951 952 +1030 1 1142 1141 1146 +1031 1 1141 1142 1143 +1032 1 1142 1143 1144 +1033 1 1143 1144 1145 +1034 1 1144 1145 1146 +1035 1 1141 1146 1145 +1036 1 2 3 4 +1037 1 2541 2542 2543 +1038 1 813 814 815 +1039 1 1148 1149 1150 +1040 1 1108 1109 1110 +1041 1 957 958 959 +1042 1 956 957 958 +1043 1 958 959 960 +1044 1 956 955 960 +1045 1 955 956 957 +1046 1 955 960 959 +1047 1 1106 1107 1108 +1048 1 1107 1108 1109 +1049 1 1149 1150 1151 +1050 1 1150 1151 1152 +1051 1 1147 1152 1151 +1052 1 2539 2540 2541 +1053 1 878 877 882 +1054 1 2348 2349 2350 +1055 1 1148 1147 1152 +1056 1 1147 1148 1149 +1057 1 2349 2350 2351 +1058 1 1016 1015 1020 +1059 1 1015 1020 1019 +1060 1 1203 1204 1205 +1061 1 1204 1205 1206 +1062 1 1208 1207 1212 +1063 1 1207 1208 1209 +1064 1 1208 1209 1210 +1065 1 1209 1210 1211 +1066 1 1210 1211 1212 +1067 1 1207 1212 1211 +1068 1 1201 1202 1203 +1069 1 1202 1203 1204 +1070 1 1201 1206 1205 +1071 1 1202 1201 1206 +1072 1 40 41 42 +1073 1 1214 1213 1218 +1074 1 1213 1214 1215 +1075 1 1172 1173 1174 +1076 1 1405 1410 1409 +1077 1 1406 1405 1410 +1078 1 1171 1172 1173 +1079 1 1214 1215 1216 +1080 1 1177 1178 1179 +1081 1 1171 1176 1175 +1082 1 1172 1171 1176 +1083 1 1173 1174 1175 +1084 1 1174 1175 1176 +1085 1 1178 1177 1182 +1086 1 1220 1219 1224 +1087 1 1219 1220 1221 +1088 1 1220 1221 1222 +1089 1 1221 1222 1223 +1090 1 1222 1223 1224 +1091 1 1219 1224 1223 +1092 1 1177 1182 1181 +1093 1 1412 1411 1416 +1094 1 1228 1229 1230 +1095 1 1225 1230 1229 +1096 1 1226 1225 1230 +1097 1 1186 1187 1188 +1098 1 58 59 60 +1099 1 1227 1228 1229 +1100 1 1232 1231 1236 +1101 1 1231 1232 1233 +1102 1 1232 1233 1234 +1103 1 1233 1234 1235 +1104 1 1234 1235 1236 +1105 1 1231 1236 1235 +1106 1 1180 1181 1182 +1107 1 1179 1180 1181 +1108 1 1178 1179 1180 +1109 1 1185 1186 1187 +1110 1 1238 1237 1242 +1111 1 1237 1238 1239 +1112 1 1238 1239 1240 +1113 1 1239 1240 1241 +1114 1 1240 1241 1242 +1115 1 1237 1242 1241 +1116 1 1052 1053 1054 +1117 1 1010 1011 1012 +1118 1 1010 1009 1014 +1119 1 1051 1052 1053 +1120 1 1245 1246 1247 +1121 1 1246 1247 1248 +1122 1 835 836 837 +1123 1 992 991 996 +1124 1 1196 1197 1198 +1125 1 1195 1196 1197 +1126 1 1244 1243 1248 +1127 1 1243 1244 1245 +1128 1 1244 1245 1246 +1129 1 1243 1248 1247 +1130 1 1251 1252 1253 +1131 1 1249 1254 1253 +1132 1 1256 1255 1260 +1133 1 1255 1256 1257 +1134 1 1256 1257 1258 +1135 1 1257 1258 1259 +1136 1 1258 1259 1260 +1137 1 1255 1260 1259 +1138 1 1252 1253 1254 +1139 1 1250 1251 1252 +1140 1 1213 1218 1217 +1141 1 1216 1217 1218 +1142 1 1215 1216 1217 +1143 1 1262 1261 1266 +1144 1 1261 1262 1263 +1145 1 1262 1263 1264 +1146 1 1263 1264 1265 +1147 1 1264 1265 1266 +1148 1 1261 1266 1265 +1149 1 1405 1406 1407 +1150 1 1268 1267 1272 +1151 1 1267 1268 1269 +1152 1 1268 1269 1270 +1153 1 1269 1270 1271 +1154 1 1270 1271 1272 +1155 1 1267 1272 1271 +1156 1 1274 1273 1278 +1157 1 1315 1320 1319 +1158 1 1460 1461 1462 +1159 1 1459 1460 1461 +1160 1 1226 1227 1228 +1161 1 1276 1277 1278 +1162 1 1273 1278 1277 +1163 1 1225 1226 1227 +1164 1 1275 1276 1277 +1165 1 1273 1274 1275 +1166 1 1274 1275 1276 +1167 1 1280 1279 1284 +1168 1 1279 1280 1281 +1169 1 1280 1281 1282 +1170 1 1281 1282 1283 +1171 1 1279 1284 1283 +1172 1 1282 1283 1284 +1173 1 1093 1094 1095 +1174 1 1093 1098 1097 +1175 1 1094 1093 1098 +1176 1 1286 1285 1290 +1177 1 1285 1286 1287 +1178 1 1286 1287 1288 +1179 1 1287 1288 1289 +1180 1 1288 1289 1290 +1181 1 1285 1290 1289 +1182 1 1293 1294 1295 +1183 1 1292 1293 1294 +1184 1 1053 1054 1055 +1185 1 1054 1055 1056 +1186 1 1100 1099 1104 +1187 1 1099 1100 1101 +1188 1 1100 1101 1102 +1189 1 1249 1250 1251 +1190 1 1250 1249 1254 +1191 1 1292 1291 1296 +1192 1 1291 1292 1293 +1193 1 1294 1295 1296 +1194 1 1291 1296 1295 +1195 1 1297 1298 1299 +1196 1 1304 1303 1308 +1197 1 1303 1304 1305 +1198 1 1304 1305 1306 +1199 1 1305 1306 1307 +1200 1 1306 1307 1308 +1201 1 1303 1308 1307 +1202 1 1497 1498 1499 +1203 1 1496 1497 1498 +1204 1 1117 1118 1119 +1205 1 1124 1125 1126 +1206 1 2702 2703 2704 +1207 1 1118 1119 1120 +1208 1 1310 1309 1314 +1209 1 1309 1310 1311 +1210 1 1310 1311 1312 +1211 1 1311 1312 1313 +1212 1 1312 1313 1314 +1213 1 1309 1314 1313 +1214 1 2703 2704 2705 +1215 1 830 831 832 +1216 1 1504 1505 1506 +1217 1 2704 2705 2706 +1218 1 2896 2897 2898 +1219 1 1501 1506 1505 +1220 1 1503 1504 1505 +1221 1 2895 2896 2897 +1222 1 2710 2711 2712 +1223 1 2708 2707 2712 +1224 1 2708 2709 2710 +1225 1 1316 1315 1320 +1226 1 1315 1316 1317 +1227 1 1316 1317 1318 +1228 1 1317 1318 1319 +1229 1 1318 1319 1320 +1230 1 1322 1321 1326 +1231 1 2707 2708 2709 +1232 1 1321 1326 1325 +1233 1 97 102 101 +1234 1 1323 1324 1325 +1235 1 1324 1325 1326 +1236 1 2709 2710 2711 +1237 1 1510 1511 1512 +1238 1 1509 1510 1511 +1239 1 829 830 831 +1240 1 1321 1322 1323 +1241 1 1322 1323 1324 +1242 1 57 58 59 +1243 1 2716 2717 2718 +1244 1 1328 1327 1332 +1245 1 1327 1328 1329 +1246 1 1328 1329 1330 +1247 1 1329 1330 1331 +1248 1 1330 1331 1332 +1249 1 1327 1332 1331 +1250 1 2715 2716 2717 +1251 1 2714 2715 2716 +1252 1 1522 1523 1524 +1253 1 1334 1333 1338 +1254 1 1333 1338 1337 +1255 1 2917 2922 2921 +1256 1 1333 1334 1335 +1257 1 1334 1335 1336 +1258 1 1335 1336 1337 +1259 1 1336 1337 1338 +1260 1 2725 2726 2727 +1261 1 2726 2727 2728 +1262 1 1340 1339 1344 +1263 1 1339 1340 1341 +1264 1 2727 2728 2729 +1265 1 2917 2918 2919 +1266 1 2918 2917 2922 +1267 1 2881 2882 2883 +1268 1 1531 1536 1535 +1269 1 1298 1299 1300 +1270 1 1299 1300 1301 +1271 1 1532 1531 1536 +1272 1 1298 1297 1302 +1273 1 1297 1302 1301 +1274 1 1300 1301 1302 +1275 1 1340 1341 1342 +1276 1 1341 1342 1343 +1277 1 1342 1343 1344 +1278 1 1339 1344 1343 +1279 1 3 4 5 +1280 1 1353 1354 1355 +1281 1 188 189 190 +1282 1 52 53 54 +1283 1 51 52 53 +1284 1 2 1 6 +1285 1 56 57 58 +1286 1 1 6 5 +1287 1 1399 1404 1403 +1288 1 1400 1399 1404 +1289 1 1393 1398 1397 +1290 1 1396 1397 1398 +1291 1 1395 1396 1397 +1292 1 1351 1356 1355 +1293 1 1354 1355 1356 +1294 1 4 5 6 +1295 1 1394 1395 1396 +1296 1 1394 1393 1398 +1297 1 1539 1540 1541 +1298 1 1 2 3 +1299 1 1531 1532 1533 +1300 1 1402 1403 1404 +1301 1 1393 1394 1395 +1302 1 190 191 192 +1303 1 1400 1401 1402 +1304 1 1399 1400 1401 +1305 1 1401 1402 1403 +1306 1 1408 1409 1410 +1307 1 1407 1408 1409 +1308 1 1357 1362 1361 +1309 1 104 103 108 +1310 1 140 141 142 +1311 1 1360 1361 1362 +1312 1 187 192 191 +1313 1 67 72 71 +1314 1 1364 1363 1368 +1315 1 69 70 71 +1316 1 67 68 69 +1317 1 1363 1368 1367 +1318 1 2707 2712 2711 +1319 1 1365 1366 1367 +1320 1 1418 1419 1420 +1321 1 1417 1418 1419 +1322 1 1411 1416 1415 +1323 1 1413 1414 1415 +1324 1 1412 1413 1414 +1325 1 1411 1412 1413 +1326 1 1366 1367 1368 +1327 1 70 71 72 +1328 1 68 67 72 +1329 1 68 69 70 +1330 1 1371 1372 1373 +1331 1 34 35 36 +1332 1 116 115 120 +1333 1 1372 1373 1374 +1334 1 1423 1428 1427 +1335 1 1426 1427 1428 +1336 1 1425 1426 1427 +1337 1 1424 1425 1426 +1338 1 1423 1424 1425 +1339 1 1417 1422 1421 +1340 1 1418 1417 1422 +1341 1 1375 1380 1379 +1342 1 31 36 35 +1343 1 961 966 965 +1344 1 1424 1423 1428 +1345 1 795 796 797 +1346 1 87 88 89 +1347 1 1378 1379 1380 +1348 1 1429 1434 1433 +1349 1 1432 1433 1434 +1350 1 1429 1430 1431 +1351 1 1430 1429 1434 +1352 1 88 89 90 +1353 1 85 90 89 +1354 1 1377 1378 1379 +1355 1 1431 1432 1433 +1356 1 1430 1431 1432 +1357 1 44 43 48 +1358 1 134 133 138 +1359 1 1388 1389 1390 +1360 1 133 134 135 +1361 1 1435 1440 1439 +1362 1 1438 1439 1440 +1363 1 1435 1436 1437 +1364 1 1436 1435 1440 +1365 1 1387 1392 1391 +1366 1 1390 1391 1392 +1367 1 1389 1390 1391 +1368 1 877 882 881 +1369 1 889 890 891 +1370 1 106 107 108 +1371 1 98 99 100 +1372 1 1447 1448 1449 +1373 1 1448 1447 1452 +1374 1 1441 1446 1445 +1375 1 1444 1445 1446 +1376 1 1443 1444 1445 +1377 1 99 100 101 +1378 1 105 106 107 +1379 1 1442 1443 1444 +1380 1 1442 1441 1446 +1381 1 103 108 107 +1382 1 1447 1452 1451 +1383 1 100 101 102 +1384 1 1441 1442 1443 +1385 1 781 782 783 +1386 1 109 110 111 +1387 1 110 111 112 +1388 1 1406 1407 1408 +1389 1 1449 1450 1451 +1390 1 1448 1449 1450 +1391 1 1450 1451 1452 +1392 1 1453 1458 1457 +1393 1 1456 1457 1458 +1394 1 1455 1456 1457 +1395 1 1454 1455 1456 +1396 1 1453 1454 1455 +1397 1 1454 1453 1458 +1398 1 112 113 114 +1399 1 111 112 113 +1400 1 1462 1463 1464 +1401 1 1414 1415 1416 +1402 1 73 78 77 +1403 1 117 118 119 +1404 1 1459 1464 1463 +1405 1 1461 1462 1463 +1406 1 1460 1459 1464 +1407 1 115 116 117 +1408 1 116 117 118 +1409 1 856 857 858 +1410 1 1419 1420 1421 +1411 1 1420 1421 1422 +1412 1 1465 1470 1469 +1413 1 1468 1469 1470 +1414 1 1467 1468 1469 +1415 1 1471 1476 1475 +1416 1 1474 1475 1476 +1417 1 1473 1474 1475 +1418 1 1472 1473 1474 +1419 1 1471 1472 1473 +1420 1 1472 1471 1476 +1421 1 1466 1467 1468 +1422 1 1465 1466 1467 +1423 1 1466 1465 1470 +1424 1 134 135 136 +1425 1 135 136 137 +1426 1 1477 1482 1481 +1427 1 1480 1481 1482 +1428 1 1479 1480 1481 +1429 1 1478 1479 1480 +1430 1 1477 1478 1479 +1431 1 1478 1477 1482 +1432 1 136 137 138 +1433 1 139 144 143 +1434 1 1437 1438 1439 +1435 1 1436 1437 1438 +1436 1 1484 1483 1488 +1437 1 1483 1484 1485 +1438 1 1483 1488 1487 +1439 1 1486 1487 1488 +1440 1 1485 1486 1487 +1441 1 1484 1485 1486 +1442 1 141 142 143 +1443 1 142 143 144 +1444 1 1490 1489 1494 +1445 1 154 155 156 +1446 1 1543 1544 1545 +1447 1 890 891 892 +1448 1 1495 1496 1497 +1449 1 1496 1495 1500 +1450 1 1489 1494 1493 +1451 1 1492 1493 1494 +1452 1 145 150 149 +1453 1 1495 1500 1499 +1454 1 1498 1499 1500 +1455 1 151 156 155 +1456 1 1544 1545 1546 +1457 1 1549 1554 1553 +1458 1 1551 1552 1553 +1459 1 1552 1553 1554 +1460 1 160 161 162 +1461 1 159 160 161 +1462 1 158 159 160 +1463 1 1550 1551 1552 +1464 1 1550 1549 1554 +1465 1 1502 1501 1506 +1466 1 1502 1503 1504 +1467 1 1501 1502 1503 +1468 1 158 157 162 +1469 1 157 158 159 +1470 1 157 162 161 +1471 1 1549 1550 1551 +1472 1 1556 1557 1558 +1473 1 2901 2902 2903 +1474 1 933 934 935 +1475 1 2906 2905 2910 +1476 1 118 119 120 +1477 1 115 120 119 +1478 1 2899 2904 2903 +1479 1 1513 1514 1515 +1480 1 1514 1513 1518 +1481 1 1507 1512 1511 +1482 1 1508 1509 1510 +1483 1 1507 1508 1509 +1484 1 1508 1507 1512 +1485 1 964 965 966 +1486 1 2902 2903 2904 +1487 1 1514 1515 1516 +1488 1 2510 2509 2514 +1489 1 2905 2906 2907 +1490 1 1533 1534 1535 +1491 1 1490 1491 1492 +1492 1 2905 2910 2909 +1493 1 2908 2909 2910 +1494 1 2907 2908 2909 +1495 1 1513 1518 1517 +1496 1 1515 1516 1517 +1497 1 2913 2914 2915 +1498 1 2911 2912 2913 +1499 1 1519 1524 1523 +1500 1 1521 1522 1523 +1501 1 1520 1521 1522 +1502 1 1519 1520 1521 +1503 1 1520 1519 1524 +1504 1 1516 1517 1518 +1505 1 2912 2913 2914 +1506 1 2906 2907 2908 +1507 1 176 177 178 +1508 1 788 787 792 +1509 1 175 180 179 +1510 1 177 178 179 +1511 1 2918 2919 2920 +1512 1 184 185 186 +1513 1 1526 1525 1530 +1514 1 178 179 180 +1515 1 1525 1530 1529 +1516 1 1528 1529 1530 +1517 1 1527 1528 1529 +1518 1 1526 1527 1528 +1519 1 1525 1526 1527 +1520 1 1579 1580 1581 +1521 1 1540 1541 1542 +1522 1 187 188 189 +1523 1 1489 1490 1491 +1524 1 2516 2517 2518 +1525 1 2522 2521 2526 +1526 1 50 51 52 +1527 1 148 149 150 +1528 1 835 840 839 +1529 1 153 154 155 +1530 1 176 175 180 +1531 1 182 181 186 +1532 1 127 128 129 +1533 1 146 145 150 +1534 1 838 839 840 +1535 1 914 915 916 +1536 1 1585 1590 1589 +1537 1 1588 1589 1590 +1538 1 613 618 617 +1539 1 1779 1780 1781 +1540 1 1783 1788 1787 +1541 1 1587 1588 1589 +1542 1 1786 1787 1788 +1543 1 1778 1779 1780 +1544 1 1778 1777 1782 +1545 1 1777 1778 1779 +1546 1 1592 1593 1594 +1547 1 1735 1736 1737 +1548 1 1729 1730 1731 +1549 1 1586 1585 1590 +1550 1 1718 1717 1722 +1551 1 1737 1738 1739 +1552 1 1736 1737 1738 +1553 1 1543 1548 1547 +1554 1 1784 1783 1788 +1555 1 1783 1784 1785 +1556 1 1784 1785 1786 +1557 1 1785 1786 1787 +1558 1 1598 1597 1602 +1559 1 1597 1598 1599 +1560 1 1790 1789 1794 +1561 1 1789 1790 1791 +1562 1 1790 1791 1792 +1563 1 1791 1792 1793 +1564 1 1792 1793 1794 +1565 1 1789 1794 1793 +1566 1 400 401 402 +1567 1 1713 1714 1715 +1568 1 1639 1644 1643 +1569 1 1658 1657 1662 +1570 1 13 18 17 +1571 1 1796 1795 1800 +1572 1 1795 1796 1797 +1573 1 1796 1797 1798 +1574 1 1797 1798 1799 +1575 1 1798 1799 1800 +1576 1 1795 1800 1799 +1577 1 1801 1806 1805 +1578 1 1804 1805 1806 +1579 1 1609 1614 1613 +1580 1 1754 1755 1756 +1581 1 1612 1613 1614 +1582 1 1717 1722 1721 +1583 1 1755 1756 1757 +1584 1 1633 1634 1635 +1585 1 1802 1801 1806 +1586 1 1561 1562 1563 +1587 1 1801 1802 1803 +1588 1 793 794 795 +1589 1 1754 1753 1758 +1590 1 1753 1754 1755 +1591 1 1762 1763 1764 +1592 1 1759 1764 1763 +1593 1 1802 1803 1804 +1594 1 1803 1804 1805 +1595 1 1808 1807 1812 +1596 1 1807 1808 1809 +1597 1 1808 1809 1810 +1598 1 1809 1810 1811 +1599 1 1810 1811 1812 +1600 1 1807 1812 1811 +1601 1 1627 1628 1629 +1602 1 1562 1563 1564 +1603 1 1645 1650 1649 +1604 1 1621 1622 1623 +1605 1 1621 1626 1625 +1606 1 1586 1587 1588 +1607 1 1814 1813 1818 +1608 1 1813 1814 1815 +1609 1 1814 1815 1816 +1610 1 1815 1816 1817 +1611 1 1622 1621 1626 +1612 1 1767 1768 1769 +1613 1 1720 1721 1722 +1614 1 1816 1817 1818 +1615 1 1813 1818 1817 +1616 1 1730 1731 1732 +1617 1 1629 1630 1631 +1618 1 1731 1732 1733 +1619 1 1669 1670 1671 +1620 1 1732 1733 1734 +1621 1 794 793 798 +1622 1 1630 1631 1632 +1623 1 1820 1819 1824 +1624 1 1819 1820 1821 +1625 1 1820 1821 1822 +1626 1 1821 1822 1823 +1627 1 1822 1823 1824 +1628 1 1819 1824 1823 +1629 1 1627 1632 1631 +1630 1 1628 1627 1632 +1631 1 1538 1537 1542 +1632 1 1726 1727 1728 +1633 1 1780 1781 1782 +1634 1 1641 1642 1643 +1635 1 2323 2328 2327 +1636 1 1636 1637 1638 +1637 1 1828 1829 1830 +1638 1 1832 1831 1836 +1639 1 1831 1832 1833 +1640 1 1832 1833 1834 +1641 1 1825 1830 1829 +1642 1 1633 1638 1637 +1643 1 2139 2140 2141 +1644 1 602 603 604 +1645 1 1634 1633 1638 +1646 1 1642 1643 1644 +1647 1 1598 1599 1600 +1648 1 1648 1649 1650 +1649 1 1834 1835 1836 +1650 1 1831 1836 1835 +1651 1 1585 1586 1587 +1652 1 1833 1834 1835 +1653 1 1646 1647 1648 +1654 1 1647 1648 1649 +1655 1 1838 1837 1842 +1656 1 1837 1838 1839 +1657 1 1838 1839 1840 +1658 1 1839 1840 1841 +1659 1 1840 1841 1842 +1660 1 1837 1842 1841 +1661 1 1599 1600 1601 +1662 1 613 614 615 +1663 1 1652 1651 1656 +1664 1 1651 1652 1653 +1665 1 1844 1843 1848 +1666 1 1843 1844 1845 +1667 1 1844 1845 1846 +1668 1 1845 1846 1847 +1669 1 1846 1847 1848 +1670 1 1843 1848 1847 +1671 1 1849 1850 1851 +1672 1 1850 1851 1852 +1673 1 1652 1653 1654 +1674 1 1658 1659 1660 +1675 1 1659 1660 1661 +1676 1 1660 1661 1662 +1677 1 1851 1852 1853 +1678 1 1712 1713 1714 +1679 1 1657 1658 1659 +1680 1 1766 1767 1768 +1681 1 1724 1725 1726 +1682 1 1850 1849 1854 +1683 1 1592 1591 1596 +1684 1 1852 1853 1854 +1685 1 1849 1854 1853 +1686 1 1855 1856 1857 +1687 1 1856 1857 1858 +1688 1 1857 1858 1859 +1689 1 1858 1859 1860 +1690 1 1666 1667 1668 +1691 1 1664 1663 1668 +1692 1 1663 1668 1667 +1693 1 1736 1735 1740 +1694 1 1856 1855 1860 +1695 1 1855 1860 1859 +1696 1 1670 1671 1672 +1697 1 1671 1672 1673 +1698 1 1862 1861 1866 +1699 1 1861 1862 1863 +1700 1 1862 1863 1864 +1701 1 1863 1864 1865 +1702 1 1864 1865 1866 +1703 1 1861 1866 1865 +1704 1 1672 1673 1674 +1705 1 416 417 418 +1706 1 1683 1684 1685 +1707 1 1676 1675 1680 +1708 1 1635 1636 1637 +1709 1 1634 1635 1636 +1710 1 1678 1679 1680 +1711 1 1675 1680 1679 +1712 1 1826 1825 1830 +1713 1 1825 1826 1827 +1714 1 1868 1867 1872 +1715 1 1867 1868 1869 +1716 1 1868 1869 1870 +1717 1 1869 1870 1871 +1718 1 1870 1871 1872 +1719 1 1867 1872 1871 +1720 1 1916 1917 1918 +1721 1 1677 1678 1679 +1722 1 1676 1677 1678 +1723 1 1922 1923 1924 +1724 1 1917 1918 1919 +1725 1 1675 1676 1677 +1726 1 1684 1685 1686 +1727 1 7 8 9 +1728 1 1874 1873 1878 +1729 1 1876 1877 1878 +1730 1 1873 1878 1877 +1731 1 1880 1879 1884 +1732 1 1879 1880 1881 +1733 1 1881 1882 1883 +1734 1 1882 1883 1884 +1735 1 1879 1884 1883 +1736 1 9 10 11 +1737 1 1875 1876 1877 +1738 1 8 7 12 +1739 1 1873 1874 1875 +1740 1 1874 1875 1876 +1741 1 10 11 12 +1742 1 8 9 10 +1743 1 199 200 201 +1744 1 1880 1881 1882 +1745 1 13 14 15 +1746 1 1886 1885 1890 +1747 1 1885 1886 1887 +1748 1 1886 1887 1888 +1749 1 1887 1888 1889 +1750 1 1888 1889 1890 +1751 1 1885 1890 1889 +1752 1 14 13 18 +1753 1 2416 2417 2418 +1754 1 208 209 210 +1755 1 1700 1701 1702 +1756 1 15 16 17 +1757 1 2449 2454 2453 +1758 1 206 205 210 +1759 1 14 15 16 +1760 1 620 621 622 +1761 1 1702 1703 1704 +1762 1 1701 1702 1703 +1763 1 1700 1699 1704 +1764 1 1699 1700 1701 +1765 1 1699 1704 1703 +1766 1 1707 1708 1709 +1767 1 1892 1891 1896 +1768 1 1891 1892 1893 +1769 1 1892 1893 1894 +1770 1 1894 1895 1896 +1771 1 1891 1896 1895 +1772 1 218 219 220 +1773 1 1708 1709 1710 +1774 1 1705 1710 1709 +1775 1 1681 1686 1685 +1776 1 219 220 221 +1777 1 1706 1707 1708 +1778 1 1893 1894 1895 +1779 1 2492 2491 2496 +1780 1 771 772 773 +1781 1 1897 1902 1901 +1782 1 1900 1901 1902 +1783 1 1898 1897 1902 +1784 1 1898 1899 1900 +1785 1 1899 1900 1901 +1786 1 1904 1903 1908 +1787 1 1905 1906 1907 +1788 1 1903 1908 1907 +1789 1 224 223 228 +1790 1 1897 1898 1899 +1791 1 1903 1904 1905 +1792 1 1760 1759 1764 +1793 1 2464 2465 2466 +1794 1 1906 1907 1908 +1795 1 1910 1909 1914 +1796 1 1909 1910 1911 +1797 1 1910 1911 1912 +1798 1 1911 1912 1913 +1799 1 1912 1913 1914 +1800 1 1909 1914 1913 +1801 1 1591 1592 1593 +1802 1 229 234 233 +1803 1 230 229 234 +1804 1 1723 1728 1727 +1805 1 2491 2492 2493 +1806 1 1915 1916 1917 +1807 1 193 194 195 +1808 1 1724 1723 1728 +1809 1 1916 1915 1920 +1810 1 1918 1919 1920 +1811 1 1915 1920 1919 +1812 1 1723 1724 1725 +1813 1 194 195 196 +1814 1 195 196 197 +1815 1 45 46 47 +1816 1 1777 1782 1781 +1817 1 2463 2464 2465 +1818 1 1923 1924 1925 +1819 1 1971 1972 1973 +1820 1 1972 1973 1974 +1821 1 1976 1975 1980 +1822 1 1975 1976 1977 +1823 1 1978 1979 1980 +1824 1 1975 1980 1979 +1825 1 1969 1974 1973 +1826 1 2167 2172 2171 +1827 1 2168 2167 2172 +1828 1 2374 2375 2376 +1829 1 200 199 204 +1830 1 1933 1934 1935 +1831 1 1934 1933 1938 +1832 1 1934 1935 1936 +1833 1 1725 1726 1727 +1834 1 1982 1981 1986 +1835 1 1981 1982 1983 +1836 1 1982 1983 1984 +1837 1 1983 1984 1985 +1838 1 1984 1985 1986 +1839 1 1981 1986 1985 +1840 1 2386 2387 2388 +1841 1 609 610 611 +1842 1 1988 1987 1992 +1843 1 1987 1988 1989 +1844 1 1988 1989 1990 +1845 1 1989 1990 1991 +1846 1 1990 1991 1992 +1847 1 1987 1992 1991 +1848 1 1995 1996 1997 +1849 1 1996 1997 1998 +1850 1 1994 1995 1996 +1851 1 2186 2187 2188 +1852 1 1952 1953 1954 +1853 1 1951 1956 1955 +1854 1 1952 1951 1956 +1855 1 1994 1993 1998 +1856 1 1993 1994 1995 +1857 1 1993 1998 1997 +1858 1 2000 1999 2004 +1859 1 1999 2000 2001 +1860 1 2000 2001 2002 +1861 1 2001 2002 2003 +1862 1 2002 2003 2004 +1863 1 1999 2004 2003 +1864 1 1954 1955 1956 +1865 1 2191 2196 2195 +1866 1 2194 2195 2196 +1867 1 2193 2194 2195 +1868 1 2192 2193 2194 +1869 1 2191 2192 2193 +1870 1 2192 2191 2196 +1871 1 1953 1954 1955 +1872 1 1624 1625 1626 +1873 1 2371 2376 2375 +1874 1 1951 1952 1953 +1875 1 2006 2005 2010 +1876 1 2005 2006 2007 +1877 1 2006 2007 2008 +1878 1 2007 2008 2009 +1879 1 2008 2009 2010 +1880 1 2005 2010 2009 +1881 1 1957 1958 1959 +1882 1 1958 1959 1960 +1883 1 1958 1957 1962 +1884 1 2150 2151 2152 +1885 1 418 419 420 +1886 1 1729 1734 1733 +1887 1 2300 2299 2304 +1888 1 1562 1561 1566 +1889 1 1970 1971 1972 +1890 1 1970 1969 1974 +1891 1 1969 1970 1971 +1892 1 2012 2011 2016 +1893 1 2011 2012 2013 +1894 1 2013 2014 2015 +1895 1 2014 2015 2016 +1896 1 2011 2016 2015 +1897 1 2012 2013 2014 +1898 1 2163 2164 2165 +1899 1 2204 2205 2206 +1900 1 1730 1729 1734 +1901 1 2353 2358 2357 +1902 1 1827 1828 1829 +1903 1 1976 1977 1978 +1904 1 1977 1978 1979 +1905 1 2024 2023 2028 +1906 1 2023 2024 2025 +1907 1 2024 2025 2026 +1908 1 2025 2026 2027 +1909 1 2026 2027 2028 +1910 1 2023 2028 2027 +1911 1 2216 2215 2220 +1912 1 2257 2262 2261 +1913 1 2030 2029 2034 +1914 1 2029 2030 2031 +1915 1 2030 2031 2032 +1916 1 2031 2032 2033 +1917 1 2032 2033 2034 +1918 1 2029 2034 2033 +1919 1 2036 2035 2040 +1920 1 2035 2036 2037 +1921 1 2036 2037 2038 +1922 1 2037 2038 2039 +1923 1 2038 2039 2040 +1924 1 2035 2040 2039 +1925 1 2227 2232 2231 +1926 1 2236 2237 2238 +1927 1 2230 2231 2232 +1928 1 2277 2278 2279 +1929 1 2276 2277 2278 +1930 1 2090 2089 2094 +1931 1 2089 2094 2093 +1932 1 2275 2276 2277 +1933 1 2227 2228 2229 +1934 1 2228 2227 2232 +1935 1 2278 2279 2280 +1936 1 2042 2041 2046 +1937 1 2041 2042 2043 +1938 1 2041 2046 2045 +1939 1 2042 2043 2044 +1940 1 2043 2044 2045 +1941 1 2044 2045 2046 +1942 1 2048 2047 2052 +1943 1 2047 2048 2049 +1944 1 2048 2049 2050 +1945 1 2049 2050 2051 +1946 1 2050 2051 2052 +1947 1 2047 2052 2051 +1948 1 2234 2235 2236 +1949 1 2092 2093 2094 +1950 1 2235 2236 2237 +1951 1 2233 2234 2235 +1952 1 2054 2053 2058 +1953 1 2053 2054 2055 +1954 1 2054 2055 2056 +1955 1 2055 2056 2057 +1956 1 2056 2057 2058 +1957 1 2053 2058 2057 +1958 1 1826 1827 1828 +1959 1 2020 2021 2022 +1960 1 2060 2059 2064 +1961 1 2059 2060 2061 +1962 1 2018 2019 2020 +1963 1 2019 2020 2021 +1964 1 2018 2017 2022 +1965 1 2017 2018 2019 +1966 1 2017 2022 2021 +1967 1 2060 2061 2062 +1968 1 2061 2062 2063 +1969 1 2062 2063 2064 +1970 1 2059 2064 2063 +1971 1 392 393 394 +1972 1 391 392 393 +1973 1 2073 2074 2075 +1974 1 2074 2075 2076 +1975 1 392 391 396 +1976 1 391 396 395 +1977 1 2258 2259 2260 +1978 1 393 394 395 +1979 1 2259 2260 2261 +1980 1 2257 2258 2259 +1981 1 2258 2257 2262 +1982 1 394 395 396 +1983 1 398 397 402 +1984 1 206 207 208 +1985 1 207 208 209 +1986 1 2071 2076 2075 +1987 1 205 206 207 +1988 1 2072 2071 2076 +1989 1 2071 2072 2073 +1990 1 2072 2073 2074 +1991 1 2078 2077 2082 +1992 1 2077 2078 2079 +1993 1 2078 2079 2080 +1994 1 2079 2080 2081 +1995 1 2080 2081 2082 +1996 1 2077 2082 2081 +1997 1 397 402 401 +1998 1 404 403 408 +1999 1 403 404 405 +2000 1 38 37 42 +2001 1 2450 2449 2454 +2002 1 409 410 411 +2003 1 2089 2090 2091 +2004 1 410 411 412 +2005 1 404 405 406 +2006 1 2084 2083 2088 +2007 1 2083 2084 2085 +2008 1 2084 2085 2086 +2009 1 2085 2086 2087 +2010 1 2086 2087 2088 +2011 1 2083 2088 2087 +2012 1 411 412 413 +2013 1 2299 2300 2301 +2014 1 415 420 419 +2015 1 1904 1905 1906 +2016 1 2090 2091 2092 +2017 1 2091 2092 2093 +2018 1 2096 2095 2100 +2019 1 2095 2096 2097 +2020 1 2096 2097 2098 +2021 1 2097 2098 2099 +2022 1 2098 2099 2100 +2023 1 415 416 417 +2024 1 416 415 420 +2025 1 412 413 414 +2026 1 2095 2100 2099 +2027 1 2102 2101 2106 +2028 1 2101 2102 2103 +2029 1 2102 2103 2104 +2030 1 2103 2104 2105 +2031 1 2104 2105 2106 +2032 1 2101 2106 2105 +2033 1 422 423 424 +2034 1 423 424 425 +2035 1 421 422 423 +2036 1 2344 2345 2346 +2037 1 424 425 426 +2038 1 2302 2303 2304 +2039 1 2066 2067 2068 +2040 1 2067 2068 2069 +2041 1 2068 2069 2070 +2042 1 429 430 431 +2043 1 2065 2070 2069 +2044 1 2260 2261 2262 +2045 1 2066 2065 2070 +2046 1 2065 2066 2067 +2047 1 2108 2107 2112 +2048 1 2107 2108 2109 +2049 1 2108 2109 2110 +2050 1 2109 2110 2111 +2051 1 2110 2111 2112 +2052 1 2107 2112 2111 +2053 1 223 228 227 +2054 1 2299 2304 2303 +2055 1 7 12 11 +2056 1 212 211 216 +2057 1 2360 2359 2364 +2058 1 2170 2171 2172 +2059 1 2169 2170 2171 +2060 1 2168 2169 2170 +2061 1 2167 2168 2169 +2062 1 2164 2165 2166 +2063 1 2121 2122 2123 +2064 1 1756 1757 1758 +2065 1 2362 2363 2364 +2066 1 2359 2364 2363 +2067 1 2161 2166 2165 +2068 1 2162 2161 2166 +2069 1 2361 2362 2363 +2070 1 2313 2314 2315 +2071 1 2365 2370 2369 +2072 1 2317 2318 2319 +2073 1 2318 2317 2322 +2074 1 2294 2295 2296 +2075 1 2173 2178 2177 +2076 1 2176 2177 2178 +2077 1 2175 2176 2177 +2078 1 2174 2175 2176 +2079 1 2173 2174 2175 +2080 1 2174 2173 2178 +2081 1 2320 2321 2322 +2082 1 2317 2322 2321 +2083 1 2366 2365 2370 +2084 1 2179 2184 2183 +2085 1 2182 2183 2184 +2086 1 2180 2179 2184 +2087 1 2312 2313 2314 +2088 1 2366 2367 2368 +2089 1 2365 2366 2367 +2090 1 2137 2142 2141 +2091 1 2473 2474 2475 +2092 1 2187 2188 2189 +2093 1 2185 2186 2187 +2094 1 2179 2180 2181 +2095 1 2323 2324 2325 +2096 1 2181 2182 2183 +2097 1 2180 2181 2182 +2098 1 2295 2296 2297 +2099 1 2185 2190 2189 +2100 1 2186 2185 2190 +2101 1 2324 2323 2328 +2102 1 2138 2137 2142 +2103 1 2143 2144 2145 +2104 1 2137 2138 2139 +2105 1 2138 2139 2140 +2106 1 2188 2189 2190 +2107 1 2336 2337 2338 +2108 1 2383 2384 2385 +2109 1 2336 2335 2340 +2110 1 2384 2385 2386 +2111 1 2338 2339 2340 +2112 1 2335 2340 2339 +2113 1 2335 2336 2337 +2114 1 2385 2386 2387 +2115 1 2150 2149 2154 +2116 1 2149 2150 2151 +2117 1 2149 2154 2153 +2118 1 2152 2153 2154 +2119 1 2342 2341 2346 +2120 1 2197 2202 2201 +2121 1 2198 2197 2202 +2122 1 2151 2152 2153 +2123 1 2205 2206 2207 +2124 1 2203 2208 2207 +2125 1 2206 2207 2208 +2126 1 2396 2395 2400 +2127 1 2203 2204 2205 +2128 1 2293 2298 2297 +2129 1 2355 2356 2357 +2130 1 2162 2163 2164 +2131 1 2161 2162 2163 +2132 1 2356 2357 2358 +2133 1 2204 2203 2208 +2134 1 2395 2400 2399 +2135 1 2398 2399 2400 +2136 1 2410 2411 2412 +2137 1 2215 2220 2219 +2138 1 2218 2219 2220 +2139 1 2217 2218 2219 +2140 1 2216 2217 2218 +2141 1 2215 2216 2217 +2142 1 2209 2214 2213 +2143 1 2212 2213 2214 +2144 1 2210 2209 2214 +2145 1 2409 2410 2411 +2146 1 2211 2212 2213 +2147 1 2408 2409 2410 +2148 1 2210 2211 2212 +2149 1 2209 2210 2211 +2150 1 2263 2268 2267 +2151 1 2266 2267 2268 +2152 1 2407 2412 2411 +2153 1 2415 2416 2417 +2154 1 2301 2302 2303 +2155 1 1765 1766 1767 +2156 1 2413 2414 2415 +2157 1 2221 2226 2225 +2158 1 2224 2225 2226 +2159 1 2223 2224 2225 +2160 1 2222 2223 2224 +2161 1 2221 2222 2223 +2162 1 2222 2221 2226 +2163 1 2122 2123 2124 +2164 1 2413 2418 2417 +2165 1 2403 2404 2405 +2166 1 2233 2238 2237 +2167 1 2229 2230 2231 +2168 1 2228 2229 2230 +2169 1 2283 2284 2285 +2170 1 2282 2283 2284 +2171 1 2420 2421 2422 +2172 1 2281 2282 2283 +2173 1 2275 2280 2279 +2174 1 2421 2422 2423 +2175 1 2239 2244 2243 +2176 1 2241 2242 2243 +2177 1 2240 2241 2242 +2178 1 2239 2240 2241 +2179 1 2240 2239 2244 +2180 1 2234 2233 2238 +2181 1 2242 2243 2244 +2182 1 1753 1758 1757 +2183 1 2437 2438 2439 +2184 1 2197 2198 2199 +2185 1 2200 2201 2202 +2186 1 2198 2199 2200 +2187 1 2199 2200 2201 +2188 1 2245 2250 2249 +2189 1 2248 2249 2250 +2190 1 2247 2248 2249 +2191 1 2246 2247 2248 +2192 1 2245 2246 2247 +2193 1 2246 2245 2250 +2194 1 1603 1604 1605 +2195 1 2438 2439 2440 +2196 1 2402 2403 2404 +2197 1 1628 1629 1630 +2198 1 2443 2448 2447 +2199 1 2251 2256 2255 +2200 1 2254 2255 2256 +2201 1 2253 2254 2255 +2202 1 2252 2253 2254 +2203 1 2251 2252 2253 +2204 1 2252 2251 2256 +2205 1 2444 2443 2448 +2206 1 585 586 587 +2207 1 577 582 581 +2208 1 778 779 780 +2209 1 578 577 582 +2210 1 769 774 773 +2211 1 770 769 774 +2212 1 772 773 774 +2213 1 583 584 585 +2214 1 2265 2266 2267 +2215 1 2264 2265 2266 +2216 1 2263 2264 2265 +2217 1 2264 2263 2268 +2218 1 769 770 771 +2219 1 584 585 586 +2220 1 2422 2423 2424 +2221 1 591 592 593 +2222 1 590 591 592 +2223 1 211 212 213 +2224 1 2486 2487 2488 +2225 1 2488 2489 2490 +2226 1 586 587 588 +2227 1 583 588 587 +2228 1 584 583 588 +2229 1 2269 2274 2273 +2230 1 2272 2273 2274 +2231 1 2271 2272 2273 +2232 1 2270 2271 2272 +2233 1 2269 2270 2271 +2234 1 2270 2269 2274 +2235 1 589 594 593 +2236 1 592 593 594 +2237 1 590 589 594 +2238 1 589 590 591 +2239 1 430 431 432 +2240 1 775 780 779 +2241 1 2485 2490 2489 +2242 1 2395 2396 2397 +2243 1 2276 2275 2280 +2244 1 601 602 603 +2245 1 597 598 599 +2246 1 417 418 419 +2247 1 596 597 598 +2248 1 595 596 597 +2249 1 2294 2293 2298 +2250 1 601 606 605 +2251 1 607 608 609 +2252 1 608 609 610 +2253 1 2300 2301 2302 +2254 1 2284 2285 2286 +2255 1 2281 2286 2285 +2256 1 2282 2281 2286 +2257 1 603 604 605 +2258 1 607 612 611 +2259 1 2458 2459 2460 +2260 1 608 607 612 +2261 1 1738 1739 1740 +2262 1 2287 2292 2291 +2263 1 2290 2291 2292 +2264 1 2289 2290 2291 +2265 1 2288 2289 2290 +2266 1 2287 2288 2289 +2267 1 2288 2287 2292 +2268 1 604 605 606 +2269 1 806 807 808 +2270 1 2293 2294 2295 +2271 1 2296 2297 2298 +2272 1 2486 2485 2490 +2273 1 2485 2486 2487 +2274 1 614 613 618 +2275 1 2360 2361 2362 +2276 1 2480 2481 2482 +2277 1 2491 2496 2495 +2278 1 1706 1705 1710 +2279 1 2498 2499 2500 +2280 1 2504 2503 2508 +2281 1 2552 2551 2556 +2282 1 2551 2552 2553 +2283 1 2552 2553 2554 +2284 1 2553 2554 2555 +2285 1 2554 2555 2556 +2286 1 2551 2556 2555 +2287 1 2497 2498 2499 +2288 1 2503 2504 2505 +2289 1 2359 2360 2361 +2290 1 992 993 994 +2291 1 2499 2500 2501 +2292 1 2354 2353 2358 +2293 1 2504 2505 2506 +2294 1 2367 2368 2369 +2295 1 2564 2563 2568 +2296 1 2563 2568 2567 +2297 1 2558 2559 2560 +2298 1 991 992 993 +2299 1 2368 2369 2370 +2300 1 2517 2518 2519 +2301 1 2461 2462 2463 +2302 1 2518 2519 2520 +2303 1 2509 2510 2511 +2304 1 784 785 786 +2305 1 2563 2564 2565 +2306 1 2515 2520 2519 +2307 1 2372 2373 2374 +2308 1 2515 2516 2517 +2309 1 2419 2420 2421 +2310 1 2564 2565 2566 +2311 1 2565 2566 2567 +2312 1 2566 2567 2568 +2313 1 2379 2380 2381 +2314 1 2378 2379 2380 +2315 1 2713 2718 2717 +2316 1 2377 2378 2379 +2317 1 2372 2371 2376 +2318 1 2516 2515 2520 +2319 1 2371 2372 2373 +2320 1 2521 2526 2525 +2321 1 2524 2525 2526 +2322 1 2883 2884 2885 +2323 1 2378 2377 2382 +2324 1 2569 2570 2571 +2325 1 2570 2569 2574 +2326 1 2569 2574 2573 +2327 1 2529 2530 2531 +2328 1 2380 2381 2382 +2329 1 2377 2382 2381 +2330 1 2462 2461 2466 +2331 1 2530 2531 2532 +2332 1 2527 2532 2531 +2333 1 2571 2572 2573 +2334 1 2577 2578 2579 +2335 1 2578 2579 2580 +2336 1 2919 2920 2921 +2337 1 2528 2527 2532 +2338 1 2528 2529 2530 +2339 1 2527 2528 2529 +2340 1 2575 2576 2577 +2341 1 2576 2577 2578 +2342 1 2384 2383 2388 +2343 1 2383 2388 2387 +2344 1 2523 2524 2525 +2345 1 2341 2342 2343 +2346 1 2535 2536 2537 +2347 1 2581 2582 2583 +2348 1 2582 2583 2584 +2349 1 2534 2533 2538 +2350 1 2536 2537 2538 +2351 1 2343 2344 2345 +2352 1 2342 2343 2344 +2353 1 2589 2590 2591 +2354 1 2542 2543 2544 +2355 1 2391 2392 2393 +2356 1 2582 2581 2586 +2357 1 2534 2535 2536 +2358 1 2390 2391 2392 +2359 1 2533 2534 2535 +2360 1 2546 2547 2548 +2361 1 2547 2548 2549 +2362 1 2548 2549 2550 +2363 1 2353 2354 2355 +2364 1 2690 2691 2692 +2365 1 1197 1198 1199 +2366 1 2414 2415 2416 +2367 1 2545 2546 2547 +2368 1 2347 2352 2351 +2369 1 2396 2397 2398 +2370 1 2546 2545 2550 +2371 1 2545 2550 2549 +2372 1 2588 2587 2592 +2373 1 2587 2588 2589 +2374 1 2588 2589 2590 +2375 1 2590 2591 2592 +2376 1 2587 2592 2591 +2377 1 2539 2544 2543 +2378 1 2348 2347 2352 +2379 1 2347 2348 2349 +2380 1 2497 2502 2501 +2381 1 2691 2692 2693 +2382 1 1388 1387 1392 +2383 1 2500 2501 2502 +2384 1 2540 2539 2544 +2385 1 2692 2693 2694 +2386 1 1538 1539 1540 +2387 1 2408 2407 2412 +2388 1 2407 2408 2409 +2389 1 2596 2597 2598 +2390 1 2600 2599 2604 +2391 1 2600 2601 2602 +2392 1 2601 2602 2603 +2393 1 2602 2603 2604 +2394 1 2599 2604 2603 +2395 1 2595 2596 2597 +2396 1 2599 2600 2601 +2397 1 2402 2401 2406 +2398 1 2594 2593 2598 +2399 1 2647 2652 2651 +2400 1 2593 2598 2597 +2401 1 2455 2460 2459 +2402 1 2557 2558 2559 +2403 1 2455 2456 2457 +2404 1 2456 2455 2460 +2405 1 2606 2605 2610 +2406 1 2605 2606 2607 +2407 1 2606 2607 2608 +2408 1 2607 2608 2609 +2409 1 2608 2609 2610 +2410 1 2605 2610 2609 +2411 1 2350 2351 2352 +2412 1 2425 2426 2427 +2413 1 2612 2611 2616 +2414 1 2611 2612 2613 +2415 1 2612 2613 2614 +2416 1 2613 2614 2615 +2417 1 2614 2615 2616 +2418 1 2611 2616 2615 +2419 1 2617 2618 2619 +2420 1 2618 2619 2620 +2421 1 2911 2916 2915 +2422 1 2419 2424 2423 +2423 1 2426 2425 2430 +2424 1 2425 2430 2429 +2425 1 2426 2427 2428 +2426 1 2428 2429 2430 +2427 1 2420 2419 2424 +2428 1 2570 2571 2572 +2429 1 2576 2575 2580 +2430 1 2575 2580 2579 +2431 1 2427 2428 2429 +2432 1 2619 2620 2621 +2433 1 2620 2621 2622 +2434 1 2624 2623 2628 +2435 1 2623 2624 2625 +2436 1 2624 2625 2626 +2437 1 2625 2626 2627 +2438 1 2623 2628 2627 +2439 1 2432 2433 2434 +2440 1 2433 2434 2435 +2441 1 2431 2432 2433 +2442 1 2390 2389 2394 +2443 1 2389 2394 2393 +2444 1 2583 2584 2585 +2445 1 2440 2441 2442 +2446 1 2437 2442 2441 +2447 1 2630 2629 2634 +2448 1 2630 2631 2632 +2449 1 2631 2632 2633 +2450 1 2632 2633 2634 +2451 1 2629 2634 2633 +2452 1 2444 2445 2446 +2453 1 2439 2440 2441 +2454 1 2389 2390 2391 +2455 1 2445 2446 2447 +2456 1 2438 2437 2442 +2457 1 2629 2630 2631 +2458 1 2392 2393 2394 +2459 1 2594 2595 2596 +2460 1 2404 2405 2406 +2461 1 2912 2911 2916 +2462 1 2443 2444 2445 +2463 1 2593 2594 2595 +2464 1 2636 2635 2640 +2465 1 2635 2636 2637 +2466 1 2636 2637 2638 +2467 1 2637 2638 2639 +2468 1 2638 2639 2640 +2469 1 2635 2640 2639 +2470 1 2401 2406 2405 +2471 1 775 776 777 +2472 1 2451 2452 2453 +2473 1 2642 2643 2644 +2474 1 2644 2645 2646 +2475 1 2648 2647 2652 +2476 1 2647 2648 2649 +2477 1 2648 2649 2650 +2478 1 2649 2650 2651 +2479 1 2650 2651 2652 +2480 1 968 967 972 +2481 1 967 968 969 +2482 1 2642 2641 2646 +2483 1 2641 2642 2643 +2484 1 2641 2646 2645 +2485 1 2457 2458 2459 +2486 1 967 972 971 +2487 1 770 771 772 +2488 1 776 777 778 +2489 1 2452 2453 2454 +2490 1 968 969 970 +2491 1 777 778 779 +2492 1 2461 2466 2465 +2493 1 783 784 785 +2494 1 781 786 785 +2495 1 2456 2457 2458 +2496 1 2654 2653 2658 +2497 1 2653 2654 2655 +2498 1 2654 2655 2656 +2499 1 2655 2656 2657 +2500 1 2656 2657 2658 +2501 1 2653 2658 2657 +2502 1 782 783 784 +2503 1 1358 1357 1362 +2504 1 2401 2402 2403 +2505 1 979 980 981 +2506 1 2468 2467 2472 +2507 1 2618 2617 2622 +2508 1 979 984 983 +2509 1 2470 2471 2472 +2510 1 2467 2468 2469 +2511 1 2468 2469 2470 +2512 1 2469 2470 2471 +2513 1 2660 2659 2664 +2514 1 2659 2660 2661 +2515 1 2662 2663 2664 +2516 1 2659 2664 2663 +2517 1 980 979 984 +2518 1 2476 2477 2478 +2519 1 980 981 982 +2520 1 790 791 792 +2521 1 2467 2472 2471 +2522 1 2475 2476 2477 +2523 1 787 792 791 +2524 1 2665 2670 2669 +2525 1 2666 2665 2670 +2526 1 2473 2478 2477 +2527 1 1558 1559 1560 +2528 1 2617 2622 2621 +2529 1 2432 2431 2436 +2530 1 2434 2435 2436 +2531 1 2431 2436 2435 +2532 1 2337 2338 2339 +2533 1 2474 2475 2476 +2534 1 2479 2484 2483 +2535 1 2480 2479 2484 +2536 1 2479 2480 2481 +2537 1 1375 1376 1377 +2538 1 2481 2482 2483 +2539 1 2672 2671 2676 +2540 1 2671 2672 2673 +2541 1 2672 2673 2674 +2542 1 2673 2674 2675 +2543 1 2674 2675 2676 +2544 1 2671 2676 2675 +2545 1 2714 2713 2718 +2546 1 3070 3071 3072 +2547 1 2474 2473 2478 +2548 1 793 798 797 +2549 1 796 797 798 +2550 1 2397 2398 2399 +2551 1 2680 2681 2682 +2552 1 2482 2483 2484 +2553 1 2487 2488 2489 +2554 1 2678 2677 2682 +2555 1 2677 2678 2679 +2556 1 2678 2679 2680 +2557 1 2679 2680 2681 +2558 1 2677 2682 2681 +2559 1 2684 2683 2688 +2560 1 2683 2684 2685 +2561 1 2494 2495 2496 +2562 1 2684 2685 2686 +2563 1 2683 2688 2687 +2564 1 2493 2494 2495 +2565 1 814 815 816 +2566 1 2450 2451 2452 +2567 1 2449 2450 2451 +2568 1 2685 2686 2687 +2569 1 2686 2687 2688 +2570 1 1004 1005 1006 +2571 1 1005 1006 1007 +2572 1 2522 2523 2524 +2573 1 2713 2714 2715 +2574 1 812 811 816 +2575 1 1003 1004 1005 +2576 1 1191 1192 1193 +2577 1 811 816 815 +2578 1 1611 1612 1613 +2579 1 2888 2887 2892 +2580 1 2890 2891 2892 +2581 1 2696 2695 2700 +2582 1 2697 2698 2699 +2583 1 2698 2699 2700 +2584 1 2744 2743 2748 +2585 1 2743 2744 2745 +2586 1 2744 2745 2746 +2587 1 2745 2746 2747 +2588 1 2746 2747 2748 +2589 1 2887 2892 2891 +2590 1 2938 2939 2940 +2591 1 2937 2938 2939 +2592 1 1615 1616 1617 +2593 1 2695 2696 2697 +2594 1 2695 2700 2699 +2595 1 2889 2890 2891 +2596 1 2560 2561 2562 +2597 1 2701 2706 2705 +2598 1 2702 2701 2706 +2599 1 2750 2749 2754 +2600 1 2749 2750 2751 +2601 1 2750 2751 2752 +2602 1 2751 2752 2753 +2603 1 2752 2753 2754 +2604 1 2749 2754 2753 +2605 1 2701 2702 2703 +2606 1 2559 2560 2561 +2607 1 1651 1656 1655 +2608 1 2756 2755 2760 +2609 1 2755 2756 2757 +2610 1 2756 2757 2758 +2611 1 2757 2758 2759 +2612 1 2758 2759 2760 +2613 1 2755 2760 2759 +2614 1 2764 2765 2766 +2615 1 2761 2766 2765 +2616 1 2572 2573 2574 +2617 1 2719 2720 2721 +2618 1 1357 1358 1359 +2619 1 2720 2721 2722 +2620 1 2762 2761 2766 +2621 1 2721 2722 2723 +2622 1 2761 2762 2763 +2623 1 2762 2763 2764 +2624 1 2763 2764 2765 +2625 1 2768 2767 2772 +2626 1 2767 2768 2769 +2627 1 2768 2769 2770 +2628 1 2769 2770 2771 +2629 1 2770 2771 2772 +2630 1 2767 2772 2771 +2631 1 2719 2724 2723 +2632 1 2533 2538 2537 +2633 1 2920 2921 2922 +2634 1 2720 2719 2724 +2635 1 2728 2729 2730 +2636 1 2584 2585 2586 +2637 1 2581 2586 2585 +2638 1 2774 2773 2778 +2639 1 2776 2777 2778 +2640 1 2773 2778 2777 +2641 1 2775 2776 2777 +2642 1 2725 2730 2729 +2643 1 2689 2694 2693 +2644 1 2731 2736 2735 +2645 1 2732 2731 2736 +2646 1 2732 2733 2734 +2647 1 2738 2737 2742 +2648 1 2740 2741 2742 +2649 1 2737 2742 2741 +2650 1 2738 2739 2740 +2651 1 2739 2740 2741 +2652 1 2733 2734 2735 +2653 1 2734 2735 2736 +2654 1 2737 2738 2739 +2655 1 2779 2780 2781 +2656 1 2780 2781 2782 +2657 1 2781 2782 2783 +2658 1 2971 2976 2975 +2659 1 2974 2975 2976 +2660 1 2929 2934 2933 +2661 1 2731 2732 2733 +2662 1 2690 2689 2694 +2663 1 2689 2690 2691 +2664 1 981 982 983 +2665 1 2743 2748 2747 +2666 1 2787 2788 2789 +2667 1 2792 2791 2796 +2668 1 2791 2792 2793 +2669 1 2792 2793 2794 +2670 1 2793 2794 2795 +2671 1 2794 2795 2796 +2672 1 2791 2796 2795 +2673 1 2788 2789 2790 +2674 1 2834 2835 2836 +2675 1 2842 2843 2844 +2676 1 2839 2844 2843 +2677 1 2841 2842 2843 +2678 1 2558 2557 2562 +2679 1 2557 2562 2561 +2680 1 2798 2797 2802 +2681 1 2797 2798 2799 +2682 1 2798 2799 2800 +2683 1 2799 2800 2801 +2684 1 2800 2801 2802 +2685 1 2797 2802 2801 +2686 1 2995 3000 2999 +2687 1 2846 2847 2848 +2688 1 3037 3042 3041 +2689 1 2804 2803 2808 +2690 1 2803 2804 2805 +2691 1 2804 2805 2806 +2692 1 2805 2806 2807 +2693 1 2806 2807 2808 +2694 1 2803 2808 2807 +2695 1 2809 2814 2813 +2696 1 2812 2813 2814 +2697 1 2811 2812 2813 +2698 1 2859 2860 2861 +2699 1 2860 2861 2862 +2700 1 3002 3001 3006 +2701 1 2998 2999 3000 +2702 1 3001 3006 3005 +2703 1 3004 3005 3006 +2704 1 2626 2627 2628 +2705 1 2810 2809 2814 +2706 1 2809 2810 2811 +2707 1 2810 2811 2812 +2708 1 2816 2815 2820 +2709 1 2815 2816 2817 +2710 1 2816 2817 2818 +2711 1 2817 2818 2819 +2712 1 2818 2819 2820 +2713 1 2815 2820 2819 +2714 1 2773 2774 2775 +2715 1 2822 2821 2826 +2716 1 2821 2822 2823 +2717 1 2822 2823 2824 +2718 1 2823 2824 2825 +2719 1 2824 2825 2826 +2720 1 2821 2826 2825 +2721 1 2869 2870 2871 +2722 1 2870 2871 2872 +2723 1 2774 2775 2776 +2724 1 2780 2779 2784 +2725 1 2779 2784 2783 +2726 1 2782 2783 2784 +2727 1 2786 2787 2788 +2728 1 2786 2785 2790 +2729 1 2785 2786 2787 +2730 1 2785 2790 2789 +2731 1 2828 2827 2832 +2732 1 2827 2828 2829 +2733 1 2828 2829 2830 +2734 1 2829 2830 2831 +2735 1 2830 2831 2832 +2736 1 2827 2832 2831 +2737 1 3022 3023 3024 +2738 1 2835 2836 2837 +2739 1 2836 2837 2838 +2740 1 3019 3024 3023 +2741 1 1159 1160 1161 +2742 1 2643 2644 2645 +2743 1 962 961 966 +2744 1 1160 1161 1162 +2745 1 1682 1681 1686 +2746 1 1160 1159 1164 +2747 1 2834 2833 2838 +2748 1 2833 2834 2835 +2749 1 2839 2840 2841 +2750 1 1154 1155 1156 +2751 1 1155 1156 1157 +2752 1 2840 2841 2842 +2753 1 1153 1154 1155 +2754 1 1154 1153 1158 +2755 1 2414 2413 2418 +2756 1 1165 1170 1169 +2757 1 2840 2839 2844 +2758 1 1159 1164 1163 +2759 1 1162 1163 1164 +2760 1 2846 2845 2850 +2761 1 2845 2846 2847 +2762 1 2847 2848 2849 +2763 1 2848 2849 2850 +2764 1 2845 2850 2849 +2765 1 1166 1165 1170 +2766 1 1165 1166 1167 +2767 1 2852 2853 2854 +2768 1 2852 2851 2856 +2769 1 2851 2852 2853 +2770 1 1161 1162 1163 +2771 1 1166 1167 1168 +2772 1 1167 1168 1169 +2773 1 2667 2668 2669 +2774 1 2668 2669 2670 +2775 1 2858 2859 2860 +2776 1 2853 2854 2855 +2777 1 2660 2661 2662 +2778 1 2661 2662 2663 +2779 1 2666 2667 2668 +2780 1 2665 2666 2667 +2781 1 2854 2855 2856 +2782 1 2851 2856 2855 +2783 1 2858 2857 2862 +2784 1 2857 2858 2859 +2785 1 2857 2862 2861 +2786 1 2864 2863 2868 +2787 1 2863 2864 2865 +2788 1 2864 2865 2866 +2789 1 2865 2866 2867 +2790 1 2866 2867 2868 +2791 1 2863 2868 2867 +2792 1 1184 1183 1188 +2793 1 1183 1184 1185 +2794 1 1190 1191 1192 +2795 1 1189 1194 1193 +2796 1 1156 1157 1158 +2797 1 2870 2869 2874 +2798 1 2871 2872 2873 +2799 1 2872 2873 2874 +2800 1 2869 2874 2873 +2801 1 1190 1189 1194 +2802 1 1189 1190 1191 +2803 1 1345 1346 1347 +2804 1 1192 1193 1194 +2805 1 1006 1007 1008 +2806 1 2914 2915 2916 +2807 1 2726 2725 2730 +2808 1 2833 2838 2837 +2809 1 2876 2875 2880 +2810 1 2875 2876 2877 +2811 1 2876 2877 2878 +2812 1 2877 2878 2879 +2813 1 2878 2879 2880 +2814 1 2875 2880 2879 +2815 1 3067 3072 3071 +2816 1 1195 1200 1199 +2817 1 1198 1199 1200 +2818 1 1593 1594 1595 +2819 1 2935 2940 2939 +2820 1 2936 2937 2938 +2821 1 2935 2936 2937 +2822 1 2936 2935 2940 +2823 1 1591 1596 1595 +2824 1 2354 2355 2356 +2825 1 1711 1712 1713 +2826 1 1594 1595 1596 +2827 1 1153 1158 1157 +2828 1 1604 1605 1606 +2829 1 1597 1602 1601 +2830 1 1544 1543 1548 +2831 1 2893 2894 2895 +2832 1 2948 2949 2950 +2833 1 2949 2950 2951 +2834 1 2941 2946 2945 +2835 1 2944 2945 2946 +2836 1 2943 2944 2945 +2837 1 2942 2943 2944 +2838 1 2941 2942 2943 +2839 1 2942 2941 2946 +2840 1 2893 2898 2897 +2841 1 2894 2893 2898 +2842 1 2950 2951 2952 +2843 1 2894 2895 2896 +2844 1 1600 1601 1602 +2845 1 1557 1558 1559 +2846 1 1609 1610 1611 +2847 1 2446 2447 2448 +2848 1 2947 2948 2949 +2849 1 2947 2952 2951 +2850 1 2948 2947 2952 +2851 1 2899 2900 2901 +2852 1 1556 1555 1560 +2853 1 1555 1560 1559 +2854 1 1604 1603 1608 +2855 1 2900 2901 2902 +2856 1 1603 1608 1607 +2857 1 1610 1611 1612 +2858 1 1555 1556 1557 +2859 1 1561 1566 1565 +2860 1 1568 1569 1570 +2861 1 2956 2957 2958 +2862 1 2955 2956 2957 +2863 1 2954 2955 2956 +2864 1 2959 2964 2963 +2865 1 2962 2963 2964 +2866 1 2961 2962 2963 +2867 1 2953 2958 2957 +2868 1 2953 2954 2955 +2869 1 2954 2953 2958 +2870 1 1569 1570 1571 +2871 1 1564 1565 1566 +2872 1 1568 1567 1572 +2873 1 1567 1568 1569 +2874 1 2881 2886 2885 +2875 1 1567 1572 1571 +2876 1 1570 1571 1572 +2877 1 2965 2970 2969 +2878 1 2968 2969 2970 +2879 1 2967 2968 2969 +2880 1 2966 2967 2968 +2881 1 2965 2966 2967 +2882 1 2966 2965 2970 +2883 1 2492 2493 2494 +2884 1 2973 2974 2975 +2885 1 2924 2923 2928 +2886 1 1623 1624 1625 +2887 1 1622 1623 1624 +2888 1 2923 2924 2925 +2889 1 2884 2885 2886 +2890 1 1669 1674 1673 +2891 1 2971 2972 2973 +2892 1 2972 2971 2976 +2893 1 982 983 984 +2894 1 2972 2973 2974 +2895 1 2929 2930 2931 +2896 1 2930 2929 2934 +2897 1 2923 2928 2927 +2898 1 2926 2927 2928 +2899 1 1537 1538 1539 +2900 1 2925 2926 2927 +2901 1 2924 2925 2926 +2902 1 2983 2988 2987 +2903 1 2986 2987 2988 +2904 1 2985 2986 2987 +2905 1 2984 2985 2986 +2906 1 2983 2984 2985 +2907 1 2984 2983 2988 +2908 1 2977 2982 2981 +2909 1 1640 1639 1644 +2910 1 1639 1640 1641 +2911 1 2498 2497 2502 +2912 1 2696 2697 2698 +2913 1 3033 3034 3035 +2914 1 3032 3033 3034 +2915 1 2977 2978 2979 +2916 1 2978 2977 2982 +2917 1 3031 3032 3033 +2918 1 2989 2994 2993 +2919 1 2992 2993 2994 +2920 1 2991 2992 2993 +2921 1 2990 2991 2992 +2922 1 2989 2990 2991 +2923 1 2990 2989 2994 +2924 1 1665 1666 1667 +2925 1 2995 2996 2997 +2926 1 2996 2995 3000 +2927 1 3040 3041 3042 +2928 1 1646 1645 1650 +2929 1 1605 1606 1607 +2930 1 3002 3003 3004 +2931 1 1606 1607 1608 +2932 1 1653 1654 1655 +2933 1 1183 1188 1187 +2934 1 3001 3002 3003 +2935 1 2997 2998 2999 +2936 1 2996 2997 2998 +2937 1 3003 3004 3005 +2938 1 1654 1655 1656 +2939 1 2960 2959 2964 +2940 1 1616 1617 1618 +2941 1 1617 1618 1619 +2942 1 2960 2961 2962 +2943 1 2959 2960 2961 +2944 1 1663 1664 1665 +2945 1 3007 3008 3009 +2946 1 3008 3007 3012 +2947 1 3007 3012 3011 +2948 1 1664 1665 1666 +2949 1 1616 1615 1620 +2950 1 1615 1620 1619 +2951 1 1618 1619 1620 +2952 1 3008 3009 3010 +2953 1 3016 3017 3018 +2954 1 1645 1646 1647 +2955 1 3010 3011 3012 +2956 1 3009 3010 3011 +2957 1 3013 3018 3017 +2958 1 3015 3016 3017 +2959 1 3014 3015 3016 +2960 1 3013 3014 3015 +2961 1 3014 3013 3018 +2962 1 1670 1669 1674 +2963 1 1681 1682 1683 +2964 1 3021 3022 3023 +2965 1 2932 2933 2934 +2966 1 2931 2932 2933 +2967 1 2930 2931 2932 +2968 1 2980 2981 2982 +2969 1 2979 2980 2981 +2970 1 3068 3067 3072 +2971 1 3020 3021 3022 +2972 1 3019 3020 3021 +2973 1 3020 3019 3024 +2974 1 2978 2979 2980 +2975 1 3067 3068 3069 +2976 1 3027 3028 3029 +2977 1 1682 1683 1684 +2978 1 1347 1348 1349 +2979 1 3034 3035 3036 +2980 1 1346 1347 1348 +2981 1 1657 1662 1661 +2982 1 1687 1688 1689 +2983 1 1688 1687 1692 +2984 1 3031 3036 3035 +2985 1 3032 3031 3036 +2986 1 3028 3029 3030 +2987 1 1352 1353 1354 +2988 1 1690 1691 1692 +2989 1 1687 1692 1691 +2990 1 1351 1352 1353 +2991 1 973 974 975 +2992 1 3039 3040 3041 +2993 1 3038 3039 3040 +2994 1 1358 1359 1360 +2995 1 1693 1694 1695 +2996 1 1688 1689 1690 +2997 1 1694 1695 1696 +2998 1 1689 1690 1691 +2999 1 3037 3038 3039 +3000 1 3038 3037 3042 +3001 1 1694 1693 1698 +3002 1 1696 1697 1698 +3003 1 1693 1698 1697 +3004 1 1695 1696 1697 +3005 1 3044 3043 3048 +3006 1 3050 3049 3054 +3007 1 3043 3048 3047 +3008 1 3046 3047 3048 +3009 1 3045 3046 3047 +3010 1 3044 3045 3046 +3011 1 3043 3044 3045 +3012 1 1364 1365 1366 +3013 1 1363 1364 1365 +3014 1 3049 3054 3053 +3015 1 3052 3053 3054 +3016 1 1705 1706 1707 +3017 1 1345 1350 1349 +3018 1 1369 1374 1373 +3019 1 1610 1609 1614 +3020 1 1348 1349 1350 +3021 1 1352 1351 1356 +3022 1 805 806 807 +3023 1 1714 1715 1716 +3024 1 1640 1641 1642 +3025 1 3049 3050 3051 +3026 1 1370 1369 1374 +3027 1 3055 3060 3059 +3028 1 3058 3059 3060 +3029 1 3057 3058 3059 +3030 1 3056 3057 3058 +3031 1 3055 3056 3057 +3032 1 3056 3055 3060 +3033 1 3051 3052 3053 +3034 1 3050 3051 3052 +3035 1 1370 1371 1372 +3036 1 1369 1370 1371 +3037 1 1712 1711 1716 +3038 1 1711 1716 1715 +3039 1 46 47 48 +3040 1 1376 1377 1378 +3041 1 1719 1720 1721 +3042 1 1718 1719 1720 +3043 1 776 775 780 +3044 1 2311 2312 2313 +3045 1 1381 1382 1383 +3046 1 1382 1381 1386 +3047 1 1382 1383 1384 +3048 1 3061 3066 3065 +3049 1 3064 3065 3066 +3050 1 3063 3064 3065 +3051 1 3062 3063 3064 +3052 1 3061 3062 3063 +3053 1 3062 3061 3066 +3054 1 1381 1386 1385 +3055 1 1384 1385 1386 +3056 1 1383 1384 1385 +3057 1 1004 1003 1008 +3058 1 1717 1718 1719 +3059 1 43 48 47 +3060 1 3025 3026 3027 +3061 1 3068 3069 3070 +3062 1 3069 3070 3071 +3063 1 3026 3027 3028 +3064 1 3025 3030 3029 +3065 1 3026 3025 3030 +3066 1 806 805 810 +3067 1 2882 2883 2884 +3068 1 993 994 995 +3069 1 811 812 813 +3070 1 1563 1564 1565 +3071 1 2462 2463 2464 +3072 1 2373 2374 2375 + +Dihedrals + +1 1 602 601 606 605 +2 1 606 601 602 603 +3 1 56 55 60 59 +4 1 60 55 56 57 +5 1 248 247 252 251 +6 1 252 247 248 249 +7 1 247 248 249 250 +8 1 250 251 252 247 +9 1 242 241 246 245 +10 1 246 241 242 243 +11 1 241 242 243 244 +12 1 201 202 203 204 +13 1 200 201 202 203 +14 1 244 245 246 241 +15 1 49 50 51 52 +16 1 50 49 54 53 +17 1 54 49 50 51 +18 1 242 243 244 245 +19 1 243 244 245 246 +20 1 55 56 57 58 +21 1 248 249 250 251 +22 1 212 213 214 215 +23 1 254 253 258 257 +24 1 258 253 254 255 +25 1 253 254 255 256 +26 1 254 255 256 257 +27 1 255 256 257 258 +28 1 256 257 258 253 +29 1 1935 1936 1937 1938 +30 1 260 259 264 263 +31 1 264 259 260 261 +32 1 213 214 215 216 +33 1 214 215 216 211 +34 1 62 61 66 65 +35 1 66 61 62 63 +36 1 610 611 612 607 +37 1 21 22 23 24 +38 1 172 173 174 169 +39 1 260 261 262 263 +40 1 261 262 263 264 +41 1 262 263 264 259 +42 1 266 265 270 269 +43 1 270 265 266 267 +44 1 20 21 22 23 +45 1 19 20 21 22 +46 1 267 268 269 270 +47 1 268 269 270 265 +48 1 28 29 30 25 +49 1 1964 1963 1968 1967 +50 1 1968 1963 1964 1965 +51 1 22 23 24 19 +52 1 20 19 24 23 +53 1 24 19 20 21 +54 1 265 266 267 268 +55 1 266 267 268 269 +56 1 80 79 84 83 +57 1 84 79 80 81 +58 1 79 80 81 82 +59 1 80 81 82 83 +60 1 224 225 226 227 +61 1 225 226 227 228 +62 1 272 271 276 275 +63 1 276 271 272 273 +64 1 272 273 274 275 +65 1 273 274 275 276 +66 1 274 275 276 271 +67 1 226 227 228 223 +68 1 81 82 83 84 +69 1 27 28 29 30 +70 1 235 236 237 238 +71 1 218 217 222 221 +72 1 222 217 218 219 +73 1 271 272 273 274 +74 1 33 34 35 36 +75 1 2155 2156 2157 2158 +76 1 151 152 153 154 +77 1 230 231 232 233 +78 1 278 277 282 281 +79 1 282 277 278 279 +80 1 277 278 279 280 +81 1 278 279 280 281 +82 1 279 280 281 282 +83 1 280 281 282 277 +84 1 283 284 285 286 +85 1 85 86 87 88 +86 1 37 38 39 40 +87 1 284 285 286 287 +88 1 285 286 287 288 +89 1 236 237 238 239 +90 1 231 232 233 234 +91 1 2156 2157 2158 2159 +92 1 38 39 40 41 +93 1 284 283 288 287 +94 1 288 283 284 285 +95 1 93 94 95 96 +96 1 94 95 96 91 +97 1 237 238 239 240 +98 1 238 239 240 235 +99 1 286 287 288 283 +100 1 43 44 45 46 +101 1 92 93 94 95 +102 1 91 92 93 94 +103 1 92 91 96 95 +104 1 96 91 92 93 +105 1 236 235 240 239 +106 1 240 235 236 237 +107 1 82 83 84 79 +108 1 2329 2330 2331 2332 +109 1 194 193 198 197 +110 1 198 193 194 195 +111 1 2114 2113 2118 2117 +112 1 2118 2113 2114 2115 +113 1 296 295 300 299 +114 1 300 295 296 297 +115 1 295 296 297 298 +116 1 296 297 298 299 +117 1 297 298 299 300 +118 1 298 299 300 295 +119 1 97 98 99 100 +120 1 290 289 294 293 +121 1 294 289 290 291 +122 1 152 153 154 155 +123 1 289 290 291 292 +124 1 103 104 105 106 +125 1 63 64 65 66 +126 1 302 301 306 305 +127 1 306 301 302 303 +128 1 301 302 303 304 +129 1 302 303 304 305 +130 1 303 304 305 306 +131 1 304 305 306 301 +132 1 61 62 63 64 +133 1 62 63 64 65 +134 1 110 109 114 113 +135 1 114 109 110 111 +136 1 76 77 78 73 +137 1 616 617 618 613 +138 1 123 124 125 126 +139 1 308 307 312 311 +140 1 312 307 308 309 +141 1 307 308 309 310 +142 1 308 309 310 311 +143 1 309 310 311 312 +144 1 310 311 312 307 +145 1 122 123 124 125 +146 1 596 595 600 599 +147 1 600 595 596 597 +148 1 26 25 30 29 +149 1 30 25 26 27 +150 1 73 74 75 76 +151 1 74 75 76 77 +152 1 75 76 77 78 +153 1 121 122 123 124 +154 1 122 121 126 125 +155 1 126 121 122 123 +156 1 130 131 132 127 +157 1 320 319 324 323 +158 1 324 319 320 321 +159 1 319 320 321 322 +160 1 320 321 322 323 +161 1 321 322 323 324 +162 1 322 323 324 319 +163 1 128 127 132 131 +164 1 132 127 128 129 +165 1 129 130 131 132 +166 1 598 599 600 595 +167 1 2314 2315 2316 2311 +168 1 326 325 330 329 +169 1 330 325 326 327 +170 1 325 326 327 328 +171 1 326 327 328 329 +172 1 327 328 329 330 +173 1 328 329 330 325 +174 1 32 33 34 35 +175 1 39 40 41 42 +176 1 292 293 294 289 +177 1 98 97 102 101 +178 1 102 97 98 99 +179 1 331 332 333 334 +180 1 140 139 144 143 +181 1 144 139 140 141 +182 1 139 140 141 142 +183 1 2324 2325 2326 2327 +184 1 290 291 292 293 +185 1 291 292 293 294 +186 1 332 331 336 335 +187 1 336 331 332 333 +188 1 332 333 334 335 +189 1 333 334 335 336 +190 1 334 335 336 331 +191 1 794 795 796 797 +192 1 763 764 765 766 +193 1 1546 1547 1548 1543 +194 1 146 147 148 149 +195 1 343 344 345 346 +196 1 344 345 346 347 +197 1 345 346 347 348 +198 1 346 347 348 343 +199 1 1545 1546 1547 1548 +200 1 147 148 149 150 +201 1 344 343 348 347 +202 1 348 343 344 345 +203 1 1766 1765 1770 1769 +204 1 1770 1765 1766 1767 +205 1 145 146 147 148 +206 1 386 387 388 389 +207 1 1743 1744 1745 1746 +208 1 350 349 354 353 +209 1 354 349 350 351 +210 1 349 350 351 352 +211 1 350 351 352 353 +212 1 351 352 353 354 +213 1 352 353 354 349 +214 1 1742 1741 1746 1745 +215 1 1746 1741 1742 1743 +216 1 164 163 168 167 +217 1 168 163 164 165 +218 1 356 355 360 359 +219 1 360 355 356 357 +220 1 1742 1743 1744 1745 +221 1 358 359 360 355 +222 1 1741 1742 1743 1744 +223 1 2113 2114 2115 2116 +224 1 1744 1745 1746 1741 +225 1 170 169 174 173 +226 1 174 169 170 171 +227 1 163 164 165 166 +228 1 171 172 173 174 +229 1 165 166 167 168 +230 1 164 165 166 167 +231 1 356 357 358 359 +232 1 357 358 359 360 +233 1 362 361 366 365 +234 1 366 361 362 363 +235 1 364 365 366 361 +236 1 1748 1747 1752 1751 +237 1 1752 1747 1748 1749 +238 1 1750 1751 1752 1747 +239 1 169 170 171 172 +240 1 170 171 172 173 +241 1 361 362 363 364 +242 1 362 363 364 365 +243 1 166 167 168 163 +244 1 363 364 365 366 +245 1 2330 2331 2332 2333 +246 1 1768 1769 1770 1765 +247 1 1749 1750 1751 1752 +248 1 369 370 371 372 +249 1 1759 1760 1761 1762 +250 1 1760 1761 1762 1763 +251 1 152 151 156 155 +252 1 156 151 152 153 +253 1 1966 1967 1968 1963 +254 1 175 176 177 178 +255 1 2144 2145 2146 2147 +256 1 183 184 185 186 +257 1 367 368 369 370 +258 1 368 369 370 371 +259 1 370 371 372 367 +260 1 1576 1577 1578 1573 +261 1 1574 1575 1576 1577 +262 1 368 367 372 371 +263 1 372 367 368 369 +264 1 1747 1748 1749 1750 +265 1 181 182 183 184 +266 1 782 781 786 785 +267 1 786 781 782 783 +268 1 374 373 378 377 +269 1 378 373 374 375 +270 1 373 374 375 376 +271 1 374 375 376 377 +272 1 375 376 377 378 +273 1 1574 1573 1578 1577 +274 1 1578 1573 1574 1575 +275 1 764 763 768 767 +276 1 768 763 764 765 +277 1 104 105 106 107 +278 1 182 183 184 185 +279 1 1573 1574 1575 1576 +280 1 1575 1576 1577 1578 +281 1 1771 1772 1773 1774 +282 1 380 379 384 383 +283 1 384 379 380 381 +284 1 340 341 342 337 +285 1 339 340 341 342 +286 1 1772 1771 1776 1775 +287 1 1776 1771 1772 1773 +288 1 338 337 342 341 +289 1 342 337 338 339 +290 1 337 338 339 340 +291 1 338 339 340 341 +292 1 379 380 381 382 +293 1 380 381 382 383 +294 1 381 382 383 384 +295 1 382 383 384 379 +296 1 1772 1773 1774 1775 +297 1 1773 1774 1775 1776 +298 1 1774 1775 1776 1771 +299 1 1582 1583 1584 1579 +300 1 202 203 204 199 +301 1 74 73 78 77 +302 1 78 73 74 75 +303 1 249 250 251 252 +304 1 388 389 390 385 +305 1 387 388 389 390 +306 1 440 439 444 443 +307 1 444 439 440 441 +308 1 439 440 441 442 +309 1 440 441 442 443 +310 1 441 442 443 444 +311 1 442 443 444 439 +312 1 436 437 438 433 +313 1 397 398 399 400 +314 1 398 399 400 401 +315 1 399 400 401 402 +316 1 446 445 450 449 +317 1 450 445 446 447 +318 1 445 446 447 448 +319 1 446 447 448 449 +320 1 447 448 449 450 +321 1 448 449 450 445 +322 1 452 451 456 455 +323 1 456 451 452 453 +324 1 451 452 453 454 +325 1 452 453 454 455 +326 1 86 87 88 89 +327 1 259 260 261 262 +328 1 405 406 407 408 +329 1 453 454 455 456 +330 1 454 455 456 451 +331 1 458 457 462 461 +332 1 462 457 458 459 +333 1 460 461 462 457 +334 1 722 723 724 725 +335 1 457 458 459 460 +336 1 458 459 460 461 +337 1 459 460 461 462 +338 1 406 407 408 403 +339 1 410 409 414 413 +340 1 414 409 410 411 +341 1 646 647 648 643 +342 1 879 880 881 882 +343 1 464 463 468 467 +344 1 468 463 464 465 +345 1 464 465 466 467 +346 1 465 466 467 468 +347 1 466 467 468 463 +348 1 463 464 465 466 +349 1 229 230 231 232 +350 1 469 470 471 472 +351 1 470 471 472 473 +352 1 471 472 473 474 +353 1 196 197 198 193 +354 1 64 65 66 61 +355 1 434 433 438 437 +356 1 438 433 434 435 +357 1 434 435 436 437 +358 1 386 385 390 389 +359 1 390 385 386 387 +360 1 433 434 435 436 +361 1 435 436 437 438 +362 1 476 475 480 479 +363 1 480 475 476 477 +364 1 475 476 477 478 +365 1 476 477 478 479 +366 1 477 478 479 480 +367 1 478 479 480 475 +368 1 428 427 432 431 +369 1 432 427 428 429 +370 1 487 488 489 490 +371 1 488 489 490 491 +372 1 489 490 491 492 +373 1 490 491 492 487 +374 1 536 537 538 539 +375 1 537 538 539 540 +376 1 488 487 492 491 +377 1 492 487 488 489 +378 1 538 539 540 535 +379 1 727 728 729 730 +380 1 494 493 498 497 +381 1 498 493 494 495 +382 1 493 494 495 496 +383 1 494 495 496 497 +384 1 495 496 497 498 +385 1 496 497 498 493 +386 1 316 317 318 313 +387 1 500 499 504 503 +388 1 504 499 500 501 +389 1 499 500 501 502 +390 1 500 501 502 503 +391 1 501 502 503 504 +392 1 502 503 504 499 +393 1 505 506 507 508 +394 1 506 507 508 509 +395 1 314 313 318 317 +396 1 318 313 314 315 +397 1 313 314 315 316 +398 1 314 315 316 317 +399 1 315 316 317 318 +400 1 506 505 510 509 +401 1 510 505 506 507 +402 1 507 508 509 510 +403 1 508 509 510 505 +404 1 512 511 516 515 +405 1 516 511 512 513 +406 1 511 512 513 514 +407 1 512 513 514 515 +408 1 513 514 515 516 +409 1 514 515 516 511 +410 1 470 469 474 473 +411 1 474 469 470 471 +412 1 472 473 474 469 +413 1 518 517 522 521 +414 1 522 517 518 519 +415 1 517 518 519 520 +416 1 518 519 520 521 +417 1 519 520 521 522 +418 1 520 521 522 517 +419 1 524 523 528 527 +420 1 528 523 524 525 +421 1 523 524 525 526 +422 1 484 485 486 481 +423 1 482 481 486 485 +424 1 486 481 482 483 +425 1 483 484 485 486 +426 1 481 482 483 484 +427 1 482 483 484 485 +428 1 524 525 526 527 +429 1 525 526 527 528 +430 1 526 527 528 523 +431 1 716 715 720 719 +432 1 720 715 716 717 +433 1 722 721 726 725 +434 1 726 721 722 723 +435 1 530 531 532 533 +436 1 536 535 540 539 +437 1 540 535 536 537 +438 1 535 536 537 538 +439 1 529 530 531 532 +440 1 1921 1922 1923 1924 +441 1 1929 1930 1931 1932 +442 1 1928 1929 1930 1931 +443 1 1930 1931 1932 1927 +444 1 1927 1928 1929 1930 +445 1 1928 1927 1932 1931 +446 1 1932 1927 1928 1929 +447 1 2125 2126 2127 2128 +448 1 542 541 546 545 +449 1 546 541 542 543 +450 1 541 542 543 544 +451 1 542 543 544 545 +452 1 543 544 545 546 +453 1 544 545 546 541 +454 1 2126 2127 2128 2129 +455 1 1936 1937 1938 1933 +456 1 2128 2129 2130 2125 +457 1 2127 2128 2129 2130 +458 1 1939 1940 1941 1942 +459 1 1940 1941 1942 1943 +460 1 2126 2125 2130 2129 +461 1 2130 2125 2126 2127 +462 1 734 733 738 737 +463 1 738 733 734 735 +464 1 355 356 357 358 +465 1 550 551 552 547 +466 1 1942 1943 1944 1939 +467 1 1941 1942 1943 1944 +468 1 1946 1945 1950 1949 +469 1 1950 1945 1946 1947 +470 1 548 547 552 551 +471 1 552 547 548 549 +472 1 547 548 549 550 +473 1 548 549 550 551 +474 1 549 550 551 552 +475 1 554 553 558 557 +476 1 558 553 554 555 +477 1 556 557 558 553 +478 1 1940 1939 1944 1943 +479 1 1944 1939 1940 1941 +480 1 1945 1946 1947 1948 +481 1 1948 1949 1950 1945 +482 1 2132 2133 2134 2135 +483 1 1947 1948 1949 1950 +484 1 553 554 555 556 +485 1 554 555 556 557 +486 1 555 556 557 558 +487 1 560 559 564 563 +488 1 564 559 560 561 +489 1 559 560 561 562 +490 1 560 561 562 563 +491 1 561 562 563 564 +492 1 562 563 564 559 +493 1 1946 1947 1948 1949 +494 1 128 129 130 131 +495 1 885 886 887 888 +496 1 751 752 753 754 +497 1 2145 2146 2147 2148 +498 1 376 377 378 373 +499 1 566 565 570 569 +500 1 570 565 566 567 +501 1 565 566 567 568 +502 1 566 567 568 569 +503 1 567 568 569 570 +504 1 568 569 570 565 +505 1 1960 1961 1962 1957 +506 1 1965 1966 1967 1968 +507 1 1964 1965 1966 1967 +508 1 572 571 576 575 +509 1 576 571 572 573 +510 1 571 572 573 574 +511 1 531 532 533 534 +512 1 532 533 534 529 +513 1 530 529 534 533 +514 1 534 529 530 531 +515 1 572 573 574 575 +516 1 573 574 575 576 +517 1 574 575 576 571 +518 1 619 620 621 622 +519 1 1963 1964 1965 1966 +520 1 1922 1921 1926 1925 +521 1 1926 1921 1922 1923 +522 1 878 879 880 881 +523 1 721 722 723 724 +524 1 578 579 580 581 +525 1 634 635 636 631 +526 1 631 632 633 634 +527 1 632 631 636 635 +528 1 636 631 632 633 +529 1 628 629 630 625 +530 1 627 628 629 630 +531 1 579 580 581 582 +532 1 819 820 821 822 +533 1 820 821 822 817 +534 1 626 625 630 629 +535 1 630 625 626 627 +536 1 580 581 582 577 +537 1 818 819 820 821 +538 1 817 818 819 820 +539 1 818 817 822 821 +540 1 822 817 818 819 +541 1 640 641 642 637 +542 1 633 634 635 636 +543 1 632 633 634 635 +544 1 639 640 641 642 +545 1 638 639 640 641 +546 1 637 638 639 640 +547 1 638 637 642 641 +548 1 642 637 638 639 +549 1 832 833 834 829 +550 1 422 421 426 425 +551 1 426 421 422 423 +552 1 2319 2320 2321 2322 +553 1 831 832 833 834 +554 1 2140 2141 2142 2137 +555 1 861 862 863 864 +556 1 652 653 654 649 +557 1 645 646 647 648 +558 1 644 645 646 647 +559 1 643 644 645 646 +560 1 644 643 648 647 +561 1 648 643 644 645 +562 1 836 835 840 839 +563 1 840 835 836 837 +564 1 614 615 616 617 +565 1 692 691 696 695 +566 1 696 691 692 693 +567 1 577 578 579 580 +568 1 656 655 660 659 +569 1 660 655 656 657 +570 1 655 656 657 658 +571 1 650 649 654 653 +572 1 654 649 650 651 +573 1 802 803 804 799 +574 1 657 658 659 660 +575 1 656 657 658 659 +576 1 651 652 653 654 +577 1 649 650 651 652 +578 1 658 659 660 655 +579 1 844 845 846 841 +580 1 1580 1581 1582 1583 +581 1 1581 1582 1583 1584 +582 1 854 853 858 857 +583 1 858 853 854 855 +584 1 664 665 666 661 +585 1 663 664 665 666 +586 1 662 663 664 665 +587 1 661 662 663 664 +588 1 662 661 666 665 +589 1 666 661 662 663 +590 1 615 616 617 618 +591 1 86 85 90 89 +592 1 90 85 86 87 +593 1 807 808 809 810 +594 1 765 766 767 768 +595 1 626 627 628 629 +596 1 625 626 627 628 +597 1 669 670 671 672 +598 1 668 667 672 671 +599 1 672 667 668 669 +600 1 670 671 672 667 +601 1 668 669 670 671 +602 1 667 668 669 670 +603 1 622 623 624 619 +604 1 620 619 624 623 +605 1 624 619 620 621 +606 1 680 679 684 683 +607 1 684 679 680 681 +608 1 919 920 921 922 +609 1 920 919 924 923 +610 1 924 919 920 921 +611 1 682 683 684 679 +612 1 681 682 683 684 +613 1 680 681 682 683 +614 1 676 677 678 673 +615 1 674 673 678 677 +616 1 678 673 674 675 +617 1 872 871 876 875 +618 1 876 871 872 873 +619 1 871 872 873 874 +620 1 673 674 675 676 +621 1 728 727 732 731 +622 1 732 727 728 729 +623 1 920 921 922 923 +624 1 921 922 923 924 +625 1 867 868 869 870 +626 1 674 675 676 677 +627 1 872 873 874 875 +628 1 427 428 429 430 +629 1 679 680 681 682 +630 1 877 878 879 880 +631 1 688 689 690 685 +632 1 687 688 689 690 +633 1 686 687 688 689 +634 1 685 686 687 688 +635 1 686 685 690 689 +636 1 690 685 686 687 +637 1 428 429 430 431 +638 1 928 929 930 925 +639 1 736 737 738 733 +640 1 735 736 737 738 +641 1 883 884 885 886 +642 1 884 885 886 887 +643 1 699 700 701 702 +644 1 698 699 700 701 +645 1 697 698 699 700 +646 1 694 695 696 691 +647 1 693 694 695 696 +648 1 692 693 694 695 +649 1 691 692 693 694 +650 1 698 697 702 701 +651 1 702 697 698 699 +652 1 742 743 744 739 +653 1 700 701 702 697 +654 1 741 742 743 744 +655 1 746 745 750 749 +656 1 750 745 746 747 +657 1 884 883 888 887 +658 1 888 883 884 885 +659 1 897 898 899 900 +660 1 898 899 900 895 +661 1 896 897 898 899 +662 1 650 651 652 653 +663 1 706 707 708 703 +664 1 705 706 707 708 +665 1 704 705 706 707 +666 1 703 704 705 706 +667 1 704 703 708 707 +668 1 708 703 704 705 +669 1 896 895 900 899 +670 1 900 895 896 897 +671 1 895 896 897 898 +672 1 748 749 750 745 +673 1 944 945 946 947 +674 1 943 944 945 946 +675 1 747 748 749 750 +676 1 710 709 714 713 +677 1 714 709 710 711 +678 1 712 713 714 709 +679 1 711 712 713 714 +680 1 710 711 712 713 +681 1 709 710 711 712 +682 1 903 904 905 906 +683 1 25 26 27 28 +684 1 718 719 720 715 +685 1 675 676 677 678 +686 1 717 718 719 720 +687 1 716 717 718 719 +688 1 715 716 717 718 +689 1 868 869 870 865 +690 1 1959 1960 1961 1962 +691 1 44 45 46 47 +692 1 2305 2306 2307 2308 +693 1 2120 2121 2122 2123 +694 1 2306 2307 2308 2309 +695 1 915 916 917 918 +696 1 730 731 732 727 +697 1 729 730 731 732 +698 1 728 729 730 731 +699 1 916 917 918 913 +700 1 2120 2119 2124 2123 +701 1 2124 2119 2120 2121 +702 1 2119 2120 2121 2122 +703 1 922 923 924 919 +704 1 2114 2115 2116 2117 +705 1 2318 2319 2320 2321 +706 1 217 218 219 220 +707 1 734 735 736 737 +708 1 733 734 735 736 +709 1 926 925 930 929 +710 1 930 925 926 927 +711 1 925 926 927 928 +712 1 926 927 928 929 +713 1 2332 2333 2334 2329 +714 1 853 854 855 856 +715 1 2131 2132 2133 2134 +716 1 124 125 126 121 +717 1 621 622 623 624 +718 1 2325 2326 2327 2328 +719 1 740 739 744 743 +720 1 744 739 740 741 +721 1 2132 2131 2136 2135 +722 1 2136 2131 2132 2133 +723 1 2326 2327 2328 2323 +724 1 745 746 747 748 +725 1 740 741 742 743 +726 1 739 740 741 742 +727 1 932 931 936 935 +728 1 936 931 932 933 +729 1 931 932 933 934 +730 1 2134 2135 2136 2131 +731 1 2133 2134 2135 2136 +732 1 2331 2332 2333 2334 +733 1 932 933 934 935 +734 1 940 941 942 937 +735 1 2330 2329 2334 2333 +736 1 2334 2329 2330 2331 +737 1 2144 2143 2148 2147 +738 1 2148 2143 2144 2145 +739 1 830 829 834 833 +740 1 834 829 830 831 +741 1 746 747 748 749 +742 1 2146 2147 2148 2143 +743 1 836 837 838 839 +744 1 754 755 756 751 +745 1 753 754 755 756 +746 1 752 753 754 755 +747 1 944 943 948 947 +748 1 948 943 944 945 +749 1 946 947 948 943 +750 1 16 17 18 13 +751 1 752 751 756 755 +752 1 756 751 752 753 +753 1 760 761 762 757 +754 1 759 760 761 762 +755 1 758 759 760 761 +756 1 757 758 759 760 +757 1 758 757 762 761 +758 1 762 757 758 759 +759 1 2115 2116 2117 2118 +760 1 2157 2158 2159 2160 +761 1 914 913 918 917 +762 1 918 913 914 915 +763 1 723 724 725 726 +764 1 2158 2159 2160 2155 +765 1 764 765 766 767 +766 1 2116 2117 2118 2113 +767 1 26 27 28 29 +768 1 913 914 915 916 +769 1 766 767 768 763 +770 1 724 725 726 721 +771 1 2156 2155 2160 2159 +772 1 2160 2155 2156 2157 +773 1 1761 1762 1763 1764 +774 1 1748 1749 1750 1751 +775 1 2307 2308 2309 2310 +776 1 223 224 225 226 +777 1 232 233 234 229 +778 1 385 386 387 388 +779 1 220 221 222 217 +780 1 31 32 33 34 +781 1 1924 1925 1926 1921 +782 1 891 892 893 894 +783 1 862 863 864 859 +784 1 904 905 906 901 +785 1 945 946 947 948 +786 1 843 844 845 846 +787 1 2312 2311 2316 2315 +788 1 2316 2311 2312 2313 +789 1 866 865 870 869 +790 1 870 865 866 867 +791 1 824 825 826 827 +792 1 825 826 827 828 +793 1 961 962 963 964 +794 1 969 970 971 972 +795 1 970 971 972 967 +796 1 1011 1012 1013 1014 +797 1 1016 1017 1018 1019 +798 1 1018 1019 1020 1015 +799 1 962 963 964 965 +800 1 1012 1013 1014 1009 +801 1 1017 1018 1019 1020 +802 1 963 964 965 966 +803 1 823 824 825 826 +804 1 808 809 810 805 +805 1 824 823 828 827 +806 1 828 823 824 825 +807 1 1015 1016 1017 1018 +808 1 826 827 828 823 +809 1 974 973 978 977 +810 1 978 973 974 975 +811 1 976 977 978 973 +812 1 1022 1021 1026 1025 +813 1 1026 1021 1022 1023 +814 1 1021 1022 1023 1024 +815 1 1022 1023 1024 1025 +816 1 1023 1024 1025 1026 +817 1 1024 1025 1026 1021 +818 1 1580 1579 1584 1583 +819 1 1584 1579 1580 1581 +820 1 188 187 192 191 +821 1 192 187 188 189 +822 1 975 976 977 978 +823 1 1028 1027 1032 1031 +824 1 1032 1027 1028 1029 +825 1 1027 1028 1029 1030 +826 1 1028 1029 1030 1031 +827 1 1029 1030 1031 1032 +828 1 1030 1031 1032 1027 +829 1 1036 1037 1038 1033 +830 1 985 986 987 988 +831 1 1034 1033 1038 1037 +832 1 1038 1033 1034 1035 +833 1 988 989 990 985 +834 1 986 985 990 989 +835 1 990 985 986 987 +836 1 789 790 791 792 +837 1 1376 1375 1380 1379 +838 1 1380 1375 1376 1377 +839 1 788 789 790 791 +840 1 837 838 839 840 +841 1 32 31 36 35 +842 1 36 31 32 33 +843 1 787 788 789 790 +844 1 2887 2888 2889 2890 +845 1 986 987 988 989 +846 1 848 849 850 851 +847 1 842 841 846 845 +848 1 846 841 842 843 +849 1 799 800 801 802 +850 1 841 842 843 844 +851 1 842 843 844 845 +852 1 987 988 989 990 +853 1 1033 1034 1035 1036 +854 1 1040 1039 1044 1043 +855 1 1044 1039 1040 1041 +856 1 1039 1040 1041 1042 +857 1 1040 1041 1042 1043 +858 1 1041 1042 1043 1044 +859 1 1042 1043 1044 1039 +860 1 800 801 802 803 +861 1 800 799 804 803 +862 1 804 799 800 801 +863 1 1168 1169 1170 1165 +864 1 847 848 849 850 +865 1 801 802 803 804 +866 1 849 850 851 852 +867 1 2888 2889 2890 2891 +868 1 848 847 852 851 +869 1 852 847 848 849 +870 1 1359 1360 1361 1362 +871 1 854 855 856 857 +872 1 998 999 1000 1001 +873 1 999 1000 1001 1002 +874 1 1000 1001 1002 997 +875 1 1046 1045 1050 1049 +876 1 1050 1045 1046 1047 +877 1 1045 1046 1047 1048 +878 1 1046 1047 1048 1049 +879 1 997 998 999 1000 +880 1 998 997 1002 1001 +881 1 1002 997 998 999 +882 1 1047 1048 1049 1050 +883 1 994 995 996 991 +884 1 934 935 936 931 +885 1 855 856 857 858 +886 1 1532 1533 1534 1535 +887 1 1534 1535 1536 1531 +888 1 860 859 864 863 +889 1 864 859 860 861 +890 1 859 860 861 862 +891 1 860 861 862 863 +892 1 1009 1010 1011 1012 +893 1 1052 1051 1056 1055 +894 1 1056 1051 1052 1053 +895 1 812 813 814 815 +896 1 866 867 868 869 +897 1 1346 1345 1350 1349 +898 1 1350 1345 1346 1347 +899 1 874 875 876 871 +900 1 1059 1060 1061 1062 +901 1 1060 1061 1062 1057 +902 1 1064 1063 1068 1067 +903 1 1068 1063 1064 1065 +904 1 1063 1064 1065 1066 +905 1 1064 1065 1066 1067 +906 1 1065 1066 1067 1068 +907 1 1066 1067 1068 1063 +908 1 1058 1059 1060 1061 +909 1 1057 1058 1059 1060 +910 1 865 866 867 868 +911 1 1058 1057 1062 1061 +912 1 1062 1057 1058 1059 +913 1 1070 1069 1074 1073 +914 1 1074 1069 1070 1071 +915 1 1069 1070 1071 1072 +916 1 1070 1071 1072 1073 +917 1 1071 1072 1073 1074 +918 1 1072 1073 1074 1069 +919 1 1076 1075 1080 1079 +920 1 1080 1075 1076 1077 +921 1 1078 1079 1080 1075 +922 1 1184 1185 1186 1187 +923 1 880 881 882 877 +924 1 873 874 875 876 +925 1 2882 2881 2886 2885 +926 1 2886 2881 2882 2883 +927 1 1035 1036 1037 1038 +928 1 1075 1076 1077 1078 +929 1 1076 1077 1078 1079 +930 1 1077 1078 1079 1080 +931 1 1082 1083 1084 1085 +932 1 1083 1084 1085 1086 +933 1 1084 1085 1086 1081 +934 1 892 893 894 889 +935 1 1082 1081 1086 1085 +936 1 1086 1081 1082 1083 +937 1 1081 1082 1083 1084 +938 1 886 887 888 883 +939 1 1196 1195 1200 1199 +940 1 1200 1195 1196 1197 +941 1 1491 1492 1493 1494 +942 1 189 190 191 192 +943 1 850 851 852 847 +944 1 1034 1035 1036 1037 +945 1 890 889 894 893 +946 1 894 889 890 891 +947 1 1088 1087 1092 1091 +948 1 1092 1087 1088 1089 +949 1 1087 1088 1089 1090 +950 1 1088 1089 1090 1091 +951 1 1089 1090 1091 1092 +952 1 1090 1091 1092 1087 +953 1 902 901 906 905 +954 1 906 901 902 903 +955 1 1048 1049 1050 1045 +956 1 902 903 904 905 +957 1 1094 1095 1096 1097 +958 1 1095 1096 1097 1098 +959 1 1096 1097 1098 1093 +960 1 908 909 910 911 +961 1 901 902 903 904 +962 1 2900 2899 2904 2903 +963 1 2904 2899 2900 2901 +964 1 907 908 909 910 +965 1 909 910 911 912 +966 1 910 911 912 907 +967 1 1387 1388 1389 1390 +968 1 908 907 912 911 +969 1 912 907 908 909 +970 1 1102 1103 1104 1099 +971 1 1101 1102 1103 1104 +972 1 1106 1105 1110 1109 +973 1 1110 1105 1106 1107 +974 1 1112 1111 1116 1115 +975 1 1116 1111 1112 1113 +976 1 1111 1112 1113 1114 +977 1 1112 1113 1114 1115 +978 1 1113 1114 1115 1116 +979 1 1114 1115 1116 1111 +980 1 2308 2309 2310 2305 +981 1 2505 2506 2507 2508 +982 1 2506 2507 2508 2503 +983 1 2306 2305 2310 2309 +984 1 2310 2305 2306 2307 +985 1 1105 1106 1107 1108 +986 1 2722 2723 2724 2719 +987 1 1118 1117 1122 1121 +988 1 1122 1117 1118 1119 +989 1 1119 1120 1121 1122 +990 1 1120 1121 1122 1117 +991 1 1125 1126 1127 1128 +992 1 1126 1127 1128 1123 +993 1 2512 2513 2514 2509 +994 1 2511 2512 2513 2514 +995 1 2510 2511 2512 2513 +996 1 974 975 976 977 +997 1 938 939 940 941 +998 1 2521 2522 2523 2524 +999 1 938 937 942 941 +1000 1 942 937 938 939 +1001 1 1124 1123 1128 1127 +1002 1 1128 1123 1124 1125 +1003 1 1123 1124 1125 1126 +1004 1 1131 1132 1133 1134 +1005 1 937 938 939 940 +1006 1 1132 1133 1134 1129 +1007 1 1130 1129 1134 1133 +1008 1 1134 1129 1130 1131 +1009 1 927 928 929 930 +1010 1 1130 1131 1132 1133 +1011 1 1129 1130 1131 1132 +1012 1 1136 1135 1140 1139 +1013 1 1140 1135 1136 1137 +1014 1 1135 1136 1137 1138 +1015 1 1136 1137 1138 1139 +1016 1 1137 1138 1139 1140 +1017 1 1138 1139 1140 1135 +1018 1 939 940 941 942 +1019 1 2540 2541 2542 2543 +1020 1 952 953 954 949 +1021 1 951 952 953 954 +1022 1 950 949 954 953 +1023 1 954 949 950 951 +1024 1 949 950 951 952 +1025 1 950 951 952 953 +1026 1 1142 1141 1146 1145 +1027 1 1146 1141 1142 1143 +1028 1 1141 1142 1143 1144 +1029 1 1142 1143 1144 1145 +1030 1 1143 1144 1145 1146 +1031 1 1144 1145 1146 1141 +1032 1 2 3 4 5 +1033 1 2541 2542 2543 2544 +1034 1 813 814 815 816 +1035 1 1148 1149 1150 1151 +1036 1 1108 1109 1110 1105 +1037 1 957 958 959 960 +1038 1 956 957 958 959 +1039 1 958 959 960 955 +1040 1 956 955 960 959 +1041 1 960 955 956 957 +1042 1 955 956 957 958 +1043 1 1106 1107 1108 1109 +1044 1 1107 1108 1109 1110 +1045 1 1149 1150 1151 1152 +1046 1 1150 1151 1152 1147 +1047 1 2539 2540 2541 2542 +1048 1 878 877 882 881 +1049 1 882 877 878 879 +1050 1 2348 2349 2350 2351 +1051 1 1148 1147 1152 1151 +1052 1 1152 1147 1148 1149 +1053 1 1147 1148 1149 1150 +1054 1 2349 2350 2351 2352 +1055 1 1016 1015 1020 1019 +1056 1 1020 1015 1016 1017 +1057 1 1203 1204 1205 1206 +1058 1 1204 1205 1206 1201 +1059 1 1208 1207 1212 1211 +1060 1 1212 1207 1208 1209 +1061 1 1207 1208 1209 1210 +1062 1 1208 1209 1210 1211 +1063 1 1209 1210 1211 1212 +1064 1 1210 1211 1212 1207 +1065 1 1201 1202 1203 1204 +1066 1 1202 1203 1204 1205 +1067 1 1202 1201 1206 1205 +1068 1 1206 1201 1202 1203 +1069 1 40 41 42 37 +1070 1 1214 1213 1218 1217 +1071 1 1218 1213 1214 1215 +1072 1 1213 1214 1215 1216 +1073 1 1172 1173 1174 1175 +1074 1 1406 1405 1410 1409 +1075 1 1410 1405 1406 1407 +1076 1 1171 1172 1173 1174 +1077 1 1214 1215 1216 1217 +1078 1 1177 1178 1179 1180 +1079 1 1172 1171 1176 1175 +1080 1 1176 1171 1172 1173 +1081 1 1173 1174 1175 1176 +1082 1 1174 1175 1176 1171 +1083 1 1178 1177 1182 1181 +1084 1 1182 1177 1178 1179 +1085 1 1220 1219 1224 1223 +1086 1 1224 1219 1220 1221 +1087 1 1219 1220 1221 1222 +1088 1 1220 1221 1222 1223 +1089 1 1221 1222 1223 1224 +1090 1 1222 1223 1224 1219 +1091 1 1412 1411 1416 1415 +1092 1 1416 1411 1412 1413 +1093 1 1228 1229 1230 1225 +1094 1 1226 1225 1230 1229 +1095 1 1230 1225 1226 1227 +1096 1 1186 1187 1188 1183 +1097 1 58 59 60 55 +1098 1 1227 1228 1229 1230 +1099 1 1232 1231 1236 1235 +1100 1 1236 1231 1232 1233 +1101 1 1231 1232 1233 1234 +1102 1 1232 1233 1234 1235 +1103 1 1233 1234 1235 1236 +1104 1 1234 1235 1236 1231 +1105 1 1180 1181 1182 1177 +1106 1 1179 1180 1181 1182 +1107 1 1178 1179 1180 1181 +1108 1 1185 1186 1187 1188 +1109 1 1238 1237 1242 1241 +1110 1 1242 1237 1238 1239 +1111 1 1237 1238 1239 1240 +1112 1 1238 1239 1240 1241 +1113 1 1239 1240 1241 1242 +1114 1 1240 1241 1242 1237 +1115 1 1052 1053 1054 1055 +1116 1 1010 1011 1012 1013 +1117 1 1010 1009 1014 1013 +1118 1 1014 1009 1010 1011 +1119 1 1051 1052 1053 1054 +1120 1 1245 1246 1247 1248 +1121 1 1246 1247 1248 1243 +1122 1 835 836 837 838 +1123 1 992 991 996 995 +1124 1 996 991 992 993 +1125 1 1196 1197 1198 1199 +1126 1 1195 1196 1197 1198 +1127 1 1244 1243 1248 1247 +1128 1 1248 1243 1244 1245 +1129 1 1243 1244 1245 1246 +1130 1 1244 1245 1246 1247 +1131 1 1251 1252 1253 1254 +1132 1 1256 1255 1260 1259 +1133 1 1260 1255 1256 1257 +1134 1 1255 1256 1257 1258 +1135 1 1256 1257 1258 1259 +1136 1 1257 1258 1259 1260 +1137 1 1258 1259 1260 1255 +1138 1 1252 1253 1254 1249 +1139 1 1250 1251 1252 1253 +1140 1 1216 1217 1218 1213 +1141 1 1215 1216 1217 1218 +1142 1 1262 1261 1266 1265 +1143 1 1266 1261 1262 1263 +1144 1 1261 1262 1263 1264 +1145 1 1262 1263 1264 1265 +1146 1 1263 1264 1265 1266 +1147 1 1264 1265 1266 1261 +1148 1 1405 1406 1407 1408 +1149 1 1268 1267 1272 1271 +1150 1 1272 1267 1268 1269 +1151 1 1267 1268 1269 1270 +1152 1 1268 1269 1270 1271 +1153 1 1269 1270 1271 1272 +1154 1 1270 1271 1272 1267 +1155 1 1274 1273 1278 1277 +1156 1 1278 1273 1274 1275 +1157 1 1460 1461 1462 1463 +1158 1 1459 1460 1461 1462 +1159 1 1226 1227 1228 1229 +1160 1 1276 1277 1278 1273 +1161 1 1225 1226 1227 1228 +1162 1 1275 1276 1277 1278 +1163 1 1273 1274 1275 1276 +1164 1 1274 1275 1276 1277 +1165 1 1280 1279 1284 1283 +1166 1 1284 1279 1280 1281 +1167 1 1279 1280 1281 1282 +1168 1 1280 1281 1282 1283 +1169 1 1281 1282 1283 1284 +1170 1 1282 1283 1284 1279 +1171 1 1093 1094 1095 1096 +1172 1 1094 1093 1098 1097 +1173 1 1098 1093 1094 1095 +1174 1 1286 1285 1290 1289 +1175 1 1290 1285 1286 1287 +1176 1 1285 1286 1287 1288 +1177 1 1286 1287 1288 1289 +1178 1 1287 1288 1289 1290 +1179 1 1288 1289 1290 1285 +1180 1 1293 1294 1295 1296 +1181 1 1292 1293 1294 1295 +1182 1 1053 1054 1055 1056 +1183 1 1054 1055 1056 1051 +1184 1 1100 1099 1104 1103 +1185 1 1104 1099 1100 1101 +1186 1 1099 1100 1101 1102 +1187 1 1100 1101 1102 1103 +1188 1 1249 1250 1251 1252 +1189 1 1250 1249 1254 1253 +1190 1 1254 1249 1250 1251 +1191 1 1292 1291 1296 1295 +1192 1 1296 1291 1292 1293 +1193 1 1291 1292 1293 1294 +1194 1 1294 1295 1296 1291 +1195 1 1297 1298 1299 1300 +1196 1 1304 1303 1308 1307 +1197 1 1308 1303 1304 1305 +1198 1 1303 1304 1305 1306 +1199 1 1304 1305 1306 1307 +1200 1 1305 1306 1307 1308 +1201 1 1306 1307 1308 1303 +1202 1 1497 1498 1499 1500 +1203 1 1496 1497 1498 1499 +1204 1 1117 1118 1119 1120 +1205 1 1124 1125 1126 1127 +1206 1 2702 2703 2704 2705 +1207 1 1118 1119 1120 1121 +1208 1 1310 1309 1314 1313 +1209 1 1314 1309 1310 1311 +1210 1 1309 1310 1311 1312 +1211 1 1310 1311 1312 1313 +1212 1 1311 1312 1313 1314 +1213 1 1312 1313 1314 1309 +1214 1 2703 2704 2705 2706 +1215 1 830 831 832 833 +1216 1 1504 1505 1506 1501 +1217 1 2704 2705 2706 2701 +1218 1 2896 2897 2898 2893 +1219 1 1503 1504 1505 1506 +1220 1 2895 2896 2897 2898 +1221 1 2710 2711 2712 2707 +1222 1 2708 2707 2712 2711 +1223 1 2712 2707 2708 2709 +1224 1 2708 2709 2710 2711 +1225 1 1316 1315 1320 1319 +1226 1 1320 1315 1316 1317 +1227 1 1315 1316 1317 1318 +1228 1 1316 1317 1318 1319 +1229 1 1317 1318 1319 1320 +1230 1 1318 1319 1320 1315 +1231 1 1322 1321 1326 1325 +1232 1 1326 1321 1322 1323 +1233 1 2707 2708 2709 2710 +1234 1 1323 1324 1325 1326 +1235 1 1324 1325 1326 1321 +1236 1 2709 2710 2711 2712 +1237 1 1510 1511 1512 1507 +1238 1 1509 1510 1511 1512 +1239 1 829 830 831 832 +1240 1 1321 1322 1323 1324 +1241 1 1322 1323 1324 1325 +1242 1 57 58 59 60 +1243 1 2716 2717 2718 2713 +1244 1 1328 1327 1332 1331 +1245 1 1332 1327 1328 1329 +1246 1 1327 1328 1329 1330 +1247 1 1328 1329 1330 1331 +1248 1 1329 1330 1331 1332 +1249 1 1330 1331 1332 1327 +1250 1 2715 2716 2717 2718 +1251 1 2714 2715 2716 2717 +1252 1 1522 1523 1524 1519 +1253 1 1334 1333 1338 1337 +1254 1 1338 1333 1334 1335 +1255 1 1333 1334 1335 1336 +1256 1 1334 1335 1336 1337 +1257 1 1335 1336 1337 1338 +1258 1 1336 1337 1338 1333 +1259 1 2725 2726 2727 2728 +1260 1 2726 2727 2728 2729 +1261 1 1340 1339 1344 1343 +1262 1 1344 1339 1340 1341 +1263 1 1339 1340 1341 1342 +1264 1 2727 2728 2729 2730 +1265 1 2917 2918 2919 2920 +1266 1 2918 2917 2922 2921 +1267 1 2922 2917 2918 2919 +1268 1 2881 2882 2883 2884 +1269 1 1298 1299 1300 1301 +1270 1 1299 1300 1301 1302 +1271 1 1532 1531 1536 1535 +1272 1 1536 1531 1532 1533 +1273 1 1298 1297 1302 1301 +1274 1 1302 1297 1298 1299 +1275 1 1300 1301 1302 1297 +1276 1 1340 1341 1342 1343 +1277 1 1341 1342 1343 1344 +1278 1 1342 1343 1344 1339 +1279 1 3 4 5 6 +1280 1 1353 1354 1355 1356 +1281 1 188 189 190 191 +1282 1 52 53 54 49 +1283 1 51 52 53 54 +1284 1 2 1 6 5 +1285 1 6 1 2 3 +1286 1 56 57 58 59 +1287 1 1400 1399 1404 1403 +1288 1 1404 1399 1400 1401 +1289 1 1396 1397 1398 1393 +1290 1 1395 1396 1397 1398 +1291 1 1354 1355 1356 1351 +1292 1 4 5 6 1 +1293 1 1394 1395 1396 1397 +1294 1 1394 1393 1398 1397 +1295 1 1398 1393 1394 1395 +1296 1 1539 1540 1541 1542 +1297 1 1 2 3 4 +1298 1 1531 1532 1533 1534 +1299 1 1402 1403 1404 1399 +1300 1 1393 1394 1395 1396 +1301 1 190 191 192 187 +1302 1 1400 1401 1402 1403 +1303 1 1399 1400 1401 1402 +1304 1 1401 1402 1403 1404 +1305 1 1408 1409 1410 1405 +1306 1 1407 1408 1409 1410 +1307 1 104 103 108 107 +1308 1 108 103 104 105 +1309 1 140 141 142 143 +1310 1 1360 1361 1362 1357 +1311 1 1364 1363 1368 1367 +1312 1 1368 1363 1364 1365 +1313 1 69 70 71 72 +1314 1 67 68 69 70 +1315 1 1365 1366 1367 1368 +1316 1 1418 1419 1420 1421 +1317 1 1417 1418 1419 1420 +1318 1 1413 1414 1415 1416 +1319 1 1412 1413 1414 1415 +1320 1 1411 1412 1413 1414 +1321 1 1366 1367 1368 1363 +1322 1 70 71 72 67 +1323 1 68 67 72 71 +1324 1 72 67 68 69 +1325 1 68 69 70 71 +1326 1 1371 1372 1373 1374 +1327 1 34 35 36 31 +1328 1 116 115 120 119 +1329 1 120 115 116 117 +1330 1 1372 1373 1374 1369 +1331 1 1426 1427 1428 1423 +1332 1 1425 1426 1427 1428 +1333 1 1424 1425 1426 1427 +1334 1 1423 1424 1425 1426 +1335 1 1418 1417 1422 1421 +1336 1 1422 1417 1418 1419 +1337 1 1424 1423 1428 1427 +1338 1 1428 1423 1424 1425 +1339 1 795 796 797 798 +1340 1 87 88 89 90 +1341 1 1378 1379 1380 1375 +1342 1 1432 1433 1434 1429 +1343 1 1429 1430 1431 1432 +1344 1 1430 1429 1434 1433 +1345 1 1434 1429 1430 1431 +1346 1 88 89 90 85 +1347 1 1377 1378 1379 1380 +1348 1 1431 1432 1433 1434 +1349 1 1430 1431 1432 1433 +1350 1 44 43 48 47 +1351 1 48 43 44 45 +1352 1 134 133 138 137 +1353 1 138 133 134 135 +1354 1 1388 1389 1390 1391 +1355 1 133 134 135 136 +1356 1 1438 1439 1440 1435 +1357 1 1435 1436 1437 1438 +1358 1 1436 1435 1440 1439 +1359 1 1440 1435 1436 1437 +1360 1 1390 1391 1392 1387 +1361 1 1389 1390 1391 1392 +1362 1 889 890 891 892 +1363 1 106 107 108 103 +1364 1 98 99 100 101 +1365 1 1447 1448 1449 1450 +1366 1 1448 1447 1452 1451 +1367 1 1452 1447 1448 1449 +1368 1 1444 1445 1446 1441 +1369 1 1443 1444 1445 1446 +1370 1 99 100 101 102 +1371 1 105 106 107 108 +1372 1 1442 1443 1444 1445 +1373 1 1442 1441 1446 1445 +1374 1 1446 1441 1442 1443 +1375 1 100 101 102 97 +1376 1 1441 1442 1443 1444 +1377 1 781 782 783 784 +1378 1 109 110 111 112 +1379 1 110 111 112 113 +1380 1 1406 1407 1408 1409 +1381 1 1449 1450 1451 1452 +1382 1 1448 1449 1450 1451 +1383 1 1450 1451 1452 1447 +1384 1 1456 1457 1458 1453 +1385 1 1455 1456 1457 1458 +1386 1 1454 1455 1456 1457 +1387 1 1453 1454 1455 1456 +1388 1 1454 1453 1458 1457 +1389 1 1458 1453 1454 1455 +1390 1 112 113 114 109 +1391 1 111 112 113 114 +1392 1 1462 1463 1464 1459 +1393 1 1414 1415 1416 1411 +1394 1 117 118 119 120 +1395 1 1461 1462 1463 1464 +1396 1 1460 1459 1464 1463 +1397 1 1464 1459 1460 1461 +1398 1 115 116 117 118 +1399 1 116 117 118 119 +1400 1 856 857 858 853 +1401 1 1419 1420 1421 1422 +1402 1 1420 1421 1422 1417 +1403 1 1468 1469 1470 1465 +1404 1 1467 1468 1469 1470 +1405 1 1474 1475 1476 1471 +1406 1 1473 1474 1475 1476 +1407 1 1472 1473 1474 1475 +1408 1 1471 1472 1473 1474 +1409 1 1472 1471 1476 1475 +1410 1 1476 1471 1472 1473 +1411 1 1466 1467 1468 1469 +1412 1 1465 1466 1467 1468 +1413 1 1466 1465 1470 1469 +1414 1 1470 1465 1466 1467 +1415 1 134 135 136 137 +1416 1 135 136 137 138 +1417 1 1480 1481 1482 1477 +1418 1 1479 1480 1481 1482 +1419 1 1478 1479 1480 1481 +1420 1 1477 1478 1479 1480 +1421 1 1478 1477 1482 1481 +1422 1 1482 1477 1478 1479 +1423 1 136 137 138 133 +1424 1 1437 1438 1439 1440 +1425 1 1436 1437 1438 1439 +1426 1 1484 1483 1488 1487 +1427 1 1488 1483 1484 1485 +1428 1 1483 1484 1485 1486 +1429 1 1486 1487 1488 1483 +1430 1 1485 1486 1487 1488 +1431 1 1484 1485 1486 1487 +1432 1 141 142 143 144 +1433 1 142 143 144 139 +1434 1 1490 1489 1494 1493 +1435 1 1494 1489 1490 1491 +1436 1 154 155 156 151 +1437 1 1543 1544 1545 1546 +1438 1 890 891 892 893 +1439 1 1495 1496 1497 1498 +1440 1 1496 1495 1500 1499 +1441 1 1500 1495 1496 1497 +1442 1 1492 1493 1494 1489 +1443 1 1498 1499 1500 1495 +1444 1 1544 1545 1546 1547 +1445 1 1551 1552 1553 1554 +1446 1 1552 1553 1554 1549 +1447 1 160 161 162 157 +1448 1 159 160 161 162 +1449 1 158 159 160 161 +1450 1 1550 1551 1552 1553 +1451 1 1550 1549 1554 1553 +1452 1 1554 1549 1550 1551 +1453 1 1502 1501 1506 1505 +1454 1 1506 1501 1502 1503 +1455 1 1502 1503 1504 1505 +1456 1 1501 1502 1503 1504 +1457 1 158 157 162 161 +1458 1 162 157 158 159 +1459 1 157 158 159 160 +1460 1 1549 1550 1551 1552 +1461 1 1556 1557 1558 1559 +1462 1 2901 2902 2903 2904 +1463 1 933 934 935 936 +1464 1 2906 2905 2910 2909 +1465 1 2910 2905 2906 2907 +1466 1 118 119 120 115 +1467 1 1513 1514 1515 1516 +1468 1 1514 1513 1518 1517 +1469 1 1518 1513 1514 1515 +1470 1 1508 1509 1510 1511 +1471 1 1507 1508 1509 1510 +1472 1 1508 1507 1512 1511 +1473 1 1512 1507 1508 1509 +1474 1 964 965 966 961 +1475 1 2902 2903 2904 2899 +1476 1 1514 1515 1516 1517 +1477 1 2510 2509 2514 2513 +1478 1 2514 2509 2510 2511 +1479 1 2905 2906 2907 2908 +1480 1 1533 1534 1535 1536 +1481 1 1490 1491 1492 1493 +1482 1 2908 2909 2910 2905 +1483 1 2907 2908 2909 2910 +1484 1 1515 1516 1517 1518 +1485 1 2913 2914 2915 2916 +1486 1 2911 2912 2913 2914 +1487 1 1521 1522 1523 1524 +1488 1 1520 1521 1522 1523 +1489 1 1519 1520 1521 1522 +1490 1 1520 1519 1524 1523 +1491 1 1524 1519 1520 1521 +1492 1 1516 1517 1518 1513 +1493 1 2912 2913 2914 2915 +1494 1 2906 2907 2908 2909 +1495 1 176 177 178 179 +1496 1 788 787 792 791 +1497 1 792 787 788 789 +1498 1 177 178 179 180 +1499 1 2918 2919 2920 2921 +1500 1 184 185 186 181 +1501 1 1526 1525 1530 1529 +1502 1 1530 1525 1526 1527 +1503 1 178 179 180 175 +1504 1 1528 1529 1530 1525 +1505 1 1527 1528 1529 1530 +1506 1 1526 1527 1528 1529 +1507 1 1525 1526 1527 1528 +1508 1 1579 1580 1581 1582 +1509 1 1540 1541 1542 1537 +1510 1 187 188 189 190 +1511 1 1489 1490 1491 1492 +1512 1 2516 2517 2518 2519 +1513 1 2522 2521 2526 2525 +1514 1 2526 2521 2522 2523 +1515 1 50 51 52 53 +1516 1 148 149 150 145 +1517 1 153 154 155 156 +1518 1 176 175 180 179 +1519 1 180 175 176 177 +1520 1 182 181 186 185 +1521 1 186 181 182 183 +1522 1 127 128 129 130 +1523 1 146 145 150 149 +1524 1 150 145 146 147 +1525 1 838 839 840 835 +1526 1 914 915 916 917 +1527 1 1588 1589 1590 1585 +1528 1 1779 1780 1781 1782 +1529 1 1587 1588 1589 1590 +1530 1 1786 1787 1788 1783 +1531 1 1778 1779 1780 1781 +1532 1 1778 1777 1782 1781 +1533 1 1782 1777 1778 1779 +1534 1 1777 1778 1779 1780 +1535 1 1592 1593 1594 1595 +1536 1 1735 1736 1737 1738 +1537 1 1729 1730 1731 1732 +1538 1 1586 1585 1590 1589 +1539 1 1590 1585 1586 1587 +1540 1 1718 1717 1722 1721 +1541 1 1722 1717 1718 1719 +1542 1 1737 1738 1739 1740 +1543 1 1736 1737 1738 1739 +1544 1 1784 1783 1788 1787 +1545 1 1788 1783 1784 1785 +1546 1 1783 1784 1785 1786 +1547 1 1784 1785 1786 1787 +1548 1 1785 1786 1787 1788 +1549 1 1598 1597 1602 1601 +1550 1 1602 1597 1598 1599 +1551 1 1597 1598 1599 1600 +1552 1 1790 1789 1794 1793 +1553 1 1794 1789 1790 1791 +1554 1 1789 1790 1791 1792 +1555 1 1790 1791 1792 1793 +1556 1 1791 1792 1793 1794 +1557 1 1792 1793 1794 1789 +1558 1 400 401 402 397 +1559 1 1713 1714 1715 1716 +1560 1 1658 1657 1662 1661 +1561 1 1662 1657 1658 1659 +1562 1 1796 1795 1800 1799 +1563 1 1800 1795 1796 1797 +1564 1 1795 1796 1797 1798 +1565 1 1796 1797 1798 1799 +1566 1 1797 1798 1799 1800 +1567 1 1798 1799 1800 1795 +1568 1 1804 1805 1806 1801 +1569 1 1754 1755 1756 1757 +1570 1 1612 1613 1614 1609 +1571 1 1755 1756 1757 1758 +1572 1 1633 1634 1635 1636 +1573 1 1802 1801 1806 1805 +1574 1 1806 1801 1802 1803 +1575 1 1561 1562 1563 1564 +1576 1 1801 1802 1803 1804 +1577 1 793 794 795 796 +1578 1 1754 1753 1758 1757 +1579 1 1758 1753 1754 1755 +1580 1 1753 1754 1755 1756 +1581 1 1762 1763 1764 1759 +1582 1 1802 1803 1804 1805 +1583 1 1803 1804 1805 1806 +1584 1 1808 1807 1812 1811 +1585 1 1812 1807 1808 1809 +1586 1 1807 1808 1809 1810 +1587 1 1808 1809 1810 1811 +1588 1 1809 1810 1811 1812 +1589 1 1810 1811 1812 1807 +1590 1 1627 1628 1629 1630 +1591 1 1562 1563 1564 1565 +1592 1 1621 1622 1623 1624 +1593 1 1586 1587 1588 1589 +1594 1 1814 1813 1818 1817 +1595 1 1818 1813 1814 1815 +1596 1 1813 1814 1815 1816 +1597 1 1814 1815 1816 1817 +1598 1 1815 1816 1817 1818 +1599 1 1622 1621 1626 1625 +1600 1 1626 1621 1622 1623 +1601 1 1767 1768 1769 1770 +1602 1 1720 1721 1722 1717 +1603 1 1816 1817 1818 1813 +1604 1 1730 1731 1732 1733 +1605 1 1629 1630 1631 1632 +1606 1 1731 1732 1733 1734 +1607 1 1669 1670 1671 1672 +1608 1 1732 1733 1734 1729 +1609 1 794 793 798 797 +1610 1 798 793 794 795 +1611 1 1630 1631 1632 1627 +1612 1 1820 1819 1824 1823 +1613 1 1824 1819 1820 1821 +1614 1 1819 1820 1821 1822 +1615 1 1820 1821 1822 1823 +1616 1 1821 1822 1823 1824 +1617 1 1822 1823 1824 1819 +1618 1 1628 1627 1632 1631 +1619 1 1632 1627 1628 1629 +1620 1 1538 1537 1542 1541 +1621 1 1542 1537 1538 1539 +1622 1 1726 1727 1728 1723 +1623 1 1780 1781 1782 1777 +1624 1 1641 1642 1643 1644 +1625 1 1636 1637 1638 1633 +1626 1 1828 1829 1830 1825 +1627 1 1832 1831 1836 1835 +1628 1 1836 1831 1832 1833 +1629 1 1831 1832 1833 1834 +1630 1 1832 1833 1834 1835 +1631 1 2139 2140 2141 2142 +1632 1 602 603 604 605 +1633 1 1634 1633 1638 1637 +1634 1 1638 1633 1634 1635 +1635 1 1642 1643 1644 1639 +1636 1 1598 1599 1600 1601 +1637 1 1648 1649 1650 1645 +1638 1 1834 1835 1836 1831 +1639 1 1585 1586 1587 1588 +1640 1 1833 1834 1835 1836 +1641 1 1646 1647 1648 1649 +1642 1 1647 1648 1649 1650 +1643 1 1838 1837 1842 1841 +1644 1 1842 1837 1838 1839 +1645 1 1837 1838 1839 1840 +1646 1 1838 1839 1840 1841 +1647 1 1839 1840 1841 1842 +1648 1 1840 1841 1842 1837 +1649 1 1599 1600 1601 1602 +1650 1 613 614 615 616 +1651 1 1652 1651 1656 1655 +1652 1 1656 1651 1652 1653 +1653 1 1651 1652 1653 1654 +1654 1 1844 1843 1848 1847 +1655 1 1848 1843 1844 1845 +1656 1 1843 1844 1845 1846 +1657 1 1844 1845 1846 1847 +1658 1 1845 1846 1847 1848 +1659 1 1846 1847 1848 1843 +1660 1 1849 1850 1851 1852 +1661 1 1850 1851 1852 1853 +1662 1 1652 1653 1654 1655 +1663 1 1658 1659 1660 1661 +1664 1 1659 1660 1661 1662 +1665 1 1660 1661 1662 1657 +1666 1 1851 1852 1853 1854 +1667 1 1712 1713 1714 1715 +1668 1 1657 1658 1659 1660 +1669 1 1766 1767 1768 1769 +1670 1 1724 1725 1726 1727 +1671 1 1850 1849 1854 1853 +1672 1 1854 1849 1850 1851 +1673 1 1592 1591 1596 1595 +1674 1 1596 1591 1592 1593 +1675 1 1852 1853 1854 1849 +1676 1 1855 1856 1857 1858 +1677 1 1856 1857 1858 1859 +1678 1 1857 1858 1859 1860 +1679 1 1858 1859 1860 1855 +1680 1 1666 1667 1668 1663 +1681 1 1664 1663 1668 1667 +1682 1 1668 1663 1664 1665 +1683 1 1736 1735 1740 1739 +1684 1 1740 1735 1736 1737 +1685 1 1856 1855 1860 1859 +1686 1 1860 1855 1856 1857 +1687 1 1670 1671 1672 1673 +1688 1 1671 1672 1673 1674 +1689 1 1862 1861 1866 1865 +1690 1 1866 1861 1862 1863 +1691 1 1861 1862 1863 1864 +1692 1 1862 1863 1864 1865 +1693 1 1863 1864 1865 1866 +1694 1 1864 1865 1866 1861 +1695 1 1672 1673 1674 1669 +1696 1 416 417 418 419 +1697 1 1683 1684 1685 1686 +1698 1 1676 1675 1680 1679 +1699 1 1680 1675 1676 1677 +1700 1 1635 1636 1637 1638 +1701 1 1634 1635 1636 1637 +1702 1 1678 1679 1680 1675 +1703 1 1826 1825 1830 1829 +1704 1 1830 1825 1826 1827 +1705 1 1825 1826 1827 1828 +1706 1 1868 1867 1872 1871 +1707 1 1872 1867 1868 1869 +1708 1 1867 1868 1869 1870 +1709 1 1868 1869 1870 1871 +1710 1 1869 1870 1871 1872 +1711 1 1870 1871 1872 1867 +1712 1 1916 1917 1918 1919 +1713 1 1677 1678 1679 1680 +1714 1 1676 1677 1678 1679 +1715 1 1922 1923 1924 1925 +1716 1 1917 1918 1919 1920 +1717 1 1675 1676 1677 1678 +1718 1 1684 1685 1686 1681 +1719 1 7 8 9 10 +1720 1 1874 1873 1878 1877 +1721 1 1878 1873 1874 1875 +1722 1 1876 1877 1878 1873 +1723 1 1880 1879 1884 1883 +1724 1 1884 1879 1880 1881 +1725 1 1879 1880 1881 1882 +1726 1 1881 1882 1883 1884 +1727 1 1882 1883 1884 1879 +1728 1 9 10 11 12 +1729 1 1875 1876 1877 1878 +1730 1 8 7 12 11 +1731 1 12 7 8 9 +1732 1 1873 1874 1875 1876 +1733 1 1874 1875 1876 1877 +1734 1 10 11 12 7 +1735 1 8 9 10 11 +1736 1 199 200 201 202 +1737 1 1880 1881 1882 1883 +1738 1 13 14 15 16 +1739 1 1886 1885 1890 1889 +1740 1 1890 1885 1886 1887 +1741 1 1885 1886 1887 1888 +1742 1 1886 1887 1888 1889 +1743 1 1887 1888 1889 1890 +1744 1 1888 1889 1890 1885 +1745 1 14 13 18 17 +1746 1 18 13 14 15 +1747 1 2416 2417 2418 2413 +1748 1 208 209 210 205 +1749 1 1700 1701 1702 1703 +1750 1 15 16 17 18 +1751 1 206 205 210 209 +1752 1 210 205 206 207 +1753 1 14 15 16 17 +1754 1 620 621 622 623 +1755 1 1702 1703 1704 1699 +1756 1 1701 1702 1703 1704 +1757 1 1700 1699 1704 1703 +1758 1 1704 1699 1700 1701 +1759 1 1699 1700 1701 1702 +1760 1 1707 1708 1709 1710 +1761 1 1892 1891 1896 1895 +1762 1 1896 1891 1892 1893 +1763 1 1891 1892 1893 1894 +1764 1 1892 1893 1894 1895 +1765 1 1894 1895 1896 1891 +1766 1 218 219 220 221 +1767 1 1708 1709 1710 1705 +1768 1 219 220 221 222 +1769 1 1706 1707 1708 1709 +1770 1 1893 1894 1895 1896 +1771 1 2492 2491 2496 2495 +1772 1 2496 2491 2492 2493 +1773 1 771 772 773 774 +1774 1 1900 1901 1902 1897 +1775 1 1898 1897 1902 1901 +1776 1 1902 1897 1898 1899 +1777 1 1898 1899 1900 1901 +1778 1 1899 1900 1901 1902 +1779 1 1904 1903 1908 1907 +1780 1 1908 1903 1904 1905 +1781 1 1905 1906 1907 1908 +1782 1 224 223 228 227 +1783 1 228 223 224 225 +1784 1 1897 1898 1899 1900 +1785 1 1903 1904 1905 1906 +1786 1 1760 1759 1764 1763 +1787 1 1764 1759 1760 1761 +1788 1 2464 2465 2466 2461 +1789 1 1906 1907 1908 1903 +1790 1 1910 1909 1914 1913 +1791 1 1914 1909 1910 1911 +1792 1 1909 1910 1911 1912 +1793 1 1910 1911 1912 1913 +1794 1 1911 1912 1913 1914 +1795 1 1912 1913 1914 1909 +1796 1 1591 1592 1593 1594 +1797 1 230 229 234 233 +1798 1 234 229 230 231 +1799 1 2491 2492 2493 2494 +1800 1 1915 1916 1917 1918 +1801 1 193 194 195 196 +1802 1 1724 1723 1728 1727 +1803 1 1728 1723 1724 1725 +1804 1 1916 1915 1920 1919 +1805 1 1920 1915 1916 1917 +1806 1 1918 1919 1920 1915 +1807 1 1723 1724 1725 1726 +1808 1 194 195 196 197 +1809 1 195 196 197 198 +1810 1 45 46 47 48 +1811 1 2463 2464 2465 2466 +1812 1 1923 1924 1925 1926 +1813 1 1971 1972 1973 1974 +1814 1 1972 1973 1974 1969 +1815 1 1976 1975 1980 1979 +1816 1 1980 1975 1976 1977 +1817 1 1975 1976 1977 1978 +1818 1 1978 1979 1980 1975 +1819 1 2168 2167 2172 2171 +1820 1 2172 2167 2168 2169 +1821 1 2374 2375 2376 2371 +1822 1 200 199 204 203 +1823 1 204 199 200 201 +1824 1 1933 1934 1935 1936 +1825 1 1934 1933 1938 1937 +1826 1 1938 1933 1934 1935 +1827 1 1934 1935 1936 1937 +1828 1 1725 1726 1727 1728 +1829 1 1982 1981 1986 1985 +1830 1 1986 1981 1982 1983 +1831 1 1981 1982 1983 1984 +1832 1 1982 1983 1984 1985 +1833 1 1983 1984 1985 1986 +1834 1 1984 1985 1986 1981 +1835 1 2386 2387 2388 2383 +1836 1 609 610 611 612 +1837 1 1988 1987 1992 1991 +1838 1 1992 1987 1988 1989 +1839 1 1987 1988 1989 1990 +1840 1 1988 1989 1990 1991 +1841 1 1989 1990 1991 1992 +1842 1 1990 1991 1992 1987 +1843 1 1995 1996 1997 1998 +1844 1 1996 1997 1998 1993 +1845 1 1994 1995 1996 1997 +1846 1 2186 2187 2188 2189 +1847 1 1952 1953 1954 1955 +1848 1 1952 1951 1956 1955 +1849 1 1956 1951 1952 1953 +1850 1 1994 1993 1998 1997 +1851 1 1998 1993 1994 1995 +1852 1 1993 1994 1995 1996 +1853 1 2000 1999 2004 2003 +1854 1 2004 1999 2000 2001 +1855 1 1999 2000 2001 2002 +1856 1 2000 2001 2002 2003 +1857 1 2001 2002 2003 2004 +1858 1 2002 2003 2004 1999 +1859 1 1954 1955 1956 1951 +1860 1 2194 2195 2196 2191 +1861 1 2193 2194 2195 2196 +1862 1 2192 2193 2194 2195 +1863 1 2191 2192 2193 2194 +1864 1 2192 2191 2196 2195 +1865 1 2196 2191 2192 2193 +1866 1 1953 1954 1955 1956 +1867 1 1624 1625 1626 1621 +1868 1 1951 1952 1953 1954 +1869 1 2006 2005 2010 2009 +1870 1 2010 2005 2006 2007 +1871 1 2005 2006 2007 2008 +1872 1 2006 2007 2008 2009 +1873 1 2007 2008 2009 2010 +1874 1 2008 2009 2010 2005 +1875 1 1957 1958 1959 1960 +1876 1 1958 1959 1960 1961 +1877 1 1958 1957 1962 1961 +1878 1 1962 1957 1958 1959 +1879 1 2150 2151 2152 2153 +1880 1 418 419 420 415 +1881 1 2300 2299 2304 2303 +1882 1 2304 2299 2300 2301 +1883 1 1562 1561 1566 1565 +1884 1 1566 1561 1562 1563 +1885 1 1970 1971 1972 1973 +1886 1 1970 1969 1974 1973 +1887 1 1974 1969 1970 1971 +1888 1 1969 1970 1971 1972 +1889 1 2012 2011 2016 2015 +1890 1 2016 2011 2012 2013 +1891 1 2011 2012 2013 2014 +1892 1 2013 2014 2015 2016 +1893 1 2014 2015 2016 2011 +1894 1 2012 2013 2014 2015 +1895 1 2163 2164 2165 2166 +1896 1 2204 2205 2206 2207 +1897 1 1730 1729 1734 1733 +1898 1 1734 1729 1730 1731 +1899 1 1827 1828 1829 1830 +1900 1 1976 1977 1978 1979 +1901 1 1977 1978 1979 1980 +1902 1 2024 2023 2028 2027 +1903 1 2028 2023 2024 2025 +1904 1 2023 2024 2025 2026 +1905 1 2024 2025 2026 2027 +1906 1 2025 2026 2027 2028 +1907 1 2026 2027 2028 2023 +1908 1 2216 2215 2220 2219 +1909 1 2220 2215 2216 2217 +1910 1 2030 2029 2034 2033 +1911 1 2034 2029 2030 2031 +1912 1 2029 2030 2031 2032 +1913 1 2030 2031 2032 2033 +1914 1 2031 2032 2033 2034 +1915 1 2032 2033 2034 2029 +1916 1 2036 2035 2040 2039 +1917 1 2040 2035 2036 2037 +1918 1 2035 2036 2037 2038 +1919 1 2036 2037 2038 2039 +1920 1 2037 2038 2039 2040 +1921 1 2038 2039 2040 2035 +1922 1 2236 2237 2238 2233 +1923 1 2230 2231 2232 2227 +1924 1 2277 2278 2279 2280 +1925 1 2276 2277 2278 2279 +1926 1 2090 2089 2094 2093 +1927 1 2094 2089 2090 2091 +1928 1 2275 2276 2277 2278 +1929 1 2227 2228 2229 2230 +1930 1 2228 2227 2232 2231 +1931 1 2232 2227 2228 2229 +1932 1 2278 2279 2280 2275 +1933 1 2042 2041 2046 2045 +1934 1 2046 2041 2042 2043 +1935 1 2041 2042 2043 2044 +1936 1 2042 2043 2044 2045 +1937 1 2043 2044 2045 2046 +1938 1 2044 2045 2046 2041 +1939 1 2048 2047 2052 2051 +1940 1 2052 2047 2048 2049 +1941 1 2047 2048 2049 2050 +1942 1 2048 2049 2050 2051 +1943 1 2049 2050 2051 2052 +1944 1 2050 2051 2052 2047 +1945 1 2234 2235 2236 2237 +1946 1 2092 2093 2094 2089 +1947 1 2235 2236 2237 2238 +1948 1 2233 2234 2235 2236 +1949 1 2054 2053 2058 2057 +1950 1 2058 2053 2054 2055 +1951 1 2053 2054 2055 2056 +1952 1 2054 2055 2056 2057 +1953 1 2055 2056 2057 2058 +1954 1 2056 2057 2058 2053 +1955 1 1826 1827 1828 1829 +1956 1 2020 2021 2022 2017 +1957 1 2060 2059 2064 2063 +1958 1 2064 2059 2060 2061 +1959 1 2059 2060 2061 2062 +1960 1 2018 2019 2020 2021 +1961 1 2019 2020 2021 2022 +1962 1 2018 2017 2022 2021 +1963 1 2022 2017 2018 2019 +1964 1 2017 2018 2019 2020 +1965 1 2060 2061 2062 2063 +1966 1 2061 2062 2063 2064 +1967 1 2062 2063 2064 2059 +1968 1 392 393 394 395 +1969 1 391 392 393 394 +1970 1 2073 2074 2075 2076 +1971 1 2074 2075 2076 2071 +1972 1 392 391 396 395 +1973 1 396 391 392 393 +1974 1 2258 2259 2260 2261 +1975 1 393 394 395 396 +1976 1 2259 2260 2261 2262 +1977 1 2257 2258 2259 2260 +1978 1 2258 2257 2262 2261 +1979 1 2262 2257 2258 2259 +1980 1 394 395 396 391 +1981 1 398 397 402 401 +1982 1 402 397 398 399 +1983 1 206 207 208 209 +1984 1 207 208 209 210 +1985 1 205 206 207 208 +1986 1 2072 2071 2076 2075 +1987 1 2076 2071 2072 2073 +1988 1 2071 2072 2073 2074 +1989 1 2072 2073 2074 2075 +1990 1 2078 2077 2082 2081 +1991 1 2082 2077 2078 2079 +1992 1 2077 2078 2079 2080 +1993 1 2078 2079 2080 2081 +1994 1 2079 2080 2081 2082 +1995 1 2080 2081 2082 2077 +1996 1 404 403 408 407 +1997 1 408 403 404 405 +1998 1 403 404 405 406 +1999 1 38 37 42 41 +2000 1 42 37 38 39 +2001 1 2450 2449 2454 2453 +2002 1 2454 2449 2450 2451 +2003 1 409 410 411 412 +2004 1 2089 2090 2091 2092 +2005 1 410 411 412 413 +2006 1 404 405 406 407 +2007 1 2084 2083 2088 2087 +2008 1 2088 2083 2084 2085 +2009 1 2083 2084 2085 2086 +2010 1 2084 2085 2086 2087 +2011 1 2085 2086 2087 2088 +2012 1 2086 2087 2088 2083 +2013 1 411 412 413 414 +2014 1 2299 2300 2301 2302 +2015 1 1904 1905 1906 1907 +2016 1 2090 2091 2092 2093 +2017 1 2091 2092 2093 2094 +2018 1 2096 2095 2100 2099 +2019 1 2100 2095 2096 2097 +2020 1 2095 2096 2097 2098 +2021 1 2096 2097 2098 2099 +2022 1 2097 2098 2099 2100 +2023 1 2098 2099 2100 2095 +2024 1 415 416 417 418 +2025 1 416 415 420 419 +2026 1 420 415 416 417 +2027 1 412 413 414 409 +2028 1 2102 2101 2106 2105 +2029 1 2106 2101 2102 2103 +2030 1 2101 2102 2103 2104 +2031 1 2102 2103 2104 2105 +2032 1 2103 2104 2105 2106 +2033 1 2104 2105 2106 2101 +2034 1 422 423 424 425 +2035 1 423 424 425 426 +2036 1 421 422 423 424 +2037 1 2344 2345 2346 2341 +2038 1 424 425 426 421 +2039 1 2302 2303 2304 2299 +2040 1 2066 2067 2068 2069 +2041 1 2067 2068 2069 2070 +2042 1 2068 2069 2070 2065 +2043 1 429 430 431 432 +2044 1 2260 2261 2262 2257 +2045 1 2066 2065 2070 2069 +2046 1 2070 2065 2066 2067 +2047 1 2065 2066 2067 2068 +2048 1 2108 2107 2112 2111 +2049 1 2112 2107 2108 2109 +2050 1 2107 2108 2109 2110 +2051 1 2108 2109 2110 2111 +2052 1 2109 2110 2111 2112 +2053 1 2110 2111 2112 2107 +2054 1 212 211 216 215 +2055 1 216 211 212 213 +2056 1 2360 2359 2364 2363 +2057 1 2364 2359 2360 2361 +2058 1 2170 2171 2172 2167 +2059 1 2169 2170 2171 2172 +2060 1 2168 2169 2170 2171 +2061 1 2167 2168 2169 2170 +2062 1 2164 2165 2166 2161 +2063 1 2121 2122 2123 2124 +2064 1 1756 1757 1758 1753 +2065 1 2362 2363 2364 2359 +2066 1 2162 2161 2166 2165 +2067 1 2166 2161 2162 2163 +2068 1 2361 2362 2363 2364 +2069 1 2313 2314 2315 2316 +2070 1 2317 2318 2319 2320 +2071 1 2318 2317 2322 2321 +2072 1 2322 2317 2318 2319 +2073 1 2294 2295 2296 2297 +2074 1 2176 2177 2178 2173 +2075 1 2175 2176 2177 2178 +2076 1 2174 2175 2176 2177 +2077 1 2173 2174 2175 2176 +2078 1 2174 2173 2178 2177 +2079 1 2178 2173 2174 2175 +2080 1 2320 2321 2322 2317 +2081 1 2366 2365 2370 2369 +2082 1 2370 2365 2366 2367 +2083 1 2182 2183 2184 2179 +2084 1 2180 2179 2184 2183 +2085 1 2184 2179 2180 2181 +2086 1 2312 2313 2314 2315 +2087 1 2366 2367 2368 2369 +2088 1 2365 2366 2367 2368 +2089 1 2473 2474 2475 2476 +2090 1 2187 2188 2189 2190 +2091 1 2185 2186 2187 2188 +2092 1 2179 2180 2181 2182 +2093 1 2323 2324 2325 2326 +2094 1 2181 2182 2183 2184 +2095 1 2180 2181 2182 2183 +2096 1 2295 2296 2297 2298 +2097 1 2186 2185 2190 2189 +2098 1 2190 2185 2186 2187 +2099 1 2324 2323 2328 2327 +2100 1 2328 2323 2324 2325 +2101 1 2138 2137 2142 2141 +2102 1 2142 2137 2138 2139 +2103 1 2143 2144 2145 2146 +2104 1 2137 2138 2139 2140 +2105 1 2138 2139 2140 2141 +2106 1 2188 2189 2190 2185 +2107 1 2336 2337 2338 2339 +2108 1 2383 2384 2385 2386 +2109 1 2336 2335 2340 2339 +2110 1 2340 2335 2336 2337 +2111 1 2384 2385 2386 2387 +2112 1 2338 2339 2340 2335 +2113 1 2335 2336 2337 2338 +2114 1 2385 2386 2387 2388 +2115 1 2150 2149 2154 2153 +2116 1 2154 2149 2150 2151 +2117 1 2149 2150 2151 2152 +2118 1 2152 2153 2154 2149 +2119 1 2342 2341 2346 2345 +2120 1 2346 2341 2342 2343 +2121 1 2198 2197 2202 2201 +2122 1 2202 2197 2198 2199 +2123 1 2151 2152 2153 2154 +2124 1 2205 2206 2207 2208 +2125 1 2206 2207 2208 2203 +2126 1 2396 2395 2400 2399 +2127 1 2400 2395 2396 2397 +2128 1 2203 2204 2205 2206 +2129 1 2355 2356 2357 2358 +2130 1 2162 2163 2164 2165 +2131 1 2161 2162 2163 2164 +2132 1 2356 2357 2358 2353 +2133 1 2204 2203 2208 2207 +2134 1 2208 2203 2204 2205 +2135 1 2398 2399 2400 2395 +2136 1 2410 2411 2412 2407 +2137 1 2218 2219 2220 2215 +2138 1 2217 2218 2219 2220 +2139 1 2216 2217 2218 2219 +2140 1 2215 2216 2217 2218 +2141 1 2212 2213 2214 2209 +2142 1 2210 2209 2214 2213 +2143 1 2214 2209 2210 2211 +2144 1 2409 2410 2411 2412 +2145 1 2211 2212 2213 2214 +2146 1 2408 2409 2410 2411 +2147 1 2210 2211 2212 2213 +2148 1 2209 2210 2211 2212 +2149 1 2266 2267 2268 2263 +2150 1 2415 2416 2417 2418 +2151 1 2301 2302 2303 2304 +2152 1 1765 1766 1767 1768 +2153 1 2413 2414 2415 2416 +2154 1 2224 2225 2226 2221 +2155 1 2223 2224 2225 2226 +2156 1 2222 2223 2224 2225 +2157 1 2221 2222 2223 2224 +2158 1 2222 2221 2226 2225 +2159 1 2226 2221 2222 2223 +2160 1 2122 2123 2124 2119 +2161 1 2403 2404 2405 2406 +2162 1 2229 2230 2231 2232 +2163 1 2228 2229 2230 2231 +2164 1 2283 2284 2285 2286 +2165 1 2282 2283 2284 2285 +2166 1 2420 2421 2422 2423 +2167 1 2281 2282 2283 2284 +2168 1 2421 2422 2423 2424 +2169 1 2241 2242 2243 2244 +2170 1 2240 2241 2242 2243 +2171 1 2239 2240 2241 2242 +2172 1 2240 2239 2244 2243 +2173 1 2244 2239 2240 2241 +2174 1 2234 2233 2238 2237 +2175 1 2238 2233 2234 2235 +2176 1 2242 2243 2244 2239 +2177 1 2437 2438 2439 2440 +2178 1 2197 2198 2199 2200 +2179 1 2200 2201 2202 2197 +2180 1 2198 2199 2200 2201 +2181 1 2199 2200 2201 2202 +2182 1 2248 2249 2250 2245 +2183 1 2247 2248 2249 2250 +2184 1 2246 2247 2248 2249 +2185 1 2245 2246 2247 2248 +2186 1 2246 2245 2250 2249 +2187 1 2250 2245 2246 2247 +2188 1 1603 1604 1605 1606 +2189 1 2438 2439 2440 2441 +2190 1 2402 2403 2404 2405 +2191 1 1628 1629 1630 1631 +2192 1 2254 2255 2256 2251 +2193 1 2253 2254 2255 2256 +2194 1 2252 2253 2254 2255 +2195 1 2251 2252 2253 2254 +2196 1 2252 2251 2256 2255 +2197 1 2256 2251 2252 2253 +2198 1 2444 2443 2448 2447 +2199 1 2448 2443 2444 2445 +2200 1 585 586 587 588 +2201 1 778 779 780 775 +2202 1 578 577 582 581 +2203 1 582 577 578 579 +2204 1 770 769 774 773 +2205 1 774 769 770 771 +2206 1 772 773 774 769 +2207 1 583 584 585 586 +2208 1 2265 2266 2267 2268 +2209 1 2264 2265 2266 2267 +2210 1 2263 2264 2265 2266 +2211 1 2264 2263 2268 2267 +2212 1 2268 2263 2264 2265 +2213 1 769 770 771 772 +2214 1 584 585 586 587 +2215 1 2422 2423 2424 2419 +2216 1 591 592 593 594 +2217 1 590 591 592 593 +2218 1 211 212 213 214 +2219 1 2486 2487 2488 2489 +2220 1 2488 2489 2490 2485 +2221 1 586 587 588 583 +2222 1 584 583 588 587 +2223 1 588 583 584 585 +2224 1 2272 2273 2274 2269 +2225 1 2271 2272 2273 2274 +2226 1 2270 2271 2272 2273 +2227 1 2269 2270 2271 2272 +2228 1 2270 2269 2274 2273 +2229 1 2274 2269 2270 2271 +2230 1 592 593 594 589 +2231 1 590 589 594 593 +2232 1 594 589 590 591 +2233 1 589 590 591 592 +2234 1 430 431 432 427 +2235 1 2395 2396 2397 2398 +2236 1 2276 2275 2280 2279 +2237 1 2280 2275 2276 2277 +2238 1 601 602 603 604 +2239 1 597 598 599 600 +2240 1 417 418 419 420 +2241 1 596 597 598 599 +2242 1 595 596 597 598 +2243 1 2294 2293 2298 2297 +2244 1 2298 2293 2294 2295 +2245 1 607 608 609 610 +2246 1 608 609 610 611 +2247 1 2300 2301 2302 2303 +2248 1 2284 2285 2286 2281 +2249 1 2282 2281 2286 2285 +2250 1 2286 2281 2282 2283 +2251 1 603 604 605 606 +2252 1 2458 2459 2460 2455 +2253 1 608 607 612 611 +2254 1 612 607 608 609 +2255 1 1738 1739 1740 1735 +2256 1 2290 2291 2292 2287 +2257 1 2289 2290 2291 2292 +2258 1 2288 2289 2290 2291 +2259 1 2287 2288 2289 2290 +2260 1 2288 2287 2292 2291 +2261 1 2292 2287 2288 2289 +2262 1 604 605 606 601 +2263 1 806 807 808 809 +2264 1 2293 2294 2295 2296 +2265 1 2296 2297 2298 2293 +2266 1 2486 2485 2490 2489 +2267 1 2490 2485 2486 2487 +2268 1 2485 2486 2487 2488 +2269 1 614 613 618 617 +2270 1 618 613 614 615 +2271 1 2360 2361 2362 2363 +2272 1 2480 2481 2482 2483 +2273 1 1706 1705 1710 1709 +2274 1 1710 1705 1706 1707 +2275 1 2498 2499 2500 2501 +2276 1 2504 2503 2508 2507 +2277 1 2508 2503 2504 2505 +2278 1 2552 2551 2556 2555 +2279 1 2556 2551 2552 2553 +2280 1 2551 2552 2553 2554 +2281 1 2552 2553 2554 2555 +2282 1 2553 2554 2555 2556 +2283 1 2554 2555 2556 2551 +2284 1 2497 2498 2499 2500 +2285 1 2503 2504 2505 2506 +2286 1 2359 2360 2361 2362 +2287 1 992 993 994 995 +2288 1 2499 2500 2501 2502 +2289 1 2354 2353 2358 2357 +2290 1 2358 2353 2354 2355 +2291 1 2504 2505 2506 2507 +2292 1 2367 2368 2369 2370 +2293 1 2564 2563 2568 2567 +2294 1 2568 2563 2564 2565 +2295 1 2558 2559 2560 2561 +2296 1 991 992 993 994 +2297 1 2368 2369 2370 2365 +2298 1 2517 2518 2519 2520 +2299 1 2461 2462 2463 2464 +2300 1 2518 2519 2520 2515 +2301 1 2509 2510 2511 2512 +2302 1 784 785 786 781 +2303 1 2563 2564 2565 2566 +2304 1 2372 2373 2374 2375 +2305 1 2515 2516 2517 2518 +2306 1 2419 2420 2421 2422 +2307 1 2564 2565 2566 2567 +2308 1 2565 2566 2567 2568 +2309 1 2566 2567 2568 2563 +2310 1 2379 2380 2381 2382 +2311 1 2378 2379 2380 2381 +2312 1 2377 2378 2379 2380 +2313 1 2372 2371 2376 2375 +2314 1 2376 2371 2372 2373 +2315 1 2516 2515 2520 2519 +2316 1 2520 2515 2516 2517 +2317 1 2371 2372 2373 2374 +2318 1 2524 2525 2526 2521 +2319 1 2883 2884 2885 2886 +2320 1 2378 2377 2382 2381 +2321 1 2382 2377 2378 2379 +2322 1 2569 2570 2571 2572 +2323 1 2570 2569 2574 2573 +2324 1 2574 2569 2570 2571 +2325 1 2529 2530 2531 2532 +2326 1 2380 2381 2382 2377 +2327 1 2462 2461 2466 2465 +2328 1 2466 2461 2462 2463 +2329 1 2530 2531 2532 2527 +2330 1 2571 2572 2573 2574 +2331 1 2577 2578 2579 2580 +2332 1 2578 2579 2580 2575 +2333 1 2919 2920 2921 2922 +2334 1 2528 2527 2532 2531 +2335 1 2532 2527 2528 2529 +2336 1 2528 2529 2530 2531 +2337 1 2527 2528 2529 2530 +2338 1 2575 2576 2577 2578 +2339 1 2576 2577 2578 2579 +2340 1 2384 2383 2388 2387 +2341 1 2388 2383 2384 2385 +2342 1 2523 2524 2525 2526 +2343 1 2341 2342 2343 2344 +2344 1 2535 2536 2537 2538 +2345 1 2581 2582 2583 2584 +2346 1 2582 2583 2584 2585 +2347 1 2534 2533 2538 2537 +2348 1 2538 2533 2534 2535 +2349 1 2536 2537 2538 2533 +2350 1 2343 2344 2345 2346 +2351 1 2342 2343 2344 2345 +2352 1 2589 2590 2591 2592 +2353 1 2542 2543 2544 2539 +2354 1 2391 2392 2393 2394 +2355 1 2582 2581 2586 2585 +2356 1 2586 2581 2582 2583 +2357 1 2534 2535 2536 2537 +2358 1 2390 2391 2392 2393 +2359 1 2533 2534 2535 2536 +2360 1 2546 2547 2548 2549 +2361 1 2547 2548 2549 2550 +2362 1 2548 2549 2550 2545 +2363 1 2353 2354 2355 2356 +2364 1 2690 2691 2692 2693 +2365 1 1197 1198 1199 1200 +2366 1 2414 2415 2416 2417 +2367 1 2545 2546 2547 2548 +2368 1 2396 2397 2398 2399 +2369 1 2546 2545 2550 2549 +2370 1 2550 2545 2546 2547 +2371 1 2588 2587 2592 2591 +2372 1 2592 2587 2588 2589 +2373 1 2587 2588 2589 2590 +2374 1 2588 2589 2590 2591 +2375 1 2590 2591 2592 2587 +2376 1 2348 2347 2352 2351 +2377 1 2352 2347 2348 2349 +2378 1 2347 2348 2349 2350 +2379 1 2691 2692 2693 2694 +2380 1 1388 1387 1392 1391 +2381 1 1392 1387 1388 1389 +2382 1 2500 2501 2502 2497 +2383 1 2540 2539 2544 2543 +2384 1 2544 2539 2540 2541 +2385 1 2692 2693 2694 2689 +2386 1 1538 1539 1540 1541 +2387 1 2408 2407 2412 2411 +2388 1 2412 2407 2408 2409 +2389 1 2407 2408 2409 2410 +2390 1 2596 2597 2598 2593 +2391 1 2600 2599 2604 2603 +2392 1 2604 2599 2600 2601 +2393 1 2600 2601 2602 2603 +2394 1 2601 2602 2603 2604 +2395 1 2602 2603 2604 2599 +2396 1 2595 2596 2597 2598 +2397 1 2599 2600 2601 2602 +2398 1 2402 2401 2406 2405 +2399 1 2406 2401 2402 2403 +2400 1 2594 2593 2598 2597 +2401 1 2598 2593 2594 2595 +2402 1 2557 2558 2559 2560 +2403 1 2455 2456 2457 2458 +2404 1 2456 2455 2460 2459 +2405 1 2460 2455 2456 2457 +2406 1 2606 2605 2610 2609 +2407 1 2610 2605 2606 2607 +2408 1 2605 2606 2607 2608 +2409 1 2606 2607 2608 2609 +2410 1 2607 2608 2609 2610 +2411 1 2608 2609 2610 2605 +2412 1 2350 2351 2352 2347 +2413 1 2425 2426 2427 2428 +2414 1 2612 2611 2616 2615 +2415 1 2616 2611 2612 2613 +2416 1 2611 2612 2613 2614 +2417 1 2612 2613 2614 2615 +2418 1 2613 2614 2615 2616 +2419 1 2614 2615 2616 2611 +2420 1 2617 2618 2619 2620 +2421 1 2618 2619 2620 2621 +2422 1 2426 2425 2430 2429 +2423 1 2430 2425 2426 2427 +2424 1 2426 2427 2428 2429 +2425 1 2428 2429 2430 2425 +2426 1 2420 2419 2424 2423 +2427 1 2424 2419 2420 2421 +2428 1 2570 2571 2572 2573 +2429 1 2576 2575 2580 2579 +2430 1 2580 2575 2576 2577 +2431 1 2427 2428 2429 2430 +2432 1 2619 2620 2621 2622 +2433 1 2620 2621 2622 2617 +2434 1 2624 2623 2628 2627 +2435 1 2628 2623 2624 2625 +2436 1 2623 2624 2625 2626 +2437 1 2624 2625 2626 2627 +2438 1 2625 2626 2627 2628 +2439 1 2432 2433 2434 2435 +2440 1 2433 2434 2435 2436 +2441 1 2431 2432 2433 2434 +2442 1 2390 2389 2394 2393 +2443 1 2394 2389 2390 2391 +2444 1 2583 2584 2585 2586 +2445 1 2440 2441 2442 2437 +2446 1 2630 2629 2634 2633 +2447 1 2634 2629 2630 2631 +2448 1 2630 2631 2632 2633 +2449 1 2631 2632 2633 2634 +2450 1 2632 2633 2634 2629 +2451 1 2444 2445 2446 2447 +2452 1 2439 2440 2441 2442 +2453 1 2389 2390 2391 2392 +2454 1 2445 2446 2447 2448 +2455 1 2438 2437 2442 2441 +2456 1 2442 2437 2438 2439 +2457 1 2629 2630 2631 2632 +2458 1 2392 2393 2394 2389 +2459 1 2594 2595 2596 2597 +2460 1 2404 2405 2406 2401 +2461 1 2912 2911 2916 2915 +2462 1 2916 2911 2912 2913 +2463 1 2443 2444 2445 2446 +2464 1 2593 2594 2595 2596 +2465 1 2636 2635 2640 2639 +2466 1 2640 2635 2636 2637 +2467 1 2635 2636 2637 2638 +2468 1 2636 2637 2638 2639 +2469 1 2637 2638 2639 2640 +2470 1 2638 2639 2640 2635 +2471 1 775 776 777 778 +2472 1 2451 2452 2453 2454 +2473 1 2642 2643 2644 2645 +2474 1 2644 2645 2646 2641 +2475 1 2648 2647 2652 2651 +2476 1 2652 2647 2648 2649 +2477 1 2647 2648 2649 2650 +2478 1 2648 2649 2650 2651 +2479 1 2649 2650 2651 2652 +2480 1 2650 2651 2652 2647 +2481 1 968 967 972 971 +2482 1 972 967 968 969 +2483 1 967 968 969 970 +2484 1 2642 2641 2646 2645 +2485 1 2646 2641 2642 2643 +2486 1 2641 2642 2643 2644 +2487 1 2457 2458 2459 2460 +2488 1 770 771 772 773 +2489 1 776 777 778 779 +2490 1 2452 2453 2454 2449 +2491 1 968 969 970 971 +2492 1 777 778 779 780 +2493 1 783 784 785 786 +2494 1 2456 2457 2458 2459 +2495 1 2654 2653 2658 2657 +2496 1 2658 2653 2654 2655 +2497 1 2653 2654 2655 2656 +2498 1 2654 2655 2656 2657 +2499 1 2655 2656 2657 2658 +2500 1 2656 2657 2658 2653 +2501 1 782 783 784 785 +2502 1 1358 1357 1362 1361 +2503 1 1362 1357 1358 1359 +2504 1 2401 2402 2403 2404 +2505 1 979 980 981 982 +2506 1 2468 2467 2472 2471 +2507 1 2472 2467 2468 2469 +2508 1 2618 2617 2622 2621 +2509 1 2622 2617 2618 2619 +2510 1 2470 2471 2472 2467 +2511 1 2467 2468 2469 2470 +2512 1 2468 2469 2470 2471 +2513 1 2469 2470 2471 2472 +2514 1 2660 2659 2664 2663 +2515 1 2664 2659 2660 2661 +2516 1 2659 2660 2661 2662 +2517 1 2662 2663 2664 2659 +2518 1 980 979 984 983 +2519 1 984 979 980 981 +2520 1 2476 2477 2478 2473 +2521 1 980 981 982 983 +2522 1 790 791 792 787 +2523 1 2475 2476 2477 2478 +2524 1 2666 2665 2670 2669 +2525 1 2670 2665 2666 2667 +2526 1 1558 1559 1560 1555 +2527 1 2432 2431 2436 2435 +2528 1 2436 2431 2432 2433 +2529 1 2434 2435 2436 2431 +2530 1 2337 2338 2339 2340 +2531 1 2474 2475 2476 2477 +2532 1 2480 2479 2484 2483 +2533 1 2484 2479 2480 2481 +2534 1 2479 2480 2481 2482 +2535 1 1375 1376 1377 1378 +2536 1 2481 2482 2483 2484 +2537 1 2672 2671 2676 2675 +2538 1 2676 2671 2672 2673 +2539 1 2671 2672 2673 2674 +2540 1 2672 2673 2674 2675 +2541 1 2673 2674 2675 2676 +2542 1 2674 2675 2676 2671 +2543 1 2714 2713 2718 2717 +2544 1 2718 2713 2714 2715 +2545 1 3070 3071 3072 3067 +2546 1 2474 2473 2478 2477 +2547 1 2478 2473 2474 2475 +2548 1 796 797 798 793 +2549 1 2397 2398 2399 2400 +2550 1 2680 2681 2682 2677 +2551 1 2482 2483 2484 2479 +2552 1 2487 2488 2489 2490 +2553 1 2678 2677 2682 2681 +2554 1 2682 2677 2678 2679 +2555 1 2677 2678 2679 2680 +2556 1 2678 2679 2680 2681 +2557 1 2679 2680 2681 2682 +2558 1 2684 2683 2688 2687 +2559 1 2688 2683 2684 2685 +2560 1 2683 2684 2685 2686 +2561 1 2494 2495 2496 2491 +2562 1 2684 2685 2686 2687 +2563 1 2493 2494 2495 2496 +2564 1 814 815 816 811 +2565 1 2450 2451 2452 2453 +2566 1 2449 2450 2451 2452 +2567 1 2685 2686 2687 2688 +2568 1 2686 2687 2688 2683 +2569 1 1004 1005 1006 1007 +2570 1 1005 1006 1007 1008 +2571 1 2522 2523 2524 2525 +2572 1 2713 2714 2715 2716 +2573 1 812 811 816 815 +2574 1 816 811 812 813 +2575 1 1003 1004 1005 1006 +2576 1 1191 1192 1193 1194 +2577 1 1611 1612 1613 1614 +2578 1 2888 2887 2892 2891 +2579 1 2892 2887 2888 2889 +2580 1 2890 2891 2892 2887 +2581 1 2696 2695 2700 2699 +2582 1 2700 2695 2696 2697 +2583 1 2697 2698 2699 2700 +2584 1 2698 2699 2700 2695 +2585 1 2744 2743 2748 2747 +2586 1 2748 2743 2744 2745 +2587 1 2743 2744 2745 2746 +2588 1 2744 2745 2746 2747 +2589 1 2745 2746 2747 2748 +2590 1 2746 2747 2748 2743 +2591 1 2938 2939 2940 2935 +2592 1 2937 2938 2939 2940 +2593 1 1615 1616 1617 1618 +2594 1 2695 2696 2697 2698 +2595 1 2889 2890 2891 2892 +2596 1 2560 2561 2562 2557 +2597 1 2702 2701 2706 2705 +2598 1 2706 2701 2702 2703 +2599 1 2750 2749 2754 2753 +2600 1 2754 2749 2750 2751 +2601 1 2749 2750 2751 2752 +2602 1 2750 2751 2752 2753 +2603 1 2751 2752 2753 2754 +2604 1 2752 2753 2754 2749 +2605 1 2701 2702 2703 2704 +2606 1 2559 2560 2561 2562 +2607 1 2756 2755 2760 2759 +2608 1 2760 2755 2756 2757 +2609 1 2755 2756 2757 2758 +2610 1 2756 2757 2758 2759 +2611 1 2757 2758 2759 2760 +2612 1 2758 2759 2760 2755 +2613 1 2764 2765 2766 2761 +2614 1 2572 2573 2574 2569 +2615 1 2719 2720 2721 2722 +2616 1 1357 1358 1359 1360 +2617 1 2720 2721 2722 2723 +2618 1 2762 2761 2766 2765 +2619 1 2766 2761 2762 2763 +2620 1 2721 2722 2723 2724 +2621 1 2761 2762 2763 2764 +2622 1 2762 2763 2764 2765 +2623 1 2763 2764 2765 2766 +2624 1 2768 2767 2772 2771 +2625 1 2772 2767 2768 2769 +2626 1 2767 2768 2769 2770 +2627 1 2768 2769 2770 2771 +2628 1 2769 2770 2771 2772 +2629 1 2770 2771 2772 2767 +2630 1 2920 2921 2922 2917 +2631 1 2720 2719 2724 2723 +2632 1 2724 2719 2720 2721 +2633 1 2728 2729 2730 2725 +2634 1 2584 2585 2586 2581 +2635 1 2774 2773 2778 2777 +2636 1 2778 2773 2774 2775 +2637 1 2776 2777 2778 2773 +2638 1 2775 2776 2777 2778 +2639 1 2732 2731 2736 2735 +2640 1 2736 2731 2732 2733 +2641 1 2732 2733 2734 2735 +2642 1 2738 2737 2742 2741 +2643 1 2742 2737 2738 2739 +2644 1 2740 2741 2742 2737 +2645 1 2738 2739 2740 2741 +2646 1 2739 2740 2741 2742 +2647 1 2733 2734 2735 2736 +2648 1 2734 2735 2736 2731 +2649 1 2737 2738 2739 2740 +2650 1 2779 2780 2781 2782 +2651 1 2780 2781 2782 2783 +2652 1 2781 2782 2783 2784 +2653 1 2974 2975 2976 2971 +2654 1 2731 2732 2733 2734 +2655 1 2690 2689 2694 2693 +2656 1 2694 2689 2690 2691 +2657 1 2689 2690 2691 2692 +2658 1 981 982 983 984 +2659 1 2787 2788 2789 2790 +2660 1 2792 2791 2796 2795 +2661 1 2796 2791 2792 2793 +2662 1 2791 2792 2793 2794 +2663 1 2792 2793 2794 2795 +2664 1 2793 2794 2795 2796 +2665 1 2794 2795 2796 2791 +2666 1 2788 2789 2790 2785 +2667 1 2834 2835 2836 2837 +2668 1 2842 2843 2844 2839 +2669 1 2841 2842 2843 2844 +2670 1 2558 2557 2562 2561 +2671 1 2562 2557 2558 2559 +2672 1 2798 2797 2802 2801 +2673 1 2802 2797 2798 2799 +2674 1 2797 2798 2799 2800 +2675 1 2798 2799 2800 2801 +2676 1 2799 2800 2801 2802 +2677 1 2800 2801 2802 2797 +2678 1 2846 2847 2848 2849 +2679 1 2804 2803 2808 2807 +2680 1 2808 2803 2804 2805 +2681 1 2803 2804 2805 2806 +2682 1 2804 2805 2806 2807 +2683 1 2805 2806 2807 2808 +2684 1 2806 2807 2808 2803 +2685 1 2812 2813 2814 2809 +2686 1 2811 2812 2813 2814 +2687 1 2859 2860 2861 2862 +2688 1 2860 2861 2862 2857 +2689 1 3002 3001 3006 3005 +2690 1 3006 3001 3002 3003 +2691 1 2998 2999 3000 2995 +2692 1 3004 3005 3006 3001 +2693 1 2626 2627 2628 2623 +2694 1 2810 2809 2814 2813 +2695 1 2814 2809 2810 2811 +2696 1 2809 2810 2811 2812 +2697 1 2810 2811 2812 2813 +2698 1 2816 2815 2820 2819 +2699 1 2820 2815 2816 2817 +2700 1 2815 2816 2817 2818 +2701 1 2816 2817 2818 2819 +2702 1 2817 2818 2819 2820 +2703 1 2818 2819 2820 2815 +2704 1 2773 2774 2775 2776 +2705 1 2822 2821 2826 2825 +2706 1 2826 2821 2822 2823 +2707 1 2821 2822 2823 2824 +2708 1 2822 2823 2824 2825 +2709 1 2823 2824 2825 2826 +2710 1 2824 2825 2826 2821 +2711 1 2869 2870 2871 2872 +2712 1 2870 2871 2872 2873 +2713 1 2774 2775 2776 2777 +2714 1 2780 2779 2784 2783 +2715 1 2784 2779 2780 2781 +2716 1 2782 2783 2784 2779 +2717 1 2786 2787 2788 2789 +2718 1 2786 2785 2790 2789 +2719 1 2790 2785 2786 2787 +2720 1 2785 2786 2787 2788 +2721 1 2828 2827 2832 2831 +2722 1 2832 2827 2828 2829 +2723 1 2827 2828 2829 2830 +2724 1 2828 2829 2830 2831 +2725 1 2829 2830 2831 2832 +2726 1 2830 2831 2832 2827 +2727 1 3022 3023 3024 3019 +2728 1 2835 2836 2837 2838 +2729 1 2836 2837 2838 2833 +2730 1 1159 1160 1161 1162 +2731 1 2643 2644 2645 2646 +2732 1 962 961 966 965 +2733 1 966 961 962 963 +2734 1 1160 1161 1162 1163 +2735 1 1682 1681 1686 1685 +2736 1 1686 1681 1682 1683 +2737 1 1160 1159 1164 1163 +2738 1 1164 1159 1160 1161 +2739 1 2834 2833 2838 2837 +2740 1 2838 2833 2834 2835 +2741 1 2833 2834 2835 2836 +2742 1 2839 2840 2841 2842 +2743 1 1154 1155 1156 1157 +2744 1 1155 1156 1157 1158 +2745 1 2840 2841 2842 2843 +2746 1 1153 1154 1155 1156 +2747 1 1154 1153 1158 1157 +2748 1 1158 1153 1154 1155 +2749 1 2414 2413 2418 2417 +2750 1 2418 2413 2414 2415 +2751 1 2840 2839 2844 2843 +2752 1 2844 2839 2840 2841 +2753 1 1162 1163 1164 1159 +2754 1 2846 2845 2850 2849 +2755 1 2850 2845 2846 2847 +2756 1 2845 2846 2847 2848 +2757 1 2847 2848 2849 2850 +2758 1 2848 2849 2850 2845 +2759 1 1166 1165 1170 1169 +2760 1 1170 1165 1166 1167 +2761 1 1165 1166 1167 1168 +2762 1 2852 2853 2854 2855 +2763 1 2852 2851 2856 2855 +2764 1 2856 2851 2852 2853 +2765 1 2851 2852 2853 2854 +2766 1 1161 1162 1163 1164 +2767 1 1166 1167 1168 1169 +2768 1 1167 1168 1169 1170 +2769 1 2667 2668 2669 2670 +2770 1 2668 2669 2670 2665 +2771 1 2858 2859 2860 2861 +2772 1 2853 2854 2855 2856 +2773 1 2660 2661 2662 2663 +2774 1 2661 2662 2663 2664 +2775 1 2666 2667 2668 2669 +2776 1 2665 2666 2667 2668 +2777 1 2854 2855 2856 2851 +2778 1 2858 2857 2862 2861 +2779 1 2862 2857 2858 2859 +2780 1 2857 2858 2859 2860 +2781 1 2864 2863 2868 2867 +2782 1 2868 2863 2864 2865 +2783 1 2863 2864 2865 2866 +2784 1 2864 2865 2866 2867 +2785 1 2865 2866 2867 2868 +2786 1 2866 2867 2868 2863 +2787 1 1184 1183 1188 1187 +2788 1 1188 1183 1184 1185 +2789 1 1183 1184 1185 1186 +2790 1 1190 1191 1192 1193 +2791 1 1156 1157 1158 1153 +2792 1 2870 2869 2874 2873 +2793 1 2874 2869 2870 2871 +2794 1 2871 2872 2873 2874 +2795 1 2872 2873 2874 2869 +2796 1 1190 1189 1194 1193 +2797 1 1194 1189 1190 1191 +2798 1 1189 1190 1191 1192 +2799 1 1345 1346 1347 1348 +2800 1 1192 1193 1194 1189 +2801 1 1006 1007 1008 1003 +2802 1 2914 2915 2916 2911 +2803 1 2726 2725 2730 2729 +2804 1 2730 2725 2726 2727 +2805 1 2876 2875 2880 2879 +2806 1 2880 2875 2876 2877 +2807 1 2875 2876 2877 2878 +2808 1 2876 2877 2878 2879 +2809 1 2877 2878 2879 2880 +2810 1 2878 2879 2880 2875 +2811 1 1198 1199 1200 1195 +2812 1 1593 1594 1595 1596 +2813 1 2936 2937 2938 2939 +2814 1 2935 2936 2937 2938 +2815 1 2936 2935 2940 2939 +2816 1 2940 2935 2936 2937 +2817 1 2354 2355 2356 2357 +2818 1 1711 1712 1713 1714 +2819 1 1594 1595 1596 1591 +2820 1 1604 1605 1606 1607 +2821 1 1544 1543 1548 1547 +2822 1 1548 1543 1544 1545 +2823 1 2893 2894 2895 2896 +2824 1 2948 2949 2950 2951 +2825 1 2949 2950 2951 2952 +2826 1 2944 2945 2946 2941 +2827 1 2943 2944 2945 2946 +2828 1 2942 2943 2944 2945 +2829 1 2941 2942 2943 2944 +2830 1 2942 2941 2946 2945 +2831 1 2946 2941 2942 2943 +2832 1 2894 2893 2898 2897 +2833 1 2898 2893 2894 2895 +2834 1 2950 2951 2952 2947 +2835 1 2894 2895 2896 2897 +2836 1 1600 1601 1602 1597 +2837 1 1557 1558 1559 1560 +2838 1 1609 1610 1611 1612 +2839 1 2446 2447 2448 2443 +2840 1 2947 2948 2949 2950 +2841 1 2948 2947 2952 2951 +2842 1 2952 2947 2948 2949 +2843 1 2899 2900 2901 2902 +2844 1 1556 1555 1560 1559 +2845 1 1560 1555 1556 1557 +2846 1 1604 1603 1608 1607 +2847 1 1608 1603 1604 1605 +2848 1 2900 2901 2902 2903 +2849 1 1610 1611 1612 1613 +2850 1 1555 1556 1557 1558 +2851 1 1568 1569 1570 1571 +2852 1 2956 2957 2958 2953 +2853 1 2955 2956 2957 2958 +2854 1 2954 2955 2956 2957 +2855 1 2962 2963 2964 2959 +2856 1 2961 2962 2963 2964 +2857 1 2953 2954 2955 2956 +2858 1 2954 2953 2958 2957 +2859 1 2958 2953 2954 2955 +2860 1 1569 1570 1571 1572 +2861 1 1564 1565 1566 1561 +2862 1 1568 1567 1572 1571 +2863 1 1572 1567 1568 1569 +2864 1 1567 1568 1569 1570 +2865 1 1570 1571 1572 1567 +2866 1 2968 2969 2970 2965 +2867 1 2967 2968 2969 2970 +2868 1 2966 2967 2968 2969 +2869 1 2965 2966 2967 2968 +2870 1 2966 2965 2970 2969 +2871 1 2970 2965 2966 2967 +2872 1 2492 2493 2494 2495 +2873 1 2973 2974 2975 2976 +2874 1 2924 2923 2928 2927 +2875 1 2928 2923 2924 2925 +2876 1 1623 1624 1625 1626 +2877 1 1622 1623 1624 1625 +2878 1 2923 2924 2925 2926 +2879 1 2884 2885 2886 2881 +2880 1 2971 2972 2973 2974 +2881 1 2972 2971 2976 2975 +2882 1 2976 2971 2972 2973 +2883 1 982 983 984 979 +2884 1 2972 2973 2974 2975 +2885 1 2929 2930 2931 2932 +2886 1 2930 2929 2934 2933 +2887 1 2934 2929 2930 2931 +2888 1 2926 2927 2928 2923 +2889 1 1537 1538 1539 1540 +2890 1 2925 2926 2927 2928 +2891 1 2924 2925 2926 2927 +2892 1 2986 2987 2988 2983 +2893 1 2985 2986 2987 2988 +2894 1 2984 2985 2986 2987 +2895 1 2983 2984 2985 2986 +2896 1 2984 2983 2988 2987 +2897 1 2988 2983 2984 2985 +2898 1 1640 1639 1644 1643 +2899 1 1644 1639 1640 1641 +2900 1 1639 1640 1641 1642 +2901 1 2498 2497 2502 2501 +2902 1 2502 2497 2498 2499 +2903 1 2696 2697 2698 2699 +2904 1 3033 3034 3035 3036 +2905 1 3032 3033 3034 3035 +2906 1 2977 2978 2979 2980 +2907 1 2978 2977 2982 2981 +2908 1 2982 2977 2978 2979 +2909 1 3031 3032 3033 3034 +2910 1 2992 2993 2994 2989 +2911 1 2991 2992 2993 2994 +2912 1 2990 2991 2992 2993 +2913 1 2989 2990 2991 2992 +2914 1 2990 2989 2994 2993 +2915 1 2994 2989 2990 2991 +2916 1 1665 1666 1667 1668 +2917 1 2995 2996 2997 2998 +2918 1 2996 2995 3000 2999 +2919 1 3000 2995 2996 2997 +2920 1 3040 3041 3042 3037 +2921 1 1646 1645 1650 1649 +2922 1 1650 1645 1646 1647 +2923 1 1605 1606 1607 1608 +2924 1 3002 3003 3004 3005 +2925 1 1606 1607 1608 1603 +2926 1 1653 1654 1655 1656 +2927 1 3001 3002 3003 3004 +2928 1 2997 2998 2999 3000 +2929 1 2996 2997 2998 2999 +2930 1 3003 3004 3005 3006 +2931 1 1654 1655 1656 1651 +2932 1 2960 2959 2964 2963 +2933 1 2964 2959 2960 2961 +2934 1 1616 1617 1618 1619 +2935 1 1617 1618 1619 1620 +2936 1 2960 2961 2962 2963 +2937 1 2959 2960 2961 2962 +2938 1 1663 1664 1665 1666 +2939 1 3007 3008 3009 3010 +2940 1 3008 3007 3012 3011 +2941 1 3012 3007 3008 3009 +2942 1 1664 1665 1666 1667 +2943 1 1616 1615 1620 1619 +2944 1 1620 1615 1616 1617 +2945 1 1618 1619 1620 1615 +2946 1 3008 3009 3010 3011 +2947 1 3016 3017 3018 3013 +2948 1 1645 1646 1647 1648 +2949 1 3010 3011 3012 3007 +2950 1 3009 3010 3011 3012 +2951 1 3015 3016 3017 3018 +2952 1 3014 3015 3016 3017 +2953 1 3013 3014 3015 3016 +2954 1 3014 3013 3018 3017 +2955 1 3018 3013 3014 3015 +2956 1 1670 1669 1674 1673 +2957 1 1674 1669 1670 1671 +2958 1 1681 1682 1683 1684 +2959 1 3021 3022 3023 3024 +2960 1 2932 2933 2934 2929 +2961 1 2931 2932 2933 2934 +2962 1 2930 2931 2932 2933 +2963 1 2980 2981 2982 2977 +2964 1 2979 2980 2981 2982 +2965 1 3068 3067 3072 3071 +2966 1 3072 3067 3068 3069 +2967 1 3020 3021 3022 3023 +2968 1 3019 3020 3021 3022 +2969 1 3020 3019 3024 3023 +2970 1 3024 3019 3020 3021 +2971 1 2978 2979 2980 2981 +2972 1 3067 3068 3069 3070 +2973 1 3027 3028 3029 3030 +2974 1 1682 1683 1684 1685 +2975 1 1347 1348 1349 1350 +2976 1 3034 3035 3036 3031 +2977 1 1346 1347 1348 1349 +2978 1 1687 1688 1689 1690 +2979 1 1688 1687 1692 1691 +2980 1 1692 1687 1688 1689 +2981 1 3032 3031 3036 3035 +2982 1 3036 3031 3032 3033 +2983 1 3028 3029 3030 3025 +2984 1 1352 1353 1354 1355 +2985 1 1690 1691 1692 1687 +2986 1 1351 1352 1353 1354 +2987 1 973 974 975 976 +2988 1 3039 3040 3041 3042 +2989 1 3038 3039 3040 3041 +2990 1 1358 1359 1360 1361 +2991 1 1693 1694 1695 1696 +2992 1 1688 1689 1690 1691 +2993 1 1694 1695 1696 1697 +2994 1 1689 1690 1691 1692 +2995 1 3037 3038 3039 3040 +2996 1 3038 3037 3042 3041 +2997 1 3042 3037 3038 3039 +2998 1 1694 1693 1698 1697 +2999 1 1698 1693 1694 1695 +3000 1 1696 1697 1698 1693 +3001 1 1695 1696 1697 1698 +3002 1 3044 3043 3048 3047 +3003 1 3048 3043 3044 3045 +3004 1 3050 3049 3054 3053 +3005 1 3054 3049 3050 3051 +3006 1 3046 3047 3048 3043 +3007 1 3045 3046 3047 3048 +3008 1 3044 3045 3046 3047 +3009 1 3043 3044 3045 3046 +3010 1 1364 1365 1366 1367 +3011 1 1363 1364 1365 1366 +3012 1 3052 3053 3054 3049 +3013 1 1705 1706 1707 1708 +3014 1 1610 1609 1614 1613 +3015 1 1614 1609 1610 1611 +3016 1 1348 1349 1350 1345 +3017 1 1352 1351 1356 1355 +3018 1 1356 1351 1352 1353 +3019 1 805 806 807 808 +3020 1 1714 1715 1716 1711 +3021 1 1640 1641 1642 1643 +3022 1 3049 3050 3051 3052 +3023 1 1370 1369 1374 1373 +3024 1 1374 1369 1370 1371 +3025 1 3058 3059 3060 3055 +3026 1 3057 3058 3059 3060 +3027 1 3056 3057 3058 3059 +3028 1 3055 3056 3057 3058 +3029 1 3056 3055 3060 3059 +3030 1 3060 3055 3056 3057 +3031 1 3051 3052 3053 3054 +3032 1 3050 3051 3052 3053 +3033 1 1370 1371 1372 1373 +3034 1 1369 1370 1371 1372 +3035 1 1712 1711 1716 1715 +3036 1 1716 1711 1712 1713 +3037 1 46 47 48 43 +3038 1 1376 1377 1378 1379 +3039 1 1719 1720 1721 1722 +3040 1 1718 1719 1720 1721 +3041 1 776 775 780 779 +3042 1 780 775 776 777 +3043 1 2311 2312 2313 2314 +3044 1 1381 1382 1383 1384 +3045 1 1382 1381 1386 1385 +3046 1 1386 1381 1382 1383 +3047 1 1382 1383 1384 1385 +3048 1 3064 3065 3066 3061 +3049 1 3063 3064 3065 3066 +3050 1 3062 3063 3064 3065 +3051 1 3061 3062 3063 3064 +3052 1 3062 3061 3066 3065 +3053 1 3066 3061 3062 3063 +3054 1 1384 1385 1386 1381 +3055 1 1383 1384 1385 1386 +3056 1 1004 1003 1008 1007 +3057 1 1008 1003 1004 1005 +3058 1 1717 1718 1719 1720 +3059 1 3025 3026 3027 3028 +3060 1 3068 3069 3070 3071 +3061 1 3069 3070 3071 3072 +3062 1 3026 3027 3028 3029 +3063 1 3026 3025 3030 3029 +3064 1 3030 3025 3026 3027 +3065 1 806 805 810 809 +3066 1 810 805 806 807 +3067 1 2882 2883 2884 2885 +3068 1 993 994 995 996 +3069 1 811 812 813 814 +3070 1 1563 1564 1565 1566 +3071 1 2462 2463 2464 2465 +3072 1 2373 2374 2375 2376 diff --git a/examples/template/template-mix.data b/examples/template/template-mix.data new file mode 100644 index 0000000000..c4b2ebab9a --- /dev/null +++ b/examples/template/template-mix.data @@ -0,0 +1,7783 @@ +LAMMPS data file via write_data, version 22 Oct 2020, timestep = 2500 + +3872 atoms +2 atom types +1 bond types +1 angle types +1 dihedral types + +-24.0 24.0 xlo xhi +-24.0 24.0 ylo yhi +-24.0 24.0 zlo zhi + +Masses + +1 14.027 +2 16.043 + +Pair Coeffs # lj/cut + +1 0.118 3.905 +2 0.294 3.73 + +Bond Coeffs # harmonic + +1 260 1.526 + +Angle Coeffs # harmonic + +1 63 112.4 + +Dihedral Coeffs # harmonic + +1 2 1 3 + +Atoms # template + +601 101 1 1 1 -1.087996679257739 -23.763201727945184 -5.490974874651076 0 0 0 +1968 328 1 6 1 17.380864125922855 -0.15934377187330695 -14.282560200070703 0 0 0 +55 10 1 1 1 -16.866982326556975 -18.98433242231812 -22.90866336623191 0 0 0 +246 41 1 6 1 -22.806791359242165 -18.98834583424509 -16.281238736867802 0 0 0 +247 42 1 1 1 -19.510137799931012 -17.185486705325555 -18.071157243319355 0 0 0 +248 42 1 2 1 -18.79984986365888 -17.019822149325375 -16.77467894984919 0 0 0 +251 42 1 5 1 -18.62361707040709 -19.38459115747375 -18.62342757280935 0 0 0 +252 42 1 6 1 -18.882600629495077 -18.001361054570765 -19.144973883717636 0 0 0 +3186 0 0 0 2 -21.22745669109329 -21.266969122142054 -19.878139528646663 0 0 0 +60 10 1 6 1 -15.395415466645606 -19.221131780547672 -22.85619111204603 0 0 0 +241 41 1 1 1 -23.935673819240257 -19.427397922207962 -17.22280988841837 0 0 0 +242 41 1 2 1 -23.836382695792274 -18.7238305404957 -18.537564392067694 0 0 0 +202 34 1 4 1 -17.483331628128706 -22.812475220445318 -16.792371219338282 0 0 0 +201 34 1 3 1 -17.803974109967687 -23.464734674352332 -18.145443117438866 0 0 0 +245 41 1 5 1 -22.828303228464268 -17.472037748962585 -16.075425322164204 0 0 0 +50 9 1 2 1 -20.69713003436234 -18.62728681403936 -22.608306993429768 0 0 0 +49 9 1 1 1 -22.182242902479718 -18.72027939820593 -22.301791681574972 0 0 0 +243 41 1 3 1 -23.901616929645385 -17.245058507174978 -18.289085421416747 0 0 0 +244 41 1 4 1 -22.789391507315052 -16.76135849977399 -17.41454060515926 0 0 0 +56 10 1 2 1 -17.7068102403434 -20.246757409973526 -22.962480599416015 0 0 0 +249 42 1 3 1 -18.510430804992005 -18.429220332439286 -16.326039078554427 0 0 0 +213 36 1 3 1 -9.667947839697714 -23.48427243724091 -18.885328275738058 0 0 0 +253 43 1 1 1 -14.750121847022669 -18.628304400624568 -18.4944504422974 0 0 0 +254 43 1 2 1 -14.00058629771486 -19.60577255724529 -17.564782049021023 0 0 0 +255 43 1 3 1 -12.858872538936469 -20.345099574994283 -18.27360320529649 0 0 0 +256 43 1 4 1 -11.83211898413238 -19.428810691742697 -18.884268362195527 0 0 0 +257 43 1 5 1 -12.541605782331942 -18.38969602703497 -19.699082650089927 0 0 0 +258 43 1 6 1 -13.72349361700717 -17.64493818142929 -19.02729757663812 0 0 0 +3090 0 0 0 2 -15.100820728893705 -21.71982220244612 -20.463684617333826 0 0 0 +3200 0 0 0 2 -11.381239138173033 -20.1832538454703 -22.626525775301893 0 0 0 +3219 0 0 0 2 -8.682258876040592 -18.496120782614405 -20.82410475255296 0 0 0 +1936 323 1 4 1 -12.194622523456982 -0.20118347866627784 -13.1695120505129 0 0 0 +259 44 1 1 1 -7.165925126765864 -17.74867118173334 -16.941784830854804 0 0 0 +214 36 1 4 1 -9.341577598320452 -22.050457402654775 -18.593392620105416 0 0 0 +215 36 1 5 1 -8.320929498181668 -21.941200336792615 -17.465303737823913 0 0 0 +61 11 1 1 1 -12.966406097646843 -15.30217974838865 -22.100236587455328 0 0 0 +611 102 1 5 1 6.360223149410101 -23.860558575673924 -7.864752127966078 0 0 0 +22 4 1 4 1 -5.842179102156164 -20.53535840131634 -22.765033123149024 0 0 0 +173 29 1 5 1 -0.5370613619664923 -4.9360339593366485 -23.726847626387368 0 0 0 +261 44 1 3 1 -6.0166886790472605 -19.60877926086168 -15.601383432708866 0 0 0 +262 44 1 4 1 -4.85752963485734 -18.678548621882904 -15.633806955292984 0 0 0 +263 44 1 5 1 -4.573456788344714 -18.1772516140454 -17.055476170148122 0 0 0 +264 44 1 6 1 -5.871053726784158 -17.795151562011334 -17.81837855265885 0 0 0 +265 45 1 1 1 -0.3415154002329032 -19.053384274393817 -19.432560490518505 0 0 0 +270 45 1 6 1 -1.4874667789129568 -18.272225231860986 -19.894267009425484 0 0 0 +3118 0 0 0 2 -4.550548680875299 -15.189775237114107 -20.331599638151776 0 0 0 +3141 0 0 0 2 -3.9577121932900687 -20.84697156647984 -19.565965306216537 0 0 0 +21 4 1 3 1 -6.467204063809296 -21.427986119678625 -21.71219426266251 0 0 0 +20 4 1 2 1 -7.72689608560336 -22.070504667468942 -22.23079911251494 0 0 0 +30 5 1 6 1 -1.6041541039814942 -21.931404511677535 -21.83247938814364 0 0 0 +268 45 1 4 1 -1.2732687147579924 -17.312401734430924 -17.579855679378014 0 0 0 +269 45 1 5 1 -1.6165820312459187 -17.033148306412524 -19.076638610350905 0 0 0 +29 5 1 5 1 -0.46404077514530434 -21.07465420086968 -22.403565328008984 0 0 0 +1963 328 1 1 1 18.43769171151929 -0.0831859955728953 -13.176148774585736 0 0 0 +3387 0 0 0 2 -3.3998662302083926 -16.85329030197125 -23.300981819542507 0 0 1 +23 4 1 5 1 -5.454235846684014 -21.340560923721643 -23.976165374668447 0 0 0 +216 36 1 6 1 -7.098313501631894 -22.750742053702062 -17.813317197504322 0 0 0 +19 4 1 1 1 -7.377298017083007 -22.94738103460055 -23.390877963430118 0 0 0 +54 9 1 6 1 -22.931352492234147 -17.544835047773976 -22.921620816312895 0 0 0 +266 45 1 2 1 0.6980219425397892 -18.162048873412452 -18.886225035550094 0 0 0 +267 45 1 3 1 0.26595150262207995 -17.359569071229497 -17.664910149951677 0 0 0 +79 14 1 1 1 5.8741506955977885 -18.446790454803082 -21.703055391090672 0 0 0 +80 14 1 2 1 5.687788172072199 -17.030894559763393 -21.171725973998473 0 0 0 +81 14 1 3 1 7.116603889315563 -16.40994072665067 -20.989702082026174 0 0 0 +222 37 1 6 1 0.6758323416490015 -22.600260539739075 -18.548375079038262 0 0 0 +225 38 1 3 1 5.254485651890854 -21.515400730418733 -18.519407869210742 0 0 0 +226 38 1 4 1 6.418571701895713 -21.61814820897104 -19.459840620323675 0 0 0 +271 46 1 1 1 4.434054454359018 -17.526838973270586 -17.829487289496445 0 0 0 +273 46 1 3 1 4.865080495268602 -19.171436832465673 -16.00956473331422 0 0 0 +274 46 1 4 1 5.969192228408781 -18.261777823533073 -15.441563020560546 0 0 0 +275 46 1 5 1 6.570845087618996 -17.299715634005043 -16.48431158528889 0 0 0 +276 46 1 6 1 5.50532537142453 -16.574881947128738 -17.252677157653128 0 0 0 +3238 0 0 0 2 2.2610533270295767 -18.861237180451962 -23.05147465201366 0 0 0 +227 38 1 5 1 7.134581143764301 -22.982099265665976 -19.339688130015553 0 0 0 +82 14 1 4 1 8.052142094833908 -16.569402757797388 -22.14414507386909 0 0 0 +28 5 1 4 1 0.6844778405120807 -21.95099554954969 -22.891361325981272 0 0 0 +236 40 1 2 1 15.739857956901547 -22.96165122592697 -16.787421489213028 0 0 0 +217 37 1 1 1 -0.6652384241691073 -22.03092259031455 -17.880718229160493 0 0 0 +272 46 1 2 1 3.7971732253740123 -18.419666725590606 -16.771968092256742 0 0 0 +34 6 1 4 1 5.158072179904194 -21.767869477588544 -23.12315864196337 0 0 0 +2156 360 1 2 1 17.47768552584836 -4.4486969106917185 -5.828422921362608 0 0 0 +152 26 1 2 1 -18.39632920112078 -9.27526552315686 -23.421911456799414 0 0 0 +231 39 1 3 1 12.25676007445503 -21.893431271754103 -16.78745014688939 0 0 0 +277 47 1 1 1 10.389251787335038 -19.33132400794079 -20.861527632905865 0 0 0 +278 47 1 2 1 9.092927260776849 -19.70524290938632 -20.180675084737832 0 0 0 +279 47 1 3 1 9.302584722613743 -19.567579178389437 -18.701164796061303 0 0 0 +280 47 1 4 1 9.77543549795247 -18.17595372823452 -18.315972673304923 0 0 0 +281 47 1 5 1 11.02430824123047 -17.86369238781503 -19.061670512890547 0 0 0 +282 47 1 6 1 10.879990564565547 -17.938929764319628 -20.562012619752966 0 0 0 +3211 0 0 0 2 14.065492375035898 -20.661015810547724 -20.728296389393304 0 0 0 +284 48 1 2 1 15.231927541354898 -15.791262110203492 -17.817130132179464 0 0 0 +86 15 1 2 1 13.439646410707258 -17.441885901449854 -22.665529745543463 0 0 0 +38 7 1 2 1 10.110834389959845 -23.0387815148242 -21.51029924164808 0 0 0 +285 48 1 3 1 14.55118883890318 -16.961195057078406 -18.46670970502327 0 0 0 +286 48 1 4 1 14.176686125020609 -18.0343705402523 -17.436053815580443 0 0 0 +237 40 1 3 1 15.369940541364391 -23.276616720543114 -18.22639235847418 0 0 0 +232 39 1 4 1 11.6396408028552 -22.21558099548064 -18.110896900872095 0 0 0 +2157 360 1 3 1 18.613885066220433 -3.8522769051256023 -6.5942332465300435 0 0 0 +39 7 1 3 1 10.779651487722326 -22.46184464628643 -22.74098074577196 0 0 0 +3139 0 0 0 2 23.847062853540198 -22.25191712207437 -21.288428368099787 0 0 0 +283 48 1 1 1 16.405772165754865 -16.286824861029057 -17.036763128287767 0 0 0 +94 16 1 4 1 17.877878854889133 -18.98750300036896 -20.68469044128161 0 0 0 +95 16 1 5 1 17.58692047460557 -19.022780192993128 -22.16921733738069 0 0 0 +96 16 1 6 1 18.53171036222113 -18.098867723459932 -22.91543973020495 0 0 0 +238 40 1 4 1 16.54136785640678 -23.51887026859318 -19.109922727315986 0 0 0 +239 40 1 5 1 17.608020097857967 -22.468107660523728 -18.777255256729845 0 0 0 +287 48 1 5 1 15.372652959110289 -18.522180955594415 -16.648583499404015 0 0 0 +288 48 1 6 1 16.0362304554089 -17.335051884450777 -15.98941926697816 0 0 0 +3198 0 0 0 2 20.487394345636474 -21.063364774927166 -21.07849567808329 0 0 0 +44 8 1 2 1 17.17479777830636 -22.450691450124584 -22.868381301402835 0 0 0 +93 16 1 3 1 18.063199997350164 -17.60230709533651 -20.055414756514804 0 0 0 +240 40 1 6 1 18.095788573126793 -22.532340767651228 -17.347634274143854 0 0 0 +92 16 1 2 1 18.889689415612544 -16.631567402170063 -20.928419064597342 0 0 0 +91 16 1 1 1 18.478270773044283 -16.645880913996926 -22.378365104326097 0 0 0 +235 40 1 1 1 16.93525561339629 -22.028328398413574 -16.53830742962036 0 0 0 +3084 0 0 0 2 22.259525752984413 -16.48716996864971 -21.358215140424694 0 0 0 +3089 0 0 0 2 20.327104472084745 -16.099808637910183 -17.94701996375636 0 0 0 +3120 0 0 0 2 20.06922282039731 -19.499947205768546 -17.04685001545412 0 0 0 +83 14 1 5 1 7.985091637532755 -17.896151023249757 -22.88706763377447 0 0 0 +174 29 1 6 1 -0.48029633048382026 -3.657649574528279 -22.984517793925303 0 0 0 +198 33 1 6 1 23.238595553485773 -23.00554940687877 -17.756920321457486 -1 0 0 +2330 389 1 2 1 -1.813951132596185 -1.5944158126940604 -0.2806261803029715 0 0 0 +193 33 1 1 1 -23.459457020663752 -23.754090564783578 -17.877777224890803 0 0 0 +2113 353 1 1 1 22.881563111854355 -0.5435154145274035 -5.646945448091273 -1 0 0 +294 49 1 6 1 -23.92686631539383 -11.065962756783737 -18.806652165021923 0 0 0 +295 50 1 1 1 -17.258700357448415 -11.2082778586503 -17.733796540391005 0 0 0 +296 50 1 2 1 -17.557715308425948 -12.587571908851285 -18.302246849859976 0 0 0 +297 50 1 3 1 -18.24803365326155 -13.387845144883585 -17.263962524387246 0 0 0 +298 50 1 4 1 -19.58757975702388 -12.757274031109736 -16.91752439667696 0 0 0 +299 50 1 5 1 -19.516178515933248 -11.318147926520458 -16.578936348507245 0 0 0 +300 50 1 6 1 -18.630381149116896 -10.578526872521108 -17.5934284431579 0 0 0 +3105 0 0 0 2 -20.651600357185625 -15.038123991759274 -20.39082951146351 0 0 0 +3196 0 0 0 2 -15.600726595285646 -10.412086114910554 -21.093959751612303 0 0 0 +98 17 1 2 1 -21.985008755344847 -12.822499370927211 -23.9010611576017 0 0 0 +3075 0 0 0 2 -20.052733912074434 -11.721833859443594 -21.09200866128642 1 0 0 +3241 0 0 0 2 -23.11441896687447 -9.470419664944107 -22.723393746221802 0 0 0 +3251 0 0 0 2 -20.705065919203157 -8.319353974987896 -19.482461700727452 0 0 0 +289 49 1 1 1 -23.585045593795986 -12.142076423334927 -17.83400054712067 0 0 0 +153 26 1 3 1 -19.521409862412053 -8.321930346634998 -22.9980370581515 0 0 0 +290 49 1 2 1 -23.226357926856853 -13.425725586832588 -18.553748270811116 0 0 0 +104 18 1 2 1 -18.51628475226044 -14.849281256352375 -23.80339991748723 0 0 0 +114 19 1 6 1 -13.369841118546399 -10.56946056953362 -23.874640090035808 0 0 0 +64 11 1 4 1 -10.345592765296546 -15.0266575138332 -23.492690694223707 0 0 0 +3152 0 0 0 2 -8.725059710527066 -15.141279834093076 -19.310014914458243 0 0 0 +301 51 1 1 1 -11.895172932446377 -10.756310786132511 -17.46716055427971 0 0 0 +302 51 1 2 1 -11.133494858999732 -11.539931047068025 -18.51215886434899 0 0 0 +303 51 1 3 1 -11.850075769756938 -12.835032548858191 -18.87220319506992 0 0 0 +304 51 1 4 1 -13.241500501973897 -12.611607231151222 -19.401985371523224 0 0 0 +305 51 1 5 1 -13.965400295049237 -11.948343081425987 -18.262626879269163 0 0 0 +306 51 1 6 1 -13.362566410924657 -10.60944359266915 -17.934471890403437 0 0 0 +3091 0 0 0 2 -16.69068769849511 -15.247439791818989 -20.586379268041803 0 0 0 +3216 0 0 0 2 -11.832131027433219 -8.340666021104619 -20.337332918163455 0 0 0 +3195 0 0 0 2 -8.489056373444964 -8.650793309950053 -21.26076699397582 0 0 0 +62 11 1 2 1 -12.392389566206816 -13.939088168679612 -22.417662889747177 0 0 0 +3221 0 0 0 2 -15.049351030176991 -15.33667467782304 -16.333917851423863 0 0 0 +63 11 1 3 1 -10.883719128290018 -13.988364895316566 -22.49292082195837 0 0 0 +109 19 1 1 1 -11.900164960665416 -10.739099665219834 -23.569630176873623 0 0 0 +77 13 1 5 1 -0.43712604234448804 -13.57214592880892 -23.90031957156992 0 0 0 +3128 0 0 0 2 -7.4636313231024785 -12.237399047655414 -22.115766037080945 0 0 0 +3154 0 0 0 2 -1.3509165892422812 -12.871229640809336 -18.80877596229653 0 0 0 +617 103 1 5 1 11.8305822704063 -23.64581378108964 -7.10499607895913 0 0 0 +312 52 1 6 1 -7.3781108864199805 -10.5744977388174 -18.201668824818288 0 0 0 +124 21 1 4 1 -0.1685293806850675 -9.69427036751694 -23.307301327697 0 0 0 +307 52 1 1 1 -6.252831547393708 -9.628863666590867 -18.597028690446944 0 0 0 +308 52 1 2 1 -4.991999257369774 -10.323709162838673 -19.11443438297379 0 0 0 +309 52 1 3 1 -4.535283485217648 -11.404424737913885 -18.170016372527144 0 0 0 +310 52 1 4 1 -5.639611934679096 -12.391447017350737 -18.030455523194217 0 0 0 +311 52 1 5 1 -6.810334208626394 -11.733226624872048 -17.38777402356823 0 0 0 +3159 0 0 0 2 -1.003143130328786 -9.833565633729584 -16.82948525528399 0 0 0 +3169 0 0 0 2 -3.9169432518958525 -10.748755407916313 -22.59203448782904 0 0 0 +123 21 1 3 1 -0.9766990636154512 -8.96671588696572 -22.265130926299364 0 0 0 +595 100 1 1 1 -5.815761427896031 -23.517298223790213 -6.073240666479942 0 0 0 +25 5 1 1 1 -2.1691457676894967 -22.864236170977566 -22.937860357499268 0 0 0 +74 13 1 2 1 0.047096117785685274 -16.2850081004622 -22.76437915134053 0 0 0 +75 13 1 3 1 -0.5574087783740891 -15.186683627863525 -21.960420658291 0 0 0 +76 13 1 4 1 -1.3328887873671507 -14.203047694488712 -22.811965342444733 0 0 0 +122 21 1 2 1 -0.17965589639253404 -8.562455551904659 -21.04161996553083 0 0 0 +121 21 1 1 1 1.0747239838641558 -7.765746002545886 -21.40754014187618 0 0 0 +3106 0 0 0 2 2.598970370671464 -15.346455237978034 -20.186333889021 0 0 0 +131 22 1 5 1 6.09269581436696 -11.889786289128583 -22.94074628820554 0 0 0 +132 22 1 6 1 6.542063277837234 -13.247382990857101 -23.469743406070354 0 0 0 +319 54 1 1 1 6.450833466818098 -12.2851086902156 -19.400439387358688 0 0 0 +320 54 1 2 1 7.882316136430194 -11.867070198111977 -19.117455383789057 0 0 0 +321 54 1 3 1 7.896674492488535 -10.399500197233673 -18.803329973663715 0 0 0 +322 54 1 4 1 7.030428211399611 -10.102093120337415 -17.635358833668178 0 0 0 +323 54 1 5 1 5.603206184975172 -10.410627731416326 -17.991652749681723 0 0 0 +324 54 1 6 1 5.548247352632631 -11.897915958702812 -18.22298177629746 0 0 0 +3181 0 0 0 2 1.7397906245324661 -11.401219638700642 -20.264643416582025 0 0 0 +127 22 1 1 1 5.391449401960421 -14.234635867045027 -23.225530382845772 0 0 0 +130 22 1 4 1 4.800347365420875 -11.44467213237242 -23.59322374838858 0 0 0 +599 100 1 5 1 -5.903949449487669 -23.316072245894837 -3.491554095524493 0 0 0 +126 21 1 6 1 1.9433094247266065 -8.624609533180994 -22.366552330820596 0 0 0 +2315 386 1 5 1 -16.57695964331577 -0.8877965960781271 -2.1853412878898486 0 0 0 +3110 0 0 0 2 9.687618581472604 -14.411288316859347 -16.73218021942933 0 0 0 +325 55 1 1 1 11.84604905279261 -9.130374193588962 -18.847185336893624 0 0 0 +326 55 1 2 1 11.950156194476717 -10.223862427185008 -19.93609009810572 0 0 0 +327 55 1 3 1 12.748378842595331 -11.477869482045808 -19.46558426690787 0 0 0 +328 55 1 4 1 12.184565155871633 -12.04321298294691 -18.207931851409764 0 0 0 +329 55 1 5 1 12.150154422331775 -10.994473467102857 -17.110991475498874 0 0 0 +330 55 1 6 1 11.347231636720103 -9.750225255546173 -17.530662851259855 0 0 0 +3111 0 0 0 2 15.516787988008323 -14.466267653429671 -21.20912561873173 0 0 0 +3127 0 0 0 2 15.476708728390546 -10.084064729879048 -21.293142149107712 0 0 0 +3184 0 0 0 2 15.022197627674288 -8.469245466029335 -17.839894255320925 0 0 0 +3206 0 0 0 2 10.380692039234162 -13.77019945665642 -21.08998491521806 0 0 0 +3199 0 0 0 2 8.924621176668623 -9.671068291463678 -21.957795609519067 0 0 0 +33 6 1 3 1 4.824570385190625 -23.202724089143643 -22.814984973276704 0 0 0 +2118 353 1 6 1 21.89194493567448 -0.153620958594776 -6.712402746996115 -1 0 0 +40 7 1 4 1 9.758624765316531 -22.135597934480412 -23.795214708577294 0 0 0 +293 49 1 5 1 22.95124181381819 -11.488356619688432 -19.702319940926312 -1 0 0 +97 17 1 1 1 -23.309637015229885 -13.576368060506931 -23.84157743503899 0 0 0 +332 56 1 2 1 16.93634265601097 -12.920452425895762 -18.27381307717419 0 0 0 +139 24 1 1 1 19.60521980481797 -12.472387710070441 -23.562280587439442 0 0 0 +140 24 1 2 1 18.581268843435023 -11.415525744721757 -23.233413615984478 0 0 0 +2325 388 1 3 1 -5.386919764005071 -0.3255277817733274 -1.1863733590276373 0 0 0 +291 49 1 3 1 23.671535184939962 -13.867902187168506 -19.491067696990164 -1 0 0 +292 49 1 4 1 23.36372293420486 -12.73742901591861 -20.47216625188533 -1 0 0 +331 56 1 1 1 18.212890365442114 -13.506976044856245 -18.847375933200592 0 0 0 +333 56 1 3 1 17.212430342679284 -11.645061984855479 -17.443875465234328 0 0 0 +334 56 1 4 1 17.94371556661538 -10.54449527434601 -18.192637070804867 0 0 0 +335 56 1 5 1 19.223680110066546 -11.21500254308691 -18.7222855740051 0 0 0 +336 56 1 6 1 19.00100761066163 -12.458121911467439 -19.587544460656083 0 0 0 +3173 0 0 0 2 21.49614482872641 -9.16621562049908 -22.268413073601813 0 0 0 +795 133 1 3 1 1.1611230315936325 -23.480909276627408 -0.6048971839331866 0 0 0 +764 128 1 2 1 19.967384659172556 -6.662788856417323 -3.6270310195103543 0 0 0 +1547 258 1 5 1 -17.58961373471324 -0.04350398099598735 -23.068843887419817 0 0 0 +147 25 1 3 1 -22.34448960687321 -4.920816685290833 -21.959883052441057 0 0 0 +344 58 1 2 1 -17.613571617531612 -5.148576351700703 -17.86717011992375 0 0 0 +345 58 1 3 1 -17.083275323260356 -4.443995919140898 -19.14715966269285 0 0 0 +346 58 1 4 1 -16.925819043858592 -5.391661373187259 -20.362308764425887 0 0 0 +347 58 1 5 1 -16.038318543990886 -6.544065747158439 -19.94044093768304 0 0 0 +348 58 1 6 1 -16.609342332912544 -7.317534583918468 -18.80320367506517 0 0 0 +1546 258 1 4 1 -18.31670303931481 -1.3797474197215052 -22.959888736820208 0 0 0 +3229 0 0 0 2 -20.54174115494792 -2.905673107446546 -19.11502906991983 0 0 0 +148 25 1 4 1 -22.1013531370462 -3.619422036382568 -22.740113874479707 0 0 0 +343 58 1 1 1 -16.724871311541982 -6.3608743158231 -17.655358968707866 0 0 0 +1765 295 1 1 1 10.551613019142437 -0.4716154892784534 -17.681937137823805 0 0 0 +146 25 1 2 1 -23.500982761834873 -5.734516096213225 -22.52364496929881 0 0 0 +387 65 1 3 1 23.87687008971806 -23.89505692539043 -11.253190967487164 -1 0 0 +1740 290 1 6 1 -16.244294065789905 -0.46269704226216224 -20.049151907517494 0 0 0 +1744 291 1 4 1 -9.522957320662846 -2.8321935159494305 -17.656292511593634 0 0 0 +3182 0 0 0 2 -13.248362585145282 -7.198564085594576 -17.3451951874102 0 0 0 +3158 0 0 0 2 -14.040573452253051 -7.054570775272596 -22.675682874306712 0 0 0 +349 59 1 1 1 -11.136486609285669 -2.6275058597552317 -22.209881520357833 0 0 0 +350 59 1 2 1 -12.343319870882723 -1.9938482427759423 -21.54465153392769 0 0 0 +351 59 1 3 1 -13.386981488804413 -3.081603495047045 -21.419413158193475 0 0 0 +352 59 1 4 1 -12.877128320349989 -4.302537987944108 -20.624258718471154 0 0 0 +353 59 1 5 1 -11.605747080971058 -4.849825266912996 -21.20657572778943 0 0 0 +354 59 1 6 1 -10.567675353318483 -3.7628484090577468 -21.339598689169136 0 0 0 +1741 291 1 1 1 -12.167709793941615 -1.780273907947206 -16.850443787541227 0 0 0 +163 28 1 1 1 -7.4160593726853685 -4.460924129338808 -23.75055526276982 0 0 0 +355 60 1 1 1 -9.080968757280345 -7.611054794852567 -16.79735105441277 0 0 0 +360 60 1 6 1 -8.88479065139087 -6.744655543723828 -18.006705326788055 0 0 0 +1743 291 1 3 1 -10.739803303634327 -3.7628072197109037 -17.478127081820492 0 0 0 +359 60 1 5 1 -7.43595798100409 -6.284959237867622 -18.056153501712387 0 0 0 +1742 291 1 2 1 -11.803856310467852 -3.211446831247152 -16.516285419343408 0 0 0 +2114 353 1 2 1 -23.666229384621925 -0.7596867150905211 -6.171136752817361 0 0 0 +1745 291 1 5 1 -9.970731377788015 -1.384434472901262 -17.858761987275408 0 0 0 +1746 291 1 6 1 -10.960848993415992 -0.8947170350134978 -16.76294713577132 0 0 0 +169 29 1 1 1 -1.6020839932244728 -2.7651195953589256 -23.49860763389197 0 0 0 +3263 0 0 0 2 -3.4825678388854975 -7.2360113625617215 -19.760471106032707 0 0 0 +164 28 1 2 1 -7.5342628989869596 -5.520781386395288 -22.665536707965202 0 0 0 +172 29 1 4 1 -1.7802227701519906 -5.706653957684616 -23.380821754260015 0 0 0 +166 28 1 4 1 -6.443177944769098 -3.975273048683047 -20.95850708958942 0 0 0 +165 28 1 3 1 -6.5103182924013705 -5.348686554754282 -21.574536684136252 0 0 0 +168 28 1 6 1 -7.371886629962083 -3.0716976352039493 -23.127230185044663 0 0 0 +357 60 1 3 1 -7.150385706478865 -6.413182413921243 -15.565470990056333 0 0 0 +358 60 1 4 1 -6.941792996227384 -5.5825597978634285 -16.798936326372928 0 0 0 +361 61 1 1 1 -0.5830776533632546 -4.519105788026014 -19.460483436473798 0 0 0 +365 61 1 5 1 -0.6765464309195843 -5.631229737229268 -17.251504224168144 0 0 0 +1747 292 1 1 1 -3.5387072750069146 -1.1825349057271388 -19.597478683352946 0 0 0 +1751 292 1 5 1 -4.954299824912713 -2.414424419259803 -17.77105265611548 0 0 0 +1752 292 1 6 1 -3.5951837665500297 -1.8852807595941266 -18.25911279442825 0 0 0 +170 29 1 2 1 -2.8737010878246263 -3.4100288259604836 -22.988367327262793 0 0 0 +171 29 1 3 1 -3.034730350937003 -4.815877509055233 -23.57336509649446 0 0 0 +362 61 1 2 1 -0.16688660238041245 -3.2263064033119075 -18.75909890666203 0 0 0 +363 61 1 3 1 -0.6424227230562658 -3.1836484698345355 -17.311026461140308 0 0 0 +167 28 1 5 1 -6.291889927507257 -2.924866940256142 -22.065811663694532 0 0 0 +364 61 1 4 1 -0.13386723035064782 -4.3843916164370915 -16.561510150084615 0 0 0 +2331 389 1 3 1 -0.3695431607287928 -1.38686683974977 -0.01715545477467575 0 0 0 +1769 295 1 5 1 12.835886126103393 -0.14452121175301424 -18.66758543411578 0 0 0 +1750 292 1 4 1 -5.881004475361282 -1.212916376900978 -17.684202208625965 0 0 0 +3162 0 0 0 2 3.2939729432740226 -7.687942118854753 -18.419667803100488 0 0 0 +3308 0 0 0 2 5.321272263609466 -8.523615419209026 -21.28436690630209 0 0 1 +366 61 1 6 1 -0.13188974010422816 -5.679113681723753 -18.630322411421925 0 0 0 +370 62 1 4 1 8.305534997775151 -4.819249371564056 -16.97828421868991 0 0 0 +1760 294 1 2 1 4.873202931764606 -1.188903397915058 -18.92157735983211 0 0 0 +1761 294 1 3 1 6.220180429409011 -1.6747776603783116 -18.44983672441239 0 0 0 +3201 0 0 0 2 2.677827596813606 -2.233677785425361 -21.312727344951988 0 0 0 +3247 0 0 0 2 3.2687166927876063 -4.152827758569936 -17.189643742296894 0 0 0 +3253 0 0 0 2 5.608103414789173 -4.702455301045534 -20.0329540127198 0 0 0 +3512 0 0 0 2 7.424479594858641 -1.5415892546660277 -21.52835103323925 0 0 0 +151 26 1 1 1 -17.13639746476139 -8.467438337380704 -23.85872121607272 0 0 0 +1967 328 1 5 1 16.075727645415068 -0.7572764477961614 -13.824641176814714 0 0 0 +3375 0 0 0 2 3.5460761016980675 -5.068032105028075 -23.50574078419801 0 0 1 +176 30 1 2 1 8.128208607254853 -6.387489646622245 -23.263787349840623 0 0 0 +2145 358 1 3 1 5.361460339280895 -0.04082426363806255 -7.93867722941194 0 0 0 +184 31 1 4 1 14.140242946899264 -6.694640206435025 -23.42031679792691 0 0 0 +368 62 1 2 1 8.425674695425865 -6.692153278707812 -18.549202389107815 0 0 0 +369 62 1 3 1 8.630223247454328 -6.284975412530915 -17.08970687345479 0 0 0 +371 62 1 5 1 9.287884680123062 -4.002634648272004 -17.794192729987437 0 0 0 +1577 263 1 5 1 13.10254166164114 -0.9562373442479447 -22.242738928783126 0 0 0 +1575 263 1 3 1 12.845401145347825 -3.411918192453834 -22.372713145477757 0 0 0 +367 62 1 1 1 9.364638476191555 -5.877543162192374 -19.405464256526052 0 0 0 +372 62 1 6 1 9.212764141544323 -4.356883810125803 -19.254035856010958 0 0 0 +1578 263 1 6 1 11.602259722834157 -0.8799517283678984 -22.251485548298298 0 0 0 +1748 292 1 2 1 -4.546027989765392 -0.05547850407583511 -19.525385941386666 0 0 0 +182 31 1 2 1 11.702112059510673 -7.18420971170296 -22.77208756047905 0 0 0 +781 131 1 1 1 -9.632455007408351 -23.60928003044595 -0.625971287368069 0 0 0 +373 63 1 1 1 12.195252681251375 -5.146486917980029 -15.597037795596666 0 0 0 +374 63 1 2 1 12.724396650800394 -5.779646681009837 -16.869380372302267 0 0 0 +375 63 1 3 1 12.92283658739014 -4.782506364710178 -17.966342603599212 0 0 0 +376 63 1 4 1 13.819372101416876 -3.660110082118929 -17.427418183205866 0 0 0 +1573 263 1 1 1 10.986186715348566 -2.0599137547536785 -22.92429543463961 0 0 0 +763 128 1 1 1 20.773115058986367 -7.567721301570857 -2.6983041994511545 0 0 0 +84 14 1 6 1 6.583340951999972 -18.471878841692106 -23.026228165763868 0 0 0 +105 18 1 3 1 -18.089511232472628 -13.565527311784994 -23.138922247815575 0 0 0 +183 31 1 3 1 13.189865711825098 -7.163629689917664 -22.29283140855887 0 0 0 +1574 263 1 2 1 11.388766656891944 -3.2420456369108615 -22.138082182683274 0 0 0 +1576 263 1 4 1 13.507190180336456 -2.291059410709925 -21.64304119409922 0 0 0 +1772 296 1 2 1 17.084658072291404 -1.1942333981305167 -17.864406671045767 0 0 0 +379 64 1 1 1 17.428847069958096 -6.513724457391349 -21.76870355847156 0 0 0 +341 57 1 5 1 21.43977548614606 -6.12958449742299 -17.621316027655702 -1 0 0 +3132 0 0 0 2 23.610348766618504 -1.263743399896759 -19.650724623298828 -1 0 0 +340 57 1 4 1 21.50557601084936 -7.566966192043195 -18.053288529279275 -1 0 0 +1771 296 1 1 1 17.85400509869887 -1.1343305721474441 -19.169409344191454 0 0 0 +342 57 1 6 1 22.236335148471603 -5.128269497997493 -18.335056092328678 -1 0 0 +337 57 1 1 1 23.692048903146297 -5.394304678048751 -18.277825321107173 -1 0 0 +338 57 1 2 1 23.970419298105107 -6.971461287611298 -18.21705033302095 -1 0 0 +339 57 1 3 1 22.787533858826635 -7.8220766766301795 -18.833813371042197 -1 0 0 +380 64 1 2 1 17.390091699425586 -5.11331642824407 -21.261871319640317 0 0 0 +381 64 1 3 1 17.04030791516189 -5.167143141065854 -19.749894579414626 0 0 0 +382 64 1 4 1 18.059991271674907 -5.891335532649512 -18.86294116005223 0 0 0 +383 64 1 5 1 18.217208029680588 -7.267807348227416 -19.35044460961872 0 0 0 +384 64 1 6 1 18.44644590543754 -7.240401528458554 -20.872081216710015 0 0 0 +1773 296 1 3 1 17.19244127180022 -2.480023895928761 -17.072703255880658 0 0 0 +3081 0 0 0 2 21.49061846349289 -3.6456468777997544 -21.91474358199003 0 0 0 +1774 296 1 4 1 18.678903663917104 -2.708190721084283 -16.98522507441636 0 0 0 +1776 296 1 6 1 19.31371550001193 -1.4155307812215618 -19.016897755409428 0 0 0 +1775 296 1 5 1 19.440911025685033 -2.7312676956858195 -18.316725886114195 0 0 0 +1583 264 1 5 1 18.728384226196916 -1.422824115615145 -23.285947594074 0 0 0 +1542 257 1 6 1 23.55662609583295 -1.1442949142018217 -23.96806262348533 -1 0 0 +203 34 1 5 1 -18.81351861035727 -22.39718383233431 -16.08706627618667 0 0 0 +73 13 1 1 1 0.9289153400827244 -15.77443430472925 -23.862633100385946 0 0 0 +250 42 1 4 1 -17.838159243357456 -19.361012050753114 -17.332485246868817 0 0 0 +204 34 1 6 1 -19.818836015437068 -23.604288827971835 -16.05030941126789 0 0 0 +389 65 1 5 1 -22.85363854702536 -22.466354730663117 -9.670141407641546 0 0 0 +388 65 1 4 1 -22.812463123591645 -23.730873353038383 -10.432083776143164 0 0 0 +439 74 1 1 1 -19.263085981318056 -21.413505679768456 -11.288044593450643 0 0 0 +440 74 1 2 1 -19.031745511092705 -20.892419043244843 -12.69814815432086 0 0 0 +441 74 1 3 1 -20.009336100851705 -19.804131749635705 -13.062544053987061 0 0 0 +442 74 1 4 1 -19.850897719387486 -18.63317870810817 -12.15112629732015 0 0 0 +443 74 1 5 1 -20.093463363684567 -18.985179394170856 -10.712262607163783 0 0 0 +444 74 1 6 1 -19.224656623700323 -20.17135784400995 -10.39052123147204 0 0 0 +3087 0 0 0 2 -22.487860972038106 -22.006494008569955 -13.832201231968499 0 0 0 +437 73 1 5 1 23.74097480560941 -17.078083222744535 -12.259123526099296 -1 0 0 +3179 0 0 0 2 -16.331676184901426 -18.090704461042588 -9.297218742603956 0 0 0 +3095 0 0 0 2 -15.48863454370277 -21.61260081547339 -7.751681152171642 0 0 0 +3672 0 0 0 2 -11.2583520688076 -20.63312925447694 -14.81154251544667 0 1 0 +398 67 1 2 1 -13.4640318439818 -23.727753970827642 -9.700023398914459 0 0 0 +399 67 1 3 1 -12.41431044423431 -22.804182054687136 -10.235995388577617 0 0 0 +400 67 1 4 1 -11.960407790527356 -23.246079704330835 -11.651574542485658 0 0 0 +445 75 1 1 1 -14.473181235234692 -18.542667943559465 -12.594816345621073 0 0 0 +446 75 1 2 1 -14.036904176892108 -19.89709478187995 -11.941494382531719 0 0 0 +447 75 1 3 1 -15.118038155093924 -20.937518531298554 -12.304317278303579 0 0 0 +448 75 1 4 1 -15.261045541354594 -20.99780494761172 -13.781144516274965 0 0 0 +449 75 1 5 1 -15.683145714516984 -19.725437681170447 -14.54496936301172 0 0 0 +450 75 1 6 1 -14.70290276507165 -18.599996996124464 -14.132526848152859 0 0 0 +451 76 1 1 1 -9.780532566699048 -18.536359536914098 -12.646429200410696 0 0 0 +452 76 1 2 1 -10.647237816280972 -19.262659746641813 -11.680893982304822 0 0 0 +453 76 1 3 1 -9.818335240686652 -20.05955416341959 -10.688677456554542 0 0 0 +3166 0 0 0 2 -12.709306214798186 -17.562522078591588 -9.39318813186229 0 0 0 +87 15 1 3 1 12.335012597109648 -16.86636732280074 -23.516829443149124 0 0 0 +260 44 1 2 1 -7.246178274009648 -18.768209097649144 -15.752686446845146 0 0 0 +3150 0 0 0 2 -8.248667587534769 -22.65054344690547 -9.191411386195748 0 0 0 +3246 0 0 0 2 -4.021602545032833 -20.650055062383878 -12.578162820540287 0 0 0 +406 68 1 4 1 -7.229376017507727 -23.842067111312637 -12.347540168887063 0 0 0 +414 69 1 6 1 -0.38899995918695324 -23.1622940411335 -13.134137308469958 0 0 0 +454 76 1 4 1 -8.839670732275472 -19.09607878303623 -10.046801549590581 0 0 0 +455 76 1 5 1 -7.914970848863158 -18.338904937834513 -11.029536490776474 0 0 0 +456 76 1 6 1 -8.838045207369069 -17.592124180597413 -11.945433454503455 0 0 0 +457 77 1 1 1 -0.8991759219366713 -18.464743740086103 -11.855311848001321 0 0 0 +461 77 1 5 1 -3.2547476001329674 -17.63455614246586 -11.169474666039443 0 0 0 +462 77 1 6 1 -1.814221929787692 -17.951408569510697 -10.772463243790824 0 0 0 +723 121 1 3 1 22.001366943963767 -5.853606043539047 -7.164674419316529 -1 0 0 +458 77 1 2 1 -0.9452137705740319 -17.496444498378853 -13.004064014548689 0 0 0 +459 77 1 3 1 -2.3134991312475672 -16.96781168534673 -13.419319053682056 0 0 0 +460 77 1 4 1 -3.259503848290999 -16.608345163363513 -12.310007353851049 0 0 0 +407 68 1 5 1 -7.952955557395577 -23.1089893853174 -13.499918817483163 0 0 0 +3189 0 0 0 2 -1.367605916676435 -20.36609427488211 -15.053102729670139 0 0 0 +409 69 1 1 1 -1.863013343271443 -23.299728209193148 -13.328425749622221 0 0 0 +648 108 1 6 1 -6.019355496845389 -19.271341313055576 -7.018252630493478 0 0 0 +647 108 1 5 1 -5.770719917437337 -19.844602999105525 -8.366859047033243 0 0 0 +3142 0 0 0 2 7.3686239251959424 -23.48444482815327 -15.20229079990514 0 0 0 +3121 0 0 0 2 -0.007553937584562694 -21.53357166936676 -9.482956902208015 0 0 0 +3100 0 0 0 2 2.3710450956706537 -20.593938225818274 -13.173282165249798 0 0 0 +880 147 1 4 1 -9.865750736565214 -14.975125283797993 -0.5160634173666355 0 0 0 +888 148 1 6 1 -5.558319411132885 -9.611248537686361 -0.7105054626398256 0 0 0 +463 78 1 1 1 6.66187284859289 -18.49478450338521 -11.364279649057844 0 0 0 +465 78 1 3 1 6.255473213018999 -19.437474414428742 -9.061446689284503 0 0 0 +466 78 1 4 1 6.0933005426896765 -20.78805247655847 -9.696662023575355 0 0 0 +467 78 1 5 1 5.657024095571625 -20.672483035079612 -11.154319046370004 0 0 0 +468 78 1 6 1 6.606130121957446 -19.86033756907609 -11.98398596258487 0 0 0 +3107 0 0 0 2 2.6765769961682637 -18.10288900169873 -9.984030865966432 0 0 0 +3131 0 0 0 2 3.7510791628389555 -15.990588462832344 -13.369265179654851 0 0 0 +464 78 1 2 1 7.196900936961058 -18.59630456202728 -9.914144818836878 0 0 0 +66 11 1 6 1 -12.451059327569155 -16.30726561324621 -23.093495446636364 0 0 0 +230 39 1 2 1 11.624452922928596 -22.6493230570278 -15.624750100140828 0 0 0 +3155 0 0 0 2 9.377682439004943 -20.31612454825073 -15.015657927456665 0 0 0 +426 71 1 6 1 14.428783080028795 -23.389384984814594 -11.683132937498918 0 0 0 +3145 0 0 0 2 10.947712593334769 -19.616444129880364 -10.298602843243268 0 0 0 +3220 0 0 0 2 12.713130999431538 -18.038325767466432 -13.728051773715073 0 0 0 +3192 0 0 0 2 9.441017903025744 -17.014986250363755 -13.729194461461221 0 0 0 +3261 0 0 0 2 15.565836186981237 -21.460103538508392 -8.947035544740297 0 0 0 +3077 0 0 0 2 8.808321484633893 -22.538704108230466 -10.964568097007861 0 0 0 +470 79 1 2 1 14.948198744463408 -14.830139056462269 -8.916334081677807 0 0 0 +471 79 1 3 1 14.475442277622497 -16.230407575957717 -8.663388601949727 0 0 0 +472 79 1 4 1 14.048592923947952 -16.930636738154835 -9.922257961600186 0 0 0 +197 33 1 5 1 22.644640218776743 -23.329470904269378 -16.410387151372728 -1 0 0 +65 11 1 5 1 -10.920973509869983 -16.381201972456747 -23.140539683228727 0 0 0 +390 65 1 6 1 23.901523057652717 -22.35314633644144 -8.805735309064653 -1 0 0 +438 73 1 6 1 22.765038899855487 -17.801921791705233 -13.154512902041638 -1 0 0 +433 73 1 1 1 22.952264213044845 -19.321096211989573 -13.194131685305331 -1 0 0 +435 73 1 3 1 -23.82398228844999 -19.184324798651172 -10.973206574462262 0 0 0 +3209 0 0 0 2 16.159903023750186 -19.84710969530698 -13.198511509567993 0 0 0 +385 65 1 1 1 22.629225300941204 -22.591852530731575 -9.593147677123552 -1 0 0 +434 73 1 2 1 23.13484175887619 -19.918399028184858 -11.821017858196335 -1 0 0 +138 23 1 6 1 13.58207643351471 -12.277658779160525 -23.271921984052945 0 0 0 +432 72 1 6 1 18.525010469116452 -23.441297040987784 -11.391891108634937 0 0 0 +436 73 1 4 1 23.80794229290283 -17.740540237186003 -10.882990620956834 -1 0 0 +475 80 1 1 1 18.26257756520904 -18.693307847230958 -10.179664679078053 0 0 0 +476 80 1 2 1 18.946345516326954 -19.66119897325612 -9.219412722965064 0 0 0 +477 80 1 3 1 20.375980962988532 -19.170624434242175 -8.952361071469488 0 0 0 +478 80 1 4 1 20.228721033531613 -17.813094474891823 -8.293675974988401 0 0 0 +479 80 1 5 1 19.52982823789353 -16.80333315723034 -9.201393039910526 0 0 0 +480 80 1 6 1 18.165513438629844 -17.300669418903407 -9.60872040119696 0 0 0 +3250 0 0 0 2 19.253025120370243 -18.27698660867225 -13.642041949071263 0 0 0 +427 72 1 1 1 19.602666035506818 -22.361998304882988 -11.66566174886788 0 0 0 +3252 0 0 0 2 -22.779776225748115 -9.122932554142851 -15.5164400332102 0 0 0 +488 82 1 2 1 -17.155372167442724 -13.445095339459675 -11.404587115577073 0 0 0 +489 82 1 3 1 -17.459922910936317 -14.894647867003634 -11.17874223943358 0 0 0 +490 82 1 4 1 -16.973697545954607 -15.720375755786534 -12.368563195009095 0 0 0 +491 82 1 5 1 -17.623868697631394 -15.209386684987477 -13.631945514600986 0 0 0 +3119 0 0 0 2 -20.63967138542946 -14.535746910589276 -9.737354043840746 0 0 0 +3134 0 0 0 2 -19.631613463720594 -11.239377930370903 -9.43765624763902 0 0 0 +3156 0 0 0 2 -21.045723483953672 -10.493364074364903 -12.532889724777052 0 0 0 +3185 0 0 0 2 -21.39748629589902 -15.382665989156859 -13.360750495666403 0 0 0 +537 90 1 3 1 -17.84439729498504 -9.40985554217935 -12.933265033236419 0 0 0 +3122 0 0 0 2 -21.837831471255278 -8.61141035287813 -9.302266025324391 0 0 0 +538 90 1 4 1 -17.10824165941662 -10.102982394656769 -14.092225784870053 0 0 0 +487 82 1 1 1 -17.828868328144544 -12.99092138354714 -12.631583955755005 0 0 0 +492 82 1 6 1 -17.333013579865963 -13.761195913539595 -13.815802000852806 0 0 0 +539 90 1 5 1 -16.361643688387865 -9.083962637870524 -14.925643578057713 0 0 0 +728 122 1 2 1 -19.22122568999577 -7.815017390396855 -7.47332249537324 0 0 0 +3243 0 0 0 2 -23.37521163978859 -12.694747649307695 -10.930621409430271 1 0 0 +3113 0 0 0 2 -11.383210507256983 -17.056037211378637 -16.26826888985922 0 0 0 +3136 0 0 0 2 -10.0315582889689 -11.016312191091123 -13.930135810964886 0 0 0 +493 83 1 1 1 -10.860728383551791 -14.056775352683443 -12.281611669688736 0 0 0 +494 83 1 2 1 -11.990302073883305 -14.771648013847612 -13.007579057792425 0 0 0 +495 83 1 3 1 -12.906723590228008 -15.451126306941894 -11.989041866753304 0 0 0 +496 83 1 4 1 -13.485730738067414 -14.353876916966104 -11.07258654021723 0 0 0 +497 83 1 5 1 -12.41373009907884 -13.708229378002883 -10.224212078691759 0 0 0 +498 83 1 6 1 -11.319475401816096 -13.158582984780715 -11.127489406734107 0 0 0 +3097 0 0 0 2 -9.441492167177497 -15.456298748973612 -8.614802079449035 0 0 0 +3138 0 0 0 2 -13.753130733301381 -11.534792483172465 -14.425273415436209 0 0 0 +3180 0 0 0 2 -15.373560891984988 -10.651505878030187 -10.197295808055827 0 0 0 +3254 0 0 0 2 -7.871542342507705 -9.23912934271906 -10.475594476673376 0 0 0 +3125 0 0 0 2 -7.507499143235298 -14.465743026004704 -15.455959395732503 0 0 0 +738 123 1 6 1 -10.81167184663272 -8.903253782497584 -7.746609744908556 0 0 0 +317 53 1 5 1 0.9478306298607513 -14.32579138845648 -15.281381889156217 0 0 0 +318 53 1 6 1 0.5284174018321323 -12.943000616347543 -14.798142056383309 0 0 0 +3133 0 0 0 2 -3.824378016908452 -7.688942965809181 -16.07465507142394 0 0 0 +3135 0 0 0 2 -2.7112114428892733 -14.09401830271838 -15.821946441089507 0 0 0 +499 84 1 1 1 -6.1973530339279925 -14.624084855409075 -10.29000188603462 0 0 0 +500 84 1 2 1 -6.422809052617069 -14.24153960203776 -11.731935988322311 0 0 0 +501 84 1 3 1 -6.403723737888396 -12.743395851323996 -11.92574647791764 0 0 0 +502 84 1 4 1 -5.11728788482329 -12.091434942245556 -11.420608238569297 0 0 0 +503 84 1 5 1 -4.848155525470341 -12.490551135659945 -9.999639058571708 0 0 0 +504 84 1 6 1 -4.90272654546178 -13.978180823422054 -9.801846659662015 0 0 0 +3130 0 0 0 2 -2.877018298396109 -10.652365035170481 -13.870888068317521 0 0 0 +3096 0 0 0 2 -6.742410914438937 -9.55146451910252 -13.88399566470553 0 0 0 +506 85 1 2 1 -1.1822283811607894 -13.730225529864878 -10.44329192006581 0 0 0 +507 85 1 3 1 -0.7282976192044984 -12.303639295487779 -10.304281576291322 0 0 0 +313 53 1 1 1 1.8118555547487332 -12.264695969246432 -14.336917934704022 0 0 0 +314 53 1 2 1 2.890439967748169 -12.190637311530173 -15.445602305700717 0 0 0 +315 53 1 3 1 3.1309749956178763 -13.568401668708548 -16.06481858024919 0 0 0 +316 53 1 4 1 1.872077094906719 -14.270762211421701 -16.483728533019676 0 0 0 +3213 0 0 0 2 5.546597232013036 -14.535545740381979 -10.20442019303003 0 0 0 +505 85 1 1 1 -0.12319542210001058 -14.790220552719891 -10.157946682558707 0 0 0 +3240 0 0 0 2 6.599827466865201 -13.769600000042587 -14.517974033958987 0 0 0 +510 85 1 6 1 1.2197769238800666 -14.50388846860688 -10.868698849837132 0 0 0 +3191 0 0 0 2 2.1430940965012746 -8.315606583694775 -14.880635813631638 0 0 0 +508 85 1 4 1 0.5017644081879103 -12.000419829065118 -11.07059351053613 0 0 0 +509 85 1 5 1 1.5948625437197552 -13.020128363092121 -10.702888165947709 0 0 0 +511 86 1 1 1 4.750778625812573 -10.462100926589397 -10.994739830263262 0 0 0 +512 86 1 2 1 6.250245057351012 -10.419471768635558 -10.852867681810826 0 0 0 +513 86 1 3 1 6.953071851982607 -10.845502366798412 -12.137004334422745 0 0 0 +514 86 1 4 1 6.435419911660401 -10.115472649987222 -13.383344942718653 0 0 0 +515 86 1 5 1 4.921697672779424 -10.097488738095768 -13.454793105675646 0 0 0 +516 86 1 6 1 4.238280593428016 -9.617745262579676 -12.176621680926054 0 0 0 +469 79 1 1 1 14.04963874085687 -13.977110867112598 -9.77400672400302 0 0 0 +473 79 1 5 1 12.959927314598854 -16.08272611614145 -10.634999374082588 0 0 0 +474 79 1 6 1 13.544393017336546 -14.709242052706594 -10.969976159487466 0 0 0 +3215 0 0 0 2 17.352582934976976 -15.401406741315196 -13.536649011745235 0 0 0 +3151 0 0 0 2 13.16790317192956 -9.117896160853693 -14.170078981003549 0 0 0 +3239 0 0 0 2 9.73677787215402 -8.05035110354828 -14.18606206086242 0 0 0 +3205 0 0 0 2 13.092838281199773 -13.652312972329876 -14.27462385638104 0 0 0 +3248 0 0 0 2 8.509203612216643 -14.236186317641035 -11.888335858094136 0 0 0 +517 87 1 1 1 10.878412668958248 -9.87877672050232 -11.116884901787376 0 0 0 +518 87 1 2 1 10.159320468070051 -9.296468107582456 -9.90944586261686 0 0 0 +519 87 1 3 1 9.418513216415882 -10.290739785965306 -8.995947850746614 0 0 0 +520 87 1 4 1 10.375417926219868 -11.383860470513527 -8.573400771260426 0 0 0 +521 87 1 5 1 10.964722102714035 -12.049475299624104 -9.787966115806555 0 0 0 +522 87 1 6 1 11.731036419543427 -11.019290068570644 -10.618712315403776 0 0 0 +3217 0 0 0 2 10.026917303936896 -11.825741467305185 -14.372143575514272 0 0 0 +523 88 1 1 1 15.751260391591458 -12.381703058181332 -12.66670785323251 0 0 0 +528 88 1 6 1 16.339454215227338 -11.827334023674975 -13.922636592490461 0 0 0 +524 88 1 2 1 16.097234329806334 -11.491825451264544 -11.5247034060609 0 0 0 +485 81 1 5 1 20.75962507358579 -12.08873769367657 -15.150939629003137 -1 0 0 +486 81 1 6 1 21.957928715472157 -11.180040115455391 -14.960826041397668 -1 0 0 +481 81 1 1 1 22.983695974666027 -11.932586353492052 -14.171872638425517 -1 0 0 +484 81 1 4 1 21.202882592509255 -13.274661542429703 -15.960552178990584 -1 0 0 +482 81 1 2 1 23.364827063656243 -13.260560902102913 -14.712919611224658 -1 0 0 +483 81 1 3 1 22.178822123889827 -14.130663933702476 -15.167822700214554 -1 0 0 +525 88 1 3 1 17.56284822736033 -11.276491807987743 -11.30382032417543 0 0 0 +526 88 1 4 1 18.19681403603269 -10.781318772471568 -12.56671631853461 0 0 0 +527 88 1 5 1 17.821883761626147 -11.716092407454953 -13.712611507474353 0 0 0 +3099 0 0 0 2 20.156492037490512 -14.081094998732333 -11.294726708979088 0 0 0 +3222 0 0 0 2 18.958962003017668 -9.030417261103771 -8.657008563373 0 0 0 +715 120 1 1 1 17.23819763587651 -12.514439118748811 -7.132878662868793 0 0 0 +3103 0 0 0 2 22.464207929578592 -14.808468123187634 -8.969240008714129 0 0 0 +3204 0 0 0 2 21.688682749639145 -10.950035414532854 -9.81198776815105 0 0 0 +3160 0 0 0 2 -20.028448925868773 -4.02488675089951 -15.142120810377207 0 0 0 +3161 0 0 0 2 -19.606828349492528 -7.5652600073495995 -15.860020721082162 0 0 0 +721 121 1 1 1 23.509192038980782 -7.8188263545925105 -6.854167290849033 -1 0 0 +3244 0 0 0 2 -23.6979917054599 -3.0403503286063924 -15.821594293217306 1 0 0 +531 89 1 3 1 23.13486876927649 -6.460592388669139 -14.291474774964207 -1 0 0 +535 90 1 1 1 -16.555048997790202 -7.3880580353868135 -13.026337609654044 0 0 0 +536 90 1 2 1 -17.00031457876123 -8.477342101085595 -12.121468567885142 0 0 0 +540 90 1 6 1 -15.700991321459108 -7.98268129778793 -14.101866248596439 0 0 0 +3168 0 0 0 2 -20.245634320003685 -1.8356449588268176 -11.880287034476433 0 0 0 +530 89 1 2 1 23.90358325953634 -6.1662211160780975 -12.98781007891805 -1 0 0 +3129 0 0 0 2 -22.380889949504635 -4.634888122421989 -9.853591319361309 0 0 0 +3171 0 0 0 2 -20.41074227625155 -6.834798733939869 -12.58130265311147 0 0 0 +3104 0 0 0 2 -16.82146829044039 -3.651113923796913 -10.062385365075574 0 0 0 +1922 321 1 2 1 -23.353962272170207 -0.8307247928615289 -11.647587591018455 0 0 0 +1930 322 1 4 1 -15.965276007498275 -2.4494689167738883 -13.094619051846358 0 0 0 +1929 322 1 3 1 -16.379484570865685 -1.3961557743987647 -14.108696760249828 0 0 0 +2130 355 1 6 1 -13.428241068360025 -2.3115844303723376 -9.60447296765382 0 0 0 +1931 322 1 5 1 -16.028489444253953 -3.900238860094762 -13.59232659382515 0 0 0 +1928 322 1 2 1 -16.839916523730928 -1.9901864005913645 -15.411986450359176 0 0 0 +1927 322 1 1 1 -15.853368607333 -2.9875831000177886 -15.959223341843277 0 0 0 +1932 322 1 6 1 -15.200947746504305 -3.9278600593212767 -14.875144800861774 0 0 0 +2126 355 1 2 1 -11.664653492677346 -3.23236566945444 -8.011063435959402 0 0 0 +3188 0 0 0 2 -14.350631265255275 -6.553303150739452 -9.380267321661265 0 0 0 +541 91 1 1 1 -11.196883624477847 -7.799851502173474 -11.600417380048494 0 0 0 +542 91 1 2 1 -11.201482874001348 -6.301270725673907 -11.675886871831926 0 0 0 +543 91 1 3 1 -11.289897860931177 -5.897770483115037 -13.124717055445005 0 0 0 +544 91 1 4 1 -12.456742533540309 -6.468783463129388 -13.959768433269558 0 0 0 +545 91 1 5 1 -12.36150280169599 -7.962250495857871 -13.8340357309444 0 0 0 +546 91 1 6 1 -12.383762762672326 -8.395946380324668 -12.387727173125358 0 0 0 +3137 0 0 0 2 -8.72751169269055 -5.571480280481379 -9.333024332222976 0 0 0 +2127 355 1 3 1 -11.36654957569394 -1.9092398316938464 -7.386470809125244 0 0 0 +1937 323 1 5 1 -11.089333312691243 -1.2206558188699883 -13.041590962115249 0 0 0 +2129 355 1 5 1 -13.143553721642906 -0.9805075381928041 -8.982535163409247 0 0 0 +2128 355 1 4 1 -12.629324238191979 -1.066454420815476 -7.521309968652809 0 0 0 +1940 324 1 2 1 -8.509700922746992 -3.3369242517210678 -13.572889982779351 0 0 0 +1941 324 1 3 1 -7.869348831167004 -3.7095262095064006 -12.268869784862373 0 0 0 +2125 355 1 1 1 -12.140594118540445 -3.087752836097067 -9.473728206385365 0 0 0 +733 123 1 1 1 -11.50329953470131 -7.557753035288924 -7.527120033926193 0 0 0 +356 60 1 2 1 -8.645233587179906 -6.784807174389429 -15.57619221939881 0 0 0 +551 92 1 5 1 -4.533200793141487 -7.470234331950804 -11.73450416958376 0 0 0 +1944 324 1 6 1 -6.934512957647603 -1.5223195205216977 -13.89411297709538 0 0 0 +1943 324 1 5 1 -6.282782047928581 -1.7729404685992962 -12.572400317325659 0 0 0 +1942 324 1 4 1 -7.1770754625246065 -2.508727265632979 -11.626929893496913 0 0 0 +1945 325 1 1 1 -1.4907763984010598 -2.4370330037585264 -9.200282488275958 0 0 0 +547 92 1 1 1 -3.271632857592948 -7.336725333151834 -9.649014035562233 0 0 0 +548 92 1 2 1 -4.221561093534662 -6.248806189848549 -9.066209383348522 0 0 0 +549 92 1 3 1 -4.819387513594367 -5.449126685943692 -10.210376776241246 0 0 0 +550 92 1 4 1 -5.479730361654855 -6.417752899550047 -11.177265136095148 0 0 0 +552 92 1 6 1 -3.892429849000564 -8.312065945058073 -10.655202982772144 0 0 0 +553 93 1 1 1 -0.9148180212791134 -5.791795111946871 -12.51621996408998 0 0 0 +557 93 1 5 1 -0.7860442587486793 -8.259997079043936 -12.22591579751101 0 0 0 +558 93 1 6 1 -1.2023951160100685 -7.108655639273606 -13.162743339648575 0 0 0 +1939 324 1 1 1 -7.500545729634672 -2.7630287268090954 -14.53933359457973 0 0 0 +1946 325 1 2 1 -0.6927130203885814 -1.13215882178044 -9.144862999760912 0 0 0 +3165 0 0 0 2 -3.735095887693471 -4.230515611228332 -14.088709142207543 0 0 0 +1949 325 1 5 1 -1.9763924160848862 -2.0491441334269775 -11.555130717215572 0 0 0 +2133 356 1 3 1 -5.9118433123882115 -1.6637151623314097 -8.400681071809666 0 0 0 +1950 325 1 6 1 -2.5848895651650463 -2.4698118608443367 -10.226842296609254 0 0 0 +1948 325 1 4 1 -1.2966236697365996 -0.6878548968596174 -11.527761493785297 0 0 0 +554 93 1 2 1 0.538430982112022 -5.734936604291423 -12.16028682682005 0 0 0 +3076 0 0 0 2 5.543425590627666 -6.7899627600020995 -15.210057460480316 0 0 0 +555 93 1 3 1 0.9046542104509231 -6.798202979612166 -11.14831143462444 0 0 0 +556 93 1 4 1 0.6299992637369839 -8.200216050073793 -11.72394951754325 0 0 0 +559 94 1 1 1 5.291419159797558 -5.9662365097169126 -11.788486417374987 0 0 0 +560 94 1 2 1 4.4214070946222 -4.760370536177068 -12.157035379255321 0 0 0 +561 94 1 3 1 4.8209457289567785 -3.5361070391427596 -11.372916181397287 0 0 0 +562 94 1 4 1 6.2997588354617635 -3.250133522419874 -11.618882843174411 0 0 0 +563 94 1 5 1 7.216766462875441 -4.439837892919495 -11.398762697432996 0 0 0 +564 94 1 6 1 6.7683272728099695 -5.705593390839083 -12.056495055471254 0 0 0 +1947 325 1 3 1 -0.15056726244544785 -0.7375123353628987 -10.521897980007882 0 0 0 +3080 0 0 0 2 5.561902926506747 -2.3926250713305897 -14.746813738439672 0 0 0 +3237 0 0 0 2 1.0676871156736858 -1.904142857167824 -14.1955227643287 0 0 0 +129 22 1 3 1 3.7357710423379435 -12.496443207115936 -23.56989950303438 0 0 0 +886 148 1 4 1 -6.55489498716053 -11.917760006588718 -0.16275668473789492 0 0 0 +752 126 1 2 1 5.653287393297693 -6.293923034094311 -8.101404008088904 0 0 0 +2146 358 1 4 1 4.751938890041581 -1.4377572574435553 -8.20032862991543 0 0 0 +377 63 1 5 1 13.32510562962902 -2.9923071772399306 -16.131483044493024 0 0 0 +378 63 1 6 1 13.090778610282836 -3.9897143890589915 -15.0522597672201 0 0 0 +3175 0 0 0 2 9.15946390549616 -2.9692744541074805 -14.265012852150061 0 0 0 +565 95 1 1 1 13.254092283350058 -7.060078787351082 -10.743180874059794 0 0 0 +566 95 1 2 1 12.782127742608171 -6.326296229308216 -11.98130043803075 0 0 0 +567 95 1 3 1 11.318756401173582 -5.903882622632563 -11.993689780704594 0 0 0 +568 95 1 4 1 10.899953930807676 -5.148309522271334 -10.73234188738371 0 0 0 +569 95 1 5 1 11.295483519727988 -5.9728526309358125 -9.533563682437263 0 0 0 +570 95 1 6 1 12.798613541830782 -6.265213123031563 -9.539236600081514 0 0 0 +3148 0 0 0 2 9.29022151670728 -1.9494306218429946 -9.397676820333476 0 0 0 +1961 327 1 5 1 12.062444183514998 -1.1456510681280234 -12.160098511612244 0 0 0 +1966 328 1 4 1 16.295942013114505 -2.000882420927826 -12.971735138826784 0 0 0 +1965 328 1 3 1 17.167651858560944 -1.7900736605654708 -11.769106316220233 0 0 0 +3083 0 0 0 2 14.60237120845769 -2.95824990305827 -8.940414159785064 0 0 0 +3177 0 0 0 2 16.871897525875323 -5.812864906057312 -9.556449824977944 0 0 0 +571 96 1 1 1 18.503221454742576 -7.139471830908783 -14.580808173466966 0 0 0 +572 96 1 2 1 17.248639691257047 -7.962682067663984 -14.67428847014941 0 0 0 +532 89 1 4 1 21.767094005173554 -6.949529919693384 -13.907207228408916 -1 0 0 +533 89 1 5 1 21.7097331690997 -8.029146894817703 -12.905192851723267 -1 0 0 +529 89 1 1 1 -23.9998807586867 -7.385042181213058 -12.054857195034867 0 0 0 +534 89 1 6 1 22.594029444700826 -7.738943238000628 -11.712173009521713 -1 0 0 +573 96 1 3 1 16.15457630691639 -7.2400825087349165 -14.072760123462368 0 0 0 +574 96 1 4 1 16.030816328587004 -5.769575294073786 -14.23033824186866 0 0 0 +575 96 1 5 1 17.315734675164162 -5.033350073581562 -14.170554483059556 0 0 0 +576 96 1 6 1 18.3603584276394 -5.648985878387909 -15.135552989662497 0 0 0 +620 104 1 2 1 18.242516900514378 -23.91743933121628 -7.353692330810063 0 0 0 +1964 328 1 2 1 18.502830504168347 -1.297520817429474 -12.229484281205751 0 0 0 +3167 0 0 0 2 21.257690590493024 -3.3798169814270853 -14.158237631327552 0 0 0 +3178 0 0 0 2 20.452466453563993 -4.922843260802922 -11.16267782237118 0 0 0 +1921 321 1 1 1 23.620326014334704 -1.9140070199947932 -11.881271528143992 -1 0 0 +879 147 1 3 1 -9.991533735960063 -13.49702136605266 -0.7313556316517886 0 0 0 +722 121 1 2 1 22.897500648645426 -6.850990488065385 -7.876660134110257 -1 0 0 +579 97 1 3 1 -19.89658507776802 -22.338812421147104 -7.502736016222637 0 0 0 +630 105 1 6 1 -21.601730738146255 -18.83348754422631 -7.4792630973399 0 0 0 +3531 0 0 0 2 -18.678253212606144 -23.723343050268596 -2.8081105132224873 0 1 0 +636 106 1 6 1 -16.19827463650999 -18.04411267696147 -5.498933928105817 0 0 0 +635 106 1 5 1 -15.105955643192832 -18.83250442209349 -4.709275227047966 0 0 0 +632 106 1 2 1 -17.857481455085605 -19.65460798265644 -4.512842753175132 0 0 0 +631 106 1 1 1 -17.36614312671023 -18.991316978050993 -5.7323794781192134 0 0 0 +629 105 1 5 1 -20.852198691866683 -18.331593515804574 -6.260309287662485 0 0 0 +628 105 1 4 1 -20.757897710609853 -16.80032368803702 -6.2325088051665585 0 0 0 +580 97 1 4 1 -20.364030845753277 -21.99274916853858 -6.142372612178491 0 0 0 +3454 0 0 0 2 -16.717735188175908 -16.837928964830567 -0.38876751417925975 0 0 0 +820 137 1 4 1 -23.06962052024438 -19.987983572610727 -1.9574413690865573 0 0 0 +821 137 1 5 1 -21.759247169728983 -20.020830923088905 -2.7905040212542747 0 0 0 +625 105 1 1 1 -22.987830043006987 -18.223590560615918 -7.5895064159613135 0 0 0 +581 97 1 5 1 -21.486729221664074 -22.91552066933581 -5.697123530686174 0 0 0 +822 137 1 6 1 -20.495086680988905 -19.438409917399206 -2.1650060394563093 0 0 0 +819 137 1 3 1 -23.26102574109077 -18.538481692617843 -1.4412845279891175 0 0 0 +818 137 1 2 1 -21.996768680465355 -18.02529082578531 -0.7183432890453774 0 0 0 +817 137 1 1 1 -20.77719789362675 -18.07250329942997 -1.6400365147084859 0 0 0 +641 107 1 5 1 -12.203161336955654 -19.856480955893574 -6.478686754520815 0 0 0 +634 106 1 4 1 -15.614250342722508 -19.43097162930733 -3.4793411342465577 0 0 0 +633 106 1 3 1 -16.77297645139879 -20.407059361679174 -3.760402467689172 0 0 0 +642 107 1 6 1 -10.983423998353825 -19.737768288650372 -7.349700083201278 0 0 0 +640 107 1 4 1 -12.175323823479332 -21.214541569306164 -5.78357484999631 0 0 0 +639 107 1 3 1 -10.903618837806164 -21.363425750677944 -4.973065906910634 0 0 0 +638 107 1 2 1 -9.71745794014269 -21.302515704228277 -5.847185750545316 0 0 0 +637 107 1 1 1 -9.732502087595286 -19.961848927352218 -6.544854994460795 0 0 0 +3172 0 0 0 2 -4.30013510605699 -23.558160015678105 -9.934388187906775 0 0 0 +833 139 1 5 1 -12.194227080813928 -19.660565974726932 -1.4893385957481213 0 0 0 +834 139 1 6 1 -12.859589422020308 -18.29054506453928 -1.4297296628771143 0 0 0 +3242 0 0 0 2 -13.898085926969921 -23.155633289846612 -2.386427621907854 0 0 0 +421 71 1 1 1 12.895688228244428 -23.510672453976976 -11.553644657278513 0 0 0 +2320 387 1 4 1 -10.163780447203946 -0.7118236568269755 -1.038968060030662 0 0 0 +832 139 1 4 1 -11.240146945589801 -19.80098449233793 -0.32556937792039853 0 0 0 +600 100 1 6 1 -6.655573906108533 -23.189545126171147 -4.851383815959041 0 0 0 +3564 0 0 0 2 -20.639353042291663 -0.6040989724943379 -15.596068854670992 0 0 0 +2141 357 1 5 1 1.3372590439173135 -0.40917037459322886 -5.009496335126118 0 0 0 +862 144 1 4 1 17.392633561569856 -19.677635607406607 -0.49406838400263237 0 0 0 +3176 0 0 0 2 -8.161614430852334 -20.746684243829055 -2.5423002852335026 0 0 0 +653 109 1 5 1 0.25923356105034856 -18.822647917738724 -5.114094342187829 0 0 0 +646 108 1 4 1 -4.259309263391483 -20.05760631787698 -8.57342055629058 0 0 0 +645 108 1 3 1 -3.5882943306209567 -20.89056827204802 -7.475064685504933 0 0 0 +644 108 1 2 1 -3.905061787209306 -20.279114909232188 -6.095922464443009 0 0 0 +643 108 1 1 1 -5.406117140099746 -20.13806229753609 -5.908517155315734 0 0 0 +835 140 1 1 1 -5.96468572452059 -18.421827571788445 -0.1940832256895432 0 0 0 +3218 0 0 0 2 -2.3788657370360555 -21.072003798637052 -2.660877315870211 0 0 0 +3636 0 0 0 2 2.3743190495227857 -23.583810311639976 -15.589783382813271 0 1 0 +615 103 1 3 1 13.998768796786871 -23.89463074699041 -5.971539158966211 0 0 0 +3085 0 0 0 2 -3.5868859730264853 -16.67544579243731 -7.154056962946621 0 0 0 +696 116 1 6 1 -7.556553061831107 -17.442894313148432 -3.931950061345586 0 0 0 +691 116 1 1 1 -7.666697686697668 -16.875192832620193 -5.319204026418976 0 0 0 +3190 0 0 0 2 -2.6550560756385875 -17.058973380066114 -3.754154336928545 0 0 0 +846 141 1 6 1 -0.5293153561814663 -19.471499258157912 -0.43935155293993966 0 0 0 +578 97 1 2 1 -19.781203168797642 -23.828890574094952 -7.412101716605861 0 0 0 +655 110 1 1 1 7.390515780479332 -16.70354495483149 -6.13850442178291 0 0 0 +656 110 1 2 1 7.493326841471907 -18.164387621223586 -5.682044397645447 0 0 0 +660 110 1 6 1 6.177657005220231 -16.564609434408275 -7.0279575203435165 0 0 0 +804 134 1 6 1 5.000973295535981 -21.377861467738814 -0.21157450637444258 0 0 0 +654 109 1 6 1 0.5320249241857321 -19.052508972696398 -6.571878603761748 0 0 0 +649 109 1 1 1 0.4216718608761672 -17.749140177823723 -7.38778926410284 0 0 0 +803 134 1 5 1 6.128543350909528 -22.377846903461577 -0.49596907657221717 0 0 0 +658 110 1 4 1 4.988677712098758 -18.439738406801077 -5.789570823559004 0 0 0 +657 110 1 3 1 6.249215378678894 -18.57456683208996 -4.947461768876827 0 0 0 +652 109 1 4 1 1.1841872764479775 -17.72657701660962 -4.6632203232589235 0 0 0 +650 109 1 2 1 1.3460227071490187 -16.647222223990514 -6.904545400800195 0 0 0 +3144 0 0 0 2 2.1945271158629946 -21.507118835508848 -2.959359472763339 0 0 0 +3157 0 0 0 2 3.179887577193914 -21.54099199481437 -7.617657463730766 0 0 0 +3233 0 0 0 2 5.556858278907169 -22.120727305510858 -4.119106043218379 0 0 0 +3249 0 0 0 2 3.957483113851467 -18.096180159047417 -1.9948683415400534 0 0 0 +3260 0 0 0 2 9.361532017562512 -18.595697204793222 -0.9858705778601969 0 0 0 +659 110 1 5 1 4.906243935024628 -17.040271888247876 -6.354202070005135 0 0 0 +845 141 1 5 1 -0.021451284780850073 -18.203263842380935 -1.1250725054262543 0 0 0 +1581 264 1 3 1 16.51632427852508 -0.37887000934272475 -23.15099826553299 0 0 0 +1582 264 1 4 1 17.994319175173835 -0.10590152255957008 -23.07010765913378 0 0 0 +853 143 1 1 1 13.986397776247808 -18.288928346278436 -1.3662845794100846 0 0 0 +3123 0 0 0 2 17.435754655509427 -2.0874417668695076 -1.6430358463813803 0 0 0 +3183 0 0 0 2 9.573270023533272 -20.79989809580537 -7.330054469924412 0 0 0 +3212 0 0 0 2 9.026379124232962 -21.636533458764248 -3.978941894687348 0 0 0 +666 111 1 6 1 12.968718183643741 -19.119999612560825 -6.3696283693732845 0 0 0 +665 111 1 5 1 12.305774713081465 -17.811618572364473 -6.71483010491058 0 0 0 +664 111 1 4 1 10.930086525667255 -17.70797700524511 -6.05139628309682 0 0 0 +663 111 1 3 1 10.935188186503687 -18.097746592689305 -4.591327448785047 0 0 0 +662 111 1 2 1 11.6805196805031 -19.36671413470485 -4.31779861409759 0 0 0 +661 111 1 1 1 13.090831551321576 -19.26693243461802 -4.891117113487709 0 0 0 +616 103 1 4 1 13.158385125480184 -23.00818475343258 -6.836482502755769 0 0 0 +85 15 1 1 1 14.562183641748646 -18.006099747264862 -23.524521837739282 0 0 0 +858 143 1 6 1 13.621700682427848 -16.853365817045326 -1.253556855847603 0 0 0 +808 135 1 4 1 11.794656585024446 -23.180868122336804 -0.5856892935513152 0 0 0 +3143 0 0 0 2 10.203498027790753 -15.072868940784131 -0.8627659432104435 0 0 0 +3174 0 0 0 2 20.234370093674528 -23.147554783763443 -1.5638790937304234 0 0 0 +766 128 1 4 1 17.81842532901368 -6.701096632968706 -2.4116313231312874 0 0 0 +627 105 1 3 1 -22.14942526706658 -16.18464956162029 -6.352012182984475 0 0 0 +626 105 1 2 1 -22.86533919362293 -16.717317927611983 -7.574983185495223 0 0 0 +3093 0 0 0 2 14.65003451927572 -21.755902669409792 -2.214400040966117 0 0 0 +670 112 1 4 1 16.465853053125024 -17.07939197015856 -5.231184021171746 0 0 0 +667 112 1 1 1 17.12919585166761 -19.890389695516962 -4.6687301222453925 0 0 0 +3086 0 0 0 2 23.172987073367466 -20.365873086975718 -5.760678890136071 0 0 0 +672 112 1 6 1 16.448054184482416 -19.5434093055903 -5.933998915700637 0 0 0 +671 112 1 5 1 16.75491054652512 -18.124701493834454 -6.272668786067622 0 0 0 +669 112 1 3 1 17.034586330453955 -17.507607614346213 -3.8802481916566696 0 0 0 +668 112 1 2 1 16.623948883183154 -18.94323486270151 -3.610900748000308 0 0 0 +624 104 1 6 1 19.71817369968715 -22.329657154211557 -6.164334273923679 0 0 0 +623 104 1 5 1 19.156599715636496 -22.7891692710351 -4.850970213163579 0 0 0 +3098 0 0 0 2 20.79549224027839 -18.962487282372233 -2.4814062813203743 0 0 0 +3255 0 0 0 2 22.19264002854216 -16.794479533509456 -5.008671013480766 0 0 0 +619 104 1 1 1 19.680350706718936 -23.450174161948237 -7.1707235980691175 0 0 0 +679 114 1 1 1 -16.861404498198077 -14.074759674690386 -7.692648760754269 0 0 0 +3187 0 0 0 2 -18.683752938231642 -15.86114210617157 -3.1074710351590022 0 0 0 +920 154 1 2 1 -20.323063716425327 -8.28152479962954 -2.1630328574794344 0 0 0 +919 154 1 1 1 -19.369493487160685 -7.9717640518134045 -1.0115313332063571 0 0 0 +1926 321 1 6 1 22.214532178122255 -1.5581031817232773 -11.408618100815023 -1 0 0 +684 114 1 6 1 -17.876076944114466 -14.670792004864047 -6.740947658661283 0 0 0 +683 114 1 5 1 -18.756123717884275 -13.610114294596746 -6.089066734355772 0 0 0 +682 114 1 4 1 -17.93945426156533 -12.64012807114829 -5.2484357512249264 0 0 0 +681 114 1 3 1 -16.93660226244936 -12.037829001113463 -6.184208047100466 0 0 0 +678 113 1 6 1 -21.768608645404864 -11.504000142952899 -5.2145968436744425 0 0 0 +677 113 1 5 1 -22.147020918100004 -12.98700992399975 -5.113004072088983 0 0 0 +673 113 1 1 1 -21.904530765062976 -11.066778588074438 -6.667725380199407 0 0 0 +871 146 1 1 1 -18.072401869345263 -12.761801911694715 -1.0658126470640092 0 0 0 +872 146 1 2 1 -19.279428711392647 -12.318227829724721 -1.851150078097736 0 0 0 +674 113 1 2 1 -23.308026198912227 -11.31059798305446 -7.213402135319285 0 0 0 +727 122 1 1 1 -18.011786256645113 -8.582456896681077 -6.988900784562113 0 0 0 +921 154 1 3 1 -19.652901539391127 -8.190727225012491 -3.5145759152248246 0 0 0 +922 154 1 4 1 -18.354579691785837 -8.994213473644875 -3.6793499685473563 0 0 0 +868 145 1 4 1 -23.961650227176094 -11.740083830134264 -0.7316839653127634 0 0 0 +675 113 1 3 1 -23.813544313118076 -12.723311708337821 -7.002058035004708 0 0 0 +873 146 1 3 1 -20.565787598139707 -12.48811884178478 -1.080398563369402 0 0 0 +428 72 1 2 1 19.614728929681778 -21.868239757477724 -13.087674506567444 0 0 0 +680 114 1 2 1 -16.076530233336964 -12.98039132545505 -7.029821001825243 0 0 0 +3258 0 0 0 2 -8.713740858117731 -12.097221122503214 -8.625529957852123 0 0 0 +878 147 1 2 1 -11.46359426559149 -13.061193652461 -0.5085138396380513 0 0 0 +3112 0 0 0 2 -14.523836301527039 -14.827477999222483 -2.7171466440435577 0 0 0 +690 115 1 6 1 -11.508429099519061 -16.539138946403323 -4.8642426211973975 0 0 0 +689 115 1 5 1 -11.289155354649871 -15.322646311143169 -4.067748103600146 0 0 0 +688 115 1 4 1 -10.96571097384465 -14.129182789170041 -4.963500477938649 0 0 0 +687 115 1 3 1 -12.16460277719881 -13.79815317235867 -5.872864343401376 0 0 0 +686 115 1 2 1 -12.741238682701532 -15.059052371155087 -6.503027981898485 0 0 0 +685 115 1 1 1 -12.77629102528627 -16.309039820386367 -5.613798789043217 0 0 0 +429 72 1 3 1 19.67178158835479 -23.071556275884024 -13.995019899402386 0 0 0 +1962 327 1 6 1 12.395347564867139 -0.4522249123205933 -10.832192834751613 0 0 0 +3234 0 0 0 2 -14.667552367625762 -10.882813637299709 -2.1534078370296967 0 0 0 +3357 0 0 0 2 -8.243276734494327 -11.18644223646588 -3.7601183658991517 0 0 0 +929 155 1 5 1 -11.229407279817696 -9.266945599227496 -0.5277411674019409 0 0 0 +930 155 1 6 1 -10.73806396375861 -9.328014753757127 -2.0496342081920425 0 0 0 +737 123 1 5 1 -11.80458041210423 -10.061518807885735 -7.581172804877366 0 0 0 +736 123 1 4 1 -12.514035329331858 -9.940802642426332 -6.226978249588479 0 0 0 +884 148 1 2 1 -5.058016356734086 -11.515781417177864 -2.10016423278053 0 0 0 +885 148 1 3 1 -5.573489022792124 -12.538659052017701 -1.0565304602901497 0 0 0 +744 124 1 6 1 -6.796495587589989 -8.132041093334005 -6.908056743679377 0 0 0 +700 117 1 4 1 -2.4785150947560255 -13.051536145022128 -3.7618521277595893 0 0 0 +699 117 1 3 1 -3.5231917839367943 -12.61563979373402 -4.803967755446361 0 0 0 +698 117 1 2 1 -3.1939688745402526 -13.447599604809804 -6.0998933797479316 0 0 0 +695 116 1 5 1 -8.075111957514888 -16.39912770316067 -3.006503437727264 0 0 0 +694 116 1 4 1 -7.3290238105061345 -15.088988105138911 -3.0694372220243356 0 0 0 +693 116 1 3 1 -7.127246550837067 -14.576957230143467 -4.4960434102996025 0 0 0 +692 116 1 2 1 -6.728701734705894 -15.683541445456052 -5.477981270018243 0 0 0 +3194 0 0 0 2 -1.231456085341191 -9.744081806438304 -2.766797344202566 0 0 0 +697 117 1 1 1 -1.8908867585009133 -13.000678279960505 -6.854688826004112 0 0 0 +743 124 1 5 1 -6.151645007576958 -9.473977498811106 -6.5767202187833655 0 0 0 +702 117 1 6 1 -0.8919238364636716 -12.552501688098591 -5.636504008457076 0 0 0 +701 117 1 5 1 -1.1289139797913377 -13.231201482328972 -4.260511970959163 0 0 0 +742 124 1 4 1 -5.053794173543709 -9.185046399794158 -5.62753686784592 0 0 0 +745 125 1 1 1 -1.0163971903552498 -9.202777412913234 -6.601053029762865 0 0 0 +883 148 1 1 1 -4.439256647852137 -10.195355782547773 -1.5854220649168889 0 0 0 +898 150 1 4 1 3.7892095144553313 -13.505953449602622 -0.30181627435510133 0 0 0 +750 125 1 6 1 -0.02282908976705894 -9.519346547516617 -7.745747426742618 0 0 0 +3153 0 0 0 2 2.818914229543667 -13.174645122949102 -7.2640051452410335 0 0 0 +899 150 1 5 1 3.7944103013151236 -12.22251771318739 -1.0814341235631753 0 0 0 +897 150 1 3 1 3.7949356569390362 -14.69534268745218 -1.304105632315127 0 0 0 +651 109 1 3 1 1.1244915827808728 -16.428847912997565 -5.457673549108037 0 0 0 +3108 0 0 0 2 2.120693880370002 -9.39010730429765 -4.160997146840728 0 0 0 +708 118 1 6 1 6.863828128037181 -13.208442193532914 -6.00939590080831 0 0 0 +707 118 1 5 1 5.922433654701295 -13.245838257029785 -4.841511813007163 0 0 0 +706 118 1 4 1 6.00991708903188 -11.944638177248002 -4.087627233609485 0 0 0 +705 118 1 3 1 5.662766464084579 -10.741853828918114 -4.948058290085926 0 0 0 +704 118 1 2 1 6.62020242151925 -10.752156168121486 -6.162268884474601 0 0 0 +703 118 1 1 1 6.618363410105859 -12.045891918898462 -6.95777471616502 0 0 0 +895 150 1 1 1 2.3995835099560496 -13.348396534473457 -2.7880327765091297 0 0 0 +896 150 1 2 1 2.5611880974651005 -14.69016348497507 -2.1852785744844723 0 0 0 +900 150 1 6 1 2.5141107116762904 -12.092916695975378 -1.9180593546954754 0 0 0 +3210 0 0 0 2 6.92327992732037 -15.820746501456187 -2.2073150247137487 0 0 0 +749 125 1 5 1 1.363426347607604 -8.905373864374068 -7.600913471897045 0 0 0 +945 158 1 3 1 5.9166171314217975 -8.566039910215778 -1.1281427787898752 0 0 0 +944 158 1 2 1 5.7802717038310565 -7.977355467684557 -2.4939413313918486 0 0 0 +748 125 1 4 1 1.2086483570492634 -7.424367068669365 -7.403374610376454 0 0 0 +3094 0 0 0 2 12.82450945202009 -9.546667608231216 -7.122978072662087 0 0 0 +3079 0 0 0 2 10.094057382532924 -9.281742678513806 -2.139368246591289 0 0 0 +709 119 1 1 1 10.285707359953944 -14.039677489515187 -4.865442690153936 0 0 0 +408 68 1 6 1 -8.988961415704619 -23.934376200573837 -14.246914367312156 0 0 0 +714 119 1 6 1 10.015768156671722 -12.813681213850396 -3.920866495502144 0 0 0 +713 119 1 5 1 11.074994992991092 -11.820727155148214 -4.322221287128473 0 0 0 +712 119 1 4 1 12.448730699002198 -12.295208213897418 -3.920182922937835 0 0 0 +711 119 1 3 1 12.77759073517954 -13.497902027231882 -4.801465300391897 0 0 0 +710 119 1 2 1 11.691560685174887 -14.583415020239979 -4.760394842392145 0 0 0 +3073 0 0 0 2 9.649354414698488 -15.500489728900117 -8.438861638363617 0 0 0 +3208 0 0 0 2 16.99599442180648 -11.081253400054232 -2.2140291038277367 0 0 0 +3074 0 0 0 2 10.421619449944043 -7.31311641295177 -5.294564290959479 0 0 0 +904 151 1 4 1 13.727814811044423 -11.305338050420625 -0.4207332695504249 0 0 0 +26 5 1 2 1 -1.0579171183405067 -23.80807725469021 -23.466739304148046 0 0 0 +720 120 1 6 1 16.986662463838172 -13.522694524093202 -6.027317543818168 0 0 0 +719 120 1 5 1 18.26286514988587 -14.024909640445806 -5.318360907235192 0 0 0 +870 145 1 6 1 21.61785446110006 -11.521016709469846 -1.4410065217395496 -1 0 0 +3232 0 0 0 2 23.992334672918947 -9.459206168443181 -3.268198138145527 -1 0 0 +676 113 1 4 1 -23.596543220773434 -13.221961757755555 -5.5866869567609685 0 0 0 +3126 0 0 0 2 16.56570073240039 -14.663655900424427 -1.9695458137410293 0 0 0 +3226 0 0 0 2 -23.719435162719105 -15.276362411218907 -2.4142710283327173 1 0 0 +3114 0 0 0 2 21.114968050344995 -10.620520221115346 -5.517446711535181 0 0 0 +718 120 1 4 1 19.367932626935087 -14.45381070288218 -6.286312317928286 0 0 0 +717 120 1 3 1 19.560397931400964 -13.399665399013587 -7.358145634822249 0 0 0 +716 120 1 2 1 18.25153447213369 -13.07609579313792 -8.095934205837017 0 0 0 +869 145 1 5 1 22.812220715357185 -12.45885392209724 -1.258096418683605 -1 0 0 +3163 0 0 0 2 19.886328676401245 -14.804812163242207 -1.3392006253824567 0 0 0 +3347 0 0 0 2 -16.906384335570422 -5.832702564400965 -0.21799326483390966 0 0 0 +1960 327 1 4 1 11.178528727977206 -0.3103026013022536 -13.083035536799056 0 0 0 +45 8 1 3 1 15.74354653000786 -22.970376101305703 -22.84534527479079 0 0 0 +2306 385 1 2 1 -21.67579250390473 -1.598238916768613 -0.5149871570172689 0 0 0 +2121 354 1 3 1 -16.22894603247263 -1.293348058562442 -7.086068621755833 0 0 0 +2307 385 1 3 1 -20.464315142480746 -2.471280852207409 -0.8344096916304995 0 0 0 +924 154 1 6 1 -18.113164297518654 -8.818321209630026 -1.1236291384205088 0 0 0 +2316 386 1 6 1 -16.434832195406802 -1.8304845699522132 -0.988162794367667 0 0 0 +916 153 1 4 1 -23.738408412201256 -6.41289976110332 -0.17008868043289535 0 0 0 +732 122 1 6 1 -16.77981596774538 -7.917358768143001 -7.462237200322155 0 0 0 +731 122 1 5 1 -16.800348875776503 -6.510012405906171 -6.92459088236922 0 0 0 +730 122 1 4 1 -17.96400021317762 -5.696069183846789 -7.466006486133622 0 0 0 +729 122 1 3 1 -19.270424291536248 -6.339955660656167 -7.135334554174885 0 0 0 +917 153 1 5 1 -23.262316485994457 -6.077945240119007 -1.5993493685399067 0 0 0 +2119 354 1 1 1 -18.60250654929685 -1.6881625773443103 -6.719927440923434 0 0 0 +2120 354 1 2 1 -17.241726763587653 -1.739085569436217 -6.0906839871896645 0 0 0 +3092 0 0 0 2 -17.724566897126994 -4.645421287585029 -3.5724893245774294 0 0 0 +3228 0 0 0 2 -21.03480151789179 -3.513866025760926 -4.7638868909098715 0 0 0 +923 154 1 5 1 -17.444733270952568 -8.66265462855767 -2.520257863962114 0 0 0 +2115 353 1 3 1 -23.59050548447787 -1.7506748647048347 -7.327009936075724 0 0 0 +3477 0 0 0 2 -13.758097932060261 -1.397644406130624 -4.121675935345573 0 0 0 +3082 0 0 0 2 -16.0322521183025 -4.287428696585516 -23.56037511034607 0 0 0 +3102 0 0 0 2 -14.496798883284525 -4.93835742289172 -5.096824270254922 0 0 0 +2319 387 1 3 1 -11.265545389925155 -0.6368014320681068 -2.085936608347984 0 0 0 +218 37 1 2 1 -1.7120296159842512 -23.273553439701825 -17.662583827377507 0 0 0 +735 123 1 3 1 -13.16837508081348 -8.599680548982784 -6.017830333432835 0 0 0 +734 123 1 2 1 -12.124450850719601 -7.521160343446087 -6.167203492089897 0 0 0 +925 155 1 1 1 -10.125268884429946 -7.9967957919557335 -2.6160113756338412 0 0 0 +926 155 1 2 1 -9.07200155553298 -7.626416372719154 -1.6277702395185158 0 0 0 +927 155 1 3 1 -9.49594496838926 -7.468799797561846 -0.20941345551365886 0 0 0 +3230 0 0 0 2 -11.64745844229247 -3.810913457737553 -0.8757236205510979 0 0 0 +3259 0 0 0 2 -13.84230358963376 -6.775048268384669 -1.1567881629435663 0 0 0 +3207 0 0 0 2 -10.205866154989831 -4.297875657788979 -4.118150702694345 0 0 0 +2333 389 1 5 1 0.1819946081739498 -2.91324193584965 -1.7003182422047012 0 0 0 +942 157 1 6 1 -1.912877980015075 -6.765631076630593 -0.7514118684025859 0 0 0 +854 143 1 2 1 12.970857207842188 -19.064076145616436 -0.6218541067169614 0 0 0 +2132 356 1 2 1 -4.755504833156404 -1.9296352993905814 -7.457208619887969 0 0 0 +3109 0 0 0 2 -1.1481266778940689 -2.9869333095453334 -5.683452557064883 0 0 0 +125 21 1 5 1 1.124254089384887 -8.973758096392729 -23.63977869585508 0 0 0 +622 104 1 4 1 17.741246655811363 -23.252448119279247 -5.051700157337856 0 0 0 +2326 388 1 4 1 -4.2393400625462885 -0.5591924295811959 -2.13821668837939 0 0 0 +2334 389 1 6 1 -1.2668603030954895 -3.2254912321399902 -1.9613354939973493 0 0 0 +739 124 1 1 1 -7.290410133439499 -7.40103375577509 -5.650227004314096 0 0 0 +2131 356 1 1 1 -4.994449284701478 -3.181682812936629 -6.62532890515973 0 0 0 +2136 356 1 6 1 -6.407194454627805 -3.0900165815573155 -5.979769510323174 0 0 0 +2327 388 1 5 1 -4.680737400544265 -0.4867159808830488 -3.6031355838240953 0 0 0 +746 125 1 2 1 -1.0324809950519611 -7.72388513335868 -6.4495110551733426 0 0 0 +741 124 1 3 1 -5.489093569040339 -8.45361444727594 -4.406553778505542 0 0 0 +740 124 1 2 1 -6.153535163155723 -7.165533916094103 -4.692814737905562 0 0 0 +931 156 1 1 1 -6.789944322805758 -3.6732305408745107 -2.396318978833473 0 0 0 +932 156 1 2 1 -6.0858246563667056 -4.929365949783989 -1.9694346222974994 0 0 0 +936 156 1 6 1 -7.952379264072627 -3.433548691538587 -1.4614426201070012 0 0 0 +2135 356 1 5 1 -7.552803625216052 -2.763996034749126 -6.883918402524329 0 0 0 +2134 356 1 4 1 -7.254386785861914 -1.4940945232015967 -7.701439552277876 0 0 0 +2332 389 1 4 1 0.39343541686495237 -1.4648910080440676 -1.2568746431669182 0 0 0 +3146 0 0 0 2 -3.022282418324306 -5.566633407043323 -3.9037113684888354 0 0 0 +933 156 1 3 1 -5.7139698213131425 -4.955996133749322 -0.5060156510280102 0 0 0 +941 157 1 5 1 -0.48185292382344086 -7.179483314417797 -0.6278244547464443 0 0 0 +2329 389 1 1 1 -2.1274620731386613 -2.9872783387432893 -0.7553398707729729 0 0 0 +2143 358 1 1 1 6.550914732804897 -0.9408894092025177 -5.742033810189089 0 0 0 +2148 358 1 6 1 5.946017697805778 -2.2700697791909272 -6.151594456752538 0 0 0 +3140 0 0 0 2 2.079694474053765 -4.171969912112626 -8.856581154254998 0 0 0 +829 139 1 1 1 -13.618007778051286 -18.159550555263415 -0.12552144225372114 0 0 0 +747 125 1 3 1 0.3424783668614345 -7.107270510375015 -6.194129228190171 0 0 0 +2147 358 1 5 1 5.6904138307963095 -2.4713336461010424 -7.650214663009076 0 0 0 +837 140 1 3 1 -3.8148768233164687 -17.260025662640018 -0.0657188937296463 0 0 0 +755 126 1 5 1 7.026031124774236 -6.174192803141756 -5.5694757279344325 0 0 0 +754 126 1 4 1 5.5401798909770354 -6.1046670772285 -5.690863629768605 0 0 0 +753 126 1 3 1 5.038896488711858 -6.937233113027644 -6.872060681155004 0 0 0 +943 158 1 1 1 5.256485556701253 -6.560598500037135 -2.3211763051122394 0 0 0 +947 158 1 5 1 7.006051622133224 -6.486612877432784 -0.481957238685627 0 0 0 +948 158 1 6 1 5.619844699899194 -6.035971073617004 -0.9043971633024049 0 0 0 +17 3 1 5 1 -12.431904332499284 -23.727849696608526 -22.536591183085207 0 0 0 +3223 0 0 0 2 2.615756882234728 -4.491544427305701 -5.370019403087668 0 0 0 +3256 0 0 0 2 4.082751517327184 -2.4209464155383045 -2.5783171508249816 0 0 0 +3458 0 0 0 2 7.837273449698774 -3.5585018083790807 -2.706289793170811 0 0 0 +751 126 1 1 1 7.17271302949661 -6.380873803207135 -7.980066867493316 0 0 0 +3214 0 0 0 2 14.074716073654136 -6.310463902428787 -5.756535056096288 0 0 0 +3235 0 0 0 2 13.89612793014047 -8.918883056963404 -3.328994936185581 0 0 0 +2346 391 1 6 1 9.720072198224953 -0.5430700156540244 -0.7717367094489974 0 0 0 +756 126 1 6 1 7.624068864236249 -5.5977952033299205 -6.805052987373579 0 0 0 +3262 0 0 0 2 11.660246639377004 -5.479299957932317 -1.5509857202427402 0 0 0 +3124 0 0 0 2 15.05782144191781 -4.398673127243339 -2.4697687653075535 0 0 0 +3078 0 0 0 2 14.290585672260883 -0.34813154173851285 -1.1873345533560518 0 0 0 +762 127 1 6 1 11.78132024764163 -0.6502861650669778 -4.050372497716318 0 0 0 +761 127 1 5 1 10.730387119947009 -1.7316139133914867 -3.9417064544964915 0 0 0 +760 127 1 4 1 10.39848750031133 -2.243263570521202 -5.3617781622688145 0 0 0 +759 127 1 3 1 11.578044583097137 -2.820786904116323 -6.147988849600955 0 0 0 +758 127 1 2 1 12.596948667299957 -1.7071982899589078 -6.165575329244287 0 0 0 +757 127 1 1 1 12.999498011594046 -1.2082882570760738 -4.741416050464298 0 0 0 +2116 353 1 4 1 23.397640411410016 -1.383645836790008 -8.381747199428665 -1 0 0 +2158 360 1 4 1 18.859700078742545 -2.5157535008115577 -5.922090876589833 0 0 0 +918 153 1 6 1 -23.33246566678586 -4.59050071876517 -1.9235302293951413 0 0 0 +913 153 1 1 1 23.27243744574968 -4.025654555949887 -1.6607926864980354 -1 0 0 +724 121 1 4 1 22.86747289341447 -5.067116307938952 -6.132160973703366 -1 0 0 +2159 360 1 5 1 17.64667681854112 -1.593189944002923 -5.950581000415051 0 0 0 +2160 360 1 6 1 16.38946518876379 -2.2132434023508725 -5.371658828642459 0 0 0 +765 128 1 3 1 18.919256336761276 -5.7406881974427035 -2.9834036620195374 0 0 0 +2117 353 1 5 1 21.941551405820324 -1.1525145723813137 -7.841311991082053 -1 0 0 +27 5 1 3 1 0.2134319719423848 -23.02841263650855 -23.842218890415 0 0 0 +914 153 1 2 1 22.87990626449045 -4.335770208239102 -0.24418282035856265 -1 0 0 +768 128 1 6 1 19.9044574866689 -8.105643314380806 -1.5548153315533308 0 0 0 +767 128 1 5 1 18.4273087353529 -8.00853556835088 -1.865119019392137 0 0 0 +3245 0 0 0 2 17.01469167714555 -9.272126256157511 -5.608802330316862 0 0 0 +3460 0 0 0 2 20.67924887214437 -0.9759300115936701 -2.037788850665542 0 0 0 +726 121 1 6 1 -23.749828964065877 -7.086574855350521 -5.750580285698449 0 0 0 +725 121 1 5 1 23.49122289203176 -5.950484794951118 -5.0608929143783214 -1 0 0 +2155 360 1 1 1 16.21581352674625 -3.6150960164136596 -5.878174119709233 0 0 0 +1762 294 1 4 1 6.76701995375078 -0.6022185176891548 -17.51073503385315 0 0 0 +1749 292 1 3 1 -5.953168093186262 -0.3810755897899148 -18.955285627676147 0 0 0 +210 35 1 6 1 -12.857740680723278 -23.625123168582682 -16.594326043136455 0 0 0 +2308 385 1 4 1 -20.582295548917052 -3.8526661552498784 -0.16314363293106618 0 0 0 +2124 354 1 6 1 -18.885559368072702 -0.27624903325245287 -7.166280489348526 0 0 0 +224 38 1 2 1 4.369765605231572 -22.74270233666041 -18.741373421909078 0 0 0 +1938 323 1 6 1 -10.228682906972256 -0.8486168953208069 -11.846311039413811 0 0 0 +233 39 1 5 1 11.65398124072304 -23.68285934578117 -18.362064531069766 0 0 0 +3497 0 0 0 2 -21.52217313277517 -0.0037256295019588723 -21.31638838811959 0 0 0 +1770 295 1 6 1 11.345787196474486 -0.1792943471202603 -18.940828970009935 0 0 0 +386 65 1 2 1 22.65329654197244 -23.90012463728174 -10.37190457362268 -1 0 0 +221 37 1 5 1 0.27703558858680644 -23.774254948648334 -19.498628845906673 0 0 0 +3511 0 0 0 2 -20.688194435719186 -0.06979091805966922 -4.230754208968255 0 0 0 +42 7 1 6 1 8.343318942567604 -23.95200892377677 -22.999104790827733 0 0 0 +3197 0 0 0 2 -3.2924899187284167 -0.20481561908748996 -15.02163803376159 0 0 0 +32 6 1 2 1 3.6024744656818544 -23.709509553147978 -23.493010259694717 0 0 0 +1925 321 1 5 1 21.790786410565232 -0.18640499291161183 -11.937596917512362 -1 0 0 +892 149 1 4 1 -1.933526671093138 -12.00220226353462 -0.23709455417397224 0 0 0 +828 138 1 6 1 -17.91492914267093 -21.4893999160858 -0.06014048039127697 0 0 0 +863 144 1 5 1 17.633975249792154 -18.203051694430286 -0.28884225169531036 0 0 0 +905 151 1 5 1 12.765981485099768 -12.463379381172562 -0.11398091919793561 0 0 0 +946 158 1 4 1 6.970518304057591 -7.954430721528828 -0.2442448713659324 0 0 0 +844 141 1 4 1 0.4178840403797861 -17.16750275435742 -0.1100043492615693 0 0 0 +2311 386 1 1 1 -15.377837430930253 -1.2454028488608084 -0.0450729876591321 0 0 0 +865 145 1 1 1 21.336303584839218 -10.826563441765046 -0.09530106135958571 -1 0 0 +3302 0 0 0 2 14.831765401721588 -7.40559511631571 -0.07198529854724271 0 0 0 +825 138 1 3 1 -17.947815513581382 -19.941848269369917 2.3572262004167346 0 0 0 +826 138 1 4 1 -16.645387548821347 -20.187567351265212 1.566720611286907 0 0 0 +962 161 1 2 1 -23.245243260989565 -23.5447947883942 7.735493173954208 0 0 0 +970 162 1 4 1 -17.77160728184587 -23.147965281186668 5.97302817970456 0 0 0 +971 162 1 5 1 -18.13639760346066 -23.834307919693575 4.673001525243099 0 0 0 +1012 169 1 4 1 23.769794870961256 -17.997708354431236 6.464452602838414 -1 0 0 +1017 170 1 3 1 -16.42038839556943 -19.44562594632789 5.899021306667442 0 0 0 +1019 170 1 5 1 -18.276060056490117 -18.426369001777953 7.240154727509453 0 0 0 +3361 0 0 0 2 -20.37592372016183 -20.5329254922289 5.09755750109135 0 0 0 +963 161 1 3 1 -22.477920096163157 -23.28947311389741 6.448531428930704 0 0 0 +1013 169 1 5 1 -22.820055939418253 -18.16575301922181 6.973809918027156 0 0 0 +3408 0 0 0 2 -21.228797160947227 -15.786795419517262 4.7536912677683665 0 0 0 +3328 0 0 0 2 -19.476505387141067 -16.163800351365715 1.7072448871911525 0 0 0 +1018 170 1 4 1 -17.626746887923982 -18.526856157552167 5.904565556783476 0 0 0 +1014 169 1 6 1 -22.496283364740655 -19.548372460834972 7.520124245006674 0 0 0 +964 161 1 4 1 -23.376932864380194 -22.585174679278154 5.4497379729300315 0 0 0 +824 138 1 2 1 -19.15103780108114 -19.968513112766416 1.4773395202109814 0 0 0 +3341 0 0 0 2 -22.338659764836493 -22.55164480074268 1.7670453200937521 0 0 0 +809 135 1 5 1 11.144167103577457 -22.172146713957154 0.4205919315622332 0 0 0 +823 138 1 1 1 -19.23784479706252 -21.25272793364145 0.7002290096755877 0 0 0 +1016 170 1 2 1 -15.415201130972516 -19.09364453629395 6.9990422086845365 0 0 0 +827 138 1 5 1 -16.733418710902416 -21.532804459911755 0.8640295408588152 0 0 0 +973 163 1 1 1 -14.124507404406128 -23.37799549884175 3.2974724913935756 0 0 0 +977 163 1 5 1 -13.675665581432341 -21.663742487361567 5.028100978831752 0 0 0 +978 163 1 6 1 -14.646771309434426 -22.154758320519463 3.9871027281523714 0 0 0 +1021 171 1 1 1 -10.36445857533906 -16.485575273165455 5.166448461520388 0 0 0 +1022 171 1 2 1 -9.604814316061052 -17.294655114909744 4.14436331602078 0 0 0 +1023 171 1 3 1 -9.882323428251896 -18.749675303349846 4.44111935861602 0 0 0 +1024 171 1 4 1 -11.340924924742387 -19.082252440786437 4.353426459935416 0 0 0 +1025 171 1 5 1 -12.13699217557138 -18.250453585722283 5.32559114597916 0 0 0 +1026 171 1 6 1 -11.839537582361622 -16.774323138360764 5.10820796155933 0 0 0 +3430 0 0 0 2 -9.015397711191875 -22.262422599457036 4.659319773622706 0 0 0 +1579 264 1 1 1 16.797672792300787 -2.176935572333541 23.235278605413125 0 0 -1 +187 32 1 1 1 18.922671763189758 -7.256956487354756 21.211691507295686 0 0 -1 +3367 0 0 0 2 -7.891526508235147 -20.771671810863946 1.302415012668749 0 0 0 +976 163 1 4 1 -13.293083225286928 -22.781205294539163 5.970787115012362 0 0 0 +990 165 1 6 1 -0.9213811803924374 -21.81335432140368 5.425699947903365 0 0 0 +1027 172 1 1 1 -4.111435342815136 -20.22476572661032 5.9633350261966 0 0 0 +1028 172 1 2 1 -5.245976146694997 -19.436455198051835 6.593956113781079 0 0 0 +1029 172 1 3 1 -6.035523712112334 -18.619254082586775 5.596667939991172 0 0 0 +1030 172 1 4 1 -6.509339174631416 -19.39033713755284 4.4000960487721 0 0 0 +1031 172 1 5 1 -5.371919912704307 -20.112810367607825 3.7380759251110383 0 0 0 +1032 172 1 6 1 -4.698319761797388 -20.98156642727746 4.777388582562297 0 0 0 +1037 173 1 5 1 -1.7582666076517373 -15.873422010025267 3.238662998072212 0 0 0 +1038 173 1 6 1 -1.8275465868684184 -17.144645868246542 4.018895700903711 0 0 0 +986 165 1 2 1 -0.23031846656616034 -22.291032180240794 7.784655049540484 0 0 0 +1033 173 1 1 1 -0.4661698524912639 -17.63135162754249 4.279877212031192 0 0 0 +989 165 1 5 1 0.45121129099874685 -21.25298113032178 5.095390094567234 0 0 0 +985 165 1 1 1 -0.905064840815274 -22.814180748168905 6.5385919558990855 0 0 0 +790 132 1 4 1 -3.259784973052714 -23.835555785654 2.876807402839859 0 0 0 +3370 0 0 0 2 -1.8876304570829885 -18.240650971266454 7.7931776430074216 0 0 0 +1375 230 1 1 1 6.301200058233522 -23.555890715102525 19.68176418889137 0 0 0 +186 31 1 6 1 12.48163612172437 -7.443539255522389 22.88556147583554 0 0 -1 +789 132 1 3 1 -2.97832871939051 -22.585580857928473 2.0826987874159597 0 0 0 +838 140 1 4 1 -4.485702942757511 -16.04603733182328 0.5382100206577913 0 0 0 +31 6 1 1 1 3.7197983084956934 -23.533671171639796 23.01333904825005 0 0 -1 +788 132 1 2 1 -4.223920709700759 -22.280731014986802 1.23414490647855 0 0 0 +2888 482 1 2 1 -20.48598042421177 -0.0480645918250935 16.577913233267537 0 0 0 +987 165 1 3 1 1.117767200232826 -21.684022136372725 7.5390158937592835 0 0 0 +849 142 1 3 1 5.3112774011391135 -17.253741241268624 2.4852383593872798 0 0 0 +841 141 1 1 1 0.5447743211090732 -19.992005583997003 0.5376007891299595 0 0 0 +800 134 1 2 1 5.920927088673508 -20.989979332433013 2.0861508503685013 0 0 0 +842 141 1 2 1 0.945829765969605 -19.00275336556104 1.6159528026477785 0 0 0 +843 141 1 3 1 1.3416935210651881 -17.67261522910054 0.9659093903570584 0 0 0 +988 165 1 4 1 0.9430905849462143 -20.6946504249846 6.415724114820948 0 0 0 +1034 173 1 2 1 0.4343312272334196 -16.715794790511257 5.117758364726594 0 0 0 +1039 174 1 1 1 4.636369979468257 -20.352671070638976 5.551762148451706 0 0 0 +1040 174 1 2 1 3.713026440407658 -19.18856811566884 5.124542833567731 0 0 0 +1041 174 1 3 1 3.666382242942735 -18.108569265809624 6.161936290857132 0 0 0 +1042 174 1 4 1 5.110481531771531 -17.77025956129795 6.526082196802357 0 0 0 +1043 174 1 5 1 5.911394514708227 -18.925354608501028 7.077230435253252 0 0 0 +1044 174 1 6 1 6.018183560771833 -19.94442240313583 5.987347752337909 0 0 0 +801 134 1 3 1 6.9197233167187395 -22.116733534678104 1.8927263123135567 0 0 0 +799 134 1 1 1 4.693606286278228 -21.291758319183174 1.275074920733106 0 0 0 +1169 195 1 5 1 -9.942286709145142 -23.967967088652298 10.29495872355987 0 0 0 +848 142 1 2 1 6.688733414342944 -17.665224818318745 2.9772461178257554 0 0 0 +802 134 1 4 1 7.381324194399122 -22.0912110098629 0.42465188942200477 0 0 0 +850 142 1 4 1 5.506682442197521 -16.307320591128843 1.30798052485593 0 0 0 +2889 482 1 3 1 -19.24341212639362 -0.37732068806733676 15.863094381497941 0 0 0 +3836 0 0 0 2 3.792689844852371 -23.466757882267355 4.184588354639091 0 1 0 +1002 167 1 6 1 15.538855082895655 -22.3019993217769 5.805665131062593 0 0 0 +847 142 1 1 1 7.426541176018866 -16.443821277994928 3.5077843443080967 0 0 0 +3286 0 0 0 2 10.316697543999464 -19.38599883759867 3.991887208574264 0 0 0 +1360 227 1 4 1 -12.714579246803664 -23.078983315466104 17.592541425843645 0 0 0 +855 143 1 3 1 12.937477151808086 -18.700751175430813 0.8174841083327137 0 0 0 +999 167 1 3 1 12.981737871021117 -21.05918069259227 5.72760869501284 0 0 0 +1000 167 1 4 1 14.087757407920204 -20.43897806876213 6.53263324709442 0 0 0 +1001 167 1 5 1 15.049178812854866 -21.5241678031044 7.024334763124826 0 0 0 +1045 175 1 1 1 10.86361286627453 -16.551550713617683 6.607916390513787 0 0 0 +1046 175 1 2 1 12.245258629615018 -16.6796084496416 7.28372374037399 0 0 0 +1047 175 1 3 1 13.516367571931971 -16.565363424360697 6.443183488910531 0 0 0 +3384 0 0 0 2 15.462991186085869 -18.464133719321445 3.2802561618269825 0 0 0 +3225 0 0 0 2 14.917531575530669 -23.09627985920959 1.20658384553709 0 0 0 +810 135 1 6 1 10.927542876182171 -22.787303131629223 1.7939908367496484 0 0 0 +998 167 1 2 1 13.488689090121397 -21.65437376368147 4.460737259325945 0 0 0 +997 167 1 1 1 14.428470544843176 -22.750078161905773 4.830441744748006 0 0 0 +1048 175 1 4 1 13.480933697546355 -15.336964037723549 5.523338343545296 0 0 0 +995 166 1 5 1 8.596436852845036 -23.379672906728757 7.0147043409322665 0 0 0 +935 156 1 5 1 -7.521996523003005 -3.417817310339845 0.004654979322226126 0 0 0 +996 166 1 6 1 8.47228236426946 -22.70188026885916 5.645626059332828 0 0 0 +856 143 1 4 1 12.618623644710521 -17.23711408311925 1.0149225588771857 0 0 0 +1533 256 1 3 1 17.547196276810283 -6.12653643011074 17.11808527968338 0 0 0 +3462 0 0 0 2 22.155326321607816 -21.171932967214264 1.1244807923948947 0 0 0 +1535 256 1 5 1 18.087616243887755 -8.256475921086814 15.950726447846021 0 0 0 +3397 0 0 0 2 18.363457643915563 -20.269561033117235 5.097131806145079 0 0 0 +859 144 1 1 1 19.017793068539554 -18.84742778994422 1.7265085748531295 0 0 0 +860 144 1 2 1 18.655717855966575 -20.31955989545773 1.5834688379947484 0 0 0 +861 144 1 3 1 17.322819947287083 -20.446526419330997 0.8395171486810715 0 0 0 +864 144 1 6 1 18.955018736907643 -18.068187597780195 0.44106963160055673 0 0 0 +1010 169 1 2 1 23.020866797481247 -19.700346690858016 8.159834655234784 -1 0 0 +1051 176 1 1 1 16.97461777099055 -15.744998216704227 7.983754834140037 0 0 0 +3321 0 0 0 2 -22.6172736683733 -18.99903731473426 2.9460841578849197 1 0 0 +3434 0 0 0 2 21.512119605856007 -19.580867690432243 4.39219144096832 0 0 0 +876 146 1 6 1 -18.03521680564244 -12.152865142078811 0.3130126107266326 0 0 0 +24 4 1 6 1 -6.631442432365954 -22.16818061556018 23.50436262084972 0 0 -1 +3696 0 0 0 2 13.332953367760366 -0.39140666376460176 19.827807707565075 0 0 0 +3088 0 0 0 2 19.740498996109856 -16.64306861697682 6.542610377306392 0 0 0 +813 136 1 3 1 19.436427070753236 -23.73436993593899 3.342995786281246 0 0 0 +3115 0 0 0 2 22.474912701695 -16.89939419922834 1.4685021701626524 0 0 0 +867 145 1 3 1 23.804558775171063 -10.918752839564059 0.5390477122881914 -1 0 0 +1345 225 1 1 1 23.487072786418093 -23.44054872058053 16.89218407142642 -1 0 0 +875 146 1 5 1 -19.33569887381712 -12.40894266709958 1.0752710419262237 0 0 0 +1060 177 1 4 1 -22.813115878465794 -11.935984900591766 5.6393857172407 0 0 0 +1061 177 1 5 1 -23.794286295429256 -12.982434746710762 5.104206606074699 0 0 0 +1063 178 1 1 1 -18.42521022697386 -12.752919128230396 5.0064653129847185 0 0 0 +1064 178 1 2 1 -17.9182631453025 -11.799765652277996 6.056571235854395 0 0 0 +1065 178 1 3 1 -18.11214188552009 -12.338299086558616 7.4437823470119815 0 0 0 +1066 178 1 4 1 -17.461231660616544 -13.665451987758786 7.570289009577071 0 0 0 +1067 178 1 5 1 -17.9302888044939 -14.62830606336065 6.502464586003645 0 0 0 +1068 178 1 6 1 -17.696059121608823 -14.04933281149815 5.112729243738505 0 0 0 +1059 177 1 3 1 -22.04595675327682 -12.620456412895454 6.808332109932299 0 0 0 +3431 0 0 0 2 -18.23139587380435 -9.57671287137203 3.1622219126868756 0 0 0 +1058 177 1 2 1 -23.001592920265413 -13.023991587891357 7.922122923801787 0 0 0 +3170 0 0 0 2 -22.453319892326775 -14.754254604360277 1.10341712269529 1 0 0 +3450 0 0 0 2 -21.14133921155722 -7.9207420373364705 7.02940260518029 0 0 0 +866 145 1 2 1 22.566192413255095 -10.054020919955892 0.4170748770030278 -1 0 0 +1062 177 1 6 1 23.257520423146055 -13.497168843516285 6.165414206853876 -1 0 0 +1057 177 1 1 1 23.97659667779991 -13.946813536914473 7.385994308670363 -1 0 0 +3403 0 0 0 2 -15.21473819502991 -8.909444124533644 1.1421888433157363 0 0 0 +3414 0 0 0 2 -15.511699670401486 -9.157178055737308 5.216631563593297 0 0 0 +3348 0 0 0 2 -15.322446718476323 -16.60862782189943 3.95390144857141 0 0 0 +1069 179 1 1 1 -13.621528833563012 -13.284700557651705 5.989979873693468 0 0 0 +1070 179 1 2 1 -13.692896262878337 -11.97723057703604 6.6861082103707465 0 0 0 +1071 179 1 3 1 -12.348539633872829 -11.513956561321555 7.217943344851085 0 0 0 +1072 179 1 4 1 -11.368103755034085 -11.469421612819646 6.044502127526391 0 0 0 +1073 179 1 5 1 -11.237112580034253 -12.798278769152155 5.3494854009395345 0 0 0 +1074 179 1 6 1 -12.594763991477736 -13.202756004079784 4.886885284509649 0 0 0 +3402 0 0 0 2 -8.976837666969855 -12.194089347397506 2.6872492435760393 0 0 0 +3464 0 0 0 2 -15.361347195827365 -12.607119898469609 2.648078246403397 0 0 0 +1075 180 1 1 1 -7.890238983812444 -13.367007819762284 6.406163393789202 0 0 0 +3442 0 0 0 2 -8.632031094829815 -8.622482017810736 4.767791646795321 0 0 0 +1079 180 1 5 1 -8.440999697940313 -11.474430568935126 7.9671403424362195 0 0 0 +1080 180 1 6 1 -8.414954166119804 -12.971329746289353 7.76089249123164 0 0 0 +1185 198 1 3 1 8.905562833556667 -23.796292552854673 10.655414975538386 0 0 0 +881 147 1 5 1 -10.31371677394445 -15.360546371027429 0.8917989947700176 0 0 0 +874 146 1 4 1 -20.48320699348137 -11.78173357345762 0.2760199343594123 0 0 0 +2881 481 1 1 1 21.255811595158093 -0.32192505405242705 17.219892869261766 -1 0 0 +1036 173 1 4 1 -0.9463329984867265 -14.960015245358143 4.085080458943398 0 0 0 +3224 0 0 0 2 -6.561559643405188 -15.441245240845806 3.3695480052766995 0 0 0 +1076 180 1 2 1 -6.534353187048512 -12.7925646802452 6.132540962478826 0 0 0 +3351 0 0 0 2 -4.380811216926613 -15.55167262329924 6.366601638662472 0 0 0 +3459 0 0 0 2 -4.547292102681271 -12.18480201659319 3.0624509785361 0 0 0 +1077 180 1 3 1 -6.50363857129574 -11.29710860119865 6.387491343189712 0 0 0 +1078 180 1 4 1 -7.005550069873508 -10.998520028535298 7.78527178034681 0 0 0 +1083 181 1 3 1 -2.132732729014939 -9.659178752708394 4.8023946894031635 0 0 0 +1084 181 1 4 1 -2.778035407631464 -10.500489131335543 5.909212712534127 0 0 0 +1085 181 1 5 1 -1.9254726396141386 -11.759527929479468 6.109574069637155 0 0 0 +893 149 1 5 1 -1.496796387626775 -11.082568264793212 0.8873205389962792 0 0 0 +1081 181 1 1 1 0.023291148538547867 -10.547745016222038 5.216161477597709 0 0 0 +1082 181 1 2 1 -0.7179023786531084 -9.254714398937526 5.119452039964877 0 0 0 +1086 181 1 6 1 -0.4644678370131602 -11.452763431014857 6.325954837930196 0 0 0 +3435 0 0 0 2 -5.312463157076066 -7.922125432116466 6.376925930115594 0 0 0 +887 148 1 5 1 -5.970288279050113 -10.66524974005194 0.35823514439235477 0 0 0 +1195 200 1 1 1 18.710879140987885 -23.948488094381105 12.387622498404081 0 0 0 +1492 249 1 4 1 -23.99794669371716 -4.559255162037272 19.47864031588119 0 0 0 +190 32 1 4 1 21.02508105808955 -6.580154004668273 23.191405739002743 0 0 -1 +851 142 1 5 1 6.332729908997644 -15.094935970437572 1.673279822077434 0 0 0 +1035 173 1 3 1 0.5002940892880385 -15.387614035762114 4.374013825659358 0 0 0 +889 149 1 1 1 0.3787305000939639 -12.466015819605833 1.3969757250358412 0 0 0 +894 149 1 6 1 -0.005063507952628216 -11.130397115312219 0.9064340785820946 0 0 0 +1087 182 1 1 1 3.512570936382949 -12.5225916095895 4.181849034091445 0 0 0 +1088 182 1 2 1 3.576412689557961 -11.07594900015623 4.6873614131121295 0 0 0 +1089 182 1 3 1 4.113578906485602 -11.218611292338803 6.0732611714008895 0 0 0 +1090 182 1 4 1 5.51121493031738 -11.838390668752439 6.058802996032068 0 0 0 +1091 182 1 5 1 5.49835502718614 -13.278459408539959 5.5281250099988855 0 0 0 +1092 182 1 6 1 4.814870782335919 -13.289616850448313 4.179080511717395 0 0 0 +3394 0 0 0 2 2.8298042209577114 -9.145035578406004 1.6312890439045855 0 0 0 +3405 0 0 0 2 6.483128952304012 -9.777952989337757 3.2753726441586495 0 0 0 +852 142 1 6 1 7.62572203669307 -15.415329206374986 2.391970501437723 0 0 0 +3273 0 0 0 2 9.620886926301736 -12.238287942956084 4.240638401542653 0 0 0 +901 151 1 1 1 12.799907015771213 -11.926883800826372 2.352520319331157 0 0 0 +1049 175 1 5 1 12.134412619162472 -15.262296103641459 4.825584520075046 0 0 0 +1050 175 1 6 1 10.933217340546554 -15.286509537130625 5.766499709798567 0 0 0 +903 151 1 3 1 14.51981443047334 -10.888176785310815 0.7868202366779056 0 0 0 +1095 183 1 3 1 14.746394369882015 -11.163875781328557 6.725437691119941 0 0 0 +1096 183 1 4 1 13.574303230458371 -11.416087102124202 5.8007068932182 0 0 0 +1097 183 1 5 1 12.22758897632243 -11.228815466261382 6.471636890368658 0 0 0 +3364 0 0 0 2 9.444656102139223 -7.891164131603252 4.603801493506349 0 0 0 +3377 0 0 0 2 9.725319565563659 -12.830812580358812 8.342517683256798 0 0 0 +909 152 1 3 1 16.426026844612807 -13.916860992832982 3.4700237873751716 0 0 0 +902 151 1 2 1 13.62255910446608 -10.711119590817036 2.031526826493124 0 0 0 +2899 484 1 1 1 -3.7105780772089867 -0.0356126625986598 17.675728632860384 0 0 0 +906 151 1 6 1 11.93367440737887 -12.272312014510742 1.161718372890089 0 0 0 +1056 176 1 6 1 16.445429630148872 -14.44317593552553 8.534977222517034 0 0 0 +908 152 1 2 1 17.57055139636679 -13.821512758994421 4.486819372216268 0 0 0 +910 152 1 4 1 16.479030530669455 -14.962830908009932 2.3716631153316325 0 0 0 +3257 0 0 0 2 22.236316009616097 -13.413679713848456 2.3523956991887442 0 0 0 +911 152 1 5 1 17.851815526777358 -14.978090915410608 1.7703150154306584 0 0 0 +3278 0 0 0 2 23.05159007341027 -9.495581504496597 6.894040592175569 -1 0 0 +1388 232 1 2 1 20.306591433053168 -23.97807643582719 18.530223300638962 0 0 0 +907 152 1 1 1 18.848647638329492 -13.894530074868351 3.7051920019728932 0 0 0 +912 152 1 6 1 18.955432573555093 -15.109379479958884 2.8355430821625127 0 0 0 +1103 184 1 5 1 20.206347003446048 -12.63416013133023 7.5563627849513795 0 0 0 +1104 184 1 6 1 20.253220187600267 -12.390394280831279 9.056051161660205 0 0 0 +3272 0 0 0 2 20.87191654420413 -10.299512323083444 3.820278787269901 0 0 0 +3320 0 0 0 2 16.807837897862797 -9.572609120621214 4.377344936883103 0 0 0 +1102 184 1 4 1 19.19192446694138 -11.71263334186716 6.903256428492904 0 0 0 +1105 185 1 1 1 -22.102655793168125 -5.95318466961866 3.614715347831778 0 0 0 +1110 185 1 6 1 -23.597791540253517 -6.026996767206477 3.6479514787615335 0 0 0 +1111 186 1 1 1 -18.735459728071735 -6.143195511477172 5.130014872597927 0 0 0 +1112 186 1 2 1 -18.174351658631053 -5.114774556736865 6.083828455681202 0 0 0 +1113 186 1 3 1 -16.743725922942556 -4.800199539739016 5.797555313370845 0 0 0 +1114 186 1 4 1 -16.492947189985614 -4.52052066312701 4.327575587230793 0 0 0 +1115 186 1 5 1 -16.905751820112396 -5.721670245941949 3.548315682473881 0 0 0 +1116 186 1 6 1 -18.412873759978474 -5.782667616378422 3.6877009295630137 0 0 0 +2309 385 1 5 1 -20.829134103933665 -3.6502935786205515 1.3200322095537986 0 0 0 +3314 0 0 0 2 23.919122931894908 -5.8603268614029504 7.122514041849684 -1 0 0 +3410 0 0 0 2 -22.44704716786636 -2.8284998700468917 5.749076803368907 0 0 0 +2310 385 1 6 1 -22.016486811552966 -2.755740469077524 1.638354932372291 0 0 0 +2506 418 1 4 1 -18.185384901319043 -0.7298677543511104 5.088153036246268 0 0 0 +2507 418 1 5 1 -19.061700472388225 -1.3353729402535153 4.0185108605167486 0 0 0 +2305 385 1 1 1 -21.81833472980705 -1.3976428602347877 0.9706038370228768 0 0 0 +1106 185 1 2 1 -21.535950804671174 -7.064810597893089 2.758453279366187 0 0 0 +2723 454 1 5 1 7.578863460990124 -0.2603220766129861 10.364871166201038 0 0 0 +2508 418 1 6 1 -18.56158688648351 -0.7609169615279996 2.709071277823106 0 0 0 +3101 0 0 0 2 -13.454062471703548 -5.848762896691145 2.8414388033622164 0 0 0 +1117 187 1 1 1 -13.071112719655039 -6.302241064726749 6.220489970538343 0 0 0 +1120 187 1 4 1 -12.188661808704634 -8.112378646759334 8.384086055395164 0 0 0 +1121 187 1 5 1 -11.56051707295376 -8.131733257865383 6.995510868214582 0 0 0 +1122 187 1 6 1 -11.651955744552259 -6.803122164939312 6.2392464386719855 0 0 0 +3311 0 0 0 2 -11.979989745297113 -9.26264957539165 3.137787985387401 0 0 0 +3323 0 0 0 2 -13.99498606005576 -1.2747242536222314 3.527954314127603 0 0 0 +3390 0 0 0 2 -10.559904208406648 -1.9059148261968153 2.217653424836197 0 0 0 +1126 188 1 4 1 -7.888180350902449 -4.814560560962669 7.582912516838958 0 0 0 +1127 188 1 5 1 -8.191822269626773 -4.915677840877184 6.11967429714855 0 0 0 +3284 0 0 0 2 -9.968871710502233 -5.61496628152287 3.1916579874985556 0 0 0 +3312 0 0 0 2 -16.571619305086116 -1.8670851393991261 8.42064259388609 0 0 0 +2513 419 1 5 1 -11.787668374502214 -2.4742715634289443 7.205650990649683 0 0 0 +2514 419 1 6 1 -13.018519669296 -1.619013198064621 7.0193007725264795 0 0 0 +2512 419 1 4 1 -10.746846510610267 -2.0775627366339298 6.177925042022491 0 0 0 +2511 419 1 3 1 -10.422376251772299 -0.62459245545211 6.243231680616188 0 0 0 +975 163 1 3 1 -12.644788068655382 -23.920682682573382 5.182320310144242 0 0 0 +939 157 1 3 1 -0.6449045350327843 -7.050221194683793 1.891093000372282 0 0 0 +3301 0 0 0 2 -5.462950493752959 -7.237740016960936 2.566559266228559 0 0 0 +2522 421 1 2 1 -0.46437303750074355 -0.7979635925097497 3.397110898235859 0 0 0 +1584 264 1 6 1 18.308050122429844 -2.0231100461693816 23.370290134151574 0 0 -1 +937 157 1 1 1 -2.694587307392272 -7.227411546710703 0.4315050550662051 0 0 0 +1123 188 1 1 1 -6.629643607638854 -3.084979832026326 5.506331456079684 0 0 0 +1124 188 1 2 1 -6.3732560403840735 -2.9206637794576085 6.983662127174146 0 0 0 +1128 188 1 6 1 -7.0193460661562135 -4.523182292701526 5.233874594023501 0 0 0 +1132 189 1 4 1 -2.0293769475553254 -4.5741298042297265 7.914627140473454 0 0 0 +1008 168 1 6 1 18.108151045566387 -23.840887618279407 8.309205335873672 0 0 0 +3452 0 0 0 2 -3.6273521777769053 -3.8901115052723156 2.2581535003949336 0 0 0 +938 157 1 2 1 -2.081171208538568 -6.725072641878276 1.7366161297523577 0 0 0 +1133 189 1 5 1 -2.3789390910107473 -6.013889059510415 7.591287072337762 0 0 0 +1134 189 1 6 1 -2.1286083588453337 -6.347621956221075 6.1238966497538145 0 0 0 +1129 189 1 1 1 -2.9225462034917054 -5.438329758934311 5.218989550379483 0 0 0 +928 155 1 4 1 -10.003771867536761 -8.740472342505047 0.3215758140589532 0 0 0 +1131 189 1 3 1 -2.903144506596247 -3.7286645652188923 7.093658948350134 0 0 0 +1130 189 1 2 1 -2.7182279456735423 -4.007110901709979 5.625408961194845 0 0 0 +3305 0 0 0 2 1.167003206758467 -2.5218756794281685 6.335466053638837 0 0 0 +3330 0 0 0 2 1.1730668529359065 -5.716967083300476 4.575740280949628 0 0 0 +1135 190 1 1 1 5.25228929412677 -4.786642914398927 7.606731966470379 0 0 0 +1136 190 1 2 1 4.1211413344714884 -5.818728090674818 7.6094138363051975 0 0 0 +1137 190 1 3 1 4.04799991893836 -6.628925573218821 6.330136444827693 0 0 0 +1138 190 1 4 1 5.377964001291636 -7.306849482883488 6.09702078415099 0 0 0 +1139 190 1 5 1 6.484588485926176 -6.280570440693184 6.036522265202944 0 0 0 +1140 190 1 6 1 6.595735430606629 -5.4406776541895825 7.295052269861041 0 0 0 +3285 0 0 0 2 5.9657564386898105 -2.525594531032543 0.9677797183391833 0 0 0 +3290 0 0 0 2 4.987722704900858 -5.591188973494137 2.5220952169969104 0 0 0 +3391 0 0 0 2 2.214354384698622 -3.7387692435055913 1.2733504061904484 0 0 0 +3428 0 0 0 2 4.047182823326397 -2.107154647097435 4.496170254203407 0 0 0 +940 157 1 4 1 0.05681222235696326 -6.641224695521231 0.6678871951989888 0 0 0 +2541 424 1 3 1 16.110329144523256 -1.2581883158808262 7.2099112731287365 0 0 0 +3329 0 0 0 2 11.631320456102223 -7.772075663291298 1.4355158018685614 0 0 0 +3419 0 0 0 2 8.653893212746373 -1.6338482211437688 2.851355908479867 0 0 0 +954 159 1 6 1 14.83290941823865 -3.262673115811718 1.6706144535372724 0 0 0 +953 159 1 5 1 14.471698295451422 -2.88943233131196 3.072807137695372 0 0 0 +3283 0 0 0 2 14.232357617169999 -6.909252196473885 3.7128715761871156 0 0 0 +952 159 1 4 1 13.384140838397293 -1.769267002905193 3.0768451282593636 0 0 0 +3360 0 0 0 2 9.176084046705784 -5.015535656519583 2.1255759912402783 0 0 0 +949 159 1 1 1 13.598561716883546 -3.8783293869776476 1.0627597718423756 0 0 0 +950 159 1 2 1 12.495577982884354 -2.8253682407099667 0.9816731263542889 0 0 0 +951 159 1 3 1 12.159664069644567 -2.059282461587678 2.2270126781889537 0 0 0 +1141 191 1 1 1 11.807055483528808 -3.206594008265493 6.566611745341369 0 0 0 +1142 191 1 2 1 13.213707740028244 -3.718871772083856 6.674020161437999 0 0 0 +1143 191 1 3 1 13.255175953525763 -4.9727245064938765 7.519815215239154 0 0 0 +1144 191 1 4 1 12.279298323909403 -6.017285563449272 6.977224600189265 0 0 0 +1145 191 1 5 1 10.867293067009204 -5.49140290561826 6.963048000137605 0 0 0 +1146 191 1 6 1 10.832550235538589 -4.279489655299183 6.091337097305894 0 0 0 +3 1 1 3 1 -21.498641833812457 -23.87117524845698 21.714549965565414 0 0 -1 +2542 424 1 4 1 15.185036744754202 -0.44857297965808923 6.291768572792281 0 0 0 +814 136 1 4 1 19.11168809581038 -23.75850984288025 1.848131479882517 0 0 0 +1149 192 1 3 1 16.760438591331884 -6.164612232670521 6.341534541456607 0 0 0 +1109 185 1 5 1 23.909369191337802 -7.391718163034026 4.150728676187785 -1 0 0 +958 160 1 4 1 20.047297670874787 -5.06140929367589 1.6678838780227145 0 0 0 +957 160 1 3 1 18.68045981934139 -4.408776993784003 1.636883235765724 0 0 0 +959 160 1 5 1 20.143562847492472 -6.390270393910953 2.4027263126809726 0 0 0 +955 160 1 1 1 17.615449968456335 -6.675863051189876 1.9570044748703035 0 0 0 +956 160 1 2 1 17.62781281212632 -5.397451606902536 1.1490274464909065 0 0 0 +960 160 1 6 1 19.02148468254359 -7.257310680036835 1.8429783127961072 0 0 0 +1107 185 1 3 1 -21.909232778195175 -8.40483843386914 3.4000284022714427 0 0 0 +1108 185 1 4 1 -23.446354603469764 -8.530585009014711 3.3995508489078508 0 0 0 +1150 192 1 4 1 18.1034850064429 -6.257023340690045 7.048904575685549 0 0 0 +1151 192 1 5 1 19.287967649722255 -5.756227564069542 6.231611316699857 0 0 0 +1152 192 1 6 1 19.123812875017148 -4.305320084136391 5.7127061724063966 0 0 0 +3270 0 0 0 2 21.980783615419092 -1.0189033103546896 1.2211752711156856 0 0 0 +3376 0 0 0 2 21.935325192538567 -2.12420322888575 5.097839591988924 0 0 0 +2540 424 1 2 1 17.551098151546334 -0.7243083242661096 7.185838367747032 0 0 0 +877 147 1 1 1 -12.018028845037117 -13.468935235376495 0.8674856732641024 0 0 0 +2349 392 1 3 1 17.756615467894747 -0.257560953348755 3.631231189974303 0 0 0 +1147 192 1 1 1 17.78610555508386 -4.328871594942509 4.9263135944557295 0 0 0 +1148 192 1 2 1 16.637814266765265 -4.743853180070569 5.885163898775647 0 0 0 +2350 392 1 4 1 18.76141343322979 -0.22331866945586076 2.485257623360999 0 0 0 +1015 170 1 1 1 -16.05760970847367 -18.967808285353097 8.385063721003688 0 0 0 +1020 170 1 6 1 -17.26975020088449 -18.008777157310163 8.31154699844652 0 0 0 +3404 0 0 0 2 22.022519301018676 -19.888515030318164 23.644735050499477 0 0 0 +3401 0 0 0 2 -19.459592525025226 -21.794368706230767 9.49355193241228 0 0 0 +1204 201 1 4 1 -22.355599188172814 -18.884995477521514 14.112997946224006 0 0 0 +1205 201 1 5 1 -21.679029559885638 -17.608408178410482 13.739253202311266 0 0 0 +1207 202 1 1 1 -17.32654508495042 -18.33244534942426 14.248288023513842 0 0 0 +1208 202 1 2 1 -15.926690492072169 -17.85868957667772 13.89743142091581 0 0 0 +1209 202 1 3 1 -15.168442527563444 -19.018813530732928 13.353310259084491 0 0 0 +1210 202 1 4 1 -15.839002724555753 -19.76451365954606 12.198007717507743 0 0 0 +1211 202 1 5 1 -17.23316065991221 -20.22749108852027 12.55582138111886 0 0 0 +1212 202 1 6 1 -18.023752701245755 -19.036327126973454 13.10013820203593 0 0 0 +3366 0 0 0 2 -19.192925899961118 -22.0444281706311 14.718213117975822 0 0 0 +1202 201 1 2 1 -21.87412028549825 -19.795293095272918 11.789867113510955 0 0 0 +1203 201 1 3 1 -21.716410331915743 -19.981451650521574 13.26769707014388 0 0 0 +1206 201 1 6 1 -21.870310764479182 -17.411744162723586 12.247975258407836 0 0 0 +1201 201 1 1 1 -21.26275030507105 -18.49312240796623 11.37848177682286 0 0 0 +41 7 1 5 1 9.019271093276394 -23.33015168079947 23.799118465447474 0 0 -1 +3316 0 0 0 2 -11.448444652202742 -20.89829828630422 8.141671254929015 0 0 0 +3266 0 0 0 2 -8.420788248473738 -17.91509273797118 8.141531807366606 0 0 0 +3416 0 0 0 2 -14.049281459072049 -23.229939510818124 10.059504480521932 0 0 0 +1213 203 1 1 1 -12.829655520132803 -16.424459722522048 8.732588356672906 0 0 0 +1214 203 1 2 1 -12.56032954525903 -17.526264583768697 9.736169861262956 0 0 0 +3332 0 0 0 2 -12.288170475383119 -21.169699334733675 12.714367143636055 0 0 0 +3349 0 0 0 2 -9.70309211689612 -19.674185783574544 11.058073564700265 0 0 0 +3467 0 0 0 2 -9.441508782193612 -19.23239835296164 14.907061124409154 0 0 0 +3468 0 0 0 2 -15.713672360727925 -21.901051880683216 15.506455579960592 0 0 0 +1173 196 1 3 1 -5.902062304663264 -22.478655467833452 14.26343243358939 0 0 0 +1410 235 1 6 1 -12.30113070589465 -18.053961825552314 17.393827961738097 0 0 0 +1405 235 1 1 1 -12.98017282943283 -17.351780363150528 16.258655013603374 0 0 0 +1172 196 1 2 1 -7.1384705754410005 -22.782565155750046 13.43260127323153 0 0 0 +1215 203 1 3 1 -12.526434027493163 -17.027186342779256 11.171378587275768 0 0 0 +3116 0 0 0 2 8.053571678304015 -11.827091003700565 0.02422607703821742 0 0 0 +1178 197 1 2 1 0.18512051418339875 -23.240745900273275 13.632583179471053 0 0 0 +1176 196 1 6 1 -6.046407849520746 -21.75838003420144 11.445316114919153 0 0 0 +1171 196 1 1 1 -6.8632621732356816 -22.942805981968828 11.919619597400388 0 0 0 +1174 196 1 4 1 -5.254450247797085 -21.24321771868416 13.755861589011891 0 0 0 +1175 196 1 5 1 -4.847840381607936 -21.4477384184298 12.310320391498081 0 0 0 +1177 197 1 1 1 -0.45373443247071865 -23.295301351460832 12.258725520045033 0 0 0 +1219 204 1 1 1 -6.253094482561783 -17.783762720392737 10.96317205060988 0 0 0 +1220 204 1 2 1 -6.88895532391108 -17.38865716023543 12.30371497794628 0 0 0 +1221 204 1 3 1 -6.003697844412144 -17.804643021606953 13.457398668397534 0 0 0 +1222 204 1 4 1 -4.6624893732831625 -17.086178850739678 13.310413821405637 0 0 0 +1223 204 1 5 1 -3.9893155415554116 -17.574240549990073 12.044195237849149 0 0 0 +1224 204 1 6 1 -4.815831997416458 -17.301099834569737 10.819842237794923 0 0 0 +3317 0 0 0 2 -7.671650984799278 -21.71004492301455 7.972930310107289 0 0 0 +3346 0 0 0 2 -1.5251137817138702 -20.072850352468656 14.768503875732762 0 0 0 +3374 0 0 0 2 -3.331090939452241 -21.693956207971738 9.313927980318866 0 0 0 +1182 197 1 6 1 -0.2520834027027356 -21.972258551816456 11.500032864531809 0 0 0 +1411 236 1 1 1 -6.784825160593357 -17.02604063701482 16.911970632937322 0 0 0 +1229 205 1 5 1 1.029425075367434 -17.638204974640253 13.092000180609162 0 0 0 +1230 205 1 6 1 -0.2158101564037198 -17.60846675267506 12.203699817054167 0 0 0 +1225 205 1 1 1 -0.6043479173407337 -16.201665128602208 11.772083021314318 0 0 0 +3293 0 0 0 2 4.668094293184816 -21.928955392399782 8.991152930870824 0 0 0 +1187 198 1 5 1 7.960885343238637 -22.829262582691438 12.789129028116566 0 0 0 +59 10 1 5 1 -15.033121939602877 -19.974599675607347 23.863544319705568 0 0 -1 +1228 205 1 4 1 2.2122069570600202 -16.94651147097188 12.423674255327807 0 0 0 +1231 206 1 1 1 5.197457075324086 -19.032030734326543 11.999322997335346 0 0 0 +1232 206 1 2 1 5.952261618443116 -18.410133724431425 13.176075206113916 0 0 0 +1233 206 1 3 1 7.297020363370095 -19.083691257820952 13.21618985182293 0 0 0 +1234 206 1 4 1 8.055441564488095 -19.003019335878257 11.90389303371626 0 0 0 +1235 206 1 5 1 7.337978810511449 -19.670115716571328 10.78162345063563 0 0 0 +1236 206 1 6 1 5.983257397453636 -19.026113761999785 10.681402548960987 0 0 0 +3334 0 0 0 2 5.158805894971885 -20.796901216924322 15.624926235212763 0 0 0 +3372 0 0 0 2 2.4518037183948422 -18.994916586292003 9.321512964736373 0 0 0 +1181 197 1 5 1 1.2764370540794854 -21.701078065385314 11.381146889004656 0 0 0 +1180 197 1 4 1 1.9076447496340623 -21.688438600120428 12.769990402016093 0 0 0 +1179 197 1 3 1 1.6754517734135106 -22.957224819476888 13.558218411859462 0 0 0 +1186 198 1 4 1 9.181776438848953 -22.923538470638167 11.863241090656784 0 0 0 +3373 0 0 0 2 10.722481327837436 -23.376917814976036 15.72683369817757 0 0 0 +3359 0 0 0 2 10.16174456979336 -16.721321620910977 10.531874655689784 0 0 0 +3313 0 0 0 2 9.974046148244138 -19.8854595224954 8.42859175809897 0 0 0 +1237 207 1 1 1 12.618487076653286 -18.129918786680733 13.390495212239815 0 0 0 +1238 207 1 2 1 12.14270425884958 -19.54719344133592 13.091992375638359 0 0 0 +1239 207 1 3 1 11.838082364697343 -19.692920499004135 11.625369816849307 0 0 0 +1240 207 1 4 1 13.074455368613254 -19.391734482737707 10.779169656627369 0 0 0 +1241 207 1 5 1 13.63418503996974 -18.023396501693945 11.125574634168117 0 0 0 +1242 207 1 6 1 13.85156947042488 -17.754109563702038 12.59200705831821 0 0 0 +3277 0 0 0 2 9.472619180073002 -16.17115036154615 14.412820000569331 0 0 0 +3433 0 0 0 2 14.0292499667197 -21.515585076001013 15.90957263215743 0 0 0 +3784 0 0 0 2 12.107732021815714 -23.048353397066172 8.775783610666997 0 1 0 +1053 176 1 3 1 17.102732154471827 -16.687826166418443 10.290590159948911 0 0 0 +1011 169 1 3 1 22.822831853857135 -18.293373203461474 7.592027563230044 -1 0 0 +1009 169 1 1 1 -23.52074124045593 -19.952643787656136 8.584380232880001 0 0 0 +1052 176 1 2 1 16.490944355154152 -16.837186007430493 8.900145414214615 0 0 0 +1246 208 1 4 1 17.770531094783067 -20.398881135047183 15.028171060366562 0 0 0 +1247 208 1 5 1 16.798447453894738 -19.651265878636014 15.922303558310732 0 0 0 +836 140 1 2 1 -4.5500751529180805 -18.46794133900421 0.3585401267170442 0 0 0 +3310 0 0 0 2 16.15469941458705 -21.509583486028852 10.775327516657974 0 0 0 +991 166 1 1 1 8.398845718925681 -23.76455117964308 4.593183058856887 0 0 0 +1197 200 1 3 1 20.27118796774351 -23.554108407168933 14.321558207421502 0 0 0 +1196 200 1 2 1 19.335300733157407 -22.88868094326526 13.3043448771391 0 0 0 +1243 208 1 1 1 16.712917947953628 -17.695528204559295 14.417118059977497 0 0 0 +1244 208 1 2 1 17.741697192530644 -18.397767548391837 13.572887158152165 0 0 0 +1245 208 1 3 1 18.64525939861331 -19.30978609022962 14.432559745240098 0 0 0 +1248 208 1 6 1 15.866124789116638 -18.702597964904786 15.218979884014356 0 0 0 +3306 0 0 0 2 22.111277319527698 -19.093303323807685 11.759831605433297 0 0 0 +3324 0 0 0 2 22.449460739472276 -20.53431005737485 15.053021484554158 0 0 0 +3358 0 0 0 2 18.714690936023 -19.62649423693753 8.733847525288066 0 0 0 +3432 0 0 0 2 22.466297165719126 -22.518224111331307 10.438915743397857 0 0 0 +3350 0 0 0 2 -21.033041691651015 -15.63128018273484 8.759374410015589 0 0 0 +3319 0 0 0 2 -18.117200848918355 -15.871254368656448 11.027852854492453 0 0 0 +1252 209 1 4 1 -22.541797660748387 -12.547976951118388 13.74058366568127 0 0 0 +1254 209 1 6 1 -23.26290086155384 -14.173721557900606 11.840768111042182 0 0 0 +1255 210 1 1 1 -19.87935126837506 -9.838489025753358 11.761130360370746 0 0 0 +1256 210 1 2 1 -18.714054944244996 -10.57436234951771 12.397800380926515 0 0 0 +1257 210 1 3 1 -19.124122982948485 -12.038719271625757 12.3813929954208 0 0 0 +1258 210 1 4 1 -19.38167553333457 -12.544455820966682 10.986827518984146 0 0 0 +1259 210 1 5 1 -20.42128058630835 -11.752425578718519 10.277606317346685 0 0 0 +1260 210 1 6 1 -20.054655940552767 -10.272468433501002 10.320033944802994 0 0 0 +3289 0 0 0 2 -23.34107684981593 -9.059463303883804 9.869992238546915 0 0 0 +3327 0 0 0 2 -19.207514567217626 -15.289999920233576 15.103648007941544 0 0 0 +1253 209 1 5 1 -22.887768298661292 -13.98218591235265 13.338213685914651 0 0 0 +3337 0 0 0 2 -17.31794553348839 -8.231680179988347 8.17594455597084 0 0 0 +1251 209 1 3 1 -23.760194641061933 -11.766510851707531 13.30137503932726 0 0 0 +3344 0 0 0 2 -23.28118086056096 -15.427518461784397 16.80368373877408 1 0 0 +1218 203 1 6 1 -14.066651297740027 -15.654455789729651 9.100205573328616 0 0 0 +3418 0 0 0 2 -8.873858629528426 -8.594080526866026 9.818734864342739 0 0 0 +1217 203 1 5 1 -14.076824153332675 -15.114256165013565 10.533588205383095 0 0 0 +1216 203 1 4 1 -13.819240552536451 -16.278293079055654 11.465105298886739 0 0 0 +1261 211 1 1 1 -10.741294231467384 -11.889705327479394 11.27119536666082 0 0 0 +1262 211 1 2 1 -11.356812948361291 -12.911839060749914 12.236219180001518 0 0 0 +1263 211 1 3 1 -12.107916769717827 -12.146842525565079 13.338256742176764 0 0 0 +1264 211 1 4 1 -12.983927090947864 -11.051990669580794 12.699031530175322 0 0 0 +1265 211 1 5 1 -12.221184276282381 -10.112035487697119 11.828074156715521 0 0 0 +1266 211 1 6 1 -11.721972560949132 -10.901622281080574 10.693556330835387 0 0 0 +3307 0 0 0 2 -15.799331796766685 -13.310276961047933 13.526840526348417 0 0 0 +3385 0 0 0 2 -15.420470179811796 -11.688271734366158 9.870706802096432 0 0 0 +3363 0 0 0 2 -9.618457025822702 -15.199917631044462 10.272708979307852 0 0 0 +1406 235 1 2 1 -11.933175544035004 -16.701578618593764 15.40605025349867 0 0 0 +3280 0 0 0 2 -8.430547066581186 -14.330405127845589 14.189219085253887 0 0 0 +3339 0 0 0 2 -8.394539988509608 -9.695999408522015 13.046661382378865 0 0 0 +3296 0 0 0 2 -16.8370068030907 -10.46576349028941 15.553059330574753 0 0 0 +3381 0 0 0 2 -1.3674656856812415 -14.871656347499558 8.198364700100067 0 0 0 +3265 0 0 0 2 -4.61288905897662 -13.721463194738455 14.928421207012066 0 0 0 +1267 212 1 1 1 -4.027220113673917 -13.537048809545988 10.510560263530628 0 0 0 +1268 212 1 2 1 -5.344382181532006 -14.135785046959784 10.160361242293337 0 0 0 +1269 212 1 3 1 -6.425867495398707 -13.829015467953333 11.139399596653396 0 0 0 +1270 212 1 4 1 -6.578584145716371 -12.373782442480476 11.409071865634537 0 0 0 +1271 212 1 5 1 -5.20540789321765 -11.777992548933135 11.776057887987566 0 0 0 +1272 212 1 6 1 -4.131089234916621 -12.041112574219293 10.751599486810493 0 0 0 +1273 213 1 1 1 -0.27888312404531235 -12.137337865804914 14.332889546166351 0 0 0 +3298 0 0 0 2 -1.6259702852348539 -9.864143561701914 9.387337369555011 0 0 0 +3409 0 0 0 2 -1.9348147014695412 -16.59096075385622 15.466982559560146 0 0 0 +1320 220 1 6 1 -5.326044253790627 -7.648513310341412 12.275396570545912 0 0 0 +1461 244 1 3 1 -5.485132017964809 -10.26399549987406 16.231970666315082 0 0 0 +1460 244 1 2 1 -4.94174552933303 -9.692195398578846 14.960531662063156 0 0 0 +3386 0 0 0 2 2.823622020371947 -15.051241389564394 7.679369779572829 0 0 0 +1227 205 1 3 1 1.7969355916248317 -15.562900477061502 12.063656755618377 0 0 0 +1277 213 1 5 1 2.1681932533036377 -11.473187671418804 14.233956785292781 0 0 0 +1278 213 1 6 1 1.1804376940123427 -12.514491050649898 14.747282058393838 0 0 0 +1226 205 1 2 1 0.5939769223060047 -15.532794516280328 11.130908621389729 0 0 0 +1276 213 1 4 1 1.9788566026137113 -11.029464995221524 12.796434218357593 0 0 0 +3444 0 0 0 2 1.947865687513546 -11.53033988037378 8.954317970805302 0 0 0 +1274 213 1 2 1 -0.4151994257607314 -11.842447761694302 12.816501969412059 0 0 0 +1275 213 1 3 1 0.5361261884144444 -10.674889590473311 12.454314445608137 0 0 0 +1279 214 1 1 1 7.019644018416185 -14.516005813442042 9.492024699284707 0 0 0 +1280 214 1 2 1 6.380859245776098 -15.520845447970233 10.416056977769914 0 0 0 +1281 214 1 3 1 6.360714877199137 -15.071997003906741 11.842335209635099 0 0 0 +1282 214 1 4 1 5.534145733475659 -13.817465971595071 12.041290206354416 0 0 0 +1284 214 1 6 1 6.29475594731161 -13.220133999955813 9.660033493908303 0 0 0 +3335 0 0 0 2 3.9288950424576954 -15.21518547380659 14.980575275713736 0 0 0 +3457 0 0 0 2 4.9364945284772315 -9.283547158270396 9.126655067204537 0 0 0 +3448 0 0 0 2 5.1710056760153025 -9.444310144847435 14.458647854420217 0 0 0 +1283 214 1 5 1 6.235370058189469 -12.808220173026337 11.160744086981323 0 0 0 +3299 0 0 0 2 7.145427051647732 -8.017255796734071 11.758388325113605 0 0 0 +3441 0 0 0 2 6.992256035727669 -12.967015331782104 15.318195047964723 0 0 0 +3362 0 0 0 2 9.024568721279724 -9.12602431414049 8.486685754361831 0 0 0 +1094 183 1 2 1 14.693199634280052 -9.75956007729086 7.337901021495834 0 0 0 +1098 183 1 6 1 12.184425495450142 -9.867029222534416 7.1476592712845965 0 0 0 +1093 183 1 1 1 13.362102389190865 -9.56360893140457 8.055750844529939 0 0 0 +1285 215 1 1 1 10.151296297925063 -12.900861293633724 13.117378400295106 0 0 0 +1286 215 1 2 1 9.60632664259085 -12.470968972655886 11.774106428601797 0 0 0 +1287 215 1 3 1 10.191676380150053 -11.085546164793474 11.399604988586011 0 0 0 +1288 215 1 4 1 11.725164485298594 -11.0840720496045 11.479100911197119 0 0 0 +1289 215 1 5 1 12.200871954922171 -11.373318475254093 12.884973217114325 0 0 0 +1290 215 1 6 1 11.650425241141258 -12.753383170134828 13.316603251711143 0 0 0 +3449 0 0 0 2 12.953770393404286 -13.586058474626363 9.686913344042503 0 0 0 +3304 0 0 0 2 12.034136880808564 -8.320896663092931 14.438498306365124 0 0 0 +3421 0 0 0 2 15.016395171421403 -13.83574966561207 13.368056465115869 0 0 0 +1294 216 1 4 1 17.43284287713118 -10.510077074284581 13.209171536775095 0 0 0 +1293 216 1 3 1 16.053914884474604 -10.423969963615994 13.786351846850174 0 0 0 +3445 0 0 0 2 8.55756541970786 -9.633712765428823 14.620129266523383 0 0 0 +1054 176 1 4 1 16.758534483115135 -15.317559349723528 10.867885177784656 0 0 0 +1055 176 1 5 1 17.133189772919295 -14.194159524929557 9.88433574488563 0 0 0 +1099 184 1 1 1 20.457326009278713 -10.901425488219607 9.352824192956861 0 0 0 +3440 0 0 0 2 20.614444697184904 -16.156520571609416 9.769807325756645 0 0 0 +3331 0 0 0 2 22.36473176637919 -16.48318291388359 14.149832305042109 0 0 0 +1100 184 1 2 1 19.317628609708358 -10.050323135667762 8.812160631637608 0 0 0 +1101 184 1 3 1 19.21849779301588 -10.226440373055901 7.337373871032383 0 0 0 +1250 209 1 2 1 23.734166275196802 -11.94126867514926 11.874531307029486 -1 0 0 +1249 209 1 1 1 23.478590041648705 -13.396493506784742 11.491314407922953 -1 0 0 +1291 216 1 1 1 15.227936819757513 -9.494522445954326 11.61824854517953 0 0 0 +1292 216 1 2 1 15.19345023339966 -9.385389692980956 13.123588350914362 0 0 0 +1295 216 1 5 1 17.472992551828966 -10.5589608333501 11.742687032491817 0 0 0 +1296 216 1 6 1 16.658960958129786 -9.435737276597614 11.165017238413908 0 0 0 +3423 0 0 0 2 18.68558557033182 -14.044646051327666 13.655478435337917 0 0 0 +3443 0 0 0 2 21.400428705753832 -9.702413061257158 14.908741043895784 0 0 0 +1298 217 1 2 1 20.680360884106786 -6.909587656005034 9.309588821120103 -1 0 0 +3268 0 0 0 2 -23.605004199989875 -7.18358346125254 14.088999013581148 0 0 0 +1303 218 1 1 1 -21.724595595668855 -5.302759950787758 11.059579639762301 0 0 0 +1304 218 1 2 1 -20.532274460347406 -6.144100270204794 11.453906251608991 0 0 0 +1305 218 1 3 1 -19.597015194787918 -6.467312320082984 10.332111077177709 0 0 0 +1306 218 1 4 1 -19.245051364420316 -5.3011810319987935 9.45763310269675 0 0 0 +1307 218 1 5 1 -20.444059422766955 -4.577661586251497 8.923272444925223 0 0 0 +1308 218 1 6 1 -21.199881825751934 -4.141467548817415 10.183452238348321 0 0 0 +3437 0 0 0 2 -23.113027559523303 -3.1118306040717796 13.564188798713424 0 0 0 +3711 0 0 0 2 -19.37326056115598 -2.4572159893676515 12.626344294344113 0 0 0 +1498 250 1 4 1 -18.19771978725765 -5.9784659497815005 14.33379549244431 0 0 0 +1497 250 1 3 1 -16.961317628584027 -5.9386944055517565 15.216207308529377 0 0 0 +1118 187 1 2 1 -13.73681845868938 -6.239845846765689 7.574813935016499 0 0 0 +1125 188 1 3 1 -7.5007498049873425 -3.3824559265130913 7.880093907625426 0 0 0 +2703 451 1 3 1 -14.16324165005486 -0.42951684255410855 10.628569153890856 0 0 0 +3447 0 0 0 2 -15.678108032840456 -8.061638721113193 12.300443024549063 0 0 0 +1119 187 1 3 1 -13.601061561680027 -7.628269327721265 8.166278555753722 0 0 0 +1309 219 1 1 1 -9.634643215562857 -4.051371260061948 12.021490400068501 0 0 0 +1310 219 1 2 1 -10.418222690031325 -3.606373247539941 10.790232103402566 0 0 0 +1311 219 1 3 1 -11.007626331582951 -4.807647746276417 10.022136929732282 0 0 0 +1312 219 1 4 1 -11.793331581978563 -5.7550478185923915 10.90455411128833 0 0 0 +1313 219 1 5 1 -10.971900384758912 -6.103009768576788 12.139510791988021 0 0 0 +1314 219 1 6 1 -10.60563436068127 -4.839792459035415 12.895260006359749 0 0 0 +2704 451 1 4 1 -13.526286017894343 -1.2297273489903677 11.711223250690477 0 0 0 +3282 0 0 0 2 -13.845998243931874 -4.860606709655933 14.468420419164634 0 0 0 +3342 0 0 0 2 -16.09953800219193 -4.390334468995647 11.589422829892152 0 0 0 +831 139 1 3 1 -11.985655165698518 -19.78975175629538 0.9910076124395633 0 0 0 +1505 251 1 5 1 -11.539547930769299 -8.641411996770417 15.029084296867628 0 0 0 +2705 451 1 5 1 -12.148802338224243 -0.7129090633510166 12.056523641767416 0 0 0 +2897 483 1 5 1 -10.395555901380046 -0.9006756019603618 15.244856144434777 0 0 0 +3291 0 0 0 2 -16.25759187390523 -2.0486970514499134 15.273264929441067 0 0 0 +1506 251 1 6 1 -13.012556336508279 -8.743003692047214 15.151124082150474 0 0 0 +1504 251 1 4 1 -11.053432301712721 -7.362445256930015 15.620998835842485 0 0 0 +2896 483 1 4 1 -11.659524349802076 -0.7160131388418983 16.04871699000266 0 0 0 +2711 452 1 5 1 -4.5245998009962225 -1.6522671130462816 14.23668558255067 0 0 0 +3723 0 0 0 2 -1.0773445443589031 -1.429659655354562 9.508780954148985 0 0 0 +2707 452 1 1 1 -5.798446072730455 -0.16774656843546196 12.693205628407174 0 0 0 +2709 452 1 3 1 -6.799050450579736 -2.305051294761272 13.637009873713188 0 0 0 +3352 0 0 0 2 -4.591497203434104 -2.2990830340452666 10.137048870334723 0 0 0 +1315 220 1 1 1 -4.804953564826351 -8.433473676565383 11.08263907080739 0 0 0 +1316 220 1 2 1 -4.360976367888692 -7.487118008967174 9.99825796035726 0 0 0 +1317 220 1 3 1 -5.464665246480334 -6.560865078666804 9.586930937173365 0 0 0 +1318 220 1 4 1 -6.015489082142427 -5.825852871128928 10.746767348466665 0 0 0 +1319 220 1 5 1 -6.475936843705972 -6.8035341659300945 11.784900277868125 0 0 0 +1321 221 1 1 1 -1.1554993456208877 -7.389486366086604 13.06787205798123 0 0 0 +2708 452 1 2 1 -7.080678461777689 -0.8823061556037692 13.173142035892383 0 0 0 +1326 221 1 6 1 -1.9413775825038024 -6.628763330656027 14.10828189246184 0 0 0 +102 17 1 6 1 23.549410420925973 -12.735918511755019 23.684750639203887 -1 0 -1 +1324 221 1 4 1 -2.155078426619359 -4.69345890909524 12.649076961729095 0 0 0 +1325 221 1 5 1 -2.927998062234759 -5.716876884071637 13.437694909048062 0 0 0 +2710 452 1 4 1 -5.777791082289005 -2.31027704153639 14.78338538302062 0 0 0 +1511 252 1 5 1 -7.068038294417964 -6.342452530903994 15.206042466909098 0 0 0 +1510 252 1 4 1 -5.690944723573231 -5.814074780522242 15.593111007604298 0 0 0 +830 139 1 2 1 -12.767117420472943 -18.471366037084202 1.0951453434702345 0 0 0 +3395 0 0 0 2 2.956565514277094 -7.141528886293294 12.103965222627702 0 0 0 +1322 221 1 2 1 -0.5042935201685547 -6.4020729240827094 12.090986587066627 0 0 0 +1323 221 1 3 1 -1.4665640992364446 -5.3763358864743065 11.515027007146278 0 0 0 +3294 0 0 0 2 1.2854965785381238 -7.62236542869708 8.957714041080887 0 0 0 +58 10 1 4 1 -15.831179821324795 -21.258926324655697 23.814732760833923 0 0 -1 +2717 453 1 5 1 0.5896940832276395 -0.8519922870112646 12.619234461514628 0 0 0 +1327 222 1 1 1 4.699457493393327 -4.083634262214908 12.687034325866916 0 0 0 +1328 222 1 2 1 5.966474068398841 -4.9213483024685045 12.481675408000955 0 0 0 +1329 222 1 3 1 7.208770333802695 -4.095699716450351 12.250074430501275 0 0 0 +1330 222 1 4 1 7.3188866188032 -3.0920044223754624 13.408515908345125 0 0 0 +1331 222 1 5 1 6.059334496470858 -2.273848182539923 13.681071684915619 0 0 0 +1332 222 1 6 1 4.902986304922568 -3.234406125237251 13.911248715115322 0 0 0 +2716 453 1 4 1 1.3901197288938847 -0.9799404312067017 13.867252824810915 0 0 0 +3340 0 0 0 2 7.067675682147373 -1.249111814164612 6.1917608166834865 0 0 0 +3415 0 0 0 2 2.2816270935212484 -3.374677824024949 9.881337999186986 0 0 0 +2715 453 1 3 1 0.46587282226714355 -1.0862443783868214 15.036663496040317 0 0 0 +3398 0 0 0 2 1.6062312517061943 -8.305665599774517 15.76658402608277 0 0 0 +1523 254 1 5 1 4.506542818784582 -4.692354301926462 17.824527265300933 0 0 0 +3267 0 0 0 2 1.8122975815601543 -4.788920337795742 15.436406684606515 0 0 0 +1333 223 1 1 1 12.576349443409281 -7.1317167308745 10.469326399553566 0 0 0 +1338 223 1 6 1 11.07854234481689 -7.3794962994573625 10.429199921181663 0 0 0 +2922 487 1 6 1 9.872458186253441 -0.340505771314809 14.221341746441015 0 0 0 +3322 0 0 0 2 8.841431739892293 -3.212435883470478 8.981925976796836 0 0 0 +1334 223 1 2 1 12.971274709544382 -6.171379484274912 11.541958412483034 0 0 0 +1335 223 1 3 1 12.280047818333296 -4.850255750470023 11.268354285914597 0 0 0 +1336 223 1 4 1 10.784096439338335 -5.004951664956316 11.358956495178209 0 0 0 +1337 223 1 5 1 10.323600287870736 -6.073513868589812 10.37584611624776 0 0 0 +3279 0 0 0 2 5.230576979974008 -0.425651191728121 23.11535742580516 0 0 0 +2726 455 1 2 1 13.436737824048189 -1.0242756296775528 9.82782861378405 0 0 0 +2727 455 1 3 1 12.206619452194678 -1.2486202818848051 10.660807001137771 0 0 0 +3297 0 0 0 2 14.04633162832404 -4.106369672416729 14.433975384296845 0 0 0 +3336 0 0 0 2 9.28214074648836 -5.906529700970416 14.370382808498109 0 0 0 +3396 0 0 0 2 14.453791262546671 -0.3464118410201113 13.605744189283536 0 0 0 +1339 224 1 1 1 16.77089554461533 -2.7905754564343153 10.25107510808049 0 0 0 +1340 224 1 2 1 15.611677430021208 -3.7620231152320995 10.15281755994512 0 0 0 +2728 455 1 4 1 11.210286528936189 -0.12317647779618165 10.536395529897149 0 0 0 +2918 487 1 2 1 10.50709590134974 -2.1129505830356115 15.846081609852213 0 0 0 +2917 487 1 1 1 10.458932830536005 -1.7544611098241 14.38648597249273 0 0 0 +2882 481 1 2 1 22.646364424005267 -0.9047615455340267 17.40594518949415 -1 0 0 +1536 256 1 6 1 18.150034110844405 -7.430820368340084 14.662580393250327 0 0 0 +3281 0 0 0 2 -23.494045057105108 -1.3448055554717266 9.148746515587176 0 0 0 +1299 217 1 3 1 21.541574433047785 -5.654039700797653 9.528355685704833 -1 0 0 +1300 217 1 4 1 22.493403730163116 -5.7239954498822465 10.681259448644823 -1 0 0 +1531 256 1 1 1 17.279898169865653 -6.186931458882643 14.678341477550234 0 0 0 +1297 217 1 1 1 20.141920657600313 -7.56643686798717 10.600518248870346 -1 0 0 +1302 217 1 6 1 21.126165226854912 -7.595067530646932 11.748347770626573 -1 0 0 +3275 0 0 0 2 20.39191582459004 -2.453558736750452 8.516016291665377 0 0 0 +1301 217 1 5 1 21.698748288383257 -6.187007502086948 11.863543159486248 -1 0 0 +1341 224 1 3 1 16.00291091446825 -5.230693555886657 10.10089139832119 0 0 0 +1342 224 1 4 1 16.838805883113533 -5.567228679317647 11.30874717163307 0 0 0 +1343 224 1 5 1 17.993167729461003 -4.634780052057883 11.498865810703018 0 0 0 +1344 224 1 6 1 17.570952789137806 -3.214928825078316 11.466412675733777 0 0 0 +3276 0 0 0 2 21.478370715034348 -2.40986254343762 11.666380379566734 0 0 0 +3388 0 0 0 2 21.085184720567657 -4.44686229531883 14.694367948532552 0 0 0 +3453 0 0 0 2 18.367608735455725 -1.6633890521792924 15.880843427281025 0 0 0 +4 1 1 4 1 -22.831125633579394 -23.19290714921885 21.445378355948375 0 0 -1 +1354 226 1 4 1 -18.24262546575699 -23.64966198247096 18.083102812565933 0 0 0 +189 32 1 3 1 19.59036341592105 -6.222307796697887 23.43769193233935 0 0 -1 +53 9 1 5 1 -22.714913633517792 -17.4611727618534 23.581504704344525 0 0 -1 +52 9 1 4 1 -21.20380901405774 -17.31173214339776 23.301770567874794 0 0 -1 +1 1 1 1 1 -21.30616558139805 -22.32399569823291 23.659543939591796 0 0 -1 +57 10 1 3 1 -17.3391048343438 -21.109241439430647 23.87733258070112 0 0 -1 +6 1 1 6 1 -22.621130765249678 -21.691891482599168 23.348148376040754 0 0 -1 +1404 234 1 6 1 -16.502396371403773 -19.128776452746433 17.50259210884741 0 0 0 +1399 234 1 1 1 -16.54273182414854 -17.874804039030114 18.364087436835135 0 0 0 +1398 233 1 6 1 -20.648837349112696 -18.105453945638512 18.065017898410424 0 0 0 +1397 233 1 5 1 -20.230023760335534 -19.05157099261734 16.918277265216105 0 0 0 +1396 233 1 4 1 -20.461430394361408 -20.53925688216481 17.298379385960466 0 0 0 +1356 226 1 6 1 -17.535729502085488 -23.736144665501353 20.620890574102017 0 0 0 +1355 226 1 5 1 -18.634496595854852 -23.607473676509503 19.557058713401283 0 0 0 +3417 0 0 0 2 -19.001964305680858 -19.018526541854573 20.8789579472513 0 0 0 +5 1 1 5 1 -23.533880145883867 -22.66202905037804 22.664227507313967 0 0 -1 +1395 233 1 3 1 -21.904974521603688 -20.77849900151562 17.82404913886948 0 0 0 +1393 233 1 1 1 -22.114249275281058 -18.356557810960087 18.42528884869289 0 0 0 +1540 257 1 4 1 22.79922706988189 -0.8605957709125875 21.62163492619196 -1 0 -1 +2 1 1 2 1 -20.61752668133171 -22.890927395807175 22.447038409223225 0 0 -1 +1532 256 1 2 1 17.756248038676947 -5.320556259351804 15.825196145033035 0 0 0 +1403 234 1 5 1 -16.559447903181972 -20.385863639951506 18.36248911328435 0 0 0 +1394 233 1 2 1 -22.238295811401954 -19.781157212953573 18.981758913023373 0 0 0 +191 32 1 5 1 21.0514837230847 -7.883422078789626 22.39982616536735 0 0 -1 +1401 234 1 3 1 -15.41389417119332 -19.074678250899044 20.19283247734573 0 0 0 +1400 234 1 2 1 -15.394894779833109 -17.82566507229614 19.338642790469557 0 0 0 +1402 234 1 4 1 -15.446868649310021 -20.361358185777014 19.38658268220904 0 0 0 +3393 0 0 0 2 -13.998593073560556 -23.000120449949687 21.417651652988585 0 0 0 +1409 235 1 5 1 -11.458431206965386 -17.112602093782094 18.18507973337524 0 0 0 +1408 235 1 4 1 -10.387410066490952 -16.408952733453404 17.338922138772638 0 0 0 +1362 227 1 6 1 -11.278906180092239 -22.90310338577537 15.637340162830696 0 0 0 +103 18 1 1 1 -17.334466694391338 -15.641501273797715 23.612232419351315 0 0 -1 +141 24 1 3 1 18.587066271716477 -10.301874394411259 23.702492781081 0 0 -1 +3295 0 0 0 2 -12.007682623226767 -18.360500455173604 21.97984998480207 0 0 0 +3371 0 0 0 2 -10.091703179420863 -21.332481941121564 22.236114903724076 0 0 0 +3425 0 0 0 2 -9.702133003533362 -19.836044353482663 18.734763935682025 0 0 0 +1361 227 1 5 1 -11.42485832750438 -22.46078918061954 17.10404514346753 0 0 0 +192 32 1 6 1 20.334287985951907 -7.759295165099078 21.05806395954976 0 0 -1 +72 12 1 6 1 -8.393579370350666 -16.861709769324044 20.88807352692069 0 0 -1 +1363 228 1 1 1 -7.825894715626405 -23.33123689176832 17.53279886150218 0 0 0 +70 12 1 4 1 -7.26599305926922 -15.794652499898255 22.833660049287673 0 0 -1 +68 12 1 2 1 -8.376535825775553 -17.92079688703394 23.20209244051418 0 0 -1 +1368 228 1 6 1 -7.004561185603747 -22.18586779428226 18.09632521109808 0 0 0 +2712 452 1 6 1 -4.763632452193641 -0.226038356791759 13.7718826987043 0 0 0 +1366 228 1 4 1 -5.8635573505875955 -23.99608184426818 19.574348911633805 0 0 0 +1419 237 1 3 1 0.41502503888902387 -17.14667844149679 18.052265128741926 0 0 0 +1418 237 1 2 1 -0.27850026030266395 -16.265070783303532 19.098219492609317 0 0 0 +1416 236 1 6 1 -6.101313989579089 -15.93516849273102 17.73443813133748 0 0 0 +1414 236 1 4 1 -4.244707318324558 -17.508050644773977 18.13058062121574 0 0 0 +1413 236 1 3 1 -4.847591420666809 -18.471174996297663 17.11727138950747 0 0 0 +1412 236 1 2 1 -6.333758158106658 -18.414088868152533 17.28704499359688 0 0 0 +1367 228 1 5 1 -5.727803463589182 -22.798849024940424 18.645529701916455 0 0 0 +71 12 1 5 1 -7.182639209637171 -16.072931410848362 21.352411147624654 0 0 -1 +3392 0 0 0 2 -1.636371910564455 -20.85447576833729 18.38397278896711 0 0 0 +3422 0 0 0 2 -4.9408460369370815 -19.49658999968548 20.90050694440559 0 0 0 +3429 0 0 0 2 -1.5668750103360525 -23.277250637196275 21.2315871258105 0 0 0 +3870 0 0 0 2 -3.0883263468076407 -23.75080087540782 16.53842928093288 0 1 0 +67 12 1 1 1 -8.45361288830557 -18.138711384184806 21.673363344519107 0 0 -1 +69 12 1 3 1 -7.199997512845722 -17.078644135945314 23.62047010535866 0 0 -1 +1372 229 1 4 1 2.040637155520693 -23.805277248481037 19.125501098111656 0 0 0 +35 6 1 5 1 5.243234767585958 -21.572621930189175 23.3615106967849 0 0 -1 +115 20 1 1 1 -6.5261457975800345 -8.817741538968427 23.247002814596517 0 0 -1 +3413 0 0 0 2 1.9484502218678843 -20.06296139868898 16.10750789665744 0 0 0 +1373 229 1 5 1 1.4998160037207071 -23.395214944693667 17.766681488192887 0 0 0 +1428 238 1 6 1 6.138190334132628 -17.134042212691767 16.96930415989828 0 0 0 +1427 238 1 5 1 7.212373583864704 -16.337584299158483 17.752588297228787 0 0 0 +1426 238 1 4 1 7.941916686734654 -17.295917674463897 18.774656896262798 0 0 0 +1425 238 1 3 1 7.492196897212834 -18.73938524884352 18.380778819803194 0 0 0 +1424 238 1 2 1 6.031384567637484 -18.955471926049004 18.53622501148835 0 0 0 +1422 237 1 6 1 1.9109711047835598 -16.46315210103634 20.34127304618285 0 0 0 +1417 237 1 1 1 0.35958606198385934 -16.422672686486347 20.389197237307062 0 0 0 +1380 230 1 6 1 6.744337367115952 -22.310520016771864 18.85824465602317 0 0 0 +36 6 1 6 1 4.001076367262596 -22.079458476261152 22.68455841264751 0 0 -1 +3264 0 0 0 2 2.4535141224561574 -20.187731896837985 19.980081184083573 0 0 0 +3274 0 0 0 2 -1.444014381174897 -19.089526563618975 22.54943477934296 0 0 0 +3164 0 0 0 2 4.716509433757238 -17.379206659854653 22.482864517150784 0 0 -1 +966 161 1 6 1 22.631946171114365 -23.403648437655526 6.543027214188916 -1 0 0 +1423 238 1 1 1 5.283006056072233 -17.91041629992975 17.84418438790226 0 0 0 +3688 0 0 0 2 12.728681613212558 -22.243137017635924 22.06251224021464 0 1 0 +796 133 1 4 1 0.33052220463209775 -23.67931009862271 0.631468836118503 0 0 0 +3338 0 0 0 2 18.812655714036186 -3.0385676099975094 19.894332579507132 0 0 0 +88 15 1 4 1 11.784080321910626 -17.95654050295412 23.559358788479347 0 0 -1 +1379 230 1 5 1 8.143383315144206 -22.44010772149329 18.331180684820225 0 0 0 +3309 0 0 0 2 15.752304122977675 -5.164274356075116 20.89121103453577 0 0 0 +3303 0 0 0 2 9.00529627352327 -19.76152401723713 21.60007596781678 0 0 0 +1434 239 1 6 1 12.484915085137867 -15.814778947651892 17.403817541947586 0 0 0 +1433 239 1 5 1 13.463090975935428 -16.820294177692244 18.04763067251431 0 0 0 +1430 239 1 2 1 11.244452783356644 -15.576157489744652 19.487901321424882 0 0 0 +1429 239 1 1 1 11.070000081512088 -15.929854829217359 18.04271041428999 0 0 0 +89 15 1 5 1 12.832642143680042 -18.563707293739345 22.653626053961286 0 0 -1 +3356 0 0 0 2 9.75887193202435 -19.01177775353824 15.897171473894716 0 0 0 +3380 0 0 0 2 16.48010786641999 -22.613529909356505 20.01539794066311 0 0 0 +3426 0 0 0 2 11.943687433482022 -20.948615111967996 18.915226051770876 0 0 0 +3420 0 0 0 2 -8.858386486316187 -0.3379394481080133 9.565033515085473 0 0 0 +90 15 1 6 1 14.004741677605063 -19.030824829175987 23.50802370696801 0 0 -1 +1378 230 1 4 1 8.98088719527866 -22.704451121670964 19.54940496469461 0 0 0 +1432 239 1 4 1 13.602291106583975 -16.499212072059912 19.523045967577886 0 0 0 +1431 239 1 3 1 12.208297737405035 -16.518576092443034 20.190088628000407 0 0 0 +43 8 1 1 1 17.766945294205883 -22.71665371506845 23.777943264656138 0 0 -1 +3269 0 0 0 2 15.657855344360447 -19.417715970435857 20.011817403001015 0 0 0 +133 23 1 1 1 12.311672396863957 -12.53675970094247 23.938756184924397 0 0 -1 +1389 232 1 3 1 20.131382011084398 -22.55763467669159 18.02307911064693 0 0 0 +134 23 1 2 1 12.6028320778271 -13.350100777387404 22.68251692909231 0 0 -1 +1440 240 1 6 1 18.67219467164329 -17.95066487327925 18.74422235789347 0 0 0 +1439 240 1 5 1 17.865201889776436 -16.844577586806178 18.0530922695137 0 0 0 +3345 0 0 0 2 18.350940832312606 -19.92926111847359 22.049474910119148 0 0 0 +1436 240 1 2 1 20.61531196055584 -17.07136483497732 17.34684366078897 0 0 0 +1435 240 1 1 1 19.846028563243923 -18.310393025433445 17.83433778358271 0 0 0 +1392 232 1 6 1 21.34987355030949 -23.09234022789171 20.635210895023683 0 0 0 +1391 232 1 5 1 21.01375966245927 -21.6748918520472 20.173033475219327 0 0 0 +1390 232 1 4 1 21.118572503483776 -21.609249669169547 18.65007752375804 0 0 0 +3343 0 0 0 2 23.039975454591325 -18.119458757237144 20.56363704052599 0 0 0 +3389 0 0 0 2 21.167503961591922 -16.346883173080915 22.987500242245364 0 0 0 +882 147 1 6 1 -11.740478360437052 -14.946000135012197 1.1273412751870653 0 0 0 +890 149 1 2 1 -0.19426108468894954 -13.516396349936686 0.42519382421241336 0 0 0 +107 18 1 5 1 -16.087613314005146 -13.552362623856713 23.338719940686538 0 0 -1 +99 17 1 3 1 -21.7215305621904 -12.424622191994395 22.68101809846425 0 0 -1 +1448 242 1 2 1 -16.847811651382095 -14.494431514367703 17.5470582634689 0 0 0 +1447 242 1 1 1 -17.305615509833874 -13.23344219431751 18.28064198423771 0 0 0 +1446 241 1 6 1 -20.862225588811885 -12.094463659611385 17.82967881499284 0 0 0 +1445 241 1 5 1 -21.954876951399218 -11.879489329865583 18.817958540144108 0 0 0 +1444 241 1 4 1 -23.172204552738318 -11.253250772938406 18.204111641170446 0 0 0 +100 17 1 4 1 -22.84701016589857 -11.592736123314918 22.112457734995715 0 0 -1 +106 18 1 4 1 -17.24233581963193 -12.744663444897439 23.921769190070265 0 0 -1 +3365 0 0 0 2 -19.144608159762004 -10.363320642547432 20.79618145941463 0 0 0 +3368 0 0 0 2 -19.611798362857076 -15.131882755710485 20.346699912170656 0 0 0 +1443 241 1 3 1 -22.91926981895213 -9.818526421461918 17.732457465135372 0 0 0 +1441 241 1 1 1 -21.001726191052004 -11.200603500850148 16.660468519845757 0 0 0 +3424 0 0 0 2 -23.57337239348993 -8.376359199605012 21.013924348205475 1 0 0 +108 18 1 6 1 -16.57967795006502 -14.798214314254349 22.624961373183986 0 0 -1 +1452 242 1 6 1 -16.32245571152935 -12.929267069424768 19.383784997093162 0 0 0 +101 17 1 5 1 23.82269526042839 -12.313278088062278 22.26124674552892 -1 0 -1 +1442 241 1 2 1 -21.52386288825177 -9.807592242127932 17.114181260179716 0 0 0 +782 131 1 2 1 -10.895040531313544 -23.24624179901291 0.11485635758192671 0 0 0 +110 19 1 2 1 -11.080402419330104 -9.680125622195423 23.749281925108438 0 0 -1 +111 19 1 3 1 -11.412359686685946 -9.635465220888378 22.243940447694516 0 0 -1 +1407 235 1 3 1 -11.031158121866566 -15.729984365665588 16.186604340999274 0 0 0 +1450 242 1 4 1 -14.497065272200393 -13.904775460181495 18.072778961628263 0 0 0 +1449 242 1 3 1 -15.500822488331794 -14.262282840067472 16.984645395542273 0 0 0 +1451 242 1 5 1 -14.963038808875684 -12.684899730471512 18.833020945592793 0 0 0 +1458 243 1 6 1 -11.219351558518124 -11.564313015435935 17.745799786884344 0 0 0 +1457 243 1 5 1 -10.248234951441825 -12.706279961267771 17.88634209397895 0 0 0 +1456 243 1 4 1 -8.847081120741922 -12.21831407171166 17.594280868675312 0 0 0 +1455 243 1 3 1 -8.470244593510651 -11.073374904654061 18.516867069333447 0 0 0 +1454 243 1 2 1 -9.489946847625175 -9.955805206302216 18.47506996154504 0 0 0 +1453 243 1 1 1 -10.889317263562505 -10.407610340949828 18.628512528617925 0 0 0 +113 19 1 5 1 -13.692002056106599 -10.537596797037862 22.63243262746209 0 0 -1 +3407 0 0 0 2 -15.85327938435509 -9.41972695151134 19.656208480548298 0 0 0 +3463 0 0 0 2 -12.686038741131785 -14.911728477148701 21.740866523872604 0 0 0 +112 19 1 4 1 -12.883994079577217 -9.440688142704023 21.940892798913943 0 0 -1 +1463 244 1 5 1 -3.2083766327373646 -10.131229220806002 17.27177398829063 0 0 0 +3427 0 0 0 2 -9.21774921829367 -12.797253972062563 22.096676886489345 0 0 0 +1415 236 1 5 1 -4.5885724860213495 -16.072123753866784 17.74995547858378 0 0 0 +3333 0 0 0 2 -3.0928589899176018 -15.346535695012816 21.151811381480126 0 0 0 +78 13 1 6 1 0.23687633988100207 -14.727616279540955 23.30290414784949 0 0 -1 +118 20 1 4 1 -5.102963040441457 -8.4647927335036 20.788779209148707 0 0 -1 +1464 244 1 6 1 -2.679352504603821 -9.556410518113378 15.96205629114355 0 0 0 +1462 244 1 4 1 -4.681677576954585 -9.804736836314953 17.41972989567919 0 0 0 +1459 244 1 1 1 -3.4899165905968386 -10.045911024205814 14.754290971561195 0 0 0 +116 20 1 2 1 -6.905995219014145 -9.646364958443629 22.05031090061916 0 0 -1 +3271 0 0 0 2 -5.234631597241472 -12.384353773175384 20.281677786390564 0 0 0 +3378 0 0 0 2 -1.8735394048674474 -11.43897016817721 21.611095891967345 0 0 0 +3438 0 0 0 2 -2.1328181508557935 -13.601600885879481 17.367985118456264 0 0 0 +117 20 1 3 1 -6.561782008856339 -8.916286923134178 20.738826485830852 0 0 -1 +857 143 1 5 1 13.573305863635031 -16.438701093561487 0.20156904264489728 0 0 0 +1420 237 1 4 1 1.937352938090838 -16.73834878860477 17.863719016548302 0 0 0 +1421 237 1 5 1 2.4075674609024724 -15.940001591088336 19.03856050341243 0 0 0 +1470 245 1 6 1 0.6551492894378408 -10.381697783201997 18.869432643076323 0 0 0 +1469 245 1 5 1 1.7197879398975886 -9.927909654654034 19.856808828321277 0 0 0 +1468 245 1 4 1 1.859135956207934 -10.882535551342654 21.02913670704288 0 0 0 +1476 246 1 6 1 5.369869091674948 -11.627713765467833 18.19955449712248 0 0 0 +1475 246 1 5 1 6.159200059665323 -10.546733192049983 18.83435775739611 0 0 0 +1474 246 1 4 1 6.076142984382891 -10.755856130618712 20.324279526221808 0 0 0 +1473 246 1 3 1 6.572503976129722 -12.19166730128158 20.697837115503535 0 0 0 +1472 246 1 2 1 5.882493908098303 -13.327116152350037 19.97607094147912 0 0 0 +1471 246 1 1 1 5.930363206888588 -12.999569217301412 18.48590469449408 0 0 0 +1467 245 1 3 1 2.0543678445322637 -12.321102078336695 20.53193047618479 0 0 0 +1466 245 1 2 1 1.0712818181677544 -12.729162817936821 19.472825347915066 0 0 0 +1465 245 1 1 1 0.9932228366041145 -11.74952487903416 18.30033917155836 0 0 0 +3465 0 0 0 2 3.928185816987335 -8.191796179737747 22.275520359647395 0 0 0 +135 23 1 3 1 13.724728839482303 -12.747853985817398 21.81476262609378 0 0 -1 +136 23 1 4 1 14.968139508085407 -12.525435388951331 22.648343626704072 0 0 -1 +1482 247 1 6 1 12.715073678205885 -11.406755441395308 18.071131770579598 0 0 0 +1481 247 1 5 1 11.862690197762577 -10.895555603741647 16.91524007404211 0 0 0 +1480 247 1 4 1 10.392895947861392 -11.32457091368961 17.071890446710704 0 0 0 +1479 247 1 3 1 9.789687765083162 -10.967643108238146 18.41633724685426 0 0 0 +1478 247 1 2 1 10.63766187772419 -11.577917692607379 19.486145975834468 0 0 0 +1477 247 1 1 1 12.0365194937185 -11.020009764034432 19.36091961517207 0 0 0 +137 23 1 5 1 14.613860416397497 -11.641365793510834 23.81808483675892 0 0 -1 +3369 0 0 0 2 14.854703674873473 -8.750019428086325 16.89379150303311 0 0 0 +3400 0 0 0 2 9.38821402761927 -10.752429127540692 22.717870161975753 0 0 0 +3227 0 0 0 2 8.382275231753702 -15.733654515836314 21.91623231538925 0 0 -1 +3383 0 0 0 2 21.493473649664455 -13.270778563508136 15.82617387615331 0 0 0 +144 24 1 6 1 19.42506892290454 -13.097464818509394 23.028736486823853 0 0 -1 +1438 240 1 4 1 18.65124359036531 -15.648468688365758 17.57613250696559 0 0 0 +1437 240 1 3 1 19.72610210258403 -16.08146880847562 16.612488460019918 0 0 0 +1483 248 1 1 1 15.588313975576812 -13.320128394804316 18.86731768362652 0 0 0 +1484 248 1 2 1 15.645988747657821 -13.773468632393222 17.391160774184016 0 0 0 +3451 0 0 0 2 -23.200436827847437 -15.058850526401695 20.405527374387784 0 0 0 +3292 0 0 0 2 17.20000188108994 -16.179701033872313 21.504315288728705 0 0 0 +1488 248 1 6 1 16.911715667693596 -12.762274015145548 19.37472599390602 0 0 0 +1487 248 1 5 1 17.40901211007528 -11.642157562725359 18.451656699769025 0 0 0 +1486 248 1 4 1 17.439524542707062 -12.021716755664151 17.00319943951105 0 0 0 +1485 248 1 3 1 16.18431622449902 -12.691359047510577 16.465230527403246 0 0 0 +142 24 1 4 1 18.394128260557082 -10.91426234039002 22.331276663257572 0 0 -1 +143 24 1 5 1 19.42466426510661 -11.991820372893386 21.995438502209424 0 0 -1 +3325 0 0 0 2 21.471714035934617 -10.73703221944445 18.72990502891195 0 0 0 +3399 0 0 0 2 21.225965122105933 -14.10565346053293 19.590976145899877 0 0 0 +3318 0 0 0 2 15.100044909964144 -9.486093329184934 20.42234731336827 0 0 0 +1489 249 1 1 1 21.776991114827098 -6.407823379361504 18.152305241342912 -1 0 0 +155 26 1 5 1 -18.531941621327245 -6.4845907430234195 23.539584727240634 0 0 -1 +1544 258 1 2 1 -20.01926389953548 -0.6113535940667848 23.41366051689577 0 0 -1 +891 149 1 3 1 -1.6832440995680464 -13.441464983816946 0.1417213099446174 0 0 0 +1496 250 1 2 1 -17.269384546599102 -6.004757210683886 16.727205559724993 0 0 0 +3412 0 0 0 2 -20.98162474481344 -3.809120294480285 16.69847650832578 0 0 0 +1495 250 1 1 1 -18.10915714712514 -7.227403778552822 17.100016807244522 0 0 0 +1494 249 1 6 1 23.263713268005368 -6.4187232604232305 17.82000433862186 -1 0 0 +1493 249 1 5 1 23.963315785513792 -5.052043405165746 18.0577346708308 -1 0 0 +150 25 1 6 1 -23.088831323319447 -4.6453652609769005 23.16079888226961 0 0 -1 +1500 250 1 6 1 -19.33293758963573 -7.27189654383761 16.206790393099073 0 0 0 +1499 250 1 5 1 -19.009696015634777 -7.206390491895027 14.721460381808706 0 0 0 +156 26 1 6 1 -17.523206393393437 -7.5187676042401534 23.044856052513563 0 0 -1 +3287 0 0 0 2 -20.164458441176595 -5.540546066269203 20.418440708936554 0 0 0 +3436 0 0 0 2 -18.658598417181583 -2.481792481967388 19.351398479491518 0 0 0 +3455 0 0 0 2 -22.070364367953726 -1.488899047683178 19.715143651317064 0 0 0 +1545 258 1 3 1 -19.05825750300898 -1.7434589500905786 23.78464283089761 0 0 -1 +1554 259 1 6 1 -11.842618123843799 -0.2189657438215812 20.364812204368828 0 0 -1 +1552 259 1 4 1 -9.306330385356285 -0.36776668269419976 20.427002133521594 0 0 -1 +1553 259 1 5 1 -10.556327688570757 -0.38875153104592325 19.561655849784223 0 0 -1 +161 27 1 5 1 -10.85513427816024 -4.97072726272301 20.712043456263626 0 0 -1 +160 27 1 4 1 -12.300204072427873 -4.971460294731774 21.255886771677403 0 0 -1 +159 27 1 3 1 -12.290213803776425 -4.656184266035774 22.7484916449799 0 0 -1 +1551 259 1 3 1 -9.34359961140328 -1.3987979792110128 21.529068375949368 0 0 -1 +1549 259 1 1 1 -11.913645203370006 -1.2091741817011257 21.48812042053574 0 0 -1 +1501 251 1 1 1 -13.46634127919963 -8.752716823020785 16.597447645767293 0 0 0 +3456 0 0 0 2 -15.722842227323433 -5.699650280478197 20.118632270919615 0 0 0 +1503 251 1 3 1 -11.419201224015948 -7.31416143610843 17.079108608327022 0 0 0 +1502 251 1 2 1 -12.9291511083832 -7.5121605350835585 17.365851256876162 0 0 0 +157 27 1 1 1 -10.115251137495271 -6.083816770981356 22.758963277889944 0 0 -1 +158 27 1 2 1 -11.515184049158552 -5.865606714801093 23.371057922692188 0 0 -1 +162 27 1 6 1 -10.049579820903501 -6.141472930110502 21.26755361624991 0 0 -1 +3288 0 0 0 2 -15.492312124983496 -1.9099443238797988 21.033578238458386 0 0 0 +3315 0 0 0 2 -9.032134270812445 -3.2112290603439395 17.702561746579207 0 0 0 +3354 0 0 0 2 -13.64808078797345 -3.3638562976183928 17.55352058497288 0 0 0 +1550 259 1 2 1 -10.631466512246938 -1.1036664794368747 22.288402521075714 0 0 -1 +1557 260 1 3 1 -5.485433858485639 -0.10373523401155425 22.530645824681507 0 0 -1 +3446 0 0 0 2 -1.8640746577474023 -3.544028955712153 16.294242599068 0 0 0 +2902 484 1 4 1 -6.524266992567832 -0.367559918552539 18.263700563645852 0 0 0 +934 156 1 4 1 -6.951899118835202 -4.759464068205575 0.3562569961798093 0 0 0 +2905 485 1 1 1 -0.001391867058694736 -1.380939236104452 20.89902633852988 0 0 0 +119 20 1 5 1 -4.923170656117652 -7.5183782131533405 21.956398739105985 0 0 -1 +120 20 1 6 1 -5.091262317557613 -8.365645069858784 23.17762978353019 0 0 -1 +2904 484 1 6 1 -4.19265423774031 -0.8128110417803419 18.88925740088455 0 0 0 +1514 253 1 2 1 -2.1571467937350044 -7.114853771154199 19.108782504154668 0 0 0 +1513 253 1 1 1 -1.1320521933331051 -6.627860227720118 18.07655912550277 0 0 0 +1512 252 1 6 1 -7.893359474351818 -6.286688016092813 16.47022044859323 0 0 0 +1509 252 1 3 1 -5.07313238838251 -6.3934284431044865 16.874976926571996 0 0 0 +1508 252 1 2 1 -5.9609545705675675 -6.223462808598708 18.067618966777353 0 0 0 +1507 252 1 1 1 -7.293305754454052 -6.8854221342667215 17.71314572422945 0 0 0 +965 161 1 5 1 23.368517031747718 -23.348869320589912 5.2318716964166825 -1 0 0 +2903 484 1 5 1 -5.528383654589846 -1.451378395711689 18.60907702332956 0 0 0 +3382 0 0 0 2 -7.01509471784617 -4.060123939900953 20.699078188613775 0 0 0 +3439 0 0 0 2 -3.3437348586168656 -3.9100957437914294 20.70829737168762 0 0 0 +1515 253 1 3 1 -1.4573996364437805 -7.672782712406087 20.30121153798876 0 0 0 +2509 419 1 1 1 -12.737289281054851 -0.15084982141806796 7.010442420322991 0 0 0 +2906 485 1 2 1 -0.12574723858802908 -1.9682162712877262 19.549087888772277 0 0 0 +1534 256 1 4 1 18.37612228812538 -7.381031365246653 17.145961677416366 0 0 0 +1491 249 1 3 1 22.71146512524363 -5.039269839239732 20.08736228747855 -1 0 0 +3117 0 0 0 2 18.04825607118351 -10.823630591063763 1.088089094258742 0 0 0 +2910 485 1 6 1 1.0259015284672697 -2.1246656588653474 21.662621767516892 0 0 0 +2909 485 1 5 1 2.3499357867145934 -1.9787424933184554 20.89855022265113 0 0 0 +2908 485 1 4 1 2.2619577781442124 -2.3415111770412294 19.385705706186535 0 0 0 +1518 253 1 6 1 -0.17588748168082036 -5.621574897289979 18.766742218299505 0 0 0 +1516 253 1 4 1 -0.5832029725427167 -6.733723922743996 21.06844101107546 0 0 0 +2914 486 1 4 1 6.880826140335288 -1.1992031048838248 17.400397548217274 0 0 0 +2912 486 1 2 1 6.166196492765763 -0.5033802734074304 19.676898567145443 0 0 0 +1524 254 1 6 1 4.034894262365156 -5.695895241940038 18.81573972654578 0 0 0 +1522 254 1 4 1 5.929954344568254 -4.867231361554626 17.352727961772775 0 0 0 +1521 254 1 3 1 6.20272296273126 -6.275203251879526 16.83607312889864 0 0 0 +1520 254 1 2 1 5.6644285011527495 -7.2777162661403025 17.799090951461785 0 0 0 +1519 254 1 1 1 4.242622868900168 -7.072087085706515 18.29084546613652 0 0 0 +1517 253 1 5 1 0.4427227767003747 -6.09472356702428 20.108332838870343 0 0 0 +2913 486 1 3 1 5.73636635299961 -1.1445446938934363 18.423533716277397 0 0 0 +2907 485 1 3 1 1.089616827894264 -1.6311000156506363 18.755009889992646 0 0 0 +3300 0 0 0 2 5.860395147435959 -3.751020193526875 21.66766093344937 0 0 0 +177 30 1 3 1 7.229893705685515 -7.2174252352965995 23.6527809437652 0 0 -1 +787 132 1 1 1 -5.078141221870781 -23.532719223553585 1.020722864660413 0 0 0 +3411 0 0 0 2 9.571872155279884 -2.174579574218373 20.212653353641436 0 0 0 +180 30 1 6 1 9.420576026167886 -5.274565047555496 22.750638700298065 0 0 -1 +178 30 1 4 1 8.189615558318314 -7.466366950580442 22.349948359842614 0 0 -1 +2919 487 1 3 1 11.278589901591804 -1.099356371471324 16.65395195385785 0 0 0 +3353 0 0 0 2 15.148584421296006 -2.5644755112259183 18.16138304771603 0 0 0 +185 31 1 5 1 13.93144393877779 -7.4191747081883275 23.267018688767504 0 0 -1 +1525 255 1 1 1 12.854596958225418 -5.9317544560016975 18.675743052755283 0 0 0 +179 30 1 5 1 8.603752842764967 -6.096015675183952 21.696209118908282 0 0 -1 +3461 0 0 0 2 12.629032683060387 -3.4355327094385344 21.593620497430333 0 0 0 +1530 255 1 6 1 12.155728161050662 -7.154095410389603 19.206998288319525 0 0 0 +1529 255 1 5 1 10.87394253358506 -7.504301654282157 18.458255821819268 0 0 0 +1528 255 1 4 1 9.891657394186861 -6.374114491405224 18.478326828938318 0 0 0 +1527 255 1 3 1 10.66247586414091 -5.2552781150059245 17.860446851797043 0 0 0 +1526 255 1 2 1 11.886931905085156 -4.8029253740638005 18.646933709870467 0 0 0 +1580 264 1 2 1 16.01515049953136 -0.8978143689621644 23.508564941682287 0 0 -1 +1541 257 1 5 1 22.77023747276018 -1.7682734174956392 22.833269984743357 -1 0 -1 +188 32 1 2 1 18.937434722078283 -6.046526207654989 22.094794958598506 0 0 -1 +1490 249 1 2 1 21.58736285334732 -5.0745434848963 18.95346742215837 -1 0 0 +2517 420 1 3 1 -7.491233598891095 -0.4961748610807839 3.012955253505507 0 0 0 +2521 421 1 1 1 -1.9555511755734605 -0.4952255281210098 3.594951906050151 0 0 0 +51 9 1 3 1 -20.408305831538456 -18.471715107087775 23.896747958710186 0 0 -1 +149 25 1 5 1 -21.983568445196223 -3.7753231223991808 23.720466394314688 0 0 -1 +840 140 1 6 1 -6.725078503453605 -17.278394638032236 0.3878070063671505 0 0 0 +3326 0 0 0 2 -4.938479078754343 -13.533182070326788 23.902105441636078 0 0 0 +154 26 1 4 1 -19.775325546954598 -7.221984993544382 23.993862706429713 0 0 -1 +175 30 1 1 1 8.496128782733274 -4.998235976316907 23.990538559527717 0 0 -1 +181 31 1 1 1 11.656528457814321 -8.05374410001131 23.98379358246836 0 0 -1 +128 22 1 2 1 4.178920527615638 -13.847316571840263 23.97835103718595 0 0 -1 +145 25 1 1 1 -23.252212891174743 -5.962675085792917 23.978154826955265 0 0 -1 +839 140 1 5 1 -5.928635125740706 -16.019772667084013 0.13225453642910828 0 0 0 +915 153 1 3 1 22.864985691160875 -5.848284841670541 0.00570975118700805 -1 0 0 +1590 265 1 6 1 -23.865336985736278 7.0332952103669735 -21.43520565008083 0 0 0 +1589 265 1 5 1 -22.666949207257744 7.892322788355774 -20.97449598850767 0 0 0 +618 103 1 6 1 11.131060407384119 23.783425580738424 -5.869048566685208 0 -1 0 +1780 297 1 4 1 -20.929722931389257 5.390219418433218 -17.46410342760142 0 0 0 +1788 298 1 6 1 -16.0134224645025 6.415081644923576 -16.626831677753902 0 0 0 +3556 0 0 0 2 -19.482337897387314 3.1118822155778854 -19.815039804651242 0 0 0 +3557 0 0 0 2 -23.42634951279546 3.106797465158306 -20.75405273666527 0 0 0 +1588 265 1 4 1 -21.72755706687331 8.195685696424395 -22.137955669538222 0 0 0 +1787 298 1 5 1 -16.685589598153545 5.114707161950987 -17.17874535855334 0 0 0 +1779 297 1 3 1 -22.347569815403283 5.113286777391653 -17.92458586643434 0 0 0 +1777 297 1 1 1 -23.063803219898812 7.419058242984144 -17.161246841281315 0 0 0 +1778 297 1 2 1 -23.406762420850438 5.908704313477 -17.179979877485685 0 0 0 +1593 266 1 3 1 -18.02056434902564 4.897215214687539 -23.418799915085806 0 0 0 +1736 290 1 2 1 -14.950660009935088 0.03526675670984989 -17.959083763487776 0 0 0 +1730 289 1 2 1 23.46827205567956 1.6986508554339819 -17.305980884227946 -1 0 0 +1585 265 1 1 1 23.472437993417394 7.668073063206751 -22.665092597359024 -1 0 0 +1717 287 1 1 1 10.928436300553535 18.44345891305696 -23.797297235860857 0 0 0 +1738 290 1 4 1 -17.412422843046897 0.17946069331381723 -17.94795300428405 0 0 0 +1737 290 1 3 1 -16.12977528479321 0.8067105431661433 -17.418559484658335 0 0 0 +1548 258 1 6 1 -18.510236160333772 1.0604415875500552 -23.508823615824678 0 0 0 +3595 0 0 0 2 23.961617158496075 19.864716071904162 -4.76818722212247 -1 0 0 +1783 298 1 1 1 -14.555908289512665 6.67508256159726 -16.942437832857838 0 0 0 +3624 0 0 0 2 -15.238902176789049 3.0712126450732664 -22.202340516439335 0 0 0 +1784 298 1 2 1 -14.147743742413423 6.0989523453180885 -18.27974875002655 0 0 0 +1785 298 1 3 1 -14.733543422717736 4.753520091378481 -18.7407163261506 0 0 0 +1786 298 1 4 1 -16.250810701797576 4.914968795181019 -18.6220011993986 0 0 0 +3659 0 0 0 2 -11.899587249861195 1.825391362898609 -20.473095983988745 0 0 0 +1597 267 1 1 1 -12.97684127137517 5.4920669460928115 -23.412917022680837 0 0 0 +1598 267 1 2 1 -13.273826444917484 6.18229031745867 -22.107661488051566 0 0 0 +1789 299 1 1 1 -7.577522609453379 5.412303892267132 -20.545421632621103 0 0 0 +1790 299 1 2 1 -8.143219993093192 4.210052563813032 -19.76269637237131 0 0 0 +1791 299 1 3 1 -9.234307366292207 4.670363012376239 -18.827738154724944 0 0 0 +1792 299 1 4 1 -10.371275240355939 5.184330983282925 -19.674732862420843 0 0 0 +1793 299 1 5 1 -9.892340862789219 6.424700812409981 -20.384335661592203 0 0 0 +1794 299 1 6 1 -8.68595912407899 6.151783988247643 -21.265053579249912 0 0 0 +401 67 1 5 1 -11.432727894777015 23.302425899512365 -11.636161892394163 0 -1 0 +1714 286 1 4 1 6.85795132506199 20.63463199458966 -23.950811361214406 0 0 0 +3674 0 0 0 2 -12.563020013430247 2.3650944820953073 -17.082812198218207 0 0 0 +3561 0 0 0 2 -8.493376374643347 0.4417392181358952 -22.389791317111015 0 0 0 +1644 274 1 6 1 -17.603709015046398 12.656397105483979 -23.455328542838064 0 0 0 +1657 277 1 1 1 -0.6333399642823153 12.08510733581814 -23.828857583162634 0 0 0 +18 3 1 6 1 -11.969422732692976 23.610523194747596 -23.815092128582435 0 -1 0 +1795 300 1 1 1 -5.328039400973514 4.951475298046841 -16.960771116396394 0 0 0 +1796 300 1 2 1 -4.461679219539173 3.73254480693116 -16.69134164046413 0 0 0 +1797 300 1 3 1 -4.147601305164482 3.0675221262962826 -17.992829713120845 0 0 0 +1798 300 1 4 1 -3.404401484863725 4.067766304657717 -18.89546934975117 0 0 0 +1799 300 1 5 1 -4.260182889757503 5.268055621206973 -19.17532406754405 0 0 0 +1800 300 1 6 1 -4.575264427119585 5.936211523545543 -17.85373228216991 0 0 0 +1806 301 1 6 1 -0.06853153147039763 7.1587752372942735 -18.788036143847773 0 0 0 +3558 0 0 0 2 -5.356839144918016 2.906638135545144 -22.415542020108795 0 0 0 +3621 0 0 0 2 -2.0385240109483336 1.402416509282515 -21.818147252471036 0 0 0 +1805 301 1 5 1 -0.5520663073815038 6.260918462814679 -19.867646184362417 0 0 0 +1614 269 1 6 1 -2.3637254944281847 5.0197438205246545 -23.058043757039044 0 0 0 +1755 293 1 3 1 -0.17296679575662718 2.7835670165479685 -17.854695743920878 0 0 0 +1613 269 1 5 1 -2.8203481792972154 6.464206935809953 -23.047196785664198 0 0 0 +1722 287 1 6 1 10.636547456807838 19.740371096842615 -23.04706289742973 0 0 0 +3668 0 0 0 2 -7.866907388771031 1.898726495680301 -15.793990002611215 0 0 0 +1756 293 1 4 1 -0.7998239360888718 1.5172470925808474 -17.321638173744294 0 0 0 +1634 273 1 2 1 23.680459576898667 12.069755839165733 -23.977812560147107 -1 0 0 +1801 301 1 1 1 1.1863357000900225 6.544186224535598 -18.207105771384214 0 0 0 +1562 261 1 2 1 2.2614941615006483 1.3643186985177316 -23.136670164147077 0 0 0 +1802 301 1 2 1 2.255933052775487 6.238465147314281 -19.26635080856246 0 0 0 +794 133 1 2 1 2.5648218727557195 23.98630823673647 -0.45255374040456997 0 -1 0 +1753 293 1 1 1 1.2779044060261437 1.3594049580566276 -19.381984072973648 0 0 0 +1754 293 1 2 1 1.2726502595331364 2.461441319618864 -18.320168728115224 0 0 0 +1763 294 1 5 1 6.740380743588474 0.8381925300858669 -17.986231428079716 0 0 0 +1764 294 1 6 1 5.327777304181885 1.188235434958465 -18.368836201789108 0 0 0 +1803 301 1 3 1 1.653510160464038 5.248136819285331 -20.23819868093174 0 0 0 +1804 301 1 4 1 0.4870274762289489 5.9197232430806075 -20.899436453179593 0 0 0 +1807 302 1 1 1 6.198930507075836 6.806240933233478 -19.184192491657512 0 0 0 +1808 302 1 2 1 6.767682758222785 7.4814194824879445 -20.433722796988704 0 0 0 +1809 302 1 3 1 7.929345893962162 6.715155005630819 -21.125501174383437 0 0 0 +1810 302 1 4 1 7.438897045933628 5.331962799594715 -21.517482935789726 0 0 0 +1811 302 1 5 1 6.87735672485017 4.6643006297603185 -20.308850926122663 0 0 0 +1812 302 1 6 1 5.822627926658303 5.422396924813699 -19.562933801266723 0 0 0 +1628 272 1 2 1 17.456123863727832 6.0444779734491885 -23.66051750493746 0 0 0 +1563 261 1 3 1 2.7627105583068685 2.6361010819206476 -23.85408721350944 0 0 0 +3620 0 0 0 2 4.267263357523655 5.740390327345787 -23.066263459740437 0 0 0 +3580 0 0 0 2 4.7917721581309465 4.05482645608166 -16.454512529942484 0 0 0 +1650 275 1 6 1 -11.635160136400359 13.257501046043656 -23.141464387591878 0 0 0 +3543 0 0 0 2 9.594931805075394 2.232216860908988 -21.23077655787067 0 0 0 +1622 271 1 2 1 13.364720194064807 7.720178383216108 -23.13035704683629 0 0 0 +1626 271 1 6 1 11.995239312434396 5.739370452261686 -22.49151741406679 0 0 0 +1587 265 1 3 1 -22.3688452449513 8.736270001133235 -23.386343623756677 0 0 0 +1813 303 1 1 1 10.04593296622182 4.6980059885005065 -15.713008707893657 0 0 0 +1814 303 1 2 1 8.981877246799844 4.4193326027462705 -16.7099648366047 0 0 0 +1815 303 1 3 1 9.480162059359449 4.571894150887098 -18.162603542804415 0 0 0 +1816 303 1 4 1 10.911222091096914 4.047122907767296 -18.490937983423574 0 0 0 +3577 0 0 0 2 13.674384749726272 2.5654270127402627 -21.00373291022498 0 0 0 +3610 0 0 0 2 13.109902382893523 7.469616398467173 -18.856506255831277 0 0 0 +1621 271 1 1 1 13.110944859262672 6.6731843246485525 -22.09662344590665 0 0 0 +1768 295 1 4 1 13.168019093138637 0.8271468458071216 -17.57507224373317 0 0 0 +1721 287 1 5 1 10.401338297383571 20.952455289902318 -23.911826319254352 0 0 0 +1817 303 1 5 1 11.849833716178358 4.638443597630222 -17.405190236678543 0 0 0 +1818 303 1 6 1 11.401670221580495 4.151110333772587 -16.063680182954425 0 0 0 +1731 289 1 3 1 22.29426957443736 2.6747076486998056 -17.29959936334069 -1 0 0 +1630 272 1 4 1 17.191334458588067 3.684198482574302 -22.71277351434024 0 0 0 +1732 289 1 4 1 21.363793972777707 2.3263498174021624 -16.130764918061484 -1 0 0 +1670 279 1 2 1 12.694156436027209 11.771774008480216 -23.387359315899094 0 0 0 +1733 289 1 5 1 21.21870985573511 0.7870138750592762 -15.907224818177374 -1 0 0 +793 133 1 1 1 2.628225724206974 22.49978840488906 -0.06500791356370997 0 -1 0 +1631 272 1 5 1 17.25472944717655 4.178732195286156 -21.281945621631085 0 0 0 +1819 304 1 1 1 15.968825757088657 4.950506758124466 -16.725779474007865 0 0 0 +1820 304 1 2 1 17.43054951440238 5.0114192156525466 -17.009806476591585 0 0 0 +1821 304 1 3 1 17.938753798935853 3.566583136821199 -17.15769787167543 0 0 0 +1822 304 1 4 1 17.267682116901167 2.7736173440129543 -18.273708058027026 0 0 0 +1823 304 1 5 1 15.78078951198211 2.8516112063234815 -17.961785401368324 0 0 0 +1824 304 1 6 1 15.292108594779547 4.299841271192725 -17.88950766017529 0 0 0 +3476 0 0 0 2 21.52199489681107 4.609813479700734 -22.409361625705742 0 0 0 +3645 0 0 0 2 21.05085533655235 5.89563372114325 -18.871799031102675 0 0 0 +1632 272 1 6 1 16.68943071345873 5.600378993826262 -21.231825540215493 0 0 0 +1627 272 1 1 1 17.411187829703216 6.532082884941275 -22.227664394937214 0 0 0 +1537 257 1 1 1 23.299790795040984 0.38160954613044656 -23.771858990326496 -1 0 0 +3231 0 0 0 2 20.66681181708739 1.7149900107748421 -20.240791165320307 0 0 0 +1727 288 1 5 1 18.53528744656329 19.83005330509703 -23.159350841480205 0 0 0 +1781 297 1 5 1 -20.55930399799803 6.854176131508734 -17.578770171585745 0 0 0 +1642 274 1 4 1 -19.581724305907333 11.13870847391568 -23.816731068625668 0 0 0 +3530 0 0 0 2 -20.69176973079299 10.68658687403931 -19.462488703680354 0 0 0 +2328 388 1 6 1 -5.269974845881091 0.8903967508189594 -3.865912361993267 0 0 0 +1637 273 1 5 1 -23.89934052033289 11.820080204398476 -21.04815603501887 0 0 0 +1829 305 1 5 1 -23.806880883309425 11.139630628882294 -16.480860609305143 0 0 0 +1831 306 1 1 1 -16.659582188169345 10.279731904410712 -17.784084773329788 0 0 0 +1832 306 1 2 1 -17.06936176069658 8.94920969782152 -18.361305282847987 0 0 0 +1833 306 1 3 1 -16.920635116296125 8.957763323610846 -19.863271270570376 0 0 0 +3680 0 0 0 2 -21.030725796811303 14.29657775342546 -18.878731516891598 0 0 0 +1830 305 1 6 1 23.623126770440983 12.302565929801847 -17.20960859765607 -1 0 0 +1638 273 1 6 1 -22.977293706001735 12.768793680300908 -21.836970289446963 0 0 0 +3579 0 0 0 2 -16.96512999183689 13.83067653851648 -18.94248579684848 0 0 0 +3604 0 0 0 2 -19.8183426539022 12.12591656255457 -15.593443450750195 0 0 0 +2140 357 1 4 1 2.118171130165553 0.2997308477210341 -5.976806684253723 0 0 0 +603 101 1 3 1 -0.4187901494465485 23.166392321694488 -7.736471962027804 0 -1 0 +1633 273 1 1 1 -22.926951697014488 12.320766326471114 -23.307416565810456 0 0 0 +1643 274 1 5 1 -18.23334944381987 11.345923345269885 -23.12677844865126 0 0 0 +1599 267 1 3 1 -12.963714033746394 7.626360105976393 -22.318887019176028 0 0 0 +1649 275 1 5 1 -12.685456836088601 13.166685942706518 -22.070564446397537 0 0 0 +1835 306 1 5 1 -15.102607868722087 10.686698094128324 -19.683941596684885 0 0 0 +1836 306 1 6 1 -15.265038611738573 10.679745341789232 -18.19661617316766 0 0 0 +1586 265 1 2 1 -23.521788995923803 7.85758372307007 -23.808774437317236 0 0 0 +1834 306 1 4 1 -15.524126893325379 9.359613985470993 -20.277872142881474 0 0 0 +3562 0 0 0 2 -13.418930607423246 14.297788903597864 -18.22537503199766 0 0 0 +1647 275 1 3 1 -13.967407342642597 14.369623869349509 -23.869191645057047 0 0 0 +1648 275 1 4 1 -13.915273145468499 14.037299143598153 -22.376355787112054 0 0 0 +1837 307 1 1 1 -11.529684883368667 9.193696042121935 -18.62898783485312 0 0 0 +1838 307 1 2 1 -10.767847735327987 10.14128542126922 -19.524849585043977 0 0 0 +1839 307 1 3 1 -10.951485217283269 11.615297767112748 -19.156029095179072 0 0 0 +1840 307 1 4 1 -10.589022491834216 11.920181198427699 -17.747576951542367 0 0 0 +1841 307 1 5 1 -11.362059371517116 10.990742854102901 -16.846027750238797 0 0 0 +1842 307 1 6 1 -11.116875395452116 9.534257701806492 -17.218514288311077 0 0 0 +3546 0 0 0 2 -9.582858234143867 14.615335320560954 -20.659348659498345 0 0 0 +3809 0 0 0 2 -9.76469197380141 9.48344949451925 -23.00690865476894 0 0 1 +3479 0 0 0 2 -7.333411218306961 8.627513628271 -16.452120009079472 0 0 0 +1600 267 1 4 1 -13.90669224760504 8.212519163601744 -23.388561347731624 0 0 0 +614 103 1 2 1 13.28156320712005 23.817836383175823 -4.6578606303647385 0 -1 0 +3632 0 0 0 2 -7.0703960112388895 9.805899529303655 -20.399494203210164 0 0 0 +3647 0 0 0 2 -3.7548232724961017 8.483508010937797 -20.123074186424862 0 0 0 +1651 276 1 1 1 -6.853584607243018 14.993323224024879 -23.120998828243334 0 0 0 +1652 276 1 2 1 -5.9632506668381655 13.784249427270577 -22.796099172458362 0 0 0 +1843 308 1 1 1 -6.965689166046955 13.924981907462339 -17.92693729158102 0 0 0 +1844 308 1 2 1 -6.802678731827018 13.128058804999908 -16.680539605797552 0 0 0 +1845 308 1 3 1 -6.205716749873819 11.762987121956613 -17.01172827060237 0 0 0 +1846 308 1 4 1 -4.886624209743762 11.93298264320571 -17.737807313334915 0 0 0 +1847 308 1 5 1 -5.016577442588856 12.776961892197276 -18.956628879402885 0 0 0 +1848 308 1 6 1 -5.6796879499786295 14.146550448606162 -18.727019926106124 0 0 0 +1850 309 1 2 1 -1.3361922963794919 12.44910134934415 -16.81708633063971 0 0 0 +1851 309 1 3 1 -0.04973317025355468 13.122549919992023 -16.428839725669913 0 0 0 +3617 0 0 0 2 -2.6511673467525294 15.105070270636944 -20.958555843524053 0 0 0 +1653 276 1 3 1 -6.732783479934939 12.50591904579572 -23.10121973703759 0 0 0 +1659 277 1 3 1 -1.2613949688487076 10.446353441087531 -22.006762724563824 0 0 0 +1660 277 1 4 1 -2.673015428258765 10.359850927049964 -22.568749072960035 0 0 0 +1661 277 1 5 1 -3.0509548031497857 11.67275936967603 -23.172830682598917 0 0 0 +1852 309 1 4 1 0.6444426795964384 13.810053116881583 -17.606663604117117 0 0 0 +1713 286 1 3 1 6.84532046942015 19.13473212489898 -23.973828399658935 0 0 0 +1658 277 1 2 1 -0.26324982096227817 10.85376920876081 -23.036880674586097 0 0 0 +1767 295 1 3 1 12.433318810927917 0.4234958244513884 -16.344420453087473 0 0 0 +1725 288 1 3 1 19.209397772533656 17.716860941518057 -21.81314510969828 0 0 0 +1849 309 1 1 1 -1.082686970899575 11.508191619069216 -17.952414985460763 0 0 0 +1591 266 1 1 1 -18.133722973951595 7.512385783413821 -23.664754452694286 0 0 0 +1853 309 1 5 1 0.8715881729914592 12.868656166561033 -18.76875465418962 0 0 0 +1854 309 1 6 1 -0.4649046361008678 12.197900166390378 -19.140068211855855 0 0 0 +1856 310 1 2 1 7.335225013110168 12.988026991047574 -18.971081629660702 0 0 0 +1857 310 1 3 1 6.306032576546015 12.073732249504571 -19.6498791647909 0 0 0 +1858 310 1 4 1 7.05295748931213 11.065176978932577 -20.4946935909366 0 0 0 +1859 310 1 5 1 8.085421772136499 11.657153233415674 -21.369875257847372 0 0 0 +3544 0 0 0 2 1.4098451263330332 14.825952309602874 -21.819316256296297 0 0 0 +1667 278 1 5 1 4.618619669945846 14.357270326088347 -23.307540226353918 0 0 0 +3634 0 0 0 2 6.936442363821458 9.80006078462032 -17.17280106400573 0 0 0 +3651 0 0 0 2 3.0169696757037974 9.553523286575704 -21.12470639059937 0 0 0 +3679 0 0 0 2 4.419592413399948 14.385783735407864 -16.542066564592016 0 0 0 +1663 278 1 1 1 3.478920642565399 12.153403346925922 -23.687516803805693 0 0 0 +1668 278 1 6 1 4.708500400382251 12.855259172910952 -23.225717566439776 0 0 0 +1735 290 1 1 1 -14.91130779357359 0.03665028264819725 -19.47941412256291 0 0 0 +1855 310 1 1 1 8.29269411838996 13.53358145366486 -19.97043035973667 0 0 0 +1860 310 1 6 1 9.083241603505604 12.528626682515647 -20.694093511390673 0 0 0 +3474 0 0 0 2 10.460649416852858 9.067724540778965 -20.925040908931418 0 0 0 +1671 279 1 3 1 13.17884455237527 12.563809581806753 -22.19704866103308 0 0 0 +1672 279 1 4 1 12.516674532294036 13.902060214091478 -22.20856916481509 0 0 0 +1861 311 1 1 1 13.689446965459963 11.042609245247746 -18.266547394134548 0 0 0 +1862 311 1 2 1 13.758507639587286 12.543812393222675 -18.38790850896159 0 0 0 +1863 311 1 3 1 12.386119470571117 13.193904903999465 -18.62249914886981 0 0 0 +1864 311 1 4 1 11.435754101021196 12.822317956333864 -17.536601351234253 0 0 0 +1865 311 1 5 1 11.323745180167073 11.313830354956199 -17.49670490492106 0 0 0 +1866 311 1 6 1 12.66527563900409 10.662681513643555 -17.210319256186576 0 0 0 +3532 0 0 0 2 15.881255545254264 9.852037341578562 -20.81777642533989 0 0 0 +1673 279 1 5 1 12.880341110481666 14.621320261451764 -23.503322235156727 0 0 0 +417 70 1 3 1 3.165754693460387 23.05598632049695 -10.242731457492777 0 -1 0 +3638 0 0 0 2 10.200348922920229 8.053125262068608 -16.93276910426566 0 0 0 +1684 281 1 4 1 22.358228082358554 15.77080433926385 -23.751554850311546 -1 0 0 +1675 280 1 1 1 18.307897209280505 14.369157828012089 -23.63551942501928 0 0 0 +1636 273 1 4 1 22.7341627355504 11.783155078223992 -21.6616097420226 -1 0 0 +1635 273 1 3 1 22.819163049057572 11.229650826006335 -23.090967749228493 -1 0 0 +1679 280 1 5 1 18.43489748459932 12.995328487589134 -21.65591618876229 0 0 0 +1680 280 1 6 1 19.153835529300416 14.116022950061316 -22.435183223107355 0 0 0 +1825 305 1 1 1 22.091515570965868 12.20722070448322 -17.371034787313288 -1 0 0 +1826 305 1 2 1 21.42869242363853 12.086497131313346 -16.03205378213855 -1 0 0 +1867 312 1 1 1 18.02985167967606 10.15802484690704 -16.230911237370062 0 0 0 +1868 312 1 2 1 17.776505273668956 11.140128858799152 -17.38839284715675 0 0 0 +1869 312 1 3 1 18.849466160474467 11.045935504952558 -18.438857280407934 0 0 0 +1870 312 1 4 1 18.956722360076075 9.628570703655944 -18.98077856885818 0 0 0 +1871 312 1 5 1 19.165255561198194 8.580549845763773 -17.874733646854175 0 0 0 +1872 312 1 6 1 18.046823593013478 8.774920330476409 -16.835519373934666 0 0 0 +3547 0 0 0 2 20.05043013672162 9.41403450466707 -23.0850295512444 0 0 0 +3576 0 0 0 2 22.456264234039523 9.092997583567763 -19.0442019468049 0 0 0 +3600 0 0 0 2 22.229573001938803 15.047442253263362 -19.661680349059612 0 0 0 +1917 320 1 3 1 17.107263837907528 14.820204623666225 -18.196716326342138 0 0 0 +1678 280 1 4 1 16.984666555662685 13.384436467919258 -21.30976853034029 0 0 0 +1677 280 1 3 1 16.21532674621501 13.715953314885923 -22.59921120085982 0 0 0 +1923 321 1 3 1 -23.82229642634871 0.42187114975488726 -12.306392867710201 0 0 0 +1918 320 1 4 1 18.328025451586385 15.627165745806305 -17.726938587790382 0 0 0 +1676 280 1 2 1 16.912770557248564 14.77051335821203 -23.383874862244454 0 0 0 +1685 281 1 5 1 23.77259793990457 15.699676298862135 -23.20586730851705 -1 0 0 +8 2 1 2 1 -16.669324101813345 21.154709267310434 -23.06935841342538 0 -1 0 +1873 313 1 1 1 -22.6726700936164 18.191852647475983 -17.05845245938929 0 0 0 +1877 313 1 5 1 -21.34241269077069 20.087756851804937 -18.09721197126143 0 0 0 +1878 313 1 6 1 -21.42356011753818 19.093637963469245 -16.94841041511318 0 0 0 +1879 314 1 1 1 -16.209787807452376 19.287584996715598 -18.431733936703786 0 0 0 +1880 314 1 2 1 -16.105265909714372 17.762103318136013 -18.53957808899301 0 0 0 +1882 314 1 4 1 -18.069576980676597 17.667568155061215 -16.974046661551373 0 0 0 +1883 314 1 5 1 -18.10821533120966 19.20422827226707 -16.737956638848082 0 0 0 +1884 314 1 6 1 -17.579184945801796 19.844232410178385 -18.025884712049105 0 0 0 +10 2 1 4 1 -17.213524002310812 22.09891190766638 -20.92146732009267 0 -1 0 +3565 0 0 0 2 -21.632460742966153 23.098852172476214 -20.919106009216776 0 0 0 +3652 0 0 0 2 -19.01426372397512 16.78566366600395 -20.91769488249676 0 0 0 +1876 313 1 4 1 -21.361320555524507 19.28717776801352 -19.373532726566904 0 0 0 +7 2 1 1 1 -16.92717277503358 22.52887238666492 -23.699412201082275 0 -1 0 +1874 313 1 2 1 -22.753929035493517 17.4330046070654 -18.35645609237011 0 0 0 +1875 313 1 3 1 -22.60615150158244 18.3900868226187 -19.525957617947775 0 0 0 +11 2 1 5 1 -17.5524267552094 23.44943898726229 -21.52877147882568 0 -1 0 +3582 0 0 0 2 -21.250940249270915 3.669782958952056 -23.566089477397668 0 0 0 +9 2 1 3 1 -16.08904946297586 21.39806093976739 -21.68199372901929 0 -1 0 +200 34 1 2 1 -18.76101144342184 23.338133024359447 -18.0045323012408 0 -1 0 +3515 0 0 0 2 -11.93389272063403 17.410227892305585 -21.579101305157923 0 0 0 +3521 0 0 0 2 -9.20467240867652 16.871730135564565 -17.498390281657404 0 0 0 +1881 314 1 3 1 -16.70048240371514 17.0806217814776 -17.332349896391726 0 0 0 +14 3 1 2 1 -11.327682917661031 21.644145149300755 -22.5516220259192 0 -1 0 +1885 315 1 1 1 -11.969338963593986 19.123351054744234 -18.057237844870404 0 0 0 +1886 315 1 2 1 -12.663702823354459 19.017995573721556 -16.73684413885513 0 0 0 +1887 315 1 3 1 -11.74481955480613 19.318262028210917 -15.55853983047105 0 0 0 +1888 315 1 4 1 -11.11741049104844 20.70997083567813 -15.691720398416512 0 0 0 +1889 315 1 5 1 -10.349461801585813 20.8047199743056 -17.033754150083805 0 0 0 +1890 315 1 6 1 -11.218878782993688 20.45278202376033 -18.22187989986791 0 0 0 +13 3 1 1 1 -10.893211842297607 22.559637852705883 -23.620446661469487 0 -1 0 +2417 403 1 5 1 -11.527067894817318 10.964092532143784 -0.5623395752880069 0 0 0 +3517 0 0 0 2 -15.162020060688786 17.977022905335303 -22.472872179941415 0 0 0 +209 35 1 5 1 -13.3661599931024 23.637609643706348 -15.383955289198234 0 -1 0 +1701 284 1 3 1 -7.8988269364289 18.286472509332775 -21.465760232529917 0 0 0 +16 3 1 4 1 -12.672521681315647 23.328607716739025 -21.396862931827222 0 -1 0 +2454 409 1 6 1 -23.496533969001067 18.26230046538043 -0.6794287973211813 0 0 0 +205 35 1 1 1 -13.009806343383294 23.63891430940494 -17.896330902439786 0 -1 0 +15 3 1 3 1 -11.505363184433277 22.40014600862862 -21.236869616684288 0 -1 0 +621 104 1 3 1 17.649281678825044 23.613802112710644 -6.03284228164 0 -1 0 +1703 284 1 5 1 -6.249505332795435 19.289149485393317 -23.02970457474909 0 0 0 +1702 284 1 4 1 -6.43238313982597 18.2555770379761 -21.947516015696444 0 0 0 +1699 284 1 1 1 -8.104267113061892 20.656778823351598 -21.909046308812883 0 0 0 +1700 284 1 2 1 -8.209253475889593 19.613141866989864 -20.8429722988859 0 0 0 +1704 284 1 6 1 -6.686177355206087 20.63731956863437 -22.507846529346534 0 0 0 +1708 285 1 4 1 -1.8881624957263317 18.60253047350966 -21.975891598389588 0 0 0 +1891 316 1 1 1 -5.878975812665528 19.46293180343572 -16.94712003595449 0 0 0 +1892 316 1 2 1 -5.709066840167524 20.925593755197227 -17.28092076415672 0 0 0 +1893 316 1 3 1 -4.321037357480817 21.203342283572663 -17.848709165990634 0 0 0 +1895 316 1 5 1 -3.9665845837996723 18.895565806518132 -18.536755192425208 0 0 0 +1896 316 1 6 1 -5.42835201908803 18.593286479302236 -18.113981968076104 0 0 0 +219 37 1 3 1 -0.994548388163525 23.454819452692732 -17.56647590019799 0 -1 0 +3510 0 0 0 2 -4.553878196440859 23.61365874627854 -20.670266051597007 0 0 0 +1709 285 1 5 1 -1.462716258429912 20.05849262149658 -21.7881992552284 0 0 0 +1710 285 1 6 1 -2.368407730706589 21.030117580972608 -22.471501375211133 0 0 0 +1686 281 1 6 1 -23.747111234772998 17.0935929939948 -22.904422898536122 0 0 0 +220 37 1 4 1 -0.5434482094395693 23.15027122383308 -18.9235226177865 0 -1 0 +1707 285 1 3 1 -1.917657747743979 18.223041511757724 -23.41595337313139 0 0 0 +1894 316 1 4 1 -3.8483996151909685 20.333617999910707 -18.99699851850201 0 0 0 +2491 416 1 1 1 18.562599719914797 18.29952637691974 -1.0509794555653897 0 0 0 +772 129 1 4 1 -21.435606016974816 22.53517347955843 -0.5991554437566697 0 -1 0 +3587 0 0 0 2 1.9020563919927 18.21980514399218 -23.004278121133105 0 0 0 +1902 317 1 6 1 -0.6746743017246453 17.693635291557424 -17.959891624012556 0 0 0 +1901 317 1 5 1 0.22396401456549997 17.29730361292106 -19.057924007469882 0 0 0 +3491 0 0 0 2 4.202033901019939 15.893312241703715 -20.0365674490228 0 0 0 +1897 317 1 1 1 -0.018724741070790474 17.282862303765473 -16.638616750698862 0 0 0 +1899 317 1 3 1 2.137835808884541 17.750316230000447 -17.651063250805212 0 0 0 +1900 317 1 4 1 1.5288878621727175 17.98584601860878 -18.992309912777465 0 0 0 +1903 318 1 1 1 5.375690552492546 18.01224992843913 -15.303814504563759 0 0 0 +1906 318 1 4 1 6.39839822404037 20.683339150980952 -16.044953968366638 0 0 0 +1908 318 1 6 1 5.540111813042559 18.485201086404246 -16.705244129198967 0 0 0 +223 38 1 1 1 5.0786535238561825 23.95861677240655 -18.40553362645225 0 -1 0 +3503 0 0 0 2 2.8495052686232496 21.24021549817674 -17.89014403700598 0 0 0 +3519 0 0 0 2 2.0684837098725493 21.428689995362085 -21.69370039334812 0 0 0 +3552 0 0 0 2 5.332696891425275 19.8017757646941 -20.50509947088369 0 0 0 +1898 317 1 2 1 1.2523758475020181 18.08146496779424 -16.469721972448408 0 0 0 +1904 318 1 2 1 5.081824536727891 19.20759582387083 -14.427327100249803 0 0 0 +1759 294 1 1 1 4.802648175597613 0.2770887228199783 -19.44162024736386 0 0 0 +2465 411 1 5 1 -10.910755442314867 15.901946375558696 -0.9223444892634332 0 0 0 +3863 0 0 0 2 5.8474173508298675 3.520588473943511 -0.1572414583546037 0 0 0 +3627 0 0 0 2 7.529770457996735 17.026653921269954 -20.845020138567307 0 0 0 +1907 318 1 5 1 6.705233918512866 19.43131195158671 -16.846468581506798 0 0 0 +3612 0 0 0 2 8.734182221434606 16.145599706250838 -17.286612204251266 0 0 0 +1909 319 1 1 1 12.391566238886202 18.31364539833744 -17.573599094100313 0 0 0 +1910 319 1 2 1 12.226494581305678 16.875264659516297 -18.03732336026312 0 0 0 +1911 319 1 3 1 11.52523820914403 16.766049210675956 -19.386775716321992 0 0 0 +1912 319 1 4 1 12.140827201931426 17.686339931877125 -20.42634798548084 0 0 0 +1913 319 1 5 1 12.079662180421565 19.135387816869606 -19.96056365117143 0 0 0 +1914 319 1 6 1 12.845349590405887 19.25588816064557 -18.665044694913533 0 0 0 +1592 266 1 2 1 -17.452495142326104 6.2988348510114385 -22.963544164675284 0 0 0 +234 39 1 6 1 11.18107981356963 23.505567902426606 -17.178810194111897 0 -1 0 +3549 0 0 0 2 9.335727607576056 20.894560047437775 -18.941336118873057 0 0 0 +3658 0 0 0 2 12.840232616734632 22.40141530703566 -21.331048409982788 0 0 0 +3599 0 0 0 2 14.943842597338563 21.072896040893465 -16.334050759837133 0 0 0 +3554 0 0 0 2 14.965913510904187 18.022821269492024 -23.08897993703277 0 0 0 +229 39 1 1 1 11.760117835036146 23.86280284552496 -15.820868723612548 0 -1 0 +1728 288 1 6 1 19.168267219201166 20.68151443361074 -22.07799186569405 0 0 0 +2492 416 1 2 1 17.816131572044213 19.434616052869984 -0.3632062457316991 0 0 0 +1916 320 1 2 1 15.775599270271291 15.525104591354852 -18.362736063922263 0 0 0 +3236 0 0 0 2 3.3439240520162294 0.11463745100620745 -11.466305489767558 0 0 0 +194 33 1 2 1 -23.71809840239824 22.778503583424204 -17.98492071595976 0 -1 0 +3495 0 0 0 2 23.579526636161408 21.09662706202979 -21.85641800621994 0 0 0 +1723 288 1 1 1 19.197494478678262 19.96461614389313 -20.736688930328913 0 0 0 +1915 320 1 1 1 16.03405551677064 16.783235944473798 -19.14835494002023 0 0 0 +1919 320 1 5 1 18.317092284504373 16.983317232794715 -18.362111881063736 0 0 0 +1920 320 1 6 1 16.991661042646676 17.6836979137039 -18.406041411426784 0 0 0 +3508 0 0 0 2 15.741596994108766 21.082097161692243 -20.03980944685226 0 0 0 +3671 0 0 0 2 21.10405639807897 18.80364231837271 -17.499369992628488 0 0 0 +3499 0 0 0 2 18.70299221998504 21.4363582325429 -17.305019655338448 0 0 0 +1724 288 1 2 1 19.850487478872523 18.582582897780906 -20.733863240710516 0 0 0 +195 33 1 3 1 23.450458304882183 22.259396401490793 -16.801576237509085 -1 -1 0 +196 33 1 4 1 22.298138136120905 23.175685699293073 -16.40259484204889 -1 -1 0 +46 8 1 4 1 15.652074817074473 23.54723194063859 -23.18796996697133 0 -1 0 +1782 297 1 6 1 -21.599009108475624 7.652834698395266 -16.7588759166715 0 0 0 +2464 411 1 4 1 -10.79897454928418 17.41757267706495 -1.1370574496400627 0 0 0 +1924 321 1 4 1 22.85930758637235 0.8814366705433822 -11.722881885978197 -1 0 0 +3193 0 0 0 2 -19.043322822428447 1.6187414197622851 -11.910437512465517 0 0 0 +3585 0 0 0 2 -18.798532107658563 2.4090558533673208 -15.48867744775466 0 0 0 +1972 329 1 4 1 -22.930116344464206 5.399064576279196 -11.180529873207508 0 0 0 +1973 329 1 5 1 -22.561401092212623 4.2746438361228485 -12.192270446922391 0 0 0 +1975 330 1 1 1 -19.639887504344234 6.494881928646107 -13.956443389243674 0 0 0 +1976 330 1 2 1 -19.919467624663067 7.322820638377478 -12.715817170993102 0 0 0 +1979 330 1 5 1 -17.35800978603664 6.369275163371595 -13.01043970859346 0 0 0 +1980 330 1 6 1 -18.42427991180889 5.599602321661132 -13.75040251721836 0 0 0 +3482 0 0 0 2 -14.811312448942422 3.295825071368157 -13.702500726412415 0 0 0 +3571 0 0 0 2 -21.726951861959154 0.7667190170225314 -9.119989962714934 0 0 0 +1974 329 1 6 1 -23.107835302858145 4.471739290301643 -13.626116598078495 0 0 0 +2172 362 1 6 1 -18.09033078009781 4.268026762577094 -10.111566092150944 0 0 0 +2167 362 1 1 1 -19.388538764527667 5.019776995913274 -9.903396518040795 0 0 0 +2375 396 1 5 1 -5.94620561440281 4.7892382311711685 -0.689939262718939 0 0 0 +199 34 1 1 1 -20.079545145659708 23.669539671341383 -17.36616348721894 0 -1 0 +1934 323 1 2 1 -10.733894977096286 1.556236893090415 -12.089110829977383 0 0 0 +1933 323 1 1 1 -9.641276896456228 0.5344866177875265 -12.080803397553241 0 0 0 +1935 323 1 3 1 -11.661033858100726 1.2367853754516318 -13.233267896382014 0 0 0 +1726 288 1 4 1 19.090836655582383 18.39598666406185 -23.212475801751662 0 0 0 +1981 331 1 1 1 -11.762456148733913 5.761405170482236 -13.689359242349656 0 0 0 +1982 331 1 2 1 -11.390968360049797 5.794690324801676 -15.18239019790859 0 0 0 +1983 331 1 3 1 -9.961794284184377 6.25323409713262 -15.420377803078477 0 0 0 +1984 331 1 4 1 -8.992663554259392 5.502374690302599 -14.477803996994634 0 0 0 +1985 331 1 5 1 -9.393504466699147 5.555569813996269 -12.996970574820871 0 0 0 +1986 331 1 6 1 -10.790135261707896 4.944357123574925 -12.833216410596117 0 0 0 +3622 0 0 0 2 -15.225654249279716 1.2210214234268695 -10.752566064379717 0 0 0 +3535 0 0 0 2 -9.203298968131671 3.4337646931673453 -9.291145797643907 0 0 0 +3673 0 0 0 2 -14.630715219419773 6.756910760427222 -10.600350800578314 0 0 0 +3567 0 0 0 2 -11.149328125865647 6.772380975505106 -9.037250838284283 0 0 0 +2387 398 1 5 1 4.03827052613687 6.803889440257458 -1.1849333920048137 0 0 0 +3661 0 0 0 2 -7.83145754684538 6.723158992052168 -9.788440145459516 0 0 0 +610 102 1 4 1 7.8319354731606765 23.861480841726802 -7.5618661506663125 0 -1 0 +1987 332 1 1 1 -4.558336090742173 3.598467185322121 -12.398248062500327 0 0 0 +1988 332 1 2 1 -5.989922477303311 3.2091677192385366 -12.154299913860882 0 0 0 +1989 332 1 3 1 -6.025312277619353 1.6547530068895442 -12.061654283823993 0 0 0 +1990 332 1 4 1 -5.230097094302382 1.0609621245347276 -10.90819472474365 0 0 0 +1991 332 1 5 1 -3.853131825295907 1.5023586793280306 -11.161316706976155 0 0 0 +1992 332 1 6 1 -3.70562985009865 2.9626507762172296 -11.258946355567915 0 0 0 +1996 333 1 4 1 -1.1173612144313132 4.146094453082279 -14.15717699694552 0 0 0 +1997 333 1 5 1 -0.2798795163163289 2.9684719616272703 -14.07529874510014 0 0 0 +3494 0 0 0 2 -2.8755248503900277 1.2892842640027264 -7.41344247985402 0 0 0 +1995 333 1 3 1 -0.4180249348893443 5.13623332035329 -15.075164967941891 0 0 0 +3641 0 0 0 2 -1.46722748521349 8.48860096522685 -12.278703900741599 0 0 0 +2187 365 1 3 1 -0.44304703316567623 6.529107301210749 -8.781035666293356 0 0 0 +1953 326 1 3 1 7.361177427529778 0.8009404234121654 -11.395744880341281 0 0 0 +1956 326 1 6 1 7.882124078624746 2.4561399411788365 -13.741997650319353 0 0 0 +1951 326 1 1 1 7.74098943936568 3.0960906772844496 -12.378177456490231 0 0 0 +1993 333 1 1 1 1.6959415162669362 4.6008605526365445 -13.893856551766286 0 0 0 +1994 333 1 2 1 1.100241867845218 5.278361661414643 -15.121005160478038 0 0 0 +1998 333 1 6 1 1.1733101768941874 3.129552850315751 -13.767226643420695 0 0 0 +1999 334 1 1 1 4.601629274601702 7.349436471217788 -13.970219744976443 0 0 0 +2000 334 1 2 1 5.308361738916095 8.267307881842596 -13.001462837553396 0 0 0 +2001 334 1 3 1 6.7284811540378495 7.785615013005633 -12.694364188252013 0 0 0 +2002 334 1 4 1 7.574602651842562 7.675637304805279 -13.915578303944155 0 0 0 +2003 334 1 5 1 6.871158255639161 6.850431080329574 -15.021690276552574 0 0 0 +2004 334 1 6 1 5.39745284371514 7.292573335684546 -15.236179770274912 0 0 0 +3484 0 0 0 2 -0.15343801103784793 2.744089433187459 -10.422022744485885 0 0 0 +1955 326 1 5 1 7.130713073909124 1.1623117954147544 -13.876673923675941 0 0 0 +2196 366 1 6 1 4.445251252304742 4.073702137088282 -11.107619170008011 0 0 0 +2195 366 1 5 1 4.20111731790613 2.9837985257419986 -10.088631545498059 0 0 0 +2194 366 1 4 1 4.066435904743076 3.4664410063351836 -8.692107509698634 0 0 0 +2193 366 1 3 1 2.9461161940100857 4.486412214902588 -8.57960552798568 0 0 0 +3606 0 0 0 2 7.5301499470925135 5.785163792441455 -9.62629580669807 0 0 0 +2192 366 1 2 1 3.3408770944165003 5.673221980413318 -9.475252794187332 0 0 0 +2191 366 1 1 1 3.4622169827323352 5.225416290243518 -10.939147641387573 0 0 0 +1954 326 1 4 1 7.5053198438083575 0.20162877394325393 -12.782928271367664 0 0 0 +1625 271 1 5 1 12.326080007399058 5.0949653246006585 -23.840140082267922 0 0 0 +2376 396 1 6 1 -7.4357681129008215 4.423579872710923 -0.6348496189395595 0 0 0 +1952 326 1 2 1 8.157937376492809 2.1171495027964875 -11.285793304979103 0 0 0 +2005 335 1 1 1 12.494716321510062 6.506682300720124 -13.494804202256619 0 0 0 +2006 335 1 2 1 10.993597537958044 6.6159259968321695 -13.318217113110725 0 0 0 +2007 335 1 3 1 10.480577420638943 5.580429752549429 -12.317556605342762 0 0 0 +2008 335 1 4 1 11.105687717439602 5.763890419895299 -10.963922392903662 0 0 0 +2009 335 1 5 1 12.637877673813703 5.7402653064167675 -11.021764755900314 0 0 0 +2010 335 1 6 1 13.141040882354918 6.703862313904119 -12.115513181217914 0 0 0 +3678 0 0 0 2 14.313249706576967 3.46124949846525 -14.270504275247768 0 0 0 +1958 327 1 2 1 11.88060306765221 1.7335101477510741 -11.645970692616602 0 0 0 +3568 0 0 0 2 14.713680071920141 8.587446481493844 -15.204242051233118 0 0 0 +1959 327 1 3 1 11.591148563903785 1.1688663828441086 -13.043510622734578 0 0 0 +1957 327 1 1 1 12.94268954483777 0.9328048048687858 -11.016007553217479 0 0 0 +2151 359 1 3 1 10.854096067567289 1.024624525375078 -7.730127053291048 0 0 0 +419 70 1 5 1 5.054265825677798 23.96268425923015 -11.491906594102161 0 -1 0 +1734 289 1 6 1 22.574067677020725 0.1931139276364439 -15.63580075715156 -1 0 0 +3574 0 0 0 2 21.414184664570797 7.336966040977574 -15.255941338472594 -1 0 0 +2299 384 1 1 1 18.96815637088001 18.84168175614777 -6.010484585131576 0 0 0 +1561 261 1 1 1 1.2175948922562059 0.6479923196432913 -23.958657076858103 0 0 0 +3676 0 0 0 2 20.172434323096976 3.465538140348646 -12.570895693492439 0 0 0 +1971 329 1 3 1 23.56255526671863 5.653882682800776 -11.161764351143288 -1 0 0 +1969 329 1 1 1 23.378273389777547 4.760006987323293 -13.588741209029838 -1 0 0 +1970 329 1 2 1 23.08696032982555 5.931314778579542 -12.577048710784398 -1 0 0 +2011 336 1 1 1 18.18157589866475 6.978160760771037 -13.204483434792241 0 0 0 +2012 336 1 2 1 19.270201290093567 7.104280838970512 -12.109484511243169 0 0 0 +2014 336 1 4 1 17.608680971571903 5.977228129706029 -10.432750368293545 0 0 0 +2015 336 1 5 1 16.576963532933803 5.87206672913921 -11.534731385963065 0 0 0 +2016 336 1 6 1 17.31632348510582 5.780391213077694 -12.87079176617846 0 0 0 +3569 0 0 0 2 20.93360972436736 3.3805227505079865 -9.027638189693773 0 0 0 +3648 0 0 0 2 16.631869081232402 2.3712079821373986 -11.523880950823244 0 0 0 +2013 336 1 3 1 18.678021432988256 7.058234495928705 -10.700369721168206 0 0 0 +2164 361 1 4 1 -23.13738368269845 3.646947006860502 -7.428903721791661 0 0 0 +2205 368 1 3 1 15.088992741938188 5.831699595758549 -7.61690168221118 0 0 0 +1729 289 1 1 1 23.636889477449497 1.0687498803326148 -15.97286235347302 -1 0 0 +2358 393 1 6 1 22.996008626335687 5.077894425589695 -0.23600024942324616 -1 0 0 +1828 305 1 4 1 23.50407961048635 10.944246931292412 -15.14037861436499 -1 0 0 +3469 0 0 0 2 -23.229087669393394 14.674032985005224 -14.918262149701146 0 0 0 +1977 330 1 3 1 -18.88294410415773 8.424907268030447 -12.697671302180641 0 0 0 +1978 330 1 4 1 -17.560060535724002 7.877278710011719 -13.312001755469993 0 0 0 +2023 338 1 1 1 -18.805203025439464 13.218626599221272 -11.619460893425185 0 0 0 +2024 338 1 2 1 -19.564910197747547 12.03101833744547 -12.20966281805367 0 0 0 +2025 338 1 3 1 -21.04630498679508 12.219292049877303 -12.258457344289507 0 0 0 +2026 338 1 4 1 -21.567986321222623 12.47748744059688 -10.884066567883265 0 0 0 +2027 338 1 5 1 -20.431560326547466 12.629932737260125 -9.855743362797742 0 0 0 +2028 338 1 6 1 -19.48478585550046 13.735073402808332 -10.324755463324374 0 0 0 +3524 0 0 0 2 -22.749384723574988 9.143489705564694 -12.304785435073143 0 0 0 +3525 0 0 0 2 -15.506830828619275 13.473953627188855 -14.736306270765489 0 0 0 +3596 0 0 0 2 -21.00581798546719 9.165754404665659 -8.754052244113524 0 0 0 +2215 370 1 1 1 -17.162128264088196 10.062425700070463 -8.01007024311889 0 0 0 +2262 377 1 6 1 -22.98037253874561 15.513777524926414 -9.45363633624633 0 0 0 +3614 0 0 0 2 -15.437442929157637 10.176583529040728 -11.48936945982871 0 0 0 +3523 0 0 0 2 -9.576235370174032 13.15560272204431 -13.931330297624722 0 0 0 +2029 339 1 1 1 -8.783710826216582 10.449967317479683 -11.770080736272675 0 0 0 +2030 339 1 2 1 -9.471898299188302 10.670686943802396 -10.46504590265047 0 0 0 +2031 339 1 3 1 -10.989395562772902 10.673479149504832 -10.569004129172741 0 0 0 +2032 339 1 4 1 -11.382830219806626 9.352369355264928 -11.144401079186121 0 0 0 +2033 339 1 5 1 -10.679182761596152 8.998590229945314 -12.449392342150041 0 0 0 +2034 339 1 6 1 -9.154541907542578 9.104725712944735 -12.343318770872303 0 0 0 +3570 0 0 0 2 -13.592059288710825 9.824395909127743 -14.242055164358861 0 0 0 +3611 0 0 0 2 -12.966177210093132 13.952474670925845 -11.890167629779775 0 0 0 +3560 0 0 0 2 -15.47953788789558 13.653061926952427 -9.564758008284743 0 0 0 +3485 0 0 0 2 -11.96744119353502 13.735620811931586 -8.434207941650367 0 0 0 +3590 0 0 0 2 -12.56940671239314 15.645666667007431 -15.194887860706189 0 0 0 +3656 0 0 0 2 -5.257641299129937 7.324559399809619 -13.4597448584306 0 0 0 +3471 0 0 0 2 -7.797634151445526 14.596704709244992 -10.406324171606691 0 0 0 +3584 0 0 0 2 -6.883863120230588 16.36511822909931 -14.658058754271032 0 0 0 +2035 340 1 1 1 -4.733259758109218 11.207154740565457 -13.927713935534973 0 0 0 +2036 340 1 2 1 -3.199367831453721 11.598629755401152 -13.772717305168513 0 0 0 +2037 340 1 3 1 -3.000304882720159 13.07085135002568 -13.108139008720837 0 0 0 +2038 340 1 4 1 -3.8238563406860377 13.201727662000561 -11.772372567563963 0 0 0 +2039 340 1 5 1 -5.33008427954141 13.263611411933672 -12.378311820451325 0 0 0 +2040 340 1 6 1 -5.660633141615746 11.709026386737964 -12.755224961379705 0 0 0 +3664 0 0 0 2 -2.6254091364329186 8.348388154278474 -15.674899392611643 0 0 0 +2232 372 1 6 1 -4.195636664828761 9.780578596631255 -9.41924188639526 0 0 0 +2237 373 1 5 1 -0.4030743497442989 11.67815356252494 -10.474316562983406 0 0 0 +2231 372 1 5 1 -3.5838133326662867 10.419424005688404 -8.234664436895718 0 0 0 +2278 380 1 4 1 -3.7296827414515907 14.668897184676393 -8.618964746407732 0 0 0 +2277 380 1 3 1 -2.368445447961048 15.329754390472006 -8.522881806758807 0 0 0 +2089 349 1 1 1 -0.020722028096156767 15.982196813184396 -12.095503854886475 0 0 0 +2094 349 1 6 1 -0.02353357373571162 15.517035415072222 -13.537859420339219 0 0 0 +2276 380 1 2 1 -2.479359936109658 16.82542361245759 -8.388627147618648 0 0 0 +2228 372 1 2 1 -6.487413036806655 10.22192373305385 -8.42442546991168 0 0 0 +2227 372 1 1 1 -5.57186438810699 9.18085670060055 -9.075010863181102 0 0 0 +2279 380 1 5 1 -4.836520292753585 15.59256397712865 -8.110003390276102 0 0 0 +2041 341 1 1 1 1.4777316261374829 9.5776317045291 -14.32440578138435 0 0 0 +2042 341 1 2 1 2.227954552366299 10.863529017653644 -14.068673180440825 0 0 0 +2046 341 1 6 1 1.1945881086233996 9.383966171480223 -15.81255145463315 0 0 0 +3603 0 0 0 2 2.2196768122147765 8.701474564569436 -10.858565795584028 0 0 0 +2043 341 1 3 1 3.5256860252301494 10.894728265317111 -14.866231226817462 0 0 0 +2044 341 1 4 1 3.1856678611164804 10.750909162447906 -16.345887207996807 0 0 0 +2045 341 1 5 1 2.488025924315072 9.438264404793589 -16.629266643779786 0 0 0 +2047 342 1 1 1 5.247818849132137 11.475812266333342 -11.526992892237415 0 0 0 +2048 342 1 2 1 4.930491665306554 11.27467898380956 -10.049817888717323 0 0 0 +2049 342 1 3 1 5.599908059530885 12.332505271635684 -9.200507577466265 0 0 0 +2050 342 1 4 1 5.415373070244612 13.74866494949136 -9.775496772965388 0 0 0 +2051 342 1 5 1 5.762488752812277 13.924136413232457 -11.264461315628678 0 0 0 +2052 342 1 6 1 5.033765507761013 12.875350989861467 -12.101311829823953 0 0 0 +2235 373 1 3 1 1.7263226903498965 13.002131501926034 -10.340979887055296 0 0 0 +2093 349 1 5 1 1.3603772928614668 15.044529222974456 -13.853976723598695 0 0 0 +2236 373 1 4 1 0.4396146539595237 12.799725458482905 -11.048038332377946 0 0 0 +2234 373 1 2 1 1.457592205256002 13.315427567064061 -8.870187927121911 0 0 0 +3597 0 0 0 2 6.023801131954434 9.86499256974765 -6.781372055007537 0 0 0 +3609 0 0 0 2 8.369959357461871 9.48157542061578 -9.670659546153367 0 0 0 +2053 343 1 1 1 11.327957345329603 10.173261680262355 -12.266170892610774 0 0 0 +2054 343 1 2 1 12.009659190448017 11.100590416600792 -13.228696369265641 0 0 0 +2055 343 1 3 1 11.918546097848216 12.533062108031817 -12.809431625859698 0 0 0 +2056 343 1 4 1 12.430395620023617 12.68403307739586 -11.37636700200998 0 0 0 +2057 343 1 5 1 11.578720111213228 11.797887829034547 -10.458199585976002 0 0 0 +2058 343 1 6 1 11.78647562736132 10.357337542225745 -10.814589895890057 0 0 0 +3473 0 0 0 2 8.407150858956053 11.800276798264115 -14.333901580955972 0 0 0 +3654 0 0 0 2 9.104528515910879 14.068342703445504 -9.892252555172586 0 0 0 +3662 0 0 0 2 11.796213397263193 15.394108448101159 -14.681497222979122 0 0 0 +3666 0 0 0 2 15.726337019212103 15.092897911033841 -12.068187259236339 0 0 0 +3539 0 0 0 2 8.301194138041884 15.412759696300657 -13.290155460494425 0 0 0 +3646 0 0 0 2 15.701523102717765 13.01031253555953 -15.013851429617548 0 0 0 +1827 305 1 3 1 21.98478065317486 10.893769620657684 -15.303110532918446 -1 0 0 +2021 337 1 5 1 22.782282402223185 11.906721956441752 -10.62601913373749 -1 0 0 +2059 344 1 1 1 15.976505510274293 9.907486012901595 -10.457600110780094 0 0 0 +2060 344 1 2 1 17.03234676428466 10.73957720023557 -9.781583643169782 0 0 0 +2019 337 1 3 1 23.516382988766527 10.718418170130818 -8.546909800598234 -1 0 0 +2020 337 1 4 1 23.044501349954622 12.015741984875158 -9.123135471068522 -1 0 0 +2017 337 1 1 1 22.18306162673547 9.512991115170806 -10.359930577397238 -1 0 0 +2018 337 1 2 1 22.57914503561747 9.547904274996633 -8.881345236149878 -1 0 0 +2022 337 1 6 1 21.74144386578162 10.842536681823344 -10.83629897756136 -1 0 0 +2061 344 1 3 1 18.306340647583333 10.756241166385271 -10.561092211910728 0 0 0 +2062 344 1 4 1 18.053896259358815 11.243900448771841 -12.007826417730863 0 0 0 +2063 344 1 5 1 16.985519569673755 10.406326420278964 -12.6901985417966 0 0 0 +2064 344 1 6 1 15.7160868425521 10.42598250181747 -11.878009506521742 0 0 0 +3615 0 0 0 2 21.411926613828427 16.272450093130757 -15.213394433091839 0 0 0 +3506 0 0 0 2 18.852802625485342 14.251790043263112 -14.073240534081359 0 0 0 +3509 0 0 0 2 20.764512259900393 14.73979588326667 -11.09547643077044 0 0 0 +393 66 1 3 1 -18.04995004409475 22.899142942603042 -13.315038991048576 0 -1 0 +392 66 1 2 1 -19.048437410328805 22.258451541965833 -12.366047128471017 0 -1 0 +3489 0 0 0 2 -20.36564853523893 17.327900553574015 -13.792722749147163 0 0 0 +2074 346 1 4 1 -16.73016324826034 17.794087249901935 -12.825713055496216 0 0 0 +2075 346 1 5 1 -16.314143875504918 19.23190380051609 -13.020008822435809 0 0 0 +3518 0 0 0 2 -22.214804749491915 20.517845848297636 -10.878290876621366 0 0 0 +3583 0 0 0 2 -18.501404364914904 19.822328608114542 -9.052812699419338 0 0 0 +3594 0 0 0 2 -22.262644356729844 22.13401439789884 -14.118038805501715 0 0 0 +391 66 1 1 1 -19.244369358835684 23.089157491822476 -11.061753063444831 0 -1 0 +396 66 1 6 1 -17.953367694385925 23.246122929270744 -10.292403730466157 0 -1 0 +2259 377 1 3 1 -22.72267650178792 18.06540248498034 -7.872860049792173 0 0 0 +394 66 1 4 1 -16.77088662260436 23.060556293589954 -12.578576164299788 0 -1 0 +2260 377 1 4 1 -23.62796540458677 16.939793187739582 -7.474623143257052 0 0 0 +2258 377 1 2 1 -21.570035592105825 17.461041184337766 -8.566539377895795 0 0 0 +2257 377 1 1 1 -21.98926636852786 16.624826750804026 -9.784819012698563 0 0 0 +395 66 1 5 1 -16.909526087480884 23.81808302636085 -11.248159245829875 0 -1 0 +397 67 1 1 1 -12.914690613800737 22.87102626854608 -9.670347601820833 0 -1 0 +207 35 1 3 1 -14.777865834793786 22.22559840196997 -16.71958963600847 0 -1 0 +208 35 1 4 1 -14.728298311922654 22.97500175985913 -15.407461054976558 0 -1 0 +2076 346 1 6 1 -14.901600595550239 19.31125450225445 -13.58886664046455 0 0 0 +206 35 1 2 1 -14.355290329269927 22.953585022599366 -18.007402233990845 0 -1 0 +2071 346 1 1 1 -13.972898642697283 18.653635813547588 -12.593202561718154 0 0 0 +2072 346 1 2 1 -14.374137862643023 17.275289933200565 -12.05655164047256 0 0 0 +2073 346 1 3 1 -15.863099317068903 17.148190561989804 -11.738295809240418 0 0 0 +2077 347 1 1 1 -11.080030400594145 18.67414150324461 -10.043596738474966 0 0 0 +2078 347 1 2 1 -10.595495894343468 17.222844606008284 -10.118373314734276 0 0 0 +2079 347 1 3 1 -10.37215128139512 16.781694104860595 -11.547665907396054 0 0 0 +2080 347 1 4 1 -9.467299217699468 17.663288344785734 -12.298362086259235 0 0 0 +2081 347 1 5 1 -9.835200398202403 19.14069469331578 -12.269913803911598 0 0 0 +2082 347 1 6 1 -10.058501616108046 19.496847524173837 -10.842356316760489 0 0 0 +402 67 1 6 1 -12.519452584135921 22.415493965868567 -11.072043725097274 0 -1 0 +3529 0 0 0 2 -15.138070525835012 19.42923475590698 -9.258901808657301 0 0 0 +403 68 1 1 1 -8.360357251591376 22.705899843908153 -14.548558093980684 0 -1 0 +404 68 1 2 1 -7.786776940924974 21.996506020465045 -13.337193696123515 0 -1 0 +37 7 1 1 1 9.216570853970454 23.746981101822136 -21.816403467413558 0 -1 0 +2449 409 1 1 1 22.989248553629295 18.371491500768187 -0.9001937732154762 -1 0 0 +410 69 1 2 1 -2.0467582057846716 23.271600558390332 -13.609678784562382 0 -1 0 +3586 0 0 0 2 -3.358824904527047 15.859777640689396 -15.545370537684025 0 0 0 +2090 349 1 2 1 1.0177503847717884 17.057982161125103 -11.832675438353318 0 0 0 +3540 0 0 0 2 -7.532515711014298 21.633188647024447 -9.539002072130648 0 0 0 +411 69 1 3 1 -1.8777615341431766 22.567162731798483 -12.288014441631104 0 -1 0 +405 68 1 3 1 -6.672447678463635 22.79004764132372 -12.685587172089292 0 -1 0 +2083 348 1 1 1 -3.7300623492724494 18.827768013014783 -12.748465776088153 0 0 0 +2084 348 1 2 1 -4.988530212322625 19.56655860360614 -12.29848608065525 0 0 0 +2085 348 1 3 1 -6.162731081410913 18.59608129474808 -12.343529127408413 0 0 0 +2086 348 1 4 1 -5.883414194277636 17.40537080671744 -11.412879771532698 0 0 0 +2087 348 1 5 1 -4.574291623035966 16.730658903164237 -11.733466562165212 0 0 0 +2088 348 1 6 1 -3.44105700356502 17.72786251741225 -11.78145391603721 0 0 0 +3618 0 0 0 2 -1.9756545934679275 20.459329286741866 -15.418489217320248 0 0 0 +3657 0 0 0 2 -4.067511576702983 20.90034345503702 -8.5755063460858 0 0 0 +3625 0 0 0 2 -0.5308636964347779 19.754292678241775 -9.953887759505445 0 0 0 +412 69 1 4 1 -1.1269742415577653 23.44294149857144 -11.273709990333762 0 -1 0 +2300 384 1 2 1 20.46963375389194 19.107253565177352 -6.151335240663628 0 0 0 +420 70 1 6 1 5.526702540047439 22.582275478955186 -11.698980100585784 0 -1 0 +1905 318 1 3 1 6.1943514957966475 20.274710628359607 -14.604393967853856 0 0 0 +3504 0 0 0 2 1.668984216535283 20.368408875649713 -13.187927444070434 0 0 0 +2091 349 1 3 1 2.37288327726667 16.547543308254866 -12.268357732229966 0 0 0 +2092 349 1 4 1 2.3952691581408407 16.116017676651822 -13.711520795786532 0 0 0 +2095 350 1 1 1 8.164850883315548 18.11624562664768 -11.117245601339429 0 0 0 +2096 350 1 2 1 6.648452158314515 17.924976961775794 -11.05062214152866 0 0 0 +2097 350 1 3 1 6.3790360026120165 17.48579416151431 -9.613714984408977 0 0 0 +2098 350 1 4 1 6.782905989354565 18.473700311555472 -8.553440330378235 0 0 0 +2099 350 1 5 1 8.257560740119935 18.829613835171156 -8.65196381294336 0 0 0 +416 70 1 2 1 3.6605150606396113 21.651617291306344 -10.379219330170462 0 -1 0 +415 70 1 1 1 5.171630266107457 21.67382488251333 -10.54161463190095 0 -1 0 +413 69 1 5 1 0.11587578354119299 23.980473069064118 -11.962852944366668 0 -1 0 +3581 0 0 0 2 2.650159359531374 16.570305768105253 -8.29832477942277 0 0 0 +2100 350 1 6 1 8.516797657005027 19.18500443029206 -10.110985278771432 0 0 0 +3492 0 0 0 2 10.157582110813767 19.20715047638418 -14.674624111098112 0 0 0 +2101 351 1 1 1 14.050186313904119 18.833682349694087 -11.368751748312171 0 0 0 +2102 351 1 2 1 12.654426816958972 18.504172895907146 -11.868046574468305 0 0 0 +2103 351 1 3 1 12.035779804744474 17.265429545896165 -11.229180816620751 0 0 0 +2104 351 1 4 1 12.495621632721676 17.01367252898999 -9.814035743953896 0 0 0 +2105 351 1 5 1 13.985937968452118 17.277210150367125 -9.583281564102377 0 0 0 +2106 351 1 6 1 14.346322723902478 18.70073797246237 -9.855487528843708 0 0 0 +423 71 1 3 1 12.92310182817848 22.238195543663963 -12.78673948838996 0 -1 0 +3635 0 0 0 2 8.89288769941493 21.965339221090172 -12.380749916294057 0 0 0 +3545 0 0 0 2 14.859743995401452 17.82007779103525 -14.882835442167659 0 0 0 +424 71 1 4 1 14.431882032206241 22.40745499841148 -12.845552674551879 0 -1 0 +422 71 1 2 1 12.313454569516326 23.06758728134546 -11.68820320008286 0 -1 0 +3608 0 0 0 2 11.692774339592187 21.228695051136913 -8.804007802661602 0 0 0 +2345 391 1 5 1 8.323838116679434 0.020093046077250248 -0.803653381821576 0 0 0 +425 71 1 5 1 14.787328083999071 23.905664271532174 -12.978242291666355 0 -1 0 +2303 384 1 5 1 19.135610465229426 17.006189947843538 -7.714214037340628 0 0 0 +2067 345 1 3 1 22.549942551727863 20.29907308941962 -13.229191680369196 -1 0 0 +2068 345 1 4 1 23.074581282512796 19.255686980862794 -14.228572018184751 -1 0 0 +2069 345 1 5 1 23.843992019273593 18.204879655963087 -13.445537904237336 -1 0 0 +3575 0 0 0 2 22.93416338849515 21.00985802162226 -8.3332699539485 -1 0 0 +430 72 1 4 1 18.545306686404256 23.934598747868357 -13.780949909938697 0 -1 0 +2070 345 1 6 1 23.173099985775576 17.591973316408485 -12.236319745789409 -1 0 0 +3640 0 0 0 2 15.911135931096837 22.26402552035697 -9.228625268648873 0 0 0 +2261 377 1 5 1 23.8761511303657 16.133589811171607 -8.643828101042873 -1 0 0 +2065 345 1 1 1 22.479804874989398 18.616081631682583 -11.338020998468277 -1 0 0 +2066 345 1 2 1 21.708227088148394 19.65485474864006 -12.119460190256138 -1 0 0 +2107 352 1 1 1 18.884083726957357 19.394749432966236 -14.07367709525513 0 0 0 +2108 352 1 2 1 18.87766543131627 17.921621183002294 -13.762014683717524 0 0 0 +2109 352 1 3 1 18.744445322354224 17.770499770008872 -12.242929334667343 0 0 0 +2110 352 1 4 1 17.538377344346333 18.507368663738294 -11.660587722456096 0 0 0 +2111 352 1 5 1 17.399844162098475 19.943538438714125 -12.11437660589165 0 0 0 +2112 352 1 6 1 17.606960235907724 20.09037128153035 -13.58927409354696 0 0 0 +228 38 1 6 1 6.212797087761711 23.826666187373746 -19.39035044944155 0 -1 0 +3498 0 0 0 2 19.518344138275623 21.193618469969575 -9.50466250235847 0 0 0 +2304 384 1 6 1 18.276714424093832 18.17724559830862 -7.2064387103259815 0 0 0 +12 2 1 6 1 -17.998775451146802 23.304886078959317 -22.959398704635536 0 -1 0 +211 36 1 1 1 -7.455890434870742 23.818957023996624 -18.136549535717 0 -1 0 +2359 394 1 1 1 -19.813431198765716 2.5128651592730016 -0.6703401985131513 0 0 0 +2171 362 1 5 1 -17.480056854349844 3.9150546591629642 -8.788406168084268 0 0 0 +2170 362 1 4 1 -17.228766168894136 5.193831824809595 -7.9616074129622385 0 0 0 +2169 362 1 3 1 -18.46824708898834 6.002335398897916 -7.746508527300511 0 0 0 +2168 362 1 2 1 -19.13108776722793 6.294029287403517 -9.079451060569614 0 0 0 +2165 361 1 5 1 -23.381402879846924 5.175329448438821 -7.742529529150434 0 0 0 +2122 354 1 4 1 -16.550427364692318 0.056580469710086755 -7.7422741149344745 0 0 0 +1757 293 1 5 1 -0.8480321081063692 0.47693883466195997 -18.416431859897223 0 0 0 +2363 394 1 5 1 -19.856272532900473 4.2896327059097805 -2.449567515736965 0 0 0 +2364 394 1 6 1 -20.205008737335422 2.8413117990820793 -2.081493193817967 0 0 0 +3593 0 0 0 2 -16.643349695132734 2.4327377220522513 -4.794956096314624 0 0 0 +3623 0 0 0 2 -19.78419514988777 3.1199281956384883 -5.966370171542481 0 0 0 +2166 361 1 6 1 -23.029253927280262 6.085702006178238 -6.564882325994975 0 0 0 +3591 0 0 0 2 22.834343447230438 23.619137905447552 -5.4513310322689215 0 0 0 +2161 361 1 1 1 -23.751466830729594 5.620553065178038 -5.3178566852102085 0 0 0 +3487 0 0 0 2 -16.4528171038362 6.402293574587802 -3.476419707797518 0 0 0 +2362 394 1 4 1 -20.468030583225417 5.275749967891862 -1.4688582280100655 0 0 0 +2314 386 1 4 1 -16.968348352419348 0.5095126730230098 -1.7525756116477316 0 0 0 +2370 395 1 6 1 -10.848092666471066 5.893575716178741 -0.6862939751412154 0 0 0 +2318 387 1 2 1 -11.948073137166489 0.6907950121139029 -1.9892085902340533 0 0 0 +2317 387 1 1 1 -11.028326575979479 1.9017488469699906 -2.0703921212769076 0 0 0 +2295 383 1 3 1 14.771400205595766 20.213569575683053 -5.728787791306872 0 0 0 +2178 363 1 6 1 -13.74426594642433 4.780067165314925 -5.346348838763591 0 0 0 +2177 363 1 5 1 -12.684012119550651 3.70055789224867 -5.207275824221418 0 0 0 +2176 363 1 4 1 -12.584385634903022 2.739671631205932 -6.394669493396722 0 0 0 +2175 363 1 3 1 -12.526272415488704 3.4723561168991024 -7.720735251226924 0 0 0 +2174 363 1 2 1 -13.771078021884643 4.336895856754874 -7.8219521912434296 0 0 0 +2173 363 1 1 1 -13.705083332928218 5.416463960406691 -6.7291024256428935 0 0 0 +2321 387 1 5 1 -9.254329070901434 0.49152610935987384 -1.1092666087698666 0 0 0 +2322 387 1 6 1 -9.935571098000965 1.812829032892151 -1.0321581314525552 0 0 0 +2365 395 1 1 1 -11.492159270473268 5.512306147136131 -2.0130834484818108 0 0 0 +3563 0 0 0 2 -9.598570723251962 0.7196939953466001 -5.403237501476704 0 0 0 +2184 364 1 6 1 -9.397582800716721 5.290478656276405 -5.002657891315456 0 0 0 +2183 364 1 5 1 -8.352151591578547 5.965882111615369 -5.90133942938482 0 0 0 +2179 364 1 1 1 -8.601468180020047 4.329917926565802 -4.182024471559311 0 0 0 +2313 386 1 3 1 -15.878615016906283 1.0539594840193305 -0.8377920752797483 0 0 0 +2367 395 1 3 1 -13.767533127648932 5.250709220975121 -0.9159115996552554 0 0 0 +2366 395 1 2 1 -12.986771650256037 5.848489697526618 -2.0553971135435187 0 0 0 +3480 0 0 0 2 20.556314557584447 23.10452757133288 -20.034687911202212 0 0 0 +2142 357 1 6 1 0.0699596184517053 0.19691487835685878 -4.728004511512185 0 0 0 +2474 413 1 2 1 -0.1532809433507732 18.080439157179537 -0.2566658383273682 0 0 0 +2188 365 1 4 1 -1.2259121281118215 5.448698500943514 -8.0634924128455 0 0 0 +2186 365 1 2 1 -0.5742134938582514 7.906153382814947 -8.122394394849435 0 0 0 +2180 364 1 2 1 -7.0909439190574926 4.684314079972506 -4.116566734906233 0 0 0 +3626 0 0 0 2 -5.986167005805066 2.60682973138861 -7.032999740824604 0 0 0 +2324 388 1 2 1 -6.0174824067851445 1.008808909068605 -1.399157545764981 0 0 0 +2182 364 1 4 1 -7.468815284554487 6.975959504780309 -5.127960781593801 0 0 0 +2181 364 1 3 1 -7.055333321938288 6.179282658452598 -3.970375204669098 0 0 0 +3475 0 0 0 2 -1.733150053104064 2.1541590556312324 -1.035870482436236 0 0 0 +3501 0 0 0 2 -3.4327863607606477 3.6234305503057866 -4.645671447677831 0 0 0 +3601 0 0 0 2 -2.930360268259236 6.807520712448605 -2.691798004809603 0 0 0 +3607 0 0 0 2 -4.63954845857514 6.209439337590575 -7.590637104719327 0 0 0 +3472 0 0 0 2 21.914366752107735 16.07090790165751 -3.553787321374488 0 0 0 +2296 383 1 4 1 15.772365334685295 20.17172316399619 -4.575926324630003 0 0 0 +2190 365 1 6 1 -0.9302298272289442 6.754046364348247 -5.957690915707376 0 0 0 +2185 365 1 1 1 -0.09216737334045652 7.785681003240202 -6.679584127859022 0 0 0 +2323 388 1 1 1 -6.419764992991108 1.081170572846866 -2.8809825490267325 0 0 0 +2137 357 1 1 1 0.18453684794179906 1.7462474590634944 -4.6904240849214105 0 0 0 +2144 358 1 2 1 5.661060922008474 0.11565598851782254 -6.412439899566996 0 0 0 +2138 357 1 2 1 0.6858814412389554 2.32121855569595 -6.115694310845563 0 0 0 +2139 357 1 3 1 1.4211409195944815 1.2173143880867463 -6.889184658125032 0 0 0 +2189 365 1 5 1 -0.8778541375756972 5.377306669318093 -6.593063055940868 0 0 0 +3637 0 0 0 2 -0.03943785227794515 4.742921555127387 -2.961653225264607 0 0 0 +2337 390 1 3 1 1.71128715740165 2.161249291294468 -0.30587513012776113 0 0 0 +2384 398 1 2 1 6.523470651523185 7.916628154739661 -0.17203125045156478 0 0 0 +2335 390 1 1 1 3.0290891300725424 1.929700212017193 -2.438556876536142 0 0 0 +2385 398 1 3 1 6.44683977093319 7.195999634498277 -1.5517178231003599 0 0 0 +2339 390 1 5 1 3.346857717272696 0.2244617190871429 -0.4749535437521076 0 0 0 +2340 390 1 6 1 3.959761124812058 0.9931198066932388 -1.6540078303853818 0 0 0 +3555 0 0 0 2 2.8935636265508937 5.010429100743618 -5.083185184205782 0 0 0 +3522 0 0 0 2 6.745441728909335 6.5433929743549015 -6.2155846709344855 0 0 0 +2336 390 1 2 1 2.4798283849926697 2.869382955832721 -1.3993490559754327 0 0 0 +2386 398 1 4 1 5.070193141000763 7.323677044279709 -2.183447166499072 0 0 0 +2149 359 1 1 1 8.62031017946049 2.212051275648625 -7.51408524132695 0 0 0 +2150 359 1 2 1 9.519055467240525 1.1026777058716293 -6.981952601149039 0 0 0 +2154 359 1 6 1 9.3603405253219 3.5233034558841396 -7.397651784875766 0 0 0 +2153 359 1 5 1 10.609550376592532 3.4579404300410705 -8.268110958901485 0 0 0 +2341 391 1 1 1 10.676736772474534 0.655527000430916 -0.7033527097235714 0 0 0 +2202 367 1 6 1 10.20920520650047 7.455817393119604 -6.84860873852618 0 0 0 +2197 367 1 1 1 10.687327544481107 6.976791123657285 -5.47069774227807 0 0 0 +2152 359 1 4 1 11.542099170429967 2.3408802262753383 -7.813095363449465 0 0 0 +3550 0 0 0 2 13.222701260725103 3.6663695247348653 -0.09417673174194643 0 0 0 +3592 0 0 0 2 6.712837184920185 3.410253206740265 -3.989943237211672 0 0 0 +3670 0 0 0 2 9.54729770301097 4.196290161499583 -1.8330184897342003 0 0 0 +2206 368 1 4 1 14.60070479832996 5.666548392876913 -6.193107916660417 0 0 0 +3149 0 0 0 2 12.587551913147873 3.0296732452276447 -3.69678407937141 0 0 0 +2208 368 1 6 1 16.717849396443185 6.619752413938728 -5.268032581672726 0 0 0 +2207 368 1 5 1 15.718048666135408 5.472717986561985 -5.200553875287182 0 0 0 +3203 0 0 0 2 15.491191850942949 2.373396753956316 -7.758898026935321 0 0 0 +2395 400 1 1 1 17.232493764745303 5.354715895624807 -1.5003775992228923 0 0 0 +2204 368 1 2 1 16.067760718810106 6.975263981873476 -7.663777903703891 0 0 0 +3541 0 0 0 2 20.78841549032004 6.612664917939734 -7.166282480982427 0 0 0 +2298 383 1 6 1 14.845161473560806 18.016359987090677 -3.717318985805564 0 0 0 +2356 393 1 4 1 23.187797111529584 7.44277708690629 -1.026879745750192 -1 0 0 +3736 0 0 0 2 23.754952631261162 1.4965145544776497 -1.843192471079308 0 0 0 +2163 361 1 3 1 -23.829065060333065 3.228230578419032 -6.121889351885381 0 0 0 +3147 0 0 0 2 3.4616021062779674 0.3803210766291573 -15.644710824182132 0 0 0 +2162 361 1 2 1 -23.457094256621257 4.222489973105523 -4.981339276633498 0 0 0 +2357 393 1 5 1 23.82329787845585 6.068743572897513 -1.0309524599195685 -1 0 0 +2203 368 1 1 1 17.232445946341077 6.630985110031023 -6.703166868563926 0 0 0 +2400 400 1 6 1 16.202280176160116 6.433597641134569 -1.1549189781300175 0 0 0 +3488 0 0 0 2 19.96829206662351 2.20424350414897 -1.7673999974239274 0 0 0 +3559 0 0 0 2 20.743989801637706 6.309685643033538 -3.44640770269267 0 0 0 +3602 0 0 0 2 19.595582540556578 3.1733800076519216 -5.2550224585628 0 0 0 +3629 0 0 0 2 16.191989002462908 1.8757155646240218 -3.54565397032477 0 0 0 +2399 400 1 5 1 16.998878669229164 7.705687563883996 -0.846946064123969 0 0 0 +2411 402 1 5 1 -19.073703608903358 9.921164904997527 -1.8682607831493994 0 0 0 +2220 370 1 6 1 -15.70392847266482 9.563389890734376 -7.780123116344971 0 0 0 +2219 370 1 5 1 -15.914115631605448 8.568642368681154 -6.602488316643249 0 0 0 +2218 370 1 4 1 -17.015137370016795 9.015598854223676 -5.600980978285928 0 0 0 +2217 370 1 3 1 -17.144501409558202 10.480075413604693 -5.60494758502412 0 0 0 +2216 370 1 2 1 -17.819272188369034 10.764044979399383 -6.8413082824566125 0 0 0 +2214 369 1 6 1 -23.055812701843987 13.116158395973 -6.111928382314773 0 0 0 +2213 369 1 5 1 -21.70416471235625 12.760095180120155 -6.691498659487811 0 0 0 +2209 369 1 1 1 -23.30644074004359 12.539459858558372 -4.740906313411111 0 0 0 +2410 402 1 4 1 -18.136555578036234 8.77114964745957 -1.606481702312642 0 0 0 +3527 0 0 0 2 -20.44096785301286 14.83799965972949 -0.3652298107020169 0 0 0 +3534 0 0 0 2 -20.567275061043485 7.855277294477281 -4.796436620633521 0 0 0 +3598 0 0 0 2 -22.718815063315905 9.491391503527666 -2.7783592989392334 0 0 0 +3548 0 0 0 2 -16.997155922568652 13.00949868390788 -3.164141335006651 0 0 0 +2212 369 1 4 1 -20.600230395450946 13.187103588432638 -5.673274676636408 0 0 0 +2409 402 1 3 1 -18.23019047742525 8.437805069265135 -0.11868903945798505 0 0 0 +2211 369 1 3 1 -20.862342799238803 12.466595308647314 -4.380592598380723 0 0 0 +2210 369 1 2 1 -22.202284408568065 12.827986978206416 -3.7997029954390587 0 0 0 +2268 378 1 6 1 -18.653060456618835 16.28432131751648 -5.767786360889106 0 0 0 +2267 378 1 5 1 -18.696862963333718 15.716446921853723 -7.166905982636567 0 0 0 +2412 402 1 6 1 -18.944663208597333 11.11313134785631 -0.9350861319705538 0 0 0 +2416 403 1 4 1 -12.493738911033587 12.20476316285281 -0.6168630064682877 0 0 0 +2302 384 1 4 1 20.57636532222017 17.416618752680115 -7.9993994449766275 0 0 0 +1766 295 1 2 1 10.930713593031799 0.41859796567066604 -16.545892582930577 0 0 0 +2414 403 1 2 1 -14.454112097569308 10.877317412848575 -0.24686494606062231 0 0 0 +3526 0 0 0 2 -7.884785965327792 13.492290749196338 -5.863367489470024 0 0 0 +2226 371 1 6 1 -10.662314576379966 10.774852737715447 -6.406226570394559 0 0 0 +2225 371 1 5 1 -9.624563044185537 10.183332767655168 -5.501284014677356 0 0 0 +2224 371 1 4 1 -10.414246871971073 9.652531409701373 -4.339429639913418 0 0 0 +2223 371 1 3 1 -11.436352912748125 8.63610456909986 -4.7538451468920435 0 0 0 +2222 371 1 2 1 -12.406141249534468 9.160537803096869 -5.827892435613565 0 0 0 +2221 371 1 1 1 -11.694089752224274 9.813430327222157 -6.986112129865442 0 0 0 +2123 354 1 5 1 -17.94180533459147 0.061016824844554084 -8.30293893825937 0 0 0 +2418 403 1 6 1 -12.268916536122639 9.619958702380325 -0.6360958354135315 0 0 0 +3502 0 0 0 2 -14.108948918364664 12.941600436339293 -5.8429192037267645 0 0 0 +3633 0 0 0 2 -11.10188229032917 13.450475943532073 -3.9098722702255895 0 0 0 +3663 0 0 0 2 -8.35517951864954 8.752151674588685 -1.7230226092359122 0 0 0 +3655 0 0 0 2 -8.051214788991826 12.502182086270123 -2.4649651979972713 0 0 0 +3643 0 0 0 2 -4.904663738972769 23.739802318773634 -15.331826268893032 0 0 0 +2404 401 1 4 1 22.324148441443374 13.608001605116625 -0.5475954517860675 -1 0 0 +3490 0 0 0 2 -2.1449118522385944 10.558706109909979 -4.7929600897149 0 0 0 +2238 373 1 6 1 -0.6484925675212291 12.073816460145913 -9.045542233744218 0 0 0 +2230 372 1 4 1 -4.531239985776611 11.452490783723263 -7.622792842815729 0 0 0 +2229 372 1 3 1 -5.83369612829366 10.842581355037462 -7.207674332333591 0 0 0 +3605 0 0 0 2 -4.398703191312671 13.204722670212496 -4.0970463947063855 0 0 0 +3613 0 0 0 2 -5.537503138217481 9.71590079966454 -3.7811073226728715 0 0 0 +3566 0 0 0 2 -3.776757818218801 15.814194401206 -0.722324648583349 0 0 0 +2284 381 1 4 1 -1.5599952231428849 14.838438384064965 -5.063147056474253 0 0 0 +2283 381 1 3 1 -1.936975673701021 15.60118540015182 -3.8072743454838527 0 0 0 +2421 404 1 3 1 -2.704298875874827 10.89238432569151 -0.7965225015175745 0 0 0 +2282 381 1 2 1 -0.7761847567339379 15.792648857119268 -2.8026159555530064 0 0 0 +3496 0 0 0 2 -6.805442505064991 16.114394175774734 -2.8469316706175527 0 0 0 +2280 380 1 6 1 -4.413138206156654 16.403976567166044 -6.877848289319443 0 0 0 +2422 404 1 4 1 -3.380322604015592 12.193086134217083 -0.4475446170226109 0 0 0 +3631 0 0 0 2 3.9978154942664434 10.669842865617577 -0.7628766076389916 0 0 0 +3505 0 0 0 2 0.5669977489830897 8.84416129905296 -2.1137720990490405 0 0 0 +2244 374 1 6 1 6.4516383752499245 14.011168164951574 -5.637937151047519 0 0 0 +2242 374 1 4 1 6.259951567198466 13.010863756408535 -3.34626091978336 0 0 0 +2241 374 1 3 1 4.781024378162771 12.815729127089524 -3.6549555989493347 0 0 0 +2240 374 1 2 1 4.154063918610142 13.815639231366973 -4.6441721276849455 0 0 0 +2239 374 1 1 1 4.953568200585549 13.862799844382161 -5.901545655985871 0 0 0 +2233 373 1 1 1 0.6265897193383253 12.229966476738728 -8.20915594576502 0 0 0 +3493 0 0 0 2 1.0343020167158308 12.175452337460115 -3.0243550493642157 0 0 0 +3516 0 0 0 2 2.9566666142061626 9.56909047851067 -5.000105749377763 0 0 0 +3650 0 0 0 2 7.529508177685294 14.986469674466717 -0.49132905086598533 0 0 0 +3669 0 0 0 2 4.142897103798718 15.94855624937794 -1.6083496901389036 0 0 0 +2243 374 1 5 1 6.981365234772586 12.971471409481653 -4.677832052599226 0 0 0 +3616 0 0 0 2 8.088097066186746 9.102842795018468 -4.169180894232419 0 0 0 +1758 293 1 6 1 0.5368009133345782 0.12834380266136663 -18.93388661630213 0 0 0 +3537 0 0 0 2 9.376539953038534 11.639216946173454 -6.620900551516478 0 0 0 +2438 407 1 2 1 12.1412664278767 12.035908834595206 -0.12469892214862748 0 0 0 +2198 367 1 2 1 11.567935099908338 7.967431547680981 -4.748983663652025 0 0 0 +2201 367 1 5 1 11.378626047561422 7.913939082843218 -7.709529204787452 0 0 0 +2199 367 1 3 1 12.728413409217298 8.438808663071871 -5.584950179458887 0 0 0 +2200 367 1 4 1 12.243224612077467 8.933942780469659 -6.976123785499148 0 0 0 +3533 0 0 0 2 10.252945152667182 15.267818478369659 -3.516778185103391 0 0 0 +2250 375 1 6 1 14.31112532443578 11.962773425967448 -6.346469285679499 0 0 0 +2249 375 1 5 1 14.38000826890294 12.375368022228558 -4.860982743825875 0 0 0 +2248 375 1 4 1 14.166518368370326 13.857875306545639 -4.66427590998562 0 0 0 +2247 375 1 3 1 12.932747974712163 14.361599765650926 -5.394790359699625 0 0 0 +2246 375 1 2 1 13.137395884501192 14.090410297419345 -6.875653880990553 0 0 0 +2245 375 1 1 1 13.149623274148258 12.585324494211845 -7.1340665151059515 0 0 0 +3551 0 0 0 2 11.065801686849914 10.891498568801962 -3.3141569488502194 0 0 0 +3639 0 0 0 2 14.611900885677315 9.453095832804978 -2.79682597914436 0 0 0 +1604 268 1 2 1 -6.5154600026655025 8.143597879840208 -23.90144430337382 0 0 0 +2439 407 1 3 1 11.44149948303497 13.405466718488062 -0.2811727741327638 0 0 0 +3630 0 0 0 2 9.858259640849614 7.734894810135244 -1.2823059790710296 0 0 0 +3478 0 0 0 2 16.201090588572928 14.330793948553403 -8.913415885036667 0 0 0 +2403 401 1 3 1 23.127843659963478 12.271823573484477 -0.5610594289678206 -1 0 0 +1629 272 1 3 1 18.01599690006115 4.6323105768974235 -23.580410039727887 0 0 0 +2448 408 1 6 1 16.821690131498237 11.91391350848974 -0.8549946376953259 0 0 0 +3704 0 0 0 2 20.293672869620984 9.87106101241468 -2.3657547060884867 0 0 0 +3644 0 0 0 2 22.444500027980922 9.121514993236673 -5.050619311300336 0 0 0 +2256 376 1 6 1 18.48870769365214 12.12748047690393 -6.939563712198812 0 0 0 +2255 376 1 5 1 19.872307973686013 12.629862117011081 -7.391569569722666 0 0 0 +2254 376 1 4 1 20.557822955699418 13.571603754274934 -6.39985884274556 0 0 0 +2253 376 1 3 1 20.7412863141206 12.847581254900787 -5.096305551531576 0 0 0 +2252 376 1 2 1 19.38567356715557 12.302341406452848 -4.630145213964317 0 0 0 +2251 376 1 1 1 18.614185691705053 11.439581363485908 -5.61700188225986 0 0 0 +3507 0 0 0 2 17.662584068334688 15.696587857275402 -3.849136712327109 0 0 0 +2443 408 1 1 1 17.510565148918047 13.251141484050992 -0.8472229485263955 0 0 0 +586 98 1 4 1 -17.572903201716652 21.879057815862705 -5.19403309737816 0 -1 0 +582 97 1 6 1 -21.272630206566905 23.62999893021759 -5.68037673354409 0 -1 0 +3379 0 0 0 2 21.369962883933216 23.77750475133039 -23.82379340947792 0 -1 1 +779 130 1 5 1 -17.635283686743644 21.48711398581814 -0.8906106863151018 0 -1 0 +577 97 1 1 1 -20.925966715423986 23.30875004173855 -7.002171906864454 0 -1 0 +774 129 1 6 1 -22.862816044475736 23.867936905681457 -2.0760402232488935 0 -1 0 +769 129 1 1 1 23.871033397738483 23.289522610286365 -1.4042864873440095 -1 -1 0 +773 129 1 5 1 -21.69885760193756 22.894125275811483 -2.0169040717121955 0 -1 0 +584 98 1 2 1 -15.441594569482346 20.534101637045005 -5.83512658577573 0 -1 0 +2266 378 1 4 1 -17.626013989140322 16.42589024056285 -7.975221947229114 0 0 0 +2265 378 1 3 1 -16.22330002323402 16.383497339807576 -7.444641975091593 0 0 0 +2264 378 1 2 1 -16.222109887547752 16.82375349050769 -6.047451232516687 0 0 0 +2263 378 1 1 1 -17.261488200698576 16.18880810024647 -5.195461393780578 0 0 0 +3536 0 0 0 2 -15.296086093514093 18.115592061894667 -2.5896568812304497 0 0 0 +3538 0 0 0 2 -20.433630444075067 20.01320017409419 -5.705831551665259 0 0 0 +3649 0 0 0 2 -22.363448033544405 16.46585921847229 -4.098806424199109 0 0 0 +770 129 1 2 1 -23.83177651086435 22.783442402305354 -0.00362212609986744 0 -1 0 +585 98 1 3 1 -16.527400792075813 20.879624343146066 -4.815535077138938 0 -1 0 +2423 404 1 5 1 -4.898654806655995 12.082073437226839 -0.4398565491984723 0 0 0 +3756 0 0 0 2 -20.16691067331444 18.812795254162825 -1.9136544853922866 0 0 0 +592 99 1 4 1 -11.027102945584327 22.93298724159472 -6.830994694184477 0 -1 0 +591 99 1 3 1 -10.212329243690855 21.69548278803057 -7.162417688423282 0 -1 0 +212 36 1 2 1 -8.41146917913926 23.735583000152516 -19.271418957782853 0 -1 0 +2487 415 1 3 1 11.22070151348338 17.412426093393 -0.703083360786186 0 0 0 +2489 415 1 5 1 13.006534913540168 19.185579450554556 -0.1911552208702408 0 0 0 +587 98 1 5 1 -16.81176241730543 23.120598561758705 -5.557922931203064 0 -1 0 +588 98 1 6 1 -15.811539331868213 22.85467039637773 -6.645344466078302 0 -1 0 +583 98 1 1 1 -14.762605122338805 21.817065121148953 -6.298663123074806 0 -1 0 +3667 0 0 0 2 -12.237250782567903 20.88155514565447 -2.0397646802795464 0 0 0 +2274 379 1 6 1 -11.739625620446175 18.89940170839249 -4.91400309761242 0 0 0 +2273 379 1 5 1 -10.41153275042253 18.189257747991903 -4.612452418442175 0 0 0 +2272 379 1 4 1 -10.32507871658377 16.749509555109967 -5.090642126498609 0 0 0 +2271 379 1 3 1 -10.850261075843193 16.551748449577424 -6.492906149006503 0 0 0 +2270 379 1 2 1 -12.266236292167802 17.153012457210334 -6.557528161690672 0 0 0 +2269 379 1 1 1 -12.293310293141122 18.628895637398113 -6.2848606888442635 0 0 0 +594 99 1 6 1 -10.014248239765639 23.004359137472218 -4.537650426969768 0 -1 0 +593 99 1 5 1 -11.297974705711404 23.030651089752105 -5.341527668878834 0 -1 0 +589 99 1 1 1 -9.172313603759447 21.739611206184517 -4.875671763961525 0 -1 0 +3675 0 0 0 2 -14.108357668513428 14.81671435516546 -2.890628646086898 0 0 0 +3202 0 0 0 2 18.278351164715826 0.24847548323126353 -8.837984468255648 0 0 0 +590 99 1 2 1 -8.933236881733706 21.57982425937155 -6.364237903827499 0 -1 0 +431 72 1 5 1 18.64264687288229 23.418375479270377 -12.390302169546283 0 -1 0 +780 130 1 6 1 -16.1426395860797 21.822444720016716 -0.7700390920924144 0 -1 0 +2490 415 1 6 1 12.335678922718628 20.237174951791882 -1.0323129924380257 0 0 0 +2396 400 1 2 1 18.277760692433358 4.987404826772072 -0.4023726946755268 0 0 0 +3528 0 0 0 2 -7.834826339985492 18.49115506482708 -7.685249710471893 0 0 0 +2275 380 1 1 1 -3.336857372123814 17.322353167811144 -7.2662642225924134 0 0 0 +602 101 1 2 1 -1.5286002402096397 23.42533699888928 -6.68878399855941 0 -1 0 +3572 0 0 0 2 -7.820750177328067 19.691888672825105 -2.2390478590180702 0 0 0 +598 100 1 4 1 -5.295503497583894 23.32550461454885 -3.3194905044422574 0 -1 0 +418 70 1 4 1 3.565956878743001 23.946815080423367 -11.386943168876607 0 -1 0 +597 100 1 3 1 -4.475868184208501 22.991491390376197 -4.549111918617107 0 -1 0 +3710 0 0 0 2 -2.5760872591761426 20.48621460972236 -2.7560746455257132 0 0 0 +596 100 1 2 1 -5.247807289950434 23.118457729700783 -5.846741123452733 0 -1 0 +2293 383 1 1 1 13.987845890001788 17.98406573024533 -4.983426473596979 0 0 0 +3513 0 0 0 2 -5.166515891099728 19.562467388889296 -5.241458296480488 0 0 0 +3588 0 0 0 2 -0.4160458149916305 19.845518046671845 -5.589062431852918 0 0 0 +606 101 1 6 1 0.15401123028018457 23.631045803536065 -4.897341098611376 0 -1 0 +608 102 1 2 1 7.104868513753745 21.60742631617994 -6.721942620507365 0 -1 0 +609 102 1 3 1 8.02894481991229 22.387585544834828 -7.673757564319838 0 -1 0 +2301 384 1 3 1 21.2149968146802 17.89022284069748 -6.686130954784494 0 0 0 +2285 381 1 5 1 -0.3712788993841086 15.413892575075874 -5.7849842996472045 0 0 0 +2286 381 1 6 1 0.8095918025411559 15.508978763986764 -4.846841665579362 0 0 0 +2281 381 1 1 1 0.4318583563951355 16.32826989944019 -3.5950130386484527 0 0 0 +604 101 1 4 1 0.9616993890612406 22.766693158667163 -7.167914014856324 0 -1 0 +3665 0 0 0 2 2.667115707313385 19.920510416857184 -7.54065504121059 0 0 0 +612 102 1 6 1 5.459644573297491 23.515564151975266 -6.833038339908403 0 -1 0 +2459 410 1 5 1 -17.424694902289595 16.278551875236953 -0.3935029388124175 0 0 0 +607 102 1 1 1 5.655975802351836 22.007609625222507 -6.849915784398851 0 -1 0 +1739 290 1 5 1 -17.4386080126658 0.2896277947803332 -19.457612131126044 0 0 0 +2292 382 1 6 1 6.7507460351539965 19.116656890607352 -3.2778563227811226 0 0 0 +2291 382 1 5 1 5.253269855236694 19.086660749298023 -3.6333457553365194 0 0 0 +2290 382 1 4 1 5.0043095961637 18.65467556170543 -5.10255017147124 0 0 0 +2289 382 1 3 1 5.752288036101169 17.348781694726 -5.42011885450264 0 0 0 +2288 382 1 2 1 7.239501219877277 17.462985176115517 -5.038848440580393 0 0 0 +2287 382 1 1 1 7.5705630117595355 17.91445922392665 -3.6210067152951324 0 0 0 +3470 0 0 0 2 4.309692877842342 22.567231250603417 -3.307957014155313 0 0 0 +3483 0 0 0 2 1.748357866372525 19.982219198657607 -2.6913373791034476 0 0 0 +605 101 1 5 1 1.30284565372134 23.53369822023975 -5.8937683857120495 0 -1 0 +3553 0 0 0 2 19.404450754851958 21.303084014498463 -3.0591851229645255 0 0 0 +807 135 1 3 1 11.10028100637009 23.43695921367467 -0.5507046153654952 0 -1 0 +2294 383 1 2 1 14.565981298191234 18.781675788226323 -6.16320581584657 0 0 0 +3486 0 0 0 2 14.42650047761157 15.048009235412986 -1.2983260496627553 0 0 0 +2297 383 1 5 1 15.248008560561075 19.411713987917484 -3.3592648834285703 0 0 0 +3653 0 0 0 2 10.03194048802675 15.925235332755175 -7.070758614469615 0 0 0 +2485 415 1 1 1 11.452170243210835 19.496250363776735 -2.043683789839637 0 0 0 +3660 0 0 0 2 8.743090350842484 22.389575170681958 -3.156119823283995 0 0 0 +2486 415 1 2 1 10.47292815735881 18.49278925028686 -1.4450092454901404 0 0 0 +3500 0 0 0 2 16.235132009166147 22.77121949739279 -1.6722664146223631 0 0 0 +613 103 1 1 1 12.043916373774442 23.006201738936 -4.982052233921803 0 -1 0 +3589 0 0 0 2 10.698627285616576 19.517832757333267 -5.998297309459528 0 0 0 +2361 394 1 3 1 -20.085416400777234 4.9797309125541815 -0.028175082863422487 0 0 0 +2481 414 1 3 1 6.162562317968746 19.319444566461545 -0.010566628202163076 0 0 0 +2496 416 1 6 1 19.011192280980744 17.27101559915357 -0.04205902494056761 0 0 0 +3514 0 0 0 2 -13.940950713044957 0.3235620234451786 -23.99075897320151 0 0 0 +3520 0 0 0 2 7.886234767543801 11.430527081795935 -0.0220069850782268 0 0 0 +1705 285 1 1 1 -2.452235401444538 20.583040333635555 -23.92591999215111 0 0 0 +2499 417 1 3 1 -21.5597283378815 2.4038639954170375 4.593980670581377 0 0 0 +2503 418 1 1 1 -18.675830222224242 0.7639913694669346 2.597709224635121 0 0 0 +2551 426 1 1 1 -17.98920959822501 7.59299975922716 4.613567729300449 0 0 0 +2552 426 1 2 1 -17.276933940852093 6.64951666976101 5.577055022426154 0 0 0 +2553 426 1 3 1 -18.16339020481791 5.558428843529774 6.131298931990904 0 0 0 +2554 426 1 4 1 -18.69897773057116 4.761971025501257 5.001423975986079 0 0 0 +2555 426 1 5 1 -19.448987638454717 5.5926806780291445 3.9951880830063384 0 0 0 +2556 426 1 6 1 -18.562097185769332 6.705062496261982 3.4617418135128792 0 0 0 +2498 417 1 2 1 -22.48531625049285 1.2773342233396567 5.117764487328866 0 0 0 +2504 418 1 2 1 -17.854454170526623 1.3503426314344407 3.746274343415506 0 0 0 +3840 0 0 0 2 -16.76565538596655 3.998934854679255 1.2841767125090497 0 0 0 +2360 394 1 2 1 -20.408971950474463 3.5274052193793244 0.2747941954625429 0 0 0 +993 166 1 3 1 7.172266019658807 22.76026192133292 6.143686590298318 0 -1 0 +2500 417 1 4 1 -22.256486582183935 3.4492289214985004 3.707978319421516 0 0 0 +3466 0 0 0 2 16.4141036920008 23.884280252135262 15.419145915591818 0 -1 0 +2353 393 1 1 1 22.92377272354099 5.525901276385726 1.250719403945135 -1 0 0 +2505 418 1 3 1 -18.233994948966973 0.7684590057259786 5.081613676020509 0 0 0 +3798 0 0 0 2 -10.872210849352681 8.398864438301839 2.913287383430674 0 0 0 +3805 0 0 0 2 -11.25547352980601 5.0391298022292625 4.179444211577445 0 0 0 +3406 0 0 0 2 -12.325689191992073 2.054158519159888 1.8863506432101902 0 0 0 +3746 0 0 0 2 -15.03918065963158 3.454625991235532 4.645785435979757 0 0 0 +2368 395 1 4 1 -13.125324623281218 5.665776413272355 0.40290880787287753 0 0 0 +2563 428 1 1 1 -8.433210465508886 6.258343315970972 7.355411008066379 0 0 0 +2568 428 1 6 1 -8.896206781226503 6.77872203492831 6.033843250825273 0 0 0 +2559 427 1 3 1 -12.92261212696814 8.894779476620212 6.5010117489754355 0 0 0 +992 166 1 2 1 7.257973215861652 23.24103814379096 4.720885827766526 0 -1 0 +2369 395 1 5 1 -11.6627783572746 5.2531191489784135 0.4395577701820179 0 0 0 +2518 420 1 4 1 -8.124667679934488 0.6372198640922738 2.229651013093622 0 0 0 +2462 411 1 2 1 -10.887836835081766 17.96268095775677 1.344577254874566 0 0 0 +2519 420 1 5 1 -9.010180552218916 1.5240579030417658 3.06715283808932 0 0 0 +2510 419 1 2 1 -11.680381182308464 0.1709039604793338 5.9912879121521865 0 0 0 +785 131 1 5 1 -9.149952291524112 22.489583900933678 1.0019514882012452 0 -1 0 +2564 428 1 2 1 -7.766381912229512 7.2849031685181185 8.22926468322638 0 0 0 +2520 420 1 6 1 -8.159074125591474 2.1195572656523445 4.169478589734029 0 0 0 +2373 396 1 3 1 -6.0988281719698 6.100623377620572 1.4367266743266678 0 0 0 +2516 420 1 2 1 -6.746571818992512 0.0717787958293172 4.194605126666757 0 0 0 +2420 404 1 2 1 -3.0877853845488183 9.765695966679566 0.12248361139177322 0 0 0 +2565 428 1 3 1 -6.536257557823395 7.826396083544313 7.575644057739351 0 0 0 +2566 428 1 4 1 -7.059232959741491 8.372124010062667 6.230374163324704 0 0 0 +2567 428 1 5 1 -7.744406008999123 7.388283204124628 5.286094498705274 0 0 0 +3734 0 0 0 2 -4.702601896449374 2.4693556175660696 2.0977751529732243 0 0 0 +3778 0 0 0 2 -4.520377110972825 5.79941638032306 4.576555712417457 0 0 0 +2380 397 1 4 1 -0.6340746110557597 5.158148817447021 0.9254667765028877 0 0 0 +2379 397 1 3 1 -1.988469584447544 5.85266397847301 1.0635076614943508 0 0 0 +2718 453 1 6 1 -0.39768349679413545 0.2884826644951896 12.740739027875925 0 0 0 +2378 397 1 2 1 -1.835783636066069 6.96123988778063 2.0782729816032024 0 0 0 +2371 396 1 1 1 -7.854780779736356 4.379466651790157 0.8460217342001665 0 0 0 +2515 420 1 1 1 -7.6024252656826 1.0105628443445656 5.029273954440327 0 0 0 +2372 396 1 2 1 -7.5325290613270655 5.6906244482110395 1.5239703898219097 0 0 0 +2526 421 1 6 1 -2.2319237586544016 0.6390265457798633 4.577826589400766 0 0 0 +2525 421 1 5 1 -1.445924190956558 1.9000834568736473 4.259831763447979 0 0 0 +3706 0 0 0 2 -4.749765797618315 4.191211593653061 8.246915274829988 0 0 0 +2884 481 1 4 1 23.423589944701437 1.3724965036117422 18.205396178188224 -1 0 0 +2377 397 1 1 1 -0.643935100781379 7.8978647842112295 1.8134749856238133 0 0 0 +2570 429 1 2 1 -0.5062058504821425 6.210619826472015 5.356243813864158 0 0 0 +2569 429 1 1 1 0.758526469824647 5.385241003699713 5.162645194409484 0 0 0 +2574 429 1 6 1 1.7398339093687825 5.499987064412204 6.28139573531533 0 0 0 +2530 422 1 4 1 6.117217309512922 2.3752357569105453 4.426103521955034 0 0 0 +2381 397 1 5 1 0.4437072608557968 6.148214634435765 0.5339834652812884 0 0 0 +2382 397 1 6 1 0.6789621337673666 7.213975270318008 1.6028665580417596 0 0 0 +2461 411 1 1 1 -10.96653016177816 16.467919508426075 1.611268823567693 0 0 0 +2531 422 1 5 1 5.4223632418549075 1.3158860356251496 3.564041232548496 0 0 0 +2532 422 1 6 1 3.921371921225822 1.215305870442015 3.681864403868964 0 0 0 +2572 429 1 4 1 -0.19559235913972467 6.079556620190433 7.766786730337511 0 0 0 +2578 430 1 4 1 6.244107002809097 7.268235007168651 4.292358166256802 0 0 0 +2579 430 1 5 1 4.770053091733617 7.119971457543521 4.620574732630335 0 0 0 +3703 0 0 0 2 3.350630976949942 4.484972725740117 2.7971652838939094 0 0 0 +2920 487 1 4 1 10.722808064867305 0.30864154039592206 16.503410908512045 0 0 0 +2527 422 1 1 1 3.488166497442667 1.2330236489595081 5.148900983819618 0 0 0 +2529 422 1 3 1 5.568751327820065 2.4153575481952685 5.856146844364119 0 0 0 +2528 422 1 2 1 4.045372036509048 2.5136185936337236 5.777435953128563 0 0 0 +2576 430 1 2 1 6.697017716357859 6.679776221159801 6.690528585938401 0 0 0 +2577 430 1 3 1 7.00493221433208 6.352381092773243 5.240851766910581 0 0 0 +2383 398 1 1 1 5.528394965887195 7.363748813998422 0.8268636233727127 0 0 0 +2388 398 1 6 1 4.147891405845685 7.421722855384816 0.23044361372626068 0 0 0 +2524 421 1 4 1 0.0396714264133794 1.586875525210851 4.0402661821204715 0 0 0 +2342 391 1 2 1 10.390487728514728 1.4436846936366092 0.5979833469574208 0 0 0 +2536 423 1 4 1 10.584427180029776 2.4435072143709844 4.535188344909669 0 0 0 +2582 431 1 2 1 11.737264374701338 5.426587309944066 7.530676789065915 0 0 0 +2583 431 1 3 1 10.67142786357032 6.164766600595798 6.751797295560134 0 0 0 +3683 0 0 0 2 13.457516025036915 3.638138816819103 3.5104222524888966 0 0 0 +3803 0 0 0 2 8.34604322147262 5.037560748166722 2.0204032541139743 0 0 0 +2533 423 1 1 1 10.068871217948413 0.5633478123010717 6.857016987789717 0 0 0 +2537 423 1 5 1 9.469767610088757 2.557516396349041 5.551552501124 0 0 0 +2344 391 1 4 1 7.995036810008915 0.779022712491032 0.4939339563323952 0 0 0 +2343 391 1 3 1 8.956070059905397 1.9127655843416975 0.7375579081971523 0 0 0 +2590 432 1 4 1 16.257709037674136 7.6669146945362225 6.222453516885871 0 0 0 +2543 424 1 5 1 15.27748032470191 1.0336693339004082 6.57622196325461 0 0 0 +2392 399 1 4 1 12.284488286022082 6.899788559506833 3.208989607129677 0 0 0 +2581 431 1 1 1 11.423425322814797 5.296802998947018 9.031425126695712 0 0 0 +2535 423 1 3 1 11.082170886567917 0.9726255225123769 4.50734036094785 0 0 0 +2391 399 1 3 1 12.746780716927764 6.572289954327951 1.8077227955036037 0 0 0 +2534 423 1 2 1 11.289779830501367 0.4335435750888726 5.933976481318157 0 0 0 +2547 425 1 3 1 23.113712832258607 7.56070291163951 6.713435741635205 -1 0 0 +2548 425 1 4 1 23.665998914593615 7.117775148471305 5.35624577818452 -1 0 0 +2549 425 1 5 1 23.44939748688275 5.650113177890259 5.21413945399491 -1 0 0 +2354 393 1 2 1 22.369063888233825 6.917524849592601 1.3112075833376708 -1 0 0 +2691 449 1 3 1 21.17341441618863 1.40827391294139 7.515241488231163 -1 0 0 +1198 200 1 4 1 21.32788769347814 23.735109857808247 13.536973307725193 0 -1 0 +2415 403 1 3 1 -13.748486779693222 12.112375058276958 0.23759232529855484 0 0 0 +2546 425 1 2 1 21.616447612129413 7.317983584208883 6.815150324245196 -1 0 0 +2352 392 1 6 1 17.384305968627256 1.541061527351656 1.2266142958407595 0 0 0 +2397 400 1 3 1 18.908643751956916 6.231230630199516 0.201937819129367 0 0 0 +2545 425 1 1 1 21.31313459816793 5.8566920080213425 6.4952356186713445 -1 0 0 +2550 425 1 6 1 21.954669330869322 5.32256375112213 5.23266445523047 -1 0 0 +2587 432 1 1 1 16.165295841128557 5.213991082961081 4.772823008938388 0 0 0 +2588 432 1 2 1 15.161543107947898 5.657402893414678 5.801638434824959 0 0 0 +2589 432 1 3 1 15.723550493984716 6.465211913977075 6.901956991350046 0 0 0 +2591 432 1 5 1 17.469254551800134 7.18162641111307 5.445380074477798 0 0 0 +2592 432 1 6 1 17.029886467235624 6.334201197836374 4.271006601967566 0 0 0 +3740 0 0 0 2 20.824379835200308 2.666912312014954 1.6509234674280955 0 0 0 +3773 0 0 0 2 20.165063053843728 8.251994016022044 3.4269763768060373 0 0 0 +3811 0 0 0 2 19.399502047402397 3.079306780334787 4.730393377870406 0 0 0 +2544 424 1 6 1 16.70251091462056 1.5518919144584087 6.747526186441784 0 0 0 +2347 392 1 1 1 16.701064168507344 1.8729160434628032 2.5544267816804114 0 0 0 +2348 392 1 2 1 16.42101367619067 0.5168135744242816 3.2565206889019462 0 0 0 +2502 417 1 6 1 -23.94044002363385 1.7107114890178146 3.132043456990622 0 0 0 +2692 449 1 4 1 22.500824808865275 1.7919599894286162 6.8604473024056 -1 0 0 +1387 232 1 1 1 20.408321590823036 23.862918571398982 20.050990337098042 0 -1 0 +2501 417 1 5 1 -23.060280742711456 2.844010213984995 2.5733420185077853 0 0 0 +2539 424 1 1 1 17.542393464799463 0.7079624146565505 7.699215088942101 0 0 0 +2693 449 1 5 1 23.213284112266965 2.8231830569205227 7.694678138437932 -1 0 0 +1539 257 1 3 1 22.2955231731286 0.5518112551095729 21.971643535980604 -1 0 -1 +2407 402 1 1 1 -19.090598657166 10.68457811823561 0.5254519096230463 0 0 0 +2408 402 1 2 1 -18.05774715149388 9.63295040709542 0.8521866033808387 0 0 0 +2597 433 1 5 1 23.974307652097007 14.998058344316146 6.53191718464996 -1 0 0 +2599 434 1 1 1 -17.636577299978946 11.227568469916013 6.014141481535157 0 0 0 +2601 434 1 3 1 -15.972336130459713 11.106204551211166 4.190115349553833 0 0 0 +2602 434 1 4 1 -16.603711969625618 12.240170102600654 3.427276508786918 0 0 0 +2603 434 1 5 1 -18.096186280871077 12.277908570480113 3.7582871277220016 0 0 0 +2604 434 1 6 1 -18.390003030901536 12.317133845416382 5.256393962390025 0 0 0 +3750 0 0 0 2 -21.611299488779142 7.890970825983605 1.8461181711306367 0 0 0 +3860 0 0 0 2 -21.22675384830832 15.138853894448454 3.3075423284496135 0 0 0 +2596 433 1 4 1 22.596012647723143 14.481599126739543 6.749753150357762 -1 0 0 +3835 0 0 0 2 -21.168140095295428 9.070751052704543 5.644943682442348 0 0 0 +2600 434 1 2 1 -16.175093901519052 11.293126537006653 5.697415131714129 0 0 0 +2401 401 1 1 1 -23.86254146821619 13.033180151070518 1.6255560069741084 0 0 0 +2593 433 1 1 1 -23.1573096522166 12.603526556152447 6.799292839317425 0 0 0 +2652 442 1 6 1 -16.202631405826086 15.541644681286318 6.527302516252849 0 0 0 +2598 433 1 6 1 -23.17444683508059 13.868450258577047 5.960478673915751 0 0 0 +2460 410 1 6 1 -17.05637511708378 15.049224970833768 0.35722761667980546 0 0 0 +2558 427 1 2 1 -12.742921658986592 9.496828836382873 7.823056078849671 0 0 0 +2456 410 1 2 1 -15.236004599115041 16.291913127920964 1.5673736391676523 0 0 0 +2455 410 1 1 1 -15.578281912940005 15.109361163198393 0.6876209439472315 0 0 0 +3871 0 0 0 2 -14.586982920906793 7.333061432659908 3.160889337849233 0 0 0 +2605 435 1 1 1 -11.349124546545701 12.684457957244913 5.883684706617599 0 0 0 +2606 435 1 2 1 -11.187066364007153 12.814042887281236 4.384347861473666 0 0 0 +2607 435 1 3 1 -12.51375013591481 13.106861486328004 3.710071353228428 0 0 0 +2608 435 1 4 1 -13.117714542026793 14.384131683120684 4.330129994196867 0 0 0 +2609 435 1 5 1 -13.285157552415892 14.190804824509682 5.835470677041023 0 0 0 +2610 435 1 6 1 -12.041823104309604 13.838884618738138 6.590297493395855 0 0 0 +3642 0 0 0 2 -7.899905869151874 9.232694487044332 1.6278217291716925 0 0 0 +3677 0 0 0 2 -8.457110362143386 15.14280039266533 4.582793650842125 0 0 0 +2351 392 1 5 1 17.99350819191055 0.12517642145802826 1.1966674622387332 0 0 0 +3628 0 0 0 2 -8.391014048822786 13.953080705330239 0.9993055479367927 0 0 0 +2426 405 1 2 1 0.3939979069923061 12.287883896358721 2.7858755364932533 0 0 0 +2611 436 1 1 1 -6.033529288788625 12.521191765114825 3.796460025446499 0 0 0 +2612 436 1 2 1 -4.506689955283473 12.585445947655423 3.7345020070236283 0 0 0 +2613 436 1 3 1 -4.004693429419552 13.212446300477708 5.009093011519236 0 0 0 +2614 436 1 4 1 -4.54147498977341 12.498682714601324 6.2161274390182975 0 0 0 +2615 436 1 5 1 -6.061759034527472 12.543961332854352 6.237461250044357 0 0 0 +2616 436 1 6 1 -6.566951666496342 11.841667905593775 5.019000453987064 0 0 0 +2618 437 1 2 1 -1.563284906344568 15.313808369746608 7.583398318166307 0 0 0 +2619 437 1 3 1 -1.1106573962637751 14.710782399229261 6.27268431253926 0 0 0 +2916 486 1 6 1 7.518429758219012 1.0869468571028231 18.292227195932774 0 0 0 +2424 404 1 6 1 -5.250064614818395 10.998251109942094 0.5253444544668258 0 0 0 +2425 405 1 1 1 -0.9615401749090001 12.962790553936488 2.567206547295295 0 0 0 +2430 405 1 6 1 -0.8974552941890926 14.118151765950135 1.587607541351707 0 0 0 +2427 405 1 3 1 0.9452954879452365 11.817006737452898 1.4380656713591418 0 0 0 +2429 405 1 5 1 -0.35787517379655337 13.660665042163362 0.25301317336882634 0 0 0 +3758 0 0 0 2 -2.6232214872855204 9.664046960368276 5.048737536310987 0 0 0 +2419 404 1 1 1 -4.589781046137464 9.647576815747605 0.20564357426617827 0 0 0 +2571 429 1 3 1 -1.208302498146354 5.89922277880321 6.64660025119497 0 0 0 +2575 430 1 1 1 5.2617888073946615 6.662748319979172 7.004847328864338 0 0 0 +2580 430 1 6 1 4.476809754937908 7.535739220879777 6.0429444463312 0 0 0 +2428 405 1 4 1 0.985317543685191 12.956047457266893 0.46404040359096127 0 0 0 +2620 437 1 4 1 0.1881702089848038 15.351451398688909 5.950032591208135 0 0 0 +2621 437 1 5 1 -0.14239621638930203 16.775148046286475 5.630356688206734 0 0 0 +2623 438 1 1 1 4.31254902242513 12.509457380292915 6.071118399184739 0 0 0 +2624 438 1 2 1 5.4472804477113925 13.421777293134678 6.436149887909582 0 0 0 +2625 438 1 3 1 5.584360674977216 13.557976588256421 7.974343783544107 0 0 0 +2626 438 1 4 1 5.709641598104475 12.220891477111623 8.646577614357566 0 0 0 +2628 438 1 6 1 4.364664420768955 11.19165421751971 6.843414073858184 0 0 0 +3681 0 0 0 2 1.1693360020795969 9.560016290507802 5.186524025632428 0 0 0 +3776 0 0 0 2 4.932224465825521 10.468216445571375 2.785060596258491 0 0 0 +2433 406 1 3 1 5.702976919265073 14.88752232116754 2.3653272806627093 0 0 0 +2434 406 1 4 1 4.281682952483105 14.493764985071387 1.9202456799339342 0 0 0 +2432 406 1 2 1 5.6822567878462475 16.230930075286548 3.058342799916272 0 0 0 +2389 399 1 1 1 14.015948725429862 8.623728717550136 1.7497463698272864 0 0 0 +2394 399 1 6 1 13.619255630940119 9.045288680264857 3.148616528202586 0 0 0 +2584 431 1 4 1 10.302296247197269 7.499775375378401 7.363262806955685 0 0 0 +3720 0 0 0 2 9.322272689743317 8.44545734235013 2.6130570412399177 0 0 0 +2441 407 1 5 1 10.789283770700271 13.380069261239754 2.1505327297011925 0 0 0 +2442 407 1 6 1 11.534541858328526 12.068024157934524 2.240975377203321 0 0 0 +2629 439 1 1 1 8.741334837409042 11.547863027965075 5.033808992025371 0 0 0 +2631 439 1 3 1 8.773784108534816 10.710078748456825 7.404459991747906 0 0 0 +2632 439 1 4 1 9.266061732716793 12.017105145791046 7.959956415782492 0 0 0 +2633 439 1 5 1 10.081689090707993 12.639596810034504 6.872767474843109 0 0 0 +2634 439 1 6 1 9.297248092457394 12.817348151796354 5.571478866618968 0 0 0 +3867 0 0 0 2 14.122835058488963 13.063582657504938 4.545552525106746 0 0 0 +2445 408 1 3 1 16.969727855208337 13.418227674015318 1.6081434624089115 0 0 0 +2440 407 1 4 1 11.277772585822959 14.231835402405894 0.9989024208600343 0 0 0 +2390 399 1 2 1 12.903216941346846 7.851872995444273 1.0795164975925937 0 0 0 +2446 408 1 4 1 16.21070729464802 12.132753170551746 1.5810343682128973 0 0 0 +2437 407 1 1 1 11.446435979770447 11.278724900630232 0.9579385403865798 0 0 0 +2630 439 1 2 1 7.960326085962802 10.818793357491884 6.099371218811063 0 0 0 +2393 399 1 5 1 13.273961444336651 7.79934845521959 3.9573167933240074 0 0 0 +2595 433 1 3 1 22.64133943145198 13.253530182777682 7.675367654329214 -1 0 0 +2405 401 1 5 1 21.95400006460725 14.175393652992192 0.864740059882504 -1 0 0 +2911 486 1 1 1 6.4645799557215184 0.9250470991307991 19.396975909084627 0 0 0 +3687 0 0 0 2 23.1090867167327 10.019215372932345 3.39249833180869 -1 0 0 +2444 408 1 2 1 18.06333395871974 13.342236171853557 0.5647041481780756 0 0 0 +2594 433 1 2 1 23.437314081395012 12.119488114973175 7.051089103592973 -1 0 0 +2635 440 1 1 1 18.358632607879496 11.52564159219604 7.4228336109076265 0 0 0 +2636 440 1 2 1 17.077675871811824 11.210557816942485 6.6921239601804094 0 0 0 +2637 440 1 3 1 17.110131933228562 11.809432539209023 5.316888818883251 0 0 0 +2638 440 1 4 1 18.280646217349293 11.366940736977773 4.494586920815423 0 0 0 +2639 440 1 5 1 19.56461238711114 11.68810614671981 5.247454791574985 0 0 0 +2640 440 1 6 1 19.543968834809622 11.064799581245982 6.638122412805696 0 0 0 +3744 0 0 0 2 20.441893600905022 10.810401254003898 1.2910749204803544 0 0 0 +3712 0 0 0 2 19.866128783711588 15.209596415108662 4.166617519751968 -1 0 0 +3787 0 0 0 2 20.170451089066358 16.83875721716127 7.891193397966874 0 0 0 +2406 401 1 6 1 23.300057216349995 14.349246766770582 1.5937540653246718 -1 0 0 +776 130 1 2 1 -16.310812447938122 22.36998754803996 1.6032642491721496 0 -1 0 +2452 409 1 4 1 -23.817996394084023 18.122480205829827 1.781388810829529 0 0 0 +2643 441 1 3 1 -22.872458699732633 18.425444193136833 7.130615492153475 0 0 0 +2645 441 1 5 1 -22.472328161258606 20.867456129220958 7.176161669568335 0 0 0 +2647 442 1 1 1 -16.917861256611122 15.425785674042888 5.222924422725694 0 0 0 +2648 442 1 2 1 -17.57323226469019 16.696496722531045 4.76674949945784 0 0 0 +2649 442 1 3 1 -18.459813680392706 17.25073808522496 5.851160322861977 0 0 0 +2650 442 1 4 1 -17.70354630974405 17.435798227368885 7.176551401969817 0 0 0 +2651 442 1 5 1 -17.148532715488244 16.079370862101477 7.572562886544578 0 0 0 +967 162 1 1 1 -19.396566847215144 22.414527882522556 5.932785816312893 0 -1 0 +968 162 1 2 1 -18.895457515500365 22.999952260522324 7.253148554394596 0 -1 0 +3729 0 0 0 2 -20.22388668222041 18.472604933903032 2.2697301898042013 0 0 0 +2641 441 1 1 1 -21.900672286409446 19.57616139754806 5.209232380396206 0 0 0 +2642 441 1 2 1 -22.749355598396313 18.387235218296485 5.6203563379338854 0 0 0 +2646 441 1 6 1 -22.551609590597593 20.83890918616303 5.692306478510428 0 0 0 +2458 410 1 4 1 -17.1358791380587 17.51017069578397 0.465797823266317 0 0 0 +972 162 1 6 1 -19.493240011503573 23.49107839202065 4.868564461026394 0 -1 0 +771 129 1 3 1 -22.625856352486014 21.83272418793565 0.059432088883730354 0 -1 0 +777 130 1 3 1 -17.791140360184734 22.23238256320437 1.5018757699510108 0 -1 0 +2453 409 1 5 1 -23.159788951444245 17.468692406278603 0.5904869749348832 0 0 0 +969 162 1 3 1 -17.635067405705833 23.860093286839856 7.099781382501291 0 -1 0 +778 130 1 4 1 -18.18638479583466 21.199087977833514 0.47784208405854534 0 -1 0 +2466 411 1 6 1 -11.597934316005908 15.651112823139334 0.4489325434241057 0 0 0 +784 131 1 4 1 -10.41663677764666 22.809083342926424 1.7625647320559854 0 -1 0 +3713 0 0 0 2 -16.08399234635565 19.90395312971815 4.444094743679036 0 0 0 +786 131 1 6 1 -8.62064848341998 23.748235165086435 0.32859748450111903 0 -1 0 +2457 410 1 3 1 -15.684627371750299 17.55161323346871 0.8798153984276068 0 0 0 +2653 443 1 1 1 -10.350725767774852 20.568250788179423 4.851313959142827 0 0 0 +2654 443 1 2 1 -11.787101665660554 20.28521378365341 5.20628037897677 0 0 0 +2655 443 1 3 1 -12.276506001589238 18.85401382061258 5.03796357273805 0 0 0 +2656 443 1 4 1 -11.373786648435956 17.98303513858105 5.833927882125596 0 0 0 +2657 443 1 5 1 -9.87365784029142 18.168375055750428 5.552821817052994 0 0 0 +2658 443 1 6 1 -9.492417034972352 19.611002179654776 5.677981052717442 0 0 0 +3764 0 0 0 2 -13.321667254538923 20.35952720470267 1.7014018935468318 0 0 0 +783 131 1 3 1 -11.418261147127145 23.497825031461275 0.8333189794875507 0 -1 0 +1357 227 1 1 1 -11.52898961358575 23.665231914140897 15.15259463631768 0 -1 0 +2402 401 1 2 1 -23.595675043986546 12.499971089967586 0.20632181258611276 0 0 0 +980 164 1 2 1 -7.737632649643463 22.586933433839178 6.671784810807122 0 -1 0 +2467 412 1 1 1 -5.491745716330817 18.750537626118046 0.6033757087369813 0 0 0 +2617 437 1 1 1 -1.8123073859040162 16.80602956530972 7.421947490204322 0 0 0 +984 164 1 6 1 -6.181593832172043 23.635121648790317 5.231169537540818 0 -1 0 +2471 412 1 5 1 -5.935558571399076 20.117729510998632 2.601738585310157 0 0 0 +3481 0 0 0 2 -3.447025474008802 16.348483375651362 2.9892001403258166 0 0 0 +2468 412 1 2 1 -6.686615886893716 17.875058187161628 0.9524448896813762 0 0 0 +2469 412 1 3 1 -7.041433910906809 17.829149658167257 2.4376804032168566 0 0 0 +2470 412 1 4 1 -7.153233592461567 19.254698375764857 2.9718859200100627 0 0 0 +2659 444 1 1 1 -5.694866393092249 17.313172984668093 6.639233215963149 0 0 0 +2660 444 1 2 1 -5.719445916730937 16.05627612535673 7.5069049276315765 0 0 0 +2663 444 1 5 1 -5.646042051761637 18.696670809778922 8.664778513921258 0 0 0 +2664 444 1 6 1 -6.386715249704081 18.413643541199274 7.3773724506081875 0 0 0 +979 164 1 1 1 -7.1321601577963465 22.472565507232627 5.299543807305191 0 -1 0 +3752 0 0 0 2 -3.41398507672448 20.160223508840872 4.798652591985838 0 0 0 +2477 413 1 5 1 -0.03264912467773538 18.902872790851074 2.617510257488447 0 0 0 +981 164 1 3 1 -6.6830130895259074 22.50908759665778 7.784856997747558 0 -1 0 +791 132 1 5 1 -3.266868273153482 22.943086213580337 1.9129670992644645 0 -1 0 +2472 412 1 6 1 -5.6794510180813695 20.146503198934397 1.1100974086394262 0 0 0 +2476 413 1 4 1 0.4830524447776633 17.517640875510573 2.2681184398629175 0 0 0 +3691 0 0 0 2 -0.3692854919001036 22.4321419175702 4.681687408086463 0 0 0 +792 132 1 6 1 -4.1205679611748005 23.271888688459967 0.6406728416898443 0 -1 0 +2670 445 1 6 1 -2.1805760196240613 20.300789693981383 8.593130071355397 0 0 0 +2665 445 1 1 1 -1.6568915693158284 21.70506121146848 8.539017864203513 0 0 0 +2478 413 1 6 1 -1.0683751888891289 19.403074834478968 1.6434475457165454 0 0 0 +1559 260 1 5 1 -3.6995786413729723 1.4943464746537043 21.837978050371177 0 0 -1 +2622 437 1 6 1 -0.551709379930364 17.457648908145657 6.857002333821722 0 0 0 +2431 406 1 1 1 4.723238200557369 16.12496486526211 4.219801405431612 0 0 0 +2435 406 1 5 1 3.305205151303966 14.455184219706197 3.0990639149896086 0 0 0 +2436 406 1 6 1 3.2978766736347507 15.796828857771995 3.8208335906924384 0 0 0 +2338 390 1 4 1 2.682557781801712 1.2183287085508008 0.4294502129782542 0 0 0 +2475 413 1 3 1 0.8648225353940533 17.46420851839786 0.7734763178523647 0 0 0 +2484 414 1 6 1 8.037754849678734 20.99328224893187 0.7029620329152744 0 0 0 +2479 414 1 1 1 6.696412366555433 21.581668041828703 1.0069731754418536 0 0 0 +2480 414 1 2 1 5.631695158621245 20.712530794456207 0.3815266224068197 0 0 0 +1376 230 1 2 1 7.2022432514436066 23.901569941743524 20.768656990362782 0 -1 0 +2482 414 1 4 1 7.089952588942955 18.74659148685836 1.0739801357988357 0 0 0 +2671 446 1 1 1 4.1720747152310675 19.916561249231602 3.794859936650766 0 0 0 +2672 446 1 2 1 2.8350111828868814 20.271023991319705 4.390221470072749 0 0 0 +2673 446 1 3 1 2.3441261278720593 19.277440852619744 5.423028647226175 0 0 0 +2674 446 1 4 1 3.40841029424659 19.171218590009815 6.482867671994969 0 0 0 +2675 446 1 5 1 4.76415688765765 18.920054287471075 5.9063588028278255 0 0 0 +2676 446 1 6 1 5.25822524972256 19.8838162117144 4.834873543131497 0 0 0 +2713 453 1 1 1 -1.3381789706478124 0.21522988069195453 13.966425716708725 0 0 0 +3731 0 0 0 2 2.96668938233854 23.03875962075936 7.390679377867615 0 0 0 +3071 512 1 5 1 17.302296680880143 16.526726738105893 15.802590240277228 0 0 0 +2473 413 1 1 1 -0.6303302885000387 19.488831528987344 0.1811635837452739 0 0 0 +798 133 1 6 1 1.8404705072381564 22.38219430043134 1.2258592006950848 0 -1 0 +797 133 1 5 1 0.4235845663574673 22.89870473981924 1.1679035973253278 0 -1 0 +2398 400 1 4 1 17.932309464860438 7.402100926089218 0.3345157407724138 0 0 0 +3692 0 0 0 2 14.142894550053365 16.1526403626717 2.3509718547035963 0 0 0 +2681 447 1 5 1 11.51376541281416 16.46936870314767 4.987026864366064 0 0 0 +2483 414 1 5 1 8.296725702004778 19.61748344965384 1.232724889457203 0 0 0 +2488 415 1 4 1 12.028887351528086 18.157561254790476 0.3459507260104857 0 0 0 +2677 447 1 1 1 10.072265233509098 18.144040607125923 3.8626947672812473 0 0 0 +2678 447 1 2 1 9.147435256230498 18.190264412229606 5.110137386411383 0 0 0 +2679 447 1 3 1 9.155543398570781 16.791954714106936 5.814262858180785 0 0 0 +2680 447 1 4 1 10.578123654464777 16.452504413108038 6.210335715738366 0 0 0 +2682 447 1 6 1 11.51596345623278 17.804426906350702 4.257396417148141 0 0 0 +3693 0 0 0 2 13.82122047459551 21.981698353062793 7.039419205724617 0 0 0 +3743 0 0 0 2 14.361362952075273 21.01329893956758 2.9788581012499193 0 0 0 +3748 0 0 0 2 10.948456661205292 21.872306228405417 4.63498134285149 0 0 0 +3759 0 0 0 2 10.302387637288112 21.265153971184983 8.415509078605453 0 0 0 +2683 448 1 1 1 16.135238375435268 16.38787486850084 6.984753768779626 0 0 0 +2684 448 1 2 1 14.834492265849718 17.21142889641214 7.260255367337623 0 0 0 +2495 416 1 5 1 17.797067994935848 16.83240531814884 0.7678475517673173 0 0 0 +2685 448 1 3 1 15.29501092940899 18.677657383577234 7.218547405828781 0 0 0 +2688 448 1 6 1 16.5651930722164 16.535637912446607 5.5756536638051 0 0 0 +2494 416 1 4 1 17.128755063229114 18.00516259552828 1.4368886223541084 0 0 0 +815 136 1 5 1 18.653615849288954 22.901650466425842 1.298768731210412 0 -1 0 +2451 409 1 3 1 22.648555753957222 18.19294921753214 1.5274354393438763 -1 0 0 +2450 409 1 2 1 22.209708335509813 18.95855883943733 0.27157804217042447 -1 0 0 +3818 0 0 0 2 8.976602651328516 13.639860218341187 23.82457175763425 0 0 0 +2686 448 1 4 1 15.824933249338153 18.954847294294446 5.827345154913709 0 0 0 +2687 448 1 5 1 16.96969433466443 18.025531376454065 5.342312616673285 0 0 0 +3797 0 0 0 2 19.417110164239034 20.80753312515069 21.694733783419657 0 0 0 +1005 168 1 3 1 18.664672157476875 21.442601514285165 7.485416473820506 0 -1 0 +1006 168 1 4 1 17.28556336687409 21.9221364052162 7.931488641848531 0 -1 0 +3737 0 0 0 2 22.008418741121407 21.88794322372437 2.390826316251537 0 0 0 +3542 0 0 0 2 19.756256146660437 19.28821359059564 3.1902009377405895 0 0 0 +3854 0 0 0 2 21.900672901214556 19.89754623359954 5.83570094061655 0 0 0 +2523 421 1 3 1 0.2762306214756022 0.46668290332782625 2.995714779206226 0 0 0 +2714 453 1 2 1 -0.4955577135094688 0.07976144206176115 15.205910569762695 0 0 0 +811 136 1 1 1 17.77097727321707 22.519387796156494 3.5945053098934587 0 -1 0 +1004 168 1 2 1 19.47129839817886 22.542767991155852 6.893340257831422 0 -1 0 +1192 199 1 4 1 13.899699620498723 23.60173433099953 12.07404981195903 0 -1 0 +816 136 1 6 1 17.47986026398235 22.44004363146259 2.1058566249542405 0 -1 0 +1612 269 1 4 1 -2.066884179239949 7.293499544844945 23.967942218560726 0 0 -1 +2887 482 1 1 1 -21.505511433652387 0.16489802271385767 15.516551787633935 0 0 0 +2891 482 1 5 1 -19.99567144787441 0.9529940654031855 13.756358652476115 0 0 0 +2695 450 1 1 1 -20.535365332107535 1.7162042847986771 8.753465367856167 0 0 0 +2698 450 1 4 1 -18.034857959745743 1.3411712898439963 10.37598120175633 0 0 0 +2699 450 1 5 1 -18.318833704625135 2.588872406022847 9.548719459013864 0 0 0 +2743 458 1 1 1 -18.47155555151711 8.472130168049556 8.837914741189813 0 0 0 +2744 458 1 2 1 -19.461216916547635 7.800511053720085 9.808487369422078 0 0 0 +2745 458 1 3 1 -19.230960099371586 6.323497270798917 9.877845453268137 0 0 0 +2746 458 1 4 1 -17.822495152487782 6.0303208974754305 10.270900313176107 0 0 0 +2747 458 1 5 1 -16.832074700466546 6.6515115566902985 9.341856906432296 0 0 0 +3684 0 0 0 2 -22.710360164204126 3.7668278894353104 11.783342555833807 0 0 0 +3802 0 0 0 2 -22.211169206149393 5.328113027609025 8.036581888786372 0 0 0 +2892 482 1 6 1 -21.17443097688008 1.3174905476390275 14.592610776144976 0 0 0 +3820 0 0 0 2 -18.81369334620508 4.310980730541335 13.27875375129881 0 0 0 +3724 0 0 0 2 -22.337309845832046 7.453357267931412 12.084519097831366 0 0 0 +2939 490 1 5 1 -21.661690965332017 4.530985495089049 15.948780977357028 0 0 0 +2938 490 1 4 1 -20.82595552509383 5.8185864865460575 15.982550439578972 0 0 0 +1616 270 1 2 1 7.374687756393483 9.77134468444574 23.901406839606953 0 0 -1 +2696 450 1 2 1 -20.35128710363221 0.494000754973561 9.653465249716987 0 0 0 +2700 450 1 6 1 -19.807732271501294 2.866768928714652 9.420313347643674 0 0 0 +2890 482 1 4 1 -18.89310528370242 0.6457338562480023 14.76858281317036 0 0 0 +2561 427 1 5 1 -12.762202489196923 6.562651693787599 7.372524420514343 0 0 0 +2706 451 1 6 1 -12.217721407648606 0.7587263185595724 12.400689802901235 0 0 0 +2701 451 1 1 1 -12.840707320792006 1.5035206888593189 11.214999835696101 0 0 0 +3807 0 0 0 2 -15.442793075894022 2.324337658396415 14.329506388040988 0 0 0 +2749 459 1 1 1 -12.550676948048219 5.733077998358207 13.6936721354544 0 0 0 +2750 459 1 2 1 -12.734106182467661 5.52914631520879 12.214713590650806 0 0 0 +2751 459 1 3 1 -14.122126734311305 4.9562051321608385 12.019669885630362 0 0 0 +2752 459 1 4 1 -15.246317013266447 5.913894655967139 12.394247031456125 0 0 0 +2753 459 1 5 1 -15.024837928256032 6.482563365252924 13.79514840218865 0 0 0 +2754 459 1 6 1 -13.540423002358564 6.8237801350150775 14.097198705162633 0 0 0 +3799 0 0 0 2 -10.868077540985778 3.175428257235172 8.103808208451815 0 0 0 +3826 0 0 0 2 -9.429131621157111 3.1332240987276836 12.540564992044187 0 0 0 +3829 0 0 0 2 -14.964568801300585 3.6681588714373943 8.396543640760118 0 0 0 +3730 0 0 0 2 -9.75517031494828 7.9714606404507 12.05175820490843 0 0 0 +2702 451 1 2 1 -14.2462200612127 1.0219361544787282 10.935402907766711 0 0 0 +2560 427 1 4 1 -13.584805613393359 7.5270551087331885 6.561005658129341 0 0 0 +3690 0 0 0 2 -3.0011793774437465 8.166873324816684 8.521815359625624 0 0 0 +3762 0 0 0 2 -7.3246648301414305 2.5620778616495175 9.830329447269422 0 0 0 +1656 276 1 6 1 -7.298489967851898 14.863826217520801 23.428283702707184 0 0 -1 +2755 460 1 1 1 -6.555545964399051 5.850492223819733 11.289828648385637 0 0 0 +2756 460 1 2 1 -6.647026106922536 5.555233969991809 12.78655035553617 0 0 0 +2757 460 1 3 1 -5.528404666024432 4.6512080703949 13.280805647095585 0 0 0 +2758 460 1 4 1 -4.166620913844651 5.170463084357802 12.963916847452229 0 0 0 +2759 460 1 5 1 -4.005040319951283 5.512741953435065 11.500273829331025 0 0 0 +2760 460 1 6 1 -5.1572526300964485 6.381562834621202 11.02480836537919 0 0 0 +2765 461 1 5 1 0.45510310824619626 5.239348596453048 11.769354041870153 0 0 0 +2766 461 1 6 1 0.005817724106163878 5.301094926191821 13.267229578634831 0 0 0 +3685 0 0 0 2 -3.2604392770549877 1.8983415814566849 11.220327915239357 0 0 0 +3786 0 0 0 2 -1.2043612574805247 2.5138669864480567 8.10890702307316 0 0 0 +3763 0 0 0 2 -3.1507071333968244 7.688812174659126 15.560698258434215 0 0 0 +3728 0 0 0 2 -2.592145657395658 3.7212941687192718 16.009918416906213 0 0 0 +2573 429 1 5 1 1.0598530362729743 5.222670341389135 7.6091359419118225 0 0 0 +2720 454 1 2 1 5.221276644033192 1.212345605605334 11.285105450914203 0 0 0 +1358 227 1 2 1 -12.84873626285121 23.2899693439894 15.76255864367073 0 -1 0 +2721 454 1 3 1 6.3539725170963965 0.8458096008166948 12.184023204502902 0 0 0 +2761 461 1 1 1 -0.19925795583853312 3.897491095928267 13.823310687933539 0 0 0 +2722 454 1 4 1 7.711776281965277 0.7302061525807756 11.491704875884846 0 0 0 +2762 461 1 2 1 1.0982103869510869 3.236966108103538 14.00936295244587 0 0 0 +2763 461 1 3 1 1.8620803738115344 3.2240266625635323 12.686026417134252 0 0 0 +2764 461 1 4 1 1.7866893402293025 4.457086862583532 11.797392822704222 0 0 0 +2767 462 1 1 1 6.559376194310278 6.361167708508603 12.865943012833087 0 0 0 +2768 462 1 2 1 5.282401093735934 5.545473480611275 13.000139155356885 0 0 0 +2769 462 1 3 1 4.927042464165006 5.222635001889214 14.433945001511212 0 0 0 +2770 462 1 4 1 4.807287630337468 6.574673407494183 15.117058940188434 0 0 0 +2771 462 1 5 1 6.052920447563895 7.4089698531593635 15.054548945740652 0 0 0 +2772 462 1 6 1 6.411677166084276 7.690716849489207 13.613915753644578 0 0 0 +3804 0 0 0 2 4.024830273700459 4.0524686763856215 9.260667206291098 0 0 0 +3851 0 0 0 2 1.790852391558609 0.828458862429242 9.201264981430821 0 0 0 +2724 454 1 6 1 6.383726540851428 0.006650557715130338 9.444179137382262 0 0 0 +2538 423 1 6 1 9.741945162802095 2.0403159463987706 6.966992948149719 0 0 0 +2921 487 1 5 1 10.69947310671578 0.6379614279402753 15.048092427954415 0 0 0 +2719 454 1 1 1 5.121583058470544 0.13364117333412323 10.251070274354888 0 0 0 +2729 455 1 5 1 11.868022730163396 1.2276068830067146 10.757064627214435 0 0 0 +2585 431 1 5 1 10.0870155154378 7.398012157912539 8.873501675320474 0 0 0 +2586 431 1 6 1 11.193502625326484 6.659408768393273 9.66435475694363 0 0 0 +3717 0 0 0 2 7.961991654149978 4.256691223532401 9.883287029152315 0 0 0 +2773 463 1 1 1 9.812561670497134 6.671974873809705 14.675528981624124 0 0 0 +2777 463 1 5 1 11.770531060658087 7.277976555363681 13.301004590099241 0 0 0 +2778 463 1 6 1 10.265517563607828 7.335770847941752 13.380596035696986 0 0 0 +3739 0 0 0 2 7.835726025796501 3.56653748722281 15.304896331959487 0 0 0 +3832 0 0 0 2 10.138829764090127 3.8784142930974204 12.623777037725205 0 0 0 +3856 0 0 0 2 13.700126127014455 3.14206049527473 13.711605608867004 0 0 0 +3855 0 0 0 2 15.201044413292779 5.112926796505686 10.548067540837387 0 0 0 +2776 463 1 4 1 12.406981974084527 7.857145940353623 14.569520231915028 0 0 0 +2730 455 1 6 1 13.170092425542208 1.384171274489147 10.001868133180661 0 0 0 +2694 449 1 6 1 23.415062699612125 2.3387869946150315 9.080700364908715 -1 0 0 +2736 456 1 6 1 19.02449832188331 0.2282206633236035 13.203229208395397 0 0 0 +2731 456 1 1 1 18.716843720197403 1.5229848802315542 13.913547605992749 0 0 0 +2733 456 1 3 1 17.44681615067323 2.2775992955594906 11.975437979709323 0 0 0 +3741 0 0 0 2 23.3388595910034 0.8612920591142005 13.024103756306566 -1 0 0 +2737 457 1 1 1 20.669956039562685 7.199181665894213 12.479966984095535 -1 0 0 +2741 457 1 5 1 21.118775655770236 5.012521888236886 11.506903708692239 -1 0 0 +2742 457 1 6 1 20.03263508692162 5.930623691980503 11.944782446596097 -1 0 0 +2739 457 1 3 1 22.379267520265802 7.102482190377134 10.686299570482879 -1 0 0 +2740 457 1 4 1 21.839678172469203 5.705446843401993 10.377039393806893 -1 0 0 +2734 456 1 4 1 17.742428082631147 0.9683644698694551 11.279167846408866 0 0 0 +2735 456 1 5 1 19.056285181698765 0.4001040658158865 11.709472895863598 0 0 0 +2738 457 1 2 1 21.36683286636026 7.966661972307045 11.395477568549927 -1 0 0 +2780 464 1 2 1 15.850500656432597 8.671131262593438 11.866869921821714 0 0 0 +2781 464 1 3 1 17.300035276823365 8.397420255147518 12.288477649110712 0 0 0 +2782 464 1 4 1 17.97185840486198 9.725846724165127 12.645144983772628 0 0 0 +3777 0 0 0 2 18.883554305980432 4.382764045848973 8.65665185540875 0 0 0 +3745 0 0 0 2 18.60398868507477 8.184855097655104 8.946179935560993 0 0 0 +2976 496 1 6 1 18.152224475561752 5.210523697177303 15.383682066580127 0 0 0 +2975 496 1 5 1 17.182494609967804 5.834013589468423 14.373688979764038 0 0 0 +2934 489 1 6 1 23.668511382944008 7.001532162343325 15.999173742141515 -1 0 0 +2732 456 1 2 1 17.393628661439596 2.1131788582618762 13.484934366628023 0 0 0 +2689 449 1 1 1 22.08918964584443 1.9717495084620245 9.786727789670262 -1 0 0 +2690 449 1 2 1 21.38197813899397 0.9465670008402163 8.94931549197664 -1 0 0 +982 164 1 4 1 -5.408008555451088 23.329261306875754 7.577368128788105 0 -1 0 +2748 458 1 6 1 -17.084234813211943 8.149062386364452 9.285745100580709 0 0 0 +3714 0 0 0 2 -22.62805627451501 9.501345912694257 8.699968963922853 0 0 0 +2788 465 1 4 1 -23.42546943919261 11.84474783057923 14.698129783127039 0 0 0 +2791 466 1 1 1 -18.539712260548075 11.649057538170986 10.878097076541168 0 0 0 +2792 466 1 2 1 -19.15646906452176 12.661589773319246 9.881503973961289 0 0 0 +2793 466 1 3 1 -20.667170699189615 12.417067054857162 9.73839852114453 0 0 0 +2794 466 1 4 1 -21.370697472573386 12.42664967606241 11.086199037606518 0 0 0 +2795 466 1 5 1 -20.780300221635432 11.399111539069718 12.028100457581807 0 0 0 +2796 466 1 6 1 -19.277579643210807 11.67964177768626 12.237101300168096 0 0 0 +3705 0 0 0 2 -20.8670896391883 15.678515258309591 8.522930083024372 0 0 0 +3808 0 0 0 2 -21.890579306550404 15.067667855899922 15.508524220702148 0 0 0 +3842 0 0 0 2 -18.49133337122044 8.20362395300825 13.266256199368554 0 0 0 +2789 465 1 5 1 -23.57108990425428 10.483481091411571 14.090959152648836 0 0 0 +2835 473 1 3 1 -22.804253785789243 16.42211663125299 12.030842472201062 0 0 0 +2843 474 1 5 1 -18.043383582597606 15.419692230693123 14.339468020057204 0 0 0 +2844 474 1 6 1 -16.83888934368053 16.287341326035655 14.09363809708512 0 0 0 +2842 474 1 4 1 -19.063674968316864 15.604098952661648 13.227933052759317 0 0 0 +2557 427 1 1 1 -11.984273491406798 8.535586524126222 8.692276393244022 0 0 0 +2562 427 1 6 1 -12.628182770684505 7.201183035520063 8.743862866710504 0 0 0 +3721 0 0 0 2 -9.465986415795644 10.733251120241256 7.925462707330098 0 0 0 +3682 0 0 0 2 -14.624489391799582 12.955610253515854 9.408105492639717 0 0 0 +2797 467 1 1 1 -11.0727750213253 11.171688038872079 11.587518867240838 0 0 0 +2798 467 1 2 1 -11.82289972121179 11.274019950965116 12.886331552675475 0 0 0 +2799 467 1 3 1 -11.73834479970242 12.61581521791669 13.602299263249115 0 0 0 +2800 467 1 4 1 -11.767494884547409 13.77194078121463 12.623539479610034 0 0 0 +2801 467 1 5 1 -10.791623803968422 13.646831264380399 11.41897026694284 0 0 0 +2802 467 1 6 1 -11.172808415104067 12.384129190842279 10.647256720603238 0 0 0 +3753 0 0 0 2 -15.352146730437525 10.535971248449735 11.636695137597346 0 0 0 +3780 0 0 0 2 -16.212116614620406 11.933558917092318 14.707614310209406 0 0 0 +3000 500 1 6 1 -8.657087693793844 10.952769365914186 14.980393305835065 0 0 0 +3766 0 0 0 2 -9.309689587847032 15.457624482030889 8.502993441849345 0 0 0 +2847 475 1 3 1 -12.473731444859952 16.411831948164057 9.832574057551442 0 0 0 +3831 0 0 0 2 -11.727739059685426 9.03643031735344 16.198666090729077 0 0 0 +3042 507 1 6 1 -11.857222303172108 16.208101115790274 15.371135324959713 0 0 0 +2803 468 1 1 1 -6.901659229630877 10.076983097391098 10.798238180422487 0 0 0 +2804 468 1 2 1 -5.418174309071572 10.101401811639889 10.537487717565604 0 0 0 +2805 468 1 3 1 -5.178276404295018 11.159915402254613 9.506016960455854 0 0 0 +2806 468 1 4 1 -5.669387014683475 12.475702678728041 10.054137300003 0 0 0 +2807 468 1 5 1 -7.161184406882768 12.577905427971539 10.331269566807876 0 0 0 +2808 468 1 6 1 -7.522564282876112 11.387294453768547 11.203682157065188 0 0 0 +2814 469 1 6 1 -0.1699666369422205 11.511438439557267 8.089506053467126 0 0 0 +3719 0 0 0 2 -3.444354507519798 15.198909000718237 11.869714676772073 0 0 0 +3796 0 0 0 2 -2.5100458414918267 9.009448187066491 12.301478725349522 0 0 0 +3852 0 0 0 2 -5.652745695291809 12.795393465205246 13.778071020718528 0 0 0 +2813 469 1 5 1 -1.226359727116043 10.981195152706748 9.07518847150511 0 0 0 +2812 469 1 4 1 -1.9726789238099038 12.035528832454958 9.935533115374858 0 0 0 +2860 477 1 4 1 -0.11909249135368781 15.289195230794414 14.699083994047665 0 0 0 +2861 477 1 5 1 -0.025028795842411418 14.9919543126923 13.208945822842601 0 0 0 +3848 0 0 0 2 -7.250553566658742 14.797232268819464 17.043685004621672 0 0 0 +3001 501 1 1 1 -2.513229994228591 12.107213858714175 16.5886474065622 0 0 0 +2999 500 1 5 1 -7.935203498997073 9.590771823690824 15.041045485847173 0 0 0 +3006 501 1 6 1 -2.198850797318235 11.512980177470645 15.283692903540015 0 0 0 +3005 501 1 5 1 -0.991529959053582 10.594351251450309 15.32330935298981 0 0 0 +2627 438 1 5 1 4.503226861361853 11.37232625957693 8.338361426321157 0 0 0 +2809 469 1 1 1 0.6993660554387529 12.45075172363114 8.884519113477527 0 0 0 +3697 0 0 0 2 2.880642452231735 15.497446098250524 9.104793928856862 0 0 0 +2810 469 1 2 1 0.470736236527657 12.384345454002956 10.433607896288173 0 0 0 +3702 0 0 0 2 1.1505997756691764 9.46987654341959 11.851872340335953 0 0 0 +2811 469 1 3 1 -0.9748829807769451 12.790070102422625 10.763659968508922 0 0 0 +2815 470 1 1 1 3.4957413960142487 12.888996841713746 12.483605096147512 0 0 0 +2816 470 1 2 1 4.460137035848165 13.688549614078381 11.693022452820395 0 0 0 +2817 470 1 3 1 5.839617493306175 13.42098280731625 12.183410299879114 0 0 0 +2818 470 1 4 1 6.159482445593063 11.976160865323337 12.022435438549916 0 0 0 +2819 470 1 5 1 5.111514100192983 11.051090380680291 12.617451177885375 0 0 0 +2820 470 1 6 1 3.7202071863638677 11.440846106292184 12.204241085120469 0 0 0 +3718 0 0 0 2 3.2605472921078893 7.796827720839493 9.306521523682646 0 0 0 +3806 0 0 0 2 3.7761665167697376 10.536762181590795 16.2553203658226 0 0 0 +2774 463 1 2 1 10.413512227380677 7.18839270711094 15.975815742296799 0 0 0 +3725 0 0 0 2 13.025436497681818 9.892756974322287 6.819173481377648 0 0 0 +3785 0 0 0 2 8.989588678876872 14.889205301528428 10.891837777535475 0 0 0 +2821 471 1 1 1 10.094472721063536 10.744774483129834 12.411648122147305 0 0 0 +2822 471 1 2 1 10.909961388393992 11.897088032698418 13.026797310129224 0 0 0 +2823 471 1 3 1 12.370914552367818 11.702852376041077 12.76201272034249 0 0 0 +2824 471 1 4 1 12.667189513900537 11.441457403411501 11.291618874236738 0 0 0 +2825 471 1 5 1 11.805100624175575 10.334666892015798 10.703053744694383 0 0 0 +2826 471 1 6 1 10.320856093182684 10.623747424673963 10.910332947660951 0 0 0 +3765 0 0 0 2 6.677434237172816 8.646550791732425 9.955926404260897 0 0 0 +3749 0 0 0 2 13.048277789372378 14.44180829296044 8.136004152681943 0 0 0 +3732 0 0 0 2 9.387442344503935 15.400539574301826 14.548671958046478 0 0 0 +2870 479 1 2 1 12.809642930904127 15.796060609478321 11.742794115903326 0 0 0 +2871 479 1 3 1 13.508691727430339 15.178999192179477 12.895511075076659 0 0 0 +2775 463 1 3 1 11.93943537135008 7.133082744992675 15.833532664458204 0 0 0 +2779 464 1 1 1 15.746468664774595 9.65148357221299 10.724354653871954 0 0 0 +2784 464 1 6 1 16.423093522368564 10.918855925181607 11.215751610313495 0 0 0 +2783 464 1 5 1 17.897135751450936 10.743705493885004 11.555239314638037 0 0 0 +3788 0 0 0 2 20.978973814485688 10.98921652358322 9.851667284448148 0 0 0 +2787 465 1 3 1 23.223326442130244 12.348811038762541 15.176743776354678 -1 0 0 +2785 465 1 1 1 22.09186326010399 11.028406821728327 13.32294810052783 -1 0 0 +2786 465 1 2 1 22.294524450527565 12.416196981107628 13.97512948115886 -1 0 0 +2790 465 1 6 1 23.434218924365407 10.453393813545754 12.961541735488057 -1 0 0 +2827 472 1 1 1 19.41698781204404 14.187000215653196 10.623148696498633 0 0 0 +2828 472 1 2 1 19.320312756589033 14.182524422813302 12.14556685807309 0 0 0 +2829 472 1 3 1 18.07269183505664 14.92873208979513 12.508136605628176 0 0 0 +2830 472 1 4 1 16.843752157436125 14.51693500125924 11.72885688412534 0 0 0 +2831 472 1 5 1 17.015278480126074 14.68437008321808 10.230293824350284 0 0 0 +2832 472 1 6 1 18.184888783578995 13.85209713095604 9.814646491817873 0 0 0 +3782 0 0 0 2 21.637043016374296 15.857321910361536 14.9194670601076 0 0 0 +3023 504 1 5 1 19.345287768260885 11.798169606662409 15.871363743966485 0 0 0 +2836 473 1 4 1 -23.498637583010197 15.357480502824872 11.21503730600688 0 0 0 +2837 473 1 5 1 23.017890798109963 15.675851933936624 11.212250091365688 -1 0 0 +3024 504 1 6 1 18.16712234411033 10.891000054126446 16.157599841434877 0 0 0 +1160 194 1 2 1 -17.033036913032497 22.90250892208275 10.950440046229255 0 -1 0 +2644 441 1 4 1 -23.243244699857268 19.724283747076335 7.786564840786946 0 0 0 +961 161 1 1 1 23.36949934247233 23.810382771783594 7.604388372015209 -1 -1 0 +1161 194 1 3 1 -17.416516753524117 23.638329944086784 12.228607646442006 0 -1 0 +1681 281 1 1 1 -23.862522036788917 18.05587419859011 23.877391517167524 0 0 -1 +1159 194 1 1 1 -16.46810400448639 21.50774575897036 11.177362509626082 0 -1 0 +3733 0 0 0 2 -19.94671890260385 19.098344654230505 9.624468985623421 0 0 0 +2833 473 1 1 1 23.287090732481865 18.029501393084374 11.667617647096959 -1 0 0 +2834 473 1 2 1 -23.205418905777183 17.883259815362962 11.699619139787451 0 0 0 +2840 474 1 2 1 -17.214750333884204 16.38470211969402 11.667479907971018 0 0 0 +1155 193 1 3 1 -20.830266501836157 23.03863579110523 11.78318632278359 0 -1 0 +3790 0 0 0 2 -18.98978735416808 19.06192050599642 13.36831512997982 0 0 0 +3841 0 0 0 2 -19.23586130827351 22.14858386733807 14.95222972248894 0 0 0 +1156 193 1 4 1 -21.803606934717486 23.941590948503663 12.517731784383399 0 -1 0 +2841 474 1 3 1 -18.404121216661576 15.487018650483444 11.83391812611722 0 0 0 +1154 193 1 2 1 -21.38173918316473 21.615151787304825 11.697416803871706 0 -1 0 +1153 193 1 1 1 -22.656649952839743 21.530507836559444 10.913238318736283 0 -1 0 +2413 403 1 1 1 -13.655223750070554 9.567398323034594 0.04687369288488912 0 0 0 +3774 0 0 0 2 -14.313877756109154 21.34612696326883 7.86022191846882 0 0 0 +1170 195 1 6 1 -10.586466291078443 23.631494387977156 9.005961037600034 0 -1 0 +2839 474 1 1 1 -16.208577962621497 16.0226079484116 12.747876590082297 0 0 0 +1164 194 1 6 1 -15.231887933299344 21.600132015136545 12.057100592125064 0 -1 0 +1163 194 1 5 1 -15.57715587818618 22.28973583449732 13.337492334789822 0 -1 0 +2845 475 1 1 1 -13.956719489148409 18.05919521998479 8.755627386481159 0 0 0 +2846 475 1 2 1 -13.529841230269255 16.601619488795855 8.780713022054988 0 0 0 +2848 475 1 4 1 -12.835116881354367 17.01303897032854 11.199479935656608 0 0 0 +2849 475 1 5 1 -13.183248977864265 18.48002305748804 11.080364931431177 0 0 0 +2850 475 1 6 1 -14.358624786628209 18.579085943514603 10.13137809614562 0 0 0 +1165 195 1 1 1 -10.78667422927766 22.14142229507488 8.947760084047301 0 -1 0 +1166 195 1 2 1 -11.68379551772802 21.741465698603992 10.109421339052025 0 -1 0 +3751 0 0 0 2 -12.318990830498542 19.980533076564043 14.739901302183911 0 0 0 +3814 0 0 0 2 -10.014440412312933 18.785099114396306 9.4850503935679 0 0 0 +3858 0 0 0 2 -8.745332453435772 21.97205508521666 14.738875167326693 0 0 0 +2853 476 1 3 1 -7.671388213767756 16.16132775055025 12.390697272833554 0 0 0 +2851 476 1 1 1 -8.816431615416487 18.198694166488472 13.353391315727464 0 0 0 +2852 476 1 2 1 -9.009681785894893 16.816141716237926 12.734648338423861 0 0 0 +1162 194 1 4 1 -16.182142946201203 23.677223446037413 13.111191873589735 0 -1 0 +1167 195 1 3 1 -11.050478369248149 22.083649133539282 11.482153529356665 0 -1 0 +1168 195 1 4 1 -10.784627953702058 23.567191936759965 11.47024222299356 0 -1 0 +2668 445 1 4 1 -0.5539717071869242 19.80498368043441 10.393418999800314 0 0 0 +2669 445 1 5 1 -1.9887010981807094 19.651635731829078 9.940876657591366 0 0 0 +2859 477 1 3 1 -0.4246811308773247 16.738246498925342 14.933584275215951 0 0 0 +2854 476 1 4 1 -6.816951046345737 16.135985460686186 13.62775086869024 0 0 0 +2661 444 1 3 1 -5.071270965109091 16.255197245640794 8.861171390882431 0 0 0 +2662 444 1 4 1 -5.5918947787776885 17.499282957151152 9.587934798116438 0 0 0 +2667 445 1 3 1 -0.046916011123334316 21.272666033939853 10.355589539443729 0 0 0 +2666 445 1 2 1 -0.1846929838759365 21.890813744276247 8.967648129668392 0 0 0 +3838 0 0 0 2 -3.7563768158691855 18.923039269308376 12.917000257060055 0 0 0 +2855 476 1 5 1 -6.611903653722736 17.524216152822138 14.234738285722395 0 0 0 +2856 476 1 6 1 -7.966978796394102 18.187894086971088 14.598513071502419 0 0 0 +2857 477 1 1 1 0.6007053018601469 17.263735546576182 12.629985687365924 0 0 0 +2858 477 1 2 1 0.4689910622390818 17.664448610838427 14.114774375206602 0 0 0 +3794 0 0 0 2 -1.6321823016698003 21.527345423907917 13.828025191543357 0 0 0 +3825 0 0 0 2 -6.913076050126541 21.023676154009884 11.415783598079818 0 0 0 +3828 0 0 0 2 -3.7174666410414985 22.928169397394413 11.169548259360498 0 0 0 +3839 0 0 0 2 -5.355381867278469 21.992483987235513 15.138298217875432 0 0 0 +2862 477 1 6 1 1.0634908063875728 15.827529582361313 12.584412302372144 0 0 0 +3865 0 0 0 2 3.08215341516462 19.171558643816677 10.017213899571907 0 0 0 +3821 0 0 0 2 6.2488482948458 17.218900497610363 8.240290900442885 0 0 0 +2863 478 1 1 1 6.79961304820846 19.59149595057712 13.443065375896458 0 0 0 +2864 478 1 2 1 7.159142935396734 18.491738650223354 12.446401791954658 0 0 0 +2865 478 1 3 1 6.520579216701831 17.157392310761796 12.828780892859196 0 0 0 +2866 478 1 4 1 5.0147392260592 17.294862480445065 12.835793662646832 0 0 0 +2867 478 1 5 1 4.6597360804146755 18.413842688285047 13.761874896623343 0 0 0 +2868 478 1 6 1 5.2954887746377945 19.713131296351726 13.39761167237 0 0 0 +1183 198 1 1 1 7.045456023195337 23.092691983643192 11.83127389840244 0 -1 0 +3707 0 0 0 2 4.436693414604323 23.381979758204093 16.16219812742204 0 0 0 +3757 0 0 0 2 6.406398212627583 21.07304540658545 9.13668924094629 0 0 0 +3801 0 0 0 2 3.0159518750443755 22.42556640034767 11.652410848888508 0 0 0 +3781 0 0 0 2 2.3009288094332687 20.626342145540733 14.709516599554096 0 0 0 +1184 198 1 2 1 8.333689908765674 22.893724076164922 11.100242599109167 0 -1 0 +3694 0 0 0 2 7.626019728366781 22.44646030708336 16.168065227348077 0 0 0 +1191 199 1 3 1 12.86434652846256 23.20127877585072 13.070691647462413 0 -1 0 +1194 199 1 6 1 13.388003245185182 21.577500123723752 10.780503836395281 0 -1 0 +1157 193 1 5 1 -23.094409709618244 23.877684914453216 11.751794712429694 0 -1 0 +2869 479 1 1 1 13.622685243332723 16.88812090648235 11.092296678774796 0 0 0 +2872 479 1 4 1 13.859507156624135 16.261688702946795 13.916862052503731 0 0 0 +2873 479 1 5 1 14.761773131414925 17.314290439740798 13.259474977140611 0 0 0 +2874 479 1 6 1 14.019217052797176 17.938496883547767 12.09227369884085 0 0 0 +1189 199 1 1 1 12.347539332733456 21.120258391887443 11.750295034831426 0 -1 0 +1190 199 1 2 1 11.780665649063492 22.303050314555442 12.462195779328948 0 -1 0 +3716 0 0 0 2 10.027156448788437 18.268479873728438 10.63506273510549 0 0 0 +3834 0 0 0 2 10.509056193874386 19.277807048161726 14.421463635896767 0 0 0 +1346 225 1 2 1 23.793395387467086 23.81644381399494 18.271848618089205 -1 -1 0 +1193 199 1 5 1 14.434610708095304 22.319659413552085 11.516164882905645 0 -1 0 +3868 0 0 0 2 -20.899072720425135 15.474751656074606 23.36942182079428 0 0 0 +1007 168 1 5 1 17.402259654854358 23.025592447014258 8.932302913545776 0 -1 0 +2915 486 1 5 1 7.227659705049295 0.2388236177388147 17.04086764963337 0 0 0 +2725 455 1 1 1 14.14284145514453 0.2561991867742448 10.223416572490823 0 0 0 +3722 0 0 0 2 15.159721379427028 20.54501187351067 14.89326366283286 0 0 0 +2838 473 1 6 1 22.61009607023991 17.084665065548013 10.700204559508869 -1 0 0 +2875 480 1 1 1 17.239299966872796 19.84757662992963 11.876705353132825 0 0 0 +2876 480 1 2 1 17.92457040362193 20.14784624432146 13.201738347493766 0 0 0 +2877 480 1 3 1 18.656474123621397 18.963383845554574 13.68888372509028 0 0 0 +2878 480 1 4 1 19.657631414337587 18.53810840966041 12.646714654654973 0 0 0 +2879 480 1 5 1 18.913564712633352 18.09339245221433 11.419954443455726 0 0 0 +2880 480 1 6 1 18.17848836974596 19.286249061785814 10.852754483398101 0 0 0 +3846 0 0 0 2 21.5591379766058 20.92686584516496 9.534104351606558 0 0 0 +3859 0 0 0 2 23.130817964879125 20.40324148438651 14.769072554472404 0 0 0 +3072 512 1 6 1 16.6565103761182 15.543974220617395 16.741026728948025 0 0 0 +1200 200 1 6 1 19.74204030868081 23.205033829464863 11.674312707146202 0 -1 0 +1199 200 1 5 1 20.719455755588974 22.651888585009523 12.706993189356666 0 -1 0 +1594 266 1 4 1 -18.14597742571191 4.808099075041864 22.990678895695723 0 0 -1 +2940 490 1 6 1 -21.80979995004257 3.8143001549009914 17.262762376994335 0 0 0 +2937 490 1 3 1 -19.410413882832213 5.542303515011293 16.44620140947802 0 0 0 +2936 490 1 2 1 -19.518756662885682 4.655295391478655 17.704156586814022 0 0 0 +2935 490 1 1 1 -20.42359463990074 3.4158491086928717 17.644622622715794 0 0 0 +1596 266 1 6 1 -18.213726620812793 7.292713209763359 22.811079822507057 0 0 -1 +3772 0 0 0 2 -22.98173316640093 5.835189998595849 20.21855035912424 0 0 0 +3795 0 0 0 2 -18.32379820176812 1.0189256288349753 19.68592518309387 0 0 0 +3817 0 0 0 2 -21.96500586475274 1.8086046019964208 21.30205482249336 0 0 0 +2355 393 1 3 1 23.056270406236976 7.941859175518065 0.38260082924947286 -1 0 0 +1712 286 1 2 1 5.474101018156991 18.51732911792434 23.928599941580675 0 0 -1 +1595 266 1 5 1 -18.927155018771707 6.010113502407483 22.395741117934183 0 0 -1 +1158 193 1 6 1 -23.62225820038134 22.447368299631478 11.635236885334761 0 -1 0 +1605 268 1 3 1 -5.690319328024967 9.296077829281938 23.619005871064665 0 0 -1 +1602 267 1 6 1 -13.946670997089853 5.97932530073038 23.54409293744624 0 0 -1 +1543 258 1 1 1 -19.256645903930288 0.6849357621339829 23.23770093390046 0 0 -1 +3686 0 0 0 2 -15.319157198063317 0.05575866373271689 17.785493551561636 0 0 0 +2894 483 1 2 1 -11.243386632599018 1.7547347616212825 16.296966203205656 0 0 0 +2949 492 1 3 1 -7.707842652038671 4.377854281502619 16.41917906934544 0 0 0 +2950 492 1 4 1 -8.740943222039943 5.4078420952112864 15.945626216036231 0 0 0 +3578 0 0 0 2 -15.385478356671452 2.2548615969721113 21.188510121412367 0 0 -1 +2946 491 1 6 1 -14.439289240625941 3.6339229186832354 17.865303753852817 0 0 0 +2945 491 1 5 1 -15.567158350969464 4.617648991586328 17.625977606569297 0 0 0 +2944 491 1 4 1 -15.915681352970319 5.4177483506856206 18.83462072935988 0 0 0 +2943 491 1 3 1 -14.67755379574466 6.078404948037709 19.419849306153107 0 0 0 +2942 491 1 2 1 -13.566272261110608 5.074550201336608 19.67333611407334 0 0 0 +2941 491 1 1 1 -13.17498147014894 4.313972209790917 18.40005783379295 0 0 0 +2898 483 1 6 1 -9.34156539772313 0.11366900845117012 15.686681666086042 0 0 0 +2893 483 1 1 1 -9.851701200224356 1.543322587796363 15.688297300733867 0 0 0 +2951 492 1 5 1 -9.30410469822799 6.027977532862739 17.2176245985714 0 0 0 +3847 0 0 0 2 -9.760823316748787 7.284893284421847 21.73931829337102 0 0 0 +3715 0 0 0 2 -9.250071090179384 3.107831440007693 19.519340757117636 0 0 0 +2895 483 1 3 1 -12.233213156297184 0.6778711149215513 15.813049116947358 0 0 0 +1601 267 1 5 1 -13.75271484768463 7.457718780082472 23.29048389733532 0 0 -1 +3573 0 0 0 2 -11.409238062403379 2.9038055050207574 23.308436700153944 0 0 -1 +1558 260 1 4 1 -4.100902572511241 0.4013818884439949 22.831223931246523 0 0 -1 +1610 269 1 2 1 -1.8184942692010424 5.447799165415413 22.515994071125824 0 0 -1 +2447 408 1 5 1 15.69166934756105 11.895693768380932 0.17627967250796703 0 0 0 +2948 492 1 2 1 -6.602612673595599 4.860870587502252 17.344465787299892 0 0 0 +3792 0 0 0 2 -0.30878980065402867 2.4634874443673005 18.92465683686538 0 0 0 +2952 492 1 6 1 -8.230099377725006 6.6711775136677165 18.062108182236965 0 0 0 +2947 492 1 1 1 -7.135628729087666 5.688158492585296 18.49114672276438 0 0 0 +2900 484 1 2 1 -4.635501261825296 1.1122845636639722 17.436809496619656 0 0 0 +1555 260 1 1 1 -6.168660914855352 2.0774778187424827 21.498462468269388 0 0 -1 +1560 260 1 6 1 -4.792622760487099 2.5751071130249503 21.864433627555023 0 0 -1 +1603 268 1 1 1 -6.071856367588174 6.7919860850274425 23.558398768047468 0 0 -1 +2901 484 1 3 1 -6.050522809321973 0.6165012232584413 17.218087979179693 0 0 0 +1608 268 1 6 1 -6.14522198804961 6.839441283248485 22.060376113246168 0 0 -1 +1611 269 1 3 1 -2.333433806175296 6.839954470065814 22.56611486335416 0 0 -1 +3864 0 0 0 2 -3.1691253525866347 4.837186335980065 19.55362395200823 0 0 0 +1556 260 1 2 1 -6.598282959325758 0.9621413239360455 22.453924629985842 0 0 -1 +3791 0 0 0 2 -4.339116204076857 9.660553580841844 18.602684807027767 0 0 0 +3824 0 0 0 2 3.0725476871361086 0.9351330899939048 16.769404032804562 0 0 0 +1566 261 1 6 1 0.04698668363144415 1.6040264490886893 23.679929812014148 0 0 -1 +1569 262 1 3 1 8.220634723227487 1.5329143410037775 23.166498481101502 0 0 -1 +2957 493 1 5 1 1.0131085195878184 7.0399141059364 19.5436619153055 0 0 0 +2956 493 1 4 1 1.52375216901344 5.63199164089756 19.364804361218894 0 0 0 +2955 493 1 3 1 1.8900811968490354 5.301705664746984 17.885753061224964 0 0 0 +2964 494 1 6 1 5.29313249495669 7.261833085145918 19.06134160493927 0 0 0 +2963 494 1 5 1 6.584852770940476 6.414446953146869 19.183258433542772 0 0 0 +2962 494 1 4 1 7.718636082875643 7.1742164676258104 18.528056991452885 0 0 0 +2958 493 1 6 1 -0.15448304215183897 7.287193907394424 18.62918555803044 0 0 0 +2954 493 1 2 1 0.8082641754600559 5.7019789858135566 16.890330608230812 0 0 0 +2953 493 1 1 1 0.237431022652342 7.051774620375621 17.18071840147221 0 0 0 +3775 0 0 0 2 2.8001388436588743 1.9190577563936313 20.308345014277634 0 0 0 +3813 0 0 0 2 5.143299620862583 3.6512474647697566 17.568759084532296 0 0 0 +3845 0 0 0 2 5.257458193174502 3.7217501277982885 21.94840202266888 0 0 0 +1570 262 1 4 1 9.356987205286659 0.5456916028875615 23.2536546532975 0 0 -1 +1565 261 1 5 1 0.5152401241988143 2.877186714413404 23.05923569783222 0 0 -1 +1567 262 1 1 1 9.417078732062755 3.0685773277678954 21.745595225443974 0 0 -1 +3355 0 0 0 2 -4.430382520557925 0.5125293069897837 7.420106906495029 0 0 0 +1568 262 1 2 1 8.593036935665602 2.972294554159407 22.990368493241913 0 0 -1 +2886 481 1 6 1 20.988897763154462 0.7630796560291592 18.29759725673417 -1 0 0 +1572 262 1 6 1 10.699198925990217 2.213682884194307 21.817001409882977 0 0 -1 +3742 0 0 0 2 15.659930028027397 0.9992229932085037 16.84960950382654 0 0 0 +1571 262 1 5 1 10.277178895766502 0.7549829302651766 22.060518439667778 0 0 -1 +2970 495 1 6 1 11.435190432436062 3.552484642121754 16.980549040183774 0 0 0 +2969 495 1 5 1 12.846462846752303 3.168681814391324 17.27101022319674 0 0 0 +2968 495 1 4 1 13.683543486739751 4.205723762920822 17.998730581337043 0 0 0 +2967 495 1 3 1 12.95132146822454 4.629862318962871 19.263133084465174 0 0 0 +2966 495 1 2 1 11.513291151607552 5.057813010346427 18.89709092731474 0 0 0 +2965 495 1 1 1 10.724800413991309 3.925364069375534 18.242973832254258 0 0 0 +3857 0 0 0 2 14.359041876721593 2.5426438485774905 23.264162382909724 0 0 0 +3861 0 0 0 2 15.054925778327767 7.566184557167748 20.220558405919423 0 0 0 +2493 416 1 3 1 16.599304081504364 18.914013348899843 0.38801094089380506 0 0 0 +2974 496 1 4 1 15.856574156416135 6.203701922532569 15.010476343637825 0 0 0 +2923 488 1 1 1 16.57433417923614 3.160086910305957 19.861855915769446 0 0 0 +1624 271 1 4 1 12.67021039240002 6.099944548867489 23.107233156685012 0 0 -1 +1623 271 1 3 1 13.751532317867474 7.114598848542947 23.536434837687963 0 0 -1 +2924 488 1 2 1 16.671040027982784 1.7624501839721278 20.44098418595009 0 0 0 +2885 481 1 5 1 21.992474837856435 1.9339511006783217 18.205834836731043 -1 0 0 +1674 279 1 6 1 12.460497926620677 13.862191949321556 23.23402284474642 0 0 -1 +3819 0 0 0 2 22.422051314579754 3.6669645450420867 14.690780626222002 0 0 0 +2972 496 1 2 1 17.049130732591863 6.414425392723232 17.1800186870488 0 0 0 +2971 496 1 1 1 18.3995917297207 6.090268464459938 16.595538098155007 0 0 0 +3843 0 0 0 2 22.980931111822226 3.869046490401936 22.354064630122753 -1 0 0 +983 164 1 5 1 -4.984011069058881 23.34408301050032 6.094427647548846 0 -1 0 +2973 496 1 3 1 16.10494643324718 7.083769561865496 16.210358399861306 0 0 0 +2930 489 1 2 1 23.44318486242379 8.82223063515978 17.854198451640432 -1 0 0 +2929 489 1 1 1 -23.638682914035513 8.108030373162723 16.84362911050567 0 0 0 +2928 488 1 6 1 17.383175984746508 4.189071760635174 20.660668957428395 0 0 0 +2927 488 1 5 1 18.8658995888241 3.77234534964301 20.72655159184544 0 0 0 +1538 257 1 2 1 22.002309039632642 0.6937981237670762 23.470944450221428 -1 0 -1 +3701 0 0 0 2 20.852554116660244 6.4832599443782915 22.687620124533712 0 0 0 +3827 0 0 0 2 21.38957103883894 5.516469715956856 18.926116367751586 0 0 0 +2926 488 1 4 1 18.97812748667126 2.3828191056887893 21.377446844618976 0 0 0 +2925 488 1 3 1 18.156913489787254 1.342673535387789 20.596586819310254 0 0 0 +2988 498 1 6 1 -19.8226278490801 11.22302447122681 16.516462390578482 0 0 0 +2987 498 1 5 1 -18.845203401374302 12.0077717572109 17.37790029903312 0 0 0 +3699 0 0 0 2 -21.646478068413952 9.357874412924359 20.74425374566796 0 0 0 +2986 498 1 4 1 -18.706192383800868 11.395806342113072 18.740142176513952 0 0 0 +2985 498 1 3 1 -18.317904515442912 9.9299263591819 18.643225790692878 0 0 0 +2984 498 1 2 1 -19.358111840325897 9.095322066218282 17.864390901009504 0 0 0 +2983 498 1 1 1 -19.556267015525073 9.739185104227614 16.478694572665567 0 0 0 +2982 497 1 6 1 -23.33638285072226 12.32407974773771 18.604664490530745 0 0 0 +1639 274 1 1 1 -17.522149197278416 12.814213923477228 23.052617593569344 0 0 -1 +1640 274 1 2 1 -18.829175673400762 12.645179520846215 22.365382886990126 0 0 -1 +2497 417 1 1 1 -23.185614979101288 0.6281486126378832 3.9258312172049163 0 0 0 +2697 450 1 3 1 -18.853992258140757 0.1834469456000646 9.80764111603123 0 0 0 +3034 506 1 4 1 -18.268371646142377 15.545350143690467 19.046690735501116 0 0 0 +3033 506 1 3 1 -19.34410487992586 15.236072288183205 20.076501492813392 0 0 0 +2978 497 1 2 1 -22.166165719822075 13.162369260711458 20.62649596071692 0 0 0 +2977 497 1 1 1 -22.083750151386738 13.038195892652691 19.110717773096788 0 0 0 +3032 506 1 2 1 -20.373087596651228 16.37133836383106 20.201273728243073 0 0 0 +3726 0 0 0 2 -15.531328487289196 8.40882931686543 16.864334534394498 0 0 0 +3771 0 0 0 2 -15.777873868536286 9.915423538898871 21.38050990104471 0 0 0 +2994 499 1 6 1 -14.716212292813996 12.408381092125046 17.98006515918425 0 0 0 +2993 499 1 5 1 -13.35705471200724 11.917486408066933 18.047886975323177 0 0 0 +2992 499 1 4 1 -12.408527085203527 12.959823908002578 18.57814948461683 0 0 0 +2991 499 1 3 1 -12.829440830545627 13.55848386474975 19.899837424384117 0 0 0 +2990 499 1 2 1 -14.330209049954574 13.908538386630395 19.933695429985843 0 0 0 +2989 499 1 1 1 -15.206270303680622 12.8155986583422 19.367189220216297 0 0 0 +1666 278 1 4 1 4.185607601358958 14.876059567133158 23.34370466931474 0 0 -1 +3800 0 0 0 2 -12.199727714440492 8.579496953679376 19.66990014726822 0 0 0 +2996 500 1 2 1 -8.186560561043017 11.405114055690673 17.377820637084266 0 0 0 +2995 500 1 1 1 -9.244439615361657 11.473050864124344 16.29858492701507 0 0 0 +3755 0 0 0 2 -9.296885381172064 14.245592273691527 19.87441119235215 0 0 0 +3833 0 0 0 2 -9.597569594282794 10.949602291777467 20.930471809202704 0 0 0 +3041 507 1 5 1 -10.74988528219667 15.97595289648503 16.34714150482355 0 0 0 +1645 275 1 1 1 -12.180554136690546 12.661957260129133 23.578698882157767 0 0 -1 +1606 268 1 4 1 -5.852548564569858 9.333851525531054 22.109918383135913 0 0 -1 +3003 501 1 3 1 -0.0262486654587617 11.978666388391813 17.13719806971644 0 0 0 +1607 268 1 5 1 -5.463433027782803 8.017321432436898 21.430606391308366 0 0 -1 +1654 276 1 4 1 -7.112758046279631 12.460482931429251 23.442992657407643 0 0 -1 +1188 198 1 6 1 7.30808130858767 23.851966214482438 13.122348612823892 0 -1 0 +3002 501 1 2 1 -1.292031593589732 12.835554458573965 17.07986693425952 0 0 0 +2998 500 1 4 1 -6.938301128862645 9.587929223019032 16.18628246390583 0 0 0 +2997 500 1 3 1 -7.5690795029460824 10.0379964349353 17.508983101969424 0 0 0 +3768 0 0 0 2 -3.59315969303124 16.109678287315432 16.67369344016591 0 0 0 +3779 0 0 0 2 -4.252822176526187 12.874974542760603 19.87397605153768 0 0 0 +3812 0 0 0 2 -3.059806797352817 15.128976300289281 22.65163652076028 0 0 0 +3004 501 1 4 1 0.1632734121222876 11.452634580627233 15.750508557941014 0 0 0 +3823 0 0 0 2 -1.2392637606184114 9.773027146783761 20.587583560233877 0 0 0 +3698 0 0 0 2 -0.003144650898551947 13.626045470487885 20.83845693234168 0 0 0 +1655 276 1 5 1 -8.018607117379846 13.577817470211427 23.120018838940886 0 0 -1 +2959 494 1 1 1 5.408705329802579 8.67405252718908 19.623523518104346 0 0 0 +1617 270 1 3 1 6.725498452053213 8.886349114641535 22.892147977588326 0 0 -1 +1618 270 1 4 1 7.245811843871333 7.464082759647637 23.057193375242306 0 0 -1 +3850 0 0 0 2 3.425849832432325 14.989114739196875 15.13784217564407 0 0 0 +2961 494 1 3 1 7.8737672176371145 8.591667813992462 19.073265880218795 0 0 0 +2960 494 1 2 1 6.604376370008103 9.357396600380023 18.959826187651434 0 0 0 +3872 0 0 0 2 2.445551093999729 8.272281725752512 22.608503644190826 0 0 0 +1664 278 1 2 1 3.0986388775857305 12.697095607540776 22.960309658018467 0 0 -1 +3008 502 1 2 1 7.240041595010061 13.113292413569608 16.64350333652181 0 0 0 +3007 502 1 1 1 6.74974212258648 11.871175140904462 15.999643166574133 0 0 0 +3783 0 0 0 2 2.2105598302072793 10.972134071375667 19.90206693612839 0 0 0 +3789 0 0 0 2 3.570117410707716 14.6099769366034 18.832939063816738 0 0 0 +3866 0 0 0 2 6.587724486106291 12.895054794123599 21.182092572070687 0 0 0 +3012 502 1 6 1 7.815762173371576 11.209836132435578 15.180616778533157 0 0 0 +1665 278 1 3 1 2.924945218036946 14.200035498190353 22.93773974246058 0 0 -1 +1615 270 1 1 1 8.834008894976945 9.825333061004015 23.681434966848194 0 0 -1 +1620 270 1 6 1 9.406121059196188 8.418879098296967 23.7645547679054 0 0 -1 +1619 270 1 5 1 8.751568255986554 7.382145587934434 22.80442139923896 0 0 -1 +3009 502 1 3 1 8.316467577781534 12.762273892628105 17.616724255409693 0 0 0 +3017 503 1 5 1 13.84195479353447 10.615311385715874 16.549816379941106 0 0 0 +1646 275 1 2 1 -13.626684266899323 13.104522447801031 23.323804385668318 0 0 -1 +3011 502 1 5 1 8.946734402744868 10.797104194228991 16.090623723330907 0 0 0 +3010 502 1 4 1 9.441134702429563 11.963597250759914 16.94060892485426 0 0 0 +3018 503 1 6 1 14.546748543857058 11.648526480623158 15.670271735821343 0 0 0 +3016 503 1 4 1 13.95675985033959 10.930741926425048 18.032411598737767 0 0 0 +3015 503 1 3 1 13.319669174174152 12.26727770565753 18.444730046558014 0 0 0 +3014 503 1 2 1 14.13450459523743 13.249290953501609 17.630240634228137 0 0 0 +3013 503 1 1 1 14.161929314199684 13.070117012379857 16.130010029685977 0 0 0 +1669 279 1 1 1 13.051845904695982 12.438662246474644 23.333131902756367 0 0 -1 +3849 0 0 0 2 11.314023300222683 8.713320571507982 19.980078678998357 0 0 0 +3830 0 0 0 2 10.201879168879893 11.911277977443786 20.932276584020528 0 0 0 +3760 0 0 0 2 14.638074858071448 15.769710365660256 21.18722774234767 0 0 0 +1682 281 1 2 1 22.718766940499762 18.122479293788032 23.297114138180792 -1 0 -1 +3022 504 1 4 1 19.16998193545666 13.064163292596692 16.70133220764598 0 0 0 +2933 489 1 5 1 22.483759820088636 7.626768252534384 15.31972622838294 -1 0 0 +2932 489 1 4 1 21.602104257587552 8.36098984865055 16.302938962896967 -1 0 0 +2931 489 1 3 1 22.266251984833342 9.451833840929279 17.14608720350499 -1 0 0 +3619 0 0 0 2 22.759524820929958 9.724946356267427 21.13561567277785 0 0 -1 +2981 497 1 5 1 23.438878530380457 13.144374188363392 18.97264682095462 -1 0 0 +2980 497 1 4 1 23.355868961600407 13.474187291559254 20.407943365829713 -1 0 0 +3810 0 0 0 2 16.80563927015213 10.006499202160338 23.776683707913445 0 0 0 +3067 512 1 1 1 17.09731835694139 15.86915204144693 18.150552565591468 0 0 0 +3793 0 0 0 2 16.610539673215047 12.603771781109792 21.584843419414817 0 0 0 +3754 0 0 0 2 18.94117853462778 8.881316202883777 20.465096811841487 0 0 0 +3021 504 1 3 1 19.006343845934083 12.72919798944163 18.1840838814213 0 0 0 +3020 504 1 2 1 17.82127818441754 11.80915261405113 18.42282282895948 0 0 0 +3019 504 1 1 1 17.95457412698314 10.539274218604783 17.612314634643383 0 0 0 +2979 497 1 3 1 -23.356803930924123 14.023417948425614 20.991446240172717 0 0 0 +3700 0 0 0 2 18.959370584099815 16.3661908585235 21.632318895423985 0 0 0 +3815 0 0 0 2 20.195616375053262 12.636184514678453 21.93524959530154 0 0 0 +3068 512 1 2 1 16.649538847177777 17.217046661777992 18.568759757874822 0 0 0 +3028 505 1 4 1 22.980225896396092 16.61706215473422 18.580773080407322 -1 0 0 +1683 281 1 3 1 22.26818801810128 16.674832655748126 23.025568525766918 -1 0 -1 +1348 225 1 4 1 -22.092184770783103 23.20579610499296 17.43433391359576 0 -1 0 +3708 0 0 0 2 -21.25559456869578 19.62761842682995 15.823558648531531 0 0 0 +3689 0 0 0 2 -20.64311213894838 21.015705722910692 23.53603611471952 0 0 0 +3035 506 1 5 1 -18.875012673725475 16.03809495049603 17.768519086943037 0 0 0 +1347 225 1 3 1 -23.247480123079853 22.605848997417777 18.191018118599796 0 -1 0 +1662 277 1 6 1 -2.058524407911626 11.945143591181486 23.69041651219682 0 0 -1 +3844 0 0 0 2 -16.59325919843099 19.619410804593166 16.120832875737047 0 0 0 +1688 282 1 2 1 -16.503439760555725 18.700260605061487 20.6023009908543 0 0 -1 +1687 282 1 1 1 -17.23800521561868 19.29018407741576 21.803355846218672 0 0 -1 +3036 506 1 6 1 -19.80538133120982 17.226025948024283 18.052315572416667 0 0 0 +3031 506 1 1 1 -20.972765567177184 16.756124532578617 18.88388044236406 0 0 0 +3029 505 1 5 1 23.88632378512069 17.681395120815356 17.933197531102742 -1 0 0 +1353 226 1 3 1 -17.31706859265228 23.213608832339112 17.832129892868664 0 -1 0 +1691 282 1 5 1 -17.131776182084064 17.075046772580404 22.900017746135486 0 0 -1 +1692 282 1 6 1 -18.04040634890019 18.20958522844445 22.528833554591294 0 0 -1 +3695 0 0 0 2 -19.96102036983975 20.501634303585355 19.857778081782374 0 0 0 +1352 226 1 2 1 -16.1837630920261 23.21228301384729 18.808468756123126 0 -1 0 +974 163 1 2 1 -13.694631294163527 23.542106639515296 4.26369932847563 0 -1 0 +3040 507 1 4 1 -10.7983031093395 16.89678605426126 17.580987089708714 0 0 0 +3039 507 1 3 1 -12.103727939724765 16.790328281233908 18.308309851352114 0 0 0 +1359 227 1 3 1 -12.846835161641874 23.45275371719849 17.26767230097117 0 -1 0 +1694 283 1 2 1 -10.93090978688769 16.37304345194382 23.005836052665128 0 0 -1 +1689 282 1 3 1 -15.516220392606842 17.68547646240771 21.088058926455723 0 0 -1 +1695 283 1 3 1 -9.818437722453393 17.428123773570686 23.213819737769334 0 0 -1 +1690 282 1 4 1 -16.220366596796246 16.543750474490036 21.789122536230938 0 0 -1 +3735 0 0 0 2 -9.728361381003806 20.29483896731702 17.86843564256177 0 0 0 +3822 0 0 0 2 -14.064634423688753 21.728131839770302 22.357354642055476 0 0 0 +3038 507 1 2 1 -13.232834534192628 16.942971436349026 17.322288312656376 0 0 0 +3037 507 1 1 1 -13.137384732784668 16.01268704169424 16.13220463729642 0 0 0 +1693 283 1 1 1 -11.825889242333046 16.707678181154233 21.846795343502947 0 0 -1 +1697 283 1 5 1 -11.336116015601116 19.157431168608912 22.242582524920483 0 0 -1 +1698 283 1 6 1 -12.404225825609009 18.117459414195416 21.975108163172752 0 0 -1 +3747 0 0 0 2 -11.254619738804232 22.860146305540948 20.535256308803064 0 0 0 +3770 0 0 0 2 -13.36790093204199 19.97596556304271 18.690616754117325 0 0 0 +3816 0 0 0 2 -8.25106028494232 21.67757743057385 22.02868719959652 0 0 0 +1696 283 1 4 1 -10.357040650669752 18.83448096989706 23.368828175926406 0 0 -1 +3738 0 0 0 2 -2.92511011277394 19.781332838401482 16.67430629160248 0 0 0 +3043 508 1 1 1 -7.346729792640925 17.32644496042835 20.53740712101804 0 0 0 +3049 509 1 1 1 0.9530750875417026 18.076018728378074 21.12568820852892 0 0 0 +3048 508 1 6 1 -7.491914318217734 18.26655057347707 19.36317042992786 0 0 0 +3047 508 1 5 1 -6.218547244611215 18.273039162353946 18.520996118398763 0 0 0 +3046 508 1 4 1 -4.908686529804855 18.568730416349158 19.29116731264241 0 0 0 +3045 508 1 3 1 -4.825509659453814 17.518709263205075 20.409494533991793 0 0 0 +3044 508 1 2 1 -6.055075350142378 17.591553394666278 21.283266210612947 0 0 0 +1365 228 1 3 1 -6.744032240535995 22.925602906272665 18.92436608583302 0 -1 0 +1364 228 1 2 1 -8.057608822785518 23.499442866874357 18.463818406637927 0 -1 0 +3709 0 0 0 2 -4.374887642561885 22.989382910186198 22.633884715732364 0 0 0 +3869 0 0 0 2 -2.9779158271568655 21.4686715798699 19.697079188838046 0 0 0 +3054 509 1 6 1 -0.4357900495625429 18.483663253537127 20.73445479013614 0 0 0 +3053 509 1 5 1 -0.9587205012394571 17.786486462524294 19.513529196416275 0 0 0 +1706 285 1 2 1 -2.8337949984110073 19.12128682554559 23.847169179042325 0 0 -1 +1350 225 1 6 1 -23.835362135168825 23.692343347515155 15.806173702553938 0 -1 0 +1374 229 1 6 1 0.3252561904958947 23.76400881152234 17.441931683047603 0 -1 0 +1609 269 1 1 1 -2.4766233055178155 4.525543851591776 23.514209150525794 0 0 -1 +1349 225 1 5 1 -22.328451525005764 23.598006164526055 16.028026065109504 0 -1 0 +1351 226 1 1 1 -16.679452031304173 23.082530876257884 20.25143986988261 0 -1 0 +806 135 1 2 1 11.136484505261711 22.871682349262606 0.8609503645390716 0 -1 0 +3837 0 0 0 2 -8.280304427597175 4.239087571042628 23.512171912835402 0 0 0 +1715 286 1 5 1 6.220981197719286 21.134878340579753 22.750864607685628 0 0 -1 +1641 274 1 3 1 -19.481160669159376 11.307531244139724 22.662656991658945 0 0 -1 +3050 509 1 2 1 1.8421992894484434 18.408232197890733 19.952853730872466 0 0 0 +3853 0 0 0 2 0.7332069660400669 21.704283092681955 22.66983696389863 0 0 0 +1369 229 1 1 1 0.6839318190761109 22.334991776166106 17.322274524889856 0 -1 0 +3060 510 1 6 1 4.9974324463686495 18.921740632710577 17.35611230494288 0 0 0 +3059 510 1 5 1 6.2978388768190205 18.148550130341256 17.262100639642032 0 0 0 +3058 510 1 4 1 7.599053347275171 18.792017825884685 17.6738714908041 0 0 0 +3057 510 1 3 1 7.444805763114175 19.555018349725877 18.961800012904597 0 0 0 +3056 510 1 2 1 6.2204191563857485 20.43205756134159 18.9521947448722 0 0 0 +3055 510 1 1 1 4.9663804555075854 19.54290516118867 18.711818078804967 0 0 0 +3052 509 1 4 1 -0.04976350388744305 17.96281418398469 18.31783548487168 0 0 0 +3051 509 1 3 1 1.3856112443806534 17.648803090418944 18.677105257359297 0 0 0 +1371 229 1 3 1 2.28624014706334 22.688880250047518 19.211654368608855 0 -1 0 +1370 229 1 2 1 1.0941766778039277 21.86820107600484 18.69542691386278 0 -1 0 +1711 286 1 1 1 4.847805932729359 19.132964467905115 22.70299975276698 0 0 -1 +1716 286 1 6 1 4.821476712071242 20.62603938089407 22.69156122795201 0 0 -1 +47 8 1 5 1 16.20689469719979 23.241838526811495 23.440168300844206 0 -1 -1 +1377 230 1 3 1 8.635898769257064 23.94075159454911 20.2176296182852 0 -1 0 +3769 0 0 0 2 6.757900986949621 16.477117859948454 20.57857221095587 0 0 0 +1720 287 1 4 1 11.63682330746196 21.157354890573107 23.234729834235072 0 0 -1 +1719 287 1 3 1 12.071440511361475 19.896562887803267 22.47659407689513 0 0 -1 +775 130 1 1 1 -15.792999613010338 22.825924139444226 0.2931623128144453 0 -1 0 +2312 386 1 2 1 -15.788545896407989 0.17824035256090107 0.3659094903857373 0 0 0 +1382 231 1 2 1 12.309197333450523 21.547773461404006 17.22842462204273 0 -1 0 +1381 231 1 1 1 10.935655277559208 21.8918077353953 17.850778902075035 0 -1 0 +1383 231 1 3 1 13.442098711995108 22.352862402169595 17.795726529568423 0 -1 0 +3066 511 1 6 1 11.21566459994007 17.206951440245906 17.81764262851046 0 0 0 +3065 511 1 5 1 11.995529002944487 17.629146055009166 19.02723345099404 0 0 0 +3064 511 1 4 1 11.370632155578809 17.044078289880275 20.323274748709917 0 0 0 +3063 511 1 3 1 11.295873736376167 15.531851826920487 20.27080092673813 0 0 0 +3062 511 1 2 1 10.35957553565365 15.218473554909393 19.12949974379249 0 0 0 +3061 511 1 1 1 11.006422620912788 15.694751418413754 17.84413345928526 0 0 0 +1386 231 1 6 1 10.887122663000902 21.753319453509384 19.344250739611173 0 -1 0 +1385 231 1 5 1 12.023194579068086 22.61958325874258 19.872236178854813 0 -1 0 +1384 231 1 4 1 13.363692848091494 22.1964406790586 19.313578668751777 0 -1 0 +1003 168 1 1 1 19.483790849490152 23.75531275246493 7.8543312923353605 0 -1 0 +1718 287 1 2 1 12.170017025142796 18.670498710569202 23.387653409978654 0 0 -1 +48 8 1 6 1 17.661127939278366 23.766657047013815 23.392587212817013 0 -1 -1 +3026 505 1 2 1 21.61513541432484 18.531350866492946 19.475385762060707 -1 0 0 +3862 0 0 0 2 16.974043954428293 21.756008216163224 18.91063516298466 0 0 0 +3069 512 1 3 1 17.315304206442764 18.25358034466533 17.776572718255718 0 0 0 +3070 512 1 4 1 17.080484421610812 17.987579725607816 16.31954875087872 0 0 0 +3761 0 0 0 2 19.719223610547214 21.049300790017945 16.523737461456744 0 0 0 +3727 0 0 0 2 15.511518725040482 19.76685125238102 21.512921733776377 0 0 0 +3027 505 1 3 1 21.596171944288518 17.121728445534178 18.901822280701076 -1 0 0 +3030 505 1 6 1 23.965432119082365 18.839893361025993 18.88439575724941 -1 0 0 +3767 0 0 0 2 22.91803957524669 21.58103354170414 22.316995791757158 0 0 0 +3025 505 1 1 1 22.61727259356269 19.47896480685076 18.824934920076373 -1 0 0 +805 135 1 1 1 10.433502128975812 23.795357812356126 1.792144644406823 0 -1 0 +2883 481 1 3 1 23.665105307885284 0.1917623275916509 17.26132694478131 -1 0 0 +994 166 1 4 1 7.322003783144428 23.855976566232904 7.199845277066027 0 -1 0 +812 136 1 2 1 18.144620836452003 23.88209034526092 3.973777418468526 0 -1 0 +1564 261 1 4 1 1.5621462383954274 3.55176851700057 23.965848420607248 0 0 -1 +2463 411 1 3 1 -10.186382091220896 18.22572732886093 0.014807674786438968 0 0 0 +2374 396 1 4 1 -5.615269009361776 6.108458561403319 0.0205904876588073 0 0 0 + +Velocities + +601 0.0032316838726594637 0.00794537541105881 0.0019793413217030925 +1968 0.0071579681633325495 -0.0036333645276728824 -0.0073367252254422375 +55 0.0013585064141440528 0.0048750338852601655 0.00314068015567091 +246 0.008072266191823422 0.0037988656848050844 -0.00025289538054964713 +247 -0.0025591066666835875 -0.0010221201833114722 0.0030667454048462573 +248 -0.00039292170139678664 0.0002690285797138837 9.25730622982952e-05 +251 -0.006787851143877177 0.0028458542282318216 0.002533274513912746 +252 -0.008460788520147504 0.00022777981107934938 0.003264847581888126 +3186 -0.002040774577325039 0.0038847625567798843 -0.0013013822733315798 +60 0.005055789896158935 0.010331541972115641 -0.004210094808599705 +241 0.0030761846902547132 0.0051667385265582845 -0.000721304010464208 +242 0.004518963620125899 -0.003907741085512501 -0.0024501534357371756 +202 -0.005025718505062069 -0.00046280409485997115 0.00071869865977524 +201 0.002477149653768898 -0.0027259756230631174 0.002429218302396309 +245 0.00625698118731932 0.0004745468015614448 0.002608342006721545 +50 -0.0024980112789385373 -0.0015636858092941777 0.0032474589564646336 +49 0.002149167277993695 -0.002464016666013496 0.005443065632506391 +243 -0.001536038856195776 -0.004389176210214911 -0.0006937321773919606 +244 0.0024308489800630223 -0.0014886634698538348 -0.003363838576712359 +56 0.005734793886006417 -0.0031757374369198415 -0.0016560078269149826 +249 0.0029482953369185053 -0.0016793079911748903 -0.004757856753071954 +213 -0.0024034460348550577 -0.0030031020275812044 0.0015910196591709452 +253 0.0018074823278342513 -0.00036015173895573413 0.002266578642805822 +254 0.006559616242340618 -0.005432406780447084 -0.0007062417998362489 +255 0.0004791946494937489 0.0016807647023977927 -0.0020236469465984884 +256 0.0024220090448146213 0.0024645016685068528 -0.00032847458612371563 +257 0.0032444192039482746 -0.002364601862655238 0.0014194035036803247 +258 -0.003801804347057847 -0.0015612454564904357 0.0010623422760469212 +3090 0.0007087133837049862 -0.005187736830536437 -0.004024365215371091 +3200 0.00018648422140009132 0.0029686031845418577 0.005269258104008174 +3219 -0.002575991242724388 -0.006978829170943638 -0.003800379526618955 +1936 0.0012492273828130372 0.0014290355800981058 -0.005631871552773617 +259 0.0026528025670360966 0.0005415241377633089 0.0024446841241966455 +214 -0.004547566920444135 -0.0026280684131370475 0.006187137457923985 +215 0.0006279179078313973 -0.0032452332901919904 0.0049571733357318334 +61 -0.0027955085906884902 -0.0005455391617297124 -0.004255573479106884 +611 0.0023577029069322152 0.003675186480546918 0.003500977449090441 +22 0.0016116582014560508 -0.0012595761157365825 -0.0032441263109609045 +173 0.0008532176378707618 -0.0024831997215156803 -0.0007701663304875478 +261 -0.006602760242706931 0.009265146059606195 0.00485802242508289 +262 0.0029832757781935366 0.004325428095123853 0.003040563802379639 +263 0.000918703774315073 -0.0035392261817736113 0.006934794637478921 +264 0.0035589437394961537 -0.005561830062017491 -0.002406737737652513 +265 0.0045753286542258315 -0.0024260725068602313 0.010567896015649633 +270 0.0019383511496130336 -0.0006381551436206873 -0.0037692488150954037 +3118 -0.005149079390532599 0.004954508000049086 -0.0038309107173041318 +3141 0.0021759119987664896 -0.0032120497457872868 -0.00013317754939502533 +21 -0.004180205785849682 -0.0003695864574943018 -0.0003584482723752279 +20 -0.005101136091144363 0.0009579578792647384 -0.01357078832613624 +30 -0.005495945568530183 0.01056954685669192 0.005111769384029935 +268 0.006275113595717743 -0.0013761309899585098 0.0022535796103848055 +269 -0.007574936957705026 0.0030681913051717642 0.004572401197762089 +29 0.0041476011352677995 -0.0006056268289178702 0.0034213099714784697 +1963 0.002992626360116527 -0.0014314758759992946 -0.0028407381170596304 +3387 -0.0003685639476823359 -0.0005917016857621566 -0.0024906182611309545 +23 0.008384751152086185 -0.00611991538327151 -0.007472236871820594 +216 0.0017660227352652284 0.007306190965025285 -0.005342900863958358 +19 -0.0001747508096339174 -0.003688703945598148 -0.013310617859239603 +54 0.002038754482741403 -0.0011103809918635414 0.007024010965788086 +266 -0.00017058638100151806 -0.002581494740404077 0.004353504323429169 +267 0.001590388006515804 -0.00806338554330775 0.001807767804618821 +79 -0.0013204357823806655 0.0047634697741664785 0.009999119322574215 +80 0.00016634665466235744 0.004382173825703827 -0.008623475221728636 +81 0.0006319929997222933 -0.00405296353280418 0.0022246652510937784 +222 -0.00945843338553859 -0.002583517746199459 -0.006013635867089602 +225 0.00362092833999717 0.0013847991973341836 0.0032927656601565453 +226 0.0008305582033053266 0.001310017771276649 0.003175971749746924 +271 -0.003937815989823967 0.006229595811158279 0.0020561910913807486 +273 -0.00018557264330067519 0.0015974140260719178 -0.00181001319917083 +274 -0.0045079815665265005 -0.001091755462914071 -0.0012434747316820555 +275 -0.003823040204205726 0.0006197593610616035 0.003479822915930659 +276 -0.008014367254701067 0.0014919113444342637 0.003962566055168363 +3238 8.354965007316653e-05 0.0003215417545165865 0.0023342795651902486 +227 0.0007936117154454114 -0.00013171120732787656 0.00043770164056296446 +82 0.0031699360834566786 0.0022997304035763584 -0.0016168032704378295 +28 -0.006870551745614322 0.003000163616849962 0.004089203736505075 +236 0.00448673953330459 -0.0036877216544352223 0.003945034010864314 +217 -0.0030991343470330693 0.001441355810398781 0.007443454448231439 +272 6.881885838760929e-05 0.0003618723185907931 -0.006941727477148575 +34 0.0004911527076959596 0.0009368094299899024 -0.0013061064482673007 +2156 0.0035301017300815893 0.0027562014946297202 0.002256998038178478 +152 -0.004255712349552147 0.006719331914594913 -0.005286970188725075 +231 0.004205052880075054 -8.904162318201874e-05 -0.006265546241546125 +277 0.00846407810507322 -0.002474628458715535 0.0003561040724458002 +278 -0.0018407751020688354 -0.0005353718381178876 -0.00032256867576698384 +279 0.004434019478713773 -2.384718515902249e-05 0.0002678326520215051 +280 -0.0015189519360833497 0.0009196016855754349 0.0011508975615229819 +281 0.00604971073119995 -0.0036773733294325006 0.002516805173397222 +282 0.003205946016380842 -0.006141318222816626 0.0019003705323080617 +3211 0.004874834249568281 0.001964503802205064 -0.0061899687678695055 +284 0.001987451178942572 0.0009656842745898972 -0.005683741462747666 +86 -0.0009269308128273573 0.0039634496985456805 0.004392447149797581 +38 0.005457747250483401 0.005997769277315725 0.0006095419832589824 +285 -0.003346538910977898 0.0032143588773232185 0.0002987224008140481 +286 -0.00786432278118586 0.0042091732442397275 0.0026805442794648054 +237 0.00101622596847052 -0.009580793576751739 0.005302152656873512 +232 0.0009886032607134892 0.002678209834169026 -0.0047958103865937615 +2157 -0.000575575270981916 0.0022465767114450727 0.006279981127068129 +39 0.001362868926831466 -0.0011567299723641285 0.006336710269238215 +3139 0.002898889093784821 0.000569800763321802 -0.003243069945780518 +283 -0.0037861898243025344 0.004911662619773804 -0.0016468872197624212 +94 -0.0018654435848628743 -0.0012435034770476763 0.003280863058117172 +95 -0.005508598681911978 0.004967868990981054 0.0037473706857089686 +96 -0.0027277624646521725 0.0030624464628809644 0.0006775300727758982 +238 0.003758006501150792 -0.002252341770764755 0.00620792336082241 +239 -0.002338527131972065 -0.0002682932339817302 0.004551569103119399 +287 -0.006775276908096652 0.0012572481724121602 0.003481059755452187 +288 0.0031849927160058533 0.0022825578510115305 -0.004799218071695235 +3198 0.0006405556769796576 -0.0071222682367007165 -0.0012697941940694225 +44 -0.0015709849986879948 -0.0039980941391633325 0.002297556514695667 +93 -0.004461441660787745 0.004292811544193741 -0.0026792750061482573 +240 0.0007418703483783744 -0.002691294323151287 0.003480111374045929 +92 0.004458427763128769 -0.0018036741133951029 -0.004830997933455644 +91 0.0003149971322084814 -0.003581395272454426 -0.00165122919539376 +235 -0.00449620644412968 -0.00046270612752115115 -0.007136757587631365 +3084 0.005585080810181661 -0.0017239442362496308 0.0012479233931804556 +3089 -0.003419389567577099 -0.0024697968162696966 -0.003075397280941907 +3120 -0.0011970105335798497 0.006714291716168972 0.0005443996505135215 +83 -0.006881007352574642 -0.0038855646079480276 0.009185591209031172 +174 -0.0017253024389488729 0.0034208924399536196 0.002622365247985346 +198 0.008288002630370607 -0.000821958483955275 0.003095852322183165 +2330 -0.00207124056027045 0.0007424494844170762 -0.006696671573874726 +193 0.005743003461772062 -0.011217632281925172 0.0030989999216688626 +2113 0.002800473574523983 -0.001343456704795588 0.001022275898295448 +294 -0.0009763058300016972 -0.0017733712131546915 -0.0037419736664026817 +295 -0.004101144600508044 0.004214437323150182 0.002665213260752625 +296 -0.007467644996132991 0.0009775870525844186 -0.004051684653959684 +297 0.0006187654734628514 -0.002159399344339254 -0.0073415198023536014 +298 0.0006529450985682904 0.0004668848816861084 0.0027228511065166268 +299 -0.0025795018725565536 -0.006514647239333125 0.0017588899256847355 +300 -0.003266470940369956 0.0013837455786756656 -0.0021729828053376507 +3105 0.0029599921927978934 -0.005444121776510173 -0.00506783576004713 +3196 0.005655694653706731 -0.003464474543914609 -0.0033063001317440413 +98 0.001981265188244205 -0.00014772641738764776 0.001153192875894335 +3075 -0.0002698408934291721 -0.0004988246185389946 -0.0010246566603116783 +3241 0.00561406290462324 0.0021456635098236025 0.007623248484347334 +3251 0.002726981606772143 0.005966349895536363 -0.004841872054629933 +289 -0.009226532594779761 1.1203503788412433e-05 -0.002693382836041138 +153 -0.001400043373882714 0.00482072016430653 -0.0014649397660225262 +290 -0.00022975088509822968 -0.00153650612354716 0.0020032439703025376 +104 -0.0027471611075917464 0.003038732152267642 -0.0013825965593358277 +114 -0.0016172155830183504 0.00028534791494032167 0.002194015244058414 +64 -0.007884379488019974 0.0035774098841656822 -0.007978307043161251 +3152 0.01298904517090324 -0.0020324403936943123 -0.011322575968674442 +301 -0.0031288133490279067 -0.0056206327298512024 0.0009734489584795486 +302 0.0005954484150826016 -0.0026906924200064933 0.0010640132971305185 +303 -0.002419576669811977 -0.0063697074784188935 0.0041707419092312905 +304 -0.0005523203716628129 -0.002463004936995113 0.009180229757782736 +305 -0.00288825852499804 0.003991186827326375 0.006035302633106992 +306 -0.003454253061608954 0.0045404819808434905 -0.00271370096048246 +3091 0.0018322314216118432 -0.003870137086490972 0.0006322426896243461 +3216 -0.0011343127148460606 0.0013871068784109784 -0.0066490258358380275 +3195 -0.004318430761136651 -0.0040616645359875785 -0.0008238850341091936 +62 -0.0019913736332273983 -0.0018913640806436786 0.0028385451218583616 +3221 0.004909021026889767 -0.0024019629844995913 0.004352289554472405 +63 -0.004657015133298379 0.0009066294247388587 0.005238353324789133 +109 -0.0028482218272112025 0.0036983039708284563 0.003806667731488362 +77 0.0046215423391457525 0.005527912153050199 0.0038118680461519433 +3128 -0.012664252952046122 0.0030494554272196854 -0.002716244544771733 +3154 -0.0025457712584420877 0.005075359012554963 -0.002787227548129567 +617 -0.0014426261599759709 -0.004969499089869205 0.0024590909133047297 +312 -0.006076475611463134 0.005454354719944105 -0.003022005084055146 +124 -0.0006482875699549528 0.0020427271561561954 -0.0005901491539239449 +307 -0.0029009877280778504 0.0016565351858204354 -0.004840980837491076 +308 0.002138645957854559 0.0017696992518782808 0.005380223359721309 +309 -0.0018044004644894908 0.004536824148675176 0.006080376581385109 +310 -0.0009765581288451675 0.00674162455338276 0.004940928373340957 +311 -0.003597523934180326 0.005788129873611139 0.0007011121710815848 +3159 0.005710994562373804 -0.003289975441492835 -0.00460198981490325 +3169 0.00029137569838463313 -0.0003448529350499042 -0.011480465886691544 +123 -0.00246468041406522 0.0020877300324483785 -0.0032425893839167995 +595 -0.002217186547443476 -0.005531272044183228 0.0003858227935027216 +25 -0.00550527618485148 -0.006290386620147048 0.0010659597813348033 +74 -0.004174664017613944 -0.00032357816911778167 0.0006439615561115869 +75 -0.0018105512305829398 -0.004113013200777466 -0.0023710952685456897 +76 0.0020727731868042725 0.0016301345302773876 0.0020453372564286647 +122 -0.005947094893927874 0.00620606353565792 -0.0036439216929718544 +121 -0.00028205355599618214 -0.0018253295680263773 -0.0014287420038623705 +3106 0.0009773142186704918 0.006300282100791342 -0.007749558627682822 +131 -0.002993323855702401 0.005750132792816172 -0.005640578205817457 +132 0.00359739017853942 -0.0007975068438956408 0.004364941718410272 +319 -0.0005198660909789616 -0.002324395005905139 -0.0073543099025178554 +320 0.0007116458707558029 0.000245159241091796 -0.003287139082808141 +321 0.0018361067700836526 0.0046702174728182316 0.001830242447622924 +322 -0.0003926497603731426 -0.00971387109822414 0.003656394193675751 +323 -0.004259885307694486 -0.003211863549594355 0.002390454116892201 +324 -0.007457778894724196 -0.007188720409977317 0.0014451813416106077 +3181 -0.0003589044868582778 -0.00032359483951284863 -0.006479100604054451 +127 -0.0018052473131182985 -0.0018327240823114964 -0.0022835875796112905 +130 -0.002718634084610338 -0.005522815085677008 -0.002106822891578524 +599 -0.006124669850457365 -0.0036314555347171686 0.003498845592536557 +126 0.003341547557123248 -0.0022367971314895077 0.002735824465114942 +2315 0.010051422624239068 0.0024880581917144894 -0.0053771369171338465 +3110 -0.0016087036670576747 0.0017280913197200418 0.0004679125523155267 +325 -0.007764286271288577 0.00330028685643918 0.003708338929170931 +326 -0.0035451742412600544 0.0008488673710464618 0.003968119558660255 +327 0.009341446983764396 0.004889655835076152 0.0029271825001083167 +328 0.007205688456709155 0.002516369374451917 0.0018106957651865437 +329 0.0037930833219164684 0.00807560989621137 0.0008595411069015068 +330 -0.006001724467579696 -0.003378782096816609 0.005026387323881236 +3111 -0.0045682056469419354 0.0007127061418659588 0.004644638427817325 +3127 -0.004757463196154057 -0.0018821535365216083 -0.0039404276287535785 +3184 0.005285011540921133 0.0025538173006037037 -0.000820285985778809 +3206 -0.0037526533964489283 -0.0015798775190263728 -0.008519902424498224 +3199 -0.0016092759270017196 0.004500578641501721 -0.0022584476381809914 +33 0.001226082731674498 0.004586191870610658 0.001310120738559494 +2118 -0.0003526041995028244 -0.0020262337907460135 0.00567121199429466 +40 -0.0012983573575634445 -0.0002606226490195831 0.0010361080816669883 +293 -0.0038624015330510283 -0.0044093437218002945 -0.0043114237608441654 +97 0.002966472316931956 0.0008517182168797181 -0.001999862347270397 +332 -0.0034127880545717494 0.0028110833802925 0.0012427954727808489 +139 -0.00043052730863172076 -0.004557781140739364 0.00013572726230317068 +140 0.008556539474557876 0.0016756228216673193 0.0005389174626934048 +2325 -0.0003893308962576601 0.0010461888586888119 -0.0009110932208354371 +291 -0.0008156669729460488 -0.0007256883023046896 -0.0056015785188042065 +292 0.0014619296964012531 -0.0023886892700016706 -0.00201852241280261 +331 -0.0051659444310447914 0.0007322967408406776 0.0002022408725657682 +333 -0.0003318507538171074 0.0035469299500551473 -0.0007712714720964572 +334 -0.0026708933736256024 -0.00117027214851644 -0.007523119974216317 +335 -0.00792529982682824 -0.004672831878350306 -0.0036526013425976517 +336 -0.002794831810690941 -0.001105817226808051 0.004045757540568067 +3173 0.0009755503347755696 0.001487906603694706 0.003741580282782934 +795 -0.0013398556829270357 -0.0003853758596228241 0.0007057328047278006 +764 -0.004890520462671821 -0.006563632051499753 0.003976018252126899 +1547 -0.0041796777948418335 -0.0017303513941111172 1.0197556129159706e-05 +147 0.007212268327277223 0.003829060773664829 0.0010759381544919661 +344 -0.002701097307472144 -0.002374075449554445 0.0029448397283056093 +345 0.002948181942555683 0.00011406987561358287 0.004295511084711742 +346 0.0030053900931798568 -0.002899629664719626 0.0011872607490999228 +347 0.001826385733630038 -0.0036448788847922835 0.001971928770429692 +348 -0.003149504438450352 -0.00028998499732042597 0.0009085432461182728 +1546 -0.0028814320695295112 0.002026162779222544 0.0023001981013294785 +3229 0.0028937008050528043 -0.0051878619642648826 -0.004722569614250858 +148 0.0035691101872830427 -0.005186410612718758 -0.007770935181973475 +343 0.0012037519488936927 -0.0012352126226876472 0.0009998523316030736 +1765 0.004662637051552451 -0.008695443360088666 0.004786351032797442 +146 0.004259418060689467 -0.003024585458704133 -0.00022391654517034564 +387 0.0010902136697008083 0.0014081679210436533 0.008903165277859471 +1740 0.0032397404923441135 0.00042683676411870195 -0.00393368636941323 +1744 0.0020414479940760745 -0.00088339177159427 0.0009220710924162349 +3182 -0.0011098921429008894 0.0028749115852043585 0.00039220535975993215 +3158 0.004769090484735709 -0.010093983210743564 -6.638999150653832e-05 +349 0.0019648098178967175 0.0022706386706325458 0.002148999403961305 +350 -0.0049912250838580205 -0.004735048108812528 0.0014735376595865777 +351 0.0008562207707015731 -0.005228441148849042 -0.004809376027508797 +352 0.003906831313677909 -0.004630550023905699 -0.007785522218688637 +353 0.007766077054797108 -0.002887699680199763 0.003298854693627999 +354 0.0007193007364508181 0.002099916337882427 0.002019834671977819 +1741 -0.004032675568287384 0.0007790448410687998 -0.0005813227435679493 +163 -0.003437745549375453 0.0026123352033605974 -0.003294513634489418 +355 0.0032117838366829358 -0.0009485471397335139 0.0026697914004436864 +360 0.005644242947072183 -0.001153449423795925 0.0006597790456952905 +1743 0.0007956066011656208 0.00026011748636405795 -0.0017313523707216782 +359 0.0032657968730046595 0.0053549085701720435 -0.0009573649877275398 +1742 0.006190341700020064 -0.002462726542710291 0.003149703986317237 +2114 -0.006680661105365231 0.0024215130563091823 0.004437419468318351 +1745 -0.0042710279349467625 0.0037678691539869804 -0.002682040630801851 +1746 -0.002477400571834007 -0.002368224869173558 -0.004315189064463706 +169 -0.006140687774315227 0.0030213422511477187 -0.0005351149833392401 +3263 0.004366761191215464 -0.0012716111048946203 -0.01013666960946775 +164 -0.0034215738689405886 0.0015436184958017918 -0.006015824512066659 +172 -0.004180622218429007 0.0027807375817318096 0.003635466440432635 +166 -0.0035722662764896404 0.0017051782061242521 -0.0014481536426706185 +165 -0.007021984552054002 0.003067808130265115 0.002358901492895314 +168 0.0012479082467478655 0.005383104367113352 -0.004475702045265426 +357 -0.0010584514908645816 -0.006432129357048799 0.001309317635480583 +358 0.005222464477106139 -0.0006515785475133217 0.003502113587913725 +361 -0.004351748389866291 0.002520557344488903 -0.0019264182035984253 +365 0.006702274319320981 -0.0025571969999812548 -0.004481170561551404 +1747 0.002222004357555455 -0.0024523684702585477 -0.0037301181194529685 +1751 0.0033460086542312245 0.00038205587955670315 -0.006713337717737352 +1752 0.0017380251731069919 4.410598022240751e-05 -0.003288653036943223 +170 -0.009315647509359825 0.000641123231811089 0.0014209778249988161 +171 0.0013807722524054272 -0.00044607941194365014 -0.004222934849951049 +362 -0.00198279691246172 0.0016221590141856001 -0.006470561608224697 +363 -0.0008474758143905378 0.005336559101677346 -0.0002275230929055451 +167 -0.005427919236518307 0.00362346933822675 0.001475845226693216 +364 0.0008580767793811538 0.002253257393545596 0.0012132987302933037 +2331 0.003788395756452632 -0.0071777517839323995 0.0011694128361659352 +1769 0.004381389041269897 0.002584829501181459 -0.0021425048984907514 +1750 0.0013605885976436985 -0.0013605405637626355 -0.0003897371290893595 +3162 0.0011235409046864361 -8.140596948010612e-05 0.0017247966693066789 +3308 -0.0017009762955230644 0.003271689556570993 0.0003627906361797161 +366 -0.001149786923211518 0.0019356196144125423 -0.004750738866846327 +370 -0.002706514094470739 -0.007756139291159102 0.0010185687284906728 +1760 -0.0011134626083829757 -0.0007521783548536686 -0.0027989514990153152 +1761 -0.002538509705192701 0.008581613485743803 -0.00016815954441391407 +3201 -0.0011539127519963987 0.001774708964762931 -0.008884813835878433 +3247 -0.005277717253460794 0.0025846297467861513 -0.0018457790573342006 +3253 0.002776483639053006 4.62026824239679e-05 0.005520537286207561 +3512 -0.0002625079893124456 -0.010027930823995307 0.0005717099398095132 +151 0.0013367291255604707 0.0020433371522526516 -0.0058887430130062255 +1967 0.004313608749474087 0.0002618783632803082 -0.00041313165768500223 +3375 -0.005587655250818483 -0.004396738033977824 -0.002778859056406709 +176 -0.002684450921222602 -0.0011007993369141743 0.0050355028456550086 +2145 0.0007819283337977864 -0.004683495591552719 -0.0018705283027533764 +184 -0.006041382961963426 -0.00041097875408040835 -0.0027556558066123542 +368 -0.0005482885426469416 -0.004475715542262185 -0.0027681420834425458 +369 -0.0006892620102130671 -0.0023927663178400236 -0.0018240399059190385 +371 -0.0016165528029220232 -0.0015703475134595552 -0.0030193143043239666 +1577 0.004964906187015274 -0.003547537664401627 -0.006288683601509525 +1575 -0.0009258260528331818 -0.0038055018732061187 0.0061535418896237195 +367 0.0016110773082294192 -0.006014243317240338 -0.0009438484498793552 +372 -0.0020048958749817212 -0.003066270831754161 0.0005668974732856485 +1578 0.00459901934963453 -0.002075994309152567 0.015470608674388231 +1748 0.0015935490526539082 -0.004631961265669164 -0.005927678504471143 +182 -0.004546710073774842 0.0005905034515154915 -0.006354124070107283 +781 0.003195914434777228 0.0007778104391669623 0.003289697720394958 +373 -0.0007608186979785788 0.0011736684339005582 0.00592694374883084 +374 -0.00884651268036003 0.00020962585822517258 0.004657211917831476 +375 -0.005110669010481737 0.0018555229353904147 0.0018455326260113443 +376 0.0014606598325046876 -0.004325202393085278 -0.0015985949569114256 +1573 0.0057736645583677205 -0.0025439729249162844 0.0023040670900209893 +763 0.005026579522868326 0.003947869226846273 -0.004009444842426631 +84 0.002830099485257549 0.002155790145444054 0.012951168665179402 +105 -0.0015691637556108594 -0.0005696076076662837 0.00034254601291532993 +183 -0.007258103006026933 0.0048676431791837655 0.00011429071969727497 +1574 -0.0030603491992196945 -0.0004657844836752697 0.002512969812791775 +1576 -0.00013929543519949184 0.001965412643409332 0.00224596686246889 +1772 -0.0025983033189741606 0.0033168876767127073 -0.0020114673507385765 +379 0.002189133723895715 -0.005676889826340984 0.0012665075471220066 +341 0.0034863387153448583 0.0004020808863942442 -0.0064270524955894436 +3132 0.002389083110601903 -0.008533878050645868 -5.919405132995514e-05 +340 -0.009817575219731419 0.007808443881886685 0.006379680695843658 +1771 -0.002236342327254433 -0.00623255617527669 -0.003591035459317832 +342 0.007129853012529889 -0.00020577787394960545 0.005853020746246973 +337 -0.001311719864633124 -0.006705466684007563 0.0070421181137778335 +338 -0.00036826842549784745 -0.0019266099144513984 0.007103321294751126 +339 0.00771924456931585 -0.0032576679343097976 -0.003370979691926571 +380 0.009393092970578443 0.0004417411264911617 0.0008654469686103887 +381 -0.00012305534382042908 -0.0007159233887796505 -0.001912110702289654 +382 0.0020943460797957594 0.001925356081331767 -0.0021776879757138216 +383 -0.000506309066887122 -0.0009187663468650237 -0.004840557719692987 +384 0.0038662507557602564 0.0008499231894067051 -0.0010105960672381947 +1773 0.00010302467458457719 0.0037208000978388245 0.0037091951904520285 +3081 -0.00548123539309086 -0.006533237451332047 -0.000861201601663996 +1774 -0.002988201475772413 -0.0027127317558380765 -0.007785418550706379 +1776 -0.002712626496082197 -0.0038097483983523433 -0.008410779226499675 +1775 -4.947078913046152e-06 -0.0017777172723987857 -0.006845164515094337 +1583 -0.004585518794441435 -0.004089446690945042 0.0045404532622654896 +1542 -0.0017678125053950814 -0.0038884288864713726 -0.011830766449287385 +203 -0.004600284447450605 0.0015915523104311341 -0.012407994488166853 +73 -0.000671095349807017 -0.0005468330690885157 0.0047893775482374 +250 0.0015130107074497958 -0.0017227456237092344 -0.006976142998252317 +204 0.009332211646251757 -0.0036059258094715686 0.005105099500543242 +389 0.0011235262208416988 0.004297466290835068 -0.002890893687684957 +388 -0.000997129640123589 0.001955415160039671 0.0020978946473910196 +439 0.006577915577293837 -0.001062879775591508 -0.00472642961607289 +440 -0.002083919039037812 0.0016180451469813366 -0.00199830135055109 +441 -0.005130176777332743 0.006142762896585932 0.009236310498308116 +442 0.0006385907070339325 0.001550905374384024 0.012089129855396223 +443 -0.0012506226405959817 0.0023245041852784205 0.007942047765295154 +444 0.0011599475076805833 -0.003368475740415662 -9.415550737774901e-05 +3087 -0.0023230281344061307 -0.007952427862343268 -0.0064389510980459395 +437 -0.010305793468399094 0.009484738358658325 0.000578212657228301 +3179 0.002488353730862256 0.005639460551972654 -0.014013161703705769 +3095 0.0011280574652195638 0.004440998656937913 -0.00585096268465095 +3672 0.0030955758403747526 -0.002010689483973234 -0.001683259628768683 +398 -0.0002605143454275149 -0.004341805868641149 -0.0017087409076608658 +399 -0.0004319440172526901 -0.002311240469867704 -0.0010115377120650001 +400 -0.003743653353713089 -0.004996800578769052 -6.737959771681343e-05 +445 0.0006523928258936432 -0.004926986192944648 0.004773288569737846 +446 -0.000824496114934727 -0.001974762423546275 -0.009927194178998247 +447 -0.005451717187118877 0.004478747239992424 -0.004101858606270392 +448 -0.013390340352748956 -0.001147013700449969 -0.003521596549784298 +449 -0.0024473887563834086 -0.006570693765812874 -0.013943561007210066 +450 -0.007515848444667766 -0.004547701781598263 -0.00438810545578205 +451 -0.0004839579688318782 0.0027428116334722377 0.0015763665949216292 +452 0.0037703206373715394 0.000791078653735705 -0.0075176224065419085 +453 -0.0016162272022409443 -0.002024077319594726 0.006375421578726829 +3166 0.007779446641812656 0.002020432137880898 0.000853265620452397 +87 0.0014822603413524773 8.647382799352721e-06 0.003908447027887423 +260 0.0015191126507932001 -0.006768593997637656 -0.003424781905479947 +3150 0.0012412545626432495 -0.0020616967152129024 0.0024953461806954103 +3246 0.01434078363108098 -0.0018419004011025286 0.008700883429772014 +406 -0.0004053768716363426 -0.002452572835369817 0.0020456489248401716 +414 0.002514838202433648 0.0003175858668010328 -0.005610614551918288 +454 -0.008131913280001011 0.00204263770970365 0.004086712751258947 +455 -0.0058138036580745005 0.0017344212393492434 -0.0038666663405294735 +456 0.0005075636075838894 0.0009821733218447959 0.0013289404369928896 +457 0.0040174060761813705 -0.0013270124572741912 -0.0037359457224793685 +461 6.110798206936708e-05 0.0009962906063527 0.0005942854212193184 +462 0.0025363721622080424 0.002611479822112311 -0.00045503120917659955 +723 0.0029112890786092186 0.0008882321833276017 -0.0016877678679313795 +458 0.0045187123308704944 0.003819742613502795 0.002019143500917777 +459 0.001828934672299623 0.003093536775250691 -0.0010292940262477926 +460 0.0017441310263817832 0.0004577216165981913 -0.001883828149229228 +407 -0.00227624400209749 -0.0073275019837831705 -0.0005880636526929659 +3189 -0.0016136558755296276 0.008030199299283424 -0.0007592235899663368 +409 0.0063082569866919225 -0.005616369713485738 0.002363821435802767 +648 -0.006194165504015981 0.0005218520852229614 -0.0013512358018297863 +647 -0.005284647357504862 -0.0004047419526336208 0.0015114532211126478 +3142 -3.523336002305963e-05 -0.006811980974426194 -0.00436903723447418 +3121 0.004950807785131895 -0.0034536004936024517 0.0030883571454765582 +3100 -0.00908117057514957 -0.00011571884317773353 0.001231553394406383 +880 -0.0010958240766496864 0.0009504154972167779 -0.001641154458232028 +888 -0.0015031471458969567 -0.0013694369492167767 0.002631961604390256 +463 0.0060003965797729006 -0.0011968200445428628 0.00027550389382187813 +465 -0.0023456729252155357 0.007346059474679059 0.0003363607534120437 +466 -0.003965879097228701 0.0003205309012289786 0.0031101318852222734 +467 0.0013622767153860526 0.0016368812679632828 0.001651939086303347 +468 0.004613286136169309 0.0007939201078044421 -0.0004505890630859835 +3107 -0.004320212252381107 -0.004473506289246962 -0.0033302944525905524 +3131 0.0034732980566188265 0.0055683843699011176 0.003829263160282366 +464 0.0068136655015774445 -0.006342571712836647 -0.0006548736010275092 +66 -0.0019112740397449846 -0.0010043859842885615 0.001741704814710755 +230 -0.0027027287934793635 0.002134939211288838 -0.0035467287140419517 +3155 -0.0030240228333546127 -0.002087404861405293 -0.0035292792950840724 +426 -0.0030680050027026657 0.002276559626309547 -0.002367924301502398 +3145 -5.234725270821074e-05 -0.001205974141217881 -0.0023757334011313062 +3220 -0.005128918797919345 0.001966059384143895 -0.0021925672577038104 +3192 0.00850901857576466 0.006197407732171604 0.008068854877345166 +3261 -0.0023986522307408637 -0.0004312504638462982 -0.002154786409400187 +3077 0.0027044183501283214 0.00041599910138497215 -0.004397220876996945 +470 0.0037548725209600132 -0.0012036091459607491 -0.0023969161548409376 +471 -0.003694044092889844 0.005942667142661808 0.0011398370590627702 +472 -0.0013830520611633006 -0.003632592728670041 -0.00484953187488952 +197 0.011186518960798563 0.0023647093987899433 -6.615594241540858e-05 +65 0.0017019636839419668 -8.295024430894132e-05 0.0022570121209270913 +390 0.0006800458006583494 -0.00030263059474750593 -0.0055578787131074945 +438 -0.000500813180407396 0.009661648860482805 -0.003943515220378494 +433 0.007843439019479249 0.0006471641132893003 -0.004525908820879075 +435 -0.006692616318058022 0.0005098440300953516 -0.0018453481813782726 +3209 0.0071627791242569435 0.010316791158059132 0.0012323956572796388 +385 0.006169625588964647 0.008493920285369395 0.0008259195169169264 +434 -0.001027673803809885 -0.00031466732311792903 -0.006632123937569553 +138 -0.00010767793223009114 -0.005697399361107477 0.004265593127584057 +432 -0.00628650956880073 -0.010492893651019837 -0.0023863527796466315 +436 -0.007724623287900811 -0.0018201775254712458 0.003687511778574155 +475 0.0023631722699339005 -0.0005842712742662443 6.233293630437206e-05 +476 0.00302190454241133 0.0021735972420214287 -0.0064144920240009964 +477 -0.0005424024123442542 0.0013153511057341883 -0.0022815785968916713 +478 0.0048731602462293725 0.0017742832538027592 -0.001264950211230255 +479 -0.005106507903845758 0.001855226921518988 0.005065396030096759 +480 0.004401736503053431 -0.0005120283503031014 -0.004404546596505028 +3250 -0.004228270883381873 0.005432763786101121 -0.00834076673029324 +427 -0.0008887346675261618 -0.006007741162803239 0.0038681005413264847 +3252 -0.00027231090853926037 0.0020112522544817706 -0.008540939854404603 +488 0.007791420834671487 0.0029883199310360687 4.591659506252718e-05 +489 0.00256828656391387 0.0008864962264920284 -0.0010615764752241706 +490 2.800786780397377e-05 -0.002071497431148776 0.0008995460558225741 +491 0.0007310008187968041 -0.0037204548733438063 -0.002308236291815854 +3119 -0.00579325810045137 0.002020002991338124 -0.0017042485712090627 +3134 0.0009618836553748837 0.005895949227454724 0.00035697196893461227 +3156 -0.0032374155784879546 -0.00295375021570358 0.0021472630370849666 +3185 -0.006582088863102125 0.0009977247580789965 0.00037040776194260006 +537 0.002163436602677984 -0.007321956358508896 0.006453150009531137 +3122 0.009559734926076093 0.0032902258067329087 0.0037544937057184076 +538 0.0027289313339404686 0.0018126832815204298 0.0012462776812597867 +487 5.1352431367430185e-05 0.0025936065393410705 0.00023722006010825473 +492 -0.002115511938201662 0.001927588228167659 0.0010112162756702268 +539 -0.003861137873269451 0.0005137688761845774 -0.0005513460814248772 +728 0.001367476759611446 0.003973706678964036 0.0036429869300294527 +3243 -9.882927611283988e-06 0.0015744119220607717 0.014977707147407709 +3113 0.0015117120126618253 -0.007031627532794569 0.0013448817627334181 +3136 0.0024429358389326493 -0.0008670867095685998 0.0018444036022875693 +493 0.005751024063529722 0.002049704330041883 -0.00017458769794448834 +494 0.006060132547113017 -0.0002287492194421555 -0.0010698925279335949 +495 0.0062024773103817035 0.004795740392258196 -0.0009043157968656619 +496 0.002444330149355368 0.0030998961001733076 -0.008082231006840144 +497 -0.003779794256720214 0.003264693568394349 -0.0013600176629294046 +498 0.004642930410742737 0.005802810010282621 0.0001814104024163827 +3097 -0.008550979772542638 0.002785028837510654 -0.0019553285986985604 +3138 0.007780244809479696 -0.0002589501030408127 -0.004271712920250788 +3180 -0.0018777628267208288 -0.010238719342715658 -0.000652900268811179 +3254 0.0006844637720887895 0.0010595468257034821 -0.004917631660191173 +3125 0.0022676134340519584 -0.006329881102959255 -0.00676242284004001 +738 0.0029440898881513923 0.001505919157809422 0.0029150633022110204 +317 0.0019209617042674266 -0.0019198663690908888 -0.003963950258346405 +318 0.0003564501171190609 -0.0045236495934743 0.0012268322707069098 +3133 -0.00438585646143596 0.0037274600637270693 -0.0018899219700514974 +3135 0.0004807277132410914 0.0022852074851377763 -0.004455080113842409 +499 -0.005025726481026649 -0.0006524727258433685 -0.002300406427294897 +500 -0.00815431009021056 0.0011791862260051432 -0.003164336137436212 +501 0.00011567442599780172 0.004454205704649259 -0.00032583203092646107 +502 0.010022142263982896 -0.00630578854364788 -0.006865649195083914 +503 -0.0011294111853351245 0.0039968863476048016 0.0012324900288695703 +504 0.0009527789259310312 -0.001994859029522539 -0.005599073024946059 +3130 0.0059767750532386974 -0.003253377822313265 0.0011050239971754727 +3096 -0.005700994706202954 0.00898382717288385 0.007160453353826285 +506 -0.003687793938818179 0.002757952489127397 -0.0015914105581428901 +507 0.0011029930407906042 0.00321561572513148 -0.006101581534620054 +313 -0.0006792097956834131 0.00019860284849658252 0.0033195080779211622 +314 0.0033645236297657234 -0.007204910598491899 0.009549552990108946 +315 0.001589794697463209 -0.0012425293154283562 0.007964925232143207 +316 0.0033335843712725926 0.0005218586532235501 0.0011001777388414294 +3213 0.0016542188821153314 0.0027190100467138997 -0.00404031168269069 +505 -0.0034970471789476975 0.008340897889720167 -0.00012372694308983138 +3240 0.0007523255019441402 0.0032677803041647724 0.004081048025596983 +510 0.005564897947164237 0.0028173833431580234 0.00955414744352074 +3191 -0.003059834690608872 0.001043456855226955 -0.0029255594537232923 +508 -0.0019601251847562117 -0.004742532902942731 0.000803377835268068 +509 0.0009764901012207112 0.0031909380662392796 0.0015748778616865894 +511 0.0026755047288098345 0.0021965318242252734 -0.005560757486394889 +512 0.004384058809880665 0.0007167412747414476 -0.0007521660100846148 +513 0.0040208765141235515 0.0029968154308792675 -0.0033608045836654023 +514 0.0014367413069044622 0.007738975842166813 3.651976918988535e-05 +515 -0.0027266440944503163 0.0036123900769322597 -0.004804681115819437 +516 0.004360728143709321 0.002022891723492974 0.00031998018504376567 +469 -0.0010478706696414757 0.0027509593488735146 -0.0015372415821983323 +473 -0.003450831077255215 -0.005450277160128516 0.00014821361829330876 +474 -0.0008422552354420012 -0.00703254069153615 -0.0018756749656058177 +3215 0.004268845720745852 -0.0016930965960459251 -0.003238184399539825 +3151 0.003535241950828453 -0.00016940709484992555 -0.002393741570199657 +3239 0.005838338334926753 -0.0030523521477884845 0.001978697054295878 +3205 -0.0024664854220923355 0.002819970784259062 0.0018512023930897983 +3248 0.001823401426235847 0.004916482329667355 0.0037049747744542392 +517 0.0030334503331631985 0.003523393972282746 -0.005185848784929929 +518 -0.0008113851449600639 0.00025983435574970613 -0.004926521417245541 +519 -0.002985514782798714 0.0068200346489725805 -0.0025420775776472627 +520 -0.004902134369668112 0.004178646470860405 -0.007417505279510463 +521 -0.006687637124598742 0.002052373650945386 -0.004282008485374258 +522 -0.0017710736515108667 2.2935129834838234e-05 1.7993202901449344e-05 +3217 0.0008228733041916448 0.0030575167520114216 0.00020376059192756042 +523 0.0016046826863387043 -0.004924850355145456 0.0006670128567726767 +528 -0.000875106333696323 -0.0007816959172402215 -0.004306533073984215 +524 -0.003215386359995726 -0.004899552780336894 0.002541429751620478 +485 0.0011415278468957526 0.0037550258302544255 0.004901206604738131 +486 0.0006925205569733448 -0.002735226039831722 -0.01308190239527047 +481 0.0031316855374405733 -0.002230254841366234 -0.0037271193421813667 +484 -0.004136468582590521 -0.001182502217293716 -0.003676977084547093 +482 0.008994848489427882 -0.0015279552082775706 -0.0003096259183078103 +483 0.005061700772365444 -0.0004755121391829153 -0.002606406806066856 +525 0.001568126649486757 -0.0017762942686054529 -0.00027130476427248286 +526 0.0035124986427330055 -0.0011138333178479416 -0.0002023028436423739 +527 0.0025078920142954783 0.00015608051415575607 -0.009107196832739911 +3099 -0.000933136374986474 -0.003527701292573692 0.0029337421456261154 +3222 -0.001127246031416316 -0.0040188868024770025 0.00470424635517072 +715 0.00336759703343117 -0.0016219075716830183 0.004767419205687457 +3103 -0.004425534856901159 -2.206518620985897e-05 -0.0014729787182825574 +3204 -0.0031296371829028754 -0.0026738720905667827 0.010612273756021964 +3160 -0.00119800807401413 0.006661607788295466 0.00016259415677013941 +3161 0.0050417206816495055 -0.0038891505613613325 -0.005395139627892323 +721 -0.003168045532573489 0.0002995700089089065 -0.001590658851026244 +3244 -0.001774820602917417 0.0028487553883266674 0.003964229971938768 +531 -6.527458466059987e-05 -0.000697431818483618 0.006300362696450773 +535 -0.0001938899199990359 -0.004014200668057423 -0.007466638969485642 +536 0.0036185044986819024 -0.002900011445925786 -0.00016287534848240408 +540 0.003578518351410851 -0.004200142893961027 0.003749092958664432 +3168 -0.0033404181583954477 0.0011276081644659036 -0.006271965022273697 +530 -0.0014859127709524454 0.0041784068330463385 -0.0002978352439617001 +3129 -0.0031692361282016058 0.0007680430493720998 0.003018256117398801 +3171 -0.0036354571776238604 0.0014134831463595056 0.0031962679760364817 +3104 -0.002629554362296331 -0.0019869945788465646 -0.009390110676445896 +1922 -0.003392600879200444 0.00622066580110241 0.009787489040461296 +1930 5.683346663435058e-05 -0.0024090457367044096 0.005610575138870282 +1929 0.002693447976083471 0.0038328270009273546 0.009147421844649454 +2130 0.008302745613356323 0.0005144668947840475 0.001633086797060286 +1931 0.007342421088835709 -0.004821856956465344 0.0043978801741858765 +1928 0.0033374924039904588 -0.00046035484369742904 6.860272257647097e-05 +1927 0.004366424801748478 -0.006173683093210944 0.002689217243615018 +1932 -0.0024230145196332945 0.0007992293060097571 0.0031282869669076907 +2126 0.0014964736833585188 -1.4260034935340768e-06 0.0022212720588453477 +3188 -0.004100877187540588 -0.005748989488844269 0.006283790680887872 +541 0.0018103469009879188 0.001063478415404351 -0.0003083818818671045 +542 -0.0023081072011404326 0.00027570046070958336 0.0006014723563356753 +543 -0.0034008639798771565 7.488472281841256e-05 0.0021481609800924127 +544 -0.002122324764985014 0.0045374377026983865 -0.0014552525543796507 +545 0.0008409874043447061 0.003804154554838497 -0.008639365058345703 +546 0.011211406477905814 -0.002532597663567556 -0.005458278132483623 +3137 0.004986622738860563 0.00029980002175963464 0.00021878802716362032 +2127 -0.0010439805480810449 0.007007846460281422 0.003107800971883997 +1937 -0.00015354728087933037 -0.001937595192363274 -0.007703953957809757 +2129 0.004263105571757841 0.00235410488337646 0.0034127471867617678 +2128 -0.003851317621434891 0.0033850175349557053 0.003562267569795562 +1940 -0.0016799427778715758 -0.0014752152630574766 0.0010855271739694658 +1941 0.005114785941695438 -0.0010409996112582954 -0.0011284275555703634 +2125 0.0030124322210657237 0.0007150851248329647 0.005215515888248596 +733 -0.006219765400662498 0.0007765353165593953 0.002557072424291514 +356 -0.0028527891644945496 0.0014181529914927438 -0.0002653065933471541 +551 -0.005460874206842858 -0.0007757882731215522 -0.0008104083623924753 +1944 -0.005973127683779687 0.0010148376425631247 0.002863237608151762 +1943 -0.0014627087513699264 0.002512857184868597 0.003257407749198872 +1942 -0.001665827541499236 0.0018179762645832021 -0.0002549330076184245 +1945 0.0010872579415234901 -0.003017517940292426 -0.002133427248760145 +547 -0.0004475462246164916 -0.005773255404901426 0.00030703122278973353 +548 -0.0012377696841254008 -0.009427722355005597 0.004338009441337854 +549 0.0019201436111360725 -0.005586870773579279 0.006097223473694474 +550 -0.0010391989852767147 0.002263759560886674 0.001832223125713162 +552 0.0037412261931996744 0.0030844211213012563 -0.0009939179900991496 +553 -0.0029610532543360357 -0.004019253641648409 0.007627208169470656 +557 0.005334726595413406 -0.005314241199098905 -0.0002674061903156136 +558 -0.007688123387711919 0.003036107488931483 0.0036237524970743574 +1939 0.0024211859082079227 0.004767267955140763 0.00424666447859016 +1946 -0.001918967210085722 -0.0010108800362441123 0.0019051775075350533 +3165 0.0006589396699268166 0.0005426055571301399 -0.003116624502570954 +1949 0.0030282195504154202 -0.004312572292208473 -0.001821952299214668 +2133 -0.0027706486327059828 0.0009708475032433155 -0.0017483842891473445 +1950 0.0007324164178540971 -0.0007767026958339838 -0.0042134581798238405 +1948 -0.0004495825458919393 -0.0039439599744366975 -0.0025631844455643754 +554 0.001938034209509147 0.00172139362773533 -0.0022046283018138106 +3076 0.001372036097233785 0.004600263315910831 -0.001389383943457692 +555 -0.003228901087384157 0.005051413496223522 -0.0003888768042471341 +556 0.004526621843598761 0.001881231533693766 -0.004215928149565098 +559 0.003194173583856176 0.00037904365717879426 0.003822382420222812 +560 0.0024470394602862326 -0.004532522182902236 -0.0033783061521016284 +561 0.0004862268595822745 0.0008552817075402892 0.0006262466055733914 +562 0.00396730560641708 -0.0016023991716564874 0.004028298939839656 +563 0.003299907828066397 -0.0014873055194656295 0.001447650267471603 +564 -0.0014373683649879516 -0.0018591148386241302 0.008985671984845348 +1947 0.003984372399412218 -0.002819687779626154 0.00040154590976032226 +3080 -0.001203762286390223 -0.004791083989105842 -6.639901119518332e-05 +3237 0.0014337445407836323 -0.001463770599384054 -0.002912989061549999 +129 -0.0015942298022410823 -0.0018101209350965333 -0.0038664192103605773 +886 0.00020826528288366868 0.000732128535213052 -0.002649636256831341 +752 0.0004733163296352567 -0.01030612750406165 -0.0035085123429871652 +2146 3.321505376146118e-05 -0.004916885549778069 0.0027847048459640968 +377 0.005046945437744217 -0.0027575564478361583 0.00019113292425749413 +378 0.0076474892961462945 -0.00477123065267456 0.004808463244890565 +3175 0.00028395744322854457 0.008780232561100013 0.00449170409787173 +565 -0.004329535476372759 -0.0049975598623179275 -0.001597212059914202 +566 -0.007866113988318319 -0.0030910982539031216 -0.006610942436607868 +567 -0.004561307257060223 0.0009012662343837621 -0.002961932810014773 +568 -0.0011201993684881138 0.0009737533764104707 -0.0008233608482268478 +569 -0.0003785739665374887 -0.0007381227963540642 -0.001439302934859119 +570 -0.002121809158397632 -0.003938053920189313 -0.006340376333447219 +3148 8.008431664840432e-05 -0.0057708723883964225 0.006732391418062048 +1961 -0.007333938120835421 0.0007400112041634329 -5.062688267164592e-05 +1966 -0.004893539685105532 -0.003685647450126201 0.004219692690602449 +1965 -0.0024314243900639856 -0.009206642706148894 -0.0002175967556254743 +3083 -0.0005632107399261846 -0.002092898322092204 0.0029595404969515082 +3177 0.005542070434726216 -0.0064231084815870605 -0.0005520585575549987 +571 -0.005887779022149858 0.00032976470086123946 -0.00022250868362797276 +572 0.0002889878629124139 -0.0117381908175392 8.77299915182052e-05 +532 -0.004087623563858985 0.0007330636168074341 0.0016115031816006083 +533 -0.002412425560675665 -0.0012700770111073378 0.0001483044148616775 +529 -0.004870158688571734 -0.0002978585556774299 -0.000576688391936459 +534 -0.002643374824133274 0.0019697480762193914 -0.0029272499187113685 +573 -0.003881567889862884 -0.007039025683768058 -0.006016825492952798 +574 -0.0036631918797314644 0.0042433558890839634 0.006440058658187044 +575 0.0008940283401114583 0.0019499325926571344 -0.004888016948780939 +576 -0.006669482895808665 -0.003351724813943233 -0.005825869112137053 +620 -0.00010641529376485468 0.005529521155100715 -0.00032622519241418184 +1964 -0.002281047463383366 0.0012795160316704734 -0.0050147539282889685 +3167 -0.0014373680203773405 -0.003365090457585227 0.0003492635903420996 +3178 -0.0005138826913673712 -0.0006569430018806024 -0.0012497705396958888 +1921 0.00226257864113387 -0.0006559509345448445 -0.00235180905064026 +879 -0.0030937267621223776 0.0022960942478765117 -0.0020303164966886914 +722 0.004020876685130152 0.004688498682893548 -0.002898602373703556 +579 -0.0022946305093530105 -0.0016037718169993427 0.003057716714212448 +630 0.004375546412739993 -0.002448772398210957 -0.011070688829205002 +3531 0.005237932246127842 -0.0043553880090041 -0.00886550808660098 +636 -0.0007019785074069002 -0.005889561971715689 0.00533982543272745 +635 -0.0033520812914675856 0.003168890795499838 -0.0039231315492034 +632 0.003311405654284226 -0.00218417319808544 0.011417049217874854 +631 0.006589497520399437 0.007696486407621179 -0.009981424345891412 +629 -0.005877279384370393 -0.0063281560591139365 -0.002864676689548441 +628 0.0008119146853459653 -0.002333176812963619 0.0007349560484780361 +580 -0.00214409067627418 0.0019859565407051275 0.005559936265990803 +3454 -0.0031913060777432143 0.0100365295126248 -0.0013152952848789275 +820 0.002744828486090002 -0.004251113434269328 0.002164752427110827 +821 -0.0021704423681992383 0.0015169744876445581 0.0002358476127805128 +625 0.0014882986875884908 -0.00016044399587712013 0.0009135292797805623 +581 0.005544638359046446 0.002761398553169804 0.0063054690486890694 +822 -0.0022398760792945904 0.00045850990828613143 -0.007507748003082477 +819 -0.004162025421434337 -0.001190011290583785 0.005294174669458707 +818 -0.0012372883217194436 -0.001475307628959368 0.0025797244334336464 +817 -0.004478661992041453 -0.0007725928155717883 -0.002213595191429313 +641 -0.0016989423999845075 -0.003986821624058905 -0.003084557452906184 +634 -0.008205489000864428 -0.0046583437830022365 0.009411084744010017 +633 -0.005630596827561488 0.004225169075218563 0.00037522370598324105 +642 0.002104018886371541 -0.00674093313402238 -0.0036160749661526357 +640 0.00030731178874825876 0.001382408116550535 0.0036276417930671953 +639 -0.0026593030216315824 0.003929741236073436 0.0025262804197326164 +638 -0.0005234715141970023 0.005126567531570231 0.00589111016505911 +637 -0.00031028333442824476 -0.0017390761363420284 -0.009807079189490324 +3172 -0.00345031863532009 -0.0028722139507691554 0.007602454582968818 +833 0.004457774665776559 -0.006602279159297221 0.0020756838990300297 +834 0.006818838326113079 -0.003498411242563501 0.003458310701173199 +3242 0.0006942774021164928 -0.005567933850423953 0.004761189819192271 +421 4.1354964620445265e-05 -0.005556592026730756 0.008459573657189877 +2320 -0.00090547303326619 0.004365668400391127 0.003732598882047516 +832 0.006106381949562407 -0.004967513330733945 0.00666077355719258 +600 -0.004667040981706111 -0.005839920802092903 -0.0005016824389851214 +3564 0.00039662334582771914 0.005245050759327359 0.0014107844879387421 +2141 0.005698379367994238 0.005362844963085817 -0.006098483989581682 +862 4.848081553618139e-05 -0.00786592432342766 -0.0005903850253537684 +3176 0.00516025538415961 0.0035237895860908666 0.0027357969530434623 +653 -6.541229853385611e-05 0.004359311956324873 0.005153985051256438 +646 -0.004380687940316987 0.005932722110629618 0.0010717874607043688 +645 -0.0036334436915396212 0.006077960906756827 -0.003289403042284149 +644 -0.006586810922253253 0.0002986954385970707 0.004401008057063596 +643 -0.003704230066025888 -0.0020706902641013827 0.001759074517809221 +835 -0.0039971099063305475 -0.0002920397552113919 0.003934132619598876 +3218 0.008948280309763983 0.0015613503700851975 -0.0019478938256462597 +3636 0.00297518885780554 -0.00027505734331355233 0.010708748381280426 +615 -0.0011497537349505497 0.0006688956116101576 0.004991492650573683 +3085 -0.0004508596541024779 -0.00043402382631724907 -0.007103065086343202 +696 0.00024713290650616853 0.0006420709480574592 0.000522162004758 +691 0.0013462446984304054 -0.0052775943167342534 -0.0006640850357862605 +3190 0.003233305237633945 0.0012795085573013647 0.006773125494834891 +846 -0.009216100806675644 -0.0009810131557830887 0.0010019755245177116 +578 -0.0006720916152605335 0.002220738856646083 -0.005700836208702882 +655 -0.0003059075481394571 0.00588726283020881 -0.007669968385079095 +656 0.0033390722002148666 0.004780426287258681 -0.0003120489929675113 +660 -0.0021381830265778585 -0.0014927749132562344 -0.005109832016617817 +804 0.004554513638890234 0.006663572190601757 0.004395241994700042 +654 0.0007454203595361527 0.00044405786953012686 0.004253609912796519 +649 0.0010268507669112116 -0.0023178427293036514 -0.00048819445742021613 +803 -0.0065496047355095436 -0.0036085268319101206 -0.0013804524840475142 +658 0.0036019211800777003 0.00032617004921645624 -0.002005905930581021 +657 0.003187870327832213 0.0012398766571791002 0.00017584862186774479 +652 -0.0007413073064078756 -0.0018786717048336124 0.007135268444849985 +650 -0.005735211564992098 -0.004046394533944853 0.006060066436422865 +3144 0.006474833236812301 0.0008639216075990009 -0.00219617109697029 +3157 0.005878659548580617 0.005635014573069178 0.00703190571463762 +3233 -0.0017843648047892904 -0.0004647193767557818 0.005205657319387296 +3249 0.0038587849248004286 0.004880673240990044 0.004545007406875091 +3260 0.002214430707920975 -0.0028402626789106496 -0.006619104206335118 +659 -0.0035703850433413922 -0.0034796684846057037 -0.0021062608385156944 +845 -0.004512513677864395 -0.0013322346962463753 -0.006175703902299134 +1581 0.00238578803355573 -0.0006408209696199838 -0.0011010323220390528 +1582 0.0021930075182062915 -0.002951869010853234 -0.0008447963620722134 +853 -0.004477383213966562 0.006143569589468841 0.0008186356664852151 +3123 0.00600428233509114 -0.002298997093488337 0.0053110724276727965 +3183 -0.0004221350174768984 -0.000458796057470973 -0.008743603649650813 +3212 -0.005090582780906284 0.001808598051294371 0.002153376813663494 +666 -0.00046899544226412603 -0.0027888086664617315 -0.001067400060080231 +665 -0.008227336980636797 -0.00676405381619436 -0.002272611388375072 +664 -0.0019869172955022598 0.0010406368544464794 0.0014902008913780654 +663 -0.0007696916672688999 -0.0015710316443005106 0.0029197837579597588 +662 -0.00027423413532009285 -0.0019635467756376414 -0.0012357402334174526 +661 0.0003208726979635686 -0.00023399445163888543 0.0024456408432994474 +616 -0.002381871018448187 0.0034707472296100356 -0.00033591534202251166 +85 -0.0013841664561349647 0.004785490893555733 -0.0010227038977226202 +858 -0.0017525673038486752 -0.0010315611022465175 -0.003494615086661294 +808 1.647688034598035e-05 0.0038688141158489823 0.006355147158666976 +3143 0.00552589577213381 -0.0027124063787690575 0.0025379664747790013 +3174 -0.0008924819535821001 0.0013836685665584343 0.0021932908090971127 +766 0.0025390831121148674 0.006613817600985631 -0.0006796505390418043 +627 0.0031797409412871987 0.0021713377705256244 0.006311190378742216 +626 0.0023894932706816038 0.006945773257396664 -0.000800834443300775 +3093 0.0015053182127015877 -0.0030534755417980703 -0.0013619984281209583 +670 -0.007684018850295139 0.0005464866407839274 0.0019680479665075052 +667 0.004336266316529172 -0.0027537759080572 0.0026609012661734815 +3086 0.006404812262473789 -0.004835629924774554 -0.005436094898771843 +672 -0.0009920349467224705 -0.002042812566952267 0.004875347477603159 +671 -0.00406218572180259 -0.0009235342014076975 0.0025148771738943265 +669 -2.995505149149469e-05 0.0007249334898185659 -0.0035546516163646185 +668 0.0005802252278856536 0.0025180799733766847 0.0022534151577615793 +624 0.0036214907353292994 -0.005799977724963607 0.003458758394229984 +623 -0.007637448011846348 0.0012006177843687756 -0.00033477031735799857 +3098 -0.0025694801492218587 -0.001489472538200418 -0.006328493593654709 +3255 0.0048357794839180785 0.004682358822378599 0.0018998688488123929 +619 -0.0028896959668142166 -0.0012702445277115915 0.0007818780897077429 +679 0.0007587873624220955 0.006494850353509171 -6.386482485000099e-05 +3187 0.0019427506272498782 0.003957933170018035 0.0005149859822735939 +920 0.0038563493465553367 0.0017972251337858465 0.0019505391970959143 +919 0.0042997206399828045 -0.0005148003327548196 0.001383461745830013 +1926 0.0036976211214750994 -0.0012113543833142059 0.00041791597089973364 +684 -0.0020077105795565935 0.007059968837399464 -0.0051055109919112196 +683 -0.0006292118497389226 0.005608856350600185 -0.005980004804006394 +682 0.0020378656804816743 -0.004332911105362859 -0.0005283076588757841 +681 0.002430684574988883 -0.0036243450911491223 0.00394221501231262 +678 0.0019344229337516687 -0.0009948072750607189 -0.006517815285027755 +677 -0.0004700614243319581 0.002678615376507039 0.0004838485839545389 +673 0.002168730549006072 -0.0034594228595392997 -0.006225694579337203 +871 0.00048002214838554905 -0.00626278570440959 -0.001026936954580656 +872 0.0016013712560315472 0.0024639942927323377 -0.002381229525144297 +674 0.0039461256805183335 0.0009127996197754159 -0.0075267046254296225 +727 -0.0014737027261252798 0.0014469547835449105 0.004914808410722564 +921 -0.0024433417747672585 -0.0038377361573925855 0.002765292724656354 +922 -0.0015406025864166757 -0.010017201718594104 0.00807177901100105 +868 -0.004776530496712308 0.006334807723014204 -0.0020739305900447595 +675 -0.005058253208259497 0.0031040573465168295 0.0008630114835779052 +873 -0.0006454762692247174 -0.0008488185212736845 -0.0010358868579243188 +428 -0.0029677068879119806 0.0034831616045440214 -0.0004670853129860808 +680 0.004105876812964706 -0.0024926982022371725 -0.0003332917782657128 +3258 0.0002888278730676365 -0.006243681942864454 0.0034918155185653193 +878 -0.00634931379857504 -0.00020717979825160478 0.00653931550665377 +3112 0.0055118327915377515 0.0038305715206589435 0.005527169987840613 +690 0.0005368432608256655 0.0014252258591251979 0.002693379702115491 +689 0.0009344745793526279 0.003070786512994057 0.0016527515534491503 +688 -0.0016448084361478787 0.00018452909672419518 -0.0004099914261404467 +687 -0.0011012129898700718 -0.0035716724044352628 -0.0005696060734601458 +686 -0.007776823212515952 -0.0037728670937690113 -0.000243013087563982 +685 -1.0618331881640206e-05 -0.0029472936583400905 0.0011381124470265618 +429 0.002252131355307607 0.00730615431478252 0.006251365695678472 +1962 -0.003006691307852444 -0.0009334800629607164 -0.00017037722739558805 +3234 0.00478436176577165 -0.007033440554079405 0.007568850772311113 +3357 0.0004813713054662668 -0.003212920492535873 -0.004086168797796892 +929 -0.010600512642099246 0.008428441419524901 -0.0030550934858199373 +930 -0.0015463026573419893 -0.0042952498566457675 0.0006451037715114904 +737 0.00361236355399735 0.0010457575010413905 -0.0012921424721088293 +736 -0.00025992564449382483 -0.0018349441054779916 0.0022707416767939977 +884 0.005071546274130525 -0.005139289571142786 0.0117071617494761 +885 0.0036097451159168934 -0.0025013390590168257 0.00031361875827291564 +744 0.0023884727699594686 -0.006247419417822505 0.0010124486645018312 +700 -0.007079413515260206 -0.010715476924679373 -0.012772460908464536 +699 0.006859106066830419 -0.011387468010764203 -0.004539796432259876 +698 -0.00040577005780628245 0.0034266460453293815 0.004491677884772769 +695 0.0034050620838909263 -0.0031335906168690124 -0.002519333609111669 +694 -0.0020290845748222254 -0.001331055245100553 0.0026649241806047134 +693 -0.0008549328224685078 -0.0030885249595000224 -0.002292894005971907 +692 0.0018982925234500075 0.0005682258300823936 0.0007117909395748632 +3194 -0.0003661417864625461 -0.0035167067952078944 8.671364976870772e-05 +697 -0.010277846973644752 2.0738958071491872e-05 -0.0017920053209959973 +743 -0.0032147708208219794 -0.008554992681415853 0.007332120690128665 +702 0.006035175456101921 -0.0023290661784128035 -0.0037065743043084697 +701 0.007962725283621592 -0.0025015947108849995 0.005590063735834766 +742 -0.005722334800978766 -0.005690847787494213 0.005353892050960501 +745 -0.005382979937286013 0.005911395290876443 -0.00034893321757300025 +883 -0.0029235436397736002 0.005438134862815833 -0.0012754005654704891 +898 -0.0028960407647400546 -0.0084066372131911 0.0011438701268707005 +750 -0.0017951068897984683 0.003283990548778044 -0.0006545838736269722 +3153 -0.0025224497189575276 0.0013811844127419176 0.00074991097092074 +899 -0.002976839784136216 0.0056043922201764315 0.0029844652688912625 +897 -0.006799479290776896 -0.0073726364301901215 0.00272992466537081 +651 0.0016003054352233537 -0.008005111726004962 0.005250126613514833 +3108 -0.007097721689231075 -0.0012362526187245824 -0.0028859024647180636 +708 0.0036128867817716618 -0.0006247835781972635 0.004526943578788225 +707 0.008778957149265673 -0.004445678808639219 0.009302174511468695 +706 0.001954097114525282 -0.0017357609911732572 0.005010601607257354 +705 -0.0051323485121546894 -0.005077167104915503 0.0032061836695060713 +704 -0.0015686596730000112 0.0009193403416915074 -0.0001336626517498589 +703 -0.004903476278611217 2.1607779557170313e-05 0.0017662376293967035 +895 -0.0005728262095339755 0.0009629433153476547 0.0009172540722021158 +896 0.005077980509995096 -0.004398378220734661 -0.005075419251580012 +900 0.004032780928898812 0.0027225845981652982 -0.00285704277158725 +3210 -0.0025232641804752284 0.004563250816076341 0.006172771118721611 +749 -0.00011458421146487752 -0.00011041213923044701 0.0002725833504619518 +945 -0.0016309499693672735 0.003041273278647417 -0.011899897800839792 +944 0.0008857246234904428 0.007066442713217396 -0.0016039927695556332 +748 -0.010401248773456127 0.004967681001051335 -0.01095403323054508 +3094 -0.0016723761747656552 -0.006090493748718211 0.00571537804898608 +3079 0.0030955411912465497 -0.004223303680451307 -0.004935657295404671 +709 0.0012682510359082225 -3.8120447485688255e-05 -0.0013558092481308704 +408 0.0026178131815163784 -0.0023399437576934585 -0.0016239205625533145 +714 -0.005704058785948385 0.004281450212573388 -0.008891640704047105 +713 -0.006253880029446248 -0.0009595575010873139 -0.005147852080167337 +712 -0.00114545916698488 -0.0026504991965629636 0.0012075893271754146 +711 0.001365874533619931 0.0045430717610220476 0.005422735689680404 +710 0.0008121133827169521 -2.8784445157028177e-05 -0.00251242875829675 +3073 0.003651397302574473 -0.003198141079384019 3.606704563808379e-05 +3208 0.001871112873666677 -0.006977741211339418 -0.0029730279456058007 +3074 -0.0054940213674587336 0.005934348251846199 0.0035945436186985815 +904 -0.005980133060367637 0.004128058719225201 0.005639620135287234 +26 -0.001182290978307888 0.00021433074848431087 0.009803188334216159 +720 0.004102330076556347 -0.001759102374760068 0.0031441678605388583 +719 0.00024552221275989957 0.00012820540095718916 -0.004540312001722162 +870 -0.0010009161640124286 -0.0037243719258106987 0.0029098022934776167 +3232 0.00019229255817375686 0.005170044438234584 -0.0018983309706778883 +676 0.0003002054747670388 -0.00512660328605611 -0.0019320952055046972 +3126 -0.006842618860660657 -0.0017703239374129447 -0.007321290805898836 +3226 -0.0015711731096374306 0.007496898512626457 0.004585645469865351 +3114 0.005921892081212568 0.0016609193675562895 0.0032340114465837892 +718 -9.289044032638987e-05 -0.0008349108141976519 -0.005423732405544851 +717 0.002489048854024445 0.0001266840792521469 -0.004758062199949072 +716 0.0017649214196338479 0.004306223299116644 0.0005153193888125057 +869 -0.003356536407884815 -0.0029275804844797557 0.006780375687358663 +3163 -0.00428235209345035 -0.006254362165624251 0.001109408495310607 +3347 0.0034863664223763633 -0.0002461042827696563 0.0006981475657799328 +1960 -0.006954622140237092 0.0003634349973618624 0.0003108376671652225 +45 -0.00028463449606177025 0.0014903070130297075 0.003569290839663456 +2306 0.0031941359527843075 0.005737198559506153 0.0007114956298978359 +2121 -0.003508840534552691 -0.0029577494399395305 -0.006371055377276624 +2307 0.0042442761140186495 0.002376707121245914 0.0004878958317082561 +924 -0.00015239593303786634 0.005812511122891328 0.0008606626905818106 +2316 -0.00031746925756134277 0.0020043405984637385 0.0029942778280234593 +916 0.00025576213567962474 -0.0036130181203091706 -0.00339050567654855 +732 0.0012538902387729898 -0.00033135588167321526 0.00722083249627519 +731 0.00021768671369802923 -0.000595474249999594 0.0008121800922145071 +730 0.0018932300267985108 0.0016746546632611637 0.0015071106686895888 +729 0.0003847719568395252 0.002438897015644224 0.0009542310183545036 +917 0.0002772600330426658 0.0044443912972020865 -0.0008501108070829287 +2119 -0.0008197996035099987 -0.0032428346715352575 -0.007614163098991004 +2120 0.004789942220431843 -0.006156349123021006 -0.007606145223234804 +3092 -0.007054187696295504 -0.005984596990819065 0.006328001286547613 +3228 0.002220048676033128 -0.00759904728922684 0.001814749646133289 +923 -0.0010832640363763854 -0.0006227146934619089 -0.0046338073869337994 +2115 -0.002758550631774085 0.003984971325506377 -0.0006063597970435221 +3477 -0.0015065755089371505 -0.007513727219338386 0.0008421646991390027 +3082 -0.004908723808788483 0.001558317337720706 0.0017863255247212108 +3102 0.010482602013645521 -0.001354287902139937 -0.0015707752439185247 +2319 0.002439902647409449 -0.003376322689868127 -0.0016368367763863188 +218 0.006098412324205964 0.0051676641845632525 -0.0038956070699920544 +735 -0.0015007784030304041 -0.0029910067664247436 0.001274199841506717 +734 -0.0036529627467697906 -0.0021140074185674847 0.0026852767829587815 +925 -0.0016825693099141719 0.007757061052188054 -0.001268454429946784 +926 -0.005327547105551697 0.007051963479761437 0.0028641875165838623 +927 0.0014204765301464744 -0.005977713688586062 0.003559766999518082 +3230 0.0007408261992078114 -0.000952459601784742 -0.0002413560752668999 +3259 0.0016898165531373205 0.005150241211134553 -0.0076644142562552605 +3207 0.007857289357799623 -0.01224269665778149 0.0036939726303281298 +2333 0.0016247638307094793 0.003913128268793877 -0.0010818562908637794 +942 -2.75547195989736e-05 -0.002884071500245441 0.001571484296093882 +854 0.0017725480998526254 -0.0014324911509771912 0.0001264085698609439 +2132 -0.0002961004370174594 -0.00587514103473653 0.004596842124333344 +3109 -0.005718858201328837 0.003966533047203555 0.005807139290038554 +125 0.006040217825751697 -0.004257231773490833 0.0007878516429459448 +622 0.0004061395843399401 0.001553607840367796 -0.004587496093143132 +2326 -0.001777526735377261 -0.0034598034318105556 -0.004064037173549166 +2334 -0.003978772528351466 0.0010423915534336487 -0.0066073910905710695 +739 0.0033470755550132065 3.293291374358793e-05 -0.001495359557175827 +2131 -0.002296934987549486 0.0034750211585159118 -0.002294206252996983 +2136 -0.006919458114569923 0.004293979486718874 0.0039040549225943075 +2327 0.004523079357298227 -0.0033654238094997604 -0.002105649505014293 +746 -0.0016130587943381078 0.004505902392740885 0.0029754269569415262 +741 0.003609306107722111 0.0006952811199641403 0.001757128843939193 +740 0.0031669358908326182 -0.0037778926945126 0.006562879579373334 +931 0.0009632501613079823 -0.001833243190669782 -0.0013458364479539985 +932 -0.0009216882644756588 -0.005240194288190035 0.0006115221676950836 +936 0.0013241507949904095 0.006789687678314655 -0.0015436026113760245 +2135 -0.001646761508969241 2.5739997427989884e-05 0.0036816114021901154 +2134 -0.003988436317112165 0.0070415789276915604 -0.000833650698144615 +2332 -0.0019394992084485279 -0.0016311779877612302 0.0015459061963164216 +3146 -0.003952823086621118 -0.0050952152681355105 -0.0014944395350084522 +933 -0.005632165988486896 -0.002966470267611605 -0.004102602589290921 +941 0.0006255430198690093 -0.0002811180522776758 0.001986229633017209 +2329 -0.002582185716220805 0.0072798748175816 -0.0018876489597582894 +2143 0.0032870883722634046 -0.005429498677288898 0.0012285750638592974 +2148 0.0025725643090494517 -0.0007209946097707601 0.006453448942308209 +3140 -0.0056898083179014215 0.007867600271773776 -0.004542154906392248 +829 0.0034598428452176986 0.008264559212228998 -0.0035440382704918696 +747 0.003186093581345016 0.003614137198778599 -0.002489055628817812 +2147 -0.0021624720034712293 0.0004043160619120819 0.0013807031078927235 +837 -0.00175661807466146 -0.00392536802536423 -0.00012718714137170122 +755 0.0014291632427603945 0.006055409985640483 -0.004613697282880731 +754 0.005466381301543143 -0.005044518927316579 -0.00565362753438424 +753 -0.003247781789719583 -0.0010351810738382582 -0.002683777695556452 +943 -0.008399896085205505 -0.004131719888595226 0.002737783755689869 +947 -0.0007335624543303903 0.011292685593160698 0.0016806356242911567 +948 0.0034365397046259667 -0.00012704193884014272 -0.0036238171120540528 +17 0.00527909888073571 -0.0021140328752828758 -0.0027835997457666263 +3223 -0.002037075972450644 0.0033873264679197485 0.005925065015169656 +3256 0.0018406437786413238 0.0030752699071494648 -0.003387965716712134 +3458 -0.004127585127637124 0.0001684271105336705 0.0030650317593778993 +751 -0.0012854878840109058 -0.0006435996043172678 -0.00015516589838873707 +3214 0.0073983365454672635 0.0038240133101939628 -0.00782748895381113 +3235 0.010066800129059607 -0.012914789353363114 0.0018372015385366364 +2346 -0.002455738463447704 -0.002512632285455672 0.007358131429565324 +756 0.004291086957320896 -0.0031188044172691535 -0.00782532331687126 +3262 0.007537149897133938 0.0031436354367494718 0.00653101043274684 +3124 -0.002564161917396049 -0.002054540505169436 -0.010725820440918807 +3078 -0.005608128945967336 -0.0016601281246068891 0.0020866853857202865 +762 0.0009012567271634508 -0.0023938009710768892 0.004180246542050736 +761 0.00330545349230287 -0.0034556908784992794 -0.002542834940469931 +760 0.0024174105866513773 -0.0009669144097252772 0.001553181178688662 +759 0.0042684957625052766 -0.004578380578361956 -0.004371405007247972 +758 0.0016577789500683898 0.002428318091664922 -0.0005249379200639027 +757 0.0010106385452665642 -0.00521097111238744 -0.004640636809387836 +2116 -0.0019532556009205647 0.018168401772518848 0.0013377885477533777 +2158 -0.0003662604822323619 0.004467156086508904 -0.0013133941269365347 +918 0.004540473467812482 0.00352662069241536 0.006331872395294394 +913 0.00031828858555505427 0.008131839557676053 0.0021923536593869506 +724 0.0055654576068241216 0.0019727586305563877 0.004414053450371441 +2159 -0.0016154577235628462 -0.0002590309574710184 -0.0013614578705129824 +2160 0.0013621174086772031 -0.0017916325924115122 0.0031791125952876065 +765 0.0008617080034792855 0.008842669526975716 -0.0005536042527534861 +2117 0.003149588703173691 0.004562114240950583 0.0026823285810564095 +27 -0.0058088238105665334 0.0031189307939292698 0.0016391934760882979 +914 0.0065596209560798875 0.007071440747359188 0.0013359491431376754 +768 -0.00035257267212574297 0.007917790652037815 -0.002086848283910619 +767 0.005697196471724337 -0.0011454738913128498 0.011314067143468488 +3245 0.0038605781637967933 0.0076674848813942705 0.005916326550745157 +3460 -0.00541500312886817 -0.0041390226281754145 0.006665997944521115 +726 -0.002047277405733137 -0.004105871559327287 0.002121152184594466 +725 -0.003100001284655931 -0.0033906222190316815 0.0011729942236051321 +2155 0.0028897537344675594 -0.0017417537763650718 0.00208863974719494 +1762 0.001146730031566457 0.0013033741973157288 0.0024719491990002726 +1749 0.002279191660694202 0.0015678020805686553 0.002291311551622406 +210 0.0008626739827281 0.0038975600057351272 0.003386698734817699 +2308 0.003009024343726937 0.005484212067303088 0.0013410141054309278 +2124 0.0027899500087151478 -0.006660483117615496 -0.0009316335104751586 +224 0.00465669021312608 0.0009880193426326472 0.0017431484277402518 +1938 -0.007671988900502672 -0.002329635350101753 -0.003159192262449673 +233 -0.0013519019475470428 0.004816400417937788 0.0004542426210661963 +3497 -0.0028024407695831613 0.001744635807353899 -0.005155330978371564 +1770 0.004078510865399355 -0.003367464573785495 0.005434652667629449 +386 -0.001460541509387091 0.001521394769483624 -0.0013581239892640463 +221 0.00691111659065165 0.006239970777530325 -0.009699228538818515 +3511 0.0007902072049583086 0.001498156428390823 -0.005643720388411517 +42 0.004947883542652983 -0.0036534185685827667 -0.00424263891573797 +3197 0.007882240534940759 -0.003486881908875361 -0.0011878586461250625 +32 -0.0012820084153605102 0.001541638391478632 0.0046436886333300394 +1925 0.005020140904659155 0.0002605732538921177 0.000512495909062923 +892 0.0072350924127099455 0.00605106830858339 -0.0017213931080228544 +828 0.000726304396120793 0.0037560676850478384 -0.004242765123372924 +863 -0.003220226858010595 -0.0056592957397144095 -0.009684653169211296 +905 -0.004646600356695492 -0.00010106439863263605 -0.002664246942502703 +946 -0.008610845104019492 -0.00304110987878612 -0.007157725968841116 +844 0.006234808749920289 -7.445987192837011e-05 -0.006250812663349651 +2311 0.0004192954505055396 0.0014077210742236296 -0.004266698565928305 +865 -0.0022444443307327857 0.00012403409128742507 -0.006390976256539505 +3302 -0.0017845799691957782 -0.002211668500600779 -0.008740695818660639 +825 0.0023946733329376644 0.003626964929507798 -0.0026437313155373756 +826 0.006404649367492879 -0.00171649724879723 0.006378354172812405 +962 0.0008947733477590886 0.0006699886149609727 -0.00396819526514057 +970 -0.001521534937666367 -0.00037573874324070284 -0.003303155442029472 +971 -0.0008447644474061905 -0.004595772494020357 -0.001264971330138071 +1012 -0.0012463349824105372 -0.0005177629520659162 -0.003588343473824299 +1017 0.0007988809630612754 0.0061929555715194 0.004381573430386252 +1019 -0.004459243453437956 -0.001652118300738777 0.001924570398287942 +3361 0.00876872860445062 -0.009319192946267717 0.0013418285385254358 +963 0.005438353229847409 -0.0015416697564448465 -0.003253996198675959 +1013 -0.002018825791542727 0.0029093550763996025 0.0018418897406684395 +3408 -0.012530955808479016 -0.00173805338358582 0.010003318193944611 +3328 -0.0008067041004904589 -0.010604847557678914 0.0019888758986571437 +1018 0.0003199852616310018 0.000538844855362906 0.005405875676871352 +1014 0.003384086784443333 0.00041792644752287753 -0.0014057393285147113 +964 0.0032166940496674424 0.00660081580458611 0.0038344582961705224 +824 -0.0036477493393304115 -0.0026504904408605995 3.8214292635492516e-05 +3341 0.0003389348927248233 -0.0059007702484973395 0.0018718681437148604 +809 -0.0018551057299762885 0.004838070331437793 0.0068818604565074664 +823 -0.001170640404903126 0.0020363687599002666 0.000490088004893543 +1016 0.0016042017687152295 0.001410359633700613 0.0036486258362727775 +827 0.003722034912057516 0.0019228041200629964 -0.004584142109694465 +973 0.004469305491535136 0.0008690047041303561 -0.000571869055710239 +977 0.0043953669838532475 0.0008229027396700005 -0.004617453192135074 +978 9.717465927920098e-05 -3.2687201761521865e-06 8.458159450968403e-05 +1021 -0.003529379638416979 0.008016778206828546 -0.0015897883638767627 +1022 -0.0018949826681996561 0.00047334913689118846 0.002693396296718142 +1023 0.0015364013826878098 0.002528429280824852 0.004032888459229294 +1024 -0.0021274149594560144 0.001197753316690378 -0.0017507597228306596 +1025 -0.003493517699812956 0.003854862693849674 -0.0049443287305748285 +1026 -0.0067506019569132285 0.0036220829171829208 -0.0032051344970101072 +3430 0.005537149070309018 -0.00961895520921351 2.9392219101149945e-05 +1579 0.0024928752110729216 0.00041677814492049604 -0.002234939250886825 +187 0.0027261880567214713 0.0005437122348044244 -0.005185879988109346 +3367 0.003632273030179838 -0.0065382367474942395 0.0065526643409921604 +976 0.0009431446232003966 -0.0016470103958429378 -0.002193745747828317 +990 0.0007275069085905067 -0.0016682432061192111 -0.0036561511763957897 +1027 0.0006097513384783678 -0.0014065896983810847 0.0016729530228762914 +1028 0.00040578892184080874 -0.005071171734631529 0.006497716694420037 +1029 0.008152856625614036 -0.0013761729909872093 0.003976751623923712 +1030 0.001581291192781958 -0.005382199016241876 0.005267603909666653 +1031 -0.0013850112088117199 -0.002904097955301169 -0.0027676120387229142 +1032 0.0007928872892050726 -0.0016813699215986711 -0.00077093651181966 +1037 0.003780004673616607 0.0008794669854177098 0.0027901090285189184 +1038 -0.003400200222112075 0.0035933936106881856 0.0054634631500153335 +986 0.0015009840244444568 -0.002413595824540618 -0.0006973118247622465 +1033 -0.004660847206199565 -0.002151030947347545 0.0005818646941611463 +989 0.0011361656619687092 -0.002408912543289242 -0.0033500382744432993 +985 0.0027550586421783508 -0.0058395634561897655 -0.0034677713394318296 +790 0.0022928244554228892 0.005351636506322427 0.004866256280858113 +3370 0.0002792739069936588 0.004070958832007874 -0.003348157353856754 +1375 -0.003149544803014233 0.002292560483282354 -0.009403776412858061 +186 0.0051785971354707475 0.0007760287122422231 -0.001968244238276768 +789 0.0015380309416412419 -0.0004902476260257074 -0.002252683784980429 +838 -0.00036725032541617866 0.0014927894131886435 0.00820918516571278 +31 -0.006903192730772426 0.006571294364755459 0.0024381053054756577 +788 0.002820236623343385 0.0024987337708040477 0.0008775630093065745 +2888 0.0030984544224108364 -0.0009494467946667671 9.387693470589186e-05 +987 0.0027896494630875114 0.0024198116562561844 0.006144585005097171 +849 -0.0016597986090000822 0.0046452983340011435 0.009434293412062601 +841 0.0033834250001957963 -0.0033378194004026972 -0.007616804040771899 +800 -0.0060852558210159275 0.002377504067012544 0.004526601967007592 +842 -0.0009677790434231218 -0.003282097866607389 -0.002894733025473851 +843 0.0010461047243734793 -0.005040134165983646 -0.002060458439149442 +988 -0.001174870870189317 -0.002159526149824824 -0.00034172371941135356 +1034 -0.002349774344271124 0.006239609026445944 0.011436343373713253 +1039 -0.0013964310588948847 0.0033046943377355305 -0.00015781705425560265 +1040 -0.0021542501280670187 0.007766409718007389 -0.0024920067000267824 +1041 -0.0014145148807730046 0.00016322973230664347 0.0004264473650901125 +1042 0.0005338933313414299 -0.0026249117923632997 0.00508601390663357 +1043 -0.002042590173360056 -0.001442876096538412 0.004753633408386282 +1044 -0.0037771723163394525 0.0016748804902017962 0.001290125852196455 +801 0.0010497086528085684 -0.008104770756819904 -0.0015820372928341646 +799 -0.002258795695033619 0.004390036747660418 0.007307088227546506 +1169 -0.0025298649603221032 -2.241101835386949e-06 -0.0005063314524213067 +848 -0.00758466658543713 0.0019099483228422144 0.0071660429609174785 +802 0.0023499850407206683 -0.010705306023626479 -0.0016488664130419382 +850 -0.0030382494860143787 -0.0009923494646644207 0.007096241741082637 +2889 0.0071781094263565605 -0.0036467875288985936 -0.0007309349141508145 +3836 0.005546477645422545 -6.21907586204849e-05 0.0019333307082866952 +1002 0.0021006397789369675 0.006348890557348377 -0.004745223347500048 +847 0.0008900231579780131 0.004555557608487648 0.0022342447559596883 +3286 -1.3335927589787267e-08 -0.006942259448539926 -8.321295025795922e-05 +1360 0.005580307170891034 0.0030750642556395796 0.0022252444592678828 +855 0.005966874217395702 -0.006976284360986654 0.008228651317670288 +999 0.0017709580515038595 0.0014594629538556808 0.001052629730425378 +1000 -0.0026670876817890665 0.0020384719565969263 -0.0022943220369075505 +1001 -0.001391731425274705 0.004506067216869541 -0.00559108374773819 +1045 0.00018219370528529567 0.0014771768795785404 -0.0020953622462172423 +1046 0.0036453585859791294 0.00040700280632535577 -0.002819272049995255 +1047 0.008175682204849514 0.0015636529185608702 0.0033420473896544206 +3384 -0.00152508474178002 -0.0019309115857277074 -0.009603150215687584 +3225 0.004577895311384567 -0.009267014578480642 0.00960772894984302 +810 -0.0038720895203322664 0.0006543494141699119 -0.0012619899789919457 +998 -0.0011336920120847652 -0.0020491292667281086 0.0015107938899661395 +997 0.00011344457723709893 0.001973689141677139 -0.0018373984427456128 +1048 -0.005512133681925918 -0.0051418755117965745 -0.0014610519248880376 +995 0.0015234140299304898 -0.002223116488805356 -0.001994158740086067 +935 -0.0011065529335012494 0.00021203237497595753 -0.003504285872494727 +996 -0.0009996759246949912 -0.0038230587655152023 -0.002081094585769531 +856 0.0010295723737570644 -0.0069164810077247995 -0.007212257964374117 +1533 0.006618715829248164 0.0002837115530474342 0.00012760746490385788 +3462 -0.005758407773050819 0.0025491765786185166 0.003379121561525041 +1535 -0.0061290939234938295 -0.0027215183780513958 -0.003321804630338311 +3397 0.005187183434233198 -3.786513778723394e-05 7.64734079494076e-05 +859 -0.0013558929257086387 0.002382501213032008 5.0658061135376155e-05 +860 -0.002163523198352459 -0.0010971211509649842 -0.0014493786374384931 +861 -0.0044182547709995836 0.0006129678972112635 0.009105323195615059 +864 -0.008812060561107796 0.004528837745439446 -0.001186098005354153 +1010 -0.0011221114157243057 0.0005969318521111744 0.001187744902192149 +1051 0.009188337934705935 0.00673769310592722 0.0068417416518101 +3321 0.0024573630941292137 0.00395854818068343 -0.0062837773339829 +3434 -0.009078280416298835 0.0018107808229071373 -0.00039941302378788973 +876 0.0012895971611235058 -0.001460308098584492 -0.0015009446068610874 +24 0.0019643624243257793 0.0014013033555583096 -0.007883870897624365 +3696 0.0007000987204681515 -0.00416543526385507 0.00030074593148040284 +3088 -0.002096354189272339 -0.0014368193809254522 0.00028457085434161546 +813 0.0009224495115231692 -0.007810323812792618 0.0013696550270441829 +3115 0.004149073842358032 -0.0025028017001632106 0.0075891150142085 +867 -0.010332451170956517 0.006501667979854528 -0.006149096217933109 +1345 0.003806009165759995 0.0012927138932813133 -0.0067084866248216975 +875 -0.0018775337577036603 0.002401005527751442 0.0011745268026170082 +1060 -0.0025368181066266213 -0.003502209191536059 0.0017943566715437856 +1061 -0.0012448119260556805 -0.0031208736837389 0.0025817855600886942 +1063 -0.0011859620979457802 -0.0005468260469365403 0.0019360027503736918 +1064 1.8734634210532548e-05 -0.0006199525137891618 -0.004418732975748914 +1065 -0.005619078954485507 0.006477890707626097 -0.006168021218127908 +1066 -0.009783604797790585 0.0024257162397250563 -0.001128375094197712 +1067 -0.004967167488468475 -0.0007410777942019365 0.0030219308981586394 +1068 -0.002994521548959397 -0.004234539145312003 0.005493618448587894 +1059 -0.0029900027986746545 -0.004780566134920591 0.003610390016607291 +3431 0.01046452348667277 0.0014037952812902107 -0.00015674663604099765 +1058 -0.00026982722560076094 -0.0011876650648223078 0.0030317715760407684 +3170 0.00045157755073757576 -0.003177475752848156 0.003784434108873852 +3450 0.006049911544424103 -0.002882336065774435 -0.0005647268283037831 +866 -0.006872752106690952 0.0017242184953378812 -0.0055563567118971395 +1062 -0.0009333357778340287 0.001205960037562938 0.0018679406487483211 +1057 -0.0049136835222846524 0.0015734600047895544 0.003921637171861163 +3403 -0.0014980124893081517 -0.0032063001059024878 -0.007431126285246649 +3414 0.008652576971719745 0.0011608501554083346 0.001615910203513227 +3348 -0.010947918716103443 0.0009822774290059444 -0.006793486735551889 +1069 0.00013994060069425846 -0.003923862240334438 0.00322634358444631 +1070 -0.0004861303716959047 -0.002479563721652478 -0.0015552387455675873 +1071 0.002034912643469854 -0.001812972908737251 -0.0003911411273213894 +1072 0.005819020686835558 0.0033415667086893236 0.002156387227610537 +1073 0.0019171439514217097 0.0011172678918384496 -0.0005236348941269007 +1074 -0.001054559698681314 0.004892213983172002 -0.0011631802669167849 +3402 0.006679654079203454 0.0052470581163403815 -0.002330639075889378 +3464 -0.0026300744661128138 -0.005133061264694174 0.005001461884891795 +1075 -0.0028856013747970474 0.0031091466642270867 -0.0008824464391068374 +3442 -0.003153971069414765 -0.0033546320774820487 -0.007329048484932011 +1079 0.01008660240228941 -0.0035966998012379 0.0024839220200385767 +1080 0.001511354778710794 0.0014834152712074648 0.0017083365982180046 +1185 0.0027864912105893896 0.006562551097462397 -0.006820864468775063 +881 0.0050076993532867774 0.004434928765270581 -0.0019536081021250657 +874 -0.002633860137021421 0.0024696683473416055 -0.0010346552766853003 +2881 0.002476325964503821 0.0036851676525072093 0.001226061044980549 +1036 -0.007644771411008363 8.976633326420469e-05 0.003071558597364971 +3224 0.00556283345131541 0.0006395240686994243 0.007047056191328602 +1076 -0.004284811168690129 0.0007965103442646421 -0.009625939263760446 +3351 0.004611524813911684 -0.00031111706731969986 0.009878126596658883 +3459 0.0029578021075535865 0.0023838026197417826 -0.0011686946685953942 +1077 0.0039512134057565025 -0.002578483002303779 -0.0037447109986895395 +1078 0.009438495813125334 -0.00857662115970969 0.000415759915010395 +1083 -0.0018798280571060517 0.0011680438182471336 -0.002650635174766603 +1084 0.00048516442194849535 0.00702709172151376 -0.0009066033903510682 +1085 -0.002734506893698139 0.0017606243768847306 0.004250095425234104 +893 0.004120823997981297 -0.0022543408810820563 -0.001548482013928587 +1081 -0.0006970349322633145 0.0022806631354345104 0.006949276724141716 +1082 -0.004197518721259466 0.0023870207518465526 -0.001313663529358628 +1086 -0.0029696623672954814 0.00017210535177145044 0.0019515941967857674 +3435 0.003835104462006647 -0.008746730886384158 -0.00467165896243699 +887 0.0006899268525117257 -0.0012114262546155375 0.0031256589556400193 +1195 -0.0013134211666386705 0.0008297339273936087 -0.0041184235243228 +1492 0.004413123450013243 0.002765786791814455 -0.0011032795583565502 +190 -0.0046599594365004 -0.005975483887095996 0.002399461912825228 +851 0.00020987128829432131 0.006079712048131204 0.0008549932760264816 +1035 -0.0034976713530771686 0.002464890612657207 0.007751196810724262 +889 -0.006479731718814895 -0.0006708739882103486 0.004776256959023641 +894 0.003046084230962384 6.780973844441683e-05 0.0036395879273757046 +1087 0.0032734224579516907 0.0025862505482901034 0.003862113269022127 +1088 0.004085539067053196 -0.0012647190981868992 0.0030649399651379596 +1089 0.0019935181775461255 0.0031021901420700358 0.0005735342405516772 +1090 -0.002061242219649593 0.0013050660593383501 -0.0004465740985681179 +1091 -0.000535034623702017 0.0064467210417432 -0.0021148894280178204 +1092 0.0006453323377469609 -0.003718943872385022 -0.003379610356834238 +3394 -0.0033934624660002907 0.005040449230362413 0.0006685926240812388 +3405 -0.003930591887208236 0.0031954353426678767 -0.009150874956039348 +852 -0.0003980996023340518 0.002439583284512219 0.0012755309975981978 +3273 0.010857704536695233 0.002959061868368585 -0.0028518383209840104 +901 -0.002352423584657027 -0.0020222736071364624 4.7876597181991995e-05 +1049 -0.003222377337143175 -0.0012290269681226914 0.0020317007252065346 +1050 -0.0038290642226346955 -0.00016625020177573938 0.003724041159095107 +903 -0.0022101523081893633 -0.004487293566825345 0.0037650353998818615 +1095 -0.0004953681925832114 -0.008531431779211842 -0.001385962611759206 +1096 -0.0055965992405704965 -0.003599558190917695 0.0007178237766230086 +1097 -0.002233172878075134 0.0033886166199017624 -0.0003015532482986836 +3364 0.0022006367891507774 -0.0004655216037804352 -0.006742373761260149 +3377 0.007584690708048994 -0.01000870136879295 0.008486022203707243 +909 0.0008847553388230741 0.0035489727998397457 -0.0003067533647019334 +902 -0.0005240475401038016 -0.006565576391003287 0.00486764434535211 +2899 0.001218149740045913 -0.001688168628966537 0.0026036849777933036 +906 -0.0049332972796940315 -0.0049170449655078115 -0.0026969434815401327 +1056 -0.0012133686887814714 -0.00019771189575395787 0.0042151917237679744 +908 0.00035942803598651977 -0.0006195743640677178 0.0005164045729187329 +910 -0.0016568921165840565 0.0005578088356932597 -0.00022475541521724843 +3257 -0.007576979007984703 -0.0020672367663349877 -0.002542497298681537 +911 0.000746556542574012 0.002702586302093468 -0.004665994788242618 +3278 -0.008055111076429193 0.0031799546982021133 -0.005148928463016086 +1388 0.0016039148383252479 0.0009096461296412765 -0.004335269746309791 +907 0.004593726866626141 -0.001766995438778488 -0.002845508035587043 +912 -0.008097367024735914 -0.0031800818301904116 -0.0017617121139074721 +1103 -0.0020030978653719804 -0.000592092875850192 -0.0020081964962333676 +1104 -0.0014110775797502356 0.006260327796413442 0.005005461693702087 +3272 -8.012774620288118e-05 0.0010051018530744479 0.0006411227813144231 +3320 0.00279731544229788 0.0022434057374111395 0.0031809104652673567 +1102 0.00028479025137753667 0.001768587089510168 -0.00016246699714889614 +1105 -0.0030419520844131367 0.001405835682996237 -0.0015713377902440765 +1110 0.0011425269252382801 -0.004084540728090939 0.004749404898032453 +1111 -0.005304692569449524 -0.000767879724781466 0.004837530353228691 +1112 0.01035654087970886 -0.004919550304254366 0.0017408331791530232 +1113 -0.005615808218235749 0.018391360928852088 -0.0010297851089140883 +1114 0.004455287911804078 -0.007955135290578138 -0.0015667768167857397 +1115 -0.003212219216890571 -0.0003881342881018079 0.003821464972729774 +1116 -0.004252774781095389 -0.003863407638471776 0.002335082947128946 +2309 -0.0011819077668647044 0.0016515469277425575 0.0005801984078631631 +3314 -0.006569955031515462 -0.0026272062828437384 0.002509490492982367 +3410 0.00913792303177288 -0.0013670085523888684 0.0022543510690881236 +2310 -0.004193816444838003 -0.0037552104213089124 -0.005067959415328115 +2506 -0.0005341283200839176 -0.002347135591135922 -0.0011267258794654812 +2507 -0.0042423941628210865 0.005393753323686064 0.002443596391444341 +2305 -0.009704867740446111 -0.0022433921329797894 0.001984104867475567 +1106 -0.0030970140175344747 -0.0006388219761666594 -0.0041018424753918 +2723 -0.0030024281884906833 -0.007155882323392124 0.006683669818044616 +2508 0.003703905046541883 -0.007938879776058873 -0.00010342596687289683 +3101 -0.0119467950607865 0.00088061835533831 -7.513109936030321e-05 +1117 0.0038366708318868605 -0.001294847129255922 -0.0015550560186689548 +1120 -0.002486424136543962 -0.00636733798941996 0.000808963363541398 +1121 -0.0010320542918811888 -0.0022002097608863737 0.0005132208273144623 +1122 0.005388053296007897 0.00035865480617159023 0.0021455163886846033 +3311 0.003090310479430872 -0.014857907701763073 -0.002522963534108729 +3323 0.005875190007330853 -0.004023839192816989 0.0008496684763929971 +3390 0.005311735275020218 0.003269961282831799 0.006648766452179877 +1126 0.0014043603228316873 -0.0010401106979587924 0.0014345949638390444 +1127 -0.0008534857359652667 -0.0021828512473077407 -0.00033088133810307027 +3284 -0.003122603674303179 -0.005978725561293986 0.0028308817582556574 +3312 0.0024704739487353337 0.001607834979316305 0.006042322521809452 +2513 -0.004086722602607848 -0.001673081574154325 -0.00073628095337274 +2514 -0.006758789413825713 -0.002213812693235879 -0.002282904304492037 +2512 0.004643260587977145 -0.0010385968084989162 -0.0008811601549866212 +2511 -0.0014735531637946092 0.002621925553578742 0.0020904542259300024 +975 0.006188568298562452 -0.007001725543605253 -0.0018779969228060595 +939 0.005461738309951118 0.006354821877840477 -0.003433230575164559 +3301 0.0011399201751827416 -0.007802173002448767 0.005090526655091518 +2522 0.005752942814902013 -0.0013473855873533764 -0.005201598787663091 +1584 0.001896329426657246 0.004149728351938079 -0.000895442606665885 +937 -0.005600010185359931 -0.004189855257884609 0.002567283127422447 +1123 0.006693681517670255 0.0005299401814545714 -0.0009661597923795165 +1124 0.007253928088665132 0.000999755067629669 0.003881246253307081 +1128 0.0013060140262860446 -0.0030810886119483653 0.0009467238382149216 +1132 -0.0003328876486097025 0.002152529198526811 0.002443391684053898 +1008 0.006692494868659117 0.0003104942767474902 0.004039008881013726 +3452 -0.009908654120815057 0.0016383489389776942 -0.0017611711276962693 +938 0.0013150500132275429 0.0029956713755382607 -0.003095354840381836 +1133 -0.0005361062758936633 -0.000798178900379506 0.00589106585995332 +1134 0.007315860605856696 -0.004818475968117745 0.006567354230153865 +1129 0.00865132347141926 -0.001955823952305132 0.002254117219955181 +928 0.0011053223145111014 0.0037077972634991744 0.0003073725684379077 +1131 -0.0027581377671215207 -0.002346264074447123 0.0008344207769067518 +1130 0.006329722812919059 -0.004986008533268954 -0.0018254237021467022 +3305 -0.003712721909075618 -0.0025020771161058603 0.0020977188902043826 +3330 0.00287785186994454 -0.01032662871662358 0.0013784530945663948 +1135 0.0005841323520416692 0.0037567048298494366 -0.0013491879253628837 +1136 -0.002513799747730197 0.002527781374674043 0.0037477811688629427 +1137 0.0016946696849007821 -0.002582559471576968 0.006275437007870209 +1138 0.003522731353962984 0.0033533253655967485 0.005445061837336879 +1139 0.0005311869144638971 0.0036519824111634013 0.003938464632913258 +1140 0.00042631481913457393 0.0053583661416412584 0.0009535240879207601 +3285 -0.0046096432502807 -0.008254477154905612 -0.00950882069695251 +3290 -0.003578618917959208 -0.0007071998317651033 0.007286777186990423 +3391 0.006483571422522863 -0.003979935214196774 0.004263915321210978 +3428 0.006501906263143629 0.0019394080412816904 -0.0017274183024248047 +940 0.009239696565954972 0.0034707236103513547 -0.003009822257675757 +2541 0.0007312268748265408 0.005004576700165301 0.00395138750655467 +3329 0.005833418353998361 0.0010561802186036574 -0.002551912594947429 +3419 -0.005646933716582623 0.008715439422801483 -0.002584806070283924 +954 0.001427286887063897 0.0015520462928809659 0.0010719023612705617 +953 0.0037439130505508046 -0.0021037374021792405 0.0031499453835681116 +3283 -0.003425414343559711 -0.0006807901141934235 -0.009550559472509866 +952 -0.001961500560877425 -0.001900060170442675 0.0026843067171152964 +3360 0.0044972550100071205 0.001466202521024456 0.007036580567284848 +949 0.0015905579185904865 0.004037315918498152 -0.001979675782546617 +950 0.004355572569658939 -0.000459696910367803 -0.000656416851460396 +951 0.0006846056340975751 0.0006657447725157825 0.003375474677367399 +1141 0.005796160187496307 0.0007600568718866946 0.0001561906867239716 +1142 0.003643882866276539 0.0008796591757942459 -0.0016413089916837071 +1143 0.0030420480545343973 0.0011685054052055475 -0.00012466669846212478 +1144 -0.0025907630393355555 0.003484050448105345 -0.00572575464658715 +1145 -0.003002402042352357 0.001207769316274594 -0.001808603451341347 +1146 -0.0020623416345295245 0.006753503273459066 0.0010695290674678283 +3 0.0007758847733244197 0.007053599213832967 -0.00450078846711922 +2542 -0.0025837907286862453 0.0006071284872365103 0.009133330747208934 +814 -0.0013191337656589864 -0.0018915412021278943 0.005708161576949617 +1149 0.0031473414417155688 -0.005315095011005132 0.001417122271031796 +1109 -0.0042666081593319 -0.004757695958709379 -0.0019860650034337064 +958 0.0031810079725689755 -0.002963165307446833 0.00835485949563757 +957 0.003247814473291041 -9.554795696943918e-06 -0.0031023110895773073 +959 -0.002492050430303405 -0.0022998361559381643 0.0017964301741655345 +955 0.001319685711456818 0.0045440870107986125 -0.005798946842389043 +956 0.003811759381141424 0.0027855936295910206 -0.004742916225877154 +960 -0.0008705746489560114 0.002634657214939329 0.004958719640112242 +1107 -0.001009100104310948 0.001010263308511967 -0.0002663024446544264 +1108 0.002253778521719247 -0.004393553518750686 -0.004029340820189235 +1150 -0.0007698288179835915 -0.0010018017288104676 0.007930602785158539 +1151 0.002161640720420645 0.0014646631804007555 0.010751081629404113 +1152 0.003858940007745141 -0.006183038891940455 -0.002509165842723883 +3270 0.0006060199604185116 0.004938724757612174 0.0028378069727809153 +3376 -0.004374763383348049 0.001217425268311534 -0.007970462068821814 +2540 -0.0016664635856615004 0.0038233591632015804 0.0021016676143089785 +877 -0.0011672752580445314 0.0006473119400522594 0.0032057773361977328 +2349 -0.0013613765209665955 0.006377935153065282 0.005867072747340217 +1147 0.00031005233252549445 0.011054487257083684 0.008455663725128895 +1148 -0.007051940744187117 -0.006405537349881808 0.006137883055409985 +2350 -0.004516199878610979 0.0001697663660925743 0.0004970340164614275 +1015 -0.00011001316506975396 0.00044815115832275685 0.0032172990135794183 +1020 -0.001200107923761263 -0.0011123972620465637 0.006313728260450943 +3404 0.0019760680261029016 -0.0030944514671048464 0.00014306414105473352 +3401 0.0010993146462274334 0.005150348667738754 -0.010309889038753628 +1204 0.0023619397878219136 0.0042761850283154984 -0.0016654031715149086 +1205 0.006783562885227785 0.0013876740518484558 0.0014329526160729382 +1207 0.0010143963068888352 0.001709819802035505 0.0006161099190132633 +1208 -0.0024323809383376823 0.0005509866916888117 0.0013676223037509885 +1209 -0.0016065684004472854 0.0006743543691508256 -6.102692400033569e-05 +1210 -0.0032468392788170754 -0.007205844267954479 0.0029674886026793785 +1211 0.0005608113816878877 -0.007636102549346115 0.0026831615386446518 +1212 -0.0010218089449218926 0.003991280606241591 0.004803461488019993 +3366 0.002391297115462228 0.0059309883325020735 0.0042539840275503706 +1202 0.0020658653631385267 -0.00030634072120295385 -0.0017274754672957785 +1203 -0.00048223381924245734 -0.0018124893500729693 0.0001461380101214359 +1206 0.0033451136642360726 0.004266864696309599 -0.0002708205127985221 +1201 -0.0016395761789569573 0.0014651909170235867 0.0003247542835447055 +41 -0.0027242811848207705 0.010081294916439784 -0.004555872247512907 +3316 -0.0014069205137817503 4.0936873995294014e-05 0.001333270242720729 +3266 0.00247837599516361 1.7602741088530612e-05 -0.0003626157013507357 +3416 0.012002980823496658 -0.0025527185049507724 -0.008874021095379532 +1213 -0.001664485503711691 -0.006096607172919993 -0.0034042991654502715 +1214 -0.0035743536090117015 -0.0035945355008319803 -0.00037710135544122487 +3332 0.0034383915448667124 0.0076505959287426215 -0.00516170371787225 +3349 0.0009134961328315227 -0.0025321535269876186 0.005453833205284878 +3467 -0.0007535107611432223 9.815173476451601e-05 0.005421845362886345 +3468 -0.0029600616453833045 -0.0013206237069222754 0.008612036480224992 +1173 0.007476850476865748 -0.00036046505357112526 -0.0012790936905651266 +1410 0.0018017001844873707 -0.003964126354045555 0.004373391734445868 +1405 -0.0027695093427935456 -0.00041727826592983895 0.005924652379096772 +1172 0.004088286874848508 -0.0019934240119951624 0.0008388231526968896 +1215 -0.0006180635137126321 0.0020333149062305863 -0.0047588694497022474 +3116 -0.0038691832027526393 0.0010437856068218174 -0.0034704051742764554 +1178 0.002493484594557816 -0.00017897032746420015 -0.0010603898591732826 +1176 -0.0025410898366821336 0.0017134635925770431 -0.0023035888102243217 +1171 0.00026994044572602215 -0.0038824872909582154 0.0026802202273906047 +1174 0.001556652426905472 -0.0012617555830563695 -0.006770372488049316 +1175 -0.0016999314833442412 -0.0004628799577812936 0.0012026793975612586 +1177 0.0014503917832784678 -0.004584641285747692 -0.0001270574141620099 +1219 0.0035438552900141584 -0.003050727215521412 0.000989272635570971 +1220 0.0012380454221533976 0.00019710842521207883 -0.0034046981890638924 +1221 0.000861934997660226 0.0018984395894003255 0.004687667992687666 +1222 -0.0012062662858794938 0.0038596334150382858 0.002730325397234067 +1223 -0.004948840765979815 0.00018482514284035798 0.005910718594452295 +1224 0.001215002431638144 -0.0007158342491829742 0.0013149641553712138 +3317 0.0019159451865530753 -0.00020412004915265953 0.002256154260218347 +3346 -0.004545764445758111 0.005919891652380851 -0.0017622659806147084 +3374 0.004347234894008019 -0.0005240075557473961 0.005964742954398556 +1182 -0.003549435501776323 -0.004919062852448991 -0.004079003904201807 +1411 -0.0014493056230985156 -0.000300920208762939 0.0037476514993687727 +1229 -0.001752831072830588 0.0006275563309357678 0.003744319485701622 +1230 0.004780311537911008 0.0019300033150727379 0.0013380089620842635 +1225 -0.0021775217980387154 0.005224695827840471 0.005700597256688057 +3293 0.00017496097039303136 -0.0009536123072997939 -0.0024423029303521433 +1187 -0.0039975652133128516 0.0010693931464399041 -0.001836868189254611 +59 0.005762609005640813 -0.009458469158229513 -0.0031799161222126173 +1228 -0.0025507603138733184 0.0005018721661405556 -0.006934836083471827 +1231 0.0035218649874734324 -0.004798149779592588 0.0012214986079725247 +1232 0.0035727650346575757 -0.0022304213325347847 0.0014975579876391123 +1233 0.003494081847315003 -0.002052306961153181 0.0026798130757787536 +1234 0.0004074930311977613 -0.000490243415559554 -0.000544347263687208 +1235 0.0008186418085585836 -0.0019643913164718516 -0.0009845104430754132 +1236 0.0019444015922076114 0.0026204152814947182 -0.0006364870298537295 +3334 0.0034670574983569668 0.0014791884961779815 0.0032329330807440936 +3372 0.0029302043043205835 9.953713768785304e-05 -0.0009449020910102143 +1181 -0.0010672410315013805 -0.004139253932016724 -0.00414914813987385 +1180 -0.0005101849463532889 -0.0008676984138769096 -0.0006086362474794195 +1179 -0.0005864397862816088 0.0054643394007421325 0.0024240561663869615 +1186 0.00011733439007849161 -0.0028881500476013217 -0.00350550478238062 +3373 0.0028118431217438256 0.0021921927781302698 -0.0006991669365014314 +3359 -0.0013711063866345293 0.002008030485463915 0.006613184674832662 +3313 -0.0029156138503295182 0.0032479311477391077 0.00148157952362592 +1237 0.0007831792189255998 -0.0001334614463025364 0.00417245796399142 +1238 -0.004670225599817303 0.0025308349692601344 0.0025379797877347387 +1239 0.003347202010192582 0.008785754094109132 -0.004258930676754022 +1240 0.003644963766918464 0.005364280817349308 -0.0023905506455344705 +1241 0.006061028895063991 0.00228316575919032 -0.0010956903595849394 +1242 -0.002900413547581103 -0.0030014429806831454 0.002840936393301746 +3277 -0.001944601160155847 0.00789693813696775 -0.006782946467171929 +3433 0.0036622628972350565 0.004635159019620438 -0.0022680011356078895 +3784 -0.00031221575760661743 0.007762732930130855 -0.004489839002818707 +1053 -0.0024149703679721586 0.0008027362232692064 0.005463078892064642 +1011 0.0013567278651593208 0.0017340325845690602 -0.0041410160460040035 +1009 -0.000678714940847367 -0.00426288664022607 -0.00048023610485292803 +1052 0.007752147852628635 0.001286110928133569 0.0003423339045708185 +1246 -0.002473300952488461 0.0016854690917701934 0.0003158956799390412 +1247 -0.0064873595399199775 0.001834207624915541 0.0036733211268618507 +836 -0.0005543222299397527 -0.003052958901358861 0.00500433492538961 +3310 -0.0010489295512421943 0.003927485417536896 0.0012488572062669472 +991 0.004630586448941931 0.0005646119241620463 -0.0038150000082794373 +1197 -0.0003026812397273071 -0.003509494205894209 -0.0036133162161206493 +1196 0.00127302801617405 0.00185384473645517 -0.0003455128527873223 +1243 -0.011717915316453562 -0.0036087144018342693 -0.004012295407394812 +1244 -0.002615767019288462 0.00019055815222699985 0.001032322815931979 +1245 -0.009839908655952996 0.0031722180659050584 0.005609161316750006 +1248 -0.001206066202980797 -0.004579123689453429 0.0017282423642713558 +3306 -0.005074753287266535 0.003752234713289155 -0.005686166536332484 +3324 -0.004887203975521429 0.0032375897225622925 0.005732017390483382 +3358 -0.005863695762578537 -0.001096556078429135 0.0006207423742485417 +3432 -0.006554838827230454 0.0021854725291940986 0.0015399788640074671 +3350 0.0016375031917151336 -0.002195540812562703 -0.005231226758809351 +3319 0.0009661754146053454 0.006856002584321863 0.0015966770979513874 +1252 0.001985056598492198 -0.003066505016072319 0.0011959787388988678 +1254 0.006864970984814869 -0.0006553450683857141 -0.005735378216719086 +1255 -0.003658146008681311 0.006614628817220903 -0.0015354030525572533 +1256 -0.0033691004444794063 0.0007444608494019206 0.0011861518717533855 +1257 -0.00542044669795887 0.004581260363415249 -0.0018635954922619352 +1258 -0.007067347611769936 0.004620710163857237 -0.005820251508357302 +1259 -0.0054421300195438595 0.007706222880673076 0.0002722878844331568 +1260 -0.0008669128406866603 0.005185989437422005 -0.005722718367010182 +3289 -0.0036055735279399296 -0.0065004588233181166 0.0016954449546145573 +3327 -0.0034589554416699065 0.0009804599238867715 0.007908027516552174 +1253 0.0003816474343087449 -0.0013061144659010718 0.0011840752226912519 +3337 -0.00625514819862732 -0.007312589211868268 0.009120204078969383 +1251 0.00646514831326196 0.0006299924186807305 -0.004774995213564857 +3344 0.004732066639652666 -0.007687805969609032 -0.004327208575410953 +1218 0.0001019100086142792 -0.0033732401332609153 -0.002084482003141531 +3418 -0.002818725478573662 -0.008272689078658512 0.0028847938078821506 +1217 0.003295945571461812 0.007534978686580661 -0.006715891732427666 +1216 -0.0023998377017329675 0.009705372615879365 -0.0021302744153325146 +1261 0.004887360593530437 0.005550931329877705 0.003459733703629805 +1262 -0.0016690903560167554 0.001323017442129053 0.0030743644848373703 +1263 0.0025158008462580587 -0.005797123530844518 0.006652657174496018 +1264 0.001909085478512057 -0.003561790246202579 0.009782736116507946 +1265 -0.0027835994839831737 -0.0012555444181227933 0.001903902967895033 +1266 0.004156371161924389 0.000839492294582476 0.0020812512358643442 +3307 -0.011787944871784521 -0.0018194308213029013 -0.000685715837357359 +3385 -0.007521127376783736 -0.00867934408631527 0.0012476070782971875 +3363 -0.0002860441780217501 0.00242768929226066 -0.009384146366438991 +1406 -0.006092078714720685 -0.003765786724146667 0.0029137345954095254 +3280 -0.0010692955543190625 0.00924490850585703 0.006384250216333552 +3339 0.00043798316286677326 -0.007487507230296484 -0.006988280744582527 +3296 -0.002056232681028471 -0.007838082789144342 -0.0015609473259966676 +3381 -0.006946527470539206 -0.002423762563113592 -7.016586056670952e-05 +3265 0.0027312493527951163 0.005284776462383357 0.0024639414575065087 +1267 -0.0012317906686426633 -0.004917316395252033 -0.006796475993634094 +1268 0.001400930375411977 -0.002666299209425123 0.0008267517773155405 +1269 0.0020905888907374894 -7.499809444965632e-05 0.008108779054601214 +1270 -0.0023904938584809994 0.0015995672221786425 -0.0020845598673097 +1271 -0.000276521080247622 0.001670935804255171 -0.0017610152645856781 +1272 0.0017416118328370562 -0.002841586018116115 -0.0006914556141233091 +1273 -0.0007491956484171737 -0.004807975730162189 -0.0015894956075763113 +3298 -0.004205697242748804 0.00129471411184132 0.0010959052996968198 +3409 -0.0018993960008845687 0.0038931270252555183 0.0019962931666688737 +1320 0.0021142293898308655 0.0006069316746766666 0.0022398164761509125 +1461 0.0007380660570293047 -0.0033662041077784435 0.003536860631019093 +1460 -0.003820633097790876 -0.0030040687555995724 -0.0016600076913252113 +3386 -5.623130373650132e-05 -4.348634557689496e-05 -0.002150799881219735 +1227 -0.0038044753895852684 0.0016834428410685861 -0.0021998907191162864 +1277 0.0007709701778383336 -0.0014043614788612898 0.0018622778989838703 +1278 0.002505781927966562 -0.000556378396708583 0.0031846409177816535 +1226 -0.005718916875836755 0.005210057583134095 0.0014447566743968313 +1276 0.0018368287639244207 -0.007196009235814238 0.0026312052927283942 +3444 -0.007328294331560347 -0.0020716257919116423 -0.0009549567708863085 +1274 0.0023643973885872646 -0.0031452184107974225 -0.005121887609021623 +1275 0.00461999640515516 -0.006207342579247106 -0.002903944396664425 +1279 0.005332291609719574 0.009439485265904138 0.002552558690694629 +1280 0.004042535867684793 0.0031094874561787213 0.002312391909461917 +1281 -0.0030852725518504313 -0.005540782238464261 -0.0004551034810880701 +1282 0.0028004207329169668 0.003421341434331583 0.005951835206806688 +1284 -0.0014531874290252273 0.0004398196057863873 -0.0003784453096949309 +3335 0.0053676211849720944 -0.0049761813214642845 -0.006891244189276678 +3457 -0.010200823462851984 -0.0071108625875858315 0.005183820666412225 +3448 -0.0025321802251345835 0.003453549238559375 -0.007152915479125348 +1283 0.0019152482593167736 0.00213602303133003 0.005574973527642619 +3299 -0.0021943110612041633 -0.0037468395761828936 -0.00450874120457632 +3441 0.002010974156432594 -0.0005777280049068225 0.0066925865210927605 +3362 0.007904006050428172 0.004623304824415763 -0.006124570684458838 +1094 -0.004680941928007418 -0.011832849950938074 0.0036378109283284406 +1098 -0.0019069954071687185 0.003068691187347261 -0.006257072190317197 +1093 -0.0018981318931037816 -0.000745579562958201 -0.001925705619108911 +1285 0.002299110938531473 -0.0010156209690349023 0.003313551547896655 +1286 -0.002624913497534193 0.001992761789404291 9.511012173632296e-05 +1287 -0.002305857336189333 -0.006018064262168383 -0.004735074533073232 +1288 0.0006247822830663989 -0.0036889775019431008 -0.004287824523985239 +1289 0.005161775887897427 -0.0029972620851082933 0.00023053455428108887 +1290 0.0030127024969745487 0.0021277773677498392 -0.003986435817220463 +3449 -0.00741533276678323 -0.0048511938825781 -0.011684243016551488 +3304 0.00665997422050886 0.006400248307684183 0.0040542564314469155 +3421 -0.004218270205556348 0.00407813751382938 -0.0004699509523284868 +1294 -0.0003312631731811187 0.00857366909277819 0.0003225092158135709 +1293 0.00232488348365447 0.0034088505307321585 0.003057957995391973 +3445 -0.001362763484362988 0.011262116457411514 -0.007170596120570123 +1054 -0.00867896026672487 0.0005481900507388043 0.005004576620588125 +1055 -0.0016269903073314429 -0.0004981441587449949 0.003595045904245544 +1099 -0.005450636521780767 0.0032050408137859797 0.0033959531114577538 +3440 0.0030225343122427515 -0.0035777068915622784 -0.004608162976300205 +3331 0.0032481732644755053 0.0005397540989906794 -0.005254901759523998 +1100 -0.0007358567943963476 0.0020347899578283223 -0.005301274305933693 +1101 0.005469162203182377 0.002087526381835831 -0.00443703509721799 +1250 0.0034185343010484457 -0.007462790658195499 -0.0031688465238044598 +1249 0.0032756685243815827 -0.011106845755637891 0.003936960613336261 +1291 0.0044325703956957455 -0.0030647158957917767 0.0008066660828525047 +1292 0.003303557150530691 -0.0022533880073129595 0.003117996573424983 +1295 9.090820115181996e-05 -0.002598008825179498 0.0009901671993831573 +1296 0.0018448988521004373 -0.010416890411387322 -0.004965357467156179 +3423 -0.001738575111675504 0.006256751649995113 0.00021008187051433776 +3443 -0.002272356329635942 -0.00021702587292808624 -0.001800793049311562 +1298 -0.006339278289916226 0.007943460773992562 -0.0007304172668063508 +3268 -0.0069288434325658 -0.006344256273682231 0.008624995619238658 +1303 -0.0024981605784459944 -0.001577297192624861 -0.0018748510656983034 +1304 -0.00025888942662421344 0.0008871644957863795 0.0028487990028687672 +1305 -0.00048132326268465574 0.002693069432082169 -0.008513749103572884 +1306 -0.001203068105259975 0.00064554875510537 -0.0024408268364318896 +1307 -0.00013905588500392688 0.0017974689291358932 -0.007569994586343579 +1308 -0.004223533569758086 -0.0033147789708374014 0.0023230329438297848 +3437 -0.012407250837504545 -0.006411123673591983 0.000680432511436592 +3711 -0.001984273253623895 0.0007341976140713258 -0.004741828471748633 +1498 0.0005922059152262107 0.0014064205348074327 0.0023935783908739378 +1497 0.008523391204212676 -0.002571612196316646 0.004403744677201881 +1118 -0.0021142016601622634 -0.0035318779156182406 -0.00478790791465725 +1125 0.0007092419539931966 0.001602710167612669 -0.0043712005107884614 +2703 0.0019833437839269466 -0.0014981015726599845 0.0021310509004250607 +3447 -0.0019282022040841647 -0.003032870292995669 -0.002642936632683479 +1119 -0.002684751009136286 -0.0020088141558294082 0.00025545556923735525 +1309 0.0033786907185612497 -0.0026059470864403713 -0.0014181727506730705 +1310 -0.0019683959079312813 0.0007794447676102189 0.004913539006336565 +1311 0.002404928618612643 -0.0010761453905303675 0.0015137283212308618 +1312 -0.00187248030935694 7.928400311521672e-05 0.0023619584991513213 +1313 -0.0031385185108994047 -0.0042711599085860814 0.0012345772554751464 +1314 -0.004564386446114077 -0.0007917001596904622 -7.770298657437911e-05 +2704 0.004420724300413291 -0.001031338019101321 0.0017256173472102057 +3282 -0.006915194281390727 -0.0032706456381173493 -0.0021741283531071026 +3342 -0.0035069556490429253 -0.0056011461896127495 0.005252661106456436 +831 0.0033894509888128433 0.0028244303599474214 0.0027002394447432593 +1505 0.0033362714259946662 -0.0016580508936064435 0.0028258719756177695 +2705 0.002435173945972046 -0.0028321093485166047 0.002293898558134928 +2897 -0.003445843699780853 -0.0018352473942880598 0.0015079256725758414 +3291 -0.004702271501930381 0.0005308886845843383 -0.005371188181806503 +1506 0.006958457252522979 0.002165148822324451 0.0014586270442147405 +1504 -0.0015301494456865764 0.0005601915226987499 -0.0032328628162094325 +2896 -0.0018144132719398178 0.0001485893515786146 -0.005205288647709245 +2711 -0.0027702997034997527 -0.003029647947176256 0.0024890413838949896 +3723 -0.009754927206160434 -0.007708842722620962 0.003558114154299279 +2707 0.00016117346254294814 0.00404414617191575 -0.0018681126367809727 +2709 -0.0023046596273943528 -0.0007059473510353489 0.002314701183254804 +3352 -0.00180689084297271 -0.00077337267646314 -0.007543708174755108 +1315 -0.002021040199815294 -0.00311100120899066 -5.35669535821892e-05 +1316 0.0001494259000094206 0.0022251156815665833 0.0004235952976084254 +1317 -0.0034797127662065997 0.0007916385022316286 0.005230878423567849 +1318 0.0026851130088632992 -0.002055419627025563 0.005238069928043854 +1319 -0.0002244246811061038 0.0010063147733280293 0.005163597870287601 +1321 0.0037466807209507584 -9.607438956423506e-06 -0.0012275869229590815 +2708 -0.0006819446221211723 -0.0017299292706552702 -0.0033550290606237532 +1326 -0.000991926655983129 -0.00146706348658094 -0.000165403629613653 +102 0.0027949857390908877 -0.0004510791103815204 0.0008309185530412466 +1324 -0.002680710959401258 -0.0021859903255021483 0.0005526740342010137 +1325 -0.0051516510130447885 -0.004975130000940093 0.0012910431218588032 +2710 0.0006047598011992317 0.0018909510754037708 0.004907655258808669 +1511 -0.0033242567123209768 0.000701661030450776 -0.0013497344992328888 +1510 -0.007850085937747915 0.006696293094029479 0.005749458405183413 +830 -0.0018889792250455857 0.003185472769026689 0.002463464048450114 +3395 0.0024473647728696047 0.0076945460054219554 -0.0017433980427584551 +1322 0.00013154670110601964 -0.005856456370567573 -0.001170556637824347 +1323 0.0017515418253546565 -0.0033353194480919925 0.0005709496749670286 +3294 -0.002922446497560313 -0.001784163314538561 -4.1431585189223966e-05 +58 0.002757341068578958 -0.00925423328978718 0.002998586665337844 +2717 -0.0014259288876867253 -0.000178398725072329 -0.0021682960982172973 +1327 0.005100888973108183 -0.001954978242588022 0.00941986827568772 +1328 0.003346453762231346 -0.003365740549723289 0.003674695844759698 +1329 0.003466114001972512 -0.00599982897742191 0.00683263856003856 +1330 -1.3037282619589282e-05 0.004315650154606262 0.009599871295099139 +1331 -0.00043400641703284827 0.005551514394408989 -0.0006272782170664749 +1332 0.0019024746090295364 0.0033225002499095023 0.007320855622192503 +2716 -0.0037257465381625656 -0.0007182995404487107 0.002142343650413791 +3340 0.003680987465505997 0.001778895271350248 -0.0009290958551092766 +3415 0.0012512545282534222 -0.00011657818685513809 -0.003936345488419281 +2715 -0.0008229808496269468 -0.0019233756660561475 0.0010537235169378908 +3398 -0.00871343653668232 0.0019770804706886248 -0.004392923812185674 +1523 -5.2833941722792765e-05 0.002545289369328112 0.00019636995259063168 +3267 -0.0016137027188660713 -0.004199960749093185 0.005584308434279396 +1333 0.0019032875307556485 0.005609232931611452 -0.00034828309883433255 +1338 0.00029108574619361494 0.0013115107040174967 -8.66505524173115e-05 +2922 -0.003162705004978077 -0.002044491468248066 -0.004702899310970911 +3322 0.005483718827922126 -0.008648743793228664 -0.003247880378740222 +1334 0.003183325661384277 0.006205782301577006 0.0012728231815831697 +1335 0.002327775384815378 0.005025137451584611 0.0012363699562255132 +1336 0.002613830472699328 0.003239797971731894 0.004834479627121535 +1337 -0.00010647602348692299 0.0008240455910157293 0.0028243324359235327 +3279 0.0009729795162177647 0.0009756490977224298 -0.001432375256132805 +2726 0.0010745702262580012 0.0037040708862547842 -0.0025025689184666167 +2727 0.0021679373957325812 0.0074426408808746436 -0.0008813032475386138 +3297 0.0013640514846903692 -0.0044239051938750485 0.013610965123147531 +3336 -0.000782845714456124 0.001462699162846882 -0.002433610670931025 +3396 -0.00300148448540785 0.005469234549032462 -0.002063803078239868 +1339 -0.0013389178700892713 -0.0020460078834111444 -0.0073860306407484595 +1340 -0.001601953421896185 0.005133450343572041 -0.0038801136198167376 +2728 -0.0029104933820428666 0.001962130989473926 0.0030368669103268057 +2918 -0.0034862936438530517 0.0011693247916021864 -0.0028612923597398834 +2917 -0.00012829042769643342 -0.003665882862692977 -0.0031120104594204727 +2882 0.0035441674236539964 0.003577148932261737 -0.0019894900571882507 +1536 0.005174959956403364 -0.0008991418107265847 0.0025132327482393696 +3281 0.011011839365592338 0.004684430067846088 0.004505599503972011 +1299 0.0009936134073606111 0.0029100398785437006 0.002879709160426132 +1300 0.00291383935273412 -0.004069839478651134 0.00496146805078116 +1531 0.0045548453677992035 -0.0029768071805115395 -0.003274932715073145 +1297 -0.001489918353670156 -0.0023392138138722198 -0.004798870892508729 +1302 -0.004034458573018325 0.002496211252559922 -0.003090696181220041 +3275 -0.002398539805259587 0.007612751158889325 -0.00414169829852487 +1301 -0.0021260132825973 -0.002276046906244221 -0.0001236210176292362 +1341 0.0017746903376130317 0.00558432938393413 -0.002689164568185397 +1342 -0.006746635439898927 0.003986727335446772 -0.0026594281827263537 +1343 0.0010164718158563 0.0023572019604647635 -0.0024394520918607915 +1344 -0.006176405294882523 -0.0006312636580133933 -0.004245609211279989 +3276 -0.012239460244625685 -0.0018220581258058834 -0.0032259908166946557 +3388 0.00606936749005069 0.0025397624205839983 0.005721794562580079 +3453 -0.0009460534456127138 -0.0018894344353803177 0.008771303039616412 +4 -0.002598864841910979 0.0037596621808501924 -0.0019958340991738746 +1354 -0.002967809997821154 -0.0030666453434663923 0.004403111206096997 +189 0.0014936049222162258 -0.0015099385516935803 -0.0028591873569667643 +53 -0.004031242276467481 0.0021632065630507514 0.00686038331072904 +52 -0.0035533798855400317 -0.004090239502810074 0.001975395360484875 +1 0.001346406851507843 0.0011498661053485329 0.0031698617954584087 +57 0.0015392229591826123 0.0012048683860336421 0.004096894704320784 +6 0.00684219295214459 -0.00027476995074774985 0.002760744265389285 +1404 -0.005910641062866629 -0.004913603663046667 -0.0022516108690493193 +1399 0.0012209613581422825 -0.00048629618206088774 -0.0027554175244228303 +1398 7.651682322843338e-05 -0.0015681267624078872 -0.00470205795196114 +1397 -0.00041025917991991404 0.00170600068185779 -0.00510149452192312 +1396 0.002147996605540105 -0.003127639898697558 -0.0005655764201438452 +1356 0.003724579323219731 -0.0010434705433479176 0.004059945397551731 +1355 0.005047527181641542 0.007095179454432288 -0.0009607121282576296 +3417 0.0014595169217112558 -0.006046100509715408 -0.00230448941137439 +5 0.004656771592902171 0.0018825205449023539 0.0013106621567736346 +1395 -0.0021158455450796575 -0.0017804714196136056 -0.004007136986815097 +1393 0.0021872316815726104 -0.000882550759788732 0.01034880874889444 +1540 0.004101652345781122 -4.061575724307214e-05 0.0014400261512983379 +2 -0.0035159394715020146 0.00559061938750695 -0.001064764049583375 +1532 0.00034627142432337894 -0.0010174842815910423 0.001936582952156587 +1403 0.007735867548907506 -0.007538132084128679 0.006766012193302013 +1394 0.0016113585462158946 -0.005576237149730879 -0.002194612826704973 +191 -0.001232097055959521 -0.005697848401306443 0.006011718123318329 +1401 -0.00017237836685147535 0.0020724675475801493 -0.004440796536382047 +1400 0.0033353442244077273 0.002823184357021208 -0.005845070065617081 +1402 0.006675141811183257 -0.002247689870818864 0.0045791048511326995 +3393 -0.007991270458398796 0.00090654912485387 -0.006020206484142931 +1409 0.002953236635529661 -0.00020154526179943027 -0.002539679793931165 +1408 0.0024181096622158792 0.00039988282636575637 -0.0037156996863569546 +1362 -0.00385490794639348 0.0001911286360179946 0.000744291932187663 +103 0.0019222472138582013 0.0026623539638638773 -0.0006106422273039836 +141 0.0010960723642380386 -0.0013497257729635059 -0.00556135494649911 +3295 -0.0008306971871987807 0.011906888747454374 0.0022803032856728994 +3371 -0.008570468143392362 0.0017865241788868034 -0.0008713372778017109 +3425 -0.003703837262019047 0.0022116686032887006 0.00895667750357993 +1361 0.004748425004579287 -0.0026696179360711503 0.003251692768454809 +192 0.0013327095475045775 -0.0045376225702870865 -0.0012869045823592112 +72 -0.0024283153994086922 0.0007947732991100758 -0.00278726019955642 +1363 0.012080805469804588 -0.0019953750488041883 -0.010652773174145166 +70 -0.003659228531573335 0.003409188727566683 0.0002967991733879718 +68 0.0013938770306628947 -0.0010080625459756723 -0.002437088566079939 +1368 -0.0022202671043133667 -0.002522168015038232 8.130072701314531e-05 +2712 3.104282177440695e-05 0.0015953767519187956 -0.00024928165612399353 +1366 0.0038594259225707022 -0.0029204601912277053 0.0036734714536057846 +1419 -0.0021711639236580245 9.063084145196266e-05 -0.005049464912407383 +1418 0.010318822503592196 -0.002902313620897086 0.0037215360175057617 +1416 0.003326239879936518 0.002611832544056274 -0.00602800098090552 +1414 0.0026753365902439136 -0.004866866567003546 -0.00030177029876729593 +1413 0.0002599349897463938 -0.0034021127923072147 -0.0012446775037875518 +1412 -0.0014793683787895215 -0.003303294044116219 0.0021658013491030587 +1367 0.005542841989933516 0.0020536361037023702 0.0019207172101572464 +71 0.001778623895740455 -0.0008712287997445519 0.0008602137411553168 +3392 -0.00901437983225244 0.000996889612571247 -0.002554740216027381 +3422 -0.0030739796747798736 -0.006251398053997796 0.007326464407817435 +3429 -0.0026815368831444556 -0.001210665007758972 0.012601127664359344 +3870 0.011796831015982574 -0.00392232132062457 -0.005209203903380576 +67 0.003622779127054742 -0.000884487562269042 -0.004580601749726664 +69 -0.0038291934249730327 0.002235352092430435 0.0029214655803921196 +1372 -0.003895998911969415 -0.0013322749977583016 0.002059405801175379 +35 0.0034772615418919104 0.008257936349547619 0.0007146649741358459 +115 0.0003024940787625563 -0.0054720837906903925 -0.0005822704179292116 +3413 0.004503769920516524 0.005432952003046054 0.001769995423726522 +1373 0.003918264309458913 0.00024233897363698414 0.0013379127672306186 +1428 0.0027500682043454967 0.001615587313796689 0.004221161581142229 +1427 0.00036611746483972385 -0.004739141693118577 1.3797930117384319e-05 +1426 0.0010844429231291358 1.6304529527949557e-05 -0.002538229111400429 +1425 0.006959844450173345 -0.0076645282984439955 -0.0023019448787709937 +1424 -0.0038998573110127412 -0.009193769879153636 -0.0035814553765597273 +1422 -0.007620940425957827 0.002820975700943153 -0.00597872778954322 +1417 0.0018110339439505144 -0.0003789285282102819 0.001872578949358195 +1380 0.003912138517703248 0.0027224851821013416 -5.269430762431772e-05 +36 -0.00020764659373388592 0.003526351018427924 -0.00058300430497494 +3264 -0.0006403905851196572 -0.004699104551664067 0.008304447304968463 +3274 -0.008555845227019819 -0.0004264894773383453 -0.006460322081251585 +3164 0.006055112092513282 -0.005460955790123508 0.0008647139077472604 +966 0.00041059373630312644 0.001282847794986219 -0.0047415468871660135 +1423 -0.001698347585250787 0.0007129708989261319 -0.005422880690951081 +3688 0.004133431543134346 0.007744098122720105 0.002307356327780475 +796 0.005518056358011031 0.008604604541468898 0.006480168944091425 +3338 0.0023646903034701522 0.002813036252624771 -0.000982834141383133 +88 -0.0011147494506819936 0.0009602283647716574 0.0023021173896869873 +1379 -0.001544876882769342 -0.006493595597949868 -0.003642820998224647 +3309 -0.005865118671260332 0.0005205903561658566 -0.004885655104394103 +3303 -0.000987317494914433 0.004468438713060107 0.0005423146462226155 +1434 -0.003021541958635925 -0.004810199754101035 0.001869321906490349 +1433 -0.0020185606113293252 -0.004797368546100125 -0.00496265232242916 +1430 0.0007884463544918993 -0.002686885884309063 0.0027402005011219286 +1429 -0.00016262655775788951 0.003643947088204707 0.003055646172361083 +89 0.0010322715192374776 0.005729232127216979 0.0010889189929263968 +3356 -0.0007085709207602415 -0.002953451341150634 -0.007756762216169518 +3380 0.0032592534838501858 0.001613923903189577 0.004540185554124429 +3426 0.003617675212923969 0.013448896081371509 0.0037482784215736717 +3420 0.00039111879437508717 0.00851402873453331 -0.003025195216767208 +90 0.0022097866536045386 0.004173396008613213 -0.00015372395059090623 +1378 -0.001352422582260325 0.0028584621594316736 0.007229831146792096 +1432 -0.0006942987407612096 -0.008658146752274174 0.001023130164558724 +1431 0.0034782097197318678 0.00032997227397878925 -0.0029756062842112205 +43 0.005000484831676715 -0.0021753498897815918 0.004671175019997807 +3269 -0.0019608125357963154 -0.00018002047226727696 -0.001740661410929863 +133 -0.003920002645618674 -0.0018398146201670398 0.006042970601266937 +1389 -0.0019111741470806637 0.0004680133331201945 -0.0025295641247198245 +134 -0.0012726178768794362 0.0015121857034198264 -6.862203380999802e-05 +1440 -0.006295488091312102 -0.00376156084620824 -0.006175772241536445 +1439 -0.004092535670426888 0.0026156972039459614 0.0016448174528476925 +3345 -0.0027309063425157267 -0.0021820914651906886 -0.008272561638026983 +1436 -0.0032923037825877705 0.001706901162611709 -0.00020830467228043982 +1435 0.001184521343631773 0.0011805503513127155 0.008125176412201323 +1392 -0.00419155563347327 -0.00030313698110908733 0.0013911708957917112 +1391 -0.0022068436296267245 -0.0044164845078985835 -0.0012952102436797695 +1390 -0.001248191751582058 -0.002025052448593382 0.0017151027184371791 +3343 -5.235905751754633e-05 -0.007332837055838224 0.0009669444451523028 +3389 -0.002828562687515151 0.008731742096925621 -0.0047542255221378745 +882 0.004521691299907135 3.225367038191891e-05 0.004490441435897536 +890 0.0014873977082232822 -2.3203052759519204e-05 -0.002682539346675288 +107 0.002483457279338004 0.004836137717189233 -0.00020909771402560857 +99 -0.0012186875946824992 -0.0005053703938304082 0.0011202398168241598 +1448 0.001237408979002924 0.007478589937215885 -0.00431016968217566 +1447 0.0005146626068458308 0.0022346563899607427 0.0005654224612362531 +1446 0.0017542343957621573 -0.004999222680824008 0.007221711353574222 +1445 -0.007110801427252705 -0.01051423307725314 -0.003741020427730709 +1444 -0.0005603432112102913 -0.006977691215880979 -0.008772907284875705 +100 -0.0037951923934738153 -0.00025496864033320264 -0.003246534800400876 +106 -0.0003319298766303892 0.006653765697527478 0.002885600096982386 +3365 0.0004948144200851836 0.0031051109491979823 0.006489366696141748 +3368 0.0010406153720731047 -0.004294182941539084 -0.0018301826296375943 +1443 0.0024228544158843195 0.00435544907901393 0.0048766619134862094 +1441 0.0037181360275983285 -0.0021769531631514326 0.00026029456455658816 +3424 -0.006597869085619178 0.0013284000623053002 0.001105560591698429 +108 0.003940882547719578 0.005870099802207415 0.000229038403647908 +1452 0.0031507020988990786 0.003046144104862546 -0.0018136869469551934 +101 -0.004238741451592976 0.004479338604713631 -0.000986275078370193 +1442 -0.006823594118965624 -0.00014996602711962582 0.0032329479417390816 +782 0.0030702544664102075 -0.003338879858822016 -0.0005333553682835677 +110 -0.0019330272651024878 -0.0009236687952842021 0.002490965087363461 +111 -0.0013024469599543776 0.0011146234486746713 -0.0021187266561144254 +1407 -0.00019688443864381916 -0.0015896527388119745 0.0006791685340496579 +1450 0.001286721547452932 1.6086087620621216e-05 -0.004374044985656243 +1449 0.002539723216755479 0.0035347636759250262 -0.00043672639805095685 +1451 0.005772862616469708 -0.0004201669031229696 -0.0013937075638733223 +1458 0.0009761751021552326 -0.00027397396500840733 0.0036235107366082747 +1457 -0.005915388061723375 -0.004329230923011305 0.007586196761286453 +1456 -0.003479862068414528 -0.009663084623921585 0.002475902991078713 +1455 -0.0011726673415884425 -0.0033903766440447746 0.0027491963366769747 +1454 0.005489682587618993 0.005113051483396545 -0.004377903486527477 +1453 0.001775535675083847 0.0004670017697743264 0.0018711737618846347 +113 0.0009771243748238918 0.007243968288580045 -0.0030364153092293537 +3407 -0.0059145032531220856 0.0030116429668657968 0.0001624086771863793 +3463 0.0020784042456718018 0.004823611931392604 0.0012279723088499514 +112 0.0034554188098841203 0.0034738073092879713 0.0005727124908211723 +1463 0.006386015068338549 -0.0008979744230057571 -0.0008504996742102052 +3427 -0.006092653308599459 -0.004492112981011469 -0.004331453008088945 +1415 0.0024561162996112776 -0.0024345496606800504 0.0037368523342086865 +3333 -0.008359544891227491 -0.0026428786438308584 -0.0031513431133656823 +78 0.005581279851935745 0.00284313542405666 0.0005589718265754975 +118 -0.005674798258747987 0.01016278083348317 0.0030276479533844674 +1464 0.00232429935788532 0.010932483185009646 -0.000717324049406679 +1462 0.005450803958387674 0.004253005945367754 -0.0003166362245689825 +1459 0.00029295671519071473 0.001476015207022851 0.0037994734951371932 +116 0.0003650654639231782 -0.0016982249437725255 -0.004345421035905157 +3271 0.003728213545843106 0.0023771573281664168 0.0028227376066422135 +3378 0.00720097590275517 0.002107491060598167 -0.009063243865814955 +3438 0.005662054491879867 0.003042023203532673 0.004767449011436468 +117 -0.001350270671470134 -9.698246457480239e-05 0.0030234492764765497 +857 -0.007641436043049799 -0.0051377249884698205 0.009519372918511602 +1420 0.009247752014211654 -0.005194868814239308 0.0006638332957821157 +1421 0.000138354880188818 0.004224071150084098 0.003924862100808463 +1470 -0.0008951827447740108 0.0018041072005418187 -5.265410047590365e-05 +1469 0.004269729642727718 -0.0006812472097199924 -0.0002947272867142068 +1468 0.0037297873593227964 0.002599364848349854 -0.0006174683834863203 +1476 -0.00035626731508386905 0.0017843714562634518 -0.005237310920304713 +1475 -0.001665143386081866 0.007375262695230459 -0.0007344335447133444 +1474 -0.0076982676667032065 0.009878113132222654 -0.006289315883175716 +1473 -5.97469747890403e-05 0.007158622876962655 -0.004518035585590847 +1472 -0.001574350631589009 0.005458617641061756 -0.002313470684474466 +1471 -0.0013560146350016483 0.003977317803834834 0.0011233379261733388 +1467 0.0005378098346436397 0.002397209673819915 -0.005611070463496766 +1466 -0.001617676218858545 0.0037446549620448973 0.0010999852228132064 +1465 -0.0040714339842342255 0.0003577136664265305 -0.002588903330587959 +3465 0.0026956309144434316 -0.0022642306856408665 -0.003663444933737803 +135 -0.0024215200938990326 0.002488570388007418 0.0003069912751921532 +136 -0.004803574359676719 -0.002206196011413447 -0.003184798293889898 +1482 -0.003267957089400107 -0.0032244413814975746 0.010371547793499539 +1481 -0.004156537387961869 -0.004562775713556437 0.004485609884136167 +1480 -0.002662280001559271 0.0007496734039403115 -0.0028228092166021723 +1479 -0.0018122143179711658 0.0025489293128246235 0.003509095640362385 +1478 -0.004901030740672571 0.0022574020451207933 0.0035506847845967783 +1477 -0.015909781837385527 0.0008391541065696796 0.002876805724341159 +137 0.002821762452230822 -0.012118263115062736 0.00432395198720666 +3369 -0.004299487077248543 0.0007495132597275297 -0.0033272700345919437 +3400 0.0027180755508233244 0.0016195269914646053 -0.004644942955912703 +3227 -0.001583318004124817 -0.001988674458293662 -0.008776883569364562 +3383 0.005225194933986208 -0.004446173912453841 -0.009717937733309033 +144 0.004053554461856922 0.0038305265937079846 -0.006401772309144337 +1438 -0.0016194020757214363 -0.00529722891119135 -0.010092167194465665 +1437 0.0007188736695928754 -0.002375055998379474 0.00021919939007336757 +1483 0.0027868412275976373 -0.001442133162376091 -0.0005335363819525234 +1484 0.00928794066327935 -0.003367186039880265 -0.004024606580437006 +3451 0.0024065841438770086 -0.0022821016739655265 -0.0027016027484898183 +3292 -0.007906576942747087 0.0020935738716765656 0.004028820438987837 +1488 0.00601015327208891 -0.004581980246713144 0.000843958325199436 +1487 0.0035720707506073845 0.0010278100786592092 0.00036958907820034445 +1486 0.003596738598454457 0.0051656446077642665 -0.005858231104315179 +1485 -0.003242117159599681 0.004944887248954824 -0.004334974625943166 +142 -0.0028558115258776147 0.00011117351857576691 -0.0013537975455846579 +143 0.00436511285757243 0.003398091343698364 -0.0004578673698045454 +3325 0.003657503761172604 -0.008583156864407809 -0.006411743761188668 +3399 -0.0004005904846922554 -0.002335304166053279 0.00780062638778354 +3318 -0.0013672730019402327 -0.0017831961081330543 0.0016793391908353982 +1489 0.002773817295485525 4.239592179815051e-05 0.0051146812430716716 +155 -0.006548190825137589 0.004881913546035648 -0.006118861881903709 +1544 -0.003977979934071197 0.0043564618794886805 0.0003477996640185655 +891 -0.0033763165974908635 -0.0033996216074534003 -0.002966673689325203 +1496 -0.0009895142896045707 0.002599833532230457 0.006618812268903634 +3412 0.003394266514059818 0.008599351594969993 -0.003397742511660164 +1495 0.001969779173792358 -0.003716943201000404 -0.004642361178197843 +1494 0.0008658347782097157 0.0009491546938966051 -0.00043628161620914004 +1493 0.007286516600183367 -0.003439757250098062 0.01053294071569767 +150 -0.0006806541234140669 0.002426740289440261 -0.003228934420060782 +1500 -0.0025762113936135546 0.0022962265789398823 0.002821719936706527 +1499 -0.004093005345283287 0.0006479620461436309 0.0025882557458353377 +156 0.003570523299728144 0.009347110381531293 0.002691055350771597 +3287 0.0007569135301696532 -0.0008291603801071554 0.00514605481975616 +3436 -0.0012889466831068161 -0.0003860412126722517 -0.0009861011536606648 +3455 -0.004861340530692328 0.001858802187021279 -0.0002999299986895778 +1545 -0.002939138823080708 0.002625626646088405 0.0010631631149142953 +1554 0.0004776190071658854 0.00047766292249974376 -0.0002965355822550846 +1552 -0.0030777938678775464 0.003681779645078039 0.003002474440868329 +1553 -0.005307318580627976 -0.0031172207981737866 0.0006940101965401893 +161 0.005848395276540892 -7.3251332061343e-05 -0.0007975059683765548 +160 0.0047782342511587025 8.617136868459629e-05 0.0020521415135442934 +159 0.0014970644058261537 0.003698313565837851 0.0004172469628267815 +1551 -0.005409158147198355 -0.0024201987683608725 -0.003242293378092621 +1549 -0.0011539552617281688 0.00448436979624882 0.0002937005058126087 +1501 0.0006900396074992985 -0.003293839393517077 0.0017437969229237955 +3456 -0.0009353904527484991 0.0028433945181094164 -0.0053466954524298204 +1503 0.0011028782008966108 0.003068022330002539 0.004053294747655607 +1502 -0.007597782811743609 -0.0007338166463531274 0.002952663354539984 +157 0.0021562712065246303 0.0035773753989780405 -0.0018335018332301294 +158 0.003986128070026529 0.011943794359825587 0.0063339511740698835 +162 0.0021506989558959123 0.0026036168128173815 -0.0026195740136953885 +3288 -0.0004386799314240437 -0.0070619350638830266 8.718186333516073e-05 +3315 0.0014297902640555617 -0.0011315255096905762 0.004367014985466488 +3354 -0.0035986054513253312 0.008935166976299964 0.0007756354269803429 +1550 -0.00018009460879556352 -0.006652298502680025 0.001178415905585395 +1557 0.0007756366253602702 2.3035133023770854e-05 -0.002085158654831771 +3446 -0.0018240003531355994 -0.003344453626296958 0.0032879961802847416 +2902 -0.0044389131289155025 -0.003581688635720338 -0.0017113925773233826 +934 -0.01200045683664227 -0.007892471034336993 -0.007008222666022353 +2905 -0.0019617753835982155 0.0019593502776854557 0.004849425684245756 +119 -0.005784259963038186 0.0008637841754186331 0.0014411754465364162 +120 -0.0011748409079273914 -0.003720847800428696 -0.008165126374580844 +2904 -0.0040496999585635735 0.0026303709125929053 0.0022175511126458643 +1514 -0.0032968804730935403 0.003946367108014117 -0.0007151205562581901 +1513 -0.00761535125698791 0.008271414709759353 0.00026745449029722 +1512 -0.008437679964763273 -4.275541661303189e-05 0.0032558126793848403 +1509 0.00039941020890386946 -0.0019295132725145304 0.0038196209044777983 +1508 0.0009345886945439443 -0.0014309428731366406 0.004286874984051509 +1507 -0.005513719762195089 -0.0004407608840521154 0.0006298675844094911 +965 0.003946131798458302 0.0018322364791293544 -0.00312222079386393 +2903 -0.0002353516822905935 0.0008091789863438477 -0.003125924020392277 +3382 0.006724395168044909 0.00785141718649785 -0.0022930119671605792 +3439 0.0056964281865176805 0.0017826366622129622 0.0014580213557107225 +1515 -0.0021881490514405596 0.0038894426843756767 -0.0019333269746188441 +2509 -0.004054515904267787 0.00131439691333163 -0.0019054177674145544 +2906 -0.004922685378126153 0.0005169637433585064 0.004388944646952394 +1534 -0.0085546124532328 -0.008367665160572305 0.003964924620281632 +1491 0.008223249479230862 0.0031796774586611955 0.0027826356886868583 +3117 0.0028209196949506624 -0.0036567948244190375 0.002756876209331053 +2910 -0.0024992804190330114 0.001248271331296789 0.001631047748679617 +2909 -0.0019540952956132998 -0.006522653341749706 0.00029965868927185065 +2908 -0.0022499007731734523 -0.002061734097466804 0.000577572443824714 +1518 -0.003423186764616376 -0.00011531388239868735 0.003441326277075 +1516 0.003930246749940136 -0.004713659775559512 -0.0018358620717785754 +2914 -0.0007795191078814898 0.00032555975223411105 0.0027684145047398314 +2912 -0.001016499071417815 0.0032835283500391543 -0.0021121880609044808 +1524 -0.0034398805242836917 -0.004249029023076419 0.0024182624620083986 +1522 0.005189373270982066 -0.0003747274871955483 0.00689301799455177 +1521 -0.006065933503209629 0.0025926078771486855 -0.0023328173210363386 +1520 -0.0045149875832427 -0.0047641508721845485 -0.005190610951142725 +1519 -0.0061988659029280895 0.0008127262478310433 -0.007029812217881185 +1517 -0.0028539178072138805 -0.00023024976815996166 0.003940352367943186 +2913 -0.004765095329737687 0.005380695881312917 -0.0010358622558615449 +2907 -0.003213656873034449 0.005905030838693822 0.00768919239065052 +3300 0.00601097977254285 -0.00314476457185218 0.001430229830280847 +177 1.1877534074746105e-05 -0.009970280490965712 0.003892978004698666 +787 -0.0012672439502740788 0.005264619510763189 0.0018668867650713556 +3411 -0.004230013882629358 0.0008733401933024491 -0.003345542775183154 +180 0.0007258154547614054 -0.009761706170129903 -0.003429891673322451 +178 -0.0025856124622145407 -0.006520054529200546 -0.0013021686350208007 +2919 -0.002141633765579422 0.0009209811016782368 -0.0009798309279983259 +3353 -0.0061636658563689805 -0.0037598565545235454 -0.004772729293561272 +185 -0.004713618021789044 -0.0016753369785462403 0.0018133783389691117 +1525 0.0045285052487934446 -0.002007045799776768 0.0036413672855156146 +179 0.010257095019666767 -0.010811731984800944 -0.0022717369462580232 +3461 -0.0007477352281198624 -0.0006528821542510885 0.009283112474742675 +1530 0.00030157822178523687 -0.004807537703679882 -0.0023881874485241475 +1529 0.0008895522722989178 -0.0013379176394834778 -0.009402374266906975 +1528 -0.003419655592975697 0.0037465770280226567 -0.0032462028161571515 +1527 0.0004427785917342244 0.006206565072397225 0.0034074177622267416 +1526 0.0011022390669025127 0.0006843762723743019 0.008618959413241603 +1580 0.008646359402368825 -0.00043975071297779717 -0.0022273942379844847 +1541 0.002434201044462414 0.00395648504618078 -0.003659023186986556 +188 0.005790421122563234 -0.0036609810043110066 -0.0032209593333722727 +1490 0.009339051451554082 0.002554810727301064 -0.0007438040790860884 +2517 0.002715875776807588 0.00013923303681362452 0.0020711916387510273 +2521 0.0058474910936874925 -0.0013086525409559526 0.000309537775842535 +51 -0.00036417342776822587 -0.0020334428643340886 0.0017630950809811657 +149 0.002697803732465022 -0.002523080374543723 -0.003726584738181382 +840 0.0010508532694752935 7.075447302892536e-05 0.00020466281904970646 +3326 0.007086824620505965 0.0008177169854859806 -0.010146469693663566 +154 -0.004113190740464393 0.009093570823592552 -0.004062314381589898 +175 0.010325436993018286 -0.0031095718032631593 -0.002009512615936958 +181 0.0052359510372217526 -0.0014412811458571165 -0.004979586217599132 +128 0.0006552559730804886 -0.0046645518249179285 -0.006968471174390161 +145 0.003387518580118076 -0.0007300703534311688 -0.00434339344353509 +839 0.0006741874881963808 0.007946975066683291 0.006142945807618293 +915 0.0053456367766704545 0.006123524285026326 0.0014851079288231296 +1590 -0.0017595427046648582 0.0019083507618427823 0.0038084889142094317 +1589 -0.0009195178772789936 0.002983171851385127 0.0013954697202874157 +618 0.0009345277826655248 -0.003254145575986672 -0.0009177295556016252 +1780 0.004443659474601046 0.002414806426369128 -0.0007472803125826828 +1788 -0.0025983781015084264 0.006185804201909345 -0.00859901597831677 +3556 -0.0015095886334128264 -0.002775177295206797 -0.005095916115935738 +3557 0.004938553089505537 -0.008097170800394718 0.0011818214912543946 +1588 -0.0020326324813914336 -0.0022574386376441164 0.0039587793003486174 +1787 0.001429448191253128 -0.0023282514623313147 0.0008994487345009713 +1779 0.004400543011177854 0.0009682443071948832 -0.003742055128710919 +1777 0.0007965111983885796 0.00361222963906624 0.0008620976476523985 +1778 0.006489415880433468 0.005587638402121045 -0.005662703897969305 +1593 0.0010522924122256892 -0.0015912810793412729 -0.004550202642732115 +1736 -0.003173799390841142 -0.003974824791538227 -0.003192170742298402 +1730 -0.00036057325450173733 -0.008687976031200523 -0.008454770281836284 +1585 -0.0019029003239802893 0.0010574836783958379 -0.005149656000112743 +1717 -0.007264866042420449 -0.001942351268838847 -0.0028040349771598022 +1738 -0.002834164961104163 0.004340095168735027 -0.004536649608213656 +1737 -0.003863610610307374 0.0011911679703249165 -0.006003727316715376 +1548 0.002705547818180477 0.0007964657442267442 -0.0024845026969772983 +3595 -0.009952805555003767 -0.004469879870943681 -0.0018095979367478779 +1783 0.0012163523790430255 -0.0023891913278235814 0.0036730682417209387 +3624 0.0033385896501916122 0.003911882193257938 -0.00581940145723225 +1784 0.0023054179829717996 0.0008109712742309002 -0.006029030218896136 +1785 0.00838354022211606 2.2304162543849547e-05 -0.007895925900619499 +1786 0.0011452356641881549 -0.00016560307447656473 -0.0030758970415392497 +3659 0.008424313961525397 0.003096869921282964 -0.001354518195060749 +1597 0.005266215637851517 0.006009719499440843 -0.0019286895710236103 +1598 0.0025925531681136793 -0.0028750704250343406 -0.0013516156863859036 +1789 -0.0011288172492480086 -0.0020284295443579146 0.003583881490522522 +1790 -0.00723854419977129 0.0017853669180997631 0.000496031210135543 +1791 4.9063686689924034e-05 0.004469548585006137 0.003881937934985278 +1792 0.002963393454282772 -0.000612872260881487 -0.0038175849699819053 +1793 0.0037046412964417998 -0.0036210003542899555 -0.0019884613437687994 +1794 0.0029544541441340927 -0.0003333240017150093 -0.003435110215651501 +401 -0.0035519295810051256 -0.0050195343244898985 -0.0002774475552265113 +1714 0.005109607961661397 0.00501323357431901 -0.0064153028249854215 +3674 -0.0012167944826831114 0.006489102095504717 0.003090322706210555 +3561 0.0002467851921346827 -0.0010993318752982582 0.00531969504646154 +1644 -0.0061319407374110044 -0.0003976184846287945 4.157179066912641e-05 +1657 0.000826521949760297 0.003040104432019917 0.005386050640556772 +18 5.6913868519593405e-05 -0.0009254552226802817 -0.002877691756184642 +1795 -0.0014154349964697636 0.0035891471753091856 0.0019298751371806082 +1796 -0.0035860734539681417 0.0038238785115371383 0.0027888192472718333 +1797 0.001189480182018117 0.003071767122740312 0.003489395935069779 +1798 -0.006654368797678981 0.00310539771812173 -0.00323320832341429 +1799 -0.0036934675517907283 0.0022557226818517018 -0.0005961643769946038 +1800 -0.006485842714420187 -0.001039519762699506 0.004911286224222277 +1806 0.0007760711994737984 -0.004192977028411869 -0.0034339473397668576 +3558 0.004505407964139215 0.003913448983265749 -0.00020112286870192534 +3621 -0.005720223040585109 -0.0033809269513744938 -0.004735594684948209 +1805 0.0010730040092138677 0.005016950584696591 -0.0072650774860225885 +1614 0.0017643470587697715 -0.0034230689033273804 -0.0024898307559289307 +1755 0.006200031254096357 0.0012020253094045456 -0.0039044861886739133 +1613 0.0033380576120288345 0.0007705444849849209 0.00014488676879652814 +1722 -0.0038156397550962503 0.0028820803021017733 -0.0006943258297309007 +3668 0.004232346223094556 0.001276456510189854 -0.0033132720752212263 +1756 -0.005207361407697065 0.004581654595976196 -0.0038176857948483854 +1634 -0.002668393972254439 -0.002212756223523235 0.002476970870970382 +1801 0.001976252101629949 0.006747793507581455 -0.005356066386748648 +1562 -0.0018640907821794689 6.773186249542115e-05 -0.002940313986334412 +1802 -0.0010272239619583349 -0.001283592431359657 -0.0030956635190323408 +794 0.0008589330030603535 -0.003571881123040486 0.0010600697399383448 +1753 0.0013391917184110951 0.008458656986844372 -0.0007938294190066981 +1754 0.0030509295426708587 0.005940117672075017 -0.0015293966764114888 +1763 0.003691711057654526 -0.0006135775825592002 0.0027541128962958864 +1764 0.0024938087736961 -0.004819436017007282 -0.006241539276657837 +1803 -0.004379849072122673 -0.0029265455804660273 0.005902779706265816 +1804 0.0007925976965345807 -0.001856766274690673 -0.000525636402711756 +1807 0.0013962159922618093 0.00013392838474721915 0.001712073117535077 +1808 0.0014894369841353678 0.003076124757574457 -0.0034948396890750917 +1809 0.004569359179617886 -0.0001671177119298378 -0.0009773024264460777 +1810 -0.0014649714012907806 -0.0005018079261328294 -0.000546643021622511 +1811 -0.0027626550917969938 0.0036680300277713786 -0.0004080892329042466 +1812 0.0010464386962206625 0.005134922129259209 -0.0029869761067835786 +1628 -0.0005830322744109343 0.00037514822898153844 0.0031548312292725244 +1563 -0.006131553860672446 0.005461699150219503 -8.735402511035644e-05 +3620 -0.0056979909320369485 0.0044021691606087 -0.0048682368417527514 +3580 -0.001008898793749206 0.007188081150345399 -0.006674576029170149 +1650 0.003800108074910534 -0.000545452766329974 0.0020312677700523455 +3543 0.001480393177684962 -0.006609432700257797 0.0022536008168134915 +1622 0.0019997267447536575 -0.006622983218190879 -0.007490843250733358 +1626 0.002974176147991255 0.0016502248950746436 -0.0016613051488892413 +1587 9.866067001753495e-06 0.005251359265185349 0.0009799532255867552 +1813 0.0007112995133666227 -0.0002597981668344812 0.0010961756953733323 +1814 -0.0019988470492608543 0.004364952258195285 0.0032377122058746413 +1815 0.0014157600819387813 -0.0026930770353435956 -0.0005543683483625292 +1816 -0.002541235837506816 0.0013601688585031925 -0.0008034061434289249 +3577 0.003992149639391911 -0.009125867759560891 -0.005906614522008467 +3610 -0.007277450200272522 0.00014905878612545706 -0.003387651255714261 +1621 0.0016171668924234795 -0.0028166269499680006 -0.0006628967510708453 +1768 0.005329859290794839 0.0034820216503499463 -0.0009814034528268804 +1721 -0.003813003532323439 0.0010707393212023 -0.00017098816944624483 +1817 0.004949296923292149 -0.004238343099851493 0.002860464967266861 +1818 -0.0011972570123630836 -0.007521395722012223 0.002450000649133566 +1731 -0.00513159530209062 0.0011081567015557544 0.0020482223638320913 +1630 -0.005311406570945069 0.004450517052107674 0.0018592323639383182 +1732 -0.00473942326286097 -0.003747471453577167 0.016364948491165283 +1670 0.0012559696371223575 -0.00046203022756023486 -0.0019999712890582744 +1733 0.005191401084047546 -0.00019094460516561894 -0.006025818333791551 +793 0.005510745085140435 0.0011920861891726875 0.0036405699378430512 +1631 -0.0018279280476566069 0.0031699322671022334 0.0023087252686622784 +1819 0.004908412957342678 0.0037204775275033746 -0.0010645608047887413 +1820 -0.000446008427589402 0.000649501832031239 -0.0065021278920153 +1821 0.004365433456344229 -0.0022738917306476627 -0.005508770281395885 +1822 -0.002248577121695977 -0.0011211315139047747 -0.003378885068229827 +1823 0.00030836412704554237 0.005491410683461186 0.003018633070613962 +1824 0.002278093752337095 0.0017734953561053387 0.0024240663582444665 +3476 0.003534298334381157 -0.012566942434700652 0.00215578869908794 +3645 -0.0013977249681889827 -0.005920826207632552 0.0003290734648392215 +1632 0.00014235745304751272 0.004345788535918659 0.0005530651308468157 +1627 0.006087638913402881 -0.0036324243388462085 0.0023252973413271333 +1537 -0.0012581335731935948 -0.002929968324350206 -0.0039394339568684916 +3231 0.0038732009543297296 0.0013466242008817447 -0.0024249579789700853 +1727 0.002509953908866506 -0.0012488604049117212 0.006124246633432354 +1781 0.0005786241482971758 0.0006036615013852173 -0.0026469578115610503 +1642 -0.0032956080987886433 0.0009461910539522861 -0.008887097754274431 +3530 0.0003362750357763527 0.008978625308160161 -0.0008764482216569206 +2328 0.0015087993118489205 -0.0017669947471260084 -0.0005763406955272786 +1637 -0.0014909362302829412 -0.003601892506953075 -0.0006122108284600652 +1829 -0.00046312249630037103 0.0004601180817470496 -0.00033445983226215747 +1831 0.0014262383882393465 -0.005680045580942726 -0.000551184423084764 +1832 0.0001281236019258831 -0.003207525821349767 -0.0002532597537903962 +1833 -0.0038514813508079867 -0.0006513547483427272 0.0024952028292201858 +3680 -0.0002811095254374138 0.004918207738100263 0.0075646477683097065 +1830 -0.001967755858861676 -0.0010257211978064336 -0.0023040035169286164 +1638 -0.004188553995822535 0.0019890847397451474 0.002202660065332257 +3579 -0.0025991549338722775 -0.004270363833274937 0.0145316933710975 +3604 -0.0024091530161031486 -0.002033497285957776 -0.008162250876423376 +2140 -6.225286856183301e-05 -0.0018190613644206634 -0.0046826236004770885 +603 -0.005070324855645445 0.007654600325093396 0.0037021271087481085 +1633 -0.0012801286055607582 0.001962819787868065 0.005318650542686613 +1643 -0.0031829876705520813 -0.0012260381962528276 0.0022359992696401342 +1599 -0.0005851306605579401 0.0016099021896325953 0.005590517263212431 +1649 0.0009652215818293219 0.007489163549000303 -0.0022962991733748023 +1835 0.0016427323971812931 -0.0017802903389171 -0.0015204182878019372 +1836 0.0011160057805248897 0.002535536115161239 -0.0034115940235260865 +1586 0.00351608624040816 0.005843737364341367 0.0009021561656880553 +1834 -0.0037868059980957916 -0.0005459914447629149 -0.0038302818067368796 +3562 -0.0007908037077810702 0.00734627128733116 -0.002460678181944903 +1647 -0.004709477644177828 -0.0029564342862790994 -0.0041264061823208156 +1648 0.0018225884608813235 0.003299871527582636 -0.009835410025208373 +1837 -0.00017455945300439725 0.0013548056015105995 -0.006467732799444491 +1838 -0.006249292806364407 0.004378173429673388 -0.004136770305557321 +1839 -0.0062685048756585 0.0006385668609933056 -0.00023167914201105612 +1840 -0.005116395581633423 -0.0020565167256590185 -0.0016404506806857813 +1841 0.0039670497102738955 -0.005845158574909393 0.004016893931029613 +1842 0.003646846346740899 -0.000613072389541463 -0.001712548050928423 +3546 -0.0017897026798267797 -0.003128894736450795 -0.0006228298667972427 +3809 -0.009053180275503461 -0.004234260453966396 -0.0039231496187032274 +3479 0.006373225978426484 -0.008401020344545549 0.0009154489080824851 +1600 0.0041566201757706036 0.003994842443355542 -0.0016344224541423769 +614 -7.537407229492853e-05 0.0009282263147580265 0.0032050067398871583 +3632 0.006527113976729122 0.003376525040047832 0.0022658470214182262 +3647 0.0020045228003430795 -0.004699852852743709 -0.0054625717624436675 +1651 0.004374919406746342 -0.005643956757282656 -0.004601917276186451 +1652 0.005139723845412268 -0.005914320041941283 0.005445159899194388 +1843 0.0014009708454264626 0.0007092921408965411 -0.004380146097104813 +1844 0.0036913707610723764 -0.0013846775847681336 0.002129481685122825 +1845 -0.00042204985565503876 0.004286242644023147 -0.001378474565083861 +1846 0.0033597968448853184 0.0007420841779031854 0.0052070226982892116 +1847 -0.000708654318633536 0.0014394568066034023 -0.0030753098277227675 +1848 0.0015030677301146166 -0.0053863157058575825 -0.0015591479017224759 +1850 0.0034680156963939244 0.004875636785984633 -0.006747478245480414 +1851 -0.0020237780831966817 0.002679252072429028 -0.0036406797932122953 +3617 0.0047338828776188014 -0.0064350662332890865 0.0038662044601923164 +1653 0.0014103309642427538 -0.0058845457474069355 0.001307782601269784 +1659 0.005208809113079392 -0.005342610860170749 -0.003992190398275957 +1660 -0.0023271055776537836 0.003021472821855668 0.0020748021730962844 +1661 0.0010658473740701837 0.0012713168508380922 0.0037788678646709438 +1852 0.003914840182455111 0.0011232173025592092 -0.0014162232666640941 +1713 0.007885751840374152 0.004096142593149046 -0.01122207326391266 +1658 0.0020095639369594707 -0.002912697614434302 -0.0022117584068794996 +1767 0.007272129290900756 -0.0015501005104038524 0.0007793524566821171 +1725 0.0038110028081274326 -0.010922621619855232 0.004487848068513674 +1849 -0.0034712820322663233 0.0017951951272815979 -0.003966494613928484 +1591 0.001194588034718083 -0.005491688493886441 -0.00202321978422958 +1853 -0.0025351229955192754 -0.005511605637654375 -0.0013536245783123623 +1854 -0.0020023096135282125 0.0023274721575155238 -0.00479786069341119 +1856 -0.010227983695050692 -0.002462494103059203 -0.0076940076730397785 +1857 9.790304572484759e-05 0.001967644724313405 -0.008573418373046737 +1858 0.001949954059418539 0.000267537407213666 -0.0006698000047733016 +1859 0.000904368142158113 0.0031185164863792767 -0.000997140066828303 +3544 0.0026809677738218384 0.0008794815763044211 0.004877533588540149 +1667 -0.004149944257754464 0.005091968468763471 0.005919843314998587 +3634 0.006006797038520923 0.0019003793303181513 -0.00973512339594079 +3651 0.00019172657081456378 -0.004959400401748475 -0.0073793436828984045 +3679 0.0008018500721371308 -0.0014821121377313212 -0.0020863640264484 +1663 0.0047604578065523545 0.0006303842727342429 -0.0036132733245715022 +1668 0.0019691001774826376 0.007792985177182234 0.0011734399998347637 +1735 0.00021695057050021393 -0.0019392594448285553 -0.00126884592009629 +1855 -0.003338828775059632 -0.0013301507111214406 -0.001506656251996401 +1860 -0.00743908655393712 0.0010867772289661726 -0.0030057095636785666 +3474 0.004040650420855735 0.003306764816538262 -0.0038535068479475794 +1671 -0.005487430666103217 0.002421722510204385 0.0009052185401101858 +1672 -0.0031785100587002828 -0.0036656167543279773 -0.0025464698970994216 +1861 0.0011256540489225496 -0.0004011703248285544 0.00012145442500639246 +1862 0.001693969168232601 0.00020828930234210118 -0.0003519942095731809 +1863 -7.947459814710754e-06 -0.0015648177456706349 -0.0005021147102595202 +1864 -0.0003772199746765562 -0.0006861414384362825 -0.0021984116392577946 +1865 0.0009831703201412254 -0.0014375171258581207 0.0058957450378621925 +1866 -0.002353132396802082 -0.002036918098566877 0.0038394753503288265 +3532 -0.004900182169256824 -2.16603419639364e-05 -0.006114774192157284 +1673 -3.89323384941194e-05 -0.002116792408263408 -0.0016173517447263179 +417 0.001258384260719822 -0.0033160910891588537 -0.0006572214949516621 +3638 0.005378853095359936 -0.0011507139233551593 0.004231236612723974 +1684 -0.0012247550413518027 0.00014636583698212385 -0.0017004718769569945 +1675 0.0042969840437437085 0.003119510834327818 0.003687517721740315 +1636 -0.00311435567329357 -0.0009220229938563764 -0.0017227766057122836 +1635 -0.005281973954550751 -0.0011989719091226839 -0.0003464704776135647 +1679 -0.0012941163978650275 0.004174014554922865 0.002591422074820366 +1680 -0.0008404802167983852 -0.0006161875832333297 0.002628077434827426 +1825 -0.0009206023018700131 -0.0039564268592939805 9.152485619437366e-05 +1826 -0.0016476838610427484 3.102095652827601e-05 -0.005412352390757212 +1867 -0.000547605498514398 -0.0016467495720934788 -0.0017508586131828358 +1868 -0.00036779301047502937 -0.0014882150340694007 0.0004193035713596557 +1869 -0.003144882373197983 0.005636427176156896 -0.001527631022164911 +1870 -0.0011857285263500127 0.0016820531973129986 -1.0202342683689911e-05 +1871 0.0005212005651176237 0.005234996529457349 -0.005469940133778791 +1872 0.0009041895567595976 -0.0024336273222054297 -0.0011844823106492391 +3547 0.009395199938872107 -0.0011103673213908962 -0.0037437955564386454 +3576 -0.007364042135738204 -0.008635496415558566 0.0007370867325652425 +3600 0.0063736446063992975 -0.0018217083298745261 -7.32343488653102e-05 +1917 0.002795879069336498 0.005670827136199612 0.0016936458367798129 +1678 -0.003951394809007294 -0.0011797368924640677 0.0010239616410346393 +1677 -0.0019582632083690087 -0.0013276255694453895 -0.0006381609151077176 +1923 0.0018227379818360693 0.006361192666115857 0.004710327275109751 +1918 0.005643906784087785 0.0009937912300414964 -0.006304521624583891 +1676 -0.0006818140737171175 0.0009323486940728407 0.0008423253556322317 +1685 0.0038297310558298957 0.003692670782855383 -0.006206082296593893 +8 0.005441324317897013 -0.0016107476308124594 0.0030004653250193026 +1873 -0.001670800018809763 2.7169626700093716e-05 -0.0017296282714189214 +1877 0.0032666373712089782 0.0026794532181646947 0.0016379934788898 +1878 -0.0067446866853158255 0.002481784392345487 0.002088550123182157 +1879 0.0028338644558034394 -0.005258928820836987 0.004650891595051943 +1880 -0.003339840678866214 -0.004094397765201396 0.0035450190270034983 +1882 -0.006660238872768836 -0.0012951448972848881 0.0014215025800870837 +1883 -0.008820041159743086 -0.00042112896172092766 -0.005807782953370993 +1884 0.0005361057108722436 -0.000827016211486181 -0.001899205184858943 +10 -0.004208585944300435 0.00536583435979698 0.00229298447362012 +3565 0.0010391776046375786 0.0038102147362461427 2.4920942740560976e-05 +3652 -0.00426706981827065 0.004658975117207216 0.004626176166532324 +1876 0.0008783952691315668 0.0019213802285663647 1.2317463975023865e-05 +7 0.0011225924762718023 -0.0011041228620653953 0.002348733492848449 +1874 -0.002518536637059824 -0.0012332006390182062 -0.0021027997327864763 +1875 0.0014321515121306896 0.003331298592901602 -0.0008974677368869003 +11 -0.004227108582080979 0.005956636293430445 0.00033412350100151905 +3582 -0.008888181575103479 0.00316308874577757 0.0038903359343522626 +9 0.0005572944531061905 0.0011091623475243148 0.005344870457755262 +200 0.0022965732642501063 -0.00041666538866177587 0.006668200741099384 +3515 -0.0023685780679253694 -0.0005552010938511095 0.0024623423121145818 +3521 -0.008922016054692615 0.006353237488468004 -9.74721845851962e-05 +1881 -0.0034401936602523327 -0.0038910858847085923 0.004218971360997317 +14 0.003403707662124497 -0.000594343435591771 0.0013502726548761262 +1885 -0.002510710139106893 -0.001291387952652374 0.008544314378711568 +1886 0.001320214297673004 -0.0008683096993957019 0.0048792430068379505 +1887 0.004638445266213451 0.0003332977317706394 0.004703829138707653 +1888 -0.0029107846832733143 -0.0019693678327163625 0.005872260069714888 +1889 -0.0026636463888113043 0.0028904230303209463 0.006030056944403631 +1890 -0.00842409042574037 0.004609341550512306 0.007751787682927342 +13 0.004897951990623131 0.0015418140263649723 -0.0006215478804972277 +2417 -0.004962352346510853 0.00327019187690722 0.0007287651538527747 +3517 0.0013964165928653826 -0.005145629964883845 0.003394678426999893 +209 0.0017805360584342868 0.0024855047706873416 0.006968602014652082 +1701 0.0009569883398245198 -0.004954722634900355 0.0002961885913261915 +16 0.00604541992917414 -0.0049042696716053635 0.006076134119027446 +2454 -0.002611967543170408 -0.0028612589385616093 -0.0007744803220898093 +205 0.004428916236134071 -0.0011025671317175171 0.0062516766081905885 +15 0.006213336513423841 -0.00037605999427318916 0.003906763805175497 +621 -0.002580271814270822 0.006032484174011841 -0.0026151959320438313 +1703 -0.0018007642695587684 0.007147211892684643 -0.0008014885492522402 +1702 -0.0007823009424548259 0.004461752642462212 -0.0003693436404720085 +1699 -6.881012840754671e-05 0.0045734191142585 -0.0017015655316322993 +1700 -0.003989854227582833 0.002133493029457649 -0.005806450994538331 +1704 0.0005373498490995456 0.005622173775158642 0.0011549066519405923 +1708 0.0005720806495398399 0.0007684700813946632 -0.0018453490944655806 +1891 0.00018963855411283242 -0.0004396048100379571 0.000805017031041489 +1892 -0.001004084947155679 2.904359467708716e-05 -0.01043948863320242 +1893 -0.0005217170371723391 -0.005362100591949148 -0.0022556509843164206 +1895 -0.009756964534141117 -0.002603147944523635 -0.0034429187946007243 +1896 -0.00654004239099892 -0.006636399670251274 0.0020769378316587723 +219 0.005819886553066677 -0.005625980421621958 6.666742006646679e-05 +3510 -0.004799168473914254 -0.004763839635859114 0.002061953938975142 +1709 -0.0017668273529614991 0.0011001422040176837 0.0014840899052223798 +1710 -0.004958543847073988 -0.004926693797050467 0.0020870811760378715 +1686 -0.0048631067916526955 0.00266875423037385 0.0026550446792035247 +220 0.012485952191945877 -0.0066012721372981035 0.004328449065923907 +1707 -0.0008371707987307408 0.002835699421631895 -0.003522387589358722 +1894 -0.007362491955379558 -0.002381399258609016 -0.0013112234880948378 +2491 -0.00806689335533982 0.0010618492335924966 -0.007972236349257348 +772 -0.004035539871019425 -0.002921893889435912 -0.00870128211666586 +3587 -0.003233598817783391 -0.0009776649376289806 0.00259891839408001 +1902 -0.00787414439531075 -0.0035472197901789777 0.005267053596335925 +1901 0.002680951104616525 -0.006077423349397069 0.0021929405902709168 +3491 0.00048102407878718737 -0.0024838125267327284 0.00019031442113917098 +1897 -0.002348917710242964 -0.013090640148100918 0.0020413535989929547 +1899 0.0037847643165995802 -0.001999089843847963 0.0025914127411255906 +1900 0.0020086502284861344 0.002742404303062673 0.0011296457261649438 +1903 0.002504338486763273 0.0005978513245410754 0.007281060258770448 +1906 -0.004232378648206126 0.0010278403578523295 0.0008494399235102063 +1908 -0.0002404693610380037 -0.002960258509229163 0.004797568987213104 +223 0.000714524474718418 0.001901905964453665 0.0005687719397841209 +3503 0.0008479313274422473 0.002895023604592219 -0.0006016612656438479 +3519 -0.0016235494309494631 0.00041958623011359864 -0.004787340081880675 +3552 -0.0011925261784761097 -0.00037135034823366836 -0.0017882567985836883 +1898 -0.006005005755769485 0.0024774274781899654 0.003543590484310094 +1904 0.0002798633223084107 -0.0025574733465636356 0.0014029742855707244 +1759 0.005409912303177956 0.0013679146897030035 -0.0017642467578673055 +2465 0.02115846512866594 0.0025574157889327945 0.0010856412715890514 +3863 -0.001396332795273474 -0.0014182453485794087 0.0014887211491733652 +3627 -0.005481825550002791 -0.0056254165178180665 0.00015130085260095616 +1907 -0.009082881837203237 0.003303761222918982 -0.0007356879060618535 +3612 0.0009232025704116325 0.00498912138926005 0.004994026821514563 +1909 -0.0054537043154709985 0.001257578627211681 0.005149270744472889 +1910 -0.0021958299733902675 0.0032599143907032276 0.007535384392776359 +1911 -0.004390045426314179 0.004317388782585672 0.007971861518423143 +1912 -0.007730154080836697 0.007054649982444395 0.0040222363693015566 +1913 -0.004181784050375902 0.005803580701179339 0.008657450548940022 +1914 -0.00039904663231504826 0.0013142015663966747 0.0017250787168833967 +1592 -0.01106235430298033 0.000540729374344115 0.0031423792141509733 +234 -0.002944873060217965 0.0036351112557218403 -0.00208407026427662 +3549 -0.004315677693101216 -0.0005494954941948522 -4.787317004605366e-05 +3658 -0.0007366681875705482 -7.643883985905492e-05 -0.007974073745081214 +3599 0.005641720569596938 -0.0038042755902119112 0.0034757743549963228 +3554 0.0014407559666886672 -0.0010577188491680664 -0.00533910848188827 +229 -0.002764433952305347 0.0005497221281325467 0.0032453225501523552 +1728 0.0012404321837064351 -0.0021396519910785636 0.0057056807016258515 +2492 -0.005459479201513854 0.0009935652916705053 -0.0012902767258548677 +1916 -0.0027812794247713494 0.00823759445421753 0.00749863152089618 +3236 -0.001981468467344817 -0.004780340893177841 0.001643200825396837 +194 -0.00010135849245046098 -0.005413378269504149 -0.00019438743214763524 +3495 -0.0011597642678718855 -0.0006791421139449165 -0.0015575655435139742 +1723 -0.0055861230077350575 -0.0031400546002046605 0.004000772693398644 +1915 -0.002411913874902318 -0.0015067619537997919 -0.0002295067040116426 +1919 -0.0031730987545943554 0.0012779450289740356 0.002704416215051982 +1920 -0.0064898225533693895 0.00043899495860222137 -0.008225086220929566 +3508 -0.0012286014952041975 -0.009877664644707986 -0.001111689046524871 +3671 0.000569121888854535 -0.0038172923677133046 0.005260243239291172 +3499 -0.0031726628017972325 0.0013583330826811369 0.007462494489162377 +1724 -0.0054751360866711635 -0.0027575739313180562 0.0037839194996043745 +195 -0.001967586423029576 0.0010987752918525608 -0.003953036020162839 +196 0.0014833534038858104 0.0009310750038875981 -0.006968628193296031 +46 0.0032040618733403772 0.00504286168647106 0.003146611754812432 +1782 0.005908386050594236 0.004587803405734006 0.0008575336119382139 +2464 0.012324262370946273 0.0007002544433674632 0.001608199479959326 +1924 0.000413274481207017 0.0024565823655957526 0.0037763715839461785 +3193 -0.003889558609244727 0.001271459891765458 -0.005843523269937843 +3585 0.002069796059561193 -0.0009647522235640152 0.001628741593659821 +1972 -0.002478143727000441 0.005502121090960161 -0.0020266545813088324 +1973 0.0001788274303425381 0.0014617218494728896 0.006831756800893373 +1975 0.005459910543056054 -0.0007650245562446964 0.003492369568666699 +1976 0.00012716201283497004 0.0029135674128351716 0.004206282495349097 +1979 -0.005146201630685981 0.001898967506154253 0.00045965201312715047 +1980 -0.005005406334562421 0.00014841313939993592 0.003039960895175782 +3482 0.0025555501206142098 -0.008693685938664344 -0.00785272644849969 +3571 -0.002528602480331877 -0.00887621545396299 -0.003672322145251333 +1974 0.004038769943954769 0.0013125832007457167 -0.0053368648584809966 +2172 0.004565599486908148 -0.0006384316707795152 -0.0017550334112743384 +2167 0.0004831149507539284 0.001362034709684776 -0.0037748822216901825 +2375 0.0049792362062823625 -0.006419389941638132 0.0010776961640601643 +199 0.0009401664658535881 0.0022560886702080556 -0.00033165124311386934 +1934 -0.010093659901974349 0.0025522996516421687 -0.001010530505378242 +1933 -0.005041077518589261 0.00042659125488989325 0.009130944677282182 +1935 0.003918611287066285 -0.00170698749460489 -0.002470098418871081 +1726 -0.007222679902852816 -0.00941510238534454 0.0010108198346802817 +1981 -0.004318146662041348 -0.008375480590369903 -0.0018856535994540853 +1982 -0.0038422120466057243 0.007406478833990503 0.0001064149219339009 +1983 0.00441372712978484 -0.004118748983809491 -0.001745211215623804 +1984 0.0003560491780269911 -8.872623322675699e-05 -0.0006997276591248611 +1985 -0.003409219589132149 0.003419532290185735 -0.0052853279941306695 +1986 0.00046991978472089277 0.008404047659730655 -0.004287561727557714 +3622 -0.0035101465336773033 -0.006793577300680575 -0.0018523610360520351 +3535 -0.0015054681941506854 0.00248087984147309 0.0025043248477613494 +3673 0.004706527568175292 -0.0028561599407440387 -0.0009715517436717571 +3567 -0.0002731924362204869 0.00021580308783671333 -0.00021343651003010662 +2387 -0.000593326851041705 0.005852654460745085 -0.0033821607858097076 +3661 0.0014791074579299619 -0.001633712319250556 -0.0022729945516848644 +610 0.005090728818991415 -0.0014455033530199456 0.004598776562109591 +1987 -0.0030570470145343974 -0.006174944282099992 -0.009060879943573057 +1988 -0.001689764383406898 0.009914843158831513 -3.0648111274334855e-05 +1989 0.005761920959085135 -0.004184529456096026 0.0004351726808763791 +1990 -0.0014307274175453502 0.0007293332211057449 0.0007069091231735217 +1991 0.0045502033008669365 -0.0005252343516413712 0.00876268362046239 +1992 -0.008345848103534052 -0.0019382770670096636 0.004179744811003609 +1996 0.0071942788422281224 0.0023990407713952305 -0.0007164156640966123 +1997 -0.002849016075135707 -0.001078558629512108 0.009533071868034535 +3494 5.185811192071261e-05 0.0016225186914303835 0.0023720688297994477 +1995 0.00040198698042401575 -0.0068435058426002116 0.005630860868560374 +3641 0.0006138599966168504 0.0017595049322700743 -0.008308996218220916 +2187 -0.004689705000437256 -0.003988130676853481 0.003211968440845247 +1953 -0.0033756733341960966 0.0022895447333542785 -0.00019616689742102145 +1956 0.002938635077075915 -0.0017990642821718512 -0.0058851706961430715 +1951 0.004590272731635944 0.003214417516001303 -0.0032310189396217745 +1993 0.00636986737001441 0.0029403930869170785 0.0011182761089137047 +1994 -0.0027643847452781018 0.004002772057918617 -0.0028152027547608816 +1998 0.002274929833833329 -0.008537039002114942 -0.0017841993748395806 +1999 0.00315079098666427 -0.009948504686425372 0.0009213606566782274 +2000 0.002446312741825093 -0.002490407404601214 0.002690432011293675 +2001 0.002534281300998579 0.00998825802511034 -0.002987609253808023 +2002 -0.00038861039773877145 0.005701303113169743 -0.0019989711887200244 +2003 -0.006126997995616793 -0.007604671937367091 -0.0013286636518715204 +2004 0.0007468968407156377 0.0035736513696691097 -0.0021193644042255427 +3484 0.0013543908098139238 -0.008038818057791561 -0.000727494701753514 +1955 6.926381137942676e-05 0.0025922632578206915 0.0005202788465906077 +2196 0.0004726881823190006 -0.0012153954208631362 -0.0005468080966294308 +2195 0.0007735146874699633 -0.0003975938470913357 0.00144459148513277 +2194 -0.005544341580281461 -0.00029528298247301707 0.0017768885781243831 +2193 -0.004508768272096063 0.0005526175908507268 -0.0010410094533602379 +3606 0.004559354728259743 0.0025362293567324085 -0.000231717815836941 +2192 0.0016374645773312203 -0.00010206696554991557 0.0009216533526166104 +2191 0.00158259184336782 -0.0009056694358623521 -0.001298470507394665 +1954 0.0025607104484032636 0.0040458234376479696 -0.0012034622749277901 +1625 0.007600199669023785 -0.003587835949029777 -0.0005361165050597395 +2376 0.0037825062990870634 -0.0022332751978838272 -0.0065440646659597704 +1952 0.0004509999663127233 -0.002459184742083149 0.001744774817409383 +2005 -0.006463356533462928 -0.0016519283730638617 0.0019976655240743807 +2006 -0.0036387288590201215 -0.007536224135950514 0.000972499748937569 +2007 -0.001753351753737641 -0.0010055223105779778 0.003290547560729933 +2008 0.0014997302384358545 0.005194125388552765 0.0010822554268051492 +2009 0.002921123881757213 0.003260496533482173 -0.0014678043233316924 +2010 0.001041197996915735 0.005017510692532278 0.0010846435289579863 +3678 -0.0015684273163413813 0.01071830476379869 0.003078511043669024 +1958 0.0008228153752458923 -0.0025084557881561954 -0.003245056765919065 +3568 0.005557056326908686 0.0065988614670324285 -0.0033984138366061935 +1959 -0.0006050587043375607 -0.007511986960230277 0.0012372718127768136 +1957 -0.005073566790490693 -0.005362554354829005 0.003170117398637592 +2151 0.003980328723585245 -0.004486381559513333 0.0016892921239075754 +419 -0.000601948690535961 0.0024726841098281034 0.00025725937523441583 +1734 -0.0012188040084916908 0.0035907807228984763 -0.011677543548989746 +3574 0.0027048299918987157 0.0009706544055265469 0.0032827396632096246 +2299 0.004246960061660437 0.004821562937641285 -0.0013755407469486752 +1561 0.004374228062770217 0.0020402747375853608 -0.0010556946282155194 +3676 0.0006853666277618171 -0.004632214117947897 0.0010952231673401903 +1971 -0.003438265983638171 0.00194528267687394 0.0015926073492545363 +1969 0.0033619618154535013 0.003242818025343891 -0.011430190196793312 +1970 -0.006072469064849097 -0.0060595792573455735 0.0012372645559574661 +2011 -0.005470832288839324 0.0008954906588602242 0.0014040816863992883 +2012 -0.002135609279878388 0.006961221272029196 0.004030834085763429 +2014 -0.009155832287130853 -0.0037023879751726064 0.0028898432890015016 +2015 -0.000861951786179173 -0.003588830550677786 0.003664401613823872 +2016 0.0013633319787313503 -0.005027216062125339 0.003943323007475217 +3569 0.007380512743818022 0.0021123850275612936 0.00261294062258026 +3648 0.007508175881997277 -0.006635562263246512 -0.002425889780547433 +2013 -0.0007420576415275555 0.0008333427169873982 -0.0037362430763946265 +2164 0.0032556977557093953 -0.0006342543215784855 -0.0015410185910088225 +2205 -0.0026025250753193424 -0.0017139268404408137 0.00021424552759403124 +1729 0.00045591430422848716 -0.004659243691219603 0.0014643508547420958 +2358 -0.00023722165355210946 -0.002114542372127202 -0.0012103960831549184 +1828 -0.0033697449875005575 0.002230230203859253 -0.001577574324922999 +3469 0.007200175517789802 -0.006741024747659008 0.005922493582489017 +1977 -0.004087550071835729 -0.000690293296571391 -0.00047538194782410466 +1978 0.0036079835098046143 -0.006191595559464254 -0.0005177981322523162 +2023 -0.00037460318746305196 -0.006354281478627195 0.0034722385746864 +2024 -0.0008317606005856091 -0.006129967959787037 -0.00400524709753449 +2025 -0.00632073324734467 0.008806095815399682 0.0030773320559097962 +2026 0.002920079801538065 0.0002473319549963313 0.0012148680812487107 +2027 -0.0018919001583337458 0.009383742003713459 0.00035643134859504404 +2028 -0.0003393220855155376 -0.005470233304098993 0.000765520662716882 +3524 -0.006331206992886474 -0.004536758573075138 -0.002551330013751556 +3525 0.005063232575321563 -0.003932505970703108 0.00806025728607376 +3596 0.005697383352709621 -0.0008882069056930085 -0.007166656739865473 +2215 -0.0012231041919731577 -0.0016729483937413011 0.0035929750626131044 +2262 0.0017464885033743997 -0.003532794564872099 -0.0046299358494856354 +3614 0.004243672064129555 0.011253694088972902 -0.0013817037511591039 +3523 0.004144696222507676 0.008994386768962736 0.0021201021456010434 +2029 -0.0037848029128149815 0.006785007531455846 -0.014146737256974271 +2030 0.0015442234389356365 -0.0010251105356913373 -0.004489871728723773 +2031 0.0003920442910256699 0.005391783701381735 0.004490982912815138 +2032 -0.002775247742124954 0.003569547313688056 0.006486712902976317 +2033 -0.00452254080490697 0.0018796960945164408 -0.0009447657130271929 +2034 -0.005239433899110173 0.004924561804229789 -0.009766549221540561 +3570 0.004033012743266614 -0.0008112093861539164 0.0017310952929610016 +3611 0.005591837014063956 -0.007403401484719849 0.0003369024259549402 +3560 0.0009196716117654884 -0.010875726407984386 0.0024410532914918162 +3485 -0.006652448675043091 0.0041390162115849055 0.004295840174488322 +3590 0.0084929632875805 -0.0019224190348461844 0.00141140186708981 +3656 -0.00017973697785591498 -0.002809142319531635 -0.0037988886587369737 +3471 0.003501319124917228 -0.0015432132186339687 0.006827691005543911 +3584 -0.0005522058240021863 -0.0033678918102561907 -0.0016723657213136471 +2035 -0.0007219909798532206 0.0043320893526155434 -0.006894493992280429 +2036 0.0051014117743546595 -0.0027656740834946267 0.006974880929917153 +2037 -0.00707601011186687 0.005396635950896531 -0.009335836588772623 +2038 -0.003716364295485327 -0.009498508947197013 0.004461767107517336 +2039 -0.002534348994205282 -0.003425070825679306 -0.010575213844106424 +2040 -0.006883339043802957 -0.0021515858105527223 0.0054737205361313915 +3664 0.00030858510470004323 0.004081969270853203 -0.009405342292427524 +2232 -0.00039490366957535604 0.0023865955540268023 -0.008688384203396519 +2237 -0.002043654390253128 0.00650029998777624 -0.0002685786187459893 +2231 0.0017514262739567708 -0.0006572124528878493 -0.0024767970305973044 +2278 -0.009011330547346838 -0.001548283737993738 -0.0062531899215137274 +2277 0.0025016744624260976 0.00462649086544787 -0.004484475636513894 +2089 0.003942794499540495 -0.006581127232271338 0.0004756649430028374 +2094 0.0007094807768453762 0.004640076226974111 0.005605416711803798 +2276 -0.0077127728972907535 -0.004811010968703405 -0.00011726476735704972 +2228 -0.00204310486272713 -0.0046855965771654485 -0.0031779796294747107 +2227 -0.000679757600558239 -0.002330680018690004 0.002791820564341151 +2279 -0.004244476612916161 0.009507054683568422 -0.00172436726106808 +2041 0.000271269329868823 0.0010204464279349181 -0.008590283259561994 +2042 -0.0017162061274534947 0.001865644759611662 -0.004890417007423929 +2046 0.0033001322525429196 0.0004818765580602003 -0.005912894457594098 +3603 -0.00672104732226778 -0.011238536409015027 0.006451222048945713 +2043 -0.00015026756540342651 0.003007282815411797 -0.006329150365792823 +2044 -0.003101632846891416 -0.00018514379305724273 -0.005409165243280534 +2045 -0.0028754709575729395 -0.0014528842074044955 -0.0022318806913334114 +2047 0.0006056590917197865 0.0008501810205795282 -0.001268752358997108 +2048 -0.0016921521166621768 0.0027375132739759344 -0.0003924220124619121 +2049 0.0006301385761270604 0.00313101246580953 0.0017574349531797907 +2050 -0.0007609847978652612 0.003076798051484992 -0.0030731345822981953 +2051 0.00564758339210646 -0.008035698381298547 -0.0014287781312277439 +2052 0.00013266156464303506 -0.0023753354014508705 0.0009802955112327102 +2235 0.0012696567802577207 0.005504086063458671 6.604711440466096e-05 +2093 -0.0033001613955761476 -0.0011521497219299439 0.0039549224519902495 +2236 0.004254682743898252 0.0010432619915322927 -0.0040996602226806055 +2234 0.00019741431322500545 -0.0006962632421895644 0.002283433204654739 +3597 0.00931815884275206 -0.007434926763649845 0.009562051693563108 +3609 -0.0010922107389391305 -0.005474120629394282 0.004970804957873986 +2053 0.0053444429304377455 0.0008357481512109683 0.00421694345347749 +2054 -0.00395784144054097 -0.0005508886330554558 -0.0017184827359798633 +2055 0.0021434911488125677 0.0013079478188953182 0.005029287410936038 +2056 0.0051629217646542115 -0.003932161642433051 -0.0008544514111962912 +2057 0.0002279436414421715 -0.004069908308438094 0.0017183095369163088 +2058 0.001749948703813234 -0.007240459510360871 0.001795131119057291 +3473 -0.003516797018805732 -0.0017900652578877409 -0.0032385683868333503 +3654 -0.003597657055780359 0.003144197579418524 0.00034431643022134987 +3662 -0.003926784209262108 -0.006840397380525757 0.007824767263442575 +3666 -0.008907717243665614 0.0013545469589091143 -0.0071335970650431854 +3539 0.0008045997129230609 0.0008711405082642309 -0.007080931363480289 +3646 -0.005204032723140139 0.008539891385693651 -0.0036963481123882653 +1827 0.002587436208492183 0.0004937814997143719 0.005738551206763735 +2021 -0.0011342953517247156 0.0013391655995196317 0.003912919741439206 +2059 0.0016795523652280982 -0.002952431916915821 0.0026456197126845478 +2060 0.002053536993689218 -0.0013431212535421522 3.6602214776871214e-05 +2019 0.009388489317860583 0.00039240748696600154 -0.003281518918053546 +2020 0.0031297562740601574 0.00012307374020062748 0.004995491309552138 +2017 -0.0029960758543297796 0.0016005051531584084 0.0029472837537083863 +2018 0.001649023604556133 0.003286022788895031 -0.0010499458000769537 +2022 0.0010062391254334203 0.002086079298760169 0.002545034280944324 +2061 0.0023905176658207032 -0.0012761606837622165 -0.0007885285909412426 +2062 -0.0021887626711160997 0.00192299439163968 -0.0005346107374349692 +2063 -0.0033272125046412493 0.00403471880170987 -0.0007155188945651811 +2064 -0.007226684260303459 -0.005625873703660576 0.0021184577093490762 +3615 -0.0009845333150066858 -0.0013373791108068692 -0.0014168330942308457 +3506 0.009844808714824696 0.004758294528097019 0.004146190938895084 +3509 -0.0032811565174717208 -0.004526955186775802 -0.0003641461659888333 +393 -0.00033053159059213115 0.0020775625336295314 -0.008009806381103615 +392 0.004324643155869394 0.00458415562482376 -0.0036669887967376857 +3489 0.007929971994242977 0.003566942972561662 0.0005219904996772889 +2074 -0.00017588351920820074 -0.0005378664789188037 -0.003355218770817666 +2075 -0.003360344160332427 0.001688796455532971 -0.00751608023087467 +3518 -0.002759236292010732 0.000787157420611874 -0.005372877489135995 +3583 0.004337083890347111 0.0055890187625444185 -0.00619086185921629 +3594 -0.0026770055290438496 -0.0025933858528007087 0.0042075508675958675 +391 0.0064164244830683835 0.004257102813450258 -0.005847628598944165 +396 0.005760401829310134 0.006102365972591532 7.461960289616225e-05 +2259 0.0038646337108230065 -0.005630456376945614 0.0020650886856075044 +394 -0.0008561226834059241 0.002319833179941939 0.0003334761273784472 +2260 -0.0007850860861328201 -0.004560806720549656 -0.004284981993486124 +2258 -0.004528194766644128 -0.0018191071897470607 0.001522305950917507 +2257 -0.0009665404332538175 -0.003502550540450546 0.0025175843894937404 +395 0.004014717641939228 -0.00095988253636694 0.0005493989733462071 +397 0.0015358551696278077 0.002098942025327216 0.0010417449838264405 +207 0.0014994158873160605 0.005029211970761269 0.0020489880485367253 +208 0.0013376112065327935 0.0004892539396731281 0.0017029764846788731 +2076 -0.0008953309138263338 -0.0019171321706430364 -0.0004623303243776822 +206 -0.00018396553130903208 0.005350892809380218 -0.006464309226682513 +2071 -0.004967340834811426 0.0015510015267807356 -0.0015285634682867765 +2072 -0.00041592201015899224 -0.005385677200337021 -0.003917429682522243 +2073 0.0015105570084923742 0.0007004586286935713 -0.005728333563523886 +2077 -0.00273594308368269 0.00516806705964639 0.00378502232506005 +2078 -0.006083220175456251 0.0035742380845403196 -0.0037162189245591613 +2079 0.0033834395457610403 0.0019794205835326076 -0.0020668482062044828 +2080 -0.0036688750994976495 0.00035335589436370855 0.000498652160070779 +2081 -0.00847727772651808 -0.001059124279552917 0.000863876899576913 +2082 0.0005761273398571176 -0.0029376423034086253 0.00035907128511614915 +402 -9.523525642363666e-05 -0.006205365583878743 0.008868648783124936 +3529 -0.006226037686523097 -0.004652653151712817 0.0038385877717699384 +403 0.0017164333473324025 -0.00011137931486513381 -0.001111077100065102 +404 0.001955877359397746 0.0010330054651255915 -0.0006128878303619024 +37 0.0011808714353077816 0.004427047968146546 -0.0007994058073929346 +2449 0.00045088113936808417 -0.00231867112946455 -0.00409711309763376 +410 0.003846790054159109 -0.005615647056282748 0.0033989269902066064 +3586 0.006034508685244999 0.007618651698961181 -0.0001831478817297819 +2090 -0.001977455346313982 -0.0027887384034228696 0.0005852615922513694 +3540 -0.0033354443760626675 0.0008820420300838862 -0.000836853981792664 +411 0.005620850404619107 -0.004988911554031946 -0.00283650969845404 +405 0.0018824822077342263 0.0025247673858030113 -0.0008914106320593414 +2083 0.0022779789891106098 -0.004029987106396666 0.003710050085338355 +2084 0.0024311776436698553 0.0017425080449082187 0.0008847003166466855 +2085 0.0021414079483740535 0.0008496232451891627 -0.005757154910971553 +2086 0.006072388541362386 0.01035671171322342 0.002432258964769426 +2087 -0.003489143412918589 0.0024055750233754588 0.003028671177490906 +2088 0.006334224614856597 0.00132871001344907 -0.00426361282252329 +3618 0.0039324295174816256 -0.004640499462232267 0.008612888423686654 +3657 -0.005663832344767086 -0.009138709369812582 0.004972086232716925 +3625 0.0017512340850112074 -0.003750042676900028 -0.009709957518231517 +412 -0.004546273625640061 0.008473437988087635 0.007742658807573587 +2300 0.0070324993514679635 0.0018501597817293255 -0.003360913892871846 +420 0.0024598950968728033 -0.0018279966524747775 0.0019290171699537226 +1905 -0.0029075901675409623 0.006313866875540599 0.0066940827360062165 +3504 -0.0021876472583982017 0.001007026681368286 0.0024286692413874305 +2091 0.0030874787988152807 0.0035620102063857943 -0.005807284761183475 +2092 0.003211610854965681 -0.00311480826764107 0.001411733420737438 +2095 -0.0016769025103858404 0.006093054733251098 -0.006719887555356467 +2096 0.0026355010767475885 0.0017569710644295803 0.0040187262304962786 +2097 0.0009073403548618076 0.0007163385351467243 0.0021110771041964954 +2098 0.004048023247576561 0.005895917021782403 -0.00040283588735420264 +2099 0.0025775220224075156 -0.0086515974558241 -0.0034665477099011075 +416 0.00016086659503188047 -0.00391423136639523 -0.002197937488305034 +415 -0.0013761381935209773 -0.004834437543720942 -0.0004063029119569533 +413 -0.0001039334589147263 -0.0009755041830989779 -0.002339073373738344 +3581 -0.0006820610246361927 0.011225650018986807 0.0037527099973018612 +2100 0.005947633749619716 -0.0027431509212074317 -0.00033502485914211694 +3492 0.002837570595961449 0.004921593161870094 -0.008329862047815672 +2101 -0.00326306107129463 0.0031126724367661297 -0.0007465346554736207 +2102 0.003596731464945492 0.001048381662945401 -0.005233325595781674 +2103 -0.0026888470959992882 0.002593999621966636 0.002604566308484907 +2104 -0.0038012095724986247 0.004683822676749477 -0.0027733884564629407 +2105 -0.0037823275467009153 0.007507838966040108 -0.00479145910083688 +2106 0.0008265623745571272 -0.0010419893973576224 -0.000810672438437765 +423 -0.002133674197170745 0.002050314891895307 0.005242865269330714 +3635 -0.0021505408451201686 -0.0043666379417774594 0.007099577486738385 +3545 0.0026707447174495738 0.002149040715225071 -0.001865716579799324 +424 -0.00817270417481744 -0.0026874120224759973 -0.001993235054237404 +422 0.0026933354884593847 3.687030060572618e-05 0.00165373484206116 +3608 0.004623198561065342 -0.0038018356491848816 0.008856564810262695 +2345 -0.0031569854858594162 0.001493632877474692 -0.0017877111866947272 +425 -0.005040108513329019 -0.0028094041461886043 0.0027622368830097187 +2303 -0.003834822131782094 0.0015224257460384075 -0.0037727560188601213 +2067 -0.001082364515140408 -0.00021066797959319838 -0.0008423400843683604 +2068 -0.009281201258615217 -0.0015768581395617148 0.00018315610334716825 +2069 0.0018996069741669954 -0.0033331748559546313 0.005286835931577101 +3575 -0.0013410404051289902 -0.0028261648250322313 0.0037317650428394847 +430 -0.004716715748168029 0.004943679183654237 0.0001446604527890762 +2070 0.009267747741240125 0.0009064930270422269 0.006108789127031135 +3640 -0.0030676526811654003 0.0053079717818801655 0.003136805426458433 +2261 0.0032630662756396515 8.43424879239268e-05 -0.0014667949003284817 +2065 -0.007759983938801097 -0.0013393554845422015 -0.006315196352676269 +2066 -0.003830708419471678 0.007925812734819465 -0.004092744523311649 +2107 0.0009984658385130108 0.0016625141864504472 0.00029577703455115463 +2108 -0.0003503919996898387 0.00019801910246652747 4.820448988457499e-05 +2109 0.004938138477219019 0.007842226653951609 0.0028079213072789893 +2110 0.003215419352983291 -0.003190614806980909 0.001754215752517428 +2111 0.007176445592147873 0.005801723461361754 0.00765142929340894 +2112 0.0022861500584786757 0.0006189891507689804 0.006418642911461088 +228 0.003367480043345671 0.0016063583668703908 -0.0013117635226172362 +3498 0.0015277337415669126 -0.006523147987800033 0.004831980840791563 +2304 -0.0006455964794753476 -0.005175965738857131 0.0054036706039634 +12 -0.00010605724707806232 -0.00349656996010065 -0.0018654432148136225 +211 -0.0039224563736357946 -0.000142532593679384 0.0008001521361305124 +2359 0.00022388548977167965 -0.00255330157355003 0.005422120705998327 +2171 -0.0025257349550059757 0.0037814900943577306 -0.0017724145115653026 +2170 0.0004619338457972974 0.0028521467132121363 -0.002861587832575755 +2169 -0.004899760449447147 -0.0005910610446924246 -0.002774869194911793 +2168 -0.0016722333014869257 -0.002255812078402449 -0.00512286267653095 +2165 -0.00043040380531555837 0.005022580648193611 0.0019460921181348094 +2122 -0.00026926680387545274 0.0031067559639242175 -0.0008660791621754149 +1757 0.002467291450024826 -0.007817563359461354 0.0023368521656600165 +2363 -0.007891516283225238 -0.002267223048741225 -0.00818818231131358 +2364 0.004007003285959073 -0.006922512487390382 0.0004450193810198783 +3593 0.005644780501363601 -0.0031354947067566284 0.0018613221809108337 +3623 -0.002121864276977409 0.0036960123602736467 -0.0013575981081454648 +2166 -0.0018688047397347094 -0.00584652146927121 -0.004623300672766048 +3591 0.0007476495485821145 -0.005401576474515761 0.003299759613721655 +2161 0.0034781194049799133 -0.0016518675951458406 0.005740596548136309 +3487 -0.007991164815400983 0.0014379027227234026 0.003319492800159722 +2362 -0.0002204136856940316 -0.006048686978024329 -0.0074526481635607215 +2314 0.002149586835400321 -0.007888067891070988 0.00433032589652967 +2370 0.006012109935047713 -0.005927748012293214 -0.004963640253766819 +2318 0.0006569706179623667 0.0020562927369158664 0.005015133560090467 +2317 0.007558687620377742 -0.00014304573697765597 -0.0009570170155153419 +2295 -0.005174815202094332 -0.0011213711807734788 0.0008610133295315003 +2178 -0.0021705960364579897 -0.006544785089837986 0.00012272287178605802 +2177 0.0028459884102157587 0.0005368878698463187 -0.00048406471500133736 +2176 0.002974392557558112 0.004255106479599167 -0.0003506028661597726 +2175 -0.0002588237343168703 0.0010480706385830535 -0.002327723606586732 +2174 -0.00235228173614041 0.004030728841542904 -0.003266383512137305 +2173 0.0030774304498832716 -0.0007567412680630185 0.0026155734920877563 +2321 0.008521397315277181 -0.0023210391816390727 0.0017889576672504084 +2322 0.0028292694833046577 0.001370718123276546 0.007391078693145265 +2365 0.0025598778908477713 -0.0006405281727274394 -0.002332553648880181 +3563 0.0008525453965895222 -0.00033587582204817076 0.002318249889783212 +2184 0.0020553542043562512 -0.0021599127557389015 -0.004303100488556886 +2183 -0.0020936987817618915 -0.002607734468950805 -0.004895294862583696 +2179 0.002542153478907969 -0.006076227639151435 0.0032365792404732735 +2313 0.007309451467204785 -0.0013086603409813088 -0.00576522156144603 +2367 -0.00018496633493994723 -0.0007131085893415937 -0.0028744436878729495 +2366 -0.000988012467973602 -0.0070505955004922525 -0.004923493593511792 +3480 0.004961437873198808 0.0014650755993527718 -0.004037194700742422 +2142 -0.010126275646337606 -0.0027162891637261682 0.003579933690458789 +2474 -0.000695204308899293 0.006240150159263574 0.0019329699410023811 +2188 0.0028018368316184367 -0.0031437273397350446 0.0049598057624300265 +2186 0.002734475256186206 -0.002296592716158496 0.004291570713244283 +2180 0.0013194737780242221 0.0032489055874773847 -0.00447347397985557 +3626 -0.0022493493939572287 0.0002454999555403851 0.008268834924259562 +2324 0.006184339088407881 0.003881082569063367 -0.0018146804283106007 +2182 0.001151206031735054 -0.008289462417271302 0.00808013151963794 +2181 -0.0006937874779364956 0.008192046868838452 0.004304143006173344 +3475 -0.0005680826608944899 -0.0027786454652548123 0.004031088763025932 +3501 0.006907094813158748 0.006746830465218074 0.007226418510864036 +3601 -0.0019521574946060004 0.0029088061781607083 -0.007022501770088554 +3607 -0.010957191395724477 0.004721248903076006 -0.00016165955000221487 +3472 0.0002487061090263773 0.0033035690581661842 -0.00027524737953614134 +2296 -0.0030734792905882935 0.00034745969604925723 0.001735957424359698 +2190 0.0016526234954475126 0.00027980810389264914 0.0006098448086623034 +2185 0.0005734454156925726 -0.0035898731192623603 -0.00016442813630753304 +2323 0.00488540725323024 -0.0024028728307447385 0.001588672876216834 +2137 -0.005977324141972464 0.004063593964043892 -0.003444743961129905 +2144 -2.826450768326309e-05 0.00023896654389814255 8.239724559545187e-07 +2138 -0.005600541911365757 0.005631597984367335 -0.004154119333584209 +2139 0.0021573687471393987 -0.0033471642030005063 0.01598003571411051 +2189 0.0001310872586039484 0.0035515195036910363 -0.002468945052690769 +3637 0.0017231197767703728 -0.0027152286982586593 -0.000562920576603308 +2337 -0.004468172856159826 -0.009193119168493389 0.002823522703834158 +2384 -0.006389863060262987 0.0007100330319665282 0.0009056102727878168 +2335 0.0011893865694412099 0.002422344532230116 -0.0008956604585120882 +2385 8.93774069116037e-05 0.0018451922280004114 -0.0008015170644437214 +2339 -0.005717365771926721 -0.005739549231059166 -0.001102731700895485 +2340 -0.005712960842963216 -0.000507434704472911 -0.0012144215615412413 +3555 -0.007057771858410031 0.008899225020415664 0.0011574151890759961 +3522 0.0014376219263941181 -0.0028350028218816405 -0.004709305733730348 +2336 -0.003454248101223242 -0.004375390938163787 0.00563339959198619 +2386 -0.0016832789375525192 0.0013366420935053362 -0.0012711140381266332 +2149 0.005259976196598735 -0.004789825415270452 0.00835078764304207 +2150 0.0075621099951595555 0.0011966223486306385 0.004230522182792506 +2154 0.004569015940185893 0.000553728137479007 0.002478608005294859 +2153 0.0013287423072039647 -0.00352525610865652 0.0019526778055775815 +2341 -0.005512935050328144 -0.0005725157875830428 -0.002818935406046246 +2202 0.0024028358462281226 0.0016544454354585074 0.0053815983720200316 +2197 -0.00023085457353929766 0.005979157714380205 -0.0007714562420328988 +2152 0.0013838103499214686 -0.0007303325302536698 0.0040050389754104935 +3550 -0.0015797600952946178 0.003543037346015219 0.01134153998491278 +3592 -0.004291327726529677 -0.008275335353034166 0.002031289571727933 +3670 0.007495444260785512 -0.004034955573059373 -0.007795485232771058 +2206 0.0002781917217329113 -0.002908010774127186 5.941680208454267e-05 +3149 0.003202493423021276 0.0014773174102162593 -0.0030208206071365403 +2208 -0.004131427824429189 0.008764254006113649 -0.0026557947501914055 +2207 0.00010436763517327209 0.003753139342841023 -0.002497811207035925 +3203 3.815764639752489e-05 -0.0017926781320553224 -0.005079131742104237 +2395 -0.0017697627849811155 0.000876238326195737 -0.000996128327742452 +2204 -0.002516974558679008 -0.0019845009492082616 0.0024503064620751466 +3541 -0.0013699215750306417 -0.0016466893317475574 -0.003619659220809333 +2298 0.002480023180572724 0.0014393576854755024 -0.002558585301911246 +2356 -0.0001528740162426352 0.001215916240855494 0.002705822429150713 +3736 0.003964174256498719 -0.0019177785160370655 0.0007261084391141981 +2163 0.0053578543505814775 -7.036927791649107e-05 0.0019188235414233047 +3147 -0.0026855410200922383 -0.004108705863922047 -0.0029319669742065005 +2162 0.00345806630991214 0.0019858630017663224 0.0005486347753703611 +2357 0.00248558538281993 -0.0014642712394506276 0.0028870650299535213 +2203 -0.004079863978570186 0.0020625873923366136 2.551674130296513e-05 +2400 -0.0016726397658423057 0.0022690510699748443 -0.003587103897170832 +3488 -0.0035405637255342356 -0.0005252148643417447 -0.0034477453361144474 +3559 0.0016080671646468403 0.003472741716758527 0.005772399665150236 +3602 0.0017500702091906753 0.0052223351259245675 -0.005678075278392658 +3629 0.003516111900991066 0.005043700229832203 -0.0016962723971209162 +2399 -0.0010306804988045237 -0.003743544641742716 0.006578743030592739 +2411 0.0014520739655358855 -0.003617919768198103 -0.00451271757148618 +2220 -0.01189381551322391 0.0015123709710767414 -0.0028831041782104135 +2219 0.008873230855117393 -0.00012261876559962353 -0.00983278899319003 +2218 0.001291027777783461 0.00907084458454872 0.002504631383687299 +2217 0.009255553255827402 0.0022391089131628956 0.00108441930163346 +2216 -0.0041351681692299224 -0.002744318466283216 0.007577128256312225 +2214 -0.005420627996192814 -0.005639730642293855 0.002122890044417805 +2213 0.0007208613411931298 -0.0054327286013966525 0.004657832496287634 +2209 0.013367933795951751 -0.0011772951474737796 0.006958090834997962 +2410 0.0012767532238552159 -0.006563200166980233 0.0014116530795973635 +3527 0.003978459030582969 -0.00020125779671296374 0.00013895918745911713 +3534 -0.003989637077164371 -0.0017225222410787013 0.003622011572177044 +3598 0.011313578137574788 -0.002476780722582809 0.0014907349775697039 +3548 -0.005454787988972441 -0.011303333212421047 -0.0022081119756170147 +2212 -0.009752135546200162 -0.008304139945354613 -0.008456140846411256 +2409 -0.0005811417696498508 -0.00513165716659409 0.0005863280894015679 +2211 0.0005580063414694963 0.005321326117565211 0.0009776277951514352 +2210 -0.009874111848078787 -0.012614641226231633 -0.008699405442704047 +2268 0.0035748387095826863 0.0035480586171973646 0.001114549326456009 +2267 -0.005938983305595301 -0.0020177247701633465 -0.0006141116633491762 +2412 -0.006990435963445671 -0.004380304106806534 -0.005938922503939095 +2416 -0.00023921091741841363 0.0018442342911412688 -0.008037397679562458 +2302 -0.001326103099560897 -0.0030208979746578785 0.0035766758419698485 +1766 0.00391124010925712 0.008428831667278484 -0.00044783700304313587 +2414 0.006913171467387435 -0.0014330978901947878 0.0018505759584297359 +3526 -0.008629483460348888 0.007597658757115517 -0.006035543307882735 +2226 0.005041268826429305 -0.0003526472133356526 -0.003946095612250337 +2225 -0.0035182204080170414 -0.0005482973049936657 -0.004009144980158603 +2224 -0.0024732391780154374 0.0016131466917721836 -0.0006347473146281213 +2223 0.0026428694176620264 0.0013735559783004275 0.004560576514763834 +2222 0.005983821090392185 -0.005505522906925096 -0.005912889914779018 +2221 0.0018185888148378878 -0.0004459415653851843 -0.002242869165483127 +2123 0.0003435712621718116 0.002774740805703343 -0.004295328156927681 +2418 0.0033269878762117893 -0.0048888249548351154 0.001320672782964784 +3502 0.003133961058638058 -0.005420863827905531 -0.0007533743569831673 +3633 0.0013007064222465734 -0.0019198890404539643 -0.0009250403501506877 +3663 0.005894987884415427 0.005777324212288102 0.007000624195701079 +3655 0.004430972690741219 0.002286917801355251 0.0033904186059098133 +3643 0.003076116592568399 -0.0027952899532048903 0.0033737000342813116 +2404 0.002098738361410363 -0.0019884584999908584 -0.0038780963237322053 +3490 -0.0013296312948146366 0.006711512742152614 0.006078651732290369 +2238 0.005023701194290645 -0.003559564871823149 -0.004648004546287966 +2230 -0.000283525132376681 0.007743885555304396 -0.002443536407090525 +2229 0.004385401500804488 0.006507111699156614 -0.0003949950197224465 +3605 0.005115852208889116 -0.0009098946126222627 -0.0026339976984880013 +3613 -0.004804105804562782 0.002269585221702785 -0.003721077186978835 +3566 -0.0034894857411971905 -0.005200404546435097 0.0005241953498607017 +2284 0.002726719914441183 0.005622125665959702 -0.001517365925034273 +2283 0.00026688393559412907 -0.0021369677949197997 0.004789465303103869 +2421 -0.0031450130809260873 -0.0009027661559336193 -0.005688312793906932 +2282 0.0029148297737682087 -0.00035739272393831375 0.0020141628513200946 +3496 0.004430554316038095 0.0036652984871950495 -0.0020563688458849257 +2280 -0.002982607895687647 -0.0008961228946967692 0.008043946081849052 +2422 0.0010574979748838066 -0.003344435401261543 -0.0018710354194065434 +3631 -0.00033243197760343023 -0.0023786419700140638 -0.00046094422057548254 +3505 0.0017418630613871833 0.0021739846991119874 0.004002201377830124 +2244 0.003870716896847289 7.415743276148633e-05 0.006345252352014539 +2242 0.003523563461151322 -0.0036202088421321793 0.0019342719505799947 +2241 0.0052910985182805905 -0.006615993569295123 -0.0013568492969908282 +2240 0.0037144957884220216 0.003584668430055144 0.005190207123158772 +2239 0.0008168875046980525 0.00744870037619243 0.007504804644498991 +2233 0.004737395586734497 -0.0009300233886826667 -0.00455774172694237 +3493 -0.0007331002865835456 -0.004261298890526836 0.0026316521952713568 +3516 0.0015193668716410786 0.0005317666337777208 -9.056436622234313e-06 +3650 -0.002247276273761818 0.00025309544591292047 -0.00020540432938314732 +3669 0.0037105936111270508 0.0013125276670863054 -0.0005054052775991424 +2243 0.0033134515694558096 -0.0023193281921970845 0.002538164975786808 +3616 -0.0011221431500585295 0.002384350915104881 0.005584822321077729 +1758 0.0049077875767579 -0.0010931360689612447 0.00608666324763996 +3537 -0.005665575410402571 -0.006942484015543251 0.0011005384433695911 +2438 0.0027652961497207263 -0.004716679400167992 0.00048447181788785335 +2198 0.00379845519046189 -0.003225362598734495 0.00011534058015752536 +2201 0.0017664660568256023 0.0023174013780081822 0.004387682659615435 +2199 -0.00139790572432177 -0.0013013163095724088 -0.0015840808443984052 +2200 -0.0029869785323980006 -0.00045236297704333116 0.00170626858266409 +3533 -0.003727509919270063 0.0011630475493802405 0.006800955652765362 +2250 0.002489594144139172 0.0006794327799800081 0.0005072411926439443 +2249 0.004679411357373865 -0.0001845386563095536 0.001537406375016705 +2248 -0.0022447044664392498 -0.00026580580277065635 0.0008348739813187026 +2247 -0.004602968367540968 0.000754990314262638 -0.003937733887360823 +2246 -0.0045400177689921585 0.0030489667486529016 -0.004242303316830909 +2245 0.0038966727598079534 -0.002387795578879138 -0.0017286253129529814 +3551 -0.0034640698492962732 0.0017945982646738838 0.005318086672864658 +3639 -0.0014345567555226868 -0.002896285296133761 -0.0025557211277484103 +1604 0.004251624664032223 -0.004301077100497986 0.0033591098076130132 +2439 0.007212497513309936 -0.0050845278671555715 0.0003745791975370379 +3630 0.0005388352008782058 0.004931720211769558 -0.001790924284511948 +3478 -0.006896298727689164 -0.0014183566640942392 0.0013341598503416364 +2403 -0.0011105210812619559 0.004613694296895682 -0.002997926666451568 +1629 -0.005942000261861458 0.0010682269095448494 -0.002016704415348972 +2448 0.00116751257021867 -0.004255601115540181 0.000393881996654927 +3704 0.005143414686216446 0.00307174067052736 0.0038688278643620013 +3644 -0.0029743449712339187 0.007531738206934944 0.00026783091384702056 +2256 0.0009821952290944252 0.00323514807552031 -0.004519902784373089 +2255 -0.0004511373617917357 0.002848722942218592 -0.0006983855591042532 +2254 0.008238447641486216 -0.00011783493238551684 -4.950021089587342e-05 +2253 0.00209117837923425 -0.003311399103743157 -0.00014772364356964215 +2252 0.005235121414882534 0.004619255526961703 -0.002617842785762765 +2251 0.000862315201431732 0.005840185522234485 -0.0023334113182252934 +3507 -0.002302885665510539 -0.00733592254463058 0.0038471368600414145 +2443 0.0010621623000048313 0.0032497203766774668 0.0009086953466650747 +586 -0.004462141363216974 0.0012940029659047197 -0.001123474960119145 +582 0.0045259431969057315 0.0047571156758439035 0.002026033637284448 +3379 0.004687951211687423 -0.001452289607128603 -0.0039029253753063158 +779 0.001982731974782221 -0.001620636505438178 -0.0014226863666119552 +577 0.0009698167900935072 0.000327893327844189 0.0015703268496786867 +774 -0.007054295387244651 0.001351379105865297 -0.0024094042317837133 +769 -0.0029416122558054737 0.0011525065179741334 0.0017952354300389871 +773 -0.005021353674864541 0.0006537173084147147 -0.008141895895932123 +584 0.006181196603695567 0.004894405518455058 -0.004647649397957154 +2266 -0.000772387519045067 -0.0040916692435858 0.0015958344460112496 +2265 -0.0016021828245391812 -0.00013544801451736795 0.003940170637780128 +2264 0.0024700276533328827 0.0069162049566813145 0.0023402514406153357 +2263 0.004374108407351389 0.0007208824338219016 0.002521418235658925 +3536 0.0008976121015521929 -0.0018589222807895336 -0.008625347859324216 +3538 0.008203232709975469 -0.0038586768026900352 -0.0023040287328020526 +3649 -0.004719772715065809 -0.0015536723837865276 0.008164093273613414 +770 -0.002999755144403654 -0.004485506820827868 0.003726833464655659 +585 -0.001059222257347669 -0.004990115999081602 -0.004755070238177361 +2423 0.003483214415564164 0.005360755895744409 -2.1726066128647542e-05 +3756 -0.0029318011395128673 -0.0024414659788464864 -0.014434195282832742 +592 0.00764117186875625 -0.003916357142802195 -0.005831706855027288 +591 0.0013136189992080073 -0.006607119236067561 -0.0038069907572919988 +212 0.0029565287026697856 -0.0044488529833543525 -0.0006831054647127873 +2487 0.0031362800616960926 -0.0027550700477679923 -0.0023565833403338655 +2489 0.0037182060982529556 -0.0005128954511749885 0.006534453035145558 +587 -0.005797659865886518 0.0048974198184196455 -0.0015070818035783926 +588 -0.0043910696591481745 0.004461482388360754 0.0025922036637213226 +583 0.003523890306822821 0.006375547221463717 0.0031468267646521807 +3667 -0.004817771552328777 -0.0054019267424952775 -0.003939624972626069 +2274 0.0035155233273094187 -0.00041814654178687496 0.001383867470014606 +2273 -0.0036427369991509986 -0.007917677078024541 0.004704744213207237 +2272 -0.004115348649771851 -0.010324061008064248 -0.002526687414806702 +2271 -0.003388435956909913 0.00043966760585671064 -0.003802126752534933 +2270 -0.0017114103807850888 0.0019800835603444858 0.0003557566975656013 +2269 0.0034585110212048396 0.003304241365137339 -0.0018262001622876849 +594 -0.0004324616566890718 -5.099727228645793e-05 -0.0010885302903298616 +593 -0.0004247958133098329 -0.0002596788265001551 -0.0021852641259004603 +589 -0.00351534231611565 -0.0031058127028033688 -0.0020572834796528917 +3675 0.0028928238871327055 0.0028936713338092845 -0.003462096357837526 +3202 -0.00222226517523857 0.00220327492887961 -1.5549634155459884e-05 +590 0.0004892683699953961 -0.008576085472772296 -0.004442751562249569 +431 -0.00026294080754518786 -0.0005828058794857196 -0.003603063832516686 +780 0.000944277943630209 0.004905351425325195 -0.007272544573058232 +2490 0.005475062635901092 4.8221981682490795e-05 0.0022313156897502033 +2396 0.0001546482665573438 -0.003053614028140843 -0.0002701021481133076 +3528 0.005287190068844625 -0.0018671864501861206 0.0006468470517432547 +2275 -0.0037370702319452437 0.0010819967056818211 -0.0014717190061616545 +602 -0.005427529539004532 0.015565558379599624 -0.0023037586130137664 +3572 -0.00044478919303786793 -0.007319066162836741 0.011371906743331548 +598 0.0010903563245987847 -0.002702421342012325 0.004685747635657697 +418 0.0009205271985883961 -0.0016250499732076622 0.00542760719079406 +597 0.0015438874586414394 0.0043176950541240645 -0.002754981873405755 +3710 -5.015775413669457e-06 -0.007529768666268829 7.956167565077183e-05 +596 -0.0011756204539073323 -0.007808824876622284 0.0053675012186099914 +2293 0.003108470169294641 -0.0003490523831217034 -0.0006708091077652897 +3513 -0.0032640467751216314 0.0013460615434204752 -0.0020114447562057432 +3588 0.009834164836098712 0.0036044698682945924 9.055708423771493e-05 +606 -0.003655042250951257 0.0003360240242838682 0.008033102877693446 +608 0.003677713022811472 -2.2142966937996045e-06 0.009593939323912688 +609 0.00022445445816350856 -0.0004990867846909649 0.005622268899343054 +2301 -0.003957701468271147 -0.0005215251031886043 0.007940545181134302 +2285 0.007395915317789188 0.006994931253524937 0.003128992017839519 +2286 -0.0012214910809936262 -0.0002454554377555585 0.004971407814162256 +2281 0.0027343266534828365 -0.0008411150209218251 0.005365036421608573 +604 -0.006055242581124009 0.0025927504830123584 0.005997281523641351 +3665 0.0014992364615763626 0.005055718334846347 -0.002554177557569619 +612 0.0010928690769770252 0.00087912970286603 -0.005824454331107559 +2459 0.005470306886267684 0.0021626856649133437 -0.00220376259277108 +607 0.002856009355751905 -0.006634979526385003 0.0010654178399468464 +1739 0.002526507399525495 0.0019643757349517015 -0.00510396674981764 +2292 -0.000312428372190585 0.003910864344739074 0.0024872037137805263 +2291 -0.0012347775769689206 0.007170238158828671 -0.003276699053262845 +2290 -0.0022658101622780023 0.00518794577164878 0.002909653577995269 +2289 -0.003809607715227297 0.0034188779445572825 0.0010833385557648134 +2288 -0.003135589033996896 0.0040178173327766655 0.0029863440592947546 +2287 -0.0021653161336488112 0.0009381496691733788 0.0031537629797621764 +3470 -0.005404852652296948 0.004935059420421185 -0.009708923859781329 +3483 -0.007048466045579855 -0.0031418018940448955 -0.0045004129988320055 +605 -0.0030720823987983926 0.00048286903532332036 0.008314335202540796 +3553 -0.007446918712900601 0.004904095978045518 -0.003415435999232469 +807 0.000501493740627843 -0.0009941945767996021 0.00435419856071273 +2294 0.0016592192158186342 -0.006526352229698926 0.002803761955743043 +3486 2.830600576474615e-05 0.001444633897977859 -0.0015120383470175723 +2297 -7.743921432129746e-05 0.0022409636467711873 -0.001536030481155913 +3653 -0.00903742567362706 0.008898919756917058 0.007905851148933886 +2485 0.004996381987806731 0.001677447483391087 0.006724159563076295 +3660 -0.0028302097960705244 0.0011122719634505693 -0.003179968241805705 +2486 0.0057287537976783275 -0.0015639479447233943 -0.000494751131938218 +3500 -0.00023176594952196264 0.001729292392956169 0.00036349062008836906 +613 0.0025167632863082753 -0.0013420159147136048 0.0029918761875960334 +3589 0.007832239530351757 0.002349867054987258 -0.0021376989947296185 +2361 -0.002698113853622684 -0.005172037893620968 -0.006032639753972633 +2481 -0.001156324349603094 0.0041751897459910295 -0.0012489669008146163 +2496 -0.0016990557756019528 0.001867803365569755 -0.0021804002966328588 +3514 -0.00045736191020045747 0.006077208020341637 0.0014494057699318418 +3520 0.001537667163704423 -0.0025405253564859593 -0.0029459775123941304 +1705 -0.006976226699020552 0.0011897267579244772 0.0008238440757166251 +2499 0.0014972291556062695 0.0017644556184254654 -0.004341250020687598 +2503 0.0067147425607910725 0.0006161841612186871 -0.002014924382064425 +2551 0.006875128067334234 0.0032481090902175334 -0.0007772504689252304 +2552 0.00236525106448897 0.004892337615603404 0.0025028946912319045 +2553 0.002099808725744507 -0.0003001621100032726 -0.0033949770931869733 +2554 -0.0010130611214021093 0.005304465339742041 -0.0038750051130740145 +2555 -0.0021483847875215824 0.007266480572636744 -0.0056570419517606085 +2556 0.004530658837845565 -0.0018752351835410518 -0.0028870311984915335 +2498 -0.0019293830340602442 0.005776996145686697 -0.00020783713105108749 +2504 0.0002011651339848735 -0.0004279472739302497 -0.0016776293913268567 +3840 -0.005016923972002336 -0.0015944452112271724 -0.001660728507810587 +2360 -0.005307109805981278 0.0006570750047988977 -0.0012631664236106414 +993 -0.00028984733014879115 -0.001174308617306351 -0.005896497847136462 +2500 -0.002532885946663977 0.0012713454792095706 0.005600439174932407 +3466 0.0004086088392196206 -0.004683490130765509 0.0020952093149849524 +2353 -0.007523528288511613 -0.004322346246308082 0.004171567455133783 +2505 0.0016856311064243218 -0.001906611065924008 -0.0026229699206011497 +3798 -0.004239122368617457 0.0045310058645208675 0.0028139421460206936 +3805 -0.0021928978162247563 -0.005577060675302099 0.0012438946711231151 +3406 0.0023044805642782693 0.0009051229347925647 -0.009715224671786106 +3746 -0.00025062024974555107 0.005514569282447026 -0.006087758464376285 +2368 0.001614510448190113 -0.005670373277466997 -0.0032248968273590945 +2563 0.00040099986816835977 -0.0012287336400289802 -0.0009612222846010416 +2568 0.003024666221083367 0.0005282317621056726 0.006403357708472095 +2559 0.011917594303457818 0.00033914070956800996 0.002968181840255835 +992 0.0015710797387633994 0.00024412960202265378 -0.00311450448934885 +2369 0.001939728745167779 0.0026620064356781513 0.002388477468629388 +2518 0.00494071512750236 -0.00026422862327767923 -0.0033589341914307498 +2462 -0.0041193605483097195 -0.0035880484962498905 -0.0029409577311477995 +2519 0.0008476991818590115 -0.004744372244846724 -0.0010505411535572733 +2510 -0.005508551940201667 -0.0007530545108285307 -0.005435309443634945 +785 1.3197863238293578e-05 -0.003440599497692895 0.00021177537645181095 +2564 -0.0032399198516929453 0.005633668716162013 0.0008886900306952304 +2520 -0.004811845416967709 -0.0047276044671298026 0.0050789690360477785 +2373 -0.004920022673048006 0.0092651901318525 0.0006685750480626856 +2516 0.001967662379249449 0.003092828481416571 -0.002735756486972674 +2420 -0.0037089034041723297 0.0005355048235768763 -0.007184317908551698 +2565 -0.004732944423813116 0.002136561594018157 0.0009269609844187079 +2566 0.0036287977467566357 -0.0002805487843033008 -0.007368732941547251 +2567 0.00019552050670091026 0.002088956498830961 -0.004540769971736416 +3734 -0.007085765790938223 0.007821839088554685 -0.00704977325685933 +3778 -0.006034534182022483 0.002616004876949354 -0.00040380025572157017 +2380 0.004001113852863686 -0.0024077025593303757 0.0004457330578140293 +2379 0.001964698349150466 -0.0017168211793277158 0.00300523872663644 +2718 0.0005224292482088954 0.0006521697518177515 0.00299295428409016 +2378 -0.0014865120212412914 -0.002680900986100763 -0.00487951429378067 +2371 0.0023795387648083742 -0.009349633404536298 0.0020489600823283306 +2515 0.0035877261495133863 0.002126037967724513 0.004189942750656351 +2372 -0.0022122693710950937 -0.0029991832121407697 0.0007959398448194354 +2526 0.004386750213898859 0.0007195165638682571 -0.0012974593579035915 +2525 0.0029856642134588884 0.003556260631533704 -0.005673651941375114 +3706 -0.008091398375839371 0.0012642630184599428 -0.000321377679865905 +2884 0.0031420384477575283 -0.001815099351657068 0.005599018787664621 +2377 0.004699250233092771 -0.004371401721675271 0.0010846774468867275 +2570 -0.004238651317847532 0.005227920521287908 0.0022733276727558644 +2569 -0.0008366177701183807 0.007781585069357425 0.005475783937608609 +2574 -0.0003914668976562449 0.010199895130804259 0.003425719145530312 +2530 0.0009169812422437437 -0.0009765087893356914 0.0022371068779841355 +2381 0.0001913940295933289 0.0005426373289057423 0.0011336974440423208 +2382 -0.0009363930165059 -0.009089052639433525 0.006982127339189735 +2461 0.0017078485454361922 -0.003116336104338087 -0.004598645050372997 +2531 -0.009864470435235405 0.005250312896490828 -0.0017140349383475714 +2532 -0.004220996211638419 0.00433458263925432 0.009295581200316658 +2572 -0.002829411747319711 -0.002949089733567717 0.00035418912658080794 +2578 -0.0006035637756176218 -0.0021211862642987974 0.0007183996473005053 +2579 -0.001698393960051388 0.003372235091576815 0.0002551079676792791 +3703 0.0033140190987417024 0.004361315354750702 0.007393131127518755 +2920 -0.0012241661274544167 -0.00048285272130381657 0.00025475959661259626 +2527 0.005278657260914147 -0.0016948752885210998 0.001874435013725953 +2529 -0.003533072588138196 0.001469138584113076 -0.004753510618424956 +2528 -0.00287207100948442 -0.00395215089303934 -0.0005678279164534637 +2576 0.001693284041624088 0.0002671959760510337 -0.002596357145878811 +2577 0.0015487309019400744 0.0010000634375480326 -0.00324451290884646 +2383 -0.009596299349510898 -0.0016541734146880967 0.003923964636517132 +2388 -0.005347487442588688 0.00308756652061473 0.0007196843453728841 +2524 0.007139465370330794 -0.0033663914017059405 0.004292256881302958 +2342 -0.005955194058545182 0.004502615618377343 -0.006361092549856126 +2536 -0.0015509783123580946 -0.0007232864578547956 -0.00201660812188642 +2582 -0.003751001589629603 -0.00524975490224377 -0.0002914329571848323 +2583 0.0051497864092431905 0.001238225400129337 -0.0007664772411704 +3683 0.0006207302259631802 -0.003468247289612233 -0.0011313093245365767 +3803 -0.0023858153134531045 -0.0023387676011918613 0.0033109389036962535 +2533 0.0019286241537312978 -0.0038853790072792462 -0.00843826783609405 +2537 0.004701718105166042 0.0015470861762405795 -0.0032052559950069698 +2344 -0.003749335289160969 -0.004104240356940665 -0.003406106874319882 +2343 -0.01053123563515529 0.0018910518829823484 -0.0030933899236732323 +2590 -0.0004022834358223579 -0.0048378962060907724 0.004064258482368506 +2543 0.002593269722315295 0.0016585819116088927 0.0015585922969069354 +2392 -0.007253329406133469 0.008809082355589836 0.004293186986360713 +2581 -0.0045802890019769164 -0.0003312189543761849 0.0037871808193821535 +2535 0.004260237715235336 -0.0019503116545536152 1.8974998325611977e-06 +2391 -0.0017473735815930992 -0.003423760475799148 0.004874269651478594 +2534 0.004156135601624127 -0.0002499455759172197 -0.003567133585806766 +2547 0.0006272072514605887 0.007821947904582242 0.00012417900264634422 +2548 -0.0044423716738196785 0.002549113711421374 0.00046360722319968795 +2549 0.0012370307444474209 0.005909640599226142 -0.003337172213577218 +2354 -0.003320558384001007 -0.005250947245851455 0.0035888437206308623 +2691 0.0008243962765180876 -0.003142184837224435 -0.005729454874742161 +1198 -0.0006949289876262421 0.0005416768243260539 -0.0030666209624295076 +2415 -0.001285207114529363 0.007087415197909818 0.0010420437895881157 +2546 0.005354059611416821 0.006171856654274774 0.0007883565854671548 +2352 0.003266333497243783 -0.0010810043357692709 -0.001402256862865794 +2397 0.0063375375303787425 0.0023486735007415727 -0.008715767485390718 +2545 0.006370256516403525 0.004152884291017184 0.004253446595026394 +2550 0.0014818697241605284 0.0018826338459986725 0.00424680336154682 +2587 0.0035799109851455723 -0.0035775367435364643 0.0007500582883514578 +2588 0.0008510428463100487 -0.007396255028130297 0.0025793861154144605 +2589 -0.0004611846114349252 -0.0025463338135957867 0.002859979763965053 +2591 -0.0016535277435159477 -0.0014072784247504038 0.004361434398717138 +2592 0.006302694223826478 -0.0028009396612541826 0.001661341737660054 +3740 0.0031330131032114477 -0.0035387310582460246 0.0017638477533280864 +3773 0.0024434406972785334 -0.0024926091168203375 0.008358619644992854 +3811 0.008034224220480356 -0.006719535340181404 -0.01292939150483705 +2544 -0.0023352327487532938 -0.002951761294110733 -0.0027704029408627826 +2347 0.004542050749278944 0.0028662838449827403 0.004889226429341204 +2348 0.005924021603622134 0.0015546732595565047 -0.0029308325036867962 +2502 0.0021864557620207923 -0.00269552158005231 -0.004876365892299726 +2692 -0.002507501209226471 -0.0036913098642708682 -0.002183860557740113 +1387 -0.0033591344853513986 0.0005997282902541894 -0.0025949368611909826 +2501 -0.006961337009956737 0.007996527474848256 0.00500778505212297 +2539 -0.0022524486038298036 0.0027683196778481504 -0.002000266530034444 +2693 0.0006787583905059777 -0.0029124302208191574 -0.0032408276810333577 +1539 -0.002806888550786406 -0.0025452415540445326 0.0025013074050470614 +2407 -0.002637321348751614 -0.002549698852471978 -0.006123538147830192 +2408 -0.001147855550651362 0.0002894456935823981 -0.00186515510827398 +2597 -0.0033011916818514193 0.0067259002321256285 0.0028480049494225682 +2599 0.0005083211129262889 0.003645060296605157 0.0004591225203763113 +2601 -0.0107941998577789 -0.0009737128545003472 -0.004039897273761968 +2602 -0.0044737520983318905 -0.003921601943584642 -0.005838926463534087 +2603 -0.005122914689221145 0.004521962551161095 -0.001264737724945281 +2604 -0.0024426783507885776 0.00035795149202084834 -0.0015284796329941004 +3750 -0.0009429864804270594 -0.0028472234464517058 0.007038842151409977 +3860 0.0046659603960235736 -0.0012762704046338769 -0.005168524886248464 +2596 -0.006854095271086807 -0.0034479483122493845 -0.005926117031979334 +3835 0.0005822315723102623 -0.005915441555256671 -0.0007828884378115359 +2600 -0.0017854511076770636 -0.00024237776801174497 -0.009226637157775277 +2401 0.000675170573872684 0.01161302830975473 0.00020034702213673241 +2593 0.003913789343960719 0.001657376606712839 0.0024634576601231454 +2652 0.005161074798686521 -0.002107336204526673 -0.0028749778665086902 +2598 -0.004551818442055715 0.0017500777816454164 -0.002606043759763656 +2460 -0.0034046534056786197 0.0037668448462537304 -0.002533158674277102 +2558 0.006887018135618971 -0.007515608143554377 0.0027226669268236078 +2456 0.00032060406776981325 -0.0024802844820587438 0.0019538333696699508 +2455 -0.0021515690130691862 0.003550583914988553 0.0026075845825182463 +3871 0.00406032292882601 -0.005786454245106235 -0.003866240716007837 +2605 -0.003059931969180532 0.006877913829364645 0.0010984138118468264 +2606 0.0010602399004898582 0.003404814379254566 0.0062393329585767 +2607 0.0023709569727246777 0.00309302538412001 0.005941930619643971 +2608 0.0032738573833762806 -0.0006538438790323733 0.0036640875391319395 +2609 0.0007674822255735719 0.005649724319191141 0.0004769890021601 +2610 -0.0005197018343115234 0.010571024796889913 -0.0034360810960369303 +3642 0.0077767568096493165 -5.661366407104412e-05 0.005215545783328156 +3677 0.002030081110941282 0.0019028631604628434 0.008199900824320904 +2351 -0.0012638856167819432 0.00210531862068635 0.0014285368374205474 +3628 -0.006874112423226151 0.0050064355810212745 -0.00046208434534591845 +2426 0.0020613278344527963 -0.00045242305558943684 0.0013626854984490541 +2611 0.0039469159774739755 0.007873950260342539 -0.0017653986295281677 +2612 0.0037917989931447976 -0.005564611292892625 -0.0013610625904485025 +2613 0.008261050783609817 -0.004512661028451385 0.0019167404630896345 +2614 -0.0023679892821058916 -0.00349117516377802 0.004626089132793334 +2615 -0.0004347143404501284 0.004184741287441989 0.0051440192555374945 +2616 -0.00416033638408639 0.007459471906747512 0.0013642383878621643 +2618 -0.00498365288726361 0.011186881042783241 0.0012608819841112122 +2619 -0.0018953434294286468 0.0007775526776434737 0.003045959177632795 +2916 0.0018661165925994612 0.0008411213544563079 0.005172792589452615 +2424 0.00421622017473081 0.009268357560874017 -0.00017076598427062642 +2425 0.0004182553338499362 -0.004686376897624915 0.002809667218308073 +2430 0.005441755996633596 0.003097590858760224 0.002062501896077134 +2427 0.000160794790580147 -0.0005680347302074999 -3.302269669797567e-05 +2429 5.866407713151668e-05 0.0027698389690030438 0.00011412474975311014 +3758 -0.00017999753581377412 0.008315746676334074 -0.002381399740735972 +2419 0.00265676434498691 0.007814423805598993 -0.002934029016677184 +2571 -0.0019552324840525284 -0.004369427132959183 -0.00662824711376077 +2575 0.0034793173236629888 1.3483693884197606e-05 -0.007912764936715718 +2580 0.0028734453181010347 0.0008650617828208388 -0.0020673312970454867 +2428 -0.004649753480384761 -0.0034295479523109122 -0.0027958076445209336 +2620 0.0007519600383827035 -8.130714756695547e-05 0.002991942449285402 +2621 -0.004565377619827817 -0.0009094063582099926 0.001100817488084788 +2623 0.0003607783243039326 -0.0022057048605086367 -0.0033793411456594503 +2624 -0.002873582210914552 0.002302238571803971 0.00027042844234374125 +2625 -0.0045830521024756606 -0.0012905728673802365 -0.0004981879919289475 +2626 0.0031611278705306876 0.0032952098472968042 -0.004905018053519458 +2628 0.004210789448779337 -0.0005321306182080703 -0.0009375170134256786 +3681 0.008205988857965403 -0.005541159286718585 -0.0015026476278314311 +3776 -0.003187778820715377 0.0026876682767428025 0.0005067679886089136 +2433 0.008029690815750883 0.006449156448811371 -0.004155527435234597 +2434 0.0036201265530186257 0.01032172348089483 -0.0018826916588521388 +2432 0.0036613185929799427 0.0021072420847829125 0.003829243805690542 +2389 -0.0014892828445451681 -0.0006825550682402554 0.0064925783347217075 +2394 -0.006803069194063427 0.0027104528201914307 0.004931678342212715 +2584 -0.0018523187432845053 -0.005759195477364697 -0.0019377235145890464 +3720 -0.0037668429618713368 0.0006724983654727595 0.0031156635662615085 +2441 -0.002289815715742698 -0.003700880914003508 -0.0028829085144771323 +2442 0.0016275488405838266 -0.00018082330380608577 0.0008213490700281356 +2629 0.0015309360016814374 -0.0010889182868555895 0.0029755835710376832 +2631 -0.002002501041835886 -0.006137907716999184 -0.0016975131188304957 +2632 -0.0035834105177794625 -0.007006288659809748 0.004654646603751443 +2633 -0.0035534092433377384 0.00696051731651415 0.0057879570531482955 +2634 0.0030943193347123723 -0.006884214143707688 -0.000879492759077415 +3867 -0.001230588401664938 0.010873503007352379 -0.0008291183534515851 +2445 0.0004945395768758943 -0.0011346933524139643 -0.006484446272981591 +2440 0.007795101490653164 -0.0013335200987944688 -0.0009221461526514713 +2390 0.0009854211280186536 -0.004334408043648626 0.004848527583105348 +2446 0.0039431861093878065 0.00016097975367589446 -0.0011183582934993052 +2437 0.004930651288989087 -0.0014976906770461662 -0.00010876496604512464 +2630 -0.002703993289262649 -0.0033614954194586054 -0.004871825205051133 +2393 0.000789083558913058 0.0023769243372440112 0.0038118534203884172 +2595 -0.0008720994566018117 -0.0043681804768059785 0.0021332417857585243 +2405 -0.004791102722006088 -0.004207317122871019 -0.0027324679604468043 +2911 -0.0015012946432512758 0.0004481958306416977 0.003446118396273733 +3687 0.0005551091961204923 0.0003642771908241385 0.016412925687940963 +2444 0.0035657116356844903 -0.011755958332460013 0.001288071870061592 +2594 0.00021638053721895957 -0.0066649539165644514 0.003757077256457701 +2635 0.0012635862879927674 0.0006233631517309782 -0.004646892160997438 +2636 -0.0010089813915813949 0.002886745964952953 0.002113083803498484 +2637 -0.00021158948035171363 0.0003890457573276523 0.004733500485963142 +2638 -0.00032950779358609266 -0.0032244412929351403 0.00373033934548538 +2639 0.003996998046933547 -0.007372013521508381 -0.004421212891131172 +2640 0.0039818319268779805 -0.005103492765269541 -0.006125454282816382 +3744 -0.004318286173406156 0.002555252018957474 -0.011190998281925489 +3712 0.0018944312654216107 0.0030740639743729366 -0.0009801933036618264 +3787 -0.0006245958364663809 0.007104686014327562 0.0006376681599051069 +2406 -0.0012477615948079902 0.0018819111782665957 -0.0023454499686162956 +776 -0.004297008145228391 0.0019237394111670122 -0.0031129681378511223 +2452 0.00010532955646080537 0.00010939402037191454 0.0017297530429042003 +2643 0.003964784226282837 -0.001154692493755278 0.0037487955360407123 +2645 0.0025989367249640927 -0.00360129892438644 0.00031615458925108995 +2647 0.008335011953808332 0.0007626608388851376 -4.9555945706834914e-05 +2648 0.0012088323568134672 0.0033694445529225837 -0.0019526016797760145 +2649 -0.0007275507826833658 -0.0039950056165827235 0.00012026413295883478 +2650 0.0017111504688632306 -0.0026978475252148765 -0.0008313678388035549 +2651 0.007010512168978055 0.0004740610649705068 0.00471817340497965 +967 0.0033467590946431184 -0.0027266671218901103 -0.0039763588192309575 +968 -0.0007668572088828365 0.004237726456276293 -0.003502833234550449 +3729 -0.00097864631540357 -0.0008681078618871001 -0.00298430850011685 +2641 -0.0009926634091055474 -0.0006828470232682441 -0.004986441044673316 +2642 0.004620200949373602 0.001134250525443843 -0.0006567364491307222 +2646 -0.003511268554719606 0.00020087574701818984 -3.027042470490815e-05 +2458 0.0012271967086452688 -0.0031890237961072782 0.0032088121247270127 +972 0.0008538130611540835 0.0021837826823705654 0.002103535497348788 +771 4.358924670625467e-05 0.0017310901063634725 -0.002312343202726821 +777 -0.00026059336682576203 -0.001603392010393802 -0.0017316925500537965 +2453 -0.002378470213801745 0.002500049027807402 0.0006065129713127206 +969 0.0023641440162416386 0.00035952753088230524 -0.004737073757190044 +778 0.003043905539543424 -0.0035559385228324733 -0.000911698681965567 +2466 0.004869669678190016 0.0017045765504892702 -0.00992462984695524 +784 0.0008767424981400389 0.002561647579619279 -0.002830481352745778 +3713 0.0028602585714667876 -0.00012413145465734355 0.0017415322059245138 +786 0.00034608838941589155 -0.008976805732791483 0.0004118711715384653 +2457 0.00018387040868890405 0.002964331011825821 0.006490267821729611 +2653 -0.00288328369674891 0.0015351228540257337 -0.003505729753685634 +2654 0.0006767955379234287 0.0027911129847507767 0.0041109621302136065 +2655 0.0014432136195131442 -0.001524698802477847 -0.0012631445613631932 +2656 0.0011394743803547502 0.0016385618982942666 0.005083876104345774 +2657 0.00234090128532541 -0.0023206910291551732 -0.002885498527512401 +2658 -6.589769727589212e-06 -0.0006156522244569554 0.0010689223904017462 +3764 -0.0041917547360300405 0.008031422644673198 0.009915086567904189 +783 0.0011978743313317546 0.0019378259657592317 -0.0015349866193050715 +1357 -0.010754870291036143 -0.0026515245769610516 -0.0003582177340764958 +2402 -0.0028098669148642693 -0.005177572992718353 0.0027009519924121542 +980 0.003780211683545022 0.003330006013096189 0.002174227162368077 +2467 0.004082808622454864 0.001438010334340464 0.0022684718774502923 +2617 -0.009857768646678694 0.0038857601523037337 0.002802288047695536 +984 0.0065139547617722015 -0.0015022653303990495 0.0027146775281028136 +2471 -0.0035698971374030853 -0.0008689709174178932 0.0019620568923215858 +3481 0.005959395959394953 -0.001715526187404982 0.001722970071130648 +2468 0.007122386004637281 0.0005222534768889452 -0.0002002352127925366 +2469 0.005317180740325671 0.0011294118639335812 0.0007812350800633077 +2470 0.0031198308369058073 0.0002550505407899732 0.0037127078488662178 +2659 0.010599990237488775 0.0026383872124104025 0.004110500417352305 +2660 0.0032692959380831296 -0.0013197222188586883 -0.0010477605751690396 +2663 0.0018653954873622675 0.0003724415636581144 -0.0004373616597813067 +2664 0.009443131525976829 -0.0008077405928637885 -0.001677203559945451 +979 -0.0020054003828844057 0.0030840147473824788 0.005461155258060601 +3752 -0.0010112820538513163 -0.011280372953128058 0.005639868556504859 +2477 0.002686105698429363 -0.0023335314366919363 0.006045372486549077 +981 0.0015684975241953049 -0.013748972696167492 0.006892384393182324 +791 0.004942390329818101 -0.001360628600388217 -0.0005063655181488113 +2472 -0.007491595182480794 0.0010687534859553532 -0.0023078580067746896 +2476 -0.0007154072974566414 0.00420808664417811 0.002714755575451337 +3691 -0.0047703905344071255 -0.010521297469950645 0.0038071308493621676 +792 -0.002625222966603549 2.7888158726766388e-05 0.001466441142470795 +2670 -0.002945030745524373 0.0024290900143583366 0.0032042413639319454 +2665 -0.0044449596575157095 0.0005342806061228781 0.004188679945209318 +2478 0.010317003015794591 0.0008426275379395347 0.005909768241344323 +1559 -0.001868635229015848 0.005023716211891733 0.005312972797839401 +2622 -0.009252975228895939 0.0076021569430627595 -0.006491151493221455 +2431 -0.0006007911679831036 0.003311339871376786 0.0029798171052938514 +2435 0.005794420009772123 0.0006843283668779604 -0.005663887721783389 +2436 0.0011794239899791 -0.003667561863471914 0.00029602153633234663 +2338 -0.002299025654563717 -0.007073813431458332 0.0012629000173416311 +2475 -0.0008527409748420944 0.007319483826805977 0.002691961463028638 +2484 -0.0032698800989345253 -0.006351223206440735 0.0025269171161173736 +2479 -0.0014725625375300617 -0.003049184405872209 -0.010644972525474904 +2480 -0.004567576833155806 -0.004379383456994296 0.0016136987447985984 +1376 -0.0006150158723642396 -0.004204772867469628 -0.003890301993999497 +2482 -0.0003612257016618395 -0.005861927942514542 0.0015698018445583107 +2671 0.0048604302987283405 -0.00910128282480794 -0.0017215755375230286 +2672 -0.00023671474554297486 -0.0032761673466600227 0.0001688227058853341 +2673 9.985124692585298e-05 -0.0015003549213316659 0.00476032476307173 +2674 0.0020829323875077087 0.0025973183370954604 0.004929432466489552 +2675 0.003820353012388717 0.0014627566710487712 -0.004097954633088091 +2676 0.005609117115332225 0.0001543856944976534 -0.0015606144645901009 +2713 0.0008223874983944667 0.0024923331369144687 0.007372674302492125 +3731 -0.0009166485071153773 0.002538621171795006 -0.0011527434012334947 +3071 -0.0027628171653464187 0.0009675595215066834 -0.00500587746986054 +2473 0.004398877273436631 -0.0012002806799008144 0.006354511591040292 +798 0.00033468104681851383 -0.008821930780636617 0.003664013554264529 +797 0.001470049092147779 0.001704331883131443 -0.0059114606107418454 +2398 -0.0012437068234103163 -0.0007436093845499843 0.0027585156568092815 +3692 -0.003718246151101125 0.004357675086280108 0.0038513774506595097 +2681 -0.0019906516145861723 -0.002164662418773561 0.0016106642749845765 +2483 -0.0042702956989624005 -0.0002149129339553577 0.005010363150364667 +2488 -0.0013947946773290591 -0.006071417227911246 0.0038687362834293874 +2677 -0.00044284800408355947 -0.0034342837093117055 -0.005075675969686482 +2678 0.009623162942966269 -0.006314342055497183 0.0009207667012778266 +2679 -0.00018139367467484837 -0.008136692106783 -0.011262609205197487 +2680 -0.003358804749844972 -0.003717205351929068 -0.002404012856228698 +2682 0.00019650179734589205 -0.003184845227019965 -0.003045875523855318 +3693 -0.005944125243972828 -0.0025854316911118813 -0.002347121103587161 +3743 -0.001954741748965885 0.007841780344954136 0.006000356224984635 +3748 0.0015914819400476973 -0.0006267552591657772 0.00794776577324058 +3759 0.0063752628467426435 0.0008991313422388429 -0.0008658344827529712 +2683 -0.0005218643496671992 -0.0011084884547567723 0.004771331278075883 +2684 0.0031681969163816917 0.010325401774571467 -0.0009616497747750565 +2495 0.012484800873107068 -0.0018001190717468762 0.0023564013359858764 +2685 0.0011404176645089502 -0.00681186968564218 0.006467368900448257 +2688 0.005398244366391143 -2.74594545562162e-05 0.0034481563240979854 +2494 0.005431848675322955 -0.0019339418909727192 0.0036581253365462305 +815 -0.003125440231427141 -0.003906772882634577 -0.0013156150287828843 +2451 -0.002748326097891712 0.0073275054077825376 -0.004142755766072078 +2450 0.004776750563382 0.0077238999477521 -0.0015765179474476053 +3818 -0.006849084511490018 0.0024341440584976243 -0.0006445656829192284 +2686 -0.006994956973167413 0.0005925187732713549 -0.005692359548783764 +2687 -0.004038333233941008 -0.002197022755761509 -0.0016405684372411025 +3797 0.002560637769802442 0.00029144628147575677 -0.0037842171419791653 +1005 -0.004648093142961037 -0.002170688051465211 0.0014720040033250148 +1006 -0.0004377425816117501 0.007490212674689358 0.0035043610719773157 +3737 0.005209397097536514 0.011804413757775762 0.004272147572302889 +3542 0.004850004835008138 -0.007013667520409759 -0.0058196306953588114 +3854 -0.007213212539723558 -0.0017707747434125398 0.00028464532610114265 +2523 0.005153135202267071 0.0005987577499772599 -0.0038506852831057385 +2714 -0.000197347750912997 -0.0014370071326990543 0.005620268493340674 +811 -0.0027216768695711674 -0.00485465939325284 0.002348490042591943 +1004 0.0008446898928127312 -0.00020626543528874783 0.003031996952886028 +1192 -0.0008578254206631059 -0.005180938392712178 -0.0003164518043803913 +816 -0.001129123362713143 -0.0032860259185873257 0.0033613685849596298 +1612 0.003955743485929036 -0.0013050755703564525 0.0012112383394220201 +2887 0.0037746311371399197 -0.004739768694163848 0.0030245843616297564 +2891 0.007368046972203189 -0.0024657521722451226 0.0017345989313628856 +2695 -0.005397916826657568 -0.004582017728402505 -0.002246128359714654 +2698 -0.0035451593377791024 -0.004335914732546722 -0.002126823325187015 +2699 -0.0005316344588499347 -0.0031797437200222554 -0.0007246363164132771 +2743 0.001188593497026266 0.004826143860970165 -0.003952449043800475 +2744 0.003183404685576806 0.0037099224798400757 0.0003538195181049219 +2745 -0.0026703124445569535 0.00511661762295612 0.0011431367626787204 +2746 -0.004403209541172971 -0.0029111062422226127 -0.0046982860452332185 +2747 -0.00405966046618542 -0.001378079731558802 0.002709516846273642 +3684 -0.0032131254765318407 0.008329476439596844 -0.003406754739601175 +3802 0.0035307472476120566 -0.009164448183721072 0.0025788515459800408 +2892 0.00015294151018537157 -0.0059117474988794405 0.0039057694912590377 +3820 -0.0016307202867685197 -0.0016718158947820973 0.0029188685556593833 +3724 0.005343469082439202 -0.0016424902242573593 0.005609643162544416 +2939 -0.0009863589506769617 -0.0013599081711903843 0.0039643127330657515 +2938 -0.003295479131020464 -0.0015541093438307518 -0.002295332821692174 +1616 0.0024666372823460682 -0.0027743453283884207 0.002108330048306466 +2696 -0.003182775333090473 -0.005359081929962468 -0.0019044114176098932 +2700 -0.005263807618272794 -0.0036356403023135833 0.0022567533184443666 +2890 0.007215491536097539 0.00087451164517866 0.0028811045711286056 +2561 -0.000870637003386317 0.007925010469177906 -0.00398393668664309 +2706 0.00024978586210921055 0.0028972971853362135 0.0031431597821925455 +2701 0.0013405212018618132 0.0010665287957069022 -0.0020266760024645904 +3807 -0.0059567157894980126 0.0009568335101013161 0.004272610930273906 +2749 0.007465954138796551 0.004841161449350465 -0.0036385515015922585 +2750 0.0032488345550498667 0.001984730096126997 -0.0027245002386461488 +2751 0.002213646773007313 0.000626470699965877 0.000836103514677501 +2752 -0.0004155794933345658 -0.0011120191200427148 0.005530351179884141 +2753 0.00032539857536443136 0.0010680446806712058 0.0022736190062109043 +2754 0.002174478347475409 0.005310126983820227 -0.0038208318290471194 +3799 -0.0008634943567004245 -0.002015383884135406 0.0018562123914314362 +3826 0.00044297011683432726 0.0019931958117158583 0.010131031950495192 +3829 0.0014759746571219902 0.00010914346240867997 -0.0021614339458664853 +3730 -0.0024217647013624072 -0.0011229997403197057 0.0019430246579994934 +2702 -0.00043853865407657663 0.0021534106188538004 -0.0044535334781259485 +2560 -0.004132850405806817 0.005747742259593778 0.005720367311364454 +3690 0.002237772230459724 0.00011571617095745251 0.003904061731536169 +3762 0.007197319061798179 0.002104753110519621 0.0005539497756923583 +1656 -0.001930473340839078 -0.0026021821653545553 -0.001648657155535509 +2755 0.0028056926171630757 0.0011047750100618046 -0.004918400963024625 +2756 0.0009755435760069118 0.007162982049993983 -0.00911521767871919 +2757 0.0006323634887163442 0.004531315832430378 -0.004711472848433713 +2758 0.004386459790771475 -0.00039892344852351756 -0.005764105077762413 +2759 0.0008836090887767586 0.008702246794316054 0.004582426014169333 +2760 0.0065262151071378595 0.0017300446103804 -0.0036207332436706137 +2765 -0.003205574344523186 0.0016763686154716555 -0.0034759287167190895 +2766 0.006883192425604427 0.0045822686924566845 0.00204880210627322 +3685 0.0040531659955292815 0.0023099313799834426 -0.0025032349802815166 +3786 0.007039769593386339 -0.004738366347291153 -0.00193195663369044 +3763 0.002687009295736014 -0.004166707609676314 0.005279218841086724 +3728 0.004061710866119197 -0.006354864976920644 0.0036656324398677137 +2573 -0.000651980677529769 0.0016199499404150107 -2.2470388276368465e-05 +2720 -0.003049016362132675 0.0011511730511114548 0.0014149824297086595 +1358 -0.0013039444719049932 0.0010246559313609983 0.005994438692999774 +2721 0.0008726029745656786 3.590129345680337e-05 0.001483826749570361 +2761 -0.005183147219358863 0.004087679523891533 0.0022735500946122374 +2722 0.0018620557492678765 -0.009636586022228054 0.004283637793107772 +2762 -0.007098770049218312 -0.005843448192907422 -0.00623194939990392 +2763 -0.01039800089584231 0.0019125798067782312 -0.004047145752959012 +2764 -0.001810208263333084 -0.0016269006624589862 0.002639493987401151 +2767 0.0066197121594592755 0.0008544800584521686 -0.0037303622558925048 +2768 0.001211835319841153 0.001533839725731559 -0.002516725483928946 +2769 0.0030011408072271126 -0.0038325363319293817 0.001965508702592033 +2770 -0.0014441543329060651 -0.0038967848125072996 -0.0008430691058120726 +2771 -0.001475107554153043 -0.004594184824768653 -0.003611553109832532 +2772 0.009247201365560858 -0.0034771167814679513 -0.0037184561283061983 +3804 -0.003764273316742882 0.003106155587044116 0.0031280184397977995 +3851 -0.001275394836158857 0.002863110202855488 0.002006581649981891 +2724 -0.006937500981624875 0.0014748708825125054 0.0011049547084368142 +2538 -0.00048160322455807037 -0.00505709206735618 -0.0013241073265696135 +2921 -0.0026668082033846643 0.001449114134470076 -0.000992542488792864 +2719 -0.0050044958644670425 -0.0015360222016688235 -0.0043422470381831325 +2729 -0.004820393777252014 0.0037732002689720053 9.079312610818035e-05 +2585 -0.0010637314160428983 0.0003119924836998784 -0.0042062337905430115 +2586 -9.858624430326672e-05 -0.004162023161435071 0.0009788254132621233 +3717 -0.0010776764336981814 0.005362383953609793 0.008499213758042978 +2773 -0.0016924213752689424 0.00016288764395940155 0.010295309727901873 +2777 0.002305109242991373 -0.0034235586670718753 0.006417203476365838 +2778 0.0030934547420873406 -0.0016820225503525977 0.0022172814942052034 +3739 0.00037540138205891806 0.004201603496078441 -0.0034654299818031174 +3832 -0.005255826020016309 0.006589122478713282 0.0039925533280441555 +3856 0.0026924553981201573 -0.0014607337654114285 -0.002654904324389613 +3855 0.00320602401752546 0.0059090945979684865 0.0044519722654969285 +2776 0.002560512773175722 -0.00021096996292059483 0.007460082236101966 +2730 0.0007725748785512405 0.00408961931642179 0.0008635015124511314 +2694 0.0008212492282626786 0.0019500904138885242 -0.0031372079907936844 +2736 0.0007796481003918286 -0.0012556606205800837 0.004960456003020623 +2731 -0.00042721251920557095 0.002699298074193646 0.0025099438881492518 +2733 -0.0013420281081587577 0.006570934850850826 0.0033494843587271532 +3741 0.0016416382519379878 0.002179948229887263 0.013624300999593423 +2737 -0.007794427725339825 -0.0006966230651124295 0.001529088461606199 +2741 -0.002789592534388466 0.00042984669774784686 -0.0025693417425473463 +2742 -0.007132211051578133 2.4891593752020426e-05 0.00016704619366700497 +2739 0.0004006219055617357 0.0013981613112537912 0.0010566883096070991 +2740 0.002009559647297903 0.0019641448743730203 -0.0024178987596139897 +2734 -0.0006842840978515189 0.001618757029103343 0.0025928451212748394 +2735 0.0005691655953515638 0.0011996865689157439 0.0036846762169457 +2738 -0.004156780150648052 0.004216439736944026 0.0040836113854784755 +2780 -0.002348534917099282 0.0009153753169505637 -0.002347685397859557 +2781 -0.005753165245108532 -0.0007082354444406372 -0.0034710336435611632 +2782 -0.006367754063066476 0.002565554973232541 -0.0027711807203887693 +3777 0.009569099879646195 -0.000933289293591109 -0.003971841364003878 +3745 -0.0013696902719517023 0.0029294553057820248 0.00828703634932802 +2976 0.004508017539358071 0.003276684963088012 -0.0045368675427072715 +2975 0.0013830422544213424 0.002288239882453208 -0.0013330116690011054 +2934 0.000498395829118885 -0.003926772307461997 0.0004952319873743155 +2732 -0.00011085737594710564 -0.0023636592600127576 0.0029859669091128506 +2689 -0.0011211942497045128 0.00456330080735552 -0.0015922581271455144 +2690 -0.006751219134139677 0.0029454128741220466 0.004349210132828939 +982 -0.0008680633223927778 -0.004430594553328393 0.007100325307261992 +2748 -0.0009529898954690821 0.005931870477360125 -0.0060462086279045885 +3714 0.0016034654793137372 -0.0023958902916630994 0.0051682729393650794 +2788 -0.0024422457338608016 -0.005184481360718435 0.004280555915638297 +2791 0.003406539103966971 -0.0022599617647323903 -0.008079737756288896 +2792 -0.0006803832511728972 0.0016089089810675259 -0.003787387864824466 +2793 0.0010607014779781398 0.005322858406472398 -0.0027292806878416852 +2794 -0.0022076910911919315 0.002827523498872535 -0.0031181937227800485 +2795 -0.00043721199550384533 0.004239977719321917 -0.0012612776365048437 +2796 0.0035921415607734967 0.005065819305424543 -0.0008125439063962503 +3705 0.006150561266071044 -0.0036003984666909596 0.0008049517687568 +3808 -0.001345769517189145 -0.0009452451518835391 -0.004167741144296736 +3842 0.00047317182064184976 -0.0016512918935364929 -0.0023310448568466713 +2789 0.005617061053717281 0.00029500593531638206 -0.001097789079641002 +2835 -0.004800583752588159 0.0015964121102612205 0.0016509209897957128 +2843 -0.002008079395367279 0.0024631705055903046 -6.267804030508595e-06 +2844 0.0015662393912721415 -0.0007678764938535519 -0.004821030213645365 +2842 -0.0011238858253136467 0.007080664071288461 0.0031978214979689373 +2557 0.009310409938884788 -0.008248349776658599 0.0009286390778137654 +2562 -0.00012182911751157106 0.0012451209834172983 -0.002385581928938285 +3721 -0.00829057086634551 0.016758565824922526 -0.0031261215247042544 +3682 -0.0014686324207958327 0.008440240525364129 -0.006225746835312391 +2797 -0.0002676927208570041 0.0018904173522861106 -0.0024266508749942635 +2798 0.002134791957391764 0.000711119593745141 -0.0003675546341195692 +2799 -0.0006736686116792853 0.00046364765771458963 0.002157148834830957 +2800 0.0029636042359104274 -0.0004708081816242437 0.007971204759078743 +2801 -0.003004408561652283 -0.0009212859135870775 -0.00274278308298499 +2802 0.0028080334765354007 0.003579818116375347 0.0028785031119698177 +3753 0.0009107342324532966 -0.01150154067277793 0.002193852673258925 +3780 -0.0002374735891951862 -0.0018860197611502876 -0.005283211729531635 +3000 -0.01292248142696468 -2.9237856265688685e-05 0.0002759739239047854 +3766 0.0009771901438764884 -0.0011401827166916249 0.0067850381065539265 +2847 0.004750740627251172 0.005200769354011774 0.0013942019955953213 +3831 0.006217866006755026 -0.0028868020994971748 -0.009282685041070984 +3042 -0.0007598693878855092 0.002239616748220761 0.0018734841622954589 +2803 -0.0014159547735181582 -0.002838394105045408 0.004214191589932114 +2804 0.0012571613980086294 0.0006052257116483659 0.0032867211331158537 +2805 0.0032722644548722397 -0.002752135669466101 0.0017747613937169693 +2806 -0.0019408584627049635 0.004785866598092316 -0.000800351276741613 +2807 -2.167326997313192e-05 -0.00815774723419279 -0.004915869176237481 +2808 0.0012706908029906476 -0.00032011899868348805 0.0035075073282499316 +2814 0.004073349823196205 0.008658238513136664 0.006545067937998082 +3719 -0.000274381684263031 1.1364584620203557e-05 -0.00158234530468815 +3796 -0.009353065069084317 -0.001344659843384747 -0.000908500619971066 +3852 0.002518527172087462 0.005771016729442214 0.000874314904491765 +2813 0.0005157038876555182 0.0034224928151607792 -0.008228586455045563 +2812 0.00952805936211162 -0.001753179615761282 -0.006263574083306455 +2860 -0.004884551624947625 0.0057606950588706875 -0.003760725253550163 +2861 -0.00028703456949301246 0.0011443737126884275 -0.0048259428928687596 +3848 -0.003954340766434496 -0.006631782254563797 -0.00016058656300211918 +3001 -0.006881353849271949 0.00925146111160732 0.0004993819784169323 +2999 -0.008306108506670806 -0.0024477723459497293 -0.0031189851194928847 +3006 0.0020550729190349703 0.002667034222535163 0.005676560179306369 +3005 0.005282432619145783 0.0023929729445461693 0.004768286922937543 +2627 0.0019202004438978449 -0.0023568175467956103 -0.010792501837911916 +2809 -0.0019385645272406843 0.006200561797176322 -0.00673906655273976 +3697 -0.001981398558349151 0.0021872971630488114 -0.0019355453232754174 +2810 -0.005974922171836498 0.003114046377363387 -0.0009372271675385776 +3702 -0.0017748539824939502 0.0027473863401399293 -0.00582998345509639 +2811 0.0029831055642786726 0.0006372592358612983 0.01125577092392093 +2815 0.0012533740552200612 7.403806895960373e-05 -0.0002805118932791901 +2816 -0.0006507256024220522 0.007398167761124245 0.0018235707785989653 +2817 0.002209143798528283 -0.0026974743345954317 0.0010013877110387356 +2818 -4.38893824277686e-05 0.0009961896333994357 -0.004355576264041017 +2819 0.0015106013118587355 -0.002034688251995763 -0.001836178080062626 +2820 0.007403786110786963 -0.001126280781005618 -0.0010160038469462173 +3718 -0.0032022152656300488 -0.004548890261026983 -0.0044236537052105805 +3806 0.003355190793888296 0.008358962457781421 0.006306646837668258 +2774 -0.0049574649907342585 0.005931718262641068 0.0065943342485676355 +3725 0.0013831768548572974 0.0002543976705240577 0.00322096997739038 +3785 0.004375822003143061 -0.0026234794107833585 -0.0002434115671215361 +2821 -0.0037753471798495984 -0.000497698043388663 -0.004987457329280379 +2822 -0.0011122317177747673 -0.001971008244344506 -0.0016333676512045475 +2823 0.005493825970127745 -0.003467815500321288 -0.0015769742047094543 +2824 -0.0037068662088358636 -0.0018431652767792559 -0.002187916999213031 +2825 0.002020486052824778 0.00484915085093272 -0.0005786749352936758 +2826 -0.0033600136801134966 0.00037523954191611537 -0.0053395621558917795 +3765 -0.00904819504686641 -0.004973223241118646 -0.0032027800127816006 +3749 -0.0024283147937898117 0.005437481064339275 -0.005164662234245402 +3732 0.008068990022756217 0.0022932605157882815 -0.0013889772914291905 +2870 -0.0032032680840182797 0.002907158822734173 -0.004636468106643306 +2871 -0.005834366572212199 0.0016100955921071693 -0.005736268703647933 +2775 -0.0003756384011724632 0.0023710165075799474 0.008852751970310341 +2779 -0.003680420106931031 0.0015980563604401277 -0.005300153555017656 +2784 0.0023467515019078206 0.0013804444083876518 -0.005011547609851879 +2783 0.001851481184221117 0.002380796876626368 -0.006512089122720693 +3788 -0.0028169398600276503 0.001839947332168626 -0.0006665322890960182 +2787 -0.005403993343642237 -0.004744500635929256 1.995955847236703e-05 +2785 0.0013394203154665659 -0.0033355499798085023 -0.009097904767054788 +2786 -0.00448147673088705 -0.003863316436132984 8.338428498270072e-06 +2790 0.0014595568753052602 0.0029261561490599728 -0.0019741603231128147 +2827 0.0016981926444990096 0.004804588596997977 0.003673663241899912 +2828 -0.001931326705802977 0.001936757463912087 0.004137307645224561 +2829 -0.0035508777325933194 -0.000181306836605733 -0.0005723801119343444 +2830 -0.0022249836838795795 -0.0011717324108254893 0.0015053563723840134 +2831 0.0036585549992544705 0.0018854724221218481 0.003352966622221307 +2832 0.011049539234707128 0.0034190829848289965 0.0010884854872142368 +3782 -0.0011688876364916662 0.003059581949289051 0.0022128428049295545 +3023 -0.0006956497214712005 -0.0025732697606754367 0.004827307013483854 +2836 -0.003060023204288492 0.00010053368336340033 -0.0004018717332940997 +2837 -0.005935759971806144 0.0030075704526631034 0.002405949638182406 +3024 -0.0019091037171398472 -0.0014855117475020482 0.0035146992898754522 +1160 0.0021667662218381257 -0.0016551809012853944 -0.005881273274527032 +2644 0.0013415920663087172 -0.0006966842671767199 -0.0016844372094176744 +961 0.004346852115803489 -0.004237858702630826 -0.005276740000874914 +1161 0.0011422998717111029 -0.0004800798804689142 0.0022123077171411058 +1681 -8.844774161660422e-06 0.004524796072638958 0.0037935627163591065 +1159 0.004455099302451324 -0.0022695128588522302 -0.006324466652170913 +3733 -0.0025068341437579577 -0.0018417188799328605 0.0012598134494200127 +2833 -0.004189225990432899 0.0004961243601747605 -0.004789338447624927 +2834 4.546588511229984e-05 -8.975016913212344e-05 0.0035809246746479266 +2840 -8.702478146343919e-05 -0.007061798670316861 -0.00033506388211066633 +1155 -0.005422564038257231 0.007873298189056976 0.0013404238546255815 +3790 0.004991887880483492 -0.005681462013796788 -0.006567297029843979 +3841 -0.0059763673673425945 0.00011205452806127855 -0.002294292257224335 +1156 -0.005802849748063269 0.0007437041531121935 0.006258030682255406 +2841 -0.0006900219680669792 -0.00869078851744703 0.004184170349616405 +1154 0.0020447496602063603 0.006065802670726811 -0.0017318642482207762 +1153 0.0004888065409412963 0.00280228658700842 -0.0027155518795585754 +2413 0.0016286153164211598 -0.0038271225231906146 0.00012986983882825793 +3774 -0.002744879397878357 -0.0011887409640249098 0.0015226340552712174 +1170 0.0031254184089604237 0.0035685217337208114 -0.0006546272357856695 +2839 -0.0020690955618131285 -0.008760299416741132 -0.005154238469250214 +1164 0.0031873646620411574 -0.0024076605745232574 -0.0026255368175313585 +1163 0.0024952560433649414 0.0021348050887752207 -0.0031784524162669476 +2845 -0.005585728482686365 -0.0034416525148974505 0.0008835781774184367 +2846 0.0016240593919845984 0.0009092726582473422 0.000507477329907427 +2848 -0.0036433407658411168 0.0065698522745560916 0.0006516788950317687 +2849 0.0030942754828674974 0.0056083659511398 -0.004971351090035005 +2850 -0.0038979506954840916 0.0011390605326529735 0.00010491359728057393 +1165 0.004712836811076865 0.0025713358309689036 -0.001812470994082126 +1166 0.007399884898528035 0.004851731819991674 -0.004322812074311048 +3751 0.005502779734401494 -0.0023892817257929098 0.005192277452498436 +3814 0.001012122394764687 0.003707782049816036 -0.00411182638791743 +3858 -0.008077799835233952 0.004524586041638488 0.0052975538744813875 +2853 -0.0005287784878253771 -0.005185444633389435 0.0030237943556636134 +2851 -0.0015459077241148983 -0.0013554828035503672 -0.003362399499549213 +2852 -0.001356096671406487 -0.005241836134223961 0.0017805303232698948 +1162 -0.000473482035108041 0.00180111718857736 -0.0020850632951550803 +1167 -0.0027297679396070013 0.002582751863308385 0.0008261463282412 +1168 -0.0008025133653990688 0.00028930550287371734 -9.236366744821609e-05 +2668 -0.0014305084730753454 0.0038154192075078156 0.0013968001174146966 +2669 0.004005495397382215 -0.0005913629779075962 0.0034741735503720905 +2859 0.00014979224336544598 0.000653125191010201 -0.0049073401847168725 +2854 0.0032992090934622826 0.004093874461787211 0.0013126169906459626 +2661 0.000350858810400534 -0.003412724012391909 -5.926168953365431e-05 +2662 -0.006953939057854743 -0.0018509603964986566 -0.005336180569477812 +2667 0.003538840688806166 0.0021960134531117653 -0.0027827766897258895 +2666 0.0008475263281667429 -0.0019261940295393631 -0.0005295179528959297 +3838 0.005558941562471185 -0.004050175907897144 0.0011961276129940134 +2855 -0.0022567814740681418 0.0009581918615167826 0.0008081825343724115 +2856 5.043234588132636e-05 -0.002996220003574454 0.0016996007671114602 +2857 0.0048025365007434324 0.0016011798513661402 -0.004195696140089937 +2858 -0.0009406590959995035 0.004634950900813754 -0.009069588459109084 +3794 0.003263813672993557 0.0036981503881106073 0.008656089429480122 +3825 0.006007436830114525 0.013496601428756689 0.0010225110115174882 +3828 0.014971648632006387 -0.005409523214777758 0.0013091438098198965 +3839 -0.0033011829471411014 0.004047502564255227 0.006281166015107815 +2862 0.0009374840905904877 0.0019071742232714386 9.687628996764847e-05 +3865 0.007347954414997983 0.0011871782316559142 0.00037595942678548156 +3821 0.0009337143769881425 -0.0024964031472627496 0.0015046562892049612 +2863 -0.00012482734668276284 0.0016574384362967197 -0.006625529614491641 +2864 0.004126549140845691 -1.1290806749686551e-05 -0.007912389968934126 +2865 0.004111945277197284 0.0033080157215703626 -0.0020410788345122228 +2866 0.004523789346185369 0.002985109697700618 -0.0019098441738306406 +2867 0.0063795799016195965 -0.003294179104865073 -0.00048822593890882353 +2868 -0.004469792542713207 -0.010616458434828568 0.0013300668351351166 +1183 -0.0015107883220159414 0.0026854980305614736 -0.003224910567085749 +3707 0.0036134505633269084 0.0038729971819440033 0.0009399284261920741 +3757 -0.002757841594979942 -0.0077533289152747105 -0.005040585836651737 +3801 -0.0013828093400276079 -0.006300947073758313 -0.006479548931552853 +3781 0.0027403268968215285 0.0020319780754957904 0.00030229711913684257 +1184 2.8179568406334793e-05 0.0031772153324544717 -0.007362584605683866 +3694 0.0031780325763432417 0.00033703888664583093 0.005424328666520245 +1191 0.00715192200969218 0.007530716026065607 0.0023400040662871764 +1194 -0.0020667785512985377 -0.0009035894839564405 -0.0032718473074562974 +1157 -0.005824779638565645 -0.00020835950656402765 0.00233183701986237 +2869 3.9676425525268685e-05 -0.0023581199263201093 -0.0014538695082791189 +2872 -0.006016729193986012 -0.004404476668176572 -0.0014838530701842202 +2873 -0.0029790127876827446 -0.007640755503197615 0.005077915710572317 +2874 0.0059789123373840325 -0.006474551618602379 -0.006961144608703636 +1189 0.0003230351455416637 0.005120766122360509 0.00153417401700084 +1190 -0.00023784998488058385 -0.000791006722388936 0.005389156266305653 +3716 0.006569071187406505 -0.005810054229731825 -0.0038266553438673205 +3834 -0.0002403466855782266 -0.007235803767734774 -0.0009399261043920177 +1346 0.0001328545113253992 0.0010721937492794316 0.0142914245706219 +1193 -0.003347564733469285 -0.005281589879686088 -0.005181743053965741 +3868 -0.00112380269705692 0.0012774964821585973 -0.005178102317745576 +1007 -0.0029621815036094596 -0.0021129458609409784 -0.004656867049940471 +2915 0.0020589894124372872 -0.00022881524226521445 0.0009642339704762887 +2725 0.006603195033796212 0.0005869506210974476 0.0018028125917312014 +3722 -0.007282240407173848 -0.003357463798654897 -0.0014238813013913332 +2838 -0.005074179716881552 -0.004346900664687233 -0.0054528037757415335 +2875 -0.003327829697113565 -0.0007902228155852543 -0.0063254826206066385 +2876 -0.004285815726145607 -0.002626527842166928 0.0018434082469305365 +2877 0.002320767053371047 -0.0025085941101506857 -0.0036138291917827466 +2878 0.001772357343296058 0.0004805242822413861 -0.007989363190528441 +2879 -0.00027659278109917865 0.0035776367351794455 -0.0022379191860260345 +2880 -0.004795298773075652 0.006032203800724943 -0.001703893537893793 +3846 -0.0014392416147217995 -0.0038859289331439947 0.0032673469879994626 +3859 0.0023016993984372796 0.0027248785669810598 -0.0012875245459025454 +3072 0.0011080373730612274 0.005874407931497166 -9.287122818949128e-05 +1200 -0.002994721013181646 -0.004088361729916722 0.0007231918585071001 +1199 -0.0015224614313433 -0.0006671191621087771 -0.0034177578265718886 +1594 -0.012079430546621037 0.0020406288624255117 0.0015282879493200782 +2940 -0.0022658012479476503 -0.00012624497706651065 0.0015095128482677958 +2937 -0.002242445841747938 0.002004055684130838 0.004666496696639716 +2936 -0.0067257486579497955 0.011430775088641277 0.010729130946712805 +2935 -0.00021109737645524386 0.006147964568419199 0.006408053844952841 +1596 -0.007256016681101715 -0.003721123776536396 0.007232829971342807 +3772 -0.0018295725756608953 -0.004979130128049303 -0.0028172344717634712 +3795 0.0029748523929933423 0.005568302155434544 -0.005908613226079255 +3817 -0.0027662710992521207 0.003856318935063087 -0.0014527291467381 +2355 -0.002354075540254529 -0.0016675675812941279 0.00033535065002856726 +1712 -0.0011850258513537494 0.009815740641198629 -0.0030507903802158677 +1595 -0.00047361739237106073 0.002363377867591139 0.004602754450448276 +1158 -0.0014106627871208887 -0.0020973737947795634 0.00041551202661231667 +1605 -8.066740801599415e-05 -0.0013424410438687244 -0.0030645495493554675 +1602 0.0024602500907554836 5.054688236820504e-05 0.0023045538291899133 +1543 -0.007669620055608338 0.0009235429923996082 -0.005093644327366447 +3686 2.553663486127285e-05 -0.00743785200590277 -0.000771570560132905 +2894 -0.0005270695396231551 0.004599655833528949 -0.0013986708634918666 +2949 -0.0022341039137360004 0.0020919789801360418 0.0017861426839643354 +2950 0.00021336247298560653 -0.0035402116246539385 0.0005857765740855489 +3578 -0.007958281691085766 -0.003964254702728626 0.007297581964336884 +2946 0.0036598439095329024 0.002551953667233114 -0.0015229196477995334 +2945 -0.0070752410245375945 -0.004787052079833057 -0.0015056627957760597 +2944 -0.004687753948538934 0.003502987432129549 -0.012436911363272041 +2943 -0.0007911592968139864 -0.0036528664506943987 -0.006592328783124334 +2942 -0.0042426917229746106 -0.0001719940723535966 -0.0016456493843250983 +2941 -0.001032876193109918 0.0013640757535873635 -0.0011386153536120877 +2898 -0.003210973891808062 -7.75384557155416e-05 0.011770003282275905 +2893 -0.003213344321350409 0.004191285594203531 -0.006554888616699142 +2951 0.002292014202336339 -2.8791569542446814e-05 -0.0016814386231284797 +3847 -0.005426153555728729 -0.006070298994080094 -0.0009306848472817331 +3715 -0.00319910646881051 0.003432316652827771 -0.0002836523228379966 +2895 -0.004522240641799287 0.007210300110578705 0.00119043147049159 +1601 0.0013794711679308179 0.004340290198876106 -0.0002800489924165411 +3573 -0.005274589404434194 -0.0016521538289728395 0.0008587466547724027 +1558 0.00032330683790110975 2.684734860562486e-05 0.0007142906910007202 +1610 0.0019907256540495056 0.004363785502957435 -0.00939011828847697 +2447 -0.002300679637618053 -0.0011725388202664378 0.0013977498388011418 +2948 -0.0035350417547484973 0.0045200880641218764 0.007555775157134215 +3792 0.003925967747053622 -0.004026628252969981 0.008752361237846949 +2952 -2.644993772833639e-05 0.0001105869668432353 0.006936593573506885 +2947 -7.696163476016145e-05 0.003740412962786674 0.004108491986704721 +2900 0.004308800403997425 0.002476556810215665 0.007911447319843383 +1555 -0.002490345126803717 0.0003512491983568309 0.004022550934675327 +1560 0.002091726772211071 0.0031710653539647462 0.0035316192490804535 +1603 -0.0006369211855955067 -0.003101624398676824 0.0026736389498875413 +2901 0.000890708161363393 -0.004582823317157708 0.00453266589787111 +1608 0.0019339919855093628 -0.0040738407444571596 0.002742459975765291 +1611 -0.0032969237294089002 0.0006392771340722058 0.004359541858191347 +3864 2.006546976083639e-06 0.002607295835030824 -0.006574013138268116 +1556 0.0001588416206564769 -0.002100418839674488 0.0054563626755132 +3791 0.0011553060652499014 0.005983217866542445 -0.000541355465987731 +3824 -0.0037694641932929664 0.0007977621834278213 0.004836402482780036 +1566 -0.0004912013822225385 -0.0014787611124489376 -0.0023488239856898087 +1569 0.0023615188390080522 0.005074361785176852 4.307611000757146e-06 +2957 -0.001764206999495237 0.0008261237611408961 0.0011804370715159044 +2956 0.012311728167172251 0.003634697447547096 -0.011257016026822313 +2955 0.005986598312978212 0.0009975683789655656 -0.0046553590209567125 +2964 0.0006422041247135489 -0.0018653205232034313 -0.0034963974425518524 +2963 0.0026299949855238427 -0.004854457240651598 -0.0054908057544468935 +2962 0.0025088333056317116 0.0006725136368586405 -0.006084720728556372 +2958 -0.0063565069938054455 0.00529578997991661 0.0009683594849433216 +2954 0.00020988055752779652 0.003257584419535579 0.00030633758002210175 +2953 -0.005323754738017867 0.002752808794935193 0.008232626042025622 +3775 0.0010973611179656997 -0.002371532193266983 -0.0023206784985981017 +3813 0.0005408900947963854 -0.0013466807898992851 -0.0033759746769859134 +3845 0.005879553995647426 -0.00721683247598195 0.004220447416057948 +1570 -0.00031549254751879366 0.0043412737991950995 0.005369323562062337 +1565 -0.010991124322628727 -0.0017919932364495064 -0.00025980228677379373 +1567 -0.009212771538729125 -0.0029399092067554033 -0.0018064344252707572 +3355 -0.0026875755858938124 -0.003490099427576247 -0.0010372010981066287 +1568 0.004633545920645305 0.0044659447655725805 0.006421795951363928 +2886 0.0030134316806028094 0.003919807857390956 -0.000855178407780295 +1572 -0.0022049402667164764 0.006600124086734199 -0.002147499697299456 +3742 0.004029745020859356 0.003029506771987114 -0.002830742975268833 +1571 0.005195951147727109 0.004466487336267082 0.0010978594924074736 +2970 0.006327580605841878 0.0033770483863173597 -0.0019178233080222994 +2969 0.00015042278144679144 -0.00195272313159687 0.0014782642032856016 +2968 0.003454362329358544 -0.0024962958648059655 0.0009900889785671393 +2967 0.0014399386251071377 0.0017168711044507356 0.0009390614548381053 +2966 0.0034637871532021192 -0.0038047274481927034 0.0002693352403141273 +2965 0.0037885134824207282 -0.004115887733285039 -0.0006728873363395512 +3857 0.011389082397238228 0.005377569930648388 0.004688174333684436 +3861 0.0004611009190578015 0.0038089660333028206 -0.0010735868774303253 +2493 0.00752788215013667 0.0019497245444463093 -0.0016233824691623674 +2974 0.0028879586856359694 0.0035562232665904176 0.0012698424474714063 +2923 -0.0010714512664711175 -0.0017577583717392118 -0.002222623650799042 +1624 0.0005928934921617688 -0.0036957994339425083 -0.0019783158731595677 +1623 0.0011138970426324028 -0.006021552394253572 0.0033296862346328315 +2924 0.0007171222157562136 0.0018294491738662295 0.0017278225448730175 +2885 0.003927015576351695 0.003559602598276819 0.00019171436343409456 +1674 0.0041812420836576355 -0.0038263936199286887 0.0034806568723521236 +3819 0.008673774875608513 -0.0006141724744141178 -0.0047973941827514415 +2972 -0.0006789552490608279 -0.0038392617265090227 -0.0023644276050296805 +2971 -0.0009381973607021201 -0.001628950907496899 0.0009776743734013491 +3843 -0.004452718409635091 -0.00018299141316014596 0.006240992601913724 +983 0.002856048795486094 0.0003998687014463664 0.0037894963929677138 +2973 0.0035638934131805673 -0.0015634475530317048 0.00176711547000821 +2930 0.0006878468729229471 0.00305274388357004 0.0032246784577527033 +2929 -0.0029386668451111216 -0.002395488112175752 0.00043849900768397744 +2928 0.0006812865737895748 -0.00238202862002142 0.0015529333636042071 +2927 -0.0006386067334890114 -0.0016972613000939055 0.00449937332168396 +1538 -0.005627932506076253 0.0019349199265163582 -0.005618959085684693 +3701 -0.00036930486099287025 -0.00650161155291767 0.00169085684561781 +3827 -0.0053873535362587615 0.008827275292087633 -0.004317781321402153 +2926 -0.0025033758272928405 -0.0032146131753729426 0.0038689559358737213 +2925 -0.0016868489149071545 0.0035458024201588173 0.0029182640973632384 +2988 -0.0023434774289622265 0.0010292889638657615 0.007263406794955067 +2987 -0.0015882031480487116 -0.001710400427447437 -0.0013931866152251974 +3699 0.0002920103739130863 -0.0045921239278257165 0.0016649001543717211 +2986 0.010173222372304362 0.006459202085339696 -0.002142672894704703 +2985 0.004518636316768437 0.0035953171969846814 0.001097975061913118 +2984 0.005768449630543495 0.0037191193595403084 -0.0007669093477153716 +2983 0.0016733559251957608 0.006316903045907398 -0.0024791635193584776 +2982 0.004112343947944592 -0.0034318987194321884 0.0009281177997358918 +1639 -0.0007684374747952682 -0.002338534379846206 -0.0009472552572508367 +1640 0.002543979645188445 0.005182528691606572 -0.004924054661776911 +2497 0.008203966445763421 0.0028031714081658225 -0.005014964781566556 +2697 -0.0008880686392525446 -0.0030079851521136506 -0.0032597385099669006 +3034 0.0005250819114676206 -0.0023366819135068016 0.0038833117311132892 +3033 0.002412705162966243 0.004560106343408596 -0.0013867972247831983 +2978 -0.0010858842438715068 -0.005867901982306259 0.00425763731944517 +2977 -0.0011941203073080027 -0.0018021865747716713 -0.000447141542834374 +3032 0.0051277564972564485 -0.00019493440931150357 -0.003129788205600871 +3726 0.0016079720974617184 -0.0002006261697190748 0.004333923267887165 +3771 -0.007024164056311604 0.0044712070268417585 0.001716999319603115 +2994 0.005532992420056303 -0.00027884663706666545 -0.0020938120527257335 +2993 -0.0071586872881581245 0.0020015099921775947 0.0006483625817010107 +2992 -0.0034986866143542107 0.00482534385982368 0.002277286247636364 +2991 0.0007681840250732916 -0.012258498418124186 0.008783709660374102 +2990 -0.0037454926768280897 0.007457151603293993 -0.008509381474629834 +2989 0.004070088399574425 0.0029343237048865324 -0.0026573311508072154 +1666 0.0031571786738463104 -0.002166835801059993 0.0027403259283139605 +3800 -0.004390179115403551 -0.002654173633709759 -0.0037714839160737815 +2996 0.0029641355407663203 0.004092024963757068 -0.001755244501993949 +2995 0.00037049279258179684 0.0006886214641969679 -0.0001817000570932967 +3755 -0.0039942471365965425 0.0012932695843658052 -0.002229326096326362 +3833 0.0041178369390612035 -0.003413920852292919 0.004152181567235542 +3041 0.0022051736270265357 -0.0039112536757836 0.002338975136394235 +1645 0.0038880973277230367 0.0026280193114401316 0.006398758324191479 +1606 -0.0035848034513901277 0.0008619705085827469 -0.0041165468336036145 +3003 -0.0037002318323584014 1.2239877454994008e-05 -0.0028058186995925495 +1607 -0.0042866553062372295 0.0008691207379502338 0.0011889996533471588 +1654 -0.0012118742200820619 -0.005250917662151563 0.0007857600232346737 +1188 -0.006834187606909603 0.004756892331959582 -0.001544624016445891 +3002 -0.0013624144618511911 0.0007636947509477263 -0.002493468774137427 +2998 -0.006426703302443001 -0.0024018941128986413 -0.0011757575744726753 +2997 -0.0007574935307733976 0.002421066192549012 -0.0003065716588060996 +3768 0.009610686309804642 -0.0014122502479657398 -0.006759197693264009 +3779 0.004384325249485348 -0.0026680446993004136 0.006481791746818361 +3812 0.001598069464350629 0.0016109507335018475 0.009328621782225776 +3004 0.005017836402676081 0.002740709530306029 -0.0035071217942617737 +3823 0.006590120558335426 0.0034858466024990957 -0.0045239152240415265 +3698 -0.01063400688125842 0.0005221985983570742 -0.003773969196966162 +1655 -0.0035715368690960774 -0.005092922136085264 -0.0014774110681000398 +2959 0.005321477061431782 -0.005883350522891494 -0.0009566870148276038 +1617 0.004047366436315419 -0.002638382755507102 -0.005209851750353986 +1618 0.0010203469013757313 -0.005148634039622836 -0.001768422101517214 +3850 -0.0041784996250050195 -0.001038860904325107 -0.002803941635354014 +2961 0.0021608348678062305 -0.0001684135281462244 -0.002428584849530906 +2960 0.002787907347053858 -0.001425958271630959 0.003267958991133489 +3872 0.004999432730469843 0.0023096616947782577 -0.003187865125778389 +1664 0.006648360655877314 -0.0031805645024134475 -0.0026188497522235833 +3008 -0.0028425048118435256 -0.007724909538895546 0.0007869543332085107 +3007 -0.002909535560049081 -0.007724066948050159 0.007342278105074434 +3783 -0.005080249314462028 0.00023492895193041784 0.0012946108941428497 +3789 7.518893323598607e-05 -0.004010839328289947 0.0037785874484175396 +3866 -0.0032555172604357275 0.0036471188522268745 -0.0004033580688648263 +3012 -0.007495017569345562 -0.0034160844804259145 0.004376834550953064 +1665 -0.0010725247681805201 -0.005542437455763804 0.0009478971066497117 +1615 0.0026354980242506753 -0.006377846737364437 -0.0015871633540780826 +1620 0.0005798838333178209 -0.0026672257708975373 0.008555071557420819 +1619 0.0010854824923323438 -0.0010420289789083198 -0.003696508628814842 +3009 0.001299207840475546 -0.004893104205129994 -0.0013220972561531928 +3017 -0.0012417158601199527 -0.007303696841195106 -0.004065356628132107 +1646 0.003644873821966301 -0.007197945933698467 0.0034189005898480063 +3011 0.0003444912262222501 0.005072294045332055 -0.00126863225289344 +3010 0.00027574980669058216 0.002286057014850083 -0.0020786944532153167 +3018 0.002679146657611691 -0.004244254570398096 -0.0012789432207934584 +3016 -0.004401874705809125 -0.003075752216397248 0.0016279005536939237 +3015 0.0006490120351407823 -0.004708151955588521 -0.004318026187367239 +3014 0.0012678835369487273 -0.002101828539450675 -0.0020035477145823933 +3013 0.002918504858457038 -0.004001083064768535 -0.00525785582824571 +1669 0.0036496977388251126 -0.0032639053076342645 -0.0017801703252298487 +3849 -0.0007597428900041403 -0.00863040474503448 0.003783046052707667 +3830 0.007141167875139819 -0.004069359183960549 -0.0020247307199722543 +3760 -0.0014028956756542885 -0.002230395712388382 -0.011516934513963444 +1682 0.0009325014743413944 0.001999647644693114 -0.0006242823013464275 +3022 -0.009164056482907749 0.004836096546287502 -0.0020637999571762665 +2933 0.00362605146584276 -0.0006943768730711006 -0.0009425806667711277 +2932 0.0037888677088306426 0.0014107788436537158 -0.0016081639940271914 +2931 -0.005352289099096616 0.0034610308177951527 0.0027320201889777843 +3619 0.004608542239422782 0.004388794872690121 -0.004108481326149086 +2981 0.001156391994854789 0.0023195075182840075 -0.0011557038022806958 +2980 0.00027071727267407165 0.005836995482804671 0.001601156816309714 +3810 0.004434066503318552 0.009237725026545705 -0.0035529675398818824 +3067 -0.0051510842931889785 0.006682852784201073 0.004865885781931819 +3793 -0.008139709455961503 0.005180207935139122 0.000620816047007868 +3754 0.004467657679684102 0.0031469891773859937 -0.0008515092291227122 +3021 -0.0054919100699343595 0.004231109240255823 -0.002300127425610257 +3020 -0.004905812937413618 0.0016611738803021972 -0.00478445014557132 +3019 0.005857648579406444 -6.442358434805168e-05 0.003854170496013148 +2979 0.0014422183692699765 0.0012163185780831984 -0.0010906786421878765 +3700 0.0055628497041560546 0.007958084808977308 0.004889281026088722 +3815 0.005148451188351573 0.004195079716066379 4.284079352617126e-05 +3068 0.0012331083688054767 0.003800410049699755 0.0013696310421613565 +3028 -0.0026974041878929365 0.004865809220832617 -0.002879069096186263 +1683 -0.0021326604262913926 -0.003647728092243554 -0.0014377337776346213 +1348 -0.0006901858139476175 -0.012385858681325222 -0.0007915787583115508 +3708 -0.0038184881398693957 0.0053777478684897476 0.001548490800633748 +3689 0.007475740240623343 0.008792111516765948 0.0007638560961454313 +3035 6.0454385034474974e-05 6.799794188572093e-05 0.001740042317095415 +1347 0.009765872941546131 0.010174138853873482 0.0013737759008198417 +1662 0.0050519232596370955 0.009581260191464831 0.00802924200617039 +3844 -0.0027360008290586266 -0.0030549049983222025 -0.003081908076078134 +1688 -0.003769981869238149 -0.004924202897269013 -0.004983604060269215 +1687 0.0035935561392337846 0.001703044629982388 -0.008807071686765523 +3036 -0.002437589486434804 0.000978992498595448 -0.0026027067445657196 +3031 -0.0026163392252466504 -0.000574387427553611 -0.003949315529767121 +3029 -0.0001645616572436231 0.0027016824461088117 0.0028747889143631673 +1353 0.0017176074186796607 0.005363049994784664 -0.002599249393169568 +1691 -0.00042934543825700363 -0.003580029006187897 0.00230698898875322 +1692 0.0003179652011786376 0.008045550270059921 0.0038565759712571217 +3695 -0.001811067617292026 -0.0027737520261012535 -0.0009526514951783845 +1352 -0.0013297978183598683 -0.0006494277886777208 -0.000527840983400445 +974 0.0030078581035814663 -0.004692988322206573 0.0021721650057180677 +3040 -0.0014843667692809007 -0.0028185171737265015 -0.000977171323468938 +3039 0.0015138525182099264 -0.006377995758912525 -0.0012304650650367785 +1359 0.003291047961482581 0.0033177840640890455 0.006033683721251847 +1694 -0.004006944751250735 -0.000963609437282222 -0.0015502178253447101 +1689 -0.0025440368168309154 -0.003572428504180876 0.003030775574641603 +1695 -0.010352780447166874 0.002805095265287604 0.004107624600504731 +1690 -0.003948056610046883 -0.001984748574898791 -0.0007782138545562507 +3735 -0.001272135393958678 0.004688783773131448 -0.00548789881087841 +3822 -0.002026664014930195 0.0036964915550192494 -0.00969577736237906 +3038 -0.00502021069535626 -0.005126377072264185 -4.1482955564582885e-05 +3037 -0.00407969170933286 0.0016297871398141814 -0.0035834732906037466 +1693 0.001534487880551637 0.00045409436526979395 0.0005746353617779795 +1697 -0.0077941921961796265 0.001329750328920151 -0.0012885948287646388 +1698 0.00030575070553781326 -0.0033283756720781875 0.00145268532422122 +3747 -0.0010571129220010122 0.0020400062142463178 -0.0006851254652590878 +3770 -0.003221955425240052 -0.010045370826284749 -0.0015803010873632847 +3816 0.0015920051285270443 -0.0026020120484988255 -0.0034130584702755195 +1696 0.0003918010809119403 0.0002969785546194676 -0.004930223262641577 +3738 0.010041248309696793 -0.003871668205178996 -0.0019475208952161505 +3043 0.005043415277210466 0.007950929137069499 -0.007256414649866993 +3049 0.005482891252939918 0.0036017608603560215 0.001554590886460039 +3048 0.0018831948397833656 0.00972591723907237 0.0031542903756446726 +3047 -0.0005859733227618854 0.0026502658309434726 -0.0009997140525464738 +3046 0.003331014127192344 -0.004194393636555822 0.003310221535120495 +3045 -0.0003961076720775664 -0.001189218741970836 -0.0070332226205768 +3044 0.0026058345077122256 0.0005054114213777102 -0.006531102783290486 +1365 0.007701417776977049 -0.005036914044010291 -0.0050934448745284765 +1364 0.006107434529155879 0.0005324261301887327 -0.005925686177785409 +3709 0.005668465411320722 0.0006577937024002293 -0.0007015353813013317 +3869 0.004306094583759192 0.0006272786651793583 -0.001654936183312845 +3054 -0.004459195259123702 -0.0005437058503866999 0.00487547362611172 +3053 0.0006467481499363373 0.0009534433124684227 0.005728523703436195 +1706 -0.002971950751166132 0.0058775939458966045 0.0018804268308476421 +1350 0.0032659985217053334 -0.004829695904685555 -0.001350388295603392 +1374 0.005317586848566642 0.0010136815052591355 -0.0035308339992096796 +1609 -0.0005489490733892638 0.001227238201395819 -0.003101571151057227 +1349 0.002548237877571727 0.0017855597226134167 0.011546159030780585 +1351 -0.003194507164682172 0.0018852237716686627 -0.004844281320332193 +806 0.0004357392917049361 0.0035899367331629346 0.003820235601090309 +3837 0.0018528962932602474 -0.009958399666307238 -0.001091362020929248 +1715 0.00774661454903921 -0.006637055837788504 -0.006111223085111637 +1641 0.0014019718894644187 0.0021025170030575177 -0.009719854803474304 +3050 0.0027982587842429974 0.0010551744413816525 -0.0027587890721041714 +3853 -0.0064879388929540895 0.008241933702070272 -0.004379354278826048 +1369 -0.0012396651118388817 -0.00226433344697986 0.0007012863767471588 +3060 -0.0037582489515992556 0.0013920056554189563 0.004302666454885187 +3059 -0.001970385671919406 0.0026847317065524195 0.00039765252603835103 +3058 -0.002875318079632514 0.0010950174244104278 -0.0029404533817200596 +3057 -0.00019796597184536659 0.0030899412388788916 -0.0017745017726153265 +3056 -0.0007195245230055897 0.0004384591144877323 0.0018235741253772387 +3055 0.0013582466647662447 -0.004660057218680595 0.0049075922435597 +3052 -0.004505203505591883 -0.0004259450835517015 0.005782795552016911 +3051 -0.0025633608083375985 -0.0031461389225159527 -0.005735734501935304 +1371 6.346839928748435e-05 -0.004113174017375221 0.0012279402765474018 +1370 -0.001119013551685631 -0.002859438487002105 -0.003894259217787757 +1711 -0.005400321620236326 0.0007975031038229862 0.000968203190785753 +1716 -0.0033326474959344166 0.004852637167152762 -0.0035942199671688472 +47 -0.003732833194663478 0.005729830935365453 0.00020227507971891034 +1377 0.004116510109210533 0.002776700357086929 -0.0032166820208529606 +3769 -0.007873707023234325 -0.00041450678543156444 0.0035409902251295213 +1720 0.0011105765560059455 -0.0038839260477228706 0.0019622483252441825 +1719 0.0003718319636638462 0.001128532146110048 -0.0004839699630933722 +775 -0.00026035077617939415 -0.0004162602323881052 -0.0017337419028457316 +2312 0.005967621501738313 0.005686902548173611 -0.005408569664973511 +1382 0.0004032756971125414 -0.0035673629147361056 0.007938085592686925 +1381 -0.003904010611417326 0.0007782130117605111 0.007382480066485634 +1383 -0.003170170806773889 0.003922836703298618 0.0043618161079096345 +3066 0.0045042106372918545 -0.009032803146696623 -0.001435700802325408 +3065 -0.0014543774860285882 -0.008338894624310601 0.0007921913631340848 +3064 0.00094776797378646 -0.002106155810520639 0.002074535422385938 +3063 -0.004872338482865468 -7.525434197564998e-05 0.001894673943005926 +3062 -0.007764770416213637 0.00035543429039083265 0.0015497928095128553 +3061 -0.0006823147219018286 -0.006998971150571402 0.0026898900852490473 +1386 0.0009533048819726316 -0.0003815959271617046 0.0019286038236530133 +1385 0.00016704908597988291 0.004369006813792316 0.005067821047638937 +1384 0.0017533479818138112 0.0037993637189219784 0.00817122050278695 +1003 -0.0010645634685356126 -0.005060227784300629 -0.00011181119268741514 +1718 -0.00510903101028501 -0.005215275960249113 0.0008694261443756619 +48 -0.003372572950585551 -0.0015196920062178227 0.0005218867554938487 +3026 0.0011406876888357474 0.006036881955311742 -0.006308468900926552 +3862 -0.0013155809096597193 -0.0002934393992620605 -0.0007918021303141434 +3069 0.00770201216898078 -0.001541497931829632 -0.0008582080318307972 +3070 0.00025919425441227643 0.0030704559945749126 -0.0020071843288406153 +3761 0.0017656749252738372 -0.003161535858114649 -0.0013386760967005074 +3727 -0.0019195848824786145 -0.0013983357117322546 -0.0010829424765747833 +3027 -0.005856939194514377 -0.0006297358114474645 0.0054651677575726035 +3030 0.0020923899908826173 0.0019158162944553892 0.004398415226393657 +3767 0.000625902857802969 -0.0041658408970507805 0.0017690893003381894 +3025 0.001916759022251055 0.0013133727996988906 -0.0006265861276618848 +805 -0.006287261413548436 -0.0014739113615672378 -0.002771120967003516 +2883 0.0034038605644399205 0.002776788752875872 0.003197184450364323 +994 0.0022496843504824964 -0.004056480681316537 -5.143825949008498e-05 +812 -0.0027893912048952666 -0.002019474007745977 0.0011298680907008128 +1564 -0.0005949677468836222 0.0013559101417520774 -0.0034944325100008922 +2463 0.0014204965513329912 0.006679581665681142 0.006247753945878244 +2374 -0.005175186672105957 0.004094189632478132 0.003460252481588267 diff --git a/lib/kokkos/README.md b/lib/kokkos/README.md index a08d238e5d..f820b7be10 100644 --- a/lib/kokkos/README.md +++ b/lib/kokkos/README.md @@ -18,7 +18,7 @@ profiling and debugging tools (https://github.com/kokkos/kokkos-tools). A programming guide can be found on the Wiki, the API reference is under development. -For questions find us on Slack: https://kokkosteam.slack.com or open a github issue. +For questions find us on Slack: https://kokkosteam.slack.com or open a GitHub issue. For non-public questions send an email to crtrott(at)sandia.gov @@ -44,7 +44,7 @@ To learn more about Kokkos consider watching one of our presentations: We are open and try to encourage contributions from external developers. To do so please first open an issue describing the contribution and then issue a pull request against the develop branch. For larger features it may be good -to get guidance from the core development team first through the github issue. +to get guidance from the core development team first through the GitHub issue. Note that Kokkos Core is licensed under standard 3-clause BSD terms of use. Which means contributing to Kokkos allows anyone else to use your contributions diff --git a/lib/quip/README b/lib/quip/README index e6cc3903bd..5e737db11d 100644 --- a/lib/quip/README +++ b/lib/quip/README @@ -17,7 +17,7 @@ Building LAMMPS with QUIP support: 1) Building QUIP 1.1) Obtaining QUIP -The most current release of QUIP can be obtained from github: +The most current release of QUIP can be obtained from GitHub: $ git clone https://github.com/libAtoms/QUIP.git QUIP diff --git a/lib/scafacos/README b/lib/scafacos/README index 86335d9f98..c8181ac7ae 100644 --- a/lib/scafacos/README +++ b/lib/scafacos/README @@ -3,7 +3,7 @@ is required to use the KSPACE scafacos and its kspace_style scafacos command in a LAMMPS input script. The ScaFaCoS library is available at http://scafacos.de or -on github at https://github.com/scafacos, the library was +on GitHub at https://github.com/scafacos, the library was developed by a consortium of different universities in Germany (Bonn, Chemnitz, Stuttgart, Wuppertal) and the Research Centre Juelich (Juelich Supercomputing Centre). diff --git a/src/CLASS2/pair_lj_class2.cpp b/src/CLASS2/pair_lj_class2.cpp index 79e0c02fd7..3727b17493 100644 --- a/src/CLASS2/pair_lj_class2.cpp +++ b/src/CLASS2/pair_lj_class2.cpp @@ -35,7 +35,7 @@ PairLJClass2::PairLJClass2(LAMMPS *lmp) : Pair(lmp) { respa_enable = 1; writedata = 1; - centroidstressflag = 1; + centroidstressflag = CENTROID_SAME; } /* ---------------------------------------------------------------------- */ diff --git a/src/CLASS2/pair_lj_class2_coul_cut.cpp b/src/CLASS2/pair_lj_class2_coul_cut.cpp index c27dd0aee3..a767b70e82 100644 --- a/src/CLASS2/pair_lj_class2_coul_cut.cpp +++ b/src/CLASS2/pair_lj_class2_coul_cut.cpp @@ -33,7 +33,7 @@ using namespace MathConst; PairLJClass2CoulCut::PairLJClass2CoulCut(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - centroidstressflag = 1; + centroidstressflag = CENTROID_SAME; } /* ---------------------------------------------------------------------- */ diff --git a/src/Depend.sh b/src/Depend.sh index a6351e7b13..e629ca9197 100755 --- a/src/Depend.sh +++ b/src/Depend.sh @@ -107,6 +107,7 @@ if (test $1 = "PERI") then fi if (test $1 = "RIGID") then + depend KOKKOS depend USER-OMP depend USER-SDPD fi diff --git a/src/GRANULAR/pair_gran_hooke_history.cpp b/src/GRANULAR/pair_gran_hooke_history.cpp index 9d775c7f5b..7b7586d355 100644 --- a/src/GRANULAR/pair_gran_hooke_history.cpp +++ b/src/GRANULAR/pair_gran_hooke_history.cpp @@ -34,7 +34,6 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -43,6 +42,7 @@ PairGranHookeHistory::PairGranHookeHistory(LAMMPS *lmp) : Pair(lmp) { single_enable = 1; no_virial_fdotr_compute = 1; + centroidstressflag = CENTROID_NOTAVAIL; history = 1; size_history = 3; diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index 270234821c..fe88d0755f 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -66,6 +66,7 @@ PairGranular::PairGranular(LAMMPS *lmp) : Pair(lmp) { single_enable = 1; no_virial_fdotr_compute = 1; + centroidstressflag = CENTROID_NOTAVAIL; single_extra = 12; svector = new double[single_extra]; @@ -1102,15 +1103,8 @@ void PairGranular::init_style() // this is so its order in the fix list is preserved if (use_history && fix_history == nullptr) { - char dnumstr[16]; - sprintf(dnumstr,"%d",size_history); - char **fixarg = new char*[4]; - fixarg[0] = (char *) "NEIGH_HISTORY_GRANULAR"; - fixarg[1] = (char *) "all"; - fixarg[2] = (char *) "NEIGH_HISTORY"; - fixarg[3] = dnumstr; - modify->replace_fix("NEIGH_HISTORY_GRANULAR_DUMMY",4,fixarg,1); - delete [] fixarg; + modify->replace_fix("NEIGH_HISTORY_GRANULAR_DUMMY","NEIGH_HISTORY_GRANULAR" + " all NEIGH_HISTORY " + std::to_string(size_history),1); int ifix = modify->find_fix("NEIGH_HISTORY_GRANULAR"); fix_history = (FixNeighHistory *) modify->fix[ifix]; fix_history->pair = this; @@ -1405,11 +1399,15 @@ double PairGranular::single(int i, int j, int itype, int jtype, int *jlist; double *history,*allhistory; + int nall = atom->nlocal + atom->nghost; + if ((i >= nall) || (j >= nall)) + error->all(FLERR,"Not enough atoms for pair granular single function"); + double *radius = atom->radius; radi = radius[i]; radj = radius[j]; radsum = radi + radj; - Reff = radi*radj/radsum; + Reff = (radsum > 0.0) ? radi*radj/radsum : 0.0; bool touchflag; E = normal_coeffs[itype][jtype][0]; @@ -1536,6 +1534,8 @@ double PairGranular::single(int i, int j, int itype, int jtype, jlist = list->firstneigh[i]; if (use_history) { + if ((fix_history == nullptr) || (fix_history->firstvalue == nullptr)) + error->one(FLERR,"Pair granular single computation needs history"); allhistory = fix_history->firstvalue[i]; for (int jj = 0; jj < jnum; jj++) { neighprev++; diff --git a/src/KIM/kim_interactions.cpp b/src/KIM/kim_interactions.cpp index 54e1184416..7eb0289207 100644 --- a/src/KIM/kim_interactions.cpp +++ b/src/KIM/kim_interactions.cpp @@ -185,6 +185,9 @@ void KimInteractions::do_setup(int narg, char **arg) KIM_SimulatorModel_GetSimulatorFieldMetadata( simulatorModel,i,&sim_lines,&sim_field); if (0 == strcmp(sim_field,"model-defn")) { + if (domain->periodicity[0]&&domain->periodicity[1]&&domain->periodicity[2]) input->one("variable kim_periodic equal 1"); + else if (domain->periodicity[0]&&domain->periodicity[1]&&!domain->periodicity[2]) input->one("variable kim_periodic equal 2"); + else input->one("variable kim_periodic equal 0"); sim_model_idx = i; for (int j=0; j < sim_lines; ++j) { KIM_SimulatorModel_GetSimulatorFieldLine( @@ -276,7 +279,6 @@ void KimInteractions::KIM_SET_TYPE_PARAMETERS(const std::string &input_line) con MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); - ptr = line; nocomment = line[0] != '#'; if(nocomment) { @@ -286,7 +288,7 @@ void KimInteractions::KIM_SET_TYPE_PARAMETERS(const std::string &input_line) con for (int ib = ia; ib < atom->ntypes; ++ib) if (((species[ia] == words[0]) && (species[ib] == words[1])) || ((species[ib] == words[0]) && (species[ia] == words[1]))) - input->one(fmt::format("pair_coeff {} {} {}",ia+1,ib+1,words[2])); + input->one(fmt::format("pair_coeff {} {} {}",ia+1,ib+1,fmt::join(words.begin()+2,words.end()," "))); } } else if (key == "charge") { for (int ia = 0; ia < atom->ntypes; ++ia) diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index 9f9f2c83a9..82dae0ded8 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -241,7 +241,7 @@ void PairKIM::compute(int eflag, int vflag) comm->reverse_comm_pair(this); } - if ((vflag_atom) && + if ((vflag_atom != 0) && KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, KIM_SUPPORT_STATUS_notSupported)) { // flip sign and order of virial if KIM is computing it @@ -632,31 +632,33 @@ double PairKIM::init_one(int i, int j) int PairKIM::pack_reverse_comm(int n, int first, double *buf) { - int i,m,last; - double *fp; - fp = &(atom->f[0][0]); - - m = 0; - last = first + n; + int m = 0; + int const last = first + n; if (KIM_SupportStatus_NotEqual(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported) - && - ((vflag_atom == 0) || - KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported))) { - for (i = first; i < last; i++) { + KIM_SUPPORT_STATUS_notSupported) && + (KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported) || + (vflag_atom == 0))) { + const double *const fp = &(atom->f[0][0]); + for (int i = first; i < last; i++) { buf[m++] = fp[3*i+0]; buf[m++] = fp[3*i+1]; buf[m++] = fp[3*i+2]; } return m; - } else if (KIM_SupportStatus_NotEqual(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported) && - (vflag_atom == 1) && - KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported)) { - double *va=&(vatom[0][0]); - for (i = first; i < last; i++) { + } + // ---------------------------------------------------------------------- + // see Pair::ev_setup & Integrate::ev_set() + // for values of eflag (0-3) and vflag (0-14) + // ------------------------------------------------------------------------- + if ((vflag_atom != 0) && + KIM_SupportStatus_NotEqual(kim_model_support_for_forces, + KIM_SUPPORT_STATUS_notSupported) && + KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported)) { + const double *const fp = &(atom->f[0][0]); + const double *const va = &(vatom[0][0]); + for (int i = first; i < last; i++) { buf[m++] = fp[3*i+0]; buf[m++] = fp[3*i+1]; buf[m++] = fp[3*i+2]; @@ -669,14 +671,14 @@ int PairKIM::pack_reverse_comm(int n, int first, double *buf) buf[m++] = va[6*i+5]; } return m; - } else if (KIM_SupportStatus_Equal(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported) - && - (vflag_atom == 1) && - KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported)) { - double *va=&(vatom[0][0]); - for (i = first; i < last; i++) { + } + if ((vflag_atom != 0) && + KIM_SupportStatus_Equal(kim_model_support_for_forces, + KIM_SUPPORT_STATUS_notSupported) && + KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported)) { + const double *const va = &(vatom[0][0]); + for (int i = first; i < last; i++) { buf[m++] = va[6*i+0]; buf[m++] = va[6*i+1]; buf[m++] = va[6*i+2]; @@ -685,39 +687,38 @@ int PairKIM::pack_reverse_comm(int n, int first, double *buf) buf[m++] = va[6*i+5]; } return m; - } else return 0; + } + return 0; } /* ---------------------------------------------------------------------- */ void PairKIM::unpack_reverse_comm(int n, int *list, double *buf) { - int i,j,m; - double *fp; - fp = &(atom->f[0][0]); - - m = 0; + int m = 0; if (KIM_SupportStatus_NotEqual(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported) - && - ((vflag_atom == 0) || - KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported))) { - for (i = 0; i < n; i++) { - j = list[i]; + KIM_SUPPORT_STATUS_notSupported) && + (KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported) || + (vflag_atom == 0))) { + double *const fp = &(atom->f[0][0]); + for (int i = 0; i < n; i++) { + const int j = list[i]; fp[3*j+0]+= buf[m++]; fp[3*j+1]+= buf[m++]; fp[3*j+2]+= buf[m++]; } - } else if (KIM_SupportStatus_NotEqual(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported) - && - (vflag_atom == 1) && - KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported)) { - double *va=&(vatom[0][0]); - for (i = 0; i < n; i++) { - j = list[i]; + return; + } + if ((vflag_atom != 0) && + KIM_SupportStatus_NotEqual(kim_model_support_for_forces, + KIM_SUPPORT_STATUS_notSupported) && + KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported)) { + double *const fp = &(atom->f[0][0]); + double *const va = &(vatom[0][0]); + for (int i = 0; i < n; i++) { + const int j = list[i]; fp[3*j+0]+= buf[m++]; fp[3*j+1]+= buf[m++]; fp[3*j+2]+= buf[m++]; @@ -729,15 +730,16 @@ void PairKIM::unpack_reverse_comm(int n, int *list, double *buf) va[j*6+4]+=buf[m++]; va[j*6+5]+=buf[m++]; } - } else if (KIM_SupportStatus_Equal(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported) - && - (vflag_atom == 1) && - KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported)) { - double *va=&(vatom[0][0]); - for (i = 0; i < n; i++) { - j = list[i]; + return; + } + if ((vflag_atom != 0) && + KIM_SupportStatus_Equal(kim_model_support_for_forces, + KIM_SUPPORT_STATUS_notSupported) && + KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported)) { + double *const va=&(vatom[0][0]); + for (int i = 0; i < n; i++) { + const int j = list[i]; va[j*6+0]+=buf[m++]; va[j*6+1]+=buf[m++]; va[j*6+2]+=buf[m++]; @@ -745,9 +747,8 @@ void PairKIM::unpack_reverse_comm(int n, int *list, double *buf) va[j*6+4]+=buf[m++]; va[j*6+5]+=buf[m++]; } - } else { - ; // do nothing } + // do nothing } /* ---------------------------------------------------------------------- @@ -918,6 +919,7 @@ void PairKIM::set_argument_pointers() memory->create(eatom,comm->nthreads*maxeatom,"pair:eatom"); } } + if (KIM_SupportStatus_Equal(kim_model_support_for_particleEnergy, KIM_SUPPORT_STATUS_optional) && (eflag_atom != 1)) { @@ -944,19 +946,20 @@ void PairKIM::set_argument_pointers() } // Set KIM pointer appropriately for particleVirial - if (KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_required) - && (vflag_atom != 1)) { + if ((vflag_atom == 0) && + KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_required)) { // reallocate per-atom virial array if necessary - if (atom->nmax > maxeatom) { + if (atom->nmax > maxvatom) { maxvatom = atom->nmax; memory->destroy(vatom); memory->create(vatom,comm->nthreads*maxvatom,6,"pair:vatom"); } } - if (KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_optional) - && (vflag_atom != 1)) { + + if ((vflag_atom == 0) && + KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_optional)) { kimerror = kimerror || KIM_ComputeArguments_SetArgumentPointerDouble( pargs, KIM_COMPUTE_ARGUMENT_NAME_partialParticleVirial, diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 03508578ae..7c35f81891 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -142,6 +142,8 @@ action fix_reaxc_species_kokkos.cpp fix_reaxc_species.cpp action fix_reaxc_species_kokkos.h fix_reaxc_species.h action fix_setforce_kokkos.cpp action fix_setforce_kokkos.h +action fix_shake_kokkos.cpp fix_shake.cpp +action fix_shake_kokkos.h fix_shake.h action fix_shardlow_kokkos.cpp fix_shardlow.cpp action fix_shardlow_kokkos.h fix_shardlow.h action fix_momentum_kokkos.cpp diff --git a/src/KOKKOS/angle_charmm_kokkos.cpp b/src/KOKKOS/angle_charmm_kokkos.cpp index 6451b8c393..b363062c20 100644 --- a/src/KOKKOS/angle_charmm_kokkos.cpp +++ b/src/KOKKOS/angle_charmm_kokkos.cpp @@ -42,6 +42,8 @@ AngleCharmmKokkos::AngleCharmmKokkos(LAMMPS *lmp) : AngleCharmm(lmp) execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/angle_class2_kokkos.cpp b/src/KOKKOS/angle_class2_kokkos.cpp index d4866201e7..a640289c76 100644 --- a/src/KOKKOS/angle_class2_kokkos.cpp +++ b/src/KOKKOS/angle_class2_kokkos.cpp @@ -42,6 +42,8 @@ AngleClass2Kokkos::AngleClass2Kokkos(LAMMPS *lmp) : AngleClass2(lmp) execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/angle_cosine_kokkos.cpp b/src/KOKKOS/angle_cosine_kokkos.cpp index 6dbba1f86e..9f70df3baf 100644 --- a/src/KOKKOS/angle_cosine_kokkos.cpp +++ b/src/KOKKOS/angle_cosine_kokkos.cpp @@ -42,6 +42,8 @@ AngleCosineKokkos::AngleCosineKokkos(LAMMPS *lmp) : AngleCosine(lmp) execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/angle_harmonic_kokkos.cpp b/src/KOKKOS/angle_harmonic_kokkos.cpp index 42d42dd6ca..088f1072dc 100644 --- a/src/KOKKOS/angle_harmonic_kokkos.cpp +++ b/src/KOKKOS/angle_harmonic_kokkos.cpp @@ -42,6 +42,8 @@ AngleHarmonicKokkos::AngleHarmonicKokkos(LAMMPS *lmp) : AngleHarmoni execution_space = ExecutionSpaceFromDevice::space; datamask_read = X_MASK | F_MASK | ENERGY_MASK | VIRIAL_MASK; datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK; + + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/comm_kokkos.cpp b/src/KOKKOS/comm_kokkos.cpp index f8d833d48c..2ef4b14d4f 100644 --- a/src/KOKKOS/comm_kokkos.cpp +++ b/src/KOKKOS/comm_kokkos.cpp @@ -75,6 +75,11 @@ CommKokkos::CommKokkos(LAMMPS *lmp) : CommBrick(lmp) max_buf_pair = 0; k_buf_send_pair = DAT::tdual_xfloat_1d("comm:k_buf_send_pair",1); k_buf_recv_pair = DAT::tdual_xfloat_1d("comm:k_recv_send_pair",1); + + max_buf_fix = 0; + k_buf_send_fix = DAT::tdual_xfloat_1d("comm:k_buf_send_fix",1); + k_buf_recv_fix = DAT::tdual_xfloat_1d("comm:k_recv_send_fix",1); + } /* ---------------------------------------------------------------------- */ @@ -356,10 +361,81 @@ void CommKokkos::reverse_comm_device() void CommKokkos::forward_comm_fix(Fix *fix, int size) { - k_sendlist.sync(); - CommBrick::forward_comm_fix(fix,size); + if (fix->execution_space == Device && fix->forward_comm_device) { + k_sendlist.sync(); + forward_comm_fix_device(fix,size); + } else { + k_sendlist.sync(); + CommBrick::forward_comm_fix(fix,size); + } } +template +void CommKokkos::forward_comm_fix_device(Fix *fix, int size) +{ + int iswap,n,nsize; + MPI_Request request; + DAT::tdual_xfloat_1d k_buf_tmp; + + if (size) nsize = size; + else nsize = fix->comm_forward; + KokkosBase* fixKKBase = dynamic_cast(fix); + + for (iswap = 0; iswap < nswap; iswap++) { + int n = MAX(max_buf_fix,nsize*sendnum[iswap]); + n = MAX(n,nsize*recvnum[iswap]); + if (n > max_buf_fix) + grow_buf_fix(n); + } + + for (iswap = 0; iswap < nswap; iswap++) { + + // pack buffer + + n = fixKKBase->pack_forward_comm_fix_kokkos(sendnum[iswap],k_sendlist, + iswap,k_buf_send_fix,pbc_flag[iswap],pbc[iswap]); + DeviceType().fence(); + + // exchange with another proc + // if self, set recv buffer to send buffer + + if (sendproc[iswap] != me) { + double* buf_send_fix; + double* buf_recv_fix; + if (lmp->kokkos->gpu_aware_flag) { + buf_send_fix = k_buf_send_fix.view().data(); + buf_recv_fix = k_buf_recv_fix.view().data(); + } else { + k_buf_send_fix.modify(); + k_buf_send_fix.sync(); + buf_send_fix = k_buf_send_fix.h_view.data(); + buf_recv_fix = k_buf_recv_fix.h_view.data(); + } + + if (recvnum[iswap]) { + MPI_Irecv(buf_recv_fix,nsize*recvnum[iswap],MPI_DOUBLE, + recvproc[iswap],0,world,&request); + } + if (sendnum[iswap]) + MPI_Send(buf_send_fix,n,MPI_DOUBLE,sendproc[iswap],0,world); + if (recvnum[iswap]) MPI_Wait(&request,MPI_STATUS_IGNORE); + + if (!lmp->kokkos->gpu_aware_flag) { + k_buf_recv_fix.modify(); + k_buf_recv_fix.sync(); + } + k_buf_tmp = k_buf_recv_fix; + } else k_buf_tmp = k_buf_send_fix; + + // unpack buffer + + fixKKBase->unpack_forward_comm_fix_kokkos(recvnum[iswap],firstrecv[iswap],k_buf_tmp); + DeviceType().fence(); + } +} + +/* ---------------------------------------------------------------------- */ + void CommKokkos::reverse_comm_fix(Fix *fix, int size) { k_sendlist.sync(); @@ -394,6 +470,7 @@ void CommKokkos::forward_comm_pair_device(Pair *pair) { int iswap,n; MPI_Request request; + DAT::tdual_xfloat_1d k_buf_tmp; int nsize = pair->comm_forward; KokkosBase* pairKKBase = dynamic_cast(pair); @@ -441,11 +518,12 @@ void CommKokkos::forward_comm_pair_device(Pair *pair) k_buf_recv_pair.modify(); k_buf_recv_pair.sync(); } - } else k_buf_recv_pair = k_buf_send_pair; + k_buf_tmp = k_buf_recv_pair; + } else k_buf_tmp = k_buf_send_pair; // unpack buffer - pairKKBase->unpack_forward_comm_kokkos(recvnum[iswap],firstrecv[iswap],k_buf_recv_pair); + pairKKBase->unpack_forward_comm_kokkos(recvnum[iswap],firstrecv[iswap],k_buf_tmp); DeviceType().fence(); } } @@ -456,6 +534,12 @@ void CommKokkos::grow_buf_pair(int n) { k_buf_recv_pair.resize(max_buf_pair); } +void CommKokkos::grow_buf_fix(int n) { + max_buf_fix = n * BUFFACTOR; + k_buf_send_fix.resize(max_buf_fix); + k_buf_recv_fix.resize(max_buf_fix); +} + void CommKokkos::reverse_comm_pair(Pair *pair) { k_sendlist.sync(); @@ -491,8 +575,8 @@ void CommKokkos::exchange() if(!exchange_comm_classic) { static int print = 1; if(print && comm->me==0) { - error->warning(FLERR,"Fixes cannot yet send data in Kokkos communication, " - "switching to classic communication"); + error->warning(FLERR,"Fixes cannot yet send exchange data in Kokkos communication, " + "switching to classic exchange/border communication"); } print = 0; exchange_comm_classic = true; @@ -742,7 +826,7 @@ void CommKokkos::borders() (ghost_velocity && ((AtomVecKokkos*)atom->avec)->no_border_vel_flag)) { if (print && comm->me==0) { error->warning(FLERR,"Required border comm not yet implemented in Kokkos communication, " - "switching to classic communication"); + "switching to classic exchange/border communication"); } print = 0; exchange_comm_classic = true; @@ -754,6 +838,7 @@ void CommKokkos::borders() else borders_device(); } else { atomKK->sync(Host,ALL_MASK); + k_sendlist.sync(); CommBrick::borders(); k_sendlist.modify(); atomKK->modified(Host,ALL_MASK); diff --git a/src/KOKKOS/comm_kokkos.h b/src/KOKKOS/comm_kokkos.h index 9d8766e309..6b4a201ab7 100644 --- a/src/KOKKOS/comm_kokkos.h +++ b/src/KOKKOS/comm_kokkos.h @@ -51,6 +51,7 @@ class CommKokkos : public CommBrick { template void forward_comm_device(int dummy); template void reverse_comm_device(); template void forward_comm_pair_device(Pair *pair); + template void forward_comm_fix_device(Fix *fix, int size=0); template void exchange_device(); template void borders_device(); @@ -73,10 +74,11 @@ class CommKokkos : public CommBrick { DAT::tdual_int_1d k_sendnum_scan; int totalsend; - int max_buf_pair; - DAT::tdual_xfloat_1d k_buf_send_pair; - DAT::tdual_xfloat_1d k_buf_recv_pair; + int max_buf_pair,max_buf_fix; + DAT::tdual_xfloat_1d k_buf_send_pair, k_buf_send_fix; + DAT::tdual_xfloat_1d k_buf_recv_pair, k_buf_recv_fix; void grow_buf_pair(int); + void grow_buf_fix(int); void grow_send(int, int); void grow_recv(int); diff --git a/src/KOKKOS/dihedral_charmm_kokkos.cpp b/src/KOKKOS/dihedral_charmm_kokkos.cpp index 86539bc090..92efd9d082 100644 --- a/src/KOKKOS/dihedral_charmm_kokkos.cpp +++ b/src/KOKKOS/dihedral_charmm_kokkos.cpp @@ -48,6 +48,8 @@ DihedralCharmmKokkos::DihedralCharmmKokkos(LAMMPS *lmp) : DihedralCh k_warning_flag = Kokkos::DualView("Dihedral:warning_flag"); d_warning_flag = k_warning_flag.template view(); h_warning_flag = k_warning_flag.h_view; + + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- */ @@ -76,7 +78,7 @@ void DihedralCharmmKokkos::compute(int eflag_in, int vflag_in) // insure pair->ev_tally() will use 1-4 virial contribution - if (weightflag && vflag_global == 2) + if (weightflag && vflag_global == VIRIAL_FDOTR) force->pair->vflag_either = force->pair->vflag_global = 1; // reallocate per-atom arrays if necessary diff --git a/src/KOKKOS/dihedral_class2_kokkos.cpp b/src/KOKKOS/dihedral_class2_kokkos.cpp index 4848b86756..59a20b26da 100644 --- a/src/KOKKOS/dihedral_class2_kokkos.cpp +++ b/src/KOKKOS/dihedral_class2_kokkos.cpp @@ -47,6 +47,8 @@ DihedralClass2Kokkos::DihedralClass2Kokkos(LAMMPS *lmp) : DihedralCl k_warning_flag = DAT::tdual_int_scalar("Dihedral:warning_flag"); d_warning_flag = k_warning_flag.view(); h_warning_flag = k_warning_flag.h_view; + + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/dihedral_harmonic_kokkos.cpp b/src/KOKKOS/dihedral_harmonic_kokkos.cpp index 2681e84e94..764981f231 100644 --- a/src/KOKKOS/dihedral_harmonic_kokkos.cpp +++ b/src/KOKKOS/dihedral_harmonic_kokkos.cpp @@ -47,6 +47,8 @@ DihedralHarmonicKokkos::DihedralHarmonicKokkos(LAMMPS *lmp) : Dihedr k_warning_flag = DAT::tdual_int_scalar("Dihedral:warning_flag"); d_warning_flag = k_warning_flag.view(); h_warning_flag = k_warning_flag.h_view; + + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/dihedral_opls_kokkos.cpp b/src/KOKKOS/dihedral_opls_kokkos.cpp index 01c7f89e0c..ae2b522f81 100644 --- a/src/KOKKOS/dihedral_opls_kokkos.cpp +++ b/src/KOKKOS/dihedral_opls_kokkos.cpp @@ -47,6 +47,8 @@ DihedralOPLSKokkos::DihedralOPLSKokkos(LAMMPS *lmp) : DihedralOPLS(l k_warning_flag = DAT::tdual_int_scalar("Dihedral:warning_flag"); d_warning_flag = k_warning_flag.view(); h_warning_flag = k_warning_flag.h_view; + + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/fft3d_kokkos.cpp b/src/KOKKOS/fft3d_kokkos.cpp index 02f55e11fa..04a5512cc7 100644 --- a/src/KOKKOS/fft3d_kokkos.cpp +++ b/src/KOKKOS/fft3d_kokkos.cpp @@ -228,7 +228,7 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, cufftExec(plan->plan_fast,d_data.data(),d_data.data(),flag); #else typename FFT_AT::t_FFT_DATA_1d d_tmp = - typename FFT_AT::t_FFT_DATA_1d(Kokkos::view_alloc("fft_3d:tmp",Kokkos::WithoutInitializing),d_in.extent(0)); + typename FFT_AT::t_FFT_DATA_1d(Kokkos::view_alloc("fft_3d:tmp",Kokkos::WithoutInitializing),d_data.extent(0)); kiss_fft_functor f; if (flag == -1) f = kiss_fft_functor(d_data,d_tmp,plan->cfg_fast_forward,length); @@ -236,7 +236,6 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, f = kiss_fft_functor(d_data,d_tmp,plan->cfg_fast_backward,length); Kokkos::parallel_for(total/length,f); d_data = d_tmp; - d_tmp = typename FFT_AT::t_FFT_DATA_1d(Kokkos::view_alloc("fft_3d:tmp",Kokkos::WithoutInitializing),d_in.extent(0)); #endif @@ -273,13 +272,13 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, #elif defined(FFT_CUFFT) cufftExec(plan->plan_mid,d_data.data(),d_data.data(),flag); #else + d_tmp = typename FFT_AT::t_FFT_DATA_1d(Kokkos::view_alloc("fft_3d:tmp",Kokkos::WithoutInitializing),d_data.extent(0)); if (flag == -1) f = kiss_fft_functor(d_data,d_tmp,plan->cfg_mid_forward,length); else f = kiss_fft_functor(d_data,d_tmp,plan->cfg_mid_backward,length); Kokkos::parallel_for(total/length,f); d_data = d_tmp; - d_tmp = typename FFT_AT::t_FFT_DATA_1d(Kokkos::view_alloc("fft_3d:tmp",Kokkos::WithoutInitializing),d_in.extent(0)); #endif // 2nd mid-remap to prepare for 3rd FFTs @@ -315,6 +314,7 @@ void FFT3dKokkos::fft_3d_kokkos(typename FFT_AT::t_FFT_DATA_1d d_in, #elif defined(FFT_CUFFT) cufftExec(plan->plan_slow,d_data.data(),d_data.data(),flag); #else + d_tmp = typename FFT_AT::t_FFT_DATA_1d(Kokkos::view_alloc("fft_3d:tmp",Kokkos::WithoutInitializing),d_data.extent(0)); if (flag == -1) f = kiss_fft_functor(d_data,d_tmp,plan->cfg_slow_forward,length); else @@ -866,7 +866,8 @@ void FFT3dKokkos::fft_3d_1d_only_kokkos(typename FFT_AT::t_FFT_DATA_ cufftExec(plan->plan_slow,d_data.data(),d_data.data(),flag); #else kiss_fft_functor f; - typename FFT_AT::t_FFT_DATA_1d d_tmp = typename FFT_AT::t_FFT_DATA_1d("fft_3d:tmp",d_data.extent(0)); + typename FFT_AT::t_FFT_DATA_1d d_tmp = + typename FFT_AT::t_FFT_DATA_1d(Kokkos::view_alloc("fft_3d:tmp",Kokkos::WithoutInitializing),d_data.extent(0)); if (flag == -1) { f = kiss_fft_functor(d_data,d_tmp,plan->cfg_fast_forward,length1); Kokkos::parallel_for(total1/length1,f); diff --git a/src/KOKKOS/fix_qeq_reax_kokkos.cpp b/src/KOKKOS/fix_qeq_reax_kokkos.cpp index bf047e7769..c96f5ded68 100644 --- a/src/KOKKOS/fix_qeq_reax_kokkos.cpp +++ b/src/KOKKOS/fix_qeq_reax_kokkos.cpp @@ -47,6 +47,7 @@ FixQEqReaxKokkos(LAMMPS *lmp, int narg, char **arg) : FixQEqReax(lmp, narg, arg) { kokkosable = 1; + forward_comm_device = 1; atomKK = (AtomKokkos *) atom; execution_space = ExecutionSpaceFromDevice::space; @@ -262,19 +263,15 @@ void FixQEqReaxKokkos::pre_force(int /*vflag*/) // comm->forward_comm_fix(this); //Dist_vector( s ); pack_flag = 2; - k_s.template modify(); - k_s.template sync(); - comm->forward_comm_fix(this); - k_s.template modify(); k_s.template sync(); + comm->forward_comm_fix(this); + k_s.template modify(); // comm->forward_comm_fix(this); //Dist_vector( t ); pack_flag = 3; - k_t.template modify(); - k_t.template sync(); - comm->forward_comm_fix(this); - k_t.template modify(); k_t.template sync(); + comm->forward_comm_fix(this); + k_t.template modify(); need_dup = lmp->kokkos->need_dup(); @@ -784,11 +781,9 @@ void FixQEqReaxKokkos::cg_solve1() // comm->forward_comm_fix(this); //Dist_vector( d ); pack_flag = 1; - k_d.template modify(); - k_d.template sync(); - comm->forward_comm_fix(this); - k_d.template modify(); k_d.template sync(); + comm->forward_comm_fix(this); + k_d.template modify(); // sparse_matvec( &H, d, q ); FixQEqReaxKokkosSparse22Functor sparse22_functor(this); @@ -922,11 +917,9 @@ void FixQEqReaxKokkos::cg_solve2() // comm->forward_comm_fix(this); //Dist_vector( d ); pack_flag = 1; - k_d.template modify(); - k_d.template sync(); - comm->forward_comm_fix(this); - k_d.template modify(); k_d.template sync(); + comm->forward_comm_fix(this); + k_d.template modify(); // sparse_matvec( &H, d, q ); FixQEqReaxKokkosSparse22Functor sparse22_functor(this); @@ -1027,11 +1020,9 @@ void FixQEqReaxKokkos::calculate_q() pack_flag = 4; //comm->forward_comm_fix( this ); //Dist_vector( atom->q ); - atomKK->k_q.modify(); - atomKK->k_q.sync(); - comm->forward_comm_fix(this); - atomKK->k_q.modify(); atomKK->k_q.sync(); + comm->forward_comm_fix(this); + atomKK->k_q.modify(); } @@ -1361,6 +1352,59 @@ void FixQEqReaxKokkos::calculate_q_item(int ii) const /* ---------------------------------------------------------------------- */ +template +int FixQEqReaxKokkos::pack_forward_comm_fix_kokkos(int n, DAT::tdual_int_2d k_sendlist, + int iswap_in, DAT::tdual_xfloat_1d &k_buf, + int /*pbc_flag*/, int * /*pbc*/) +{ + d_sendlist = k_sendlist.view(); + iswap = iswap_in; + d_buf = k_buf.view(); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + return n; +} + +template +KOKKOS_INLINE_FUNCTION +void FixQEqReaxKokkos::operator()(TagFixQEqReaxPackForwardComm, const int &i) const { + int j = d_sendlist(iswap, i); + + if (pack_flag == 1) + d_buf[i] = d_d[j]; + else if( pack_flag == 2 ) + d_buf[i] = d_s[j]; + else if( pack_flag == 3 ) + d_buf[i] = d_t[j]; + else if( pack_flag == 4 ) + d_buf[i] = q[j]; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixQEqReaxKokkos::unpack_forward_comm_fix_kokkos(int n, int first_in, DAT::tdual_xfloat_1d &buf) +{ + first = first_in; + d_buf = buf.view(); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); +} + +template +KOKKOS_INLINE_FUNCTION +void FixQEqReaxKokkos::operator()(TagFixQEqReaxUnpackForwardComm, const int &i) const { + if (pack_flag == 1) + d_d[i + first] = d_buf[i]; + else if( pack_flag == 2) + d_s[i + first] = d_buf[i]; + else if( pack_flag == 3) + d_t[i + first] = d_buf[i]; + else if( pack_flag == 4) + q[i + first] = d_buf[i]; + +} + +/* ---------------------------------------------------------------------- */ + template int FixQEqReaxKokkos::pack_forward_comm(int n, int *list, double *buf, int /*pbc_flag*/, int * /*pbc*/) diff --git a/src/KOKKOS/fix_qeq_reax_kokkos.h b/src/KOKKOS/fix_qeq_reax_kokkos.h index bed532905e..cc9bff3652 100644 --- a/src/KOKKOS/fix_qeq_reax_kokkos.h +++ b/src/KOKKOS/fix_qeq_reax_kokkos.h @@ -26,6 +26,7 @@ FixStyle(qeq/reax/kk/host,FixQEqReaxKokkos) #include "kokkos_type.h" #include "neigh_list.h" #include "neigh_list_kokkos.h" +#include "kokkos_base.h" namespace LAMMPS_NS { @@ -33,9 +34,11 @@ struct TagSparseMatvec1 {}; struct TagSparseMatvec2 {}; struct TagSparseMatvec3 {}; struct TagZeroQGhosts{}; +struct TagFixQEqReaxPackForwardComm {}; +struct TagFixQEqReaxUnpackForwardComm {}; template -class FixQEqReaxKokkos : public FixQEqReax { +class FixQEqReaxKokkos : public FixQEqReax, public KokkosBase { public: typedef DeviceType device_type; typedef ArrayTypes AT; @@ -136,6 +139,12 @@ class FixQEqReaxKokkos : public FixQEqReax { KOKKOS_INLINE_FUNCTION double calculate_H_k(const F_FLOAT &r, const F_FLOAT &shld) const; + KOKKOS_INLINE_FUNCTION + void operator()(TagFixQEqReaxPackForwardComm, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagFixQEqReaxUnpackForwardComm, const int&) const; + struct params_qeq{ KOKKOS_INLINE_FUNCTION params_qeq(){chi=0;eta=0;gamma=0;}; @@ -144,6 +153,9 @@ class FixQEqReaxKokkos : public FixQEqReax { F_FLOAT chi, eta, gamma; }; + int pack_forward_comm_fix_kokkos(int, DAT::tdual_int_2d, int, DAT::tdual_xfloat_1d&, + int, int *); + void unpack_forward_comm_fix_kokkos(int, int, DAT::tdual_xfloat_1d&); virtual int pack_forward_comm(int, int *, double *, int, int *); virtual void unpack_forward_comm(int, int, double *); int pack_reverse_comm(int, int, double *); @@ -203,6 +215,11 @@ class FixQEqReaxKokkos : public FixQEqReax { Kokkos::Experimental::ScatterView::value, Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated> dup_o; Kokkos::Experimental::ScatterView::value, Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated> ndup_o; + int iswap; + int first; + typename AT::t_int_2d d_sendlist; + typename AT::t_xfloat_1d_um d_buf; + void init_shielding_k(); void init_hist(); void allocate_matrix(); @@ -216,11 +233,6 @@ class FixQEqReaxKokkos : public FixQEqReax { int count, isuccess; double alpha, beta, delta, cutsq; - int iswap; - int first; - typename AT::t_int_2d d_sendlist; - typename AT::t_xfloat_1d_um v_buf; - void grow_arrays(int); void copy_arrays(int, int, int); int pack_exchange(int, double *); diff --git a/src/KOKKOS/fix_shake_kokkos.cpp b/src/KOKKOS/fix_shake_kokkos.cpp new file mode 100644 index 0000000000..64c284952c --- /dev/null +++ b/src/KOKKOS/fix_shake_kokkos.cpp @@ -0,0 +1,1910 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include "fix_shake_kokkos.h" +#include "fix_rattle.h" +#include "atom_kokkos.h" +#include "atom_vec.h" +#include "molecule.h" +#include "update.h" +#include "respa.h" +#include "modify.h" +#include "domain.h" +#include "force.h" +#include "bond.h" +#include "angle.h" +#include "comm.h" +#include "group.h" +#include "fix_respa.h" +#include "math_const.h" +#include "memory_kokkos.h" +#include "error.h" +#include "kokkos.h" +#include "atom_masks.h" + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathConst; + +#define RVOUS 1 // 0 for irregular, 1 for all2all + +#define BIG 1.0e20 +#define MASSDELTA 0.1 + +/* ---------------------------------------------------------------------- */ + +template +FixShakeKokkos::FixShakeKokkos(LAMMPS *lmp, int narg, char **arg) : + FixShake(lmp, narg, arg) +{ + kokkosable = 1; + forward_comm_device = 1; + atomKK = (AtomKokkos *)atom; + execution_space = ExecutionSpaceFromDevice::space; + + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; + + shake_flag_tmp = shake_flag; + shake_atom_tmp = shake_atom; + shake_type_tmp = shake_type; + + shake_flag = nullptr; + shake_atom = nullptr; + shake_type = nullptr; + + int nmax = atom->nmax; + + grow_arrays(nmax); + + for (int i = 0; i < nmax; i++) { + k_shake_flag.h_view[i] = shake_flag_tmp[i]; + k_shake_atom.h_view(i,0) = shake_atom_tmp[i][0]; + k_shake_atom.h_view(i,1) = shake_atom_tmp[i][1]; + k_shake_atom.h_view(i,2) = shake_atom_tmp[i][2]; + k_shake_atom.h_view(i,3) = shake_atom_tmp[i][3]; + k_shake_type.h_view(i,0) = shake_type_tmp[i][0]; + k_shake_type.h_view(i,1) = shake_type_tmp[i][1]; + k_shake_type.h_view(i,2) = shake_type_tmp[i][2]; + } + + k_shake_flag.modify_host(); + k_shake_atom.modify_host(); + k_shake_type.modify_host(); + + k_bond_distance = DAT::tdual_float_1d("fix_shake:bond_distance",atom->nbondtypes+1); + k_angle_distance = DAT::tdual_float_1d("fix_shake:angle_distance",atom->nangletypes+1); + + d_bond_distance = k_bond_distance.view(); + d_angle_distance = k_angle_distance.view(); + + // use 1D view for scalars to reduce GPU memory operations + + d_scalars = typename AT::t_int_1d("neighbor:scalars",2); + h_scalars = HAT::t_int_1d("neighbor:scalars_mirror",2); + + d_error_flag = Kokkos::subview(d_scalars,0); + d_nlist = Kokkos::subview(d_scalars,1); + + h_error_flag = Kokkos::subview(h_scalars,0); + h_nlist = Kokkos::subview(h_scalars,1); + + memory->destroy(shake_flag_tmp); + memory->destroy(shake_atom_tmp); + memory->destroy(shake_type_tmp); +} + +/* ---------------------------------------------------------------------- */ + +template +FixShakeKokkos::~FixShakeKokkos() +{ + if (copymode) return; + + k_shake_flag.sync_host(); + k_shake_atom.sync_host(); + + for (int i = 0; i < nlocal; i++) { + if (shake_flag[i] == 0) continue; + else if (shake_flag[i] == 1) { + bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); + bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],1); + angletype_findset(i,shake_atom[i][1],shake_atom[i][2],1); + } else if (shake_flag[i] == 2) { + bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); + } else if (shake_flag[i] == 3) { + bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); + bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],1); + } else if (shake_flag[i] == 4) { + bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); + bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],1); + bondtype_findset(i,shake_atom[i][0],shake_atom[i][3],1); + } + } + + memoryKK->destroy_kokkos(k_shake_flag,shake_flag); + memoryKK->destroy_kokkos(k_shake_atom,shake_atom); + memoryKK->destroy_kokkos(k_shake_type,shake_type); + memoryKK->destroy_kokkos(k_xshake,xshake); + memoryKK->destroy_kokkos(k_list,list); + + memoryKK->destroy_kokkos(k_vatom,vatom); +} + +/* ---------------------------------------------------------------------- + set bond and angle distances + this init must happen after force->bond and force->angle inits +------------------------------------------------------------------------- */ + +template +void FixShakeKokkos::init() +{ + FixShake::init(); + + if (strstr(update->integrate_style,"respa")) + error->all(FLERR,"Cannot yet use respa with Kokkos"); + + if (rattle) + error->all(FLERR,"Cannot yet use KOKKOS package with fix rattle"); + + // set equilibrium bond distances + + for (int i = 1; i <= atom->nbondtypes; i++) + k_bond_distance.h_view[i] = bond_distance[i]; + + // set equilibrium angle distances + + for (int i = 1; i <= atom->nangletypes; i++) + k_angle_distance.h_view[i] = angle_distance[i]; + + k_bond_distance.modify_host(); + k_angle_distance.modify_host(); + + k_bond_distance.sync(); + k_angle_distance.sync(); +} + + +/* ---------------------------------------------------------------------- + build list of SHAKE clusters to constrain + if one or more atoms in cluster are on this proc, + this proc lists the cluster exactly once +------------------------------------------------------------------------- */ + +template +void FixShakeKokkos::pre_neighbor() +{ + // local copies of atom quantities + // used by SHAKE until next re-neighboring + + x = atom->x; + v = atom->v; + f = atom->f; + mass = atom->mass; + rmass = atom->rmass; + type = atom->type; + nlocal = atom->nlocal; + + k_shake_flag.sync(); + k_shake_atom.sync(); + + // extend size of SHAKE list if necessary + + if (nlocal > maxlist) { + maxlist = nlocal; + memoryKK->destroy_kokkos(k_list,list); + memoryKK->create_kokkos(k_list,list,maxlist,"shake:list"); + d_list = k_list.view(); + } + + // don't yet have atom_map_kokkos routines, so move data from host to device + + if (atom->map_style != Atom::MAP_ARRAY) + error->all(FLERR,"Must use atom map style array with Kokkos"); + + int* map_array_host = atom->get_map_array(); + int map_size = atom->get_map_size(); + int map_maxarray = atom->get_map_maxarray(); + if (map_maxarray > (int)k_map_array.extent(0)) + k_map_array = DAT::tdual_int_1d("NeighBond:map_array",map_maxarray); + for (int i=0; i(); + k_map_array.template sync(); + map_array = k_map_array.view(); + + // build list of SHAKE clusters I compute + + Kokkos::deep_copy(d_scalars,0); + + { + // local variables for lambda capture + + auto d_shake_flag = this->d_shake_flag; + auto d_shake_atom = this->d_shake_atom; + auto d_list = this->d_list; + auto d_error_flag = this->d_error_flag; + auto d_nlist = this->d_nlist; + auto map_array = this->map_array; + + Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(const int& i) { + if (d_shake_flag[i]) { + if (d_shake_flag[i] == 2) { + const int atom1 = map_array(d_shake_atom(i,0)); + const int atom2 = map_array(d_shake_atom(i,1)); + if (atom1 == -1 || atom2 == -1) { + d_error_flag() = 1; + } + if (i <= atom1 && i <= atom2) { + const int nlist = Kokkos::atomic_fetch_add(&d_nlist(),1); + d_list[nlist] = i; + } + } else if (d_shake_flag[i] % 2 == 1) { + const int atom1 = map_array(d_shake_atom(i,0)); + const int atom2 = map_array(d_shake_atom(i,1)); + const int atom3 = map_array(d_shake_atom(i,2)); + if (atom1 == -1 || atom2 == -1 || atom3 == -1) + d_error_flag() = 1; + if (i <= atom1 && i <= atom2 && i <= atom3) { + const int nlist = Kokkos::atomic_fetch_add(&d_nlist(),1); + d_list[nlist] = i; + } + } else { + const int atom1 = map_array(d_shake_atom(i,0)); + const int atom2 = map_array(d_shake_atom(i,1)); + const int atom3 = map_array(d_shake_atom(i,2)); + const int atom4 = map_array(d_shake_atom(i,3)); + if (atom1 == -1 || atom2 == -1 || atom3 == -1 || atom4 == -1) + d_error_flag() = 1; + if (i <= atom1 && i <= atom2 && i <= atom3 && i <= atom4) { + const int nlist = Kokkos::atomic_fetch_add(&d_nlist(),1); + d_list[nlist] = i; + } + } + } + }); + } + + Kokkos::deep_copy(h_scalars,d_scalars); + nlist = h_nlist(); + + if (h_error_flag() == 1) { + error->one(FLERR,fmt::format("Shake atoms missing on proc " + "{} at step {}",me,update->ntimestep)); + } +} + +/* ---------------------------------------------------------------------- + compute the force adjustment for SHAKE constraint +------------------------------------------------------------------------- */ + +template +void FixShakeKokkos::post_force(int vflag) +{ + copymode = 1; + + d_x = atomKK->k_x.view(); + d_f = atomKK->k_f.view(); + d_type = atomKK->k_type.view(); + d_rmass = atomKK->k_rmass.view(); + d_mass = atomKK->k_mass.view(); + nlocal = atomKK->nlocal; + + if (d_rmass.data()) + atomKK->sync(Device,X_MASK|F_MASK|RMASS_MASK); + else + atomKK->sync(Device,X_MASK|F_MASK|TYPE_MASK); + + k_shake_flag.sync(); + k_shake_atom.sync(); + k_shake_type.sync(); + + if (update->ntimestep == next_output) { + atomKK->sync(Host,X_MASK); + k_shake_flag.sync_host(); + k_shake_atom.sync_host(); + k_shake_type.sync_host(); + stats(); + } + + // xshake = unconstrained move with current v,f + // communicate results if necessary + + unconstrained_update(); + if (nprocs > 1) comm->forward_comm_fix(this); + k_xshake.sync(); + + // virial setup + + if (vflag) v_setup(vflag); + else evflag = 0; + + // reallocate per-atom arrays if necessary + + if (vflag_atom) { + memoryKK->destroy_kokkos(k_vatom,vatom); + memoryKK->create_kokkos(k_vatom,vatom,maxvatom,"improper:vatom"); + d_vatom = k_vatom.template view(); + } + + + neighflag = lmp->kokkos->neighflag; + + // FULL neighlist still needs atomics in fix shake + + if (neighflag == FULL) { + if (lmp->kokkos->nthreads > 1 || lmp->kokkos->ngpus > 0) + neighflag = HALFTHREAD; + else + neighflag = HALF; + } + + need_dup = 0; + if (neighflag != HALF) + need_dup = std::is_same::value,Kokkos::Experimental::ScatterDuplicated>::value; + + // allocate duplicated memory + + if (need_dup) { + dup_f = Kokkos::Experimental::create_scatter_view(d_f); + dup_vatom = Kokkos::Experimental::create_scatter_view(d_vatom); + } else { + ndup_f = Kokkos::Experimental::create_scatter_view(d_f); + ndup_vatom = Kokkos::Experimental::create_scatter_view(d_vatom); + } + + Kokkos::deep_copy(d_error_flag,0); + + update_domain_variables(); + + EV_FLOAT ev; + + // loop over clusters to add constraint forces + + if (neighflag == HALF) { + if (evflag) + Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,nlist),*this,ev); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,nlist),*this); + } else { + if (evflag) + Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,nlist),*this,ev); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,nlist),*this); + } + + copymode = 0; + + Kokkos::deep_copy(h_error_flag,d_error_flag); + + if (h_error_flag() == 2) + error->warning(FLERR,"Shake determinant < 0.0",0); + else if (h_error_flag() == 3) + error->one(FLERR,"Shake determinant = 0.0"); + + // store vflag for coordinate_constraints_end_of_step() + + vflag_post_force = vflag; + + // reduction over duplicated memory + + if (need_dup) + Kokkos::Experimental::contribute(d_f,dup_f); + + atomKK->modified(Device,F_MASK); + + if (vflag_global) { + virial[0] += ev.v[0]; + virial[1] += ev.v[1]; + virial[2] += ev.v[2]; + virial[3] += ev.v[3]; + virial[4] += ev.v[4]; + virial[5] += ev.v[5]; + } + + if (vflag_atom) { + k_vatom.template modify(); + k_vatom.template sync(); + } + + // free duplicated memory + + if (need_dup) { + dup_f = decltype(dup_f)(); + dup_vatom = decltype(dup_vatom)(); + } +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void FixShakeKokkos::operator()(TagFixShakePostForce, const int &i, EV_FLOAT& ev) const { + const int m = d_list[i]; + if (d_shake_flag[m] == 2) shake(m,ev); + else if (d_shake_flag[m] == 3) shake3(m,ev); + else if (d_shake_flag[m] == 4) shake4(m,ev); + else shake3angle(m,ev); +} + +template +template +KOKKOS_INLINE_FUNCTION +void FixShakeKokkos::operator()(TagFixShakePostForce, const int &i) const { + EV_FLOAT ev; + this->template operator()(TagFixShakePostForce(), i, ev); +} + +/* ---------------------------------------------------------------------- + count # of degrees-of-freedom removed by SHAKE for atoms in igroup +------------------------------------------------------------------------- */ + +template +int FixShakeKokkos::dof(int igroup) +{ + + d_mask = atomKK->k_mask.view(); + d_tag = atomKK->k_tag.view(); + nlocal = atom->nlocal; + + atomKK->sync(Device,MASK_MASK|TAG_MASK); + k_shake_flag.sync(); + k_shake_atom.sync(); + + // count dof in a cluster if and only if + // the central atom is in group and atom i is the central atom + + int n = 0; + { + // local variables for lambda capture + + auto d_shake_flag = this->d_shake_flag; + auto d_shake_atom = this->d_shake_atom; + auto tag = this->d_tag; + auto mask = this->d_mask; + auto groupbit = group->bitmask[igroup]; + + Kokkos::parallel_reduce(nlocal, LAMMPS_LAMBDA(const int& i, int& n) { + if (!(mask[i] & groupbit)) return; + if (d_shake_flag[i] == 0) return; + if (d_shake_atom(i,0) != tag[i]) return; + if (d_shake_flag[i] == 1) n += 3; + else if (d_shake_flag[i] == 2) n += 1; + else if (d_shake_flag[i] == 3) n += 2; + else if (d_shake_flag[i] == 4) n += 3; + },n); + } + + int nall; + MPI_Allreduce(&n,&nall,1,MPI_INT,MPI_SUM,world); + return nall; +} + + +/* ---------------------------------------------------------------------- + assumes NVE update, seems to be accurate enough for NVT,NPT,NPH as well +------------------------------------------------------------------------- */ + +template +void FixShakeKokkos::unconstrained_update() +{ + d_x = atomKK->k_x.view(); + d_v = atomKK->k_v.view(); + d_f = atomKK->k_f.view(); + d_type = atomKK->k_type.view(); + d_rmass = atomKK->k_rmass.view(); + d_mass = atomKK->k_mass.view(); + nlocal = atom->nlocal; + + if (d_rmass.data()) + atomKK->sync(Device,X_MASK|V_MASK|F_MASK|RMASS_MASK); + else + atomKK->sync(Device,X_MASK|V_MASK|F_MASK|TYPE_MASK); + + + k_shake_flag.sync(); + k_xshake.sync(); + + { + // local variables for lambda capture + + auto d_shake_flag = this->d_shake_flag; + auto d_xshake = this->d_xshake; + auto x = this->d_x; + auto v = this->d_v; + auto f = this->d_f; + auto dtfsq = this->dtfsq; + auto dtv = this->dtv; + + if (d_rmass.data()) { + + auto rmass = this->d_rmass; + + Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(const int& i) { + if (d_shake_flag[i]) { + const double dtfmsq = dtfsq / rmass[i]; + d_xshake(i,0) = x(i,0) + dtv*v(i,0) + dtfmsq*f(i,0); + d_xshake(i,1) = x(i,1) + dtv*v(i,1) + dtfmsq*f(i,1); + d_xshake(i,2) = x(i,2) + dtv*v(i,2) + dtfmsq*f(i,2); + } else d_xshake(i,2) = d_xshake(i,1) = d_xshake(i,0) = 0.0; + }); + } else { + + auto mass = this->d_mass; + auto type = this->d_type; + + Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(const int& i) { + if (d_shake_flag[i]) { + const double dtfmsq = dtfsq / mass[type[i]]; + d_xshake(i,0) = x(i,0) + dtv*v(i,0) + dtfmsq*f(i,0); + d_xshake(i,1) = x(i,1) + dtv*v(i,1) + dtfmsq*f(i,1); + d_xshake(i,2) = x(i,2) + dtv*v(i,2) + dtfmsq*f(i,2); + } else d_xshake(i,2) = d_xshake(i,1) = d_xshake(i,0) = 0.0; + }); + } + } + + k_xshake.modify(); +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void FixShakeKokkos::shake(int m, EV_FLOAT& ev) const +{ + + // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + + auto v_f = ScatterViewHelper::value,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); + auto a_f = v_f.template access::value>(); + + int nlist,list[2]; + double v[6]; + double invmass0,invmass1; + + // local atom IDs and constraint distances + + int i0 = map_array(d_shake_atom(m,0)); + int i1 = map_array(d_shake_atom(m,1)); + double bond1 = d_bond_distance[d_shake_type(m,0)]; + + // r01 = distance vec between atoms, with PBC + + double r01[3]; + r01[0] = d_x(i0,0) - d_x(i1,0); + r01[1] = d_x(i0,1) - d_x(i1,1); + r01[2] = d_x(i0,2) - d_x(i1,2); + minimum_image(r01); + + // s01 = distance vec after unconstrained update, with PBC + // use Domain::minimum_image_once(), not minimum_image() + // b/c xshake values might be huge, due to e.g. fix gcmc + + double s01[3]; + s01[0] = d_xshake(i0,0) - d_xshake(i1,0); + s01[1] = d_xshake(i0,1) - d_xshake(i1,1); + s01[2] = d_xshake(i0,2) - d_xshake(i1,2); + minimum_image_once(s01); + + // scalar distances between atoms + + double r01sq = r01[0]*r01[0] + r01[1]*r01[1] + r01[2]*r01[2]; + double s01sq = s01[0]*s01[0] + s01[1]*s01[1] + s01[2]*s01[2]; + + // a,b,c = coeffs in quadratic equation for lamda + + if (d_rmass.data()) { + invmass0 = 1.0/d_rmass[i0]; + invmass1 = 1.0/d_rmass[i1]; + } else { + invmass0 = 1.0/d_mass[d_type[i0]]; + invmass1 = 1.0/d_mass[d_type[i1]]; + } + + double a = (invmass0+invmass1)*(invmass0+invmass1) * r01sq; + double b = 2.0 * (invmass0+invmass1) * + (s01[0]*r01[0] + s01[1]*r01[1] + s01[2]*r01[2]); + double c = s01sq - bond1*bond1; + + // error check + + double determ = b*b - 4.0*a*c; + if (determ < 0.0) { + //error->warning(FLERR,"Shake determinant < 0.0",0); + d_error_flag() = 2; + determ = 0.0; + } + + // exact quadratic solution for lamda + + double lamda,lamda1,lamda2; + lamda1 = (-b+sqrt(determ)) / (2.0*a); + lamda2 = (-b-sqrt(determ)) / (2.0*a); + + if (fabs(lamda1) <= fabs(lamda2)) lamda = lamda1; + else lamda = lamda2; + + // update forces if atom is owned by this processor + + lamda /= dtfsq; + + if (i0 < nlocal) { + a_f(i0,0) += lamda*r01[0]; + a_f(i0,1) += lamda*r01[1]; + a_f(i0,2) += lamda*r01[2]; + } + + if (i1 < nlocal) { + a_f(i1,0) -= lamda*r01[0]; + a_f(i1,1) -= lamda*r01[1]; + a_f(i1,2) -= lamda*r01[2]; + } + + if (EVFLAG) { + nlist = 0; + if (i0 < nlocal) list[nlist++] = i0; + if (i1 < nlocal) list[nlist++] = i1; + + v[0] = lamda*r01[0]*r01[0]; + v[1] = lamda*r01[1]*r01[1]; + v[2] = lamda*r01[2]*r01[2]; + v[3] = lamda*r01[0]*r01[1]; + v[4] = lamda*r01[0]*r01[2]; + v[5] = lamda*r01[1]*r01[2]; + + v_tally(ev,nlist,list,2.0,v); + } +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void FixShakeKokkos::shake3(int m, EV_FLOAT& ev) const +{ + + // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + + auto v_f = ScatterViewHelper::value,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); + auto a_f = v_f.template access::value>(); + + int nlist,list[3]; + double v[6]; + double invmass0,invmass1,invmass2; + + // local atom IDs and constraint distances + + int i0 = map_array(d_shake_atom(m,0)); + int i1 = map_array(d_shake_atom(m,1)); + int i2 = map_array(d_shake_atom(m,2)); + double bond1 = d_bond_distance[d_shake_type(m,0)]; + double bond2 = d_bond_distance[d_shake_type(m,1)]; + + // r01,r02 = distance vec between atoms, with PBC + + double r01[3]; + r01[0] = d_x(i0,0) - d_x(i1,0); + r01[1] = d_x(i0,1) - d_x(i1,1); + r01[2] = d_x(i0,2) - d_x(i1,2); + minimum_image(r01); + + double r02[3]; + r02[0] = d_x(i0,0) - d_x(i2,0); + r02[1] = d_x(i0,1) - d_x(i2,1); + r02[2] = d_x(i0,2) - d_x(i2,2); + minimum_image(r02); + + // s01,s02 = distance vec after unconstrained update, with PBC + // use Domain::minimum_image_once(), not minimum_image() + // b/c xshake values might be huge, due to e.g. fix gcmc + + double s01[3]; + s01[0] = d_xshake(i0,0) - d_xshake(i1,0); + s01[1] = d_xshake(i0,1) - d_xshake(i1,1); + s01[2] = d_xshake(i0,2) - d_xshake(i1,2); + minimum_image_once(s01); + + double s02[3]; + s02[0] = d_xshake(i0,0) - d_xshake(i2,0); + s02[1] = d_xshake(i0,1) - d_xshake(i2,1); + s02[2] = d_xshake(i0,2) - d_xshake(i2,2); + minimum_image_once(s02); + + // scalar distances between atoms + + double r01sq = r01[0]*r01[0] + r01[1]*r01[1] + r01[2]*r01[2]; + double r02sq = r02[0]*r02[0] + r02[1]*r02[1] + r02[2]*r02[2]; + double s01sq = s01[0]*s01[0] + s01[1]*s01[1] + s01[2]*s01[2]; + double s02sq = s02[0]*s02[0] + s02[1]*s02[1] + s02[2]*s02[2]; + + // matrix coeffs and rhs for lamda equations + + if (d_rmass.data()) { + invmass0 = 1.0/d_rmass[i0]; + invmass1 = 1.0/d_rmass[i1]; + invmass2 = 1.0/d_rmass[i2]; + } else { + invmass0 = 1.0/d_mass[d_type[i0]]; + invmass1 = 1.0/d_mass[d_type[i1]]; + invmass2 = 1.0/d_mass[d_type[i2]]; + } + + double a11 = 2.0 * (invmass0+invmass1) * + (s01[0]*r01[0] + s01[1]*r01[1] + s01[2]*r01[2]); + double a12 = 2.0 * invmass0 * + (s01[0]*r02[0] + s01[1]*r02[1] + s01[2]*r02[2]); + double a21 = 2.0 * invmass0 * + (s02[0]*r01[0] + s02[1]*r01[1] + s02[2]*r01[2]); + double a22 = 2.0 * (invmass0+invmass2) * + (s02[0]*r02[0] + s02[1]*r02[1] + s02[2]*r02[2]); + + // inverse of matrix + + double determ = a11*a22 - a12*a21; + if (determ == 0.0) d_error_flag() = 3; + //error->one(FLERR,"Shake determinant = 0.0"); + double determinv = 1.0/determ; + + double a11inv = a22*determinv; + double a12inv = -a12*determinv; + double a21inv = -a21*determinv; + double a22inv = a11*determinv; + + // quadratic correction coeffs + + double r0102 = (r01[0]*r02[0] + r01[1]*r02[1] + r01[2]*r02[2]); + + double quad1_0101 = (invmass0+invmass1)*(invmass0+invmass1) * r01sq; + double quad1_0202 = invmass0*invmass0 * r02sq; + double quad1_0102 = 2.0 * (invmass0+invmass1)*invmass0 * r0102; + + double quad2_0202 = (invmass0+invmass2)*(invmass0+invmass2) * r02sq; + double quad2_0101 = invmass0*invmass0 * r01sq; + double quad2_0102 = 2.0 * (invmass0+invmass2)*invmass0 * r0102; + + // iterate until converged + + double lamda01 = 0.0; + double lamda02 = 0.0; + int niter = 0; + int done = 0; + + double quad1,quad2,b1,b2,lamda01_new,lamda02_new; + + while (!done && niter < max_iter) { + quad1 = quad1_0101 * lamda01*lamda01 + quad1_0202 * lamda02*lamda02 + + quad1_0102 * lamda01*lamda02; + quad2 = quad2_0101 * lamda01*lamda01 + quad2_0202 * lamda02*lamda02 + + quad2_0102 * lamda01*lamda02; + + b1 = bond1*bond1 - s01sq - quad1; + b2 = bond2*bond2 - s02sq - quad2; + + lamda01_new = a11inv*b1 + a12inv*b2; + lamda02_new = a21inv*b1 + a22inv*b2; + + done = 1; + if (fabs(lamda01_new-lamda01) > tolerance) done = 0; + if (fabs(lamda02_new-lamda02) > tolerance) done = 0; + + lamda01 = lamda01_new; + lamda02 = lamda02_new; + + // stop iterations before we have a floating point overflow + // max double is < 1.0e308, so 1e150 is a reasonable cutoff + + if (fabs(lamda01) > 1e150 || fabs(lamda02) > 1e150) done = 1; + + niter++; + } + + // update forces if atom is owned by this processor + + lamda01 = lamda01/dtfsq; + lamda02 = lamda02/dtfsq; + + if (i0 < nlocal) { + a_f(i0,0) += lamda01*r01[0] + lamda02*r02[0]; + a_f(i0,1) += lamda01*r01[1] + lamda02*r02[1]; + a_f(i0,2) += lamda01*r01[2] + lamda02*r02[2]; + } + + if (i1 < nlocal) { + a_f(i1,0) -= lamda01*r01[0]; + a_f(i1,1) -= lamda01*r01[1]; + a_f(i1,2) -= lamda01*r01[2]; + } + + if (i2 < nlocal) { + a_f(i2,0) -= lamda02*r02[0]; + a_f(i2,1) -= lamda02*r02[1]; + a_f(i2,2) -= lamda02*r02[2]; + } + + if (EVFLAG) { + nlist = 0; + if (i0 < nlocal) list[nlist++] = i0; + if (i1 < nlocal) list[nlist++] = i1; + if (i2 < nlocal) list[nlist++] = i2; + + v[0] = lamda01*r01[0]*r01[0] + lamda02*r02[0]*r02[0]; + v[1] = lamda01*r01[1]*r01[1] + lamda02*r02[1]*r02[1]; + v[2] = lamda01*r01[2]*r01[2] + lamda02*r02[2]*r02[2]; + v[3] = lamda01*r01[0]*r01[1] + lamda02*r02[0]*r02[1]; + v[4] = lamda01*r01[0]*r01[2] + lamda02*r02[0]*r02[2]; + v[5] = lamda01*r01[1]*r01[2] + lamda02*r02[1]*r02[2]; + + v_tally(ev,nlist,list,3.0,v); + } +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void FixShakeKokkos::shake4(int m, EV_FLOAT& ev) const +{ + + // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + + auto v_f = ScatterViewHelper::value,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); + auto a_f = v_f.template access::value>(); + + int nlist,list[4]; + double v[6]; + double invmass0,invmass1,invmass2,invmass3; + + // local atom IDs and constraint distances + + int i0 = map_array(d_shake_atom(m,0)); + int i1 = map_array(d_shake_atom(m,1)); + int i2 = map_array(d_shake_atom(m,2)); + int i3 = map_array(d_shake_atom(m,3)); + double bond1 = d_bond_distance[d_shake_type(m,0)]; + double bond2 = d_bond_distance[d_shake_type(m,1)]; + double bond3 = d_bond_distance[d_shake_type(m,2)]; + + // r01,r02,r03 = distance vec between atoms, with PBC + + double r01[3]; + r01[0] = d_x(i0,0) - d_x(i1,0); + r01[1] = d_x(i0,1) - d_x(i1,1); + r01[2] = d_x(i0,2) - d_x(i1,2); + minimum_image(r01); + + double r02[3]; + r02[0] = d_x(i0,0) - d_x(i2,0); + r02[1] = d_x(i0,1) - d_x(i2,1); + r02[2] = d_x(i0,2) - d_x(i2,2); + minimum_image(r02); + + double r03[3]; + r03[0] = d_x(i0,0) - d_x(i3,0); + r03[1] = d_x(i0,1) - d_x(i3,1); + r03[2] = d_x(i0,2) - d_x(i3,2); + minimum_image(r03); + + // s01,s02,s03 = distance vec after unconstrained update, with PBC + // use Domain::minimum_image_once(), not minimum_image() + // b/c xshake values might be huge, due to e.g. fix gcmc + + double s01[3]; + s01[0] = d_xshake(i0,0) - d_xshake(i1,0); + s01[1] = d_xshake(i0,1) - d_xshake(i1,1); + s01[2] = d_xshake(i0,2) - d_xshake(i1,2); + minimum_image_once(s01); + + double s02[3]; + s02[0] = d_xshake(i0,0) - d_xshake(i2,0); + s02[1] = d_xshake(i0,1) - d_xshake(i2,1); + s02[2] = d_xshake(i0,2) - d_xshake(i2,2); + minimum_image_once(s02); + + double s03[3]; + s03[0] = d_xshake(i0,0) - d_xshake(i3,0); + s03[1] = d_xshake(i0,1) - d_xshake(i3,1); + s03[2] = d_xshake(i0,2) - d_xshake(i3,2); + minimum_image_once(s03); + + // scalar distances between atoms + + double r01sq = r01[0]*r01[0] + r01[1]*r01[1] + r01[2]*r01[2]; + double r02sq = r02[0]*r02[0] + r02[1]*r02[1] + r02[2]*r02[2]; + double r03sq = r03[0]*r03[0] + r03[1]*r03[1] + r03[2]*r03[2]; + double s01sq = s01[0]*s01[0] + s01[1]*s01[1] + s01[2]*s01[2]; + double s02sq = s02[0]*s02[0] + s02[1]*s02[1] + s02[2]*s02[2]; + double s03sq = s03[0]*s03[0] + s03[1]*s03[1] + s03[2]*s03[2]; + + // matrix coeffs and rhs for lamda equations + + if (d_rmass.data()) { + invmass0 = 1.0/d_rmass[i0]; + invmass1 = 1.0/d_rmass[i1]; + invmass2 = 1.0/d_rmass[i2]; + invmass3 = 1.0/d_rmass[i3]; + } else { + invmass0 = 1.0/d_mass[d_type[i0]]; + invmass1 = 1.0/d_mass[d_type[i1]]; + invmass2 = 1.0/d_mass[d_type[i2]]; + invmass3 = 1.0/d_mass[d_type[i3]]; + } + + double a11 = 2.0 * (invmass0+invmass1) * + (s01[0]*r01[0] + s01[1]*r01[1] + s01[2]*r01[2]); + double a12 = 2.0 * invmass0 * + (s01[0]*r02[0] + s01[1]*r02[1] + s01[2]*r02[2]); + double a13 = 2.0 * invmass0 * + (s01[0]*r03[0] + s01[1]*r03[1] + s01[2]*r03[2]); + double a21 = 2.0 * invmass0 * + (s02[0]*r01[0] + s02[1]*r01[1] + s02[2]*r01[2]); + double a22 = 2.0 * (invmass0+invmass2) * + (s02[0]*r02[0] + s02[1]*r02[1] + s02[2]*r02[2]); + double a23 = 2.0 * invmass0 * + (s02[0]*r03[0] + s02[1]*r03[1] + s02[2]*r03[2]); + double a31 = 2.0 * invmass0 * + (s03[0]*r01[0] + s03[1]*r01[1] + s03[2]*r01[2]); + double a32 = 2.0 * invmass0 * + (s03[0]*r02[0] + s03[1]*r02[1] + s03[2]*r02[2]); + double a33 = 2.0 * (invmass0+invmass3) * + (s03[0]*r03[0] + s03[1]*r03[1] + s03[2]*r03[2]); + + // inverse of matrix; + + double determ = a11*a22*a33 + a12*a23*a31 + a13*a21*a32 - + a11*a23*a32 - a12*a21*a33 - a13*a22*a31; + if (determ == 0.0) d_error_flag() = 3; + //error->one(FLERR,"Shake determinant = 0.0"); + double determinv = 1.0/determ; + + double a11inv = determinv * (a22*a33 - a23*a32); + double a12inv = -determinv * (a12*a33 - a13*a32); + double a13inv = determinv * (a12*a23 - a13*a22); + double a21inv = -determinv * (a21*a33 - a23*a31); + double a22inv = determinv * (a11*a33 - a13*a31); + double a23inv = -determinv * (a11*a23 - a13*a21); + double a31inv = determinv * (a21*a32 - a22*a31); + double a32inv = -determinv * (a11*a32 - a12*a31); + double a33inv = determinv * (a11*a22 - a12*a21); + + // quadratic correction coeffs + + double r0102 = (r01[0]*r02[0] + r01[1]*r02[1] + r01[2]*r02[2]); + double r0103 = (r01[0]*r03[0] + r01[1]*r03[1] + r01[2]*r03[2]); + double r0203 = (r02[0]*r03[0] + r02[1]*r03[1] + r02[2]*r03[2]); + + double quad1_0101 = (invmass0+invmass1)*(invmass0+invmass1) * r01sq; + double quad1_0202 = invmass0*invmass0 * r02sq; + double quad1_0303 = invmass0*invmass0 * r03sq; + double quad1_0102 = 2.0 * (invmass0+invmass1)*invmass0 * r0102; + double quad1_0103 = 2.0 * (invmass0+invmass1)*invmass0 * r0103; + double quad1_0203 = 2.0 * invmass0*invmass0 * r0203; + + double quad2_0101 = invmass0*invmass0 * r01sq; + double quad2_0202 = (invmass0+invmass2)*(invmass0+invmass2) * r02sq; + double quad2_0303 = invmass0*invmass0 * r03sq; + double quad2_0102 = 2.0 * (invmass0+invmass2)*invmass0 * r0102; + double quad2_0103 = 2.0 * invmass0*invmass0 * r0103; + double quad2_0203 = 2.0 * (invmass0+invmass2)*invmass0 * r0203; + + double quad3_0101 = invmass0*invmass0 * r01sq; + double quad3_0202 = invmass0*invmass0 * r02sq; + double quad3_0303 = (invmass0+invmass3)*(invmass0+invmass3) * r03sq; + double quad3_0102 = 2.0 * invmass0*invmass0 * r0102; + double quad3_0103 = 2.0 * (invmass0+invmass3)*invmass0 * r0103; + double quad3_0203 = 2.0 * (invmass0+invmass3)*invmass0 * r0203; + + // iterate until converged + + double lamda01 = 0.0; + double lamda02 = 0.0; + double lamda03 = 0.0; + int niter = 0; + int done = 0; + + double quad1,quad2,quad3,b1,b2,b3,lamda01_new,lamda02_new,lamda03_new; + + while (!done && niter < max_iter) { + quad1 = quad1_0101 * lamda01*lamda01 + + quad1_0202 * lamda02*lamda02 + + quad1_0303 * lamda03*lamda03 + + quad1_0102 * lamda01*lamda02 + + quad1_0103 * lamda01*lamda03 + + quad1_0203 * lamda02*lamda03; + + quad2 = quad2_0101 * lamda01*lamda01 + + quad2_0202 * lamda02*lamda02 + + quad2_0303 * lamda03*lamda03 + + quad2_0102 * lamda01*lamda02 + + quad2_0103 * lamda01*lamda03 + + quad2_0203 * lamda02*lamda03; + + quad3 = quad3_0101 * lamda01*lamda01 + + quad3_0202 * lamda02*lamda02 + + quad3_0303 * lamda03*lamda03 + + quad3_0102 * lamda01*lamda02 + + quad3_0103 * lamda01*lamda03 + + quad3_0203 * lamda02*lamda03; + + b1 = bond1*bond1 - s01sq - quad1; + b2 = bond2*bond2 - s02sq - quad2; + b3 = bond3*bond3 - s03sq - quad3; + + lamda01_new = a11inv*b1 + a12inv*b2 + a13inv*b3; + lamda02_new = a21inv*b1 + a22inv*b2 + a23inv*b3; + lamda03_new = a31inv*b1 + a32inv*b2 + a33inv*b3; + + done = 1; + if (fabs(lamda01_new-lamda01) > tolerance) done = 0; + if (fabs(lamda02_new-lamda02) > tolerance) done = 0; + if (fabs(lamda03_new-lamda03) > tolerance) done = 0; + + lamda01 = lamda01_new; + lamda02 = lamda02_new; + lamda03 = lamda03_new; + + // stop iterations before we have a floating point overflow + // max double is < 1.0e308, so 1e150 is a reasonable cutoff + + if (fabs(lamda01) > 1e150 || fabs(lamda02) > 1e150 + || fabs(lamda03) > 1e150) done = 1; + + niter++; + } + + // update forces if atom is owned by this processor + + lamda01 = lamda01/dtfsq; + lamda02 = lamda02/dtfsq; + lamda03 = lamda03/dtfsq; + + if (i0 < nlocal) { + a_f(i0,0) += lamda01*r01[0] + lamda02*r02[0] + lamda03*r03[0]; + a_f(i0,1) += lamda01*r01[1] + lamda02*r02[1] + lamda03*r03[1]; + a_f(i0,2) += lamda01*r01[2] + lamda02*r02[2] + lamda03*r03[2]; + } + + if (i1 < nlocal) { + a_f(i1,0) -= lamda01*r01[0]; + a_f(i1,1) -= lamda01*r01[1]; + a_f(i1,2) -= lamda01*r01[2]; + } + + if (i2 < nlocal) { + a_f(i2,0) -= lamda02*r02[0]; + a_f(i2,1) -= lamda02*r02[1]; + a_f(i2,2) -= lamda02*r02[2]; + } + + if (i3 < nlocal) { + a_f(i3,0) -= lamda03*r03[0]; + a_f(i3,1) -= lamda03*r03[1]; + a_f(i3,2) -= lamda03*r03[2]; + } + + if (EVFLAG) { + nlist = 0; + if (i0 < nlocal) list[nlist++] = i0; + if (i1 < nlocal) list[nlist++] = i1; + if (i2 < nlocal) list[nlist++] = i2; + if (i3 < nlocal) list[nlist++] = i3; + + v[0] = lamda01*r01[0]*r01[0]+lamda02*r02[0]*r02[0]+lamda03*r03[0]*r03[0]; + v[1] = lamda01*r01[1]*r01[1]+lamda02*r02[1]*r02[1]+lamda03*r03[1]*r03[1]; + v[2] = lamda01*r01[2]*r01[2]+lamda02*r02[2]*r02[2]+lamda03*r03[2]*r03[2]; + v[3] = lamda01*r01[0]*r01[1]+lamda02*r02[0]*r02[1]+lamda03*r03[0]*r03[1]; + v[4] = lamda01*r01[0]*r01[2]+lamda02*r02[0]*r02[2]+lamda03*r03[0]*r03[2]; + v[5] = lamda01*r01[1]*r01[2]+lamda02*r02[1]*r02[2]+lamda03*r03[1]*r03[2]; + + v_tally(ev,nlist,list,4.0,v); + } +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void FixShakeKokkos::shake3angle(int m, EV_FLOAT& ev) const +{ + + // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + + auto v_f = ScatterViewHelper::value,decltype(dup_f),decltype(ndup_f)>::get(dup_f,ndup_f); + auto a_f = v_f.template access::value>(); + + int nlist,list[3]; + double v[6]; + double invmass0,invmass1,invmass2; + + // local atom IDs and constraint distances + + int i0 = map_array(d_shake_atom(m,0)); + int i1 = map_array(d_shake_atom(m,1)); + int i2 = map_array(d_shake_atom(m,2)); + double bond1 = d_bond_distance[d_shake_type(m,0)]; + double bond2 = d_bond_distance[d_shake_type(m,1)]; + double bond12 = d_angle_distance[d_shake_type(m,2)]; + + // r01,r02,r12 = distance vec between atoms, with PBC + + double r01[3]; + r01[0] = d_x(i0,0) - d_x(i1,0); + r01[1] = d_x(i0,1) - d_x(i1,1); + r01[2] = d_x(i0,2) - d_x(i1,2); + minimum_image(r01); + + double r02[3]; + r02[0] = d_x(i0,0) - d_x(i2,0); + r02[1] = d_x(i0,1) - d_x(i2,1); + r02[2] = d_x(i0,2) - d_x(i2,2); + minimum_image(r02); + + double r12[3]; + r12[0] = d_x(i1,0) - d_x(i2,0); + r12[1] = d_x(i1,1) - d_x(i2,1); + r12[2] = d_x(i1,2) - d_x(i2,2); + minimum_image(r12); + + // s01,s02,s12 = distance vec after unconstrained update, with PBC + // use Domain::minimum_image_once(), not minimum_image() + // b/c xshake values might be huge, due to e.g. fix gcmc + + double s01[3]; + s01[0] = d_xshake(i0,0) - d_xshake(i1,0); + s01[1] = d_xshake(i0,1) - d_xshake(i1,1); + s01[2] = d_xshake(i0,2) - d_xshake(i1,2); + minimum_image_once(s01); + + double s02[3]; + s02[0] = d_xshake(i0,0) - d_xshake(i2,0); + s02[1] = d_xshake(i0,1) - d_xshake(i2,1); + s02[2] = d_xshake(i0,2) - d_xshake(i2,2); + minimum_image_once(s02); + + double s12[3]; + s12[0] = d_xshake(i1,0) - d_xshake(i2,0); + s12[1] = d_xshake(i1,1) - d_xshake(i2,1); + s12[2] = d_xshake(i1,2) - d_xshake(i2,2); + minimum_image_once(s12); + + // scalar distances between atoms + + double r01sq = r01[0]*r01[0] + r01[1]*r01[1] + r01[2]*r01[2]; + double r02sq = r02[0]*r02[0] + r02[1]*r02[1] + r02[2]*r02[2]; + double r12sq = r12[0]*r12[0] + r12[1]*r12[1] + r12[2]*r12[2]; + double s01sq = s01[0]*s01[0] + s01[1]*s01[1] + s01[2]*s01[2]; + double s02sq = s02[0]*s02[0] + s02[1]*s02[1] + s02[2]*s02[2]; + double s12sq = s12[0]*s12[0] + s12[1]*s12[1] + s12[2]*s12[2]; + + // matrix coeffs and rhs for lamda equations + + if (d_rmass.data()) { + invmass0 = 1.0/d_rmass[i0]; + invmass1 = 1.0/d_rmass[i1]; + invmass2 = 1.0/d_rmass[i2]; + } else { + invmass0 = 1.0/d_mass[d_type[i0]]; + invmass1 = 1.0/d_mass[d_type[i1]]; + invmass2 = 1.0/d_mass[d_type[i2]]; + } + + double a11 = 2.0 * (invmass0+invmass1) * + (s01[0]*r01[0] + s01[1]*r01[1] + s01[2]*r01[2]); + double a12 = 2.0 * invmass0 * + (s01[0]*r02[0] + s01[1]*r02[1] + s01[2]*r02[2]); + double a13 = - 2.0 * invmass1 * + (s01[0]*r12[0] + s01[1]*r12[1] + s01[2]*r12[2]); + double a21 = 2.0 * invmass0 * + (s02[0]*r01[0] + s02[1]*r01[1] + s02[2]*r01[2]); + double a22 = 2.0 * (invmass0+invmass2) * + (s02[0]*r02[0] + s02[1]*r02[1] + s02[2]*r02[2]); + double a23 = 2.0 * invmass2 * + (s02[0]*r12[0] + s02[1]*r12[1] + s02[2]*r12[2]); + double a31 = - 2.0 * invmass1 * + (s12[0]*r01[0] + s12[1]*r01[1] + s12[2]*r01[2]); + double a32 = 2.0 * invmass2 * + (s12[0]*r02[0] + s12[1]*r02[1] + s12[2]*r02[2]); + double a33 = 2.0 * (invmass1+invmass2) * + (s12[0]*r12[0] + s12[1]*r12[1] + s12[2]*r12[2]); + + // inverse of matrix + + double determ = a11*a22*a33 + a12*a23*a31 + a13*a21*a32 - + a11*a23*a32 - a12*a21*a33 - a13*a22*a31; + if (determ == 0.0) d_error_flag() = 3; + //error->one(FLERR,"Shake determinant = 0.0"); + double determinv = 1.0/determ; + + double a11inv = determinv * (a22*a33 - a23*a32); + double a12inv = -determinv * (a12*a33 - a13*a32); + double a13inv = determinv * (a12*a23 - a13*a22); + double a21inv = -determinv * (a21*a33 - a23*a31); + double a22inv = determinv * (a11*a33 - a13*a31); + double a23inv = -determinv * (a11*a23 - a13*a21); + double a31inv = determinv * (a21*a32 - a22*a31); + double a32inv = -determinv * (a11*a32 - a12*a31); + double a33inv = determinv * (a11*a22 - a12*a21); + + // quadratic correction coeffs + + double r0102 = (r01[0]*r02[0] + r01[1]*r02[1] + r01[2]*r02[2]); + double r0112 = (r01[0]*r12[0] + r01[1]*r12[1] + r01[2]*r12[2]); + double r0212 = (r02[0]*r12[0] + r02[1]*r12[1] + r02[2]*r12[2]); + + double quad1_0101 = (invmass0+invmass1)*(invmass0+invmass1) * r01sq; + double quad1_0202 = invmass0*invmass0 * r02sq; + double quad1_1212 = invmass1*invmass1 * r12sq; + double quad1_0102 = 2.0 * (invmass0+invmass1)*invmass0 * r0102; + double quad1_0112 = - 2.0 * (invmass0+invmass1)*invmass1 * r0112; + double quad1_0212 = - 2.0 * invmass0*invmass1 * r0212; + + double quad2_0101 = invmass0*invmass0 * r01sq; + double quad2_0202 = (invmass0+invmass2)*(invmass0+invmass2) * r02sq; + double quad2_1212 = invmass2*invmass2 * r12sq; + double quad2_0102 = 2.0 * (invmass0+invmass2)*invmass0 * r0102; + double quad2_0112 = 2.0 * invmass0*invmass2 * r0112; + double quad2_0212 = 2.0 * (invmass0+invmass2)*invmass2 * r0212; + + double quad3_0101 = invmass1*invmass1 * r01sq; + double quad3_0202 = invmass2*invmass2 * r02sq; + double quad3_1212 = (invmass1+invmass2)*(invmass1+invmass2) * r12sq; + double quad3_0102 = - 2.0 * invmass1*invmass2 * r0102; + double quad3_0112 = - 2.0 * (invmass1+invmass2)*invmass1 * r0112; + double quad3_0212 = 2.0 * (invmass1+invmass2)*invmass2 * r0212; + + // iterate until converged + + double lamda01 = 0.0; + double lamda02 = 0.0; + double lamda12 = 0.0; + int niter = 0; + int done = 0; + + double quad1,quad2,quad3,b1,b2,b3,lamda01_new,lamda02_new,lamda12_new; + + while (!done && niter < max_iter) { + + quad1 = quad1_0101 * lamda01*lamda01 + + quad1_0202 * lamda02*lamda02 + + quad1_1212 * lamda12*lamda12 + + quad1_0102 * lamda01*lamda02 + + quad1_0112 * lamda01*lamda12 + + quad1_0212 * lamda02*lamda12; + + quad2 = quad2_0101 * lamda01*lamda01 + + quad2_0202 * lamda02*lamda02 + + quad2_1212 * lamda12*lamda12 + + quad2_0102 * lamda01*lamda02 + + quad2_0112 * lamda01*lamda12 + + quad2_0212 * lamda02*lamda12; + + quad3 = quad3_0101 * lamda01*lamda01 + + quad3_0202 * lamda02*lamda02 + + quad3_1212 * lamda12*lamda12 + + quad3_0102 * lamda01*lamda02 + + quad3_0112 * lamda01*lamda12 + + quad3_0212 * lamda02*lamda12; + + b1 = bond1*bond1 - s01sq - quad1; + b2 = bond2*bond2 - s02sq - quad2; + b3 = bond12*bond12 - s12sq - quad3; + + lamda01_new = a11inv*b1 + a12inv*b2 + a13inv*b3; + lamda02_new = a21inv*b1 + a22inv*b2 + a23inv*b3; + lamda12_new = a31inv*b1 + a32inv*b2 + a33inv*b3; + + done = 1; + if (fabs(lamda01_new-lamda01) > tolerance) done = 0; + if (fabs(lamda02_new-lamda02) > tolerance) done = 0; + if (fabs(lamda12_new-lamda12) > tolerance) done = 0; + + lamda01 = lamda01_new; + lamda02 = lamda02_new; + lamda12 = lamda12_new; + + // stop iterations before we have a floating point overflow + // max double is < 1.0e308, so 1e150 is a reasonable cutoff + + if (fabs(lamda01) > 1e150 || fabs(lamda02) > 1e150 + || fabs(lamda12) > 1e150) done = 1; + + niter++; + } + + // update forces if atom is owned by this processor + + lamda01 = lamda01/dtfsq; + lamda02 = lamda02/dtfsq; + lamda12 = lamda12/dtfsq; + + if (i0 < nlocal) { + a_f(i0,0) += lamda01*r01[0] + lamda02*r02[0]; + a_f(i0,1) += lamda01*r01[1] + lamda02*r02[1]; + a_f(i0,2) += lamda01*r01[2] + lamda02*r02[2]; + } + + if (i1 < nlocal) { + a_f(i1,0) -= lamda01*r01[0] - lamda12*r12[0]; + a_f(i1,1) -= lamda01*r01[1] - lamda12*r12[1]; + a_f(i1,2) -= lamda01*r01[2] - lamda12*r12[2]; + } + + if (i2 < nlocal) { + a_f(i2,0) -= lamda02*r02[0] + lamda12*r12[0]; + a_f(i2,1) -= lamda02*r02[1] + lamda12*r12[1]; + a_f(i2,2) -= lamda02*r02[2] + lamda12*r12[2]; + } + + if (EVFLAG) { + nlist = 0; + if (i0 < nlocal) list[nlist++] = i0; + if (i1 < nlocal) list[nlist++] = i1; + if (i2 < nlocal) list[nlist++] = i2; + + v[0] = lamda01*r01[0]*r01[0]+lamda02*r02[0]*r02[0]+lamda12*r12[0]*r12[0]; + v[1] = lamda01*r01[1]*r01[1]+lamda02*r02[1]*r02[1]+lamda12*r12[1]*r12[1]; + v[2] = lamda01*r01[2]*r01[2]+lamda02*r02[2]*r02[2]+lamda12*r12[2]*r12[2]; + v[3] = lamda01*r01[0]*r01[1]+lamda02*r02[0]*r02[1]+lamda12*r12[0]*r12[1]; + v[4] = lamda01*r01[0]*r01[2]+lamda02*r02[0]*r02[2]+lamda12*r12[0]*r12[2]; + v[5] = lamda01*r01[1]*r01[2]+lamda02*r02[1]*r02[2]+lamda12*r12[1]*r12[2]; + + v_tally(ev,nlist,list,3.0,v); + } +} + +/* ---------------------------------------------------------------------- + allocate local atom-based arrays +------------------------------------------------------------------------- */ + +template +void FixShakeKokkos::grow_arrays(int nmax) +{ + memoryKK->grow_kokkos(k_shake_flag,shake_flag,nmax,"shake:shake_flag"); + memoryKK->grow_kokkos(k_shake_atom,shake_atom,nmax,4,"shake:shake_atom"); + memoryKK->grow_kokkos(k_shake_type,shake_type,nmax,3,"shake:shake_type"); + memoryKK->destroy_kokkos(k_xshake,xshake); + memoryKK->create_kokkos(k_xshake,xshake,nmax,"shake:xshake"); + + d_shake_flag = k_shake_flag.view(); + d_shake_atom = k_shake_atom.view(); + d_shake_type = k_shake_type.view(); + d_xshake = k_xshake.view(); + + memory->destroy(ftmp); + memory->create(ftmp,nmax,3,"shake:ftmp"); + memory->destroy(vtmp); + memory->create(vtmp,nmax,3,"shake:vtmp"); +} + +/* ---------------------------------------------------------------------- + copy values within local atom-based arrays +------------------------------------------------------------------------- */ + +template +void FixShakeKokkos::copy_arrays(int i, int j, int delflag) +{ + k_shake_flag.sync_host(); + k_shake_atom.sync_host(); + k_shake_type.sync_host(); + + FixShake::copy_arrays(i,j,delflag); + + k_shake_flag.modify_host(); + k_shake_atom.modify_host(); + k_shake_type.modify_host(); +} + +/* ---------------------------------------------------------------------- + initialize one atom's array values, called when atom is created +------------------------------------------------------------------------- */ + +template +void FixShakeKokkos::set_arrays(int i) +{ + k_shake_flag.sync_host(); + + shake_flag[i] = 0; + + k_shake_flag.modify_host(); +} + +/* ---------------------------------------------------------------------- + update one atom's array values + called when molecule is created from fix gcmc +------------------------------------------------------------------------- */ + +template +void FixShakeKokkos::update_arrays(int i, int atom_offset) +{ + k_shake_flag.sync_host(); + k_shake_atom.sync_host(); + + FixShake::update_arrays(i,atom_offset); + + k_shake_flag.modify_host(); + k_shake_atom.modify_host(); +} + +/* ---------------------------------------------------------------------- + initialize a molecule inserted by another fix, e.g. deposit or pour + called when molecule is created + nlocalprev = # of atoms on this proc before molecule inserted + tagprev = atom ID previous to new atoms in the molecule + xgeom,vcm,quat ignored +------------------------------------------------------------------------- */ + +template +void FixShakeKokkos::set_molecule(int nlocalprev, tagint tagprev, int imol, + double * xgeom, double * vcm, double * quat) +{ + atomKK->sync(Host,TAG_MASK); + k_shake_flag.sync_host(); + k_shake_atom.sync_host(); + k_shake_type.sync_host(); + + FixShake::set_molecule(nlocalprev,tagprev,imol,xgeom,vcm,quat); + + k_shake_atom.modify_host(); + k_shake_type.modify_host(); +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based arrays for exchange with another proc +------------------------------------------------------------------------- */ + +template +int FixShakeKokkos::pack_exchange(int i, double *buf) +{ + k_shake_flag.sync_host(); + k_shake_atom.sync_host(); + k_shake_type.sync_host(); + + int m = FixShake::pack_exchange(i,buf); + + k_shake_flag.modify_host(); + k_shake_atom.modify_host(); + k_shake_type.modify_host(); + + return m; +} + +/* ---------------------------------------------------------------------- + unpack values in local atom-based arrays from exchange with another proc +------------------------------------------------------------------------- */ + +template +int FixShakeKokkos::unpack_exchange(int nlocal, double *buf) +{ + k_shake_flag.sync_host(); + k_shake_atom.sync_host(); + k_shake_type.sync_host(); + + int m = FixShake::unpack_exchange(nlocal,buf); + + k_shake_flag.modify_host(); + k_shake_atom.modify_host(); + k_shake_type.modify_host(); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +int FixShakeKokkos::pack_forward_comm_fix_kokkos(int n, DAT::tdual_int_2d k_sendlist, + int iswap_in, DAT::tdual_xfloat_1d &k_buf, + int pbc_flag, int* pbc) +{ + d_sendlist = k_sendlist.view(); + iswap = iswap_in; + d_buf = k_buf.view(); + + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + + if (pbc_flag) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,n),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,n),*this); + return n*3; +} + +template +template +KOKKOS_INLINE_FUNCTION +void FixShakeKokkos::operator()(TagFixShakePackForwardComm, const int &i) const { + const int j = d_sendlist(iswap, i); + + if (PBC_FLAG == 0) { + d_buf[3*i] = d_xshake(j,0); + d_buf[3*i+1] = d_xshake(j,1); + d_buf[3*i+2] = d_xshake(j,2); + } else { + d_buf[3*i] = d_xshake(j,0) + dx; + d_buf[3*i+1] = d_xshake(j,1) + dy; + d_buf[3*i+2] = d_xshake(j,2) + dz; + } +} + +/* ---------------------------------------------------------------------- */ + +template +int FixShakeKokkos::pack_forward_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + k_xshake.sync_host(); + + int m = FixShake::pack_forward_comm(n,list,buf,pbc_flag,pbc); + + k_xshake.modify_host(); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShakeKokkos::unpack_forward_comm_fix_kokkos(int n, int first_in, DAT::tdual_xfloat_1d &buf) +{ + first = first_in; + d_buf = buf.view(); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); +} + +template +KOKKOS_INLINE_FUNCTION +void FixShakeKokkos::operator()(TagFixShakeUnpackForwardComm, const int &i) const { + d_xshake(i + first,0) = d_buf[3*i]; + d_xshake(i + first,1) = d_buf[3*i+1]; + d_xshake(i + first,2) = d_buf[3*i+2]; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShakeKokkos::unpack_forward_comm(int n, int first, double *buf) +{ + k_xshake.sync_host(); + + FixShake::unpack_forward_comm(n,first,buf); + + k_xshake.modify_host(); +} + +/* ---------------------------------------------------------------------- + add coordinate constraining forces + this method is called at the end of a timestep +------------------------------------------------------------------------- */ + +template +void FixShakeKokkos::shake_end_of_step(int vflag) { + dtv = update->dt; + dtfsq = 0.5 * update->dt * update->dt * force->ftm2v; + FixShakeKokkos::post_force(vflag); + if (!rattle) dtfsq = update->dt * update->dt * force->ftm2v; +} + +/* ---------------------------------------------------------------------- + calculate constraining forces based on the current configuration + change coordinates +------------------------------------------------------------------------- */ + +template +void FixShakeKokkos::correct_coordinates(int vflag) { + atomKK->sync(Host,X_MASK|V_MASK|F_MASK); + + // save current forces and velocities so that you + // initialize them to zero such that FixShake::unconstrained_coordinate_update has no effect + + for (int j=0; jmodified(Host,V_MASK|F_MASK); + + // call SHAKE to correct the coordinates which were updated without constraints + // IMPORTANT: use 1 as argument and thereby enforce velocity Verlet + + dtfsq = 0.5 * update->dt * update->dt * force->ftm2v; + FixShakeKokkos::post_force(vflag); + + atomKK->sync(Host,X_MASK|F_MASK); + + // integrate coordinates: x' = xnp1 + dt^2/2m_i * f, where f is the constraining force + // NOTE: After this command, the coordinates geometry of the molecules will be correct! + + double dtfmsq; + if (rmass) { + for (int i = 0; i < nlocal; i++) { + dtfmsq = dtfsq/ rmass[i]; + x[i][0] = x[i][0] + dtfmsq*f[i][0]; + x[i][1] = x[i][1] + dtfmsq*f[i][1]; + x[i][2] = x[i][2] + dtfmsq*f[i][2]; + } + } + else { + for (int i = 0; i < nlocal; i++) { + dtfmsq = dtfsq / mass[type[i]]; + x[i][0] = x[i][0] + dtfmsq*f[i][0]; + x[i][1] = x[i][1] + dtfmsq*f[i][1]; + x[i][2] = x[i][2] + dtfmsq*f[i][2]; + } + } + + // copy forces and velocities back + + for (int j=0; jdt * update->dt * force->ftm2v; + + // communicate changes + // NOTE: for compatibility xshake is temporarily set to x, such that pack/unpack_forward + // can be used for communicating the coordinates. + + double **xtmp = xshake; + xshake = x; + if (nprocs > 1) { + forward_comm_device = 0; + comm->forward_comm_fix(this); + forward_comm_device = 1; + } + xshake = xtmp; + + atomKK->modified(Host,X_MASK|V_MASK|F_MASK); +} + +/* ---------------------------------------------------------------------- + tally virial into global and per-atom accumulators + n = # of local owned atoms involved, with local indices in list + v = total virial for the interaction involving total atoms + increment global virial by n/total fraction + increment per-atom virial of each atom in list by 1/total fraction + this method can be used when fix computes forces in post_force() + e.g. fix shake, fix rigid: compute virial only on owned atoms + whether newton_bond is on or off + other procs will tally left-over fractions for atoms they own +------------------------------------------------------------------------- */ +template +template +KOKKOS_INLINE_FUNCTION +void FixShakeKokkos::v_tally(EV_FLOAT &ev, int n, int *list, double total, + double *v) const +{ + int m; + + if (vflag_global) { + double fraction = n/total; + ev.v[0] += fraction*v[0]; + ev.v[1] += fraction*v[1]; + ev.v[2] += fraction*v[2]; + ev.v[3] += fraction*v[3]; + ev.v[4] += fraction*v[4]; + ev.v[5] += fraction*v[5]; + } + + if (vflag_atom) { + double fraction = 1.0/total; + for (int i = 0; i < n; i++) { + auto v_vatom = ScatterViewHelper::value,decltype(dup_vatom),decltype(ndup_vatom)>::get(dup_vatom,ndup_vatom); + auto a_vatom = v_vatom.template access::value>(); + m = list[i]; + a_vatom(m,0) += fraction*v[0]; + a_vatom(m,1) += fraction*v[1]; + a_vatom(m,2) += fraction*v[2]; + a_vatom(m,3) += fraction*v[3]; + a_vatom(m,4) += fraction*v[4]; + a_vatom(m,5) += fraction*v[5]; + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShakeKokkos::update_domain_variables() +{ + triclinic = domain->triclinic; + xperiodic = domain->xperiodic; + xprd_half = domain->xprd_half; + xprd = domain->xprd; + yperiodic = domain->yperiodic; + yprd_half = domain->yprd_half; + yprd = domain->yprd; + zperiodic = domain->zperiodic; + zprd_half = domain->zprd_half; + zprd = domain->zprd; + xy = domain->xy; + xz = domain->xz; + yz = domain->yz; +} + +/* ---------------------------------------------------------------------- + minimum image convention in periodic dimensions + use 1/2 of box size as test + for triclinic, also add/subtract tilt factors in other dims as needed + changed "if" to "while" to enable distance to + far-away ghost atom returned by atom->map() to be wrapped back into box + could be problem for looking up atom IDs when cutoff > boxsize + this should not be used if atom has moved infinitely far outside box + b/c while could iterate forever + e.g. fix shake prediction of new position with highly overlapped atoms + use minimum_image_once() instead + copied from domain.cpp +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixShakeKokkos::minimum_image(double *delta) const +{ + if (triclinic == 0) { + if (xperiodic) { + while (fabs(delta[0]) > xprd_half) { + if (delta[0] < 0.0) delta[0] += xprd; + else delta[0] -= xprd; + } + } + if (yperiodic) { + while (fabs(delta[1]) > yprd_half) { + if (delta[1] < 0.0) delta[1] += yprd; + else delta[1] -= yprd; + } + } + if (zperiodic) { + while (fabs(delta[2]) > zprd_half) { + if (delta[2] < 0.0) delta[2] += zprd; + else delta[2] -= zprd; + } + } + + } else { + if (zperiodic) { + while (fabs(delta[2]) > zprd_half) { + if (delta[2] < 0.0) { + delta[2] += zprd; + delta[1] += yz; + delta[0] += xz; + } else { + delta[2] -= zprd; + delta[1] -= yz; + delta[0] -= xz; + } + } + } + if (yperiodic) { + while (fabs(delta[1]) > yprd_half) { + if (delta[1] < 0.0) { + delta[1] += yprd; + delta[0] += xy; + } else { + delta[1] -= yprd; + delta[0] -= xy; + } + } + } + if (xperiodic) { + while (fabs(delta[0]) > xprd_half) { + if (delta[0] < 0.0) delta[0] += xprd; + else delta[0] -= xprd; + } + } + } +} + +/* ---------------------------------------------------------------------- + minimum image convention in periodic dimensions + use 1/2 of box size as test + for triclinic, also add/subtract tilt factors in other dims as needed + only shift by one box length in each direction + this should not be used if multiple box shifts are required + copied from domain.cpp +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixShakeKokkos::minimum_image_once(double *delta) const +{ + if (triclinic == 0) { + if (xperiodic) { + if (fabs(delta[0]) > xprd_half) { + if (delta[0] < 0.0) delta[0] += xprd; + else delta[0] -= xprd; + } + } + if (yperiodic) { + if (fabs(delta[1]) > yprd_half) { + if (delta[1] < 0.0) delta[1] += yprd; + else delta[1] -= yprd; + } + } + if (zperiodic) { + if (fabs(delta[2]) > zprd_half) { + if (delta[2] < 0.0) delta[2] += zprd; + else delta[2] -= zprd; + } + } + + } else { + if (zperiodic) { + if (fabs(delta[2]) > zprd_half) { + if (delta[2] < 0.0) { + delta[2] += zprd; + delta[1] += yz; + delta[0] += xz; + } else { + delta[2] -= zprd; + delta[1] -= yz; + delta[0] -= xz; + } + } + } + if (yperiodic) { + if (fabs(delta[1]) > yprd_half) { + if (delta[1] < 0.0) { + delta[1] += yprd; + delta[0] += xy; + } else { + delta[1] -= yprd; + delta[0] -= xy; + } + } + } + if (xperiodic) { + if (fabs(delta[0]) > xprd_half) { + if (delta[0] < 0.0) delta[0] += xprd; + else delta[0] -= xprd; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +namespace LAMMPS_NS { +template class FixShakeKokkos; +#ifdef LMP_KOKKOS_GPU +template class FixShakeKokkos; +#endif +} + diff --git a/src/KOKKOS/fix_shake_kokkos.h b/src/KOKKOS/fix_shake_kokkos.h new file mode 100644 index 0000000000..82743573bd --- /dev/null +++ b/src/KOKKOS/fix_shake_kokkos.h @@ -0,0 +1,211 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(shake/kk,FixShakeKokkos) +FixStyle(shake/kk/device,FixShakeKokkos) +FixStyle(shake/kk/host,FixShakeKokkos) + +#else + +#ifndef LMP_FIX_SHAKE_KOKKOS_H +#define LMP_FIX_SHAKE_KOKKOS_H + +#include "fix_shake.h" +#include "kokkos_type.h" +#include "kokkos_base.h" + +namespace LAMMPS_NS { + +template +struct TagFixShakePostForce{}; + +template +struct TagFixShakePackForwardComm{}; + +struct TagFixShakeUnpackForwardComm{}; + +template +class FixShakeKokkos : public FixShake, public KokkosBase { + + //friend class FixEHEX; + + public: + typedef DeviceType device_type; + typedef EV_FLOAT value_type; + typedef ArrayTypes AT; + + FixShakeKokkos(class LAMMPS *, int, char **); + virtual ~FixShakeKokkos(); + void init(); + void pre_neighbor(); + void post_force(int); + + void grow_arrays(int); + void copy_arrays(int, int, int); + void set_arrays(int); + void update_arrays(int, int); + void set_molecule(int, tagint, int, double *, double *, double *); + + int pack_exchange(int, double *); + int unpack_exchange(int, double *); + int pack_forward_comm_fix_kokkos(int, DAT::tdual_int_2d, int, DAT::tdual_xfloat_1d&, + int, int *); + void unpack_forward_comm_fix_kokkos(int, int, DAT::tdual_xfloat_1d&); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + + void shake_end_of_step(int vflag); + void correct_coordinates(int vflag); + + int dof(int); + + void unconstrained_update(); + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagFixShakePostForce, const int&, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagFixShakePostForce, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagFixShakePackForwardComm, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagFixShakeUnpackForwardComm, const int&) const; + + protected: + + typename AT::t_x_array d_x; + typename AT::t_v_array d_v; + typename AT::t_f_array d_f; + typename AT::t_float_1d d_rmass; + typename AT::t_float_1d d_mass; + typename AT::t_tagint_1d_randomread d_tag; + typename AT::t_int_1d d_type; + typename AT::t_int_1d d_mask; + + DAT::tdual_efloat_1d k_eatom; + typename AT::t_efloat_1d d_eatom; + + DAT::tdual_virial_array k_vatom; + typename AT::t_virial_array d_vatom; + + DAT::tdual_float_1d k_bond_distance; // constraint distances + typename AT::t_float_1d d_bond_distance; + DAT::tdual_float_1d k_angle_distance; + typename AT::t_float_1d d_angle_distance; + + // atom-based arrays + DAT::tdual_int_1d k_shake_flag; + typename AT::t_int_1d d_shake_flag; // 0 if atom not in SHAKE cluster + // 1 = size 3 angle cluster + // 2,3,4 = size of bond-only cluster + DAT::tdual_tagint_2d k_shake_atom; + typename AT::t_tagint_2d d_shake_atom; // global IDs of atoms in cluster + // central atom is 1st + // lowest global ID is 1st for size 2 + DAT::tdual_int_2d k_shake_type; + typename AT::t_int_2d d_shake_type; // bondtype of each bond in cluster + // for angle cluster, 3rd value + // is angletype + DAT::tdual_x_array k_xshake; + typename AT::t_x_array d_xshake; // unconstrained atom coords + + DAT::tdual_int_1d k_list; + typename AT::t_int_1d d_list; // list of clusters to SHAKE + + DAT::tdual_int_scalar k_error_flag; + DAT::tdual_int_scalar k_nlist; + + + template + KOKKOS_INLINE_FUNCTION + void shake(int, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void shake3(int, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void shake4(int, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void shake3angle(int, EV_FLOAT&) const; + + typedef typename KKDevice::value KKDeviceType; + Kokkos::Experimental::ScatterView::value,typename Kokkos::Experimental::ScatterSum,Kokkos::Experimental::ScatterDuplicated> dup_f; + Kokkos::Experimental::ScatterView::value,typename Kokkos::Experimental::ScatterSum,Kokkos::Experimental::ScatterDuplicated> dup_eatom; + Kokkos::Experimental::ScatterView::value,typename Kokkos::Experimental::ScatterSum,Kokkos::Experimental::ScatterDuplicated> dup_vatom; + + Kokkos::Experimental::ScatterView::value,typename Kokkos::Experimental::ScatterSum,Kokkos::Experimental::ScatterNonDuplicated> ndup_f; + Kokkos::Experimental::ScatterView::value,typename Kokkos::Experimental::ScatterSum,Kokkos::Experimental::ScatterNonDuplicated> ndup_eatom; + Kokkos::Experimental::ScatterView::value,typename Kokkos::Experimental::ScatterSum,Kokkos::Experimental::ScatterNonDuplicated> ndup_vatom; + + int neighflag,need_dup; + + typename AT::t_int_1d d_scalars; + HAT::t_int_1d h_scalars; + typename AT::t_int_scalar d_error_flag; + typename AT::t_int_scalar d_nlist; + HAT::t_int_scalar h_error_flag; + HAT::t_int_scalar h_nlist; + + template + KOKKOS_INLINE_FUNCTION + void v_tally(EV_FLOAT&, int, int *, double, double *) const; + + DAT::tdual_int_1d k_map_array; + typename AT::t_int_1d_randomread map_array; + + int iswap; + int first; + typename AT::t_int_2d d_sendlist; + typename AT::t_xfloat_1d_um d_buf; + X_FLOAT dx,dy,dz; + + int *shake_flag_tmp; + tagint **shake_atom_tmp; + int **shake_type_tmp; + + // copied from Domain + + KOKKOS_INLINE_FUNCTION + void minimum_image(double *) const; + + KOKKOS_INLINE_FUNCTION + void minimum_image_once(double *) const; + + void update_domain_variables(); + + int triclinic; + int xperiodic,yperiodic,zperiodic; + X_FLOAT xprd_half,yprd_half,zprd_half; + X_FLOAT xprd,yprd,zprd; + X_FLOAT xy,xz,yz; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/KOKKOS/improper_class2_kokkos.cpp b/src/KOKKOS/improper_class2_kokkos.cpp index f0b27afb3f..68f7223c44 100644 --- a/src/KOKKOS/improper_class2_kokkos.cpp +++ b/src/KOKKOS/improper_class2_kokkos.cpp @@ -43,6 +43,8 @@ ImproperClass2Kokkos::ImproperClass2Kokkos(LAMMPS *lmp) : ImproperCl k_warning_flag = DAT::tdual_int_scalar("Dihedral:warning_flag"); d_warning_flag = k_warning_flag.view(); h_warning_flag = k_warning_flag.h_view; + + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/improper_harmonic_kokkos.cpp b/src/KOKKOS/improper_harmonic_kokkos.cpp index 444088c156..8a64e679bf 100644 --- a/src/KOKKOS/improper_harmonic_kokkos.cpp +++ b/src/KOKKOS/improper_harmonic_kokkos.cpp @@ -44,6 +44,8 @@ ImproperHarmonicKokkos::ImproperHarmonicKokkos(LAMMPS *lmp) : Improp k_warning_flag = Kokkos::DualView("Dihedral:warning_flag"); d_warning_flag = k_warning_flag.template view(); h_warning_flag = k_warning_flag.h_view; + + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/kokkos_base.h b/src/KOKKOS/kokkos_base.h index 1d8f1e93e2..adacaf6ad8 100644 --- a/src/KOKKOS/kokkos_base.h +++ b/src/KOKKOS/kokkos_base.h @@ -28,6 +28,13 @@ class KokkosBase { int, int *) {return 0;}; virtual void unpack_forward_comm_kokkos(int, int, DAT::tdual_xfloat_1d &) {} + // Fix + virtual int pack_forward_comm_fix_kokkos(int, DAT::tdual_int_2d, + int, DAT::tdual_xfloat_1d &, + int, int *) {return 0;}; + virtual void unpack_forward_comm_fix_kokkos(int, int, DAT::tdual_xfloat_1d &) {} + + // Region virtual void match_all_kokkos(int, DAT::tdual_int_1d) {} }; diff --git a/src/KOKKOS/min_cg_kokkos.cpp b/src/KOKKOS/min_cg_kokkos.cpp index 3bf1e8d8d7..f285fea4a3 100644 --- a/src/KOKKOS/min_cg_kokkos.cpp +++ b/src/KOKKOS/min_cg_kokkos.cpp @@ -67,6 +67,8 @@ int MinCGKokkos::iterate(int maxiter) l_g[i] = l_fvec[i]; }); } + if (nextra_global) + for (int i = 0; i < nextra_global; i++) hextra[i] = gextra[i] = fextra[i]; gg = fnorm_sqr(); @@ -111,6 +113,11 @@ int MinCGKokkos::iterate(int maxiter) dot[0] = sdot.d0; dot[1] = sdot.d1; MPI_Allreduce(dot,dotall,2,MPI_DOUBLE,MPI_SUM,world); + if (nextra_global) + for (int i = 0; i < nextra_global; i++) { + dotall[0] += fextra[i]*fextra[i]; + dotall[1] += fextra[i]*gextra[i]; + } fdotf = 0.0; if (update->ftol > 0.0) { @@ -142,6 +149,11 @@ int MinCGKokkos::iterate(int maxiter) l_h[i] = l_g[i] + beta*l_h[i]; }); } + if (nextra_global) + for (int i = 0; i < nextra_global; i++) { + gextra[i] = fextra[i]; + hextra[i] = gextra[i] + beta*hextra[i]; + } // reinitialize CG if new search direction h is not downhill @@ -159,6 +171,9 @@ int MinCGKokkos::iterate(int maxiter) } dot[0] = dot_0; MPI_Allreduce(dot,dotall,1,MPI_DOUBLE,MPI_SUM,world); + if (nextra_global) + for (int i = 0; i < nextra_global; i++) + dotall[0] += gextra[i]*hextra[i]; if (dotall[0] <= 0.0) { // local variables for lambda capture @@ -169,6 +184,8 @@ int MinCGKokkos::iterate(int maxiter) Kokkos::parallel_for(nvec, LAMMPS_LAMBDA(const int& i) { l_h[i] = l_g[i]; }); + if (nextra_global) + for (int i = 0; i < nextra_global; i++) hextra[i] = gextra[i]; } // output for thermo, dump, restart files diff --git a/src/KOKKOS/min_kokkos.cpp b/src/KOKKOS/min_kokkos.cpp index 13d492af86..1fcf1a3c48 100644 --- a/src/KOKKOS/min_kokkos.cpp +++ b/src/KOKKOS/min_kokkos.cpp @@ -75,12 +75,11 @@ void MinKokkos::init() void MinKokkos::setup(int flag) { if (comm->me == 0 && screen) { - fprintf(screen,"Setting up %s style minimization ...\n", - update->minimize_style); + fmt::print(screen,"Setting up {} style minimization ...\n", + update->minimize_style); if (flag) { - fprintf(screen," Unit style : %s\n", update->unit_style); - fprintf(screen," Current step : " BIGINT_FORMAT "\n", - update->ntimestep); + fmt::print(screen," Unit style : {}\n", update->unit_style); + fmt::print(screen," Current step : {}\n", update->ntimestep); timer->print_timeout(screen); } } @@ -115,7 +114,7 @@ void MinKokkos::setup(int flag) bigint ndofme = 3 * static_cast(atom->nlocal); for (int m = 0; m < nextra_atom; m++) - ndofme += extra_peratom[m]*atom->nlocal; + ndofme += extra_peratom[m]*static_cast(atom->nlocal); MPI_Allreduce(&ndofme,&ndoftotal,1,MPI_LMP_BIGINT,MPI_SUM,world); ndoftotal += nextra_global; @@ -174,7 +173,6 @@ void MinKokkos::setup(int flag) atomKK->sync(force->pair->execution_space,force->pair->datamask_read); force->pair->compute(eflag,vflag); atomKK->modified(force->pair->execution_space,force->pair->datamask_modify); - timer->stamp(Timer::PAIR); } else if (force->pair) force->pair->compute_dummy(eflag,vflag); @@ -199,16 +197,14 @@ void MinKokkos::setup(int flag) force->improper->compute(eflag,vflag); atomKK->modified(force->improper->execution_space,force->improper->datamask_modify); } - timer->stamp(Timer::BOND); } - if(force->kspace) { + if (force->kspace) { force->kspace->setup(); if (kspace_compute_flag) { atomKK->sync(force->kspace->execution_space,force->kspace->datamask_read); force->kspace->compute(eflag,vflag); atomKK->modified(force->kspace->execution_space,force->kspace->datamask_modify); - timer->stamp(Timer::KSPACE); } else force->kspace->compute_dummy(eflag,vflag); } @@ -284,7 +280,6 @@ void MinKokkos::setup_minimal(int flag) atomKK->sync(force->pair->execution_space,force->pair->datamask_read); force->pair->compute(eflag,vflag); atomKK->modified(force->pair->execution_space,force->pair->datamask_modify); - timer->stamp(Timer::PAIR); } else if (force->pair) force->pair->compute_dummy(eflag,vflag); @@ -309,16 +304,14 @@ void MinKokkos::setup_minimal(int flag) force->improper->compute(eflag,vflag); atomKK->modified(force->improper->execution_space,force->improper->datamask_modify); } - timer->stamp(Timer::BOND); } - if(force->kspace) { + if (force->kspace) { force->kspace->setup(); if (kspace_compute_flag) { atomKK->sync(force->kspace->execution_space,force->kspace->datamask_read); force->kspace->compute(eflag,vflag); atomKK->modified(force->kspace->execution_space,force->kspace->datamask_modify); - timer->stamp(Timer::KSPACE); } else force->kspace->compute_dummy(eflag,vflag); } @@ -353,11 +346,7 @@ void MinKokkos::setup_minimal(int flag) void MinKokkos::run(int n) { - if (nextra_global) - error->all(FLERR,"Cannot yet use extra global DOFs (e.g. fix box/relax) " - "with Kokkos minimize"); - - if (nextra_global || nextra_atom) + if (nextra_atom) error->all(FLERR,"Cannot yet use extra atom DOFs (e.g. USER-AWPMD and USER-EFF packages) " "with Kokkos minimize"); @@ -514,6 +503,12 @@ double MinKokkos::energy_force(int resetflag) timer->stamp(Timer::COMM); } + // update per-atom minimization variables stored by pair styles + + if (nextra_atom) + for (int m = 0; m < nextra_atom; m++) + requestor[m]->min_xf_get(m); + // fixes that affect minimization if (modify->n_min_post_force) { @@ -602,6 +597,10 @@ double MinKokkos::fnorm_sqr() double norm2_sqr = 0.0; MPI_Allreduce(&local_norm2_sqr,&norm2_sqr,1,MPI_DOUBLE,MPI_SUM,world); + if (nextra_global) + for (int i = 0; i < nextra_global; i++) + norm2_sqr += fextra[i]*fextra[i]; + return norm2_sqr; } @@ -626,6 +625,10 @@ double MinKokkos::fnorm_inf() double norm_inf = 0.0; MPI_Allreduce(&local_norm_inf,&norm_inf,1,MPI_DOUBLE,MPI_MAX,world); + if (nextra_global) + for (int i = 0; i < nextra_global; i++) + norm_inf = MAX(fextra[i]*fextra[i],norm_inf); + return norm_inf; } @@ -651,5 +654,11 @@ double MinKokkos::fnorm_max() double norm_max = 0.0; MPI_Allreduce(&local_norm_max,&norm_max,1,MPI_DOUBLE,MPI_MAX,world); + if (nextra_global) { + for (int i = 0; i < nextra_global; i+=3) { + double fdotf = fextra[i]*fextra[i]; + norm_max = MAX(fdotf,norm_max); + } + } return norm_max; } diff --git a/src/KOKKOS/min_linesearch_kokkos.cpp b/src/KOKKOS/min_linesearch_kokkos.cpp index dbc2c29186..a3cc5fd0ee 100644 --- a/src/KOKKOS/min_linesearch_kokkos.cpp +++ b/src/KOKKOS/min_linesearch_kokkos.cpp @@ -24,6 +24,7 @@ #include "output.h" #include "pair.h" #include "thermo.h" +#include "modify.h" #include @@ -50,13 +51,15 @@ MinLineSearchKokkos::MinLineSearchKokkos(LAMMPS *lmp) : MinKokkos(lmp) { searchflag = 1; atomKK = (AtomKokkos *) atom; + gextra = hextra = nullptr; } /* ---------------------------------------------------------------------- */ MinLineSearchKokkos::~MinLineSearchKokkos() { - + delete [] gextra; + delete [] hextra; } /* ---------------------------------------------------------------------- */ @@ -79,6 +82,13 @@ void MinLineSearchKokkos::setup_style() fix_minimize_kk->add_vector_kokkos(); fix_minimize_kk->add_vector_kokkos(); fix_minimize_kk->add_vector_kokkos(); + + // memory for g,h for extra global dof, fix stores x0 + + if (nextra_global) { + gextra = new double[nextra_global]; + hextra = new double[nextra_global]; + } } /* ---------------------------------------------------------------------- @@ -185,6 +195,8 @@ int MinLineSearchKokkos::linemin_quadratic(double eoriginal, double &alpha) },fdothme); } MPI_Allreduce(&fdothme,&fdothall,1,MPI_DOUBLE,MPI_SUM,world); + if (nextra_global) + for (int i = 0; i < nextra_global; i++) fdothall += fextra[i]*hextra[i]; if (output->thermo->normflag) fdothall /= atom->natoms; if (fdothall <= 0.0) return DOWNHILL; @@ -210,6 +222,12 @@ int MinLineSearchKokkos::linemin_quadratic(double eoriginal, double &alpha) } MPI_Allreduce(&hme,&hmaxall,1,MPI_DOUBLE,MPI_MAX,world); alphamax = MIN(ALPHA_MAX,dmax/hmaxall); + if (nextra_global) { + double alpha_extra = modify->max_alpha(hextra); + alphamax = MIN(alphamax,alpha_extra); + for (int i = 0; i < nextra_global; i++) + hmaxall = MAX(hmaxall,fabs(hextra[i])); + } if (hmaxall == 0.0) return ZEROFORCE; @@ -226,6 +244,7 @@ int MinLineSearchKokkos::linemin_quadratic(double eoriginal, double &alpha) l_x0[i] = l_xvec[i]; }); } + if (nextra_global) modify->min_store(); // backtrack with alpha until energy decrease is sufficient // or until get to small energy change, then perform quadratic projection @@ -265,6 +284,12 @@ int MinLineSearchKokkos::linemin_quadratic(double eoriginal, double &alpha) dot[1] = sdot.d1; MPI_Allreduce(dot,dotall,2,MPI_DOUBLE,MPI_SUM,world); + if (nextra_global) { + for (int i = 0; i < nextra_global; i++) { + dotall[0] += fextra[i]*fextra[i]; + dotall[1] += fextra[i]*hextra[i]; + } + } ff = dotall[0]; fh = dotall[1]; if (output->thermo->normflag) { @@ -290,6 +315,10 @@ int MinLineSearchKokkos::linemin_quadratic(double eoriginal, double &alpha) if (relerr <= QUADRATIC_TOL && alpha0 > 0.0 && alpha0 < alphamax) { ecurrent = alpha_step(alpha0,1); if (ecurrent - eoriginal < EMACH) { + if (nextra_global) { + int itmp = modify->min_reset_ref(); + if (itmp) ecurrent = energy_force(1); + } return 0; } } @@ -299,8 +328,13 @@ int MinLineSearchKokkos::linemin_quadratic(double eoriginal, double &alpha) de_ideal = -BACKTRACK_SLOPE*alpha*fdothall; de = ecurrent - eoriginal; - if (de <= de_ideal) + if (de <= de_ideal) { + if (nextra_global) { + int itmp = modify->min_reset_ref(); + if (itmp) ecurrent = energy_force(1); + } return 0; + } // save previous state @@ -328,6 +362,7 @@ double MinLineSearchKokkos::alpha_step(double alpha, int resetflag) { // reset to starting point + if (nextra_global) modify->min_step(0.0,hextra); atomKK->k_x.clear_sync_state(); // ignore if host positions since device // positions will be reset below { @@ -344,6 +379,8 @@ double MinLineSearchKokkos::alpha_step(double alpha, int resetflag) // step forward along h if (alpha > 0.0) { + if (nextra_global) modify->min_step(alpha,hextra); + // local variables for lambda capture auto l_xvec = xvec; @@ -389,6 +426,12 @@ double MinLineSearchKokkos::compute_dir_deriv(double &ff) dot[1] = sdot.d1; MPI_Allreduce(dot,dotall,2,MPI_DOUBLE,MPI_SUM,world); + if (nextra_global) { + for (int i = 0; i < nextra_global; i++) { + dotall[0] += fextra[i]*fextra[i]; + dotall[1] += fextra[i]*hextra[i]; + } + } ff = dotall[0]; fh = dotall[1]; diff --git a/src/KOKKOS/min_linesearch_kokkos.h b/src/KOKKOS/min_linesearch_kokkos.h index 70df13d1e7..43336335b1 100644 --- a/src/KOKKOS/min_linesearch_kokkos.h +++ b/src/KOKKOS/min_linesearch_kokkos.h @@ -56,6 +56,9 @@ class MinLineSearchKokkos : public MinKokkos { DAT::t_ffloat_1d g; // old gradient vector DAT::t_ffloat_1d h; // search direction vector + double *gextra; // g,h for extra global dof, x0 is stored by fix + double *hextra; + typedef int (MinLineSearchKokkos::*FnPtr)(double, double &); FnPtr linemin; int linemin_quadratic(double, double &); diff --git a/src/KOKKOS/pair_hybrid_kokkos.cpp b/src/KOKKOS/pair_hybrid_kokkos.cpp index d4888883b0..0d28e4a15d 100644 --- a/src/KOKKOS/pair_hybrid_kokkos.cpp +++ b/src/KOKKOS/pair_hybrid_kokkos.cpp @@ -64,23 +64,23 @@ void PairHybridKokkos::compute(int eflag, int vflag) int i,j,m,n; // if no_virial_fdotr_compute is set and global component of - // incoming vflag = 2, then - // reset vflag as if global component were 1 + // incoming vflag = VIRIAL_FDOTR, then + // reset vflag as if global component were VIRIAL_PAIR // necessary since one or more sub-styles cannot compute virial as F dot r int neighflag = lmp->kokkos->neighflag; if (neighflag == FULL) no_virial_fdotr_compute = 1; - if (no_virial_fdotr_compute && vflag % 4 == 2) vflag = 1 + vflag/4 * 4; + if (no_virial_fdotr_compute && vflag & VIRIAL_FDOTR) vflag = VIRIAL_PAIR | (vflag & ~VIRIAL_FDOTR); ev_init(eflag,vflag); - // check if global component of incoming vflag = 2 - // if so, reset vflag passed to substyle as if it were 0 + // check if global component of incoming vflag = VIRIAL_FDOTR + // if so, reset vflag passed to substyle as if it were VIRIAL_NONE // necessary so substyle will not invoke virial_fdotr_compute() int vflag_substyle; - if (vflag % 4 == 2) vflag_substyle = vflag/4 * 4; + if (vflag & VIRIAL_FDOTR) vflag_substyle = VIRIAL_NONE | (vflag & ~VIRIAL_FDOTR); else vflag_substyle = vflag; double *saved_special = save_special(); diff --git a/src/KOKKOS/pair_reaxc_kokkos.cpp b/src/KOKKOS/pair_reaxc_kokkos.cpp index 12d4c3924a..eea397dc69 100644 --- a/src/KOKKOS/pair_reaxc_kokkos.cpp +++ b/src/KOKKOS/pair_reaxc_kokkos.cpp @@ -3629,7 +3629,9 @@ void PairReaxCKokkos::v_tally3_atom(EV_FLOAT_REAX &ev, const int &i, /* ---------------------------------------------------------------------- setup for energy, virial computation - see integrate::ev_set() for values of eflag (0-3) and vflag (0-6) + see integrate::ev_set() for values of eflag and vflag + see pair::ev_setup() for values of eflag_* and vflag_* + VIRIAL_CENTROID bitflag is not yet supported by ReaxFF ------------------------------------------------------------------------- */ template @@ -3640,12 +3642,12 @@ void PairReaxCKokkos::ev_setup(int eflag, int vflag, int) evflag = 1; eflag_either = eflag; - eflag_global = eflag % 2; - eflag_atom = eflag / 2; + eflag_global = eflag & ENERGY_GLOBAL; + eflag_atom = eflag & ENERGY_ATOM; vflag_either = vflag; - vflag_global = vflag % 4; - vflag_atom = vflag / 4; + vflag_global = vflag & (VIRIAL_PAIR | VIRIAL_FDOTR); + vflag_atom = vflag & VIRIAL_ATOM; // reallocate per-atom arrays if necessary @@ -3673,11 +3675,11 @@ void PairReaxCKokkos::ev_setup(int eflag, int vflag, int) Kokkos::parallel_for(Kokkos::RangePolicy(0,maxvatom),*this); } - // if vflag_global = 2 and pair::compute() calls virial_fdotr_compute() + // if vflag_global = VIRIAL_FDOTR and pair::compute() calls virial_fdotr_compute() // compute global virial via (F dot r) instead of via pairwise summation // unset other flags as appropriate - if (vflag_global == 2 && no_virial_fdotr_compute == 0) { + if (vflag_global == VIRIAL_FDOTR && no_virial_fdotr_compute == 0) { vflag_fdotr = 1; vflag_global = 0; if (vflag_atom == 0) vflag_either = 0; diff --git a/src/MANYBODY/pair_adp.cpp b/src/MANYBODY/pair_adp.cpp index fffa53b3d8..401c1f35ad 100644 --- a/src/MANYBODY/pair_adp.cpp +++ b/src/MANYBODY/pair_adp.cpp @@ -69,6 +69,7 @@ PairADP::PairADP(LAMMPS *lmp) : Pair(lmp) single_enable = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- diff --git a/src/MANYBODY/pair_airebo.cpp b/src/MANYBODY/pair_airebo.cpp index 5955e8c29c..4a0c2a874d 100644 --- a/src/MANYBODY/pair_airebo.cpp +++ b/src/MANYBODY/pair_airebo.cpp @@ -69,6 +69,7 @@ PairAIREBO::PairAIREBO(LAMMPS *lmp) nC = nH = nullptr; map = nullptr; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; sigwid = 0.84; sigcut = 3.0; diff --git a/src/MANYBODY/pair_atm.cpp b/src/MANYBODY/pair_atm.cpp index 5b15909845..460e1f6828 100644 --- a/src/MANYBODY/pair_atm.cpp +++ b/src/MANYBODY/pair_atm.cpp @@ -52,6 +52,7 @@ PairATM::PairATM(LAMMPS *lmp) : Pair(lmp) restartinfo = 1; one_coeff = 0; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- diff --git a/src/MANYBODY/pair_bop.cpp b/src/MANYBODY/pair_bop.cpp index fb2b06f48b..29fd8b63c6 100644 --- a/src/MANYBODY/pair_bop.cpp +++ b/src/MANYBODY/pair_bop.cpp @@ -61,6 +61,7 @@ PairBOP::PairBOP(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; ghostneigh = 1; allocated = 0; diff --git a/src/MANYBODY/pair_comb.cpp b/src/MANYBODY/pair_comb.cpp index 916b00d8d4..b850e9d2c1 100644 --- a/src/MANYBODY/pair_comb.cpp +++ b/src/MANYBODY/pair_comb.cpp @@ -53,6 +53,7 @@ PairComb::PairComb(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; nmax = 0; NCo = nullptr; diff --git a/src/MANYBODY/pair_comb3.cpp b/src/MANYBODY/pair_comb3.cpp index 4465cfdcb0..ddf4695df7 100644 --- a/src/MANYBODY/pair_comb3.cpp +++ b/src/MANYBODY/pair_comb3.cpp @@ -51,6 +51,8 @@ PairComb3::PairComb3(LAMMPS *lmp) : Pair(lmp) single_enable = 0; restartinfo = 0; one_coeff = 1; + manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; ghostneigh = 1; nmax = 0; diff --git a/src/MANYBODY/pair_eim.cpp b/src/MANYBODY/pair_eim.cpp index 5606dc137b..dbb16125c7 100644 --- a/src/MANYBODY/pair_eim.cpp +++ b/src/MANYBODY/pair_eim.cpp @@ -39,6 +39,7 @@ PairEIM::PairEIM(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; unit_convert_flag = utils::get_supported_conversions(utils::ENERGY); setfl = nullptr; diff --git a/src/MANYBODY/pair_gw.cpp b/src/MANYBODY/pair_gw.cpp index 4a67e51b79..675ec1b3fe 100644 --- a/src/MANYBODY/pair_gw.cpp +++ b/src/MANYBODY/pair_gw.cpp @@ -48,6 +48,7 @@ PairGW::PairGW(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; unit_convert_flag = utils::get_supported_conversions(utils::ENERGY); nelements = 0; diff --git a/src/MANYBODY/pair_lcbop.cpp b/src/MANYBODY/pair_lcbop.cpp index 6184ebfe29..df43aac9d2 100644 --- a/src/MANYBODY/pair_lcbop.cpp +++ b/src/MANYBODY/pair_lcbop.cpp @@ -45,6 +45,7 @@ PairLCBOP::PairLCBOP(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; ghostneigh = 1; maxlocal = 0; diff --git a/src/MANYBODY/pair_nb3b_harmonic.cpp b/src/MANYBODY/pair_nb3b_harmonic.cpp index 369d3bfc04..ffb059c067 100644 --- a/src/MANYBODY/pair_nb3b_harmonic.cpp +++ b/src/MANYBODY/pair_nb3b_harmonic.cpp @@ -46,7 +46,8 @@ PairNb3bHarmonic::PairNb3bHarmonic(LAMMPS *lmp) : Pair(lmp) single_enable = 0; restartinfo = 0; one_coeff = 1; - manybody_flag = 1; + manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; unit_convert_flag = utils::get_supported_conversions(utils::ENERGY); nelements = 0; diff --git a/src/MANYBODY/pair_polymorphic.cpp b/src/MANYBODY/pair_polymorphic.cpp index b045ec66d1..e256063b73 100644 --- a/src/MANYBODY/pair_polymorphic.cpp +++ b/src/MANYBODY/pair_polymorphic.cpp @@ -44,6 +44,8 @@ PairPolymorphic::PairPolymorphic(LAMMPS *lmp) : Pair(lmp) single_enable = 0; restartinfo = 0; one_coeff = 1; + manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; nelements = 0; elements = nullptr; diff --git a/src/MANYBODY/pair_sw.cpp b/src/MANYBODY/pair_sw.cpp index a300c11e1a..708027913c 100644 --- a/src/MANYBODY/pair_sw.cpp +++ b/src/MANYBODY/pair_sw.cpp @@ -43,6 +43,7 @@ PairSW::PairSW(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; unit_convert_flag = utils::get_supported_conversions(utils::ENERGY); nelements = 0; diff --git a/src/MANYBODY/pair_tersoff.cpp b/src/MANYBODY/pair_tersoff.cpp index be285d7268..dbb7cd2f48 100644 --- a/src/MANYBODY/pair_tersoff.cpp +++ b/src/MANYBODY/pair_tersoff.cpp @@ -47,6 +47,7 @@ PairTersoff::PairTersoff(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; unit_convert_flag = utils::get_supported_conversions(utils::ENERGY); nelements = 0; diff --git a/src/MANYBODY/pair_vashishta.cpp b/src/MANYBODY/pair_vashishta.cpp index 550fd661d6..d5a1374a80 100644 --- a/src/MANYBODY/pair_vashishta.cpp +++ b/src/MANYBODY/pair_vashishta.cpp @@ -45,6 +45,7 @@ PairVashishta::PairVashishta(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; unit_convert_flag = utils::get_supported_conversions(utils::ENERGY); nelements = 0; diff --git a/src/MISC/fix_deposit.cpp b/src/MISC/fix_deposit.cpp index 68484b385d..28e64b7957 100644 --- a/src/MISC/fix_deposit.cpp +++ b/src/MISC/fix_deposit.cpp @@ -718,7 +718,6 @@ void FixDeposit::options(int narg, char **arg) error->all(FLERR,"Illegal fix deposit command"); molfrac[nmol-1] = 1.0; iarg += nmol+1; - } else if (strcmp(arg[iarg],"rigid") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix deposit command"); int n = strlen(arg[iarg+1]) + 1; diff --git a/src/MLIAP/pair_mliap.cpp b/src/MLIAP/pair_mliap.cpp index f5895d6e5d..a422271f19 100644 --- a/src/MLIAP/pair_mliap.cpp +++ b/src/MLIAP/pair_mliap.cpp @@ -38,7 +38,7 @@ PairMLIAP::PairMLIAP(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; - + centroidstressflag = CENTROID_NOTAVAIL; } /* ---------------------------------------------------------------------- */ diff --git a/src/MOLECULE/atom_vec_template.cpp b/src/MOLECULE/atom_vec_template.cpp index 647259a86f..0aefc66e26 100644 --- a/src/MOLECULE/atom_vec_template.cpp +++ b/src/MOLECULE/atom_vec_template.cpp @@ -27,6 +27,8 @@ AtomVecTemplate::AtomVecTemplate(LAMMPS *lmp) : AtomVec(lmp) mass_type = PER_TYPE; atom->molecule_flag = 1; + atom->molindex_flag = 1; + atom->molatom_flag = 1; // strings with peratom variables to include in each AtomVec method // strings cannot contain fields in corresponding AtomVec default strings @@ -44,7 +46,7 @@ AtomVecTemplate::AtomVecTemplate(LAMMPS *lmp) : AtomVec(lmp) fields_restart = (char *) "molecule molindex molatom"; fields_create = (char *) "molecule molindex molatom"; fields_data_atom = (char *) "id molecule molindex molatom type x"; - fields_data_vel = (char *) ""; + fields_data_vel = (char *) "id v"; setup_fields(); } @@ -64,12 +66,6 @@ void AtomVecTemplate::process_args(int narg, char **arg) onemols = &atom->molecules[imol]; nset = atom->molecules[imol]->nset; - // error check on molecule template fields - - for (int i = 0; i < nset; i++) - if (onemols[i]->typeflag == 0) - error->all(FLERR,"Atom style template molecule must have atom types"); - // set bonds_allow,angles_allow,etc based on the molecules in template set // similar to how atom_style bond,angle,full set it @@ -112,6 +108,27 @@ void AtomVecTemplate::create_atom_post(int ilocal) molatom[ilocal] = -1; } +/* ---------------------------------------------------------------------- + modify values for AtomVec::pack_data() to pack +------------------------------------------------------------------------- */ + +void AtomVecTemplate::pack_data_pre(int ilocal) +{ + molindex[ilocal]++; + molatom[ilocal]++; +} + +/* ---------------------------------------------------------------------- + unmodify values packed by AtomVec::pack_data() +------------------------------------------------------------------------- */ + +void AtomVecTemplate::pack_data_post(int ilocal) +{ + molindex[ilocal]--; + molatom[ilocal]--; +} + + /* ---------------------------------------------------------------------- modify what AtomVec::data_atom() just unpacked or initialize other atom quantities @@ -119,11 +136,11 @@ void AtomVecTemplate::create_atom_post(int ilocal) void AtomVecTemplate::data_atom_post(int ilocal) { - int molindex_one = molindex[ilocal]; - int molatom_one = molatom[ilocal]; + int molindex_one = --molindex[ilocal]; + int molatom_one = --molatom[ilocal]; - if (molindex_one < 0 || molindex_one >= nset) + if ((molindex_one < -1) || (molindex_one >= nset)) error->one(FLERR,"Invalid template index in Atoms section of data file"); - if (molatom_one < 0 || molatom_one >= onemols[molindex_one]->natoms) + if ((molatom_one < -1) || ((molindex_one >= 0) && (molatom_one >= onemols[molindex_one]->natoms))) error->one(FLERR,"Invalid template atom in Atoms section of data file"); } diff --git a/src/MOLECULE/atom_vec_template.h b/src/MOLECULE/atom_vec_template.h index 3bf2ec6273..99acf5d855 100644 --- a/src/MOLECULE/atom_vec_template.h +++ b/src/MOLECULE/atom_vec_template.h @@ -31,6 +31,8 @@ class AtomVecTemplate : public AtomVec { void grow_pointers(); void process_args(int, char **); void create_atom_post(int); + void pack_data_pre(int); + void pack_data_post(int); void data_atom_post(int); private: diff --git a/src/MOLECULE/bond_quartic.cpp b/src/MOLECULE/bond_quartic.cpp index 20269a0966..c7151c3aca 100644 --- a/src/MOLECULE/bond_quartic.cpp +++ b/src/MOLECULE/bond_quartic.cpp @@ -63,7 +63,7 @@ void BondQuartic::compute(int eflag, int vflag) // insure pair->ev_tally() will use 1-4 virial contribution - if (vflag_global == 2) + if (vflag_global == VIRIAL_FDOTR) force->pair->vflag_either = force->pair->vflag_global = 1; double **cutsq = force->pair->cutsq; diff --git a/src/MOLECULE/dihedral_charmm.cpp b/src/MOLECULE/dihedral_charmm.cpp index c3d94976ac..cc60dbec2b 100644 --- a/src/MOLECULE/dihedral_charmm.cpp +++ b/src/MOLECULE/dihedral_charmm.cpp @@ -79,7 +79,7 @@ void DihedralCharmm::compute(int eflag, int vflag) // insure pair->ev_tally() will use 1-4 virial contribution - if (weightflag && vflag_global == 2) + if (weightflag && vflag_global == VIRIAL_FDOTR) force->pair->vflag_either = force->pair->vflag_global = 1; double **x = atom->x; diff --git a/src/MOLECULE/dihedral_charmmfsw.cpp b/src/MOLECULE/dihedral_charmmfsw.cpp index 1f86014933..1164e93f18 100644 --- a/src/MOLECULE/dihedral_charmmfsw.cpp +++ b/src/MOLECULE/dihedral_charmmfsw.cpp @@ -82,7 +82,7 @@ void DihedralCharmmfsw::compute(int eflag, int vflag) // insure pair->ev_tally() will use 1-4 virial contribution - if (weightflag && vflag_global == 2) + if (weightflag && vflag_global == VIRIAL_FDOTR) force->pair->vflag_either = force->pair->vflag_global = 1; double **x = atom->x; diff --git a/src/MOLECULE/fix_cmap.cpp b/src/MOLECULE/fix_cmap.cpp index ab5c0a7323..f48d5254cf 100644 --- a/src/MOLECULE/fix_cmap.cpp +++ b/src/MOLECULE/fix_cmap.cpp @@ -42,8 +42,6 @@ #include "memory.h" #include "error.h" - - using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; @@ -74,6 +72,7 @@ FixCMAP::FixCMAP(LAMMPS *lmp, int narg, char **arg) : restart_peratom = 1; peatom_flag = 1; virial_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; thermo_virial = 1; peratom_freq = 1; scalar_flag = 1; diff --git a/src/POEMS/fix_poems.cpp b/src/POEMS/fix_poems.cpp index fb39c21f2a..a220216fdd 100644 --- a/src/POEMS/fix_poems.cpp +++ b/src/POEMS/fix_poems.cpp @@ -74,6 +74,7 @@ FixPOEMS::FixPOEMS(LAMMPS *lmp, int narg, char **arg) : time_integrate = 1; rigid_flag = 1; virial_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; thermo_virial = 1; dof_flag = 1; diff --git a/src/PYTHON/pair_python.cpp b/src/PYTHON/pair_python.cpp index ab726c8a28..eb54d1d4e5 100644 --- a/src/PYTHON/pair_python.cpp +++ b/src/PYTHON/pair_python.cpp @@ -41,7 +41,7 @@ PairPython::PairPython(LAMMPS *lmp) : Pair(lmp) { one_coeff = 1; reinitflag = 0; cut_global = 0.0; - centroidstressflag = 1; + centroidstressflag = CENTROID_SAME; py_potential = nullptr; skip_types = nullptr; diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index 2161578d3d..9ce28438d3 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -1098,12 +1098,12 @@ void FixRigid::compute_forces_and_torques() // include Langevin thermostat forces for (ibody = 0; ibody < nbody; ibody++) { - fcm[ibody][0] = all[ibody][0] + langextra[ibody][0]; - fcm[ibody][1] = all[ibody][1] + langextra[ibody][1]; - fcm[ibody][2] = all[ibody][2] + langextra[ibody][2]; - torque[ibody][0] = all[ibody][3] + langextra[ibody][3]; - torque[ibody][1] = all[ibody][4] + langextra[ibody][4]; - torque[ibody][2] = all[ibody][5] + langextra[ibody][5]; + fcm[ibody][0] = all[ibody][0] + fflag[ibody][0]*langextra[ibody][0]; + fcm[ibody][1] = all[ibody][1] + fflag[ibody][1]*langextra[ibody][1]; + fcm[ibody][2] = all[ibody][2] + fflag[ibody][2]*langextra[ibody][2]; + torque[ibody][0] = all[ibody][3] + tflag[ibody][0]*langextra[ibody][3]; + torque[ibody][1] = all[ibody][4] + tflag[ibody][1]*langextra[ibody][4]; + torque[ibody][2] = all[ibody][5] + tflag[ibody][2]*langextra[ibody][5]; } // add gravity force to COM of each body @@ -2710,11 +2710,15 @@ double FixRigid::compute_scalar() void *FixRigid::extract(const char *str, int &dim) { + dim = 0; + if (strcmp(str,"body") == 0) { + if (!setupflag) return nullptr; dim = 1; return body; } if (strcmp(str,"masstotal") == 0) { + if (!setupflag) return nullptr; dim = 1; return masstotal; } diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index 650a1d9fc3..1b022f35c4 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -875,6 +875,11 @@ void FixRigidSmall::apply_langevin_thermostat() // convert langevin torques from body frame back to space frame MathExtra::matvec(ex_space,ey_space,ez_space,tbody,&langextra[ibody][3]); + + // enforce 2d motion + + if (domain->dimension == 2) + langextra[ibody][2] = langextra[ibody][3] = langextra[ibody][4] = 0.0; } } @@ -3419,7 +3424,10 @@ int FixRigidSmall::modify_param(int narg, char **arg) void *FixRigidSmall::extract(const char *str, int &dim) { + dim = 0; + if (strcmp(str,"body") == 0) { + if (!setupflag) return nullptr; dim = 1; return atom2body; } @@ -3433,6 +3441,7 @@ void *FixRigidSmall::extract(const char *str, int &dim) // used by granular pair styles, indexed by atom2body if (strcmp(str,"masstotal") == 0) { + if (!setupflag) return nullptr; dim = 1; if (nmax_mass < nmax_body) { diff --git a/src/RIGID/fix_shake.cpp b/src/RIGID/fix_shake.cpp index 1244cd36fb..98700403b6 100644 --- a/src/RIGID/fix_shake.cpp +++ b/src/RIGID/fix_shake.cpp @@ -240,6 +240,8 @@ FixShake::FixShake(LAMMPS *lmp, int narg, char **arg) : FixShake::~FixShake() { + if (copymode) return; + // unregister callbacks to this fix from Atom class atom->delete_callback(id,Atom::GROW); @@ -249,23 +251,24 @@ FixShake::~FixShake() int nlocal = atom->nlocal; - for (int i = 0; i < nlocal; i++) { - if (shake_flag[i] == 0) continue; - else if (shake_flag[i] == 1) { - bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); - bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],1); - angletype_findset(i,shake_atom[i][1],shake_atom[i][2],1); - } else if (shake_flag[i] == 2) { - bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); - } else if (shake_flag[i] == 3) { - bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); - bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],1); - } else if (shake_flag[i] == 4) { - bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); - bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],1); - bondtype_findset(i,shake_atom[i][0],shake_atom[i][3],1); + if (shake_flag) + for (int i = 0; i < nlocal; i++) { + if (shake_flag[i] == 0) continue; + else if (shake_flag[i] == 1) { + bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); + bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],1); + angletype_findset(i,shake_atom[i][1],shake_atom[i][2],1); + } else if (shake_flag[i] == 2) { + bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); + } else if (shake_flag[i] == 3) { + bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); + bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],1); + } else if (shake_flag[i] == 4) { + bondtype_findset(i,shake_atom[i][0],shake_atom[i][1],1); + bondtype_findset(i,shake_atom[i][0],shake_atom[i][2],1); + bondtype_findset(i,shake_atom[i][0],shake_atom[i][3],1); + } } - } // delete locally stored arrays @@ -2536,13 +2539,13 @@ void FixShake::stats() auto mesg = fmt::format("SHAKE stats (type/ave/delta/count) on step {}\n", update->ntimestep); for (i = 1; i < nb; i++) { - const auto bcnt = b_count_all[i]; + const auto bcnt = b_count_all[i]/2; if (bcnt) mesg += fmt::format("{:>6d} {:<9.6} {:<11.6} {:>8d}\n",i, b_ave_all[i]/bcnt,b_max_all[i]-b_min_all[i],bcnt); } for (i = 1; i < na; i++) { - const auto acnt = a_count_all[i]; + const auto acnt = a_count_all[i]/3; if (acnt) mesg += fmt::format("{:>6d} {:<9.6} {:<11.6} {:>8d}\n",i, a_ave_all[i]/acnt,a_max_all[i]-a_min_all[i],acnt); diff --git a/src/RIGID/fix_shake.h b/src/RIGID/fix_shake.h index ee9f520fea..f1be3e2d1d 100644 --- a/src/RIGID/fix_shake.h +++ b/src/RIGID/fix_shake.h @@ -34,16 +34,16 @@ class FixShake : public Fix { virtual int setmask(); virtual void init(); void setup(int); - void pre_neighbor(); + virtual void pre_neighbor(); virtual void post_force(int); virtual void post_force_respa(int, int, int); virtual double memory_usage(); virtual void grow_arrays(int); virtual void copy_arrays(int, int, int); - void set_arrays(int); + virtual void set_arrays(int); virtual void update_arrays(int, int); - void set_molecule(int, tagint, int, double *, double *, double *); + virtual void set_molecule(int, tagint, int, double *, double *, double *); virtual int pack_exchange(int, double *); virtual int unpack_exchange(int, double *); @@ -54,7 +54,7 @@ class FixShake : public Fix { virtual void correct_coordinates(int vflag); virtual void correct_velocities(); - int dof(int); + virtual int dof(int); virtual void reset_dt(); void *extract(const char *, int &); @@ -126,7 +126,7 @@ class FixShake : public Fix { void shake_info(int *, tagint **, int **); int masscheck(double); - void unconstrained_update(); + virtual void unconstrained_update(); void unconstrained_update_respa(int); void shake(int); void shake3(int); diff --git a/src/SNAP/pair_snap.cpp b/src/SNAP/pair_snap.cpp index e6ff85b4b6..a7ea6de591 100644 --- a/src/SNAP/pair_snap.cpp +++ b/src/SNAP/pair_snap.cpp @@ -40,6 +40,7 @@ PairSNAP::PairSNAP(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; nelements = 0; elements = nullptr; diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp index 589652035b..9108cd7dfa 100644 --- a/src/SPIN/compute_spin.cpp +++ b/src/SPIN/compute_spin.cpp @@ -176,6 +176,9 @@ void ComputeSpin::compute_vector() for (i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { if (atom->sp_flag) { + + // compute first moment + mag[0] += sp[i][0]; mag[1] += sp[i][1]; mag[2] += sp[i][2]; @@ -211,11 +214,16 @@ void ComputeSpin::compute_vector() MPI_Allreduce(&tempdenom,&tempdenomtot,1,MPI_DOUBLE,MPI_SUM,world); MPI_Allreduce(&countsp,&countsptot,1,MPI_INT,MPI_SUM,world); + // compute average magnetization + double scale = 1.0/countsptot; magtot[0] *= scale; magtot[1] *= scale; magtot[2] *= scale; magtot[3] = sqrt((magtot[0]*magtot[0])+(magtot[1]*magtot[1])+(magtot[2]*magtot[2])); + + // compute spin temperature + spintemperature = hbar*tempnumtot; spintemperature /= (2.0*kb*tempdenomtot); @@ -225,7 +233,6 @@ void ComputeSpin::compute_vector() vector[3] = magtot[3]; vector[4] = magenergytot; vector[5] = spintemperature; - } /* ---------------------------------------------------------------------- diff --git a/src/SPIN/pair_spin_dipole_cut.cpp b/src/SPIN/pair_spin_dipole_cut.cpp index 034564a5ca..7ba81d93f8 100644 --- a/src/SPIN/pair_spin_dipole_cut.cpp +++ b/src/SPIN/pair_spin_dipole_cut.cpp @@ -45,9 +45,10 @@ PairSpinDipoleCut::PairSpinDipoleCut(LAMMPS *lmp) : PairSpin(lmp) hbar = force->hplanck/MY_2PI; // eV/(rad.THz) mub = 9.274e-4; // in A.Ang^2 - mu_0 = 785.15; // in eV/Ang/A^2 + // mu_0 = 785.15; // in eV/Ang/A^2 + mu_0 = 784.15; // in eV/Ang/A^2 mub2mu0 = mub * mub * mu_0 / (4.0*MY_PI); // in eV.Ang^3 - //mub2mu0 = mub * mub * mu_0 / (4.0*MY_PI); // in eV + // mub2mu0 = mub * mub * mu_0 / (4.0*MY_PI); // in eV mub2mu0hbinv = mub2mu0 / hbar; // in rad.THz } @@ -232,36 +233,44 @@ void PairSpinDipoleCut::compute(int eflag, int vflag) local_cut2 = cut_spin_long[itype][jtype]*cut_spin_long[itype][jtype]; + // compute dipolar interaction + if (rsq < local_cut2) { r2inv = 1.0/rsq; r3inv = r2inv*rinv; compute_dipolar(i,j,eij,fmi,spi,spj,r3inv); - if (lattice_flag) compute_dipolar_mech(i,j,eij,fi,spi,spj,r2inv); - } - // force accumulation + if (lattice_flag) + compute_dipolar_mech(i,j,eij,fi,spi,spj,r2inv); - f[i][0] += fi[0]; - f[i][1] += fi[1]; - f[i][2] += fi[2]; - fm[i][0] += fmi[0]; - fm[i][1] += fmi[1]; - fm[i][2] += fmi[2]; + if (eflag) { + if (rsq <= local_cut2) { + evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); + evdwl *= 0.5*hbar; + emag[i] += evdwl; + } + } else evdwl = 0.0; - if (eflag) { - if (rsq <= local_cut2) { - evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= 0.5*hbar; - emag[i] += evdwl; + f[i][0] += fi[0]; + f[i][1] += fi[1]; + f[i][2] += fi[2]; + if (newton_pair || j < nlocal) { + f[j][0] -= fi[0]; + f[j][1] -= fi[1]; + f[j][2] -= fi[2]; } - } else evdwl = 0.0; - - if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, - evdwl,ecoul,fi[0],fi[1],fi[2],rij[0],rij[1],rij[2]); + fm[i][0] += fmi[0]; + fm[i][1] += fmi[1]; + fm[i][2] += fmi[2]; + if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, + evdwl,ecoul,fi[0],fi[1],fi[2],rij[0],rij[1],rij[2]); + } } } + + if (vflag_fdotr) virial_fdotr_compute(); } /* ---------------------------------------------------------------------- @@ -390,7 +399,7 @@ void PairSpinDipoleCut::compute_dipolar_mech(int /* i */, int /* j */, double ei sjeij = spj[0]*eij[0] + spj[1]*eij[1] + spj[2]*eij[2]; bij = sisj - 5.0*sieij*sjeij; - pre = 3.0*mub2mu0*gigjri4; + pre = 0.5*3.0*mub2mu0*gigjri4; fi[0] -= pre * (eij[0] * bij + (sjeij*spi[0] + sieij*spj[0])); fi[1] -= pre * (eij[1] * bij + (sjeij*spi[1] + sieij*spj[1])); diff --git a/src/SPIN/pair_spin_dipole_long.cpp b/src/SPIN/pair_spin_dipole_long.cpp index 2efc19d599..3b4c861e0c 100644 --- a/src/SPIN/pair_spin_dipole_long.cpp +++ b/src/SPIN/pair_spin_dipole_long.cpp @@ -49,7 +49,7 @@ PairSpinDipoleLong::PairSpinDipoleLong(LAMMPS *lmp) : PairSpin(lmp) hbar = force->hplanck/MY_2PI; // eV/(rad.THz) mub = 9.274e-4; // in A.Ang^2 - mu_0 = 785.15; // in eV/Ang/A^2 + mu_0 = 784.15; // in eV/Ang/A^2 mub2mu0 = mub * mub * mu_0 / (4.0*MY_PI); // in eV.Ang^3 //mub2mu0 = mub * mub * mu_0 / (4.0*MY_PI); // in eV mub2mu0hbinv = mub2mu0 / hbar; // in rad.THz @@ -281,32 +281,37 @@ void PairSpinDipoleLong::compute(int eflag, int vflag) bij[3] = (5.0*bij[2] + pre3*expm2) * r2inv; compute_long(i,j,eij,bij,fmi,spi,spj); - compute_long_mech(i,j,eij,bij,fmi,spi,spj); - } + if (lattice_flag) + compute_long_mech(i,j,eij,bij,fmi,spi,spj); - // force accumulation + if (eflag) { + if (rsq <= local_cut2) { + evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); + evdwl *= 0.5*hbar; + emag[i] += evdwl; + } + } else evdwl = 0.0; - f[i][0] += fi[0]; - f[i][1] += fi[1]; - f[i][2] += fi[2]; - fm[i][0] += fmi[0]; - fm[i][1] += fmi[1]; - fm[i][2] += fmi[2]; - - if (eflag) { - if (rsq <= local_cut2) { - evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= 0.5*hbar; - emag[i] += evdwl; + f[i][0] += fi[0]; + f[i][1] += fi[1]; + f[i][2] += fi[2]; + if (newton_pair || j < nlocal) { + f[j][0] -= fi[0]; + f[j][1] -= fi[1]; + f[j][2] -= fi[2]; } - } else evdwl = 0.0; + fm[i][0] += fmi[0]; + fm[i][1] += fmi[1]; + fm[i][2] += fmi[2]; + if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, + evdwl,ecoul,fi[0],fi[1],fi[2],rij[0],rij[1],rij[2]); - if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, - evdwl,ecoul,fi[0],fi[1],fi[2],rij[0],rij[1],rij[2]); - + } } } + + if (vflag_fdotr) virial_fdotr_compute(); } /* ---------------------------------------------------------------------- @@ -373,7 +378,6 @@ void PairSpinDipoleLong::compute_single_pair(int ii, double fmi[3]) spi[3] = sp[ii][3]; jlist = firstneigh[ii]; jnum = numneigh[ii]; - //itype = type[i]; for (jj = 0; jj < jnum; jj++) { j = jlist[jj]; @@ -459,7 +463,7 @@ void PairSpinDipoleLong::compute_long_mech(int /* i */, int /* j */, double eij[ double g1,g2,g1b2_g2b3,gigj,pre; gigj = spi[3] * spj[3]; - pre = gigj*mub2mu0; + pre = 0.5 * gigj*mub2mu0; sisj = spi[0]*spj[0] + spi[1]*spj[1] + spi[2]*spj[2]; sieij = spi[0]*eij[0] + spi[1]*eij[1] + spi[2]*eij[2]; sjeij = spj[0]*eij[0] + spj[1]*eij[1] + spj[2]*eij[2]; diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp index 0f21f6c355..e6ed5e4609 100644 --- a/src/SPIN/pair_spin_dmi.cpp +++ b/src/SPIN/pair_spin_dmi.cpp @@ -244,31 +244,35 @@ void PairSpinDmi::compute(int eflag, int vflag) if (rsq <= local_cut2) { compute_dmi(i,j,eij,fmi,spj); - if (lattice_flag) { + + if (lattice_flag) compute_dmi_mech(i,j,rsq,eij,fi,spi,spj); + + if (eflag) { + evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); + evdwl *= 0.5*hbar; + emag[i] += evdwl; + } else evdwl = 0.0; + + f[i][0] += fi[0]; + f[i][1] += fi[1]; + f[i][2] += fi[2]; + if (newton_pair || j < nlocal) { + f[j][0] -= fi[0]; + f[j][1] -= fi[1]; + f[j][2] -= fi[2]; } + fm[i][0] += fmi[0]; + fm[i][1] += fmi[1]; + fm[i][2] += fmi[2]; + + if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, + evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz); } - - f[i][0] += fi[0]; - f[i][1] += fi[1]; - f[i][2] += fi[2]; - fm[i][0] += fmi[0]; - fm[i][1] += fmi[1]; - fm[i][2] += fmi[2]; - - if (eflag) { - evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= 0.5*hbar; - emag[i] += evdwl; - } else evdwl = 0.0; - - if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, - evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz); } } if (vflag_fdotr) virial_fdotr_compute(); - } /* ---------------------------------------------------------------------- @@ -405,9 +409,9 @@ void PairSpinDmi::compute_dmi_mech(int i, int j, double rsq, double /*eij*/[3], cdmy = (dmiz*csx - dmix*csz); cdmz = (dmix*csy - dmiy*csz); - fi[0] += irij*cdmx; - fi[1] += irij*cdmy; - fi[2] += irij*cdmz; + fi[0] += 0.5*irij*cdmx; + fi[1] += 0.5*irij*cdmy; + fi[2] += 0.5*irij*cdmz; } /* ---------------------------------------------------------------------- diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp index 8709018532..b7dd6ffc17 100644 --- a/src/SPIN/pair_spin_exchange.cpp +++ b/src/SPIN/pair_spin_exchange.cpp @@ -37,6 +37,14 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ +PairSpinExchange::PairSpinExchange(LAMMPS *lmp) : + PairSpin(lmp) +{ + e_offset = 0; +} + +/* ---------------------------------------------------------------------- */ + PairSpinExchange::~PairSpinExchange() { if (allocated) { @@ -59,6 +67,8 @@ void PairSpinExchange::settings(int narg, char **arg) { PairSpin::settings(narg,arg); + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); + cut_spin_exchange_global = utils::numeric(FLERR,arg[0],false,lmp); // reset cutoffs that have been explicitly set @@ -84,9 +94,9 @@ void PairSpinExchange::coeff(int narg, char **arg) // check if args correct if (strcmp(arg[2],"exchange") != 0) - error->all(FLERR,"Incorrect args in pair_style command"); - if (narg != 7) - error->all(FLERR,"Incorrect args in pair_style command"); + error->all(FLERR,"Incorrect args for pair coefficients"); + if ((narg != 7) && (narg != 9)) + error->all(FLERR,"Incorrect args for pair coefficients"); int ilo,ihi,jlo,jhi; utils::bounds(FLERR,arg[0],1,atom->ntypes,ilo,ihi,error); @@ -94,11 +104,25 @@ void PairSpinExchange::coeff(int narg, char **arg) // get exchange arguments from input command + int iarg = 7; const double rc = utils::numeric(FLERR,arg[3],false,lmp); const double j1 = utils::numeric(FLERR,arg[4],false,lmp); const double j2 = utils::numeric(FLERR,arg[5],false,lmp); const double j3 = utils::numeric(FLERR,arg[6],false,lmp); + // read energy offset flag if specified + + while (iarg < narg) { + if (strcmp(arg[7],"offset") == 0) { + if (strcmp(arg[8],"yes") == 0) { + e_offset = 1; + } else if (strcmp(arg[8],"no") == 0) { + e_offset = 0; + } else error->all(FLERR,"Incorrect args for pair coefficients"); + iarg += 2; + } else error->all(FLERR,"Incorrect args for pair coefficients"); + } + int count = 0; for (int i = ilo; i <= ihi; i++) { for (int j = MAX(jlo,i); j <= jhi; j++) { @@ -228,31 +252,34 @@ void PairSpinExchange::compute(int eflag, int vflag) if (rsq <= local_cut2) { compute_exchange(i,j,rsq,fmi,spj); - if (lattice_flag) { + + if (lattice_flag) compute_exchange_mech(i,j,rsq,eij,fi,spi,spj); + + if (eflag) { + evdwl -= compute_energy(i,j,rsq,spi,spj); + emag[i] += evdwl; + } else evdwl = 0.0; + + f[i][0] += fi[0]; + f[i][1] += fi[1]; + f[i][2] += fi[2]; + if (newton_pair || j < nlocal) { + f[j][0] -= fi[0]; + f[j][1] -= fi[1]; + f[j][2] -= fi[2]; } + fm[i][0] += fmi[0]; + fm[i][1] += fmi[1]; + fm[i][2] += fmi[2]; + + if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, + evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz); } - - f[i][0] += fi[0]; - f[i][1] += fi[1]; - f[i][2] += fi[2]; - fm[i][0] += fmi[0]; - fm[i][1] += fmi[1]; - fm[i][2] += fmi[2]; - - if (eflag) { - evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= 0.5*hbar; - emag[i] += evdwl; - } else evdwl = 0.0; - - if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, - evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz); } } if (vflag_fdotr) virial_fdotr_compute(); - } /* ---------------------------------------------------------------------- @@ -361,12 +388,14 @@ void PairSpinExchange::compute_exchange(int i, int j, double rsq, double fmi[3], compute the mechanical force due to the exchange interaction between atom i and atom j ------------------------------------------------------------------------- */ -void PairSpinExchange::compute_exchange_mech(int i, int j, double rsq, double eij[3], - double fi[3], double spi[3], double spj[3]) +void PairSpinExchange::compute_exchange_mech(int i, int j, double rsq, + double eij[3], double fi[3], double spi[3], double spj[3]) { int *type = atom->type; int itype, jtype; - double Jex, Jex_mech, ra, rr, iJ3; + double Jex, Jex_mech, ra, sdots; + double rr, iJ3; + double fx, fy, fz; itype = type[i]; jtype = type[j]; @@ -378,35 +407,58 @@ void PairSpinExchange::compute_exchange_mech(int i, int j, double rsq, double ei Jex_mech = 1.0-ra-J2[itype][jtype]*ra*(2.0-ra); Jex_mech *= 8.0*Jex*rr*exp(-ra); - Jex_mech *= (spi[0]*spj[0]+spi[1]*spj[1]+spi[2]*spj[2]); - fi[0] -= Jex_mech*eij[0]; - fi[1] -= Jex_mech*eij[1]; - fi[2] -= Jex_mech*eij[2]; + sdots = (spi[0]*spj[0]+spi[1]*spj[1]+spi[2]*spj[2]); + + // apply or not energy and force offset + + fx = fy = fz = 0.0; + if (e_offset == 1) { // set offset + fx = Jex_mech*(sdots-1.0)*eij[0]; + fy = Jex_mech*(sdots-1.0)*eij[1]; + fz = Jex_mech*(sdots-1.0)*eij[2]; + } else if (e_offset == 0) { // no offset ("normal" calculation) + fx = Jex_mech*sdots*eij[0]; + fy = Jex_mech*sdots*eij[1]; + fz = Jex_mech*sdots*eij[2]; + } else error->all(FLERR,"Illegal option in pair exchange/biquadratic command"); + + fi[0] -= 0.5*fx; + fi[1] -= 0.5*fy; + fi[2] -= 0.5*fz; } /* ---------------------------------------------------------------------- compute energy of spin pair i and j ------------------------------------------------------------------------- */ -// double PairSpinExchange::compute_energy(int i, int j, double rsq, double spi[3], double spj[3]) -// { -// int *type = atom->type; -// int itype, jtype; -// double Jex, ra; -// double energy = 0.0; -// itype = type[i]; -// jtype = type[j]; -// -// Jex = J1_mech[itype][jtype]; -// ra = rsq/J3[itype][jtype]/J3[itype][jtype]; -// Jex = 4.0*Jex*ra; -// Jex *= (1.0-J2[itype][jtype]*ra); -// Jex *= exp(-ra); -// -// energy = Jex*(spi[0]*spj[0]+spi[1]*spj[1]+spi[2]*spj[2]); -// return energy; -// } +double PairSpinExchange::compute_energy(int i, int j, double rsq, double spi[3], double spj[3]) +{ + int *type = atom->type; + int itype, jtype; + double Jex, ra, sdots; + double energy = 0.0; + itype = type[i]; + jtype = type[j]; + + Jex = J1_mech[itype][jtype]; + ra = rsq/J3[itype][jtype]/J3[itype][jtype]; + Jex = 4.0*Jex*ra; + Jex *= (1.0-J2[itype][jtype]*ra); + Jex *= exp(-ra); + + sdots = (spi[0]*spj[0]+spi[1]*spj[1]+spi[2]*spj[2]); + + // apply or not energy and force offset + + if (e_offset == 1) { // set offset + energy = 0.5*Jex*(sdots-1.0); + } else if (e_offset == 0) { // no offset ("normal" calculation) + energy = 0.5*Jex*sdots; + } else error->all(FLERR,"Illegal option in pair exchange/biquadratic command"); + + return energy; +} /* ---------------------------------------------------------------------- allocate all arrays @@ -495,6 +547,7 @@ void PairSpinExchange::read_restart(FILE *fp) void PairSpinExchange::write_restart_settings(FILE *fp) { fwrite(&cut_spin_exchange_global,sizeof(double),1,fp); + fwrite(&e_offset,sizeof(int),1,fp); fwrite(&offset_flag,sizeof(int),1,fp); fwrite(&mix_flag,sizeof(int),1,fp); } @@ -507,10 +560,12 @@ void PairSpinExchange::read_restart_settings(FILE *fp) { if (comm->me == 0) { utils::sfread(FLERR,&cut_spin_exchange_global,sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&e_offset,sizeof(int),1,fp,nullptr,error); utils::sfread(FLERR,&offset_flag,sizeof(int),1,fp,nullptr,error); utils::sfread(FLERR,&mix_flag,sizeof(int),1,fp,nullptr,error); } MPI_Bcast(&cut_spin_exchange_global,1,MPI_DOUBLE,0,world); + MPI_Bcast(&e_offset,1,MPI_INT,0,world); MPI_Bcast(&offset_flag,1,MPI_INT,0,world); MPI_Bcast(&mix_flag,1,MPI_INT,0,world); } diff --git a/src/SPIN/pair_spin_exchange.h b/src/SPIN/pair_spin_exchange.h index 4e9e6bfac8..2a31f9516e 100644 --- a/src/SPIN/pair_spin_exchange.h +++ b/src/SPIN/pair_spin_exchange.h @@ -26,7 +26,7 @@ namespace LAMMPS_NS { class PairSpinExchange : public PairSpin { public: - PairSpinExchange(LAMMPS *lmp) : PairSpin(lmp) {} + PairSpinExchange(class LAMMPS *); virtual ~PairSpinExchange(); void settings(int, char **); void coeff(int, char **); @@ -38,8 +38,7 @@ class PairSpinExchange : public PairSpin { void compute_exchange(int, int, double, double *, double *); void compute_exchange_mech(int, int, double, double *, double *, double *, double *); - - // double compute_energy(int , int , double , double *, double *); + double compute_energy(int , int , double , double *, double *); void write_restart(FILE *); void read_restart(FILE *); @@ -49,6 +48,7 @@ class PairSpinExchange : public PairSpin { double cut_spin_exchange_global; // global exchange cutoff distance protected: + int e_offset; // apply energy offset double **J1_mag; // exchange coeffs in eV double **J1_mech; // mech exchange coeffs in double **J2, **J3; // J1 in eV, J2 adim, J3 in Ang diff --git a/src/SPIN/pair_spin_exchange_biquadratic.cpp b/src/SPIN/pair_spin_exchange_biquadratic.cpp new file mode 100644 index 0000000000..f2baf1333b --- /dev/null +++ b/src/SPIN/pair_spin_exchange_biquadratic.cpp @@ -0,0 +1,635 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ------------------------------------------------------------------------ + Contributing authors: Julien Tranchida (SNL) + Aidan Thompson (SNL) + + Please cite the related publication: + Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). + Massively parallel symplectic algorithm for coupled magnetic spin dynamics + and molecular dynamics. Journal of Computational Physics. +------------------------------------------------------------------------- */ + +#include "pair_spin_exchange_biquadratic.h" + +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "memory.h" +#include "neigh_list.h" + +#include +#include + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairSpinExchangeBiquadratic::PairSpinExchangeBiquadratic(LAMMPS *lmp) : + PairSpin(lmp) +{ + e_offset = 0; +} + +/* ---------------------------------------------------------------------- */ + +PairSpinExchangeBiquadratic::~PairSpinExchangeBiquadratic() +{ + if (allocated) { + memory->destroy(setflag); + memory->destroy(cut_spin_exchange); + memory->destroy(J1_mag); + memory->destroy(J1_mech); + memory->destroy(J2); + memory->destroy(J3); + memory->destroy(K1_mag); + memory->destroy(K1_mech); + memory->destroy(K2); + memory->destroy(K3); + memory->destroy(cutsq); // to be implemented + memory->destroy(emag); + } +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairSpinExchangeBiquadratic::settings(int narg, char **arg) +{ + PairSpin::settings(narg,arg); + + if (narg != 1) error->all(FLERR,"Illegal pair_style command"); + + cut_spin_exchange_global = utils::numeric(FLERR,arg[0],false,lmp); + + // reset cutoffs that have been explicitly set + + if (allocated) { + int i,j; + for (i = 1; i <= atom->ntypes; i++) + for (j = i+1; j <= atom->ntypes; j++) + if (setflag[i][j]) { + cut_spin_exchange[i][j] = cut_spin_exchange_global; + } + } +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type spin pairs +------------------------------------------------------------------------- */ + +void PairSpinExchangeBiquadratic::coeff(int narg, char **arg) +{ + if (!allocated) allocate(); + + // check if args correct + + if (strcmp(arg[2],"biquadratic") != 0) + error->all(FLERR,"Incorrect args for pair coefficients"); + if ((narg != 10) && (narg != 12)) + error->all(FLERR,"Incorrect args for pair coefficients"); + + int ilo,ihi,jlo,jhi; + utils::bounds(FLERR,arg[0],1,atom->ntypes,ilo,ihi,error); + utils::bounds(FLERR,arg[1],1,atom->ntypes,jlo,jhi,error); + + // get exchange arguments from input command + + int iarg = 10; + const double rc = utils::numeric(FLERR,arg[3],false,lmp); + const double j1 = utils::numeric(FLERR,arg[4],false,lmp); + const double j2 = utils::numeric(FLERR,arg[5],false,lmp); + const double j3 = utils::numeric(FLERR,arg[6],false,lmp); + const double k1 = utils::numeric(FLERR,arg[7],false,lmp); + const double k2 = utils::numeric(FLERR,arg[8],false,lmp); + const double k3 = utils::numeric(FLERR,arg[9],false,lmp); + + // read energy offset flag if specified + + while (iarg < narg) { + if (strcmp(arg[10],"offset") == 0) { + if (strcmp(arg[11],"yes") == 0) { + e_offset = 1; + } else if (strcmp(arg[11],"no") == 0) { + e_offset = 0; + } else error->all(FLERR,"Incorrect args for pair coefficients"); + iarg += 2; + } else error->all(FLERR,"Incorrect args for pair coefficients"); + } + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + cut_spin_exchange[i][j] = rc; + J1_mag[i][j] = j1/hbar; + J1_mech[i][j] = j1; + J2[i][j] = j2; + J3[i][j] = j3; + K1_mag[i][j] = k1/hbar; + K1_mech[i][j] = k1; + K2[i][j] = k2; + K3[i][j] = k3; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) error->all(FLERR,"Incorrect args in pair_style command"); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairSpinExchangeBiquadratic::init_one(int i, int j) +{ + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); + + J1_mag[j][i] = J1_mag[i][j]; + J1_mech[j][i] = J1_mech[i][j]; + J2[j][i] = J2[i][j]; + J3[j][i] = J3[i][j]; + K1_mag[j][i] = K1_mag[i][j]; + K1_mech[j][i] = K1_mech[i][j]; + K2[j][i] = K2[i][j]; + K3[j][i] = K3[i][j]; + cut_spin_exchange[j][i] = cut_spin_exchange[i][j]; + + return cut_spin_exchange_global; +} + +/* ---------------------------------------------------------------------- + extract the larger cutoff +------------------------------------------------------------------------- */ + +void *PairSpinExchangeBiquadratic::extract(const char *str, int &dim) +{ + dim = 0; + if (strcmp(str,"cut") == 0) return (void *) &cut_spin_exchange_global; + return nullptr; +} + +/* ---------------------------------------------------------------------- */ + +void PairSpinExchangeBiquadratic::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double evdwl, ecoul; + double xi[3], eij[3]; + double delx,dely,delz; + double spi[3], spj[3]; + double fi[3], fmi[3]; + double local_cut2; + double rsq, inorm; + int *ilist,*jlist,*numneigh,**firstneigh; + + evdwl = ecoul = 0.0; + ev_init(eflag,vflag); + + double **x = atom->x; + double **f = atom->f; + double **fm = atom->fm; + double **sp = atom->sp; + int *type = atom->type; + int nlocal = atom->nlocal; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // checking size of emag + + if (nlocal_max < nlocal) { // grow emag lists if necessary + nlocal_max = nlocal; + memory->grow(emag,nlocal_max,"pair/spin:emag"); + } + + // computation of the exchange interaction + // loop over atoms and their neighbors + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + itype = type[i]; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + xi[0] = x[i][0]; + xi[1] = x[i][1]; + xi[2] = x[i][2]; + spi[0] = sp[i][0]; + spi[1] = sp[i][1]; + spi[2] = sp[i][2]; + emag[i] = 0.0; + + // loop on neighbors + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + jtype = type[j]; + + spj[0] = sp[j][0]; + spj[1] = sp[j][1]; + spj[2] = sp[j][2]; + + evdwl = 0.0; + fi[0] = fi[1] = fi[2] = 0.0; + fmi[0] = fmi[1] = fmi[2] = 0.0; + + delx = xi[0] - x[j][0]; + dely = xi[1] - x[j][1]; + delz = xi[2] - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + inorm = 1.0/sqrt(rsq); + eij[0] = -inorm*delx; + eij[1] = -inorm*dely; + eij[2] = -inorm*delz; + + local_cut2 = cut_spin_exchange[itype][jtype]*cut_spin_exchange[itype][jtype]; + + // compute exchange interaction + + if (rsq <= local_cut2) { + compute_exchange(i,j,rsq,fmi,spi,spj); + + if (lattice_flag) + compute_exchange_mech(i,j,rsq,eij,fi,spi,spj); + + if (eflag) { + evdwl -= compute_energy(i,j,rsq,spi,spj); + emag[i] += evdwl; + } else evdwl = 0.0; + + f[i][0] += fi[0]; + f[i][1] += fi[1]; + f[i][2] += fi[2]; + if (newton_pair || j < nlocal) { + f[j][0] -= fi[0]; + f[j][1] -= fi[1]; + f[j][2] -= fi[2]; + } + fm[i][0] += fmi[0]; + fm[i][1] += fmi[1]; + fm[i][2] += fmi[2]; + + if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, + evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz); + } + } + } + + if (vflag_fdotr) virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + update the pair interactions fmi acting on the spin ii +------------------------------------------------------------------------- */ + +void PairSpinExchangeBiquadratic::compute_single_pair(int ii, double fmi[3]) +{ + int *type = atom->type; + double **x = atom->x; + double **sp = atom->sp; + double local_cut2; + double xi[3]; + double delx,dely,delz; + double spi[3],spj[3]; + + int j,jnum,itype,jtype,ntypes; + int k,locflag; + int *jlist,*numneigh,**firstneigh; + + double rsq; + + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // check if interaction applies to type of ii + + itype = type[ii]; + ntypes = atom->ntypes; + locflag = 0; + k = 1; + while (k <= ntypes) { + if (k <= itype) { + if (setflag[k][itype] == 1) { + locflag =1; + break; + } + k++; + } else if (k > itype) { + if (setflag[itype][k] == 1) { + locflag =1; + break; + } + k++; + } else error->all(FLERR,"Wrong type number"); + } + + // if interaction applies to type ii, + // locflag = 1 and compute pair interaction + + if (locflag == 1) { + + xi[0] = x[ii][0]; + xi[1] = x[ii][1]; + xi[2] = x[ii][2]; + spi[0] = sp[ii][0]; + spi[1] = sp[ii][1]; + spi[2] = sp[ii][2]; + + jlist = firstneigh[ii]; + jnum = numneigh[ii]; + + for (int jj = 0; jj < jnum; jj++) { + + j = jlist[jj]; + j &= NEIGHMASK; + jtype = type[j]; + local_cut2 = cut_spin_exchange[itype][jtype]*cut_spin_exchange[itype][jtype]; + + spj[0] = sp[j][0]; + spj[1] = sp[j][1]; + spj[2] = sp[j][2]; + + delx = xi[0] - x[j][0]; + dely = xi[1] - x[j][1]; + delz = xi[2] - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + + if (rsq <= local_cut2) { + compute_exchange(ii,j,rsq,fmi,spi,spj); + } + } + } +} + +/* ---------------------------------------------------------------------- + compute exchange interaction between spins i and j +------------------------------------------------------------------------- */ + +void PairSpinExchangeBiquadratic::compute_exchange(int i, int j, double rsq, + double fmi[3], double spi[3], double spj[3]) +{ + int *type = atom->type; + int itype,jtype; + double Jex,Kex,r2j,r2k,sdots; + itype = type[i]; + jtype = type[j]; + + r2j = rsq/J3[itype][jtype]/J3[itype][jtype]; + r2k = rsq/J3[itype][jtype]/J3[itype][jtype]; + + Jex = 4.0*J1_mag[itype][jtype]*r2j; + Jex *= (1.0-J2[itype][jtype]*r2j); + Jex *= exp(-r2j); + + Kex = 4.0*K1_mag[itype][jtype]*r2k; + Kex *= (1.0-K2[itype][jtype]*r2k); + Kex *= exp(-r2k); + + sdots = (spi[0]*spj[0]+spi[1]*spj[1]+spi[2]*spj[2]); + + fmi[0] += (Jex*spj[0] + 2.0*Kex*spj[0]*sdots); + fmi[1] += (Jex*spj[1] + 2.0*Kex*spj[1]*sdots); + fmi[2] += (Jex*spj[2] + 2.0*Kex*spj[2]*sdots); +} + +/* ---------------------------------------------------------------------- + compute the mechanical force due to the exchange interaction between atom i and atom j +------------------------------------------------------------------------- */ + +void PairSpinExchangeBiquadratic::compute_exchange_mech(int i, int j, + double rsq, double eij[3], double fi[3], double spi[3], double spj[3]) +{ + int *type = atom->type; + int itype,jtype; + double Jex,Jex_mech,Kex,Kex_mech,sdots; + double rja,rka,rjr,rkr,iJ3,iK3; + double fx, fy, fz; + itype = type[i]; + jtype = type[j]; + + Jex = J1_mech[itype][jtype]; + iJ3 = 1.0/(J3[itype][jtype]*J3[itype][jtype]); + Kex = K1_mech[itype][jtype]; + iK3 = 1.0/(K3[itype][jtype]*K3[itype][jtype]); + + rja = rsq*iJ3; + rjr = sqrt(rsq)*iJ3; + rka = rsq*iK3; + rkr = sqrt(rsq)*iK3; + + Jex_mech = 1.0-rja-J2[itype][jtype]*rja*(2.0-rja); + Jex_mech *= 8.0*Jex*rjr*exp(-rja); + + Kex_mech = 1.0-rka-K2[itype][jtype]*rka*(2.0-rka); + Kex_mech *= 8.0*Kex*rkr*exp(-rka); + + sdots = (spi[0]*spj[0]+spi[1]*spj[1]+spi[2]*spj[2]); + + // apply or not energy and force offset + + fx = fy = fz = 0.0; + if (e_offset == 1) { // set offset + fx = (Jex_mech*(sdots-1.0) + Kex_mech*(sdots*sdots-1.0))*eij[0]; + fy = (Jex_mech*(sdots-1.0) + Kex_mech*(sdots*sdots-1.0))*eij[1]; + fz = (Jex_mech*(sdots-1.0) + Kex_mech*(sdots*sdots-1.0))*eij[2]; + } else if (e_offset == 0) { // no offset ("normal" calculation) + fx = (Jex_mech*sdots + Kex_mech*sdots*sdots)*eij[0]; + fy = (Jex_mech*sdots + Kex_mech*sdots*sdots)*eij[1]; + fz = (Jex_mech*sdots + Kex_mech*sdots*sdots)*eij[2]; + } else error->all(FLERR,"Illegal option in pair exchange/biquadratic command"); + + fi[0] -= 0.5*fx; + fi[1] -= 0.5*fy; + fi[2] -= 0.5*fz; + // fi[0] -= fx; + // fi[1] -= fy; + // fi[2] -= fz; +} + +/* ---------------------------------------------------------------------- + compute energy of spin pair i and j +------------------------------------------------------------------------- */ + +double PairSpinExchangeBiquadratic::compute_energy(int i, int j, double rsq, + double spi[3], double spj[3]) +{ + int *type = atom->type; + int itype,jtype; + double Jex,Kex,ra,sdots; + double rj,rk,r2j,r2k,ir3j,ir3k; + double energy = 0.0; + itype = type[i]; + jtype = type[j]; + + ra = sqrt(rsq); + rj = ra/J3[itype][jtype]; + r2j = rsq/J3[itype][jtype]/J3[itype][jtype]; + ir3j = 1.0/(rj*rj*rj); + rk = ra/K3[itype][jtype]; + r2k = rsq/K3[itype][jtype]/K3[itype][jtype]; + ir3k = 1.0/(rk*rk*rk); + + Jex = 4.0*J1_mech[itype][jtype]*r2j; + Jex *= (1.0-J2[itype][jtype]*r2j); + Jex *= exp(-r2j); + + Kex = 4.0*K1_mech[itype][jtype]*r2k; + Kex *= (1.0-K2[itype][jtype]*r2k); + Kex *= exp(-r2k); + + sdots = (spi[0]*spj[0]+spi[1]*spj[1]+spi[2]*spj[2]); + + // apply or not energy and force offset + + if (e_offset == 1) { // set offset + energy = 0.5*(Jex*(sdots-1.0) + Kex*(sdots*sdots-1.0)); + } else if (e_offset == 0) { // no offset ("normal" calculation) + energy = 0.5*(Jex*sdots + Kex*sdots*sdots); + } else error->all(FLERR,"Illegal option in pair exchange/biquadratic command"); + + return energy; +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +void PairSpinExchangeBiquadratic::allocate() +{ + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + memory->create(cut_spin_exchange,n+1,n+1,"pair/spin/exchange:cut_spin_exchange"); + memory->create(J1_mag,n+1,n+1,"pair/spin/exchange:J1_mag"); + memory->create(J1_mech,n+1,n+1,"pair/spin/exchange:J1_mech"); + memory->create(J2,n+1,n+1,"pair/spin/exchange:J2"); + memory->create(J3,n+1,n+1,"pair/spin/exchange:J3"); + memory->create(K1_mag,n+1,n+1,"pair/spin/exchange:J1_mag"); + memory->create(K1_mech,n+1,n+1,"pair/spin/exchange:J1_mech"); + memory->create(K2,n+1,n+1,"pair/spin/exchange:J2"); + memory->create(K3,n+1,n+1,"pair/spin/exchange:J3"); + memory->create(cutsq,n+1,n+1,"pair:cutsq"); +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairSpinExchangeBiquadratic::write_restart(FILE *fp) +{ + write_restart_settings(fp); + + int i,j; + for (i = 1; i <= atom->ntypes; i++) { + for (j = i; j <= atom->ntypes; j++) { + fwrite(&setflag[i][j],sizeof(int),1,fp); + if (setflag[i][j]) { + fwrite(&J1_mag[i][j],sizeof(double),1,fp); + fwrite(&J1_mech[i][j],sizeof(double),1,fp); + fwrite(&J2[i][j],sizeof(double),1,fp); + fwrite(&J3[i][j],sizeof(double),1,fp); + fwrite(&K1_mag[i][j],sizeof(double),1,fp); + fwrite(&K1_mech[i][j],sizeof(double),1,fp); + fwrite(&K2[i][j],sizeof(double),1,fp); + fwrite(&K3[i][j],sizeof(double),1,fp); + fwrite(&cut_spin_exchange[i][j],sizeof(double),1,fp); + } + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairSpinExchangeBiquadratic::read_restart(FILE *fp) +{ + read_restart_settings(fp); + + allocate(); + + int i,j; + int me = comm->me; + for (i = 1; i <= atom->ntypes; i++) { + for (j = i; j <= atom->ntypes; j++) { + if (me == 0) utils::sfread(FLERR,&setflag[i][j],sizeof(int),1,fp,nullptr,error); + MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world); + if (setflag[i][j]) { + if (me == 0) { + utils::sfread(FLERR,&J1_mag[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&J1_mech[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&J2[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&J3[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&K1_mag[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&K1_mech[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&K2[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&K3[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&cut_spin_exchange[i][j],sizeof(double),1,fp,nullptr,error); + } + MPI_Bcast(&J1_mag[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&J1_mech[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&J2[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&J3[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&K1_mag[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&K1_mech[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&K2[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&K3[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut_spin_exchange[i][j],1,MPI_DOUBLE,0,world); + } + } + } +} + + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairSpinExchangeBiquadratic::write_restart_settings(FILE *fp) +{ + fwrite(&cut_spin_exchange_global,sizeof(double),1,fp); + fwrite(&e_offset,sizeof(int),1,fp); + fwrite(&offset_flag,sizeof(int),1,fp); + fwrite(&mix_flag,sizeof(int),1,fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairSpinExchangeBiquadratic::read_restart_settings(FILE *fp) +{ + if (comm->me == 0) { + utils::sfread(FLERR,&cut_spin_exchange_global,sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&e_offset,sizeof(int),1,fp,nullptr,error); + utils::sfread(FLERR,&offset_flag,sizeof(int),1,fp,nullptr,error); + utils::sfread(FLERR,&mix_flag,sizeof(int),1,fp,nullptr,error); + } + MPI_Bcast(&cut_spin_exchange_global,1,MPI_DOUBLE,0,world); + MPI_Bcast(&e_offset,1,MPI_INT,0,world); + MPI_Bcast(&offset_flag,1,MPI_INT,0,world); + MPI_Bcast(&mix_flag,1,MPI_INT,0,world); +} diff --git a/src/SPIN/pair_spin_exchange_biquadratic.h b/src/SPIN/pair_spin_exchange_biquadratic.h new file mode 100644 index 0000000000..9619416f2e --- /dev/null +++ b/src/SPIN/pair_spin_exchange_biquadratic.h @@ -0,0 +1,87 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(spin/exchange/biquadratic,PairSpinExchangeBiquadratic) + +#else + +#ifndef LMP_PAIR_SPIN_EXCHANGE_BIQUADRATIC_H +#define LMP_PAIR_SPIN_EXCHANGE_BIQUADRATIC_H + +#include "pair_spin.h" + +namespace LAMMPS_NS { + +class PairSpinExchangeBiquadratic : public PairSpin { + public: + PairSpinExchangeBiquadratic(class LAMMPS *); + virtual ~PairSpinExchangeBiquadratic(); + void settings(int, char **); + void coeff(int, char **); + double init_one(int, int); + void *extract(const char *, int &); + + void compute(int, int); + void compute_single_pair(int, double *); + + void compute_exchange(int, int, double, double *, double *, double *); + void compute_exchange_mech(int, int, double, double *, double *, double *, double *); + double compute_energy(int , int , double , double *, double *); + + void write_restart(FILE *); + void read_restart(FILE *); + void write_restart_settings(FILE *); + void read_restart_settings(FILE *); + + double cut_spin_exchange_global; // global exchange cutoff distance + + protected: + + int e_offset; // apply energy offset + double **J1_mag; // H exchange coeffs in eV + double **J1_mech; // mech exchange coeffs in + double **J2, **J3; // J1 in eV, J2 in Ang-1, J3 in Ang + double **K1_mag; // Bi exchange coeffs in eV + double **K1_mech; // mech exchange coeffs in + double **K2, **K3; // K1 in eV, K2 Ang-1, K3 in Ang + double **cut_spin_exchange; // cutoff distance exchange + + void allocate(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Incorrect args in pair_spin command + +Self-explanatory. + +E: Spin simulations require metal unit style + +Self-explanatory. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair spin requires atom attribute spin + +The atom style defined does not have these attributes. + +*/ diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp index 1323c123db..33ad364aaa 100644 --- a/src/SPIN/pair_spin_magelec.cpp +++ b/src/SPIN/pair_spin_magelec.cpp @@ -237,31 +237,35 @@ void PairSpinMagelec::compute(int eflag, int vflag) if (rsq <= local_cut2) { compute_magelec(i,j,eij,fmi,spj); - if (lattice_flag) { + + if (lattice_flag) compute_magelec_mech(i,j,fi,spi,spj); + + if (eflag) { + evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); + evdwl *= 0.5*hbar; + emag[i] += evdwl; + } else evdwl = 0.0; + + f[i][0] += fi[0]; + f[i][1] += fi[1]; + f[i][2] += fi[2]; + if (newton_pair || j < nlocal) { + f[j][0] -= fi[0]; + f[j][1] -= fi[1]; + f[j][2] -= fi[2]; } + fm[i][0] += fmi[0]; + fm[i][1] += fmi[1]; + fm[i][2] += fmi[2]; + + if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, + evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz); } - - f[i][0] += fi[0]; - f[i][1] += fi[1]; - f[i][2] += fi[2]; - fm[i][0] += fmi[0]; - fm[i][1] += fmi[1]; - fm[i][2] += fmi[2]; - - if (eflag) { - evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]); - evdwl *= 0.5*hbar; - emag[i] += evdwl; - } else evdwl = 0.0; - - if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, - evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz); } } if (vflag_fdotr) virial_fdotr_compute(); - } /* ---------------------------------------------------------------------- @@ -400,9 +404,9 @@ void PairSpinMagelec::compute_magelec_mech(int i, int j, double fi[3], double sp meiy *= ME_mech[itype][jtype]; meiz *= ME_mech[itype][jtype]; - fi[0] += (meiy*vz - meiz*vy); - fi[1] += (meiz*vx - meix*vz); - fi[2] += (meix*vy - meiy*vx); + fi[0] += 0.5*(meiy*vz - meiz*vy); + fi[1] += 0.5*(meiz*vx - meix*vz); + fi[2] += 0.5*(meix*vy - meiy*vx); } diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp index 50634fed8e..049a14c82f 100644 --- a/src/SPIN/pair_spin_neel.cpp +++ b/src/SPIN/pair_spin_neel.cpp @@ -246,31 +246,33 @@ void PairSpinNeel::compute(int eflag, int vflag) if (rsq <= local_cut2) { compute_neel(i,j,rsq,eij,fmi,spi,spj); - if (lattice_flag) { + if (lattice_flag) compute_neel_mech(i,j,rsq,eij,fi,spi,spj); + + f[i][0] += fi[0]; + f[i][1] += fi[1]; + f[i][2] += fi[2]; + if (newton_pair || j < nlocal) { + f[j][0] -= fi[0]; + f[j][1] -= fi[1]; + f[j][2] -= fi[2]; } + fm[i][0] += fmi[0]; + fm[i][1] += fmi[1]; + fm[i][2] += fmi[2]; + + if (eflag) { + evdwl -= compute_neel_energy(i,j,rsq,eij,spi,spj); + emag[i] += evdwl; + } else evdwl = 0.0; + + if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, + evdwl,ecoul,fi[0],fi[1],fi[2],rij[0],rij[1],rij[2]); } - - f[i][0] += fi[0]; - f[i][1] += fi[1]; - f[i][2] += fi[2]; - fm[i][0] += fmi[0]; - fm[i][1] += fmi[1]; - fm[i][2] += fmi[2]; - - if (eflag) { - evdwl = compute_neel_energy(i,j,rsq,eij,spi,spj); - evdwl *= 0.5*hbar; - emag[i] += evdwl; - } else evdwl = 0.0; - - if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair, - evdwl,ecoul,fi[0],fi[1],fi[2],rij[0],rij[1],rij[2]); } } if (vflag_fdotr) virial_fdotr_compute(); - } /* ---------------------------------------------------------------------- @@ -563,9 +565,9 @@ void PairSpinNeel::compute_neel_mech(int i, int j, double rsq, double eij[3], do // adding three contributions - fi[0] = pdx + pq1x + pq2x; - fi[1] = pdy + pq1y + pq2y; - fi[2] = pdz + pq1z + pq2z; + fi[0] = 0.5*(pdx + pq1x + pq2x); + fi[1] = 0.5*(pdy + pq1y + pq2y); + fi[2] = 0.5*(pdz + pq1z + pq2z); } /* ---------------------------------------------------------------------- */ @@ -585,12 +587,12 @@ double PairSpinNeel::compute_neel_energy(int i, int j, double rsq, double eij[3] // compute Neel's functions ra = rsq/g3[itype][jtype]/g3[itype][jtype]; - gr = 4.0*g1[itype][jtype]*ra; + gr = 4.0*g1_mech[itype][jtype]*ra; gr *= (1.0-g2[itype][jtype]*ra); gr *= exp(-ra); ra = rsq/q3[itype][jtype]/q3[itype][jtype]; - qr = 4.0*q1[itype][jtype]*ra; + qr = 4.0*q1_mech[itype][jtype]*ra; qr *= (1.0-q2[itype][jtype]*ra); qr *= exp(-ra); @@ -609,7 +611,7 @@ double PairSpinNeel::compute_neel_energy(int i, int j, double rsq, double eij[3] eij_sj_3 = eij_sj*eij_sj_2; epq2 = q2r*(eij_si*eij_sj_3+eij_sj*eij_si_3); - return (epd+epq1+epq2); + return 0.5*(epd+epq1+epq2); } /* ---------------------------------------------------------------------- diff --git a/src/USER-FEP/pair_coul_cut_soft.cpp b/src/USER-FEP/pair_coul_cut_soft.cpp index 3540fb0504..0928e18d6a 100644 --- a/src/USER-FEP/pair_coul_cut_soft.cpp +++ b/src/USER-FEP/pair_coul_cut_soft.cpp @@ -33,7 +33,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ PairCoulCutSoft::PairCoulCutSoft(LAMMPS *lmp) : Pair(lmp) { - centroidstressflag = 1; + centroidstressflag = CENTROID_SAME; } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-FEP/pair_lj_class2_coul_cut_soft.cpp b/src/USER-FEP/pair_lj_class2_coul_cut_soft.cpp index 7e9f210905..8b462b0ac7 100644 --- a/src/USER-FEP/pair_lj_class2_coul_cut_soft.cpp +++ b/src/USER-FEP/pair_lj_class2_coul_cut_soft.cpp @@ -33,7 +33,7 @@ using namespace MathConst; PairLJClass2CoulCutSoft::PairLJClass2CoulCutSoft(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - centroidstressflag = 1; + centroidstressflag = CENTROID_SAME; } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-FEP/pair_lj_class2_soft.cpp b/src/USER-FEP/pair_lj_class2_soft.cpp index 716bf890cf..df8d1aaab6 100644 --- a/src/USER-FEP/pair_lj_class2_soft.cpp +++ b/src/USER-FEP/pair_lj_class2_soft.cpp @@ -32,7 +32,7 @@ using namespace MathConst; PairLJClass2Soft::PairLJClass2Soft(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - centroidstressflag = 1; + centroidstressflag = CENTROID_SAME; } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-FEP/pair_lj_cut_coul_cut_soft.cpp b/src/USER-FEP/pair_lj_cut_coul_cut_soft.cpp index f776944ee3..f69ea9a5d9 100644 --- a/src/USER-FEP/pair_lj_cut_coul_cut_soft.cpp +++ b/src/USER-FEP/pair_lj_cut_coul_cut_soft.cpp @@ -37,7 +37,7 @@ using namespace MathConst; PairLJCutCoulCutSoft::PairLJCutCoulCutSoft(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - centroidstressflag = 1; + centroidstressflag = CENTROID_SAME; } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-FEP/pair_lj_cut_soft.cpp b/src/USER-FEP/pair_lj_cut_soft.cpp index 6d292acbb3..c3574746e2 100644 --- a/src/USER-FEP/pair_lj_cut_soft.cpp +++ b/src/USER-FEP/pair_lj_cut_soft.cpp @@ -43,7 +43,7 @@ PairLJCutSoft::PairLJCutSoft(LAMMPS *lmp) : Pair(lmp) respa_enable = 1; writedata = 1; allocated = 0; - centroidstressflag = 1; + centroidstressflag = CENTROID_SAME; } /* ---------------------------------------------------------------------- */ diff --git a/src/USER-INTEL/dihedral_charmm_intel.cpp b/src/USER-INTEL/dihedral_charmm_intel.cpp index fb9e8781b1..d84658c797 100644 --- a/src/USER-INTEL/dihedral_charmm_intel.cpp +++ b/src/USER-INTEL/dihedral_charmm_intel.cpp @@ -91,7 +91,7 @@ void DihedralCharmmIntel::compute(int eflag, int vflag, // insure pair->ev_tally() will use 1-4 virial contribution - if (weightflag && vflag_global == 2) + if (weightflag && vflag_global == VIRIAL_FDOTR) force->pair->vflag_either = force->pair->vflag_global = 1; if (evflag) { diff --git a/src/USER-INTEL/intel_preprocess.h b/src/USER-INTEL/intel_preprocess.h index 3e547b58a0..3c285871cf 100644 --- a/src/USER-INTEL/intel_preprocess.h +++ b/src/USER-INTEL/intel_preprocess.h @@ -502,7 +502,7 @@ enum {TIME_PACK, TIME_HOST_NEIGHBOR, TIME_HOST_PAIR, TIME_OFFLOAD_NEIGHBOR, acc_t *f_scalar = &f_start[0].x; \ int f_stride4 = f_stride * 4; \ int t; \ - if (vflag == 2) t = 4; else t = 1; \ + if (vflag == VIRIAL_FDOTR) t = 4; else t = 1; \ acc_t *f_scalar2 = f_scalar + f_stride4 * t; \ for ( ; t < nthreads; t++) { \ _use_simd_pragma("vector aligned") \ @@ -512,7 +512,7 @@ enum {TIME_PACK, TIME_HOST_NEIGHBOR, TIME_HOST_PAIR, TIME_OFFLOAD_NEIGHBOR, f_scalar2 += f_stride4; \ } \ \ - if (vflag == 2) { \ + if (vflag == VIRIAL_FDOTR) { \ int nt_min = MIN(4,nthreads); \ IP_PRE_fdotr_acc_force_l5(iifrom, iito, minlocal, nt_min, f_start, \ f_stride, pos, ov0, ov1, ov2, ov3, ov4, \ diff --git a/src/USER-INTEL/pair_buck_coul_cut_intel.cpp b/src/USER-INTEL/pair_buck_coul_cut_intel.cpp index 80993f212e..3da131684c 100644 --- a/src/USER-INTEL/pair_buck_coul_cut_intel.cpp +++ b/src/USER-INTEL/pair_buck_coul_cut_intel.cpp @@ -245,7 +245,7 @@ void PairBuckCoulCutIntel::eval(const int offload, const int vflag, fxtmp = fytmp = fztmp = (acc_t)0; if (EFLAG) fwtmp = sevdwl = secoul = (acc_t)0; if (NEWTON_PAIR == 0) - if (vflag==1) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; + if (vflag == VIRIAL_PAIR) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; #if defined(LMP_SIMD_COMPILER) #pragma vector aligned diff --git a/src/USER-INTEL/pair_buck_intel.cpp b/src/USER-INTEL/pair_buck_intel.cpp index 95b37796ba..afa9b448b5 100644 --- a/src/USER-INTEL/pair_buck_intel.cpp +++ b/src/USER-INTEL/pair_buck_intel.cpp @@ -227,7 +227,7 @@ void PairBuckIntel::eval(const int offload, const int vflag, fxtmp = fytmp = fztmp = (acc_t)0; if (EFLAG) fwtmp = sevdwl = (acc_t)0; if (NEWTON_PAIR == 0) - if (vflag==1) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; + if (vflag == VIRIAL_PAIR) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; #if defined(LMP_SIMD_COMPILER) #pragma vector aligned diff --git a/src/USER-INTEL/pair_dpd_intel.cpp b/src/USER-INTEL/pair_dpd_intel.cpp index 5adcb4c6ea..a0a71e4a37 100644 --- a/src/USER-INTEL/pair_dpd_intel.cpp +++ b/src/USER-INTEL/pair_dpd_intel.cpp @@ -265,7 +265,7 @@ void PairDPDIntel::eval(const int offload, const int vflag, fxtmp = fytmp = fztmp = (acc_t)0; if (EFLAG) fwtmp = sevdwl = (acc_t)0; if (NEWTON_PAIR == 0) - if (vflag==1) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; + if (vflag == VIRIAL_PAIR) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; if (rngi + jnum > rng_size) { #ifdef LMP_USE_MKL_RNG diff --git a/src/USER-INTEL/pair_eam_intel.cpp b/src/USER-INTEL/pair_eam_intel.cpp index 6ebd7abe3d..a25d588ecf 100644 --- a/src/USER-INTEL/pair_eam_intel.cpp +++ b/src/USER-INTEL/pair_eam_intel.cpp @@ -481,7 +481,7 @@ void PairEAMIntel::eval(const int offload, const int vflag, fxtmp = fytmp = fztmp = (acc_t)0; if (EFLAG) fwtmp = sevdwl = (acc_t)0; if (NEWTON_PAIR == 0) - if (vflag==1) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; + if (vflag == VIRIAL_PAIR) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; int ej = 0; #if defined(LMP_SIMD_COMPILER) diff --git a/src/USER-INTEL/pair_gayberne_intel.cpp b/src/USER-INTEL/pair_gayberne_intel.cpp index a9aa00340e..c34c6965de 100644 --- a/src/USER-INTEL/pair_gayberne_intel.cpp +++ b/src/USER-INTEL/pair_gayberne_intel.cpp @@ -399,7 +399,7 @@ void PairGayBerneIntel::eval(const int offload, const int vflag, if (EFLAG) fwtmp = sevdwl = (acc_t)0.0; if (NEWTON_PAIR == 0) - if (vflag==1) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0.0; + if (vflag == VIRIAL_PAIR) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0.0; bool multiple_forms = false; int packed_j = 0; diff --git a/src/USER-INTEL/pair_lj_charmm_coul_charmm_intel.cpp b/src/USER-INTEL/pair_lj_charmm_coul_charmm_intel.cpp index bf55a53981..8f4dba4a24 100644 --- a/src/USER-INTEL/pair_lj_charmm_coul_charmm_intel.cpp +++ b/src/USER-INTEL/pair_lj_charmm_coul_charmm_intel.cpp @@ -265,7 +265,7 @@ void PairLJCharmmCoulCharmmIntel::eval(const int offload, const int vflag, fxtmp = fytmp = fztmp = (acc_t)0; if (EFLAG) fwtmp = sevdwl = secoul = (acc_t)0; if (NEWTON_PAIR == 0) - if (vflag==1) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; + if (vflag == VIRIAL_PAIR) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; int ej = 0; #if defined(LMP_SIMD_COMPILER) diff --git a/src/USER-INTEL/pair_lj_charmm_coul_long_intel.cpp b/src/USER-INTEL/pair_lj_charmm_coul_long_intel.cpp index 2f375fd08c..ffed4853ba 100644 --- a/src/USER-INTEL/pair_lj_charmm_coul_long_intel.cpp +++ b/src/USER-INTEL/pair_lj_charmm_coul_long_intel.cpp @@ -282,7 +282,7 @@ void PairLJCharmmCoulLongIntel::eval(const int offload, const int vflag, fxtmp = fytmp = fztmp = (acc_t)0; if (EFLAG) fwtmp = sevdwl = secoul = (acc_t)0; if (NEWTON_PAIR == 0) - if (vflag==1) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; + if (vflag == VIRIAL_PAIR) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; int ej = 0; #if defined(LMP_SIMD_COMPILER) diff --git a/src/USER-INTEL/pair_lj_cut_coul_long_intel.cpp b/src/USER-INTEL/pair_lj_cut_coul_long_intel.cpp index fa3cfd7bc3..c1d85ad37f 100644 --- a/src/USER-INTEL/pair_lj_cut_coul_long_intel.cpp +++ b/src/USER-INTEL/pair_lj_cut_coul_long_intel.cpp @@ -275,7 +275,7 @@ void PairLJCutCoulLongIntel::eval(const int offload, const int vflag, fxtmp = fytmp = fztmp = (acc_t)0; if (EFLAG) fwtmp = sevdwl = secoul = (acc_t)0; if (NEWTON_PAIR == 0) - if (vflag==1) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; + if (vflag == VIRIAL_PAIR) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; int ej = 0; #if defined(LMP_SIMD_COMPILER) diff --git a/src/USER-INTEL/pair_lj_cut_intel.cpp b/src/USER-INTEL/pair_lj_cut_intel.cpp index 426abb7660..8697a4f548 100644 --- a/src/USER-INTEL/pair_lj_cut_intel.cpp +++ b/src/USER-INTEL/pair_lj_cut_intel.cpp @@ -233,7 +233,7 @@ void PairLJCutIntel::eval(const int offload, const int vflag, fxtmp = fytmp = fztmp = (acc_t)0; if (EFLAG) fwtmp = sevdwl = (acc_t)0; if (NEWTON_PAIR == 0) - if (vflag==1) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; + if (vflag == VIRIAL_PAIR) sv0 = sv1 = sv2 = sv3 = sv4 = sv5 = (acc_t)0; #if defined(LMP_SIMD_COMPILER) #pragma vector aligned nog2s diff --git a/src/USER-MEAMC/pair_meamc.cpp b/src/USER-MEAMC/pair_meamc.cpp index e99c17cb31..d0fb8a0463 100644 --- a/src/USER-MEAMC/pair_meamc.cpp +++ b/src/USER-MEAMC/pair_meamc.cpp @@ -17,7 +17,6 @@ #include "pair_meamc.h" - #include #include "meam.h" @@ -30,8 +29,6 @@ #include "memory.h" #include "error.h" - - using namespace LAMMPS_NS; #define MAXLINE 1024 @@ -52,6 +49,7 @@ PairMEAMC::PairMEAMC(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; allocated = 0; diff --git a/src/USER-MESONT/pair_mesocnt.cpp b/src/USER-MESONT/pair_mesocnt.cpp index b4e21888e0..39a97321a7 100644 --- a/src/USER-MESONT/pair_mesocnt.cpp +++ b/src/USER-MESONT/pair_mesocnt.cpp @@ -23,7 +23,6 @@ #include - #include "atom.h" #include "comm.h" #include "force.h" @@ -33,9 +32,6 @@ #include "memory.h" #include "error.h" #include "update.h" - - - #include "math_const.h" #include "math_extra.h" @@ -58,6 +54,7 @@ PairMesoCNT::PairMesoCNT(LAMMPS *lmp) : Pair(lmp) respa_enable = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; no_virial_fdotr_compute = 0; writedata = 0; ghostneigh = 0; diff --git a/src/USER-MESONT/pair_mesont_tpm.cpp b/src/USER-MESONT/pair_mesont_tpm.cpp index b15a1e5b1f..1271ebddb6 100644 --- a/src/USER-MESONT/pair_mesont_tpm.cpp +++ b/src/USER-MESONT/pair_mesont_tpm.cpp @@ -9,7 +9,6 @@ the GNU General Public License. See the README file in the top-level LAMMPS directory. - Contributing author: Maxim Shugaev (UVA), mvs9t@virginia.edu ------------------------------------------------------------------------- */ @@ -29,6 +28,7 @@ #include #include #include +#include #include #include @@ -36,28 +36,17 @@ using namespace LAMMPS_NS; -//since LAMMPS is compiled with C++ 2003, define a substitution for std::array -template -class array2003{ -public: - T& operator[] (int idx){ return data[idx];}; - const T& operator[] (int idx) const{ return data[idx];}; -private: - T data[N]; -}; - - class MESONTList { public: - MESONTList(const Atom* atom, const NeighList* nblist, double rc2); + MESONTList(const Atom* atom, const NeighList* nblist); ~MESONTList() {}; //list of segments - const std::vector >& get_segments() const; + const std::vector>& get_segments() const; //list of triplets - const std::vector >& get_triplets() const; + const std::vector>& get_triplets() const; //list of neighbor chains [start,end] for segments //(use idx() to get real indexes) - const std::vector > >& get_nbs() const; + const std::vector>>& get_nbs() const; //convert idx from sorted representation to real idx int get_idx(int idx) const; //return list of indexes for conversion from sorted representation @@ -69,22 +58,22 @@ public: //check if the node is the end of the tube bool is_end(int idx) const; - array2003 get_segment(int idx) const; - array2003 get_triplet(int idx) const; + std::array get_segment(int idx) const; + std::array get_triplet(int idx) const; static const int cnt_end = -1; static const int domain_end = -2; static const int not_cnt = -3; private: - std::vector > chain_list, segments; - std::vector > triplets; - std::vector > > nb_chains; + std::vector> chain_list, segments; + std::vector> triplets; + std::vector>> nb_chains; std::vector index_list, index_list_b; }; //============================================================================= -inline const std::vector > > & +inline const std::vector>> & MESONTList::get_nbs() const { return nb_chains; } @@ -106,25 +95,25 @@ inline const std::vector& MESONTList::get_idxb_list() const { return index_list_b; }; -inline const std::vector > & MESONTList::get_segments() +inline const std::vector> & MESONTList::get_segments() const { return segments; } -inline const std::vector > & MESONTList::get_triplets() +inline const std::vector> & MESONTList::get_triplets() const { return triplets; } -inline array2003 MESONTList::get_segment(int idx) const { - array2003 result; +inline std::array MESONTList::get_segment(int idx) const { + std::array result; result[0] = chain_list[idx][0]; result[1] = idx; return result; } -inline array2003 MESONTList::get_triplet(int idx) const { - array2003 result; +inline std::array MESONTList::get_triplet(int idx) const { + std::array result; result[0] = chain_list[idx][0]; result[1] = idx; result[2] = chain_list[idx][1]; @@ -165,12 +154,13 @@ void vector_union(std::vector& v1, std::vector& v2, } } -MESONTList::MESONTList(const Atom* atom, const NeighList* nblist, double /* rc2 */){ +MESONTList::MESONTList(const Atom* atom, const NeighList* nblist) { if (atom == nullptr || nblist == nullptr) return; //number of local atoms at the node int nlocal = atom->nlocal; - //total number of atoms in the node and ghost shell + //total number of atoms in the node and ghost shell treated as NTs int nall = nblist->inum + nblist->gnum; + //total number of atoms in the node and ghost shell int ntot = atom->nlocal + atom->nghost; tagint* const g_id = atom->tag; tagint** const bonds = atom->bond_nt; @@ -178,9 +168,7 @@ MESONTList::MESONTList(const Atom* atom, const NeighList* nblist, double /* rc2 int* ilist = nblist->ilist; //convert bonds to local id representation - array2003 tmp_arr; - tmp_arr[0] = not_cnt; tmp_arr[1] = not_cnt; - chain_list.resize(ntot, tmp_arr); + chain_list.resize(ntot, {not_cnt,not_cnt}); for (int ii = 0; ii < nall; ii++) { int i = ilist[ii]; chain_list[i][0] = domain_end; @@ -193,7 +181,7 @@ MESONTList::MESONTList(const Atom* atom, const NeighList* nblist, double /* rc2 if (bonds[i][m] == cnt_end) chain_list[i][m] = cnt_end; for (int j = 0; j < nnb; j++) { int nb = nblist->firstneigh[i][j]; - if (bonds[i][0] == g_id[nb]){ + if (bonds[i][0] == g_id[nb]) { chain_list[i][0] = nb; chain_list[nb][1] = i; break; @@ -223,22 +211,16 @@ MESONTList::MESONTList(const Atom* atom, const NeighList* nblist, double /* rc2 for (int i = 0; i < nlocal; i++) { if (chain_list[i][0] == not_cnt) continue; if (chain_list[i][0] != cnt_end && chain_list[i][0] != domain_end && - g_id[i] < g_id[chain_list[i][0]]){ - array2003 tmp_c; - tmp_c[0] = i; tmp_c[1] = chain_list[i][0]; - segments.push_back(tmp_c); - } + g_id[i] < g_id[chain_list[i][0]]) + segments.push_back({i,chain_list[i][0]}); if (chain_list[i][1] != cnt_end && chain_list[i][1] != domain_end && - g_id[i] < g_id[chain_list[i][1]]){ - array2003 tmp_c; - tmp_c[0] = i; tmp_c[1] = chain_list[i][1]; - segments.push_back(tmp_c); - } + g_id[i] < g_id[chain_list[i][1]]) + segments.push_back({i,chain_list[i][1]}); } int nbonds = segments.size(); //triplets - for (int i = 0; i < nlocal; i++){ + for (int i = 0; i < nlocal; i++) { if (chain_list[i][0] == not_cnt) continue; if (chain_list[i][0] != cnt_end && chain_list[i][0] != domain_end && chain_list[i][1] != cnt_end && chain_list[i][1] != domain_end) @@ -274,7 +256,7 @@ MESONTList::MESONTList(const Atom* atom, const NeighList* nblist, double /* rc2 int idx_next = chain_list[index_list[nb_list[j]]][1]; if ((j == nnb - 1) || (nb_list[j] + 1 != nb_list[j+1]) || (idx_next == cnt_end) || (idx_next == domain_end)) { - array2003 chain; + std::array chain; chain[0] = idx_s; chain[1] = nb_list[j]; //make sure that segments having at least one node @@ -285,7 +267,7 @@ MESONTList::MESONTList(const Atom* atom, const NeighList* nblist, double /* rc2 chain_list[idx0][0] != domain_end) chain[0] -= 1; if (chain_list[idx1][1] != cnt_end && chain_list[idx1][1] != domain_end) chain[1] += 1; - if(chain[0] != chain[1]) nb_chains[i].push_back(chain); + if (chain[0] != chain[1]) nb_chains[i].push_back(chain); idx_s = (j == nnb - 1) ? -1 : nb_list[j + 1]; } } @@ -311,8 +293,9 @@ PairMESONTTPM::PairMESONTTPM(LAMMPS *lmp) : Pair(lmp) { eatom_s = nullptr; eatom_b = nullptr; eatom_t = nullptr; + nmax = 0; instance_count++; - if(instance_count > 1) error->all(FLERR, + if (instance_count > 1) error->all(FLERR, "only a single instance of mesont/tpm pair style can be created"); } @@ -335,13 +318,25 @@ PairMESONTTPM::~PairMESONTTPM() /* ---------------------------------------------------------------------- */ -void PairMESONTTPM::compute(int eflag, int vflag){ +void PairMESONTTPM::compute(int eflag, int vflag) { + // set per atom values and accumulators + // reallocate per-atom arrays if necessary ev_init(eflag,vflag); - //total number of atoms in the node and ghost shell + if (atom->nmax > nmax && eflag_atom) { + memory->destroy(eatom_s); + memory->create(eatom_s,comm->nthreads*maxeatom,"pair:eatom_s"); + memory->destroy(eatom_b); + memory->create(eatom_b,comm->nthreads*maxeatom,"pair:eatom_b"); + memory->destroy(eatom_t); + memory->create(eatom_t,comm->nthreads*maxeatom,"pair:eatom_t"); + nmax = atom->nmax; + } + //total number of atoms in the node and ghost shell treated as NTs int nall = list->inum + list->gnum; + //total number of atoms in the node and ghost shell int ntot = atom->nlocal + atom->nghost; int newton_pair = force->newton_pair; - if(!newton_pair) + if (!newton_pair) error->all(FLERR,"Pair style mesont/tpm requires newton pair on"); double **x = atom->x; @@ -360,7 +355,7 @@ void PairMESONTTPM::compute(int eflag, int vflag){ } double Rcut_min = std::max(2.0*Lmax, std::sqrt(0.5*Lmax*Lmax + std::pow((2.0*RT + TPBRcutoff),2))); - if (cut_global < Rcut_min){ + if (cut_global < Rcut_min) { std::stringstream err; err << "The selected cutoff is too small for the current system : " << "L_max = " << Lmax << ", R_max = " << RT << ", Rc = " << cut_global << @@ -369,14 +364,14 @@ void PairMESONTTPM::compute(int eflag, int vflag){ } //generate bonds and chain nblist - MESONTList ntlist(atom, list, cut_global*cut_global); + MESONTList ntlist(atom, list); //reorder data to make it contiguous within tubes //and compatible with Fortran functions std::vector x_sort(3*nall), f_sort(3*nall), s_sort(9*nall); std::vector u_ts_sort(nall), u_tb_sort(nall), u_tt_sort(nall); std::vector b_sort(nall); - for (int i = 0; i < nall; i++){ + for (int i = 0; i < nall; i++) { int idx = ntlist.get_idx(i); for (int j = 0; j < 3; j++) x_sort[3*i+j] = x[idx][j]; b_sort[i] = buckling[idx]; @@ -385,7 +380,7 @@ void PairMESONTTPM::compute(int eflag, int vflag){ //bending potential int n_triplets = ntlist.get_triplets().size(); for (int i = 0; i < n_triplets; i++) { - const array2003& t = ntlist.get_triplets()[i]; + const std::array& t = ntlist.get_triplets()[i]; //idx of nodes of a triplet in sorted representation int idx_s0 = ntlist.get_idxb(t[0]); int idx_s1 = ntlist.get_idxb(t[1]); @@ -412,13 +407,13 @@ void PairMESONTTPM::compute(int eflag, int vflag){ } //share new values of buckling - if (BendingMode == 1){ - for (int i = 0; i < nall; i++){ + if (BendingMode == 1) { + for (int i = 0; i < nall; i++) { int idx = ntlist.get_idx(i); buckling[idx] = b_sort[i]; } comm->forward_comm_pair(this); - for (int i = 0; i < nall; i++){ + for (int i = 0; i < nall; i++) { int idx = ntlist.get_idx(i); b_sort[i] = buckling[idx]; } @@ -429,7 +424,7 @@ void PairMESONTTPM::compute(int eflag, int vflag){ double Rmax = 0.0; Lmax = 0.0; for (int i = 0; i < n_segments; i++) { - const array2003& s = ntlist.get_segments()[i]; + const std::array& s = ntlist.get_segments()[i]; //idx of a segment end 1 in sorted representation int idx_s0 = ntlist.get_idxb(s[0]); //idx of a segment end 2 in sorted representation @@ -456,9 +451,9 @@ void PairMESONTTPM::compute(int eflag, int vflag){ mesont_lib_TubeStretchingForceField(U1s, U2s, F1, F2, S1, S2, X1, X2, R12, L12); - for (int nc = 0; nc < (int)ntlist.get_nbs()[i].size(); nc++){ + for (int nc = 0; nc < (int)ntlist.get_nbs()[i].size(); nc++) { //id of the beginning and end of the chain in the sorted representation - const array2003& chain = ntlist.get_nbs()[i][nc]; + const std::array& chain = ntlist.get_nbs()[i][nc]; int N = chain[1] - chain[0] + 1; //number of elements in the chain int end1 = ntlist.get_idx(chain[0]); //chain ends (real representation) int end2 = ntlist.get_idx(chain[1]); @@ -475,7 +470,7 @@ void PairMESONTTPM::compute(int eflag, int vflag){ double* Xe = X; double* Fe = F; double* Se = S; if (!E1 && ntlist.get_triplet(end1)[0] != MESONTList::domain_end && ntlist.get_triplet(ntlist.get_triplet(end1)[0])[0] == - MESONTList::cnt_end){ + MESONTList::cnt_end) { Ee = 1; int idx = ntlist.get_idxb(ntlist.get_triplet(end1)[0]); Xe = &(x_sort[3*idx]); @@ -484,7 +479,7 @@ void PairMESONTTPM::compute(int eflag, int vflag){ } else if (!E2 && ntlist.get_triplet(end2)[2] != MESONTList::domain_end && ntlist.get_triplet(ntlist.get_triplet(end2)[2])[2] == - MESONTList::cnt_end){ + MESONTList::cnt_end) { Ee = 2; int idx = ntlist.get_idxb(ntlist.get_triplet(end2)[2]); Xe = &(x_sort[3*idx]); @@ -500,7 +495,7 @@ void PairMESONTTPM::compute(int eflag, int vflag){ //check if cutoff is chosen correctly Rcut_min = std::max(2.0*Lmax, std::sqrt(0.5*Lmax*Lmax + std::pow((2.0*Rmax + TPBRcutoff),2))); - if (cut_global < Rcut_min){ + if (cut_global < Rcut_min) { std::stringstream err; err << "The selected cutoff is too small for the current system : " << "L_max = " << Lmax << ", R_max = " << RT << ", Rc = " << cut_global << @@ -508,65 +503,69 @@ void PairMESONTTPM::compute(int eflag, int vflag){ error->all(FLERR, err.str().c_str()); } - // set per atom values and accumulators - // reallocate per-atom arrays if necessary - if (atom->nmax > maxeatom) { - maxeatom = atom->nmax; - memory->destroy(eatom); - memory->create(eatom,comm->nthreads*maxeatom,"pair:eatom"); - memory->destroy(eatom_s); - memory->create(eatom_s,comm->nthreads*maxeatom,"pair:eatom_s"); - memory->destroy(eatom_b); - memory->create(eatom_b,comm->nthreads*maxeatom,"pair:eatom_b"); - memory->destroy(eatom_t); - memory->create(eatom_t,comm->nthreads*maxeatom,"pair:eatom_t"); - } - - if (atom->nmax > maxvatom) { - maxvatom = atom->nmax; - memory->destroy(vatom); - memory->create(vatom,comm->nthreads*maxvatom,6,"pair:vatom"); - } - - // zero accumulators - eng_vdwl = 0.0; energy_s = 0.0; - energy_b = 0.0; energy_t = 0.0; - for (int i = 0; i < 6; i++) virial[i] = 0.0; - for (int i = 0; i < ntot; i++){ - eatom[i] = 0.0; eatom_s[i] = 0.0; - eatom_b[i] = 0.0; eatom_t[i] = 0.0; - } - for (int i = 0; i < ntot; i++) - for (int j = 0; j < 6; j++) vatom[i][j] = 0.0; - //convert from sorted representation - for (int i = 0; i < nall; i++){ - int idx = ntlist.get_idx(i); - for (int j = 0; j < 3; j++) f[idx][j] += f_sort[3*i+j]; - eatom_s[idx] = u_ts_sort[i]; - eatom_b[idx] = u_tb_sort[i]; - eatom_t[idx] = u_tt_sort[i]; - eatom[idx] = u_ts_sort[i] + u_tb_sort[i] + u_tt_sort[i]; - energy_s += u_ts_sort[i]; - energy_b += u_tb_sort[i]; - energy_t += u_tt_sort[i]; - vatom[idx][0] = s_sort[9*i+0]; //xx - vatom[idx][1] = s_sort[9*i+4]; //yy - vatom[idx][2] = s_sort[9*i+8]; //zz - vatom[idx][3] = s_sort[9*i+1]; //xy - vatom[idx][4] = s_sort[9*i+2]; //xz - vatom[idx][5] = s_sort[9*i+5]; //yz - for (int j = 0; j < 6; j++) virial[j] += vatom[idx][j]; - buckling[idx] = b_sort[i]; + for (int i = 0; i < nall; i++) { + int idx = ntlist.get_idx(i); + for (int j = 0; j < 3; j++) f[idx][j] += f_sort[3*i+j]; + buckling[idx] = b_sort[i]; } - eng_vdwl = energy_s + energy_b + energy_t; + if (eflag_global) { + eng_vdwl = 0.0; energy_s = 0.0; + energy_b = 0.0; energy_t = 0.0; + for (int i = 0; i < nall; i++) { + int idx = ntlist.get_idx(i); + energy_s += u_ts_sort[i]; + energy_b += u_tb_sort[i]; + energy_t += u_tt_sort[i]; + } + eng_vdwl = energy_s + energy_b + energy_t; + } + if (eflag_atom) { + for (int i = 0; i < ntot; i++) { + eatom[i] = 0.0; eatom_s[i] = 0.0; + eatom_b[i] = 0.0; eatom_t[i] = 0.0; + } + for (int i = 0; i < nall; i++) { + int idx = ntlist.get_idx(i); + eatom_s[idx] = u_ts_sort[i]; + eatom_b[idx] = u_tb_sort[i]; + eatom_t[idx] = u_tt_sort[i]; + eatom[idx] = u_ts_sort[i] + u_tb_sort[i] + u_tt_sort[i]; + } + } + if (vflag_global) { + for (int i = 0; i < 6; i++) virial[i] = 0.0; + for (int i = 0; i < nall; i++) { + int idx = ntlist.get_idx(i); + virial[0] += s_sort[9*i+0]; //xx + virial[1] += s_sort[9*i+4]; //yy + virial[2] += s_sort[9*i+8]; //zz + virial[3] += s_sort[9*i+1]; //xy + virial[4] += s_sort[9*i+2]; //xz + virial[5] += s_sort[9*i+5]; //yz + } + } + if (vflag_atom) { + for (int i = 0; i < ntot; i++) + for (int j = 0; j < 6; j++) vatom[i][j] = 0.0; + for (int i = 0; i < nall; i++) { + int idx = ntlist.get_idx(i); + vatom[idx][0] = s_sort[9*i+0]; //xx + vatom[idx][1] = s_sort[9*i+4]; //yy + vatom[idx][2] = s_sort[9*i+8]; //zz + vatom[idx][3] = s_sort[9*i+1]; //xy + vatom[idx][4] = s_sort[9*i+2]; //xz + vatom[idx][5] = s_sort[9*i+5]; //yz + } + } + } /* ---------------------------------------------------------------------- allocate all arrays ------------------------------------------------------------------------- */ -void PairMESONTTPM::allocate(){ +void PairMESONTTPM::allocate() { allocated = 1; int n = atom->ntypes; @@ -583,7 +582,7 @@ void PairMESONTTPM::allocate(){ global settings ------------------------------------------------------------------------- */ -void PairMESONTTPM::settings(int narg, char **arg){ +void PairMESONTTPM::settings(int narg, char **arg) { if ((narg == 0) || (narg > 4)) error->all(FLERR,"Illegal pair_style command"); cut_global = utils::numeric(FLERR,arg[0],false,lmp); @@ -632,7 +631,7 @@ void PairMESONTTPM::settings(int narg, char **arg){ set coeffs for one or more type pairs ------------------------------------------------------------------------- */ -void PairMESONTTPM::coeff(int narg, char **arg){ +void PairMESONTTPM::coeff(int narg, char **arg) { if ((narg < 2) || (narg > 3)) error->all(FLERR,"Incorrect args for pair coefficients"); @@ -661,7 +660,7 @@ void PairMESONTTPM::coeff(int narg, char **arg){ init for one type pair i,j and corresponding j,i ------------------------------------------------------------------------- */ -double PairMESONTTPM::init_one(int i, int j){ +double PairMESONTTPM::init_one(int i, int j) { if (setflag[i][j] == 0) { cut[i][j] = mix_distance(cut[i][i],cut[j][j]); } @@ -673,7 +672,7 @@ double PairMESONTTPM::init_one(int i, int j){ proc 0 writes to restart file ------------------------------------------------------------------------- */ -void PairMESONTTPM::write_restart(FILE *fp){ +void PairMESONTTPM::write_restart(FILE *fp) { write_restart_settings(fp); int i,j; @@ -690,7 +689,7 @@ void PairMESONTTPM::write_restart(FILE *fp){ proc 0 reads from restart file, bcasts ------------------------------------------------------------------------- */ -void PairMESONTTPM::read_restart(FILE *fp){ +void PairMESONTTPM::read_restart(FILE *fp) { read_restart_settings(fp); allocate(); @@ -713,7 +712,7 @@ void PairMESONTTPM::read_restart(FILE *fp){ proc 0 writes to restart file ------------------------------------------------------------------------- */ -void PairMESONTTPM::write_restart_settings(FILE *fp){ +void PairMESONTTPM::write_restart_settings(FILE *fp) { fwrite(&BendingMode,sizeof(int),1,fp); fwrite(&TPMType,sizeof(int),1,fp); fwrite(&cut_global,sizeof(double),1,fp); @@ -725,7 +724,7 @@ void PairMESONTTPM::write_restart_settings(FILE *fp){ proc 0 reads from restart file, bcasts ------------------------------------------------------------------------- */ -void PairMESONTTPM::read_restart_settings(FILE *fp){ +void PairMESONTTPM::read_restart_settings(FILE *fp) { int me = comm->me; if (me == 0) { fread(&BendingMode,sizeof(int),1,fp); @@ -761,7 +760,7 @@ void PairMESONTTPM::read_restart_settings(FILE *fp){ proc 0 writes to data file ------------------------------------------------------------------------- */ -void PairMESONTTPM::write_data(FILE *fp){ +void PairMESONTTPM::write_data(FILE *fp) { for (int i = 1; i <= atom->ntypes; i++) fprintf(fp,"%d\n",i); } @@ -770,7 +769,7 @@ void PairMESONTTPM::write_data(FILE *fp){ proc 0 writes all pairs to data file ------------------------------------------------------------------------- */ -void PairMESONTTPM::write_data_all(FILE *fp){ +void PairMESONTTPM::write_data_all(FILE *fp) { for (int i = 1; i <= atom->ntypes; i++) for (int j = i; j <= atom->ntypes; j++) fprintf(fp,"%d %d %g\n",i,j,cut[i][j]); @@ -778,7 +777,7 @@ void PairMESONTTPM::write_data_all(FILE *fp){ /* ---------------------------------------------------------------------- */ -void PairMESONTTPM::init_style(){ +void PairMESONTTPM::init_style() { //make sure that a full list is created (including ghost nodes) int r = neighbor->request(this,instance_me); neighbor->requests[r]->half = false; @@ -786,7 +785,7 @@ void PairMESONTTPM::init_style(){ neighbor->requests[r]->ghost = true; } -void* PairMESONTTPM::extract(const char *str, int &){ +void* PairMESONTTPM::extract(const char *str, int &) { if (strcmp(str,"mesonttpm_Es_tot") == 0) return &energy_s; else if (strcmp(str,"mesonttpm_Eb_tot") == 0) return &energy_b; else if (strcmp(str,"mesonttpm_Et_tot") == 0) return &energy_t; diff --git a/src/USER-MESONT/pair_mesont_tpm.h b/src/USER-MESONT/pair_mesont_tpm.h index 704556d75e..a18e555349 100644 --- a/src/USER-MESONT/pair_mesont_tpm.h +++ b/src/USER-MESONT/pair_mesont_tpm.h @@ -54,6 +54,7 @@ class PairMESONTTPM : public Pair { double cut_global; double **cut; static int instance_count; + int nmax; virtual void allocate(); virtual void *extract(const char *, int &); diff --git a/src/USER-MISC/pair_agni.cpp b/src/USER-MISC/pair_agni.cpp index 52f1db923c..afb457d9e4 100644 --- a/src/USER-MISC/pair_agni.cpp +++ b/src/USER-MISC/pair_agni.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "citeme.h" #include "comm.h" +#include "force.h" #include "error.h" #include "math_const.h" #include "math_special.h" @@ -81,6 +82,7 @@ PairAGNI::PairAGNI(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; no_virial_fdotr_compute = 1; diff --git a/src/USER-MISC/pair_drip.cpp b/src/USER-MISC/pair_drip.cpp index a58b77782a..45b49ee293 100644 --- a/src/USER-MISC/pair_drip.cpp +++ b/src/USER-MISC/pair_drip.cpp @@ -34,7 +34,6 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; #define MAXLINE 1024 @@ -48,6 +47,7 @@ PairDRIP::PairDRIP(LAMMPS *lmp) : Pair(lmp) single_enable = 0; restartinfo = 0; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; params = nullptr; nearest3neigh = nullptr; diff --git a/src/USER-MISC/pair_edip.cpp b/src/USER-MISC/pair_edip.cpp index 52fcfa85fb..b29f499de8 100644 --- a/src/USER-MISC/pair_edip.cpp +++ b/src/USER-MISC/pair_edip.cpp @@ -36,7 +36,6 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; #define MAXLINE 1024 @@ -63,6 +62,7 @@ PairEDIP::PairEDIP(LAMMPS *lmp) : restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; nelements = 0; elements = nullptr; diff --git a/src/USER-MISC/pair_edip_multi.cpp b/src/USER-MISC/pair_edip_multi.cpp index 7213ca37ed..811f80abfc 100644 --- a/src/USER-MISC/pair_edip_multi.cpp +++ b/src/USER-MISC/pair_edip_multi.cpp @@ -68,6 +68,7 @@ PairEDIPMulti::PairEDIPMulti(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; nelements = 0; elements = nullptr; diff --git a/src/USER-MISC/pair_extep.cpp b/src/USER-MISC/pair_extep.cpp index 2bf5aee947..2d0001c680 100644 --- a/src/USER-MISC/pair_extep.cpp +++ b/src/USER-MISC/pair_extep.cpp @@ -49,6 +49,7 @@ PairExTeP::PairExTeP(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; ghostneigh = 1; nelements = 0; diff --git a/src/USER-MISC/pair_meam_sw_spline.cpp b/src/USER-MISC/pair_meam_sw_spline.cpp index c27cdcf610..17511e90b8 100644 --- a/src/USER-MISC/pair_meam_sw_spline.cpp +++ b/src/USER-MISC/pair_meam_sw_spline.cpp @@ -47,6 +47,7 @@ PairMEAMSWSpline::PairMEAMSWSpline(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; nelements = 0; elements = nullptr; diff --git a/src/USER-MISC/pair_tersoff_table.cpp b/src/USER-MISC/pair_tersoff_table.cpp index feaa789688..c4e2d2c993 100644 --- a/src/USER-MISC/pair_tersoff_table.cpp +++ b/src/USER-MISC/pair_tersoff_table.cpp @@ -61,6 +61,7 @@ PairTersoffTable::PairTersoffTable(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; unit_convert_flag = utils::get_supported_conversions(utils::ENERGY); nelements = 0; diff --git a/src/USER-MOFFF/angle_cosine_buck6d.cpp b/src/USER-MOFFF/angle_cosine_buck6d.cpp index 3ab7327325..277ee8830b 100644 --- a/src/USER-MOFFF/angle_cosine_buck6d.cpp +++ b/src/USER-MOFFF/angle_cosine_buck6d.cpp @@ -72,7 +72,7 @@ void AngleCosineBuck6d::compute(int eflag, int vflag) // insure pair->ev_tally() will use 1-3 virial contribution - if (vflag_global == 2) + if (vflag_global == VIRIAL_FDOTR) force->pair->vflag_either = force->pair->vflag_global = 1; double **x = atom->x; diff --git a/src/USER-NETCDF/dump_netcdf.cpp b/src/USER-NETCDF/dump_netcdf.cpp index a50e01ce95..e1a8dfab69 100644 --- a/src/USER-NETCDF/dump_netcdf.cpp +++ b/src/USER-NETCDF/dump_netcdf.cpp @@ -183,7 +183,7 @@ DumpNetCDF::DumpNetCDF(LAMMPS *lmp, int narg, char **arg) : for (int j = 0; j < DUMP_NC_MAX_DIMS; j++) { perat[inc].field[j] = -1; } - strcpy(perat[inc].name, mangled); + strncpy(perat[inc].name, mangled, NC_FIELD_NAME_MAX); n_perat++; } diff --git a/src/USER-OMP/bond_quartic_omp.cpp b/src/USER-OMP/bond_quartic_omp.cpp index 73fa0614d8..1f39a7cee1 100644 --- a/src/USER-OMP/bond_quartic_omp.cpp +++ b/src/USER-OMP/bond_quartic_omp.cpp @@ -45,7 +45,7 @@ void BondQuarticOMP::compute(int eflag, int vflag) // insure pair->ev_tally() will use 1-4 virial contribution - if (vflag_global == 2) + if (vflag_global == VIRIAL_FDOTR) force->pair->vflag_either = force->pair->vflag_global = 1; const int nall = atom->nlocal + atom->nghost; diff --git a/src/USER-OMP/dihedral_charmm_omp.cpp b/src/USER-OMP/dihedral_charmm_omp.cpp index 6b399be09d..c75378a8be 100644 --- a/src/USER-OMP/dihedral_charmm_omp.cpp +++ b/src/USER-OMP/dihedral_charmm_omp.cpp @@ -49,7 +49,7 @@ void DihedralCharmmOMP::compute(int eflag, int vflag) // insure pair->ev_tally() will use 1-4 virial contribution - if (weightflag && vflag_global == 2) + if (weightflag && vflag_global == VIRIAL_FDOTR) force->pair->vflag_either = force->pair->vflag_global = 1; const int nall = atom->nlocal + atom->nghost; diff --git a/src/USER-OMP/thr_omp.cpp b/src/USER-OMP/thr_omp.cpp index 0a8611707b..e590aedc87 100644 --- a/src/USER-OMP/thr_omp.cpp +++ b/src/USER-OMP/thr_omp.cpp @@ -70,20 +70,20 @@ void ThrOMP::ev_setup_thr(int eflag, int vflag, int nall, double *eatom, if (tid == 0) thr_error = 0; if (thr_style & THR_PAIR) { - if (eflag & 2) { + if (eflag & ENERGY_ATOM) { thr->eatom_pair = eatom + tid*nall; if (nall > 0) memset(&(thr->eatom_pair[0]),0,nall*sizeof(double)); } // per-atom virial and per-atom centroid virial are the same for two-body // many-body pair styles not yet implemented - if (vflag & 12) { + if (vflag & (VIRIAL_ATOM | VIRIAL_CENTROID)) { thr->vatom_pair = vatom + tid*nall; if (nall > 0) memset(&(thr->vatom_pair[0][0]),0,nall*6*sizeof(double)); } // check cvatom_pair, because can't access centroidstressflag - if ((vflag & 8) && cvatom) { + if ((vflag & VIRIAL_CENTROID) && cvatom) { thr->cvatom_pair = cvatom + tid*nall; if (nall > 0) memset(&(thr->cvatom_pair[0][0]),0,nall*9*sizeof(double)); @@ -94,13 +94,13 @@ void ThrOMP::ev_setup_thr(int eflag, int vflag, int nall, double *eatom, } if (thr_style & THR_BOND) { - if (eflag & 2) { + if (eflag & ENERGY_ATOM) { thr->eatom_bond = eatom + tid*nall; if (nall > 0) memset(&(thr->eatom_bond[0]),0,nall*sizeof(double)); } // per-atom virial and per-atom centroid virial are the same for bonds - if (vflag & 12) { + if (vflag & (VIRIAL_ATOM | VIRIAL_CENTROID)) { thr->vatom_bond = vatom + tid*nall; if (nall > 0) memset(&(thr->vatom_bond[0][0]),0,nall*6*sizeof(double)); @@ -108,17 +108,17 @@ void ThrOMP::ev_setup_thr(int eflag, int vflag, int nall, double *eatom, } if (thr_style & THR_ANGLE) { - if (eflag & 2) { + if (eflag & ENERGY_ATOM) { thr->eatom_angle = eatom + tid*nall; if (nall > 0) memset(&(thr->eatom_angle[0]),0,nall*sizeof(double)); } - if (vflag & 4) { + if (vflag & VIRIAL_ATOM) { thr->vatom_angle = vatom + tid*nall; if (nall > 0) memset(&(thr->vatom_angle[0][0]),0,nall*6*sizeof(double)); } - if (vflag & 8) { + if (vflag & VIRIAL_CENTROID) { thr->cvatom_angle = cvatom + tid*nall; if (nall > 0) memset(&(thr->cvatom_angle[0][0]),0,nall*9*sizeof(double)); @@ -126,17 +126,17 @@ void ThrOMP::ev_setup_thr(int eflag, int vflag, int nall, double *eatom, } if (thr_style & THR_DIHEDRAL) { - if (eflag & 2) { + if (eflag & ENERGY_ATOM) { thr->eatom_dihed = eatom + tid*nall; if (nall > 0) memset(&(thr->eatom_dihed[0]),0,nall*sizeof(double)); } - if (vflag & 4) { + if (vflag & VIRIAL_ATOM) { thr->vatom_dihed = vatom + tid*nall; if (nall > 0) memset(&(thr->vatom_dihed[0][0]),0,nall*6*sizeof(double)); } - if (vflag & 8) { + if (vflag & VIRIAL_CENTROID) { thr->cvatom_dihed = cvatom + tid*nall; if (nall > 0) memset(&(thr->cvatom_dihed[0][0]),0,nall*9*sizeof(double)); @@ -144,17 +144,17 @@ void ThrOMP::ev_setup_thr(int eflag, int vflag, int nall, double *eatom, } if (thr_style & THR_IMPROPER) { - if (eflag & 2) { + if (eflag & ENERGY_ATOM) { thr->eatom_imprp = eatom + tid*nall; if (nall > 0) memset(&(thr->eatom_imprp[0]),0,nall*sizeof(double)); } - if (vflag & 4) { + if (vflag & VIRIAL_ATOM) { thr->vatom_imprp = vatom + tid*nall; if (nall > 0) memset(&(thr->vatom_imprp[0][0]),0,nall*6*sizeof(double)); } - if (vflag & 8) { + if (vflag & VIRIAL_CENTROID) { thr->cvatom_imprp = cvatom + tid*nall; if (nall > 0) memset(&(thr->cvatom_imprp[0][0]),0,nall*9*sizeof(double)); @@ -222,29 +222,29 @@ void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag, #pragma omp critical #endif { - if (eflag & 1) { + if (eflag & ENERGY_GLOBAL) { pair->eng_vdwl += thr->eng_vdwl; pair->eng_coul += thr->eng_coul; thr->eng_vdwl = 0.0; thr->eng_coul = 0.0; } - if (vflag & 3) + if (vflag & (VIRIAL_PAIR | VIRIAL_FDOTR)) for (int i=0; i < 6; ++i) { pair->virial[i] += thr->virial_pair[i]; thr->virial_pair[i] = 0.0; } } - if (eflag & 2) { + if (eflag & ENERGY_ATOM) { data_reduce_thr(&(pair->eatom[0]), nall, nthreads, 1, tid); } // per-atom virial and per-atom centroid virial are the same for two-body // many-body pair styles not yet implemented - if (vflag & 12) { + if (vflag & (VIRIAL_ATOM | VIRIAL_CENTROID)) { data_reduce_thr(&(pair->vatom[0][0]), nall, nthreads, 6, tid); } // check cvatom_pair, because can't access centroidstressflag - if ((vflag & 8) && thr->cvatom_pair) { + if ((vflag & VIRIAL_CENTROID) && thr->cvatom_pair) { data_reduce_thr(&(pair->cvatom[0][0]), nall, nthreads, 9, tid); } } @@ -259,12 +259,12 @@ void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag, #pragma omp critical #endif { - if (eflag & 1) { + if (eflag & ENERGY_GLOBAL) { bond->energy += thr->eng_bond; thr->eng_bond = 0.0; } - if (vflag & 3) { + if (vflag & (VIRIAL_PAIR | VIRIAL_FDOTR)) { for (int i=0; i < 6; ++i) { bond->virial[i] += thr->virial_bond[i]; thr->virial_bond[i] = 0.0; @@ -272,11 +272,11 @@ void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag, } } - if (eflag & 2) { + if (eflag & ENERGY_ATOM) { data_reduce_thr(&(bond->eatom[0]), nall, nthreads, 1, tid); } // per-atom virial and per-atom centroid virial are the same for bonds - if (vflag & 12) { + if (vflag & (VIRIAL_ATOM | VIRIAL_CENTROID)) { data_reduce_thr(&(bond->vatom[0][0]), nall, nthreads, 6, tid); } @@ -291,12 +291,12 @@ void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag, #pragma omp critical #endif { - if (eflag & 1) { + if (eflag & ENERGY_GLOBAL) { angle->energy += thr->eng_angle; thr->eng_angle = 0.0; } - if (vflag & 3) { + if (vflag & (VIRIAL_PAIR | VIRIAL_FDOTR)) { for (int i=0; i < 6; ++i) { angle->virial[i] += thr->virial_angle[i]; thr->virial_angle[i] = 0.0; @@ -304,13 +304,13 @@ void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag, } } - if (eflag & 2) { + if (eflag & ENERGY_ATOM) { data_reduce_thr(&(angle->eatom[0]), nall, nthreads, 1, tid); } - if (vflag & 4) { + if (vflag & VIRIAL_ATOM) { data_reduce_thr(&(angle->vatom[0][0]), nall, nthreads, 6, tid); } - if (vflag & 8) { + if (vflag & VIRIAL_CENTROID) { data_reduce_thr(&(angle->cvatom[0][0]), nall, nthreads, 9, tid); } @@ -325,12 +325,12 @@ void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag, #pragma omp critical #endif { - if (eflag & 1) { + if (eflag & ENERGY_GLOBAL) { dihedral->energy += thr->eng_dihed; thr->eng_dihed = 0.0; } - if (vflag & 3) { + if (vflag & (VIRIAL_PAIR | VIRIAL_FDOTR)) { for (int i=0; i < 6; ++i) { dihedral->virial[i] += thr->virial_dihed[i]; thr->virial_dihed[i] = 0.0; @@ -338,13 +338,13 @@ void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag, } } - if (eflag & 2) { + if (eflag & ENERGY_ATOM) { data_reduce_thr(&(dihedral->eatom[0]), nall, nthreads, 1, tid); } - if (vflag & 4) { + if (vflag & VIRIAL_ATOM) { data_reduce_thr(&(dihedral->vatom[0][0]), nall, nthreads, 6, tid); } - if (vflag & 8) { + if (vflag & VIRIAL_CENTROID) { data_reduce_thr(&(dihedral->cvatom[0][0]), nall, nthreads, 9, tid); } @@ -360,7 +360,7 @@ void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag, #pragma omp critical #endif { - if (eflag & 1) { + if (eflag & ENERGY_GLOBAL) { dihedral->energy += thr->eng_dihed; pair->eng_vdwl += thr->eng_vdwl; pair->eng_coul += thr->eng_coul; @@ -369,7 +369,7 @@ void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag, thr->eng_coul = 0.0; } - if (vflag & 3) { + if (vflag & (VIRIAL_PAIR | VIRIAL_FDOTR)) { for (int i=0; i < 6; ++i) { dihedral->virial[i] += thr->virial_dihed[i]; pair->virial[i] += thr->virial_pair[i]; @@ -379,23 +379,23 @@ void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag, } } - if (eflag & 2) { + if (eflag & ENERGY_ATOM) { data_reduce_thr(&(dihedral->eatom[0]), nall, nthreads, 1, tid); data_reduce_thr(&(pair->eatom[0]), nall, nthreads, 1, tid); } - if (vflag & 4) { + if (vflag & VIRIAL_ATOM) { data_reduce_thr(&(dihedral->vatom[0][0]), nall, nthreads, 6, tid); } - if (vflag & 8) { + if (vflag & VIRIAL_CENTROID) { data_reduce_thr(&(dihedral->cvatom[0][0]), nall, nthreads, 9, tid); } // per-atom virial and per-atom centroid virial are the same for two-body // many-body pair styles not yet implemented - if (vflag & 12) { + if (vflag & (VIRIAL_ATOM | VIRIAL_CENTROID)) { data_reduce_thr(&(pair->vatom[0][0]), nall, nthreads, 6, tid); } // check cvatom_pair, because can't access centroidstressflag - if ((vflag & 8) && thr->cvatom_pair) { + if ((vflag & VIRIAL_CENTROID) && thr->cvatom_pair) { data_reduce_thr(&(pair->cvatom[0][0]), nall, nthreads, 9, tid); } } @@ -409,12 +409,12 @@ void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag, #pragma omp critical #endif { - if (eflag & 1) { + if (eflag & ENERGY_GLOBAL) { improper->energy += thr->eng_imprp; thr->eng_imprp = 0.0; } - if (vflag & 3) { + if (vflag & (VIRIAL_PAIR | VIRIAL_FDOTR)) { for (int i=0; i < 6; ++i) { improper->virial[i] += thr->virial_imprp[i]; thr->virial_imprp[i] = 0.0; @@ -422,13 +422,13 @@ void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag, } } - if (eflag & 2) { + if (eflag & ENERGY_ATOM) { data_reduce_thr(&(improper->eatom[0]), nall, nthreads, 1, tid); } - if (vflag & 4) { + if (vflag & VIRIAL_ATOM) { data_reduce_thr(&(improper->vatom[0][0]), nall, nthreads, 6, tid); } - if (vflag & 8) { + if (vflag & VIRIAL_CENTROID) { data_reduce_thr(&(improper->cvatom[0][0]), nall, nthreads, 9, tid); } diff --git a/src/USER-PLUMED/README b/src/USER-PLUMED/README index f46b2cd9bd..31910bc951 100644 --- a/src/USER-PLUMED/README +++ b/src/USER-PLUMED/README @@ -30,7 +30,7 @@ even if PLUMED is not in the path if as long as the input does not contain a fix plumed command. If you wish to statically link PLUMED you must download PLUMED to the /lib/plumed directory before compiling LAMMPS. You can -download a tar ball into that directory or you can clone the plumed2 repository from github there. Once you have created a +download a tar ball into that directory or you can clone the plumed2 repository from GitHub there. Once you have created a directory containing a distribution of PLUMED within /lib/plumed you then must build PLUMED within that directory by issuing the usual commands. It is worth noting that we have provided a script that will download and build PLUMED for you with a minimal set of options. To run this script you need to issue the following command: diff --git a/src/USER-QUIP/pair_quip.cpp b/src/USER-QUIP/pair_quip.cpp index 6b4b4ff576..0cbc71e564 100644 --- a/src/USER-QUIP/pair_quip.cpp +++ b/src/USER-QUIP/pair_quip.cpp @@ -16,7 +16,6 @@ Aidan Thompson (Sandia, athomps@sandia.gov) ------------------------------------------------------------------------- */ - #include #include @@ -44,6 +43,7 @@ PairQUIP::PairQUIP(LAMMPS *lmp) : Pair(lmp) one_coeff = 1; no_virial_fdotr_compute = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; map = nullptr; quip_potential = nullptr; diff --git a/src/USER-REACTION/README b/src/USER-REACTION/README index ed2e760e64..f5fc929c9d 100644 --- a/src/USER-REACTION/README +++ b/src/USER-REACTION/README @@ -19,5 +19,6 @@ The REACTER methodology is detailed in: Gissinger et al., Polymer 128, 211-217 (2017) https://doi.org/10.1016/j.polymer.2017.09.038 -This package was created by Jacob Gissinger (jrgiss05@gmail.com), -while at the NASA Langley Research Center. +This package was created by Jacob Gissinger +(jacob.r.gissinger@gmail.com), while at the NASA Langley Research +Center. diff --git a/src/USER-REAXC/pair_reaxc.cpp b/src/USER-REAXC/pair_reaxc.cpp index d13a48cb6d..d3507bdf85 100644 --- a/src/USER-REAXC/pair_reaxc.cpp +++ b/src/USER-REAXC/pair_reaxc.cpp @@ -40,7 +40,6 @@ #include "memory.h" #include "error.h" - #include "reaxc_defs.h" #include "reaxc_types.h" #include "reaxc_allocate.h" @@ -77,6 +76,7 @@ PairReaxC::PairReaxC(LAMMPS *lmp) : Pair(lmp) restartinfo = 0; one_coeff = 1; manybody_flag = 1; + centroidstressflag = CENTROID_NOTAVAIL; ghostneigh = 1; fix_id = new char[24]; diff --git a/src/angle.cpp b/src/angle.cpp index 97b2c4c3e1..110719d432 100644 --- a/src/angle.cpp +++ b/src/angle.cpp @@ -40,6 +40,7 @@ Angle::Angle(LAMMPS *lmp) : Pointers(lmp) vatom = nullptr; cvatom = nullptr; setflag = nullptr; + centroidstressflag = CENTROID_AVAIL; execution_space = Host; datamask_read = ALL_MASK; @@ -75,7 +76,19 @@ void Angle::init() /* ---------------------------------------------------------------------- setup for energy, virial computation - see integrate::ev_set() for values of eflag (0-3) and vflag (0-6) + see integrate::ev_set() for bitwise settings of eflag/vflag + set the following flags, values are otherwise set to 0: + evflag != 0 if any bits of eflag or vflag are set + eflag_global != 0 if ENERGY_GLOBAL bit of eflag set + eflag_atom != 0 if ENERGY_ATOM bit of eflag set + eflag_either != 0 if eflag_global or eflag_atom is set + vflag_global != 0 if VIRIAL_PAIR or VIRIAL_FDOTR bit of vflag set + vflag_atom != 0 if VIRIAL_ATOM bit of vflag set + vflag_atom != 0 if VIRIAL_CENTROID bit of vflag set + and centroidstressflag != CENTROID_AVAIL + cvflag_atom != 0 if VIRIAL_CENTROID bit of vflag set + and centroidstressflag = CENTROID_AVAIL + vflag_either != 0 if any of vflag_global, vflag_atom, cvflag_atom is set ------------------------------------------------------------------------- */ void Angle::ev_setup(int eflag, int vflag, int alloc) @@ -85,13 +98,17 @@ void Angle::ev_setup(int eflag, int vflag, int alloc) evflag = 1; eflag_either = eflag; - eflag_global = eflag % 2; - eflag_atom = eflag / 2; + eflag_global = eflag & ENERGY_GLOBAL; + eflag_atom = eflag & ENERGY_ATOM; - vflag_global = vflag % 4; - vflag_atom = vflag & 4; - cvflag_atom = vflag & 8; - vflag_either = vflag_global || vflag_atom; + vflag_global = vflag & (VIRIAL_PAIR | VIRIAL_FDOTR); + vflag_atom = vflag & VIRIAL_ATOM; + if (vflag & VIRIAL_CENTROID && centroidstressflag != CENTROID_AVAIL) + vflag_atom = 1; + cvflag_atom = 0; + if (vflag & VIRIAL_CENTROID && centroidstressflag == CENTROID_AVAIL) + cvflag_atom = 1; + vflag_either = vflag_global || vflag_atom || cvflag_atom; // reallocate per-atom arrays if necessary diff --git a/src/angle.h b/src/angle.h index 139380ff39..ffed437743 100644 --- a/src/angle.h +++ b/src/angle.h @@ -30,6 +30,11 @@ class Angle : protected Pointers { double *eatom,**vatom; // accumulated per-atom energy/virial double **cvatom; // accumulated per-atom centroid virial + int centroidstressflag; // centroid stress compared to two-body stress + // CENTROID_SAME = same as two-body stress + // CENTROID_AVAIL = different and implemented + // CENTROID_NOTAVAIL = different, not yet implemented + // KOKKOS host/device flag and data masks ExecutionSpace execution_space; diff --git a/src/atom.cpp b/src/atom.cpp index 0e63fc3fdf..9a2bc75f06 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -1910,7 +1910,7 @@ void Atom::add_molecule_atom(Molecule *onemol, int iatom, onemol->avec_body->set_quat(ilocal,onemol->quat_external); } - if (molecular != 1) return; + if (molecular != Atom::MOLECULAR) return; // add bond topology info // for molecular atom styles, but not atom style template diff --git a/src/atom_masks.h b/src/atom_masks.h index 8e29448488..daad323835 100644 --- a/src/atom_masks.h +++ b/src/atom_masks.h @@ -42,6 +42,12 @@ #define ENERGY_MASK 0x00010000 #define VIRIAL_MASK 0x00020000 +// SPIN + +#define SP_MASK 0x00000001 +#define FM_MASK 0x00000002 +#define FML_MASK 0x00000004 + // DPD #define DPDRHO_MASK 0x00040000 diff --git a/src/atom_vec_ellipsoid.cpp b/src/atom_vec_ellipsoid.cpp index 3bdeff67af..b4cb4616a7 100644 --- a/src/atom_vec_ellipsoid.cpp +++ b/src/atom_vec_ellipsoid.cpp @@ -533,8 +533,7 @@ void AtomVecEllipsoid::write_data_bonus(FILE *fp, int n, double *buf, int /*flag this may create or delete entry in bonus data ------------------------------------------------------------------------- */ -void AtomVecEllipsoid:: -set_shape(int i, double shapex, double shapey, double shapez) +void AtomVecEllipsoid::set_shape(int i, double shapex, double shapey, double shapez) { if (ellipsoid[i] < 0) { if (shapex == 0.0 && shapey == 0.0 && shapez == 0.0) return; diff --git a/src/bond.cpp b/src/bond.cpp index 1912d15aa7..16d3c43dea 100644 --- a/src/bond.cpp +++ b/src/bond.cpp @@ -80,7 +80,16 @@ void Bond::init() /* ---------------------------------------------------------------------- setup for energy, virial computation - see integrate::ev_set() for values of eflag (0-3) and vflag (0-6) + see integrate::ev_set() for bitwise settings of eflag/vflag + set the following flags, values are otherwise set to 0: + evflag != 0 if any bits of eflag or vflag are set + eflag_global != 0 if ENERGY_GLOBAL bit of eflag set + eflag_atom != 0 if ENERGY_ATOM bit of eflag set + eflag_either != 0 if eflag_global or eflag_atom is set + vflag_global != 0 if VIRIAL_PAIR or VIRIAL_FDOTR bit of vflag set + vflag_atom != 0 if VIRIAL_ATOM or VIRIAL_CENTROID bit of vflag set + two-body and centroid stress are identical for bonds + vflag_either != 0 if vflag_global or vflag_atom is set ------------------------------------------------------------------------- */ void Bond::ev_setup(int eflag, int vflag, int alloc) @@ -90,13 +99,12 @@ void Bond::ev_setup(int eflag, int vflag, int alloc) evflag = 1; eflag_either = eflag; - eflag_global = eflag % 2; - eflag_atom = eflag / 2; + eflag_global = eflag & ENERGY_GLOBAL; + eflag_atom = eflag & ENERGY_ATOM; vflag_either = vflag; - vflag_global = vflag % 4; - // per-atom virial and per-atom centroid virial are the same for bonds - vflag_atom = vflag / 4; + vflag_global = vflag & (VIRIAL_PAIR | VIRIAL_FDOTR); + vflag_atom = vflag & (VIRIAL_ATOM | VIRIAL_CENTROID); // reallocate per-atom arrays if necessary diff --git a/src/compute_centroid_stress_atom.cpp b/src/compute_centroid_stress_atom.cpp index d17d402a3d..a6755b5b53 100644 --- a/src/compute_centroid_stress_atom.cpp +++ b/src/compute_centroid_stress_atom.cpp @@ -124,10 +124,35 @@ void ComputeCentroidStressAtom::init() else biasflag = NOBIAS; } else biasflag = NOBIAS; - // check if pair styles support centroid atom stress + // check if force components and fixes support centroid atom stress + // all bond styles support it as CENTROID_SAME + if (pairflag && force->pair) - if (force->pair->centroidstressflag & 4) + if (force->pair->centroidstressflag == CENTROID_NOTAVAIL) error->all(FLERR, "Pair style does not support compute centroid/stress/atom"); + + if (angleflag && force->angle) + if (force->angle->centroidstressflag == CENTROID_NOTAVAIL) + error->all(FLERR, "Angle style does not support compute centroid/stress/atom"); + + if (dihedralflag && force->dihedral) + if (force->dihedral->centroidstressflag == CENTROID_NOTAVAIL) + error->all(FLERR, "Dihedral style does not support compute centroid/stress/atom"); + + if (improperflag && force->improper) + if (force->improper->centroidstressflag == CENTROID_NOTAVAIL) + error->all(FLERR, "Improper style does not support compute centroid/stress/atom"); + + if (kspaceflag && force->kspace) + if (force->kspace->centroidstressflag == CENTROID_NOTAVAIL) + error->all(FLERR, "KSpace style does not support compute centroid/stress/atom"); + + if (fixflag) { + for (int ifix = 0; ifix < modify->nfix; ifix++) + if (modify->fix[ifix]->virial_flag && + modify->fix[ifix]->centroidstressflag == CENTROID_NOTAVAIL) + error->all(FLERR, "Fix style does not support compute centroid/stress/atom"); + } } /* ---------------------------------------------------------------------- */ @@ -173,12 +198,12 @@ void ComputeCentroidStressAtom::compute_peratom() for (j = 0; j < 9; j++) stress[i][j] = 0.0; - // add in per-atom contributions from each force - - // per-atom virial and per-atom centroid virial are the same for two-body - // many-body pair styles not yet implemented + // add in per-atom contributions from all force components and fixes + + // pair styles are either CENTROID_SAME or CENTROID_AVAIL or CENTROID_NOTAVAIL + if (pairflag && force->pair && force->pair->compute_flag) { - if (force->pair->centroidstressflag & 2) { + if (force->pair->centroidstressflag == CENTROID_AVAIL) { double **cvatom = force->pair->cvatom; for (i = 0; i < npair; i++) for (j = 0; j < 9; j++) @@ -195,6 +220,10 @@ void ComputeCentroidStressAtom::compute_peratom() } // per-atom virial and per-atom centroid virial are the same for bonds + // bond styles are all CENTROID_SAME + // angle, dihedral, improper styles are CENTROID_AVAIL or CENTROID_NOTAVAIL + // KSpace styles are all CENTROID_NOTAVAIL, placeholder CENTROID_SAME below + if (bondflag && force->bond) { double **vatom = force->bond->vatom; for (i = 0; i < nbond; i++) { @@ -241,7 +270,8 @@ void ComputeCentroidStressAtom::compute_peratom() // possible during setup phase if fix has not initialized its vatom yet // e.g. fix ave/spatial defined before fix shake, // and fix ave/spatial uses a per-atom stress from this compute as input - + // fix styles are CENTROID_SAME or CENTROID_NOTAVAIL + if (fixflag) { for (int ifix = 0; ifix < modify->nfix; ifix++) if (modify->fix[ifix]->virial_flag) { @@ -258,7 +288,8 @@ void ComputeCentroidStressAtom::compute_peratom() // communicate ghost virials between neighbor procs - if (force->newton || (force->kspace && force->kspace->tip4pflag && force->kspace->compute_flag)) + if (force->newton || + (force->kspace && force->kspace->tip4pflag && force->kspace->compute_flag)) comm->reverse_comm_compute(this); // zero virial of atoms not in group diff --git a/src/create_atoms.cpp b/src/create_atoms.cpp index e461e4928a..4abb2c4696 100644 --- a/src/create_atoms.cpp +++ b/src/create_atoms.cpp @@ -446,7 +446,7 @@ void CreateAtoms::command(int narg, char **arg) // molcreate = # of molecules I created - int molcreate = (atom->nlocal - nlocal_previous) / onemol->natoms; + tagint molcreate = (atom->nlocal - nlocal_previous) / onemol->natoms; // increment total bonds,angles,etc @@ -463,13 +463,13 @@ void CreateAtoms::command(int narg, char **arg) // moloffset = max molecule ID for all molecules owned by previous procs // including molecules existing before this creation - tagint moloffset; + tagint moloffset = 0; if (molecule_flag) { tagint max = 0; for (int i = 0; i < nlocal_previous; i++) max = MAX(max,molecule[i]); tagint maxmol; MPI_Allreduce(&max,&maxmol,1,MPI_LMP_TAGINT,MPI_MAX,world); - MPI_Scan(&molcreate,&moloffset,1,MPI_INT,MPI_SUM,world); + MPI_Scan(&molcreate,&moloffset,1,MPI_LMP_TAGINT,MPI_SUM,world); moloffset = moloffset - molcreate + maxmol; } diff --git a/src/delete_atoms.cpp b/src/delete_atoms.cpp index 03cd20947d..3dbf21ae59 100644 --- a/src/delete_atoms.cpp +++ b/src/delete_atoms.cpp @@ -557,6 +557,7 @@ void DeleteAtoms::recount_topology() for (int i = 0; i < nlocal; i++) { imol = molindex[i]; iatom = molatom[i]; + if (imol < 0) continue; nbonds += onemols[imol]->num_bond[iatom]; nangles += onemols[imol]->num_angle[iatom]; ndihedrals += onemols[imol]->num_dihedral[iatom]; diff --git a/src/dihedral.cpp b/src/dihedral.cpp index f778341bfa..4680b6f67d 100644 --- a/src/dihedral.cpp +++ b/src/dihedral.cpp @@ -40,6 +40,7 @@ Dihedral::Dihedral(LAMMPS *lmp) : Pointers(lmp) vatom = nullptr; cvatom = nullptr; setflag = nullptr; + centroidstressflag = CENTROID_AVAIL; execution_space = Host; datamask_read = ALL_MASK; @@ -74,7 +75,19 @@ void Dihedral::init() /* ---------------------------------------------------------------------- setup for energy, virial computation - see integrate::ev_set() for values of eflag (0-3) and vflag (0-6) + see integrate::ev_set() for bitwise settings of eflag/vflag + set the following flags, values are otherwise set to 0: + evflag != 0 if any bits of eflag or vflag are set + eflag_global != 0 if ENERGY_GLOBAL bit of eflag set + eflag_atom != 0 if ENERGY_ATOM bit of eflag set + eflag_either != 0 if eflag_global or eflag_atom is set + vflag_global != 0 if VIRIAL_PAIR or VIRIAL_FDOTR bit of vflag set + vflag_atom != 0 if VIRIAL_ATOM bit of vflag set + vflag_atom != 0 if VIRIAL_CENTROID bit of vflag set + and centroidstressflag != CENTROID_AVAIL + cvflag_atom != 0 if VIRIAL_CENTROID bit of vflag set + and centroidstressflag = CENTROID_AVAIL + vflag_either != 0 if any of vflag_global, vflag_atom, cvflag_atom is set ------------------------------------------------------------------------- */ void Dihedral::ev_setup(int eflag, int vflag, int alloc) @@ -84,13 +97,17 @@ void Dihedral::ev_setup(int eflag, int vflag, int alloc) evflag = 1; eflag_either = eflag; - eflag_global = eflag % 2; - eflag_atom = eflag / 2; + eflag_global = eflag & ENERGY_GLOBAL; + eflag_atom = eflag & ENERGY_ATOM; - vflag_global = vflag % 4; - vflag_atom = vflag & 4; - cvflag_atom = vflag & 8; - vflag_either = vflag_global || vflag_atom; + vflag_global = vflag & (VIRIAL_PAIR | VIRIAL_FDOTR); + vflag_atom = vflag & VIRIAL_ATOM; + if (vflag & VIRIAL_CENTROID && centroidstressflag != CENTROID_AVAIL) + vflag_atom = 1; + cvflag_atom = 0; + if (vflag & VIRIAL_CENTROID && centroidstressflag == CENTROID_AVAIL) + cvflag_atom = 1; + vflag_either = vflag_global || vflag_atom || cvflag_atom; // reallocate per-atom arrays if necessary diff --git a/src/dihedral.h b/src/dihedral.h index c96891b1c4..c571a74dd4 100644 --- a/src/dihedral.h +++ b/src/dihedral.h @@ -30,6 +30,11 @@ class Dihedral : protected Pointers { double *eatom,**vatom; // accumulated per-atom energy/virial double **cvatom; // accumulated per-atom centroid virial + int centroidstressflag; // centroid stress compared to two-body stress + // CENTROID_SAME = same as two-body stress + // CENTROID_AVAIL = different and implemented + // CENTROID_NOTAVAIL = different, not yet implemented + // KOKKOS host/device flag and data masks ExecutionSpace execution_space; diff --git a/src/domain.cpp b/src/domain.cpp index b0a32ce114..1becba5e0b 100644 --- a/src/domain.cpp +++ b/src/domain.cpp @@ -1873,6 +1873,7 @@ void Domain::set_boundary(int narg, char **arg, int flag) else zperiodic = 0; // record if we changed a periodic boundary to a non-periodic one + int pflag=0; if ((periodicity[0] && !xperiodic) || (periodicity[1] && !yperiodic) @@ -1889,23 +1890,27 @@ void Domain::set_boundary(int narg, char **arg, int flag) boundary[1][0] >= 2 || boundary[1][1] >= 2 || boundary[2][0] >= 2 || boundary[2][1] >= 2) nonperiodic = 2; } + + // force non-zero image flags to zero for non-periodic dimensions + // keep track if a change was made, so we can print a warning message + if (pflag) { pflag = 0; for (int i=0; i < atom->nlocal; ++i) { int xbox = (atom->image[i] & IMGMASK) - IMGMAX; int ybox = (atom->image[i] >> IMGBITS & IMGMASK) - IMGMAX; int zbox = (atom->image[i] >> IMG2BITS) - IMGMAX; - if (!xperiodic) { xbox = 0; pflag = 1; } - if (!yperiodic) { ybox = 0; pflag = 1; } - if (!zperiodic) { zbox = 0; pflag = 1; } + if ((!xperiodic) && (xbox != 0)) { xbox = 0; pflag = 1; } + if ((!yperiodic) && (ybox != 0)) { ybox = 0; pflag = 1; } + if ((!zperiodic) && (zbox != 0)) { zbox = 0; pflag = 1; } atom->image[i] = ((imageint) (xbox + IMGMAX) & IMGMASK) | (((imageint) (ybox + IMGMAX) & IMGMASK) << IMGBITS) | (((imageint) (zbox + IMGMAX) & IMGMASK) << IMG2BITS); } int flag_all; - MPI_Allreduce(&flag,&flag_all, 1, MPI_INT, MPI_SUM, world); + MPI_Allreduce(&pflag,&flag_all, 1, MPI_INT, MPI_SUM, world); if ((flag_all > 0) && (comm->me == 0)) - error->warning(FLERR,"Reset image flags for non-periodic boundary"); + error->warning(FLERR,"Resetting image flags for non-periodic dimensions"); } } diff --git a/src/dump_dcd.cpp b/src/dump_dcd.cpp index 466bea9fa5..3bbf929845 100644 --- a/src/dump_dcd.cpp +++ b/src/dump_dcd.cpp @@ -97,16 +97,19 @@ void DumpDCD::init_style() error->all(FLERR,"Dump dcd requires sorting by atom ID"); // check that dump frequency has not changed and is not a variable + // but only when not being called from the "write_dump" command. - int idump; - for (idump = 0; idump < output->ndump; idump++) - if (strcmp(id,output->dump[idump]->id) == 0) break; - if (output->every_dump[idump] == 0) - error->all(FLERR,"Cannot use variable every setting for dump dcd"); + if (strcmp(id,"WRITE_DUMP") != 0) { + int idump; + for (idump = 0; idump < output->ndump; idump++) + if (strcmp(id,output->dump[idump]->id) == 0) break; + if (output->every_dump[idump] == 0) + error->all(FLERR,"Cannot use variable every setting for dump dcd"); - if (nevery_save == 0) nevery_save = output->every_dump[idump]; - else if (nevery_save != output->every_dump[idump]) - error->all(FLERR,"Cannot change dump_modify every for dump dcd"); + if (nevery_save == 0) nevery_save = output->every_dump[idump]; + else if (nevery_save != output->every_dump[idump]) + error->all(FLERR,"Cannot change dump_modify every for dump dcd"); + } } /* ---------------------------------------------------------------------- */ diff --git a/src/fix.cpp b/src/fix.cpp index 16628e5374..ae8f8c7369 100644 --- a/src/fix.cpp +++ b/src/fix.cpp @@ -16,6 +16,7 @@ #include "atom.h" #include "atom_masks.h" #include "error.h" +#include "force.h" #include "group.h" #include "memory.h" @@ -103,7 +104,8 @@ Fix::Fix(LAMMPS *lmp, int /*narg*/, char **arg) : maxeatom = maxvatom = 0; vflag_atom = 0; - + centroidstressflag = CENTROID_SAME; + // KOKKOS per-fix data masks execution_space = Host; @@ -111,6 +113,7 @@ Fix::Fix(LAMMPS *lmp, int /*narg*/, char **arg) : datamask_modify = ALL_MASK; kokkosable = 0; + forward_comm_device = 0; copymode = 0; } @@ -189,12 +192,12 @@ void Fix::ev_setup(int eflag, int vflag) evflag = 1; eflag_either = eflag; - eflag_global = eflag % 2; - eflag_atom = eflag / 2; + eflag_global = eflag & ENERGY_GLOBAL; + eflag_atom = eflag & ENERGY_ATOM; vflag_either = vflag; - vflag_global = vflag % 4; - vflag_atom = vflag / 4; + vflag_global = vflag & (VIRIAL_PAIR | VIRIAL_FDOTR); + vflag_atom = vflag & (VIRIAL_ATOM | VIRIAL_CENTROID); // reallocate per-atom arrays if necessary @@ -234,7 +237,7 @@ void Fix::ev_setup(int eflag, int vflag) /* ---------------------------------------------------------------------- if thermo_virial is on: setup for virial computation - see integrate::ev_set() for values of vflag (0-6) + see integrate::ev_set() for values of vflag fixes call this if use v_tally() else: set evflag=0 ------------------------------------------------------------------------- */ @@ -250,8 +253,8 @@ void Fix::v_setup(int vflag) evflag = 1; - vflag_global = vflag % 4; - vflag_atom = vflag / 4; + vflag_global = vflag & (VIRIAL_PAIR | VIRIAL_FDOTR); + vflag_atom = vflag & (VIRIAL_ATOM | VIRIAL_CENTROID); // reallocate per-atom array if necessary diff --git a/src/fix.h b/src/fix.h index 07a222063c..75c644e87f 100644 --- a/src/fix.h +++ b/src/fix.h @@ -102,11 +102,17 @@ class Fix : protected Pointers { double virial[6]; // accumulated virial double *eatom,**vatom; // accumulated per-atom energy/virial + int centroidstressflag; // centroid stress compared to two-body stress + // CENTROID_SAME = same as two-body stress + // CENTROID_AVAIL = different and implemented + // CENTROID_NOTAVAIL = different, not yet implemented + int restart_reset; // 1 if restart just re-initialized fix // KOKKOS host/device flag and data masks int kokkosable; // 1 if Kokkos fix + int forward_comm_device; // 1 if forward comm on Device ExecutionSpace execution_space; unsigned int datamask_read,datamask_modify; diff --git a/src/fix_box_relax.cpp b/src/fix_box_relax.cpp index 0437d1550c..0200f8ed03 100644 --- a/src/fix_box_relax.cpp +++ b/src/fix_box_relax.cpp @@ -735,12 +735,18 @@ void FixBoxRelax::couple() p_current[2] = tensor[2]; } + if (!std::isfinite(p_current[0]) || !std::isfinite(p_current[1]) || !std::isfinite(p_current[2])) + error->all(FLERR,"Non-numeric pressure - simulation unstable"); + // switch order from xy-xz-yz to Voigt if (pstyle == TRICLINIC) { p_current[3] = tensor[5]; p_current[4] = tensor[4]; p_current[5] = tensor[3]; + + if (!std::isfinite(p_current[3]) || !std::isfinite(p_current[4]) || !std::isfinite(p_current[5])) + error->all(FLERR,"Non-numeric pressure - simulation unstable"); } } diff --git a/src/fix_neigh_history.cpp b/src/fix_neigh_history.cpp index f3e3adfd99..6fb860e9a9 100644 --- a/src/fix_neigh_history.cpp +++ b/src/fix_neigh_history.cpp @@ -40,6 +40,8 @@ FixNeighHistory::FixNeighHistory(LAMMPS *lmp, int narg, char **arg) : if (narg != 4) error->all(FLERR,"Illegal fix NEIGH_HISTORY command"); restart_peratom = 1; + restart_global = 1; + create_attribute = 1; maxexchange_dynamic = 1; @@ -840,6 +842,23 @@ int FixNeighHistory::unpack_exchange(int nlocal, double *buf) return m; } +/* ---------------------------------------------------------------------- + Use write_restart to invoke pre_exchange +------------------------------------------------------------------------- */ + +void FixNeighHistory::write_restart(FILE *fp) +{ + // Call pre-exchange to copy updated history in page file + // back into per-atom arrays prior to packing restart data + + pre_exchange(); + if (comm->me == 0) { + int size = 0; + fwrite(&size,sizeof(int),1,fp); + } +} + + /* ---------------------------------------------------------------------- pack values in local atom-based arrays for restart file ------------------------------------------------------------------------- */ diff --git a/src/fix_neigh_history.h b/src/fix_neigh_history.h index 51d03f5b12..89c726683a 100644 --- a/src/fix_neigh_history.h +++ b/src/fix_neigh_history.h @@ -53,6 +53,7 @@ class FixNeighHistory : public Fix { void unpack_reverse_comm(int, int *, double *); int pack_exchange(int, double *); int unpack_exchange(int, double *); + void write_restart(FILE *); int pack_restart(int, double *); void unpack_restart(int, int); int size_restart(int); diff --git a/src/fmt/chrono.h b/src/fmt/chrono.h index e70b8053a6..1a3b8d5e5c 100644 --- a/src/fmt/chrono.h +++ b/src/fmt/chrono.h @@ -72,43 +72,27 @@ FMT_CONSTEXPR To lossless_integral_conversion(const From from, int& ec) { static_assert(F::is_integer, "From must be integral"); static_assert(T::is_integer, "To must be integral"); - if (F::is_signed && !T::is_signed) { + if (detail::const_check(F::is_signed && !T::is_signed)) { // From may be negative, not allowed! if (fmt::detail::is_negative(from)) { ec = 1; return {}; } - // From is positive. Can it always fit in To? - if (F::digits <= T::digits) { - // yes, From always fits in To. - } else { - // from may not fit in To, we have to do a dynamic check - if (from > static_cast((T::max)())) { - ec = 1; - return {}; - } + if (F::digits > T::digits && + from > static_cast(detail::max_value())) { + ec = 1; + return {}; } } - if (!F::is_signed && T::is_signed) { - // can from be held in To? - if (F::digits < T::digits) { - // yes, From always fits in To. - } else { - // from may not fit in To, we have to do a dynamic check - if (from > static_cast((T::max)())) { - // outside range. - ec = 1; - return {}; - } - } + if (!F::is_signed && T::is_signed && F::digits >= T::digits && + from > static_cast(detail::max_value())) { + ec = 1; + return {}; } - - // reaching here means all is ok for lossless conversion. - return static_cast(from); - -} // function + return static_cast(from); // Lossless conversion. +} template ::value)> @@ -190,11 +174,9 @@ To safe_duration_cast(std::chrono::duration from, // safe conversion to IntermediateRep IntermediateRep count = lossless_integral_conversion(from.count(), ec); - if (ec) { - return {}; - } + if (ec) return {}; // multiply with Factor::num without overflow or underflow - if (Factor::num != 1) { + if (detail::const_check(Factor::num != 1)) { const auto max1 = detail::max_value() / Factor::num; if (count > max1) { ec = 1; @@ -209,17 +191,9 @@ To safe_duration_cast(std::chrono::duration from, count *= Factor::num; } - // this can't go wrong, right? den>0 is checked earlier. - if (Factor::den != 1) { - count /= Factor::den; - } - // convert to the to type, safely - using ToRep = typename To::rep; - const ToRep tocount = lossless_integral_conversion(count, ec); - if (ec) { - return {}; - } - return To{tocount}; + if (detail::const_check(Factor::den != 1)) count /= Factor::den; + auto tocount = lossless_integral_conversion(count, ec); + return ec ? To() : To(tocount); } /** @@ -351,6 +325,11 @@ inline std::tm localtime(std::time_t time) { return lt.tm_; } +inline std::tm localtime( + std::chrono::time_point time_point) { + return localtime(std::chrono::system_clock::to_time_t(time_point)); +} + // Thread-safe replacement for std::gmtime inline std::tm gmtime(std::time_t time) { struct dispatcher { @@ -387,6 +366,11 @@ inline std::tm gmtime(std::time_t time) { return gt.tm_; } +inline std::tm gmtime( + std::chrono::time_point time_point) { + return gmtime(std::chrono::system_clock::to_time_t(time_point)); +} + namespace detail { inline size_t strftime(char* str, size_t count, const char* format, const std::tm* time) { @@ -399,6 +383,17 @@ inline size_t strftime(wchar_t* str, size_t count, const wchar_t* format, } } // namespace detail +template +struct formatter, Char> + : formatter { + template + auto format(std::chrono::time_point val, + FormatContext& ctx) -> decltype(ctx.out()) { + std::tm time = localtime(val); + return formatter::format(time, ctx); + } +}; + template struct formatter { template auto parse(ParseContext& ctx) -> decltype(ctx.begin()) { diff --git a/src/fmt/color.h b/src/fmt/color.h index b65f892afc..94e3419d1d 100644 --- a/src/fmt/color.h +++ b/src/fmt/color.h @@ -463,16 +463,16 @@ template <> inline void reset_color(FILE* stream) FMT_NOEXCEPT { } template -inline void reset_color(basic_memory_buffer& buffer) FMT_NOEXCEPT { +inline void reset_color(buffer& buffer) FMT_NOEXCEPT { const char* begin = data::reset_color; const char* end = begin + sizeof(data::reset_color) - 1; buffer.append(begin, end); } template -void vformat_to(basic_memory_buffer& buf, const text_style& ts, +void vformat_to(buffer& buf, const text_style& ts, basic_string_view format_str, - basic_format_args> args) { + basic_format_args>> args) { bool has_style = false; if (ts.has_emphasis()) { has_style = true; @@ -496,7 +496,7 @@ void vformat_to(basic_memory_buffer& buf, const text_style& ts, template > void vprint(std::FILE* f, const text_style& ts, const S& format, - basic_format_args> args) { + basic_format_args>> args) { basic_memory_buffer buf; detail::vformat_to(buf, ts, to_string_view(format), args); buf.push_back(Char(0)); @@ -504,20 +504,22 @@ void vprint(std::FILE* f, const text_style& ts, const S& format, } /** + \rst Formats a string and prints it to the specified file stream using ANSI escape sequences to specify text formatting. - Example: + + **Example**:: + fmt::print(fmt::emphasis::bold | fg(fmt::color::red), "Elapsed time: {0:.2f} seconds", 1.23); + \endrst */ template ::value)> void print(std::FILE* f, const text_style& ts, const S& format_str, const Args&... args) { - detail::check_format_string(format_str); - using context = buffer_context>; - format_arg_store as{args...}; - vprint(f, ts, format_str, basic_format_args(as)); + vprint(f, ts, format_str, + fmt::make_args_checked(format_str, args...)); } /** @@ -558,7 +560,42 @@ template > inline std::basic_string format(const text_style& ts, const S& format_str, const Args&... args) { return vformat(ts, to_string_view(format_str), - detail::make_args_checked(format_str, args...)); + fmt::make_args_checked(format_str, args...)); +} + +/** + Formats a string with the given text_style and writes the output to ``out``. + */ +template ::value)> +OutputIt vformat_to( + OutputIt out, const text_style& ts, basic_string_view format_str, + basic_format_args>> args) { + decltype(detail::get_buffer(out)) buf(detail::get_buffer_init(out)); + detail::vformat_to(buf, ts, format_str, args); + return detail::get_iterator(buf); +} + +/** + \rst + Formats arguments with the given text_style, writes the result to the output + iterator ``out`` and returns the iterator past the end of the output range. + + **Example**:: + + std::vector out; + fmt::format_to(std::back_inserter(out), + fmt::emphasis::bold | fg(fmt::color::red), "{}", 42); + \endrst +*/ +template >::value&& + detail::is_string::value> +inline auto format_to(OutputIt out, const text_style& ts, const S& format_str, + Args&&... args) -> + typename std::enable_if::type { + return vformat_to(out, ts, to_string_view(format_str), + fmt::make_args_checked(format_str, args...)); } FMT_END_NAMESPACE diff --git a/src/fmt/compile.h b/src/fmt/compile.h index d7e6449ebb..3a33b02014 100644 --- a/src/fmt/compile.h +++ b/src/fmt/compile.h @@ -368,7 +368,8 @@ template struct type_list {}; // Returns a reference to the argument at index N from [first, rest...]. template -constexpr const auto& get(const T& first, const Args&... rest) { +constexpr const auto& get([[maybe_unused]] const T& first, + [[maybe_unused]] const Args&... rest) { static_assert(N < 1 + sizeof...(Args), "index is out of bounds"); if constexpr (N == 0) return first; @@ -406,6 +407,19 @@ constexpr text make_text(basic_string_view s, size_t pos, return {{&s[pos], size}}; } +template struct code_unit { + Char value; + using char_type = Char; + + template + OutputIt format(OutputIt out, const Args&...) const { + return write(out, value); + } +}; + +template +struct is_compiled_format> : std::true_type {}; + // A replacement field that refers to argument N. template struct field { using char_type = Char; @@ -430,7 +444,9 @@ template struct spec_field { OutputIt format(OutputIt out, const Args&... args) const { // This ensures that the argument type is convertile to `const T&`. const T& arg = get(args...); - basic_format_context ctx(out, {}); + const auto& vargs = + make_format_args>(args...); + basic_format_context ctx(out, vargs); return fmt.format(arg, ctx); } }; @@ -489,16 +505,17 @@ constexpr auto parse_tail(T head, S format_str) { template struct parse_specs_result { formatter fmt; size_t end; + int next_arg_id; }; template constexpr parse_specs_result parse_specs(basic_string_view str, - size_t pos) { + size_t pos, int arg_id) { str.remove_prefix(pos); - auto ctx = basic_format_parse_context(str); + auto ctx = basic_format_parse_context(str, {}, arg_id + 1); auto f = formatter(); auto end = f.parse(ctx); - return {f, pos + (end - str.data()) + 1}; + return {f, pos + (end - str.data()) + 1, ctx.next_arg_id()}; } // Compiles a non-empty format string and returns the compiled representation @@ -518,8 +535,8 @@ constexpr auto compile_format_string(S format_str) { format_str); } else if constexpr (str[POS + 1] == ':') { using type = get_type; - constexpr auto result = parse_specs(str, POS + 2); - return parse_tail( + constexpr auto result = parse_specs(str, POS + 2, ID); + return parse_tail( spec_field{result.fmt}, format_str); } else { return unknown_format(); @@ -530,8 +547,13 @@ constexpr auto compile_format_string(S format_str) { return parse_tail(make_text(str, POS, 1), format_str); } else { constexpr auto end = parse_text(str, POS + 1); - return parse_tail(make_text(str, POS, end - POS), - format_str); + if constexpr (end - POS > 1) { + return parse_tail(make_text(str, POS, end - POS), + format_str); + } else { + return parse_tail(code_unit{str[POS]}, + format_str); + } } } @@ -587,8 +609,7 @@ template format(const CompiledFormat& cf, const Args&... args) { basic_memory_buffer buffer; - detail::buffer& base = buffer; - cf.format(std::back_inserter(base), args...); + cf.format(detail::buffer_appender(buffer), args...); return to_string(buffer); } @@ -608,8 +629,7 @@ template format(const CompiledFormat& cf, const Args&... args) { basic_memory_buffer buffer; using context = buffer_context; - detail::buffer& base = buffer; - detail::cf::vformat_to(std::back_inserter(base), cf, + detail::cf::vformat_to(detail::buffer_appender(buffer), cf, make_format_args(args...)); return to_string(buffer); } @@ -618,9 +638,13 @@ template ::value)> FMT_INLINE std::basic_string format(const S&, Args&&... args) { - constexpr basic_string_view str = S(); - if (str.size() == 2 && str[0] == '{' && str[1] == '}') - return fmt::to_string(detail::first(args...)); +#ifdef __cpp_if_constexpr + if constexpr (std::is_same::value) { + constexpr basic_string_view str = S(); + if (str.size() == 2 && str[0] == '{' && str[1] == '}') + return fmt::to_string(detail::first(args...)); + } +#endif constexpr auto compiled = detail::compile(S()); return format(compiled, std::forward(args)...); } @@ -643,18 +667,30 @@ OutputIt format_to(OutputIt out, const S&, const Args&... args) { return format_to(out, compiled, args...); } -template < - typename OutputIt, typename CompiledFormat, typename... Args, - FMT_ENABLE_IF(detail::is_output_iterator::value&& std::is_base_of< - detail::basic_compiled_format, CompiledFormat>::value)> -format_to_n_result format_to_n(OutputIt out, size_t n, - const CompiledFormat& cf, - const Args&... args) { +template +auto format_to_n(OutputIt out, size_t n, const CompiledFormat& cf, + const Args&... args) -> + typename std::enable_if< + detail::is_output_iterator::value && + std::is_base_of::value, + format_to_n_result>::type { auto it = format_to(detail::truncating_iterator(out, n), cf, args...); return {it.base(), it.count()}; } +template ::value)> +format_to_n_result format_to_n(OutputIt out, size_t n, const S&, + const Args&... args) { + constexpr auto compiled = detail::compile(S()); + auto it = format_to(detail::truncating_iterator(out, n), compiled, + args...); + return {it.base(), it.count()}; +} + template size_t formatted_size(const CompiledFormat& cf, const Args&... args) { return format_to(detail::counting_iterator(), cf, args...).count(); diff --git a/src/fmt/core.h b/src/fmt/core.h index 6d87ab290a..b4fc461011 100644 --- a/src/fmt/core.h +++ b/src/fmt/core.h @@ -18,7 +18,7 @@ #include // The fmt library version in the form major * 10000 + minor * 100 + patch. -#define FMT_VERSION 70003 +#define FMT_VERSION 70102 #ifdef __clang__ # define FMT_CLANG_VERSION (__clang_major__ * 100 + __clang_minor__) @@ -57,6 +57,7 @@ # define FMT_MSC_VER 0 # define FMT_SUPPRESS_MSC_WARNING(n) #endif + #ifdef __has_feature # define FMT_HAS_FEATURE(x) __has_feature(x) #else @@ -64,7 +65,7 @@ #endif #if defined(__has_include) && !defined(__INTELLISENSE__) && \ - !(FMT_ICC_VERSION && FMT_ICC_VERSION < 1600) + (!FMT_ICC_VERSION || FMT_ICC_VERSION >= 1600) # define FMT_HAS_INCLUDE(x) __has_include(x) #else # define FMT_HAS_INCLUDE(x) 0 @@ -99,7 +100,7 @@ #endif #ifndef FMT_OVERRIDE -# if FMT_HAS_FEATURE(cxx_override) || \ +# if FMT_HAS_FEATURE(cxx_override_control) || \ (FMT_GCC_VERSION >= 408 && FMT_HAS_GXX_CXX11) || FMT_MSC_VER >= 1900 # define FMT_OVERRIDE override # else @@ -152,7 +153,7 @@ # if FMT_HAS_CPP14_ATTRIBUTE(deprecated) || FMT_MSC_VER >= 1900 # define FMT_DEPRECATED [[deprecated]] # else -# if defined(__GNUC__) || defined(__clang__) +# if (defined(__GNUC__) && !defined(__LCC__)) || defined(__clang__) # define FMT_DEPRECATED __attribute__((deprecated)) # elif FMT_MSC_VER # define FMT_DEPRECATED __declspec(deprecated) @@ -177,6 +178,15 @@ # endif #endif +#ifndef FMT_USE_INLINE_NAMESPACES +# if FMT_HAS_FEATURE(cxx_inline_namespaces) || FMT_GCC_VERSION >= 404 || \ + (FMT_MSC_VER >= 1900 && !_MANAGED) +# define FMT_USE_INLINE_NAMESPACES 1 +# else +# define FMT_USE_INLINE_NAMESPACES 0 +# endif +#endif + // LAMMPS customization // use 'v7_lmp' namespace instead of 'v7' so that our // bundled copy does not collide with linking other code @@ -184,8 +194,7 @@ // a different version. #ifndef FMT_BEGIN_NAMESPACE -# if FMT_HAS_FEATURE(cxx_inline_namespaces) || FMT_GCC_VERSION >= 404 || \ - FMT_MSC_VER >= 1900 +# if FMT_USE_INLINE_NAMESPACES # define FMT_INLINE_NAMESPACE inline namespace # define FMT_END_NAMESPACE \ } \ @@ -275,8 +284,7 @@ struct monostate {}; namespace detail { -// A helper function to suppress bogus "conditional expression is constant" -// warnings. +// A helper function to suppress "conditional expression is constant" warnings. template constexpr T const_check(T value) { return value; } FMT_NORETURN FMT_API void assert_fail(const char* file, int line, @@ -305,7 +313,8 @@ template struct std_string_view {}; #ifdef FMT_USE_INT128 // Do nothing. -#elif defined(__SIZEOF_INT128__) && !FMT_NVCC && !(FMT_CLANG_VERSION && FMT_MSC_VER) +#elif defined(__SIZEOF_INT128__) && !FMT_NVCC && \ + !(FMT_CLANG_VERSION && FMT_MSC_VER) # define FMT_USE_INT128 1 using int128_t = __int128_t; using uint128_t = __uint128_t; @@ -514,6 +523,18 @@ template struct char_t_impl::value>> { using type = typename result::value_type; }; +// Reports a compile-time error if S is not a valid format string. +template ::value)> +FMT_INLINE void check_format_string(const S&) { +#ifdef FMT_ENFORCE_COMPILE_STRING + static_assert(is_compile_string::value, + "FMT_ENFORCE_COMPILE_STRING requires all format strings to use " + "FMT_STRING."); +#endif +} +template ::value)> +void check_format_string(S); + struct error_handler { constexpr error_handler() = default; constexpr error_handler(const error_handler&) = default; @@ -553,8 +574,9 @@ class basic_format_parse_context : private ErrorHandler { using iterator = typename basic_string_view::iterator; explicit constexpr basic_format_parse_context( - basic_string_view format_str, ErrorHandler eh = {}) - : ErrorHandler(eh), format_str_(format_str), next_arg_id_(0) {} + basic_string_view format_str, ErrorHandler eh = {}, + int next_arg_id = 0) + : ErrorHandler(eh), format_str_(format_str), next_arg_id_(next_arg_id) {} /** Returns an iterator to the beginning of the format string range being @@ -624,8 +646,24 @@ template using has_formatter = std::is_constructible>; +// Checks whether T is a container with contiguous storage. +template struct is_contiguous : std::false_type {}; +template +struct is_contiguous> : std::true_type {}; + namespace detail { +// Extracts a reference to the container from back_insert_iterator. +template +inline Container& get_container(std::back_insert_iterator it) { + using bi_iterator = std::back_insert_iterator; + struct accessor : bi_iterator { + accessor(bi_iterator iter) : bi_iterator(iter) {} + using bi_iterator::container; + }; + return *accessor(it).container; +} + /** \rst A contiguous memory buffer with an optional growing ability. It is an internal @@ -648,6 +686,8 @@ template class buffer { size_(sz), capacity_(cap) {} + ~buffer() = default; + /** Sets the buffer data and capacity. */ void set(T* buf_data, size_t buf_capacity) FMT_NOEXCEPT { ptr_ = buf_data; @@ -663,7 +703,6 @@ template class buffer { buffer(const buffer&) = delete; void operator=(const buffer&) = delete; - virtual ~buffer() = default; T* begin() FMT_NOEXCEPT { return ptr_; } T* end() FMT_NOEXCEPT { return ptr_ + size_; } @@ -683,24 +722,26 @@ template class buffer { /** Returns a pointer to the buffer data. */ const T* data() const FMT_NOEXCEPT { return ptr_; } - /** - Resizes the buffer. If T is a POD type new elements may not be initialized. - */ - void resize(size_t new_size) { - reserve(new_size); - size_ = new_size; - } - /** Clears this buffer. */ void clear() { size_ = 0; } - /** Reserves space to store at least *capacity* elements. */ - void reserve(size_t new_capacity) { + // Tries resizing the buffer to contain *count* elements. If T is a POD type + // the new elements may not be initialized. + void try_resize(size_t count) { + try_reserve(count); + size_ = count <= capacity_ ? count : capacity_; + } + + // Tries increasing the buffer capacity to *new_capacity*. It can increase the + // capacity by a smaller amount than requested but guarantees there is space + // for at least one additional element either by increasing the capacity or by + // flushing the buffer if it is full. + void try_reserve(size_t new_capacity) { if (new_capacity > capacity_) grow(new_capacity); } void push_back(const T& value) { - reserve(size_ + 1); + try_reserve(size_ + 1); ptr_[size_++] = value; } @@ -713,32 +754,150 @@ template class buffer { } }; -// A container-backed buffer. +struct buffer_traits { + explicit buffer_traits(size_t) {} + size_t count() const { return 0; } + size_t limit(size_t size) { return size; } +}; + +class fixed_buffer_traits { + private: + size_t count_ = 0; + size_t limit_; + + public: + explicit fixed_buffer_traits(size_t limit) : limit_(limit) {} + size_t count() const { return count_; } + size_t limit(size_t size) { + size_t n = limit_ - count_; + count_ += size; + return size < n ? size : n; + } +}; + +// A buffer that writes to an output iterator when flushed. +template +class iterator_buffer final : public Traits, public buffer { + private: + OutputIt out_; + enum { buffer_size = 256 }; + T data_[buffer_size]; + + protected: + void grow(size_t) final FMT_OVERRIDE { + if (this->size() == buffer_size) flush(); + } + void flush(); + + public: + explicit iterator_buffer(OutputIt out, size_t n = buffer_size) + : Traits(n), + buffer(data_, 0, n < size_t(buffer_size) ? n : size_t(buffer_size)), + out_(out) {} + ~iterator_buffer() { flush(); } + + OutputIt out() { + flush(); + return out_; + } + size_t count() const { return Traits::count() + this->size(); } +}; + +template class iterator_buffer final : public buffer { + protected: + void grow(size_t) final FMT_OVERRIDE {} + + public: + explicit iterator_buffer(T* out, size_t = 0) : buffer(out, 0, ~size_t()) {} + + T* out() { return &*this->end(); } +}; + +// A buffer that writes to a container with the contiguous storage. template -class container_buffer : public buffer { +class iterator_buffer, + enable_if_t::value, + typename Container::value_type>> + final : public buffer { private: Container& container_; protected: - void grow(size_t capacity) FMT_OVERRIDE { + void grow(size_t capacity) final FMT_OVERRIDE { container_.resize(capacity); this->set(&container_[0], capacity); } public: - explicit container_buffer(Container& c) + explicit iterator_buffer(Container& c) : buffer(c.size()), container_(c) {} + explicit iterator_buffer(std::back_insert_iterator out, size_t = 0) + : iterator_buffer(get_container(out)) {} + std::back_insert_iterator out() { + return std::back_inserter(container_); + } }; -// Extracts a reference to the container from back_insert_iterator. -template -inline Container& get_container(std::back_insert_iterator it) { - using bi_iterator = std::back_insert_iterator; - struct accessor : bi_iterator { - accessor(bi_iterator iter) : bi_iterator(iter) {} - using bi_iterator::container; - }; - return *accessor(it).container; +// A buffer that counts the number of code units written discarding the output. +template class counting_buffer final : public buffer { + private: + enum { buffer_size = 256 }; + T data_[buffer_size]; + size_t count_ = 0; + + protected: + void grow(size_t) final FMT_OVERRIDE { + if (this->size() != buffer_size) return; + count_ += this->size(); + this->clear(); + } + + public: + counting_buffer() : buffer(data_, 0, buffer_size) {} + + size_t count() { return count_ + this->size(); } +}; + +// An output iterator that appends to the buffer. +// It is used to reduce symbol sizes for the common case. +template +class buffer_appender : public std::back_insert_iterator> { + using base = std::back_insert_iterator>; + + public: + explicit buffer_appender(buffer& buf) : base(buf) {} + buffer_appender(base it) : base(it) {} + + buffer_appender& operator++() { + base::operator++(); + return *this; + } + + buffer_appender operator++(int) { + buffer_appender tmp = *this; + ++*this; + return tmp; + } +}; + +// Maps an output iterator into a buffer. +template +iterator_buffer get_buffer(OutputIt); +template buffer& get_buffer(buffer_appender); + +template OutputIt get_buffer_init(OutputIt out) { + return out; +} +template buffer& get_buffer_init(buffer_appender out) { + return get_container(out); +} + +template +auto get_iterator(Buffer& buf) -> decltype(buf.out()) { + return buf.out(); +} +template buffer_appender get_iterator(buffer& buf) { + return buffer_appender(buf); } template @@ -767,7 +926,8 @@ template struct named_arg_info { template struct arg_data { // args_[0].named_args points to named_args_ to avoid bloating format_args. - T args_[1 + (NUM_ARGS != 0 ? NUM_ARGS : 1)]; + // +1 to workaround a bug in gcc 7.5 that causes duplicated-branches warning. + T args_[1 + (NUM_ARGS != 0 ? NUM_ARGS : +1)]; named_arg_info named_args_[NUM_NAMED_ARGS]; template @@ -779,7 +939,8 @@ struct arg_data { template struct arg_data { - T args_[NUM_ARGS != 0 ? NUM_ARGS : 1]; + // +1 to workaround a bug in gcc 7.5 that causes duplicated-branches warning. + T args_[NUM_ARGS != 0 ? NUM_ARGS : +1]; template FMT_INLINE arg_data(const U&... init) : args_{init...} {} @@ -967,6 +1128,8 @@ enum { long_short = sizeof(long) == sizeof(int) }; using long_type = conditional_t; using ulong_type = conditional_t; +struct unformattable {}; + // Maps formatting arguments to core types. template struct arg_mapper { using char_type = typename Context::char_type; @@ -1075,15 +1238,7 @@ template struct arg_mapper { return map(val.value); } - int map(...) { - constexpr bool formattable = sizeof(Context) == 0; - static_assert( - formattable, - "Cannot format argument. To make type T formattable provide a " - "formatter specialization: " - "https://fmt.dev/latest/api.html#formatting-user-defined-types"); - return 0; - } + unformattable map(...) { return {}; } }; // A type constant after applying arg_mapper. @@ -1207,15 +1362,25 @@ FMT_CONSTEXPR_DECL FMT_INLINE auto visit_format_arg( return vis(monostate()); } -// Checks whether T is a container with contiguous storage. -template struct is_contiguous : std::false_type {}; -template -struct is_contiguous> : std::true_type {}; -template -struct is_contiguous> : std::true_type {}; +template struct formattable : std::false_type {}; namespace detail { +// A workaround for gcc 4.8 to make void_t work in a SFINAE context. +template struct void_t_impl { using type = void; }; +template +using void_t = typename detail::void_t_impl::type; + +template +struct is_output_iterator : std::false_type {}; + +template +struct is_output_iterator< + It, T, + void_t::iterator_category, + decltype(*std::declval() = std::declval())>> + : std::true_type {}; + template struct is_back_insert_iterator : std::false_type {}; template @@ -1227,6 +1392,9 @@ struct is_contiguous_back_insert_iterator : std::false_type {}; template struct is_contiguous_back_insert_iterator> : is_contiguous {}; +template +struct is_contiguous_back_insert_iterator> + : std::true_type {}; // A type-erased reference to an std::locale to avoid heavy include. class locale_ref { @@ -1258,13 +1426,24 @@ FMT_CONSTEXPR basic_format_arg make_arg(const T& value) { return arg; } +template int check(unformattable) { + static_assert( + formattable(), + "Cannot format an argument. To make type T formattable provide a " + "formatter specialization: https://fmt.dev/latest/api.html#udt"); + return 0; +} +template inline const U& check(const U& val) { + return val; +} + // The type template parameter is there to avoid an ODR violation when using // a fallback formatter in one translation unit and an implicit conversion in // another (not recommended). template inline value make_arg(const T& val) { - return arg_mapper().map(val); + return check(arg_mapper().map(val)); } template class basic_format_context { template using buffer_context = - basic_format_context>, Char>; + basic_format_context, Char>; using format_context = buffer_context; using wformat_context = buffer_context; -// Workaround a bug in gcc: https://stackoverflow.com/q/62767544/471164. +// Workaround an alias issue: https://stackoverflow.com/q/62767544/471164. #define FMT_BUFFER_CONTEXT(Char) \ - basic_format_context>, Char> + basic_format_context, Char> /** \rst @@ -1422,7 +1601,7 @@ class format_arg_store /** \rst - Constructs an `~fmt::format_arg_store` object that contains references to + Constructs a `~fmt::format_arg_store` object that contains references to arguments and can be implicitly converted to `~fmt::format_args`. `Context` can be omitted in which case it defaults to `~fmt::context`. See `~fmt::arg` for lifetime considerations. @@ -1434,6 +1613,27 @@ inline format_arg_store make_format_args( return {args...}; } +/** + \rst + Constructs a `~fmt::format_arg_store` object that contains references + to arguments and can be implicitly converted to `~fmt::format_args`. + If ``format_str`` is a compile-time string then `make_args_checked` checks + its validity at compile time. + \endrst + */ +template > +inline auto make_args_checked(const S& format_str, + const remove_reference_t&... args) + -> format_arg_store, remove_reference_t...> { + static_assert( + detail::count<( + std::is_base_of>::value && + std::is_reference::value)...>() == 0, + "passing views as lvalues is disallowed"); + detail::check_format_string(format_str); + return {args...}; +} + /** \rst Returns a named argument to be used in a formatting function. It should only @@ -1737,7 +1937,14 @@ template class basic_format_args { } }; -/** An alias to ``basic_format_args``. */ +#ifdef FMT_ARM_ABI_COMPATIBILITY +/** An alias to ``basic_format_args``. */ +// Separate types would result in shorter symbols but break ABI compatibility +// between clang and gcc on ARM (#1919). +using format_args = basic_format_args; +using wformat_args = basic_format_args; +#else +// DEPRECATED! These are kept for ABI compatibility. // It is a separate type rather than an alias to make symbols readable. struct format_args : basic_format_args { template @@ -1746,32 +1953,10 @@ struct format_args : basic_format_args { struct wformat_args : basic_format_args { using basic_format_args::basic_format_args; }; +#endif namespace detail { -// Reports a compile-time error if S is not a valid format string. -template ::value)> -FMT_INLINE void check_format_string(const S&) { -#ifdef FMT_ENFORCE_COMPILE_STRING - static_assert(is_compile_string::value, - "FMT_ENFORCE_COMPILE_STRING requires all format strings to use " - "FMT_STRING."); -#endif -} -template ::value)> -void check_format_string(S); - -template > -inline format_arg_store, remove_reference_t...> -make_args_checked(const S& format_str, - const remove_reference_t&... args) { - static_assert(count<(std::is_base_of>::value && - std::is_reference::value)...>() == 0, - "passing views as lvalues is disallowed"); - check_format_string(format_str); - return {args...}; -} - template ::value)> std::basic_string vformat( basic_string_view format_str, @@ -1780,9 +1965,10 @@ std::basic_string vformat( FMT_API std::string vformat(string_view format_str, format_args args); template -typename FMT_BUFFER_CONTEXT(Char)::iterator vformat_to( +void vformat_to( buffer& buf, basic_string_view format_str, - basic_format_args)> args); + basic_format_args)> args, + detail::locale_ref loc = {}); template ::value)> @@ -1797,26 +1983,80 @@ inline void vprint_mojibake(std::FILE*, string_view, format_args) {} /** Formats a string and writes the output to ``out``. */ // GCC 8 and earlier cannot handle std::back_insert_iterator with // vformat_to(...) overload, so SFINAE on iterator type instead. -template < - typename OutputIt, typename S, typename Char = char_t, - FMT_ENABLE_IF(detail::is_contiguous_back_insert_iterator::value)> -OutputIt vformat_to( - OutputIt out, const S& format_str, - basic_format_args>> args) { - auto& c = detail::get_container(out); - detail::container_buffer> buf(c); +template , + bool enable = detail::is_output_iterator::value> +auto vformat_to(OutputIt out, const S& format_str, + basic_format_args>> args) + -> typename std::enable_if::type { + decltype(detail::get_buffer(out)) buf(detail::get_buffer_init(out)); detail::vformat_to(buf, to_string_view(format_str), args); - return out; + return detail::get_iterator(buf); } -template ::value&& detail::is_string::value)> -inline std::back_insert_iterator format_to( - std::back_insert_iterator out, const S& format_str, - Args&&... args) { - return vformat_to(out, to_string_view(format_str), - detail::make_args_checked(format_str, args...)); +/** + \rst + Formats arguments, writes the result to the output iterator ``out`` and returns + the iterator past the end of the output range. + + **Example**:: + + std::vector out; + fmt::format_to(std::back_inserter(out), "{}", 42); + \endrst + */ +// We cannot use FMT_ENABLE_IF because of a bug in gcc 8.3. +template >::value> +inline auto format_to(OutputIt out, const S& format_str, Args&&... args) -> + typename std::enable_if::type { + const auto& vargs = fmt::make_args_checked(format_str, args...); + return vformat_to(out, to_string_view(format_str), vargs); +} + +template struct format_to_n_result { + /** Iterator past the end of the output range. */ + OutputIt out; + /** Total (not truncated) output size. */ + size_t size; +}; + +template ::value)> +inline format_to_n_result vformat_to_n( + OutputIt out, size_t n, basic_string_view format_str, + basic_format_args>> args) { + detail::iterator_buffer buf(out, + n); + detail::vformat_to(buf, format_str, args); + return {buf.out(), buf.count()}; +} + +/** + \rst + Formats arguments, writes up to ``n`` characters of the result to the output + iterator ``out`` and returns the total output size and the iterator past the + end of the output range. + \endrst + */ +template >::value> +inline auto format_to_n(OutputIt out, size_t n, const S& format_str, + const Args&... args) -> + typename std::enable_if>::type { + const auto& vargs = fmt::make_args_checked(format_str, args...); + return vformat_to_n(out, n, to_string_view(format_str), vargs); +} + +/** + Returns the number of characters in the output of + ``format(format_str, args...)``. + */ +template +inline size_t formatted_size(string_view format_str, Args&&... args) { + const auto& vargs = fmt::make_args_checked(format_str, args...); + detail::counting_buffer<> buf; + detail::vformat_to(buf, format_str, vargs); + return buf.count(); } template > @@ -1840,7 +2080,7 @@ FMT_INLINE std::basic_string vformat( // std::basic_string> to reduce the symbol size. template > FMT_INLINE std::basic_string format(const S& format_str, Args&&... args) { - const auto& vargs = detail::make_args_checked(format_str, args...); + const auto& vargs = fmt::make_args_checked(format_str, args...); return detail::vformat(to_string_view(format_str), vargs); } @@ -1860,7 +2100,7 @@ FMT_API void vprint(std::FILE*, string_view, format_args); */ template > inline void print(std::FILE* f, const S& format_str, Args&&... args) { - const auto& vargs = detail::make_args_checked(format_str, args...); + const auto& vargs = fmt::make_args_checked(format_str, args...); return detail::is_unicode() ? vprint(f, to_string_view(format_str), vargs) : detail::vprint_mojibake(f, to_string_view(format_str), vargs); @@ -1879,7 +2119,7 @@ inline void print(std::FILE* f, const S& format_str, Args&&... args) { */ template > inline void print(const S& format_str, Args&&... args) { - const auto& vargs = detail::make_args_checked(format_str, args...); + const auto& vargs = fmt::make_args_checked(format_str, args...); return detail::is_unicode() ? vprint(to_string_view(format_str), vargs) : detail::vprint_mojibake(stdout, to_string_view(format_str), diff --git a/src/fmt/format-inl.h b/src/fmt/format-inl.h index d8c9c8a5ee..8f2fe7354a 100644 --- a/src/fmt/format-inl.h +++ b/src/fmt/format-inl.h @@ -13,32 +13,19 @@ #include #include #include -#include // for std::memmove +#include // std::memmove #include #include -#include "format.h" -#if !defined(FMT_STATIC_THOUSANDS_SEPARATOR) +#ifndef FMT_STATIC_THOUSANDS_SEPARATOR # include #endif #ifdef _WIN32 -# if !defined(NOMINMAX) && !defined(WIN32_LEAN_AND_MEAN) -# define NOMINMAX -# define WIN32_LEAN_AND_MEAN -# include -# undef WIN32_LEAN_AND_MEAN -# undef NOMINMAX -# else -# include -# endif -# include +# include // _isatty #endif -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable : 4702) // unreachable code -#endif +#include "format.h" // Dummy implementations of strerror_r and strerror_s called if corresponding // system functions are not available. @@ -79,8 +66,8 @@ inline int fmt_snprintf(char* buffer, size_t size, const char* format, ...) { // ERANGE - buffer is not large enough to store the error message // other - failure // Buffer should be at least of size 1. -FMT_FUNC int safe_strerror(int error_code, char*& buffer, - size_t buffer_size) FMT_NOEXCEPT { +inline int safe_strerror(int error_code, char*& buffer, + size_t buffer_size) FMT_NOEXCEPT { FMT_ASSERT(buffer != nullptr && buffer_size != 0, "invalid buffer"); class dispatcher { @@ -145,7 +132,7 @@ FMT_FUNC void format_error_code(detail::buffer& out, int error_code, // Report error code making sure that the output fits into // inline_buffer_size to avoid dynamic memory allocation and potential // bad_alloc. - out.resize(0); + out.try_resize(0); static const char SEP[] = ": "; static const char ERROR_STR[] = "error "; // Subtract 2 to account for terminating null characters in SEP and ERROR_STR. @@ -156,7 +143,7 @@ FMT_FUNC void format_error_code(detail::buffer& out, int error_code, ++error_code_size; } error_code_size += detail::to_unsigned(detail::count_digits(abs_value)); - auto it = std::back_inserter(out); + auto it = buffer_appender(out); if (message.size() <= inline_buffer_size - error_code_size) format_to(it, "{}{}", message, SEP); format_to(it, "{}{}", ERROR_STR, error_code); @@ -173,8 +160,8 @@ FMT_FUNC void report_error(format_func func, int error_code, } // A wrapper around fwrite that throws on error. -FMT_FUNC void fwrite_fully(const void* ptr, size_t size, size_t count, - FILE* stream) { +inline void fwrite_fully(const void* ptr, size_t size, size_t count, + FILE* stream) { size_t written = std::fwrite(ptr, size, count, stream); if (written < count) FMT_THROW(system_error(errno, "cannot write to file")); } @@ -242,26 +229,23 @@ template <> FMT_FUNC int count_digits<4>(detail::fallback_uintptr n) { template const typename basic_data::digit_pair basic_data::digits[] = { - {'0', '0'}, {'0', '1'}, {'0', '2'}, {'0', '3'}, {'0', '4'}, - {'0', '5'}, {'0', '6'}, {'0', '7'}, {'0', '8'}, {'0', '9'}, - {'1', '0'}, {'1', '1'}, {'1', '2'}, {'1', '3'}, {'1', '4'}, - {'1', '5'}, {'1', '6'}, {'1', '7'}, {'1', '8'}, {'1', '9'}, - {'2', '0'}, {'2', '1'}, {'2', '2'}, {'2', '3'}, {'2', '4'}, - {'2', '5'}, {'2', '6'}, {'2', '7'}, {'2', '8'}, {'2', '9'}, - {'3', '0'}, {'3', '1'}, {'3', '2'}, {'3', '3'}, {'3', '4'}, - {'3', '5'}, {'3', '6'}, {'3', '7'}, {'3', '8'}, {'3', '9'}, - {'4', '0'}, {'4', '1'}, {'4', '2'}, {'4', '3'}, {'4', '4'}, - {'4', '5'}, {'4', '6'}, {'4', '7'}, {'4', '8'}, {'4', '9'}, - {'5', '0'}, {'5', '1'}, {'5', '2'}, {'5', '3'}, {'5', '4'}, - {'5', '5'}, {'5', '6'}, {'5', '7'}, {'5', '8'}, {'5', '9'}, - {'6', '0'}, {'6', '1'}, {'6', '2'}, {'6', '3'}, {'6', '4'}, - {'6', '5'}, {'6', '6'}, {'6', '7'}, {'6', '8'}, {'6', '9'}, - {'7', '0'}, {'7', '1'}, {'7', '2'}, {'7', '3'}, {'7', '4'}, - {'7', '5'}, {'7', '6'}, {'7', '7'}, {'7', '8'}, {'7', '9'}, - {'8', '0'}, {'8', '1'}, {'8', '2'}, {'8', '3'}, {'8', '4'}, - {'8', '5'}, {'8', '6'}, {'8', '7'}, {'8', '8'}, {'8', '9'}, - {'9', '0'}, {'9', '1'}, {'9', '2'}, {'9', '3'}, {'9', '4'}, - {'9', '5'}, {'9', '6'}, {'9', '7'}, {'9', '8'}, {'9', '9'}}; + {'0', '0'}, {'0', '1'}, {'0', '2'}, {'0', '3'}, {'0', '4'}, {'0', '5'}, + {'0', '6'}, {'0', '7'}, {'0', '8'}, {'0', '9'}, {'1', '0'}, {'1', '1'}, + {'1', '2'}, {'1', '3'}, {'1', '4'}, {'1', '5'}, {'1', '6'}, {'1', '7'}, + {'1', '8'}, {'1', '9'}, {'2', '0'}, {'2', '1'}, {'2', '2'}, {'2', '3'}, + {'2', '4'}, {'2', '5'}, {'2', '6'}, {'2', '7'}, {'2', '8'}, {'2', '9'}, + {'3', '0'}, {'3', '1'}, {'3', '2'}, {'3', '3'}, {'3', '4'}, {'3', '5'}, + {'3', '6'}, {'3', '7'}, {'3', '8'}, {'3', '9'}, {'4', '0'}, {'4', '1'}, + {'4', '2'}, {'4', '3'}, {'4', '4'}, {'4', '5'}, {'4', '6'}, {'4', '7'}, + {'4', '8'}, {'4', '9'}, {'5', '0'}, {'5', '1'}, {'5', '2'}, {'5', '3'}, + {'5', '4'}, {'5', '5'}, {'5', '6'}, {'5', '7'}, {'5', '8'}, {'5', '9'}, + {'6', '0'}, {'6', '1'}, {'6', '2'}, {'6', '3'}, {'6', '4'}, {'6', '5'}, + {'6', '6'}, {'6', '7'}, {'6', '8'}, {'6', '9'}, {'7', '0'}, {'7', '1'}, + {'7', '2'}, {'7', '3'}, {'7', '4'}, {'7', '5'}, {'7', '6'}, {'7', '7'}, + {'7', '8'}, {'7', '9'}, {'8', '0'}, {'8', '1'}, {'8', '2'}, {'8', '3'}, + {'8', '4'}, {'8', '5'}, {'8', '6'}, {'8', '7'}, {'8', '8'}, {'8', '9'}, + {'9', '0'}, {'9', '1'}, {'9', '2'}, {'9', '3'}, {'9', '4'}, {'9', '5'}, + {'9', '6'}, {'9', '7'}, {'9', '8'}, {'9', '9'}}; template const char basic_data::hex_digits[] = "0123456789abcdef"; @@ -279,16 +263,24 @@ const uint64_t basic_data::powers_of_10_64[] = { template const uint32_t basic_data::zero_or_powers_of_10_32[] = {0, FMT_POWERS_OF_10(1)}; - template const uint64_t basic_data::zero_or_powers_of_10_64[] = { 0, FMT_POWERS_OF_10(1), FMT_POWERS_OF_10(1000000000ULL), 10000000000000000000ULL}; +template +const uint32_t basic_data::zero_or_powers_of_10_32_new[] = { + 0, 0, FMT_POWERS_OF_10(1)}; + +template +const uint64_t basic_data::zero_or_powers_of_10_64_new[] = { + 0, 0, FMT_POWERS_OF_10(1), FMT_POWERS_OF_10(1000000000ULL), + 10000000000000000000ULL}; + // Normalized 64-bit significands of pow(10, k), for k = -348, -340, ..., 340. // These are generated by support/compute-powers.py. template -const uint64_t basic_data::pow10_significands[] = { +const uint64_t basic_data::grisu_pow10_significands[] = { 0xfa8fd5a0081c0288, 0xbaaee17fa23ebf76, 0x8b16fb203055ac76, 0xcf42894a5dce35ea, 0x9a6bb0aa55653b2d, 0xe61acf033d1a45df, 0xab70fe17c79ac6ca, 0xff77b1fcbebcdc4f, 0xbe5691ef416bd60c, @@ -323,7 +315,7 @@ const uint64_t basic_data::pow10_significands[] = { // Binary exponents of pow(10, k), for k = -348, -340, ..., 340, corresponding // to significands above. template -const int16_t basic_data::pow10_exponents[] = { +const int16_t basic_data::grisu_pow10_exponents[] = { -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980, -954, -927, -901, -874, -847, -821, -794, -768, -741, -715, -688, -661, -635, -608, -582, -555, -529, -502, -475, -449, -422, -396, -369, @@ -333,6 +325,744 @@ const int16_t basic_data::pow10_exponents[] = { 534, 561, 588, 614, 641, 667, 694, 720, 747, 774, 800, 827, 853, 880, 907, 933, 960, 986, 1013, 1039, 1066}; +template +const divtest_table_entry basic_data::divtest_table_for_pow5_32[] = + {{0x00000001, 0xffffffff}, {0xcccccccd, 0x33333333}, + {0xc28f5c29, 0x0a3d70a3}, {0x26e978d5, 0x020c49ba}, + {0x3afb7e91, 0x0068db8b}, {0x0bcbe61d, 0x0014f8b5}, + {0x68c26139, 0x000431bd}, {0xae8d46a5, 0x0000d6bf}, + {0x22e90e21, 0x00002af3}, {0x3a2e9c6d, 0x00000897}, + {0x3ed61f49, 0x000001b7}}; + +template +const divtest_table_entry basic_data::divtest_table_for_pow5_64[] = + {{0x0000000000000001, 0xffffffffffffffff}, + {0xcccccccccccccccd, 0x3333333333333333}, + {0x8f5c28f5c28f5c29, 0x0a3d70a3d70a3d70}, + {0x1cac083126e978d5, 0x020c49ba5e353f7c}, + {0xd288ce703afb7e91, 0x0068db8bac710cb2}, + {0x5d4e8fb00bcbe61d, 0x0014f8b588e368f0}, + {0x790fb65668c26139, 0x000431bde82d7b63}, + {0xe5032477ae8d46a5, 0x0000d6bf94d5e57a}, + {0xc767074b22e90e21, 0x00002af31dc46118}, + {0x8e47ce423a2e9c6d, 0x0000089705f4136b}, + {0x4fa7f60d3ed61f49, 0x000001b7cdfd9d7b}, + {0x0fee64690c913975, 0x00000057f5ff85e5}, + {0x3662e0e1cf503eb1, 0x000000119799812d}, + {0xa47a2cf9f6433fbd, 0x0000000384b84d09}, + {0x54186f653140a659, 0x00000000b424dc35}, + {0x7738164770402145, 0x0000000024075f3d}, + {0xe4a4d1417cd9a041, 0x000000000734aca5}, + {0xc75429d9e5c5200d, 0x000000000170ef54}, + {0xc1773b91fac10669, 0x000000000049c977}, + {0x26b172506559ce15, 0x00000000000ec1e4}, + {0xd489e3a9addec2d1, 0x000000000002f394}, + {0x90e860bb892c8d5d, 0x000000000000971d}, + {0x502e79bf1b6f4f79, 0x0000000000001e39}, + {0xdcd618596be30fe5, 0x000000000000060b}}; + +template +const uint64_t basic_data::dragonbox_pow10_significands_64[] = { + 0x81ceb32c4b43fcf5, 0xa2425ff75e14fc32, 0xcad2f7f5359a3b3f, + 0xfd87b5f28300ca0e, 0x9e74d1b791e07e49, 0xc612062576589ddb, + 0xf79687aed3eec552, 0x9abe14cd44753b53, 0xc16d9a0095928a28, + 0xf1c90080baf72cb2, 0x971da05074da7bef, 0xbce5086492111aeb, + 0xec1e4a7db69561a6, 0x9392ee8e921d5d08, 0xb877aa3236a4b44a, + 0xe69594bec44de15c, 0x901d7cf73ab0acda, 0xb424dc35095cd810, + 0xe12e13424bb40e14, 0x8cbccc096f5088cc, 0xafebff0bcb24aaff, + 0xdbe6fecebdedd5bf, 0x89705f4136b4a598, 0xabcc77118461cefd, + 0xd6bf94d5e57a42bd, 0x8637bd05af6c69b6, 0xa7c5ac471b478424, + 0xd1b71758e219652c, 0x83126e978d4fdf3c, 0xa3d70a3d70a3d70b, + 0xcccccccccccccccd, 0x8000000000000000, 0xa000000000000000, + 0xc800000000000000, 0xfa00000000000000, 0x9c40000000000000, + 0xc350000000000000, 0xf424000000000000, 0x9896800000000000, + 0xbebc200000000000, 0xee6b280000000000, 0x9502f90000000000, + 0xba43b74000000000, 0xe8d4a51000000000, 0x9184e72a00000000, + 0xb5e620f480000000, 0xe35fa931a0000000, 0x8e1bc9bf04000000, + 0xb1a2bc2ec5000000, 0xde0b6b3a76400000, 0x8ac7230489e80000, + 0xad78ebc5ac620000, 0xd8d726b7177a8000, 0x878678326eac9000, + 0xa968163f0a57b400, 0xd3c21bcecceda100, 0x84595161401484a0, + 0xa56fa5b99019a5c8, 0xcecb8f27f4200f3a, 0x813f3978f8940984, + 0xa18f07d736b90be5, 0xc9f2c9cd04674ede, 0xfc6f7c4045812296, + 0x9dc5ada82b70b59d, 0xc5371912364ce305, 0xf684df56c3e01bc6, + 0x9a130b963a6c115c, 0xc097ce7bc90715b3, 0xf0bdc21abb48db20, + 0x96769950b50d88f4, 0xbc143fa4e250eb31, 0xeb194f8e1ae525fd, + 0x92efd1b8d0cf37be, 0xb7abc627050305ad, 0xe596b7b0c643c719, + 0x8f7e32ce7bea5c6f, 0xb35dbf821ae4f38b, 0xe0352f62a19e306e}; + +template +const uint128_wrapper basic_data::dragonbox_pow10_significands_128[] = { +#if FMT_USE_FULL_CACHE_DRAGONBOX + {0xff77b1fcbebcdc4f, 0x25e8e89c13bb0f7b}, + {0x9faacf3df73609b1, 0x77b191618c54e9ad}, + {0xc795830d75038c1d, 0xd59df5b9ef6a2418}, + {0xf97ae3d0d2446f25, 0x4b0573286b44ad1e}, + {0x9becce62836ac577, 0x4ee367f9430aec33}, + {0xc2e801fb244576d5, 0x229c41f793cda740}, + {0xf3a20279ed56d48a, 0x6b43527578c11110}, + {0x9845418c345644d6, 0x830a13896b78aaaa}, + {0xbe5691ef416bd60c, 0x23cc986bc656d554}, + {0xedec366b11c6cb8f, 0x2cbfbe86b7ec8aa9}, + {0x94b3a202eb1c3f39, 0x7bf7d71432f3d6aa}, + {0xb9e08a83a5e34f07, 0xdaf5ccd93fb0cc54}, + {0xe858ad248f5c22c9, 0xd1b3400f8f9cff69}, + {0x91376c36d99995be, 0x23100809b9c21fa2}, + {0xb58547448ffffb2d, 0xabd40a0c2832a78b}, + {0xe2e69915b3fff9f9, 0x16c90c8f323f516d}, + {0x8dd01fad907ffc3b, 0xae3da7d97f6792e4}, + {0xb1442798f49ffb4a, 0x99cd11cfdf41779d}, + {0xdd95317f31c7fa1d, 0x40405643d711d584}, + {0x8a7d3eef7f1cfc52, 0x482835ea666b2573}, + {0xad1c8eab5ee43b66, 0xda3243650005eed0}, + {0xd863b256369d4a40, 0x90bed43e40076a83}, + {0x873e4f75e2224e68, 0x5a7744a6e804a292}, + {0xa90de3535aaae202, 0x711515d0a205cb37}, + {0xd3515c2831559a83, 0x0d5a5b44ca873e04}, + {0x8412d9991ed58091, 0xe858790afe9486c3}, + {0xa5178fff668ae0b6, 0x626e974dbe39a873}, + {0xce5d73ff402d98e3, 0xfb0a3d212dc81290}, + {0x80fa687f881c7f8e, 0x7ce66634bc9d0b9a}, + {0xa139029f6a239f72, 0x1c1fffc1ebc44e81}, + {0xc987434744ac874e, 0xa327ffb266b56221}, + {0xfbe9141915d7a922, 0x4bf1ff9f0062baa9}, + {0x9d71ac8fada6c9b5, 0x6f773fc3603db4aa}, + {0xc4ce17b399107c22, 0xcb550fb4384d21d4}, + {0xf6019da07f549b2b, 0x7e2a53a146606a49}, + {0x99c102844f94e0fb, 0x2eda7444cbfc426e}, + {0xc0314325637a1939, 0xfa911155fefb5309}, + {0xf03d93eebc589f88, 0x793555ab7eba27cb}, + {0x96267c7535b763b5, 0x4bc1558b2f3458df}, + {0xbbb01b9283253ca2, 0x9eb1aaedfb016f17}, + {0xea9c227723ee8bcb, 0x465e15a979c1cadd}, + {0x92a1958a7675175f, 0x0bfacd89ec191eca}, + {0xb749faed14125d36, 0xcef980ec671f667c}, + {0xe51c79a85916f484, 0x82b7e12780e7401b}, + {0x8f31cc0937ae58d2, 0xd1b2ecb8b0908811}, + {0xb2fe3f0b8599ef07, 0x861fa7e6dcb4aa16}, + {0xdfbdcece67006ac9, 0x67a791e093e1d49b}, + {0x8bd6a141006042bd, 0xe0c8bb2c5c6d24e1}, + {0xaecc49914078536d, 0x58fae9f773886e19}, + {0xda7f5bf590966848, 0xaf39a475506a899f}, + {0x888f99797a5e012d, 0x6d8406c952429604}, + {0xaab37fd7d8f58178, 0xc8e5087ba6d33b84}, + {0xd5605fcdcf32e1d6, 0xfb1e4a9a90880a65}, + {0x855c3be0a17fcd26, 0x5cf2eea09a550680}, + {0xa6b34ad8c9dfc06f, 0xf42faa48c0ea481f}, + {0xd0601d8efc57b08b, 0xf13b94daf124da27}, + {0x823c12795db6ce57, 0x76c53d08d6b70859}, + {0xa2cb1717b52481ed, 0x54768c4b0c64ca6f}, + {0xcb7ddcdda26da268, 0xa9942f5dcf7dfd0a}, + {0xfe5d54150b090b02, 0xd3f93b35435d7c4d}, + {0x9efa548d26e5a6e1, 0xc47bc5014a1a6db0}, + {0xc6b8e9b0709f109a, 0x359ab6419ca1091c}, + {0xf867241c8cc6d4c0, 0xc30163d203c94b63}, + {0x9b407691d7fc44f8, 0x79e0de63425dcf1e}, + {0xc21094364dfb5636, 0x985915fc12f542e5}, + {0xf294b943e17a2bc4, 0x3e6f5b7b17b2939e}, + {0x979cf3ca6cec5b5a, 0xa705992ceecf9c43}, + {0xbd8430bd08277231, 0x50c6ff782a838354}, + {0xece53cec4a314ebd, 0xa4f8bf5635246429}, + {0x940f4613ae5ed136, 0x871b7795e136be9a}, + {0xb913179899f68584, 0x28e2557b59846e40}, + {0xe757dd7ec07426e5, 0x331aeada2fe589d0}, + {0x9096ea6f3848984f, 0x3ff0d2c85def7622}, + {0xb4bca50b065abe63, 0x0fed077a756b53aa}, + {0xe1ebce4dc7f16dfb, 0xd3e8495912c62895}, + {0x8d3360f09cf6e4bd, 0x64712dd7abbbd95d}, + {0xb080392cc4349dec, 0xbd8d794d96aacfb4}, + {0xdca04777f541c567, 0xecf0d7a0fc5583a1}, + {0x89e42caaf9491b60, 0xf41686c49db57245}, + {0xac5d37d5b79b6239, 0x311c2875c522ced6}, + {0xd77485cb25823ac7, 0x7d633293366b828c}, + {0x86a8d39ef77164bc, 0xae5dff9c02033198}, + {0xa8530886b54dbdeb, 0xd9f57f830283fdfd}, + {0xd267caa862a12d66, 0xd072df63c324fd7c}, + {0x8380dea93da4bc60, 0x4247cb9e59f71e6e}, + {0xa46116538d0deb78, 0x52d9be85f074e609}, + {0xcd795be870516656, 0x67902e276c921f8c}, + {0x806bd9714632dff6, 0x00ba1cd8a3db53b7}, + {0xa086cfcd97bf97f3, 0x80e8a40eccd228a5}, + {0xc8a883c0fdaf7df0, 0x6122cd128006b2ce}, + {0xfad2a4b13d1b5d6c, 0x796b805720085f82}, + {0x9cc3a6eec6311a63, 0xcbe3303674053bb1}, + {0xc3f490aa77bd60fc, 0xbedbfc4411068a9d}, + {0xf4f1b4d515acb93b, 0xee92fb5515482d45}, + {0x991711052d8bf3c5, 0x751bdd152d4d1c4b}, + {0xbf5cd54678eef0b6, 0xd262d45a78a0635e}, + {0xef340a98172aace4, 0x86fb897116c87c35}, + {0x9580869f0e7aac0e, 0xd45d35e6ae3d4da1}, + {0xbae0a846d2195712, 0x8974836059cca10a}, + {0xe998d258869facd7, 0x2bd1a438703fc94c}, + {0x91ff83775423cc06, 0x7b6306a34627ddd0}, + {0xb67f6455292cbf08, 0x1a3bc84c17b1d543}, + {0xe41f3d6a7377eeca, 0x20caba5f1d9e4a94}, + {0x8e938662882af53e, 0x547eb47b7282ee9d}, + {0xb23867fb2a35b28d, 0xe99e619a4f23aa44}, + {0xdec681f9f4c31f31, 0x6405fa00e2ec94d5}, + {0x8b3c113c38f9f37e, 0xde83bc408dd3dd05}, + {0xae0b158b4738705e, 0x9624ab50b148d446}, + {0xd98ddaee19068c76, 0x3badd624dd9b0958}, + {0x87f8a8d4cfa417c9, 0xe54ca5d70a80e5d7}, + {0xa9f6d30a038d1dbc, 0x5e9fcf4ccd211f4d}, + {0xd47487cc8470652b, 0x7647c32000696720}, + {0x84c8d4dfd2c63f3b, 0x29ecd9f40041e074}, + {0xa5fb0a17c777cf09, 0xf468107100525891}, + {0xcf79cc9db955c2cc, 0x7182148d4066eeb5}, + {0x81ac1fe293d599bf, 0xc6f14cd848405531}, + {0xa21727db38cb002f, 0xb8ada00e5a506a7d}, + {0xca9cf1d206fdc03b, 0xa6d90811f0e4851d}, + {0xfd442e4688bd304a, 0x908f4a166d1da664}, + {0x9e4a9cec15763e2e, 0x9a598e4e043287ff}, + {0xc5dd44271ad3cdba, 0x40eff1e1853f29fe}, + {0xf7549530e188c128, 0xd12bee59e68ef47d}, + {0x9a94dd3e8cf578b9, 0x82bb74f8301958cf}, + {0xc13a148e3032d6e7, 0xe36a52363c1faf02}, + {0xf18899b1bc3f8ca1, 0xdc44e6c3cb279ac2}, + {0x96f5600f15a7b7e5, 0x29ab103a5ef8c0ba}, + {0xbcb2b812db11a5de, 0x7415d448f6b6f0e8}, + {0xebdf661791d60f56, 0x111b495b3464ad22}, + {0x936b9fcebb25c995, 0xcab10dd900beec35}, + {0xb84687c269ef3bfb, 0x3d5d514f40eea743}, + {0xe65829b3046b0afa, 0x0cb4a5a3112a5113}, + {0x8ff71a0fe2c2e6dc, 0x47f0e785eaba72ac}, + {0xb3f4e093db73a093, 0x59ed216765690f57}, + {0xe0f218b8d25088b8, 0x306869c13ec3532d}, + {0x8c974f7383725573, 0x1e414218c73a13fc}, + {0xafbd2350644eeacf, 0xe5d1929ef90898fb}, + {0xdbac6c247d62a583, 0xdf45f746b74abf3a}, + {0x894bc396ce5da772, 0x6b8bba8c328eb784}, + {0xab9eb47c81f5114f, 0x066ea92f3f326565}, + {0xd686619ba27255a2, 0xc80a537b0efefebe}, + {0x8613fd0145877585, 0xbd06742ce95f5f37}, + {0xa798fc4196e952e7, 0x2c48113823b73705}, + {0xd17f3b51fca3a7a0, 0xf75a15862ca504c6}, + {0x82ef85133de648c4, 0x9a984d73dbe722fc}, + {0xa3ab66580d5fdaf5, 0xc13e60d0d2e0ebbb}, + {0xcc963fee10b7d1b3, 0x318df905079926a9}, + {0xffbbcfe994e5c61f, 0xfdf17746497f7053}, + {0x9fd561f1fd0f9bd3, 0xfeb6ea8bedefa634}, + {0xc7caba6e7c5382c8, 0xfe64a52ee96b8fc1}, + {0xf9bd690a1b68637b, 0x3dfdce7aa3c673b1}, + {0x9c1661a651213e2d, 0x06bea10ca65c084f}, + {0xc31bfa0fe5698db8, 0x486e494fcff30a63}, + {0xf3e2f893dec3f126, 0x5a89dba3c3efccfb}, + {0x986ddb5c6b3a76b7, 0xf89629465a75e01d}, + {0xbe89523386091465, 0xf6bbb397f1135824}, + {0xee2ba6c0678b597f, 0x746aa07ded582e2d}, + {0x94db483840b717ef, 0xa8c2a44eb4571cdd}, + {0xba121a4650e4ddeb, 0x92f34d62616ce414}, + {0xe896a0d7e51e1566, 0x77b020baf9c81d18}, + {0x915e2486ef32cd60, 0x0ace1474dc1d122f}, + {0xb5b5ada8aaff80b8, 0x0d819992132456bb}, + {0xe3231912d5bf60e6, 0x10e1fff697ed6c6a}, + {0x8df5efabc5979c8f, 0xca8d3ffa1ef463c2}, + {0xb1736b96b6fd83b3, 0xbd308ff8a6b17cb3}, + {0xddd0467c64bce4a0, 0xac7cb3f6d05ddbdf}, + {0x8aa22c0dbef60ee4, 0x6bcdf07a423aa96c}, + {0xad4ab7112eb3929d, 0x86c16c98d2c953c7}, + {0xd89d64d57a607744, 0xe871c7bf077ba8b8}, + {0x87625f056c7c4a8b, 0x11471cd764ad4973}, + {0xa93af6c6c79b5d2d, 0xd598e40d3dd89bd0}, + {0xd389b47879823479, 0x4aff1d108d4ec2c4}, + {0x843610cb4bf160cb, 0xcedf722a585139bb}, + {0xa54394fe1eedb8fe, 0xc2974eb4ee658829}, + {0xce947a3da6a9273e, 0x733d226229feea33}, + {0x811ccc668829b887, 0x0806357d5a3f5260}, + {0xa163ff802a3426a8, 0xca07c2dcb0cf26f8}, + {0xc9bcff6034c13052, 0xfc89b393dd02f0b6}, + {0xfc2c3f3841f17c67, 0xbbac2078d443ace3}, + {0x9d9ba7832936edc0, 0xd54b944b84aa4c0e}, + {0xc5029163f384a931, 0x0a9e795e65d4df12}, + {0xf64335bcf065d37d, 0x4d4617b5ff4a16d6}, + {0x99ea0196163fa42e, 0x504bced1bf8e4e46}, + {0xc06481fb9bcf8d39, 0xe45ec2862f71e1d7}, + {0xf07da27a82c37088, 0x5d767327bb4e5a4d}, + {0x964e858c91ba2655, 0x3a6a07f8d510f870}, + {0xbbe226efb628afea, 0x890489f70a55368c}, + {0xeadab0aba3b2dbe5, 0x2b45ac74ccea842f}, + {0x92c8ae6b464fc96f, 0x3b0b8bc90012929e}, + {0xb77ada0617e3bbcb, 0x09ce6ebb40173745}, + {0xe55990879ddcaabd, 0xcc420a6a101d0516}, + {0x8f57fa54c2a9eab6, 0x9fa946824a12232e}, + {0xb32df8e9f3546564, 0x47939822dc96abfa}, + {0xdff9772470297ebd, 0x59787e2b93bc56f8}, + {0x8bfbea76c619ef36, 0x57eb4edb3c55b65b}, + {0xaefae51477a06b03, 0xede622920b6b23f2}, + {0xdab99e59958885c4, 0xe95fab368e45ecee}, + {0x88b402f7fd75539b, 0x11dbcb0218ebb415}, + {0xaae103b5fcd2a881, 0xd652bdc29f26a11a}, + {0xd59944a37c0752a2, 0x4be76d3346f04960}, + {0x857fcae62d8493a5, 0x6f70a4400c562ddc}, + {0xa6dfbd9fb8e5b88e, 0xcb4ccd500f6bb953}, + {0xd097ad07a71f26b2, 0x7e2000a41346a7a8}, + {0x825ecc24c873782f, 0x8ed400668c0c28c9}, + {0xa2f67f2dfa90563b, 0x728900802f0f32fb}, + {0xcbb41ef979346bca, 0x4f2b40a03ad2ffba}, + {0xfea126b7d78186bc, 0xe2f610c84987bfa9}, + {0x9f24b832e6b0f436, 0x0dd9ca7d2df4d7ca}, + {0xc6ede63fa05d3143, 0x91503d1c79720dbc}, + {0xf8a95fcf88747d94, 0x75a44c6397ce912b}, + {0x9b69dbe1b548ce7c, 0xc986afbe3ee11abb}, + {0xc24452da229b021b, 0xfbe85badce996169}, + {0xf2d56790ab41c2a2, 0xfae27299423fb9c4}, + {0x97c560ba6b0919a5, 0xdccd879fc967d41b}, + {0xbdb6b8e905cb600f, 0x5400e987bbc1c921}, + {0xed246723473e3813, 0x290123e9aab23b69}, + {0x9436c0760c86e30b, 0xf9a0b6720aaf6522}, + {0xb94470938fa89bce, 0xf808e40e8d5b3e6a}, + {0xe7958cb87392c2c2, 0xb60b1d1230b20e05}, + {0x90bd77f3483bb9b9, 0xb1c6f22b5e6f48c3}, + {0xb4ecd5f01a4aa828, 0x1e38aeb6360b1af4}, + {0xe2280b6c20dd5232, 0x25c6da63c38de1b1}, + {0x8d590723948a535f, 0x579c487e5a38ad0f}, + {0xb0af48ec79ace837, 0x2d835a9df0c6d852}, + {0xdcdb1b2798182244, 0xf8e431456cf88e66}, + {0x8a08f0f8bf0f156b, 0x1b8e9ecb641b5900}, + {0xac8b2d36eed2dac5, 0xe272467e3d222f40}, + {0xd7adf884aa879177, 0x5b0ed81dcc6abb10}, + {0x86ccbb52ea94baea, 0x98e947129fc2b4ea}, + {0xa87fea27a539e9a5, 0x3f2398d747b36225}, + {0xd29fe4b18e88640e, 0x8eec7f0d19a03aae}, + {0x83a3eeeef9153e89, 0x1953cf68300424ad}, + {0xa48ceaaab75a8e2b, 0x5fa8c3423c052dd8}, + {0xcdb02555653131b6, 0x3792f412cb06794e}, + {0x808e17555f3ebf11, 0xe2bbd88bbee40bd1}, + {0xa0b19d2ab70e6ed6, 0x5b6aceaeae9d0ec5}, + {0xc8de047564d20a8b, 0xf245825a5a445276}, + {0xfb158592be068d2e, 0xeed6e2f0f0d56713}, + {0x9ced737bb6c4183d, 0x55464dd69685606c}, + {0xc428d05aa4751e4c, 0xaa97e14c3c26b887}, + {0xf53304714d9265df, 0xd53dd99f4b3066a9}, + {0x993fe2c6d07b7fab, 0xe546a8038efe402a}, + {0xbf8fdb78849a5f96, 0xde98520472bdd034}, + {0xef73d256a5c0f77c, 0x963e66858f6d4441}, + {0x95a8637627989aad, 0xdde7001379a44aa9}, + {0xbb127c53b17ec159, 0x5560c018580d5d53}, + {0xe9d71b689dde71af, 0xaab8f01e6e10b4a7}, + {0x9226712162ab070d, 0xcab3961304ca70e9}, + {0xb6b00d69bb55c8d1, 0x3d607b97c5fd0d23}, + {0xe45c10c42a2b3b05, 0x8cb89a7db77c506b}, + {0x8eb98a7a9a5b04e3, 0x77f3608e92adb243}, + {0xb267ed1940f1c61c, 0x55f038b237591ed4}, + {0xdf01e85f912e37a3, 0x6b6c46dec52f6689}, + {0x8b61313bbabce2c6, 0x2323ac4b3b3da016}, + {0xae397d8aa96c1b77, 0xabec975e0a0d081b}, + {0xd9c7dced53c72255, 0x96e7bd358c904a22}, + {0x881cea14545c7575, 0x7e50d64177da2e55}, + {0xaa242499697392d2, 0xdde50bd1d5d0b9ea}, + {0xd4ad2dbfc3d07787, 0x955e4ec64b44e865}, + {0x84ec3c97da624ab4, 0xbd5af13bef0b113f}, + {0xa6274bbdd0fadd61, 0xecb1ad8aeacdd58f}, + {0xcfb11ead453994ba, 0x67de18eda5814af3}, + {0x81ceb32c4b43fcf4, 0x80eacf948770ced8}, + {0xa2425ff75e14fc31, 0xa1258379a94d028e}, + {0xcad2f7f5359a3b3e, 0x096ee45813a04331}, + {0xfd87b5f28300ca0d, 0x8bca9d6e188853fd}, + {0x9e74d1b791e07e48, 0x775ea264cf55347e}, + {0xc612062576589dda, 0x95364afe032a819e}, + {0xf79687aed3eec551, 0x3a83ddbd83f52205}, + {0x9abe14cd44753b52, 0xc4926a9672793543}, + {0xc16d9a0095928a27, 0x75b7053c0f178294}, + {0xf1c90080baf72cb1, 0x5324c68b12dd6339}, + {0x971da05074da7bee, 0xd3f6fc16ebca5e04}, + {0xbce5086492111aea, 0x88f4bb1ca6bcf585}, + {0xec1e4a7db69561a5, 0x2b31e9e3d06c32e6}, + {0x9392ee8e921d5d07, 0x3aff322e62439fd0}, + {0xb877aa3236a4b449, 0x09befeb9fad487c3}, + {0xe69594bec44de15b, 0x4c2ebe687989a9b4}, + {0x901d7cf73ab0acd9, 0x0f9d37014bf60a11}, + {0xb424dc35095cd80f, 0x538484c19ef38c95}, + {0xe12e13424bb40e13, 0x2865a5f206b06fba}, + {0x8cbccc096f5088cb, 0xf93f87b7442e45d4}, + {0xafebff0bcb24aafe, 0xf78f69a51539d749}, + {0xdbe6fecebdedd5be, 0xb573440e5a884d1c}, + {0x89705f4136b4a597, 0x31680a88f8953031}, + {0xabcc77118461cefc, 0xfdc20d2b36ba7c3e}, + {0xd6bf94d5e57a42bc, 0x3d32907604691b4d}, + {0x8637bd05af6c69b5, 0xa63f9a49c2c1b110}, + {0xa7c5ac471b478423, 0x0fcf80dc33721d54}, + {0xd1b71758e219652b, 0xd3c36113404ea4a9}, + {0x83126e978d4fdf3b, 0x645a1cac083126ea}, + {0xa3d70a3d70a3d70a, 0x3d70a3d70a3d70a4}, + {0xcccccccccccccccc, 0xcccccccccccccccd}, + {0x8000000000000000, 0x0000000000000000}, + {0xa000000000000000, 0x0000000000000000}, + {0xc800000000000000, 0x0000000000000000}, + {0xfa00000000000000, 0x0000000000000000}, + {0x9c40000000000000, 0x0000000000000000}, + {0xc350000000000000, 0x0000000000000000}, + {0xf424000000000000, 0x0000000000000000}, + {0x9896800000000000, 0x0000000000000000}, + {0xbebc200000000000, 0x0000000000000000}, + {0xee6b280000000000, 0x0000000000000000}, + {0x9502f90000000000, 0x0000000000000000}, + {0xba43b74000000000, 0x0000000000000000}, + {0xe8d4a51000000000, 0x0000000000000000}, + {0x9184e72a00000000, 0x0000000000000000}, + {0xb5e620f480000000, 0x0000000000000000}, + {0xe35fa931a0000000, 0x0000000000000000}, + {0x8e1bc9bf04000000, 0x0000000000000000}, + {0xb1a2bc2ec5000000, 0x0000000000000000}, + {0xde0b6b3a76400000, 0x0000000000000000}, + {0x8ac7230489e80000, 0x0000000000000000}, + {0xad78ebc5ac620000, 0x0000000000000000}, + {0xd8d726b7177a8000, 0x0000000000000000}, + {0x878678326eac9000, 0x0000000000000000}, + {0xa968163f0a57b400, 0x0000000000000000}, + {0xd3c21bcecceda100, 0x0000000000000000}, + {0x84595161401484a0, 0x0000000000000000}, + {0xa56fa5b99019a5c8, 0x0000000000000000}, + {0xcecb8f27f4200f3a, 0x0000000000000000}, + {0x813f3978f8940984, 0x4000000000000000}, + {0xa18f07d736b90be5, 0x5000000000000000}, + {0xc9f2c9cd04674ede, 0xa400000000000000}, + {0xfc6f7c4045812296, 0x4d00000000000000}, + {0x9dc5ada82b70b59d, 0xf020000000000000}, + {0xc5371912364ce305, 0x6c28000000000000}, + {0xf684df56c3e01bc6, 0xc732000000000000}, + {0x9a130b963a6c115c, 0x3c7f400000000000}, + {0xc097ce7bc90715b3, 0x4b9f100000000000}, + {0xf0bdc21abb48db20, 0x1e86d40000000000}, + {0x96769950b50d88f4, 0x1314448000000000}, + {0xbc143fa4e250eb31, 0x17d955a000000000}, + {0xeb194f8e1ae525fd, 0x5dcfab0800000000}, + {0x92efd1b8d0cf37be, 0x5aa1cae500000000}, + {0xb7abc627050305ad, 0xf14a3d9e40000000}, + {0xe596b7b0c643c719, 0x6d9ccd05d0000000}, + {0x8f7e32ce7bea5c6f, 0xe4820023a2000000}, + {0xb35dbf821ae4f38b, 0xdda2802c8a800000}, + {0xe0352f62a19e306e, 0xd50b2037ad200000}, + {0x8c213d9da502de45, 0x4526f422cc340000}, + {0xaf298d050e4395d6, 0x9670b12b7f410000}, + {0xdaf3f04651d47b4c, 0x3c0cdd765f114000}, + {0x88d8762bf324cd0f, 0xa5880a69fb6ac800}, + {0xab0e93b6efee0053, 0x8eea0d047a457a00}, + {0xd5d238a4abe98068, 0x72a4904598d6d880}, + {0x85a36366eb71f041, 0x47a6da2b7f864750}, + {0xa70c3c40a64e6c51, 0x999090b65f67d924}, + {0xd0cf4b50cfe20765, 0xfff4b4e3f741cf6d}, + {0x82818f1281ed449f, 0xbff8f10e7a8921a4}, + {0xa321f2d7226895c7, 0xaff72d52192b6a0d}, + {0xcbea6f8ceb02bb39, 0x9bf4f8a69f764490}, + {0xfee50b7025c36a08, 0x02f236d04753d5b4}, + {0x9f4f2726179a2245, 0x01d762422c946590}, + {0xc722f0ef9d80aad6, 0x424d3ad2b7b97ef5}, + {0xf8ebad2b84e0d58b, 0xd2e0898765a7deb2}, + {0x9b934c3b330c8577, 0x63cc55f49f88eb2f}, + {0xc2781f49ffcfa6d5, 0x3cbf6b71c76b25fb}, + {0xf316271c7fc3908a, 0x8bef464e3945ef7a}, + {0x97edd871cfda3a56, 0x97758bf0e3cbb5ac}, + {0xbde94e8e43d0c8ec, 0x3d52eeed1cbea317}, + {0xed63a231d4c4fb27, 0x4ca7aaa863ee4bdd}, + {0x945e455f24fb1cf8, 0x8fe8caa93e74ef6a}, + {0xb975d6b6ee39e436, 0xb3e2fd538e122b44}, + {0xe7d34c64a9c85d44, 0x60dbbca87196b616}, + {0x90e40fbeea1d3a4a, 0xbc8955e946fe31cd}, + {0xb51d13aea4a488dd, 0x6babab6398bdbe41}, + {0xe264589a4dcdab14, 0xc696963c7eed2dd1}, + {0x8d7eb76070a08aec, 0xfc1e1de5cf543ca2}, + {0xb0de65388cc8ada8, 0x3b25a55f43294bcb}, + {0xdd15fe86affad912, 0x49ef0eb713f39ebe}, + {0x8a2dbf142dfcc7ab, 0x6e3569326c784337}, + {0xacb92ed9397bf996, 0x49c2c37f07965404}, + {0xd7e77a8f87daf7fb, 0xdc33745ec97be906}, + {0x86f0ac99b4e8dafd, 0x69a028bb3ded71a3}, + {0xa8acd7c0222311bc, 0xc40832ea0d68ce0c}, + {0xd2d80db02aabd62b, 0xf50a3fa490c30190}, + {0x83c7088e1aab65db, 0x792667c6da79e0fa}, + {0xa4b8cab1a1563f52, 0x577001b891185938}, + {0xcde6fd5e09abcf26, 0xed4c0226b55e6f86}, + {0x80b05e5ac60b6178, 0x544f8158315b05b4}, + {0xa0dc75f1778e39d6, 0x696361ae3db1c721}, + {0xc913936dd571c84c, 0x03bc3a19cd1e38e9}, + {0xfb5878494ace3a5f, 0x04ab48a04065c723}, + {0x9d174b2dcec0e47b, 0x62eb0d64283f9c76}, + {0xc45d1df942711d9a, 0x3ba5d0bd324f8394}, + {0xf5746577930d6500, 0xca8f44ec7ee36479}, + {0x9968bf6abbe85f20, 0x7e998b13cf4e1ecb}, + {0xbfc2ef456ae276e8, 0x9e3fedd8c321a67e}, + {0xefb3ab16c59b14a2, 0xc5cfe94ef3ea101e}, + {0x95d04aee3b80ece5, 0xbba1f1d158724a12}, + {0xbb445da9ca61281f, 0x2a8a6e45ae8edc97}, + {0xea1575143cf97226, 0xf52d09d71a3293bd}, + {0x924d692ca61be758, 0x593c2626705f9c56}, + {0xb6e0c377cfa2e12e, 0x6f8b2fb00c77836c}, + {0xe498f455c38b997a, 0x0b6dfb9c0f956447}, + {0x8edf98b59a373fec, 0x4724bd4189bd5eac}, + {0xb2977ee300c50fe7, 0x58edec91ec2cb657}, + {0xdf3d5e9bc0f653e1, 0x2f2967b66737e3ed}, + {0x8b865b215899f46c, 0xbd79e0d20082ee74}, + {0xae67f1e9aec07187, 0xecd8590680a3aa11}, + {0xda01ee641a708de9, 0xe80e6f4820cc9495}, + {0x884134fe908658b2, 0x3109058d147fdcdd}, + {0xaa51823e34a7eede, 0xbd4b46f0599fd415}, + {0xd4e5e2cdc1d1ea96, 0x6c9e18ac7007c91a}, + {0x850fadc09923329e, 0x03e2cf6bc604ddb0}, + {0xa6539930bf6bff45, 0x84db8346b786151c}, + {0xcfe87f7cef46ff16, 0xe612641865679a63}, + {0x81f14fae158c5f6e, 0x4fcb7e8f3f60c07e}, + {0xa26da3999aef7749, 0xe3be5e330f38f09d}, + {0xcb090c8001ab551c, 0x5cadf5bfd3072cc5}, + {0xfdcb4fa002162a63, 0x73d9732fc7c8f7f6}, + {0x9e9f11c4014dda7e, 0x2867e7fddcdd9afa}, + {0xc646d63501a1511d, 0xb281e1fd541501b8}, + {0xf7d88bc24209a565, 0x1f225a7ca91a4226}, + {0x9ae757596946075f, 0x3375788de9b06958}, + {0xc1a12d2fc3978937, 0x0052d6b1641c83ae}, + {0xf209787bb47d6b84, 0xc0678c5dbd23a49a}, + {0x9745eb4d50ce6332, 0xf840b7ba963646e0}, + {0xbd176620a501fbff, 0xb650e5a93bc3d898}, + {0xec5d3fa8ce427aff, 0xa3e51f138ab4cebe}, + {0x93ba47c980e98cdf, 0xc66f336c36b10137}, + {0xb8a8d9bbe123f017, 0xb80b0047445d4184}, + {0xe6d3102ad96cec1d, 0xa60dc059157491e5}, + {0x9043ea1ac7e41392, 0x87c89837ad68db2f}, + {0xb454e4a179dd1877, 0x29babe4598c311fb}, + {0xe16a1dc9d8545e94, 0xf4296dd6fef3d67a}, + {0x8ce2529e2734bb1d, 0x1899e4a65f58660c}, + {0xb01ae745b101e9e4, 0x5ec05dcff72e7f8f}, + {0xdc21a1171d42645d, 0x76707543f4fa1f73}, + {0x899504ae72497eba, 0x6a06494a791c53a8}, + {0xabfa45da0edbde69, 0x0487db9d17636892}, + {0xd6f8d7509292d603, 0x45a9d2845d3c42b6}, + {0x865b86925b9bc5c2, 0x0b8a2392ba45a9b2}, + {0xa7f26836f282b732, 0x8e6cac7768d7141e}, + {0xd1ef0244af2364ff, 0x3207d795430cd926}, + {0x8335616aed761f1f, 0x7f44e6bd49e807b8}, + {0xa402b9c5a8d3a6e7, 0x5f16206c9c6209a6}, + {0xcd036837130890a1, 0x36dba887c37a8c0f}, + {0x802221226be55a64, 0xc2494954da2c9789}, + {0xa02aa96b06deb0fd, 0xf2db9baa10b7bd6c}, + {0xc83553c5c8965d3d, 0x6f92829494e5acc7}, + {0xfa42a8b73abbf48c, 0xcb772339ba1f17f9}, + {0x9c69a97284b578d7, 0xff2a760414536efb}, + {0xc38413cf25e2d70d, 0xfef5138519684aba}, + {0xf46518c2ef5b8cd1, 0x7eb258665fc25d69}, + {0x98bf2f79d5993802, 0xef2f773ffbd97a61}, + {0xbeeefb584aff8603, 0xaafb550ffacfd8fa}, + {0xeeaaba2e5dbf6784, 0x95ba2a53f983cf38}, + {0x952ab45cfa97a0b2, 0xdd945a747bf26183}, + {0xba756174393d88df, 0x94f971119aeef9e4}, + {0xe912b9d1478ceb17, 0x7a37cd5601aab85d}, + {0x91abb422ccb812ee, 0xac62e055c10ab33a}, + {0xb616a12b7fe617aa, 0x577b986b314d6009}, + {0xe39c49765fdf9d94, 0xed5a7e85fda0b80b}, + {0x8e41ade9fbebc27d, 0x14588f13be847307}, + {0xb1d219647ae6b31c, 0x596eb2d8ae258fc8}, + {0xde469fbd99a05fe3, 0x6fca5f8ed9aef3bb}, + {0x8aec23d680043bee, 0x25de7bb9480d5854}, + {0xada72ccc20054ae9, 0xaf561aa79a10ae6a}, + {0xd910f7ff28069da4, 0x1b2ba1518094da04}, + {0x87aa9aff79042286, 0x90fb44d2f05d0842}, + {0xa99541bf57452b28, 0x353a1607ac744a53}, + {0xd3fa922f2d1675f2, 0x42889b8997915ce8}, + {0x847c9b5d7c2e09b7, 0x69956135febada11}, + {0xa59bc234db398c25, 0x43fab9837e699095}, + {0xcf02b2c21207ef2e, 0x94f967e45e03f4bb}, + {0x8161afb94b44f57d, 0x1d1be0eebac278f5}, + {0xa1ba1ba79e1632dc, 0x6462d92a69731732}, + {0xca28a291859bbf93, 0x7d7b8f7503cfdcfe}, + {0xfcb2cb35e702af78, 0x5cda735244c3d43e}, + {0x9defbf01b061adab, 0x3a0888136afa64a7}, + {0xc56baec21c7a1916, 0x088aaa1845b8fdd0}, + {0xf6c69a72a3989f5b, 0x8aad549e57273d45}, + {0x9a3c2087a63f6399, 0x36ac54e2f678864b}, + {0xc0cb28a98fcf3c7f, 0x84576a1bb416a7dd}, + {0xf0fdf2d3f3c30b9f, 0x656d44a2a11c51d5}, + {0x969eb7c47859e743, 0x9f644ae5a4b1b325}, + {0xbc4665b596706114, 0x873d5d9f0dde1fee}, + {0xeb57ff22fc0c7959, 0xa90cb506d155a7ea}, + {0x9316ff75dd87cbd8, 0x09a7f12442d588f2}, + {0xb7dcbf5354e9bece, 0x0c11ed6d538aeb2f}, + {0xe5d3ef282a242e81, 0x8f1668c8a86da5fa}, + {0x8fa475791a569d10, 0xf96e017d694487bc}, + {0xb38d92d760ec4455, 0x37c981dcc395a9ac}, + {0xe070f78d3927556a, 0x85bbe253f47b1417}, + {0x8c469ab843b89562, 0x93956d7478ccec8e}, + {0xaf58416654a6babb, 0x387ac8d1970027b2}, + {0xdb2e51bfe9d0696a, 0x06997b05fcc0319e}, + {0x88fcf317f22241e2, 0x441fece3bdf81f03}, + {0xab3c2fddeeaad25a, 0xd527e81cad7626c3}, + {0xd60b3bd56a5586f1, 0x8a71e223d8d3b074}, + {0x85c7056562757456, 0xf6872d5667844e49}, + {0xa738c6bebb12d16c, 0xb428f8ac016561db}, + {0xd106f86e69d785c7, 0xe13336d701beba52}, + {0x82a45b450226b39c, 0xecc0024661173473}, + {0xa34d721642b06084, 0x27f002d7f95d0190}, + {0xcc20ce9bd35c78a5, 0x31ec038df7b441f4}, + {0xff290242c83396ce, 0x7e67047175a15271}, + {0x9f79a169bd203e41, 0x0f0062c6e984d386}, + {0xc75809c42c684dd1, 0x52c07b78a3e60868}, + {0xf92e0c3537826145, 0xa7709a56ccdf8a82}, + {0x9bbcc7a142b17ccb, 0x88a66076400bb691}, + {0xc2abf989935ddbfe, 0x6acff893d00ea435}, + {0xf356f7ebf83552fe, 0x0583f6b8c4124d43}, + {0x98165af37b2153de, 0xc3727a337a8b704a}, + {0xbe1bf1b059e9a8d6, 0x744f18c0592e4c5c}, + {0xeda2ee1c7064130c, 0x1162def06f79df73}, + {0x9485d4d1c63e8be7, 0x8addcb5645ac2ba8}, + {0xb9a74a0637ce2ee1, 0x6d953e2bd7173692}, + {0xe8111c87c5c1ba99, 0xc8fa8db6ccdd0437}, + {0x910ab1d4db9914a0, 0x1d9c9892400a22a2}, + {0xb54d5e4a127f59c8, 0x2503beb6d00cab4b}, + {0xe2a0b5dc971f303a, 0x2e44ae64840fd61d}, + {0x8da471a9de737e24, 0x5ceaecfed289e5d2}, + {0xb10d8e1456105dad, 0x7425a83e872c5f47}, + {0xdd50f1996b947518, 0xd12f124e28f77719}, + {0x8a5296ffe33cc92f, 0x82bd6b70d99aaa6f}, + {0xace73cbfdc0bfb7b, 0x636cc64d1001550b}, + {0xd8210befd30efa5a, 0x3c47f7e05401aa4e}, + {0x8714a775e3e95c78, 0x65acfaec34810a71}, + {0xa8d9d1535ce3b396, 0x7f1839a741a14d0d}, + {0xd31045a8341ca07c, 0x1ede48111209a050}, + {0x83ea2b892091e44d, 0x934aed0aab460432}, + {0xa4e4b66b68b65d60, 0xf81da84d5617853f}, + {0xce1de40642e3f4b9, 0x36251260ab9d668e}, + {0x80d2ae83e9ce78f3, 0xc1d72b7c6b426019}, + {0xa1075a24e4421730, 0xb24cf65b8612f81f}, + {0xc94930ae1d529cfc, 0xdee033f26797b627}, + {0xfb9b7cd9a4a7443c, 0x169840ef017da3b1}, + {0x9d412e0806e88aa5, 0x8e1f289560ee864e}, + {0xc491798a08a2ad4e, 0xf1a6f2bab92a27e2}, + {0xf5b5d7ec8acb58a2, 0xae10af696774b1db}, + {0x9991a6f3d6bf1765, 0xacca6da1e0a8ef29}, + {0xbff610b0cc6edd3f, 0x17fd090a58d32af3}, + {0xeff394dcff8a948e, 0xddfc4b4cef07f5b0}, + {0x95f83d0a1fb69cd9, 0x4abdaf101564f98e}, + {0xbb764c4ca7a4440f, 0x9d6d1ad41abe37f1}, + {0xea53df5fd18d5513, 0x84c86189216dc5ed}, + {0x92746b9be2f8552c, 0x32fd3cf5b4e49bb4}, + {0xb7118682dbb66a77, 0x3fbc8c33221dc2a1}, + {0xe4d5e82392a40515, 0x0fabaf3feaa5334a}, + {0x8f05b1163ba6832d, 0x29cb4d87f2a7400e}, + {0xb2c71d5bca9023f8, 0x743e20e9ef511012}, + {0xdf78e4b2bd342cf6, 0x914da9246b255416}, + {0x8bab8eefb6409c1a, 0x1ad089b6c2f7548e}, + {0xae9672aba3d0c320, 0xa184ac2473b529b1}, + {0xda3c0f568cc4f3e8, 0xc9e5d72d90a2741e}, + {0x8865899617fb1871, 0x7e2fa67c7a658892}, + {0xaa7eebfb9df9de8d, 0xddbb901b98feeab7}, + {0xd51ea6fa85785631, 0x552a74227f3ea565}, + {0x8533285c936b35de, 0xd53a88958f87275f}, + {0xa67ff273b8460356, 0x8a892abaf368f137}, + {0xd01fef10a657842c, 0x2d2b7569b0432d85}, + {0x8213f56a67f6b29b, 0x9c3b29620e29fc73}, + {0xa298f2c501f45f42, 0x8349f3ba91b47b8f}, + {0xcb3f2f7642717713, 0x241c70a936219a73}, + {0xfe0efb53d30dd4d7, 0xed238cd383aa0110}, + {0x9ec95d1463e8a506, 0xf4363804324a40aa}, + {0xc67bb4597ce2ce48, 0xb143c6053edcd0d5}, + {0xf81aa16fdc1b81da, 0xdd94b7868e94050a}, + {0x9b10a4e5e9913128, 0xca7cf2b4191c8326}, + {0xc1d4ce1f63f57d72, 0xfd1c2f611f63a3f0}, + {0xf24a01a73cf2dccf, 0xbc633b39673c8cec}, + {0x976e41088617ca01, 0xd5be0503e085d813}, + {0xbd49d14aa79dbc82, 0x4b2d8644d8a74e18}, + {0xec9c459d51852ba2, 0xddf8e7d60ed1219e}, + {0x93e1ab8252f33b45, 0xcabb90e5c942b503}, + {0xb8da1662e7b00a17, 0x3d6a751f3b936243}, + {0xe7109bfba19c0c9d, 0x0cc512670a783ad4}, + {0x906a617d450187e2, 0x27fb2b80668b24c5}, + {0xb484f9dc9641e9da, 0xb1f9f660802dedf6}, + {0xe1a63853bbd26451, 0x5e7873f8a0396973}, + {0x8d07e33455637eb2, 0xdb0b487b6423e1e8}, + {0xb049dc016abc5e5f, 0x91ce1a9a3d2cda62}, + {0xdc5c5301c56b75f7, 0x7641a140cc7810fb}, + {0x89b9b3e11b6329ba, 0xa9e904c87fcb0a9d}, + {0xac2820d9623bf429, 0x546345fa9fbdcd44}, + {0xd732290fbacaf133, 0xa97c177947ad4095}, + {0x867f59a9d4bed6c0, 0x49ed8eabcccc485d}, + {0xa81f301449ee8c70, 0x5c68f256bfff5a74}, + {0xd226fc195c6a2f8c, 0x73832eec6fff3111}, + {0x83585d8fd9c25db7, 0xc831fd53c5ff7eab}, + {0xa42e74f3d032f525, 0xba3e7ca8b77f5e55}, + {0xcd3a1230c43fb26f, 0x28ce1bd2e55f35eb}, + {0x80444b5e7aa7cf85, 0x7980d163cf5b81b3}, + {0xa0555e361951c366, 0xd7e105bcc332621f}, + {0xc86ab5c39fa63440, 0x8dd9472bf3fefaa7}, + {0xfa856334878fc150, 0xb14f98f6f0feb951}, + {0x9c935e00d4b9d8d2, 0x6ed1bf9a569f33d3}, + {0xc3b8358109e84f07, 0x0a862f80ec4700c8}, + {0xf4a642e14c6262c8, 0xcd27bb612758c0fa}, + {0x98e7e9cccfbd7dbd, 0x8038d51cb897789c}, + {0xbf21e44003acdd2c, 0xe0470a63e6bd56c3}, + {0xeeea5d5004981478, 0x1858ccfce06cac74}, + {0x95527a5202df0ccb, 0x0f37801e0c43ebc8}, + {0xbaa718e68396cffd, 0xd30560258f54e6ba}, + {0xe950df20247c83fd, 0x47c6b82ef32a2069}, + {0x91d28b7416cdd27e, 0x4cdc331d57fa5441}, + {0xb6472e511c81471d, 0xe0133fe4adf8e952}, + {0xe3d8f9e563a198e5, 0x58180fddd97723a6}, + {0x8e679c2f5e44ff8f, 0x570f09eaa7ea7648}, + {0xb201833b35d63f73, 0x2cd2cc6551e513da}, + {0xde81e40a034bcf4f, 0xf8077f7ea65e58d1}, + {0x8b112e86420f6191, 0xfb04afaf27faf782}, + {0xadd57a27d29339f6, 0x79c5db9af1f9b563}, + {0xd94ad8b1c7380874, 0x18375281ae7822bc}, + {0x87cec76f1c830548, 0x8f2293910d0b15b5}, + {0xa9c2794ae3a3c69a, 0xb2eb3875504ddb22}, + {0xd433179d9c8cb841, 0x5fa60692a46151eb}, + {0x849feec281d7f328, 0xdbc7c41ba6bcd333}, + {0xa5c7ea73224deff3, 0x12b9b522906c0800}, + {0xcf39e50feae16bef, 0xd768226b34870a00}, + {0x81842f29f2cce375, 0xe6a1158300d46640}, + {0xa1e53af46f801c53, 0x60495ae3c1097fd0}, + {0xca5e89b18b602368, 0x385bb19cb14bdfc4}, + {0xfcf62c1dee382c42, 0x46729e03dd9ed7b5}, + {0x9e19db92b4e31ba9, 0x6c07a2c26a8346d1}, + {0xc5a05277621be293, 0xc7098b7305241885}, + {0xf70867153aa2db38, 0xb8cbee4fc66d1ea7} +#else + {0xff77b1fcbebcdc4f, 0x25e8e89c13bb0f7b}, + {0xce5d73ff402d98e3, 0xfb0a3d212dc81290}, + {0xa6b34ad8c9dfc06f, 0xf42faa48c0ea481f}, + {0x86a8d39ef77164bc, 0xae5dff9c02033198}, + {0xd98ddaee19068c76, 0x3badd624dd9b0958}, + {0xafbd2350644eeacf, 0xe5d1929ef90898fb}, + {0x8df5efabc5979c8f, 0xca8d3ffa1ef463c2}, + {0xe55990879ddcaabd, 0xcc420a6a101d0516}, + {0xb94470938fa89bce, 0xf808e40e8d5b3e6a}, + {0x95a8637627989aad, 0xdde7001379a44aa9}, + {0xf1c90080baf72cb1, 0x5324c68b12dd6339}, + {0xc350000000000000, 0x0000000000000000}, + {0x9dc5ada82b70b59d, 0xf020000000000000}, + {0xfee50b7025c36a08, 0x02f236d04753d5b4}, + {0xcde6fd5e09abcf26, 0xed4c0226b55e6f86}, + {0xa6539930bf6bff45, 0x84db8346b786151c}, + {0x865b86925b9bc5c2, 0x0b8a2392ba45a9b2}, + {0xd910f7ff28069da4, 0x1b2ba1518094da04}, + {0xaf58416654a6babb, 0x387ac8d1970027b2}, + {0x8da471a9de737e24, 0x5ceaecfed289e5d2}, + {0xe4d5e82392a40515, 0x0fabaf3feaa5334a}, + {0xb8da1662e7b00a17, 0x3d6a751f3b936243}, + {0x95527a5202df0ccb, 0x0f37801e0c43ebc8} +#endif +}; + +#if !FMT_USE_FULL_CACHE_DRAGONBOX +template +const uint64_t basic_data::powers_of_5_64[] = { + 0x0000000000000001, 0x0000000000000005, 0x0000000000000019, + 0x000000000000007d, 0x0000000000000271, 0x0000000000000c35, + 0x0000000000003d09, 0x000000000001312d, 0x000000000005f5e1, + 0x00000000001dcd65, 0x00000000009502f9, 0x0000000002e90edd, + 0x000000000e8d4a51, 0x0000000048c27395, 0x000000016bcc41e9, + 0x000000071afd498d, 0x0000002386f26fc1, 0x000000b1a2bc2ec5, + 0x000003782dace9d9, 0x00001158e460913d, 0x000056bc75e2d631, + 0x0001b1ae4d6e2ef5, 0x000878678326eac9, 0x002a5a058fc295ed, + 0x00d3c21bcecceda1, 0x0422ca8b0a00a425, 0x14adf4b7320334b9}; + +template +const uint32_t basic_data::dragonbox_pow10_recovery_errors[] = { + 0x50001400, 0x54044100, 0x54014555, 0x55954415, 0x54115555, 0x00000001, + 0x50000000, 0x00104000, 0x54010004, 0x05004001, 0x55555544, 0x41545555, + 0x54040551, 0x15445545, 0x51555514, 0x10000015, 0x00101100, 0x01100015, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x04450514, 0x45414110, + 0x55555145, 0x50544050, 0x15040155, 0x11054140, 0x50111514, 0x11451454, + 0x00400541, 0x00000000, 0x55555450, 0x10056551, 0x10054011, 0x55551014, + 0x69514555, 0x05151109, 0x00155555}; +#endif + template const char basic_data::foreground_color[] = "\x1b[38;2;"; template @@ -366,6 +1096,10 @@ class fp { private: using significand_type = uint64_t; + template + using is_supported_float = bool_constant; + public: significand_type f; int e; @@ -388,63 +1122,38 @@ class fp { template explicit fp(Double d) { assign(d); } // Assigns d to this and return true iff predecessor is closer than successor. - template - bool assign(Double d) { - // Assume double is in the format [sign][exponent][significand]. - using limits = std::numeric_limits; + template ::value)> + bool assign(Float d) { + // Assume float is in the format [sign][exponent][significand]. + using limits = std::numeric_limits; + const int float_significand_size = limits::digits - 1; const int exponent_size = - bits::value - double_significand_size - 1; // -1 for sign - const uint64_t significand_mask = implicit_bit - 1; + bits::value - float_significand_size - 1; // -1 for sign + const uint64_t float_implicit_bit = 1ULL << float_significand_size; + const uint64_t significand_mask = float_implicit_bit - 1; const uint64_t exponent_mask = (~0ULL >> 1) & ~significand_mask; const int exponent_bias = (1 << exponent_size) - limits::max_exponent - 1; - auto u = bit_cast(d); + constexpr bool is_double = sizeof(Float) == sizeof(uint64_t); + auto u = bit_cast>(d); f = u & significand_mask; int biased_e = - static_cast((u & exponent_mask) >> double_significand_size); + static_cast((u & exponent_mask) >> float_significand_size); // Predecessor is closer if d is a normalized power of 2 (f == 0) other than // the smallest normalized number (biased_e > 1). bool is_predecessor_closer = f == 0 && biased_e > 1; if (biased_e != 0) - f += implicit_bit; + f += float_implicit_bit; else biased_e = 1; // Subnormals use biased exponent 1 (min exponent). - e = biased_e - exponent_bias - double_significand_size; + e = biased_e - exponent_bias - float_significand_size; return is_predecessor_closer; } - template - bool assign(Double) { + template ::value)> + bool assign(Float) { *this = fp(); return false; } - - // Assigns d to this together with computing lower and upper boundaries, - // where a boundary is a value half way between the number and its predecessor - // (lower) or successor (upper). The upper boundary is normalized and lower - // has the same exponent but may be not normalized. - template boundaries assign_with_boundaries(Double d) { - bool is_lower_closer = assign(d); - fp lower = - is_lower_closer ? fp((f << 2) - 1, e - 2) : fp((f << 1) - 1, e - 1); - // 1 in normalize accounts for the exponent shift above. - fp upper = normalize<1>(fp((f << 1) + 1, e - 1)); - lower.f <<= lower.e - upper.e; - return boundaries{lower.f, upper.f}; - } - - template boundaries assign_float_with_boundaries(Double d) { - assign(d); - constexpr int min_normal_e = std::numeric_limits::min_exponent - - std::numeric_limits::digits; - significand_type half_ulp = 1 << (std::numeric_limits::digits - - std::numeric_limits::digits - 1); - if (min_normal_e > e) half_ulp <<= min_normal_e - e; - fp upper = normalize<0>(fp(f + half_ulp, e)); - fp lower = fp( - f - (half_ulp >> ((f == implicit_bit && e > min_normal_e) ? 1 : 0)), e); - lower.f <<= lower.e - upper.e; - return boundaries{lower.f, upper.f}; - } }; // Normalizes the value converted from double and multiplied by (1 << SHIFT). @@ -488,11 +1197,12 @@ inline fp operator*(fp x, fp y) { return {multiply(x.f, y.f), x.e + y.e + 64}; } // Returns a cached power of 10 `c_k = c_k.f * pow(2, c_k.e)` such that its // (binary) exponent satisfies `min_exponent <= c_k.e <= min_exponent + 28`. inline fp get_cached_power(int min_exponent, int& pow10_exponent) { - const int64_t one_over_log2_10 = 0x4d104d42; // round(pow(2, 32) / log2(10)) + const int shift = 32; + const auto significand = static_cast(data::log10_2_significand); int index = static_cast( - ((min_exponent + fp::significand_size - 1) * one_over_log2_10 + - ((int64_t(1) << 32) - 1)) // ceil - >> 32 // arithmetic shift + ((min_exponent + fp::significand_size - 1) * (significand >> shift) + + ((int64_t(1) << shift) - 1)) // ceil + >> 32 // arithmetic shift ); // Decimal exponent of the first (smallest) cached power of 10. const int first_dec_exp = -348; @@ -500,7 +1210,8 @@ inline fp get_cached_power(int min_exponent, int& pow10_exponent) { const int dec_exp_step = 8; index = (index - first_dec_exp - 1) / dec_exp_step + 1; pow10_exponent = first_dec_exp + index * dec_exp_step; - return {data::pow10_significands[index], data::pow10_exponents[index]}; + return {data::grisu_pow10_significands[index], + data::grisu_pow10_exponents[index]}; } // A simple accumulator to hold the sums of terms in bigint::square if uint128_t @@ -559,9 +1270,8 @@ class bigint { FMT_ASSERT(compare(*this, other) >= 0, ""); bigit borrow = 0; int i = other.exp_ - exp_; - for (size_t j = 0, n = other.bigits_.size(); j != n; ++i, ++j) { + for (size_t j = 0, n = other.bigits_.size(); j != n; ++i, ++j) subtract_bigits(i, other.bigits_[j], borrow); - } while (borrow > 0) subtract_bigits(i, 0, borrow); remove_leading_zeros(); } @@ -733,22 +1443,26 @@ class bigint { exp_ *= 2; } + // If this bigint has a bigger exponent than other, adds trailing zero to make + // exponents equal. This simplifies some operations such as subtraction. + void align(const bigint& other) { + int exp_difference = exp_ - other.exp_; + if (exp_difference <= 0) return; + int num_bigits = static_cast(bigits_.size()); + bigits_.resize(to_unsigned(num_bigits + exp_difference)); + for (int i = num_bigits - 1, j = i + exp_difference; i >= 0; --i, --j) + bigits_[j] = bigits_[i]; + std::uninitialized_fill_n(bigits_.data(), exp_difference, 0); + exp_ -= exp_difference; + } + // Divides this bignum by divisor, assigning the remainder to this and // returning the quotient. int divmod_assign(const bigint& divisor) { FMT_ASSERT(this != &divisor, ""); if (compare(*this, divisor) < 0) return 0; - int num_bigits = static_cast(bigits_.size()); FMT_ASSERT(divisor.bigits_[divisor.bigits_.size() - 1u] != 0, ""); - int exp_difference = exp_ - divisor.exp_; - if (exp_difference > 0) { - // Align bigints by adding trailing zeros to simplify subtraction. - bigits_.resize(to_unsigned(num_bigits + exp_difference)); - for (int i = num_bigits - 1, j = i + exp_difference; i >= 0; --i, --j) - bigits_[j] = bigits_[i]; - std::uninitialized_fill_n(bigits_.data(), exp_difference, 0); - exp_ -= exp_difference; - } + align(divisor); int quotient = 0; do { subtract_aligned(divisor); @@ -788,20 +1502,6 @@ enum result { }; } -// A version of count_digits optimized for grisu_gen_digits. -inline int grisu_count_digits(uint32_t n) { - if (n < 10) return 1; - if (n < 100) return 2; - if (n < 1000) return 3; - if (n < 10000) return 4; - if (n < 100000) return 5; - if (n < 1000000) return 6; - if (n < 10000000) return 7; - if (n < 100000000) return 8; - if (n < 1000000000) return 9; - return 10; -} - // Generates output using the Grisu digit-gen algorithm. // error: the size of the region (lower, upper) outside of which numbers // definitely do not round to value (Delta in Grisu3). @@ -817,7 +1517,7 @@ FMT_ALWAYS_INLINE digits::result grisu_gen_digits(fp value, uint64_t error, FMT_ASSERT(integral == value.f >> -one.e, ""); // The fractional part of scaled value (p2 in Grisu) c = value % one. uint64_t fractional = value.f & (one.f - 1); - exp = grisu_count_digits(integral); // kappa in Grisu. + exp = count_digits(integral); // kappa in Grisu. // Divide by 10 to prevent overflow. auto result = handler.on_start(data::powers_of_10_64[exp - 1] << -one.e, value.f / 10, error * 10, exp); @@ -867,8 +1567,7 @@ FMT_ALWAYS_INLINE digits::result grisu_gen_digits(fp value, uint64_t error, FMT_ASSERT(false, "invalid number of digits"); } --exp; - uint64_t remainder = - (static_cast(integral) << -one.e) + fractional; + auto remainder = (static_cast(integral) << -one.e) + fractional; result = handler.on_digit(static_cast('0' + digit), data::powers_of_10_64[exp] << -one.e, remainder, error, exp, true); @@ -878,8 +1577,7 @@ FMT_ALWAYS_INLINE digits::result grisu_gen_digits(fp value, uint64_t error, for (;;) { fractional *= 10; error *= 10; - char digit = - static_cast('0' + static_cast(fractional >> -one.e)); + char digit = static_cast('0' + (fractional >> -one.e)); fractional &= one.f - 1; --exp; result = handler.on_digit(digit, one.f, fractional, error, exp, false); @@ -916,6 +1614,7 @@ struct fixed_handler { uint64_t error, int, bool integral) { FMT_ASSERT(remainder < divisor, ""); buf[size++] = digit; + if (!integral && error >= remainder) return digits::error; if (size < precision) return digits::more; if (!integral) { // Check if error * 2 < divisor with overflow prevention. @@ -935,59 +1634,684 @@ struct fixed_handler { } if (buf[0] > '9') { buf[0] = '1'; - buf[size++] = '0'; + if (fixed) + buf[size++] = '0'; + else + ++exp10; } return digits::done; } }; -// The shortest representation digit handler. -struct grisu_shortest_handler { - char* buf; - int size; - // Distance between scaled value and upper bound (wp_W in Grisu3). - uint64_t diff; +// Implementation of Dragonbox algorithm: https://github.com/jk-jeon/dragonbox. +namespace dragonbox { +// Computes 128-bit result of multiplication of two 64-bit unsigned integers. +FMT_SAFEBUFFERS inline uint128_wrapper umul128(uint64_t x, + uint64_t y) FMT_NOEXCEPT { +#if FMT_USE_INT128 + return static_cast(x) * static_cast(y); +#elif defined(_MSC_VER) && defined(_M_X64) + uint128_wrapper result; + result.low_ = _umul128(x, y, &result.high_); + return result; +#else + const uint64_t mask = (uint64_t(1) << 32) - uint64_t(1); - digits::result on_start(uint64_t, uint64_t, uint64_t, int&) { - return digits::more; + uint64_t a = x >> 32; + uint64_t b = x & mask; + uint64_t c = y >> 32; + uint64_t d = y & mask; + + uint64_t ac = a * c; + uint64_t bc = b * c; + uint64_t ad = a * d; + uint64_t bd = b * d; + + uint64_t intermediate = (bd >> 32) + (ad & mask) + (bc & mask); + + return {ac + (intermediate >> 32) + (ad >> 32) + (bc >> 32), + (intermediate << 32) + (bd & mask)}; +#endif +} + +// Computes upper 64 bits of multiplication of two 64-bit unsigned integers. +FMT_SAFEBUFFERS inline uint64_t umul128_upper64(uint64_t x, + uint64_t y) FMT_NOEXCEPT { +#if FMT_USE_INT128 + auto p = static_cast(x) * static_cast(y); + return static_cast(p >> 64); +#elif defined(_MSC_VER) && defined(_M_X64) + return __umulh(x, y); +#else + return umul128(x, y).high(); +#endif +} + +// Computes upper 64 bits of multiplication of a 64-bit unsigned integer and a +// 128-bit unsigned integer. +FMT_SAFEBUFFERS inline uint64_t umul192_upper64(uint64_t x, uint128_wrapper y) + FMT_NOEXCEPT { + uint128_wrapper g0 = umul128(x, y.high()); + g0 += umul128_upper64(x, y.low()); + return g0.high(); +} + +// Computes upper 32 bits of multiplication of a 32-bit unsigned integer and a +// 64-bit unsigned integer. +inline uint32_t umul96_upper32(uint32_t x, uint64_t y) FMT_NOEXCEPT { + return static_cast(umul128_upper64(x, y)); +} + +// Computes middle 64 bits of multiplication of a 64-bit unsigned integer and a +// 128-bit unsigned integer. +FMT_SAFEBUFFERS inline uint64_t umul192_middle64(uint64_t x, uint128_wrapper y) + FMT_NOEXCEPT { + uint64_t g01 = x * y.high(); + uint64_t g10 = umul128_upper64(x, y.low()); + return g01 + g10; +} + +// Computes lower 64 bits of multiplication of a 32-bit unsigned integer and a +// 64-bit unsigned integer. +inline uint64_t umul96_lower64(uint32_t x, uint64_t y) FMT_NOEXCEPT { + return x * y; +} + +// Computes floor(log10(pow(2, e))) for e in [-1700, 1700] using the method from +// https://fmt.dev/papers/Grisu-Exact.pdf#page=5, section 3.4. +inline int floor_log10_pow2(int e) FMT_NOEXCEPT { + FMT_ASSERT(e <= 1700 && e >= -1700, "too large exponent"); + const int shift = 22; + return (e * static_cast(data::log10_2_significand >> (64 - shift))) >> + shift; +} + +// Various fast log computations. +inline int floor_log2_pow10(int e) FMT_NOEXCEPT { + FMT_ASSERT(e <= 1233 && e >= -1233, "too large exponent"); + const uint64_t log2_10_integer_part = 3; + const uint64_t log2_10_fractional_digits = 0x5269e12f346e2bf9; + const int shift_amount = 19; + return (e * static_cast( + (log2_10_integer_part << shift_amount) | + (log2_10_fractional_digits >> (64 - shift_amount)))) >> + shift_amount; +} +inline int floor_log10_pow2_minus_log10_4_over_3(int e) FMT_NOEXCEPT { + FMT_ASSERT(e <= 1700 && e >= -1700, "too large exponent"); + const uint64_t log10_4_over_3_fractional_digits = 0x1ffbfc2bbc780375; + const int shift_amount = 22; + return (e * static_cast(data::log10_2_significand >> + (64 - shift_amount)) - + static_cast(log10_4_over_3_fractional_digits >> + (64 - shift_amount))) >> + shift_amount; +} + +// Returns true iff x is divisible by pow(2, exp). +inline bool divisible_by_power_of_2(uint32_t x, int exp) FMT_NOEXCEPT { + FMT_ASSERT(exp >= 1, ""); + FMT_ASSERT(x != 0, ""); +#ifdef FMT_BUILTIN_CTZ + return FMT_BUILTIN_CTZ(x) >= exp; +#else + return exp < num_bits() && x == ((x >> exp) << exp); +#endif +} +inline bool divisible_by_power_of_2(uint64_t x, int exp) FMT_NOEXCEPT { + FMT_ASSERT(exp >= 1, ""); + FMT_ASSERT(x != 0, ""); +#ifdef FMT_BUILTIN_CTZLL + return FMT_BUILTIN_CTZLL(x) >= exp; +#else + return exp < num_bits() && x == ((x >> exp) << exp); +#endif +} + +// Returns true iff x is divisible by pow(5, exp). +inline bool divisible_by_power_of_5(uint32_t x, int exp) FMT_NOEXCEPT { + FMT_ASSERT(exp <= 10, "too large exponent"); + return x * data::divtest_table_for_pow5_32[exp].mod_inv <= + data::divtest_table_for_pow5_32[exp].max_quotient; +} +inline bool divisible_by_power_of_5(uint64_t x, int exp) FMT_NOEXCEPT { + FMT_ASSERT(exp <= 23, "too large exponent"); + return x * data::divtest_table_for_pow5_64[exp].mod_inv <= + data::divtest_table_for_pow5_64[exp].max_quotient; +} + +// Replaces n by floor(n / pow(5, N)) returning true if and only if n is +// divisible by pow(5, N). +// Precondition: n <= 2 * pow(5, N + 1). +template +bool check_divisibility_and_divide_by_pow5(uint32_t& n) FMT_NOEXCEPT { + static constexpr struct { + uint32_t magic_number; + int bits_for_comparison; + uint32_t threshold; + int shift_amount; + } infos[] = {{0xcccd, 16, 0x3333, 18}, {0xa429, 8, 0x0a, 20}}; + constexpr auto info = infos[N - 1]; + n *= info.magic_number; + const uint32_t comparison_mask = (1u << info.bits_for_comparison) - 1; + bool result = (n & comparison_mask) <= info.threshold; + n >>= info.shift_amount; + return result; +} + +// Computes floor(n / pow(10, N)) for small n and N. +// Precondition: n <= pow(10, N + 1). +template uint32_t small_division_by_pow10(uint32_t n) FMT_NOEXCEPT { + static constexpr struct { + uint32_t magic_number; + int shift_amount; + uint32_t divisor_times_10; + } infos[] = {{0xcccd, 19, 100}, {0xa3d8, 22, 1000}}; + constexpr auto info = infos[N - 1]; + FMT_ASSERT(n <= info.divisor_times_10, "n is too large"); + return n * info.magic_number >> info.shift_amount; +} + +// Computes floor(n / 10^(kappa + 1)) (float) +inline uint32_t divide_by_10_to_kappa_plus_1(uint32_t n) FMT_NOEXCEPT { + return n / float_info::big_divisor; +} +// Computes floor(n / 10^(kappa + 1)) (double) +inline uint64_t divide_by_10_to_kappa_plus_1(uint64_t n) FMT_NOEXCEPT { + return umul128_upper64(n, 0x83126e978d4fdf3c) >> 9; +} + +// Various subroutines using pow10 cache +template struct cache_accessor; + +template <> struct cache_accessor { + using carrier_uint = float_info::carrier_uint; + using cache_entry_type = uint64_t; + + static uint64_t get_cached_power(int k) FMT_NOEXCEPT { + FMT_ASSERT(k >= float_info::min_k && k <= float_info::max_k, + "k is out of range"); + return data::dragonbox_pow10_significands_64[k - float_info::min_k]; } - // Decrement the generated number approaching value from above. - void round(uint64_t d, uint64_t divisor, uint64_t& remainder, - uint64_t error) { - while ( - remainder < d && error - remainder >= divisor && - (remainder + divisor < d || d - remainder >= remainder + divisor - d)) { - --buf[size - 1]; - remainder += divisor; - } + static carrier_uint compute_mul(carrier_uint u, + const cache_entry_type& cache) FMT_NOEXCEPT { + return umul96_upper32(u, cache); } - // Implements Grisu's round_weed. - digits::result on_digit(char digit, uint64_t divisor, uint64_t remainder, - uint64_t error, int exp, bool integral) { - buf[size++] = digit; - if (remainder >= error) return digits::more; - uint64_t unit = integral ? 1 : data::powers_of_10_64[-exp]; - uint64_t up = (diff - 1) * unit; // wp_Wup - round(up, divisor, remainder, error); - uint64_t down = (diff + 1) * unit; // wp_Wdown - if (remainder < down && error - remainder >= divisor && - (remainder + divisor < down || - down - remainder > remainder + divisor - down)) { - return digits::error; - } - return 2 * unit <= remainder && remainder <= error - 4 * unit - ? digits::done - : digits::error; + static uint32_t compute_delta(const cache_entry_type& cache, + int beta_minus_1) FMT_NOEXCEPT { + return static_cast(cache >> (64 - 1 - beta_minus_1)); + } + + static bool compute_mul_parity(carrier_uint two_f, + const cache_entry_type& cache, + int beta_minus_1) FMT_NOEXCEPT { + FMT_ASSERT(beta_minus_1 >= 1, ""); + FMT_ASSERT(beta_minus_1 < 64, ""); + + return ((umul96_lower64(two_f, cache) >> (64 - beta_minus_1)) & 1) != 0; + } + + static carrier_uint compute_left_endpoint_for_shorter_interval_case( + const cache_entry_type& cache, int beta_minus_1) FMT_NOEXCEPT { + return static_cast( + (cache - (cache >> (float_info::significand_bits + 2))) >> + (64 - float_info::significand_bits - 1 - beta_minus_1)); + } + + static carrier_uint compute_right_endpoint_for_shorter_interval_case( + const cache_entry_type& cache, int beta_minus_1) FMT_NOEXCEPT { + return static_cast( + (cache + (cache >> (float_info::significand_bits + 1))) >> + (64 - float_info::significand_bits - 1 - beta_minus_1)); + } + + static carrier_uint compute_round_up_for_shorter_interval_case( + const cache_entry_type& cache, int beta_minus_1) FMT_NOEXCEPT { + return (static_cast( + cache >> + (64 - float_info::significand_bits - 2 - beta_minus_1)) + + 1) / + 2; } }; +template <> struct cache_accessor { + using carrier_uint = float_info::carrier_uint; + using cache_entry_type = uint128_wrapper; + + static uint128_wrapper get_cached_power(int k) FMT_NOEXCEPT { + FMT_ASSERT(k >= float_info::min_k && k <= float_info::max_k, + "k is out of range"); + +#if FMT_USE_FULL_CACHE_DRAGONBOX + return data::dragonbox_pow10_significands_128[k - + float_info::min_k]; +#else + static const int compression_ratio = 27; + + // Compute base index. + int cache_index = (k - float_info::min_k) / compression_ratio; + int kb = cache_index * compression_ratio + float_info::min_k; + int offset = k - kb; + + // Get base cache. + uint128_wrapper base_cache = + data::dragonbox_pow10_significands_128[cache_index]; + if (offset == 0) return base_cache; + + // Compute the required amount of bit-shift. + int alpha = floor_log2_pow10(kb + offset) - floor_log2_pow10(kb) - offset; + FMT_ASSERT(alpha > 0 && alpha < 64, "shifting error detected"); + + // Try to recover the real cache. + uint64_t pow5 = data::powers_of_5_64[offset]; + uint128_wrapper recovered_cache = umul128(base_cache.high(), pow5); + uint128_wrapper middle_low = + umul128(base_cache.low() - (kb < 0 ? 1u : 0u), pow5); + + recovered_cache += middle_low.high(); + + uint64_t high_to_middle = recovered_cache.high() << (64 - alpha); + uint64_t middle_to_low = recovered_cache.low() << (64 - alpha); + + recovered_cache = + uint128_wrapper{(recovered_cache.low() >> alpha) | high_to_middle, + ((middle_low.low() >> alpha) | middle_to_low)}; + + if (kb < 0) recovered_cache += 1; + + // Get error. + int error_idx = (k - float_info::min_k) / 16; + uint32_t error = (data::dragonbox_pow10_recovery_errors[error_idx] >> + ((k - float_info::min_k) % 16) * 2) & + 0x3; + + // Add the error back. + FMT_ASSERT(recovered_cache.low() + error >= recovered_cache.low(), ""); + return {recovered_cache.high(), recovered_cache.low() + error}; +#endif + } + + static carrier_uint compute_mul(carrier_uint u, + const cache_entry_type& cache) FMT_NOEXCEPT { + return umul192_upper64(u, cache); + } + + static uint32_t compute_delta(cache_entry_type const& cache, + int beta_minus_1) FMT_NOEXCEPT { + return static_cast(cache.high() >> (64 - 1 - beta_minus_1)); + } + + static bool compute_mul_parity(carrier_uint two_f, + const cache_entry_type& cache, + int beta_minus_1) FMT_NOEXCEPT { + FMT_ASSERT(beta_minus_1 >= 1, ""); + FMT_ASSERT(beta_minus_1 < 64, ""); + + return ((umul192_middle64(two_f, cache) >> (64 - beta_minus_1)) & 1) != 0; + } + + static carrier_uint compute_left_endpoint_for_shorter_interval_case( + const cache_entry_type& cache, int beta_minus_1) FMT_NOEXCEPT { + return (cache.high() - + (cache.high() >> (float_info::significand_bits + 2))) >> + (64 - float_info::significand_bits - 1 - beta_minus_1); + } + + static carrier_uint compute_right_endpoint_for_shorter_interval_case( + const cache_entry_type& cache, int beta_minus_1) FMT_NOEXCEPT { + return (cache.high() + + (cache.high() >> (float_info::significand_bits + 1))) >> + (64 - float_info::significand_bits - 1 - beta_minus_1); + } + + static carrier_uint compute_round_up_for_shorter_interval_case( + const cache_entry_type& cache, int beta_minus_1) FMT_NOEXCEPT { + return ((cache.high() >> + (64 - float_info::significand_bits - 2 - beta_minus_1)) + + 1) / + 2; + } +}; + +// Various integer checks +template +bool is_left_endpoint_integer_shorter_interval(int exponent) FMT_NOEXCEPT { + return exponent >= + float_info< + T>::case_shorter_interval_left_endpoint_lower_threshold && + exponent <= + float_info::case_shorter_interval_left_endpoint_upper_threshold; +} +template +bool is_endpoint_integer(typename float_info::carrier_uint two_f, + int exponent, int minus_k) FMT_NOEXCEPT { + if (exponent < float_info::case_fc_pm_half_lower_threshold) return false; + // For k >= 0. + if (exponent <= float_info::case_fc_pm_half_upper_threshold) return true; + // For k < 0. + if (exponent > float_info::divisibility_check_by_5_threshold) return false; + return divisible_by_power_of_5(two_f, minus_k); +} + +template +bool is_center_integer(typename float_info::carrier_uint two_f, int exponent, + int minus_k) FMT_NOEXCEPT { + // Exponent for 5 is negative. + if (exponent > float_info::divisibility_check_by_5_threshold) return false; + if (exponent > float_info::case_fc_upper_threshold) + return divisible_by_power_of_5(two_f, minus_k); + // Both exponents are nonnegative. + if (exponent >= float_info::case_fc_lower_threshold) return true; + // Exponent for 2 is negative. + return divisible_by_power_of_2(two_f, minus_k - exponent + 1); +} + +// Remove trailing zeros from n and return the number of zeros removed (float) +FMT_ALWAYS_INLINE int remove_trailing_zeros(uint32_t& n) FMT_NOEXCEPT { +#ifdef FMT_BUILTIN_CTZ + int t = FMT_BUILTIN_CTZ(n); +#else + int t = ctz(n); +#endif + if (t > float_info::max_trailing_zeros) + t = float_info::max_trailing_zeros; + + const uint32_t mod_inv1 = 0xcccccccd; + const uint32_t max_quotient1 = 0x33333333; + const uint32_t mod_inv2 = 0xc28f5c29; + const uint32_t max_quotient2 = 0x0a3d70a3; + + int s = 0; + for (; s < t - 1; s += 2) { + if (n * mod_inv2 > max_quotient2) break; + n *= mod_inv2; + } + if (s < t && n * mod_inv1 <= max_quotient1) { + n *= mod_inv1; + ++s; + } + n >>= s; + return s; +} + +// Removes trailing zeros and returns the number of zeros removed (double) +FMT_ALWAYS_INLINE int remove_trailing_zeros(uint64_t& n) FMT_NOEXCEPT { +#ifdef FMT_BUILTIN_CTZLL + int t = FMT_BUILTIN_CTZLL(n); +#else + int t = ctzll(n); +#endif + if (t > float_info::max_trailing_zeros) + t = float_info::max_trailing_zeros; + // Divide by 10^8 and reduce to 32-bits + // Since ret_value.significand <= (2^64 - 1) / 1000 < 10^17, + // both of the quotient and the r should fit in 32-bits + + const uint32_t mod_inv1 = 0xcccccccd; + const uint32_t max_quotient1 = 0x33333333; + const uint64_t mod_inv8 = 0xc767074b22e90e21; + const uint64_t max_quotient8 = 0x00002af31dc46118; + + // If the number is divisible by 1'0000'0000, work with the quotient + if (t >= 8) { + auto quotient_candidate = n * mod_inv8; + + if (quotient_candidate <= max_quotient8) { + auto quotient = static_cast(quotient_candidate >> 8); + + int s = 8; + for (; s < t; ++s) { + if (quotient * mod_inv1 > max_quotient1) break; + quotient *= mod_inv1; + } + quotient >>= (s - 8); + n = quotient; + return s; + } + } + + // Otherwise, work with the remainder + auto quotient = static_cast(n / 100000000); + auto remainder = static_cast(n - 100000000 * quotient); + + if (t == 0 || remainder * mod_inv1 > max_quotient1) { + return 0; + } + remainder *= mod_inv1; + + if (t == 1 || remainder * mod_inv1 > max_quotient1) { + n = (remainder >> 1) + quotient * 10000000ull; + return 1; + } + remainder *= mod_inv1; + + if (t == 2 || remainder * mod_inv1 > max_quotient1) { + n = (remainder >> 2) + quotient * 1000000ull; + return 2; + } + remainder *= mod_inv1; + + if (t == 3 || remainder * mod_inv1 > max_quotient1) { + n = (remainder >> 3) + quotient * 100000ull; + return 3; + } + remainder *= mod_inv1; + + if (t == 4 || remainder * mod_inv1 > max_quotient1) { + n = (remainder >> 4) + quotient * 10000ull; + return 4; + } + remainder *= mod_inv1; + + if (t == 5 || remainder * mod_inv1 > max_quotient1) { + n = (remainder >> 5) + quotient * 1000ull; + return 5; + } + remainder *= mod_inv1; + + if (t == 6 || remainder * mod_inv1 > max_quotient1) { + n = (remainder >> 6) + quotient * 100ull; + return 6; + } + remainder *= mod_inv1; + + n = (remainder >> 7) + quotient * 10ull; + return 7; +} + +// The main algorithm for shorter interval case +template +FMT_ALWAYS_INLINE FMT_SAFEBUFFERS decimal_fp shorter_interval_case( + int exponent) FMT_NOEXCEPT { + decimal_fp ret_value; + // Compute k and beta + const int minus_k = floor_log10_pow2_minus_log10_4_over_3(exponent); + const int beta_minus_1 = exponent + floor_log2_pow10(-minus_k); + + // Compute xi and zi + using cache_entry_type = typename cache_accessor::cache_entry_type; + const cache_entry_type cache = cache_accessor::get_cached_power(-minus_k); + + auto xi = cache_accessor::compute_left_endpoint_for_shorter_interval_case( + cache, beta_minus_1); + auto zi = cache_accessor::compute_right_endpoint_for_shorter_interval_case( + cache, beta_minus_1); + + // If the left endpoint is not an integer, increase it + if (!is_left_endpoint_integer_shorter_interval(exponent)) ++xi; + + // Try bigger divisor + ret_value.significand = zi / 10; + + // If succeed, remove trailing zeros if necessary and return + if (ret_value.significand * 10 >= xi) { + ret_value.exponent = minus_k + 1; + ret_value.exponent += remove_trailing_zeros(ret_value.significand); + return ret_value; + } + + // Otherwise, compute the round-up of y + ret_value.significand = + cache_accessor::compute_round_up_for_shorter_interval_case( + cache, beta_minus_1); + ret_value.exponent = minus_k; + + // When tie occurs, choose one of them according to the rule + if (exponent >= float_info::shorter_interval_tie_lower_threshold && + exponent <= float_info::shorter_interval_tie_upper_threshold) { + ret_value.significand = ret_value.significand % 2 == 0 + ? ret_value.significand + : ret_value.significand - 1; + } else if (ret_value.significand < xi) { + ++ret_value.significand; + } + return ret_value; +} + +template +FMT_SAFEBUFFERS decimal_fp to_decimal(T x) FMT_NOEXCEPT { + // Step 1: integer promotion & Schubfach multiplier calculation. + + using carrier_uint = typename float_info::carrier_uint; + using cache_entry_type = typename cache_accessor::cache_entry_type; + auto br = bit_cast(x); + + // Extract significand bits and exponent bits. + const carrier_uint significand_mask = + (static_cast(1) << float_info::significand_bits) - 1; + carrier_uint significand = (br & significand_mask); + int exponent = static_cast((br & exponent_mask()) >> + float_info::significand_bits); + + if (exponent != 0) { // Check if normal. + exponent += float_info::exponent_bias - float_info::significand_bits; + + // Shorter interval case; proceed like Schubfach. + if (significand == 0) return shorter_interval_case(exponent); + + significand |= + (static_cast(1) << float_info::significand_bits); + } else { + // Subnormal case; the interval is always regular. + if (significand == 0) return {0, 0}; + exponent = float_info::min_exponent - float_info::significand_bits; + } + + const bool include_left_endpoint = (significand % 2 == 0); + const bool include_right_endpoint = include_left_endpoint; + + // Compute k and beta. + const int minus_k = floor_log10_pow2(exponent) - float_info::kappa; + const cache_entry_type cache = cache_accessor::get_cached_power(-minus_k); + const int beta_minus_1 = exponent + floor_log2_pow10(-minus_k); + + // Compute zi and deltai + // 10^kappa <= deltai < 10^(kappa + 1) + const uint32_t deltai = cache_accessor::compute_delta(cache, beta_minus_1); + const carrier_uint two_fc = significand << 1; + const carrier_uint two_fr = two_fc | 1; + const carrier_uint zi = + cache_accessor::compute_mul(two_fr << beta_minus_1, cache); + + // Step 2: Try larger divisor; remove trailing zeros if necessary + + // Using an upper bound on zi, we might be able to optimize the division + // better than the compiler; we are computing zi / big_divisor here + decimal_fp ret_value; + ret_value.significand = divide_by_10_to_kappa_plus_1(zi); + uint32_t r = static_cast(zi - float_info::big_divisor * + ret_value.significand); + + if (r > deltai) { + goto small_divisor_case_label; + } else if (r < deltai) { + // Exclude the right endpoint if necessary + if (r == 0 && !include_right_endpoint && + is_endpoint_integer(two_fr, exponent, minus_k)) { + --ret_value.significand; + r = float_info::big_divisor; + goto small_divisor_case_label; + } + } else { + // r == deltai; compare fractional parts + // Check conditions in the order different from the paper + // to take advantage of short-circuiting + const carrier_uint two_fl = two_fc - 1; + if ((!include_left_endpoint || + !is_endpoint_integer(two_fl, exponent, minus_k)) && + !cache_accessor::compute_mul_parity(two_fl, cache, beta_minus_1)) { + goto small_divisor_case_label; + } + } + ret_value.exponent = minus_k + float_info::kappa + 1; + + // We may need to remove trailing zeros + ret_value.exponent += remove_trailing_zeros(ret_value.significand); + return ret_value; + + // Step 3: Find the significand with the smaller divisor + +small_divisor_case_label: + ret_value.significand *= 10; + ret_value.exponent = minus_k + float_info::kappa; + + const uint32_t mask = (1u << float_info::kappa) - 1; + auto dist = r - (deltai / 2) + (float_info::small_divisor / 2); + + // Is dist divisible by 2^kappa? + if ((dist & mask) == 0) { + const bool approx_y_parity = + ((dist ^ (float_info::small_divisor / 2)) & 1) != 0; + dist >>= float_info::kappa; + + // Is dist divisible by 5^kappa? + if (check_divisibility_and_divide_by_pow5::kappa>(dist)) { + ret_value.significand += dist; + + // Check z^(f) >= epsilon^(f) + // We have either yi == zi - epsiloni or yi == (zi - epsiloni) - 1, + // where yi == zi - epsiloni if and only if z^(f) >= epsilon^(f) + // Since there are only 2 possibilities, we only need to care about the + // parity. Also, zi and r should have the same parity since the divisor + // is an even number + if (cache_accessor::compute_mul_parity(two_fc, cache, beta_minus_1) != + approx_y_parity) { + --ret_value.significand; + } else { + // If z^(f) >= epsilon^(f), we might have a tie + // when z^(f) == epsilon^(f), or equivalently, when y is an integer + if (is_center_integer(two_fc, exponent, minus_k)) { + ret_value.significand = ret_value.significand % 2 == 0 + ? ret_value.significand + : ret_value.significand - 1; + } + } + } + // Is dist not divisible by 5^kappa? + else { + ret_value.significand += dist; + } + } + // Is dist not divisible by 2^kappa? + else { + // Since we know dist is small, we might be able to optimize the division + // better than the compiler; we are computing dist / small_divisor here + ret_value.significand += + small_division_by_pow10::kappa>(dist); + } + return ret_value; +} +} // namespace dragonbox + // Formats value using a variation of the Fixed-Precision Positive // Floating-Point Printout ((FPP)^2) algorithm by Steele & White: // https://fmt.dev/p372-steele.pdf. template -void fallback_format(Double d, buffer& buf, int& exp10) { +void fallback_format(Double d, int num_digits, bool binary32, buffer& buf, + int& exp10) { bigint numerator; // 2 * R in (FPP)^2. bigint denominator; // 2 * S in (FPP)^2. // lower and upper are differences between value and corresponding boundaries. @@ -998,8 +2322,9 @@ void fallback_format(Double d, buffer& buf, int& exp10) { // Shift numerator and denominator by an extra bit or two (if lower boundary // is closer) to make lower and upper integers. This eliminates multiplication // by 2 during later computations. - // TODO: handle float - int shift = value.assign(d) ? 2 : 1; + const bool is_predecessor_closer = + binary32 ? value.assign(static_cast(d)) : value.assign(d); + int shift = is_predecessor_closer ? 2 : 1; uint64_t significand = value.f << shift; if (value.e >= 0) { numerator.assign(significand); @@ -1012,7 +2337,7 @@ void fallback_format(Double d, buffer& buf, int& exp10) { upper = &upper_store; } denominator.assign_pow10(exp10); - denominator <<= 1; + denominator <<= shift; } else if (exp10 < 0) { numerator.assign_pow10(-exp10); lower.assign(numerator); @@ -1034,39 +2359,73 @@ void fallback_format(Double d, buffer& buf, int& exp10) { upper = &upper_store; } } - if (!upper) upper = &lower; // Invariant: value == (numerator / denominator) * pow(10, exp10). - bool even = (value.f & 1) == 0; - int num_digits = 0; - char* data = buf.data(); - for (;;) { - int digit = numerator.divmod_assign(denominator); - bool low = compare(numerator, lower) - even < 0; // numerator <[=] lower. - // numerator + upper >[=] pow10: - bool high = add_compare(numerator, *upper, denominator) + even > 0; - data[num_digits++] = static_cast('0' + digit); - if (low || high) { - if (!low) { - ++data[num_digits - 1]; - } else if (high) { - int result = add_compare(numerator, numerator, denominator); - // Round half to even. - if (result > 0 || (result == 0 && (digit % 2) != 0)) + if (num_digits < 0) { + // Generate the shortest representation. + if (!upper) upper = &lower; + bool even = (value.f & 1) == 0; + num_digits = 0; + char* data = buf.data(); + for (;;) { + int digit = numerator.divmod_assign(denominator); + bool low = compare(numerator, lower) - even < 0; // numerator <[=] lower. + // numerator + upper >[=] pow10: + bool high = add_compare(numerator, *upper, denominator) + even > 0; + data[num_digits++] = static_cast('0' + digit); + if (low || high) { + if (!low) { ++data[num_digits - 1]; + } else if (high) { + int result = add_compare(numerator, numerator, denominator); + // Round half to even. + if (result > 0 || (result == 0 && (digit % 2) != 0)) + ++data[num_digits - 1]; + } + buf.try_resize(to_unsigned(num_digits)); + exp10 -= num_digits - 1; + return; + } + numerator *= 10; + lower *= 10; + if (upper != &lower) *upper *= 10; + } + } + // Generate the given number of digits. + exp10 -= num_digits - 1; + if (num_digits == 0) { + buf.try_resize(1); + denominator *= 10; + buf[0] = add_compare(numerator, numerator, denominator) > 0 ? '1' : '0'; + return; + } + buf.try_resize(to_unsigned(num_digits)); + for (int i = 0; i < num_digits - 1; ++i) { + int digit = numerator.divmod_assign(denominator); + buf[i] = static_cast('0' + digit); + numerator *= 10; + } + int digit = numerator.divmod_assign(denominator); + auto result = add_compare(numerator, numerator, denominator); + if (result > 0 || (result == 0 && (digit % 2) != 0)) { + if (digit == 9) { + const auto overflow = '0' + 10; + buf[num_digits - 1] = overflow; + // Propagate the carry. + for (int i = num_digits - 1; i > 0 && buf[i] == overflow; --i) { + buf[i] = '0'; + ++buf[i - 1]; + } + if (buf[0] == overflow) { + buf[0] = '1'; + ++exp10; } - buf.resize(to_unsigned(num_digits)); - exp10 -= num_digits - 1; return; } - numerator *= 10; - lower *= 10; - if (upper != &lower) *upper *= 10; + ++digit; } + buf[num_digits - 1] = static_cast('0' + digit); } -// Formats value using the Grisu algorithm -// (https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf) -// if T is a IEEE754 binary32 or binary64 and snprintf otherwise. template int format_float(T value, int precision, float_specs specs, buffer& buf) { static_assert(!std::is_same::value, ""); @@ -1078,66 +2437,57 @@ int format_float(T value, int precision, float_specs specs, buffer& buf) { buf.push_back('0'); return 0; } - buf.resize(to_unsigned(precision)); + buf.try_resize(to_unsigned(precision)); std::uninitialized_fill_n(buf.data(), precision, '0'); return -precision; } if (!specs.use_grisu) return snprintf_float(value, precision, specs, buf); + if (precision < 0) { + // Use Dragonbox for the shortest format. + if (specs.binary32) { + auto dec = dragonbox::to_decimal(static_cast(value)); + write(buffer_appender(buf), dec.significand); + return dec.exponent; + } + auto dec = dragonbox::to_decimal(static_cast(value)); + write(buffer_appender(buf), dec.significand); + return dec.exponent; + } + + // Use Grisu + Dragon4 for the given precision: + // https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf. int exp = 0; const int min_exp = -60; // alpha in Grisu. int cached_exp10 = 0; // K in Grisu. - if (precision < 0) { - fp fp_value; - auto boundaries = specs.binary32 - ? fp_value.assign_float_with_boundaries(value) - : fp_value.assign_with_boundaries(value); - fp_value = normalize(fp_value); - // Find a cached power of 10 such that multiplying value by it will bring - // the exponent in the range [min_exp, -32]. - const fp cached_pow = get_cached_power( - min_exp - (fp_value.e + fp::significand_size), cached_exp10); - // Multiply value and boundaries by the cached power of 10. - fp_value = fp_value * cached_pow; - boundaries.lower = multiply(boundaries.lower, cached_pow.f); - boundaries.upper = multiply(boundaries.upper, cached_pow.f); - assert(min_exp <= fp_value.e && fp_value.e <= -32); - --boundaries.lower; // \tilde{M}^- - 1 ulp -> M^-_{\downarrow}. - ++boundaries.upper; // \tilde{M}^+ + 1 ulp -> M^+_{\uparrow}. - // Numbers outside of (lower, upper) definitely do not round to value. - grisu_shortest_handler handler{buf.data(), 0, - boundaries.upper - fp_value.f}; - auto result = - grisu_gen_digits(fp(boundaries.upper, fp_value.e), - boundaries.upper - boundaries.lower, exp, handler); - if (result == digits::error) { - exp += handler.size - cached_exp10 - 1; - fallback_format(value, buf, exp); - return exp; - } - buf.resize(to_unsigned(handler.size)); + fp normalized = normalize(fp(value)); + const auto cached_pow = get_cached_power( + min_exp - (normalized.e + fp::significand_size), cached_exp10); + normalized = normalized * cached_pow; + // Limit precision to the maximum possible number of significant digits in an + // IEEE754 double because we don't need to generate zeros. + const int max_double_digits = 767; + if (precision > max_double_digits) precision = max_double_digits; + fixed_handler handler{buf.data(), 0, precision, -cached_exp10, fixed}; + if (grisu_gen_digits(normalized, 1, exp, handler) == digits::error) { + exp += handler.size - cached_exp10 - 1; + fallback_format(value, handler.precision, specs.binary32, buf, exp); } else { - if (precision > 17) return snprintf_float(value, precision, specs, buf); - fp normalized = normalize(fp(value)); - const auto cached_pow = get_cached_power( - min_exp - (normalized.e + fp::significand_size), cached_exp10); - normalized = normalized * cached_pow; - fixed_handler handler{buf.data(), 0, precision, -cached_exp10, fixed}; - if (grisu_gen_digits(normalized, 1, exp, handler) == digits::error) - return snprintf_float(value, precision, specs, buf); - int num_digits = handler.size; - if (!fixed) { - // Remove trailing zeros. - while (num_digits > 0 && buf[num_digits - 1] == '0') { - --num_digits; - ++exp; - } - } - buf.resize(to_unsigned(num_digits)); + exp += handler.exp10; + buf.try_resize(to_unsigned(handler.size)); } - return exp - cached_exp10; -} + if (!fixed && !specs.showpoint) { + // Remove trailing zeros. + auto num_digits = buf.size(); + while (num_digits > 0 && buf[num_digits - 1] == '0') { + --num_digits; + ++exp; + } + buf.try_resize(num_digits); + } + return exp; +} // namespace detail template int snprintf_float(T value, int precision, float_specs specs, @@ -1185,19 +2535,20 @@ int snprintf_float(T value, int precision, float_specs specs, ? snprintf_ptr(begin, capacity, format, precision, value) : snprintf_ptr(begin, capacity, format, value); if (result < 0) { - buf.reserve(buf.capacity() + 1); // The buffer will grow exponentially. + // The buffer will grow exponentially. + buf.try_reserve(buf.capacity() + 1); continue; } auto size = to_unsigned(result); // Size equal to capacity means that the last character was truncated. if (size >= capacity) { - buf.reserve(size + offset + 1); // Add 1 for the terminating '\0'. + buf.try_reserve(size + offset + 1); // Add 1 for the terminating '\0'. continue; } auto is_digit = [](char c) { return c >= '0' && c <= '9'; }; if (specs.format == float_format::fixed) { if (precision == 0) { - buf.resize(size); + buf.try_resize(size); return 0; } // Find and remove the decimal point. @@ -1207,11 +2558,11 @@ int snprintf_float(T value, int precision, float_specs specs, } while (is_digit(*p)); int fraction_size = static_cast(end - p - 1); std::memmove(p, p + 1, to_unsigned(fraction_size)); - buf.resize(size - 1); + buf.try_resize(size - 1); return -fraction_size; } if (specs.format == float_format::hex) { - buf.resize(size + offset); + buf.try_resize(size + offset); return 0; } // Find and parse the exponent. @@ -1237,7 +2588,7 @@ int snprintf_float(T value, int precision, float_specs specs, fraction_size = static_cast(fraction_end - begin - 1); std::memmove(begin + 1, begin + 2, to_unsigned(fraction_size)); } - buf.resize(to_unsigned(fraction_size) + offset + 1); + buf.try_resize(to_unsigned(fraction_size) + offset + 1); return exp - fraction_size; } } @@ -1259,25 +2610,18 @@ int snprintf_float(T value, int precision, float_specs specs, * occurs, this pointer will be a guess that depends on the particular * error, but it will always advance at least one byte. */ -FMT_FUNC const char* utf8_decode(const char* buf, uint32_t* c, int* e) { - static const char lengths[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 2, 2, 2, 3, 3, 4, 0}; +inline const char* utf8_decode(const char* buf, uint32_t* c, int* e) { static const int masks[] = {0x00, 0x7f, 0x1f, 0x0f, 0x07}; static const uint32_t mins[] = {4194304, 0, 128, 2048, 65536}; static const int shiftc[] = {0, 18, 12, 6, 0}; static const int shifte[] = {0, 6, 4, 2, 0}; - auto s = reinterpret_cast(buf); - int len = lengths[s[0] >> 3]; - - // Compute the pointer to the next character early so that the next - // iteration can start working on the next character. Neither Clang - // nor GCC figure out this reordering on their own. - const char* next = buf + len + !len; + int len = code_point_length(buf); + const char* next = buf + len; // Assume a four-byte character and load four bytes. Unused bits are // shifted out. + auto s = reinterpret_cast(buf); *c = uint32_t(s[0] & masks[len]) << 18; *c |= uint32_t(s[1] & 0x3f) << 12; *c |= uint32_t(s[2] & 0x3f) << 6; @@ -1296,6 +2640,19 @@ FMT_FUNC const char* utf8_decode(const char* buf, uint32_t* c, int* e) { return next; } + +struct stringifier { + template FMT_INLINE std::string operator()(T value) const { + return to_string(value); + } + std::string operator()(basic_format_arg::handle h) const { + memory_buffer buf; + format_parse_context parse_ctx({}); + format_context format_ctx(buffer_appender(buf), {}, {}); + h.format(parse_ctx, format_ctx); + return to_string(buf); + } +}; } // namespace detail template <> struct formatter { @@ -1363,7 +2720,8 @@ FMT_FUNC void format_system_error(detail::buffer& out, int error_code, int result = detail::safe_strerror(error_code, system_message, buf.size()); if (result == 0) { - format_to(std::back_inserter(out), "{}: {}", message, system_message); + format_to(detail::buffer_appender(out), "{}: {}", message, + system_message); return; } if (result != ERANGE) @@ -1384,20 +2742,6 @@ FMT_FUNC void report_system_error(int error_code, report_error(format_system_error, error_code, message); } -struct stringifier { - template FMT_INLINE std::string operator()(T value) const { - return to_string(value); - } - std::string operator()(basic_format_arg::handle h) const { - memory_buffer buf; - detail::buffer& base = buf; - format_parse_context parse_ctx({}); - format_context format_ctx(std::back_inserter(base), {}, {}); - h.format(parse_ctx, format_ctx); - return to_string(buf); - } -}; - FMT_FUNC std::string detail::vformat(string_view format_str, format_args args) { if (format_str.size() == 2 && equal2(format_str.data(), "{}")) { auto arg = args.get(0); @@ -1409,6 +2753,14 @@ FMT_FUNC std::string detail::vformat(string_view format_str, format_args args) { return to_string(buffer); } +#ifdef _WIN32 +namespace detail { +using dword = conditional_t; +extern "C" __declspec(dllimport) int __stdcall WriteConsoleW( // + void*, const void*, dword, dword*, void*); +} // namespace detail +#endif + FMT_FUNC void vprint(std::FILE* f, string_view format_str, format_args args) { memory_buffer buffer; detail::vformat_to(buffer, format_str, @@ -1417,10 +2769,10 @@ FMT_FUNC void vprint(std::FILE* f, string_view format_str, format_args args) { auto fd = _fileno(f); if (_isatty(fd)) { detail::utf8_to_utf16 u16(string_view(buffer.data(), buffer.size())); - auto written = DWORD(); - if (!WriteConsoleW(reinterpret_cast(_get_osfhandle(fd)), - u16.c_str(), static_cast(u16.size()), &written, - nullptr)) { + auto written = detail::dword(); + if (!detail::WriteConsoleW(reinterpret_cast(_get_osfhandle(fd)), + u16.c_str(), static_cast(u16.size()), + &written, nullptr)) { FMT_THROW(format_error("failed to write to console")); } return; @@ -1446,8 +2798,4 @@ FMT_FUNC void vprint(string_view format_str, format_args args) { FMT_END_NAMESPACE -#ifdef _MSC_VER -# pragma warning(pop) -#endif - #endif // FMT_FORMAT_INL_H_ diff --git a/src/fmt/format.h b/src/fmt/format.h index a4911b9fdb..13b8da3028 100644 --- a/src/fmt/format.h +++ b/src/fmt/format.h @@ -69,16 +69,12 @@ # define FMT_NOINLINE #endif -// LAMMPS customizations: -// 1) Intel compilers on MacOS have __clang__ defined -// but fail to recognize [[clang::fallthrough]] -// 2) Intel compilers on Linux identify as GCC compatible -// but fail to recognize [[gnu::fallthrough]] - #if __cplusplus == 201103L || __cplusplus == 201402L -# if defined(__clang__) && !defined(__INTEL_COMPILER) +# if defined(__INTEL_COMPILER) || defined(__PGI) +# define FMT_FALLTHROUGH +# elif defined(__clang__) # define FMT_FALLTHROUGH [[clang::fallthrough]] -# elif FMT_GCC_VERSION >= 700 && !defined(__PGI) && !defined(__INTEL_COMPILER) && \ +# elif FMT_GCC_VERSION >= 700 && \ (!defined(__EDG_VERSION__) || __EDG_VERSION__ >= 520) # define FMT_FALLTHROUGH [[gnu::fallthrough]] # else @@ -145,12 +141,13 @@ FMT_END_NAMESPACE #endif #ifndef FMT_USE_UDL_TEMPLATE -// EDG frontend based compilers (icc, nvcc, etc) and GCC < 6.4 do not properly -// support UDL templates and GCC >= 9 warns about them. +// EDG frontend based compilers (icc, nvcc, PGI, etc) and GCC < 6.4 do not +// properly support UDL templates and GCC >= 9 warns about them. # if FMT_USE_USER_DEFINED_LITERALS && \ (!defined(__EDG_VERSION__) || __EDG_VERSION__ >= 501) && \ ((FMT_GCC_VERSION >= 604 && __cplusplus >= 201402L) || \ - FMT_CLANG_VERSION >= 304) + FMT_CLANG_VERSION >= 304) && \ + !defined(__PGI) && !defined(__NVCC__) # define FMT_USE_UDL_TEMPLATE 1 # else # define FMT_USE_UDL_TEMPLATE 0 @@ -169,6 +166,14 @@ FMT_END_NAMESPACE # define FMT_USE_LONG_DOUBLE 1 #endif +// Defining FMT_REDUCE_INT_INSTANTIATIONS to 1, will reduce the number of +// int_writer template instances to just one by only using the largest integer +// type. This results in a reduction in binary size but will cause a decrease in +// integer formatting performance. +#if !defined(FMT_REDUCE_INT_INSTANTIATIONS) +# define FMT_REDUCE_INT_INSTANTIATIONS 0 +#endif + // __builtin_clz is broken in clang with Microsoft CodeGen: // https://github.com/fmtlib/fmt/issues/519 #if (FMT_GCC_VERSION || FMT_HAS_BUILTIN(__builtin_clz)) && !FMT_MSC_VER @@ -177,56 +182,87 @@ FMT_END_NAMESPACE #if (FMT_GCC_VERSION || FMT_HAS_BUILTIN(__builtin_clzll)) && !FMT_MSC_VER # define FMT_BUILTIN_CLZLL(n) __builtin_clzll(n) #endif +#if (FMT_GCC_VERSION || FMT_HAS_BUILTIN(__builtin_ctz)) +# define FMT_BUILTIN_CTZ(n) __builtin_ctz(n) +#endif +#if (FMT_GCC_VERSION || FMT_HAS_BUILTIN(__builtin_ctzll)) +# define FMT_BUILTIN_CTZLL(n) __builtin_ctzll(n) +#endif + +#if FMT_MSC_VER +# include // _BitScanReverse[64], _BitScanForward[64], _umul128 +#endif // Some compilers masquerade as both MSVC and GCC-likes or otherwise support // __builtin_clz and __builtin_clzll, so only define FMT_BUILTIN_CLZ using the // MSVC intrinsics if the clz and clzll builtins are not available. -#if FMT_MSC_VER && !defined(FMT_BUILTIN_CLZLL) && !defined(_MANAGED) -# include // _BitScanReverse, _BitScanReverse64 - +#if FMT_MSC_VER && !defined(FMT_BUILTIN_CLZLL) && \ + !defined(FMT_BUILTIN_CTZLL) && !defined(_MANAGED) FMT_BEGIN_NAMESPACE namespace detail { // Avoid Clang with Microsoft CodeGen's -Wunknown-pragmas warning. # ifndef __clang__ +# pragma intrinsic(_BitScanForward) # pragma intrinsic(_BitScanReverse) # endif -inline uint32_t clz(uint32_t x) { +# if defined(_WIN64) && !defined(__clang__) +# pragma intrinsic(_BitScanForward64) +# pragma intrinsic(_BitScanReverse64) +# endif + +inline int clz(uint32_t x) { unsigned long r = 0; _BitScanReverse(&r, x); - FMT_ASSERT(x != 0, ""); // Static analysis complains about using uninitialized data // "r", but the only way that can happen is if "x" is 0, // which the callers guarantee to not happen. FMT_SUPPRESS_MSC_WARNING(6102) - return 31 - r; + return 31 ^ static_cast(r); } # define FMT_BUILTIN_CLZ(n) detail::clz(n) -# if defined(_WIN64) && !defined(__clang__) -# pragma intrinsic(_BitScanReverse64) -# endif - -inline uint32_t clzll(uint64_t x) { +inline int clzll(uint64_t x) { unsigned long r = 0; # ifdef _WIN64 _BitScanReverse64(&r, x); # else // Scan the high 32 bits. - if (_BitScanReverse(&r, static_cast(x >> 32))) return 63 - (r + 32); - + if (_BitScanReverse(&r, static_cast(x >> 32))) return 63 ^ (r + 32); // Scan the low 32 bits. _BitScanReverse(&r, static_cast(x)); # endif - FMT_ASSERT(x != 0, ""); - // Static analysis complains about using uninitialized data - // "r", but the only way that can happen is if "x" is 0, - // which the callers guarantee to not happen. - FMT_SUPPRESS_MSC_WARNING(6102) - return 63 - r; + FMT_SUPPRESS_MSC_WARNING(6102) // Suppress a bogus static analysis warning. + return 63 ^ static_cast(r); } # define FMT_BUILTIN_CLZLL(n) detail::clzll(n) + +inline int ctz(uint32_t x) { + unsigned long r = 0; + _BitScanForward(&r, x); + FMT_ASSERT(x != 0, ""); + FMT_SUPPRESS_MSC_WARNING(6102) // Suppress a bogus static analysis warning. + return static_cast(r); +} +# define FMT_BUILTIN_CTZ(n) detail::ctz(n) + +inline int ctzll(uint64_t x) { + unsigned long r = 0; + FMT_ASSERT(x != 0, ""); + FMT_SUPPRESS_MSC_WARNING(6102) // Suppress a bogus static analysis warning. +# ifdef _WIN64 + _BitScanForward64(&r, x); +# else + // Scan the low 32 bits. + if (_BitScanForward(&r, static_cast(x))) return static_cast(r); + // Scan the high 32 bits. + _BitScanForward(&r, static_cast(x >> 32)); + r += 32; +# endif + return static_cast(r); +} +# define FMT_BUILTIN_CTZLL(n) detail::ctzll(n) } // namespace detail FMT_END_NAMESPACE #endif @@ -304,50 +340,11 @@ FMT_INLINE void assume(bool condition) { #endif } -// A workaround for gcc 4.8 to make void_t work in a SFINAE context. -template struct void_t_impl { using type = void; }; - -template -using void_t = typename detail::void_t_impl::type; - // An approximation of iterator_t for pre-C++20 systems. template using iterator_t = decltype(std::begin(std::declval())); template using sentinel_t = decltype(std::end(std::declval())); -// Detect the iterator category of *any* given type in a SFINAE-friendly way. -// Unfortunately, older implementations of std::iterator_traits are not safe -// for use in a SFINAE-context. -template -struct iterator_category : std::false_type {}; - -template struct iterator_category { - using type = std::random_access_iterator_tag; -}; - -template -struct iterator_category> { - using type = typename It::iterator_category; -}; - -// Detect if *any* given type models the OutputIterator concept. -template class is_output_iterator { - // Check for mutability because all iterator categories derived from - // std::input_iterator_tag *may* also meet the requirements of an - // OutputIterator, thereby falling into the category of 'mutable iterators' - // [iterator.requirements.general] clause 4. The compiler reveals this - // property only at the point of *actually dereferencing* the iterator! - template - static decltype(*(std::declval())) test(std::input_iterator_tag); - template static char& test(std::output_iterator_tag); - template static const char& test(...); - - using type = decltype(test(typename iterator_category::type{})); - - public: - enum { value = !std::is_const>::value }; -}; - // A workaround for std::string not having mutable data() until C++17. template inline Char* get_data(std::basic_string& s) { return &s[0]; @@ -380,10 +377,29 @@ reserve(std::back_insert_iterator it, size_t n) { return make_checked(get_data(c) + size, n); } +template +inline buffer_appender reserve(buffer_appender it, size_t n) { + buffer& buf = get_container(it); + buf.try_reserve(buf.size() + n); + return it; +} + template inline Iterator& reserve(Iterator& it, size_t) { return it; } +template +constexpr T* to_pointer(OutputIt, size_t) { + return nullptr; +} +template T* to_pointer(buffer_appender it, size_t n) { + buffer& buf = get_container(it); + auto size = buf.size(); + if (buf.capacity() < size + n) return nullptr; + buf.try_resize(size + n); + return buf.data() + size; +} + template ::value)> inline std::back_insert_iterator base_iterator( std::back_insert_iterator& it, @@ -421,13 +437,17 @@ class counting_iterator { ++count_; return *this; } - counting_iterator operator++(int) { auto it = *this; ++*this; return it; } + friend counting_iterator operator+(counting_iterator it, difference_type n) { + it.count_ += static_cast(n); + return it; + } + value_type operator*() const { return {}; } }; @@ -561,23 +581,38 @@ OutputIt copy_str(InputIt begin, InputIt end, OutputIt it) { [](char c) { return static_cast(c); }); } -#ifndef FMT_USE_GRISU -# define FMT_USE_GRISU 1 -#endif - -template constexpr bool use_grisu() { - return FMT_USE_GRISU && std::numeric_limits::is_iec559 && - sizeof(T) <= sizeof(double); +template +inline counting_iterator copy_str(InputIt begin, InputIt end, + counting_iterator it) { + return it + (end - begin); } +template +using is_fast_float = bool_constant::is_iec559 && + sizeof(T) <= sizeof(double)>; + +#ifndef FMT_USE_FULL_CACHE_DRAGONBOX +# define FMT_USE_FULL_CACHE_DRAGONBOX 0 +#endif + template template void buffer::append(const U* begin, const U* end) { - size_t new_size = size_ + to_unsigned(end - begin); - reserve(new_size); - std::uninitialized_copy(begin, end, - make_checked(ptr_ + size_, capacity_ - size_)); - size_ = new_size; + do { + auto count = to_unsigned(end - begin); + try_reserve(size_ + count); + auto free_cap = capacity_ - size_; + if (free_cap < count) count = free_cap; + std::uninitialized_copy_n(begin, count, make_checked(ptr_ + size_, count)); + size_ += count; + begin += count; + } while (begin != end); +} + +template +void iterator_buffer::flush() { + out_ = std::copy_n(data_, this->limit(this->size()), out_); + this->clear(); } } // namespace detail @@ -616,7 +651,7 @@ enum { inline_buffer_size = 500 }; */ template > -class basic_memory_buffer : public detail::buffer { +class basic_memory_buffer final : public detail::buffer { private: T store_[SIZE]; @@ -630,7 +665,7 @@ class basic_memory_buffer : public detail::buffer { } protected: - void grow(size_t size) FMT_OVERRIDE; + void grow(size_t size) final FMT_OVERRIDE; public: using value_type = T; @@ -640,7 +675,7 @@ class basic_memory_buffer : public detail::buffer { : alloc_(alloc) { this->set(store_, SIZE); } - ~basic_memory_buffer() FMT_OVERRIDE { deallocate(); } + ~basic_memory_buffer() { deallocate(); } private: // Move data from other to this buffer. @@ -684,6 +719,22 @@ class basic_memory_buffer : public detail::buffer { // Returns a copy of the allocator associated with this buffer. Allocator get_allocator() const { return alloc_; } + + /** + Resizes the buffer to contain *count* elements. If T is a POD type new + elements may not be initialized. + */ + void resize(size_t count) { this->try_resize(count); } + + /** Increases the buffer capacity to *new_capacity*. */ + void reserve(size_t new_capacity) { this->try_reserve(new_capacity); } + + // Directly append data into the buffer + using detail::buffer::append; + template + void append(const ContiguousRange& range) { + append(range.data(), range.data() + range.size()); + } }; template @@ -754,19 +805,81 @@ FMT_CONSTEXPR bool is_supported_floating_point(T) { } // Smallest of uint32_t, uint64_t, uint128_t that is large enough to -// represent all values of T. +// represent all values of an integral type T. template using uint32_or_64_or_128_t = - conditional_t() <= 32, uint32_t, + conditional_t() <= 32 && !FMT_REDUCE_INT_INSTANTIATIONS, + uint32_t, conditional_t() <= 64, uint64_t, uint128_t>>; +// 128-bit integer type used internally +struct FMT_EXTERN_TEMPLATE_API uint128_wrapper { + uint128_wrapper() = default; + +#if FMT_USE_INT128 + uint128_t internal_; + + uint128_wrapper(uint64_t high, uint64_t low) FMT_NOEXCEPT + : internal_{static_cast(low) | + (static_cast(high) << 64)} {} + + uint128_wrapper(uint128_t u) : internal_{u} {} + + uint64_t high() const FMT_NOEXCEPT { return uint64_t(internal_ >> 64); } + uint64_t low() const FMT_NOEXCEPT { return uint64_t(internal_); } + + uint128_wrapper& operator+=(uint64_t n) FMT_NOEXCEPT { + internal_ += n; + return *this; + } +#else + uint64_t high_; + uint64_t low_; + + uint128_wrapper(uint64_t high, uint64_t low) FMT_NOEXCEPT : high_{high}, + low_{low} {} + + uint64_t high() const FMT_NOEXCEPT { return high_; } + uint64_t low() const FMT_NOEXCEPT { return low_; } + + uint128_wrapper& operator+=(uint64_t n) FMT_NOEXCEPT { +# if defined(_MSC_VER) && defined(_M_X64) + unsigned char carry = _addcarry_u64(0, low_, n, &low_); + _addcarry_u64(carry, high_, 0, &high_); + return *this; +# else + uint64_t sum = low_ + n; + high_ += (sum < low_ ? 1 : 0); + low_ = sum; + return *this; +# endif + } +#endif +}; + +// Table entry type for divisibility test used internally +template struct FMT_EXTERN_TEMPLATE_API divtest_table_entry { + T mod_inv; + T max_quotient; +}; + // Static data is placed in this class template for the header-only config. template struct FMT_EXTERN_TEMPLATE_API basic_data { static const uint64_t powers_of_10_64[]; - static const uint32_t zero_or_powers_of_10_32[]; - static const uint64_t zero_or_powers_of_10_64[]; - static const uint64_t pow10_significands[]; - static const int16_t pow10_exponents[]; + static const uint32_t zero_or_powers_of_10_32_new[]; + static const uint64_t zero_or_powers_of_10_64_new[]; + static const uint64_t grisu_pow10_significands[]; + static const int16_t grisu_pow10_exponents[]; + static const divtest_table_entry divtest_table_for_pow5_32[]; + static const divtest_table_entry divtest_table_for_pow5_64[]; + static const uint64_t dragonbox_pow10_significands_64[]; + static const uint128_wrapper dragonbox_pow10_significands_128[]; + // log10(2) = 0x0.4d104d427de7fbcc... + static const uint64_t log10_2_significand = 0x4d104d427de7fbcc; +#if !FMT_USE_FULL_CACHE_DRAGONBOX + static const uint64_t powers_of_5_64[]; + static const uint32_t dragonbox_pow10_recovery_errors[]; +#endif // GCC generates slightly better code for pairs than chars. using digit_pair = char[2]; static const digit_pair digits[]; @@ -778,8 +891,23 @@ template struct FMT_EXTERN_TEMPLATE_API basic_data { static const char signs[]; static const char left_padding_shifts[5]; static const char right_padding_shifts[5]; + + // DEPRECATED! These are for ABI compatibility. + static const uint32_t zero_or_powers_of_10_32[]; + static const uint64_t zero_or_powers_of_10_64[]; }; +// Maps bsr(n) to ceil(log10(pow(2, bsr(n) + 1) - 1)). +// This is a function instead of an array to workaround a bug in GCC10 (#1810). +FMT_INLINE uint16_t bsr2log10(int bsr) { + static constexpr uint16_t data[] = { + 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, + 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, + 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, 15, + 15, 16, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 19, 20}; + return data[bsr]; +} + #ifndef FMT_EXPORTED FMT_EXTERN template struct basic_data; #endif @@ -791,10 +919,9 @@ struct data : basic_data<> {}; // Returns the number of decimal digits in n. Leading zeros are not counted // except for n == 0 in which case count_digits returns 1. inline int count_digits(uint64_t n) { - // Based on http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog10 - // and the benchmark https://github.com/localvoid/cxx-benchmark-count-digits. - int t = (64 - FMT_BUILTIN_CLZLL(n | 1)) * 1233 >> 12; - return t - (n < data::zero_or_powers_of_10_64[t]) + 1; + // https://github.com/fmtlib/format-benchmark/blob/master/digits10 + auto t = bsr2log10(FMT_BUILTIN_CLZLL(n | 1) ^ 63); + return t - (n < data::zero_or_powers_of_10_64_new[t]); } #else // Fallback version of count_digits used when __builtin_clz is not available. @@ -844,15 +971,24 @@ template <> int count_digits<4>(detail::fallback_uintptr n); #if FMT_GCC_VERSION || FMT_CLANG_VERSION # define FMT_ALWAYS_INLINE inline __attribute__((always_inline)) +#elif FMT_MSC_VER +# define FMT_ALWAYS_INLINE __forceinline #else -# define FMT_ALWAYS_INLINE +# define FMT_ALWAYS_INLINE inline +#endif + +// To suppress unnecessary security cookie checks +#if FMT_MSC_VER && !FMT_CLANG_VERSION +# define FMT_SAFEBUFFERS __declspec(safebuffers) +#else +# define FMT_SAFEBUFFERS #endif #ifdef FMT_BUILTIN_CLZ // Optional version of count_digits for better performance on 32-bit platforms. inline int count_digits(uint32_t n) { - int t = (32 - FMT_BUILTIN_CLZ(n | 1)) * 1233 >> 12; - return t - (n < data::zero_or_powers_of_10_32[t]) + 1; + auto t = bsr2log10(FMT_BUILTIN_CLZ(n | 1) ^ 31); + return t - (n < data::zero_or_powers_of_10_32_new[t]); } #endif @@ -899,7 +1035,7 @@ template void copy2(Char* dst, const char* src) { *dst++ = static_cast(*src++); *dst = static_cast(*src); } -inline void copy2(char* dst, const char* src) { memcpy(dst, src, 2); } +FMT_INLINE void copy2(char* dst, const char* src) { memcpy(dst, src, 2); } template struct format_decimal_result { Iterator begin; @@ -935,11 +1071,10 @@ inline format_decimal_result format_decimal(Char* out, UInt value, template >::value)> inline format_decimal_result format_decimal(Iterator out, UInt value, - int num_digits) { - // Buffer should be large enough to hold all digits (<= digits10 + 1). - enum { max_size = digits10() + 1 }; - Char buffer[2 * max_size]; - auto end = format_decimal(buffer, value, num_digits).end; + int size) { + // Buffer is large enough to hold all digits (digits10 + 1). + Char buffer[digits10() + 1]; + auto end = format_decimal(buffer, value, size).end; return {out, detail::copy_str(buffer, end, out)}; } @@ -981,6 +1116,10 @@ Char* format_uint(Char* buffer, detail::fallback_uintptr n, int num_digits, template inline It format_uint(It out, UInt value, int num_digits, bool upper = false) { + if (auto ptr = to_pointer(out, to_unsigned(num_digits))) { + format_uint(ptr, value, num_digits, upper); + return out; + } // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1). char buffer[num_bits() / BASE_BITS + 1]; format_uint(buffer, value, num_digits, upper); @@ -1072,6 +1211,78 @@ template struct basic_format_specs { using format_specs = basic_format_specs; namespace detail { +namespace dragonbox { + +// Type-specific information that Dragonbox uses. +template struct float_info; + +template <> struct float_info { + using carrier_uint = uint32_t; + static const int significand_bits = 23; + static const int exponent_bits = 8; + static const int min_exponent = -126; + static const int max_exponent = 127; + static const int exponent_bias = -127; + static const int decimal_digits = 9; + static const int kappa = 1; + static const int big_divisor = 100; + static const int small_divisor = 10; + static const int min_k = -31; + static const int max_k = 46; + static const int cache_bits = 64; + static const int divisibility_check_by_5_threshold = 39; + static const int case_fc_pm_half_lower_threshold = -1; + static const int case_fc_pm_half_upper_threshold = 6; + static const int case_fc_lower_threshold = -2; + static const int case_fc_upper_threshold = 6; + static const int case_shorter_interval_left_endpoint_lower_threshold = 2; + static const int case_shorter_interval_left_endpoint_upper_threshold = 3; + static const int shorter_interval_tie_lower_threshold = -35; + static const int shorter_interval_tie_upper_threshold = -35; + static const int max_trailing_zeros = 7; +}; + +template <> struct float_info { + using carrier_uint = uint64_t; + static const int significand_bits = 52; + static const int exponent_bits = 11; + static const int min_exponent = -1022; + static const int max_exponent = 1023; + static const int exponent_bias = -1023; + static const int decimal_digits = 17; + static const int kappa = 2; + static const int big_divisor = 1000; + static const int small_divisor = 100; + static const int min_k = -292; + static const int max_k = 326; + static const int cache_bits = 128; + static const int divisibility_check_by_5_threshold = 86; + static const int case_fc_pm_half_lower_threshold = -2; + static const int case_fc_pm_half_upper_threshold = 9; + static const int case_fc_lower_threshold = -4; + static const int case_fc_upper_threshold = 9; + static const int case_shorter_interval_left_endpoint_lower_threshold = 2; + static const int case_shorter_interval_left_endpoint_upper_threshold = 3; + static const int shorter_interval_tie_lower_threshold = -77; + static const int shorter_interval_tie_upper_threshold = -77; + static const int max_trailing_zeros = 16; +}; + +template struct decimal_fp { + using significand_type = typename float_info::carrier_uint; + significand_type significand; + int exponent; +}; + +template decimal_fp to_decimal(T x) FMT_NOEXCEPT; +} // namespace dragonbox + +template +constexpr typename dragonbox::float_info::carrier_uint exponent_mask() { + using uint = typename dragonbox::float_info::carrier_uint; + return ((uint(1) << dragonbox::float_info::exponent_bits) - 1) + << dragonbox::float_info::significand_bits; +} // A floating-point presentation format. enum class float_format : unsigned char { @@ -1113,113 +1324,6 @@ template It write_exponent(int exp, It it) { return it; } -template class float_writer { - private: - // The number is given as v = digits_ * pow(10, exp_). - const char* digits_; - int num_digits_; - int exp_; - size_t size_; - float_specs specs_; - Char decimal_point_; - - template It prettify(It it) const { - // pow(10, full_exp - 1) <= v <= pow(10, full_exp). - int full_exp = num_digits_ + exp_; - if (specs_.format == float_format::exp) { - // Insert a decimal point after the first digit and add an exponent. - *it++ = static_cast(*digits_); - int num_zeros = specs_.precision - num_digits_; - if (num_digits_ > 1 || specs_.showpoint) *it++ = decimal_point_; - it = copy_str(digits_ + 1, digits_ + num_digits_, it); - if (num_zeros > 0 && specs_.showpoint) - it = std::fill_n(it, num_zeros, static_cast('0')); - *it++ = static_cast(specs_.upper ? 'E' : 'e'); - return write_exponent(full_exp - 1, it); - } - if (num_digits_ <= full_exp) { - // 1234e7 -> 12340000000[.0+] - it = copy_str(digits_, digits_ + num_digits_, it); - it = std::fill_n(it, full_exp - num_digits_, static_cast('0')); - if (specs_.showpoint || specs_.precision < 0) { - *it++ = decimal_point_; - int num_zeros = specs_.precision - full_exp; - if (num_zeros <= 0) { - if (specs_.format != float_format::fixed) - *it++ = static_cast('0'); - return it; - } -#ifdef FMT_FUZZ - if (num_zeros > 5000) - throw std::runtime_error("fuzz mode - avoiding excessive cpu use"); -#endif - it = std::fill_n(it, num_zeros, static_cast('0')); - } - } else if (full_exp > 0) { - // 1234e-2 -> 12.34[0+] - it = copy_str(digits_, digits_ + full_exp, it); - if (!specs_.showpoint) { - // Remove trailing zeros. - int num_digits = num_digits_; - while (num_digits > full_exp && digits_[num_digits - 1] == '0') - --num_digits; - if (num_digits != full_exp) *it++ = decimal_point_; - return copy_str(digits_ + full_exp, digits_ + num_digits, it); - } - *it++ = decimal_point_; - it = copy_str(digits_ + full_exp, digits_ + num_digits_, it); - if (specs_.precision > num_digits_) { - // Add trailing zeros. - int num_zeros = specs_.precision - num_digits_; - it = std::fill_n(it, num_zeros, static_cast('0')); - } - } else { - // 1234e-6 -> 0.001234 - *it++ = static_cast('0'); - int num_zeros = -full_exp; - int num_digits = num_digits_; - if (num_digits == 0 && specs_.precision >= 0 && - specs_.precision < num_zeros) { - num_zeros = specs_.precision; - } - // Remove trailing zeros. - if (!specs_.showpoint) - while (num_digits > 0 && digits_[num_digits - 1] == '0') --num_digits; - if (num_zeros != 0 || num_digits != 0 || specs_.showpoint) { - *it++ = decimal_point_; - it = std::fill_n(it, num_zeros, static_cast('0')); - it = copy_str(digits_, digits_ + num_digits, it); - } - } - return it; - } - - public: - float_writer(const char* digits, int num_digits, int exp, float_specs specs, - Char decimal_point) - : digits_(digits), - num_digits_(num_digits), - exp_(exp), - specs_(specs), - decimal_point_(decimal_point) { - int full_exp = num_digits + exp - 1; - int precision = specs.precision > 0 ? specs.precision : 16; - if (specs_.format == float_format::general && - !(full_exp >= -4 && full_exp < precision)) { - specs_.format = float_format::exp; - } - size_ = prettify(counting_iterator()).count(); - size_ += specs.sign ? 1 : 0; - } - - size_t size() const { return size_; } - - template It operator()(It it) const { - if (specs_.sign) *it++ = static_cast(data::signs[specs_.sign]); - return prettify(it); - } -}; - template int format_float(T value, int precision, float_specs specs, buffer& buf); @@ -1398,7 +1502,7 @@ template inline OutputIt write_padded(OutputIt out, const basic_format_specs& specs, size_t size, - size_t width, const F& f) { + size_t width, F&& f) { static_assert(align == align::left || align == align::right, ""); unsigned spec_width = to_unsigned(specs.width); size_t padding = spec_width > width ? spec_width - width : 0; @@ -1416,7 +1520,7 @@ template inline OutputIt write_padded(OutputIt out, const basic_format_specs& specs, size_t size, - const F& f) { + F&& f) { return write_padded(out, specs, size, size, f); } @@ -1583,15 +1687,16 @@ template struct int_writer { char digits[40]; format_decimal(digits, abs_value, num_digits); basic_memory_buffer buffer; - size += prefix_size; - buffer.resize(size); + size += static_cast(prefix_size); + const auto usize = to_unsigned(size); + buffer.resize(usize); basic_string_view s(&sep, sep_size); // Index of a decimal digit with the least significant digit having index 0. int digit_index = 0; group = groups.cbegin(); - auto p = buffer.data() + size; - for (int i = num_digits - 1; i >= 0; --i) { - *--p = static_cast(digits[i]); + auto p = buffer.data() + size - 1; + for (int i = num_digits - 1; i > 0; --i) { + *p-- = static_cast(digits[i]); if (*group <= 0 || ++digit_index % *group != 0 || *group == max_value()) continue; @@ -1599,16 +1704,16 @@ template struct int_writer { digit_index = 0; ++group; } - p -= s.size(); std::uninitialized_copy(s.data(), s.data() + s.size(), make_checked(p, s.size())); + p -= s.size(); } - if (prefix_size != 0) p[-1] = static_cast('-'); - using iterator = remove_reference_t; + *p-- = static_cast(*digits); + if (prefix_size != 0) *p = static_cast('-'); auto data = buffer.data(); - out = write_padded(out, specs, size, size, [=](iterator it) { - return copy_str(data, data + size, it); - }); + out = write_padded( + out, specs, usize, usize, + [=](iterator it) { return copy_str(data, data + size, it); }); } void on_chr() { *out++ = static_cast(abs_value); } @@ -1634,6 +1739,168 @@ OutputIt write_nonfinite(OutputIt out, bool isinf, }); } +// A decimal floating-point number significand * pow(10, exp). +struct big_decimal_fp { + const char* significand; + int significand_size; + int exponent; +}; + +inline int get_significand_size(const big_decimal_fp& fp) { + return fp.significand_size; +} +template +inline int get_significand_size(const dragonbox::decimal_fp& fp) { + return count_digits(fp.significand); +} + +template +inline OutputIt write_significand(OutputIt out, const char* significand, + int& significand_size) { + return copy_str(significand, significand + significand_size, out); +} +template +inline OutputIt write_significand(OutputIt out, UInt significand, + int significand_size) { + return format_decimal(out, significand, significand_size).end; +} + +template ::value)> +inline Char* write_significand(Char* out, UInt significand, + int significand_size, int integral_size, + Char decimal_point) { + if (!decimal_point) + return format_decimal(out, significand, significand_size).end; + auto end = format_decimal(out + 1, significand, significand_size).end; + if (integral_size == 1) + out[0] = out[1]; + else + std::copy_n(out + 1, integral_size, out); + out[integral_size] = decimal_point; + return end; +} + +template >::value)> +inline OutputIt write_significand(OutputIt out, UInt significand, + int significand_size, int integral_size, + Char decimal_point) { + // Buffer is large enough to hold digits (digits10 + 1) and a decimal point. + Char buffer[digits10() + 2]; + auto end = write_significand(buffer, significand, significand_size, + integral_size, decimal_point); + return detail::copy_str(buffer, end, out); +} + +template +inline OutputIt write_significand(OutputIt out, const char* significand, + int significand_size, int integral_size, + Char decimal_point) { + out = detail::copy_str(significand, significand + integral_size, out); + if (!decimal_point) return out; + *out++ = decimal_point; + return detail::copy_str(significand + integral_size, + significand + significand_size, out); +} + +template +OutputIt write_float(OutputIt out, const DecimalFP& fp, + const basic_format_specs& specs, float_specs fspecs, + Char decimal_point) { + auto significand = fp.significand; + int significand_size = get_significand_size(fp); + static const Char zero = static_cast('0'); + auto sign = fspecs.sign; + size_t size = to_unsigned(significand_size) + (sign ? 1 : 0); + using iterator = remove_reference_t; + + int output_exp = fp.exponent + significand_size - 1; + auto use_exp_format = [=]() { + if (fspecs.format == float_format::exp) return true; + if (fspecs.format != float_format::general) return false; + // Use the fixed notation if the exponent is in [exp_lower, exp_upper), + // e.g. 0.0001 instead of 1e-04. Otherwise use the exponent notation. + const int exp_lower = -4, exp_upper = 16; + return output_exp < exp_lower || + output_exp >= (fspecs.precision > 0 ? fspecs.precision : exp_upper); + }; + if (use_exp_format()) { + int num_zeros = 0; + if (fspecs.showpoint) { + num_zeros = (std::max)(fspecs.precision - significand_size, 0); + size += to_unsigned(num_zeros); + } else if (significand_size == 1) { + decimal_point = Char(); + } + auto abs_output_exp = output_exp >= 0 ? output_exp : -output_exp; + int exp_digits = 2; + if (abs_output_exp >= 100) exp_digits = abs_output_exp >= 1000 ? 4 : 3; + + size += to_unsigned((decimal_point ? 1 : 0) + 2 + exp_digits); + char exp_char = fspecs.upper ? 'E' : 'e'; + auto write = [=](iterator it) { + if (sign) *it++ = static_cast(data::signs[sign]); + // Insert a decimal point after the first digit and add an exponent. + it = write_significand(it, significand, significand_size, 1, + decimal_point); + if (num_zeros > 0) it = std::fill_n(it, num_zeros, zero); + *it++ = static_cast(exp_char); + return write_exponent(output_exp, it); + }; + return specs.width > 0 ? write_padded(out, specs, size, write) + : base_iterator(out, write(reserve(out, size))); + } + + int exp = fp.exponent + significand_size; + if (fp.exponent >= 0) { + // 1234e5 -> 123400000[.0+] + size += to_unsigned(fp.exponent); + int num_zeros = fspecs.precision - exp; +#ifdef FMT_FUZZ + if (num_zeros > 5000) + throw std::runtime_error("fuzz mode - avoiding excessive cpu use"); +#endif + if (fspecs.showpoint) { + if (num_zeros <= 0 && fspecs.format != float_format::fixed) num_zeros = 1; + if (num_zeros > 0) size += to_unsigned(num_zeros); + } + return write_padded(out, specs, size, [&](iterator it) { + if (sign) *it++ = static_cast(data::signs[sign]); + it = write_significand(it, significand, significand_size); + it = std::fill_n(it, fp.exponent, zero); + if (!fspecs.showpoint) return it; + *it++ = decimal_point; + return num_zeros > 0 ? std::fill_n(it, num_zeros, zero) : it; + }); + } else if (exp > 0) { + // 1234e-2 -> 12.34[0+] + int num_zeros = fspecs.showpoint ? fspecs.precision - significand_size : 0; + size += 1 + to_unsigned(num_zeros > 0 ? num_zeros : 0); + return write_padded(out, specs, size, [&](iterator it) { + if (sign) *it++ = static_cast(data::signs[sign]); + it = write_significand(it, significand, significand_size, exp, + decimal_point); + return num_zeros > 0 ? std::fill_n(it, num_zeros, zero) : it; + }); + } + // 1234e-6 -> 0.001234 + int num_zeros = -exp; + if (significand_size == 0 && fspecs.precision >= 0 && + fspecs.precision < num_zeros) { + num_zeros = fspecs.precision; + } + size += 2 + to_unsigned(num_zeros); + return write_padded(out, specs, size, [&](iterator it) { + if (sign) *it++ = static_cast(data::signs[sign]); + *it++ = zero; + if (num_zeros == 0 && significand_size == 0 && !fspecs.showpoint) return it; + *it++ = decimal_point; + it = std::fill_n(it, num_zeros, zero); + return write_significand(it, significand, significand_size); + }); +} + template ::value)> OutputIt write(OutputIt out, T value, basic_format_specs specs, @@ -1673,39 +1940,45 @@ OutputIt write(OutputIt out, T value, basic_format_specs specs, ++precision; } if (const_check(std::is_same())) fspecs.binary32 = true; - fspecs.use_grisu = use_grisu(); + fspecs.use_grisu = is_fast_float(); int exp = format_float(promote_float(value), precision, fspecs, buffer); fspecs.precision = precision; Char point = fspecs.locale ? decimal_point(loc) : static_cast('.'); - float_writer w(buffer.data(), static_cast(buffer.size()), exp, - fspecs, point); - return write_padded(out, specs, w.size(), w); + auto fp = big_decimal_fp{buffer.data(), static_cast(buffer.size()), exp}; + return write_float(out, fp, specs, fspecs, point); } template ::value)> + FMT_ENABLE_IF(is_fast_float::value)> OutputIt write(OutputIt out, T value) { if (const_check(!is_supported_floating_point(value))) return out; + + using floaty = conditional_t::value, double, T>; + using uint = typename dragonbox::float_info::carrier_uint; + auto bits = bit_cast(value); + auto fspecs = float_specs(); - if (std::signbit(value)) { // value < 0 is false for NaN so use signbit. + auto sign_bit = bits & (uint(1) << (num_bits() - 1)); + if (sign_bit != 0) { fspecs.sign = sign::minus; value = -value; } - auto specs = basic_format_specs(); - if (!std::isfinite(value)) + static const auto specs = basic_format_specs(); + uint mask = exponent_mask(); + if ((bits & mask) == mask) return write_nonfinite(out, std::isinf(value), specs, fspecs); - memory_buffer buffer; - int precision = -1; - if (const_check(std::is_same())) fspecs.binary32 = true; - fspecs.use_grisu = use_grisu(); - int exp = format_float(promote_float(value), precision, fspecs, buffer); - fspecs.precision = precision; - float_writer w(buffer.data(), static_cast(buffer.size()), exp, - fspecs, static_cast('.')); - return base_iterator(out, w(reserve(out, w.size()))); + auto dec = dragonbox::to_decimal(static_cast(value)); + return write_float(out, dec, specs, fspecs, static_cast('.')); +} + +template ::value && + !is_fast_float::value)> +inline OutputIt write(OutputIt out, T value) { + return write(out, value, basic_format_specs()); } template @@ -1758,6 +2031,13 @@ OutputIt write(OutputIt out, basic_string_view value) { return base_iterator(out, it); } +template +buffer_appender write(buffer_appender out, + basic_string_view value) { + get_container(out).append(value.begin(), value.end()); + return out; +} + template ::value && !std::is_same::value && @@ -1768,7 +2048,13 @@ OutputIt write(OutputIt out, T value) { // Don't do -abs_value since it trips unsigned-integer-overflow sanitizer. if (negative) abs_value = ~abs_value + 1; int num_digits = count_digits(abs_value); - auto it = reserve(out, (negative ? 1 : 0) + static_cast(num_digits)); + auto size = (negative ? 1 : 0) + static_cast(num_digits); + auto it = reserve(out, size); + if (auto ptr = to_pointer(it, size)) { + if (negative) *ptr++ = static_cast('-'); + format_decimal(ptr, abs_value, num_digits); + return out; + } if (negative) *it++ = static_cast('-'); it = format_decimal(it, abs_value, num_digits).end; return base_iterator(out, it); @@ -1807,8 +2093,13 @@ auto write(OutputIt out, const T& value) -> typename std::enable_if< mapped_type_constant>::value == type::custom_type, OutputIt>::type { - basic_format_context ctx(out, {}, {}); - return formatter().format(value, ctx); + using context_type = basic_format_context; + using formatter_type = + conditional_t::value, + typename context_type::template formatter_type, + fallback_formatter>; + context_type ctx(out, {}, {}); + return formatter_type().format(value, ctx); } // An argument visitor that formats the argument and writes it via the output @@ -2014,6 +2305,48 @@ class arg_formatter_base { } }; +/** The default argument formatter. */ +template +class arg_formatter : public arg_formatter_base { + private: + using char_type = Char; + using base = arg_formatter_base; + using context_type = basic_format_context; + + context_type& ctx_; + basic_format_parse_context* parse_ctx_; + const Char* ptr_; + + public: + using iterator = typename base::iterator; + using format_specs = typename base::format_specs; + + /** + \rst + Constructs an argument formatter object. + *ctx* is a reference to the formatting context, + *specs* contains format specifier information for standard argument types. + \endrst + */ + explicit arg_formatter( + context_type& ctx, + basic_format_parse_context* parse_ctx = nullptr, + format_specs* specs = nullptr, const Char* ptr = nullptr) + : base(ctx.out(), specs, ctx.locale()), + ctx_(ctx), + parse_ctx_(parse_ctx), + ptr_(ptr) {} + + using base::operator(); + + /** Formats an argument of a user-defined type. */ + iterator operator()(typename basic_format_arg::handle handle) { + if (ptr_) advance_to(*parse_ctx_, ptr_); + handle.format(*parse_ctx_, ctx_); + return ctx_.out(); + } +}; + template FMT_CONSTEXPR bool is_name_start(Char c) { return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || '_' == c; } @@ -2053,12 +2386,11 @@ template class custom_formatter { Context& ctx) : parse_ctx_(parse_ctx), ctx_(ctx) {} - bool operator()(typename basic_format_arg::handle h) const { + void operator()(typename basic_format_arg::handle h) const { h.format(parse_ctx_, ctx_); - return true; } - template bool operator()(T) const { return false; } + template void operator()(T) const {} }; template @@ -2440,12 +2772,30 @@ template struct precision_adapter { }; template -FMT_CONSTEXPR const Char* next_code_point(const Char* begin, const Char* end) { - if (const_check(sizeof(Char) != 1) || (*begin & 0x80) == 0) return begin + 1; - do { - ++begin; - } while (begin != end && (*begin & 0xc0) == 0x80); - return begin; +FMT_CONSTEXPR int code_point_length(const Char* begin) { + if (const_check(sizeof(Char) != 1)) return 1; + constexpr char lengths[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 3, 4, 0}; + int len = lengths[static_cast(*begin) >> 3]; + + // Compute the pointer to the next character early so that the next + // iteration can start working on the next character. Neither Clang + // nor GCC figure out this reordering on their own. + return len + !len; +} + +template constexpr bool is_ascii_letter(Char c) { + return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); +} + +// Converts a character to ASCII. Returns a number > 127 on conversion failure. +template ::value)> +constexpr Char to_ascii(Char value) { + return value; +} +template ::value)> +constexpr typename std::underlying_type::type to_ascii(Char value) { + return value; } // Parses fill and alignment. @@ -2454,10 +2804,10 @@ FMT_CONSTEXPR const Char* parse_align(const Char* begin, const Char* end, Handler&& handler) { FMT_ASSERT(begin != end, ""); auto align = align::none; - auto p = next_code_point(begin, end); - if (p == end) p = begin; + auto p = begin + code_point_length(begin); + if (p >= end) p = begin; for (;;) { - switch (static_cast(*p)) { + switch (to_ascii(*p)) { case '<': align = align::left; break; @@ -2536,13 +2886,13 @@ FMT_CONSTEXPR const Char* parse_precision(const Char* begin, const Char* end, template FMT_CONSTEXPR const Char* parse_format_specs(const Char* begin, const Char* end, SpecHandler&& handler) { - if (begin == end || *begin == '}') return begin; + if (begin == end) return begin; begin = parse_align(begin, end, handler); if (begin == end) return begin; // Parse sign. - switch (static_cast(*begin)) { + switch (to_ascii(*begin)) { case '+': handler.on_plus(); ++begin; @@ -2619,7 +2969,7 @@ FMT_CONSTEXPR const Char* parse_replacement_field(const Char* begin, Handler&& handler) { ++begin; if (begin == end) return handler.on_error("invalid format string"), end; - if (static_cast(*begin) == '}') { + if (*begin == '}') { handler.on_replacement_field(handler.on_arg_id(), begin); } else if (*begin == '{') { handler.on_text(begin, begin + 1); @@ -2664,17 +3014,17 @@ FMT_CONSTEXPR_DECL FMT_INLINE void parse_format_string( return; } struct writer { - FMT_CONSTEXPR void operator()(const Char* begin, const Char* end) { - if (begin == end) return; + FMT_CONSTEXPR void operator()(const Char* pbegin, const Char* pend) { + if (pbegin == pend) return; for (;;) { const Char* p = nullptr; - if (!find(begin, end, '}', p)) - return handler_.on_text(begin, end); + if (!find(pbegin, pend, '}', p)) + return handler_.on_text(pbegin, pend); ++p; - if (p == end || *p != '}') + if (p == pend || *p != '}') return handler_.on_error("unmatched '}' in format string"); - handler_.on_text(begin, p); - begin = p + 1; + handler_.on_text(pbegin, p); + pbegin = p + 1; } } Handler& handler_; @@ -2705,13 +3055,12 @@ FMT_CONSTEXPR const typename ParseContext::char_type* parse_format_specs( return f.parse(ctx); } -template +template struct format_handler : detail::error_handler { basic_format_parse_context parse_context; Context context; - format_handler(typename ArgFormatter::iterator out, - basic_string_view str, + format_handler(OutputIt out, basic_string_view str, basic_format_args format_args, detail::locale_ref loc) : parse_context(str), context(out, format_args, loc) {} @@ -2734,26 +3083,33 @@ struct format_handler : detail::error_handler { FMT_INLINE void on_replacement_field(int id, const Char*) { auto arg = get_arg(context, id); context.advance_to(visit_format_arg( - default_arg_formatter{ - context.out(), context.args(), context.locale()}, + default_arg_formatter{context.out(), context.args(), + context.locale()}, arg)); } const Char* on_format_specs(int id, const Char* begin, const Char* end) { - advance_to(parse_context, begin); auto arg = get_arg(context, id); - custom_formatter f(parse_context, context); - if (visit_format_arg(f, arg)) return parse_context.begin(); - basic_format_specs specs; - using parse_context_t = basic_format_parse_context; - specs_checker> handler( - specs_handler(specs, parse_context, context), - arg.type()); - begin = parse_format_specs(begin, end, handler); - if (begin == end || *begin != '}') on_error("missing '}' in format string"); - advance_to(parse_context, begin); - context.advance_to( - visit_format_arg(ArgFormatter(context, &parse_context, &specs), arg)); + if (arg.type() == type::custom_type) { + advance_to(parse_context, begin); + visit_format_arg(custom_formatter(parse_context, context), arg); + return parse_context.begin(); + } + auto specs = basic_format_specs(); + if (begin + 1 < end && begin[1] == '}' && is_ascii_letter(*begin)) { + specs.type = static_cast(*begin++); + } else { + using parse_context_t = basic_format_parse_context; + specs_checker> handler( + specs_handler(specs, parse_context, + context), + arg.type()); + begin = parse_format_specs(begin, end, handler); + if (begin == end || *begin != '}') + on_error("missing '}' in format string"); + } + context.advance_to(visit_format_arg( + arg_formatter(context, &parse_context, &specs), arg)); return begin; } }; @@ -2905,53 +3261,11 @@ FMT_API void format_error_code(buffer& out, int error_code, FMT_API void report_error(format_func func, int error_code, string_view message) FMT_NOEXCEPT; - -/** The default argument formatter. */ -template -class arg_formatter : public arg_formatter_base { - private: - using char_type = Char; - using base = arg_formatter_base; - using context_type = basic_format_context; - - context_type& ctx_; - basic_format_parse_context* parse_ctx_; - const Char* ptr_; - - public: - using iterator = typename base::iterator; - using format_specs = typename base::format_specs; - - /** - \rst - Constructs an argument formatter object. - *ctx* is a reference to the formatting context, - *specs* contains format specifier information for standard argument types. - \endrst - */ - explicit arg_formatter( - context_type& ctx, - basic_format_parse_context* parse_ctx = nullptr, - format_specs* specs = nullptr, const Char* ptr = nullptr) - : base(ctx.out(), specs, ctx.locale()), - ctx_(ctx), - parse_ctx_(parse_ctx), - ptr_(ptr) {} - - using base::operator(); - - /** Formats an argument of a user-defined type. */ - iterator operator()(typename basic_format_arg::handle handle) { - if (ptr_) advance_to(*parse_ctx_, ptr_); - handle.format(*parse_ctx_, ctx_); - return ctx_.out(); - } -}; } // namespace detail template using arg_formatter FMT_DEPRECATED_ALIAS = - detail::arg_formatter; + detail::arg_formatter; /** An error returned by an operating system or a language runtime, @@ -3214,8 +3528,10 @@ struct formatter : formatter, Char> { // using variant = std::variant; // template <> // struct formatter: dynamic_formatter<> { -// void format(buffer &buf, const variant &v, context &ctx) { -// visit([&](const auto &val) { format(buf, val, ctx); }, v); +// auto format(const variant& v, format_context& ctx) { +// return visit([&](const auto& val) { +// return dynamic_formatter<>::format(val, ctx); +// }, v); // } // }; template class dynamic_formatter { @@ -3283,28 +3599,15 @@ FMT_CONSTEXPR void advance_to( ctx.advance_to(ctx.begin() + (p - &*ctx.begin())); } -/** Formats arguments and writes the output to the range. */ -template -typename Context::iterator vformat_to( - typename ArgFormatter::iterator out, basic_string_view format_str, - basic_format_args args, - detail::locale_ref loc = detail::locale_ref()) { - if (format_str.size() == 2 && detail::equal2(format_str.data(), "{}")) { - auto arg = args.get(0); - if (!arg) detail::error_handler().on_error("argument not found"); - using iterator = typename ArgFormatter::iterator; - return visit_format_arg( - detail::default_arg_formatter{out, args, loc}, arg); - } - detail::format_handler h(out, format_str, args, - loc); - detail::parse_format_string(format_str, h); - return h.context.out(); -} +/** + \rst + Converts ``p`` to ``const void*`` for pointer formatting. -// Casts ``p`` to ``const void*`` for pointer formatting. -// Example: -// auto s = format("{}", ptr(p)); + **Example**:: + + auto s = fmt::format("{}", fmt::ptr(p)); + \endrst + */ template inline const void* ptr(const T* p) { return p; } template inline const void* ptr(const std::unique_ptr& p) { return p.get(); @@ -3323,6 +3626,10 @@ class bytes { }; template <> struct formatter { + private: + detail::dynamic_format_specs specs_; + + public: template FMT_CONSTEXPR auto parse(ParseContext& ctx) -> decltype(ctx.begin()) { using handler_type = detail::dynamic_specs_handler; @@ -3341,9 +3648,6 @@ template <> struct formatter { specs_.precision, specs_.precision_ref, ctx); return detail::write_bytes(ctx.out(), b.data_, specs_); } - - private: - detail::dynamic_format_specs specs_; }; template @@ -3408,15 +3712,14 @@ arg_join join(It begin, Sentinel end, wstring_view sep) { \endrst */ template -arg_join, detail::sentinel_t, char> -join(const Range& range, string_view sep) { +arg_join, detail::sentinel_t, char> join( + Range&& range, string_view sep) { return join(std::begin(range), std::end(range), sep); } template -arg_join, detail::sentinel_t, - wchar_t> -join(const Range& range, wstring_view sep) { +arg_join, detail::sentinel_t, wchar_t> join( + Range&& range, wstring_view sep) { return join(std::begin(range), std::end(range), sep); } @@ -3443,7 +3746,7 @@ inline std::string to_string(T value) { // The buffer should be large enough to store the number including the sign or // "false" for bool. constexpr int max_size = detail::digits10() + 2; - char buffer[max_size > 5 ? max_size : 5]; + char buffer[max_size > 5 ? static_cast(max_size) : 5]; char* begin = buffer; return std::string(begin, detail::write(begin, value)); } @@ -3463,18 +3766,30 @@ std::basic_string to_string(const basic_memory_buffer& buf) { } template -typename buffer_context::iterator detail::vformat_to( +void detail::vformat_to( detail::buffer& buf, basic_string_view format_str, - basic_format_args>> args) { - using af = arg_formatter::iterator, Char>; - return vformat_to(std::back_inserter(buf), to_string_view(format_str), - args); + basic_format_args>> args, + detail::locale_ref loc) { + using iterator = typename buffer_context::iterator; + auto out = buffer_appender(buf); + if (format_str.size() == 2 && equal2(format_str.data(), "{}")) { + auto arg = args.get(0); + if (!arg) error_handler().on_error("argument not found"); + visit_format_arg(default_arg_formatter{out, args, loc}, + arg); + return; + } + format_handler> h(out, format_str, args, + loc); + parse_format_string(format_str, h); } #ifndef FMT_HEADER_ONLY -extern template format_context::iterator detail::vformat_to( - detail::buffer&, string_view, basic_format_args); +extern template void detail::vformat_to(detail::buffer&, string_view, + basic_format_args, + detail::locale_ref); namespace detail { + extern template FMT_API std::string grouping_impl(locale_ref loc); extern template FMT_API std::string grouping_impl(locale_ref loc); extern template FMT_API char thousands_sep_impl(locale_ref loc); @@ -3500,7 +3815,7 @@ extern template int snprintf_float(long double value, template , FMT_ENABLE_IF(detail::is_string::value)> -inline typename FMT_BUFFER_CONTEXT(Char)::iterator vformat_to( +inline void vformat_to( detail::buffer& buf, const S& format_str, basic_format_args)> args) { return detail::vformat_to(buf, to_string_view(format_str), args); @@ -3510,10 +3825,9 @@ template ::value, char_t>> inline typename buffer_context::iterator format_to( basic_memory_buffer& buf, const S& format_str, Args&&... args) { - detail::check_format_string(format_str); - using context = buffer_context; - return detail::vformat_to(buf, to_string_view(format_str), - make_format_args(args...)); + const auto& vargs = fmt::make_args_checked(format_str, args...); + detail::vformat_to(buf, to_string_view(format_str), vargs); + return detail::buffer_appender(buf); } template @@ -3522,88 +3836,17 @@ using format_context_t = basic_format_context; template using format_args_t = basic_format_args>; -template < - typename S, typename OutputIt, typename... Args, - FMT_ENABLE_IF(detail::is_output_iterator::value && - !detail::is_contiguous_back_insert_iterator::value)> -inline OutputIt vformat_to( - OutputIt out, const S& format_str, - format_args_t, char_t> args) { - using af = detail::arg_formatter>; - return vformat_to(out, to_string_view(format_str), args); -} - -/** - \rst - Formats arguments, writes the result to the output iterator ``out`` and returns - the iterator past the end of the output range. - - **Example**:: - - std::vector out; - fmt::format_to(std::back_inserter(out), "{}", 42); - \endrst - */ -template ::value && - !detail::is_contiguous_back_insert_iterator::value && - detail::is_string::value)> -inline OutputIt format_to(OutputIt out, const S& format_str, Args&&... args) { - detail::check_format_string(format_str); - using context = format_context_t>; - return vformat_to(out, to_string_view(format_str), - make_format_args(args...)); -} - -template struct format_to_n_result { - /** Iterator past the end of the output range. */ - OutputIt out; - /** Total (not truncated) output size. */ - size_t size; -}; +template +using format_to_n_context FMT_DEPRECATED_ALIAS = buffer_context; template -using format_to_n_context = - format_context_t, Char>; - -template -using format_to_n_args = basic_format_args>; +using format_to_n_args FMT_DEPRECATED_ALIAS = + basic_format_args>; template -inline format_arg_store, Args...> +FMT_DEPRECATED format_arg_store, Args...> make_format_to_n_args(const Args&... args) { - return format_arg_store, Args...>( - args...); -} - -template ::value)> -inline format_to_n_result vformat_to_n( - OutputIt out, size_t n, basic_string_view format_str, - format_to_n_args, type_identity_t> args) { - auto it = vformat_to(detail::truncating_iterator(out, n), - format_str, args); - return {it.base(), it.count()}; -} - -/** - \rst - Formats arguments, writes up to ``n`` characters of the result to the output - iterator ``out`` and returns the total output size and the iterator past the - end of the output range. - \endrst - */ -template ::value&& - detail::is_output_iterator::value)> -inline format_to_n_result format_to_n(OutputIt out, size_t n, - const S& format_str, - const Args&... args) { - detail::check_format_string(format_str); - using context = format_to_n_context>; - return vformat_to_n(out, n, to_string_view(format_str), - make_format_args(args...)); + return format_arg_store, Args...>(args...); } template ::value), int>> @@ -3615,15 +3858,6 @@ std::basic_string detail::vformat( return to_string(buffer); } -/** - Returns the number of characters in the output of - ``format(format_str, args...)``. - */ -template -inline size_t formatted_size(string_view format_str, const Args&... args) { - return format_to(detail::counting_iterator(), format_str, args...).count(); -} - template ::value)> void vprint(std::FILE* f, basic_string_view format_str, wformat_args args) { @@ -3648,8 +3882,7 @@ template class udl_formatter { template std::basic_string operator()(Args&&... args) const { static FMT_CONSTEXPR_DECL Char s[] = {CHARS..., '\0'}; - check_format_string...>(FMT_STRING(s)); - return format(s, std::forward(args)...); + return format(FMT_STRING(s), std::forward(args)...); } }; # else diff --git a/src/fmt/locale.h b/src/fmt/locale.h index 988d15cdf8..7301bf92a2 100644 --- a/src/fmt/locale.h +++ b/src/fmt/locale.h @@ -15,22 +15,12 @@ FMT_BEGIN_NAMESPACE namespace detail { -template -typename buffer_context::iterator vformat_to( - const std::locale& loc, buffer& buf, - basic_string_view format_str, - basic_format_args>> args) { - using af = arg_formatter::iterator, Char>; - return vformat_to(std::back_inserter(buf), to_string_view(format_str), - args, detail::locale_ref(loc)); -} - template std::basic_string vformat( const std::locale& loc, basic_string_view format_str, basic_format_args>> args) { basic_memory_buffer buffer; - detail::vformat_to(loc, buffer, format_str, args); + detail::vformat_to(buffer, format_str, args, detail::locale_ref(loc)); return fmt::to_string(buffer); } } // namespace detail @@ -45,32 +35,28 @@ inline std::basic_string vformat( template > inline std::basic_string format(const std::locale& loc, const S& format_str, Args&&... args) { - return detail::vformat( - loc, to_string_view(format_str), - detail::make_args_checked(format_str, args...)); + return detail::vformat(loc, to_string_view(format_str), + fmt::make_args_checked(format_str, args...)); } template ::value, char_t>> + typename Char = char_t, + FMT_ENABLE_IF(detail::is_output_iterator::value)> inline OutputIt vformat_to( OutputIt out, const std::locale& loc, const S& format_str, - format_args_t, Char> args) { - using af = detail::arg_formatter; - return vformat_to(out, to_string_view(format_str), args, - detail::locale_ref(loc)); + basic_format_args>> args) { + decltype(detail::get_buffer(out)) buf(detail::get_buffer_init(out)); + vformat_to(buf, to_string_view(format_str), args, detail::locale_ref(loc)); + return detail::get_iterator(buf); } template ::value&& - detail::is_string::value)> -inline OutputIt format_to(OutputIt out, const std::locale& loc, - const S& format_str, Args&&... args) { - detail::check_format_string(format_str); - using context = format_context_t>; - format_arg_store as{args...}; - return vformat_to(out, loc, to_string_view(format_str), - basic_format_args(as)); + bool enable = detail::is_output_iterator>::value> +inline auto format_to(OutputIt out, const std::locale& loc, + const S& format_str, Args&&... args) -> + typename std::enable_if::type { + const auto& vargs = fmt::make_args_checked(format_str, args...); + return vformat_to(out, loc, to_string_view(format_str), vargs); } FMT_END_NAMESPACE diff --git a/src/fmt/os.h b/src/fmt/os.h index a9517ef800..881510065a 100644 --- a/src/fmt/os.h +++ b/src/fmt/os.h @@ -29,7 +29,8 @@ #if FMT_HAS_INCLUDE("winapifamily.h") # include #endif -#if FMT_HAS_INCLUDE("fcntl.h") && \ +#if (FMT_HAS_INCLUDE() || defined(__APPLE__) || \ + defined(__linux__)) && \ (!defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP)) # include // for O_RDONLY # define FMT_USE_FCNTL 1 @@ -278,7 +279,8 @@ class file { RDONLY = FMT_POSIX(O_RDONLY), // Open for reading only. WRONLY = FMT_POSIX(O_WRONLY), // Open for writing only. RDWR = FMT_POSIX(O_RDWR), // Open for reading and writing. - CREATE = FMT_POSIX(O_CREAT) // Create if the file doesn't exist. + CREATE = FMT_POSIX(O_CREAT), // Create if the file doesn't exist. + APPEND = FMT_POSIX(O_APPEND) // Open in append mode. }; // Constructs a file object which doesn't represent any file. @@ -343,36 +345,69 @@ class file { // Returns the memory page size. long getpagesize(); -class direct_buffered_file; +namespace detail { -template -void print(direct_buffered_file& f, const S& format_str, - const Args&... args); +struct buffer_size { + size_t value = 0; + buffer_size operator=(size_t val) const { + auto bs = buffer_size(); + bs.value = val; + return bs; + } +}; -// A buffered file with a direct buffer access and no synchronization. -class direct_buffered_file { +struct ostream_params { + int oflag = file::WRONLY | file::CREATE; + size_t buffer_size = BUFSIZ > 32768 ? BUFSIZ : 32768; + + ostream_params() {} + + template + ostream_params(T... params, int oflag) : ostream_params(params...) { + this->oflag = oflag; + } + + template + ostream_params(T... params, detail::buffer_size bs) + : ostream_params(params...) { + this->buffer_size = bs.value; + } +}; +} // namespace detail + +static constexpr detail::buffer_size buffer_size; + +// A fast output stream which is not thread-safe. +class ostream final : private detail::buffer { private: file file_; - enum { buffer_size = 4096 }; - char buffer_[buffer_size]; - int pos_; - void flush() { - if (pos_ == 0) return; - file_.write(buffer_, pos_); - pos_ = 0; + if (size() == 0) return; + file_.write(data(), size()); + clear(); } - int free_capacity() const { return buffer_size - pos_; } + void grow(size_t) final; + + ostream(cstring_view path, const detail::ostream_params& params) + : file_(path, params.oflag) { + set(new char[params.buffer_size], params.buffer_size); + } public: - direct_buffered_file(cstring_view path, int oflag) - : file_(path, oflag), pos_(0) {} - - ~direct_buffered_file() { - flush(); + ostream(ostream&& other) + : detail::buffer(other.data(), other.size(), other.capacity()), + file_(std::move(other.file_)) { + other.set(nullptr, 0); } + ~ostream() { + flush(); + delete[] data(); + } + + template + friend ostream output_file(cstring_view path, T... params); void close() { flush(); @@ -380,25 +415,20 @@ class direct_buffered_file { } template - friend void print(direct_buffered_file& f, const S& format_str, - const Args&... args) { - // We could avoid double buffering. - auto buf = fmt::memory_buffer(); - fmt::format_to(std::back_inserter(buf), format_str, args...); - auto remaining_pos = 0; - auto remaining_size = buf.size(); - while (remaining_size > detail::to_unsigned(f.free_capacity())) { - auto size = f.free_capacity(); - memcpy(f.buffer_ + f.pos_, buf.data() + remaining_pos, size); - f.pos_ += size; - f.flush(); - remaining_pos += size; - remaining_size -= size; - } - memcpy(f.buffer_ + f.pos_, buf.data() + remaining_pos, remaining_size); - f.pos_ += static_cast(remaining_size); + void print(const S& format_str, const Args&... args) { + format_to(detail::buffer_appender(*this), format_str, args...); } }; + +/** + Opens a file for writing. Supported parameters passed in `params`: + * ````: Output flags (``file::WRONLY | file::CREATE`` by default) + * ``buffer_size=``: Output buffer size + */ +template +inline ostream output_file(cstring_view path, T... params) { + return {path, detail::ostream_params(params...)}; +} #endif // FMT_USE_FCNTL #ifdef FMT_LOCALE diff --git a/src/fmt/ostream.h b/src/fmt/ostream.h index c16107f79b..29c58ec13b 100644 --- a/src/fmt/ostream.h +++ b/src/fmt/ostream.h @@ -49,17 +49,27 @@ template class formatbuf : public std::basic_streambuf { } }; +struct converter { + template ::value)> converter(T); +}; + template struct test_stream : std::basic_ostream { private: - // Hide all operator<< from std::basic_ostream. - void_t<> operator<<(null<>); - void_t<> operator<<(const Char*); - - template ::value && - !std::is_enum::value)> - void_t<> operator<<(T); + void_t<> operator<<(converter); }; +// Hide insertion operators for built-in types. +template +void_t<> operator<<(std::basic_ostream&, Char); +template +void_t<> operator<<(std::basic_ostream&, char); +template +void_t<> operator<<(std::basic_ostream&, char); +template +void_t<> operator<<(std::basic_ostream&, signed char); +template +void_t<> operator<<(std::basic_ostream&, unsigned char); + // Checks if T has a user-defined operator<< (e.g. not a member of // std::ostream). template class is_streamable { @@ -103,7 +113,7 @@ void format_value(buffer& buf, const T& value, #endif output << value; output.exceptions(std::ios_base::failbit | std::ios_base::badbit); - buf.resize(buf.size()); + buf.try_resize(buf.size()); } // Formats an object of type T that has an overloaded ostream operator<<. @@ -160,7 +170,7 @@ template ::value, char_t>> void print(std::basic_ostream& os, const S& format_str, Args&&... args) { vprint(os, to_string_view(format_str), - detail::make_args_checked(format_str, args...)); + fmt::make_args_checked(format_str, args...)); } FMT_END_NAMESPACE diff --git a/src/fmt/printf.h b/src/fmt/printf.h index d4440ed168..8c28ac2327 100644 --- a/src/fmt/printf.h +++ b/src/fmt/printf.h @@ -181,7 +181,7 @@ template class printf_width_handler { template void vprintf(buffer& buf, basic_string_view format, basic_format_args args) { - Context(std::back_inserter(buf), format, args).format(); + Context(buffer_appender(buf), format, args).format(); } } // namespace detail @@ -598,7 +598,7 @@ OutputIt basic_printf_context::format() { template using basic_printf_context_t = - basic_printf_context>, Char>; + basic_printf_context, Char>; using printf_context = basic_printf_context_t; using wprintf_context = basic_printf_context_t; diff --git a/src/fmt/ranges.h b/src/fmt/ranges.h index c48f1727d5..b603d637d7 100644 --- a/src/fmt/ranges.h +++ b/src/fmt/ranges.h @@ -157,6 +157,9 @@ template void for_each(Tuple&& tup, F&& f) { for_each(indexes, std::forward(tup), std::forward(f)); } +template +using value_type = remove_cvref_t().begin())>; + template ::type>::value)> FMT_CONSTEXPR const char* format_str_quoted(bool add_space, const Arg&) { @@ -182,7 +185,6 @@ FMT_CONSTEXPR const char* format_str_quoted(bool add_space, const char) { FMT_CONSTEXPR const wchar_t* format_str_quoted(bool add_space, const wchar_t) { return add_space ? L" '{}'" : L"'{}'"; } - } // namespace detail template struct is_tuple_like { @@ -246,9 +248,15 @@ template struct is_range { !std::is_constructible, T>::value; }; -template -struct formatter::value>> { +template +struct formatter< + T, Char, + enable_if_t::value +// Workaround a bug in MSVC 2017 and earlier. +#if !FMT_MSC_VER || FMT_MSC_VER >= 1927 + && has_formatter, format_context>::value +#endif + >> { formatting_range formatting; template @@ -257,8 +265,7 @@ struct formatter - typename FormatContext::iterator format(const RangeT& values, - FormatContext& ctx) { + typename FormatContext::iterator format(const T& values, FormatContext& ctx) { auto out = detail::copy(formatting.prefix, ctx.out()); size_t i = 0; auto it = values.begin(); diff --git a/src/fmtlib_format.cpp b/src/fmtlib_format.cpp index a64a1f3893..bca87b033b 100644 --- a/src/fmtlib_format.cpp +++ b/src/fmtlib_format.cpp @@ -23,6 +23,36 @@ int format_float(char* buf, std::size_t size, const char* format, int precision, return precision < 0 ? snprintf_ptr(buf, size, format, value) : snprintf_ptr(buf, size, format, precision, value); } + +template dragonbox::decimal_fp dragonbox::to_decimal(float x) + FMT_NOEXCEPT; +template dragonbox::decimal_fp dragonbox::to_decimal(double x) + FMT_NOEXCEPT; + +// DEPRECATED! This function exists for ABI compatibility. +template +typename basic_format_context>, + Char>::iterator +vformat_to(buffer& buf, basic_string_view format_str, + basic_format_args>>, + type_identity_t>> + args) { + using iterator = std::back_insert_iterator>; + using context = basic_format_context< + std::back_insert_iterator>>, + type_identity_t>; + auto out = iterator(buf); + format_handler h(out, format_str, args, {}); + parse_format_string(format_str, h); + return out; +} +template basic_format_context>, + char>::iterator +vformat_to(buffer&, string_view, + basic_format_args>>, + type_identity_t>>); } // namespace detail template struct FMT_INSTANTIATION_DEF_API detail::basic_data; @@ -44,9 +74,9 @@ template FMT_API char detail::decimal_point_impl(locale_ref); template FMT_API void detail::buffer::append(const char*, const char*); -template FMT_API FMT_BUFFER_CONTEXT(char)::iterator detail::vformat_to( +template FMT_API void detail::vformat_to( detail::buffer&, string_view, - basic_format_args); + basic_format_args, detail::locale_ref); template FMT_API int detail::snprintf_float(double, int, detail::float_specs, detail::buffer&); diff --git a/src/fmtlib_os.cpp b/src/fmtlib_os.cpp index 386119db17..a07e782441 100644 --- a/src/fmtlib_os.cpp +++ b/src/fmtlib_os.cpp @@ -62,7 +62,7 @@ using RWResult = int; inline unsigned convert_rwcount(std::size_t count) { return count <= UINT_MAX ? static_cast(count) : UINT_MAX; } -#else +#elif FMT_USE_FCNTL // Return type of read and write functions. using RWResult = ssize_t; @@ -124,7 +124,8 @@ void detail::format_windows_error(detail::buffer& out, int error_code, if (result != 0) { utf16_to_utf8 utf8_message; if (utf8_message.convert(system_message) == ERROR_SUCCESS) { - format_to(std::back_inserter(out), "{}: {}", message, utf8_message); + format_to(buffer_appender(out), "{}: {}", message, + utf8_message); return; } break; @@ -288,12 +289,12 @@ void file::pipe(file& read_end, file& write_end) { } buffered_file file::fdopen(const char* mode) { - // Don't retry as fdopen doesn't return EINTR. - #if defined(__MINGW32__) && defined(_POSIX_) +// Don't retry as fdopen doesn't return EINTR. +# if defined(__MINGW32__) && defined(_POSIX_) FILE* f = ::fdopen(fd_, mode); - #else +# else FILE* f = FMT_POSIX_CALL(fdopen(fd_, mode)); - #endif +# endif if (!f) FMT_THROW( system_error(errno, "cannot associate stream with file descriptor")); @@ -313,5 +314,9 @@ long getpagesize() { return size; # endif } + +void ostream::grow(size_t) { + if (this->size() == this->capacity()) flush(); +} #endif // FMT_USE_FCNTL FMT_END_NAMESPACE diff --git a/src/force.h b/src/force.h index a2cc37f0b8..b087b8e187 100644 --- a/src/force.h +++ b/src/force.h @@ -26,6 +26,26 @@ namespace LAMMPS_NS { class KSpace; class Pair; +enum { + ENERGY_NONE = 0x00, + ENERGY_GLOBAL = 0x01, + ENERGY_ATOM = 0x02 +}; + +enum { + VIRIAL_NONE = 0x00, + VIRIAL_PAIR = 0x01, + VIRIAL_FDOTR = 0x02, + VIRIAL_ATOM = 0x04, + VIRIAL_CENTROID = 0x08 +}; + +enum { + CENTROID_SAME = 0, + CENTROID_AVAIL = 1, + CENTROID_NOTAVAIL = 2 +}; + class Force : protected Pointers { public: double boltz; // Boltzmann constant (eng/degree-K) diff --git a/src/improper.cpp b/src/improper.cpp index faf9e2fa52..6e0f829733 100644 --- a/src/improper.cpp +++ b/src/improper.cpp @@ -37,6 +37,7 @@ Improper::Improper(LAMMPS *lmp) : Pointers(lmp) vatom = nullptr; cvatom = nullptr; setflag = nullptr; + centroidstressflag = CENTROID_AVAIL; execution_space = Host; datamask_read = ALL_MASK; @@ -72,7 +73,19 @@ void Improper::init() /* ---------------------------------------------------------------------- setup for energy, virial computation - see integrate::ev_set() for values of eflag (0-3) and vflag (0-6) + see integrate::ev_set() for bitwise settings of eflag/vflag + set the following flags, values are otherwise set to 0: + evflag != 0 if any bits of eflag or vflag are set + eflag_global != 0 if ENERGY_GLOBAL bit of eflag set + eflag_atom != 0 if ENERGY_ATOM bit of eflag set + eflag_either != 0 if eflag_global or eflag_atom is set + vflag_global != 0 if VIRIAL_PAIR or VIRIAL_FDOTR bit of vflag set + vflag_atom != 0 if VIRIAL_ATOM bit of vflag set + vflag_atom != 0 if VIRIAL_CENTROID bit of vflag set + and centroidstressflag != CENTROID_AVAIL + cvflag_atom != 0 if VIRIAL_CENTROID bit of vflag set + and centroidstressflag = CENTROID_AVAIL + vflag_either != 0 if any of vflag_global, vflag_atom, cvflag_atom is set ------------------------------------------------------------------------- */ void Improper::ev_setup(int eflag, int vflag, int alloc) @@ -82,13 +95,17 @@ void Improper::ev_setup(int eflag, int vflag, int alloc) evflag = 1; eflag_either = eflag; - eflag_global = eflag % 2; - eflag_atom = eflag / 2; + eflag_global = eflag & ENERGY_GLOBAL; + eflag_atom = eflag & ENERGY_ATOM; - vflag_global = vflag % 4; - vflag_atom = vflag & 4; - cvflag_atom = vflag & 8; - vflag_either = vflag_global || vflag_atom; + vflag_global = vflag & (VIRIAL_PAIR | VIRIAL_FDOTR); + vflag_atom = vflag & VIRIAL_ATOM; + if (vflag & VIRIAL_CENTROID && centroidstressflag != CENTROID_AVAIL) + vflag_atom = 1; + cvflag_atom = 0; + if (vflag & VIRIAL_CENTROID && centroidstressflag == CENTROID_AVAIL) + cvflag_atom = 1; + vflag_either = vflag_global || vflag_atom || cvflag_atom; // reallocate per-atom arrays if necessary diff --git a/src/improper.h b/src/improper.h index f3bed2607c..9e73be931c 100644 --- a/src/improper.h +++ b/src/improper.h @@ -30,6 +30,11 @@ class Improper : protected Pointers { double *eatom,**vatom; // accumulated per-atom energy/virial double **cvatom; // accumulated per-atom centroid virial + int centroidstressflag; // centroid stress compared to two-body stress + // CENTROID_SAME = same as two-body stress + // CENTROID_AVAIL = different and implemented + // CENTROID_NOTAVAIL = different, not yet implemented + // KOKKOS host/device flag and data masks ExecutionSpace execution_space; diff --git a/src/info.cpp b/src/info.cpp index 6deac6b84f..63ea4dccce 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -109,7 +109,7 @@ static const char *varstyles[] = { "index", "loop", "world", "universe", "uloop", "string", "getenv", "file", "atomfile", "format", "equal", "atom", "vector", "python", "internal", "(unknown)"}; -static const char *mapstyles[] = { "none", "array", "hash" }; +static const char *mapstyles[] = { "none", "array", "hash", "yes" }; static const char *commstyles[] = { "brick", "tiled" }; static const char *commlayout[] = { "uniform", "nonuniform", "irregular" }; @@ -348,18 +348,20 @@ void Info::command(int narg, char **arg) commstyles[comm->style], commlayout[comm->layout], comm->ghost_velocity ? "yes" : "no"); - if (comm->mode == 0) - fmt::print(out,"Communication mode = single\n" - "Communication cutoff = {}\n", - comm->get_comm_cutoff()); + if (domain->box_exist) { + if (comm->mode == 0) + fmt::print(out,"Communication mode = single\n" + "Communication cutoff = {}\n", + comm->get_comm_cutoff()); - if (comm->mode == 1) { - fputs("Communication mode = multi\n",out); - double cut; - for (int i=1; i <= atom->ntypes && neighbor->cuttype; ++i) { - cut = neighbor->cuttype[i]; - if (comm->cutusermulti) cut = MAX(cut,comm->cutusermulti[i]); - fmt::print(out,"Communication cutoff for type {} = {:.8}\n", i, cut); + if (comm->mode == 1) { + fputs("Communication mode = multi\n",out); + double cut; + for (int i=1; i <= atom->ntypes && neighbor->cuttype; ++i) { + cut = neighbor->cuttype[i]; + if (comm->cutusermulti) cut = MAX(cut,comm->cutusermulti[i]); + fmt::print(out,"Communication cutoff for type {} = {:.8}\n", i, cut); + } } } fmt::print(out,"Nprocs = {}, Nthreads = {}\n",comm->nprocs,comm->nthreads); diff --git a/src/input.cpp b/src/input.cpp index c907a16c9d..abdc3775ce 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -189,8 +189,15 @@ void Input::file() // if line ends in continuation char '&', concatenate next line if (me == 0) { + m = 0; while (1) { + + if (infile == nullptr) { + n = 0; + break; + } + if (maxline-m < 2) reallocate(line,maxline,0); // end of file reached, so break diff --git a/src/integrate.cpp b/src/integrate.cpp index 7fc74c5db2..5c700527a1 100644 --- a/src/integrate.cpp +++ b/src/integrate.cpp @@ -23,7 +23,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -Integrate::Integrate(LAMMPS *lmp, int /*narg*/, char **/*arg*/) : Pointers(lmp) +Integrate::Integrate(LAMMPS *lmp, int /*narg*/, char ** /*arg*/) : Pointers(lmp) { elist_global = elist_atom = nullptr; vlist_global = vlist_atom = cvlist_atom = nullptr; @@ -111,21 +111,18 @@ void Integrate::ev_setup() /* ---------------------------------------------------------------------- set eflag,vflag for current iteration + based on computes that need energy/virial info on this timestep invoke matchstep() on all timestep-dependent computes to clear their arrays - eflag/vflag based on computes that need info on this ntimestep - eflag = 0 = no energy computation - eflag = 1 = global energy only - eflag = 2 = per-atom energy only - eflag = 3 = both global and per-atom energy - vflag = 0 = no virial computation (pressure) - vflag = 1 = global virial with pair portion via sum of pairwise interactions - vflag = 2 = global virial with pair portion via F dot r including ghosts - vflag = 4 = per-atom virial only - vflag = 5 or 6 = both global and per-atom virial - vflag = 8 = per-atom centroid virial only - vflag = 9 or 10 = both global and per-atom centroid virial - vflag = 12 = both per-atom virial and per-atom centroid virial - vflag = 13 or 15 = global, per-atom virial and per-atom centroid virial + eflag: set any or no bits + ENERGY_GLOBAL bit for global energy + ENERGY_ATOM bit for per-atom energy + vflag: set any or no bits, but PAIR/FDOTR bits cannot both be set + VIRIAL_PAIR bit for global virial as sum of pairwise terms + VIRIAL_FDOTR bit for global virial via F dot r + VIRIAL_ATOM bit for per-atom virial + VIRIAL_CENTROID bit for per-atom centroid virial + all force components (pair,bond,angle,...,kspace) use eflag/vflag + in their ev_setup() method to set local energy/virial flags ------------------------------------------------------------------------- */ void Integrate::ev_set(bigint ntimestep) @@ -136,13 +133,13 @@ void Integrate::ev_set(bigint ntimestep) int eflag_global = 0; for (i = 0; i < nelist_global; i++) if (elist_global[i]->matchstep(ntimestep)) flag = 1; - if (flag) eflag_global = 1; + if (flag) eflag_global = ENERGY_GLOBAL; flag = 0; int eflag_atom = 0; for (i = 0; i < nelist_atom; i++) if (elist_atom[i]->matchstep(ntimestep)) flag = 1; - if (flag) eflag_atom = 2; + if (flag) eflag_atom = ENERGY_ATOM; if (eflag_global) update->eflag_global = ntimestep; if (eflag_atom) update->eflag_atom = ntimestep; @@ -158,13 +155,13 @@ void Integrate::ev_set(bigint ntimestep) int vflag_atom = 0; for (i = 0; i < nvlist_atom; i++) if (vlist_atom[i]->matchstep(ntimestep)) flag = 1; - if (flag) vflag_atom = 4; + if (flag) vflag_atom = VIRIAL_ATOM; flag = 0; int cvflag_atom = 0; for (i = 0; i < ncvlist_atom; i++) if (cvlist_atom[i]->matchstep(ntimestep)) flag = 1; - if (flag) cvflag_atom = 8; + if (flag) cvflag_atom = VIRIAL_CENTROID; if (vflag_global) update->vflag_global = ntimestep; if (vflag_atom || cvflag_atom) update->vflag_atom = ntimestep; diff --git a/src/kspace.cpp b/src/kspace.cpp index 16668c137a..594fd1ba8d 100644 --- a/src/kspace.cpp +++ b/src/kspace.cpp @@ -88,7 +88,8 @@ KSpace::KSpace(LAMMPS *lmp) : Pointers(lmp) maxeatom = maxvatom = 0; eatom = nullptr; vatom = nullptr; - + centroidstressflag = CENTROID_NOTAVAIL; + execution_space = Host; datamask_read = ALL_MASK; datamask_modify = ALL_MASK; @@ -214,7 +215,17 @@ void KSpace::pair_check() /* ---------------------------------------------------------------------- setup for energy, virial computation - see integrate::ev_set() for values of eflag (0-3) and vflag (0-6) + see integrate::ev_set() for bitwise settings of eflag/vflag + set the following flags, values are otherwise set to 0: + evflag != 0 if any bits of eflag or vflag are set + eflag_global != 0 if ENERGY_GLOBAL bit of eflag set + eflag_atom != 0 if ENERGY_ATOM bit of eflag set + eflag_either != 0 if eflag_global or eflag_atom is set + vflag_global != 0 if VIRIAL_PAIR or VIRIAL_FDOTR bit of vflag set + vflag_atom != 0 if VIRIAL_ATOM bit of vflag set + no current support for centroid stress + vflag_either != 0 if vflag_global or vflag_atom is set + evflag_atom != 0 if eflag_atom or vflag_atom is set ------------------------------------------------------------------------- */ void KSpace::ev_setup(int eflag, int vflag, int alloc) @@ -224,12 +235,12 @@ void KSpace::ev_setup(int eflag, int vflag, int alloc) evflag = 1; eflag_either = eflag; - eflag_global = eflag % 2; - eflag_atom = eflag / 2; + eflag_global = eflag & ENERGY_GLOBAL; + eflag_atom = eflag & ENERGY_ATOM; vflag_either = vflag; - vflag_global = vflag % 4; - vflag_atom = vflag / 4; + vflag_global = vflag & (VIRIAL_PAIR | VIRIAL_FDOTR); + vflag_atom = vflag & VIRIAL_ATOM; if (eflag_atom || vflag_atom) evflag_atom = 1; else evflag_atom = 0; diff --git a/src/kspace.h b/src/kspace.h index 110a790dfe..978daeace1 100644 --- a/src/kspace.h +++ b/src/kspace.h @@ -80,6 +80,11 @@ class KSpace : protected Pointers { int group_group_enable; // 1 if style supports group/group calculation + int centroidstressflag; // centroid stress compared to two-body stress + // CENTROID_SAME = same as two-body stress + // CENTROID_AVAIL = different and implemented + // CENTROID_NOTAVAIL = different, not yet implemented + // KOKKOS host/device flag and data masks ExecutionSpace execution_space; diff --git a/src/lammps.cpp b/src/lammps.cpp index ff0df97105..102d2f18cf 100644 --- a/src/lammps.cpp +++ b/src/lammps.cpp @@ -456,6 +456,7 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) : if (universe->me == 0) { if (inflag == 0) infile = stdin; + else if (strcmp(arg[inflag], "none") == 0) infile = stdin; else infile = fopen(arg[inflag],"r"); if (infile == nullptr) error->one(FLERR,fmt::format("Cannot open input script {}: {}", @@ -530,10 +531,12 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) : str, utils::getsyserror())); } - infile = fopen(arg[inflag],"r"); - if (infile == nullptr) - error->one(FLERR,fmt::format("Cannot open input script {}: {}", - arg[inflag], utils::getsyserror())); + if (strcmp(arg[inflag], "none") != 0) { + infile = fopen(arg[inflag],"r"); + if (infile == nullptr) + error->one(FLERR,fmt::format("Cannot open input script {}: {}", + arg[inflag], utils::getsyserror())); + } } // screen and logfile messages for universe and world @@ -1103,7 +1106,7 @@ void _noopt LAMMPS::help() "List of command line options supported by this LAMMPS executable:\n\n" "-echo none/screen/log/both : echoing of input script (-e)\n" "-help : print this help message (-h)\n" - "-in filename : read input from file, not stdin (-i)\n" + "-in none/filename : read input from file or stdin (default) (-i)\n" "-kokkos on/off ... : turn KOKKOS mode on or off (-k)\n" "-log none/filename : where to send log output (-l)\n" "-mpicolor color : which exe in a multi-exe mpirun cmd (-m)\n" diff --git a/src/library.cpp b/src/library.cpp index 64d80468e5..67fb51325f 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -348,26 +348,6 @@ void lammps_mpi_finalize() } } -/* ---------------------------------------------------------------------- */ - -/** Free memory buffer allocated by LAMMPS. - * -\verbatim embed:rst - -Some of the LAMMPS C library interface functions return data as pointer -to a buffer that has been allocated by LAMMPS or the library interface. -This function can be used to delete those in order to avoid memory -leaks. - -\endverbatim - * - * \param ptr pointer to data allocated by LAMMPS */ - -void lammps_free(void *ptr) -{ - free(ptr); -} - // ---------------------------------------------------------------------- // Library functions to process commands // ---------------------------------------------------------------------- @@ -553,125 +533,6 @@ void lammps_commands_string(void *handle, const char *str) // Library functions to extract info from LAMMPS or set data in LAMMPS // ----------------------------------------------------------------------- -/** Get numerical representation of the LAMMPS version date. - * -\verbatim embed:rst - -The :cpp:func:`lammps_version` function returns an integer representing -the version of the LAMMPS code in the format YYYYMMDD. This can be used -to implement backward compatibility in software using the LAMMPS library -interface. The specific format guarantees, that this version number is -growing with every new LAMMPS release. - -\endverbatim - * - * \param handle pointer to a previously created LAMMPS instance - * \return an integer representing the version data in the - * format YYYYMMDD */ - -int lammps_version(void *handle) -{ - LAMMPS *lmp = (LAMMPS *) handle; - return lmp->num_ver; -} - -/** Get operating system and architecture information - * -\verbatim embed:rst - -The :cpp:func:`lammps_get_os_info` function can be used to retrieve -detailed information about the hosting operating system and -compiler/runtime. -A suitable buffer for a C-style string has to be provided and its length. -If the assembled text will be truncated to not overflow this buffer. - -.. versionadded:: 9Oct2020 - -\endverbatim - * - * \param buffer string buffer to copy the information to - * \param buf_size size of the provided string buffer */ - -void lammps_get_os_info(char *buffer, int buf_size) -{ - if (buf_size <=0) return; - buffer[0] = buffer[buf_size-1] = '\0'; - std::string txt = Info::get_os_info() + "\n"; - txt += Info::get_compiler_info(); - txt += " with " + Info::get_openmp_info() + "\n"; - strncpy(buffer, txt.c_str(), buf_size-1); -} - -/* ---------------------------------------------------------------------- */ - -/** Get memory usage information - * -\verbatim embed:rst - -This function will retrieve memory usage information for the current -LAMMPS instance or process. The *meminfo* buffer will be filled with -3 different numbers (if supported by the operating system). The first -is the tally (in MBytes) of all large memory allocations made by LAMMPS. -This is a lower boundary of how much memory is requested and does not -account for memory allocated on the stack or allocations via ``new``. -The second number is the current memory allocation of the current process -as returned by a memory allocation reporting in the system library. The -third number is the maximum amount of RAM (not swap) used by the process -so far. If any of the two latter parameters is not supported by the operating -system it will be set to zero. - -.. versionadded:: 18Sep2020 - -\endverbatim - * - * \param handle pointer to a previously created LAMMPS instance - * \param meminfo buffer with space for at least 3 double to store - * data in. */ - -void lammps_memory_usage(void *handle, double *meminfo) -{ - LAMMPS *lmp = (LAMMPS *) handle; - Info info(lmp); - info.get_memory_info(meminfo); -} - -/* ---------------------------------------------------------------------- */ - -/** Return current LAMMPS world communicator as integer - * -\verbatim embed:rst - -This will take the LAMMPS "world" communicator and convert it to an -integer using ``MPI_Comm_c2f()``, so it is equivalent to the -corresponding MPI communicator in Fortran. This way it can be safely -passed around between different programming languages. To convert it -to the C language representation use ``MPI_Comm_f2c()``. - -If LAMMPS was compiled with MPI_STUBS, this function returns -1. - -.. versionadded:: 18Sep2020 - -*See also* - :cpp:func:`lammps_open_fortran` - -\endverbatim - * - * \param handle pointer to a previously created LAMMPS instance - * \return Fortran representation of the LAMMPS world communicator */ - -int lammps_get_mpi_comm(void *handle) -{ -#ifdef MPI_STUBS - return -1; -#else - LAMMPS *lmp = (LAMMPS *) handle; - MPI_Fint f_comm = MPI_Comm_c2f(lmp->world); - return f_comm; -#endif -} - -/* ---------------------------------------------------------------------- */ - /** Return the total number of atoms in the system. * \verbatim embed:rst @@ -861,6 +722,74 @@ void lammps_reset_box(void *handle, double *boxlo, double *boxhi, /* ---------------------------------------------------------------------- */ +/** Get memory usage information + * +\verbatim embed:rst + +This function will retrieve memory usage information for the current +LAMMPS instance or process. The *meminfo* buffer will be filled with +3 different numbers (if supported by the operating system). The first +is the tally (in MBytes) of all large memory allocations made by LAMMPS. +This is a lower boundary of how much memory is requested and does not +account for memory allocated on the stack or allocations via ``new``. +The second number is the current memory allocation of the current process +as returned by a memory allocation reporting in the system library. The +third number is the maximum amount of RAM (not swap) used by the process +so far. If any of the two latter parameters is not supported by the operating +system it will be set to zero. + +.. versionadded:: 18Sep2020 + +\endverbatim + * + * \param handle pointer to a previously created LAMMPS instance + * \param meminfo buffer with space for at least 3 double to store + * data in. */ + +void lammps_memory_usage(void *handle, double *meminfo) +{ + LAMMPS *lmp = (LAMMPS *) handle; + Info info(lmp); + info.get_memory_info(meminfo); +} + +/* ---------------------------------------------------------------------- */ + +/** Return current LAMMPS world communicator as integer + * +\verbatim embed:rst + +This will take the LAMMPS "world" communicator and convert it to an +integer using ``MPI_Comm_c2f()``, so it is equivalent to the +corresponding MPI communicator in Fortran. This way it can be safely +passed around between different programming languages. To convert it +to the C language representation use ``MPI_Comm_f2c()``. + +If LAMMPS was compiled with MPI_STUBS, this function returns -1. + +.. versionadded:: 18Sep2020 + +*See also* + :cpp:func:`lammps_open_fortran` + +\endverbatim + * + * \param handle pointer to a previously created LAMMPS instance + * \return Fortran representation of the LAMMPS world communicator */ + +int lammps_get_mpi_comm(void *handle) +{ +#ifdef MPI_STUBS + return -1; +#else + LAMMPS *lmp = (LAMMPS *) handle; + MPI_Fint f_comm = MPI_Comm_c2f(lmp->world); + return f_comm; +#endif +} + +/* ---------------------------------------------------------------------- */ + /** Query LAMMPS about global settings. * \verbatim embed:rst @@ -910,9 +839,19 @@ not recognized, the function returns -1. * - box_exist - 1 if the simulation box is defined, 0 if not. See :doc:`create_box`. + * - nthreads + - Number of requested OpenMP threads for LAMMPS' execution * - triclinic - 1 if the the simulation box is triclinic, 0 if orthogonal. See :doc:`change_box`. + * - universe_rank + - MPI rank on LAMMPS' universe communicator (0 <= universe_rank < universe_size) + * - universe_size + - Number of ranks on LAMMPS' universe communicator (world_size <= universe_size) + * - world_rank + - MPI rank on LAMMPS' world communicator (0 <= world_rank < world_size) + * - world_size + - Number of ranks on LAMMPS' world communicator .. _extract_system_sizes: @@ -996,6 +935,12 @@ int lammps_extract_setting(void *handle, const char *keyword) if (strcmp(keyword,"box_exist") == 0) return lmp->domain->box_exist; if (strcmp(keyword,"triclinic") == 0) return lmp->domain->triclinic; + if (strcmp(keyword,"universe_rank") == 0) return lmp->universe->me; + if (strcmp(keyword,"universe_size") == 0) return lmp->universe->nprocs; + if (strcmp(keyword,"world_rank") == 0) return lmp->comm->me; + if (strcmp(keyword,"world_size") == 0) return lmp->comm->nprocs; + if (strcmp(keyword,"nthreads") == 0) return lmp->comm->nthreads; + if (strcmp(keyword,"nlocal") == 0) return lmp->atom->nlocal; if (strcmp(keyword,"nghost") == 0) return lmp->atom->nghost; if (strcmp(keyword,"nall") == 0) return lmp->atom->nlocal+lmp->atom->nghost; @@ -1023,6 +968,87 @@ int lammps_extract_setting(void *handle, const char *keyword) /* ---------------------------------------------------------------------- */ +/** Get data type of internal global LAMMPS variables or arrays. + * +\verbatim embed:rst + +This function returns an integer that encodes the data type of the global +property with the specified name. See :cpp:enum:`_LMP_DATATYPE_CONST` for valid +values. Callers of :cpp:func:`lammps_extract_global` can use this information +to then decide how to cast the (void*) pointer and access the data. + +.. versionadded:: 18Sep2020 + +\endverbatim + * + * \param handle pointer to a previously created LAMMPS instance + * \param name string with the name of the extracted property + * \return integer constant encoding the data type of the property + * or -1 if not found. */ + +int lammps_extract_global_datatype(void *handle, const char *name) +{ + if (strcmp(name,"dt") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"ntimestep") == 0) return LAMMPS_BIGINT; + if (strcmp(name,"atime") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"atimestep") == 0) return LAMMPS_BIGINT; + + if (strcmp(name,"boxlo") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"boxhi") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"sublo") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"subhi") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"sublo_lambda") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"subhi_lambda") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"boxxlo") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"boxxhi") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"boxylo") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"boxyhi") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"boxzlo") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"boxzhi") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"periodicity") == 0) return LAMMPS_INT; + if (strcmp(name,"triclinic") == 0) return LAMMPS_INT; + if (strcmp(name,"xy") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"xz") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"yz") == 0) return LAMMPS_DOUBLE; + + if (strcmp(name,"natoms") == 0) return LAMMPS_BIGINT; + if (strcmp(name,"nbonds") == 0) return LAMMPS_BIGINT; + if (strcmp(name,"nangles") == 0) return LAMMPS_BIGINT; + if (strcmp(name,"ndihedrals") == 0) return LAMMPS_BIGINT; + if (strcmp(name,"nimpropers") == 0) return LAMMPS_BIGINT; + if (strcmp(name,"nlocal") == 0) return LAMMPS_INT; + if (strcmp(name,"nghost") == 0) return LAMMPS_INT; + if (strcmp(name,"nmax") == 0) return LAMMPS_INT; + if (strcmp(name,"ntypes") == 0) return LAMMPS_INT; + + if (strcmp(name,"q_flag") == 0) return LAMMPS_INT; + + if (strcmp(name,"units") == 0) return LAMMPS_STRING; + if (strcmp(name,"boltz") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"hplanck") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"mvv2e") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"ftm2v") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"mv2d") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"nktv2p") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"qqr2e") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"qe2f") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"vxmu2f") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"xxt2kmu") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"dielectric") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"qqrd2e") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"e_mass") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"hhmrr2e") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"mvh2r") == 0) return LAMMPS_DOUBLE; + + if (strcmp(name,"angstrom") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"femtosecond") == 0) return LAMMPS_DOUBLE; + if (strcmp(name,"qelectron") == 0) return LAMMPS_DOUBLE; + + return -1; +} + +/* ---------------------------------------------------------------------- */ + /** Get pointer to internal global LAMMPS variables or arrays. * \verbatim embed:rst @@ -1137,6 +1163,22 @@ report the "native" data type. The following tables are provided: - double - 1 - upper box boundary in z-direction. See :doc:`create_box`. + * - sublo + - double + - 3 + - subbox lower boundaries + * - subhi + - double + - 3 + - subbox upper boundaries + * - sublo_lambda + - double + - 3 + - subbox lower boundaries in fractional coordinates (for triclinic cells) + * - subhi_lambda + - double + - 3 + - subbox upper boundaries in fractional coordinates (for triclinic cells) * - periodicity - int - 3 @@ -1328,6 +1370,10 @@ void *lammps_extract_global(void *handle, const char *name) if (strcmp(name,"boxlo") == 0) return (void *) lmp->domain->boxlo; if (strcmp(name,"boxhi") == 0) return (void *) lmp->domain->boxhi; + if (strcmp(name,"sublo") == 0) return (void *) lmp->domain->sublo; + if (strcmp(name,"subhi") == 0) return (void *) lmp->domain->subhi; + if (strcmp(name,"sublo_lambda") == 0) return (void *) lmp->domain->sublo_lamda; + if (strcmp(name,"subhi_lambda") == 0) return (void *) lmp->domain->subhi_lamda; if (strcmp(name,"boxxlo") == 0) return (void *) &lmp->domain->boxlo[0]; if (strcmp(name,"boxxhi") == 0) return (void *) &lmp->domain->boxhi[0]; if (strcmp(name,"boxylo") == 0) return (void *) &lmp->domain->boxlo[1]; @@ -1379,6 +1425,33 @@ void *lammps_extract_global(void *handle, const char *name) /* ---------------------------------------------------------------------- */ +/** Get data type of a LAMMPS per-atom property + * +\verbatim embed:rst + +This function returns an integer that encodes the data type of the per-atom +property with the specified name. See :cpp:enum:`_LMP_DATATYPE_CONST` for valid +values. Callers of :cpp:func:`lammps_extract_atom` can use this information +to then decide how to cast the (void*) pointer and access the data. + +.. versionadded:: 18Sep2020 + +\endverbatim + * + * \param handle pointer to a previously created LAMMPS instance + * \param name string with the name of the extracted property + * \return integer constant encoding the data type of the property + * or -1 if not found. + * */ + +int lammps_extract_atom_datatype(void *handle, const char *name) +{ + LAMMPS *lmp = (LAMMPS *) handle; + return lmp->atom->extract_datatype(name); +} + +/* ---------------------------------------------------------------------- */ + /** Get pointer to a LAMMPS per-atom property. * \verbatim embed:rst @@ -1411,255 +1484,6 @@ void *lammps_extract_atom(void *handle, const char *name) return lmp->atom->extract(name); } -/* ---------------------------------------------------------------------- */ - -/** Get data type of internal global LAMMPS variables or arrays. - * -\verbatim embed:rst - -This function returns an integer that encodes the data type of the global -property with the specified name. See :cpp:enum:`_LMP_DATATYPE_CONST` for valid -values. Callers of :cpp:func:`lammps_extract_global` can use this information -to then decide how to cast the (void*) pointer and access the data. - -.. versionadded:: 18Sep2020 - -\endverbatim - * - * \param handle pointer to a previously created LAMMPS instance - * \param name string with the name of the extracted property - * \return integer constant encoding the data type of the property - * or -1 if not found. */ - -int lammps_extract_global_datatype(void *, const char *name) -{ - if (strcmp(name,"dt") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"ntimestep") == 0) return LAMMPS_BIGINT; - if (strcmp(name,"atime") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"atimestep") == 0) return LAMMPS_BIGINT; - - if (strcmp(name,"boxlo") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"boxhi") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"boxxlo") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"boxxhi") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"boxylo") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"boxyhi") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"boxzlo") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"boxzhi") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"periodicity") == 0) return LAMMPS_INT; - if (strcmp(name,"triclinic") == 0) return LAMMPS_INT; - if (strcmp(name,"xy") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"xz") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"yz") == 0) return LAMMPS_DOUBLE; - - if (strcmp(name,"natoms") == 0) return LAMMPS_BIGINT; - if (strcmp(name,"nbonds") == 0) return LAMMPS_BIGINT; - if (strcmp(name,"nangles") == 0) return LAMMPS_BIGINT; - if (strcmp(name,"ndihedrals") == 0) return LAMMPS_BIGINT; - if (strcmp(name,"nimpropers") == 0) return LAMMPS_BIGINT; - if (strcmp(name,"nlocal") == 0) return LAMMPS_INT; - if (strcmp(name,"nghost") == 0) return LAMMPS_INT; - if (strcmp(name,"nmax") == 0) return LAMMPS_INT; - if (strcmp(name,"ntypes") == 0) return LAMMPS_INT; - - if (strcmp(name,"q_flag") == 0) return LAMMPS_INT; - - if (strcmp(name,"units") == 0) return LAMMPS_STRING; - if (strcmp(name,"boltz") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"hplanck") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"mvv2e") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"ftm2v") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"mv2d") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"nktv2p") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"qqr2e") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"qe2f") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"vxmu2f") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"xxt2kmu") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"dielectric") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"qqrd2e") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"e_mass") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"hhmrr2e") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"mvh2r") == 0) return LAMMPS_DOUBLE; - - if (strcmp(name,"angstrom") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"femtosecond") == 0) return LAMMPS_DOUBLE; - if (strcmp(name,"qelectron") == 0) return LAMMPS_DOUBLE; - - return -1; -} - -/* ---------------------------------------------------------------------- */ - -/** Get data type of a LAMMPS per-atom property - * -\verbatim embed:rst - -This function returns an integer that encodes the data type of the per-atom -property with the specified name. See :cpp:enum:`_LMP_DATATYPE_CONST` for valid -values. Callers of :cpp:func:`lammps_extract_atom` can use this information -to then decide how to cast the (void*) pointer and access the data. - -.. versionadded:: 18Sep2020 - -\endverbatim - * - * \param handle pointer to a previously created LAMMPS instance - * \param name string with the name of the extracted property - * \return integer constant encoding the data type of the property - * or -1 if not found. - * */ - -int lammps_extract_atom_datatype(void *handle, const char *name) -{ - LAMMPS *lmp = (LAMMPS *) handle; - return lmp->atom->extract_datatype(name); -} - -/* ---------------------------------------------------------------------- */ - -/** Create N atoms from list of coordinates - * -\verbatim embed:rst - -The prototype for this function when compiling with ``-DLAMMPS_BIGBIG`` -is: - -.. code-block:: c - - int lammps_create_atoms(void *handle, int n, int64_t *id, int *type, double *x, double *v, int64_t *image, int bexpand); - -This function creates additional atoms from a given list of coordinates -and a list of atom types. Additionally the atom-IDs, velocities, and -image flags may be provided. If atom-IDs are not provided, they will be -automatically created as a sequence following the largest existing -atom-ID. - -This function is useful to add atoms to a simulation or - in tandem with -:cpp:func:`lammps_reset_box` - to restore a previously extracted and -saved state of a simulation. Additional properties for the new atoms -can then be assigned via the :cpp:func:`lammps_scatter_atoms` -:cpp:func:`lammps_extract_atom` functions. - -For non-periodic boundaries, atoms will **not** be created that have -coordinates outside the box unless it is a shrink-wrap boundary and the -shrinkexceed flag has been set to a non-zero value. For periodic -boundaries atoms will be wrapped back into the simulation cell and its -image flags adjusted accordingly, unless explicit image flags are -provided. - -The function returns the number of atoms created or -1 on failure, e.g. -when called before as box has been created. - -Coordinates and velocities have to be given in a 1d-array in the order -X(1),Y(1),Z(1),X(2),Y(2),Z(2),...,X(N),Y(N),Z(N). - -\endverbatim - * - * \param handle pointer to a previously created LAMMPS instance - * \param n number of atoms, N, to be added to the system - * \param id pointer to N atom IDs; ``NULL`` will generate IDs - * \param type pointer to N atom types (required) - * \param x pointer to 3N doubles with x-,y-,z- positions - of the new atoms (required) - * \param v pointer to 3N doubles with x-,y-,z- velocities - of the new atoms (set to 0.0 if ``NULL``) - * \param image pointer to N imageint sets of image flags, or ``NULL`` - * \param bexpand if 1, atoms outside of shrink-wrap boundaries will - still be created and not dropped and the box extended - * \return number of atoms created on success; - -1 on failure (no box, no atom IDs, etc.) */ - -int lammps_create_atoms(void *handle, int n, tagint *id, int *type, - double *x, double *v, imageint *image, - int bexpand) -{ - LAMMPS *lmp = (LAMMPS *) handle; - bigint natoms_prev = lmp->atom->natoms; - - BEGIN_CAPTURE - { - // error if box does not exist or tags not defined - - int flag = 0; - std::string msg("Failure in lammps_create_atoms: "); - if (lmp->domain->box_exist == 0) { - flag = 1; - msg += "trying to create atoms before before simulation box is defined"; - } - if (lmp->atom->tag_enable == 0) { - flag = 1; - msg += "must have atom IDs to use this function"; - } - - if (flag) { - if (lmp->comm->me == 0) lmp->error->warning(FLERR,msg.c_str()); - return -1; - } - - // loop over all N atoms on all MPI ranks - // if this proc would own it based on its coordinates, invoke create_atom() - // optionally set atom tags and velocities - - Atom *atom = lmp->atom; - Domain *domain = lmp->domain; - int nlocal = atom->nlocal; - - int nlocal_prev = nlocal; - double xdata[3]; - - for (int i = 0; i < n; i++) { - xdata[0] = x[3*i]; - xdata[1] = x[3*i+1]; - xdata[2] = x[3*i+2]; - imageint * img = image ? image + i : nullptr; - tagint tag = id ? id[i] : 0; - - // create atom only on MPI rank that would own it - - if (!domain->ownatom(tag, xdata, img, bexpand)) continue; - - atom->avec->create_atom(type[i],xdata); - if (id) atom->tag[nlocal] = id[i]; - else atom->tag[nlocal] = 0; - if (v) { - atom->v[nlocal][0] = v[3*i]; - atom->v[nlocal][1] = v[3*i+1]; - atom->v[nlocal][2] = v[3*i+2]; - } - if (image) atom->image[nlocal] = image[i]; - nlocal++; - } - - // if no tags are given explicitly, create new and unique tags - - if (id == nullptr) atom->tag_extend(); - - // reset box info, if extended when adding atoms. - - if (bexpand) domain->reset_box(); - - // need to reset atom->natoms inside LAMMPS - - bigint ncurrent = nlocal; - MPI_Allreduce(&ncurrent,&lmp->atom->natoms,1,MPI_LMP_BIGINT, - MPI_SUM,lmp->world); - - // init per-atom fix/compute/variable values for created atoms - - atom->data_fix_compute_variable(nlocal_prev,nlocal); - - // if global map exists, reset it - // invoke map_init() b/c atom count has grown - - if (lmp->atom->map_style != Atom::MAP_NONE) { - lmp->atom->map_init(); - lmp->atom->map_set(); - } - } - END_CAPTURE; - return (int) lmp->atom->natoms - natoms_prev; -} - // ---------------------------------------------------------------------- // Library functions to access data from computes, fixes, variables in LAMMPS // ---------------------------------------------------------------------- @@ -2025,36 +1849,44 @@ void *lammps_extract_fix(void *handle, char *id, int style, int type, \verbatim embed:rst This function returns a pointer to data from a LAMMPS :doc:`variable` -identified by its name. The variable must be either an *equal*\ -style -compatible or an *atom*\ -style variable. Variables of style *internal* +identified by its name. When the variable is either an *equal*\ -style +compatible or an *atom*\ -style variable the variable is evaluated and +the corresponding value(s) returned. Variables of style *internal* are compatible with *equal*\ -style variables and so are *python*\ --style variables, if they return a numeric value. The function returns +-style variables, if they return a numeric value. For other +variable styles their string value is returned. The function returns ``NULL`` when a variable of the provided *name* is not found or of an incompatible style. The *group* argument is only used for *atom*\ -style variables and ignored otherwise. If set to ``NULL`` when extracting data from and *atom*\ -style variable, the group is assumed to be "all". -.. note:: +When requesting data from an *equal*\ -style or compatible variable +this function allocates storage for a single double value, copies the +returned value to it, and returns a pointer to the location of the +copy. Therefore the allocated storage needs to be freed after its +use to avoid a memory leak. Example: - When requesting data from an *equal*\ -style or compatible variable - this function allocates storage for a single double value, copies the - returned value to it, and returns a pointer to the location of the - copy. Therefore the allocated storage needs to be freed after its - use to avoid a memory leak. Example: +.. code-block:: c - .. code-block:: c + double *dptr = (double *) lammps_extract_variable(handle,name,NULL); + double value = *dptr; + lammps_free((void *)dptr); - double *dptr = (double *) lammps_extract_variable(handle,name,NULL); - double value = *dptr; - lammps_free((void *)dptr); +For *atom*\ -style variables the data returned is a pointer to an +allocated block of storage of double of the length ``atom->nlocal``. +Since the data is returned a copy, the location will persist, but its +content will not be updated, in case the variable is re-evaluated. +To avoid a memory leak this pointer needs to be freed after use in +the calling program. - For *atom*\ -style variables the data returned is a pointer to an - allocated block of storage of double of the length ``atom->nlocal``. - To avoid a memory leak, also this pointer needs to be freed after use. +For other variable styles the returned pointer needs to be cast to +a char pointer. -Since the data is returned as copies, the location will persist, but its -values will not be updated, in case the variable is re-evaluated. +.. code-block:: c + + const char *cptr = (const char *) lammps_extract_variable(handle,name,NULL); + printf("The value of variable %s is %s\n", name, cptr); .. note:: @@ -2072,7 +1904,7 @@ values will not be updated, in case the variable is re-evaluated. * \return pointer (cast to ``void *``) to the location of the * requested data or ``NULL`` if not found. */ -void *lammps_extract_variable(void *handle, char *name, char *group) +void *lammps_extract_variable(void *handle, const char *name, const char *group) { LAMMPS *lmp = (LAMMPS *) handle; @@ -2085,9 +1917,7 @@ void *lammps_extract_variable(void *handle, char *name, char *group) double *dptr = (double *) malloc(sizeof(double)); *dptr = lmp->input->variable->compute_equal(ivar); return (void *) dptr; - } - - if (lmp->input->variable->atomstyle(ivar)) { + } else if (lmp->input->variable->atomstyle(ivar)) { if (group == nullptr) group = (char *)"all"; int igroup = lmp->group->find(group); if (igroup < 0) return nullptr; @@ -2095,6 +1925,8 @@ void *lammps_extract_variable(void *handle, char *name, char *group) double *vector = (double *) malloc(nlocal*sizeof(double)); lmp->input->variable->compute_atom(ivar,igroup,vector,1,0); return (void *) vector; + } else { + return lmp->input->variable->retrieve(name); } } END_CAPTURE @@ -2154,27 +1986,16 @@ int lammps_set_variable(void *handle, char *name, char *str) Allreduce to sum vector into data across all procs ------------------------------------------------------------------------- */ -#if defined(LAMMPS_BIGBIG) -void lammps_gather_atoms(void *handle, char * /*name */, - int /*type*/, int /*count*/, void * /*data*/) +void lammps_gather_atoms(void *handle, char *name, int type, int count, void *data) { LAMMPS *lmp = (LAMMPS *) handle; BEGIN_CAPTURE { +#if defined(LAMMPS_BIGBIG) lmp->error->all(FLERR,"Library function lammps_gather_atoms() " "is not compatible with -DLAMMPS_BIGBIG"); - } - END_CAPTURE -} #else -void lammps_gather_atoms(void *handle, char *name, - int type, int count, void *data) -{ - LAMMPS *lmp = (LAMMPS *) handle; - - BEGIN_CAPTURE - { int i,j,offset; // error if tags are not defined or not consecutive @@ -2194,7 +2015,8 @@ void lammps_gather_atoms(void *handle, char *name, void *vptr = lmp->atom->extract(name); if (vptr == nullptr) { - lmp->error->warning(FLERR,"lammps_gather_atoms: unknown property name"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_atoms: unknown property name"); return; } @@ -2241,7 +2063,7 @@ void lammps_gather_atoms(void *handle, char *name, MPI_Allreduce(copy,data,count*natoms,MPI_INT,MPI_SUM,lmp->world); lmp->memory->destroy(copy); - } else { + } else if (type == 1) { double *vector = nullptr; double **array = nullptr; if (count == 1) vector = (double *) vptr; @@ -2268,11 +2090,15 @@ void lammps_gather_atoms(void *handle, char *name, MPI_Allreduce(copy,data,count*natoms,MPI_DOUBLE,MPI_SUM,lmp->world); lmp->memory->destroy(copy); + } else { + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_atoms: unsupported data type"); + return; } +#endif } END_CAPTURE } -#endif /* ---------------------------------------------------------------------- gather the named atom-based entity for all atoms @@ -2295,27 +2121,16 @@ void lammps_gather_atoms(void *handle, char *name, Allgather Nlocal atoms from each proc into data ------------------------------------------------------------------------- */ -#if defined(LAMMPS_BIGBIG) -void lammps_gather_atoms_concat(void *handle, char * /*name */, - int /*type*/, int /*count*/, void * /*data*/) +void lammps_gather_atoms_concat(void *handle, char *name, int type, int count, void *data) { LAMMPS *lmp = (LAMMPS *) handle; BEGIN_CAPTURE { +#if defined(LAMMPS_BIGBIG) lmp->error->all(FLERR,"Library function lammps_gather_atoms_concat() " "is not compatible with -DLAMMPS_BIGBIG"); - } - END_CAPTURE -} #else -void lammps_gather_atoms_concat(void *handle, char *name, - int type, int count, void *data) -{ - LAMMPS *lmp = (LAMMPS *) handle; - - BEGIN_CAPTURE - { int i,offset; // error if tags are not defined @@ -2334,7 +2149,8 @@ void lammps_gather_atoms_concat(void *handle, char *name, void *vptr = lmp->atom->extract(name); if (vptr == nullptr) { - lmp->error->warning(FLERR,"lammps_gather_atoms: unknown property name"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_atoms: unknown property name"); return; } @@ -2426,10 +2242,10 @@ void lammps_gather_atoms_concat(void *handle, char *name, lmp->memory->destroy(recvcounts); lmp->memory->destroy(displs); +#endif } END_CAPTURE } -#endif /* ---------------------------------------------------------------------- gather the named atom-based entity for a subset of atoms @@ -2454,29 +2270,17 @@ void lammps_gather_atoms_concat(void *handle, char *name, Allreduce to sum vector into data across all procs ------------------------------------------------------------------------- */ -#if defined(LAMMPS_BIGBIG) -void lammps_gather_atoms_subset(void *handle, char * /*name */, - int /*type*/, int /*count*/, - int /*ndata*/, int * /*ids*/, void * /*data*/) -{ - LAMMPS *lmp = (LAMMPS *) handle; - - BEGIN_CAPTURE - { - lmp->error->all(FLERR,"Library function lammps_gather_atoms_subset() " - "is not compatible with -DLAMMPS_BIGBIG"); - } - END_CAPTURE -} -#else -void lammps_gather_atoms_subset(void *handle, char *name, - int type, int count, +void lammps_gather_atoms_subset(void *handle, char *name, int type, int count, int ndata, int *ids, void *data) { LAMMPS *lmp = (LAMMPS *) handle; BEGIN_CAPTURE { +#if defined(LAMMPS_BIGBIG) + lmp->error->all(FLERR,"Library function lammps_gather_atoms_subset() " + "is not compatible with -DLAMMPS_BIGBIG"); +#else int i,j,m,offset; tagint id; @@ -2494,8 +2298,9 @@ void lammps_gather_atoms_subset(void *handle, char *name, void *vptr = lmp->atom->extract(name); if (vptr == nullptr) { - lmp->error->warning(FLERR,"lammps_gather_atoms_subset: " - "unknown property name"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_atoms_subset: " + "unknown property name"); return; } @@ -2583,10 +2388,10 @@ void lammps_gather_atoms_subset(void *handle, char *name, MPI_Allreduce(copy,data,count*ndata,MPI_DOUBLE,MPI_SUM,lmp->world); lmp->memory->destroy(copy); } +#endif } END_CAPTURE } -#endif /* ---------------------------------------------------------------------- scatter the named atom-based entity in data to all atoms @@ -2604,27 +2409,16 @@ void lammps_gather_atoms_subset(void *handle, char *name, loop over Natoms, if I own atom ID, set its values from data ------------------------------------------------------------------------- */ -#if defined(LAMMPS_BIGBIG) -void lammps_scatter_atoms(void *handle, char * /*name */, - int /*type*/, int /*count*/, void * /*data*/) +void lammps_scatter_atoms(void *handle, char *name, int type, int count, void *data) { LAMMPS *lmp = (LAMMPS *) handle; BEGIN_CAPTURE { +#if defined(LAMMPS_BIGBIG) lmp->error->all(FLERR,"Library function lammps_scatter_atoms() " "is not compatible with -DLAMMPS_BIGBIG"); - } - END_CAPTURE -} #else -void lammps_scatter_atoms(void *handle, char *name, - int type, int count, void *data) -{ - LAMMPS *lmp = (LAMMPS *) handle; - - BEGIN_CAPTURE - { int i,j,m,offset; // error if tags are not defined or not consecutive or no atom map @@ -2645,9 +2439,10 @@ void lammps_scatter_atoms(void *handle, char *name, void *vptr = lmp->atom->extract(name); if(vptr == nullptr) { + if (lmp->comm->me == 0) lmp->error->warning(FLERR, "lammps_scatter_atoms: unknown property name"); - return; + return; } // copy = Natom length vector of per-atom values @@ -2709,10 +2504,10 @@ void lammps_scatter_atoms(void *handle, char *name, } } } +#endif } END_CAPTURE } -#endif /* ---------------------------------------------------------------------- scatter the named atom-based entity in data to a subset of atoms @@ -2732,29 +2527,17 @@ void lammps_scatter_atoms(void *handle, char *name, loop over Ndata, if I own atom ID, set its values from data ------------------------------------------------------------------------- */ -#if defined(LAMMPS_BIGBIG) -void lammps_scatter_atoms_subset(void *handle, char * /*name */, - int /*type*/, int /*count*/, - int /*ndata*/, int * /*ids*/, void * /*data*/) -{ - LAMMPS *lmp = (LAMMPS *) handle; - - BEGIN_CAPTURE - { - lmp->error->all(FLERR,"Library function lammps_scatter_atoms_subset() " - "is not compatible with -DLAMMPS_BIGBIG"); - } - END_CAPTURE -} -#else -void lammps_scatter_atoms_subset(void *handle, char *name, - int type, int count, +void lammps_scatter_atoms_subset(void *handle, char *name, int type, int count, int ndata, int *ids, void *data) { LAMMPS *lmp = (LAMMPS *) handle; BEGIN_CAPTURE { +#if defined(LAMMPS_BIGBIG) + lmp->error->all(FLERR,"Library function lammps_scatter_atoms_subset() " + "is not compatible with -DLAMMPS_BIGBIG"); +#else int i,j,m,offset; tagint id; @@ -2773,9 +2556,10 @@ void lammps_scatter_atoms_subset(void *handle, char *name, void *vptr = lmp->atom->extract(name); if(vptr == nullptr) { + if (lmp->comm->me == 0) lmp->error->warning(FLERR, "lammps_scatter_atoms_subset: unknown property name"); - return; + return; } // copy = Natom length vector of per-atom values @@ -2846,11 +2630,10 @@ void lammps_scatter_atoms_subset(void *handle, char *name, } } } +#endif } END_CAPTURE } -#endif - /* ---------------------------------------------------------------------- Contributing author: Thomas Swinburne (CNRS & CINaM, Marseille, France) @@ -2876,26 +2659,17 @@ void lammps_scatter_atoms_subset(void *handle, char *name, loop over Nlocal to fill vector with my values Allreduce to sum vector into data across all procs ------------------------------------------------------------------------- */ + +void lammps_gather(void *handle, char *name, int type, int count, void *data) +{ + LAMMPS *lmp = (LAMMPS *) handle; + + BEGIN_CAPTURE + { #if defined(LAMMPS_BIGBIG) -void lammps_gather(void *ptr, char * /*name*/, int /*type*/, - int /*count*/, void * /*data*/) -{ - LAMMPS *lmp = (LAMMPS *) ptr; - - BEGIN_CAPTURE - { lmp->error->all(FLERR,"Library function lammps_gather" - " not compatible with -DLAMMPS_BIGBIG"); - } - END_CAPTURE -} + " not compatible with -DLAMMPS_BIGBIG"); #else -void lammps_gather(void *ptr, char *name, int type, int count, void *data) -{ - LAMMPS *lmp = (LAMMPS *) ptr; - - BEGIN_CAPTURE - { int i,j,offset,fcid,ltype; // error if tags are not defined or not consecutive @@ -2917,49 +2691,54 @@ void lammps_gather(void *ptr, char *name, int type, int count, void *data) fcid = lmp->modify->find_fix(&name[2]); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_gather: unknown fix id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather: unknown fix id"); return; } if (lmp->modify->fix[fcid]->peratom_flag == 0) { - lmp->error->warning(FLERR,"lammps_gather:" - " fix does not return peratom data"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather:" + " fix does not return peratom data"); return; } if (count>1 && lmp->modify->fix[fcid]->size_peratom_cols != count) { - lmp->error->warning(FLERR,"lammps_gather:" - " count != values peratom for fix"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather:" + " count != values peratom for fix"); return; } if (lmp->update->ntimestep % lmp->modify->fix[fcid]->peratom_freq) { - lmp->error->all(FLERR,"lammps_gather:" - " fix not computed at compatible time"); + if (lmp->comm->me == 0) + lmp->error->all(FLERR,"lammps_gather:" + " fix not computed at compatible time"); return; } if(count==1) vptr = (void *) lmp->modify->fix[fcid]->vector_atom; else vptr = (void *) lmp->modify->fix[fcid]->array_atom; - - } if (vptr==nullptr && strstr(name,"c_") == name) { // compute fcid = lmp->modify->find_compute(&name[2]); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_gather: unknown compute id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather: unknown compute id"); return; } if (lmp->modify->compute[fcid]->peratom_flag == 0) { - lmp->error->warning(FLERR,"lammps_gather:" - " compute does not return peratom data"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather:" + " compute does not return peratom data"); return; } if (count>1 && lmp->modify->compute[fcid]->size_peratom_cols != count) { - lmp->error->warning(FLERR,"lammps_gather:" - " count != values peratom for compute"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather:" + " count != values peratom for compute"); return; } @@ -2971,30 +2750,32 @@ void lammps_gather(void *ptr, char *name, int type, int count, void *data) } - - if (vptr==nullptr && strstr(name,"d_") == name) { // property / atom - + // property / atom + if ( (vptr == nullptr) && ((strstr(name,"d_") == name) + || (strstr(name,"i_") == name)) ) { fcid = lmp->atom->find_custom(&name[2], ltype); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_gather: unknown property/atom id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather: unknown property/atom id"); return; } if (ltype != type) { - lmp->error->warning(FLERR,"lammps_gather: mismatch property/atom type"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather: mismatch property/atom type"); return; } if (count != 1) { - lmp->error->warning(FLERR,"lammps_gather: property/atom has count=1"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather: property/atom has count=1"); return; } if(ltype==0) vptr = (void *) lmp->atom->ivector[fcid]; else vptr = (void *) lmp->atom->dvector[fcid]; - } - if (vptr == nullptr) { - lmp->error->warning(FLERR,"lammps_gather: unknown property name"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather: unknown property name"); return; } @@ -3068,10 +2849,10 @@ void lammps_gather(void *ptr, char *name, int type, int count, void *data) MPI_Allreduce(copy,data,count*natoms,MPI_DOUBLE,MPI_SUM,lmp->world); lmp->memory->destroy(copy); } +#endif } END_CAPTURE } -#endif /* ---------------------------------------------------------------------- Contributing author: Thomas Swinburne (CNRS & CINaM, Marseille, France) @@ -3097,26 +2878,17 @@ void lammps_gather(void *ptr, char *name, int type, int count, void *data) loop over Nlocal to fill vector with my values Allreduce to sum vector into data across all procs ------------------------------------------------------------------------- */ -#if defined(LAMMPS_BIGBIG) -void lammps_gather_concat(void *ptr, char * /*name*/, int /*type*/, - int /*count*/, void * /*data*/) + +void lammps_gather_concat(void *handle, char *name, int type, int count, void *data) { - LAMMPS *lmp = (LAMMPS *) ptr; + LAMMPS *lmp = (LAMMPS *) handle; BEGIN_CAPTURE { +#if defined(LAMMPS_BIGBIG) lmp->error->all(FLERR,"Library function lammps_gather_concat" " not compatible with -DLAMMPS_BIGBIG"); - } - END_CAPTURE -} #else -void lammps_gather_concat(void *ptr, char *name, int type, int count, void *data) -{ - LAMMPS *lmp = (LAMMPS *) ptr; - - BEGIN_CAPTURE - { int i,offset,fcid,ltype; // error if tags are not defined or not consecutive @@ -3138,50 +2910,55 @@ void lammps_gather_concat(void *ptr, char *name, int type, int count, void *data fcid = lmp->modify->find_fix(&name[2]); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_gather_concat: unknown fix id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_concat: unknown fix id"); return; } if (lmp->modify->fix[fcid]->peratom_flag == 0) { - lmp->error->warning(FLERR,"lammps_gather_concat:" - " fix does not return peratom data"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_concat:" + " fix does not return peratom data"); return; } if (count>1 && lmp->modify->fix[fcid]->size_peratom_cols != count) { - lmp->error->warning(FLERR,"lammps_gather_concat:" - " count != values peratom for fix"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_concat:" + " count != values peratom for fix"); return; } if (lmp->update->ntimestep % lmp->modify->fix[fcid]->peratom_freq) { - lmp->error->all(FLERR,"lammps_gather_concat:" - " fix not computed at compatible time"); + if (lmp->comm->me == 0) + lmp->error->all(FLERR,"lammps_gather_concat:" + " fix not computed at compatible time"); return; } if(count==1) vptr = (void *) lmp->modify->fix[fcid]->vector_atom; else vptr = (void *) lmp->modify->fix[fcid]->array_atom; - - } if (vptr==nullptr && strstr(name,"c_") == name) { // compute fcid = lmp->modify->find_compute(&name[2]); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_gather_concat: unknown compute id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_concat: unknown compute id"); return; } if (lmp->modify->compute[fcid]->peratom_flag == 0) { - lmp->error->warning(FLERR,"lammps_gather_concat:" - " compute does not return peratom data"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_concat:" + " compute does not return peratom data"); return; } if (count>1 && lmp->modify->compute[fcid]->size_peratom_cols != count) { - lmp->error->warning(FLERR,"lammps_gather_concat:" - " count != values peratom for compute"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_concat:" + " count != values peratom for compute"); return; } @@ -3198,18 +2975,21 @@ void lammps_gather_concat(void *ptr, char *name, int type, int count, void *data fcid = lmp->atom->find_custom(&name[2], ltype); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_gather_concat: " - "unknown property/atom id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_concat: " + "unknown property/atom id"); return; } if (ltype != type) { - lmp->error->warning(FLERR,"lammps_gather_concat: " - "mismatch property/atom type"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_concat: " + "mismatch property/atom type"); return; } if (count != 1) { - lmp->error->warning(FLERR,"lammps_gather_concat: " - "property/atom has count=1"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_concat: " + "property/atom has count=1"); return; } if(ltype==0) vptr = (void *) lmp->atom->ivector[fcid]; @@ -3218,7 +2998,8 @@ void lammps_gather_concat(void *ptr, char *name, int type, int count, void *data } if (vptr == nullptr) { - lmp->error->warning(FLERR,"lammps_gather_concat: unknown property name"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_concat: unknown property name"); return; } @@ -3310,10 +3091,10 @@ void lammps_gather_concat(void *ptr, char *name, int type, int count, void *data lmp->memory->destroy(recvcounts); lmp->memory->destroy(displs); +#endif } END_CAPTURE } -#endif /* ---------------------------------------------------------------------- Contributing author: Thomas Swinburne (CNRS & CINaM, Marseille, France) @@ -3339,29 +3120,19 @@ void lammps_gather_concat(void *ptr, char *name, int type, int count, void *data loop over Nlocal to fill vector with my values Allreduce to sum vector into data across all procs ------------------------------------------------------------------------- */ -#if defined(LAMMPS_BIGBIG) -void lammps_gather_subset(void *ptr, char * /*name */, - int /*type*/, int /*count*/, - int /*ndata*/, int * /*ids*/, void * /*data*/) -{ - LAMMPS *lmp = (LAMMPS *) ptr; - BEGIN_CAPTURE - { - lmp->error->all(FLERR,"Library function lammps_gather_subset() " - "is not compatible with -DLAMMPS_BIGBIG"); - } - END_CAPTURE -} -#else -void lammps_gather_subset(void *ptr, char *name, +void lammps_gather_subset(void *handle, char *name, int type, int count, int ndata, int *ids, void *data) { - LAMMPS *lmp = (LAMMPS *) ptr; + LAMMPS *lmp = (LAMMPS *) handle; BEGIN_CAPTURE { +#if defined(LAMMPS_BIGBIG) + lmp->error->all(FLERR,"Library function lammps_gather_subset() " + "is not compatible with -DLAMMPS_BIGBIG"); +#else int i,j,m,offset,fcid,ltype; tagint id; @@ -3381,50 +3152,54 @@ void lammps_gather_subset(void *ptr, char *name, fcid = lmp->modify->find_fix(&name[2]); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_gather_subset: unknown fix id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_subset: unknown fix id"); return; } if (lmp->modify->fix[fcid]->peratom_flag == 0) { - lmp->error->warning(FLERR,"lammps_gather_subset:" - " fix does not return peratom data"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_subset:" + " fix does not return peratom data"); return; } + if (count>1 && lmp->modify->fix[fcid]->size_peratom_cols != count) { lmp->error->warning(FLERR,"lammps_gather_subset:" " count != values peratom for fix"); return; } - if (lmp->update->ntimestep % lmp->modify->fix[fcid]->peratom_freq) { - lmp->error->all(FLERR,"lammps_gather_subset:" - " fix not computed at compatible time"); + if (lmp->comm->me == 0) + lmp->error->all(FLERR,"lammps_gather_subset:" + " fix not computed at compatible time"); return; } if(count==1) vptr = (void *) lmp->modify->fix[fcid]->vector_atom; else vptr = (void *) lmp->modify->fix[fcid]->array_atom; - - } if (vptr==nullptr && strstr(name,"c_") == name) { // compute fcid = lmp->modify->find_compute(&name[2]); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_gather_subset: unknown compute id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_subset: unknown compute id"); return; } if (lmp->modify->compute[fcid]->peratom_flag == 0) { - lmp->error->warning(FLERR,"lammps_gather_subset:" - " compute does not return peratom data"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_subset:" + " compute does not return peratom data"); return; } if (count>1 && lmp->modify->compute[fcid]->size_peratom_cols != count) { - lmp->error->warning(FLERR,"lammps_gather_subset:" - " count != values peratom for compute"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_subset:" + " count != values peratom for compute"); return; } @@ -3441,28 +3216,31 @@ void lammps_gather_subset(void *ptr, char *name, fcid = lmp->atom->find_custom(&name[2], ltype); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_gather_subset: " - "unknown property/atom id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_subset: " + "unknown property/atom id"); return; } if (ltype != type) { - lmp->error->warning(FLERR,"lammps_gather_subset: " - "mismatch property/atom type"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_subset: " + "mismatch property/atom type"); return; } if (count != 1) { - lmp->error->warning(FLERR,"lammps_gather_subset: " - "property/atom has count=1"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_subset: " + "property/atom has count=1"); return; } if(ltype==0) vptr = (void *) lmp->atom->ivector[fcid]; else vptr = (void *) lmp->atom->dvector[fcid]; - } if (vptr == nullptr) { - lmp->error->warning(FLERR,"lammps_gather_subset: " - "unknown property name"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_gather_subset: " + "unknown property name"); return; } @@ -3550,10 +3328,10 @@ void lammps_gather_subset(void *ptr, char *name, MPI_Allreduce(copy,data,count*ndata,MPI_DOUBLE,MPI_SUM,lmp->world); lmp->memory->destroy(copy); } +#endif } END_CAPTURE } -#endif /* ---------------------------------------------------------------------- Contributing author: Thomas Swinburne (CNRS & CINaM, Marseille, France) @@ -3578,27 +3356,16 @@ void lammps_gather_subset(void *ptr, char *name, Allreduce to sum vector into data across all procs ------------------------------------------------------------------------- */ -#if defined(LAMMPS_BIGBIG) -void lammps_scatter(void *ptr, char * /*name */, - int /*type*/, int /*count*/, void * /*data*/) +void lammps_scatter(void *handle, char *name, int type, int count, void *data) { - LAMMPS *lmp = (LAMMPS *) ptr; + LAMMPS *lmp = (LAMMPS *) handle; BEGIN_CAPTURE { +#if defined(LAMMPS_BIGBIG) lmp->error->all(FLERR,"Library function lammps_scatter() " "is not compatible with -DLAMMPS_BIGBIG"); - } - END_CAPTURE -} #else -void lammps_scatter(void *ptr, char *name, - int type, int count, void *data) -{ - LAMMPS *lmp = (LAMMPS *) ptr; - - BEGIN_CAPTURE - { int i,j,m,offset,fcid,ltype; // error if tags are not defined or not consecutive or no atom map @@ -3623,43 +3390,47 @@ void lammps_scatter(void *ptr, char *name, fcid = lmp->modify->find_fix(&name[2]); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_scatter: unknown fix id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter: unknown fix id"); return; } if (lmp->modify->fix[fcid]->peratom_flag == 0) { - lmp->error->warning(FLERR,"lammps_scatter:" - " fix does not return peratom data"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter:" + " fix does not return peratom data"); return; } if (count>1 && lmp->modify->fix[fcid]->size_peratom_cols != count) { - lmp->error->warning(FLERR,"lammps_scatter:" - " count != values peratom for fix"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter:" + " count != values peratom for fix"); return; } if(count==1) vptr = (void *) lmp->modify->fix[fcid]->vector_atom; else vptr = (void *) lmp->modify->fix[fcid]->array_atom; - - } if (vptr==nullptr && strstr(name,"c_") == name) { // compute fcid = lmp->modify->find_compute(&name[2]); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_scatter: unknown compute id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter: unknown compute id"); return; } if (lmp->modify->compute[fcid]->peratom_flag == 0) { - lmp->error->warning(FLERR,"lammps_scatter:" - " compute does not return peratom data"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter:" + " compute does not return peratom data"); return; } if (count>1 && lmp->modify->compute[fcid]->size_peratom_cols != count) { - lmp->error->warning(FLERR,"lammps_scatter:" - " count != values peratom for compute"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter:" + " count != values peratom for compute"); return; } @@ -3676,15 +3447,18 @@ void lammps_scatter(void *ptr, char *name, fcid = lmp->atom->find_custom(&name[2], ltype); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_scatter: unknown property/atom id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter: unknown property/atom id"); return; } if (ltype != type) { - lmp->error->warning(FLERR,"lammps_scatter: mismatch property/atom type"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter: mismatch property/atom type"); return; } if (count != 1) { - lmp->error->warning(FLERR,"lammps_scatter: property/atom has count=1"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter: property/atom has count=1"); return; } if(ltype==0) vptr = (void *) lmp->atom->ivector[fcid]; @@ -3693,8 +3467,9 @@ void lammps_scatter(void *ptr, char *name, } if(vptr == nullptr) { + if (lmp->comm->me == 0) lmp->error->warning(FLERR,"lammps_scatter: unknown property name"); - return; + return; } // copy = Natom length vector of per-atom values @@ -3756,10 +3531,10 @@ void lammps_scatter(void *ptr, char *name, } } } +#endif } END_CAPTURE } -#endif /* ---------------------------------------------------------------------- Contributing author: Thomas Swinburne (CNRS & CINaM, Marseille, France) @@ -3780,29 +3555,17 @@ void lammps_scatter(void *ptr, char *name, loop over Ndata, if I own atom ID, set its values from data ------------------------------------------------------------------------- */ -#if defined(LAMMPS_BIGBIG) -void lammps_scatter_subset(void *ptr, char * /*name */, - int /*type*/, int /*count*/, - int /*ndata*/, int * /*ids*/, void * /*data*/) -{ - LAMMPS *lmp = (LAMMPS *) ptr; - - BEGIN_CAPTURE - { - lmp->error->all(FLERR,"Library function lammps_scatter_subset() " - "is not compatible with -DLAMMPS_BIGBIG"); - } - END_CAPTURE -} -#else -void lammps_scatter_subset(void *ptr, char *name, - int type, int count, +void lammps_scatter_subset(void *handle, char *name,int type, int count, int ndata, int *ids, void *data) { - LAMMPS *lmp = (LAMMPS *) ptr; + LAMMPS *lmp = (LAMMPS *) handle; BEGIN_CAPTURE { +#if defined(LAMMPS_BIGBIG) + lmp->error->all(FLERR,"Library function lammps_scatter_subset() " + "is not compatible with -DLAMMPS_BIGBIG"); +#else int i,j,m,offset,fcid,ltype; tagint id; @@ -3825,43 +3588,47 @@ void lammps_scatter_subset(void *ptr, char *name, fcid = lmp->modify->find_fix(&name[2]); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_scatter_subset: unknown fix id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter_subset: unknown fix id"); return; } if (lmp->modify->fix[fcid]->peratom_flag == 0) { - lmp->error->warning(FLERR,"lammps_scatter_subset:" - " fix does not return peratom data"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter_subset:" + " fix does not return peratom data"); return; } if (count>1 && lmp->modify->fix[fcid]->size_peratom_cols != count) { - lmp->error->warning(FLERR,"lammps_scatter_subset:" - " count != values peratom for fix"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter_subset:" + " count != values peratom for fix"); return; } if(count==1) vptr = (void *) lmp->modify->fix[fcid]->vector_atom; else vptr = (void *) lmp->modify->fix[fcid]->array_atom; - - } if (vptr==nullptr && strstr(name,"c_") == name) { // compute fcid = lmp->modify->find_compute(&name[2]); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_scatter_subset: unknown compute id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter_subset: unknown compute id"); return; } if (lmp->modify->compute[fcid]->peratom_flag == 0) { - lmp->error->warning(FLERR,"lammps_scatter_subset:" - " compute does not return peratom data"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter_subset:" + " compute does not return peratom data"); return; } if (count>1 && lmp->modify->compute[fcid]->size_peratom_cols != count) { - lmp->error->warning(FLERR,"lammps_scatter_subset:" - " count != values peratom for compute"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter_subset:" + " count != values peratom for compute"); return; } @@ -3870,37 +3637,38 @@ void lammps_scatter_subset(void *ptr, char *name, if(count==1) vptr = (void *) lmp->modify->compute[fcid]->vector_atom; else vptr = (void *) lmp->modify->compute[fcid]->array_atom; - - } if (vptr==nullptr && strstr(name,"d_") == name) { // property / atom fcid = lmp->atom->find_custom(&name[2], ltype); if (fcid < 0) { - lmp->error->warning(FLERR,"lammps_scatter_subset: " - "unknown property/atom id"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter_subset: " + "unknown property/atom id"); return; } if (ltype != type) { - lmp->error->warning(FLERR,"lammps_scatter_subset: " - "mismatch property/atom type"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter_subset: " + "mismatch property/atom type"); return; } if (count != 1) { - lmp->error->warning(FLERR,"lammps_scatter_subset: " - "property/atom has count=1"); + if (lmp->comm->me == 0) + lmp->error->warning(FLERR,"lammps_scatter_subset: " + "property/atom has count=1"); return; } if(ltype==0) vptr = (void *) lmp->atom->ivector[fcid]; else vptr = (void *) lmp->atom->dvector[fcid]; - } if(vptr == nullptr) { + if (lmp->comm->me == 0) lmp->error->warning(FLERR,"lammps_scatter_atoms_subset: " "unknown property name"); - return; + return; } // copy = Natom length vector of per-atom values @@ -3971,95 +3739,503 @@ void lammps_scatter_subset(void *ptr, char *name, } } } - } - END_CAPTURE -} #endif - - -/* ---------------------------------------------------------------------- - find fix external with given ID and set the callback function - and caller pointer -------------------------------------------------------------------------- */ - -void lammps_set_fix_external_callback(void *handle, char *id, FixExternalFnPtr callback_ptr, void * caller) -{ - LAMMPS *lmp = (LAMMPS *) handle; - FixExternal::FnPtr callback = (FixExternal::FnPtr) callback_ptr; - - BEGIN_CAPTURE - { - int ifix = lmp->modify->find_fix(id); - if (ifix < 0) { - char str[128]; - snprintf(str, 128, "Can not find fix with ID '%s'!", id); - lmp->error->all(FLERR,str); - } - - Fix *fix = lmp->modify->fix[ifix]; - - if (strcmp("external",fix->style) != 0){ - char str[128]; - snprintf(str, 128, "Fix '%s' is not of style external!", id); - lmp->error->all(FLERR,str); - } - - FixExternal * fext = (FixExternal*) fix; - fext->set_callback(callback, caller); } END_CAPTURE } -/* set global energy contribution from fix external */ -void lammps_fix_external_set_energy_global(void *handle, char *id, - double energy) +/* ---------------------------------------------------------------------- */ + +/** Create N atoms from list of coordinates + * +\verbatim embed:rst + +The prototype for this function when compiling with ``-DLAMMPS_BIGBIG`` +is: + +.. code-block:: c + + int lammps_create_atoms(void *handle, int n, int64_t *id, int *type, double *x, double *v, int64_t *image, int bexpand); + +This function creates additional atoms from a given list of coordinates +and a list of atom types. Additionally the atom-IDs, velocities, and +image flags may be provided. If atom-IDs are not provided, they will be +automatically created as a sequence following the largest existing +atom-ID. + +This function is useful to add atoms to a simulation or - in tandem with +:cpp:func:`lammps_reset_box` - to restore a previously extracted and +saved state of a simulation. Additional properties for the new atoms +can then be assigned via the :cpp:func:`lammps_scatter_atoms` +:cpp:func:`lammps_extract_atom` functions. + +For non-periodic boundaries, atoms will **not** be created that have +coordinates outside the box unless it is a shrink-wrap boundary and the +shrinkexceed flag has been set to a non-zero value. For periodic +boundaries atoms will be wrapped back into the simulation cell and its +image flags adjusted accordingly, unless explicit image flags are +provided. + +The function returns the number of atoms created or -1 on failure, e.g. +when called before as box has been created. + +Coordinates and velocities have to be given in a 1d-array in the order +X(1),Y(1),Z(1),X(2),Y(2),Z(2),...,X(N),Y(N),Z(N). + +\endverbatim + * + * \param handle pointer to a previously created LAMMPS instance + * \param n number of atoms, N, to be added to the system + * \param id pointer to N atom IDs; ``NULL`` will generate IDs + * \param type pointer to N atom types (required) + * \param x pointer to 3N doubles with x-,y-,z- positions + of the new atoms (required) + * \param v pointer to 3N doubles with x-,y-,z- velocities + of the new atoms (set to 0.0 if ``NULL``) + * \param image pointer to N imageint sets of image flags, or ``NULL`` + * \param bexpand if 1, atoms outside of shrink-wrap boundaries will + still be created and not dropped and the box extended + * \return number of atoms created on success; + -1 on failure (no box, no atom IDs, etc.) */ + +int lammps_create_atoms(void *handle, int n, tagint *id, int *type, + double *x, double *v, imageint *image, + int bexpand) { LAMMPS *lmp = (LAMMPS *) handle; + bigint natoms_prev = lmp->atom->natoms; BEGIN_CAPTURE { - int ifix = lmp->modify->find_fix(id); - if (ifix < 0) - lmp->error->all(FLERR,fmt::format("Can not find fix with ID '{}'!", id)); + // error if box does not exist or tags not defined - Fix *fix = lmp->modify->fix[ifix]; + int flag = 0; + std::string msg("Failure in lammps_create_atoms: "); + if (lmp->domain->box_exist == 0) { + flag = 1; + msg += "trying to create atoms before before simulation box is defined"; + } + if (lmp->atom->tag_enable == 0) { + flag = 1; + msg += "must have atom IDs to use this function"; + } - if (strcmp("external",fix->style) != 0) - lmp->error->all(FLERR,fmt::format("Fix '{}' is not of style external!", id)); + if (flag) { + if (lmp->comm->me == 0) lmp->error->warning(FLERR,msg); + return -1; + } - FixExternal * fext = (FixExternal*) fix; - fext->set_energy_global(energy); + // loop over all N atoms on all MPI ranks + // if this proc would own it based on its coordinates, invoke create_atom() + // optionally set atom tags and velocities + + Atom *atom = lmp->atom; + Domain *domain = lmp->domain; + int nlocal = atom->nlocal; + + int nlocal_prev = nlocal; + double xdata[3]; + + for (int i = 0; i < n; i++) { + xdata[0] = x[3*i]; + xdata[1] = x[3*i+1]; + xdata[2] = x[3*i+2]; + imageint * img = image ? image + i : nullptr; + tagint tag = id ? id[i] : 0; + + // create atom only on MPI rank that would own it + + if (!domain->ownatom(tag, xdata, img, bexpand)) continue; + + atom->avec->create_atom(type[i],xdata); + if (id) atom->tag[nlocal] = id[i]; + else atom->tag[nlocal] = 0; + if (v) { + atom->v[nlocal][0] = v[3*i]; + atom->v[nlocal][1] = v[3*i+1]; + atom->v[nlocal][2] = v[3*i+2]; + } + if (image) atom->image[nlocal] = image[i]; + nlocal++; + } + + // if no tags are given explicitly, create new and unique tags + + if (id == nullptr) atom->tag_extend(); + + // reset box info, if extended when adding atoms. + + if (bexpand) domain->reset_box(); + + // need to reset atom->natoms inside LAMMPS + + bigint ncurrent = nlocal; + MPI_Allreduce(&ncurrent,&lmp->atom->natoms,1,MPI_LMP_BIGINT, + MPI_SUM,lmp->world); + + // init per-atom fix/compute/variable values for created atoms + + atom->data_fix_compute_variable(nlocal_prev,nlocal); + + // if global map exists, reset it + // invoke map_init() b/c atom count has grown + + if (lmp->atom->map_style != Atom::MAP_NONE) { + lmp->atom->map_init(); + lmp->atom->map_set(); + } } - END_CAPTURE + END_CAPTURE; + return (int) lmp->atom->natoms - natoms_prev; } -/* set global virial contribution from fix external */ -void lammps_fix_external_set_virial_global(void *handle, char *id, - double *virial) -{ - LAMMPS *lmp = (LAMMPS *) handle; +// ---------------------------------------------------------------------- +// Library functions for accessing neighbor lists +// ---------------------------------------------------------------------- - BEGIN_CAPTURE - { - int ifix = lmp->modify->find_fix(id); - if (ifix < 0) - lmp->error->all(FLERR,fmt::format("Can not find fix with ID '{}'!", id)); +/** Find neighbor list index of pair style neighbor list + * + * Try finding pair instance that matches style. If exact is set, the pair must + * match style exactly. If exact is 0, style must only be contained. If pair is + * of style pair/hybrid, style is instead matched the nsub-th hybrid sub-style. + * + * Once the pair instance has been identified, multiple neighbor list requests + * may be found. Every neighbor list is uniquely identified by its request + * index. Thus, providing this request index ensures that the correct neighbor + * list index is returned. + * + * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. + * \param style String used to search for pair style instance + * \param exact Flag to control whether style should match exactly or only + * must be contained in pair style name + * \param nsub match nsub-th hybrid sub-style + * \param request request index that specifies which neighbor list should be + * returned, in case there are multiple neighbor lists requests + * for the found pair style + * \return return neighbor list index if found, otherwise -1 */ - Fix *fix = lmp->modify->fix[ifix]; +int lammps_find_pair_neighlist(void* handle, char * style, int exact, int nsub, int request) { + LAMMPS * lmp = (LAMMPS *) handle; + Pair* pair = lmp->force->pair_match(style, exact, nsub); - if (strcmp("external",fix->style) != 0) - lmp->error->all(FLERR,fmt::format("Fix '{}' is not of style external!", id)); + if (pair != nullptr) { + // find neigh list + for (int i = 0; i < lmp->neighbor->nlist; i++) { + NeighList * list = lmp->neighbor->lists[i]; + if (list->requestor_type != NeighList::PAIR || pair != list->requestor) continue; - FixExternal * fext = (FixExternal*) fix; - fext->set_virial_global(virial); + if (list->index == request) { + return i; + } + } } - END_CAPTURE + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/** Find neighbor list index of fix neighbor list + * + * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. + * \param id Identifier of fix instance + * \param request request index that specifies which request should be returned, + * in case there are multiple neighbor lists for this fix + * \return return neighbor list index if found, otherwise -1 */ + +int lammps_find_fix_neighlist(void* handle, char *id, int request) { + LAMMPS * lmp = (LAMMPS *) handle; + Fix* fix = nullptr; + const int nfix = lmp->modify->nfix; + + // find fix with name + for (int ifix = 0; ifix < nfix; ifix++) { + if (strcmp(lmp->modify->fix[ifix]->id, id) == 0) { + fix = lmp->modify->fix[ifix]; + break; + } + } + + if (fix != nullptr) { + // find neigh list + for (int i = 0; i < lmp->neighbor->nlist; i++) { + NeighList * list = lmp->neighbor->lists[i]; + if (list->requestor_type != NeighList::FIX || fix != list->requestor) continue; + + if (list->index == request) { + return i; + } + } + } + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/** Find neighbor list index of compute neighbor list + * + * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. + * \param id Identifier of fix instance + * \param request request index that specifies which request should be returned, + * in case there are multiple neighbor lists for this fix + * \return return neighbor list index if found, otherwise -1 */ + +int lammps_find_compute_neighlist(void* handle, char *id, int request) { + LAMMPS * lmp = (LAMMPS *) handle; + Compute* compute = nullptr; + const int ncompute = lmp->modify->ncompute; + + // find compute with name + for (int icompute = 0; icompute < ncompute; icompute++) { + if (strcmp(lmp->modify->compute[icompute]->id, id) == 0) { + compute = lmp->modify->compute[icompute]; + break; + } + } + + if (compute != nullptr) { + // find neigh list + for (int i = 0; i < lmp->neighbor->nlist; i++) { + NeighList * list = lmp->neighbor->lists[i]; + if (list->requestor_type != NeighList::COMPUTE || compute != list->requestor) continue; + + if (list->index == request) { + return i; + } + } + } + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/** Return the number of entries in the neighbor list with given index + * + * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. + * \param idx neighbor list index + * \return return number of entries in neighbor list, -1 if idx is + * not a valid index + */ +int lammps_neighlist_num_elements(void *handle, int idx) { + LAMMPS * lmp = (LAMMPS *) handle; + Neighbor * neighbor = lmp->neighbor; + + if(idx < 0 || idx >= neighbor->nlist) { + return -1; + } + + NeighList * list = neighbor->lists[idx]; + return list->inum; +} + +/* ---------------------------------------------------------------------- */ + +/** Return atom local index, number of neighbors, and array of neighbor local + * atom indices of neighbor list entry + * + * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. + * \param idx index of this neighbor list in the list of all neighbor lists + * \param element index of this neighbor list entry + * \param[out] iatom local atom index (i.e. in the range [0, nlocal + nghost), -1 if + invalid idx or element value + * \param[out] numneigh number of neighbors of atom iatom or 0 + * \param[out] neighbors pointer to array of neighbor atom local indices or NULL */ + +void lammps_neighlist_element_neighbors(void *handle, int idx, int element, int *iatom, int *numneigh, int **neighbors) { + LAMMPS * lmp = (LAMMPS *) handle; + Neighbor * neighbor = lmp->neighbor; + *iatom = -1; + *numneigh = 0; + *neighbors = nullptr; + + if(idx < 0 || idx >= neighbor->nlist) { + return; + } + + NeighList * list = neighbor->lists[idx]; + + if(element < 0 || element >= list->inum) { + return; + } + + int i = list->ilist[element]; + *iatom = i; + *numneigh = list->numneigh[i]; + *neighbors = list->firstneigh[i]; } // ---------------------------------------------------------------------- // Library functions for accessing LAMMPS configuration // ---------------------------------------------------------------------- +/** Get numerical representation of the LAMMPS version date. + * +\verbatim embed:rst + +The :cpp:func:`lammps_version` function returns an integer representing +the version of the LAMMPS code in the format YYYYMMDD. This can be used +to implement backward compatibility in software using the LAMMPS library +interface. The specific format guarantees, that this version number is +growing with every new LAMMPS release. + +\endverbatim + * + * \param handle pointer to a previously created LAMMPS instance + * \return an integer representing the version data in the + * format YYYYMMDD */ + +int lammps_version(void *handle) +{ + LAMMPS *lmp = (LAMMPS *) handle; + return lmp->num_ver; +} + +/** Get operating system and architecture information + * +\verbatim embed:rst + +The :cpp:func:`lammps_get_os_info` function can be used to retrieve +detailed information about the hosting operating system and +compiler/runtime. +A suitable buffer for a C-style string has to be provided and its length. +If the assembled text will be truncated to not overflow this buffer. + +.. versionadded:: 9Oct2020 + +\endverbatim + * + * \param buffer string buffer to copy the information to + * \param buf_size size of the provided string buffer */ + +/* ---------------------------------------------------------------------- */ + +void lammps_get_os_info(char *buffer, int buf_size) +{ + if (buf_size <=0) return; + buffer[0] = buffer[buf_size-1] = '\0'; + std::string txt = Info::get_os_info() + "\n"; + txt += Info::get_compiler_info(); + txt += " with " + Info::get_openmp_info() + "\n"; + strncpy(buffer, txt.c_str(), buf_size-1); +} + +/* ---------------------------------------------------------------------- */ + +/** This function is used to query whether LAMMPS was compiled with + * a real MPI library or in serial. + * + * \return 0 when compiled with MPI STUBS, otherwise 1 */ + +int lammps_config_has_mpi_support() +{ +#ifdef MPI_STUBS + return 0; +#else + return 1; +#endif +} + +/* ---------------------------------------------------------------------- */ + +/** Check if the LAMMPS library supports compressed files via a pipe to gzip + +\verbatim embed:rst +Several LAMMPS commands (e.g. :doc:`read_data`, :doc:`write_data`, +:doc:`dump styles atom, custom, and xyz `) support reading and +writing compressed files via creating a pipe to the ``gzip`` program. +This function checks whether this feature was :ref:`enabled at compile +time `. It does **not** check whether the ``gzip`` itself is +installed and usable. +\endverbatim + * + * \return 1 if yes, otherwise 0 + */ +int lammps_config_has_gzip_support() { + return Info::has_gzip_support() ? 1 : 0; +} + +/* ---------------------------------------------------------------------- */ + +/** Check if the LAMMPS library supports writing PNG format images + +\verbatim embed:rst +The LAMMPS :doc:`dump style image ` supports writing multiple +image file formats. Most of them need, however, support from an external +library and using that has to be :ref:`enabled at compile time `. +This function checks whether support for the `PNG image file format +`_ is available +in the current LAMMPS library. +\endverbatim + * + * \return 1 if yes, otherwise 0 + */ +int lammps_config_has_png_support() { + return Info::has_png_support() ? 1 : 0; +} + +/* ---------------------------------------------------------------------- */ + +/** Check if the LAMMPS library supports writing JPEG format images + +\verbatim embed:rst +The LAMMPS :doc:`dump style image ` supports writing multiple +image file formats. Most of them need, however, support from an external +library and using that has to be :ref:`enabled at compile time `. +This function checks whether support for the `JPEG image file format +`_ is available in the current LAMMPS library. +\endverbatim + * + * \return 1 if yes, otherwise 0 + */ +int lammps_config_has_jpeg_support() { + return Info::has_jpeg_support() ? 1 : 0; +} + +/* ---------------------------------------------------------------------- */ + +/** Check if the LAMMPS library supports creating movie files via a pipe to ffmpeg + +\verbatim embed:rst +The LAMMPS :doc:`dump style movie ` supports generating movies +from images on-the-fly via creating a pipe to the +`ffmpeg `_ program. +This function checks whether this feature was :ref:`enabled at compile time `. +It does **not** check whether the ``ffmpeg`` itself is installed and usable. +\endverbatim + * + * \return 1 if yes, otherwise 0 + */ +int lammps_config_has_ffmpeg_support() { + return Info::has_ffmpeg_support() ? 1 : 0; +} + +/* ---------------------------------------------------------------------- */ + +/** Check whether LAMMPS errors will throw a C++ exception + * +\verbatim embed:rst +In case of errors LAMMPS will either abort or throw a C++ exception. +The latter has to be :ref:`enabled at compile time `. +This function checks if exceptions were enabled. + +When using the library interface and C++ exceptions are enabled, +the library interface functions will "catch" them and the +error status can then be checked by calling +:cpp:func:`lammps_has_error` and the most recent error message +can be retrieved via :cpp:func:`lammps_get_last_error_message`. +This can allow to restart a calculation or delete and recreate +the LAMMPS instance when C++ exceptions are enabled. One application +of using exceptions this way is the :ref:`lammps_shell`. If C++ +exceptions are disabled and an error happens during a call to +LAMMPS, the application will terminate. +\endverbatim + * \return 1 if yes, otherwise 0 + */ +int lammps_config_has_exceptions() { + return Info::has_exceptions() ? 1 : 0; +} + +/* ---------------------------------------------------------------------- */ + /** Check if a specific package has been included in LAMMPS * \verbatim embed:rst @@ -4371,297 +4547,6 @@ int lammps_id_name(void *handle, const char *category, int idx, return 0; } -/* ---------------------------------------------------------------------- */ - -/** This function is used to query whether LAMMPS was compiled with - * a real MPI library or in serial. - * - * \return 0 when compiled with MPI STUBS, otherwise 1 */ - -int lammps_config_has_mpi_support() -{ -#ifdef MPI_STUBS - return 0; -#else - return 1; -#endif -} - -/* ---------------------------------------------------------------------- */ - -/** Check if the LAMMPS library supports compressed files via a pipe to gzip - -\verbatim embed:rst -Several LAMMPS commands (e.g. :doc:`read_data`, :doc:`write_data`, -:doc:`dump styles atom, custom, and xyz `) support reading and -writing compressed files via creating a pipe to the ``gzip`` program. -This function checks whether this feature was :ref:`enabled at compile -time `. It does **not** check whether the ``gzip`` itself is -installed and usable. -\endverbatim - * - * \return 1 if yes, otherwise 0 - */ -int lammps_config_has_gzip_support() { - return Info::has_gzip_support() ? 1 : 0; -} - -/* ---------------------------------------------------------------------- */ - -/** Check if the LAMMPS library supports writing PNG format images - -\verbatim embed:rst -The LAMMPS :doc:`dump style image ` supports writing multiple -image file formats. Most of them need, however, support from an external -library and using that has to be :ref:`enabled at compile time `. -This function checks whether support for the `PNG image file format -`_ is available -in the current LAMMPS library. -\endverbatim - * - * \return 1 if yes, otherwise 0 - */ -int lammps_config_has_png_support() { - return Info::has_png_support() ? 1 : 0; -} - -/* ---------------------------------------------------------------------- */ - -/** Check if the LAMMPS library supports writing JPEG format images - -\verbatim embed:rst -The LAMMPS :doc:`dump style image ` supports writing multiple -image file formats. Most of them need, however, support from an external -library and using that has to be :ref:`enabled at compile time `. -This function checks whether support for the `JPEG image file format -`_ is available in the current LAMMPS library. -\endverbatim - * - * \return 1 if yes, otherwise 0 - */ -int lammps_config_has_jpeg_support() { - return Info::has_jpeg_support() ? 1 : 0; -} - -/* ---------------------------------------------------------------------- */ - -/** Check if the LAMMPS library supports creating movie files via a pipe to ffmpeg - -\verbatim embed:rst -The LAMMPS :doc:`dump style movie ` supports generating movies -from images on-the-fly via creating a pipe to the -`ffmpeg `_ program. -This function checks whether this feature was :ref:`enabled at compile time `. -It does **not** check whether the ``ffmpeg`` itself is installed and usable. -\endverbatim - * - * \return 1 if yes, otherwise 0 - */ -int lammps_config_has_ffmpeg_support() { - return Info::has_ffmpeg_support() ? 1 : 0; -} - -/* ---------------------------------------------------------------------- */ - -/** Check whether LAMMPS errors will throw a C++ exception - * -\verbatim embed:rst -In case of errors LAMMPS will either abort or throw a C++ exception. -The latter has to be :ref:`enabled at compile time `. -This function checks if exceptions were enabled. - -When using the library interface and C++ exceptions are enabled, -the library interface functions will "catch" them and the -error status can then be checked by calling -:cpp:func:`lammps_has_error` and the most recent error message -can be retrieved via :cpp:func:`lammps_get_last_error_message`. -This can allow to restart a calculation or delete and recreate -the LAMMPS instance when C++ exceptions are enabled. One application -of using exceptions this way is the :ref:`lammps_shell`. If C++ -exceptions are disabled and an error happens during a call to -LAMMPS, the application will terminate. -\endverbatim - * \return 1 if yes, otherwise 0 - */ -int lammps_config_has_exceptions() { - return Info::has_exceptions() ? 1 : 0; -} - -// ---------------------------------------------------------------------- -// Library functions for accessing neighbor lists -// ---------------------------------------------------------------------- - -/** Find neighbor list index of pair style neighbor list - * - * Try finding pair instance that matches style. If exact is set, the pair must - * match style exactly. If exact is 0, style must only be contained. If pair is - * of style pair/hybrid, style is instead matched the nsub-th hybrid sub-style. - * - * Once the pair instance has been identified, multiple neighbor list requests - * may be found. Every neighbor list is uniquely identified by its request - * index. Thus, providing this request index ensures that the correct neighbor - * list index is returned. - * - * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. - * \param style String used to search for pair style instance - * \param exact Flag to control whether style should match exactly or only - * must be contained in pair style name - * \param nsub match nsub-th hybrid sub-style - * \param request request index that specifies which neighbor list should be - * returned, in case there are multiple neighbor lists requests - * for the found pair style - * \return return neighbor list index if found, otherwise -1 - */ -int lammps_find_pair_neighlist(void* handle, char * style, int exact, int nsub, int request) { - LAMMPS * lmp = (LAMMPS *) handle; - Pair* pair = lmp->force->pair_match(style, exact, nsub); - - if (pair != nullptr) { - // find neigh list - for (int i = 0; i < lmp->neighbor->nlist; i++) { - NeighList * list = lmp->neighbor->lists[i]; - if (list->requestor_type != NeighList::PAIR || pair != list->requestor) continue; - - if (list->index == request) { - return i; - } - } - } - return -1; -} - -/* ---------------------------------------------------------------------- */ - -/** Find neighbor list index of fix neighbor list - * - * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. - * \param id Identifier of fix instance - * \param request request index that specifies which request should be returned, - * in case there are multiple neighbor lists for this fix - * \return return neighbor list index if found, otherwise -1 - */ -int lammps_find_fix_neighlist(void* handle, char * id, int request) { - LAMMPS * lmp = (LAMMPS *) handle; - Fix* fix = nullptr; - const int nfix = lmp->modify->nfix; - - // find fix with name - for (int ifix = 0; ifix < nfix; ifix++) { - if (strcmp(lmp->modify->fix[ifix]->id, id) == 0) { - fix = lmp->modify->fix[ifix]; - break; - } - } - - if (fix != nullptr) { - // find neigh list - for (int i = 0; i < lmp->neighbor->nlist; i++) { - NeighList * list = lmp->neighbor->lists[i]; - if (list->requestor_type != NeighList::FIX || fix != list->requestor) continue; - - if (list->index == request) { - return i; - } - } - } - return -1; -} - -/* ---------------------------------------------------------------------- */ - -/** Find neighbor list index of compute neighbor list - * - * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. - * \param id Identifier of fix instance - * \param request request index that specifies which request should be returned, - * in case there are multiple neighbor lists for this fix - * \return return neighbor list index if found, otherwise -1 - */ -int lammps_find_compute_neighlist(void* handle, char * id, int request) { - LAMMPS * lmp = (LAMMPS *) handle; - Compute* compute = nullptr; - const int ncompute = lmp->modify->ncompute; - - // find compute with name - for (int icompute = 0; icompute < ncompute; icompute++) { - if (strcmp(lmp->modify->compute[icompute]->id, id) == 0) { - compute = lmp->modify->compute[icompute]; - break; - } - } - - if (compute != nullptr) { - // find neigh list - for (int i = 0; i < lmp->neighbor->nlist; i++) { - NeighList * list = lmp->neighbor->lists[i]; - if (list->requestor_type != NeighList::COMPUTE || compute != list->requestor) continue; - - if (list->index == request) { - return i; - } - } - } - return -1; -} - -/* ---------------------------------------------------------------------- */ - -/** Return the number of entries in the neighbor list with given index - * - * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. - * \param idx neighbor list index - * \return return number of entries in neighbor list, -1 if idx is - * not a valid index - */ -int lammps_neighlist_num_elements(void * handle, int idx) { - LAMMPS * lmp = (LAMMPS *) handle; - Neighbor * neighbor = lmp->neighbor; - - if(idx < 0 || idx >= neighbor->nlist) { - return -1; - } - - NeighList * list = neighbor->lists[idx]; - return list->inum; -} - -/* ---------------------------------------------------------------------- */ - -/** Return atom local index, number of neighbors, and array of neighbor local - * atom indices of neighbor list entry - * - * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. - * \param idx index of this neighbor list in the list of all neighbor lists - * \param element index of this neighbor list entry - * \param[out] iatom local atom index (i.e. in the range [0, nlocal + nghost), -1 if - invalid idx or element value - * \param[out] numneigh number of neighbors of atom iatom or 0 - * \param[out] neighbors pointer to array of neighbor atom local indices or - * NULL - */ -void lammps_neighlist_element_neighbors(void * handle, int idx, int element, int * iatom, int * numneigh, int ** neighbors) { - LAMMPS * lmp = (LAMMPS *) handle; - Neighbor * neighbor = lmp->neighbor; - *iatom = -1; - *numneigh = 0; - *neighbors = nullptr; - - if(idx < 0 || idx >= neighbor->nlist) { - return; - } - - NeighList * list = neighbor->lists[idx]; - - if(element < 0 || element >= list->inum) { - return; - } - - int i = list->ilist[element]; - *iatom = i; - *numneigh = list->numneigh[i]; - *neighbors = list->firstneigh[i]; -} - // ---------------------------------------------------------------------- // utility functions // ---------------------------------------------------------------------- @@ -4733,6 +4618,107 @@ void lammps_decode_image_flags(imageint image, int *flags) flags[2] = (image >> IMG2BITS) - IMGMAX; } +/* ---------------------------------------------------------------------- + find fix external with given ID and set the callback function + and caller pointer +------------------------------------------------------------------------- */ + +void lammps_set_fix_external_callback(void *handle, char *id, FixExternalFnPtr callback_ptr, void * caller) +{ + LAMMPS *lmp = (LAMMPS *) handle; + FixExternal::FnPtr callback = (FixExternal::FnPtr) callback_ptr; + + BEGIN_CAPTURE + { + int ifix = lmp->modify->find_fix(id); + if (ifix < 0) { + char str[128]; + snprintf(str, 128, "Can not find fix with ID '%s'!", id); + lmp->error->all(FLERR,str); + } + + Fix *fix = lmp->modify->fix[ifix]; + + if (strcmp("external",fix->style) != 0){ + char str[128]; + snprintf(str, 128, "Fix '%s' is not of style external!", id); + lmp->error->all(FLERR,str); + } + + FixExternal * fext = (FixExternal*) fix; + fext->set_callback(callback, caller); + } + END_CAPTURE +} + +/* set global energy contribution from fix external */ +void lammps_fix_external_set_energy_global(void *handle, char *id, + double energy) +{ + LAMMPS *lmp = (LAMMPS *) handle; + + BEGIN_CAPTURE + { + int ifix = lmp->modify->find_fix(id); + if (ifix < 0) + lmp->error->all(FLERR,fmt::format("Can not find fix with ID '{}'!", id)); + + Fix *fix = lmp->modify->fix[ifix]; + + if (strcmp("external",fix->style) != 0) + lmp->error->all(FLERR,fmt::format("Fix '{}' is not of style external!", id)); + + FixExternal * fext = (FixExternal*) fix; + fext->set_energy_global(energy); + } + END_CAPTURE +} + +/* set global virial contribution from fix external */ +void lammps_fix_external_set_virial_global(void *handle, char *id, + double *virial) +{ + LAMMPS *lmp = (LAMMPS *) handle; + + BEGIN_CAPTURE + { + int ifix = lmp->modify->find_fix(id); + if (ifix < 0) + lmp->error->all(FLERR,fmt::format("Can not find fix with ID '{}'!", id)); + + Fix *fix = lmp->modify->fix[ifix]; + + if (strcmp("external",fix->style) != 0) + lmp->error->all(FLERR,fmt::format("Fix '{}' is not of style external!", id)); + + FixExternal * fext = (FixExternal*) fix; + fext->set_virial_global(virial); + } + END_CAPTURE +} + +/* ---------------------------------------------------------------------- */ + +/** Free memory buffer allocated by LAMMPS. + * +\verbatim embed:rst + +Some of the LAMMPS C library interface functions return data as pointer +to a buffer that has been allocated by LAMMPS or the library interface. +This function can be used to delete those in order to avoid memory +leaks. + +\endverbatim + * + * \param ptr pointer to data allocated by LAMMPS */ + +void lammps_free(void *ptr) +{ + free(ptr); +} + +/* ---------------------------------------------------------------------- */ + /** Check if LAMMPS is currently inside a run or minimization * * This function can be used from signal handlers or multi-threaded @@ -4819,8 +4805,8 @@ the failing MPI ranks to send messages. * \param handle pointer to a previously created LAMMPS instance cast to ``void *``. * \param buffer string buffer to copy the error message to * \param buf_size size of the provided string buffer - * \return 1 when all ranks had the error, 2 on a single rank error. - */ + * \return 1 when all ranks had the error, 2 on a single rank error. */ + int lammps_get_last_error_message(void *handle, char *buffer, int buf_size) { #ifdef LAMMPS_EXCEPTIONS LAMMPS *lmp = (LAMMPS *) handle; diff --git a/src/library.h b/src/library.h index 36b07a4fe5..7806903e49 100644 --- a/src/library.h +++ b/src/library.h @@ -93,9 +93,9 @@ void *lammps_open(int argc, char **argv, MPI_Comm comm, void **ptr); void *lammps_open_no_mpi(int argc, char **argv, void **ptr); void *lammps_open_fortran(int argc, char **argv, int f_comm); void lammps_close(void *handle); + void lammps_mpi_init(); void lammps_mpi_finalize(); -void lammps_free(void *ptr); /* ---------------------------------------------------------------------- * Library functions to process commands @@ -111,25 +111,53 @@ void lammps_commands_string(void *handle, const char *str); * Library functions to extract info from LAMMPS or set data in LAMMPS * ----------------------------------------------------------------------- */ -int lammps_version(void *handle); -void lammps_get_os_info(char *buffer, int buf_size); -void lammps_memory_usage(void *handle, double *meminfo); -int lammps_get_mpi_comm(void *handle); double lammps_get_natoms(void *handle); double lammps_get_thermo(void *handle, const char *keyword); -void lammps_extract_box(void *handle, double *boxlo, double *boxhi, - double *xy, double *yz, double *xz, - int *pflags, int *boxflag); -void lammps_reset_box(void *handle, double *boxlo, double *boxhi, - double xy, double yz, double xz); +void lammps_extract_box(void *handle, double *boxlo, double *boxhi, + double *xy, double *yz, double *xz, + int *pflags, int *boxflag); +void lammps_reset_box(void *handle, double *boxlo, double *boxhi, + double xy, double yz, double xz); -int lammps_extract_setting(void *handle, const char *keyword); -void *lammps_extract_global(void *handle, const char *name); +void lammps_memory_usage(void *handle, double *meminfo); +int lammps_get_mpi_comm(void *handle); + +int lammps_extract_setting(void *handle, const char *keyword); +int lammps_extract_global_datatype(void *handle, const char *name); +void *lammps_extract_global(void *handle, const char *name); + +/* ---------------------------------------------------------------------- + * Library functions to read or modify per-atom data in LAMMPS + * ---------------------------------------------------------------------- */ + +int lammps_extract_atom_datatype(void *handle, const char *name); void *lammps_extract_atom(void *handle, const char *name); -int lammps_extract_global_datatype(void *handle, const char *name); -int lammps_extract_atom_datatype(void *handle, const char *name); +/* ---------------------------------------------------------------------- + * Library functions to access data from computes, fixes, variables in LAMMPS + * ---------------------------------------------------------------------- */ + +void *lammps_extract_compute(void *handle, char *id, int, int); +void *lammps_extract_fix(void *handle, char *, int, int, int, int); +void *lammps_extract_variable(void *handle, const char *, const char *); +int lammps_set_variable(void *, char *, char *); + +/* ---------------------------------------------------------------------- + * Library functions for scatter/gather operations of data + * ---------------------------------------------------------------------- */ + +void lammps_gather_atoms(void *handle, char *name, int type, int count, void *data); +void lammps_gather_atoms_concat(void *handle, char *name, int type, int count, void *data); +void lammps_gather_atoms_subset(void *handle, char *name, int type, int count, int ndata, int *ids, void *data); +void lammps_scatter_atoms(void *handle, char *name, int type, int count, void *data); +void lammps_scatter_atoms_subset(void *handle, char *name, int type, int count, int ndata, int *ids, void *data); + +void lammps_gather(void *handle, char *name, int type, int count, void *data); +void lammps_gather_concat(void *handle, char *name, int type, int count, void *data); +void lammps_gather_subset(void *handle, char *name, int type, int count, int ndata, int *ids, void *data); +void lammps_scatter(void *handle, char *name, int type, int count, void *data); +void lammps_scatter_subset(void *handle, char *name, int type, int count, int ndata, int *ids, void *data); #if !defined(LAMMPS_BIGBIG) int lammps_create_atoms(void *handle, int n, int *id, int *type, @@ -140,46 +168,33 @@ int lammps_create_atoms(void *handle, int n, int64_t *id, int *type, #endif /* ---------------------------------------------------------------------- - * Library functions to access data from computes, fixes, variables in LAMMPS + * Library functions for accessing neighbor lists * ---------------------------------------------------------------------- */ -void *lammps_extract_compute(void *handle, char *id, int, int); -void *lammps_extract_fix(void *handle, char *, int, int, int, int); -void *lammps_extract_variable(void *handle, char *, char *); -int lammps_set_variable(void *, char *, char *); - -/* ---------------------------------------------------------------------- - * Library functions for scatter/gather operations of data - * ---------------------------------------------------------------------- */ - - -void lammps_gather(void *, char *, int, int, void *); -void lammps_gather_concat(void *, char *, int, int, void *); -void lammps_gather_subset(void *, char *, int, int, int, int *, void *); -void lammps_scatter(void *, char *, int, int, void *); -void lammps_scatter_subset(void *, char *, int, int, int, int *, void *); - - -void lammps_gather_atoms(void *, char *, int, int, void *); -void lammps_gather_atoms_concat(void *, char *, int, int, void *); -void lammps_gather_atoms_subset(void *, char *, int, int, int, int *, void *); -void lammps_scatter_atoms(void *, char *, int, int, void *); -void lammps_scatter_atoms_subset(void *, char *, int, int, int, int *, void *); +int lammps_find_pair_neighlist(void *handle, char *style, int exact, int nsub, int request); +int lammps_find_fix_neighlist(void *handle, char *id, int request); +int lammps_find_compute_neighlist(void *handle, char *id, int request); +int lammps_neighlist_num_elements(void *handle, int idx); +void lammps_neighlist_element_neighbors(void *handle, int idx, int element, int *iatom, int *numneigh, int **neighbors); /* ---------------------------------------------------------------------- * Library functions for retrieving configuration information * ---------------------------------------------------------------------- */ +int lammps_version(void *handle); +void lammps_get_os_info(char *buffer, int buf_size); + int lammps_config_has_mpi_support(); -int lammps_config_has_package(const char *); -int lammps_config_package_count(); -int lammps_config_package_name(int, char *, int); int lammps_config_has_gzip_support(); int lammps_config_has_png_support(); int lammps_config_has_jpeg_support(); int lammps_config_has_ffmpeg_support(); int lammps_config_has_exceptions(); +int lammps_config_has_package(const char *); +int lammps_config_package_count(); +int lammps_config_package_name(int, char *, int); + int lammps_has_style(void *, const char *, const char *); int lammps_style_count(void *, const char *); int lammps_style_name(void *, const char *, int, char *, int); @@ -188,16 +203,6 @@ int lammps_has_id(void *, const char *, const char *); int lammps_id_count(void *, const char *); int lammps_id_name(void *, const char *, int, char *, int); -/* ---------------------------------------------------------------------- - * Library functions for accessing neighbor lists - * ---------------------------------------------------------------------- */ - -int lammps_find_pair_neighlist(void*, char *, int, int, int); -int lammps_find_fix_neighlist(void*, char *, int); -int lammps_find_compute_neighlist(void*, char *, int); -int lammps_neighlist_num_elements(void*, int); -void lammps_neighlist_element_neighbors(void *, int, int, int *, int *, int ** ); - /* ---------------------------------------------------------------------- * Utility functions * ---------------------------------------------------------------------- */ @@ -223,7 +228,9 @@ void lammps_set_fix_external_callback(void *, char *, FixExternalFnPtr, void*); void lammps_fix_external_set_energy_global(void *, char *, double); void lammps_fix_external_set_virial_global(void *, char *, double *); -int lammps_is_running(void *handle); +void lammps_free(void *ptr); + +int lammps_is_running(void *handle); void lammps_force_timeout(void *handle); int lammps_has_error(void *handle); diff --git a/src/min.cpp b/src/min.cpp index ac711d8900..ca0d508e95 100644 --- a/src/min.cpp +++ b/src/min.cpp @@ -144,11 +144,12 @@ void Min::init() requestor = nullptr; // virial_style: - // 1 if computed explicitly by pair->compute via sum over pair interactions - // 2 if computed implicitly by pair->virial_compute via sum over ghost atoms + // VIRIAL_PAIR if computed explicitly in pair via sum over pair interactions + // VIRIAL_FDOTR if computed implicitly in pair by + // virial_fdotr_compute() via sum over ghosts - if (force->newton_pair) virial_style = 2; - else virial_style = 1; + if (force->newton_pair) virial_style = VIRIAL_FDOTR; + else virial_style = VIRIAL_PAIR; // setup lists of computes for global and per-atom PE and pressure @@ -801,19 +802,16 @@ void Min::ev_setup() invoke matchstep() on all timestep-dependent computes to clear their arrays eflag/vflag based on computes that need info on this ntimestep always set eflag_global = 1, since need energy every iteration - eflag = 0 = no energy computation - eflag = 1 = global energy only - eflag = 2 = per-atom energy only - eflag = 3 = both global and per-atom energy - vflag = 0 = no virial computation (pressure) - vflag = 1 = global virial with pair portion via sum of pairwise interactions - vflag = 2 = global virial with pair portion via F dot r including ghosts - vflag = 4 = per-atom virial only - vflag = 5 or 6 = both global and per-atom virial - vflag = 8 = per-atom centroid virial only - vflag = 9 or 10 = both global and per-atom centroid virial - vflag = 12 = both per-atom virial and per-atom centroid virial - vflag = 13 or 15 = global, per-atom virial and per-atom centroid virial + eflag: set any or no bits + ENERGY_GLOBAL bit for global energy + ENERGY_ATOM bit for per-atom energy + vflag: set any or no bits, but GLOBAL/FDOTR bit cannot both be set + VIRIAL_PAIR bit for global virial as sum of pairwise terms + VIRIAL_FDOTR bit for global virial via F dot r + VIRIAL_ATOM bit for per-atom virial + VIRIAL_CENTROID bit for per-atom centroid virial + all force components (pair,bond,angle,...,kspace) use eflag/vflag + in their ev_setup() method to set local energy/virial flags ------------------------------------------------------------------------- */ void Min::ev_set(bigint ntimestep) @@ -828,7 +826,7 @@ void Min::ev_set(bigint ntimestep) int eflag_atom = 0; for (i = 0; i < nelist_atom; i++) if (elist_atom[i]->matchstep(ntimestep)) flag = 1; - if (flag) eflag_atom = 2; + if (flag) eflag_atom = ENERGY_ATOM; if (eflag_global) update->eflag_global = update->ntimestep; if (eflag_atom) update->eflag_atom = update->ntimestep; @@ -844,13 +842,13 @@ void Min::ev_set(bigint ntimestep) int vflag_atom = 0; for (i = 0; i < nvlist_atom; i++) if (vlist_atom[i]->matchstep(ntimestep)) flag = 1; - if (flag) vflag_atom = 4; + if (flag) vflag_atom = VIRIAL_ATOM; flag = 0; int cvflag_atom = 0; for (i = 0; i < ncvlist_atom; i++) if (cvlist_atom[i]->matchstep(ntimestep)) flag = 1; - if (flag) cvflag_atom = 8; + if (flag) cvflag_atom = VIRIAL_CENTROID; if (vflag_global) update->vflag_global = update->ntimestep; if (vflag_atom || cvflag_atom) update->vflag_atom = update->ntimestep; diff --git a/src/modify.cpp b/src/modify.cpp index a88d6d54cc..2d0c23d125 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -998,6 +998,23 @@ void Modify::replace_fix(const char *replaceID, add_fix(narg,arg,trysuffix); } +/* ---------------------------------------------------------------------- + convenience function to allow replacing a fix from a single string +------------------------------------------------------------------------- */ + +void Modify::replace_fix(const std::string &oldfix, + const std::string &fixcmd, int trysuffix) +{ + auto args = utils::split_words(fixcmd); + char **newarg = new char*[args.size()]; + int i=0; + for (const auto &arg : args) { + newarg[i++] = (char *)arg.c_str(); + } + replace_fix(oldfix.c_str(),args.size(),newarg,trysuffix); + delete[] newarg; +} + /* ---------------------------------------------------------------------- one instance per fix in style_fix.h ------------------------------------------------------------------------- */ diff --git a/src/modify.h b/src/modify.h index ee14baf638..a347e8486d 100644 --- a/src/modify.h +++ b/src/modify.h @@ -101,6 +101,7 @@ class Modify : protected Pointers { void add_fix(int, char **, int trysuffix=1); void add_fix(const std::string &, int trysuffix=1); void replace_fix(const char *, int, char **, int trysuffix=1); + void replace_fix(const std::string &, const std::string &, int trysuffix=1); void modify_fix(int, char **); void delete_fix(const std::string &); void delete_fix(int); diff --git a/src/molecule.cpp b/src/molecule.cpp index b4f16525e9..d85cf47c71 100644 --- a/src/molecule.cpp +++ b/src/molecule.cpp @@ -55,9 +55,6 @@ Molecule::Molecule(LAMMPS *lmp, int narg, char **arg, int &index) : if (index >= narg) error->all(FLERR,"Illegal molecule command"); - if (domain->box_exist == 0) - error->all(FLERR,"Molecule command before simulation box is defined"); - int n = strlen(arg[0]) + 1; id = new char[n]; strcpy(id,arg[0]); @@ -512,7 +509,6 @@ void Molecule::read(int flag) // count = vector for tallying bonds,angles,etc per atom if (flag == 0) memory->create(count,natoms,"molecule:count"); - else count = nullptr; // grab keyword and skip next line @@ -619,10 +615,6 @@ void Molecule::read(int flag) parse_keyword(1,line,keyword); } - // clean up - - memory->destroy(count); - // error check if (flag == 0) { @@ -668,6 +660,10 @@ void Molecule::read(int flag) maxradius = radius[0]; } } + + // clean up + + if (flag) memory->destroy(count); } /* ---------------------------------------------------------------------- @@ -676,6 +672,7 @@ void Molecule::read(int flag) void Molecule::coords(char *line) { + for (int i = 0; i < natoms; i++) count[i] = 0; try { for (int i = 0; i < natoms; i++) { readline(line); @@ -683,20 +680,25 @@ void Molecule::coords(char *line) ValueTokenizer values(line); if (values.count() != 4) error->one(FLERR,"Invalid Coords section in molecule file"); - values.next_int(); - x[i][0] = values.next_double(); - x[i][1] = values.next_double(); - x[i][2] = values.next_double(); + int iatom = values.next_int() - 1; + if (iatom < 0 || iatom >= natoms) error->one(FLERR,"Invalid Coords section in molecule file"); + count[iatom]++; + x[iatom][0] = values.next_double(); + x[iatom][1] = values.next_double(); + x[iatom][2] = values.next_double(); - x[i][0] *= sizescale; - x[i][1] *= sizescale; - x[i][2] *= sizescale; + x[iatom][0] *= sizescale; + x[iatom][1] *= sizescale; + x[iatom][2] *= sizescale; } } catch (TokenizerException &e) { error->one(FLERR, fmt::format("Invalid Coords section in molecule file\n" "{}", e.what())); } + for (int i = 0; i < natoms; i++) + if (count[i] == 0) error->all(FLERR,"Invalid Coords section in molecule file"); + if (domain->dimension == 2) { for (int i = 0; i < natoms; i++) if (x[i][2] != 0.0) @@ -711,6 +713,7 @@ void Molecule::coords(char *line) void Molecule::types(char *line) { + for (int i = 0; i < natoms; i++) count[i] = 0; try { for (int i = 0; i < natoms; i++) { readline(line); @@ -718,9 +721,11 @@ void Molecule::types(char *line) ValueTokenizer values(line); if (values.count() != 2) error->one(FLERR,"Invalid Types section in molecule file"); - values.next_int(); - type[i] = values.next_int(); - type[i] += toffset; + int iatom = values.next_int() - 1; + if (iatom < 0 || iatom >= natoms) error->one(FLERR,"Invalid Types section in molecule file"); + count[iatom]++; + type[iatom] = values.next_int(); + type[iatom] += toffset; } } catch (TokenizerException &e) { error->one(FLERR, fmt::format("Invalid Types section in molecule file\n" @@ -728,7 +733,10 @@ void Molecule::types(char *line) } for (int i = 0; i < natoms; i++) - if (type[i] <= 0 || type[i] > atom->ntypes) + if (count[i] == 0) error->all(FLERR,"Invalid Types section in molecule file"); + + for (int i = 0; i < natoms; i++) + if ((type[i] <= 0) || (domain->box_exist && (type[i] > atom->ntypes))) error->all(FLERR,"Invalid atom type in molecule file"); for (int i = 0; i < natoms; i++) @@ -742,21 +750,27 @@ void Molecule::types(char *line) void Molecule::molecules(char *line) { + for (int i = 0; i < natoms; i++) count[i] = 0; try { for (int i = 0; i < natoms; i++) { readline(line); ValueTokenizer values(line); if (values.count() != 2) error->one(FLERR,"Invalid Molecules section in molecule file"); - values.next_int(); - molecule[i] = values.next_int(); - // molecule[i] += moffset; // placeholder for possible molecule offset + int iatom = values.next_int() - 1; + if (iatom < 0 || iatom >= natoms) error->one(FLERR,"Invalid Molecules section in molecule file"); + count[iatom]++; + molecule[iatom] = values.next_tagint(); + // molecule[iatom] += moffset; // placeholder for possible molecule offset } } catch (TokenizerException &e) { error->one(FLERR, fmt::format("Invalid Molecules section in molecule file\n" "{}", e.what())); } + for (int i = 0; i < natoms; i++) + if (count[i] == 0) error->all(FLERR,"Invalid Molecules section in molecule file"); + for (int i = 0; i < natoms; i++) if (molecule[i] <= 0) error->all(FLERR,"Invalid molecule ID in molecule file"); @@ -801,6 +815,7 @@ void Molecule::fragments(char *line) void Molecule::charges(char *line) { + for (int i = 0; i < natoms; i++) count[i] = 0; try { for (int i = 0; i < natoms; i++) { readline(line); @@ -808,13 +823,18 @@ void Molecule::charges(char *line) ValueTokenizer values(line); if ((int)values.count() != 2) error->one(FLERR,"Invalid Charges section in molecule file"); - values.next_int(); - q[i] = values.next_double(); + int iatom = values.next_int() - 1; + if (iatom < 0 || iatom >= natoms) error->one(FLERR,"Invalid Charges section in molecule file"); + count[iatom]++; + q[iatom] = values.next_double(); } } catch (TokenizerException &e) { error->one(FLERR, fmt::format("Invalid Charges section in molecule file\n" "{}", e.what())); } + + for (int i = 0; i < natoms; i++) + if (count[i] == 0) error->all(FLERR,"Invalid Charges section in molecule file"); } /* ---------------------------------------------------------------------- @@ -823,6 +843,7 @@ void Molecule::charges(char *line) void Molecule::diameters(char *line) { + for (int i = 0; i < natoms; i++) count[i] = 0; try { maxradius = 0.0; for (int i = 0; i < natoms; i++) { @@ -831,17 +852,22 @@ void Molecule::diameters(char *line) ValueTokenizer values(line); if (values.count() != 2) error->one(FLERR,"Invalid Diameters section in molecule file"); - values.next_int(); - radius[i] = values.next_double(); - radius[i] *= sizescale; - radius[i] *= 0.5; - maxradius = MAX(maxradius,radius[i]); + int iatom = values.next_int() - 1; + if (iatom < 0 || iatom >= natoms) error->one(FLERR,"Invalid Diameters section in molecule file"); + count[iatom]++; + radius[iatom] = values.next_double(); + radius[iatom] *= sizescale; + radius[iatom] *= 0.5; + maxradius = MAX(maxradius,radius[iatom]); } } catch (TokenizerException &e) { error->one(FLERR, fmt::format("Invalid Diameters section in molecule file\n" "{}", e.what())); } + for (int i = 0; i < natoms; i++) + if (count[i] == 0) error->all(FLERR,"Invalid Diameters section in molecule file"); + for (int i = 0; i < natoms; i++) if (radius[i] < 0.0) error->all(FLERR,"Invalid atom diameter in molecule file"); @@ -853,6 +879,7 @@ void Molecule::diameters(char *line) void Molecule::masses(char *line) { + for (int i = 0; i < natoms; i++) count[i] = 0; try { for (int i = 0; i < natoms; i++) { readline(line); @@ -860,15 +887,20 @@ void Molecule::masses(char *line) ValueTokenizer values(line); if (values.count() != 2) error->one(FLERR,"Invalid Masses section in molecule file"); - values.next_int(); - rmass[i] = values.next_double(); - rmass[i] *= sizescale*sizescale*sizescale; + int iatom = values.next_int() - 1; + if (iatom < 0 || iatom >= natoms) error->one(FLERR,"Invalid Masses section in molecule file"); + count[iatom]++; + rmass[iatom] = values.next_double(); + rmass[iatom] *= sizescale*sizescale*sizescale; } } catch (TokenizerException &e) { error->one(FLERR, fmt::format("Invalid Masses section in molecule file\n" "{}", e.what())); } + for (int i = 0; i < natoms; i++) + if (count[i] == 0) error->all(FLERR,"Invalid Masses section in molecule file"); + for (int i = 0; i < natoms; i++) if (rmass[i] <= 0.0) error->all(FLERR,"Invalid atom mass in molecule file"); } @@ -912,7 +944,7 @@ void Molecule::bonds(int flag, char *line) if ((atom1 <= 0) || (atom1 > natoms) || (atom2 <= 0) || (atom2 > natoms) || (atom1 == atom2)) error->one(FLERR,"Invalid atom ID in Bonds section of molecule file"); - if (itype <= 0 || itype > atom->nbondtypes) + if ((itype <= 0) || (domain->box_exist && (itype > atom->nbondtypes))) error->one(FLERR,"Invalid bond type in Bonds section of molecule file"); if (flag) { @@ -983,7 +1015,7 @@ void Molecule::angles(int flag, char *line) (atom3 <= 0) || (atom3 > natoms) || (atom1 == atom2) || (atom1 == atom3) || (atom2 == atom3)) error->one(FLERR,"Invalid atom ID in Angles section of molecule file"); - if (itype <= 0 || itype > atom->nangletypes) + if ((itype <= 0) || (domain->box_exist && (itype > atom->nangletypes))) error->one(FLERR,"Invalid angle type in Angles section of molecule file"); if (flag) { @@ -1071,9 +1103,8 @@ void Molecule::dihedrals(int flag, char *line) (atom2 == atom3) || (atom2 == atom4) || (atom3 == atom4)) error->one(FLERR, "Invalid atom ID in dihedrals section of molecule file"); - if (itype <= 0 || itype > atom->ndihedraltypes) - error->one(FLERR, - "Invalid dihedral type in dihedrals section of molecule file"); + if ((itype <= 0) || (domain->box_exist && (itype > atom->ndihedraltypes))) + error->one(FLERR,"Invalid dihedral type in Dihedrals section of molecule file"); if (flag) { m = atom2-1; @@ -1171,9 +1202,8 @@ void Molecule::impropers(int flag, char *line) (atom2 == atom3) || (atom2 == atom4) || (atom3 == atom4)) error->one(FLERR, "Invalid atom ID in impropers section of molecule file"); - if (itype <= 0 || itype > atom->nimpropertypes) - error->one(FLERR, - "Invalid improper type in impropers section of molecule file"); + if ((itype <= 0) || (domain->box_exist && (itype > atom->nimpropertypes))) + error->one(FLERR,"Invalid improper type in Impropers section of molecule file"); if (flag) { m = atom2-1; @@ -1301,7 +1331,6 @@ void Molecule::special_generate() { int newton_bond = force->newton_bond; tagint atom1,atom2; - int *count = new int[natoms]; // temporary array for special atoms @@ -1387,7 +1416,6 @@ void Molecule::special_generate() } } } - delete[] count; maxspecial = 0; for (int i = 0; i < natoms; i++) @@ -1476,6 +1504,11 @@ void Molecule::shakeatom_read(char *line) nwant = 5; break; + case 0: + values.next_int(); + nwant = 1; + break; + default: error->one(FLERR,"Invalid shake atom in molecule file"); } @@ -1542,6 +1575,11 @@ void Molecule::shaketype_read(char *line) nwant = 4; break; + case 0: + values.next_int(); + nwant = 1; + break; + default: error->one(FLERR,"Invalid shake type data in molecule file"); } diff --git a/src/pair.cpp b/src/pair.cpp index 1ff2322b48..0f97b83622 100644 --- a/src/pair.cpp +++ b/src/pair.cpp @@ -74,9 +74,10 @@ Pair::Pair(LAMMPS *lmp) : Pointers(lmp) setflag = nullptr; cutsq = nullptr; - ewaldflag = pppmflag = msmflag = dispersionflag = tip4pflag = dipoleflag = spinflag = 0; + ewaldflag = pppmflag = msmflag = dispersionflag = + tip4pflag = dipoleflag = spinflag = 0; reinitflag = 1; - centroidstressflag = 4; + centroidstressflag = CENTROID_SAME; // pair_modify settings @@ -776,35 +777,47 @@ void Pair::del_tally_callback(Compute *ptr) /* ---------------------------------------------------------------------- setup for energy, virial computation - see integrate::ev_set() for values of eflag (0-3) and vflag (0-6) + see integrate::ev_set() for bitwise settings of eflag/vflag + set the following flags, values are otherwise set to 0: + eflag_global != 0 if ENERGY_GLOBAL bit of eflag set + eflag_atom != 0 if ENERGY_ATOM bit of eflag set + eflag_either != 0 if eflag_global or eflag_atom is set + vflag_global != 0 if VIRIAL_PAIR bit of vflag set, OR + if VIRIAL_FDOTR bit of vflag is set but no_virial_fdotr = 1 + vflag_fdotr != 0 if VIRIAL_FDOTR bit of vflag set and no_virial_fdotr = 0 + vflag_atom != 0 if VIRIAL_ATOM bit of vflag set, OR + if VIRIAL_CENTROID bit of vflag set + and centroidstressflag != CENTROID_AVAIL + cvflag_atom != 0 if VIRIAL_CENTROID bit of vflag set + and centroidstressflag = CENTROID_AVAIL + vflag_either != 0 if any of vflag_global, vflag_atom, cvflag_atom is set + evflag != 0 if eflag_either or vflag_either is set + centroidstressflag is set by the pair style to one of these values: + CENTROID_SAME = same as two-body stress + CENTROID_AVAIL = different and implemented + CENTROID_NOTAVAIL = different but not yet implemented ------------------------------------------------------------------------- */ void Pair::ev_setup(int eflag, int vflag, int alloc) { int i,n; - evflag = 1; - eflag_either = eflag; - eflag_global = eflag % 2; - eflag_atom = eflag / 2; - - vflag_global = vflag % 4; - vflag_atom = vflag & 4; + eflag_global = eflag & ENERGY_GLOBAL; + eflag_atom = eflag & ENERGY_ATOM; + + vflag_global = vflag & VIRIAL_PAIR; + if (vflag & VIRIAL_FDOTR && no_virial_fdotr_compute == 1) vflag_global = 1; + vflag_fdotr = 0; + if (vflag & VIRIAL_FDOTR && no_virial_fdotr_compute == 0) vflag_fdotr = 1; + vflag_atom = vflag & VIRIAL_ATOM; + if (vflag & VIRIAL_CENTROID && centroidstressflag != CENTROID_AVAIL) vflag_atom = 1; cvflag_atom = 0; + if (vflag & VIRIAL_CENTROID && centroidstressflag == CENTROID_AVAIL) cvflag_atom = 1; + vflag_either = vflag_global || vflag_atom || cvflag_atom; - if (vflag & 8) { - if (centroidstressflag & 2) { - cvflag_atom = 1; - } else { - vflag_atom = 1; - } - // extra check, because both bits might be set - if (centroidstressflag & 1) vflag_atom = 1; - } - - vflag_either = vflag_global || vflag_atom; - + evflag = eflag_either || vflag_either; + // reallocate per-atom arrays if necessary if (eflag_atom && atom->nmax > maxeatom) { @@ -834,7 +847,7 @@ void Pair::ev_setup(int eflag, int vflag, int alloc) // b/c some bonds/dihedrals call pair::ev_tally with pairwise info if (eflag_global) eng_vdwl = eng_coul = 0.0; - if (vflag_global) for (i = 0; i < 6; i++) virial[i] = 0.0; + if (vflag_global || vflag_fdotr) for (i = 0; i < 6; i++) virial[i] = 0.0; if (eflag_atom && alloc) { n = atom->nlocal; if (force->newton) n += atom->nghost; @@ -869,18 +882,6 @@ void Pair::ev_setup(int eflag, int vflag, int alloc) } } - // if vflag_global = 2 and pair::compute() calls virial_fdotr_compute() - // compute global virial via (F dot r) instead of via pairwise summation - // unset other flags as appropriate - - if (vflag_global == 2 && no_virial_fdotr_compute == 0) { - vflag_fdotr = 1; - vflag_global = 0; - if (vflag_atom == 0 && cvflag_atom == 0) vflag_either = 0; - if (vflag_either == 0 && eflag_either == 0) evflag = 0; - } else vflag_fdotr = 0; - - // run ev_setup option for USER-TALLY computes if (num_tally_compute > 0) { diff --git a/src/pair.h b/src/pair.h index ace233539f..ff0ce82cc8 100644 --- a/src/pair.h +++ b/src/pair.h @@ -68,10 +68,10 @@ class Pair : protected Pointers { int spinflag; // 1 if compatible with spin solver int reinitflag; // 1 if compatible with fix adapt and alike - int centroidstressflag; // compatibility with centroid atomic stress - // 1 if same as two-body atomic stress - // 2 if implemented and different from two-body - // 4 if not compatible/implemented + int centroidstressflag; // centroid stress compared to two-body stress + // CENTROID_SAME = same as two-body stress + // CENTROID_AVAIL = different and implemented + // CENTROID_NOTAVAIL = different, not yet implemented int tail_flag; // pair_modify flag for LJ tail correction double etail,ptail; // energy/pressure tail corrections diff --git a/src/pair_beck.cpp b/src/pair_beck.cpp index bfd39a56e5..a6e63fc4ec 100644 --- a/src/pair_beck.cpp +++ b/src/pair_beck.cpp @@ -26,15 +26,12 @@ #include "error.h" #include "math_special.h" - using namespace LAMMPS_NS; using namespace MathSpecial; /* ---------------------------------------------------------------------- */ -PairBeck::PairBeck(LAMMPS *lmp) : Pair(lmp) { - centroidstressflag = 1; -} +PairBeck::PairBeck(LAMMPS *lmp) : Pair(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/pair_buck.cpp b/src/pair_buck.cpp index 1954ae2891..989c341add 100644 --- a/src/pair_buck.cpp +++ b/src/pair_buck.cpp @@ -32,7 +32,6 @@ using namespace MathConst; PairBuck::PairBuck(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_buck_coul_cut.cpp b/src/pair_buck_coul_cut.cpp index 0940a3232a..05b36d3620 100644 --- a/src/pair_buck_coul_cut.cpp +++ b/src/pair_buck_coul_cut.cpp @@ -36,7 +36,6 @@ using namespace MathConst; PairBuckCoulCut::PairBuckCoulCut(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_coul_cut.cpp b/src/pair_coul_cut.cpp index c50cc75c0c..44ddd424d9 100644 --- a/src/pair_coul_cut.cpp +++ b/src/pair_coul_cut.cpp @@ -28,9 +28,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -PairCoulCut::PairCoulCut(LAMMPS *lmp) : Pair(lmp) { - centroidstressflag = 1; -} +PairCoulCut::PairCoulCut(LAMMPS *lmp) : Pair(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/pair_coul_dsf.cpp b/src/pair_coul_dsf.cpp index 889f2757aa..20bae21594 100644 --- a/src/pair_coul_dsf.cpp +++ b/src/pair_coul_dsf.cpp @@ -29,7 +29,6 @@ #include "math_const.h" #include "error.h" - using namespace LAMMPS_NS; using namespace MathConst; @@ -43,9 +42,7 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -PairCoulDSF::PairCoulDSF(LAMMPS *lmp) : Pair(lmp) { - centroidstressflag = 1; -} +PairCoulDSF::PairCoulDSF(LAMMPS *lmp) : Pair(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/pair_coul_wolf.cpp b/src/pair_coul_wolf.cpp index df22b5a67d..4466651237 100644 --- a/src/pair_coul_wolf.cpp +++ b/src/pair_coul_wolf.cpp @@ -36,7 +36,6 @@ using namespace MathConst; PairCoulWolf::PairCoulWolf(LAMMPS *lmp) : Pair(lmp) { single_enable = 0; // NOTE: single() method below is not yet correct - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index 8e69deb21a..07206dc518 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -29,7 +29,6 @@ #include "suffix.h" - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -42,10 +41,6 @@ PairHybrid::PairHybrid(LAMMPS *lmp) : Pair(lmp), outerflag = 0; respaflag = 0; - - // assume pair hybrid always supports centroid atomic stress, - // so that cflag_atom gets set when needed - centroidstressflag = 2; } /* ---------------------------------------------------------------------- */ @@ -82,10 +77,10 @@ PairHybrid::~PairHybrid() /* ---------------------------------------------------------------------- call each sub-style's compute() or compute_outer() function accumulate sub-style global/peratom energy/virial in hybrid - for global vflag = 1: + for global vflag = VIRIAL_PAIR: each sub-style computes own virial[6] sum sub-style virial[6] to hybrid's virial[6] - for global vflag = 2: + for global vflag = VIRIAL_FDOTR: call sub-style with adjusted vflag to prevent it calling virial_fdotr_compute() hybrid calls virial_fdotr_compute() on final accumulated f @@ -95,21 +90,22 @@ void PairHybrid::compute(int eflag, int vflag) { int i,j,m,n; - // if no_virial_fdotr_compute is set and global component of - // incoming vflag = 2, then - // reset vflag as if global component were 1 + // check if no_virial_fdotr_compute is set and global component of + // incoming vflag = VIRIAL_FDOTR + // if so, reset vflag as if global component were VIRIAL_PAIR // necessary since one or more sub-styles cannot compute virial as F dot r - if (no_virial_fdotr_compute && vflag % 4 == 2) vflag = 1 + vflag/4 * 4; + if (no_virial_fdotr_compute && (vflag & VIRIAL_FDOTR)) + vflag = VIRIAL_PAIR | (vflag & ~VIRIAL_FDOTR); ev_init(eflag,vflag); - // check if global component of incoming vflag = 2 - // if so, reset vflag passed to substyle as if it were 0 + // check if global component of incoming vflag = VIRIAL_FDOTR + // if so, reset vflag passed to substyle so VIRIAL_FDOTR is turned off // necessary so substyle will not invoke virial_fdotr_compute() int vflag_substyle; - if (vflag % 4 == 2) vflag_substyle = vflag/4 * 4; + if (vflag & VIRIAL_FDOTR) vflag_substyle = vflag & ~VIRIAL_FDOTR; else vflag_substyle = vflag; double *saved_special = save_special(); @@ -165,10 +161,13 @@ void PairHybrid::compute(int eflag, int vflag) for (j = 0; j < 6; j++) vatom[i][j] += vatom_substyle[i][j]; } + + // substyles may be CENTROID_SAME or CENTROID_AVAIL + if (cvflag_atom) { n = atom->nlocal; if (force->newton_pair) n += atom->nghost; - if (styles[m]->centroidstressflag & 2) { + if (styles[m]->centroidstressflag == CENTROID_AVAIL) { double **cvatom_substyle = styles[m]->cvatom; for (i = 0; i < n; i++) for (j = 0; j < 9; j++) @@ -386,6 +385,7 @@ void PairHybrid::flags() compute_flag = 0; respa_enable = 0; restartinfo = 0; + for (m = 0; m < nstyles; m++) { if (styles[m]->single_enable) ++single_enable; if (styles[m]->respa_enable) ++respa_enable; @@ -401,12 +401,26 @@ void PairHybrid::flags() if (styles[m]->dispersionflag) dispersionflag = 1; if (styles[m]->tip4pflag) tip4pflag = 1; if (styles[m]->compute_flag) compute_flag = 1; - if (styles[m]->centroidstressflag & 4) centroidstressflag |= 4; } single_enable = (single_enable == nstyles) ? 1 : 0; respa_enable = (respa_enable == nstyles) ? 1 : 0; restartinfo = (restartinfo == nstyles) ? 1 : 0; init_svector(); + + // set centroidstressflag for pair hybrid + // set to CENTROID_NOTAVAIL if any substyle is NOTAVAIL + // else set to CENTROID_AVAIL if any substyle is AVAIL + // else set to CENTROID_SAME if all substyles are SAME + + centroidstressflag = CENTROID_SAME; + + for (m = 0; m < nstyles; m++) { + if (styles[m]->centroidstressflag == CENTROID_NOTAVAIL) + centroidstressflag = CENTROID_NOTAVAIL; + if (centroidstressflag == CENTROID_SAME && + styles[m]->centroidstressflag == CENTROID_AVAIL) + centroidstressflag = CENTROID_AVAIL; + } } /* ---------------------------------------------------------------------- diff --git a/src/pair_lj_cubic.cpp b/src/pair_lj_cubic.cpp index 73e99d5ff8..7fe4757358 100644 --- a/src/pair_lj_cubic.cpp +++ b/src/pair_lj_cubic.cpp @@ -32,9 +32,7 @@ using namespace PairLJCubicConstants; /* ---------------------------------------------------------------------- */ -PairLJCubic::PairLJCubic(LAMMPS *lmp) : Pair(lmp) { - centroidstressflag = 1; -} +PairLJCubic::PairLJCubic(LAMMPS *lmp) : Pair(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/pair_lj_cut.cpp b/src/pair_lj_cut.cpp index cdd9167b65..32ac15da79 100644 --- a/src/pair_lj_cut.cpp +++ b/src/pair_lj_cut.cpp @@ -31,7 +31,6 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; using namespace MathConst; @@ -41,7 +40,6 @@ PairLJCut::PairLJCut(LAMMPS *lmp) : Pair(lmp) { respa_enable = 1; writedata = 1; - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_lj_cut_coul_cut.cpp b/src/pair_lj_cut_coul_cut.cpp index 2b164ede1d..9ed84bd1a4 100644 --- a/src/pair_lj_cut_coul_cut.cpp +++ b/src/pair_lj_cut_coul_cut.cpp @@ -33,7 +33,6 @@ using namespace MathConst; PairLJCutCoulCut::PairLJCutCoulCut(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_lj_cut_coul_dsf.cpp b/src/pair_lj_cut_coul_dsf.cpp index d1989ba020..3382ca1986 100644 --- a/src/pair_lj_cut_coul_dsf.cpp +++ b/src/pair_lj_cut_coul_dsf.cpp @@ -46,7 +46,6 @@ using namespace MathConst; PairLJCutCoulDSF::PairLJCutCoulDSF(LAMMPS *lmp) : Pair(lmp) { single_enable = 0; - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_lj_cut_coul_wolf.cpp b/src/pair_lj_cut_coul_wolf.cpp index 540cb5c959..f75422b684 100644 --- a/src/pair_lj_cut_coul_wolf.cpp +++ b/src/pair_lj_cut_coul_wolf.cpp @@ -37,7 +37,6 @@ PairLJCutCoulWolf::PairLJCutCoulWolf(LAMMPS *lmp) : Pair(lmp) { single_enable = 0; writedata = 1; - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_lj_expand.cpp b/src/pair_lj_expand.cpp index 6cb13f7390..bc6ef98785 100644 --- a/src/pair_lj_expand.cpp +++ b/src/pair_lj_expand.cpp @@ -32,7 +32,6 @@ using namespace MathConst; PairLJExpand::PairLJExpand(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_lj_gromacs_coul_gromacs.cpp b/src/pair_lj_gromacs_coul_gromacs.cpp index 30dc5b67fd..3f047d2334 100644 --- a/src/pair_lj_gromacs_coul_gromacs.cpp +++ b/src/pair_lj_gromacs_coul_gromacs.cpp @@ -26,7 +26,6 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -34,7 +33,6 @@ using namespace LAMMPS_NS; PairLJGromacsCoulGromacs::PairLJGromacsCoulGromacs(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_lj_smooth.cpp b/src/pair_lj_smooth.cpp index b6d4526f77..f45dbaa6bc 100644 --- a/src/pair_lj_smooth.cpp +++ b/src/pair_lj_smooth.cpp @@ -33,7 +33,6 @@ using namespace LAMMPS_NS; PairLJSmooth::PairLJSmooth(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_lj_smooth_linear.cpp b/src/pair_lj_smooth_linear.cpp index 2b494b14e7..54c0f2612d 100644 --- a/src/pair_lj_smooth_linear.cpp +++ b/src/pair_lj_smooth_linear.cpp @@ -25,14 +25,12 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ PairLJSmoothLinear::PairLJSmoothLinear(LAMMPS *lmp) : Pair(lmp) { single_hessian_enable = 1; - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_morse.cpp b/src/pair_morse.cpp index 3ec3db1e2b..6c67a8ef55 100644 --- a/src/pair_morse.cpp +++ b/src/pair_morse.cpp @@ -22,7 +22,6 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -30,7 +29,6 @@ using namespace LAMMPS_NS; PairMorse::PairMorse(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/pair_ufm.cpp b/src/pair_ufm.cpp index 45dcf3fbe2..8decaa42a7 100644 --- a/src/pair_ufm.cpp +++ b/src/pair_ufm.cpp @@ -28,7 +28,6 @@ #include "memory.h" #include "error.h" - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -36,7 +35,6 @@ using namespace LAMMPS_NS; PairUFM::PairUFM(LAMMPS *lmp) : Pair(lmp) { writedata = 1; - centroidstressflag = 1; } /* ---------------------------------------------------------------------- */ diff --git a/src/read_data.cpp b/src/read_data.cpp index 22af1efd5a..e8eb90dcb1 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -796,10 +796,12 @@ void ReadData::command(int narg, char **arg) for (int i = 0; i < nlocal; i++) { imol = molindex[i]; iatom = molatom[i]; - nbonds += onemols[imol]->num_bond[iatom]; - nangles += onemols[imol]->num_angle[iatom]; - ndihedrals += onemols[imol]->num_dihedral[iatom]; - nimpropers += onemols[imol]->num_improper[iatom]; + if (imol >=0) { + nbonds += onemols[imol]->num_bond[iatom]; + nangles += onemols[imol]->num_angle[iatom]; + ndihedrals += onemols[imol]->num_dihedral[iatom]; + nimpropers += onemols[imol]->num_improper[iatom]; + } } MPI_Allreduce(&nbonds,&atom->nbonds,1,MPI_LMP_BIGINT,MPI_SUM,world); diff --git a/src/read_dump.cpp b/src/read_dump.cpp index b64ce8b901..925760da6a 100644 --- a/src/read_dump.cpp +++ b/src/read_dump.cpp @@ -231,6 +231,10 @@ void ReadDump::setup_reader(int narg, char **arg) readers = new Reader*[nreader]; nsnapatoms = new bigint[nreader]; + for (int i=0; i < nreader; ++i) { + readers[i] = nullptr; + nsnapatoms[i] = 0; + } // create Nreader reader classes per reader // match readerstyle to options in style_reader.h diff --git a/src/read_restart.cpp b/src/read_restart.cpp index 2c8bba115e..9e8fbce91c 100644 --- a/src/read_restart.cpp +++ b/src/read_restart.cpp @@ -472,19 +472,33 @@ void ReadRestart::command(int narg, char **arg) if (natoms != atom->natoms) error->all(FLERR,"Did not assign all restart atoms correctly"); - if (me == 0) { - if (atom->nbonds) { - utils::logmesg(lmp,fmt::format(" {} bonds\n",atom->nbonds)); - } - if (atom->nangles) { - utils::logmesg(lmp,fmt::format(" {} angles\n",atom->nangles)); - } - if (atom->ndihedrals) { - utils::logmesg(lmp,fmt::format(" {} dihedrals\n",atom->ndihedrals)); - } - if (atom->nimpropers) { - utils::logmesg(lmp,fmt::format(" {} impropers\n",atom->nimpropers)); - } + if ((atom->molecular == Atom::TEMPLATE) && (me == 0)) { + std::string mesg; + + if (atom->nbonds) + mesg += fmt::format(" {} template bonds\n",atom->nbonds); + if (atom->nangles) + mesg += fmt::format(" {} template angles\n",atom->nangles); + if (atom->ndihedrals) + mesg += fmt::format(" {} template dihedrals\n",atom->ndihedrals); + if (atom->nimpropers) + mesg += fmt::format(" {} template impropers\n",atom->nimpropers); + + utils::logmesg(lmp,mesg); + } + + if ((atom->molecular == Atom::MOLECULAR) && (me == 0)) { + std::string mesg; + if (atom->nbonds) + mesg += fmt::format(" {} bonds\n",atom->nbonds); + if (atom->nangles) + mesg += fmt::format(" {} angles\n",atom->nangles); + if (atom->ndihedrals) + mesg += fmt::format(" {} dihedrals\n",atom->ndihedrals); + if (atom->nimpropers) + mesg += fmt::format(" {} impropers\n",atom->nimpropers); + + utils::logmesg(lmp,mesg); } // check that atom IDs are valid diff --git a/src/replicate.cpp b/src/replicate.cpp index fb29fd63ab..296e099208 100644 --- a/src/replicate.cpp +++ b/src/replicate.cpp @@ -159,6 +159,20 @@ void Replicate::command(int narg, char **arg) else atom = new Atom(lmp); atom->settings(old); + + // transfer molecule templates. needs to be done early for atom style template + + if (old->nmolecule) { + atom->molecules = (Molecule **) memory->smalloc((old->nmolecule)*sizeof(Molecule *), + "atom::molecules"); + atom->nmolecule = old->nmolecule; + for (int i = 0; i < old->nmolecule; ++i) + atom->molecules[i] = old->molecules[i]; + memory->sfree(old->molecules); + old->molecules = nullptr; + old->nmolecule = 0; + } + atom->create_avec(old->atom_style,old->avec->nargcopy,old->avec->argcopy,0); // check that new system will not be too large @@ -746,17 +760,19 @@ void Replicate::command(int narg, char **arg) error->all(FLERR,"Replicate did not assign all atoms correctly"); if (me == 0) { + const char *molstyle = ""; + if (atom->molecular == Atom::TEMPLATE) molstyle = "template "; if (atom->nbonds) { - utils::logmesg(lmp,fmt::format(" {} bonds\n",atom->nbonds)); + utils::logmesg(lmp,fmt::format(" {} {}bonds\n",atom->nbonds,molstyle)); } if (atom->nangles) { - utils::logmesg(lmp,fmt::format(" {} angles\n",atom->nangles)); + utils::logmesg(lmp,fmt::format(" {} {}angles\n",atom->nangles,molstyle)); } if (atom->ndihedrals) { - utils::logmesg(lmp,fmt::format(" {} dihedrals\n",atom->ndihedrals)); + utils::logmesg(lmp,fmt::format(" {} {}dihedrals\n",atom->ndihedrals,molstyle)); } if (atom->nimpropers) { - utils::logmesg(lmp,fmt::format(" {} impropers\n",atom->nimpropers)); + utils::logmesg(lmp,fmt::format(" {} {}impropers\n",atom->nimpropers,molstyle)); } } diff --git a/src/respa.cpp b/src/respa.cpp index dcabcb11ef..aebee0f6eb 100644 --- a/src/respa.cpp +++ b/src/respa.cpp @@ -311,9 +311,10 @@ void Respa::init() if (force->pair && force->pair->respa_enable == 0) error->all(FLERR,"Pair style does not support rRESPA inner/middle/outer"); - // virial_style = 1 (explicit) since never computed implicitly like Verlet + // virial_style = VIRIAL_PAIR (explicit) + // since never computed implicitly with virial_fdotr_compute() like Verlet - virial_style = 1; + virial_style = VIRIAL_PAIR; // setup lists of computes for global and per-atom PE and pressure diff --git a/src/universe.cpp b/src/universe.cpp index 4abaa5fa1c..3f58c4a074 100644 --- a/src/universe.cpp +++ b/src/universe.cpp @@ -158,7 +158,6 @@ void Universe::reorder(char *style, char *arg) void Universe::add_world(char *str) { int n,nper; - char *ptr; n = 1; nper = 0; @@ -171,28 +170,23 @@ void Universe::add_world(char *str) // str may not be empty and may only consist of digits or 'x' - size_t len = strlen(str); - if (len < 1) valid = false; - for (size_t i=0; i < len; ++i) - if (isdigit(str[i]) || str[i] == 'x') continue; - else valid = false; + std::string part(str); + if (part.size() == 0) valid = false; + if (part.find_first_not_of("0123456789x") != std::string::npos) valid = false; if (valid) { - if ((ptr = strchr(str,'x')) != nullptr) { + std::size_t found = part.find_first_of("x"); - // 'x' may not be the first or last character + // 'x' may not be the first or last character - if (ptr == str) { - valid = false; - } else if (strlen(str) == len-1) { - valid = false; - } else { - *ptr = '\0'; - n = atoi(str); - nper = atoi(ptr+1); - *ptr = 'x'; - } - } else nper = atoi(str); + if ((found == 0) || (found == (part.size() - 1))) { + valid = false; + } else if (found == std::string::npos) { + nper = atoi(part.c_str()); + } else { + n = atoi(part.substr(0,found).c_str()); + nper = atoi(part.substr(found-1).c_str());\ + } } // require minimum of 1 partition with 1 processor diff --git a/src/update.cpp b/src/update.cpp index eebebb91be..a8a698a7f3 100644 --- a/src/update.cpp +++ b/src/update.cpp @@ -323,7 +323,12 @@ void Update::create_integrate(int narg, char **arg, int trysuffix) delete integrate; int sflag; - new_integrate(arg[0],narg-1,&arg[1],trysuffix,sflag); + + if(narg-1 > 0) { + new_integrate(arg[0],narg-1,&arg[1],trysuffix,sflag); + } else { + new_integrate(arg[0],0,nullptr,trysuffix,sflag); + } std::string estyle = arg[0]; if (sflag) { diff --git a/src/utils.cpp b/src/utils.cpp index 40fc87ca01..8bd36a8065 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -772,6 +772,22 @@ std::string utils::path_basename(const std::string &path) { return path.substr(start); } +/* ---------------------------------------------------------------------- + Return only the leading part of a path, return just the directory +------------------------------------------------------------------------- */ + +std::string utils::path_dirname(const std::string &path) { +#if defined(_WIN32) + size_t start = path.find_last_of("/\\"); +#else + size_t start = path.find_last_of("/"); +#endif + + if (start == std::string::npos) return "."; + + return path.substr(0,start); +} + /* ---------------------------------------------------------------------- join two paths ------------------------------------------------------------------------- */ @@ -846,6 +862,7 @@ std::string utils::get_potential_date(const std::string &path, const std::string reader.ignore_comments = false; char *line = reader.next_line(); + if (line == nullptr) return ""; Tokenizer words(line); while (words.has_next()) { if (words.next() == "DATE:") { @@ -865,6 +882,7 @@ std::string utils::get_potential_units(const std::string &path, const std::strin reader.ignore_comments = false; char *line = reader.next_line(); + if (line == nullptr) return ""; Tokenizer words(line); while (words.has_next()) { if (words.next() == "UNITS:") { diff --git a/src/utils.h b/src/utils.h index 7515f1f21b..52f7933caf 100644 --- a/src/utils.h +++ b/src/utils.h @@ -291,6 +291,13 @@ namespace LAMMPS_NS { std::string path_basename(const std::string &path); + /** Return the directory part of a path. Return "." if empty + * + * \param path file path + * \return directory name */ + + std::string path_dirname(const std::string &path); + /** Join two pathname segments * * This uses the forward slash '/' character unless LAMMPS is compiled diff --git a/src/verlet.cpp b/src/verlet.cpp index 3d20a771f4..5e53daafbb 100644 --- a/src/verlet.cpp +++ b/src/verlet.cpp @@ -54,11 +54,12 @@ void Verlet::init() error->warning(FLERR,"No fixes defined, atoms won't move"); // virial_style: - // 1 if computed explicitly by pair->compute via sum over pair interactions - // 2 if computed implicitly by pair->virial_fdotr_compute via sum over ghosts + // VIRIAL_PAIR if computed explicitly in pair via sum over pair interactions + // VIRIAL_FDOTR if computed implicitly in pair by + // virial_fdotr_compute() via sum over ghosts - if (force->newton_pair) virial_style = 2; - else virial_style = 1; + if (force->newton_pair) virial_style = VIRIAL_FDOTR; + else virial_style = VIRIAL_PAIR; // setup lists of computes for global and per-atom PE and pressure diff --git a/src/version.h b/src/version.h index ac8a6a9d6a..15b8cee028 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define LAMMPS_VERSION "9 Oct 2020" +#define LAMMPS_VERSION "29 Oct 2020" diff --git a/src/write_data.cpp b/src/write_data.cpp index d0a392736a..6d10359e8b 100644 --- a/src/write_data.cpp +++ b/src/write_data.cpp @@ -233,7 +233,7 @@ void WriteData::header() fmt::print(fp,"{} atoms\n{} atom types\n",atom->natoms,atom->ntypes); - // do not write molecular topology info for atom_style template + // only write out number of types for atom style template if (atom->molecular == Atom::MOLECULAR) { if (atom->nbonds || atom->nbondtypes) @@ -250,6 +250,13 @@ void WriteData::header() nimpropers,atom->nimpropertypes); } + if (atom->molecular == Atom::TEMPLATE) { + if (atom->nbondtypes) fmt::print(fp,"{} bond types\n",atom->nbondtypes); + if (atom->nangletypes) fmt::print(fp,"{} angle types\n",atom->nangletypes); + if (atom->ndihedraltypes) fmt::print(fp,"{} dihedral types\n",atom->ndihedraltypes); + if (atom->nimpropertypes) fmt::print(fp,"{} improper types\n",atom->nimpropertypes); + } + // bonus info if (atom->ellipsoid_flag) fmt::print(fp,"{} ellipsoids\n",atom->nellipsoids); diff --git a/tools/lammps-shell/README b/tools/lammps-shell/README index 549f8a3343..d5d050c417 100644 --- a/tools/lammps-shell/README +++ b/tools/lammps-shell/README @@ -162,14 +162,14 @@ is. File extension association """""""""""""""""""""""""" -Since the LAMMPS shell (unlike the regular LAMMPS executable) does not -exit when an input file is passed on the command line with the "-in" or -"-i" flag (the behavior is like for "python -i "), it makes -the LAMMPS shell suitable for associating it with input files based on -their filename extension (e.g. ".lmp"). Since "lammps-shell" is a -console application, you have to run it inside a terminal program with a -command line like this: - - xterm -title "LAMMPS Shell" -e /path/to/lammps-shell -i in.file.lmp +The LAMMPS shell (unlike the regular LAMMPS executable) does not +exit when an input file is passed on the command line, which can be +either with the "-in" or "-i" flag (the behavior is like for +"python -i ") or as the first argument without a flag. +Thus the LAMMPS shell is suitable for associating it with input files +based on their filename extension (e.g. ".lmp"). Since "lammps-shell" +is a console application, you have to run it inside a terminal program. +A "lammps-shell.desktop" and suitable icon files are provided, so that +it can be integrated into compatible desktop environments. diff --git a/tools/lammps-shell/icons/hicolor/128x128/apps/lammps.png b/tools/lammps-shell/icons/hicolor/128x128/apps/lammps.png new file mode 100644 index 0000000000..bfbeb47978 Binary files /dev/null and b/tools/lammps-shell/icons/hicolor/128x128/apps/lammps.png differ diff --git a/tools/lammps-shell/icons/hicolor/16x16/apps/lammps.png b/tools/lammps-shell/icons/hicolor/16x16/apps/lammps.png new file mode 100644 index 0000000000..b48ea6d6a9 Binary files /dev/null and b/tools/lammps-shell/icons/hicolor/16x16/apps/lammps.png differ diff --git a/tools/lammps-shell/icons/hicolor/22x22/apps/lammps.png b/tools/lammps-shell/icons/hicolor/22x22/apps/lammps.png new file mode 100644 index 0000000000..5f15c747d1 Binary files /dev/null and b/tools/lammps-shell/icons/hicolor/22x22/apps/lammps.png differ diff --git a/tools/lammps-shell/icons/hicolor/32x32/apps/lammps.png b/tools/lammps-shell/icons/hicolor/32x32/apps/lammps.png new file mode 100644 index 0000000000..4609d8a411 Binary files /dev/null and b/tools/lammps-shell/icons/hicolor/32x32/apps/lammps.png differ diff --git a/tools/lammps-shell/icons/hicolor/48x48/apps/lammps.png b/tools/lammps-shell/icons/hicolor/48x48/apps/lammps.png new file mode 100644 index 0000000000..bf578d74da Binary files /dev/null and b/tools/lammps-shell/icons/hicolor/48x48/apps/lammps.png differ diff --git a/tools/lammps-shell/icons/hicolor/64x64/apps/lammps.png b/tools/lammps-shell/icons/hicolor/64x64/apps/lammps.png new file mode 100644 index 0000000000..47fb998982 Binary files /dev/null and b/tools/lammps-shell/icons/hicolor/64x64/apps/lammps.png differ diff --git a/tools/lammps-shell/icons/lammps.ico b/tools/lammps-shell/icons/lammps.ico new file mode 100644 index 0000000000..cce156bf79 Binary files /dev/null and b/tools/lammps-shell/icons/lammps.ico differ diff --git a/tools/lammps-shell/icons/lmpfile.ico b/tools/lammps-shell/icons/lmpfile.ico new file mode 100644 index 0000000000..7e1636584f Binary files /dev/null and b/tools/lammps-shell/icons/lmpfile.ico differ diff --git a/tools/lammps-shell/lammps-shell.cpp b/tools/lammps-shell/lammps-shell.cpp index b2c8137aba..7ace6d6819 100644 --- a/tools/lammps-shell/lammps-shell.cpp +++ b/tools/lammps-shell/lammps-shell.cpp @@ -563,7 +563,7 @@ static int help_cmd() "in the current working directory and - if present - this file will be\n" "read at the beginning of the next session of the LAMMPS shell.\n\n" "Additional information is at https://packages.lammps.org/lammps-shell.html\n\n"; - return 0; + return 0; } static int shell_end() @@ -681,7 +681,7 @@ int main(int argc, char **argv) // switch to the user's documents directory. Avoid buffer overflow // and skip this step if the path is too long for our buffer. if (getcwd(buf, buflen)) { - if ((strstr(buf, "System32") || strstr(buf, "system32"))) { + if ((strstr(buf, "System32") || strstr(buf, "system32"))) { char *drive = getenv("HOMEDRIVE"); char *path = getenv("HOMEPATH"); buf[0] = '\0'; @@ -719,11 +719,14 @@ int main(int argc, char **argv) // handle the special case where the first argument is not a flag but a file // this happens for example when using file type associations on Windows. // in this case we save the pointer and remove it from argv. - char *input_file = nullptr; + // we also get the directory name and switch to that folder + std::string input_file; if ((argc > 1) && (argv[1][0] != '-')) { --argc; - input_file = argv[1]; - for (int i = 1; i < argc; ++i) argv[i] = argv[i+1]; + input_file = utils::path_basename(argv[1]); + chdir(utils::path_dirname(input_file).c_str()); + for (int i = 1; i < argc; ++i) + argv[i] = argv[i + 1]; } lmp = lammps_open_no_mpi(argc, argv, nullptr); @@ -733,8 +736,8 @@ int main(int argc, char **argv) init_commands(); // pre-load an input file that was provided on the command line - if (input_file) { - lammps_file(lmp, input_file); + if (!input_file.empty()) { + lammps_file(lmp, input_file.c_str()); } else { for (int i = 0; i < argc; ++i) { if ((strcmp(argv[i], "-in") == 0) || (strcmp(argv[i], "-i") == 0)) { diff --git a/tools/lammps-shell/lammps-shell.desktop b/tools/lammps-shell/lammps-shell.desktop new file mode 100644 index 0000000000..67675c8f22 --- /dev/null +++ b/tools/lammps-shell/lammps-shell.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Categories=Science;Engineering; +Exec=/bin/sh -c "echo -e -n \"\033]0;The LAMMPS Shell\007\"; LC_ALL=C lammps-shell %f" +Name=The LAMMPS Shell +Terminal=true +GenericName=MD Simulator +Keywords=MD Simulation;LAMMPS;Molecular Dynamics;N-Body +Icon=lammps diff --git a/tools/lammps-shell/lmpicons.rc b/tools/lammps-shell/lmpicons.rc new file mode 100644 index 0000000000..a9da9eea17 --- /dev/null +++ b/tools/lammps-shell/lmpicons.rc @@ -0,0 +1,2 @@ +id1 ICON icons/lammps.ico +id2 ICON icons/lmpfile.ico diff --git a/tools/swig/CMakeLists.txt b/tools/swig/CMakeLists.txt index 8497450388..204b351ed6 100644 --- a/tools/swig/CMakeLists.txt +++ b/tools/swig/CMakeLists.txt @@ -43,6 +43,7 @@ if(BUILD_SWIG_JAVA) set_property(SOURCE lammps.i PROPERTY SWIG_MODULE_NAME javalammps) swig_add_library(javalammps TYPE MODULE LANGUAGE java SOURCES lammps.i) find_package(JNI REQUIRED) + find_package(Java COMPONENTS Development REQUIRED) target_include_directories(javalammps PRIVATE ${JNI_INCLUDE_DIRS}) swig_link_libraries(javalammps PRIVATE lammps ${JNI_LIBRARIES}) configure_file(run_java_example.sh.in run_java_example.sh @ONLY) diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index 162c9b6f4a..c7f46a7f7b 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -1,5 +1,21 @@ include(GTest) +if(BUILD_MPI) + function(add_mpi_test) + set(MPI_TEST_NUM_PROCS 1) + set(MPI_TEST_WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + cmake_parse_arguments(MPI_TEST "" "NAME;NUM_PROCS;WORKING_DIRECTORY" "COMMAND" ${ARGN}) + list(GET MPI_TEST_COMMAND 0 EXECUTABLE) + list(REMOVE_AT MPI_TEST_COMMAND 0) + set(ARGS ${MPI_TEST_COMMAND}) + add_test(NAME ${MPI_TEST_NAME} + WORKING_DIRECTORY ${MPI_TEST_WORKING_DIRECTORY} + COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${MPI_TEST_NUM_PROCS} ${MPIEXEC_PREFLAGS} + ${EXECUTABLE} ${MPIEXEC_POSTFLAGS} ${ARGS} + ) + endfunction() +endif() + add_subdirectory(utils) add_subdirectory(formats) add_subdirectory(commands) diff --git a/unittest/c-library/CMakeLists.txt b/unittest/c-library/CMakeLists.txt index fe70cb1584..09717c058e 100644 --- a/unittest/c-library/CMakeLists.txt +++ b/unittest/c-library/CMakeLists.txt @@ -55,3 +55,10 @@ add_executable(test_library_config test_library_config.cpp test_main.cpp) target_link_libraries(test_library_config PRIVATE lammps GTest::GTest GTest::GMock) target_compile_definitions(test_library_config PRIVATE ${TEST_CONFIG_DEFS}) add_test(LibraryConfig test_library_config) + +if (BUILD_MPI) + add_executable(test_library_mpi test_library_mpi.cpp) + target_link_libraries(test_library_mpi PRIVATE lammps GTest::GTest GTest::GMock) + target_compile_definitions(test_library_mpi PRIVATE ${TEST_CONFIG_DEFS}) + add_mpi_test(NAME LibraryMPI NUM_PROCS 4 COMMAND $) +endif() diff --git a/unittest/c-library/test_library_mpi.cpp b/unittest/c-library/test_library_mpi.cpp new file mode 100644 index 0000000000..cf33ed13b5 --- /dev/null +++ b/unittest/c-library/test_library_mpi.cpp @@ -0,0 +1,341 @@ +// unit tests for checking LAMMPS configuration settings through the library interface + +#define LAMMPS_LIB_MPI 1 +#include "lammps.h" +#include "library.h" +#include "timer.h" +#include + +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +#include "../testing/test_mpi_main.h" + +using ::testing::ExitedWithCode; +using ::testing::HasSubstr; +using ::testing::StartsWith; +using ::testing::StrEq; + +TEST(MPI, global_box) +{ + int nprocs, me; + MPI_Comm_size(MPI_COMM_WORLD, &nprocs); + MPI_Comm_rank(MPI_COMM_WORLD, &me); + EXPECT_EQ(nprocs, 4); + EXPECT_GT(me, -1); + EXPECT_LT(me, 5); + + double boxlo[3]; + double boxhi[3]; + double xy = 0.0; + double yz = 0.0; + double xz = 0.0; + int pflags[3]; + int boxflag; + + ::testing::internal::CaptureStdout(); + const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite"}; + char **argv = (char **)args; + int argc = sizeof(args) / sizeof(char *); + void *lmp = lammps_open(argc, argv, MPI_COMM_WORLD, nullptr); + lammps_command(lmp, "units lj"); + lammps_command(lmp, "atom_style atomic"); + lammps_command(lmp, "region box block 0 2 0 2 0 2"); + lammps_command(lmp, "create_box 1 box"); + + lammps_extract_box(lmp, boxlo, boxhi, &xy, &yz, &xz, pflags, &boxflag); + ::testing::internal::GetCapturedStdout(); + + EXPECT_EQ(boxlo[0], 0.0); + EXPECT_EQ(boxlo[1], 0.0); + EXPECT_EQ(boxlo[2], 0.0); + + EXPECT_EQ(boxhi[0], 2.0); + EXPECT_EQ(boxhi[1], 2.0); + EXPECT_EQ(boxhi[2], 2.0); + + ::testing::internal::CaptureStdout(); + lammps_close(lmp); + ::testing::internal::GetCapturedStdout(); +}; + +TEST(MPI, sub_box) +{ + int nprocs, me; + MPI_Comm_size(MPI_COMM_WORLD, &nprocs); + MPI_Comm_rank(MPI_COMM_WORLD, &me); + EXPECT_EQ(nprocs, 4); + EXPECT_GT(me, -1); + EXPECT_LT(me, 5); + + double boxlo[3]; + double boxhi[3]; + double xy = 0.0; + double yz = 0.0; + double xz = 0.0; + int pflags[3]; + int boxflag; + + ::testing::internal::CaptureStdout(); + const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite"}; + char **argv = (char **)args; + int argc = sizeof(args) / sizeof(char *); + void *lmp = lammps_open(argc, argv, MPI_COMM_WORLD, nullptr); + lammps_command(lmp, "units lj"); + lammps_command(lmp, "atom_style atomic"); + lammps_command(lmp, "region box block 0 2 0 2 0 2"); + lammps_command(lmp, "create_box 1 box"); + + lammps_extract_box(lmp, boxlo, boxhi, &xy, &yz, &xz, pflags, &boxflag); + ::testing::internal::GetCapturedStdout(); + + EXPECT_EQ(boxlo[0], 0.0); + EXPECT_EQ(boxlo[1], 0.0); + EXPECT_EQ(boxlo[2], 0.0); + + EXPECT_EQ(boxhi[0], 2.0); + EXPECT_EQ(boxhi[1], 2.0); + EXPECT_EQ(boxhi[2], 2.0); + + double *sublo = (double *)lammps_extract_global(lmp, "sublo"); + double *subhi = (double *)lammps_extract_global(lmp, "subhi"); + + ASSERT_NE(sublo, nullptr); + ASSERT_NE(subhi, nullptr); + + EXPECT_GE(sublo[0], boxlo[0]); + EXPECT_GE(sublo[1], boxlo[1]); + EXPECT_GE(sublo[2], boxlo[2]); + EXPECT_LE(subhi[0], boxhi[0]); + EXPECT_LE(subhi[1], boxhi[1]); + EXPECT_LE(subhi[2], boxhi[2]); + + ::testing::internal::CaptureStdout(); + lammps_command(lmp, "change_box all triclinic"); + ::testing::internal::GetCapturedStdout(); + + sublo = (double *)lammps_extract_global(lmp, "sublo_lambda"); + subhi = (double *)lammps_extract_global(lmp, "subhi_lambda"); + ASSERT_NE(sublo, nullptr); + ASSERT_NE(subhi, nullptr); + + EXPECT_GE(sublo[0], 0.0); + EXPECT_GE(sublo[1], 0.0); + EXPECT_GE(sublo[2], 0.0); + EXPECT_LE(subhi[0], 1.0); + EXPECT_LE(subhi[1], 1.0); + EXPECT_LE(subhi[2], 1.0); + + ::testing::internal::CaptureStdout(); + lammps_close(lmp); + ::testing::internal::GetCapturedStdout(); +}; + +TEST(MPI, split_comm) +{ + int nprocs, me, color, key; + MPI_Comm newcomm; + lammps_mpi_init(); + MPI_Comm_size(MPI_COMM_WORLD, &nprocs); + MPI_Comm_rank(MPI_COMM_WORLD, &me); + color = me % 2; + key = me; + + MPI_Comm_split(MPI_COMM_WORLD, color, key, &newcomm); + + const char *args[] = {"LAMMPS_test", "-log", "none", "-echo", "screen", "-nocite"}; + char **argv = (char **)args; + int argc = sizeof(args) / sizeof(char *); + void *lmp = lammps_open(argc, argv, newcomm, nullptr); + lammps_command(lmp, "units lj"); + lammps_command(lmp, "atom_style atomic"); + lammps_command(lmp, "region box block 0 2 0 2 0 2"); + lammps_command(lmp, "create_box 1 box"); + + MPI_Comm_size(newcomm, &nprocs); + MPI_Comm_rank(newcomm, &me); + EXPECT_EQ(nprocs, 2); + EXPECT_GT(me, -1); + EXPECT_LT(me, 2); + EXPECT_EQ(lammps_extract_setting(lmp, "universe_size"), nprocs); + EXPECT_EQ(lammps_extract_setting(lmp, "universe_rank"), me); + EXPECT_EQ(lammps_extract_setting(lmp, "world_size"), nprocs); + EXPECT_EQ(lammps_extract_setting(lmp, "world_rank"), me); + + lammps_close(lmp); +}; + +TEST(MPI, multi_partition) +{ + FILE *fp; + int nprocs, me; + lammps_mpi_init(); + MPI_Comm_size(MPI_COMM_WORLD, &nprocs); + MPI_Comm_rank(MPI_COMM_WORLD, &me); + + const char *args[] = {"LAMMPS_test", "-log", "none", "-partition", "2x2", + "-echo", "screen", "-nocite", "-in", "none"}; + char **argv = (char **)args; + int argc = sizeof(args) / sizeof(char *); + void *lmp = lammps_open(argc, argv, MPI_COMM_WORLD, nullptr); + + lammps_command(lmp, "units lj"); + lammps_command(lmp, "atom_style atomic"); + lammps_command(lmp, "region box block 0 2 0 2 0 2"); + lammps_command(lmp, "create_box 1 box"); + lammps_command(lmp, "variable partition universe 1 2"); + + EXPECT_EQ(lammps_extract_setting(lmp, "universe_size"), nprocs); + EXPECT_EQ(lammps_extract_setting(lmp, "universe_rank"), me); + EXPECT_EQ(lammps_extract_setting(lmp, "world_size"), nprocs / 2); + EXPECT_EQ(lammps_extract_setting(lmp, "world_rank"), me % 2); + + char *part_id = (char *)lammps_extract_variable(lmp, "partition", nullptr); + if (me < 2) { + ASSERT_THAT(part_id, StrEq("1")); + } else { + ASSERT_THAT(part_id, StrEq("2")); + } + + lammps_close(lmp); +}; + +class MPITest : public ::testing::Test { +public: + void command(const std::string &line) { lammps_command(lmp, line.c_str()); } + +protected: + const char *testbinary = "LAMMPSTest"; + void *lmp; + + void SetUp() override + { + const char *args[] = {testbinary, "-log", "none", "-echo", "screen", "-nocite"}; + char **argv = (char **)args; + int argc = sizeof(args) / sizeof(char *); + if (!verbose) ::testing::internal::CaptureStdout(); + lmp = lammps_open(argc, argv, MPI_COMM_WORLD, nullptr); + InitSystem(); + if (!verbose) ::testing::internal::GetCapturedStdout(); + } + + virtual void InitSystem() + { + command("units lj"); + command("atom_style atomic"); + command("atom_modify map yes"); + + command("lattice fcc 0.8442"); + command("region box block 0 2 0 2 0 2"); + command("create_box 1 box"); + command("create_atoms 1 box"); + command("mass 1 1.0"); + + command("velocity all create 3.0 87287"); + + command("pair_style lj/cut 2.5"); + command("pair_coeff 1 1 1.0 1.0 2.5"); + + command("neighbor 0.3 bin"); + command("neigh_modify every 20 delay 0 check no"); + } + + void TearDown() override + { + if (!verbose) ::testing::internal::CaptureStdout(); + lammps_close(lmp); + lmp = nullptr; + if (!verbose) ::testing::internal::GetCapturedStdout(); + } +}; + +TEST_F(MPITest, size_rank) +{ + int nprocs, me; + MPI_Comm_size(MPI_COMM_WORLD, &nprocs); + MPI_Comm_rank(MPI_COMM_WORLD, &me); + + EXPECT_EQ(nprocs, lammps_extract_setting(lmp, "world_size")); + EXPECT_EQ(me, lammps_extract_setting(lmp, "world_rank")); +} + +#if !defined(LAMMPS_BIGBIG) + +TEST_F(MPITest, gather) +{ + int64_t natoms = (int64_t)lammps_get_natoms(lmp); + ASSERT_EQ(natoms, 32); + int *p_nlocal = (int *)lammps_extract_global(lmp, "nlocal"); + int nlocal = *p_nlocal; + EXPECT_LT(nlocal, 32); + EXPECT_EQ(nlocal, 8); + + // get the entire x on all procs + double *x = new double[natoms * 3]; + lammps_gather(lmp, (char *)"x", 1, 3, x); + + int *tag = (int *)lammps_extract_atom(lmp, "id"); + double **x_local = (double **)lammps_extract_atom(lmp, "x"); + + // each proc checks its local atoms + for (int i = 0; i < nlocal; i++) { + int64_t j = tag[i] - 1; + double *x_i = x_local[i]; + double *x_g = &x[j * 3]; + EXPECT_DOUBLE_EQ(x_g[0], x_i[0]); + EXPECT_DOUBLE_EQ(x_g[1], x_i[1]); + EXPECT_DOUBLE_EQ(x_g[2], x_i[2]); + } + + delete[] x; +} + +TEST_F(MPITest, scatter) +{ + int *p_nlocal = (int *)lammps_extract_global(lmp, "nlocal"); + int nlocal = *p_nlocal; + double *x_orig = new double[3 * nlocal]; + double **x_local = (double **)lammps_extract_atom(lmp, "x"); + + // make copy of original local x vector + for (int i = 0; i < nlocal; i++) { + int j = 3 * i; + x_orig[j] = x_local[i][0]; + x_orig[j + 1] = x_local[i][1]; + x_orig[j + 2] = x_local[i][2]; + } + + // get the entire x on all procs + int64_t natoms = (int64_t)lammps_get_natoms(lmp); + double *x = new double[natoms * 3]; + lammps_gather(lmp, (char *)"x", 1, 3, x); + + // shift all coordinates by 0.001 + const double delta = 0.001; + for (int64_t i = 0; i < 3 * natoms; i++) + x[i] += delta; + + // update positions of all atoms + lammps_scatter(lmp, (char *)"x", 1, 3, x); + delete[] x; + x = nullptr; + + // get new nlocal and x_local + p_nlocal = (int *)lammps_extract_global(lmp, "nlocal"); + nlocal = *p_nlocal; + x_local = (double **)lammps_extract_atom(lmp, "x"); + + ASSERT_EQ(nlocal, 8); + + // each proc checks its local atoms for shift + for (int i = 0; i < nlocal; i++) { + double *x_a = x_local[i]; + double *x_b = &x_orig[i * 3]; + EXPECT_DOUBLE_EQ(x_a[0], x_b[0] + delta); + EXPECT_DOUBLE_EQ(x_a[1], x_b[1] + delta); + EXPECT_DOUBLE_EQ(x_a[2], x_b[2] + delta); + } + + delete[] x_orig; +} +#endif diff --git a/unittest/c-library/test_library_properties.cpp b/unittest/c-library/test_library_properties.cpp index 8f5d3284a1..9ec87b9234 100644 --- a/unittest/c-library/test_library_properties.cpp +++ b/unittest/c-library/test_library_properties.cpp @@ -199,6 +199,12 @@ TEST_F(LibraryProperties, setting) lammps_command(lmp, "dimension 3"); if (!verbose) ::testing::internal::GetCapturedStdout(); + EXPECT_EQ(lammps_extract_setting(lmp, "world_size"), 1); + EXPECT_EQ(lammps_extract_setting(lmp, "world_rank"), 0); + EXPECT_EQ(lammps_extract_setting(lmp, "universe_size"), 1); + EXPECT_EQ(lammps_extract_setting(lmp, "universe_rank"), 0); + EXPECT_GT(lammps_extract_setting(lmp, "nthreads"), 0); + EXPECT_EQ(lammps_extract_setting(lmp, "ntypes"), 0); EXPECT_EQ(lammps_extract_setting(lmp, "nbondtypes"), 0); EXPECT_EQ(lammps_extract_setting(lmp, "nangletypes"), 0); diff --git a/unittest/force-styles/CMakeLists.txt b/unittest/force-styles/CMakeLists.txt index 128dc62cff..1d7dc937eb 100644 --- a/unittest/force-styles/CMakeLists.txt +++ b/unittest/force-styles/CMakeLists.txt @@ -1,8 +1,8 @@ find_package(YAML) if(NOT YAML_FOUND) - message(STATUS "Skipping tests because libyaml is not found") - return() + # download and build a local copy of libyaml + include(YAML) endif() if(CMAKE_VERSION VERSION_LESS 3.12) diff --git a/unittest/force-styles/test_error_stats.cpp b/unittest/force-styles/test_error_stats.cpp index 0873757acd..52ba3baae3 100644 --- a/unittest/force-styles/test_error_stats.cpp +++ b/unittest/force-styles/test_error_stats.cpp @@ -26,7 +26,7 @@ TEST(ErrorStats, test) std::stringstream out; out << stats; - ASSERT_EQ(out.str(), "Average: 5.800e-01 StdDev: 7.305e-01 MaxErr: 2.000e+00 @ item: 3.0"); + ASSERT_EQ(out.str(), "Average: 5.800e-01 StdDev: 7.305e-01 MaxErr: 2.000e+00 @ item: 3"); stats.reset(); ASSERT_EQ(stats.has_data(), false); diff --git a/unittest/formats/test_atom_styles.cpp b/unittest/formats/test_atom_styles.cpp index 058d92567f..3ceff53b78 100644 --- a/unittest/formats/test_atom_styles.cpp +++ b/unittest/formats/test_atom_styles.cpp @@ -51,10 +51,49 @@ using LAMMPS_NS::utils::split_words; +static void create_molecule_files() +{ + // create molecule files + const char h2o_file[] = "# Water molecule. SPC/E model.\n\n3 atoms\n2 bonds\n1 angles\n\n" + "Coords\n\n1 1.12456 0.09298 1.27452\n" + "2 1.53683 0.75606 1.89928\n3 0.49482 0.56390 0.65678\n\n" + "Types\n\n1 1\n2 2\n3 2\n\n" + "Charges\n\n1 -0.8472\n2 0.4236\n3 0.4236\n\n" + "Bonds\n\n1 1 1 2\n2 1 1 3\n\n" + "Angles\n\n1 1 2 1 3\n\n" + "Shake Flags\n\n1 1\n2 1\n3 1\n\n" + "Shake Atoms\n\n1 1 2 3\n2 1 2 3\n3 1 2 3\n\n" + "Shake Bond Types\n\n1 1 1 1\n2 1 1 1\n3 1 1 1\n\n" + "Special Bond Counts\n\n1 2 0 0\n2 1 1 0\n3 1 1 0\n\n" + "Special Bonds\n\n1 2 3\n2 1 3\n3 1 2\n\n"; + const char co2_file[] = "# CO2 molecule file. TraPPE model.\n\n" + "3 atoms\n2 bonds\n1 angles\n\n" + "Coords\n\n1 0.0 0.0 0.0\n2 -1.16 0.0 0.0\n3 1.16 0.0 0.0\n\n" + "Types\n\n1 1\n2 2\n3 2\n\n" + "Charges\n\n1 0.7\n2 -0.35\n3 -0.35\n\n" + "Bonds\n\n1 1 1 2\n2 1 1 3\n\n" + "Angles\n\n1 1 2 1 3\n\n" + "Special Bond Counts\n\n1 2 0 0\n2 1 1 0\n3 1 1 0\n\n" + "Special Bonds\n\n1 2 3\n2 1 3\n3 1 2\n\n"; + + FILE *fp = fopen("tmp.h2o.mol", "w"); + if (fp) { + fputs(h2o_file, fp); + fclose(fp); + } + rename("tmp.h2o.mol", "h2o.mol"); + fp = fopen("tmp.co2.mol", "w"); + if (fp) { + fputs(co2_file, fp); + fclose(fp); + } + rename("tmp.co2.mol", "co2.mol"); +} + // whether to print verbose output (i.e. not capturing LAMMPS screen output). bool verbose = false; -const double EPSILON=5.0e-14; +const double EPSILON = 5.0e-14; namespace LAMMPS_NS { using ::testing::Eq; @@ -91,218 +130,381 @@ protected: } }; -TEST_F(AtomStyleTest, atomic) +// default class Atom state +struct AtomState { + std::string atom_style = "atomic"; + bigint natoms = 0; + int nlocal = 0; + int nghost = 0; + int nmax = 1; + int tag_enable = 1; + int molecular = Atom::ATOMIC; + bigint nellipsoids = 0; + bigint nlines = 0; + bigint ntris = 0; + bigint nbodies = 0; + bigint nbonds = 0; + bigint nangles = 0; + bigint ndihedrals = 0; + bigint nimpropers = 0; + int ntypes = 0; + int nbondtypes = 0; + int nangletypes = 0; + int ndihedraltypes = 0; + int nimpropertypes = 0; + int bond_per_atom = 0; + int angle_per_atom = 0; + int dihedral_per_atom = 0; + int improper_per_atom = 0; + int extra_bond_per_atom = 0; + int extra_angle_per_atom = 0; + int extra_dihedral_per_atom = 0; + int extra_improper_per_atom = 0; + + int sphere_flag = 0; + int ellipsoid_flag = 0; + int line_flag = 0; + int tri_flag = 0; + int body_flag = 0; + int peri_flag = 0; + int electron_flag = 0; + int wavepacket_flag = 0; + int sph_flag = 0; + int molecule_flag = 0; + int molindex_flag = 0; + int molatom_flag = 0; + int q_flag = 0; + int mu_flag = 0; + int rmass_flag = 0; + int radius_flag = 0; + int omega_flag = 0; + int torque_flag = 0; + int angmom_flag = 0; + int vfrac_flag = 0; + int spin_flag = 0; + int eradius_flag = 0; + int ervel_flag = 0; + int erforce_flag = 0; + int cs_flag = 0; + int csforce_flag = 0; + int vforce_flag = 0; + int ervelforce_flag = 0; + int etag_flag = 0; + int rho_flag = 0; + int esph_flag = 0; + int cv_flag = 0; + int vest_flag = 0; + int dpd_flag = 0; + int edpd_flag = 0; + int tdpd_flag = 0; + int mesont_flag = 0; + int sp_flag = 0; + int x0_flag = 0; + int smd_flag = 0; + int damage_flag = 0; + int contact_radius_flag = 0; + int smd_data_9_flag = 0; + int smd_stress_flag = 0; + int eff_plastic_strain_flag = 0; + int eff_plastic_strain_rate_flag = 0; + double pdscale = 1.0; + + + int maxspecial = 1; + + int nmolecule = 0; + + int nivector = 0; + int ndvector = 0; + + int nextra_grow = 0; + int nextra_restart = 0; + int nextra_border = 0; + int nextra_grow_max = 0; + int nextra_restart_max = 0; + int nextra_border_max = 0; + int nextra_store = 0; + + int map_style = Atom::MAP_NONE; + int map_user = 0; + tagint map_tag_max = -1; + + // properties X that aren't controlled by an equivalent X_flag + bool has_type = true; + bool has_mask = true; + bool has_image = true; + bool has_x = true; + bool has_v = true; + bool has_f = true; + + bool has_bonds = false; + bool has_angles = false; + bool has_dihedral = false; + bool has_improper = false; + + bool has_iname = false; + bool has_dname = false; + bool has_mass = false; + bool has_mass_setflag = false; + + bool has_nspecial = false; + bool has_special = false; +}; + +#define ASSERT_ARRAY_ALLOCATED(ptr, enabled) \ + if (enabled) { \ + ASSERT_NE(ptr, nullptr); \ + } else { \ + ASSERT_EQ(ptr, nullptr); \ + } + +void ASSERT_ATOM_STATE_EQ(Atom* atom, const AtomState& expected) { + ASSERT_THAT(std::string(atom->atom_style), Eq(expected.atom_style)); + + ASSERT_NE(atom->avec, nullptr); + ASSERT_EQ(atom->natoms, expected.natoms); + ASSERT_EQ(atom->nlocal, expected.nlocal); + ASSERT_EQ(atom->nghost, expected.nghost); + ASSERT_EQ(atom->nmax, expected.nmax); + ASSERT_EQ(atom->tag_enable, expected.tag_enable); + ASSERT_EQ(atom->molecular, expected.molecular); + ASSERT_EQ(atom->nellipsoids, expected.nellipsoids); + ASSERT_EQ(atom->nlines, expected.nlines); + ASSERT_EQ(atom->ntris, expected.ntris); + ASSERT_EQ(atom->nbodies, expected.nbodies); + ASSERT_EQ(atom->nbonds, expected.nbonds); + ASSERT_EQ(atom->nangles, expected.nangles); + ASSERT_EQ(atom->ndihedrals, expected.ndihedrals); + ASSERT_EQ(atom->nimpropers, expected.nimpropers); + ASSERT_EQ(atom->ntypes, expected.ntypes); + ASSERT_EQ(atom->nbondtypes, expected.nbondtypes); + ASSERT_EQ(atom->nangletypes, expected.nangletypes); + ASSERT_EQ(atom->ndihedraltypes, expected.ndihedraltypes); + ASSERT_EQ(atom->nimpropertypes, expected.nimpropertypes); + ASSERT_EQ(atom->bond_per_atom, expected.bond_per_atom); + ASSERT_EQ(atom->angle_per_atom, expected.angle_per_atom); + ASSERT_EQ(atom->dihedral_per_atom, expected.dihedral_per_atom); + ASSERT_EQ(atom->improper_per_atom, expected.improper_per_atom); + ASSERT_EQ(atom->extra_bond_per_atom, expected.extra_bond_per_atom); + ASSERT_EQ(atom->extra_angle_per_atom, expected.extra_angle_per_atom); + ASSERT_EQ(atom->extra_dihedral_per_atom, expected.extra_dihedral_per_atom); + ASSERT_EQ(atom->extra_improper_per_atom, expected.extra_improper_per_atom); + + ASSERT_EQ(atom->sphere_flag, expected.sphere_flag); + ASSERT_EQ(atom->ellipsoid_flag, expected.ellipsoid_flag); + ASSERT_EQ(atom->line_flag, expected.line_flag); + ASSERT_EQ(atom->tri_flag, expected.tri_flag); + ASSERT_EQ(atom->body_flag, expected.body_flag); + ASSERT_EQ(atom->peri_flag, expected.peri_flag); + ASSERT_EQ(atom->electron_flag, expected.electron_flag); + ASSERT_EQ(atom->wavepacket_flag, expected.wavepacket_flag); + ASSERT_EQ(atom->sph_flag, expected.sph_flag); + ASSERT_EQ(atom->molecule_flag, expected.molecule_flag); + ASSERT_EQ(atom->molindex_flag, expected.molindex_flag); + ASSERT_EQ(atom->molatom_flag, expected.molatom_flag); + ASSERT_EQ(atom->q_flag, expected.q_flag); + ASSERT_EQ(atom->mu_flag, expected.mu_flag); + ASSERT_EQ(atom->rmass_flag, expected.rmass_flag); + ASSERT_EQ(atom->radius_flag, expected.radius_flag); + ASSERT_EQ(atom->omega_flag, expected.omega_flag); + ASSERT_EQ(atom->torque_flag, expected.torque_flag); + ASSERT_EQ(atom->angmom_flag, expected.angmom_flag); + ASSERT_EQ(atom->vfrac_flag, expected.vfrac_flag); + ASSERT_EQ(atom->spin_flag, expected.spin_flag); + ASSERT_EQ(atom->eradius_flag, expected.eradius_flag); + ASSERT_EQ(atom->ervel_flag, expected.ervel_flag); + ASSERT_EQ(atom->erforce_flag, expected.erforce_flag); + ASSERT_EQ(atom->cs_flag, expected.cs_flag); + ASSERT_EQ(atom->csforce_flag, expected.csforce_flag); + ASSERT_EQ(atom->vforce_flag, expected.vforce_flag); + ASSERT_EQ(atom->ervelforce_flag, expected.ervelforce_flag); + ASSERT_EQ(atom->etag_flag, expected.etag_flag); + ASSERT_EQ(atom->rho_flag, expected.rho_flag); + ASSERT_EQ(atom->esph_flag, expected.esph_flag); + ASSERT_EQ(atom->cv_flag, expected.cv_flag); + ASSERT_EQ(atom->vest_flag, expected.vest_flag); + ASSERT_EQ(atom->dpd_flag, expected.dpd_flag); + ASSERT_EQ(atom->edpd_flag, expected.edpd_flag); + ASSERT_EQ(atom->tdpd_flag, expected.tdpd_flag); + ASSERT_EQ(atom->mesont_flag, expected.mesont_flag); + ASSERT_EQ(atom->sp_flag, expected.sp_flag); + ASSERT_EQ(atom->x0_flag, expected.x0_flag); + ASSERT_EQ(atom->smd_flag, expected.smd_flag); + ASSERT_EQ(atom->damage_flag, expected.damage_flag); + ASSERT_EQ(atom->contact_radius_flag, expected.contact_radius_flag); + ASSERT_EQ(atom->smd_data_9_flag, expected.smd_data_9_flag); + ASSERT_EQ(atom->smd_stress_flag, expected.smd_stress_flag); + ASSERT_EQ(atom->eff_plastic_strain_flag, expected.eff_plastic_strain_flag); + ASSERT_EQ(atom->eff_plastic_strain_rate_flag, expected.eff_plastic_strain_rate_flag); + ASSERT_EQ(atom->pdscale, expected.pdscale); + + ASSERT_ARRAY_ALLOCATED(atom->tag, expected.tag_enable); + ASSERT_ARRAY_ALLOCATED(atom->type, expected.has_type); + ASSERT_ARRAY_ALLOCATED(atom->mask, expected.has_mask); + ASSERT_ARRAY_ALLOCATED(atom->image, expected.has_image); + + ASSERT_ARRAY_ALLOCATED(atom->x, expected.has_x); + ASSERT_ARRAY_ALLOCATED(atom->v, expected.has_v); + ASSERT_ARRAY_ALLOCATED(atom->f, expected.has_f); + ASSERT_ARRAY_ALLOCATED(atom->q, expected.q_flag); + ASSERT_ARRAY_ALLOCATED(atom->mu, expected.mu_flag); + + ASSERT_ARRAY_ALLOCATED(atom->omega, expected.omega_flag); + ASSERT_ARRAY_ALLOCATED(atom->angmom, expected.angmom_flag); + ASSERT_ARRAY_ALLOCATED(atom->torque, expected.torque_flag); + ASSERT_ARRAY_ALLOCATED(atom->radius, expected.radius_flag); + ASSERT_ARRAY_ALLOCATED(atom->rmass, expected.rmass_flag); + ASSERT_ARRAY_ALLOCATED(atom->ellipsoid, expected.ellipsoid_flag); + ASSERT_ARRAY_ALLOCATED(atom->line, expected.line_flag); + ASSERT_ARRAY_ALLOCATED(atom->tri, expected.tri_flag); + ASSERT_ARRAY_ALLOCATED(atom->body, expected.body_flag); + ASSERT_ARRAY_ALLOCATED(atom->molecule, expected.molecule_flag); + ASSERT_ARRAY_ALLOCATED(atom->molindex, expected.molindex_flag); + ASSERT_ARRAY_ALLOCATED(atom->molatom, expected.molatom_flag); + + ASSERT_ARRAY_ALLOCATED(atom->num_bond, expected.has_bonds); + ASSERT_ARRAY_ALLOCATED(atom->bond_type, expected.has_bonds); + ASSERT_ARRAY_ALLOCATED(atom->bond_atom, expected.has_bonds); + + ASSERT_ARRAY_ALLOCATED(atom->num_angle, expected.has_angles); + ASSERT_ARRAY_ALLOCATED(atom->angle_type, expected.has_angles); + ASSERT_ARRAY_ALLOCATED(atom->angle_atom1, expected.has_angles); + ASSERT_ARRAY_ALLOCATED(atom->angle_atom2, expected.has_angles); + ASSERT_ARRAY_ALLOCATED(atom->angle_atom3, expected.has_angles); + + ASSERT_ARRAY_ALLOCATED(atom->num_dihedral, expected.has_dihedral); + ASSERT_ARRAY_ALLOCATED(atom->dihedral_type, expected.has_dihedral); + ASSERT_ARRAY_ALLOCATED(atom->dihedral_atom1, expected.has_dihedral); + ASSERT_ARRAY_ALLOCATED(atom->dihedral_atom2, expected.has_dihedral); + ASSERT_ARRAY_ALLOCATED(atom->dihedral_atom3, expected.has_dihedral); + ASSERT_ARRAY_ALLOCATED(atom->dihedral_atom4, expected.has_dihedral); + + ASSERT_ARRAY_ALLOCATED(atom->num_improper, expected.has_improper); + ASSERT_ARRAY_ALLOCATED(atom->improper_type, expected.has_improper); + ASSERT_ARRAY_ALLOCATED(atom->improper_atom1, expected.has_improper); + ASSERT_ARRAY_ALLOCATED(atom->improper_atom2, expected.has_improper); + ASSERT_ARRAY_ALLOCATED(atom->improper_atom3, expected.has_improper); + ASSERT_ARRAY_ALLOCATED(atom->improper_atom4, expected.has_improper); + + ASSERT_EQ(atom->maxspecial, expected.maxspecial); + + ASSERT_ARRAY_ALLOCATED(atom->nspecial, expected.has_nspecial); + ASSERT_ARRAY_ALLOCATED(atom->special, expected.has_special); + + // currently ignored + ASSERT_ARRAY_ALLOCATED(atom->vfrac, false); + ASSERT_ARRAY_ALLOCATED(atom->s0, false); + ASSERT_ARRAY_ALLOCATED(atom->x0, false); + ASSERT_ARRAY_ALLOCATED(atom->sp, false); + ASSERT_ARRAY_ALLOCATED(atom->fm, false); + ASSERT_ARRAY_ALLOCATED(atom->fm_long, false); + ASSERT_ARRAY_ALLOCATED(atom->spin, false); + ASSERT_ARRAY_ALLOCATED(atom->eradius, false); + ASSERT_ARRAY_ALLOCATED(atom->ervel, false); + ASSERT_ARRAY_ALLOCATED(atom->erforce, false); + ASSERT_ARRAY_ALLOCATED(atom->ervelforce, false); + ASSERT_ARRAY_ALLOCATED(atom->cs, false); + ASSERT_ARRAY_ALLOCATED(atom->csforce, false); + ASSERT_ARRAY_ALLOCATED(atom->vforce, false); + ASSERT_ARRAY_ALLOCATED(atom->etag, false); + ASSERT_ARRAY_ALLOCATED(atom->uCond, false); + ASSERT_ARRAY_ALLOCATED(atom->uMech, false); + ASSERT_ARRAY_ALLOCATED(atom->uChem, false); + ASSERT_ARRAY_ALLOCATED(atom->uCG, false); + ASSERT_ARRAY_ALLOCATED(atom->uCGnew, false); + ASSERT_ARRAY_ALLOCATED(atom->duChem, false); + ASSERT_ARRAY_ALLOCATED(atom->dpdTheta, false); + ASSERT_ARRAY_ALLOCATED(atom->cc, false); + ASSERT_ARRAY_ALLOCATED(atom->cc_flux, false); + ASSERT_ARRAY_ALLOCATED(atom->edpd_temp, false); + ASSERT_ARRAY_ALLOCATED(atom->edpd_flux, false); + ASSERT_ARRAY_ALLOCATED(atom->edpd_cv, false); + ASSERT_ARRAY_ALLOCATED(atom->length, false); + ASSERT_ARRAY_ALLOCATED(atom->buckling, false); + ASSERT_ARRAY_ALLOCATED(atom->bond_nt, false); + ASSERT_ARRAY_ALLOCATED(atom->contact_radius, false); + ASSERT_ARRAY_ALLOCATED(atom->smd_data_9, false); + ASSERT_ARRAY_ALLOCATED(atom->smd_stress, false); + ASSERT_ARRAY_ALLOCATED(atom->eff_plastic_strain, false); + ASSERT_ARRAY_ALLOCATED(atom->eff_plastic_strain_rate, false); + ASSERT_ARRAY_ALLOCATED(atom->damage, false); + ASSERT_ARRAY_ALLOCATED(atom->rho, false); + ASSERT_ARRAY_ALLOCATED(atom->drho, false); + ASSERT_ARRAY_ALLOCATED(atom->esph, false); + ASSERT_ARRAY_ALLOCATED(atom->desph, false); + ASSERT_ARRAY_ALLOCATED(atom->cv, false); + ASSERT_ARRAY_ALLOCATED(atom->vest, false); + + ASSERT_EQ(atom->nmolecule, expected.nmolecule); + + ASSERT_ARRAY_ALLOCATED(atom->molecules, expected.nmolecule > 0); + + ASSERT_EQ(atom->nivector, expected.nivector); + ASSERT_EQ(atom->ndvector, expected.ndvector); + + ASSERT_ARRAY_ALLOCATED(atom->iname, expected.has_iname); + ASSERT_ARRAY_ALLOCATED(atom->dname, expected.has_dname); + ASSERT_ARRAY_ALLOCATED(atom->mass, expected.has_mass); + ASSERT_ARRAY_ALLOCATED(atom->mass_setflag, expected.has_mass_setflag); + + ASSERT_EQ(atom->nextra_grow, expected.nextra_grow); + ASSERT_EQ(atom->nextra_restart, expected.nextra_restart); + ASSERT_EQ(atom->nextra_border, expected.nextra_border); + ASSERT_EQ(atom->nextra_grow_max, expected.nextra_grow_max); + ASSERT_EQ(atom->nextra_restart_max, expected.nextra_restart_max); + ASSERT_EQ(atom->nextra_border_max, expected.nextra_border_max); + ASSERT_EQ(atom->nextra_store, expected.nextra_store); + + ASSERT_ARRAY_ALLOCATED(atom->extra_grow, false); + ASSERT_ARRAY_ALLOCATED(atom->extra_restart, false); + ASSERT_ARRAY_ALLOCATED(atom->extra_border, false); + ASSERT_ARRAY_ALLOCATED(atom->extra, false); + ASSERT_ARRAY_ALLOCATED(atom->sametag, false); + + ASSERT_EQ(atom->map_style, expected.map_style); + ASSERT_EQ(atom->map_user, expected.map_user); + ASSERT_EQ(atom->map_tag_max, expected.map_tag_max); +} + +TEST_F(AtomStyleTest, atomic_is_default) { - ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("atomic")); - ASSERT_NE(lmp->atom->avec, nullptr); - ASSERT_EQ(lmp->atom->natoms, 0); - ASSERT_EQ(lmp->atom->nlocal, 0); - ASSERT_EQ(lmp->atom->nghost, 0); - ASSERT_EQ(lmp->atom->nmax, 1); - ASSERT_EQ(lmp->atom->tag_enable, 1); - ASSERT_EQ(lmp->atom->molecular, Atom::ATOMIC); - ASSERT_EQ(lmp->atom->nellipsoids, 0); - ASSERT_EQ(lmp->atom->nlines, 0); - ASSERT_EQ(lmp->atom->ntris, 0); - ASSERT_EQ(lmp->atom->nbodies, 0); - ASSERT_EQ(lmp->atom->nbonds, 0); - ASSERT_EQ(lmp->atom->nangles, 0); - ASSERT_EQ(lmp->atom->ndihedrals, 0); - ASSERT_EQ(lmp->atom->nimpropers, 0); - ASSERT_EQ(lmp->atom->ntypes, 0); - ASSERT_EQ(lmp->atom->nbondtypes, 0); - ASSERT_EQ(lmp->atom->nangletypes, 0); - ASSERT_EQ(lmp->atom->ndihedraltypes, 0); - ASSERT_EQ(lmp->atom->nimpropertypes, 0); - ASSERT_EQ(lmp->atom->bond_per_atom, 0); - ASSERT_EQ(lmp->atom->angle_per_atom, 0); - ASSERT_EQ(lmp->atom->dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->improper_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_bond_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_angle_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_improper_per_atom, 0); + AtomState expected; + expected.atom_style = "atomic"; + expected.molecular = Atom::ATOMIC; + expected.tag_enable = 1; + expected.has_type = true; + expected.has_mask = true; + expected.has_image = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; - ASSERT_EQ(lmp->atom->sphere_flag, 0); - ASSERT_EQ(lmp->atom->ellipsoid_flag, 0); - ASSERT_EQ(lmp->atom->line_flag, 0); - ASSERT_EQ(lmp->atom->tri_flag, 0); - ASSERT_EQ(lmp->atom->body_flag, 0); - ASSERT_EQ(lmp->atom->peri_flag, 0); - ASSERT_EQ(lmp->atom->electron_flag, 0); - ASSERT_EQ(lmp->atom->wavepacket_flag, 0); - ASSERT_EQ(lmp->atom->sph_flag, 0); - ASSERT_EQ(lmp->atom->molecule_flag, 0); - ASSERT_EQ(lmp->atom->molindex_flag, 0); - ASSERT_EQ(lmp->atom->molatom_flag, 0); - ASSERT_EQ(lmp->atom->q_flag, 0); - ASSERT_EQ(lmp->atom->mu_flag, 0); - ASSERT_EQ(lmp->atom->rmass_flag, 0); - ASSERT_EQ(lmp->atom->radius_flag, 0); - ASSERT_EQ(lmp->atom->omega_flag, 0); - ASSERT_EQ(lmp->atom->torque_flag, 0); - ASSERT_EQ(lmp->atom->angmom_flag, 0); - ASSERT_EQ(lmp->atom->vfrac_flag, 0); - ASSERT_EQ(lmp->atom->spin_flag, 0); - ASSERT_EQ(lmp->atom->eradius_flag, 0); - ASSERT_EQ(lmp->atom->ervel_flag, 0); - ASSERT_EQ(lmp->atom->erforce_flag, 0); - ASSERT_EQ(lmp->atom->cs_flag, 0); - ASSERT_EQ(lmp->atom->csforce_flag, 0); - ASSERT_EQ(lmp->atom->vforce_flag, 0); - ASSERT_EQ(lmp->atom->ervelforce_flag, 0); - ASSERT_EQ(lmp->atom->etag_flag, 0); - ASSERT_EQ(lmp->atom->rho_flag, 0); - ASSERT_EQ(lmp->atom->esph_flag, 0); - ASSERT_EQ(lmp->atom->cv_flag, 0); - ASSERT_EQ(lmp->atom->vest_flag, 0); - ASSERT_EQ(lmp->atom->dpd_flag, 0); - ASSERT_EQ(lmp->atom->edpd_flag, 0); - ASSERT_EQ(lmp->atom->tdpd_flag, 0); - ASSERT_EQ(lmp->atom->mesont_flag, 0); - ASSERT_EQ(lmp->atom->sp_flag, 0); - ASSERT_EQ(lmp->atom->x0_flag, 0); - ASSERT_EQ(lmp->atom->smd_flag, 0); - ASSERT_EQ(lmp->atom->damage_flag, 0); - ASSERT_EQ(lmp->atom->contact_radius_flag, 0); - ASSERT_EQ(lmp->atom->smd_data_9_flag, 0); - ASSERT_EQ(lmp->atom->smd_stress_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate_flag, 0); - ASSERT_EQ(lmp->atom->pdscale, 1.0); + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); +} - ASSERT_NE(lmp->atom->tag, nullptr); - ASSERT_NE(lmp->atom->type, nullptr); - ASSERT_NE(lmp->atom->mask, nullptr); - ASSERT_NE(lmp->atom->image, nullptr); - ASSERT_NE(lmp->atom->x, nullptr); - ASSERT_NE(lmp->atom->v, nullptr); - ASSERT_NE(lmp->atom->f, nullptr); - ASSERT_EQ(lmp->atom->q, nullptr); - ASSERT_EQ(lmp->atom->mu, nullptr); - ASSERT_EQ(lmp->atom->omega, nullptr); - ASSERT_EQ(lmp->atom->angmom, nullptr); - ASSERT_EQ(lmp->atom->torque, nullptr); - ASSERT_EQ(lmp->atom->radius, nullptr); - ASSERT_EQ(lmp->atom->rmass, nullptr); - ASSERT_EQ(lmp->atom->ellipsoid, nullptr); - ASSERT_EQ(lmp->atom->line, nullptr); - ASSERT_EQ(lmp->atom->tri, nullptr); - ASSERT_EQ(lmp->atom->body, nullptr); - ASSERT_EQ(lmp->atom->molecule, nullptr); - ASSERT_EQ(lmp->atom->molindex, nullptr); - ASSERT_EQ(lmp->atom->molatom, nullptr); - ASSERT_EQ(lmp->atom->num_bond, nullptr); - ASSERT_EQ(lmp->atom->bond_type, nullptr); - ASSERT_EQ(lmp->atom->bond_atom, nullptr); - ASSERT_EQ(lmp->atom->num_angle, nullptr); - ASSERT_EQ(lmp->atom->angle_type, nullptr); - ASSERT_EQ(lmp->atom->angle_atom1, nullptr); - ASSERT_EQ(lmp->atom->angle_atom2, nullptr); - ASSERT_EQ(lmp->atom->angle_atom3, nullptr); - ASSERT_EQ(lmp->atom->num_dihedral, nullptr); - ASSERT_EQ(lmp->atom->dihedral_type, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom1, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom2, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom3, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom4, nullptr); - ASSERT_EQ(lmp->atom->num_improper, nullptr); - ASSERT_EQ(lmp->atom->improper_type, nullptr); - ASSERT_EQ(lmp->atom->improper_atom1, nullptr); - ASSERT_EQ(lmp->atom->improper_atom2, nullptr); - ASSERT_EQ(lmp->atom->improper_atom3, nullptr); - ASSERT_EQ(lmp->atom->improper_atom4, nullptr); - ASSERT_EQ(lmp->atom->maxspecial, 1); - ASSERT_EQ(lmp->atom->nspecial, nullptr); - ASSERT_EQ(lmp->atom->special, nullptr); - ASSERT_EQ(lmp->atom->vfrac, nullptr); - ASSERT_EQ(lmp->atom->s0, nullptr); - ASSERT_EQ(lmp->atom->x0, nullptr); - ASSERT_EQ(lmp->atom->sp, nullptr); - ASSERT_EQ(lmp->atom->fm, nullptr); - ASSERT_EQ(lmp->atom->fm_long, nullptr); - ASSERT_EQ(lmp->atom->spin, nullptr); - ASSERT_EQ(lmp->atom->eradius, nullptr); - ASSERT_EQ(lmp->atom->ervel, nullptr); - ASSERT_EQ(lmp->atom->erforce, nullptr); - ASSERT_EQ(lmp->atom->ervelforce, nullptr); - ASSERT_EQ(lmp->atom->cs, nullptr); - ASSERT_EQ(lmp->atom->csforce, nullptr); - ASSERT_EQ(lmp->atom->vforce, nullptr); - ASSERT_EQ(lmp->atom->etag, nullptr); - ASSERT_EQ(lmp->atom->uCond, nullptr); - ASSERT_EQ(lmp->atom->uMech, nullptr); - ASSERT_EQ(lmp->atom->uChem, nullptr); - ASSERT_EQ(lmp->atom->uCG, nullptr); - ASSERT_EQ(lmp->atom->uCGnew, nullptr); - ASSERT_EQ(lmp->atom->duChem, nullptr); - ASSERT_EQ(lmp->atom->dpdTheta, nullptr); - ASSERT_EQ(lmp->atom->cc, nullptr); - ASSERT_EQ(lmp->atom->cc_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_temp, nullptr); - ASSERT_EQ(lmp->atom->edpd_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_cv, nullptr); - ASSERT_EQ(lmp->atom->length, nullptr); - ASSERT_EQ(lmp->atom->buckling, nullptr); - ASSERT_EQ(lmp->atom->bond_nt, nullptr); - ASSERT_EQ(lmp->atom->contact_radius, nullptr); - ASSERT_EQ(lmp->atom->smd_data_9, nullptr); - ASSERT_EQ(lmp->atom->smd_stress, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate, nullptr); - ASSERT_EQ(lmp->atom->damage, nullptr); - ASSERT_EQ(lmp->atom->rho, nullptr); - ASSERT_EQ(lmp->atom->drho, nullptr); - ASSERT_EQ(lmp->atom->esph, nullptr); - ASSERT_EQ(lmp->atom->desph, nullptr); - ASSERT_EQ(lmp->atom->cv, nullptr); - ASSERT_EQ(lmp->atom->vest, nullptr); - ASSERT_EQ(lmp->atom->nmolecule, 0); - ASSERT_EQ(lmp->atom->molecules, nullptr); - ASSERT_EQ(lmp->atom->nivector, 0); - ASSERT_EQ(lmp->atom->ndvector, 0); - ASSERT_EQ(lmp->atom->iname, nullptr); - ASSERT_EQ(lmp->atom->dname, nullptr); - ASSERT_EQ(lmp->atom->mass, nullptr); - ASSERT_EQ(lmp->atom->mass_setflag, nullptr); - ASSERT_EQ(lmp->atom->nextra_grow, 0); - ASSERT_EQ(lmp->atom->nextra_restart, 0); - ASSERT_EQ(lmp->atom->nextra_border, 0); - ASSERT_EQ(lmp->atom->nextra_grow_max, 0); - ASSERT_EQ(lmp->atom->nextra_restart_max, 0); - ASSERT_EQ(lmp->atom->nextra_border_max, 0); - ASSERT_EQ(lmp->atom->nextra_store, 0); - ASSERT_EQ(lmp->atom->extra_grow, nullptr); - ASSERT_EQ(lmp->atom->extra_restart, nullptr); - ASSERT_EQ(lmp->atom->extra_border, nullptr); - ASSERT_EQ(lmp->atom->extra, nullptr); - ASSERT_EQ(lmp->atom->sametag, nullptr); - ASSERT_EQ(lmp->atom->map_style, Atom::MAP_NONE); - ASSERT_EQ(lmp->atom->map_user, 0); - ASSERT_EQ(lmp->atom->map_tag_max, -1); +TEST_F(AtomStyleTest, atomic_after_charge) +{ + AtomState expected; + expected.atom_style = "atomic"; + expected.molecular = Atom::ATOMIC; + expected.tag_enable = 1; + expected.has_type = true; + expected.has_mask = true; + expected.has_image = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("atom_style charge"); lmp->input->one("atom_style atomic"); if (!verbose) ::testing::internal::GetCapturedStdout(); - ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("atomic")); - ASSERT_NE(lmp->atom->avec, nullptr); - ASSERT_EQ(lmp->atom->natoms, 0); - ASSERT_EQ(lmp->atom->nlocal, 0); - ASSERT_EQ(lmp->atom->nghost, 0); - ASSERT_EQ(lmp->atom->nmax, 1); - ASSERT_EQ(lmp->atom->tag_enable, 1); - ASSERT_EQ(lmp->atom->molecular, Atom::ATOMIC); - ASSERT_EQ(lmp->atom->ntypes, 0); - - ASSERT_EQ(lmp->atom->molecule_flag, 0); - ASSERT_EQ(lmp->atom->molindex_flag, 0); - ASSERT_EQ(lmp->atom->molatom_flag, 0); - - ASSERT_EQ(lmp->atom->q_flag, 0); - ASSERT_EQ(lmp->atom->q, nullptr); + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); +} +TEST_F(AtomStyleTest, atomic) +{ if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("atom_modify map hash"); lmp->input->one("create_box 2 box"); @@ -314,6 +516,7 @@ TEST_F(AtomStyleTest, atomic) lmp->input->one("mass 2 2.4"); lmp->input->one("pair_coeff * *"); if (!verbose) ::testing::internal::GetCapturedStdout(); + ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("atomic")); ASSERT_NE(lmp->atom->avec, nullptr); ASSERT_EQ(lmp->atom->natoms, 4); @@ -496,193 +699,19 @@ TEST_F(AtomStyleTest, charge) if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("atom_style charge"); if (!verbose) ::testing::internal::GetCapturedStdout(); - ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("charge")); - ASSERT_NE(lmp->atom->avec, nullptr); - ASSERT_EQ(lmp->atom->natoms, 0); - ASSERT_EQ(lmp->atom->nlocal, 0); - ASSERT_EQ(lmp->atom->nghost, 0); - ASSERT_EQ(lmp->atom->nmax, 1); - ASSERT_EQ(lmp->atom->tag_enable, 1); - ASSERT_EQ(lmp->atom->molecular, Atom::ATOMIC); - ASSERT_EQ(lmp->atom->nellipsoids, 0); - ASSERT_EQ(lmp->atom->nlines, 0); - ASSERT_EQ(lmp->atom->ntris, 0); - ASSERT_EQ(lmp->atom->nbodies, 0); - ASSERT_EQ(lmp->atom->nbonds, 0); - ASSERT_EQ(lmp->atom->nangles, 0); - ASSERT_EQ(lmp->atom->ndihedrals, 0); - ASSERT_EQ(lmp->atom->nimpropers, 0); - ASSERT_EQ(lmp->atom->ntypes, 0); - ASSERT_EQ(lmp->atom->nbondtypes, 0); - ASSERT_EQ(lmp->atom->nangletypes, 0); - ASSERT_EQ(lmp->atom->ndihedraltypes, 0); - ASSERT_EQ(lmp->atom->nimpropertypes, 0); - ASSERT_EQ(lmp->atom->bond_per_atom, 0); - ASSERT_EQ(lmp->atom->angle_per_atom, 0); - ASSERT_EQ(lmp->atom->dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->improper_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_bond_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_angle_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_improper_per_atom, 0); - ASSERT_EQ(lmp->atom->sphere_flag, 0); - ASSERT_EQ(lmp->atom->ellipsoid_flag, 0); - ASSERT_EQ(lmp->atom->line_flag, 0); - ASSERT_EQ(lmp->atom->tri_flag, 0); - ASSERT_EQ(lmp->atom->body_flag, 0); - ASSERT_EQ(lmp->atom->peri_flag, 0); - ASSERT_EQ(lmp->atom->electron_flag, 0); - ASSERT_EQ(lmp->atom->wavepacket_flag, 0); - ASSERT_EQ(lmp->atom->sph_flag, 0); - ASSERT_EQ(lmp->atom->molecule_flag, 0); - ASSERT_EQ(lmp->atom->molindex_flag, 0); - ASSERT_EQ(lmp->atom->molatom_flag, 0); - ASSERT_EQ(lmp->atom->q_flag, 1); - ASSERT_EQ(lmp->atom->mu_flag, 0); - ASSERT_EQ(lmp->atom->rmass_flag, 0); - ASSERT_EQ(lmp->atom->radius_flag, 0); - ASSERT_EQ(lmp->atom->omega_flag, 0); - ASSERT_EQ(lmp->atom->torque_flag, 0); - ASSERT_EQ(lmp->atom->angmom_flag, 0); - ASSERT_EQ(lmp->atom->vfrac_flag, 0); - ASSERT_EQ(lmp->atom->spin_flag, 0); - ASSERT_EQ(lmp->atom->eradius_flag, 0); - ASSERT_EQ(lmp->atom->ervel_flag, 0); - ASSERT_EQ(lmp->atom->erforce_flag, 0); - ASSERT_EQ(lmp->atom->cs_flag, 0); - ASSERT_EQ(lmp->atom->csforce_flag, 0); - ASSERT_EQ(lmp->atom->vforce_flag, 0); - ASSERT_EQ(lmp->atom->ervelforce_flag, 0); - ASSERT_EQ(lmp->atom->etag_flag, 0); - ASSERT_EQ(lmp->atom->rho_flag, 0); - ASSERT_EQ(lmp->atom->esph_flag, 0); - ASSERT_EQ(lmp->atom->cv_flag, 0); - ASSERT_EQ(lmp->atom->vest_flag, 0); - ASSERT_EQ(lmp->atom->dpd_flag, 0); - ASSERT_EQ(lmp->atom->edpd_flag, 0); - ASSERT_EQ(lmp->atom->tdpd_flag, 0); - ASSERT_EQ(lmp->atom->mesont_flag, 0); - ASSERT_EQ(lmp->atom->sp_flag, 0); - ASSERT_EQ(lmp->atom->x0_flag, 0); - ASSERT_EQ(lmp->atom->smd_flag, 0); - ASSERT_EQ(lmp->atom->damage_flag, 0); - ASSERT_EQ(lmp->atom->contact_radius_flag, 0); - ASSERT_EQ(lmp->atom->smd_data_9_flag, 0); - ASSERT_EQ(lmp->atom->smd_stress_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate_flag, 0); - ASSERT_EQ(lmp->atom->pdscale, 1.0); - - ASSERT_NE(lmp->atom->tag, nullptr); - ASSERT_NE(lmp->atom->type, nullptr); - ASSERT_NE(lmp->atom->mask, nullptr); - ASSERT_NE(lmp->atom->image, nullptr); - ASSERT_NE(lmp->atom->x, nullptr); - ASSERT_NE(lmp->atom->v, nullptr); - ASSERT_NE(lmp->atom->f, nullptr); - ASSERT_NE(lmp->atom->q, nullptr); - ASSERT_EQ(lmp->atom->mu, nullptr); - ASSERT_EQ(lmp->atom->omega, nullptr); - ASSERT_EQ(lmp->atom->angmom, nullptr); - ASSERT_EQ(lmp->atom->torque, nullptr); - ASSERT_EQ(lmp->atom->radius, nullptr); - ASSERT_EQ(lmp->atom->rmass, nullptr); - ASSERT_EQ(lmp->atom->ellipsoid, nullptr); - ASSERT_EQ(lmp->atom->line, nullptr); - ASSERT_EQ(lmp->atom->tri, nullptr); - ASSERT_EQ(lmp->atom->body, nullptr); - ASSERT_EQ(lmp->atom->molecule, nullptr); - ASSERT_EQ(lmp->atom->molindex, nullptr); - ASSERT_EQ(lmp->atom->molatom, nullptr); - ASSERT_EQ(lmp->atom->num_bond, nullptr); - ASSERT_EQ(lmp->atom->bond_type, nullptr); - ASSERT_EQ(lmp->atom->bond_atom, nullptr); - ASSERT_EQ(lmp->atom->num_angle, nullptr); - ASSERT_EQ(lmp->atom->angle_type, nullptr); - ASSERT_EQ(lmp->atom->angle_atom1, nullptr); - ASSERT_EQ(lmp->atom->angle_atom2, nullptr); - ASSERT_EQ(lmp->atom->angle_atom3, nullptr); - ASSERT_EQ(lmp->atom->num_dihedral, nullptr); - ASSERT_EQ(lmp->atom->dihedral_type, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom1, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom2, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom3, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom4, nullptr); - ASSERT_EQ(lmp->atom->num_improper, nullptr); - ASSERT_EQ(lmp->atom->improper_type, nullptr); - ASSERT_EQ(lmp->atom->improper_atom1, nullptr); - ASSERT_EQ(lmp->atom->improper_atom2, nullptr); - ASSERT_EQ(lmp->atom->improper_atom3, nullptr); - ASSERT_EQ(lmp->atom->improper_atom4, nullptr); - ASSERT_EQ(lmp->atom->maxspecial, 1); - ASSERT_EQ(lmp->atom->nspecial, nullptr); - ASSERT_EQ(lmp->atom->special, nullptr); - ASSERT_EQ(lmp->atom->vfrac, nullptr); - ASSERT_EQ(lmp->atom->s0, nullptr); - ASSERT_EQ(lmp->atom->x0, nullptr); - ASSERT_EQ(lmp->atom->sp, nullptr); - ASSERT_EQ(lmp->atom->fm, nullptr); - ASSERT_EQ(lmp->atom->fm_long, nullptr); - ASSERT_EQ(lmp->atom->spin, nullptr); - ASSERT_EQ(lmp->atom->eradius, nullptr); - ASSERT_EQ(lmp->atom->ervel, nullptr); - ASSERT_EQ(lmp->atom->erforce, nullptr); - ASSERT_EQ(lmp->atom->ervelforce, nullptr); - ASSERT_EQ(lmp->atom->cs, nullptr); - ASSERT_EQ(lmp->atom->csforce, nullptr); - ASSERT_EQ(lmp->atom->vforce, nullptr); - ASSERT_EQ(lmp->atom->etag, nullptr); - ASSERT_EQ(lmp->atom->uCond, nullptr); - ASSERT_EQ(lmp->atom->uMech, nullptr); - ASSERT_EQ(lmp->atom->uChem, nullptr); - ASSERT_EQ(lmp->atom->uCG, nullptr); - ASSERT_EQ(lmp->atom->uCGnew, nullptr); - ASSERT_EQ(lmp->atom->duChem, nullptr); - ASSERT_EQ(lmp->atom->dpdTheta, nullptr); - ASSERT_EQ(lmp->atom->cc, nullptr); - ASSERT_EQ(lmp->atom->cc_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_temp, nullptr); - ASSERT_EQ(lmp->atom->edpd_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_cv, nullptr); - ASSERT_EQ(lmp->atom->length, nullptr); - ASSERT_EQ(lmp->atom->buckling, nullptr); - ASSERT_EQ(lmp->atom->bond_nt, nullptr); - ASSERT_EQ(lmp->atom->contact_radius, nullptr); - ASSERT_EQ(lmp->atom->smd_data_9, nullptr); - ASSERT_EQ(lmp->atom->smd_stress, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate, nullptr); - ASSERT_EQ(lmp->atom->damage, nullptr); - ASSERT_EQ(lmp->atom->rho, nullptr); - ASSERT_EQ(lmp->atom->drho, nullptr); - ASSERT_EQ(lmp->atom->esph, nullptr); - ASSERT_EQ(lmp->atom->desph, nullptr); - ASSERT_EQ(lmp->atom->cv, nullptr); - ASSERT_EQ(lmp->atom->vest, nullptr); - ASSERT_EQ(lmp->atom->nmolecule, 0); - ASSERT_EQ(lmp->atom->molecules, nullptr); - ASSERT_EQ(lmp->atom->nivector, 0); - ASSERT_EQ(lmp->atom->ndvector, 0); - ASSERT_EQ(lmp->atom->iname, nullptr); - ASSERT_EQ(lmp->atom->dname, nullptr); - ASSERT_EQ(lmp->atom->mass, nullptr); - ASSERT_EQ(lmp->atom->mass_setflag, nullptr); - ASSERT_EQ(lmp->atom->nextra_grow, 0); - ASSERT_EQ(lmp->atom->nextra_restart, 0); - ASSERT_EQ(lmp->atom->nextra_border, 0); - ASSERT_EQ(lmp->atom->nextra_grow_max, 0); - ASSERT_EQ(lmp->atom->nextra_restart_max, 0); - ASSERT_EQ(lmp->atom->nextra_border_max, 0); - ASSERT_EQ(lmp->atom->nextra_store, 0); - ASSERT_EQ(lmp->atom->extra_grow, nullptr); - ASSERT_EQ(lmp->atom->extra_restart, nullptr); - ASSERT_EQ(lmp->atom->extra_border, nullptr); - ASSERT_EQ(lmp->atom->extra, nullptr); - ASSERT_EQ(lmp->atom->sametag, nullptr); - ASSERT_EQ(lmp->atom->map_style, Atom::MAP_NONE); - ASSERT_EQ(lmp->atom->map_user, 0); - ASSERT_EQ(lmp->atom->map_tag_max, -1); + AtomState expected; + expected.atom_style = "charge"; + expected.molecular = Atom::ATOMIC; + expected.tag_enable = 1; + expected.has_type = true; + expected.has_image = true; + expected.has_mask = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; + expected.q_flag = 1; + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("create_box 2 box"); @@ -847,193 +876,24 @@ TEST_F(AtomStyleTest, sphere) if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("atom_style sphere"); if (!verbose) ::testing::internal::GetCapturedStdout(); - ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("sphere")); - ASSERT_NE(lmp->atom->avec, nullptr); - ASSERT_EQ(lmp->atom->natoms, 0); - ASSERT_EQ(lmp->atom->nlocal, 0); - ASSERT_EQ(lmp->atom->nghost, 0); - ASSERT_EQ(lmp->atom->nmax, 1); - ASSERT_EQ(lmp->atom->tag_enable, 1); - ASSERT_EQ(lmp->atom->molecular, Atom::ATOMIC); - ASSERT_EQ(lmp->atom->nellipsoids, 0); - ASSERT_EQ(lmp->atom->nlines, 0); - ASSERT_EQ(lmp->atom->ntris, 0); - ASSERT_EQ(lmp->atom->nbodies, 0); - ASSERT_EQ(lmp->atom->nbonds, 0); - ASSERT_EQ(lmp->atom->nangles, 0); - ASSERT_EQ(lmp->atom->ndihedrals, 0); - ASSERT_EQ(lmp->atom->nimpropers, 0); - ASSERT_EQ(lmp->atom->ntypes, 0); - ASSERT_EQ(lmp->atom->nbondtypes, 0); - ASSERT_EQ(lmp->atom->nangletypes, 0); - ASSERT_EQ(lmp->atom->ndihedraltypes, 0); - ASSERT_EQ(lmp->atom->nimpropertypes, 0); - ASSERT_EQ(lmp->atom->bond_per_atom, 0); - ASSERT_EQ(lmp->atom->angle_per_atom, 0); - ASSERT_EQ(lmp->atom->dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->improper_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_bond_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_angle_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_improper_per_atom, 0); - ASSERT_EQ(lmp->atom->sphere_flag, 1); - ASSERT_EQ(lmp->atom->ellipsoid_flag, 0); - ASSERT_EQ(lmp->atom->line_flag, 0); - ASSERT_EQ(lmp->atom->tri_flag, 0); - ASSERT_EQ(lmp->atom->body_flag, 0); - ASSERT_EQ(lmp->atom->peri_flag, 0); - ASSERT_EQ(lmp->atom->electron_flag, 0); - ASSERT_EQ(lmp->atom->wavepacket_flag, 0); - ASSERT_EQ(lmp->atom->sph_flag, 0); - ASSERT_EQ(lmp->atom->molecule_flag, 0); - ASSERT_EQ(lmp->atom->molindex_flag, 0); - ASSERT_EQ(lmp->atom->molatom_flag, 0); - ASSERT_EQ(lmp->atom->q_flag, 0); - ASSERT_EQ(lmp->atom->mu_flag, 0); - ASSERT_EQ(lmp->atom->rmass_flag, 1); - ASSERT_EQ(lmp->atom->radius_flag, 1); - ASSERT_EQ(lmp->atom->omega_flag, 1); - ASSERT_EQ(lmp->atom->torque_flag, 1); - ASSERT_EQ(lmp->atom->angmom_flag, 0); - ASSERT_EQ(lmp->atom->vfrac_flag, 0); - ASSERT_EQ(lmp->atom->spin_flag, 0); - ASSERT_EQ(lmp->atom->eradius_flag, 0); - ASSERT_EQ(lmp->atom->ervel_flag, 0); - ASSERT_EQ(lmp->atom->erforce_flag, 0); - ASSERT_EQ(lmp->atom->cs_flag, 0); - ASSERT_EQ(lmp->atom->csforce_flag, 0); - ASSERT_EQ(lmp->atom->vforce_flag, 0); - ASSERT_EQ(lmp->atom->ervelforce_flag, 0); - ASSERT_EQ(lmp->atom->etag_flag, 0); - ASSERT_EQ(lmp->atom->rho_flag, 0); - ASSERT_EQ(lmp->atom->esph_flag, 0); - ASSERT_EQ(lmp->atom->cv_flag, 0); - ASSERT_EQ(lmp->atom->vest_flag, 0); - ASSERT_EQ(lmp->atom->dpd_flag, 0); - ASSERT_EQ(lmp->atom->edpd_flag, 0); - ASSERT_EQ(lmp->atom->tdpd_flag, 0); - ASSERT_EQ(lmp->atom->mesont_flag, 0); - ASSERT_EQ(lmp->atom->sp_flag, 0); - ASSERT_EQ(lmp->atom->x0_flag, 0); - ASSERT_EQ(lmp->atom->smd_flag, 0); - ASSERT_EQ(lmp->atom->damage_flag, 0); - ASSERT_EQ(lmp->atom->contact_radius_flag, 0); - ASSERT_EQ(lmp->atom->smd_data_9_flag, 0); - ASSERT_EQ(lmp->atom->smd_stress_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate_flag, 0); - ASSERT_EQ(lmp->atom->pdscale, 1.0); + AtomState expected; + expected.atom_style = "sphere"; + expected.molecular = Atom::ATOMIC; + expected.tag_enable = 1; + expected.sphere_flag = 1; + expected.rmass_flag = 1; + expected.radius_flag = 1; + expected.omega_flag = 1; + expected.torque_flag = 1; + expected.has_type = true; + expected.has_mask = true; + expected.has_image = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; - ASSERT_NE(lmp->atom->tag, nullptr); - ASSERT_NE(lmp->atom->type, nullptr); - ASSERT_NE(lmp->atom->mask, nullptr); - ASSERT_NE(lmp->atom->image, nullptr); - ASSERT_NE(lmp->atom->x, nullptr); - ASSERT_NE(lmp->atom->v, nullptr); - ASSERT_NE(lmp->atom->f, nullptr); - ASSERT_EQ(lmp->atom->q, nullptr); - ASSERT_EQ(lmp->atom->mu, nullptr); - ASSERT_NE(lmp->atom->omega, nullptr); - ASSERT_EQ(lmp->atom->angmom, nullptr); - ASSERT_NE(lmp->atom->torque, nullptr); - ASSERT_NE(lmp->atom->radius, nullptr); - ASSERT_NE(lmp->atom->rmass, nullptr); - ASSERT_EQ(lmp->atom->ellipsoid, nullptr); - ASSERT_EQ(lmp->atom->line, nullptr); - ASSERT_EQ(lmp->atom->tri, nullptr); - ASSERT_EQ(lmp->atom->body, nullptr); - ASSERT_EQ(lmp->atom->molecule, nullptr); - ASSERT_EQ(lmp->atom->molindex, nullptr); - ASSERT_EQ(lmp->atom->molatom, nullptr); - ASSERT_EQ(lmp->atom->num_bond, nullptr); - ASSERT_EQ(lmp->atom->bond_type, nullptr); - ASSERT_EQ(lmp->atom->bond_atom, nullptr); - ASSERT_EQ(lmp->atom->num_angle, nullptr); - ASSERT_EQ(lmp->atom->angle_type, nullptr); - ASSERT_EQ(lmp->atom->angle_atom1, nullptr); - ASSERT_EQ(lmp->atom->angle_atom2, nullptr); - ASSERT_EQ(lmp->atom->angle_atom3, nullptr); - ASSERT_EQ(lmp->atom->num_dihedral, nullptr); - ASSERT_EQ(lmp->atom->dihedral_type, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom1, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom2, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom3, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom4, nullptr); - ASSERT_EQ(lmp->atom->num_improper, nullptr); - ASSERT_EQ(lmp->atom->improper_type, nullptr); - ASSERT_EQ(lmp->atom->improper_atom1, nullptr); - ASSERT_EQ(lmp->atom->improper_atom2, nullptr); - ASSERT_EQ(lmp->atom->improper_atom3, nullptr); - ASSERT_EQ(lmp->atom->improper_atom4, nullptr); - ASSERT_EQ(lmp->atom->maxspecial, 1); - ASSERT_EQ(lmp->atom->nspecial, nullptr); - ASSERT_EQ(lmp->atom->special, nullptr); - ASSERT_EQ(lmp->atom->vfrac, nullptr); - ASSERT_EQ(lmp->atom->s0, nullptr); - ASSERT_EQ(lmp->atom->x0, nullptr); - ASSERT_EQ(lmp->atom->sp, nullptr); - ASSERT_EQ(lmp->atom->fm, nullptr); - ASSERT_EQ(lmp->atom->fm_long, nullptr); - ASSERT_EQ(lmp->atom->spin, nullptr); - ASSERT_EQ(lmp->atom->eradius, nullptr); - ASSERT_EQ(lmp->atom->ervel, nullptr); - ASSERT_EQ(lmp->atom->erforce, nullptr); - ASSERT_EQ(lmp->atom->ervelforce, nullptr); - ASSERT_EQ(lmp->atom->cs, nullptr); - ASSERT_EQ(lmp->atom->csforce, nullptr); - ASSERT_EQ(lmp->atom->vforce, nullptr); - ASSERT_EQ(lmp->atom->etag, nullptr); - ASSERT_EQ(lmp->atom->uCond, nullptr); - ASSERT_EQ(lmp->atom->uMech, nullptr); - ASSERT_EQ(lmp->atom->uChem, nullptr); - ASSERT_EQ(lmp->atom->uCG, nullptr); - ASSERT_EQ(lmp->atom->uCGnew, nullptr); - ASSERT_EQ(lmp->atom->duChem, nullptr); - ASSERT_EQ(lmp->atom->dpdTheta, nullptr); - ASSERT_EQ(lmp->atom->cc, nullptr); - ASSERT_EQ(lmp->atom->cc_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_temp, nullptr); - ASSERT_EQ(lmp->atom->edpd_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_cv, nullptr); - ASSERT_EQ(lmp->atom->length, nullptr); - ASSERT_EQ(lmp->atom->buckling, nullptr); - ASSERT_EQ(lmp->atom->bond_nt, nullptr); - ASSERT_EQ(lmp->atom->contact_radius, nullptr); - ASSERT_EQ(lmp->atom->smd_data_9, nullptr); - ASSERT_EQ(lmp->atom->smd_stress, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate, nullptr); - ASSERT_EQ(lmp->atom->damage, nullptr); - ASSERT_EQ(lmp->atom->rho, nullptr); - ASSERT_EQ(lmp->atom->drho, nullptr); - ASSERT_EQ(lmp->atom->esph, nullptr); - ASSERT_EQ(lmp->atom->desph, nullptr); - ASSERT_EQ(lmp->atom->cv, nullptr); - ASSERT_EQ(lmp->atom->vest, nullptr); - ASSERT_EQ(lmp->atom->nmolecule, 0); - ASSERT_EQ(lmp->atom->molecules, nullptr); - ASSERT_EQ(lmp->atom->nivector, 0); - ASSERT_EQ(lmp->atom->ndvector, 0); - ASSERT_EQ(lmp->atom->iname, nullptr); - ASSERT_EQ(lmp->atom->dname, nullptr); - ASSERT_EQ(lmp->atom->mass, nullptr); - ASSERT_EQ(lmp->atom->mass_setflag, nullptr); - ASSERT_EQ(lmp->atom->nextra_grow, 0); - ASSERT_EQ(lmp->atom->nextra_restart, 0); - ASSERT_EQ(lmp->atom->nextra_border, 0); - ASSERT_EQ(lmp->atom->nextra_grow_max, 0); - ASSERT_EQ(lmp->atom->nextra_restart_max, 0); - ASSERT_EQ(lmp->atom->nextra_border_max, 0); - ASSERT_EQ(lmp->atom->nextra_store, 0); - ASSERT_EQ(lmp->atom->extra_grow, nullptr); - ASSERT_EQ(lmp->atom->extra_restart, nullptr); - ASSERT_EQ(lmp->atom->extra_border, nullptr); - ASSERT_EQ(lmp->atom->extra, nullptr); - ASSERT_EQ(lmp->atom->sametag, nullptr); - ASSERT_EQ(lmp->atom->map_style, Atom::MAP_NONE); - ASSERT_EQ(lmp->atom->map_user, 0); - ASSERT_EQ(lmp->atom->map_tag_max, -1); + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("create_box 2 box"); @@ -1187,193 +1047,23 @@ TEST_F(AtomStyleTest, ellipsoid) if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("atom_style ellipsoid"); if (!verbose) ::testing::internal::GetCapturedStdout(); - ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("ellipsoid")); - ASSERT_NE(lmp->atom->avec, nullptr); - ASSERT_EQ(lmp->atom->natoms, 0); - ASSERT_EQ(lmp->atom->nlocal, 0); - ASSERT_EQ(lmp->atom->nghost, 0); - ASSERT_EQ(lmp->atom->nmax, 1); - ASSERT_EQ(lmp->atom->tag_enable, 1); - ASSERT_EQ(lmp->atom->molecular, Atom::ATOMIC); - ASSERT_EQ(lmp->atom->nellipsoids, 0); - ASSERT_EQ(lmp->atom->nlines, 0); - ASSERT_EQ(lmp->atom->ntris, 0); - ASSERT_EQ(lmp->atom->nbodies, 0); - ASSERT_EQ(lmp->atom->nbonds, 0); - ASSERT_EQ(lmp->atom->nangles, 0); - ASSERT_EQ(lmp->atom->ndihedrals, 0); - ASSERT_EQ(lmp->atom->nimpropers, 0); - ASSERT_EQ(lmp->atom->ntypes, 0); - ASSERT_EQ(lmp->atom->nbondtypes, 0); - ASSERT_EQ(lmp->atom->nangletypes, 0); - ASSERT_EQ(lmp->atom->ndihedraltypes, 0); - ASSERT_EQ(lmp->atom->nimpropertypes, 0); - ASSERT_EQ(lmp->atom->bond_per_atom, 0); - ASSERT_EQ(lmp->atom->angle_per_atom, 0); - ASSERT_EQ(lmp->atom->dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->improper_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_bond_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_angle_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_improper_per_atom, 0); - ASSERT_EQ(lmp->atom->sphere_flag, 0); - ASSERT_EQ(lmp->atom->ellipsoid_flag, 1); - ASSERT_EQ(lmp->atom->line_flag, 0); - ASSERT_EQ(lmp->atom->tri_flag, 0); - ASSERT_EQ(lmp->atom->body_flag, 0); - ASSERT_EQ(lmp->atom->peri_flag, 0); - ASSERT_EQ(lmp->atom->electron_flag, 0); - ASSERT_EQ(lmp->atom->wavepacket_flag, 0); - ASSERT_EQ(lmp->atom->sph_flag, 0); - ASSERT_EQ(lmp->atom->molecule_flag, 0); - ASSERT_EQ(lmp->atom->molindex_flag, 0); - ASSERT_EQ(lmp->atom->molatom_flag, 0); - ASSERT_EQ(lmp->atom->q_flag, 0); - ASSERT_EQ(lmp->atom->mu_flag, 0); - ASSERT_EQ(lmp->atom->rmass_flag, 1); - ASSERT_EQ(lmp->atom->radius_flag, 0); - ASSERT_EQ(lmp->atom->omega_flag, 0); - ASSERT_EQ(lmp->atom->torque_flag, 1); - ASSERT_EQ(lmp->atom->angmom_flag, 1); - ASSERT_EQ(lmp->atom->vfrac_flag, 0); - ASSERT_EQ(lmp->atom->spin_flag, 0); - ASSERT_EQ(lmp->atom->eradius_flag, 0); - ASSERT_EQ(lmp->atom->ervel_flag, 0); - ASSERT_EQ(lmp->atom->erforce_flag, 0); - ASSERT_EQ(lmp->atom->cs_flag, 0); - ASSERT_EQ(lmp->atom->csforce_flag, 0); - ASSERT_EQ(lmp->atom->vforce_flag, 0); - ASSERT_EQ(lmp->atom->ervelforce_flag, 0); - ASSERT_EQ(lmp->atom->etag_flag, 0); - ASSERT_EQ(lmp->atom->rho_flag, 0); - ASSERT_EQ(lmp->atom->esph_flag, 0); - ASSERT_EQ(lmp->atom->cv_flag, 0); - ASSERT_EQ(lmp->atom->vest_flag, 0); - ASSERT_EQ(lmp->atom->dpd_flag, 0); - ASSERT_EQ(lmp->atom->edpd_flag, 0); - ASSERT_EQ(lmp->atom->tdpd_flag, 0); - ASSERT_EQ(lmp->atom->mesont_flag, 0); - ASSERT_EQ(lmp->atom->sp_flag, 0); - ASSERT_EQ(lmp->atom->x0_flag, 0); - ASSERT_EQ(lmp->atom->smd_flag, 0); - ASSERT_EQ(lmp->atom->damage_flag, 0); - ASSERT_EQ(lmp->atom->contact_radius_flag, 0); - ASSERT_EQ(lmp->atom->smd_data_9_flag, 0); - ASSERT_EQ(lmp->atom->smd_stress_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate_flag, 0); - ASSERT_EQ(lmp->atom->pdscale, 1.0); + AtomState expected; + expected.atom_style = "ellipsoid"; + expected.molecular = Atom::ATOMIC; + expected.tag_enable = 1; + expected.ellipsoid_flag = 1; + expected.rmass_flag = 1; + expected.angmom_flag = 1; + expected.torque_flag = 1; + expected.has_type = true; + expected.has_mask = true; + expected.has_image = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; - ASSERT_NE(lmp->atom->tag, nullptr); - ASSERT_NE(lmp->atom->type, nullptr); - ASSERT_NE(lmp->atom->mask, nullptr); - ASSERT_NE(lmp->atom->image, nullptr); - ASSERT_NE(lmp->atom->x, nullptr); - ASSERT_NE(lmp->atom->v, nullptr); - ASSERT_NE(lmp->atom->f, nullptr); - ASSERT_EQ(lmp->atom->q, nullptr); - ASSERT_EQ(lmp->atom->mu, nullptr); - ASSERT_EQ(lmp->atom->omega, nullptr); - ASSERT_NE(lmp->atom->angmom, nullptr); - ASSERT_NE(lmp->atom->torque, nullptr); - ASSERT_EQ(lmp->atom->radius, nullptr); - ASSERT_NE(lmp->atom->rmass, nullptr); - ASSERT_NE(lmp->atom->ellipsoid, nullptr); - ASSERT_EQ(lmp->atom->line, nullptr); - ASSERT_EQ(lmp->atom->tri, nullptr); - ASSERT_EQ(lmp->atom->body, nullptr); - ASSERT_EQ(lmp->atom->molecule, nullptr); - ASSERT_EQ(lmp->atom->molindex, nullptr); - ASSERT_EQ(lmp->atom->molatom, nullptr); - ASSERT_EQ(lmp->atom->num_bond, nullptr); - ASSERT_EQ(lmp->atom->bond_type, nullptr); - ASSERT_EQ(lmp->atom->bond_atom, nullptr); - ASSERT_EQ(lmp->atom->num_angle, nullptr); - ASSERT_EQ(lmp->atom->angle_type, nullptr); - ASSERT_EQ(lmp->atom->angle_atom1, nullptr); - ASSERT_EQ(lmp->atom->angle_atom2, nullptr); - ASSERT_EQ(lmp->atom->angle_atom3, nullptr); - ASSERT_EQ(lmp->atom->num_dihedral, nullptr); - ASSERT_EQ(lmp->atom->dihedral_type, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom1, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom2, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom3, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom4, nullptr); - ASSERT_EQ(lmp->atom->num_improper, nullptr); - ASSERT_EQ(lmp->atom->improper_type, nullptr); - ASSERT_EQ(lmp->atom->improper_atom1, nullptr); - ASSERT_EQ(lmp->atom->improper_atom2, nullptr); - ASSERT_EQ(lmp->atom->improper_atom3, nullptr); - ASSERT_EQ(lmp->atom->improper_atom4, nullptr); - ASSERT_EQ(lmp->atom->maxspecial, 1); - ASSERT_EQ(lmp->atom->nspecial, nullptr); - ASSERT_EQ(lmp->atom->special, nullptr); - ASSERT_EQ(lmp->atom->vfrac, nullptr); - ASSERT_EQ(lmp->atom->s0, nullptr); - ASSERT_EQ(lmp->atom->x0, nullptr); - ASSERT_EQ(lmp->atom->sp, nullptr); - ASSERT_EQ(lmp->atom->fm, nullptr); - ASSERT_EQ(lmp->atom->fm_long, nullptr); - ASSERT_EQ(lmp->atom->spin, nullptr); - ASSERT_EQ(lmp->atom->eradius, nullptr); - ASSERT_EQ(lmp->atom->ervel, nullptr); - ASSERT_EQ(lmp->atom->erforce, nullptr); - ASSERT_EQ(lmp->atom->ervelforce, nullptr); - ASSERT_EQ(lmp->atom->cs, nullptr); - ASSERT_EQ(lmp->atom->csforce, nullptr); - ASSERT_EQ(lmp->atom->vforce, nullptr); - ASSERT_EQ(lmp->atom->etag, nullptr); - ASSERT_EQ(lmp->atom->uCond, nullptr); - ASSERT_EQ(lmp->atom->uMech, nullptr); - ASSERT_EQ(lmp->atom->uChem, nullptr); - ASSERT_EQ(lmp->atom->uCG, nullptr); - ASSERT_EQ(lmp->atom->uCGnew, nullptr); - ASSERT_EQ(lmp->atom->duChem, nullptr); - ASSERT_EQ(lmp->atom->dpdTheta, nullptr); - ASSERT_EQ(lmp->atom->cc, nullptr); - ASSERT_EQ(lmp->atom->cc_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_temp, nullptr); - ASSERT_EQ(lmp->atom->edpd_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_cv, nullptr); - ASSERT_EQ(lmp->atom->length, nullptr); - ASSERT_EQ(lmp->atom->buckling, nullptr); - ASSERT_EQ(lmp->atom->bond_nt, nullptr); - ASSERT_EQ(lmp->atom->contact_radius, nullptr); - ASSERT_EQ(lmp->atom->smd_data_9, nullptr); - ASSERT_EQ(lmp->atom->smd_stress, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate, nullptr); - ASSERT_EQ(lmp->atom->damage, nullptr); - ASSERT_EQ(lmp->atom->rho, nullptr); - ASSERT_EQ(lmp->atom->drho, nullptr); - ASSERT_EQ(lmp->atom->esph, nullptr); - ASSERT_EQ(lmp->atom->desph, nullptr); - ASSERT_EQ(lmp->atom->cv, nullptr); - ASSERT_EQ(lmp->atom->vest, nullptr); - ASSERT_EQ(lmp->atom->nmolecule, 0); - ASSERT_EQ(lmp->atom->molecules, nullptr); - ASSERT_EQ(lmp->atom->nivector, 0); - ASSERT_EQ(lmp->atom->ndvector, 0); - ASSERT_EQ(lmp->atom->iname, nullptr); - ASSERT_EQ(lmp->atom->dname, nullptr); - ASSERT_EQ(lmp->atom->mass, nullptr); - ASSERT_EQ(lmp->atom->mass_setflag, nullptr); - ASSERT_EQ(lmp->atom->nextra_grow, 0); - ASSERT_EQ(lmp->atom->nextra_restart, 0); - ASSERT_EQ(lmp->atom->nextra_border, 0); - ASSERT_EQ(lmp->atom->nextra_grow_max, 0); - ASSERT_EQ(lmp->atom->nextra_restart_max, 0); - ASSERT_EQ(lmp->atom->nextra_border_max, 0); - ASSERT_EQ(lmp->atom->nextra_store, 0); - ASSERT_EQ(lmp->atom->extra_grow, nullptr); - ASSERT_EQ(lmp->atom->extra_restart, nullptr); - ASSERT_EQ(lmp->atom->extra_border, nullptr); - ASSERT_EQ(lmp->atom->extra, nullptr); - ASSERT_EQ(lmp->atom->sametag, nullptr); - ASSERT_EQ(lmp->atom->map_style, Atom::MAP_NONE); - ASSERT_EQ(lmp->atom->map_user, 0); - ASSERT_EQ(lmp->atom->map_tag_max, -1); + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("create_box 3 box"); @@ -1695,193 +1385,26 @@ TEST_F(AtomStyleTest, line) lmp->input->one("dimension 2"); lmp->input->one("atom_style line"); if (!verbose) ::testing::internal::GetCapturedStdout(); - ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("line")); - ASSERT_NE(lmp->atom->avec, nullptr); - ASSERT_EQ(lmp->atom->natoms, 0); - ASSERT_EQ(lmp->atom->nlocal, 0); - ASSERT_EQ(lmp->atom->nghost, 0); - ASSERT_EQ(lmp->atom->nmax, 1); - ASSERT_EQ(lmp->atom->tag_enable, 1); - ASSERT_EQ(lmp->atom->molecular, Atom::ATOMIC); - ASSERT_EQ(lmp->atom->nellipsoids, 0); - ASSERT_EQ(lmp->atom->nlines, 0); - ASSERT_EQ(lmp->atom->ntris, 0); - ASSERT_EQ(lmp->atom->nbodies, 0); - ASSERT_EQ(lmp->atom->nbonds, 0); - ASSERT_EQ(lmp->atom->nangles, 0); - ASSERT_EQ(lmp->atom->ndihedrals, 0); - ASSERT_EQ(lmp->atom->nimpropers, 0); - ASSERT_EQ(lmp->atom->ntypes, 0); - ASSERT_EQ(lmp->atom->nbondtypes, 0); - ASSERT_EQ(lmp->atom->nangletypes, 0); - ASSERT_EQ(lmp->atom->ndihedraltypes, 0); - ASSERT_EQ(lmp->atom->nimpropertypes, 0); - ASSERT_EQ(lmp->atom->bond_per_atom, 0); - ASSERT_EQ(lmp->atom->angle_per_atom, 0); - ASSERT_EQ(lmp->atom->dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->improper_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_bond_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_angle_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_improper_per_atom, 0); - ASSERT_EQ(lmp->atom->sphere_flag, 1); - ASSERT_EQ(lmp->atom->ellipsoid_flag, 0); - ASSERT_EQ(lmp->atom->line_flag, 1); - ASSERT_EQ(lmp->atom->tri_flag, 0); - ASSERT_EQ(lmp->atom->body_flag, 0); - ASSERT_EQ(lmp->atom->peri_flag, 0); - ASSERT_EQ(lmp->atom->electron_flag, 0); - ASSERT_EQ(lmp->atom->wavepacket_flag, 0); - ASSERT_EQ(lmp->atom->sph_flag, 0); - ASSERT_EQ(lmp->atom->molecule_flag, 1); - ASSERT_EQ(lmp->atom->molindex_flag, 0); - ASSERT_EQ(lmp->atom->molatom_flag, 0); - ASSERT_EQ(lmp->atom->q_flag, 0); - ASSERT_EQ(lmp->atom->mu_flag, 0); - ASSERT_EQ(lmp->atom->rmass_flag, 1); - ASSERT_EQ(lmp->atom->radius_flag, 1); - ASSERT_EQ(lmp->atom->omega_flag, 1); - ASSERT_EQ(lmp->atom->torque_flag, 1); - ASSERT_EQ(lmp->atom->angmom_flag, 0); - ASSERT_EQ(lmp->atom->vfrac_flag, 0); - ASSERT_EQ(lmp->atom->spin_flag, 0); - ASSERT_EQ(lmp->atom->eradius_flag, 0); - ASSERT_EQ(lmp->atom->ervel_flag, 0); - ASSERT_EQ(lmp->atom->erforce_flag, 0); - ASSERT_EQ(lmp->atom->cs_flag, 0); - ASSERT_EQ(lmp->atom->csforce_flag, 0); - ASSERT_EQ(lmp->atom->vforce_flag, 0); - ASSERT_EQ(lmp->atom->ervelforce_flag, 0); - ASSERT_EQ(lmp->atom->etag_flag, 0); - ASSERT_EQ(lmp->atom->rho_flag, 0); - ASSERT_EQ(lmp->atom->esph_flag, 0); - ASSERT_EQ(lmp->atom->cv_flag, 0); - ASSERT_EQ(lmp->atom->vest_flag, 0); - ASSERT_EQ(lmp->atom->dpd_flag, 0); - ASSERT_EQ(lmp->atom->edpd_flag, 0); - ASSERT_EQ(lmp->atom->tdpd_flag, 0); - ASSERT_EQ(lmp->atom->mesont_flag, 0); - ASSERT_EQ(lmp->atom->sp_flag, 0); - ASSERT_EQ(lmp->atom->x0_flag, 0); - ASSERT_EQ(lmp->atom->smd_flag, 0); - ASSERT_EQ(lmp->atom->damage_flag, 0); - ASSERT_EQ(lmp->atom->contact_radius_flag, 0); - ASSERT_EQ(lmp->atom->smd_data_9_flag, 0); - ASSERT_EQ(lmp->atom->smd_stress_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate_flag, 0); - ASSERT_EQ(lmp->atom->pdscale, 1.0); + AtomState expected; + expected.atom_style = "line"; + expected.molecular = Atom::ATOMIC; + expected.tag_enable = 1; + expected.sphere_flag = 1; + expected.molecule_flag = 1; + expected.line_flag = 1; + expected.rmass_flag = 1; + expected.radius_flag = 1; + expected.omega_flag = 1; + expected.torque_flag = 1; + expected.has_type = true; + expected.has_mask = true; + expected.has_image = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; - ASSERT_NE(lmp->atom->tag, nullptr); - ASSERT_NE(lmp->atom->type, nullptr); - ASSERT_NE(lmp->atom->mask, nullptr); - ASSERT_NE(lmp->atom->image, nullptr); - ASSERT_NE(lmp->atom->x, nullptr); - ASSERT_NE(lmp->atom->v, nullptr); - ASSERT_NE(lmp->atom->f, nullptr); - ASSERT_EQ(lmp->atom->q, nullptr); - ASSERT_EQ(lmp->atom->mu, nullptr); - ASSERT_NE(lmp->atom->omega, nullptr); - ASSERT_EQ(lmp->atom->angmom, nullptr); - ASSERT_NE(lmp->atom->torque, nullptr); - ASSERT_NE(lmp->atom->radius, nullptr); - ASSERT_NE(lmp->atom->rmass, nullptr); - ASSERT_EQ(lmp->atom->ellipsoid, nullptr); - ASSERT_NE(lmp->atom->line, nullptr); - ASSERT_EQ(lmp->atom->tri, nullptr); - ASSERT_EQ(lmp->atom->body, nullptr); - ASSERT_NE(lmp->atom->molecule, nullptr); - ASSERT_EQ(lmp->atom->molindex, nullptr); - ASSERT_EQ(lmp->atom->molatom, nullptr); - ASSERT_EQ(lmp->atom->num_bond, nullptr); - ASSERT_EQ(lmp->atom->bond_type, nullptr); - ASSERT_EQ(lmp->atom->bond_atom, nullptr); - ASSERT_EQ(lmp->atom->num_angle, nullptr); - ASSERT_EQ(lmp->atom->angle_type, nullptr); - ASSERT_EQ(lmp->atom->angle_atom1, nullptr); - ASSERT_EQ(lmp->atom->angle_atom2, nullptr); - ASSERT_EQ(lmp->atom->angle_atom3, nullptr); - ASSERT_EQ(lmp->atom->num_dihedral, nullptr); - ASSERT_EQ(lmp->atom->dihedral_type, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom1, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom2, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom3, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom4, nullptr); - ASSERT_EQ(lmp->atom->num_improper, nullptr); - ASSERT_EQ(lmp->atom->improper_type, nullptr); - ASSERT_EQ(lmp->atom->improper_atom1, nullptr); - ASSERT_EQ(lmp->atom->improper_atom2, nullptr); - ASSERT_EQ(lmp->atom->improper_atom3, nullptr); - ASSERT_EQ(lmp->atom->improper_atom4, nullptr); - ASSERT_EQ(lmp->atom->maxspecial, 1); - ASSERT_EQ(lmp->atom->nspecial, nullptr); - ASSERT_EQ(lmp->atom->special, nullptr); - ASSERT_EQ(lmp->atom->vfrac, nullptr); - ASSERT_EQ(lmp->atom->s0, nullptr); - ASSERT_EQ(lmp->atom->x0, nullptr); - ASSERT_EQ(lmp->atom->sp, nullptr); - ASSERT_EQ(lmp->atom->fm, nullptr); - ASSERT_EQ(lmp->atom->fm_long, nullptr); - ASSERT_EQ(lmp->atom->spin, nullptr); - ASSERT_EQ(lmp->atom->eradius, nullptr); - ASSERT_EQ(lmp->atom->ervel, nullptr); - ASSERT_EQ(lmp->atom->erforce, nullptr); - ASSERT_EQ(lmp->atom->ervelforce, nullptr); - ASSERT_EQ(lmp->atom->cs, nullptr); - ASSERT_EQ(lmp->atom->csforce, nullptr); - ASSERT_EQ(lmp->atom->vforce, nullptr); - ASSERT_EQ(lmp->atom->etag, nullptr); - ASSERT_EQ(lmp->atom->uCond, nullptr); - ASSERT_EQ(lmp->atom->uMech, nullptr); - ASSERT_EQ(lmp->atom->uChem, nullptr); - ASSERT_EQ(lmp->atom->uCG, nullptr); - ASSERT_EQ(lmp->atom->uCGnew, nullptr); - ASSERT_EQ(lmp->atom->duChem, nullptr); - ASSERT_EQ(lmp->atom->dpdTheta, nullptr); - ASSERT_EQ(lmp->atom->cc, nullptr); - ASSERT_EQ(lmp->atom->cc_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_temp, nullptr); - ASSERT_EQ(lmp->atom->edpd_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_cv, nullptr); - ASSERT_EQ(lmp->atom->length, nullptr); - ASSERT_EQ(lmp->atom->buckling, nullptr); - ASSERT_EQ(lmp->atom->bond_nt, nullptr); - ASSERT_EQ(lmp->atom->contact_radius, nullptr); - ASSERT_EQ(lmp->atom->smd_data_9, nullptr); - ASSERT_EQ(lmp->atom->smd_stress, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate, nullptr); - ASSERT_EQ(lmp->atom->damage, nullptr); - ASSERT_EQ(lmp->atom->rho, nullptr); - ASSERT_EQ(lmp->atom->drho, nullptr); - ASSERT_EQ(lmp->atom->esph, nullptr); - ASSERT_EQ(lmp->atom->desph, nullptr); - ASSERT_EQ(lmp->atom->cv, nullptr); - ASSERT_EQ(lmp->atom->vest, nullptr); - ASSERT_EQ(lmp->atom->nmolecule, 0); - ASSERT_EQ(lmp->atom->molecules, nullptr); - ASSERT_EQ(lmp->atom->nivector, 0); - ASSERT_EQ(lmp->atom->ndvector, 0); - ASSERT_EQ(lmp->atom->iname, nullptr); - ASSERT_EQ(lmp->atom->dname, nullptr); - ASSERT_EQ(lmp->atom->mass, nullptr); - ASSERT_EQ(lmp->atom->mass_setflag, nullptr); - ASSERT_EQ(lmp->atom->nextra_grow, 0); - ASSERT_EQ(lmp->atom->nextra_restart, 0); - ASSERT_EQ(lmp->atom->nextra_border, 0); - ASSERT_EQ(lmp->atom->nextra_grow_max, 0); - ASSERT_EQ(lmp->atom->nextra_restart_max, 0); - ASSERT_EQ(lmp->atom->nextra_border_max, 0); - ASSERT_EQ(lmp->atom->nextra_store, 0); - ASSERT_EQ(lmp->atom->extra_grow, nullptr); - ASSERT_EQ(lmp->atom->extra_restart, nullptr); - ASSERT_EQ(lmp->atom->extra_border, nullptr); - ASSERT_EQ(lmp->atom->extra, nullptr); - ASSERT_EQ(lmp->atom->sametag, nullptr); - ASSERT_EQ(lmp->atom->map_style, Atom::MAP_NONE); - ASSERT_EQ(lmp->atom->map_user, 0); - ASSERT_EQ(lmp->atom->map_tag_max, -1); + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("create_box 3 box"); @@ -2132,193 +1655,27 @@ TEST_F(AtomStyleTest, tri) if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("atom_style tri"); if (!verbose) ::testing::internal::GetCapturedStdout(); - ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("tri")); - ASSERT_NE(lmp->atom->avec, nullptr); - ASSERT_EQ(lmp->atom->natoms, 0); - ASSERT_EQ(lmp->atom->nlocal, 0); - ASSERT_EQ(lmp->atom->nghost, 0); - ASSERT_EQ(lmp->atom->nmax, 1); - ASSERT_EQ(lmp->atom->tag_enable, 1); - ASSERT_EQ(lmp->atom->molecular, Atom::ATOMIC); - ASSERT_EQ(lmp->atom->nellipsoids, 0); - ASSERT_EQ(lmp->atom->nlines, 0); - ASSERT_EQ(lmp->atom->ntris, 0); - ASSERT_EQ(lmp->atom->nbodies, 0); - ASSERT_EQ(lmp->atom->nbonds, 0); - ASSERT_EQ(lmp->atom->nangles, 0); - ASSERT_EQ(lmp->atom->ndihedrals, 0); - ASSERT_EQ(lmp->atom->nimpropers, 0); - ASSERT_EQ(lmp->atom->ntypes, 0); - ASSERT_EQ(lmp->atom->nbondtypes, 0); - ASSERT_EQ(lmp->atom->nangletypes, 0); - ASSERT_EQ(lmp->atom->ndihedraltypes, 0); - ASSERT_EQ(lmp->atom->nimpropertypes, 0); - ASSERT_EQ(lmp->atom->bond_per_atom, 0); - ASSERT_EQ(lmp->atom->angle_per_atom, 0); - ASSERT_EQ(lmp->atom->dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->improper_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_bond_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_angle_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_improper_per_atom, 0); - ASSERT_EQ(lmp->atom->sphere_flag, 1); - ASSERT_EQ(lmp->atom->ellipsoid_flag, 0); - ASSERT_EQ(lmp->atom->line_flag, 0); - ASSERT_EQ(lmp->atom->tri_flag, 1); - ASSERT_EQ(lmp->atom->body_flag, 0); - ASSERT_EQ(lmp->atom->peri_flag, 0); - ASSERT_EQ(lmp->atom->electron_flag, 0); - ASSERT_EQ(lmp->atom->wavepacket_flag, 0); - ASSERT_EQ(lmp->atom->sph_flag, 0); - ASSERT_EQ(lmp->atom->molecule_flag, 1); - ASSERT_EQ(lmp->atom->molindex_flag, 0); - ASSERT_EQ(lmp->atom->molatom_flag, 0); - ASSERT_EQ(lmp->atom->q_flag, 0); - ASSERT_EQ(lmp->atom->mu_flag, 0); - ASSERT_EQ(lmp->atom->rmass_flag, 1); - ASSERT_EQ(lmp->atom->radius_flag, 1); - ASSERT_EQ(lmp->atom->omega_flag, 1); - ASSERT_EQ(lmp->atom->torque_flag, 1); - ASSERT_EQ(lmp->atom->angmom_flag, 1); - ASSERT_EQ(lmp->atom->vfrac_flag, 0); - ASSERT_EQ(lmp->atom->spin_flag, 0); - ASSERT_EQ(lmp->atom->eradius_flag, 0); - ASSERT_EQ(lmp->atom->ervel_flag, 0); - ASSERT_EQ(lmp->atom->erforce_flag, 0); - ASSERT_EQ(lmp->atom->cs_flag, 0); - ASSERT_EQ(lmp->atom->csforce_flag, 0); - ASSERT_EQ(lmp->atom->vforce_flag, 0); - ASSERT_EQ(lmp->atom->ervelforce_flag, 0); - ASSERT_EQ(lmp->atom->etag_flag, 0); - ASSERT_EQ(lmp->atom->rho_flag, 0); - ASSERT_EQ(lmp->atom->esph_flag, 0); - ASSERT_EQ(lmp->atom->cv_flag, 0); - ASSERT_EQ(lmp->atom->vest_flag, 0); - ASSERT_EQ(lmp->atom->dpd_flag, 0); - ASSERT_EQ(lmp->atom->edpd_flag, 0); - ASSERT_EQ(lmp->atom->tdpd_flag, 0); - ASSERT_EQ(lmp->atom->mesont_flag, 0); - ASSERT_EQ(lmp->atom->sp_flag, 0); - ASSERT_EQ(lmp->atom->x0_flag, 0); - ASSERT_EQ(lmp->atom->smd_flag, 0); - ASSERT_EQ(lmp->atom->damage_flag, 0); - ASSERT_EQ(lmp->atom->contact_radius_flag, 0); - ASSERT_EQ(lmp->atom->smd_data_9_flag, 0); - ASSERT_EQ(lmp->atom->smd_stress_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate_flag, 0); - ASSERT_EQ(lmp->atom->pdscale, 1.0); + AtomState expected; + expected.atom_style = "tri"; + expected.molecular = Atom::ATOMIC; + expected.tag_enable = 1; + expected.sphere_flag = 1; + expected.molecule_flag = 1; + expected.tri_flag = 1; + expected.rmass_flag = 1; + expected.radius_flag = 1; + expected.omega_flag = 1; + expected.angmom_flag = 1; + expected.torque_flag = 1; + expected.has_type = true; + expected.has_mask = true; + expected.has_image = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; - ASSERT_NE(lmp->atom->tag, nullptr); - ASSERT_NE(lmp->atom->type, nullptr); - ASSERT_NE(lmp->atom->mask, nullptr); - ASSERT_NE(lmp->atom->image, nullptr); - ASSERT_NE(lmp->atom->x, nullptr); - ASSERT_NE(lmp->atom->v, nullptr); - ASSERT_NE(lmp->atom->f, nullptr); - ASSERT_EQ(lmp->atom->q, nullptr); - ASSERT_EQ(lmp->atom->mu, nullptr); - ASSERT_NE(lmp->atom->omega, nullptr); - ASSERT_NE(lmp->atom->angmom, nullptr); - ASSERT_NE(lmp->atom->torque, nullptr); - ASSERT_NE(lmp->atom->radius, nullptr); - ASSERT_NE(lmp->atom->rmass, nullptr); - ASSERT_EQ(lmp->atom->ellipsoid, nullptr); - ASSERT_EQ(lmp->atom->line, nullptr); - ASSERT_NE(lmp->atom->tri, nullptr); - ASSERT_EQ(lmp->atom->body, nullptr); - ASSERT_NE(lmp->atom->molecule, nullptr); - ASSERT_EQ(lmp->atom->molindex, nullptr); - ASSERT_EQ(lmp->atom->molatom, nullptr); - ASSERT_EQ(lmp->atom->num_bond, nullptr); - ASSERT_EQ(lmp->atom->bond_type, nullptr); - ASSERT_EQ(lmp->atom->bond_atom, nullptr); - ASSERT_EQ(lmp->atom->num_angle, nullptr); - ASSERT_EQ(lmp->atom->angle_type, nullptr); - ASSERT_EQ(lmp->atom->angle_atom1, nullptr); - ASSERT_EQ(lmp->atom->angle_atom2, nullptr); - ASSERT_EQ(lmp->atom->angle_atom3, nullptr); - ASSERT_EQ(lmp->atom->num_dihedral, nullptr); - ASSERT_EQ(lmp->atom->dihedral_type, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom1, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom2, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom3, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom4, nullptr); - ASSERT_EQ(lmp->atom->num_improper, nullptr); - ASSERT_EQ(lmp->atom->improper_type, nullptr); - ASSERT_EQ(lmp->atom->improper_atom1, nullptr); - ASSERT_EQ(lmp->atom->improper_atom2, nullptr); - ASSERT_EQ(lmp->atom->improper_atom3, nullptr); - ASSERT_EQ(lmp->atom->improper_atom4, nullptr); - ASSERT_EQ(lmp->atom->maxspecial, 1); - ASSERT_EQ(lmp->atom->nspecial, nullptr); - ASSERT_EQ(lmp->atom->special, nullptr); - ASSERT_EQ(lmp->atom->vfrac, nullptr); - ASSERT_EQ(lmp->atom->s0, nullptr); - ASSERT_EQ(lmp->atom->x0, nullptr); - ASSERT_EQ(lmp->atom->sp, nullptr); - ASSERT_EQ(lmp->atom->fm, nullptr); - ASSERT_EQ(lmp->atom->fm_long, nullptr); - ASSERT_EQ(lmp->atom->spin, nullptr); - ASSERT_EQ(lmp->atom->eradius, nullptr); - ASSERT_EQ(lmp->atom->ervel, nullptr); - ASSERT_EQ(lmp->atom->erforce, nullptr); - ASSERT_EQ(lmp->atom->ervelforce, nullptr); - ASSERT_EQ(lmp->atom->cs, nullptr); - ASSERT_EQ(lmp->atom->csforce, nullptr); - ASSERT_EQ(lmp->atom->vforce, nullptr); - ASSERT_EQ(lmp->atom->etag, nullptr); - ASSERT_EQ(lmp->atom->uCond, nullptr); - ASSERT_EQ(lmp->atom->uMech, nullptr); - ASSERT_EQ(lmp->atom->uChem, nullptr); - ASSERT_EQ(lmp->atom->uCG, nullptr); - ASSERT_EQ(lmp->atom->uCGnew, nullptr); - ASSERT_EQ(lmp->atom->duChem, nullptr); - ASSERT_EQ(lmp->atom->dpdTheta, nullptr); - ASSERT_EQ(lmp->atom->cc, nullptr); - ASSERT_EQ(lmp->atom->cc_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_temp, nullptr); - ASSERT_EQ(lmp->atom->edpd_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_cv, nullptr); - ASSERT_EQ(lmp->atom->length, nullptr); - ASSERT_EQ(lmp->atom->buckling, nullptr); - ASSERT_EQ(lmp->atom->bond_nt, nullptr); - ASSERT_EQ(lmp->atom->contact_radius, nullptr); - ASSERT_EQ(lmp->atom->smd_data_9, nullptr); - ASSERT_EQ(lmp->atom->smd_stress, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate, nullptr); - ASSERT_EQ(lmp->atom->damage, nullptr); - ASSERT_EQ(lmp->atom->rho, nullptr); - ASSERT_EQ(lmp->atom->drho, nullptr); - ASSERT_EQ(lmp->atom->esph, nullptr); - ASSERT_EQ(lmp->atom->desph, nullptr); - ASSERT_EQ(lmp->atom->cv, nullptr); - ASSERT_EQ(lmp->atom->vest, nullptr); - ASSERT_EQ(lmp->atom->nmolecule, 0); - ASSERT_EQ(lmp->atom->molecules, nullptr); - ASSERT_EQ(lmp->atom->nivector, 0); - ASSERT_EQ(lmp->atom->ndvector, 0); - ASSERT_EQ(lmp->atom->iname, nullptr); - ASSERT_EQ(lmp->atom->dname, nullptr); - ASSERT_EQ(lmp->atom->mass, nullptr); - ASSERT_EQ(lmp->atom->mass_setflag, nullptr); - ASSERT_EQ(lmp->atom->nextra_grow, 0); - ASSERT_EQ(lmp->atom->nextra_restart, 0); - ASSERT_EQ(lmp->atom->nextra_border, 0); - ASSERT_EQ(lmp->atom->nextra_grow_max, 0); - ASSERT_EQ(lmp->atom->nextra_restart_max, 0); - ASSERT_EQ(lmp->atom->nextra_border_max, 0); - ASSERT_EQ(lmp->atom->nextra_store, 0); - ASSERT_EQ(lmp->atom->extra_grow, nullptr); - ASSERT_EQ(lmp->atom->extra_restart, nullptr); - ASSERT_EQ(lmp->atom->extra_border, nullptr); - ASSERT_EQ(lmp->atom->extra, nullptr); - ASSERT_EQ(lmp->atom->sametag, nullptr); - ASSERT_EQ(lmp->atom->map_style, Atom::MAP_NONE); - ASSERT_EQ(lmp->atom->map_user, 0); - ASSERT_EQ(lmp->atom->map_tag_max, -1); + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("create_box 3 box"); @@ -2702,199 +2059,30 @@ TEST_F(AtomStyleTest, body_nparticle) if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("atom_style body nparticle 2 4"); if (!verbose) ::testing::internal::GetCapturedStdout(); - ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("body")); + + AtomState expected; + expected.atom_style = "body"; + expected.molecular = Atom::ATOMIC; + expected.tag_enable = 1; + expected.body_flag = 1; + expected.rmass_flag = 1; + expected.radius_flag = 1; + expected.angmom_flag = 1; + expected.torque_flag = 1; + expected.has_type = true; + expected.has_mask = true; + expected.has_image = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; + + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); auto avec = (AtomVecBody *)lmp->atom->avec; ASSERT_NE(lmp->atom->avec, nullptr); ASSERT_NE(avec->bptr, nullptr); ASSERT_THAT(std::string(avec->bptr->style), Eq("nparticle")); - ASSERT_EQ(lmp->atom->natoms, 0); - ASSERT_EQ(lmp->atom->nlocal, 0); - ASSERT_EQ(lmp->atom->nghost, 0); - ASSERT_EQ(lmp->atom->nmax, 1); - ASSERT_EQ(lmp->atom->tag_enable, 1); - ASSERT_EQ(lmp->atom->molecular, Atom::ATOMIC); - ASSERT_EQ(lmp->atom->nellipsoids, 0); - ASSERT_EQ(lmp->atom->nlines, 0); - ASSERT_EQ(lmp->atom->ntris, 0); - ASSERT_EQ(lmp->atom->nbodies, 0); - ASSERT_EQ(lmp->atom->nbonds, 0); - ASSERT_EQ(lmp->atom->nangles, 0); - ASSERT_EQ(lmp->atom->ndihedrals, 0); - ASSERT_EQ(lmp->atom->nimpropers, 0); - ASSERT_EQ(lmp->atom->ntypes, 0); - ASSERT_EQ(lmp->atom->nbondtypes, 0); - ASSERT_EQ(lmp->atom->nangletypes, 0); - ASSERT_EQ(lmp->atom->ndihedraltypes, 0); - ASSERT_EQ(lmp->atom->nimpropertypes, 0); - ASSERT_EQ(lmp->atom->bond_per_atom, 0); - ASSERT_EQ(lmp->atom->angle_per_atom, 0); - ASSERT_EQ(lmp->atom->dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->improper_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_bond_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_angle_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_improper_per_atom, 0); - - ASSERT_EQ(lmp->atom->sphere_flag, 0); - ASSERT_EQ(lmp->atom->ellipsoid_flag, 0); - ASSERT_EQ(lmp->atom->line_flag, 0); - ASSERT_EQ(lmp->atom->tri_flag, 0); - ASSERT_EQ(lmp->atom->body_flag, 1); - ASSERT_EQ(lmp->atom->peri_flag, 0); - ASSERT_EQ(lmp->atom->electron_flag, 0); - ASSERT_EQ(lmp->atom->wavepacket_flag, 0); - ASSERT_EQ(lmp->atom->sph_flag, 0); - ASSERT_EQ(lmp->atom->molecule_flag, 0); - ASSERT_EQ(lmp->atom->molindex_flag, 0); - ASSERT_EQ(lmp->atom->molatom_flag, 0); - ASSERT_EQ(lmp->atom->q_flag, 0); - ASSERT_EQ(lmp->atom->mu_flag, 0); - ASSERT_EQ(lmp->atom->rmass_flag, 1); - ASSERT_EQ(lmp->atom->radius_flag, 1); - ASSERT_EQ(lmp->atom->omega_flag, 0); - ASSERT_EQ(lmp->atom->torque_flag, 1); - ASSERT_EQ(lmp->atom->angmom_flag, 1); - ASSERT_EQ(lmp->atom->vfrac_flag, 0); - ASSERT_EQ(lmp->atom->spin_flag, 0); - ASSERT_EQ(lmp->atom->eradius_flag, 0); - ASSERT_EQ(lmp->atom->ervel_flag, 0); - ASSERT_EQ(lmp->atom->erforce_flag, 0); - ASSERT_EQ(lmp->atom->cs_flag, 0); - ASSERT_EQ(lmp->atom->csforce_flag, 0); - ASSERT_EQ(lmp->atom->vforce_flag, 0); - ASSERT_EQ(lmp->atom->ervelforce_flag, 0); - ASSERT_EQ(lmp->atom->etag_flag, 0); - ASSERT_EQ(lmp->atom->rho_flag, 0); - ASSERT_EQ(lmp->atom->esph_flag, 0); - ASSERT_EQ(lmp->atom->cv_flag, 0); - ASSERT_EQ(lmp->atom->vest_flag, 0); - ASSERT_EQ(lmp->atom->dpd_flag, 0); - ASSERT_EQ(lmp->atom->edpd_flag, 0); - ASSERT_EQ(lmp->atom->tdpd_flag, 0); - ASSERT_EQ(lmp->atom->mesont_flag, 0); - ASSERT_EQ(lmp->atom->sp_flag, 0); - ASSERT_EQ(lmp->atom->x0_flag, 0); - ASSERT_EQ(lmp->atom->smd_flag, 0); - ASSERT_EQ(lmp->atom->damage_flag, 0); - ASSERT_EQ(lmp->atom->contact_radius_flag, 0); - ASSERT_EQ(lmp->atom->smd_data_9_flag, 0); - ASSERT_EQ(lmp->atom->smd_stress_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate_flag, 0); - ASSERT_EQ(lmp->atom->pdscale, 1.0); - - ASSERT_NE(lmp->atom->tag, nullptr); - ASSERT_NE(lmp->atom->type, nullptr); - ASSERT_NE(lmp->atom->mask, nullptr); - ASSERT_NE(lmp->atom->image, nullptr); - ASSERT_NE(lmp->atom->x, nullptr); - ASSERT_NE(lmp->atom->v, nullptr); - ASSERT_NE(lmp->atom->f, nullptr); - ASSERT_EQ(lmp->atom->q, nullptr); - ASSERT_EQ(lmp->atom->mu, nullptr); - ASSERT_EQ(lmp->atom->omega, nullptr); - ASSERT_NE(lmp->atom->angmom, nullptr); - ASSERT_NE(lmp->atom->torque, nullptr); - ASSERT_NE(lmp->atom->radius, nullptr); - ASSERT_NE(lmp->atom->rmass, nullptr); - ASSERT_EQ(lmp->atom->ellipsoid, nullptr); - ASSERT_EQ(lmp->atom->line, nullptr); - ASSERT_EQ(lmp->atom->tri, nullptr); - ASSERT_NE(lmp->atom->body, nullptr); - ASSERT_EQ(lmp->atom->molecule, nullptr); - ASSERT_EQ(lmp->atom->molindex, nullptr); - ASSERT_EQ(lmp->atom->molatom, nullptr); - ASSERT_EQ(lmp->atom->num_bond, nullptr); - ASSERT_EQ(lmp->atom->bond_type, nullptr); - ASSERT_EQ(lmp->atom->bond_atom, nullptr); - ASSERT_EQ(lmp->atom->num_angle, nullptr); - ASSERT_EQ(lmp->atom->angle_type, nullptr); - ASSERT_EQ(lmp->atom->angle_atom1, nullptr); - ASSERT_EQ(lmp->atom->angle_atom2, nullptr); - ASSERT_EQ(lmp->atom->angle_atom3, nullptr); - ASSERT_EQ(lmp->atom->num_dihedral, nullptr); - ASSERT_EQ(lmp->atom->dihedral_type, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom1, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom2, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom3, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom4, nullptr); - ASSERT_EQ(lmp->atom->num_improper, nullptr); - ASSERT_EQ(lmp->atom->improper_type, nullptr); - ASSERT_EQ(lmp->atom->improper_atom1, nullptr); - ASSERT_EQ(lmp->atom->improper_atom2, nullptr); - ASSERT_EQ(lmp->atom->improper_atom3, nullptr); - ASSERT_EQ(lmp->atom->improper_atom4, nullptr); - ASSERT_EQ(lmp->atom->maxspecial, 1); - ASSERT_EQ(lmp->atom->nspecial, nullptr); - ASSERT_EQ(lmp->atom->special, nullptr); - ASSERT_EQ(lmp->atom->vfrac, nullptr); - ASSERT_EQ(lmp->atom->s0, nullptr); - ASSERT_EQ(lmp->atom->x0, nullptr); - ASSERT_EQ(lmp->atom->sp, nullptr); - ASSERT_EQ(lmp->atom->fm, nullptr); - ASSERT_EQ(lmp->atom->fm_long, nullptr); - ASSERT_EQ(lmp->atom->spin, nullptr); - ASSERT_EQ(lmp->atom->eradius, nullptr); - ASSERT_EQ(lmp->atom->ervel, nullptr); - ASSERT_EQ(lmp->atom->erforce, nullptr); - ASSERT_EQ(lmp->atom->ervelforce, nullptr); - ASSERT_EQ(lmp->atom->cs, nullptr); - ASSERT_EQ(lmp->atom->csforce, nullptr); - ASSERT_EQ(lmp->atom->vforce, nullptr); - ASSERT_EQ(lmp->atom->etag, nullptr); - ASSERT_EQ(lmp->atom->uCond, nullptr); - ASSERT_EQ(lmp->atom->uMech, nullptr); - ASSERT_EQ(lmp->atom->uChem, nullptr); - ASSERT_EQ(lmp->atom->uCG, nullptr); - ASSERT_EQ(lmp->atom->uCGnew, nullptr); - ASSERT_EQ(lmp->atom->duChem, nullptr); - ASSERT_EQ(lmp->atom->dpdTheta, nullptr); - ASSERT_EQ(lmp->atom->cc, nullptr); - ASSERT_EQ(lmp->atom->cc_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_temp, nullptr); - ASSERT_EQ(lmp->atom->edpd_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_cv, nullptr); - ASSERT_EQ(lmp->atom->length, nullptr); - ASSERT_EQ(lmp->atom->buckling, nullptr); - ASSERT_EQ(lmp->atom->bond_nt, nullptr); - ASSERT_EQ(lmp->atom->contact_radius, nullptr); - ASSERT_EQ(lmp->atom->smd_data_9, nullptr); - ASSERT_EQ(lmp->atom->smd_stress, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate, nullptr); - ASSERT_EQ(lmp->atom->damage, nullptr); - ASSERT_EQ(lmp->atom->rho, nullptr); - ASSERT_EQ(lmp->atom->drho, nullptr); - ASSERT_EQ(lmp->atom->esph, nullptr); - ASSERT_EQ(lmp->atom->desph, nullptr); - ASSERT_EQ(lmp->atom->cv, nullptr); - ASSERT_EQ(lmp->atom->vest, nullptr); - ASSERT_EQ(lmp->atom->nmolecule, 0); - ASSERT_EQ(lmp->atom->molecules, nullptr); - ASSERT_EQ(lmp->atom->nivector, 0); - ASSERT_EQ(lmp->atom->ndvector, 0); - ASSERT_EQ(lmp->atom->iname, nullptr); - ASSERT_EQ(lmp->atom->dname, nullptr); - ASSERT_EQ(lmp->atom->mass, nullptr); - ASSERT_EQ(lmp->atom->mass_setflag, nullptr); - ASSERT_EQ(lmp->atom->nextra_grow, 0); - ASSERT_EQ(lmp->atom->nextra_restart, 0); - ASSERT_EQ(lmp->atom->nextra_border, 0); - ASSERT_EQ(lmp->atom->nextra_grow_max, 0); - ASSERT_EQ(lmp->atom->nextra_restart_max, 0); - ASSERT_EQ(lmp->atom->nextra_border_max, 0); - ASSERT_EQ(lmp->atom->nextra_store, 0); - ASSERT_EQ(lmp->atom->extra_grow, nullptr); - ASSERT_EQ(lmp->atom->extra_restart, nullptr); - ASSERT_EQ(lmp->atom->extra_border, nullptr); - ASSERT_EQ(lmp->atom->extra, nullptr); - ASSERT_EQ(lmp->atom->sametag, nullptr); - ASSERT_EQ(lmp->atom->map_style, Atom::MAP_NONE); - ASSERT_EQ(lmp->atom->map_user, 0); - ASSERT_EQ(lmp->atom->map_tag_max, -1); - const char data_file[] = "\n4 atoms\n" "4 bodies\n" "3 atom types\n\n" @@ -3432,186 +2620,69 @@ TEST_F(AtomStyleTest, body_nparticle) ASSERT_EQ(bonus[3].ilocal, 6); } -TEST_F(AtomStyleTest, bond) +TEST_F(AtomStyleTest, template) { if (!LAMMPS::is_installed_pkg("MOLECULE")) GTEST_SKIP(); - + create_molecule_files(); if (!verbose) ::testing::internal::CaptureStdout(); - lmp->input->one("atom_style bond"); + lmp->input->one("molecule twomols h2o.mol co2.mol offset 2 1 1 0 0"); + lmp->input->one("atom_style template twomols"); lmp->input->one("newton on"); if (!verbose) ::testing::internal::GetCapturedStdout(); - ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("bond")); + + AtomState expected; + expected.atom_style = "template"; + expected.molecular = Atom::TEMPLATE; + expected.nbondtypes = 2; + expected.nangletypes = 2; + expected.tag_enable = 1; + expected.has_type = true; + expected.has_mask = true; + expected.has_image = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; + expected.molecule_flag = 1; + expected.molindex_flag = 1; + expected.molatom_flag = 1; + expected.nmolecule = 2; + expected.map_style = 3; + + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); + + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("create_box 4 box bond/types 2 angle/types 2 "); + lmp->input->one("create_atoms 0 single -2.0 2.0 0.1 mol twomols 65234"); + lmp->input->one("create_atoms 0 single -2.0 -2.0 -0.1 mol twomols 62346"); + lmp->input->one("create_atoms 0 single 2.0 2.0 -0.1 mol twomols 61354"); + lmp->input->one("create_atoms 3 single 2.0 -2.0 0.1"); + lmp->input->one("create_atoms 3 single 2.0 2.0 -2.1"); + lmp->input->one("create_atoms 4 single 2.0 -2.0 2.1"); + lmp->input->one("mass 1 16.0"); + lmp->input->one("mass 2 1.0"); + lmp->input->one("mass 3 12.0"); + lmp->input->one("mass 4 16.0"); + lmp->input->one("bond_style zero"); + lmp->input->one("bond_coeff 1 1.0"); + lmp->input->one("bond_coeff 2 1.16"); + lmp->input->one("angle_style zero"); + lmp->input->one("angle_coeff * 109.0"); + lmp->input->one("pair_coeff * *"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("template")); ASSERT_NE(lmp->atom->avec, nullptr); - ASSERT_EQ(lmp->atom->natoms, 0); - ASSERT_EQ(lmp->atom->nlocal, 0); - ASSERT_EQ(lmp->atom->nghost, 0); - ASSERT_EQ(lmp->atom->nmax, 1); - ASSERT_EQ(lmp->atom->tag_enable, 1); - ASSERT_EQ(lmp->atom->molecular, Atom::MOLECULAR); + ASSERT_EQ(lmp->atom->natoms, 12); + ASSERT_EQ(lmp->atom->nbonds, 6); + ASSERT_EQ(lmp->atom->nbondtypes, 2); + ASSERT_EQ(lmp->atom->nangles, 3); + ASSERT_EQ(lmp->atom->nangletypes, 2); ASSERT_EQ(lmp->atom->nellipsoids, 0); - ASSERT_EQ(lmp->atom->nlines, 0); - ASSERT_EQ(lmp->atom->ntris, 0); - ASSERT_EQ(lmp->atom->nbodies, 0); - ASSERT_EQ(lmp->atom->nbonds, 0); - ASSERT_EQ(lmp->atom->nangles, 0); - ASSERT_EQ(lmp->atom->ndihedrals, 0); - ASSERT_EQ(lmp->atom->nimpropers, 0); - ASSERT_EQ(lmp->atom->ntypes, 0); - ASSERT_EQ(lmp->atom->nbondtypes, 0); - ASSERT_EQ(lmp->atom->nangletypes, 0); - ASSERT_EQ(lmp->atom->ndihedraltypes, 0); - ASSERT_EQ(lmp->atom->nimpropertypes, 0); - ASSERT_EQ(lmp->atom->bond_per_atom, 0); - ASSERT_EQ(lmp->atom->angle_per_atom, 0); - ASSERT_EQ(lmp->atom->dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->improper_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_bond_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_angle_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_improper_per_atom, 0); - - ASSERT_EQ(lmp->atom->sphere_flag, 0); - ASSERT_EQ(lmp->atom->ellipsoid_flag, 0); - ASSERT_EQ(lmp->atom->line_flag, 0); - ASSERT_EQ(lmp->atom->tri_flag, 0); - ASSERT_EQ(lmp->atom->body_flag, 0); - ASSERT_EQ(lmp->atom->peri_flag, 0); - ASSERT_EQ(lmp->atom->electron_flag, 0); - ASSERT_EQ(lmp->atom->wavepacket_flag, 0); - ASSERT_EQ(lmp->atom->sph_flag, 0); - ASSERT_EQ(lmp->atom->molecule_flag, 1); - ASSERT_EQ(lmp->atom->molindex_flag, 0); - ASSERT_EQ(lmp->atom->molatom_flag, 0); - ASSERT_EQ(lmp->atom->q_flag, 0); - ASSERT_EQ(lmp->atom->mu_flag, 0); - ASSERT_EQ(lmp->atom->rmass_flag, 0); - ASSERT_EQ(lmp->atom->radius_flag, 0); - ASSERT_EQ(lmp->atom->omega_flag, 0); - ASSERT_EQ(lmp->atom->torque_flag, 0); - ASSERT_EQ(lmp->atom->angmom_flag, 0); - ASSERT_EQ(lmp->atom->vfrac_flag, 0); - ASSERT_EQ(lmp->atom->spin_flag, 0); - ASSERT_EQ(lmp->atom->eradius_flag, 0); - ASSERT_EQ(lmp->atom->ervel_flag, 0); - ASSERT_EQ(lmp->atom->erforce_flag, 0); - ASSERT_EQ(lmp->atom->cs_flag, 0); - ASSERT_EQ(lmp->atom->csforce_flag, 0); - ASSERT_EQ(lmp->atom->vforce_flag, 0); - ASSERT_EQ(lmp->atom->ervelforce_flag, 0); - ASSERT_EQ(lmp->atom->etag_flag, 0); - ASSERT_EQ(lmp->atom->rho_flag, 0); - ASSERT_EQ(lmp->atom->esph_flag, 0); - ASSERT_EQ(lmp->atom->cv_flag, 0); - ASSERT_EQ(lmp->atom->vest_flag, 0); - ASSERT_EQ(lmp->atom->dpd_flag, 0); - ASSERT_EQ(lmp->atom->edpd_flag, 0); - ASSERT_EQ(lmp->atom->tdpd_flag, 0); - ASSERT_EQ(lmp->atom->mesont_flag, 0); - ASSERT_EQ(lmp->atom->sp_flag, 0); - ASSERT_EQ(lmp->atom->x0_flag, 0); - ASSERT_EQ(lmp->atom->smd_flag, 0); - ASSERT_EQ(lmp->atom->damage_flag, 0); - ASSERT_EQ(lmp->atom->contact_radius_flag, 0); - ASSERT_EQ(lmp->atom->smd_data_9_flag, 0); - ASSERT_EQ(lmp->atom->smd_stress_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate_flag, 0); - ASSERT_EQ(lmp->atom->pdscale, 1.0); - - ASSERT_NE(lmp->atom->tag, nullptr); - ASSERT_NE(lmp->atom->type, nullptr); - ASSERT_NE(lmp->atom->mask, nullptr); - ASSERT_NE(lmp->atom->image, nullptr); - ASSERT_NE(lmp->atom->x, nullptr); - ASSERT_NE(lmp->atom->v, nullptr); - ASSERT_NE(lmp->atom->f, nullptr); - ASSERT_EQ(lmp->atom->q, nullptr); - ASSERT_EQ(lmp->atom->mu, nullptr); - ASSERT_EQ(lmp->atom->omega, nullptr); - ASSERT_EQ(lmp->atom->angmom, nullptr); - ASSERT_EQ(lmp->atom->torque, nullptr); - ASSERT_EQ(lmp->atom->radius, nullptr); - ASSERT_EQ(lmp->atom->rmass, nullptr); - ASSERT_EQ(lmp->atom->ellipsoid, nullptr); - ASSERT_EQ(lmp->atom->line, nullptr); - ASSERT_EQ(lmp->atom->tri, nullptr); - ASSERT_EQ(lmp->atom->body, nullptr); - ASSERT_NE(lmp->atom->molecule, nullptr); - ASSERT_EQ(lmp->atom->molindex, nullptr); - ASSERT_EQ(lmp->atom->molatom, nullptr); - ASSERT_NE(lmp->atom->num_bond, nullptr); - ASSERT_NE(lmp->atom->bond_type, nullptr); - ASSERT_NE(lmp->atom->bond_atom, nullptr); - ASSERT_EQ(lmp->atom->num_angle, nullptr); - ASSERT_EQ(lmp->atom->angle_type, nullptr); - ASSERT_EQ(lmp->atom->angle_atom1, nullptr); - ASSERT_EQ(lmp->atom->angle_atom2, nullptr); - ASSERT_EQ(lmp->atom->angle_atom3, nullptr); - ASSERT_EQ(lmp->atom->num_dihedral, nullptr); - ASSERT_EQ(lmp->atom->dihedral_type, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom1, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom2, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom3, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom4, nullptr); - ASSERT_EQ(lmp->atom->num_improper, nullptr); - ASSERT_EQ(lmp->atom->improper_type, nullptr); - ASSERT_EQ(lmp->atom->improper_atom1, nullptr); - ASSERT_EQ(lmp->atom->improper_atom2, nullptr); - ASSERT_EQ(lmp->atom->improper_atom3, nullptr); - ASSERT_EQ(lmp->atom->improper_atom4, nullptr); - ASSERT_EQ(lmp->atom->maxspecial, 1); - ASSERT_NE(lmp->atom->nspecial, nullptr); - ASSERT_NE(lmp->atom->special, nullptr); - ASSERT_EQ(lmp->atom->vfrac, nullptr); - ASSERT_EQ(lmp->atom->s0, nullptr); - ASSERT_EQ(lmp->atom->x0, nullptr); - ASSERT_EQ(lmp->atom->sp, nullptr); - ASSERT_EQ(lmp->atom->fm, nullptr); - ASSERT_EQ(lmp->atom->fm_long, nullptr); - ASSERT_EQ(lmp->atom->spin, nullptr); - ASSERT_EQ(lmp->atom->eradius, nullptr); - ASSERT_EQ(lmp->atom->ervel, nullptr); - ASSERT_EQ(lmp->atom->erforce, nullptr); - ASSERT_EQ(lmp->atom->ervelforce, nullptr); - ASSERT_EQ(lmp->atom->cs, nullptr); - ASSERT_EQ(lmp->atom->csforce, nullptr); - ASSERT_EQ(lmp->atom->vforce, nullptr); - ASSERT_EQ(lmp->atom->etag, nullptr); - ASSERT_EQ(lmp->atom->uCond, nullptr); - ASSERT_EQ(lmp->atom->uMech, nullptr); - ASSERT_EQ(lmp->atom->uChem, nullptr); - ASSERT_EQ(lmp->atom->uCG, nullptr); - ASSERT_EQ(lmp->atom->uCGnew, nullptr); - ASSERT_EQ(lmp->atom->duChem, nullptr); - ASSERT_EQ(lmp->atom->dpdTheta, nullptr); - ASSERT_EQ(lmp->atom->cc, nullptr); - ASSERT_EQ(lmp->atom->cc_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_temp, nullptr); - ASSERT_EQ(lmp->atom->edpd_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_cv, nullptr); - ASSERT_EQ(lmp->atom->length, nullptr); - ASSERT_EQ(lmp->atom->buckling, nullptr); - ASSERT_EQ(lmp->atom->bond_nt, nullptr); - ASSERT_EQ(lmp->atom->contact_radius, nullptr); - ASSERT_EQ(lmp->atom->smd_data_9, nullptr); - ASSERT_EQ(lmp->atom->smd_stress, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate, nullptr); - ASSERT_EQ(lmp->atom->damage, nullptr); - ASSERT_EQ(lmp->atom->rho, nullptr); - ASSERT_EQ(lmp->atom->drho, nullptr); - ASSERT_EQ(lmp->atom->esph, nullptr); - ASSERT_EQ(lmp->atom->desph, nullptr); - ASSERT_EQ(lmp->atom->cv, nullptr); - ASSERT_EQ(lmp->atom->vest, nullptr); - ASSERT_EQ(lmp->atom->nmolecule, 0); - ASSERT_EQ(lmp->atom->molecules, nullptr); - ASSERT_EQ(lmp->atom->nivector, 0); - ASSERT_EQ(lmp->atom->ndvector, 0); - ASSERT_EQ(lmp->atom->iname, nullptr); - ASSERT_EQ(lmp->atom->dname, nullptr); - ASSERT_EQ(lmp->atom->mass, nullptr); - ASSERT_EQ(lmp->atom->mass_setflag, nullptr); + ASSERT_EQ(lmp->atom->nlocal, 12); + ASSERT_EQ(lmp->atom->nghost, 0); + ASSERT_NE(lmp->atom->nmax, -1); + ASSERT_EQ(lmp->atom->tag_enable, 1); + ASSERT_EQ(lmp->atom->molecular, Atom::TEMPLATE); + ASSERT_EQ(lmp->atom->ntypes, 4); ASSERT_EQ(lmp->atom->nextra_grow, 0); ASSERT_EQ(lmp->atom->nextra_restart, 0); ASSERT_EQ(lmp->atom->nextra_border, 0); @@ -3623,10 +2694,784 @@ TEST_F(AtomStyleTest, bond) ASSERT_EQ(lmp->atom->extra_restart, nullptr); ASSERT_EQ(lmp->atom->extra_border, nullptr); ASSERT_EQ(lmp->atom->extra, nullptr); - ASSERT_EQ(lmp->atom->sametag, nullptr); - ASSERT_EQ(lmp->atom->map_style, 3); - ASSERT_EQ(lmp->atom->map_user, 0); - ASSERT_EQ(lmp->atom->map_tag_max, -1); + + ASSERT_NE(lmp->atom->mass, nullptr); + ASSERT_NE(lmp->atom->mass_setflag, nullptr); + + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("write_data test_atom_styles.data"); + lmp->input->one("clear"); + lmp->input->one("units real"); + lmp->input->one("newton off"); + lmp->input->one("molecule twomols h2o.mol co2.mol offset 2 1 1 0 0"); + lmp->input->one("atom_style template twomols"); + lmp->input->one("pair_style zero 4.0"); + lmp->input->one("bond_style zero"); + lmp->input->one("angle_style zero"); + lmp->input->one("atom_modify map array"); + lmp->input->one("read_data test_atom_styles.data"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("template")); + ASSERT_NE(lmp->atom->avec, nullptr); + + ASSERT_EQ(lmp->atom->natoms, 12); + ASSERT_EQ(lmp->atom->nlocal, 12); + ASSERT_EQ(lmp->atom->nbonds, 6); + ASSERT_EQ(lmp->atom->nangles, 3); + ASSERT_EQ(lmp->atom->nbondtypes, 2); + ASSERT_EQ(lmp->atom->nangletypes, 2); + ASSERT_EQ(lmp->atom->nghost, 0); + ASSERT_NE(lmp->atom->nmax, -1); + ASSERT_EQ(lmp->atom->tag_enable, 1); + ASSERT_EQ(lmp->atom->molecular, Atom::TEMPLATE); + ASSERT_EQ(lmp->atom->ntypes, 4); + ASSERT_NE(lmp->atom->sametag, nullptr); + ASSERT_EQ(lmp->atom->tag_consecutive(), 1); + ASSERT_EQ(lmp->atom->map_style, Atom::MAP_ARRAY); + ASSERT_EQ(lmp->atom->map_user, 1); + ASSERT_EQ(lmp->atom->map_tag_max, 12); + + auto molecule = lmp->atom->molecule; + auto molindex = lmp->atom->molindex; + auto molatom = lmp->atom->molatom; + + ASSERT_EQ(molecule[GETIDX(1)], 1); + ASSERT_EQ(molecule[GETIDX(2)], 1); + ASSERT_EQ(molecule[GETIDX(3)], 1); + ASSERT_EQ(molecule[GETIDX(4)], 2); + ASSERT_EQ(molecule[GETIDX(5)], 2); + ASSERT_EQ(molecule[GETIDX(6)], 2); + ASSERT_EQ(molecule[GETIDX(7)], 3); + ASSERT_EQ(molecule[GETIDX(8)], 3); + ASSERT_EQ(molecule[GETIDX(9)], 3); + ASSERT_EQ(molecule[GETIDX(10)], 0); + ASSERT_EQ(molecule[GETIDX(11)], 0); + ASSERT_EQ(molecule[GETIDX(12)], 0); + ASSERT_EQ(molindex[GETIDX(1)], 0); + ASSERT_EQ(molindex[GETIDX(2)], 0); + ASSERT_EQ(molindex[GETIDX(3)], 0); + ASSERT_EQ(molindex[GETIDX(4)], 0); + ASSERT_EQ(molindex[GETIDX(5)], 0); + ASSERT_EQ(molindex[GETIDX(6)], 0); + ASSERT_EQ(molindex[GETIDX(7)], 0); + ASSERT_EQ(molindex[GETIDX(8)], 0); + ASSERT_EQ(molindex[GETIDX(9)], 0); + ASSERT_EQ(molindex[GETIDX(10)], -1); + ASSERT_EQ(molindex[GETIDX(11)], -1); + ASSERT_EQ(molindex[GETIDX(12)], -1); + ASSERT_EQ(molatom[GETIDX(1)], 0); + ASSERT_EQ(molatom[GETIDX(2)], 1); + ASSERT_EQ(molatom[GETIDX(3)], 2); + ASSERT_EQ(molatom[GETIDX(4)], 0); + ASSERT_EQ(molatom[GETIDX(5)], 1); + ASSERT_EQ(molatom[GETIDX(6)], 2); + ASSERT_EQ(molatom[GETIDX(7)], 0); + ASSERT_EQ(molatom[GETIDX(8)], 1); + ASSERT_EQ(molatom[GETIDX(9)], 2); + ASSERT_EQ(molatom[GETIDX(10)], -1); + ASSERT_EQ(molatom[GETIDX(11)], -1); + ASSERT_EQ(molatom[GETIDX(12)], -1); + + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("clear"); + lmp->input->one("units real"); + lmp->input->one("molecule twomols h2o.mol co2.mol offset 2 1 1 0 0"); + lmp->input->one("atom_style template twomols"); + lmp->input->one("pair_style zero 4.0"); + lmp->input->one("bond_style zero"); + lmp->input->one("angle_style zero"); + lmp->input->one("atom_modify map array"); + lmp->input->one("read_data test_atom_styles.data"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("template")); + ASSERT_NE(lmp->atom->avec, nullptr); + + ASSERT_EQ(lmp->atom->natoms, 12); + ASSERT_EQ(lmp->atom->nlocal, 12); + ASSERT_EQ(lmp->atom->nbonds, 6); + ASSERT_EQ(lmp->atom->nangles, 3); + ASSERT_EQ(lmp->atom->nbondtypes, 2); + ASSERT_EQ(lmp->atom->nangletypes, 2); + ASSERT_EQ(lmp->atom->nghost, 0); + ASSERT_NE(lmp->atom->nmax, -1); + ASSERT_EQ(lmp->atom->tag_enable, 1); + ASSERT_EQ(lmp->atom->molecular, Atom::TEMPLATE); + ASSERT_EQ(lmp->atom->ntypes, 4); + ASSERT_NE(lmp->atom->sametag, nullptr); + ASSERT_EQ(lmp->atom->tag_consecutive(), 1); + ASSERT_EQ(lmp->atom->map_style, Atom::MAP_ARRAY); + ASSERT_EQ(lmp->atom->map_user, 1); + ASSERT_EQ(lmp->atom->map_tag_max, 12); + + molecule = lmp->atom->molecule; + molindex = lmp->atom->molindex; + molatom = lmp->atom->molatom; + + ASSERT_EQ(molindex[GETIDX(1)], 0); + ASSERT_EQ(molindex[GETIDX(2)], 0); + ASSERT_EQ(molindex[GETIDX(3)], 0); + ASSERT_EQ(molindex[GETIDX(4)], 0); + ASSERT_EQ(molindex[GETIDX(5)], 0); + ASSERT_EQ(molindex[GETIDX(6)], 0); + ASSERT_EQ(molindex[GETIDX(7)], 0); + ASSERT_EQ(molindex[GETIDX(8)], 0); + ASSERT_EQ(molindex[GETIDX(9)], 0); + ASSERT_EQ(molindex[GETIDX(10)], -1); + ASSERT_EQ(molindex[GETIDX(11)], -1); + ASSERT_EQ(molindex[GETIDX(12)], -1); + ASSERT_EQ(molatom[GETIDX(1)], 0); + ASSERT_EQ(molatom[GETIDX(2)], 1); + ASSERT_EQ(molatom[GETIDX(3)], 2); + ASSERT_EQ(molatom[GETIDX(4)], 0); + ASSERT_EQ(molatom[GETIDX(5)], 1); + ASSERT_EQ(molatom[GETIDX(6)], 2); + ASSERT_EQ(molatom[GETIDX(7)], 0); + ASSERT_EQ(molatom[GETIDX(8)], 1); + ASSERT_EQ(molatom[GETIDX(9)], 2); + ASSERT_EQ(molatom[GETIDX(10)], -1); + ASSERT_EQ(molatom[GETIDX(11)], -1); + ASSERT_EQ(molatom[GETIDX(12)], -1); + + auto x = lmp->atom->x; + auto v = lmp->atom->v; + auto type = lmp->atom->type; + + EXPECT_NEAR(x[GETIDX(10)][0], 2.0, EPSILON); + EXPECT_NEAR(x[GETIDX(10)][1], -2.0, EPSILON); + EXPECT_NEAR(x[GETIDX(10)][2], 0.1, EPSILON); + EXPECT_NEAR(x[GETIDX(11)][0], 2.0, EPSILON); + EXPECT_NEAR(x[GETIDX(11)][1], 2.0, EPSILON); + EXPECT_NEAR(x[GETIDX(11)][2], -2.1, EPSILON); + EXPECT_NEAR(x[GETIDX(12)][0], 2.0, EPSILON); + EXPECT_NEAR(x[GETIDX(12)][1], -2.0, EPSILON); + EXPECT_NEAR(x[GETIDX(12)][2], 2.1, EPSILON); + EXPECT_NEAR(v[GETIDX(1)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(1)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(1)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(2)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(2)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(2)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(3)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(3)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(3)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(4)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(4)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(4)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(5)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(5)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(5)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(6)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(6)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(6)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(7)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(7)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(7)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(8)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(8)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(8)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(9)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(9)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(9)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(10)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(10)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(10)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(11)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(11)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(11)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(12)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(12)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(12)][2], 0.0, EPSILON); + ASSERT_EQ(type[GETIDX(1)], 1); + ASSERT_EQ(type[GETIDX(2)], 2); + ASSERT_EQ(type[GETIDX(3)], 2); + ASSERT_EQ(type[GETIDX(4)], 1); + ASSERT_EQ(type[GETIDX(5)], 2); + ASSERT_EQ(type[GETIDX(6)], 2); + ASSERT_EQ(type[GETIDX(7)], 1); + ASSERT_EQ(type[GETIDX(8)], 2); + ASSERT_EQ(type[GETIDX(9)], 2); + ASSERT_EQ(type[GETIDX(10)], 3); + ASSERT_EQ(type[GETIDX(11)], 3); + ASSERT_EQ(type[GETIDX(12)], 4); + + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("group two id 7:10"); + lmp->input->one("delete_atoms group two compress no"); + lmp->input->one("write_restart test_atom_styles.restart"); + lmp->input->one("clear"); + lmp->input->one("molecule twomols h2o.mol co2.mol offset 2 1 1 0 0"); + lmp->input->one("read_restart test_atom_styles.restart"); + lmp->input->one("replicate 1 1 2 bbox"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("template")); + ASSERT_NE(lmp->atom->avec, nullptr); + ASSERT_EQ(lmp->atom->natoms, 16); + ASSERT_EQ(lmp->atom->nbonds, 8); + ASSERT_EQ(lmp->atom->nangles, 4); + ASSERT_EQ(lmp->atom->nlocal, 16); + ASSERT_EQ(lmp->atom->nghost, 0); + ASSERT_NE(lmp->atom->nmax, -1); + ASSERT_EQ(lmp->atom->tag_enable, 1); + ASSERT_EQ(lmp->atom->q_flag, 0); + ASSERT_EQ(lmp->atom->molecular, Atom::TEMPLATE); + ASSERT_EQ(lmp->atom->ntypes, 4); + ASSERT_EQ(lmp->atom->tag_consecutive(), 0); + ASSERT_EQ(lmp->atom->map_tag_max, 24); + + type = lmp->atom->type; + molecule = lmp->atom->molecule; + molindex = lmp->atom->molindex; + molatom = lmp->atom->molatom; + ASSERT_EQ(type[GETIDX(1)], 1); + ASSERT_EQ(type[GETIDX(2)], 2); + ASSERT_EQ(type[GETIDX(3)], 2); + ASSERT_EQ(type[GETIDX(4)], 1); + ASSERT_EQ(type[GETIDX(5)], 2); + ASSERT_EQ(type[GETIDX(6)], 2); + ASSERT_EQ(type[GETIDX(11)], 3); + ASSERT_EQ(type[GETIDX(12)], 4); + ASSERT_EQ(type[GETIDX(13)], 1); + ASSERT_EQ(type[GETIDX(14)], 2); + ASSERT_EQ(type[GETIDX(15)], 2); + ASSERT_EQ(type[GETIDX(16)], 1); + ASSERT_EQ(type[GETIDX(17)], 2); + ASSERT_EQ(type[GETIDX(18)], 2); + ASSERT_EQ(type[GETIDX(23)], 3); + ASSERT_EQ(type[GETIDX(24)], 4); + + ASSERT_EQ(molindex[GETIDX(1)], 0); + ASSERT_EQ(molindex[GETIDX(2)], 0); + ASSERT_EQ(molindex[GETIDX(3)], 0); + ASSERT_EQ(molindex[GETIDX(4)], 0); + ASSERT_EQ(molindex[GETIDX(5)], 0); + ASSERT_EQ(molindex[GETIDX(6)], 0); + ASSERT_EQ(molindex[GETIDX(11)], -1); + ASSERT_EQ(molindex[GETIDX(12)], -1); + ASSERT_EQ(molindex[GETIDX(13)], 0); + ASSERT_EQ(molindex[GETIDX(14)], 0); + ASSERT_EQ(molindex[GETIDX(15)], 0); + ASSERT_EQ(molindex[GETIDX(16)], 0); + ASSERT_EQ(molindex[GETIDX(17)], 0); + ASSERT_EQ(molindex[GETIDX(18)], 0); + ASSERT_EQ(molindex[GETIDX(23)], -1); + ASSERT_EQ(molindex[GETIDX(24)], -1); + ASSERT_EQ(molatom[GETIDX(1)], 0); + ASSERT_EQ(molatom[GETIDX(2)], 1); + ASSERT_EQ(molatom[GETIDX(3)], 2); + ASSERT_EQ(molatom[GETIDX(4)], 0); + ASSERT_EQ(molatom[GETIDX(5)], 1); + ASSERT_EQ(molatom[GETIDX(6)], 2); + ASSERT_EQ(molatom[GETIDX(11)], -1); + ASSERT_EQ(molatom[GETIDX(12)], -1); + ASSERT_EQ(molatom[GETIDX(13)], 0); + ASSERT_EQ(molatom[GETIDX(14)], 1); + ASSERT_EQ(molatom[GETIDX(15)], 2); + ASSERT_EQ(molatom[GETIDX(16)], 0); + ASSERT_EQ(molatom[GETIDX(17)], 1); + ASSERT_EQ(molatom[GETIDX(18)], 2); + ASSERT_EQ(molatom[GETIDX(23)], -1); + ASSERT_EQ(molatom[GETIDX(24)], -1); + + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("reset_atom_ids"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + ASSERT_EQ(lmp->atom->tag_consecutive(), 1); + ASSERT_EQ(lmp->atom->map_tag_max, 16); + + type = lmp->atom->type; + molecule = lmp->atom->molecule; + molindex = lmp->atom->molindex; + molatom = lmp->atom->molatom; + ASSERT_EQ(type[GETIDX(1)], 1); + ASSERT_EQ(type[GETIDX(2)], 2); + ASSERT_EQ(type[GETIDX(3)], 2); + ASSERT_EQ(type[GETIDX(4)], 1); + ASSERT_EQ(type[GETIDX(5)], 2); + ASSERT_EQ(type[GETIDX(6)], 2); + ASSERT_EQ(type[GETIDX(7)], 4); + ASSERT_EQ(type[GETIDX(8)], 3); + ASSERT_EQ(type[GETIDX(9)], 1); + ASSERT_EQ(type[GETIDX(10)], 2); + ASSERT_EQ(type[GETIDX(11)], 2); + ASSERT_EQ(type[GETIDX(12)], 1); + ASSERT_EQ(type[GETIDX(13)], 2); + ASSERT_EQ(type[GETIDX(14)], 2); + ASSERT_EQ(type[GETIDX(15)], 4); + ASSERT_EQ(type[GETIDX(16)], 3); + ASSERT_EQ(molatom[GETIDX(1)], 0); + ASSERT_EQ(molatom[GETIDX(2)], 1); + ASSERT_EQ(molatom[GETIDX(3)], 2); + ASSERT_EQ(molatom[GETIDX(4)], 0); + ASSERT_EQ(molatom[GETIDX(5)], 1); + ASSERT_EQ(molatom[GETIDX(6)], 2); + ASSERT_EQ(molatom[GETIDX(7)], -1); + ASSERT_EQ(molatom[GETIDX(8)], -1); + ASSERT_EQ(molatom[GETIDX(9)], 0); + ASSERT_EQ(molatom[GETIDX(10)], 1); + ASSERT_EQ(molatom[GETIDX(11)], 2); + ASSERT_EQ(molatom[GETIDX(12)], 0); + ASSERT_EQ(molatom[GETIDX(13)], 1); + ASSERT_EQ(molatom[GETIDX(14)], 2); + ASSERT_EQ(molatom[GETIDX(15)], -1); + ASSERT_EQ(molatom[GETIDX(16)], -1); +} + +TEST_F(AtomStyleTest, template_charge) +{ + if (!LAMMPS::is_installed_pkg("MOLECULE")) GTEST_SKIP(); + create_molecule_files(); + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("molecule twomols h2o.mol co2.mol offset 2 1 1 0 0"); + lmp->input->one("atom_style hybrid template twomols charge"); + lmp->input->one("newton on"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + + AtomState expected; + expected.atom_style = "hybrid"; + expected.molecular = Atom::TEMPLATE; + expected.nbondtypes = 2; + expected.nangletypes = 2; + expected.tag_enable = 1; + expected.has_type = true; + expected.has_mask = true; + expected.has_image = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; + expected.molecule_flag = 1; + expected.molindex_flag = 1; + expected.molatom_flag = 1; + expected.q_flag = 1; + expected.nmolecule = 2; + expected.map_style = 3; + + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); + + auto hybrid = (AtomVecHybrid *)lmp->atom->avec; + ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("hybrid")); + ASSERT_EQ(hybrid->nstyles, 2); + ASSERT_THAT(std::string(hybrid->keywords[0]), Eq("template")); + ASSERT_THAT(std::string(hybrid->keywords[1]), Eq("charge")); + ASSERT_NE(hybrid->styles[0], nullptr); + ASSERT_NE(hybrid->styles[1], nullptr); + + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("create_box 4 box bond/types 2 angle/types 2 "); + lmp->input->one("create_atoms 0 single -2.0 2.0 0.1 mol twomols 65234"); + lmp->input->one("create_atoms 0 single -2.0 -2.0 -0.1 mol twomols 62346"); + lmp->input->one("create_atoms 0 single 2.0 2.0 -0.1 mol twomols 61354"); + lmp->input->one("create_atoms 3 single 2.0 -2.0 0.1"); + lmp->input->one("create_atoms 3 single 2.0 2.0 -2.1"); + lmp->input->one("create_atoms 4 single 2.0 -2.0 2.1"); + lmp->input->one("mass 1 16.0"); + lmp->input->one("mass 2 1.0"); + lmp->input->one("mass 3 12.0"); + lmp->input->one("mass 4 16.0"); + lmp->input->one("set atom 10 charge 0.7"); + lmp->input->one("set atom 11 charge -0.35"); + lmp->input->one("set atom 12 charge -0.35"); + lmp->input->one("bond_style zero"); + lmp->input->one("bond_coeff 1 1.0"); + lmp->input->one("bond_coeff 2 1.16"); + lmp->input->one("angle_style zero"); + lmp->input->one("angle_coeff * 109.0"); + lmp->input->one("pair_coeff * *"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + ASSERT_NE(lmp->atom->avec, nullptr); + hybrid = (AtomVecHybrid *)lmp->atom->avec; + ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("hybrid")); + ASSERT_EQ(hybrid->nstyles, 2); + ASSERT_THAT(std::string(hybrid->keywords[0]), Eq("template")); + ASSERT_THAT(std::string(hybrid->keywords[1]), Eq("charge")); + ASSERT_NE(hybrid->styles[0], nullptr); + ASSERT_NE(hybrid->styles[1], nullptr); + + ASSERT_EQ(lmp->atom->natoms, 12); + ASSERT_EQ(lmp->atom->nbonds, 6); + ASSERT_EQ(lmp->atom->nbondtypes, 2); + ASSERT_EQ(lmp->atom->nangles, 3); + ASSERT_EQ(lmp->atom->nangletypes, 2); + ASSERT_EQ(lmp->atom->nellipsoids, 0); + ASSERT_EQ(lmp->atom->nlocal, 12); + ASSERT_EQ(lmp->atom->nghost, 0); + ASSERT_NE(lmp->atom->nmax, -1); + ASSERT_EQ(lmp->atom->tag_enable, 1); + ASSERT_EQ(lmp->atom->molecular, Atom::TEMPLATE); + ASSERT_EQ(lmp->atom->q_flag, 1); + ASSERT_EQ(lmp->atom->ntypes, 4); + ASSERT_EQ(lmp->atom->nextra_grow, 0); + ASSERT_EQ(lmp->atom->nextra_restart, 0); + ASSERT_EQ(lmp->atom->nextra_border, 0); + ASSERT_EQ(lmp->atom->nextra_grow_max, 0); + ASSERT_EQ(lmp->atom->nextra_restart_max, 0); + ASSERT_EQ(lmp->atom->nextra_border_max, 0); + ASSERT_EQ(lmp->atom->nextra_store, 0); + ASSERT_EQ(lmp->atom->extra_grow, nullptr); + ASSERT_EQ(lmp->atom->extra_restart, nullptr); + ASSERT_EQ(lmp->atom->extra_border, nullptr); + ASSERT_EQ(lmp->atom->extra, nullptr); + + ASSERT_NE(lmp->atom->mass, nullptr); + ASSERT_NE(lmp->atom->mass_setflag, nullptr); + + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("write_data test_atom_styles.data"); + lmp->input->one("clear"); + lmp->input->one("units real"); + lmp->input->one("newton off"); + lmp->input->one("molecule twomols h2o.mol co2.mol offset 2 1 1 0 0"); + lmp->input->one("atom_style hybrid template twomols charge"); + lmp->input->one("pair_style zero 4.0"); + lmp->input->one("bond_style zero"); + lmp->input->one("angle_style zero"); + lmp->input->one("atom_modify map array"); + lmp->input->one("read_data test_atom_styles.data"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("hybrid")); + ASSERT_NE(lmp->atom->avec, nullptr); + + ASSERT_EQ(lmp->atom->natoms, 12); + ASSERT_EQ(lmp->atom->nlocal, 12); + ASSERT_EQ(lmp->atom->nbonds, 6); + ASSERT_EQ(lmp->atom->nangles, 3); + ASSERT_EQ(lmp->atom->nbondtypes, 2); + ASSERT_EQ(lmp->atom->nangletypes, 2); + ASSERT_EQ(lmp->atom->nghost, 0); + ASSERT_NE(lmp->atom->nmax, -1); + ASSERT_EQ(lmp->atom->tag_enable, 1); + ASSERT_EQ(lmp->atom->molecular, Atom::TEMPLATE); + ASSERT_EQ(lmp->atom->ntypes, 4); + ASSERT_NE(lmp->atom->sametag, nullptr); + ASSERT_EQ(lmp->atom->tag_consecutive(), 1); + ASSERT_EQ(lmp->atom->map_style, Atom::MAP_ARRAY); + ASSERT_EQ(lmp->atom->map_user, 1); + ASSERT_EQ(lmp->atom->map_tag_max, 12); + + auto molecule = lmp->atom->molecule; + auto molindex = lmp->atom->molindex; + auto molatom = lmp->atom->molatom; + + ASSERT_EQ(molecule[GETIDX(1)], 1); + ASSERT_EQ(molecule[GETIDX(2)], 1); + ASSERT_EQ(molecule[GETIDX(3)], 1); + ASSERT_EQ(molecule[GETIDX(4)], 2); + ASSERT_EQ(molecule[GETIDX(5)], 2); + ASSERT_EQ(molecule[GETIDX(6)], 2); + ASSERT_EQ(molecule[GETIDX(7)], 3); + ASSERT_EQ(molecule[GETIDX(8)], 3); + ASSERT_EQ(molecule[GETIDX(9)], 3); + ASSERT_EQ(molecule[GETIDX(10)], 0); + ASSERT_EQ(molecule[GETIDX(11)], 0); + ASSERT_EQ(molecule[GETIDX(12)], 0); + ASSERT_EQ(molindex[GETIDX(1)], 0); + ASSERT_EQ(molindex[GETIDX(2)], 0); + ASSERT_EQ(molindex[GETIDX(3)], 0); + ASSERT_EQ(molindex[GETIDX(4)], 0); + ASSERT_EQ(molindex[GETIDX(5)], 0); + ASSERT_EQ(molindex[GETIDX(6)], 0); + ASSERT_EQ(molindex[GETIDX(7)], 0); + ASSERT_EQ(molindex[GETIDX(8)], 0); + ASSERT_EQ(molindex[GETIDX(9)], 0); + ASSERT_EQ(molindex[GETIDX(10)], -1); + ASSERT_EQ(molindex[GETIDX(11)], -1); + ASSERT_EQ(molindex[GETIDX(12)], -1); + ASSERT_EQ(molatom[GETIDX(1)], 0); + ASSERT_EQ(molatom[GETIDX(2)], 1); + ASSERT_EQ(molatom[GETIDX(3)], 2); + ASSERT_EQ(molatom[GETIDX(4)], 0); + ASSERT_EQ(molatom[GETIDX(5)], 1); + ASSERT_EQ(molatom[GETIDX(6)], 2); + ASSERT_EQ(molatom[GETIDX(7)], 0); + ASSERT_EQ(molatom[GETIDX(8)], 1); + ASSERT_EQ(molatom[GETIDX(9)], 2); + ASSERT_EQ(molatom[GETIDX(10)], -1); + ASSERT_EQ(molatom[GETIDX(11)], -1); + ASSERT_EQ(molatom[GETIDX(12)], -1); + + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("clear"); + lmp->input->one("units real"); + lmp->input->one("molecule twomols h2o.mol co2.mol offset 2 1 1 0 0"); + lmp->input->one("atom_style hybrid template twomols charge"); + lmp->input->one("pair_style zero 4.0"); + lmp->input->one("bond_style zero"); + lmp->input->one("angle_style zero"); + lmp->input->one("atom_modify map array"); + lmp->input->one("read_data test_atom_styles.data"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("hybrid")); + ASSERT_NE(lmp->atom->avec, nullptr); + + ASSERT_EQ(lmp->atom->natoms, 12); + ASSERT_EQ(lmp->atom->nlocal, 12); + ASSERT_EQ(lmp->atom->nbonds, 6); + ASSERT_EQ(lmp->atom->nangles, 3); + ASSERT_EQ(lmp->atom->nbondtypes, 2); + ASSERT_EQ(lmp->atom->nangletypes, 2); + ASSERT_EQ(lmp->atom->nghost, 0); + ASSERT_NE(lmp->atom->nmax, -1); + ASSERT_EQ(lmp->atom->tag_enable, 1); + ASSERT_EQ(lmp->atom->molecular, Atom::TEMPLATE); + ASSERT_EQ(lmp->atom->ntypes, 4); + ASSERT_NE(lmp->atom->sametag, nullptr); + ASSERT_EQ(lmp->atom->tag_consecutive(), 1); + ASSERT_EQ(lmp->atom->map_style, Atom::MAP_ARRAY); + ASSERT_EQ(lmp->atom->map_user, 1); + ASSERT_EQ(lmp->atom->map_tag_max, 12); + + molecule = lmp->atom->molecule; + molindex = lmp->atom->molindex; + molatom = lmp->atom->molatom; + + ASSERT_EQ(molindex[GETIDX(1)], 0); + ASSERT_EQ(molindex[GETIDX(2)], 0); + ASSERT_EQ(molindex[GETIDX(3)], 0); + ASSERT_EQ(molindex[GETIDX(4)], 0); + ASSERT_EQ(molindex[GETIDX(5)], 0); + ASSERT_EQ(molindex[GETIDX(6)], 0); + ASSERT_EQ(molindex[GETIDX(7)], 0); + ASSERT_EQ(molindex[GETIDX(8)], 0); + ASSERT_EQ(molindex[GETIDX(9)], 0); + ASSERT_EQ(molindex[GETIDX(10)], -1); + ASSERT_EQ(molindex[GETIDX(11)], -1); + ASSERT_EQ(molindex[GETIDX(12)], -1); + ASSERT_EQ(molatom[GETIDX(1)], 0); + ASSERT_EQ(molatom[GETIDX(2)], 1); + ASSERT_EQ(molatom[GETIDX(3)], 2); + ASSERT_EQ(molatom[GETIDX(4)], 0); + ASSERT_EQ(molatom[GETIDX(5)], 1); + ASSERT_EQ(molatom[GETIDX(6)], 2); + ASSERT_EQ(molatom[GETIDX(7)], 0); + ASSERT_EQ(molatom[GETIDX(8)], 1); + ASSERT_EQ(molatom[GETIDX(9)], 2); + ASSERT_EQ(molatom[GETIDX(10)], -1); + ASSERT_EQ(molatom[GETIDX(11)], -1); + ASSERT_EQ(molatom[GETIDX(12)], -1); + + auto x = lmp->atom->x; + auto v = lmp->atom->v; + auto type = lmp->atom->type; + auto q = lmp->atom->q; + + EXPECT_NEAR(x[GETIDX(10)][0], 2.0, EPSILON); + EXPECT_NEAR(x[GETIDX(10)][1], -2.0, EPSILON); + EXPECT_NEAR(x[GETIDX(10)][2], 0.1, EPSILON); + EXPECT_NEAR(x[GETIDX(11)][0], 2.0, EPSILON); + EXPECT_NEAR(x[GETIDX(11)][1], 2.0, EPSILON); + EXPECT_NEAR(x[GETIDX(11)][2], -2.1, EPSILON); + EXPECT_NEAR(x[GETIDX(12)][0], 2.0, EPSILON); + EXPECT_NEAR(x[GETIDX(12)][1], -2.0, EPSILON); + EXPECT_NEAR(x[GETIDX(12)][2], 2.1, EPSILON); + EXPECT_NEAR(v[GETIDX(1)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(1)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(1)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(2)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(2)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(2)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(3)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(3)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(3)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(4)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(4)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(4)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(5)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(5)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(5)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(6)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(6)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(6)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(7)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(7)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(7)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(8)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(8)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(8)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(9)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(9)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(9)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(10)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(10)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(10)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(11)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(11)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(11)][2], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(12)][0], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(12)][1], 0.0, EPSILON); + EXPECT_NEAR(v[GETIDX(12)][2], 0.0, EPSILON); + EXPECT_NEAR(q[GETIDX(1)], -0.8472, EPSILON); + EXPECT_NEAR(q[GETIDX(2)], 0.4236, EPSILON); + EXPECT_NEAR(q[GETIDX(3)], 0.4236, EPSILON); + EXPECT_NEAR(q[GETIDX(4)], -0.8472, EPSILON); + EXPECT_NEAR(q[GETIDX(5)], 0.4236, EPSILON); + EXPECT_NEAR(q[GETIDX(6)], 0.4236, EPSILON); + EXPECT_NEAR(q[GETIDX(7)], -0.8472, EPSILON); + EXPECT_NEAR(q[GETIDX(8)], 0.4236, EPSILON); + EXPECT_NEAR(q[GETIDX(9)], 0.4236, EPSILON); + EXPECT_NEAR(q[GETIDX(10)], 0.7, EPSILON); + EXPECT_NEAR(q[GETIDX(11)], -0.35, EPSILON); + EXPECT_NEAR(q[GETIDX(12)], -0.35, EPSILON); + ASSERT_EQ(type[GETIDX(1)], 1); + ASSERT_EQ(type[GETIDX(2)], 2); + ASSERT_EQ(type[GETIDX(3)], 2); + ASSERT_EQ(type[GETIDX(4)], 1); + ASSERT_EQ(type[GETIDX(5)], 2); + ASSERT_EQ(type[GETIDX(6)], 2); + ASSERT_EQ(type[GETIDX(7)], 1); + ASSERT_EQ(type[GETIDX(8)], 2); + ASSERT_EQ(type[GETIDX(9)], 2); + ASSERT_EQ(type[GETIDX(10)], 3); + ASSERT_EQ(type[GETIDX(11)], 3); + ASSERT_EQ(type[GETIDX(12)], 4); + + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("group two id 7:10"); + lmp->input->one("delete_atoms group two compress no"); + lmp->input->one("write_restart test_atom_styles.restart"); + lmp->input->one("clear"); + lmp->input->one("molecule twomols h2o.mol co2.mol offset 2 1 1 0 0"); + lmp->input->one("read_restart test_atom_styles.restart"); + lmp->input->one("replicate 1 1 2 bbox"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("hybrid")); + ASSERT_NE(lmp->atom->avec, nullptr); + ASSERT_EQ(lmp->atom->natoms, 16); + + ASSERT_EQ(lmp->atom->nlocal, 16); + ASSERT_EQ(lmp->atom->nghost, 0); + ASSERT_NE(lmp->atom->nmax, -1); + ASSERT_EQ(lmp->atom->tag_enable, 1); + ASSERT_EQ(lmp->atom->molecular, Atom::TEMPLATE); + ASSERT_EQ(lmp->atom->ntypes, 4); + ASSERT_EQ(lmp->atom->nbonds, 8); + ASSERT_EQ(lmp->atom->nangles, 4); + ASSERT_EQ(lmp->atom->tag_consecutive(), 0); + ASSERT_EQ(lmp->atom->map_tag_max, 24); + + type = lmp->atom->type; + molecule = lmp->atom->molecule; + molindex = lmp->atom->molindex; + molatom = lmp->atom->molatom; + ASSERT_EQ(type[GETIDX(1)], 1); + ASSERT_EQ(type[GETIDX(2)], 2); + ASSERT_EQ(type[GETIDX(3)], 2); + ASSERT_EQ(type[GETIDX(4)], 1); + ASSERT_EQ(type[GETIDX(5)], 2); + ASSERT_EQ(type[GETIDX(6)], 2); + ASSERT_EQ(type[GETIDX(11)], 3); + ASSERT_EQ(type[GETIDX(12)], 4); + ASSERT_EQ(type[GETIDX(13)], 1); + ASSERT_EQ(type[GETIDX(14)], 2); + ASSERT_EQ(type[GETIDX(15)], 2); + ASSERT_EQ(type[GETIDX(16)], 1); + ASSERT_EQ(type[GETIDX(17)], 2); + ASSERT_EQ(type[GETIDX(18)], 2); + ASSERT_EQ(type[GETIDX(23)], 3); + ASSERT_EQ(type[GETIDX(24)], 4); + + ASSERT_EQ(molindex[GETIDX(1)], 0); + ASSERT_EQ(molindex[GETIDX(2)], 0); + ASSERT_EQ(molindex[GETIDX(3)], 0); + ASSERT_EQ(molindex[GETIDX(4)], 0); + ASSERT_EQ(molindex[GETIDX(5)], 0); + ASSERT_EQ(molindex[GETIDX(6)], 0); + ASSERT_EQ(molindex[GETIDX(11)], -1); + ASSERT_EQ(molindex[GETIDX(12)], -1); + ASSERT_EQ(molindex[GETIDX(13)], 0); + ASSERT_EQ(molindex[GETIDX(14)], 0); + ASSERT_EQ(molindex[GETIDX(15)], 0); + ASSERT_EQ(molindex[GETIDX(16)], 0); + ASSERT_EQ(molindex[GETIDX(17)], 0); + ASSERT_EQ(molindex[GETIDX(18)], 0); + ASSERT_EQ(molindex[GETIDX(23)], -1); + ASSERT_EQ(molindex[GETIDX(24)], -1); + ASSERT_EQ(molatom[GETIDX(1)], 0); + ASSERT_EQ(molatom[GETIDX(2)], 1); + ASSERT_EQ(molatom[GETIDX(3)], 2); + ASSERT_EQ(molatom[GETIDX(4)], 0); + ASSERT_EQ(molatom[GETIDX(5)], 1); + ASSERT_EQ(molatom[GETIDX(6)], 2); + ASSERT_EQ(molatom[GETIDX(11)], -1); + ASSERT_EQ(molatom[GETIDX(12)], -1); + ASSERT_EQ(molatom[GETIDX(13)], 0); + ASSERT_EQ(molatom[GETIDX(14)], 1); + ASSERT_EQ(molatom[GETIDX(15)], 2); + ASSERT_EQ(molatom[GETIDX(16)], 0); + ASSERT_EQ(molatom[GETIDX(17)], 1); + ASSERT_EQ(molatom[GETIDX(18)], 2); + ASSERT_EQ(molatom[GETIDX(23)], -1); + ASSERT_EQ(molatom[GETIDX(24)], -1); + + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("reset_atom_ids"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + ASSERT_EQ(lmp->atom->tag_consecutive(), 1); + ASSERT_EQ(lmp->atom->map_tag_max, 16); + + + type = lmp->atom->type; + molecule = lmp->atom->molecule; + molindex = lmp->atom->molindex; + molatom = lmp->atom->molatom; + ASSERT_EQ(type[GETIDX(1)], 1); + ASSERT_EQ(type[GETIDX(2)], 2); + ASSERT_EQ(type[GETIDX(3)], 2); + ASSERT_EQ(type[GETIDX(4)], 1); + ASSERT_EQ(type[GETIDX(5)], 2); + ASSERT_EQ(type[GETIDX(6)], 2); + ASSERT_EQ(type[GETIDX(7)], 4); + ASSERT_EQ(type[GETIDX(8)], 3); + ASSERT_EQ(type[GETIDX(9)], 1); + ASSERT_EQ(type[GETIDX(10)], 2); + ASSERT_EQ(type[GETIDX(11)], 2); + ASSERT_EQ(type[GETIDX(12)], 1); + ASSERT_EQ(type[GETIDX(13)], 2); + ASSERT_EQ(type[GETIDX(14)], 2); + ASSERT_EQ(type[GETIDX(15)], 4); + ASSERT_EQ(type[GETIDX(16)], 3); + ASSERT_EQ(molatom[GETIDX(1)], 0); + ASSERT_EQ(molatom[GETIDX(2)], 1); + ASSERT_EQ(molatom[GETIDX(3)], 2); + ASSERT_EQ(molatom[GETIDX(4)], 0); + ASSERT_EQ(molatom[GETIDX(5)], 1); + ASSERT_EQ(molatom[GETIDX(6)], 2); + ASSERT_EQ(molatom[GETIDX(7)], -1); + ASSERT_EQ(molatom[GETIDX(8)], -1); + ASSERT_EQ(molatom[GETIDX(9)], 0); + ASSERT_EQ(molatom[GETIDX(10)], 1); + ASSERT_EQ(molatom[GETIDX(11)], 2); + ASSERT_EQ(molatom[GETIDX(12)], 0); + ASSERT_EQ(molatom[GETIDX(13)], 1); + ASSERT_EQ(molatom[GETIDX(14)], 2); + ASSERT_EQ(molatom[GETIDX(15)], -1); + ASSERT_EQ(molatom[GETIDX(16)], -1); +} + +TEST_F(AtomStyleTest, bond) +{ + if (!LAMMPS::is_installed_pkg("MOLECULE")) GTEST_SKIP(); + + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("atom_style bond"); + lmp->input->one("newton on"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + + AtomState expected; + expected.atom_style = "bond"; + expected.molecular = Atom::MOLECULAR; + expected.tag_enable = 1; + expected.molecule_flag = 1; + expected.has_type = true; + expected.has_mask = true; + expected.has_image = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; + expected.has_bonds = true; + expected.has_nspecial = true; + expected.has_special = true; + expected.map_style = 3; + + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("create_box 3 box bond/types 2 " @@ -3957,193 +3802,25 @@ TEST_F(AtomStyleTest, angle) lmp->input->one("atom_style angle"); lmp->input->one("newton on"); if (!verbose) ::testing::internal::GetCapturedStdout(); - ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("angle")); - ASSERT_NE(lmp->atom->avec, nullptr); - ASSERT_EQ(lmp->atom->natoms, 0); - ASSERT_EQ(lmp->atom->nlocal, 0); - ASSERT_EQ(lmp->atom->nghost, 0); - ASSERT_EQ(lmp->atom->nmax, 1); - ASSERT_EQ(lmp->atom->tag_enable, 1); - ASSERT_EQ(lmp->atom->molecular, Atom::MOLECULAR); - ASSERT_EQ(lmp->atom->nellipsoids, 0); - ASSERT_EQ(lmp->atom->nlines, 0); - ASSERT_EQ(lmp->atom->ntris, 0); - ASSERT_EQ(lmp->atom->nbodies, 0); - ASSERT_EQ(lmp->atom->nbonds, 0); - ASSERT_EQ(lmp->atom->nangles, 0); - ASSERT_EQ(lmp->atom->ndihedrals, 0); - ASSERT_EQ(lmp->atom->nimpropers, 0); - ASSERT_EQ(lmp->atom->ntypes, 0); - ASSERT_EQ(lmp->atom->nbondtypes, 0); - ASSERT_EQ(lmp->atom->nangletypes, 0); - ASSERT_EQ(lmp->atom->ndihedraltypes, 0); - ASSERT_EQ(lmp->atom->nimpropertypes, 0); - ASSERT_EQ(lmp->atom->bond_per_atom, 0); - ASSERT_EQ(lmp->atom->angle_per_atom, 0); - ASSERT_EQ(lmp->atom->dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->improper_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_bond_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_angle_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_improper_per_atom, 0); - ASSERT_EQ(lmp->atom->sphere_flag, 0); - ASSERT_EQ(lmp->atom->ellipsoid_flag, 0); - ASSERT_EQ(lmp->atom->line_flag, 0); - ASSERT_EQ(lmp->atom->tri_flag, 0); - ASSERT_EQ(lmp->atom->body_flag, 0); - ASSERT_EQ(lmp->atom->peri_flag, 0); - ASSERT_EQ(lmp->atom->electron_flag, 0); - ASSERT_EQ(lmp->atom->wavepacket_flag, 0); - ASSERT_EQ(lmp->atom->sph_flag, 0); - ASSERT_EQ(lmp->atom->molecule_flag, 1); - ASSERT_EQ(lmp->atom->molindex_flag, 0); - ASSERT_EQ(lmp->atom->molatom_flag, 0); - ASSERT_EQ(lmp->atom->q_flag, 0); - ASSERT_EQ(lmp->atom->mu_flag, 0); - ASSERT_EQ(lmp->atom->rmass_flag, 0); - ASSERT_EQ(lmp->atom->radius_flag, 0); - ASSERT_EQ(lmp->atom->omega_flag, 0); - ASSERT_EQ(lmp->atom->torque_flag, 0); - ASSERT_EQ(lmp->atom->angmom_flag, 0); - ASSERT_EQ(lmp->atom->vfrac_flag, 0); - ASSERT_EQ(lmp->atom->spin_flag, 0); - ASSERT_EQ(lmp->atom->eradius_flag, 0); - ASSERT_EQ(lmp->atom->ervel_flag, 0); - ASSERT_EQ(lmp->atom->erforce_flag, 0); - ASSERT_EQ(lmp->atom->cs_flag, 0); - ASSERT_EQ(lmp->atom->csforce_flag, 0); - ASSERT_EQ(lmp->atom->vforce_flag, 0); - ASSERT_EQ(lmp->atom->ervelforce_flag, 0); - ASSERT_EQ(lmp->atom->etag_flag, 0); - ASSERT_EQ(lmp->atom->rho_flag, 0); - ASSERT_EQ(lmp->atom->esph_flag, 0); - ASSERT_EQ(lmp->atom->cv_flag, 0); - ASSERT_EQ(lmp->atom->vest_flag, 0); - ASSERT_EQ(lmp->atom->dpd_flag, 0); - ASSERT_EQ(lmp->atom->edpd_flag, 0); - ASSERT_EQ(lmp->atom->tdpd_flag, 0); - ASSERT_EQ(lmp->atom->mesont_flag, 0); - ASSERT_EQ(lmp->atom->sp_flag, 0); - ASSERT_EQ(lmp->atom->x0_flag, 0); - ASSERT_EQ(lmp->atom->smd_flag, 0); - ASSERT_EQ(lmp->atom->damage_flag, 0); - ASSERT_EQ(lmp->atom->contact_radius_flag, 0); - ASSERT_EQ(lmp->atom->smd_data_9_flag, 0); - ASSERT_EQ(lmp->atom->smd_stress_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate_flag, 0); - ASSERT_EQ(lmp->atom->pdscale, 1.0); + AtomState expected; + expected.atom_style = "angle"; + expected.molecular = Atom::MOLECULAR; + expected.tag_enable = 1; + expected.molecule_flag = 1; + expected.has_type = true; + expected.has_mask = true; + expected.has_image = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; + expected.has_bonds = true; + expected.has_angles = true; + expected.has_nspecial = true; + expected.has_special = true; + expected.map_style = 3; - ASSERT_NE(lmp->atom->tag, nullptr); - ASSERT_NE(lmp->atom->type, nullptr); - ASSERT_NE(lmp->atom->mask, nullptr); - ASSERT_NE(lmp->atom->image, nullptr); - ASSERT_NE(lmp->atom->x, nullptr); - ASSERT_NE(lmp->atom->v, nullptr); - ASSERT_NE(lmp->atom->f, nullptr); - ASSERT_EQ(lmp->atom->q, nullptr); - ASSERT_EQ(lmp->atom->mu, nullptr); - ASSERT_EQ(lmp->atom->omega, nullptr); - ASSERT_EQ(lmp->atom->angmom, nullptr); - ASSERT_EQ(lmp->atom->torque, nullptr); - ASSERT_EQ(lmp->atom->radius, nullptr); - ASSERT_EQ(lmp->atom->rmass, nullptr); - ASSERT_EQ(lmp->atom->ellipsoid, nullptr); - ASSERT_EQ(lmp->atom->line, nullptr); - ASSERT_EQ(lmp->atom->tri, nullptr); - ASSERT_EQ(lmp->atom->body, nullptr); - ASSERT_NE(lmp->atom->molecule, nullptr); - ASSERT_EQ(lmp->atom->molindex, nullptr); - ASSERT_EQ(lmp->atom->molatom, nullptr); - ASSERT_NE(lmp->atom->num_bond, nullptr); - ASSERT_NE(lmp->atom->bond_type, nullptr); - ASSERT_NE(lmp->atom->bond_atom, nullptr); - ASSERT_NE(lmp->atom->num_angle, nullptr); - ASSERT_NE(lmp->atom->angle_type, nullptr); - ASSERT_NE(lmp->atom->angle_atom1, nullptr); - ASSERT_NE(lmp->atom->angle_atom2, nullptr); - ASSERT_NE(lmp->atom->angle_atom3, nullptr); - ASSERT_EQ(lmp->atom->num_dihedral, nullptr); - ASSERT_EQ(lmp->atom->dihedral_type, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom1, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom2, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom3, nullptr); - ASSERT_EQ(lmp->atom->dihedral_atom4, nullptr); - ASSERT_EQ(lmp->atom->num_improper, nullptr); - ASSERT_EQ(lmp->atom->improper_type, nullptr); - ASSERT_EQ(lmp->atom->improper_atom1, nullptr); - ASSERT_EQ(lmp->atom->improper_atom2, nullptr); - ASSERT_EQ(lmp->atom->improper_atom3, nullptr); - ASSERT_EQ(lmp->atom->improper_atom4, nullptr); - ASSERT_EQ(lmp->atom->maxspecial, 1); - ASSERT_NE(lmp->atom->nspecial, nullptr); - ASSERT_NE(lmp->atom->special, nullptr); - ASSERT_EQ(lmp->atom->vfrac, nullptr); - ASSERT_EQ(lmp->atom->s0, nullptr); - ASSERT_EQ(lmp->atom->x0, nullptr); - ASSERT_EQ(lmp->atom->sp, nullptr); - ASSERT_EQ(lmp->atom->fm, nullptr); - ASSERT_EQ(lmp->atom->fm_long, nullptr); - ASSERT_EQ(lmp->atom->spin, nullptr); - ASSERT_EQ(lmp->atom->eradius, nullptr); - ASSERT_EQ(lmp->atom->ervel, nullptr); - ASSERT_EQ(lmp->atom->erforce, nullptr); - ASSERT_EQ(lmp->atom->ervelforce, nullptr); - ASSERT_EQ(lmp->atom->cs, nullptr); - ASSERT_EQ(lmp->atom->csforce, nullptr); - ASSERT_EQ(lmp->atom->vforce, nullptr); - ASSERT_EQ(lmp->atom->etag, nullptr); - ASSERT_EQ(lmp->atom->uCond, nullptr); - ASSERT_EQ(lmp->atom->uMech, nullptr); - ASSERT_EQ(lmp->atom->uChem, nullptr); - ASSERT_EQ(lmp->atom->uCG, nullptr); - ASSERT_EQ(lmp->atom->uCGnew, nullptr); - ASSERT_EQ(lmp->atom->duChem, nullptr); - ASSERT_EQ(lmp->atom->dpdTheta, nullptr); - ASSERT_EQ(lmp->atom->cc, nullptr); - ASSERT_EQ(lmp->atom->cc_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_temp, nullptr); - ASSERT_EQ(lmp->atom->edpd_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_cv, nullptr); - ASSERT_EQ(lmp->atom->length, nullptr); - ASSERT_EQ(lmp->atom->buckling, nullptr); - ASSERT_EQ(lmp->atom->bond_nt, nullptr); - ASSERT_EQ(lmp->atom->contact_radius, nullptr); - ASSERT_EQ(lmp->atom->smd_data_9, nullptr); - ASSERT_EQ(lmp->atom->smd_stress, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate, nullptr); - ASSERT_EQ(lmp->atom->damage, nullptr); - ASSERT_EQ(lmp->atom->rho, nullptr); - ASSERT_EQ(lmp->atom->drho, nullptr); - ASSERT_EQ(lmp->atom->esph, nullptr); - ASSERT_EQ(lmp->atom->desph, nullptr); - ASSERT_EQ(lmp->atom->cv, nullptr); - ASSERT_EQ(lmp->atom->vest, nullptr); - ASSERT_EQ(lmp->atom->nmolecule, 0); - ASSERT_EQ(lmp->atom->molecules, nullptr); - ASSERT_EQ(lmp->atom->nivector, 0); - ASSERT_EQ(lmp->atom->ndvector, 0); - ASSERT_EQ(lmp->atom->iname, nullptr); - ASSERT_EQ(lmp->atom->dname, nullptr); - ASSERT_EQ(lmp->atom->mass, nullptr); - ASSERT_EQ(lmp->atom->mass_setflag, nullptr); - ASSERT_EQ(lmp->atom->nextra_grow, 0); - ASSERT_EQ(lmp->atom->nextra_restart, 0); - ASSERT_EQ(lmp->atom->nextra_border, 0); - ASSERT_EQ(lmp->atom->nextra_grow_max, 0); - ASSERT_EQ(lmp->atom->nextra_restart_max, 0); - ASSERT_EQ(lmp->atom->nextra_border_max, 0); - ASSERT_EQ(lmp->atom->nextra_store, 0); - ASSERT_EQ(lmp->atom->extra_grow, nullptr); - ASSERT_EQ(lmp->atom->extra_restart, nullptr); - ASSERT_EQ(lmp->atom->extra_border, nullptr); - ASSERT_EQ(lmp->atom->extra, nullptr); - ASSERT_EQ(lmp->atom->sametag, nullptr); - ASSERT_EQ(lmp->atom->map_style, 3); - ASSERT_EQ(lmp->atom->map_user, 0); - ASSERT_EQ(lmp->atom->map_tag_max, -1); + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("create_box 3 box bond/types 2 angle/types 2 " @@ -4485,199 +4162,40 @@ TEST_F(AtomStyleTest, full_ellipsoid) if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("atom_style hybrid full ellipsoid"); if (!verbose) ::testing::internal::GetCapturedStdout(); + + AtomState expected; + expected.atom_style = "hybrid"; + expected.molecular = Atom::MOLECULAR; + expected.tag_enable = 1; + expected.molecule_flag = 1; + expected.ellipsoid_flag = 1; + expected.q_flag = 1; + expected.rmass_flag = 1; + expected.torque_flag = 1; + expected.angmom_flag = 1; + expected.has_type = true; + expected.has_mask = true; + expected.has_image = true; + expected.has_x = true; + expected.has_v = true; + expected.has_f = true; + expected.has_bonds = true; + expected.has_angles = true; + expected.has_dihedral = true; + expected.has_improper = true; + expected.has_nspecial = true; + expected.has_special = true; + expected.map_style = 3; + + ASSERT_ATOM_STATE_EQ(lmp->atom, expected); + auto hybrid = (AtomVecHybrid *)lmp->atom->avec; ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("hybrid")); ASSERT_EQ(hybrid->nstyles, 2); ASSERT_THAT(std::string(hybrid->keywords[0]), Eq("full")); ASSERT_THAT(std::string(hybrid->keywords[1]), Eq("ellipsoid")); - ASSERT_NE(lmp->atom->avec, nullptr); ASSERT_NE(hybrid->styles[0], nullptr); ASSERT_NE(hybrid->styles[1], nullptr); - ASSERT_EQ(lmp->atom->natoms, 0); - ASSERT_EQ(lmp->atom->nlocal, 0); - ASSERT_EQ(lmp->atom->nghost, 0); - ASSERT_EQ(lmp->atom->nmax, 1); - ASSERT_EQ(lmp->atom->tag_enable, 1); - ASSERT_EQ(lmp->atom->molecular, Atom::MOLECULAR); - ASSERT_EQ(lmp->atom->nellipsoids, 0); - ASSERT_EQ(lmp->atom->nlines, 0); - ASSERT_EQ(lmp->atom->ntris, 0); - ASSERT_EQ(lmp->atom->nbodies, 0); - ASSERT_EQ(lmp->atom->nbonds, 0); - ASSERT_EQ(lmp->atom->nangles, 0); - ASSERT_EQ(lmp->atom->ndihedrals, 0); - ASSERT_EQ(lmp->atom->nimpropers, 0); - ASSERT_EQ(lmp->atom->ntypes, 0); - ASSERT_EQ(lmp->atom->nbondtypes, 0); - ASSERT_EQ(lmp->atom->nangletypes, 0); - ASSERT_EQ(lmp->atom->ndihedraltypes, 0); - ASSERT_EQ(lmp->atom->nimpropertypes, 0); - ASSERT_EQ(lmp->atom->bond_per_atom, 0); - ASSERT_EQ(lmp->atom->angle_per_atom, 0); - ASSERT_EQ(lmp->atom->dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->improper_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_bond_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_angle_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_dihedral_per_atom, 0); - ASSERT_EQ(lmp->atom->extra_improper_per_atom, 0); - - ASSERT_EQ(lmp->atom->sphere_flag, 0); - ASSERT_EQ(lmp->atom->ellipsoid_flag, 1); - ASSERT_EQ(lmp->atom->line_flag, 0); - ASSERT_EQ(lmp->atom->tri_flag, 0); - ASSERT_EQ(lmp->atom->body_flag, 0); - ASSERT_EQ(lmp->atom->peri_flag, 0); - ASSERT_EQ(lmp->atom->electron_flag, 0); - ASSERT_EQ(lmp->atom->wavepacket_flag, 0); - ASSERT_EQ(lmp->atom->sph_flag, 0); - ASSERT_EQ(lmp->atom->molecule_flag, 1); - ASSERT_EQ(lmp->atom->molindex_flag, 0); - ASSERT_EQ(lmp->atom->molatom_flag, 0); - ASSERT_EQ(lmp->atom->q_flag, 1); - ASSERT_EQ(lmp->atom->mu_flag, 0); - ASSERT_EQ(lmp->atom->rmass_flag, 1); - ASSERT_EQ(lmp->atom->radius_flag, 0); - ASSERT_EQ(lmp->atom->omega_flag, 0); - ASSERT_EQ(lmp->atom->torque_flag, 1); - ASSERT_EQ(lmp->atom->angmom_flag, 1); - ASSERT_EQ(lmp->atom->vfrac_flag, 0); - ASSERT_EQ(lmp->atom->spin_flag, 0); - ASSERT_EQ(lmp->atom->eradius_flag, 0); - ASSERT_EQ(lmp->atom->ervel_flag, 0); - ASSERT_EQ(lmp->atom->erforce_flag, 0); - ASSERT_EQ(lmp->atom->cs_flag, 0); - ASSERT_EQ(lmp->atom->csforce_flag, 0); - ASSERT_EQ(lmp->atom->vforce_flag, 0); - ASSERT_EQ(lmp->atom->ervelforce_flag, 0); - ASSERT_EQ(lmp->atom->etag_flag, 0); - ASSERT_EQ(lmp->atom->rho_flag, 0); - ASSERT_EQ(lmp->atom->esph_flag, 0); - ASSERT_EQ(lmp->atom->cv_flag, 0); - ASSERT_EQ(lmp->atom->vest_flag, 0); - ASSERT_EQ(lmp->atom->dpd_flag, 0); - ASSERT_EQ(lmp->atom->edpd_flag, 0); - ASSERT_EQ(lmp->atom->tdpd_flag, 0); - ASSERT_EQ(lmp->atom->mesont_flag, 0); - ASSERT_EQ(lmp->atom->sp_flag, 0); - ASSERT_EQ(lmp->atom->x0_flag, 0); - ASSERT_EQ(lmp->atom->smd_flag, 0); - ASSERT_EQ(lmp->atom->damage_flag, 0); - ASSERT_EQ(lmp->atom->contact_radius_flag, 0); - ASSERT_EQ(lmp->atom->smd_data_9_flag, 0); - ASSERT_EQ(lmp->atom->smd_stress_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_flag, 0); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate_flag, 0); - ASSERT_EQ(lmp->atom->pdscale, 1.0); - - ASSERT_NE(lmp->atom->tag, nullptr); - ASSERT_NE(lmp->atom->type, nullptr); - ASSERT_NE(lmp->atom->mask, nullptr); - ASSERT_NE(lmp->atom->image, nullptr); - ASSERT_NE(lmp->atom->x, nullptr); - ASSERT_NE(lmp->atom->v, nullptr); - ASSERT_NE(lmp->atom->f, nullptr); - ASSERT_NE(lmp->atom->q, nullptr); - ASSERT_EQ(lmp->atom->mu, nullptr); - ASSERT_EQ(lmp->atom->omega, nullptr); - ASSERT_NE(lmp->atom->angmom, nullptr); - ASSERT_NE(lmp->atom->torque, nullptr); - ASSERT_EQ(lmp->atom->radius, nullptr); - ASSERT_NE(lmp->atom->rmass, nullptr); - ASSERT_NE(lmp->atom->ellipsoid, nullptr); - ASSERT_EQ(lmp->atom->line, nullptr); - ASSERT_EQ(lmp->atom->tri, nullptr); - ASSERT_EQ(lmp->atom->body, nullptr); - ASSERT_NE(lmp->atom->molecule, nullptr); - ASSERT_EQ(lmp->atom->molindex, nullptr); - ASSERT_EQ(lmp->atom->molatom, nullptr); - ASSERT_NE(lmp->atom->num_bond, nullptr); - ASSERT_NE(lmp->atom->bond_type, nullptr); - ASSERT_NE(lmp->atom->bond_atom, nullptr); - ASSERT_NE(lmp->atom->num_angle, nullptr); - ASSERT_NE(lmp->atom->angle_type, nullptr); - ASSERT_NE(lmp->atom->angle_atom1, nullptr); - ASSERT_NE(lmp->atom->angle_atom2, nullptr); - ASSERT_NE(lmp->atom->angle_atom3, nullptr); - ASSERT_NE(lmp->atom->num_dihedral, nullptr); - ASSERT_NE(lmp->atom->dihedral_type, nullptr); - ASSERT_NE(lmp->atom->dihedral_atom1, nullptr); - ASSERT_NE(lmp->atom->dihedral_atom2, nullptr); - ASSERT_NE(lmp->atom->dihedral_atom3, nullptr); - ASSERT_NE(lmp->atom->dihedral_atom4, nullptr); - ASSERT_NE(lmp->atom->num_improper, nullptr); - ASSERT_NE(lmp->atom->improper_type, nullptr); - ASSERT_NE(lmp->atom->improper_atom1, nullptr); - ASSERT_NE(lmp->atom->improper_atom2, nullptr); - ASSERT_NE(lmp->atom->improper_atom3, nullptr); - ASSERT_NE(lmp->atom->improper_atom4, nullptr); - ASSERT_EQ(lmp->atom->maxspecial, 1); - ASSERT_NE(lmp->atom->nspecial, nullptr); - ASSERT_NE(lmp->atom->special, nullptr); - ASSERT_EQ(lmp->atom->vfrac, nullptr); - ASSERT_EQ(lmp->atom->s0, nullptr); - ASSERT_EQ(lmp->atom->x0, nullptr); - ASSERT_EQ(lmp->atom->sp, nullptr); - ASSERT_EQ(lmp->atom->fm, nullptr); - ASSERT_EQ(lmp->atom->fm_long, nullptr); - ASSERT_EQ(lmp->atom->spin, nullptr); - ASSERT_EQ(lmp->atom->eradius, nullptr); - ASSERT_EQ(lmp->atom->ervel, nullptr); - ASSERT_EQ(lmp->atom->erforce, nullptr); - ASSERT_EQ(lmp->atom->ervelforce, nullptr); - ASSERT_EQ(lmp->atom->cs, nullptr); - ASSERT_EQ(lmp->atom->csforce, nullptr); - ASSERT_EQ(lmp->atom->vforce, nullptr); - ASSERT_EQ(lmp->atom->etag, nullptr); - ASSERT_EQ(lmp->atom->uCond, nullptr); - ASSERT_EQ(lmp->atom->uMech, nullptr); - ASSERT_EQ(lmp->atom->uChem, nullptr); - ASSERT_EQ(lmp->atom->uCG, nullptr); - ASSERT_EQ(lmp->atom->uCGnew, nullptr); - ASSERT_EQ(lmp->atom->duChem, nullptr); - ASSERT_EQ(lmp->atom->dpdTheta, nullptr); - ASSERT_EQ(lmp->atom->cc, nullptr); - ASSERT_EQ(lmp->atom->cc_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_temp, nullptr); - ASSERT_EQ(lmp->atom->edpd_flux, nullptr); - ASSERT_EQ(lmp->atom->edpd_cv, nullptr); - ASSERT_EQ(lmp->atom->length, nullptr); - ASSERT_EQ(lmp->atom->buckling, nullptr); - ASSERT_EQ(lmp->atom->bond_nt, nullptr); - ASSERT_EQ(lmp->atom->contact_radius, nullptr); - ASSERT_EQ(lmp->atom->smd_data_9, nullptr); - ASSERT_EQ(lmp->atom->smd_stress, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain, nullptr); - ASSERT_EQ(lmp->atom->eff_plastic_strain_rate, nullptr); - ASSERT_EQ(lmp->atom->damage, nullptr); - ASSERT_EQ(lmp->atom->rho, nullptr); - ASSERT_EQ(lmp->atom->drho, nullptr); - ASSERT_EQ(lmp->atom->esph, nullptr); - ASSERT_EQ(lmp->atom->desph, nullptr); - ASSERT_EQ(lmp->atom->cv, nullptr); - ASSERT_EQ(lmp->atom->vest, nullptr); - ASSERT_EQ(lmp->atom->nmolecule, 0); - ASSERT_EQ(lmp->atom->molecules, nullptr); - ASSERT_EQ(lmp->atom->nivector, 0); - ASSERT_EQ(lmp->atom->ndvector, 0); - ASSERT_EQ(lmp->atom->iname, nullptr); - ASSERT_EQ(lmp->atom->dname, nullptr); - ASSERT_EQ(lmp->atom->mass, nullptr); - ASSERT_EQ(lmp->atom->mass_setflag, nullptr); - ASSERT_EQ(lmp->atom->nextra_grow, 0); - ASSERT_EQ(lmp->atom->nextra_restart, 0); - ASSERT_EQ(lmp->atom->nextra_border, 0); - ASSERT_EQ(lmp->atom->nextra_grow_max, 0); - ASSERT_EQ(lmp->atom->nextra_restart_max, 0); - ASSERT_EQ(lmp->atom->nextra_border_max, 0); - ASSERT_EQ(lmp->atom->nextra_store, 0); - ASSERT_EQ(lmp->atom->extra_grow, nullptr); - ASSERT_EQ(lmp->atom->extra_restart, nullptr); - ASSERT_EQ(lmp->atom->extra_border, nullptr); - ASSERT_EQ(lmp->atom->extra, nullptr); - ASSERT_EQ(lmp->atom->sametag, nullptr); - ASSERT_EQ(lmp->atom->map_style, 3); - ASSERT_EQ(lmp->atom->map_user, 0); - ASSERT_EQ(lmp->atom->map_tag_max, -1); if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("create_box 3 box bond/types 2 " diff --git a/unittest/testing/mpitesting.h b/unittest/testing/mpitesting.h new file mode 100644 index 0000000000..d73cf11d44 --- /dev/null +++ b/unittest/testing/mpitesting.h @@ -0,0 +1,228 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +#include +#include + +using ::testing::TestEventListener; +using ::testing::TestCase; +using ::testing::TestSuite; +using ::testing::UnitTest; +using ::testing::TestPartResult; +using ::testing::TestInfo; + +class MPIPrinter : public TestEventListener { + MPI_Comm comm; + TestEventListener * default_listener; + int me; + int nprocs; + char * buffer; + size_t buffer_size; + std::deque results; + bool finalize_test; +public: + MPIPrinter(TestEventListener * default_listener) : default_listener(default_listener) { + comm = MPI_COMM_WORLD; + MPI_Comm_rank(comm, &me); + MPI_Comm_size(comm, &nprocs); + buffer_size = 1024; + buffer = new char[buffer_size]; + finalize_test = false; + } + + ~MPIPrinter() override { + delete default_listener; + default_listener = nullptr; + + delete [] buffer; + buffer = nullptr; + buffer_size = 0; + } + + virtual void OnTestProgramStart(const UnitTest& unit_test) override { + if(me == 0) default_listener->OnTestProgramStart(unit_test); + } + + virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration) override { + if(me == 0) default_listener->OnTestIterationStart(unit_test, iteration); + } + + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) override { + if(me == 0) default_listener->OnEnvironmentsSetUpStart(unit_test); + } + + virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) override { + if(me == 0) default_listener->OnEnvironmentsSetUpEnd(unit_test); + } + + virtual void OnTestSuiteStart(const TestSuite& test_suite) override { + if(me == 0) default_listener->OnTestSuiteStart(test_suite); + } + + // Legacy API is deprecated but still available +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + virtual void OnTestCaseStart(const TestCase& test_case) override { + if(me == 0) default_listener->OnTestSuiteStart(test_case); + } +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + + + virtual void OnTestStart(const TestInfo& test_info) override { + // Called before a test starts. + if(me == 0) default_listener->OnTestStart(test_info); + results.clear(); + finalize_test = false; + } + + + virtual void OnTestPartResult(const TestPartResult& test_part_result) override { + // Called after a failed assertion or a SUCCESS(). + // test_part_result() + + if (me == 0 && finalize_test) { + default_listener->OnTestPartResult(test_part_result); + } else { + std::stringstream proc_message; + std::istringstream msg(test_part_result.message()); + std::string line; + + while(std::getline(msg, line)) { + proc_message << "[Rank " << me << "] " << line << std::endl; + } + + results.push_back(TestPartResult(test_part_result.type(), test_part_result.file_name(), test_part_result.line_number(), proc_message.str().c_str())); + } + } + + virtual void OnTestEnd(const TestInfo& test_info) override { + // Called after a test ends. + MPI_Barrier(comm); + + // other procs send their test part results + if(me != 0) { + int nresults = results.size(); + MPI_Send(&nresults, 1, MPI_INT, 0, 0, comm); + + for(auto& test_part_result : results) { + + int type = test_part_result.type(); + MPI_Send(&type, 1, MPI_INT, 0, 0, comm); + + const char * str = test_part_result.file_name(); + int length = 0; + if(str) length = strlen(str)+1; + MPI_Send(&length, 1, MPI_INT, 0, 0, comm); + if(str) MPI_Send(str, length, MPI_CHAR, 0, 0, comm); + + int lineno = test_part_result.line_number(); + MPI_Send(&lineno, 1, MPI_INT, 0, 0, comm); + + str = test_part_result.message(); + length = 0; + if(str) length = strlen(str)+1; + MPI_Send(&length, 1, MPI_INT, 0, 0, comm); + if(str) MPI_Send(str, length, MPI_CHAR, 0, 0, comm); + } + } + + if(me == 0) { + // collect results from other procs + for(int p = 1; p < nprocs; p++) { + int nresults = 0; + MPI_Recv(&nresults, 1, MPI_INT, p, 0, comm, MPI_STATUS_IGNORE); + + for(int r = 0; r < nresults; r++) { + + int type; + MPI_Recv(&type, 1, MPI_INT, p, 0, comm, MPI_STATUS_IGNORE); + + int length = 0; + MPI_Recv(&length, 1, MPI_INT, p, 0, comm, MPI_STATUS_IGNORE); + std::string file_name; + + if (length > 0) { + if (length > buffer_size) { + delete [] buffer; + buffer = new char[length]; + buffer_size = length; + } + MPI_Recv(buffer, length, MPI_CHAR, p, 0, comm, MPI_STATUS_IGNORE); + file_name = buffer; + } + + int lineno; + MPI_Recv(&lineno, 1, MPI_INT, p, 0, comm, MPI_STATUS_IGNORE); + + MPI_Recv(&length, 1, MPI_INT, p, 0, comm, MPI_STATUS_IGNORE); + std::string message; + + if (length > 0) { + if (length > buffer_size) { + delete [] buffer; + buffer = new char[length]; + buffer_size = length; + } + MPI_Recv(buffer, length, MPI_CHAR, p, 0, comm, MPI_STATUS_IGNORE); + message = std::string(buffer); + } + + results.push_back(TestPartResult((TestPartResult::Type)type, file_name.c_str(), lineno, message.c_str())); + } + } + + // ensure failures are reported + finalize_test = true; + + // add all failures + while(!results.empty()) { + auto result = results.front(); + if(result.failed()) { + ADD_FAILURE_AT(result.file_name(), result.line_number()) << result.message(); + } else { + default_listener->OnTestPartResult(result); + } + results.pop_front(); + } + + default_listener->OnTestEnd(test_info); + } + } + + virtual void OnTestSuiteEnd(const TestSuite& test_suite) override { + if(me == 0) default_listener->OnTestSuiteEnd(test_suite); + } + +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + virtual void OnTestCaseEnd(const TestCase& test_case) override { + if(me == 0) default_listener->OnTestCaseEnd(test_case); + } +#endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) override { + if(me == 0) default_listener->OnEnvironmentsTearDownStart(unit_test); + } + + virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) override { + if(me == 0) default_listener->OnEnvironmentsTearDownEnd(unit_test); + } + + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override { + if(me == 0) default_listener->OnTestIterationEnd(unit_test, iteration); + } + + virtual void OnTestProgramEnd(const UnitTest& unit_test) override { + if(me == 0) default_listener->OnTestProgramEnd(unit_test); + } +}; diff --git a/unittest/testing/test_mpi_main.h b/unittest/testing/test_mpi_main.h new file mode 100644 index 0000000000..1e89ba3c8c --- /dev/null +++ b/unittest/testing/test_mpi_main.h @@ -0,0 +1,67 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "utils.h" +#include "gmock/gmock.h" +#include "gtest/gtest.h" +#include "mpitesting.h" + +#include +#include + +// whether to print verbose output (i.e. not capturing LAMMPS screen output). +bool verbose = false; + +int main(int argc, char **argv) +{ + MPI_Init(&argc, &argv); + ::testing::InitGoogleMock(&argc, argv); + + if (argc < 1) { + return 1; + } + + // handle arguments passed via environment variable + if (const char *var = getenv("TEST_ARGS")) { + std::vector env = LAMMPS_NS::utils::split_words(var); + for (auto arg : env) { + if (arg == "-v") { + verbose = true; + } + } + } + + int iarg = 1; + while (iarg < argc) { + if (strcmp(argv[iarg], "-v") == 0) { + verbose = true; + ++iarg; + } else { + std::cerr << "unknown option: " << argv[iarg] << "\n\n"; + MPI_Finalize(); + return 1; + } + } + + auto & listeners = UnitTest::GetInstance()->listeners(); + + // Remove default listener + auto default_listener = listeners.Release(listeners.default_result_printer()); + + // Adds a listener to the end. googletest takes the ownership. + listeners.Append(new MPIPrinter(default_listener)); + + int rv = RUN_ALL_TESTS(); + MPI_Finalize(); + return rv; +} diff --git a/unittest/tools/test_lammps_shell.py b/unittest/tools/test_lammps_shell.py index 36c375fa59..1768bcf753 100644 --- a/unittest/tools/test_lammps_shell.py +++ b/unittest/tools/test_lammps_shell.py @@ -5,6 +5,7 @@ import os, re, subprocess, unittest os.putenv('LAMMPS_SHELL_TESTING','1') shell_prompt_re = r"([^>]*LAMMPS Shell> ([a-z0-9_]+) *([a-z0-9_\.]+)?.*\n)+" +cmd_group_re = r"([^>]*LAMMPS Shell> ([a-z0-9_]+) +([a-z0-9]+) +([a-z0-9]+)? *([a-z/0-9]+)?.*\n)+" # class LammpsShell(unittest.TestCase): @@ -21,17 +22,97 @@ class LammpsShell(unittest.TestCase): def InputRunner(self,text): """Test tab expansions""" try: - [outs,errs] = self.proc.communicate(input=text, timeout=1) - except TimeoutExpired: - proc.kill() - [outs,errs] = proc.communicate() + [outs,errs] = self.proc.communicate(input=text, timeout=10) + self.timeout = 0 + except subprocess.TimeoutExpired: + self.proc.kill() + [outs,errs] = self.proc.communicate() + self.timeout = 1 return outs.decode('UTF-8') - def testExpandClear(self): + def testExpandClearHistory(self): """Test expansion of a shell specific command""" - matches = re.findall(shell_prompt_re, self.InputRunner(b'cle\t\n'), re.MULTILINE) - self.assertEqual(matches[0][1],"clear") + matches = re.findall(shell_prompt_re, self.InputRunner(b'clear_his\t\n'), re.MULTILINE) + if self.timeout: + self.fail("Timeout") + else: + self.assertEqual(matches[0][1],"clear_history") + + def testExpandDimension(self): + """Test expansion of a LAMMPS command""" + matches = re.findall(shell_prompt_re, self.InputRunner(b'dimens\t\n'), re.MULTILINE) + if self.timeout: + self.fail("Timeout") + else: + self.assertEqual(matches[0][1],"dimension") + + def testExpandPairStyle(self): + """Test expansion of a pair style""" + matches = re.findall(shell_prompt_re, self.InputRunner(b'pair_st\t zer\t\n'), re.MULTILINE) + if self.timeout: + self.fail("Timeout") + else: + self.assertEqual(matches[0][1],"pair_style") + self.assertEqual(matches[0][2],"zero") + + def testExpandBondStyle(self): + """Test expansion of a bond style""" + matches = re.findall(shell_prompt_re, self.InputRunner(b'bond_st\t zer\t\n'), re.MULTILINE) + if self.timeout: + self.fail("Timeout") + else: + self.assertEqual(matches[0][1],"bond_style") + self.assertEqual(matches[0][2],"zero") + + def testExpandAngleStyle(self): + """Test expansion of a angle style""" + matches = re.findall(shell_prompt_re, self.InputRunner(b'angle_st\t zer\t\n'), re.MULTILINE) + if self.timeout: + self.fail("Timeout") + else: + self.assertEqual(matches[0][1],"angle_style") + self.assertEqual(matches[0][2],"zero") + + def testExpandDihedralStyle(self): + """Test expansion of a dihedral style""" + matches = re.findall(shell_prompt_re, self.InputRunner(b'dihedral_st\t zer\t\n'), re.MULTILINE) + if self.timeout: + self.fail("Timeout") + else: + self.assertEqual(matches[0][1],"dihedral_style") + self.assertEqual(matches[0][2],"zero") + + def testExpandImproperStyle(self): + """Test expansion of a improper style""" + matches = re.findall(shell_prompt_re, self.InputRunner(b'improper_st\t zer\t\n'), re.MULTILINE) + if self.timeout: + self.fail("Timeout") + else: + self.assertEqual(matches[0][1],"improper_style") + self.assertEqual(matches[0][2],"zero") + + def testExpandComputeGroup(self): + """Test expansion of a group-ID and a compute command""" + matches = re.findall(cmd_group_re, self.InputRunner(b'compute test al\tcentro/at\t\n'), re.MULTILINE) + if self.timeout: + self.fail("Timeout") + else: + self.assertEqual(matches[0][1],"compute") + self.assertEqual(matches[0][2],"test") + self.assertEqual(matches[0][3],"all") + self.assertEqual(matches[0][4],"centro/atom") + + def testExpandFixGroup(self): + """Test expansion of a group-ID and a fix command""" + matches = re.findall(cmd_group_re, self.InputRunner(b'fix test al\tcontroll\t\n'), re.MULTILINE) + if self.timeout: + self.fail("Timeout") + else: + self.assertEqual(matches[0][1],"fix") + self.assertEqual(matches[0][2],"test") + self.assertEqual(matches[0][3],"all") + self.assertEqual(matches[0][4],"controller") def testExpandSource(self): """Test expansion of a shell command and a file name""" @@ -40,24 +121,30 @@ class LammpsShell(unittest.TestCase): out.close() matches = re.findall(shell_prompt_re, self.InputRunner(b'sour\t.tmp.in.sou\t\n'), re.MULTILINE) os.remove('.tmp.in.source') - self.assertEqual(matches[0][1],"source") - self.assertEqual(matches[0][2],".tmp.in.source") + if self.timeout: + self.fail("Timeout") + else: + self.assertEqual(matches[0][1],"source") + self.assertEqual(matches[0][2],".tmp.in.source") def testHistory(self): """Test history expansion""" out = self.InputRunner(b'clear_history\nunits real\ndimension 2\n!!:p\n!-3:p\n!dim:p\n!uni:p\nprint !!:$\nprint !dim:1\n') idx = 0 - lines = out.splitlines() - for line in lines: - if line.startswith('LAMMPS Shell>'): break - idx += 1 - - self.assertEqual(lines[idx+4],"dimension 2") - self.assertEqual(lines[idx+6],"units real") - self.assertEqual(lines[idx+8],"dimension 2") - self.assertEqual(lines[idx+10],"units real") - self.assertEqual(lines[idx+12],"real") - self.assertEqual(lines[idx+14],"2") + if self.timeout: + self.fail("Timeout") + else: + lines = out.splitlines() + for line in lines: + if line.startswith('LAMMPS Shell>'): break + idx += 1 + + self.assertEqual(lines[idx+4],"dimension 2") + self.assertEqual(lines[idx+6],"units real") + self.assertEqual(lines[idx+8],"dimension 2") + self.assertEqual(lines[idx+10],"units real") + self.assertEqual(lines[idx+12],"real") + self.assertEqual(lines[idx+14],"2") ########################### if __name__ == "__main__": diff --git a/unittest/utils/test_utils.cpp b/unittest/utils/test_utils.cpp index 796ce0f8c7..2c3da7b9df 100644 --- a/unittest/utils/test_utils.cpp +++ b/unittest/utils/test_utils.cpp @@ -525,11 +525,26 @@ TEST(Utils, path_basename) { #if defined(_WIN32) ASSERT_THAT(utils::path_basename("c:\\parent\\folder\\filename"), Eq("filename")); + ASSERT_THAT(utils::path_basename("folder\\"), Eq("")); + ASSERT_THAT(utils::path_basename("c:/parent/folder/filename"), Eq("filename")); #else ASSERT_THAT(utils::path_basename("/parent/folder/filename"), Eq("filename")); + ASSERT_THAT(utils::path_basename("/parent/folder/"), Eq("")); #endif } +TEST(Utils, path_dirname) +{ +#if defined(_WIN32) + ASSERT_THAT(utils::path_dirname("c:/parent/folder/filename"), Eq("c:/parent/folder")); + ASSERT_THAT(utils::path_dirname("c:\\parent\\folder\\filename"), Eq("c:\\parent\\folder")); + ASSERT_THAT(utils::path_dirname("c:filename"), Eq(".")); +#else + ASSERT_THAT(utils::path_dirname("/parent/folder/filename"), Eq("/parent/folder")); +#endif + ASSERT_THAT(utils::path_dirname("filename"), Eq(".")); +} + TEST(Utils, getsyserror) { #if defined(__linux__)