diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 1f0f016cff..055d9f3a92 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -617,15 +617,12 @@ foreach(PKG_WITH_INCL CORESHELL QEQ OPENMP DPD-SMOOTH KOKKOS OPT INTEL GPU) endforeach() if(PKG_PLUGIN) - if(BUILD_SHARED_LIBS) - target_compile_definitions(lammps PRIVATE -DLMP_PLUGIN) - else() - message(WARNING "Plugin loading will not work unless BUILD_SHARED_LIBS is enabled") - endif() - # link with -ldl or equivalent for plugin loading; except on Windows - if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - target_link_libraries(lammps PRIVATE ${CMAKE_DL_LIBS}) - endif() + target_compile_definitions(lammps PRIVATE -DLMP_PLUGIN) +endif() + +# link with -ldl or equivalent for plugin loading; except on Windows +if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + target_link_libraries(lammps PRIVATE ${CMAKE_DL_LIBS}) endif() ###################################################################### diff --git a/doc/src/Commands_fix.rst b/doc/src/Commands_fix.rst index effccd55bf..c3fca16bef 100644 --- a/doc/src/Commands_fix.rst +++ b/doc/src/Commands_fix.rst @@ -23,6 +23,7 @@ OPT. :columns: 5 * :doc:`accelerate/cos ` + * :doc:`acks2/reaxff (k) ` * :doc:`adapt ` * :doc:`adapt/fep ` * :doc:`addforce ` @@ -103,6 +104,7 @@ OPT. * :doc:`manifoldforce ` * :doc:`mdi/engine ` * :doc:`meso/move ` + * :doc:`mol/swap ` * :doc:`momentum (k) ` * :doc:`momentum/chunk ` * :doc:`move ` diff --git a/doc/src/Developer_write.rst b/doc/src/Developer_write.rst index 37ac9ca126..c3df6ad6bb 100644 --- a/doc/src/Developer_write.rst +++ b/doc/src/Developer_write.rst @@ -29,7 +29,9 @@ of code in the header before include guards: .. code-block:: c #ifdef FIX_CLASS - FixStyle(print/vel,FixPrintVel) + // clang-format off + FixStyle(print/vel,FixPrintVel); + // clang-format on #else /* the definition of the FixPrintVel class comes here */ ... diff --git a/doc/src/Examples.rst b/doc/src/Examples.rst index f91ca2db11..c211727902 100644 --- a/doc/src/Examples.rst +++ b/doc/src/Examples.rst @@ -80,7 +80,7 @@ Lowercase directories +-------------+------------------------------------------------------------------+ | friction | frictional contact of spherical asperities between 2d surfaces | +-------------+------------------------------------------------------------------+ -| gcmc | Grand Canonical Monte Carlo (GCMC) via the fix gcmc command | +| mc | Monte Carlo features via fix gcmc, widom and other commands | +-------------+------------------------------------------------------------------+ | granregion | use of fix wall/region/gran as boundary on granular particles | +-------------+------------------------------------------------------------------+ @@ -205,7 +205,7 @@ Uppercase directories +------------+--------------------------------------------------------------------------------------------------+ | KAPPA | compute thermal conductivity via several methods | +------------+--------------------------------------------------------------------------------------------------+ -| MC | using LAMMPS in a Monte Carlo mode to relax the energy of a system | +| MC-LOOP | using LAMMPS in a Monte Carlo mode to relax the energy of a system in a input script loop | +------------+--------------------------------------------------------------------------------------------------+ | PACKAGES | examples for specific packages and contributed commands | +------------+--------------------------------------------------------------------------------------------------+ diff --git a/doc/src/fix.rst b/doc/src/fix.rst index c45ae6a801..6afe0fe325 100644 --- a/doc/src/fix.rst +++ b/doc/src/fix.rst @@ -166,6 +166,7 @@ page are followed by one or more of (g,i,k,o,t) to indicate which accelerated styles exist. * :doc:`accelerate/cos ` - apply cosine-shaped acceleration to atoms +* :doc:`acks2/reaxff ` - apply ACKS2 charge equilibration * :doc:`adapt ` - change a simulation parameter over time * :doc:`adapt/fep ` - enhanced version of fix adapt * :doc:`addforce ` - add a force to each atom @@ -246,6 +247,7 @@ accelerated styles exist. * :doc:`manifoldforce ` - restrain atoms to a manifold during minimization * :doc:`mdi/engine ` - connect LAMMPS to external programs via the MolSSI Driver Interface (MDI) * :doc:`meso/move ` - move mesoscopic SPH/SDPD particles in a prescribed fashion +* :doc:`mol/swap ` - Monte Carlo atom type swapping with a molecule * :doc:`momentum ` - zero the linear and/or angular momentum of a group of atoms * :doc:`momentum/chunk ` - zero the linear and/or angular momentum of a chunk of atoms * :doc:`move ` - move atoms in a prescribed fashion diff --git a/doc/src/fix_acks2_reaxff.rst b/doc/src/fix_acks2_reaxff.rst new file mode 100644 index 0000000000..b555f77a66 --- /dev/null +++ b/doc/src/fix_acks2_reaxff.rst @@ -0,0 +1,118 @@ +.. index:: fix acks2/reaxff +.. index:: fix acks2/reaxff/kk + +fix acks2/reaxff command +======================== + +Accelerator Variants: *acks2/reaxff/kk* + +Syntax +"""""" + +.. parsed-literal:: + + fix ID group-ID acks2/reaxff Nevery cutlo cuthi tolerance params args + +* ID, group-ID are documented in :doc:`fix ` command +* acks2/reaxff = style name of this fix command +* Nevery = perform ACKS2 every this many steps +* cutlo,cuthi = lo and hi cutoff for Taper radius +* tolerance = precision to which charges will be equilibrated +* params = reaxff or a filename + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff + fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 param.acks2 + +Description +""""""""""" + +Perform the atom-condensed Kohn-Sham DFT to second order (ACKS2) charge +equilibration method as described in :ref:`(Verstraelen) `. +ACKS2 impedes unphysical long-range charge transfer sometimes seen with +QEq (e.g. for dissociation of molecules), at increased computational +cost. It is typically used in conjunction with the ReaxFF force field +model as implemented in the :doc:`pair_style reaxff ` +command, but it can be used with any potential in LAMMPS, so long as it +defines and uses charges on each atom. For more technical details about +the charge equilibration performed by fix acks2/reaxff, see the +:ref:`(O'Hearn) ` paper. + +The ACKS2 method minimizes the electrostatic energy of the system by +adjusting the partial charge on individual atoms based on interactions +with their neighbors. It requires some parameters for each atom type. +If the *params* setting above is the word "reaxff", then these are +extracted from the :doc:`pair_style reaxff ` command and +the ReaxFF force field file it reads in. If a file name is specified +for *params*\ , then the parameters are taken from the specified file +and the file must contain one line for each atom type. The latter form +must be used when performing QeQ with a non-ReaxFF potential. The lines +should be formatted as follows: + +.. parsed-literal:: + + bond_softness + itype chi eta gamma bcut + +where the first line is the global parameter *bond_softness*. The +remaining 1 to Ntypes lines include *itype*, the atom type from 1 to +Ntypes, *chi*, the electronegativity in eV, *eta*, the self-Coulomb +potential in eV, *gamma*, the valence orbital exponent, and *bcut*, the +bond cutoff distance. Note that these 4 quantities are also in the +ReaxFF potential file, except that eta is defined here as twice the eta +value in the ReaxFF file. Note that unlike the rest of LAMMPS, the units +of this fix are hard-coded to be A, eV, and electronic charge. + +**Restart, fix_modify, output, run start/stop, minimize info:** + +No information about this fix is written to :doc:`binary restart files +`. No global scalar or vector or per-atom quantities are +stored by this fix for access by various :doc:`output commands +`. No parameter of this fix can be used with the +*start/stop* keywords of the :doc:`run ` command. + +This fix is invoked during :doc:`energy minimization `. + +---------- + +.. include:: accel_styles.rst + +---------- + +Restrictions +"""""""""""" + +This fix is part of the REAXFF package. It is only enabled if LAMMPS +was built with that package. See the :doc:`Build package +` doc page for more info. + +This fix does not correctly handle interactions involving multiple +periodic images of the same atom. Hence, it should not be used for +periodic cell dimensions less than 10 angstroms. + +This fix may be used in combination with :doc:`fix efield ` +and will apply the external electric field during charge equilibration, +but there may be only one fix efield instance used, it may only use a +constant electric field, and the electric field vector may only have +components in non-periodic directions. + +Related commands +"""""""""""""""" + +:doc:`pair_style reaxff `, :doc:`fix qeq/reaxff ` + +**Default:** none + +---------- + +.. _O'Hearn: + +**(O'Hearn)** O'Hearn, Alperen, Aktulga, SIAM J. Sci. Comput., 42(1), C1-C22 (2020). + +.. _Verstraelen: + +**(Verstraelen)** Verstraelen, Ayers, Speybroeck, Waroquier, J. Chem. Phys. 138, 074108 (2013). diff --git a/doc/src/fix_atom_swap.rst b/doc/src/fix_atom_swap.rst index eb56572db7..8a81e32818 100644 --- a/doc/src/fix_atom_swap.rst +++ b/doc/src/fix_atom_swap.rst @@ -73,51 +73,51 @@ is the same after the swap as it was before the swap, even though the atom masses have changed. The *semi-grand* keyword can be set to *yes* to switch to the -semi-grand canonical ensemble as discussed in :ref:`(Sadigh) `. This -means that the total number of each particle type does not need to be -conserved. The default is *no*, which means that the only kind of swap -allowed exchanges an atom of one type with an atom of a different -given type. In other words, the relative mole fractions of the swapped -atoms remains constant. Whereas in the semi-grand canonical ensemble, -the composition of the system can change. Note that when using -*semi-grand*, atoms in the fix group whose type is not listed -in the *types* keyword are ineligible for attempted -conversion. An attempt is made to switch -the selected atom (if eligible) to one of the other listed types -with equal probability. Acceptance of each attempt depends upon the Metropolis criterion. +semi-grand canonical ensemble as discussed in :ref:`(Sadigh) +`. This means that the total number of each particle type does +not need to be conserved. The default is *no*, which means that the +only kind of swap allowed exchanges an atom of one type with an atom +of a different given type. In other words, the relative mole fractions +of the swapped atoms remains constant. Whereas in the semi-grand +canonical ensemble, the composition of the system can change. Note +that when using *semi-grand*, atoms in the fix group whose type is not +listed in the *types* keyword are ineligible for attempted +conversion. An attempt is made to switch the selected atom (if +eligible) to one of the other listed types with equal +probability. Acceptance of each attempt depends upon the Metropolis +criterion. -The *mu* keyword allows users to specify chemical -potentials. This is required and allowed only when using *semi-grand*\ . -All chemical potentials are absolute, so there is one for -each swap type listed following the *types* keyword. -In semi-grand canonical ensemble simulations the chemical composition -of the system is controlled by the difference in these values. So -shifting all values by a constant amount will have no effect -on the simulation. +The *mu* keyword allows users to specify chemical potentials. This is +required and allowed only when using *semi-grand*\ . All chemical +potentials are absolute, so there is one for each swap type listed +following the *types* keyword. In semi-grand canonical ensemble +simulations the chemical composition of the system is controlled by +the difference in these values. So shifting all values by a constant +amount will have no effect on the simulation. This command may optionally use the *region* keyword to define swap volume. The specified region must have been previously defined with a -:doc:`region ` command. It must be defined with side = *in*\ . -Swap attempts occur only between atoms that are both within the +:doc:`region ` command. It must be defined with side = *in*\ +. Swap attempts occur only between atoms that are both within the specified region. Swaps are not otherwise attempted. You should ensure you do not swap atoms belonging to a molecule, or -LAMMPS will soon generate an error when it tries to find those atoms. -LAMMPS will warn you if any of the atoms eligible for swapping have a -non-zero molecule ID, but does not check for this at the time of +LAMMPS will eventually generate an error when it tries to find those +atoms. LAMMPS will warn you if any of the atoms eligible for swapping +have a non-zero molecule ID, but does not check for this at the time of swapping. If not using *semi-grand* this fix checks to ensure all atoms of the given types have the same atomic charge. LAMMPS does not enforce this -in general, but it is needed for this fix to simplify the -swapping procedure. Successful swaps will swap the atom type and charge -of the swapped atoms. Conversely, when using *semi-grand*, it is assumed that all the atom -types involved in switches have the same charge. Otherwise, charge -would not be conserved. As a consequence, no checks on atomic charges are -performed, and successful switches update the atom type but not the -atom charge. While it is possible to use *semi-grand* with groups of -atoms that have different charges, these charges will not be changed when the -atom types change. +in general, but it is needed for this fix to simplify the swapping +procedure. Successful swaps will swap the atom type and charge of the +swapped atoms. Conversely, when using *semi-grand*, it is assumed that +all the atom types involved in switches have the same +charge. Otherwise, charge would not be conserved. As a consequence, no +checks on atomic charges are performed, and successful switches update +the atom type but not the atom charge. While it is possible to use +*semi-grand* with groups of atoms that have different charges, these +charges will not be changed when the atom types change. Since this fix computes total potential energies before and after proposed swaps, so even complicated potential energy calculations are @@ -133,23 +133,24 @@ OK, including the following: Some fixes have an associated potential energy. Examples of such fixes include: :doc:`efield `, :doc:`gravity `, :doc:`addforce `, :doc:`langevin `, -:doc:`restrain `, :doc:`temp/berendsen `, -:doc:`temp/rescale `, and :doc:`wall fixes `. -For that energy to be included in the total potential energy of the -system (the quantity used when performing GCMC moves), -you MUST enable the :doc:`fix_modify ` *energy* option for -that fix. The doc pages for individual :doc:`fix ` commands -specify if this should be done. +:doc:`restrain `, :doc:`temp/berendsen +`, :doc:`temp/rescale `, and +:doc:`wall fixes `. For that energy to be included in the +total potential energy of the system (the quantity used when +performing GCMC moves), you MUST enable the :doc:`fix_modify +` *energy* option for that fix. The doc pages for +individual :doc:`fix ` commands specify if this should be done. Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -This fix writes the state of the fix to :doc:`binary restart files `. This includes information about the random -number generator seed, the next timestep for MC exchanges, the number -of exchange attempts and successes etc. See -the :doc:`read_restart ` command for info on how to -re-specify a fix in an input script that reads a restart file, so that -the operation of the fix continues in an uninterrupted fashion. +This fix writes the state of the fix to :doc:`binary restart files +`. This includes information about the random number +generator seed, the next timestep for MC exchanges, the number of +exchange attempts and successes etc. See the :doc:`read_restart +` command for info on how to re-specify a fix in an +input script that reads a restart file, so that the operation of the +fix continues in an uninterrupted fashion. .. note:: @@ -165,12 +166,13 @@ by various :doc:`output commands `. The vector values are the following global cumulative quantities: * 1 = swap attempts -* 2 = swap successes +* 2 = swap accepts The vector values calculated by this fix are "extensive". No parameter of this fix can be used with the *start/stop* keywords of -the :doc:`run ` command. This fix is not invoked during :doc:`energy minimization `. +the :doc:`run ` command. This fix is not invoked during +:doc:`energy minimization `. Restrictions """""""""""" @@ -184,7 +186,8 @@ Related commands :doc:`fix nvt `, :doc:`neighbor `, :doc:`fix deposit `, :doc:`fix evaporate `, -:doc:`delete_atoms `, :doc:`fix gcmc ` +:doc:`delete_atoms `, :doc:`fix gcmc `, +:doc:`fix mol/swap ` Default """"""" diff --git a/doc/src/fix_mol_swap.rst b/doc/src/fix_mol_swap.rst new file mode 100644 index 0000000000..737536fa0d --- /dev/null +++ b/doc/src/fix_mol_swap.rst @@ -0,0 +1,170 @@ +.. index:: fix mol/swap + +fix mol/swap command +===================== + +Syntax +"""""" + +.. parsed-literal:: + + fix ID group-ID mol/swap N X itype jtype seed T keyword value ... + +* ID, group-ID are documented in :doc:`fix ` command +* atom/swap = style name of this fix command +* N = invoke this fix every N steps +* X = number of swaps to attempt every N steps +* itype,jtype = two atom types to swap with each other +* seed = random # seed (positive integer) +* T = scaling temperature of the MC swaps (temperature units) +* zero or more keyword/value pairs may be appended to args +* keyword = *ke* + + .. parsed-literal:: + + *ke* value = *no* or *yes* + *no* = no conservation of kinetic energy after atom swaps + *yes* = kinetic energy is conserved after atom swaps + +Examples +"""""""" + +.. code-block:: LAMMPS + + fix 2 all mol/swap 100 1 2 3 29494 300.0 ke no + fix mySwap fluid mol/swap 500 10 1 2 482798 1.0 + +Description +""""""""""" + +This fix performs Monte Carlo swaps of two specified atom types within +a randomly selected molecule. Two possible use cases are as follows. + +First, consider a mixture of some molecules with atoms of itype and +other molecules with atoms of jtype. The fix will select a random +molecule and attempt to swap all the itype atoms to jtype for the +first kind of molecule, or all the jtype atoms to itype for the second +kind. Because the swap will only take place if it is energetically +favorable, the fix can be used to determine the miscibility of 2 +different kinds of molecules much more quickly than just dynamics +would do it. + +Second, consider diblock co-polymers with two types of monomers itype +and jtype. The fix will select a random molecule and attempt to do a +itype <--> jtype swap of all those monomers within the molecule. Thus +the fix can be used to find the energetically favorable fractions of +two flavors of diblock co-polymers. + +Intra-molecular swaps of atom types are attempted every N timesteps. On +that timestep, X swaps are attempted. For each attempt a single +molecule ID is randomly selected. The range of possible molecule IDs +from loID to hiID is pre-computed before each run begins. The +loID/hiID is set for the molecule with the smallest/largest ID which +has any itype or jtype atoms in it. Note that if you define a system +with many molecule IDs between loID and hiID which have no itype or +jtype atoms, then the fix will be inefficient at performing swaps. +Also note that if atoms with molecule ID = 0 exist, they are not +considered molecules by this fix; they are assumed to be solvent atoms +or molecules. + +Candidate atoms for swapping must also be in the fix group. Atoms +within the selected molecule which are not itype or jtype are ignored. + +When an atom is swapped from itype to jtype (or vice versa), if +charges are defined, the charge values for itype versus jtype atoms +are also swapped. This requires that all itype atoms in the system +have the same charge value. Likewise all jtype atoms in the system +must have the same charge value. If this is not the case, LAMMPS +issues a warning that it cannot swap charge values. + +If the *ke* keyword is set to yes, which is the default, and the +masses of itype and jtype atoms are different, then when a swap +occurs, the velocity of the swapped atom is rescaled by the sqrt of +the mass ratio, so as to conserve the kinetic energy of the atom. + +---------- + +The potential energy of the entire system is computed before and after +each swap is performed within a single molecule. The specified +temperature T is used in the Metropolis criterion to accept or reject +the attempted swap. If the swap is rejected all swapped values are +reversed. + +The potential energy calculations can include systems and models with +the following features: + +* manybody pair styles, including EAM +* hybrid pair styles +* long-range electrostatics (kspace) +* triclinic systems +* potential energy contributions from other fixes + +For the last bullet point, fixes can have an associated potential +energy. Examples of such fixes include: :doc:`efield `, +:doc:`gravity `, :doc:`addforce `, +:doc:`langevin `, :doc:`restrain `, +:doc:`temp/berendsen `, :doc:`temp/rescale +`, and :doc:`wall fixes `. For that +energy to be included in the total potential energy of the system (the +quantity used for the swap accept/reject decision), you MUST enable +the :doc:`fix_modify ` *energy* option for that fix. The +doc pages for individual :doc:`fix ` commands specify if this +should be done. + +.. note:: + + One comment on computational efficiency. If the cutoff lengths + defined for the pair style are different for itype versus jtype + atoms (for any of their interactions with any other atom type), then + a new neighbor list needs to be generated for every attempted swap. + This is potentially expensive if N is small or X is large. + +Restart, fix_modify, output, run start/stop, minimize info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +This fix writes the state of the fix to :doc:`binary restart files +`. This includes information about the random number +generator seed, the next timestep for MC exchanges, the number of +exchange attempts and successes etc. See the :doc:`read_restart +` command for info on how to re-specify a fix in an +input script that reads a restart file, so that the operation of the +fix continues in an uninterrupted fashion. + +.. note:: + + For this to work correctly, the timestep must **not** be changed + after reading the restart with :doc:`reset_timestep `. + The fix will try to detect it and stop with an error. + +None of the :doc:`fix_modify ` options are relevant to this +fix. + +This fix computes a global vector of length 2, which can be accessed +by various :doc:`output commands `. The vector values are +the following global cumulative quantities: + +* 1 = swap attempts +* 2 = swap accepts + +The vector values calculated by this fix are "extensive". + +No parameter of this fix can be used with the *start/stop* keywords of +the :doc:`run ` command. This fix is not invoked during +:doc:`energy minimization `. + +Restrictions +"""""""""""" + +This fix is part of the MC package. It is only enabled if LAMMPS was +built with that package. See the :doc:`Build package ` +doc page for more info. + +Related commands +"""""""""""""""" + +:doc:`fix atom/swap `, :doc:`fix gcmc ` + +Default +""""""" + +The option default is ke = yes. diff --git a/doc/src/fix_qeq.rst b/doc/src/fix_qeq.rst index eab35391b5..f4e4a2a5cc 100644 --- a/doc/src/fix_qeq.rst +++ b/doc/src/fix_qeq.rst @@ -230,7 +230,10 @@ These fixes are part of the QEQ package. They are only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. -The qeq fixes are not compatible with the GPU and USER-INTEL packages. +These qeq fixes are not compatible with the GPU and USER-INTEL packages. + +These qeq fixes will ignore electric field contributions from +:doc:`fix efield `. Related commands """""""""""""""" diff --git a/doc/src/fix_qeq_reaxff.rst b/doc/src/fix_qeq_reaxff.rst index ada9e22ed7..9c9dce7f89 100644 --- a/doc/src/fix_qeq_reaxff.rst +++ b/doc/src/fix_qeq_reaxff.rst @@ -116,6 +116,12 @@ This fix does not correctly handle interactions involving multiple periodic images of the same atom. Hence, it should not be used for periodic cell dimensions less than 10 angstroms. +This fix may be used in combination with :doc:`fix efield ` +and will apply the external electric field during charge equilibration, +but there may be only one fix efield instance used, it may only use a +constant electric field, and the electric field vector may only have +components in non-periodic directions. + Related commands """""""""""""""" diff --git a/doc/src/pair_reaxff.rst b/doc/src/pair_reaxff.rst index a3a9c81cb8..a2aa0f356d 100644 --- a/doc/src/pair_reaxff.rst +++ b/doc/src/pair_reaxff.rst @@ -20,7 +20,7 @@ Syntax .. parsed-literal:: keyword = *checkqeq* or *lgvdw* or *safezone* or *mincap* or *minhbonds* - *checkqeq* value = *yes* or *no* = whether or not to require qeq/reaxff fix + *checkqeq* value = *yes* or *no* = whether or not to require qeq/reaxff or acks2/reaxff fix *enobonds* value = *yes* or *no* = whether or not to tally energy of atoms with no bonds *lgvdw* value = *yes* or *no* = whether or not to use a low gradient vdW correction *safezone* = factor used for array allocation @@ -119,7 +119,8 @@ The ReaxFF parameter files provided were created using a charge equilibration (QEq) model for handling the electrostatic interactions. Therefore, by default, LAMMPS requires that either the :doc:`fix qeq/reaxff ` or the -:doc:`fix qeq/shielded ` command be used with +:doc:`fix qeq/shielded ` or :doc:`fix acks2/reaxff ` +command be used with *pair_style reaxff* when simulating a ReaxFF model, to equilibrate the charges each timestep. @@ -128,7 +129,8 @@ for the QEq fixes, allowing a simulation to be run without charge equilibration. In this case, the static charges you assign to each atom will be used for computing the electrostatic interactions in the system. See the :doc:`fix qeq/reaxff ` or -:doc:`fix qeq/shielded ` command documentation for more details. +:doc:`fix qeq/shielded ` or :doc:`fix acks2/reaxff ` +command documentation for more details. Using the optional keyword *lgvdw* with the value *yes* turns on the low-gradient correction of ReaxFF for long-range London Dispersion, @@ -352,7 +354,8 @@ Related commands """""""""""""""" :doc:`pair_coeff `, :doc:`fix qeq/reaxff `, -:doc:`fix reaxff/bonds `, :doc:`fix reaxff/species ` +:doc:`fix acks2/reaxff `, :doc:`fix reaxff/bonds `, +:doc:`fix reaxff/species ` Default """"""" diff --git a/doc/src/plugin.rst b/doc/src/plugin.rst index 7995ddc369..5372dffc83 100644 --- a/doc/src/plugin.rst +++ b/doc/src/plugin.rst @@ -65,10 +65,8 @@ only enabled if LAMMPS was built with that package. See the :doc:`Build package ` page for more info. Plugins are not available on Windows. -For the loading of plugins to work the LAMMPS library must be -:ref:`compiled as a shared library `. If plugins -access functions or classes from a package, LAMMPS must have -been compiled with that package included. +If plugins access functions or classes from a package, LAMMPS must +have been compiled with that package included. Plugins are dependent on the LAMMPS binary interface (ABI) and particularly the MPI library used. So they are not guaranteed diff --git a/doc/utils/check-styles.py b/doc/utils/check-styles.py index 6c1fd6dd35..2ad75aeeda 100755 --- a/doc/utils/check-styles.py +++ b/doc/utils/check-styles.py @@ -254,7 +254,7 @@ for command_type, entries in index.items(): print("Total number of style index entries:", total_index) -skip_fix = ('python', 'NEIGH_HISTORY/omp','qeq/reax','reax/c/bonds','reax/c/species') +skip_fix = ('python', 'NEIGH_HISTORY/omp','acks2/reax','qeq/reax','reax/c/bonds','reax/c/species') skip_pair = ('meam/c','lj/sf','reax/c') counter = 0 @@ -282,7 +282,7 @@ if counter: counter = 0 counter += check_style_index("compute", compute, index["compute"]) -counter += check_style_index("fix", fix, index["fix"], skip=['python','qeq/reax','reax/c/bonds','reax/c/species']) +counter += check_style_index("fix", fix, index["fix"], skip=['python','acks2/reax','qeq/reax','reax/c/bonds','reax/c/species']) counter += check_style_index("angle_style", angle, index["angle_style"]) counter += check_style_index("bond_style", bond, index["bond_style"]) counter += check_style_index("dihedral_style", dihedral, index["dihedral_style"]) diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index ccc321c7e0..d295767519 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -19,6 +19,7 @@ accuracies ach ackland Ackland +acks acolor acos Acta @@ -77,6 +78,7 @@ allocators allosws AlO Alonso +Alperen alphak alphashrink amap @@ -685,6 +687,7 @@ diagonalized diagonalizers diagonalizing Diallo +diblock Dickel diel differentiable @@ -1254,6 +1257,7 @@ hbond hcp hdnnp HDNNP +Hearn heatconduction Hebbeker Hebenstreit @@ -1280,6 +1284,7 @@ hgrid hhmrr Hibbs Higdon +hiID Hijazi Hilger Hinestrosa @@ -1776,6 +1781,7 @@ Loewen logfile logfreq logicals +loID Lomdahl Lond lookup @@ -3080,6 +3086,7 @@ Spearot specular spellcheck Spellmeyer +Speybroeck sph SPH Spickermann @@ -3493,6 +3500,7 @@ Verlag verlet Verlet versa +Verstraelen ves vflag vhi @@ -3559,6 +3567,7 @@ vzcm vzi Waals Wadley +Waroquier wallstyle walltime Waltham diff --git a/examples/MC/README b/examples/MC-LOOP/README similarity index 100% rename from examples/MC/README rename to examples/MC-LOOP/README diff --git a/examples/MC/in.mc b/examples/MC-LOOP/in.mc similarity index 100% rename from examples/MC/in.mc rename to examples/MC-LOOP/in.mc diff --git a/examples/MC/log.13Oct16.mc.g++.1 b/examples/MC-LOOP/log.13Oct16.mc.g++.1 similarity index 100% rename from examples/MC/log.13Oct16.mc.g++.1 rename to examples/MC-LOOP/log.13Oct16.mc.g++.1 diff --git a/examples/README b/examples/README index 76ddf77498..c398579cde 100644 --- a/examples/README +++ b/examples/README @@ -75,7 +75,6 @@ eim: NaCl using the EIM potential ellipse: ellipsoidal particles in spherical solvent, 2d system flow: Couette and Poiseuille flow in a 2d channel friction: frictional contact of spherical asperities between 2d surfaces -gcmc: Grand Canonical MC with fix gcmc, Widom insertion with fix widom gjf: use of fix langevin Gronbech-Jensen/Farago option granregion: use of fix wall/region/gran as boundary on granular particles hugoniostat: Hugoniostat shock dynamics @@ -83,6 +82,7 @@ hyper: global and local hyperdynamics of diffusion on Pt surface indent: spherical indenter into a 2d solid kim: use of potentials in Knowledge Base for Interatomic Models (KIM) latte: use of LATTE density-functional tight-binding quantum code +mc: MC package models: GCMC, Widom, fix mol/swap meam: MEAM test for SiC and shear (same as shear examples) melt: rapid melt of 3d LJ system message: client/server coupling of 2 codes @@ -167,7 +167,7 @@ The KAPPA directory has example scripts for computing the thermal conductivity (kappa) of a LJ liquid using 5 different methods. See the KAPPA/README file for more info. -The MC directory has an example script for using LAMMPS as an +The MC-LOOP directory has an example script for using LAMMPS as an energy-evaluation engine in a iterative Monte Carlo energy-relaxation loop. diff --git a/examples/gcmc/CO2.txt b/examples/mc/CO2.txt similarity index 100% rename from examples/gcmc/CO2.txt rename to examples/mc/CO2.txt diff --git a/examples/gcmc/H2O.txt b/examples/mc/H2O.txt similarity index 100% rename from examples/gcmc/H2O.txt rename to examples/mc/H2O.txt diff --git a/examples/mc/data.bead b/examples/mc/data.bead new file mode 100644 index 0000000000..56b30fa3f6 --- /dev/null +++ b/examples/mc/data.bead @@ -0,0 +1,11733 @@ +LAMMPS Description + + 4000 atoms + 3900 bonds + 3800 angles + 0 dihedrals + 0 impropers + + 2 atom types + 1 bond types + 1 angle types + + -8.21157000000000 8.21157000000000 xlo xhi + -8.21157000000000 8.21157000000000 ylo yhi + -8.21157000000000 8.21157000000000 zlo zhi + +Masses + + 1 1.0 + 2 1.0 + +Bond Coeffs + + 1 30.0 1.5 1.0 1.0 + +Atoms + + 1 1 1 -2.9103 -2.6338 -5.5800 0 0 0 + 2 1 1 -3.3673 -2.5540 -6.4677 0 0 0 + 3 1 1 -3.7032 -1.7756 -6.9465 0 0 0 + 4 1 1 -3.7288 -1.6133 -5.9116 0 0 0 + 5 1 1 -3.9173 -2.4798 -5.4545 0 0 0 + 6 1 1 -4.2082 -2.9678 -4.6977 0 0 0 + 7 1 1 -5.0665 -3.3630 -4.3797 0 0 0 + 8 1 1 -5.6059 -2.8334 -3.7675 0 0 0 + 9 1 1 -4.7453 -2.5468 -3.5426 0 0 0 + 10 1 1 -3.9543 -2.2812 -3.1107 0 0 0 + 11 1 1 -3.1586 -2.0408 -3.4687 0 0 0 + 12 1 1 -2.6736 -1.3359 -3.1965 0 0 0 + 13 1 1 -2.1194 -0.7114 -2.8051 0 0 0 + 14 1 1 -2.2847 -1.1385 -1.9611 0 0 0 + 15 1 1 -1.7850 -1.5842 -1.3712 0 0 0 + 16 1 1 -1.4364 -1.6803 -0.5220 0 0 0 + 17 1 1 -1.3507 -1.5469 0.4084 0 0 0 + 18 1 1 -1.7319 -1.6032 1.3034 0 0 0 + 19 1 1 -2.4172 -1.4765 1.9525 0 0 0 + 20 1 1 -3.2394 -1.0263 1.7041 0 0 0 + 21 1 1 -3.0859 -0.2908 2.3477 0 0 0 + 22 1 1 -3.7945 -0.0892 1.7353 0 0 0 + 23 1 1 -4.2861 -0.8912 1.4840 0 0 0 + 24 1 1 -4.5074 -0.2849 0.7346 0 0 0 + 25 1 1 -5.0793 0.0734 0.0605 0 0 0 + 26 1 1 -5.6653 0.4743 -0.5270 0 0 0 + 27 1 1 -6.5731 0.3491 -0.8646 0 0 0 + 28 1 1 -7.4484 -0.0013 -0.9089 0 0 0 + 29 1 1 -7.9598 -0.1126 -0.1493 0 0 0 + 30 1 1 7.6748 0.2203 0.3118 -1 0 0 + 31 1 1 6.7844 0.6283 0.2314 -1 0 0 + 32 1 1 6.1059 1.3011 0.3738 -1 0 0 + 33 1 1 5.2569 1.4695 0.8677 -1 0 0 + 34 1 1 4.6223 0.7851 0.9307 -1 0 0 + 35 1 1 4.8526 -0.1101 0.7663 -1 0 0 + 36 1 1 4.8830 -0.7657 0.1001 -1 0 0 + 37 1 1 4.5724 -1.2504 -0.6660 -1 0 0 + 38 1 1 4.0212 -2.0601 -0.9810 -1 0 0 + 39 1 1 3.8614 -2.7681 -1.7166 -1 0 0 + 40 1 1 3.7867 -3.3077 -0.8664 -1 0 0 + 41 2 2 3.4551 -1.0865 -3.8797 0 0 0 + 42 2 2 3.4634 -0.2905 -4.4171 0 0 0 + 43 2 2 3.3450 0.3311 -5.1842 0 0 0 + 44 2 2 3.1350 0.5569 -6.1197 0 0 0 + 45 2 2 3.0083 1.0587 -7.0003 0 0 0 + 46 2 2 3.2088 0.7640 -7.9587 0 0 0 + 47 2 2 3.1971 0.6936 7.5232 0 0 -1 + 48 2 2 2.5881 0.5624 6.8757 0 0 -1 + 49 2 2 1.6330 0.5113 7.0591 0 0 -1 + 50 2 2 1.5102 -0.0762 7.7949 0 0 -1 + 51 2 2 1.1030 0.0542 -7.6565 0 0 0 + 52 2 2 0.9357 0.6439 -6.9262 0 0 0 + 53 2 2 1.4333 1.4139 -7.0550 0 0 0 + 54 2 2 2.1274 1.7216 -7.5156 0 0 0 + 55 2 2 2.6898 1.5840 8.0474 0 0 -1 + 56 2 2 2.9524 2.2160 7.3232 0 0 -1 + 57 2 2 3.4174 3.0386 7.0594 0 0 -1 + 58 2 2 3.6172 3.4920 6.2838 0 0 -1 + 59 2 2 3.4249 4.0656 5.5761 0 0 -1 + 60 2 2 3.6243 4.8742 5.0226 0 0 -1 + 61 2 2 3.2361 5.7505 5.1372 0 0 -1 + 62 2 2 3.7763 6.2672 4.5804 0 0 -1 + 63 2 2 4.6843 6.4442 4.4298 0 0 -1 + 64 2 2 5.4346 7.0470 4.5256 0 0 -1 + 65 2 2 5.8473 7.9466 4.4979 0 0 -1 + 66 2 2 5.0667 8.0371 3.9286 0 0 -1 + 67 2 2 4.4694 7.3492 3.7072 0 0 -1 + 68 2 2 3.7871 7.9939 3.8058 0 0 -1 + 69 2 2 3.2044 -8.0376 3.1640 0 1 -1 + 70 2 2 3.8676 -7.3417 3.1638 0 1 -1 + 71 2 2 3.1740 -7.0258 3.8617 0 1 -1 + 72 2 2 2.6229 -6.8235 4.5657 0 1 -1 + 73 2 2 1.8737 -6.2882 4.9562 0 1 -1 + 74 2 2 1.0941 -5.7874 5.2434 0 1 -1 + 75 2 2 0.6263 -5.6822 4.2904 0 1 -1 + 76 2 2 1.5630 -5.4597 4.1946 0 1 -1 + 77 2 2 1.7525 -4.5454 4.3691 0 1 -1 + 78 2 2 2.3296 -4.0096 3.8006 0 1 -1 + 79 2 2 2.8806 -3.3547 4.2242 0 1 -1 + 80 2 2 3.1860 -2.7136 3.5227 0 1 -1 + 81 3 1 -4.5548 5.7485 6.0216 0 0 0 + 82 3 1 -4.1555 6.5480 5.6687 0 0 0 + 83 3 1 -4.0973 6.9142 4.8681 0 0 0 + 84 3 1 -4.9105 7.0901 4.3756 0 0 0 + 85 3 1 -4.4207 6.3159 4.0682 0 0 0 + 86 3 1 -4.7397 5.4672 3.9007 0 0 0 + 87 3 1 -4.6912 4.8125 3.1822 0 0 0 + 88 3 1 -4.1776 3.9883 3.1806 0 0 0 + 89 3 1 -4.1307 4.1924 2.2221 0 0 0 + 90 3 1 -4.8933 3.6825 1.8270 0 0 0 + 91 3 1 -4.8665 2.8420 1.4647 0 0 0 + 92 3 1 -5.3054 2.5407 2.3089 0 0 0 + 93 3 1 -4.6398 1.9524 1.9588 0 0 0 + 94 3 1 -4.7860 1.9788 2.9090 0 0 0 + 95 3 1 -4.1572 1.3286 3.4270 0 0 0 + 96 3 1 -4.1322 0.5902 3.9949 0 0 0 + 97 3 1 -3.8486 0.7777 4.9030 0 0 0 + 98 3 1 -3.1679 0.6448 5.6278 0 0 0 + 99 3 1 -3.7431 1.4402 5.6819 0 0 0 + 100 3 1 -3.9513 1.7463 6.5838 0 0 0 + 101 3 1 -4.4751 2.4318 6.9534 0 0 0 + 102 3 1 -4.7871 1.5760 7.4224 0 0 0 + 103 3 1 -5.0796 0.8459 7.9811 0 0 0 + 104 3 1 -4.7904 0.5863 -7.6006 0 0 1 + 105 3 1 -4.5790 -0.1461 -7.0952 0 0 1 + 106 3 1 -4.8318 -1.0000 -7.4320 0 0 1 + 107 3 1 -5.2877 -1.7175 -7.9583 0 0 1 + 108 3 1 -5.1173 -1.8660 7.5130 0 0 0 + 109 3 1 -4.7000 -1.3583 6.7775 0 0 0 + 110 3 1 -5.5551 -0.9660 6.6824 0 0 0 + 111 3 1 -6.3552 -0.4859 6.4167 0 0 0 + 112 3 1 -7.2893 -0.2325 6.3530 0 0 0 + 113 3 1 -8.1166 -0.0576 6.7017 0 0 0 + 114 3 1 7.9537 -0.8068 7.1081 -1 0 0 + 115 3 1 7.8094 -1.4160 7.7817 -1 0 0 + 116 3 1 7.6663 -1.3428 -7.6974 -1 0 1 + 117 3 1 -8.0615 -1.0159 -7.1172 0 0 1 + 118 3 1 -8.0340 -0.0766 -7.0752 0 0 1 + 119 3 1 -7.7311 0.5241 -7.7389 0 0 1 + 120 3 1 -6.9535 -0.0280 -7.5954 0 0 1 + 121 4 2 -2.5059 -5.6993 -1.2716 0 0 0 + 122 4 2 -2.3664 -6.0973 -0.4090 0 0 0 + 123 4 2 -1.4970 -6.5861 -0.2642 0 0 0 + 124 4 2 -0.7174 -6.9509 0.1025 0 0 0 + 125 4 2 0.0817 -7.5289 0.0050 0 0 0 + 126 4 2 0.2275 -6.6250 0.4168 0 0 0 + 127 4 2 0.3005 -5.7404 0.8929 0 0 0 + 128 4 2 -0.1107 -6.3155 1.6182 0 0 0 + 129 4 2 -0.8772 -6.4103 1.1087 0 0 0 + 130 4 2 -0.7684 -5.4467 1.0151 0 0 0 + 131 4 2 -0.4349 -4.5241 0.9512 0 0 0 + 132 4 2 -0.1952 -4.0553 0.1461 0 0 0 + 133 4 2 -0.4295 -3.9024 -0.7809 0 0 0 + 134 4 2 -1.1228 -4.4615 -0.3919 0 0 0 + 135 4 2 -1.0690 -5.3817 -0.8239 0 0 0 + 136 4 2 -1.5786 -5.9305 -1.4779 0 0 0 + 137 4 2 -0.9972 -6.6286 -1.8603 0 0 0 + 138 4 2 -0.9811 -6.3735 -2.7604 0 0 0 + 139 4 2 -1.7257 -5.9456 -3.2078 0 0 0 + 140 4 2 -2.5744 -5.4172 -3.2036 0 0 0 + 141 4 2 -3.2106 -4.8160 -2.8782 0 0 0 + 142 4 2 -3.9261 -4.7724 -3.4799 0 0 0 + 143 4 2 -3.9331 -5.6655 -3.1279 0 0 0 + 144 4 2 -3.6121 -6.5065 -3.5012 0 0 0 + 145 4 2 -3.5359 -7.4241 -3.3480 0 0 0 + 146 4 2 -4.4247 -7.8027 -3.5339 0 0 0 + 147 4 2 -4.3956 -8.1393 -4.4395 0 0 0 + 148 4 2 -4.5835 -7.7408 -5.2598 0 0 0 + 149 4 2 -3.6430 -8.0019 -5.3640 0 0 0 + 150 4 2 -3.1537 -7.8070 -4.5653 0 0 0 + 151 4 2 -2.5874 -7.4266 -3.8996 0 0 0 + 152 4 2 -2.1033 -6.5176 -4.0259 0 0 0 + 153 4 2 -2.2477 -5.6546 -4.1995 0 0 0 + 154 4 2 -2.0494 -4.6562 -4.0474 0 0 0 + 155 4 2 -1.5988 -4.1080 -4.6447 0 0 0 + 156 4 2 -1.4496 -3.3936 -5.1841 0 0 0 + 157 4 2 -1.2606 -2.4357 -5.3465 0 0 0 + 158 4 2 -0.9591 -1.9438 -4.5710 0 0 0 + 159 4 2 -0.4858 -1.2616 -4.1253 0 0 0 + 160 4 2 0.4164 -1.0237 -4.1183 0 0 0 + 161 5 1 -0.1440 7.2364 -5.7227 0 0 0 + 162 5 1 0.6558 6.9783 -6.1262 0 0 0 + 163 5 1 1.1111 6.1343 -5.9811 0 0 0 + 164 5 1 1.0226 5.7997 -5.1022 0 0 0 + 165 5 1 0.3941 6.3700 -4.6712 0 0 0 + 166 5 1 1.1217 6.9317 -4.9989 0 0 0 + 167 5 1 0.7755 7.7592 -5.3428 0 0 0 + 168 5 1 0.6448 -7.7669 -5.7142 0 1 0 + 169 5 1 0.1854 -7.1895 -6.2835 0 1 0 + 170 5 1 -0.5676 -7.4706 -6.8027 0 1 0 + 171 5 1 -1.1520 -7.8542 -7.5021 0 1 0 + 172 5 1 -1.9454 -7.4317 -7.4158 0 1 0 + 173 5 1 -2.8468 -7.2151 -7.2658 0 1 0 + 174 5 1 -3.5842 -6.8908 -7.8260 0 1 0 + 175 5 1 -3.5508 -7.0063 7.6241 0 1 -1 + 176 5 1 -2.9756 -7.7201 7.8585 0 1 -1 + 177 5 1 -2.0394 -7.8230 8.1039 0 1 -1 + 178 5 1 -1.3274 -7.1897 8.1174 0 1 -1 + 179 5 1 -0.9807 -6.6449 -7.5431 0 1 0 + 180 5 1 -0.9238 -5.6903 -7.3638 0 1 0 + 181 5 1 -0.8741 -4.9265 -6.6813 0 1 0 + 182 5 1 -0.0949 -5.5199 -6.3670 0 1 0 + 183 5 1 -0.2778 -4.8656 -5.7369 0 1 0 + 184 5 1 -0.6919 -4.5164 -5.0108 0 1 0 + 185 5 1 -0.4891 -3.6504 -4.7370 0 1 0 + 186 5 1 0.3406 -3.7766 -5.2321 0 1 0 + 187 5 1 -0.3353 -3.7202 -5.9210 0 1 0 + 188 5 1 0.2085 -3.0043 -6.3445 0 1 0 + 189 5 1 0.5040 -3.2604 -7.2279 0 1 0 + 190 5 1 1.2968 -2.8872 -6.9492 0 1 0 + 191 5 1 2.1808 -2.5142 -6.8257 0 1 0 + 192 5 1 1.9266 -1.6274 -7.1142 0 1 0 + 193 5 1 2.7913 -1.2579 -6.6547 0 1 0 + 194 5 1 3.3329 -0.8061 -6.0178 0 1 0 + 195 5 1 4.0946 -0.2082 -5.7371 0 1 0 + 196 5 1 4.8297 -0.5360 -6.2362 0 1 0 + 197 5 1 5.4864 -0.1385 -6.8564 0 1 0 + 198 5 1 5.5430 -0.1071 -7.8622 0 1 0 + 199 5 1 4.7464 0.3372 -7.5507 0 1 0 + 200 5 1 4.0768 0.4963 -6.8595 0 1 0 + 201 6 2 -7.5650 1.5000 1.2413 0 0 0 + 202 6 2 -8.0473 0.8479 0.7081 0 0 0 + 203 6 2 -7.9777 0.9662 -0.2078 0 0 0 + 204 6 2 8.0672 0.6049 -1.0508 -1 0 0 + 205 6 2 7.3706 0.0109 -0.7142 -1 0 0 + 206 6 2 6.5245 0.4155 -0.8480 -1 0 0 + 207 6 2 6.3281 1.3903 -0.7213 -1 0 0 + 208 6 2 7.2457 1.3462 -0.7141 -1 0 0 + 209 6 2 8.0101 1.8416 -0.6149 -1 0 0 + 210 6 2 8.0231 2.8577 -0.6369 -1 0 0 + 211 6 2 7.4977 2.7380 0.1246 -1 0 0 + 212 6 2 6.6911 2.2612 -0.1411 -1 0 0 + 213 6 2 5.7458 2.2789 0.0148 -1 0 0 + 214 6 2 5.2222 2.6041 0.7804 -1 0 0 + 215 6 2 4.3216 2.8995 0.5944 -1 0 0 + 216 6 2 4.2944 3.6961 1.0411 -1 0 0 + 217 6 2 4.5201 3.1454 1.7328 -1 0 0 + 218 6 2 4.6989 2.8044 2.6264 -1 0 0 + 219 6 2 5.3639 2.6169 3.2121 -1 0 0 + 220 6 2 5.4309 2.2501 4.1225 -1 0 0 + 221 6 2 5.4368 2.0364 5.0152 -1 0 0 + 222 6 2 6.1506 2.3692 5.6603 -1 0 0 + 223 6 2 6.1296 1.7133 6.3910 -1 0 0 + 224 6 2 6.9172 1.1740 6.2003 -1 0 0 + 225 6 2 7.0855 1.9468 5.6814 -1 0 0 + 226 6 2 7.1305 2.6951 4.9985 -1 0 0 + 227 6 2 6.4025 3.1032 4.5315 -1 0 0 + 228 6 2 5.4882 3.3255 4.2646 -1 0 0 + 229 6 2 4.5483 3.2340 4.2192 -1 0 0 + 230 6 2 4.1767 2.3631 4.1633 -1 0 0 + 231 6 2 4.4256 2.2482 5.0824 -1 0 0 + 232 6 2 5.0453 2.8611 5.4213 -1 0 0 + 233 6 2 4.4123 2.8712 6.0804 -1 0 0 + 234 6 2 4.5083 2.6907 7.0185 -1 0 0 + 235 6 2 4.1319 2.0459 7.6273 -1 0 0 + 236 6 2 4.5832 1.2833 7.3126 -1 0 0 + 237 6 2 5.0233 0.4519 7.3297 -1 0 0 + 238 6 2 4.9562 -0.3351 7.7829 -1 0 0 + 239 6 2 4.7810 -0.8429 6.9451 -1 0 0 + 240 6 2 5.3913 -1.4885 6.4549 -1 0 0 + 241 7 1 6.9722 -5.8488 -6.6715 0 0 0 + 242 7 1 7.8812 -6.1989 -6.5964 0 0 0 + 243 7 1 -7.9971 -6.9093 -6.9504 1 0 0 + 244 7 1 -7.5043 -6.9853 -7.7710 1 0 0 + 245 7 1 -7.3887 -7.1313 7.6754 1 0 -1 + 246 7 1 -7.0229 -7.9617 7.5892 1 0 -1 + 247 7 1 -7.8696 -8.0413 8.0866 1 0 -1 + 248 7 1 8.0445 7.6146 -8.1240 0 -1 0 + 249 7 1 7.0492 7.5183 8.0777 0 -1 -1 + 250 7 1 6.4798 7.0077 7.5573 0 -1 -1 + 251 7 1 6.1121 6.2934 7.0757 0 -1 -1 + 252 7 1 6.9712 6.2966 6.5677 0 -1 -1 + 253 7 1 6.9671 6.8706 5.7955 0 -1 -1 + 254 7 1 6.2166 7.1106 5.2161 0 -1 -1 + 255 7 1 5.3877 7.3516 5.6560 0 -1 -1 + 256 7 1 4.4705 7.0498 5.7885 0 -1 -1 + 257 7 1 3.6793 6.4541 5.8203 0 -1 -1 + 258 7 1 2.9979 6.7208 6.3953 0 -1 -1 + 259 7 1 2.4461 7.2693 6.9529 0 -1 -1 + 260 7 1 1.6527 7.0183 7.4950 0 -1 -1 + 261 7 1 2.4785 6.7848 7.9499 0 -1 -1 + 262 7 1 2.5174 7.7035 7.7858 0 -1 -1 + 263 7 1 1.8603 -7.9891 7.6609 0 0 -1 + 264 7 1 1.3688 7.8734 7.0278 0 -1 -1 + 265 7 1 1.4531 7.0626 6.4638 0 -1 -1 + 266 7 1 1.8344 6.6254 5.7071 0 -1 -1 + 267 7 1 2.7215 6.8419 5.3543 0 -1 -1 + 268 7 1 2.4085 7.3839 4.6329 0 -1 -1 + 269 7 1 1.5024 7.5277 4.3413 0 -1 -1 + 270 7 1 0.7070 6.9936 4.5543 0 -1 -1 + 271 7 1 0.3946 7.8772 4.7528 0 -1 -1 + 272 7 1 -0.3419 -8.1238 5.2184 0 0 -1 + 273 7 1 -0.2883 7.3723 5.4801 0 -1 -1 + 274 7 1 -0.3893 6.4642 5.1932 0 -1 -1 + 275 7 1 -1.3141 6.4405 5.2721 0 -1 -1 + 276 7 1 -1.1979 6.7879 6.2024 0 -1 -1 + 277 7 1 -1.2658 7.0109 7.1159 0 -1 -1 + 278 7 1 -1.9462 6.8161 7.8205 0 -1 -1 + 279 7 1 -2.8224 6.4567 7.8971 0 -1 -1 + 280 7 1 -3.2919 7.0336 -7.9544 0 -1 0 + 281 8 2 5.2796 -6.5812 -5.4085 0 0 0 + 282 8 2 4.7163 -6.7833 -4.5681 0 0 0 + 283 8 2 4.4060 -5.9174 -4.2984 0 0 0 + 284 8 2 3.5099 -5.7204 -4.4373 0 0 0 + 285 8 2 2.9851 -6.1663 -5.1381 0 0 0 + 286 8 2 3.1889 -7.0146 -4.7250 0 0 0 + 287 8 2 3.8547 -7.1451 -5.3837 0 0 0 + 288 8 2 4.5242 -7.1185 -6.0551 0 0 0 + 289 8 2 5.1681 -6.6532 -6.5325 0 0 0 + 290 8 2 5.9050 -7.1959 -6.3571 0 0 0 + 291 8 2 6.3040 -7.0069 -5.5110 0 0 0 + 292 8 2 6.8515 -6.9124 -4.7697 0 0 0 + 293 8 2 7.3534 -7.7221 -4.8654 0 0 0 + 294 8 2 8.2082 -8.0084 -4.4692 0 0 0 + 295 8 2 -7.5403 -7.8024 -3.8292 1 0 0 + 296 8 2 -7.4014 -7.7313 -2.9290 1 0 0 + 297 8 2 -7.6476 7.7892 -2.8196 1 -1 0 + 298 8 2 8.0534 7.9926 -3.3742 0 -1 0 + 299 8 2 7.2509 -8.1619 -3.8214 0 0 0 + 300 8 2 6.4546 -8.1818 -4.4556 0 0 0 + 301 8 2 5.5531 -8.0801 -4.1505 0 0 0 + 302 8 2 5.2333 -7.2360 -3.8559 0 0 0 + 303 8 2 5.1755 -7.1027 -2.9131 0 0 0 + 304 8 2 4.3003 -6.7047 -2.8807 0 0 0 + 305 8 2 3.9516 -5.8846 -2.3769 0 0 0 + 306 8 2 3.9923 -5.3884 -1.6100 0 0 0 + 307 8 2 3.2342 -4.8484 -1.4445 0 0 0 + 308 8 2 4.0318 -4.2970 -1.3989 0 0 0 + 309 8 2 4.9095 -4.6881 -1.2571 0 0 0 + 310 8 2 5.5017 -5.4254 -1.2630 0 0 0 + 311 8 2 4.7428 -5.5289 -0.6837 0 0 0 + 312 8 2 3.8827 -5.1141 -0.6030 0 0 0 + 313 8 2 3.1842 -5.6936 -1.0026 0 0 0 + 314 8 2 3.9261 -6.3038 -0.7947 0 0 0 + 315 8 2 4.1325 -6.5477 0.1181 0 0 0 + 316 8 2 4.2381 -5.6449 0.2877 0 0 0 + 317 8 2 5.0593 -6.1096 0.2201 0 0 0 + 318 8 2 5.6677 -6.6746 0.6816 0 0 0 + 319 8 2 4.9862 -6.5959 1.3351 0 0 0 + 320 8 2 4.9665 -5.7010 1.4799 0 0 0 + 321 9 1 -0.0477 -5.0097 -0.6713 0 0 0 + 322 9 1 -0.4859 -5.4641 0.0181 0 0 0 + 323 9 1 -1.4214 -5.4887 0.2290 0 0 0 + 324 9 1 -2.2031 -5.9645 0.5101 0 0 0 + 325 9 1 -1.6950 -6.7547 0.7017 0 0 0 + 326 9 1 -1.5128 -7.7264 0.6779 0 0 0 + 327 9 1 -2.2943 8.1128 0.6711 0 -1 0 + 328 9 1 -2.1247 7.2537 0.9948 0 -1 0 + 329 9 1 -2.0090 7.1285 1.9188 0 -1 0 + 330 9 1 -2.7040 6.4552 2.2441 0 -1 0 + 331 9 1 -3.3591 5.8222 2.0699 0 -1 0 + 332 9 1 -4.2589 5.6786 1.8880 0 -1 0 + 333 9 1 -4.9586 5.0590 2.2008 0 -1 0 + 334 9 1 -5.7800 4.7283 2.5296 0 -1 0 + 335 9 1 -6.5251 4.3990 2.9885 0 -1 0 + 336 9 1 -6.7508 5.1313 2.3841 0 -1 0 + 337 9 1 -7.2547 5.2164 1.5653 0 -1 0 + 338 9 1 -6.6673 4.9299 0.8489 0 -1 0 + 339 9 1 -6.1782 4.5312 0.0976 0 -1 0 + 340 9 1 -6.4905 3.8038 0.5989 0 -1 0 + 341 9 1 -6.9662 3.0683 0.9096 0 -1 0 + 342 9 1 -7.8375 3.4309 0.8570 0 -1 0 + 343 9 1 8.1320 2.6404 1.1856 -1 -1 0 + 344 9 1 7.4973 3.3543 1.0767 -1 -1 0 + 345 9 1 6.7109 3.6993 0.7816 -1 -1 0 + 346 9 1 5.8361 4.0432 0.6811 -1 -1 0 + 347 9 1 5.0958 3.6472 0.2477 -1 -1 0 + 348 9 1 5.1428 3.1030 -0.6290 -1 -1 0 + 349 9 1 5.2138 3.8702 -1.1747 -1 -1 0 + 350 9 1 5.2915 4.7014 -1.5387 -1 -1 0 + 351 9 1 4.8757 5.6615 -1.4683 -1 -1 0 + 352 9 1 5.2443 5.4902 -0.5578 -1 -1 0 + 353 9 1 5.0383 5.8271 0.2975 -1 -1 0 + 354 9 1 4.5934 6.2090 1.0805 -1 -1 0 + 355 9 1 3.6988 6.0628 0.7137 -1 -1 0 + 356 9 1 3.6193 6.1897 1.6088 -1 -1 0 + 357 9 1 3.4358 6.3119 2.5794 -1 -1 0 + 358 9 1 2.6134 5.8276 2.4014 -1 -1 0 + 359 9 1 2.4782 4.8298 2.2485 -1 -1 0 + 360 9 1 1.8223 4.5893 1.5448 -1 -1 0 + 361 10 2 5.7461 -7.3903 -7.3881 0 0 0 + 362 10 2 5.7162 -6.7772 -8.0634 0 0 0 + 363 10 2 5.5090 -5.8469 7.9991 0 0 -1 + 364 10 2 4.9486 -5.6862 7.2370 0 0 -1 + 365 10 2 4.6357 -5.1502 6.5498 0 0 -1 + 366 10 2 4.4760 -4.1344 6.4437 0 0 -1 + 367 10 2 4.3972 -4.6535 5.5958 0 0 -1 + 368 10 2 4.9731 -4.9407 4.8989 0 0 -1 + 369 10 2 4.4981 -5.6377 4.4320 0 0 -1 + 370 10 2 4.1161 -6.3673 3.9374 0 0 -1 + 371 10 2 4.0949 -7.3325 4.1672 0 0 -1 + 372 10 2 3.6259 -6.9234 4.9133 0 0 -1 + 373 10 2 4.5214 -6.6310 5.0224 0 0 -1 + 374 10 2 5.2391 -6.5934 4.2920 0 0 -1 + 375 10 2 5.2455 -7.4252 3.9171 0 0 -1 + 376 10 2 5.8529 -7.9758 3.4127 0 0 -1 + 377 10 2 6.6095 7.8674 3.4886 0 -1 -1 + 378 10 2 7.0572 -7.8980 4.2005 0 0 -1 + 379 10 2 7.6610 -7.7794 3.4514 0 0 -1 + 380 10 2 -7.9207 8.1954 3.1231 1 -1 -1 + 381 10 2 -7.6302 -7.8899 2.2614 1 0 -1 + 382 10 2 -6.9896 -7.3037 1.8109 1 0 -1 + 383 10 2 -7.6860 -6.7972 2.2555 1 0 -1 + 384 10 2 -7.8960 -7.0864 3.1097 1 0 -1 + 385 10 2 -7.7775 -6.3129 3.7419 1 0 -1 + 386 10 2 -7.1576 -5.6685 4.1818 1 0 -1 + 387 10 2 -6.7994 -4.8602 4.4295 1 0 -1 + 388 10 2 -6.0057 -4.5435 4.7475 1 0 -1 + 389 10 2 -5.2609 -4.5769 4.1675 1 0 -1 + 390 10 2 -5.0571 -5.0645 3.3283 1 0 -1 + 391 10 2 -5.4671 -5.9421 3.3306 1 0 -1 + 392 10 2 -5.2633 -6.7774 2.8865 1 0 -1 + 393 10 2 -5.0660 -7.2960 2.0849 1 0 -1 + 394 10 2 -4.9879 8.1988 2.3095 1 -1 -1 + 395 10 2 -4.9648 7.2637 2.0874 1 -1 -1 + 396 10 2 -5.0343 6.3443 1.9623 1 -1 -1 + 397 10 2 -5.6366 6.7240 1.2974 1 -1 -1 + 398 10 2 -5.5589 6.7686 0.3687 1 -1 -1 + 399 10 2 -4.7381 6.2525 0.4268 1 -1 -1 + 400 10 2 -3.8238 6.2399 0.8094 1 -1 -1 + 401 11 1 4.8337 -6.9620 6.0701 0 0 0 + 402 11 1 4.9682 -7.8687 5.8710 0 0 0 + 403 11 1 5.1201 7.9035 6.5376 0 -1 0 + 404 11 1 5.8985 7.3266 6.7467 0 -1 0 + 405 11 1 6.4363 8.0277 7.1194 0 -1 0 + 406 11 1 7.1418 7.5188 6.6213 0 -1 0 + 407 11 1 6.6665 7.8088 5.8309 0 -1 0 + 408 11 1 6.3115 -7.9020 5.3080 0 0 0 + 409 11 1 5.6408 -7.2855 4.9299 0 0 0 + 410 11 1 4.8457 -7.8486 4.8295 0 0 0 + 411 11 1 4.4990 7.6371 4.6862 0 -1 0 + 412 11 1 3.6175 7.4169 4.8332 0 -1 0 + 413 11 1 3.7506 7.9127 5.6417 0 -1 0 + 414 11 1 3.7883 7.4426 6.5018 0 -1 0 + 415 11 1 4.1095 -8.1215 6.5892 0 0 0 + 416 11 1 3.8558 -7.4196 5.9769 0 0 0 + 417 11 1 3.1326 -7.2501 6.5570 0 0 0 + 418 11 1 2.8995 -8.1320 6.2067 0 0 0 + 419 11 1 2.3160 7.5976 5.8834 0 -1 0 + 420 11 1 1.4822 7.7037 5.3906 0 -1 0 + 421 11 1 0.6840 7.1953 5.6118 0 -1 0 + 422 11 1 0.5910 8.0868 5.9678 0 -1 0 + 423 11 1 -0.0709 -7.7813 6.3154 0 0 0 + 424 11 1 -0.5510 -7.4558 7.1140 0 0 0 + 425 11 1 -1.2303 -8.0777 7.4053 0 0 0 + 426 11 1 -2.0710 8.0375 7.2003 0 -1 0 + 427 11 1 -2.7494 7.4079 7.4776 0 -1 0 + 428 11 1 -3.5682 7.8395 7.6497 0 -1 0 + 429 11 1 -4.1296 -7.7807 7.7261 0 0 0 + 430 11 1 -3.7905 -7.8746 6.8338 0 0 0 + 431 11 1 -3.2207 7.8096 6.6330 0 -1 0 + 432 11 1 -3.3161 6.8891 6.2763 0 -1 0 + 433 11 1 -3.8344 6.1397 6.6664 0 -1 0 + 434 11 1 -3.4342 5.5022 6.0708 0 -1 0 + 435 11 1 -3.7669 4.8398 6.6222 0 -1 0 + 436 11 1 -4.2915 4.6582 5.9002 0 -1 0 + 437 11 1 -5.0737 4.9969 5.4288 0 -1 0 + 438 11 1 -5.5673 5.0779 4.6087 0 -1 0 + 439 11 1 -5.1845 5.9038 4.8997 0 -1 0 + 440 11 1 -4.2460 5.7952 4.9872 0 -1 0 + 441 12 2 -5.8484 6.5244 3.9637 0 0 0 + 442 12 2 -5.8487 5.5949 3.5625 0 0 0 + 443 12 2 -6.4822 4.8961 3.9423 0 0 0 + 444 12 2 -5.6401 4.5007 3.6756 0 0 0 + 445 12 2 -5.2342 3.9247 3.0098 0 0 0 + 446 12 2 -5.3675 3.4942 3.8258 0 0 0 + 447 12 2 -5.6043 3.0865 4.6483 0 0 0 + 448 12 2 -6.1308 2.3274 4.6564 0 0 0 + 449 12 2 -6.8222 2.2662 4.0488 0 0 0 + 450 12 2 -7.4447 2.0088 3.3879 0 0 0 + 451 12 2 -8.0726 1.8201 4.0400 0 0 0 + 452 12 2 7.4996 1.4924 3.7553 -1 0 0 + 453 12 2 6.9905 0.8666 3.3206 -1 0 0 + 454 12 2 6.7091 -0.0328 3.0518 -1 0 0 + 455 12 2 7.3154 -0.8154 2.8325 -1 0 0 + 456 12 2 7.5483 -0.0009 2.3035 -1 0 0 + 457 12 2 7.9145 0.8716 2.3943 -1 0 0 + 458 12 2 -7.7586 0.5406 1.8865 0 0 0 + 459 12 2 -7.0387 0.0467 2.3366 0 0 0 + 460 12 2 -6.3499 0.7028 2.6841 0 0 0 + 461 12 2 -5.7714 1.4854 2.6503 0 0 0 + 462 12 2 -6.5295 1.5130 3.2747 0 0 0 + 463 12 2 -7.1685 1.1460 3.7989 0 0 0 + 464 12 2 -7.8567 0.6498 4.2531 0 0 0 + 465 12 2 -7.9221 1.2778 4.9560 0 0 0 + 466 12 2 7.6912 1.7098 4.8771 -1 0 0 + 467 12 2 6.9543 1.1102 5.0877 -1 0 0 + 468 12 2 5.9849 1.2570 5.2015 -1 0 0 + 469 12 2 5.6691 1.0844 4.3112 -1 0 0 + 470 12 2 5.4974 0.2660 3.7942 -1 0 0 + 471 12 2 5.1024 0.1347 4.7027 -1 0 0 + 472 12 2 5.7992 0.0595 5.4303 -1 0 0 + 473 12 2 6.5115 0.0897 6.0602 -1 0 0 + 474 12 2 7.4204 0.3003 6.0354 -1 0 0 + 475 12 2 7.9608 1.1020 5.9662 -1 0 0 + 476 12 2 -8.1652 2.0120 5.7790 0 0 0 + 477 12 2 -8.0498 2.4218 6.6768 0 0 0 + 478 12 2 -7.8681 2.4292 7.6013 0 0 0 + 479 12 2 7.6795 2.1065 7.6815 -1 0 0 + 480 12 2 7.2229 1.9105 -7.8671 -1 0 1 + 481 13 1 1.0973 2.9125 6.1625 0 0 0 + 482 13 1 0.3697 3.4964 5.9423 0 0 0 + 483 13 1 -0.1709 3.1267 6.6195 0 0 0 + 484 13 1 -0.3678 2.6757 7.3771 0 0 0 + 485 13 1 -0.5737 3.2283 8.1647 0 0 0 + 486 13 1 -1.1554 3.4641 -7.5638 0 0 1 + 487 13 1 -1.3187 3.4857 -6.6652 0 0 1 + 488 13 1 -1.1266 4.4785 -6.6960 0 0 1 + 489 13 1 -0.3638 5.1346 -6.6223 0 0 1 + 490 13 1 -0.1713 6.1254 -6.7920 0 0 1 + 491 13 1 -0.8710 6.5105 -6.3009 0 0 1 + 492 13 1 -1.1518 5.5650 -6.2760 0 0 1 + 493 13 1 -1.7167 4.8934 -5.7901 0 0 1 + 494 13 1 -1.4351 4.0059 -5.7680 0 0 1 + 495 13 1 -0.7079 4.5983 -5.5108 0 0 1 + 496 13 1 -0.3839 4.2817 -4.6177 0 0 1 + 497 13 1 0.4411 4.4517 -5.0176 0 0 1 + 498 13 1 1.3933 4.1570 -5.1987 0 0 1 + 499 13 1 2.1204 3.5739 -4.8923 0 0 1 + 500 13 1 1.3976 3.1355 -4.4244 0 0 1 + 501 13 1 1.3007 3.0131 -3.4836 0 0 1 + 502 13 1 1.1550 3.6151 -2.7742 0 0 1 + 503 13 1 0.5820 4.3044 -2.4456 0 0 1 + 504 13 1 0.1725 3.5112 -2.6491 0 0 1 + 505 13 1 0.0990 3.2731 -1.7118 0 0 1 + 506 13 1 -0.4402 3.3384 -0.8844 0 0 1 + 507 13 1 -0.6404 2.7813 -0.0600 0 0 1 + 508 13 1 -1.2569 2.0987 0.1336 0 0 1 + 509 13 1 -1.7181 1.9476 1.0005 0 0 1 + 510 13 1 -1.6776 1.5301 1.9021 0 0 1 + 511 13 1 -1.4481 1.2372 2.7652 0 0 1 + 512 13 1 -2.3702 1.3284 2.6504 0 0 1 + 513 13 1 -2.1835 0.4671 2.8992 0 0 1 + 514 13 1 -2.7565 0.0045 3.4115 0 0 1 + 515 13 1 -3.0749 0.8943 3.7357 0 0 1 + 516 13 1 -2.7849 1.1853 4.6243 0 0 1 + 517 13 1 -2.7370 1.9636 4.0718 0 0 1 + 518 13 1 -3.5769 2.4239 3.9072 0 0 1 + 519 13 1 -3.3747 2.0748 3.0087 0 0 1 + 520 13 1 -3.5213 1.6890 2.1158 0 0 1 + 521 14 2 7.6114 5.8083 5.8449 0 0 0 + 522 14 2 7.8523 6.5659 5.3424 0 0 0 + 523 14 2 8.0432 7.2417 4.5713 0 0 0 + 524 14 2 8.1189 8.1157 4.4329 0 0 0 + 525 14 2 -8.1729 -7.3163 4.3630 1 1 0 + 526 14 2 7.6838 -6.5122 4.1384 0 1 0 + 527 14 2 6.8835 -5.9709 4.4301 0 1 0 + 528 14 2 7.6173 -5.3672 4.3733 0 1 0 + 529 14 2 7.7332 -4.4758 4.7062 0 1 0 + 530 14 2 7.1326 -4.4350 5.4597 0 1 0 + 531 14 2 7.6310 -4.1626 6.2104 0 1 0 + 532 14 2 7.5251 -3.3406 6.7675 0 1 0 + 533 14 2 8.1044 -3.9014 7.2624 0 1 0 + 534 14 2 -7.6445 -4.3274 6.8077 1 1 0 + 535 14 2 -7.0496 -3.9161 6.1748 1 1 0 + 536 14 2 -6.7171 -3.0766 5.8328 1 1 0 + 537 14 2 -6.2443 -2.8292 5.0518 1 1 0 + 538 14 2 -6.7010 -3.6472 4.9121 1 1 0 + 539 14 2 -7.6019 -4.0978 5.1610 1 1 0 + 540 14 2 -8.1943 -3.6980 4.4486 1 1 0 + 541 14 2 7.5932 -3.7149 3.7656 0 1 0 + 542 14 2 8.1715 -3.9696 3.0770 0 1 0 + 543 14 2 7.8639 -4.6792 2.4992 0 1 0 + 544 14 2 7.6522 -5.4994 2.0510 0 1 0 + 545 14 2 6.7114 -5.4918 1.8854 0 1 0 + 546 14 2 6.3951 -6.1809 2.5320 0 1 0 + 547 14 2 6.7093 -7.0452 2.6000 0 1 0 + 548 14 2 7.0458 -6.4701 3.2679 0 1 0 + 549 14 2 7.7904 -5.8879 3.2194 0 1 0 + 550 14 2 -7.8574 -5.4241 2.8625 1 1 0 + 551 14 2 -7.4268 -5.4038 2.0228 1 1 0 + 552 14 2 -8.0600 -4.8823 1.4668 1 1 0 + 553 14 2 8.1552 -4.3100 0.6879 0 1 0 + 554 14 2 -7.5782 -4.4439 0.0462 1 1 0 + 555 14 2 -6.8662 -4.0630 -0.5520 1 1 0 + 556 14 2 -5.9019 -4.1648 -0.7090 1 1 0 + 557 14 2 -5.0850 -4.5447 -0.4591 1 1 0 + 558 14 2 -4.7646 -4.1471 0.3220 1 1 0 + 559 14 2 -4.4375 -3.8642 1.1705 1 1 0 + 560 14 2 -4.3949 -3.0706 0.6091 1 1 0 + 561 15 1 7.5417 6.4700 -5.1128 0 0 0 + 562 15 1 7.1276 5.7514 -5.6548 0 0 0 + 563 15 1 6.6466 5.7916 -6.4477 0 0 0 + 564 15 1 6.8481 5.8052 -7.3350 0 0 0 + 565 15 1 7.6306 5.9654 -6.8514 0 0 0 + 566 15 1 7.7546 5.0419 -6.4904 0 0 0 + 567 15 1 6.9470 4.5876 -6.3646 0 0 0 + 568 15 1 7.0514 3.7873 -5.8493 0 0 0 + 569 15 1 7.6999 4.3822 -5.4678 0 0 0 + 570 15 1 7.0618 4.9397 -4.9774 0 0 0 + 571 15 1 6.1505 5.2596 -4.8627 0 0 0 + 572 15 1 6.1776 5.1439 -3.9339 0 0 0 + 573 15 1 6.1759 5.9589 -3.4691 0 0 0 + 574 15 1 5.3047 6.2266 -3.2354 0 0 0 + 575 15 1 5.1197 5.4670 -3.7374 0 0 0 + 576 15 1 4.3628 4.9571 -3.3748 0 0 0 + 577 15 1 3.7180 4.8390 -2.6665 0 0 0 + 578 15 1 3.9548 5.2224 -1.8277 0 0 0 + 579 15 1 3.1376 4.8378 -1.4028 0 0 0 + 580 15 1 3.6086 4.3042 -0.7538 0 0 0 + 581 15 1 4.5145 4.2571 -0.4370 0 0 0 + 582 15 1 5.4024 4.5369 -0.2958 0 0 0 + 583 15 1 6.3151 4.8302 -0.4557 0 0 0 + 584 15 1 6.3252 5.7055 -0.6053 0 0 0 + 585 15 1 6.4573 6.1456 -1.4466 0 0 0 + 586 15 1 6.7317 6.0993 -2.3577 0 0 0 + 587 15 1 7.0679 6.4129 -3.2264 0 0 0 + 588 15 1 7.8341 5.9446 -3.4828 0 0 0 + 589 15 1 -7.9263 6.2702 -4.1106 1 0 0 + 590 15 1 -7.7240 7.1816 -4.1457 1 0 0 + 591 15 1 -6.9079 7.6316 -3.7762 1 0 0 + 592 15 1 -6.6294 7.7307 -2.9007 1 0 0 + 593 15 1 -5.9367 7.6002 -2.2858 1 0 0 + 594 15 1 -6.2793 8.1412 -1.5785 1 0 0 + 595 15 1 -6.1123 8.0650 -0.6229 1 0 0 + 596 15 1 -5.5313 -7.9232 0.0863 1 1 0 + 597 15 1 -4.5991 -7.7417 0.0074 1 1 0 + 598 15 1 -3.8650 -7.0503 -0.0813 1 1 0 + 599 15 1 -3.4373 -7.4322 -0.8852 1 1 0 + 600 15 1 -3.4795 -6.5249 -1.1762 1 1 0 + 601 16 2 3.7736 6.8386 -2.3973 0 0 0 + 602 16 2 4.3819 7.2537 -3.0665 0 0 0 + 603 16 2 4.8131 7.0930 -3.9155 0 0 0 + 604 16 2 4.4876 7.9496 -3.9603 0 0 0 + 605 16 2 4.9795 -8.1730 -3.1972 0 1 0 + 606 16 2 5.6131 -8.0168 -2.4310 0 1 0 + 607 16 2 6.0848 -7.3507 -1.9840 0 1 0 + 608 16 2 6.3572 -6.4999 -1.6689 0 1 0 + 609 16 2 6.5143 -5.8001 -1.0237 0 1 0 + 610 16 2 6.9149 -5.1283 -0.5202 0 1 0 + 611 16 2 7.6020 -4.4646 -0.3965 0 1 0 + 612 16 2 7.8427 -3.6012 0.0056 0 1 0 + 613 16 2 8.1052 -2.7475 0.1468 0 1 0 + 614 16 2 -7.5046 -2.2773 -0.2341 1 1 0 + 615 16 2 -8.0922 -1.5595 -0.0543 1 1 0 + 616 16 2 -8.0797 -1.1284 0.8120 1 1 0 + 617 16 2 -7.9078 -0.1612 0.8338 1 1 0 + 618 16 2 -7.2564 -0.6152 0.4267 1 1 0 + 619 16 2 -6.9901 -1.4813 0.5777 1 1 0 + 620 16 2 -7.5499 -2.2351 0.8723 1 1 0 + 621 16 2 8.1379 -2.3707 1.4247 0 1 0 + 622 16 2 7.3800 -1.8112 1.2778 0 1 0 + 623 16 2 6.9180 -1.1503 1.7952 0 1 0 + 624 16 2 7.5396 -0.6083 1.2899 0 1 0 + 625 16 2 7.5787 0.3736 1.3129 0 1 0 + 626 16 2 7.5846 1.3497 1.4451 0 1 0 + 627 16 2 -8.1636 1.7607 2.0002 1 1 0 + 628 16 2 -7.4908 2.4255 1.9123 1 1 0 + 629 16 2 -7.2533 3.3477 1.9264 1 1 0 + 630 16 2 -6.8519 4.2401 1.8024 1 1 0 + 631 16 2 -5.9740 4.4386 1.4127 1 1 0 + 632 16 2 -5.1736 4.4783 0.8900 1 1 0 + 633 16 2 -5.0718 5.0711 0.0736 1 1 0 + 634 16 2 -5.3784 4.4186 -0.5794 1 1 0 + 635 16 2 -5.3691 3.6130 0.0104 1 1 0 + 636 16 2 -4.6994 3.4481 -0.6365 1 1 0 + 637 16 2 -4.2294 4.1905 -0.2483 1 1 0 + 638 16 2 -3.3558 4.1148 0.0136 1 1 0 + 639 16 2 -2.5460 4.4158 0.3900 1 1 0 + 640 16 2 -2.3109 4.3578 -0.5850 1 1 0 + 641 17 1 3.1366 5.0431 -6.0095 0 0 0 + 642 17 1 3.2755 5.3671 -6.8906 0 0 0 + 643 17 1 3.8518 5.6734 -7.5991 0 0 0 + 644 17 1 4.6874 5.9910 -7.8370 0 0 0 + 645 17 1 5.1948 5.8203 7.8380 0 0 -1 + 646 17 1 6.0855 5.5678 7.8261 0 0 -1 + 647 17 1 6.8230 6.1380 7.8826 0 0 -1 + 648 17 1 7.2785 6.6028 -7.7845 0 0 0 + 649 17 1 6.8169 6.7835 -6.9896 0 0 0 + 650 17 1 6.7870 7.6342 -7.2878 0 0 0 + 651 17 1 6.5688 -7.9511 -7.6952 0 1 0 + 652 17 1 6.6767 -7.2992 -6.9866 0 1 0 + 653 17 1 6.1454 -6.5065 -7.0267 0 1 0 + 654 17 1 6.1404 -6.1361 -6.1501 0 1 0 + 655 17 1 6.2549 -6.0296 -5.1562 0 1 0 + 656 17 1 6.7207 -5.1910 -5.3314 0 1 0 + 657 17 1 6.7689 -4.3675 -5.8303 0 1 0 + 658 17 1 7.1050 -3.5345 -6.0891 0 1 0 + 659 17 1 6.7582 -2.6598 -6.2195 0 1 0 + 660 17 1 6.2752 -2.4770 -5.3976 0 1 0 + 661 17 1 5.4318 -2.1504 -4.8697 0 1 0 + 662 17 1 4.5252 -2.1583 -4.6578 0 1 0 + 663 17 1 3.9849 -1.4480 -4.8970 0 1 0 + 664 17 1 3.1551 -1.5781 -5.3336 0 1 0 + 665 17 1 2.2662 -1.6855 -5.5881 0 1 0 + 666 17 1 1.3928 -2.0468 -5.6027 0 1 0 + 667 17 1 1.0392 -2.5586 -4.8882 0 1 0 + 668 17 1 1.2340 -1.6395 -4.6559 0 1 0 + 669 17 1 2.0306 -1.1280 -4.6919 0 1 0 + 670 17 1 1.3951 -0.9010 -5.3318 0 1 0 + 671 17 1 0.8736 -0.0538 -5.5333 0 1 0 + 672 17 1 0.4047 -0.2622 -6.3845 0 1 0 + 673 17 1 -0.0562 -0.0453 -7.2203 0 1 0 + 674 17 1 -0.4831 -0.5740 -7.8736 0 1 0 + 675 17 1 -1.4170 -0.7317 8.2068 0 1 -1 + 676 17 1 -2.2094 -1.2622 -8.0399 0 1 0 + 677 17 1 -1.9390 -2.0268 7.8343 0 1 -1 + 678 17 1 -1.6142 -2.8418 7.4471 0 1 -1 + 679 17 1 -2.4583 -3.1688 7.6052 0 1 -1 + 680 17 1 -3.3312 -3.1756 8.0978 0 1 -1 + 681 18 2 1.0749 -1.8638 -6.6368 0 0 0 + 682 18 2 1.6488 -1.0710 -6.2554 0 0 0 + 683 18 2 1.4408 -0.1686 -6.6018 0 0 0 + 684 18 2 2.0577 0.3102 -7.1758 0 0 0 + 685 18 2 1.9744 -0.6084 -7.5249 0 0 0 + 686 18 2 1.6291 -1.1046 8.1724 0 0 -1 + 687 18 2 1.4730 -1.7829 7.4979 0 0 -1 + 688 18 2 2.1546 -1.8411 6.7721 0 0 -1 + 689 18 2 2.4597 -2.0815 5.9092 0 0 -1 + 690 18 2 1.5039 -2.0241 5.7076 0 0 -1 + 691 18 2 2.0721 -1.6686 5.0198 0 0 -1 + 692 18 2 2.6427 -1.9727 4.3007 0 0 -1 + 693 18 2 2.6022 -1.7490 3.3210 0 0 -1 + 694 18 2 2.8153 -1.2290 2.5367 0 0 -1 + 695 18 2 3.5056 -1.8224 2.8570 0 0 -1 + 696 18 2 2.9039 -2.4362 2.3275 0 0 -1 + 697 18 2 2.1149 -1.8559 2.2740 0 0 -1 + 698 18 2 1.1614 -2.1236 2.3372 0 0 -1 + 699 18 2 0.5552 -2.8327 2.3627 0 0 -1 + 700 18 2 -0.1206 -3.4513 2.4262 0 0 -1 + 701 18 2 -0.6002 -4.1179 3.0006 0 0 -1 + 702 18 2 -0.2066 -4.7998 3.5217 0 0 -1 + 703 18 2 -0.3763 -5.1586 4.3607 0 0 -1 + 704 18 2 -0.7220 -5.3510 5.2358 0 0 -1 + 705 18 2 -1.3882 -5.9886 4.9018 0 0 -1 + 706 18 2 -0.8301 -6.3812 5.5243 0 0 -1 + 707 18 2 -0.6451 -6.8679 6.2632 0 0 -1 + 708 18 2 -1.0682 -6.5172 7.1211 0 0 -1 + 709 18 2 -1.9178 -6.1760 6.9377 0 0 -1 + 710 18 2 -2.8467 -6.5177 6.8205 0 0 -1 + 711 18 2 -2.8214 -7.4033 6.4533 0 0 -1 + 712 18 2 -2.5574 -8.1290 5.9328 0 0 -1 + 713 18 2 -2.0389 7.6139 6.2749 0 -1 -1 + 714 18 2 -1.1955 8.0023 6.2707 0 -1 -1 + 715 18 2 -0.4940 7.4768 6.5480 0 -1 -1 + 716 18 2 0.4453 7.1856 6.7050 0 -1 -1 + 717 18 2 -0.1902 6.7328 7.2500 0 -1 -1 + 718 18 2 -0.6221 6.1092 7.8019 0 -1 -1 + 719 18 2 -0.1261 5.5807 7.1773 0 -1 -1 + 720 18 2 -0.9684 5.9783 6.7751 0 -1 -1 + 721 19 1 -7.1773 -0.9209 -4.8594 0 0 0 + 722 19 1 -8.0110 -0.5053 -4.7943 0 0 0 + 723 19 1 7.5694 -0.7406 -4.2422 -1 0 0 + 724 19 1 6.8934 -1.2071 -3.8650 -1 0 0 + 725 19 1 6.0313 -1.2789 -3.4486 -1 0 0 + 726 19 1 5.1908 -1.0138 -3.1281 -1 0 0 + 727 19 1 4.2675 -0.8315 -2.9630 -1 0 0 + 728 19 1 3.3238 -1.0185 -2.7086 -1 0 0 + 729 19 1 2.7035 -1.5719 -2.2744 -1 0 0 + 730 19 1 2.8896 -2.4635 -2.5857 -1 0 0 + 731 19 1 2.0065 -2.7429 -2.7242 -1 0 0 + 732 19 1 1.0734 -2.4288 -2.7295 -1 0 0 + 733 19 1 1.2464 -2.8166 -1.8444 -1 0 0 + 734 19 1 0.9997 -3.3141 -1.1010 -1 0 0 + 735 19 1 0.8393 -3.2514 -0.1617 -1 0 0 + 736 19 1 1.4445 -2.6925 0.3697 -1 0 0 + 737 19 1 2.3413 -2.9780 0.3644 -1 0 0 + 738 19 1 3.1798 -3.5085 0.3274 -1 0 0 + 739 19 1 3.9689 -3.8965 -0.0130 -1 0 0 + 740 19 1 4.7067 -4.5166 -0.1942 -1 0 0 + 741 19 1 5.5657 -4.0327 -0.0381 -1 0 0 + 742 19 1 5.4435 -4.8960 0.3816 -1 0 0 + 743 19 1 6.0173 -5.4755 -0.0921 -1 0 0 + 744 19 1 6.8292 -5.9330 0.2068 -1 0 0 + 745 19 1 7.0498 -6.0208 1.0926 -1 0 0 + 746 19 1 7.3509 -6.4527 1.8805 -1 0 0 + 747 19 1 7.7355 -7.2132 2.3262 -1 0 0 + 748 19 1 -8.1196 -7.2973 1.5338 0 0 0 + 749 19 1 7.5697 -6.9682 0.9162 -1 0 0 + 750 19 1 6.6205 -6.9454 0.5950 -1 0 0 + 751 19 1 6.1341 -7.8362 0.7780 -1 0 0 + 752 19 1 5.4106 7.9902 0.7272 -1 -1 0 + 753 19 1 5.7939 8.0201 1.5886 -1 -1 0 + 754 19 1 6.4096 8.1103 2.3795 -1 -1 0 + 755 19 1 6.8595 -7.6339 1.8421 -1 0 0 + 756 19 1 6.9399 7.9194 1.2854 -1 -1 0 + 757 19 1 7.7195 -7.9513 1.1148 -1 0 0 + 758 19 1 8.1221 7.8870 1.6961 -1 -1 0 + 759 19 1 7.6128 7.8780 2.4552 -1 -1 0 + 760 19 1 7.6088 7.5013 3.3956 -1 -1 0 + 761 20 2 -4.7494 -3.6573 3.6288 0 0 0 + 762 20 2 -4.2385 -4.2837 4.0914 0 0 0 + 763 20 2 -3.9709 -4.1756 3.1396 0 0 0 + 764 20 2 -4.8327 -4.2923 2.7270 0 0 0 + 765 20 2 -5.7171 -3.9982 2.7118 0 0 0 + 766 20 2 -6.6136 -3.8618 3.2243 0 0 0 + 767 20 2 -7.3331 -4.5031 2.9399 0 0 0 + 768 20 2 -7.6397 -4.1706 2.1305 0 0 0 + 769 20 2 -8.2022 -3.4005 1.9069 0 0 0 + 770 20 2 -7.5928 -3.2488 1.2004 0 0 0 + 771 20 2 -7.4128 -3.2690 0.2635 0 0 0 + 772 20 2 -6.6116 -2.7520 0.3017 0 0 0 + 773 20 2 -6.3365 -3.1055 -0.5414 0 0 0 + 774 20 2 -7.1433 -2.9442 -1.0244 0 0 0 + 775 20 2 -7.7739 -3.5507 -0.6880 0 0 0 + 776 20 2 -7.7656 -4.4766 -0.9603 0 0 0 + 777 20 2 -7.5695 -5.3967 -1.0004 0 0 0 + 778 20 2 -8.1396 -6.1549 -0.9024 0 0 0 + 779 20 2 7.6482 -6.6181 -1.4730 -1 0 0 + 780 20 2 7.2995 -6.5792 -0.5384 -1 0 0 + 781 20 2 7.9840 -6.3045 0.0831 -1 0 0 + 782 20 2 8.1350 -5.7158 0.8352 -1 0 0 + 783 20 2 -7.3502 -5.3594 0.8513 0 0 0 + 784 20 2 -7.1612 -4.3980 1.0956 0 0 0 + 785 20 2 -6.6523 -3.8952 0.5432 0 0 0 + 786 20 2 -5.8277 -3.6044 0.3070 0 0 0 + 787 20 2 -5.1887 -3.3528 -0.3813 0 0 0 + 788 20 2 -5.5836 -2.6400 0.0960 0 0 0 + 789 20 2 -5.5610 -1.7193 0.1034 0 0 0 + 790 20 2 -4.7388 -1.2656 0.4934 0 0 0 + 791 20 2 -4.0140 -1.5555 -0.0166 0 0 0 + 792 20 2 -3.8426 -1.4465 -0.9656 0 0 0 + 793 20 2 -2.8598 -1.4028 -0.7622 0 0 0 + 794 20 2 -2.3964 -0.9771 0.0401 0 0 0 + 795 20 2 -1.7215 -0.6382 0.6724 0 0 0 + 796 20 2 -1.0742 -0.0959 0.2679 0 0 0 + 797 20 2 -0.3132 -0.5552 0.6005 0 0 0 + 798 20 2 0.5017 -0.4458 1.1317 0 0 0 + 799 20 2 0.2018 0.2068 1.7758 0 0 0 + 800 20 2 -0.5355 0.8688 2.0075 0 0 0 + 801 21 1 -6.1097 -2.4421 7.2897 0 0 0 + 802 21 1 -6.2181 -1.6433 7.8475 0 0 0 + 803 21 1 -6.5435 -1.3992 6.9769 0 0 0 + 804 21 1 -7.4150 -1.0802 7.3043 0 0 0 + 805 21 1 -7.6886 -0.7923 8.1906 0 0 0 + 806 21 1 7.9768 -0.0934 -8.1806 -1 0 1 + 807 21 1 7.0796 0.1537 8.0360 -1 0 0 + 808 21 1 7.4510 0.8061 -7.8243 -1 0 1 + 809 21 1 7.6687 0.7658 -6.9078 -1 0 1 + 810 21 1 7.3478 1.6610 -6.8480 -1 0 1 + 811 21 1 7.3239 2.6087 -6.9569 -1 0 1 + 812 21 1 8.0264 2.4696 -7.5780 -1 0 1 + 813 21 1 -7.6459 3.0322 -7.8603 0 0 1 + 814 21 1 -6.7083 2.9825 -7.8751 0 0 1 + 815 21 1 -6.1131 3.4360 -7.3597 0 0 1 + 816 21 1 -5.2314 3.3128 -6.9664 0 0 1 + 817 21 1 -5.1518 4.1997 -7.3776 0 0 1 + 818 21 1 -4.4764 4.6982 -7.7469 0 0 1 + 819 21 1 -4.3086 3.7153 -7.6514 0 0 1 + 820 21 1 -4.0253 2.7986 -7.2625 0 0 1 + 821 21 1 -3.7533 3.0747 -6.4244 0 0 1 + 822 21 1 -3.4409 3.3059 -5.4787 0 0 1 + 823 21 1 -3.4125 4.3296 -5.4664 0 0 1 + 824 21 1 -3.2568 5.2445 -5.7398 0 0 1 + 825 21 1 -2.6134 5.8485 -6.1414 0 0 1 + 826 21 1 -2.2049 5.8249 -7.0227 0 0 1 + 827 21 1 -2.0033 5.9132 -8.0090 0 0 1 + 828 21 1 -2.6667 5.1278 -8.1027 0 0 1 + 829 21 1 -3.1388 4.4598 -7.6221 0 0 1 + 830 21 1 -3.3803 3.5637 -7.3262 0 0 1 + 831 21 1 -2.8567 2.7529 -7.4185 0 0 1 + 832 21 1 -3.1902 2.0485 -7.9464 0 0 1 + 833 21 1 -2.4387 1.5751 8.1659 0 0 0 + 834 21 1 -2.0930 1.8052 7.3484 0 0 0 + 835 21 1 -2.9663 1.5314 6.9926 0 0 0 + 836 21 1 -3.3838 0.7469 6.6020 0 0 0 + 837 21 1 -4.2781 0.7544 6.9629 0 0 0 + 838 21 1 -5.2334 0.7754 6.9040 0 0 0 + 839 21 1 -4.8676 -0.1527 6.8395 0 0 0 + 840 21 1 -3.9852 -0.6770 6.8452 0 0 0 + 841 22 2 -3.2085 -2.4931 -0.9039 0 0 0 + 842 22 2 -3.4472 -2.4041 0.0272 0 0 0 + 843 22 2 -4.0621 -2.8939 -0.4868 0 0 0 + 844 22 2 -4.6887 -2.2306 -0.3350 0 0 0 + 845 22 2 -5.5047 -2.3523 -0.8761 0 0 0 + 846 22 2 -5.4354 -2.9261 -1.6563 0 0 0 + 847 22 2 -5.2248 -3.2954 -2.4821 0 0 0 + 848 22 2 -4.5797 -3.4779 -3.1631 0 0 0 + 849 22 2 -4.1390 -3.7226 -3.9615 0 0 0 + 850 22 2 -3.2377 -3.9361 -3.8555 0 0 0 + 851 22 2 -3.2809 -3.2328 -3.2184 0 0 0 + 852 22 2 -2.6552 -2.7422 -2.7343 0 0 0 + 853 22 2 -1.8722 -2.1151 -2.5433 0 0 0 + 854 22 2 -0.9399 -2.2224 -2.2986 0 0 0 + 855 22 2 -1.0352 -2.5011 -1.4032 0 0 0 + 856 22 2 -1.4981 -3.1490 -0.8708 0 0 0 + 857 22 2 -1.2504 -2.8809 0.0169 0 0 0 + 858 22 2 -1.5269 -2.6440 0.8688 0 0 0 + 859 22 2 -0.9115 -2.2273 1.4285 0 0 0 + 860 22 2 -0.0509 -1.9798 1.8366 0 0 0 + 861 22 2 0.5643 -1.2948 1.6465 0 0 0 + 862 22 2 1.3712 -0.8394 1.4632 0 0 0 + 863 22 2 1.8637 -1.0052 0.6543 0 0 0 + 864 22 2 2.4484 -1.2919 1.4043 0 0 0 + 865 22 2 3.2968 -1.6124 1.6717 0 0 0 + 866 22 2 4.1787 -1.4555 2.0959 0 0 0 + 867 22 2 5.0843 -1.1847 2.4235 0 0 0 + 868 22 2 4.5602 -0.6370 2.9217 0 0 0 + 869 22 2 4.6332 -0.1041 2.1095 0 0 0 + 870 22 2 4.7503 0.8237 1.9757 0 0 0 + 871 22 2 5.0609 1.4001 2.6860 0 0 0 + 872 22 2 4.9648 1.4723 3.6445 0 0 0 + 873 22 2 4.6345 1.4912 4.5370 0 0 0 + 874 22 2 3.9260 1.4517 5.1379 0 0 0 + 875 22 2 2.9870 1.5986 5.3666 0 0 0 + 876 22 2 2.5934 1.2919 6.1626 0 0 0 + 877 22 2 2.1377 1.4343 7.0225 0 0 0 + 878 22 2 1.7866 2.3235 7.2062 0 0 0 + 879 22 2 2.2236 3.0812 7.7115 0 0 0 + 880 22 2 2.7946 2.6417 -8.1326 0 0 1 + 881 23 1 3.2954 1.9172 3.4242 0 0 0 + 882 23 1 3.8773 1.2367 3.8654 0 0 0 + 883 23 1 4.3862 0.5056 4.0633 0 0 0 + 884 23 1 4.3586 -0.4288 4.2942 0 0 0 + 885 23 1 4.0477 -1.0479 4.8949 0 0 0 + 886 23 1 3.5717 -1.6480 5.4696 0 0 0 + 887 23 1 3.5374 -1.9475 6.4260 0 0 0 + 888 23 1 4.0125 -2.0021 7.2699 0 0 0 + 889 23 1 4.5952 -2.5972 7.8114 0 0 0 + 890 23 1 4.3282 -2.9331 -7.7620 0 0 1 + 891 23 1 3.6738 -3.0517 7.9870 0 0 0 + 892 23 1 3.0804 -2.7805 7.2723 0 0 0 + 893 23 1 2.8621 -3.1915 6.3839 0 0 0 + 894 23 1 1.9309 -3.2847 6.1196 0 0 0 + 895 23 1 1.3514 -2.8137 6.7167 0 0 0 + 896 23 1 0.6363 -2.5015 6.2135 0 0 0 + 897 23 1 0.2834 -3.3095 6.6107 0 0 0 + 898 23 1 -0.1410 -2.9882 7.4023 0 0 0 + 899 23 1 -0.8298 -3.4602 6.9400 0 0 0 + 900 23 1 -0.8688 -2.5164 6.6846 0 0 0 + 901 23 1 -1.6210 -2.9079 6.1891 0 0 0 + 902 23 1 -2.3952 -2.5130 6.7895 0 0 0 + 903 23 1 -1.8298 -1.7848 6.7828 0 0 0 + 904 23 1 -1.0791 -1.5635 7.3162 0 0 0 + 905 23 1 -0.6301 -0.6730 7.5231 0 0 0 + 906 23 1 0.1482 -0.1591 7.7549 0 0 0 + 907 23 1 0.6971 -0.7287 -8.1425 0 0 1 + 908 23 1 1.0692 -0.9660 -7.3018 0 0 1 + 909 23 1 0.2695 -1.2250 -6.8830 0 0 1 + 910 23 1 -0.5026 -0.7708 -6.4287 0 0 1 + 911 23 1 -1.1775 -0.3974 -6.9972 0 0 1 + 912 23 1 -2.1085 -0.3679 -7.3044 0 0 1 + 913 23 1 -2.8738 -0.4110 -7.8206 0 0 1 + 914 23 1 -3.7560 -0.5862 -8.2099 0 0 1 + 915 23 1 -4.2720 -1.3899 8.0432 0 0 0 + 916 23 1 -4.2607 -2.4205 8.0795 0 0 0 + 917 23 1 -4.3328 -3.3367 -8.0376 0 0 1 + 918 23 1 -4.1010 -4.2223 -7.8160 0 0 1 + 919 23 1 -3.9926 -5.0875 8.1687 0 0 0 + 920 23 1 -4.8656 -5.2191 7.9655 0 0 0 + 921 24 2 3.4569 5.1644 1.7969 0 0 0 + 922 24 2 2.7015 5.3224 1.2124 0 0 0 + 923 24 2 2.5220 6.1465 0.8003 0 0 0 + 924 24 2 1.9798 7.0320 0.7218 0 0 0 + 925 24 2 1.4861 7.3241 -0.1108 0 0 0 + 926 24 2 2.1828 7.8762 -0.5012 0 0 0 + 927 24 2 2.7604 7.6196 0.2154 0 0 0 + 928 24 2 3.4467 7.3765 0.8581 0 0 0 + 929 24 2 4.0634 8.0660 0.9766 0 0 0 + 930 24 2 4.6418 7.2839 0.7406 0 0 0 + 931 24 2 5.4900 6.9240 1.1378 0 0 0 + 932 24 2 6.3729 7.0444 1.5699 0 0 0 + 933 24 2 6.7279 7.0976 2.4293 0 0 0 + 934 24 2 7.3987 7.1421 1.7731 0 0 0 + 935 24 2 7.7215 6.2621 1.6809 0 0 0 + 936 24 2 6.8688 6.1993 2.0760 0 0 0 + 937 24 2 5.9851 5.9049 2.3566 0 0 0 + 938 24 2 5.1338 5.6813 2.8423 0 0 0 + 939 24 2 5.7331 4.8670 2.6586 0 0 0 + 940 24 2 6.3764 4.1670 2.6899 0 0 0 + 941 24 2 6.6963 3.4812 2.0639 0 0 0 + 942 24 2 6.0696 3.2200 1.3791 0 0 0 + 943 24 2 6.2166 2.3590 0.9337 0 0 0 + 944 24 2 6.5420 1.7780 1.5762 0 0 0 + 945 24 2 6.5533 0.8652 1.3070 0 0 0 + 946 24 2 6.6337 0.5087 2.1385 0 0 0 + 947 24 2 6.5352 -0.1943 1.5456 0 0 0 + 948 24 2 6.0361 -0.0451 0.7291 0 0 0 + 949 24 2 5.4614 0.4524 0.1219 0 0 0 + 950 24 2 4.6325 0.9486 -0.1585 0 0 0 + 951 24 2 3.6837 0.9598 0.1619 0 0 0 + 952 24 2 4.0374 1.7248 0.5984 0 0 0 + 953 24 2 4.5978 2.1498 -0.1666 0 0 0 + 954 24 2 4.9400 1.8583 -0.9890 0 0 0 + 955 24 2 4.6608 1.0852 -1.4993 0 0 0 + 956 24 2 5.5915 1.0782 -1.7072 0 0 0 + 957 24 2 6.5344 0.9677 -1.6802 0 0 0 + 958 24 2 7.3339 0.4246 -1.7086 0 0 0 + 959 24 2 -8.2111 0.3249 -2.0230 1 0 0 + 960 24 2 -7.5986 -0.2041 -2.4930 1 0 0 + 961 25 1 1.1018 6.5419 -1.0492 0 0 0 + 962 25 1 0.7829 6.0552 -1.7940 0 0 0 + 963 25 1 0.3232 5.2536 -1.9575 0 0 0 + 964 25 1 -0.3870 5.5549 -2.4903 0 0 0 + 965 25 1 -0.7171 4.6645 -2.7848 0 0 0 + 966 25 1 -0.9951 3.7386 -2.6912 0 0 0 + 967 25 1 -1.1320 3.3205 -1.7807 0 0 0 + 968 25 1 -2.0533 3.4871 -1.6876 0 0 0 + 969 25 1 -2.8586 2.9465 -1.6251 0 0 0 + 970 25 1 -3.2223 2.1782 -2.0798 0 0 0 + 971 25 1 -3.8274 1.5116 -2.3784 0 0 0 + 972 25 1 -3.7598 0.5583 -2.4255 0 0 0 + 973 25 1 -3.3623 1.0377 -1.6519 0 0 0 + 974 25 1 -3.7586 1.2489 -0.7809 0 0 0 + 975 25 1 -4.3868 1.8300 -0.3896 0 0 0 + 976 25 1 -4.4920 2.7031 0.0416 0 0 0 + 977 25 1 -4.5043 3.4555 0.6085 0 0 0 + 978 25 1 -3.8981 4.0194 1.0515 0 0 0 + 979 25 1 -3.6762 4.9798 1.2363 0 0 0 + 980 25 1 -4.5673 5.2820 1.0865 0 0 0 + 981 25 1 -5.4984 5.5255 1.0121 0 0 0 + 982 25 1 -5.9771 5.5160 1.8017 0 0 0 + 983 25 1 -5.9053 5.9709 2.6545 0 0 0 + 984 25 1 -5.0208 5.8803 2.9937 0 0 0 + 985 25 1 -4.0696 5.7920 3.1605 0 0 0 + 986 25 1 -3.8383 5.0120 2.6410 0 0 0 + 987 25 1 -3.1389 4.8167 2.0440 0 0 0 + 988 25 1 -2.8180 5.1639 2.8886 0 0 0 + 989 25 1 -2.2268 5.4889 2.2516 0 0 0 + 990 25 1 -1.2954 5.4721 2.1408 0 0 0 + 991 25 1 -0.9482 4.7582 1.5980 0 0 0 + 992 25 1 -1.1984 3.9123 1.2988 0 0 0 + 993 25 1 -1.3266 2.9776 1.1003 0 0 0 + 994 25 1 -1.8233 2.8863 1.9327 0 0 0 + 995 25 1 -1.8924 2.2708 2.6444 0 0 0 + 996 25 1 -1.6463 1.8803 3.5120 0 0 0 + 997 25 1 -1.7654 1.9854 4.4310 0 0 0 + 998 25 1 -0.9154 2.2400 4.7759 0 0 0 + 999 25 1 -1.5993 2.4556 5.3462 0 0 0 + 1000 25 1 -1.9865 3.2290 4.9508 0 0 0 + 1001 26 2 -5.0634 -6.2137 1.9270 0 0 0 + 1002 26 2 -5.7061 -5.6388 1.6938 0 0 0 + 1003 26 2 -6.2581 -5.1139 1.0853 0 0 0 + 1004 26 2 -5.8511 -4.9377 0.2364 0 0 0 + 1005 26 2 -6.3867 -5.5208 -0.3550 0 0 0 + 1006 26 2 -5.5644 -5.3273 -0.8939 0 0 0 + 1007 26 2 -5.1327 -5.1200 -1.6727 0 0 0 + 1008 26 2 -5.0642 -5.9199 -2.1111 0 0 0 + 1009 26 2 -4.5887 -6.4716 -2.7031 0 0 0 + 1010 26 2 -3.6666 -6.4812 -2.4646 0 0 0 + 1011 26 2 -3.1918 -7.2461 -2.0077 0 0 0 + 1012 26 2 -2.5657 -7.9829 -1.8164 0 0 0 + 1013 26 2 -2.0614 -7.3778 -2.2872 0 0 0 + 1014 26 2 -2.4025 -6.6059 -1.9828 0 0 0 + 1015 26 2 -2.4316 -6.9387 -1.1572 0 0 0 + 1016 26 2 -2.3335 -7.8270 -0.7940 0 0 0 + 1017 26 2 -2.2653 7.7260 -0.4060 0 -1 0 + 1018 26 2 -1.4756 7.2541 -0.1894 0 -1 0 + 1019 26 2 -1.1298 6.6772 0.5406 0 -1 0 + 1020 26 2 -0.1865 6.3605 0.6373 0 -1 0 + 1021 26 2 0.5970 6.6257 1.0108 0 -1 0 + 1022 26 2 1.2021 6.3431 0.3506 0 -1 0 + 1023 26 2 2.0811 6.1351 -0.0391 0 -1 0 + 1024 26 2 2.9596 6.4281 -0.1493 0 -1 0 + 1025 26 2 3.7310 6.9279 -0.3688 0 -1 0 + 1026 26 2 3.8160 7.8172 -0.7560 0 -1 0 + 1027 26 2 3.8333 -7.9805 -0.0530 0 0 0 + 1028 26 2 3.5468 -7.4195 0.6407 0 0 0 + 1029 26 2 2.6606 -7.1129 0.9165 0 0 0 + 1030 26 2 2.8879 -7.4683 1.8264 0 0 0 + 1031 26 2 2.4346 -8.0314 2.4164 0 0 0 + 1032 26 2 1.8094 7.7149 2.0826 0 -1 0 + 1033 26 2 1.1968 7.0352 1.7291 0 -1 0 + 1034 26 2 0.3058 6.9117 2.1151 0 -1 0 + 1035 26 2 -0.3572 6.5682 2.6593 0 -1 0 + 1036 26 2 -1.3245 6.4873 2.9500 0 -1 0 + 1037 26 2 -1.0696 5.6857 3.3249 0 -1 0 + 1038 26 2 -1.8464 5.1136 3.1805 0 -1 0 + 1039 26 2 -1.5472 4.5147 2.4241 0 -1 0 + 1040 26 2 -2.0982 4.6927 1.6860 0 -1 0 + 1041 27 1 3.9908 -7.8489 -3.0641 0 0 0 + 1042 27 1 4.4635 8.2026 -2.1431 0 -1 0 + 1043 27 1 4.3965 -7.7086 -1.2717 0 0 0 + 1044 27 1 4.8984 -7.0784 -1.8176 0 0 0 + 1045 27 1 5.3630 -6.2847 -2.1934 0 0 0 + 1046 27 1 5.1148 -5.3875 -2.5245 0 0 0 + 1047 27 1 5.0606 -4.4265 -2.3608 0 0 0 + 1048 27 1 5.8833 -4.1736 -2.8460 0 0 0 + 1049 27 1 6.8084 -4.4782 -3.0253 0 0 0 + 1050 27 1 6.7710 -3.7543 -3.6761 0 0 0 + 1051 27 1 7.4166 -3.4463 -4.3159 0 0 0 + 1052 27 1 8.1365 -2.8114 -4.1892 0 0 0 + 1053 27 1 -7.4485 -2.4412 -3.8705 1 0 0 + 1054 27 1 -7.8650 -2.2661 -3.0241 1 0 0 + 1055 27 1 -7.9862 -1.9107 -2.1288 1 0 0 + 1056 27 1 -8.1035 -2.4289 -1.3160 1 0 0 + 1057 27 1 -7.3805 -1.8472 -1.2148 1 0 0 + 1058 27 1 -7.1040 -1.1289 -0.5657 1 0 0 + 1059 27 1 -6.2891 -0.8397 -0.2667 1 0 0 + 1060 27 1 -5.2162 -0.8708 -0.4393 1 0 0 + 1061 27 1 -4.3102 -0.5330 -0.4233 1 0 0 + 1062 27 1 -3.9641 0.3379 -0.1698 1 0 0 + 1063 27 1 -4.4316 0.8156 0.4648 1 0 0 + 1064 27 1 -4.1943 1.6457 0.8857 1 0 0 + 1065 27 1 -3.7659 2.5310 0.9608 1 0 0 + 1066 27 1 -3.2597 3.2977 0.7121 1 0 0 + 1067 27 1 -2.5632 2.8121 0.3421 1 0 0 + 1068 27 1 -2.3296 1.9726 -0.0298 1 0 0 + 1069 27 1 -1.7906 1.1556 0.1178 1 0 0 + 1070 27 1 -0.8454 1.1195 -0.1987 1 0 0 + 1071 27 1 -0.1270 1.5614 0.2124 1 0 0 + 1072 27 1 0.8180 1.6787 -0.0749 1 0 0 + 1073 27 1 1.1447 1.3071 -0.9330 1 0 0 + 1074 27 1 1.0671 0.6894 -0.1804 1 0 0 + 1075 27 1 0.0830 0.8005 -0.4675 1 0 0 + 1076 27 1 0.2392 0.3384 0.3177 1 0 0 + 1077 27 1 0.9543 0.4816 0.9186 1 0 0 + 1078 27 1 1.8782 0.1844 1.1480 1 0 0 + 1079 27 1 2.5960 0.7765 1.2713 1 0 0 + 1080 27 1 2.9269 1.5889 0.8008 1 0 0 + 1081 28 2 -3.8490 -1.1767 -3.2348 0 0 0 + 1082 28 2 -4.1166 -0.2133 -3.1837 0 0 0 + 1083 28 2 -4.8775 0.3045 -3.4400 0 0 0 + 1084 28 2 -5.2612 0.6826 -4.1849 0 0 0 + 1085 28 2 -5.8731 1.0105 -3.4872 0 0 0 + 1086 28 2 -6.4958 0.6146 -2.8046 0 0 0 + 1087 28 2 -6.7607 0.4482 -1.9493 0 0 0 + 1088 28 2 -6.9215 1.3183 -1.8739 0 0 0 + 1089 28 2 -6.6891 2.2217 -1.5197 0 0 0 + 1090 28 2 -6.0142 1.9490 -0.9798 0 0 0 + 1091 28 2 -5.5258 2.6461 -0.5495 0 0 0 + 1092 28 2 -4.9638 2.7724 -1.3683 0 0 0 + 1093 28 2 -5.5941 2.2742 -1.8618 0 0 0 + 1094 28 2 -6.0697 2.8855 -2.5109 0 0 0 + 1095 28 2 -5.9125 3.1580 -1.6517 0 0 0 + 1096 28 2 -5.1764 3.5772 -2.0558 0 0 0 + 1097 28 2 -5.0034 2.9762 -2.7691 0 0 0 + 1098 28 2 -5.7009 3.2769 -3.4150 0 0 0 + 1099 28 2 -5.2694 4.0844 -2.9918 0 0 0 + 1100 28 2 -5.0790 4.8339 -3.5601 0 0 0 + 1101 28 2 -4.8143 5.3383 -4.2780 0 0 0 + 1102 28 2 -4.4331 6.0260 -4.7959 0 0 0 + 1103 28 2 -4.2320 5.8019 -5.7835 0 0 0 + 1104 28 2 -5.0094 6.0747 -6.2529 0 0 0 + 1105 28 2 -5.7143 5.4965 -6.0592 0 0 0 + 1106 28 2 -4.9997 5.1425 -5.5513 0 0 0 + 1107 28 2 -5.1466 4.6319 -6.3188 0 0 0 + 1108 28 2 -5.9937 4.4243 -6.7816 0 0 0 + 1109 28 2 -6.7920 3.9612 -6.4865 0 0 0 + 1110 28 2 -6.8964 4.3370 -7.3626 0 0 0 + 1111 28 2 -7.3735 4.4566 -8.1847 0 0 0 + 1112 28 2 -7.9382 5.0743 7.7925 0 0 -1 + 1113 28 2 7.8386 5.5828 -8.1771 -1 0 0 + 1114 28 2 -8.1519 5.2599 -7.4132 0 0 0 + 1115 28 2 7.7295 4.5998 -8.0016 -1 0 0 + 1116 28 2 6.7770 4.8159 -7.8443 -1 0 0 + 1117 28 2 6.0955 4.6852 -7.1503 -1 0 0 + 1118 28 2 5.3532 4.6158 -6.5932 -1 0 0 + 1119 28 2 5.0958 4.5147 -5.6120 -1 0 0 + 1120 28 2 5.4547 3.8419 -4.9972 -1 0 0 + 1121 29 1 -5.1486 7.3007 5.4456 0 0 0 + 1122 29 1 -4.6403 7.9850 4.9936 0 0 0 + 1123 29 1 -4.7137 -8.1256 4.1041 0 1 0 + 1124 29 1 -4.6847 -7.8154 3.1588 0 1 0 + 1125 29 1 -4.1071 -7.1239 2.7099 0 1 0 + 1126 29 1 -3.2223 -6.9539 2.3244 0 1 0 + 1127 29 1 -2.3491 -6.5665 2.4025 0 1 0 + 1128 29 1 -1.8498 -7.2816 2.7661 0 1 0 + 1129 29 1 -1.8680 8.1477 2.7123 0 0 0 + 1130 29 1 -2.2596 7.3367 3.1604 0 0 0 + 1131 29 1 -2.2224 6.4526 3.5404 0 0 0 + 1132 29 1 -3.1775 6.1040 3.4805 0 0 0 + 1133 29 1 -3.3528 6.2960 4.3553 0 0 0 + 1134 29 1 -3.0625 6.7003 5.2228 0 0 0 + 1135 29 1 -2.3038 6.6964 5.7775 0 0 0 + 1136 29 1 -2.2797 6.7042 6.6919 0 0 0 + 1137 29 1 -2.9156 6.0223 6.8521 0 0 0 + 1138 29 1 -2.0657 5.6636 7.2453 0 0 0 + 1139 29 1 -2.7001 4.8721 7.1580 0 0 0 + 1140 29 1 -2.6151 4.8702 6.1299 0 0 0 + 1141 29 1 -3.2198 4.1822 5.6857 0 0 0 + 1142 29 1 -3.6825 3.4038 5.8608 0 0 0 + 1143 29 1 -4.3420 3.5133 6.5277 0 0 0 + 1144 29 1 -4.2221 4.0029 7.2838 0 0 0 + 1145 29 1 -3.9146 4.7125 7.7874 0 0 0 + 1146 29 1 -3.4892 5.5313 7.7189 0 0 0 + 1147 29 1 -3.5644 5.9480 -7.8443 0 0 1 + 1148 29 1 -3.0850 6.3778 -7.1230 0 0 1 + 1149 29 1 -2.4702 7.0716 -7.1120 0 0 1 + 1150 29 1 -1.5213 6.8648 -7.2705 0 0 1 + 1151 29 1 -0.8597 7.0053 -7.9144 0 0 1 + 1152 29 1 -1.3904 7.7660 -8.1956 0 0 1 + 1153 29 1 -2.3156 7.5475 -7.9781 0 0 1 + 1154 29 1 -2.9204 8.1667 -7.6148 0 0 1 + 1155 29 1 -3.3114 7.6611 -6.9743 0 0 1 + 1156 29 1 -3.8525 6.9246 -6.6584 0 0 1 + 1157 29 1 -3.7563 7.6702 -6.0559 0 0 1 + 1158 29 1 -4.6150 8.1351 -6.2590 0 0 1 + 1159 29 1 -4.9892 -7.4085 -6.3363 0 1 1 + 1160 29 1 -4.7031 -6.4350 -6.2362 0 1 1 + 1161 30 2 6.2037 -5.1746 5.5892 0 0 0 + 1162 30 2 6.5429 -4.9419 4.6778 0 0 0 + 1163 30 2 5.9371 -5.6459 4.5179 0 0 0 + 1164 30 2 5.4005 -6.0742 5.2642 0 0 0 + 1165 30 2 4.5465 -5.6905 5.5118 0 0 0 + 1166 30 2 3.8038 -6.2953 5.8439 0 0 0 + 1167 30 2 4.2378 -6.4675 6.7363 0 0 0 + 1168 30 2 4.2979 -7.3263 7.2311 0 0 0 + 1169 30 2 3.8488 -7.6989 8.0120 0 0 0 + 1170 30 2 4.4501 8.1328 7.5921 0 -1 0 + 1171 30 2 4.9577 7.3177 7.5767 0 -1 0 + 1172 30 2 5.5664 6.7120 7.9370 0 -1 0 + 1173 30 2 6.2473 6.9510 -7.9385 0 -1 1 + 1174 30 2 5.7664 6.6731 -7.1007 0 -1 1 + 1175 30 2 5.5549 5.7133 -6.9660 0 -1 1 + 1176 30 2 5.0627 5.1502 -7.5857 0 -1 1 + 1177 30 2 5.6842 4.7440 -8.2013 0 -1 1 + 1178 30 2 5.4098 4.7881 7.2479 0 -1 0 + 1179 30 2 5.8083 4.2955 6.4793 0 -1 0 + 1180 30 2 6.4709 3.6284 6.3807 0 -1 0 + 1181 30 2 7.0358 2.8691 6.1463 0 -1 0 + 1182 30 2 7.8730 3.1525 5.7953 0 -1 0 + 1183 30 2 -8.0861 3.5599 6.4290 1 -1 0 + 1184 30 2 7.6532 3.1217 6.9540 0 -1 0 + 1185 30 2 6.8696 3.1498 7.4830 0 -1 0 + 1186 30 2 6.9731 3.8322 8.1000 0 -1 0 + 1187 30 2 6.1772 4.0232 7.6202 0 -1 0 + 1188 30 2 5.8316 3.7537 -7.8506 0 -1 1 + 1189 30 2 5.1431 3.3834 -7.2623 0 -1 1 + 1190 30 2 4.4458 2.9205 -6.7443 0 -1 1 + 1191 30 2 4.4524 2.7396 -7.7111 0 -1 1 + 1192 30 2 4.0708 3.0865 7.9049 0 -1 0 + 1193 30 2 3.5644 3.8522 7.7504 0 -1 0 + 1194 30 2 2.6546 4.3283 8.0093 0 -1 0 + 1195 30 2 2.4352 3.6908 -7.7489 0 -1 1 + 1196 30 2 3.3718 3.4888 -7.6403 0 -1 1 + 1197 30 2 3.4233 2.6064 -7.2574 0 -1 1 + 1198 30 2 3.6107 1.7419 -7.6786 0 -1 1 + 1199 30 2 4.3462 1.2557 -8.0551 0 -1 1 + 1200 30 2 5.2215 1.0136 8.1067 0 -1 0 + 1201 31 1 6.9645 -2.1279 0.2899 0 0 0 + 1202 31 1 6.6737 -3.0482 0.3111 0 0 0 + 1203 31 1 5.8055 -3.0069 -0.2323 0 0 0 + 1204 31 1 5.5733 -2.1806 -0.6214 0 0 0 + 1205 31 1 5.6014 -1.2640 -0.7286 0 0 0 + 1206 31 1 5.9677 -1.2984 0.1759 0 0 0 + 1207 31 1 6.6846 -1.1720 0.8321 0 0 0 + 1208 31 1 5.8090 -1.5939 1.0933 0 0 0 + 1209 31 1 6.0328 -1.7027 2.0571 0 0 0 + 1210 31 1 6.6576 -1.8175 2.8194 0 0 0 + 1211 31 1 6.3060 -0.9848 3.1222 0 0 0 + 1212 31 1 5.4385 -0.7572 3.4350 0 0 0 + 1213 31 1 5.7235 -0.3870 2.5707 0 0 0 + 1214 31 1 5.6881 0.5534 2.7425 0 0 0 + 1215 31 1 4.7635 0.4213 3.0722 0 0 0 + 1216 31 1 3.7997 0.3516 3.1450 0 0 0 + 1217 31 1 3.4229 0.1383 4.0167 0 0 0 + 1218 31 1 3.8350 0.2124 4.9187 0 0 0 + 1219 31 1 4.3597 -0.2031 5.5559 0 0 0 + 1220 31 1 4.7544 -0.0273 6.4099 0 0 0 + 1221 31 1 5.6014 -0.3460 6.5425 0 0 0 + 1222 31 1 6.1658 -0.8708 7.1161 0 0 0 + 1223 31 1 7.0362 -1.2038 7.0888 0 0 0 + 1224 31 1 7.1158 -0.2462 7.1343 0 0 0 + 1225 31 1 7.3348 0.6810 7.2196 0 0 0 + 1226 31 1 6.9127 1.3020 7.7609 0 0 0 + 1227 31 1 6.6332 2.2645 7.8513 0 0 0 + 1228 31 1 6.0408 1.5479 -8.1848 0 0 1 + 1229 31 1 6.2694 0.6721 -7.9425 0 0 1 + 1230 31 1 6.5885 1.2675 -7.2467 0 0 1 + 1231 31 1 5.9206 0.8217 -6.7914 0 0 1 + 1232 31 1 5.0153 0.9311 -6.5212 0 0 1 + 1233 31 1 5.2502 0.3484 -5.7773 0 0 1 + 1234 31 1 5.6892 -0.0590 -5.0202 0 0 1 + 1235 31 1 5.6411 -0.5506 -4.1300 0 0 1 + 1236 31 1 5.1458 -1.3025 -4.1178 0 0 1 + 1237 31 1 4.3339 -1.5706 -3.6755 0 0 1 + 1238 31 1 4.7302 -1.9764 -2.9440 0 0 1 + 1239 31 1 5.6665 -2.2271 -2.6694 0 0 1 + 1240 31 1 6.5701 -2.2174 -2.4471 0 0 1 + 1241 32 2 -1.0057 -0.1671 1.3998 0 0 0 + 1242 32 2 -1.5498 0.3345 1.9657 0 0 0 + 1243 32 2 -0.8554 -0.0330 2.5583 0 0 0 + 1244 32 2 -0.5081 -0.8202 2.1135 0 0 0 + 1245 32 2 -0.5847 -1.3101 1.3020 0 0 0 + 1246 32 2 -0.1893 -1.8421 0.6479 0 0 0 + 1247 32 2 -0.3544 -2.7745 0.5651 0 0 0 + 1248 32 2 -0.7974 -3.5662 0.9101 0 0 0 + 1249 32 2 -0.9835 -3.8150 1.7975 0 0 0 + 1250 32 2 -1.5854 -4.0836 2.4831 0 0 0 + 1251 32 2 -2.3670 -4.1539 3.0170 0 0 0 + 1252 32 2 -2.6095 -4.6594 3.8185 0 0 0 + 1253 32 2 -2.5514 -4.3768 4.7260 0 0 0 + 1254 32 2 -2.2184 -4.2584 5.6010 0 0 0 + 1255 32 2 -2.7977 -4.6039 6.2843 0 0 0 + 1256 32 2 -2.9090 -5.1459 7.0558 0 0 0 + 1257 32 2 -3.4740 -5.6551 6.4647 0 0 0 + 1258 32 2 -3.2911 -6.1418 5.6993 0 0 0 + 1259 32 2 -4.0943 -6.0487 5.2528 0 0 0 + 1260 32 2 -5.0004 -5.9556 5.7504 0 0 0 + 1261 32 2 -4.7716 -6.0703 6.6398 0 0 0 + 1262 32 2 -4.2387 -6.1732 7.4936 0 0 0 + 1263 32 2 -4.2089 -5.3246 7.1549 0 0 0 + 1264 32 2 -4.1066 -4.4230 6.8694 0 0 0 + 1265 32 2 -4.0089 -4.1787 5.8899 0 0 0 + 1266 32 2 -5.0317 -4.2279 5.7505 0 0 0 + 1267 32 2 -4.8803 -5.0094 6.3420 0 0 0 + 1268 32 2 -4.4470 -5.0913 5.5438 0 0 0 + 1269 32 2 -3.4780 -5.1350 5.7161 0 0 0 + 1270 32 2 -2.8777 -5.4584 5.0222 0 0 0 + 1271 32 2 -3.0603 -6.3042 4.5228 0 0 0 + 1272 32 2 -3.1522 -5.5370 4.0398 0 0 0 + 1273 32 2 -3.7026 -5.2268 3.3178 0 0 0 + 1274 32 2 -3.1461 -4.8643 2.5687 0 0 0 + 1275 32 2 -2.7494 -4.2950 1.9455 0 0 0 + 1276 32 2 -3.0330 -3.4454 1.5955 0 0 0 + 1277 32 2 -3.6749 -2.7794 1.6471 0 0 0 + 1278 32 2 -4.6316 -2.8834 1.8616 0 0 0 + 1279 32 2 -5.2643 -3.5683 1.9459 0 0 0 + 1280 32 2 -5.6267 -4.1182 1.2282 0 0 0 + 1281 33 1 -0.8549 1.4349 4.1016 0 0 0 + 1282 33 1 -0.5281 1.9079 3.3651 0 0 0 + 1283 33 1 -0.3525 2.8114 3.7131 0 0 0 + 1284 33 1 -0.5359 3.7024 3.8119 0 0 0 + 1285 33 1 0.1970 4.2054 3.4425 0 0 0 + 1286 33 1 0.1745 3.3510 2.9548 0 0 0 + 1287 33 1 0.6410 2.5180 2.9992 0 0 0 + 1288 33 1 0.0114 2.0698 2.3944 0 0 0 + 1289 33 1 -0.0226 1.8354 1.4683 0 0 0 + 1290 33 1 0.0232 2.4050 0.6590 0 0 0 + 1291 33 1 0.7487 2.6398 0.1066 0 0 0 + 1292 33 1 0.6278 2.8983 -0.8361 0 0 0 + 1293 33 1 0.0173 2.1520 -0.9211 0 0 0 + 1294 33 1 -0.7217 1.5309 -1.0521 0 0 0 + 1295 33 1 -1.2832 1.1881 -1.8383 0 0 0 + 1296 33 1 -1.7701 1.1856 -1.0511 0 0 0 + 1297 33 1 -2.3177 0.4736 -1.4861 0 0 0 + 1298 33 1 -2.8391 -0.0266 -2.1137 0 0 0 + 1299 33 1 -2.1636 0.3546 -2.6437 0 0 0 + 1300 33 1 -1.5703 0.9441 -3.1368 0 0 0 + 1301 33 1 -1.1677 1.4059 -3.8984 0 0 0 + 1302 33 1 -1.3088 0.5483 -4.3268 0 0 0 + 1303 33 1 -1.2809 -0.2706 -4.7904 0 0 0 + 1304 33 1 -2.0577 -0.8166 -5.1258 0 0 0 + 1305 33 1 -2.6436 -0.2306 -5.5314 0 0 0 + 1306 33 1 -3.6450 -0.0346 -5.3750 0 0 0 + 1307 33 1 -4.4052 0.2344 -5.8560 0 0 0 + 1308 33 1 -4.5908 -0.7171 -6.1561 0 0 0 + 1309 33 1 -5.4531 -0.8992 -5.8500 0 0 0 + 1310 33 1 -5.5945 -1.3816 -4.9813 0 0 0 + 1311 33 1 -6.3195 -1.7816 -4.5704 0 0 0 + 1312 33 1 -6.4115 -1.7611 -3.6116 0 0 0 + 1313 33 1 -5.7954 -0.9771 -3.8395 0 0 0 + 1314 33 1 -5.8349 -0.1625 -3.3734 0 0 0 + 1315 33 1 -5.9699 -0.0919 -4.3687 0 0 0 + 1316 33 1 -6.3842 -0.1231 -5.2295 0 0 0 + 1317 33 1 -7.3077 -0.0297 -5.5870 0 0 0 + 1318 33 1 -7.2186 -0.4223 -6.4912 0 0 0 + 1319 33 1 -7.0819 -1.0133 -7.2580 0 0 0 + 1320 33 1 -6.3050 -0.8821 -7.8212 0 0 0 + 1321 34 2 -2.9155 1.0394 -2.7384 0 0 0 + 1322 34 2 -2.5110 1.6287 -3.3408 0 0 0 + 1323 34 2 -1.7275 2.1461 -3.4864 0 0 0 + 1324 34 2 -1.3040 2.5515 -2.6807 0 0 0 + 1325 34 2 -0.6084 2.3460 -2.1374 0 0 0 + 1326 34 2 -0.9486 2.4371 -1.2454 0 0 0 + 1327 34 2 -1.7660 2.3099 -0.8589 0 0 0 + 1328 34 2 -1.4519 3.1673 -0.6224 0 0 0 + 1329 34 2 -2.3774 3.2153 -0.7161 0 0 0 + 1330 34 2 -3.1013 3.8097 -1.0113 0 0 0 + 1331 34 2 -3.6261 4.6856 -0.9732 0 0 0 + 1332 34 2 -2.8513 5.2603 -0.6419 0 0 0 + 1333 34 2 -1.8725 5.3495 -0.4935 0 0 0 + 1334 34 2 -0.9411 5.4275 -0.1198 0 0 0 + 1335 34 2 -0.8359 6.2241 -0.5745 0 0 0 + 1336 34 2 -1.5118 6.1127 -1.2628 0 0 0 + 1337 34 2 -1.9079 6.9521 -1.6054 0 0 0 + 1338 34 2 -2.7317 7.4121 -1.6090 0 0 0 + 1339 34 2 -3.4666 8.0289 -1.3943 0 0 0 + 1340 34 2 -4.2552 -8.0321 -1.0579 0 1 0 + 1341 34 2 -4.7029 -7.2298 -1.0757 0 1 0 + 1342 34 2 -5.6060 -7.4985 -1.1609 0 1 0 + 1343 34 2 -6.4074 -6.8425 -1.1900 0 1 0 + 1344 34 2 -7.0415 -6.5306 -1.8340 0 1 0 + 1345 34 2 -7.7161 -5.8219 -1.8713 0 1 0 + 1346 34 2 -7.9741 -5.5817 -2.7660 0 1 0 + 1347 34 2 8.0254 -6.4097 -2.4327 -1 1 0 + 1348 34 2 -7.5507 -6.6087 -2.7872 0 1 0 + 1349 34 2 -6.5867 -6.7552 -2.9808 0 1 0 + 1350 34 2 -6.3672 -7.6597 -3.2591 0 1 0 + 1351 34 2 -6.3287 -7.1039 -4.0192 0 1 0 + 1352 34 2 -5.8712 -6.2635 -3.9620 0 1 0 + 1353 34 2 -5.0462 -5.7811 -3.6667 0 1 0 + 1354 34 2 -4.9413 -5.0504 -3.0048 0 1 0 + 1355 34 2 -4.6051 -4.3177 -2.4094 0 1 0 + 1356 34 2 -3.7886 -3.7452 -2.4746 0 1 0 + 1357 34 2 -4.3120 -3.0209 -2.0915 0 1 0 + 1358 34 2 -4.7389 -2.1924 -2.4553 0 1 0 + 1359 34 2 -4.3895 -1.4591 -1.9306 0 1 0 + 1360 34 2 -4.9661 -1.5195 -1.1874 0 1 0 + 1361 35 1 -2.4598 -1.4739 -6.9290 0 0 0 + 1362 35 1 -1.5313 -1.3843 -7.2260 0 0 0 + 1363 35 1 -0.6175 -1.4965 -7.3896 0 0 0 + 1364 35 1 0.2580 -1.6403 -7.8711 0 0 0 + 1365 35 1 1.2244 -2.0090 -7.7274 0 0 0 + 1366 35 1 1.6661 -2.8717 -7.9651 0 0 0 + 1367 35 1 1.4779 -3.7683 -7.5648 0 0 0 + 1368 35 1 1.7900 -4.0787 7.9390 0 0 -1 + 1369 35 1 1.0453 -3.5577 7.6209 0 0 -1 + 1370 35 1 0.9106 -2.6415 7.7367 0 0 -1 + 1371 35 1 0.4695 -2.0376 7.1858 0 0 -1 + 1372 35 1 0.5170 -1.0914 7.2906 0 0 -1 + 1373 35 1 1.0175 -0.3672 6.9128 0 0 -1 + 1374 35 1 0.7609 -0.2629 5.9522 0 0 -1 + 1375 35 1 1.0389 -1.0314 5.4356 0 0 -1 + 1376 35 1 0.0783 -1.0234 5.6500 0 0 -1 + 1377 35 1 -0.2184 -1.3511 6.4738 0 0 -1 + 1378 35 1 0.7215 -1.4790 6.3276 0 0 -1 + 1379 35 1 1.5929 -1.0017 6.3829 0 0 -1 + 1380 35 1 2.4027 -0.9060 5.9024 0 0 -1 + 1381 35 1 3.3172 -0.9652 6.2006 0 0 -1 + 1382 35 1 4.3331 -1.0920 5.9833 0 0 -1 + 1383 35 1 5.1331 -0.9517 5.4249 0 0 -1 + 1384 35 1 5.5334 -0.7893 4.6219 0 0 -1 + 1385 35 1 4.8434 -1.3113 4.1711 0 0 -1 + 1386 35 1 3.9277 -1.5242 3.8489 0 0 -1 + 1387 35 1 3.4956 -0.7837 3.3559 0 0 -1 + 1388 35 1 2.6452 -0.5255 3.2392 0 0 -1 + 1389 35 1 2.7067 0.4274 3.1816 0 0 -1 + 1390 35 1 2.7826 1.1593 3.8184 0 0 -1 + 1391 35 1 2.9814 0.8689 4.6893 0 0 -1 + 1392 35 1 2.3349 0.3427 5.2377 0 0 -1 + 1393 35 1 2.0124 -0.4739 4.8539 0 0 -1 + 1394 35 1 1.8862 -1.1274 4.1457 0 0 -1 + 1395 35 1 1.2452 -0.5079 3.7714 0 0 -1 + 1396 35 1 0.6321 0.1662 3.5852 0 0 -1 + 1397 35 1 0.5772 1.1138 3.2520 0 0 -1 + 1398 35 1 0.0790 0.3730 2.7546 0 0 -1 + 1399 35 1 0.4436 1.0913 2.1893 0 0 -1 + 1400 35 1 1.2378 0.7045 1.8813 0 0 -1 + 1401 36 2 -0.2287 -0.3096 6.6549 0 0 0 + 1402 36 2 -0.4463 0.4412 7.1150 0 0 0 + 1403 36 2 -1.3455 0.2952 7.2860 0 0 0 + 1404 36 2 -2.2059 0.7251 7.0747 0 0 0 + 1405 36 2 -1.9118 0.2048 6.3405 0 0 0 + 1406 36 2 -1.7675 1.1329 6.2385 0 0 0 + 1407 36 2 -2.0690 2.0222 6.3552 0 0 0 + 1408 36 2 -2.3845 2.8102 6.8574 0 0 0 + 1409 36 2 -2.8743 2.6080 7.6803 0 0 0 + 1410 36 2 -3.7085 2.7763 8.0591 0 0 0 + 1411 36 2 -4.2924 2.1569 -8.0523 0 0 1 + 1412 36 2 -5.0301 1.6496 -7.7493 0 0 1 + 1413 36 2 -4.6042 1.8749 -6.9621 0 0 1 + 1414 36 2 -4.0668 1.8532 -6.1971 0 0 1 + 1415 36 2 -4.1067 1.1565 -5.5130 0 0 1 + 1416 36 2 -3.6899 1.8879 -5.0768 0 0 1 + 1417 36 2 -4.0240 2.7062 -4.7223 0 0 1 + 1418 36 2 -3.4255 3.4282 -4.3468 0 0 1 + 1419 36 2 -3.7901 4.1616 -3.8724 0 0 1 + 1420 36 2 -4.1536 3.9423 -2.9404 0 0 1 + 1421 36 2 -4.5804 4.5809 -2.4126 0 0 1 + 1422 36 2 -3.6375 4.7810 -2.2666 0 0 1 + 1423 36 2 -3.9575 5.4094 -1.5444 0 0 1 + 1424 36 2 -3.8758 6.3700 -1.9311 0 0 1 + 1425 36 2 -3.1222 6.6318 -2.5061 0 0 1 + 1426 36 2 -2.4920 7.3943 -2.6061 0 0 1 + 1427 36 2 -1.7412 7.8917 -2.2653 0 0 1 + 1428 36 2 -1.6292 7.9646 -1.3756 0 0 1 + 1429 36 2 -0.6903 7.6677 -1.2050 0 0 1 + 1430 36 2 -0.1249 -7.8869 -1.1391 0 1 1 + 1431 36 2 0.4182 -7.1237 -0.9699 0 1 1 + 1432 36 2 1.1716 -7.0720 -0.4392 0 1 1 + 1433 36 2 1.6103 -7.2367 0.4045 0 1 1 + 1434 36 2 1.8270 -7.9085 1.0989 0 1 1 + 1435 36 2 2.6136 8.0014 1.1770 0 0 1 + 1436 36 2 2.7774 7.3740 1.8692 0 0 1 + 1437 36 2 2.2071 6.5811 1.7407 0 0 1 + 1438 36 2 1.4532 5.9359 1.6168 0 0 1 + 1439 36 2 1.6383 5.3742 2.3544 0 0 1 + 1440 36 2 1.9594 5.2903 3.2556 0 0 1 + 1441 37 1 -7.6768 6.7893 -5.1347 0 0 0 + 1442 37 1 -7.4507 5.8697 -5.0645 0 0 0 + 1443 37 1 -6.7082 5.6527 -4.4692 0 0 0 + 1444 37 1 -6.7792 6.5925 -4.1762 0 0 0 + 1445 37 1 -7.2442 6.6922 -3.3589 0 0 0 + 1446 37 1 -6.9943 5.7912 -3.5018 0 0 0 + 1447 37 1 -6.4597 4.9705 -3.7014 0 0 0 + 1448 37 1 -6.2450 4.8239 -2.7791 0 0 0 + 1449 37 1 -5.7483 4.5065 -2.0209 0 0 0 + 1450 37 1 -6.4816 3.9400 -2.2302 0 0 0 + 1451 37 1 -7.3324 4.1696 -1.7704 0 0 0 + 1452 37 1 -8.0461 3.8782 -2.2938 0 0 0 + 1453 37 1 -7.2826 4.2562 -2.7937 0 0 0 + 1454 37 1 -7.6185 4.2443 -3.6484 0 0 0 + 1455 37 1 7.9385 3.7235 -3.5464 -1 0 0 + 1456 37 1 7.7962 3.1546 -2.7747 -1 0 0 + 1457 37 1 7.5695 2.3754 -2.3736 -1 0 0 + 1458 37 1 7.2425 1.8418 -1.6574 -1 0 0 + 1459 37 1 7.1399 2.5751 -1.0520 -1 0 0 + 1460 37 1 6.2552 2.8697 -1.0055 -1 0 0 + 1461 37 1 6.1935 3.7875 -1.2985 -1 0 0 + 1462 37 1 6.6611 4.5841 -1.5927 -1 0 0 + 1463 37 1 7.2392 5.3226 -1.7131 -1 0 0 + 1464 37 1 7.7636 5.7741 -2.3397 -1 0 0 + 1465 37 1 7.6579 6.7914 -2.4334 -1 0 0 + 1466 37 1 8.1295 6.8730 -3.2469 -1 0 0 + 1467 37 1 7.5012 7.2192 -3.9123 -1 0 0 + 1468 37 1 7.5035 7.5087 -4.8261 -1 0 0 + 1469 37 1 6.5772 7.5695 -5.1935 -1 0 0 + 1470 37 1 5.9562 -8.1151 -5.2916 -1 1 0 + 1471 37 1 5.6797 -7.3561 -4.8353 -1 1 0 + 1472 37 1 5.9665 -6.6248 -4.2162 -1 1 0 + 1473 37 1 5.4127 -5.7952 -4.3606 -1 1 0 + 1474 37 1 5.4153 -4.9847 -3.8510 -1 1 0 + 1475 37 1 6.0373 -5.3426 -3.1535 -1 1 0 + 1476 37 1 6.2837 -5.7448 -2.3760 -1 1 0 + 1477 37 1 6.8267 -6.5318 -2.6128 -1 1 0 + 1478 37 1 7.3521 -7.2669 -2.1803 -1 1 0 + 1479 37 1 6.9759 -7.4648 -1.3355 -1 1 0 + 1480 37 1 7.0244 8.1910 -0.8438 -1 0 0 + 1481 38 2 1.6262 -7.7338 -5.6136 0 0 0 + 1482 38 2 1.8553 7.8353 -5.2341 0 -1 0 + 1483 38 2 2.2108 7.4241 -4.3260 0 -1 0 + 1484 38 2 2.2827 7.9419 -3.5497 0 -1 0 + 1485 38 2 1.4705 -8.1156 -3.1458 0 0 0 + 1486 38 2 1.8984 -7.3442 -2.7753 0 0 0 + 1487 38 2 2.7663 -7.6211 -2.4794 0 0 0 + 1488 38 2 3.3286 8.1143 -1.9988 0 -1 0 + 1489 38 2 3.2541 7.4048 -1.3969 0 -1 0 + 1490 38 2 2.3790 7.1135 -1.4671 0 -1 0 + 1491 38 2 1.6417 6.6320 -1.9568 0 -1 0 + 1492 38 2 2.0995 5.9166 -1.6229 0 -1 0 + 1493 38 2 3.0322 6.1630 -1.8010 0 -1 0 + 1494 38 2 3.9666 6.4421 -1.5343 0 -1 0 + 1495 38 2 4.3373 7.2908 -1.6226 0 -1 0 + 1496 38 2 4.8751 7.4219 -0.8355 0 -1 0 + 1497 38 2 5.5541 7.8929 -0.3321 0 -1 0 + 1498 38 2 6.4329 8.0411 -0.0129 0 -1 0 + 1499 38 2 6.0685 7.1921 0.3235 0 -1 0 + 1500 38 2 6.1004 6.2513 0.3501 0 -1 0 + 1501 38 2 6.0469 6.1090 1.3447 0 -1 0 + 1502 38 2 5.4808 5.3455 1.5562 0 -1 0 + 1503 38 2 5.8030 5.1803 0.6617 0 -1 0 + 1504 38 2 4.9496 4.6359 0.6543 0 -1 0 + 1505 38 2 4.3362 5.2111 1.1013 0 -1 0 + 1506 38 2 4.6079 5.6144 1.9351 0 -1 0 + 1507 38 2 4.7526 6.7135 1.9995 0 -1 0 + 1508 38 2 4.8771 7.6848 1.8567 0 -1 0 + 1509 38 2 4.8462 -7.7809 1.5556 0 0 0 + 1510 38 2 4.6495 -7.3523 0.6686 0 0 0 + 1511 38 2 4.6870 -7.2032 -0.3062 0 0 0 + 1512 38 2 5.4567 -7.4937 -0.8514 0 0 0 + 1513 38 2 5.4929 -6.5491 -1.1156 0 0 0 + 1514 38 2 5.9976 -6.4239 -0.3486 0 0 0 + 1515 38 2 6.4112 -7.3022 -0.3325 0 0 0 + 1516 38 2 7.2811 -7.5930 0.0465 0 0 0 + 1517 38 2 7.8139 -7.5126 -0.7500 0 0 0 + 1518 38 2 -8.1639 -7.3838 -1.6244 1 0 0 + 1519 38 2 8.1274 -7.8838 -2.4608 0 0 0 + 1520 38 2 7.8787 -7.2076 -3.1252 0 0 0 + 1521 39 1 -3.5941 0.1628 -7.3327 0 0 0 + 1522 39 1 -3.0208 0.9217 -7.2859 0 0 0 + 1523 39 1 -2.1712 1.4990 -7.2565 0 0 0 + 1524 39 1 -1.4173 1.4127 -7.7872 0 0 0 + 1525 39 1 -1.0781 1.2784 7.7853 0 0 -1 + 1526 39 1 -1.0602 1.4272 6.8606 0 0 -1 + 1527 39 1 -0.2123 1.8170 6.7634 0 0 -1 + 1528 39 1 0.6348 2.1954 7.1088 0 0 -1 + 1529 39 1 1.0064 2.1185 7.9368 0 0 -1 + 1530 39 1 0.5113 2.9026 7.8996 0 0 -1 + 1531 39 1 0.9668 3.3192 7.2758 0 0 -1 + 1532 39 1 0.5481 4.2144 7.2406 0 0 -1 + 1533 39 1 0.2836 4.7296 6.4692 0 0 -1 + 1534 39 1 -0.2649 4.5881 5.7376 0 0 -1 + 1535 39 1 -0.5840 4.3785 4.7419 0 0 -1 + 1536 39 1 -1.5757 4.3522 4.6625 0 0 -1 + 1537 39 1 -2.4630 4.2993 5.0467 0 0 -1 + 1538 39 1 -3.3150 4.2221 4.5639 0 0 -1 + 1539 39 1 -3.1731 3.2384 4.4634 0 0 -1 + 1540 39 1 -4.0874 3.3709 4.2459 0 0 -1 + 1541 39 1 -4.4588 3.6254 5.1359 0 0 -1 + 1542 39 1 -4.7227 2.7186 5.2808 0 0 -1 + 1543 39 1 -4.0889 2.4940 6.0053 0 0 -1 + 1544 39 1 -3.5160 2.7506 6.8038 0 0 -1 + 1545 39 1 -3.2189 3.6247 6.7466 0 0 -1 + 1546 39 1 -3.2208 3.8093 7.7169 0 0 -1 + 1547 39 1 -2.2950 3.5873 7.7873 0 0 -1 + 1548 39 1 -1.7018 2.9412 8.1169 0 0 -1 + 1549 39 1 -1.7298 2.3939 -7.5165 0 0 0 + 1550 39 1 -1.8887 2.3712 -6.5574 0 0 0 + 1551 39 1 -0.9285 2.4482 -6.6955 0 0 0 + 1552 39 1 -0.0887 2.1188 -6.5766 0 0 0 + 1553 39 1 0.5940 1.4508 -6.2836 0 0 0 + 1554 39 1 1.3980 1.7025 -5.8932 0 0 0 + 1555 39 1 2.0799 1.1018 -6.2630 0 0 0 + 1556 39 1 2.7245 1.8129 -6.1154 0 0 0 + 1557 39 1 3.2605 2.5230 -6.1241 0 0 0 + 1558 39 1 2.8839 2.9913 -5.4186 0 0 0 + 1559 39 1 3.2666 3.8169 -5.0578 0 0 0 + 1560 39 1 4.1713 4.0971 -5.1054 0 0 0 + 1561 40 2 5.1484 6.5758 3.2338 0 0 0 + 1562 40 2 4.2584 6.7042 2.9981 0 0 0 + 1563 40 2 4.3077 5.9356 3.5833 0 0 0 + 1564 40 2 4.1232 5.3284 2.8474 0 0 0 + 1565 40 2 3.7241 4.4956 2.5406 0 0 0 + 1566 40 2 4.3446 4.3550 1.8082 0 0 0 + 1567 40 2 5.2719 4.2473 1.6688 0 0 0 + 1568 40 2 6.2010 4.2828 1.5943 0 0 0 + 1569 40 2 7.2855 4.3320 1.7297 0 0 0 + 1570 40 2 7.7573 5.1296 1.2643 0 0 0 + 1571 40 2 -8.1481 4.5108 1.7741 1 0 0 + 1572 40 2 -7.9213 4.7290 2.6803 1 0 0 + 1573 40 2 -7.5849 4.1041 3.3228 1 0 0 + 1574 40 2 -7.4256 4.2021 4.2907 1 0 0 + 1575 40 2 -7.0015 4.7123 5.0427 1 0 0 + 1576 40 2 -6.8654 5.2370 5.8782 1 0 0 + 1577 40 2 -6.4043 4.6291 6.4598 1 0 0 + 1578 40 2 -7.0322 4.2527 7.1547 1 0 0 + 1579 40 2 -6.9860 3.4465 7.6128 1 0 0 + 1580 40 2 -6.6749 2.5668 7.4061 1 0 0 + 1581 40 2 -5.9698 3.0349 6.9513 1 0 0 + 1582 40 2 -6.0625 3.9374 7.1919 1 0 0 + 1583 40 2 -5.1560 3.9270 7.6179 1 0 0 + 1584 40 2 -4.8100 3.0672 7.9278 1 0 0 + 1585 40 2 -5.2632 2.6453 -7.8094 1 0 1 + 1586 40 2 -5.8155 2.1841 -7.1705 1 0 1 + 1587 40 2 -5.5620 2.3413 -6.2587 1 0 1 + 1588 40 2 -6.2120 1.6834 -5.8894 1 0 1 + 1589 40 2 -6.7314 1.6288 -6.6601 1 0 1 + 1590 40 2 -7.0055 1.2188 -7.4469 1 0 1 + 1591 40 2 -7.1647 1.2247 7.8996 1 0 0 + 1592 40 2 -7.2899 0.2911 7.7167 1 0 0 + 1593 40 2 -6.6115 -0.4521 7.4703 1 0 0 + 1594 40 2 -5.7394 -0.6674 7.6212 1 0 0 + 1595 40 2 -4.8986 -0.5339 8.1020 1 0 0 + 1596 40 2 -4.2964 0.1854 7.8492 1 0 0 + 1597 40 2 -3.4032 0.0949 7.4226 1 0 0 + 1598 40 2 -3.4686 0.9380 7.8357 1 0 0 + 1599 40 2 -3.9038 1.2665 -7.7917 1 0 1 + 1600 40 2 -4.0352 1.1382 -6.8857 1 0 1 + 1601 41 1 3.8411 4.1552 -3.6346 0 0 0 + 1602 41 1 4.7759 4.3472 -4.1432 0 0 0 + 1603 41 1 5.0187 5.1409 -4.6770 0 0 0 + 1604 41 1 4.1179 5.4516 -4.4336 0 0 0 + 1605 41 1 4.1247 5.9399 -3.6672 0 0 0 + 1606 41 1 4.3542 5.8699 -2.8071 0 0 0 + 1607 41 1 5.1691 5.6010 -2.4558 0 0 0 + 1608 41 1 6.0859 5.2725 -2.5349 0 0 0 + 1609 41 1 6.9248 5.1177 -2.9484 0 0 0 + 1610 41 1 7.4177 5.0466 -3.7679 0 0 0 + 1611 41 1 7.7958 4.4573 -4.3316 0 0 0 + 1612 41 1 -7.8421 3.9724 -4.6341 1 0 0 + 1613 41 1 -6.9382 4.2623 -4.5953 1 0 0 + 1614 41 1 -6.5331 3.9012 -3.7752 1 0 0 + 1615 41 1 -6.8979 3.3452 -3.1082 1 0 0 + 1616 41 1 -7.1779 3.1319 -2.2177 1 0 0 + 1617 41 1 -6.9805 3.1886 -1.2613 1 0 0 + 1618 41 1 -6.2995 3.4873 -0.5977 1 0 0 + 1619 41 1 -6.4033 4.2817 -1.0838 1 0 0 + 1620 41 1 -6.7698 5.0292 -1.6805 1 0 0 + 1621 41 1 -7.2913 5.8024 -2.0194 1 0 0 + 1622 41 1 -7.8259 6.5583 -2.2911 1 0 0 + 1623 41 1 -8.1597 7.4314 -1.9481 1 0 0 + 1624 41 1 -8.0739 7.9459 -1.0750 1 0 0 + 1625 41 1 -7.5134 -7.7429 -0.7283 1 1 0 + 1626 41 1 -7.3144 -6.8450 -0.4019 1 1 0 + 1627 41 1 -7.4301 -6.1072 0.1407 1 1 0 + 1628 41 1 -7.6729 -6.5247 0.9492 1 1 0 + 1629 41 1 -6.6873 -6.6661 0.9960 1 1 0 + 1630 41 1 -5.9395 -6.8219 1.5682 1 1 0 + 1631 41 1 -6.0667 -7.7402 1.8955 1 1 0 + 1632 41 1 -5.7418 -7.7082 2.8010 1 1 0 + 1633 41 1 -5.7043 7.7583 3.0952 1 0 0 + 1634 41 1 -6.4336 7.1498 3.2049 1 0 0 + 1635 41 1 -6.0793 6.9050 2.3050 1 0 0 + 1636 41 1 -6.6793 6.8513 1.4136 1 0 0 + 1637 41 1 -7.1115 6.5122 2.2175 1 0 0 + 1638 41 1 -7.2253 5.9916 3.0072 1 0 0 + 1639 41 1 -6.9222 6.0662 3.9414 1 0 0 + 1640 41 1 -6.5720 5.7459 4.8019 1 0 0 + 1641 42 2 -6.1782 4.0638 -8.2021 0 0 0 + 1642 42 2 -5.9249 3.1611 7.9770 0 0 -1 + 1643 42 2 -5.4200 2.4365 7.5178 0 0 -1 + 1644 42 2 -5.9076 1.5973 7.3205 0 0 -1 + 1645 42 2 -6.4148 0.7781 7.4163 0 0 -1 + 1646 42 2 -6.4354 0.7290 6.5136 0 0 -1 + 1647 42 2 -6.5908 0.8042 5.5809 0 0 -1 + 1648 42 2 -6.9058 0.3251 4.8200 0 0 -1 + 1649 42 2 -6.4957 -0.3410 4.2257 0 0 -1 + 1650 42 2 -5.7026 -0.8078 4.0968 0 0 -1 + 1651 42 2 -5.9337 -1.8013 4.0953 0 0 -1 + 1652 42 2 -5.2746 -2.4454 4.5612 0 0 -1 + 1653 42 2 -5.0874 -2.7710 5.4128 0 0 -1 + 1654 42 2 -4.1898 -2.5215 5.5233 0 0 -1 + 1655 42 2 -4.2298 -1.8951 4.7696 0 0 -1 + 1656 42 2 -3.6780 -1.5211 4.1160 0 0 -1 + 1657 42 2 -2.7480 -1.3949 4.1502 0 0 -1 + 1658 42 2 -2.2549 -1.8633 4.8084 0 0 -1 + 1659 42 2 -2.1260 -1.4290 5.6492 0 0 -1 + 1660 42 2 -2.8489 -1.5713 6.2579 0 0 -1 + 1661 42 2 -3.3335 -2.2627 6.7226 0 0 -1 + 1662 42 2 -3.4442 -1.5306 7.3258 0 0 -1 + 1663 42 2 -3.0996 -1.6747 8.1988 0 0 -1 + 1664 42 2 -2.8324 -2.3470 -7.6406 0 0 0 + 1665 42 2 -3.6849 -2.7474 -7.4487 0 0 0 + 1666 42 2 -3.6947 -3.4975 -6.8384 0 0 0 + 1667 42 2 -4.1358 -3.4550 -5.9822 0 0 0 + 1668 42 2 -4.9124 -3.1528 -5.5058 0 0 0 + 1669 42 2 -5.0514 -2.3132 -4.9119 0 0 0 + 1670 42 2 -4.5495 -1.6767 -5.3295 0 0 0 + 1671 42 2 -3.8095 -1.0609 -5.0477 0 0 0 + 1672 42 2 -3.3034 -1.2629 -4.2402 0 0 0 + 1673 42 2 -2.8637 -1.7576 -4.9453 0 0 0 + 1674 42 2 -2.2398 -2.3973 -4.6438 0 0 0 + 1675 42 2 -2.3107 -3.3429 -4.5569 0 0 0 + 1676 42 2 -2.4033 -3.0383 -3.6760 0 0 0 + 1677 42 2 -1.9107 -2.1782 -3.5723 0 0 0 + 1678 42 2 -1.7259 -1.4351 -4.0977 0 0 0 + 1679 42 2 -2.3477 -0.6934 -4.1338 0 0 0 + 1680 42 2 -2.0362 0.1301 -3.6557 0 0 0 + 1681 43 1 3.1026 -6.6714 -0.2992 0 0 0 + 1682 43 1 3.2189 -5.9432 0.3643 0 0 0 + 1683 43 1 3.1742 -5.8345 1.3151 0 0 0 + 1684 43 1 3.6327 -5.4751 2.0459 0 0 0 + 1685 43 1 3.5935 -4.8252 2.6944 0 0 0 + 1686 43 1 4.1944 -4.5598 2.0278 0 0 0 + 1687 43 1 5.1012 -4.8248 2.0924 0 0 0 + 1688 43 1 5.5750 -5.5289 2.4934 0 0 0 + 1689 43 1 5.8044 -4.9193 3.2616 0 0 0 + 1690 43 1 6.3202 -4.2634 3.7405 0 0 0 + 1691 43 1 6.2838 -3.5447 3.0816 0 0 0 + 1692 43 1 6.8832 -4.0329 2.4180 0 0 0 + 1693 43 1 7.2778 -3.2439 2.9037 0 0 0 + 1694 43 1 8.1103 -2.8264 3.0404 0 0 0 + 1695 43 1 -7.8752 -2.0655 2.7445 1 0 0 + 1696 43 1 -7.4160 -1.2722 2.6485 1 0 0 + 1697 43 1 -6.7480 -0.7727 3.0707 1 0 0 + 1698 43 1 -6.7194 -1.2273 3.8716 1 0 0 + 1699 43 1 -6.8707 -1.7629 4.7070 1 0 0 + 1700 43 1 -6.6565 -1.6771 5.6405 1 0 0 + 1701 43 1 -6.0965 -2.2170 6.0443 1 0 0 + 1702 43 1 -5.2781 -2.4051 6.4823 1 0 0 + 1703 43 1 -5.4839 -3.2578 6.0937 1 0 0 + 1704 43 1 -6.1562 -3.8476 5.7571 1 0 0 + 1705 43 1 -6.6391 -4.5840 5.5145 1 0 0 + 1706 43 1 -6.9219 -5.4674 5.5116 1 0 0 + 1707 43 1 -6.9197 -6.3870 4.9140 1 0 0 + 1708 43 1 -7.1772 -7.1116 4.4712 1 0 0 + 1709 43 1 -7.0971 -8.0237 4.1757 1 0 0 + 1710 43 1 -7.2457 7.6612 3.6870 1 -1 0 + 1711 43 1 -7.7011 6.8851 3.4903 1 -1 0 + 1712 43 1 7.8543 6.5594 3.7122 0 -1 0 + 1713 43 1 7.3780 6.1442 2.9679 0 -1 0 + 1714 43 1 8.0285 5.6551 2.4208 0 -1 0 + 1715 43 1 -8.1937 5.6627 3.3531 1 -1 0 + 1716 43 1 -7.5210 5.1709 3.8531 1 -1 0 + 1717 43 1 8.0397 4.7652 3.9914 0 -1 0 + 1718 43 1 7.2701 4.5727 3.4944 0 -1 0 + 1719 43 1 7.5938 4.1718 2.7047 0 -1 0 + 1720 43 1 7.8961 3.4621 2.1048 0 -1 0 + 1721 44 2 -3.4106 -0.3385 0.6545 0 0 0 + 1722 44 2 -3.3033 -0.5771 -0.2436 0 0 0 + 1723 44 2 -2.9173 0.1939 -0.6531 0 0 0 + 1724 44 2 -2.7333 1.1663 -0.6597 0 0 0 + 1725 44 2 -2.6681 1.9342 -1.2542 0 0 0 + 1726 44 2 -2.3630 1.5323 -1.9970 0 0 0 + 1727 44 2 -2.0145 2.4476 -1.9823 0 0 0 + 1728 44 2 -2.4612 2.9102 -2.6775 0 0 0 + 1729 44 2 -2.1133 3.7887 -2.8123 0 0 0 + 1730 44 2 -1.6921 4.3829 -2.2615 0 0 0 + 1731 44 2 -1.5047 5.2459 -2.6238 0 0 0 + 1732 44 2 -1.4611 6.1055 -3.1176 0 0 0 + 1733 44 2 -0.7019 5.6254 -3.4643 0 0 0 + 1734 44 2 -0.5183 6.2549 -4.2573 0 0 0 + 1735 44 2 -0.6024 7.0354 -4.7796 0 0 0 + 1736 44 2 -1.5998 7.2420 -4.6736 0 0 0 + 1737 44 2 -2.4625 6.9654 -5.0470 0 0 0 + 1738 44 2 -3.0617 6.6905 -5.6933 0 0 0 + 1739 44 2 -3.8372 6.9456 -5.2416 0 0 0 + 1740 44 2 -3.6602 7.5210 -4.4843 0 0 0 + 1741 44 2 -2.9087 6.9343 -4.1540 0 0 0 + 1742 44 2 -2.1815 6.8723 -3.4733 0 0 0 + 1743 44 2 -1.3025 7.2371 -3.6346 0 0 0 + 1744 44 2 -1.6078 8.1461 -3.2640 0 0 0 + 1745 44 2 -2.4307 -8.0383 -2.9558 0 1 0 + 1746 44 2 -3.2597 8.1136 -2.5961 0 0 0 + 1747 44 2 -3.6678 7.3759 -2.1953 0 0 0 + 1748 44 2 -4.2800 7.7192 -2.8090 0 0 0 + 1749 44 2 -4.7053 7.5951 -3.6425 0 0 0 + 1750 44 2 -4.6785 7.1652 -4.5188 0 0 0 + 1751 44 2 -4.5939 7.6317 -5.3645 0 0 0 + 1752 44 2 -4.7678 7.0844 -6.1035 0 0 0 + 1753 44 2 -4.9881 7.4220 -6.9695 0 0 0 + 1754 44 2 -4.9295 6.7992 -7.6127 0 0 0 + 1755 44 2 -5.3097 6.2535 8.1851 0 0 -1 + 1756 44 2 -5.3551 6.1413 7.1931 0 0 -1 + 1757 44 2 -4.8622 6.6091 6.5319 0 0 -1 + 1758 44 2 -5.4720 6.3969 5.8442 0 0 -1 + 1759 44 2 -6.0216 6.5835 5.0839 0 0 -1 + 1760 44 2 -6.5549 7.0890 4.3884 0 0 -1 + 1761 45 1 -4.9266 -7.8814 -7.2710 0 0 0 + 1762 45 1 -5.6916 8.0536 -7.4910 0 -1 0 + 1763 45 1 -5.9097 -7.6860 -6.8862 0 0 0 + 1764 45 1 -5.5398 -6.7905 -7.1421 0 0 0 + 1765 45 1 -5.4762 -6.2472 -7.9075 0 0 0 + 1766 45 1 -4.6838 -6.8096 -7.9382 0 0 0 + 1767 45 1 -4.2626 -6.8795 -7.0993 0 0 0 + 1768 45 1 -3.5906 -6.2560 -6.8806 0 0 0 + 1769 45 1 -2.8736 -5.6540 -6.5602 0 0 0 + 1770 45 1 -2.4426 -5.0651 -5.9834 0 0 0 + 1771 45 1 -2.4310 -4.2797 -5.4547 0 0 0 + 1772 45 1 -2.8534 -4.7403 -4.7634 0 0 0 + 1773 45 1 -3.1699 -5.1456 -4.0054 0 0 0 + 1774 45 1 -3.6551 -5.7575 -4.5567 0 0 0 + 1775 45 1 -3.1436 -6.5642 -4.6055 0 0 0 + 1776 45 1 -2.3543 -6.9341 -5.0249 0 0 0 + 1777 45 1 -1.7061 -7.2961 -5.7519 0 0 0 + 1778 45 1 -1.4997 -7.9407 -6.4279 0 0 0 + 1779 45 1 -1.7414 7.8376 -7.0625 0 -1 0 + 1780 45 1 -2.0958 7.4670 -6.2460 0 -1 0 + 1781 45 1 -2.6923 7.7615 -5.6460 0 -1 0 + 1782 45 1 -2.3109 -7.9752 -5.0782 0 0 0 + 1783 45 1 -1.3784 -8.1115 -5.2780 0 0 0 + 1784 45 1 -1.2136 7.4078 -5.7285 0 -1 0 + 1785 45 1 -1.7444 6.5968 -5.8170 0 -1 0 + 1786 45 1 -1.1540 6.2498 -5.2094 0 -1 0 + 1787 45 1 -1.1303 5.3243 -4.8247 0 -1 0 + 1788 45 1 -2.0083 5.0777 -4.7558 0 -1 0 + 1789 45 1 -2.9175 4.9370 -4.6265 0 -1 0 + 1790 45 1 -3.8889 4.8350 -4.6829 0 -1 0 + 1791 45 1 -4.7565 4.4822 -4.8634 0 -1 0 + 1792 45 1 -4.2119 3.7417 -4.9971 0 -1 0 + 1793 45 1 -4.2681 3.9036 -5.9274 0 -1 0 + 1794 45 1 -4.1758 4.5775 -6.6680 0 -1 0 + 1795 45 1 -3.8599 5.4484 -6.8713 0 -1 0 + 1796 45 1 -4.8367 5.4206 -7.0781 0 -1 0 + 1797 45 1 -5.5678 5.3688 -7.6741 0 -1 0 + 1798 45 1 -5.4642 4.9165 7.9410 0 -1 -1 + 1799 45 1 -6.2927 5.0490 7.4439 0 -1 -1 + 1800 45 1 -7.0449 5.4109 6.9169 0 -1 -1 + 1801 46 2 -5.0734 7.5316 -0.3499 0 0 0 + 1802 46 2 -5.2719 7.8281 -1.2529 0 0 0 + 1803 46 2 -5.0214 -7.9469 -1.8774 0 1 0 + 1804 46 2 -4.3312 -7.6413 -2.4997 0 1 0 + 1805 46 2 -5.1972 -7.8289 -2.8721 0 1 0 + 1806 46 2 -5.4596 -8.0687 -3.7145 0 1 0 + 1807 46 2 -5.7066 7.6529 -4.2796 0 0 0 + 1808 46 2 -5.6931 6.7716 -3.9927 0 0 0 + 1809 46 2 -5.9227 5.9074 -3.7542 0 0 0 + 1810 46 2 -5.4668 5.6649 -3.0010 0 0 0 + 1811 46 2 -4.6632 5.8968 -2.4222 0 0 0 + 1812 46 2 -4.1567 5.4296 -3.0748 0 0 0 + 1813 46 2 -3.5212 5.1852 -3.6929 0 0 0 + 1814 46 2 -2.8912 5.8662 -3.9581 0 0 0 + 1815 46 2 -2.5520 5.8796 -3.1025 0 0 0 + 1816 46 2 -2.0864 6.0010 -2.2059 0 0 0 + 1817 46 2 -2.0788 5.2508 -1.6313 0 0 0 + 1818 46 2 -2.6659 4.5579 -1.6752 0 0 0 + 1819 46 2 -3.0493 3.9078 -2.1747 0 0 0 + 1820 46 2 -3.1290 3.9178 -3.1621 0 0 0 + 1821 46 2 -2.4388 3.5815 -3.7168 0 0 0 + 1822 46 2 -1.6341 3.0635 -3.8064 0 0 0 + 1823 46 2 -1.2418 3.9532 -3.8469 0 0 0 + 1824 46 2 -1.8643 4.1238 -4.5160 0 0 0 + 1825 46 2 -2.4272 4.2211 -5.3349 0 0 0 + 1826 46 2 -2.2434 3.2709 -5.3844 0 0 0 + 1827 46 2 -1.3919 2.9138 -5.7560 0 0 0 + 1828 46 2 -0.5906 2.3963 -5.6612 0 0 0 + 1829 46 2 -0.8982 1.5417 -5.9970 0 0 0 + 1830 46 2 -1.7761 1.8046 -5.6164 0 0 0 + 1831 46 2 -2.0665 1.3630 -4.7865 0 0 0 + 1832 46 2 -2.9463 1.4318 -4.3533 0 0 0 + 1833 46 2 -3.6084 0.7454 -4.5125 0 0 0 + 1834 46 2 -4.1523 0.1391 -4.0850 0 0 0 + 1835 46 2 -4.7853 -0.5558 -4.0503 0 0 0 + 1836 46 2 -4.8225 -0.2681 -5.0089 0 0 0 + 1837 46 2 -5.2194 0.6267 -5.1452 0 0 0 + 1838 46 2 -5.6539 1.3977 -4.9418 0 0 0 + 1839 46 2 -5.6221 1.8203 -4.1154 0 0 0 + 1840 46 2 -6.1786 2.3169 -3.5213 0 0 0 + 1841 47 1 4.0372 -5.4311 3.5153 0 0 0 + 1842 47 1 3.8396 -4.7442 4.1617 0 0 0 + 1843 47 1 3.5098 -4.1710 3.4376 0 0 0 + 1844 47 1 3.8390 -3.4590 2.8270 0 0 0 + 1845 47 1 4.7546 -3.3806 2.6944 0 0 0 + 1846 47 1 5.2035 -3.3399 3.5734 0 0 0 + 1847 47 1 5.4228 -3.7441 4.3328 0 0 0 + 1848 47 1 5.7688 -4.1997 5.1025 0 0 0 + 1849 47 1 5.4999 -4.4422 5.9703 0 0 0 + 1850 47 1 5.7639 -3.9384 6.7484 0 0 0 + 1851 47 1 5.7824 -3.5249 7.6170 0 0 0 + 1852 47 1 5.8787 -2.6491 8.0564 0 0 0 + 1853 47 1 5.3909 -1.9476 -7.8926 0 0 1 + 1854 47 1 5.9140 -1.2419 8.1591 0 0 0 + 1855 47 1 6.8253 -0.9041 8.1743 0 0 0 + 1856 47 1 7.3073 -0.4056 -7.5522 0 0 1 + 1857 47 1 6.8346 0.1837 -6.9397 0 0 1 + 1858 47 1 7.4189 -0.0101 -6.1767 0 0 1 + 1859 47 1 8.1319 -0.6638 -6.0268 0 0 1 + 1860 47 1 -7.9139 -1.3801 -5.5417 1 0 1 + 1861 47 1 -7.1808 -1.9357 -5.2996 1 0 1 + 1862 47 1 -6.2654 -2.0831 -5.5055 1 0 1 + 1863 47 1 -5.4899 -2.0088 -6.0590 1 0 1 + 1864 47 1 -4.7162 -1.6702 -6.5209 1 0 1 + 1865 47 1 -4.5809 -2.6158 -6.5291 1 0 1 + 1866 47 1 -4.6708 -3.5086 -6.9437 1 0 1 + 1867 47 1 -4.2819 -4.3534 -6.6539 1 0 1 + 1868 47 1 -3.5720 -4.9585 -7.0711 1 0 1 + 1869 47 1 -3.5100 -4.7696 -6.1491 1 0 1 + 1870 47 1 -2.8354 -4.1971 -6.5649 1 0 1 + 1871 47 1 -3.1075 -3.5929 -5.9117 1 0 1 + 1872 47 1 -3.4290 -3.6169 -4.8968 1 0 1 + 1873 47 1 -3.2943 -2.7736 -4.4300 1 0 1 + 1874 47 1 -3.9330 -2.1146 -4.2322 1 0 1 + 1875 47 1 -4.7399 -1.6895 -4.1317 1 0 1 + 1876 47 1 -4.9011 -1.3787 -3.2777 1 0 1 + 1877 47 1 -4.9515 -0.6124 -2.6964 1 0 1 + 1878 47 1 -4.6618 0.0720 -2.1079 1 0 1 + 1879 47 1 -4.8633 0.0536 -1.1540 1 0 1 + 1880 47 1 -3.9142 0.3294 -1.2998 1 0 1 + 1881 48 2 5.5604 -4.0450 2.5597 0 0 0 + 1882 48 2 5.9687 -4.4908 1.8495 0 0 0 + 1883 48 2 5.2428 -4.1243 1.2759 0 0 0 + 1884 48 2 4.3590 -4.3252 0.9307 0 0 0 + 1885 48 2 3.8359 -5.0487 1.0735 0 0 0 + 1886 48 2 3.2781 -4.6394 0.3692 0 0 0 + 1887 48 2 2.3503 -4.2660 0.2865 0 0 0 + 1888 48 2 1.9453 -3.6522 0.9902 0 0 0 + 1889 48 2 1.1626 -3.2826 1.2991 0 0 0 + 1890 48 2 0.5285 -2.5793 1.0078 0 0 0 + 1891 48 2 1.2812 -1.9849 1.0635 0 0 0 + 1892 48 2 0.7533 -1.3335 0.5966 0 0 0 + 1893 48 2 1.2147 -1.7298 -0.1436 0 0 0 + 1894 48 2 2.1344 -2.0638 -0.0780 0 0 0 + 1895 48 2 2.7107 -1.3587 0.2974 0 0 0 + 1896 48 2 3.2149 -0.6337 0.6668 0 0 0 + 1897 48 2 2.9941 -0.2828 1.5733 0 0 0 + 1898 48 2 3.4645 -0.3800 2.4473 0 0 0 + 1899 48 2 3.3203 0.5027 2.2683 0 0 0 + 1900 48 2 3.9305 1.2057 2.4907 0 0 0 + 1901 48 2 3.9097 2.1046 2.5775 0 0 0 + 1902 48 2 3.6335 2.9223 2.2402 0 0 0 + 1903 48 2 3.1909 3.7791 1.9131 0 0 0 + 1904 48 2 3.4556 4.3352 1.1222 0 0 0 + 1905 48 2 2.7582 4.4892 0.5075 0 0 0 + 1906 48 2 2.6728 4.3720 -0.3976 0 0 0 + 1907 48 2 2.6877 3.8905 -1.2136 0 0 0 + 1908 48 2 3.4323 3.7544 -1.7870 0 0 0 + 1909 48 2 4.3030 4.2557 -1.5666 0 0 0 + 1910 48 2 4.7522 4.5932 -2.3263 0 0 0 + 1911 48 2 5.3080 4.2348 -3.0073 0 0 0 + 1912 48 2 6.2097 4.0788 -2.8362 0 0 0 + 1913 48 2 6.5609 3.3752 -3.3798 0 0 0 + 1914 48 2 7.2197 2.8865 -3.8320 0 0 0 + 1915 48 2 7.5423 2.1580 -4.3181 0 0 0 + 1916 48 2 7.8261 1.8086 -3.4782 0 0 0 + 1917 48 2 8.0460 0.8895 -3.2968 0 0 0 + 1918 48 2 -7.5878 0.7733 -2.8593 1 0 0 + 1919 48 2 -7.1484 0.4114 -3.6581 1 0 0 + 1920 48 2 -7.6254 0.4736 -4.4389 1 0 0 + 1921 49 1 -3.2336 -3.8108 3.8502 0 0 0 + 1922 49 1 -3.6852 -3.5671 4.7024 0 0 0 + 1923 49 1 -4.6033 -3.4409 4.9636 0 0 0 + 1924 49 1 -5.5384 -3.6745 4.8493 0 0 0 + 1925 49 1 -5.8645 -3.7823 3.9552 0 0 0 + 1926 49 1 -6.0210 -4.6346 3.5206 0 0 0 + 1927 49 1 -6.0247 -5.4106 3.9748 0 0 0 + 1928 49 1 -6.4274 -6.3685 3.8191 0 0 0 + 1929 49 1 -6.4003 -7.3163 3.8117 0 0 0 + 1930 49 1 -6.9096 -7.5405 3.0281 0 0 0 + 1931 49 1 -6.3819 -6.6628 2.8463 0 0 0 + 1932 49 1 -6.5092 -5.6828 2.8083 0 0 0 + 1933 49 1 -6.0236 -4.9484 2.4346 0 0 0 + 1934 49 1 -6.5962 -4.3574 1.9415 0 0 0 + 1935 49 1 -6.5184 -3.5144 1.4515 0 0 0 + 1936 49 1 -6.8107 -2.5398 1.5534 0 0 0 + 1937 49 1 -6.6342 -1.7354 1.9324 0 0 0 + 1938 49 1 -5.6455 -1.9978 2.1662 0 0 0 + 1939 49 1 -4.7746 -1.7208 2.0526 0 0 0 + 1940 49 1 -5.3154 -0.9070 2.1239 0 0 0 + 1941 49 1 -5.3627 -1.3682 1.2361 0 0 0 + 1942 49 1 -6.0149 -2.0111 0.9432 0 0 0 + 1943 49 1 -5.6063 -2.8799 1.2338 0 0 0 + 1944 49 1 -4.8072 -2.2359 1.0783 0 0 0 + 1945 49 1 -3.9195 -1.8692 1.0119 0 0 0 + 1946 49 1 -3.0800 -1.5893 0.6752 0 0 0 + 1947 49 1 -2.3457 -2.1933 0.3433 0 0 0 + 1948 49 1 -2.1825 -2.4463 -0.6220 0 0 0 + 1949 49 1 -2.2167 -2.6163 -1.5458 0 0 0 + 1950 49 1 -1.8533 -3.3541 -2.0711 0 0 0 + 1951 49 1 -1.4946 -4.0298 -2.6181 0 0 0 + 1952 49 1 -0.5987 -4.2851 -2.8035 0 0 0 + 1953 49 1 0.2847 -4.1054 -3.0282 0 0 0 + 1954 49 1 0.9979 -4.4964 -3.4521 0 0 0 + 1955 49 1 1.8552 -4.8014 -3.7785 0 0 0 + 1956 49 1 2.2676 -4.3018 -3.0885 0 0 0 + 1957 49 1 2.7500 -4.0274 -2.3037 0 0 0 + 1958 49 1 3.0649 -3.7011 -1.4653 0 0 0 + 1959 49 1 2.9505 -3.8817 -0.5466 0 0 0 + 1960 49 1 2.6630 -4.7629 -0.5789 0 0 0 + 1961 50 2 6.1498 3.5818 -0.1900 0 0 0 + 1962 50 2 7.1252 3.6743 -0.2234 0 0 0 + 1963 50 2 7.4267 4.4367 -0.7327 0 0 0 + 1964 50 2 7.7667 4.5303 -1.5912 0 0 0 + 1965 50 2 -8.0328 4.2108 -0.9752 1 0 0 + 1966 50 2 -7.2321 4.3219 -0.5641 1 0 0 + 1967 50 2 -7.1422 5.2589 -0.0497 1 0 0 + 1968 50 2 -8.1215 5.1427 -0.3926 1 0 0 + 1969 50 2 7.4439 5.5507 -0.6975 0 0 0 + 1970 50 2 7.1692 6.4224 -0.5032 0 0 0 + 1971 50 2 7.1329 7.3099 -0.1246 0 0 0 + 1972 50 2 7.0416 6.7055 0.5897 0 0 0 + 1973 50 2 6.8991 5.7319 0.5194 0 0 0 + 1974 50 2 6.7458 4.7867 0.6418 0 0 0 + 1975 50 2 6.7706 5.2816 1.4749 0 0 0 + 1976 50 2 6.8495 5.1612 2.4625 0 0 0 + 1977 50 2 6.4027 5.6039 3.2477 0 0 0 + 1978 50 2 6.1305 6.4830 3.3082 0 0 0 + 1979 50 2 5.6979 7.3156 3.5356 0 0 0 + 1980 50 2 5.6513 7.2361 2.5520 0 0 0 + 1981 50 2 5.0943 7.9108 2.8617 0 0 0 + 1982 50 2 4.9692 -7.5279 2.8354 0 1 0 + 1983 50 2 4.7868 -6.6690 3.1331 0 1 0 + 1984 50 2 5.1637 -5.8650 3.5928 0 1 0 + 1985 50 2 6.1450 -5.8784 3.5099 0 1 0 + 1986 50 2 6.7702 -5.2378 3.1413 0 1 0 + 1987 50 2 7.6340 -4.8478 3.5021 0 1 0 + 1988 50 2 -7.9268 -4.6769 3.9261 1 1 0 + 1989 50 2 -7.2552 -3.9764 4.0372 1 1 0 + 1990 50 2 -7.5669 -3.2682 3.5791 1 1 0 + 1991 50 2 -7.2080 -3.2593 2.6200 1 1 0 + 1992 50 2 -6.2563 -2.9543 2.5772 1 1 0 + 1993 50 2 -5.3233 -2.8902 2.8246 1 1 0 + 1994 50 2 -5.9965 -2.7817 3.5260 1 1 0 + 1995 50 2 -6.7993 -3.0242 4.0466 1 1 0 + 1996 50 2 -7.4506 -2.8407 4.7783 1 1 0 + 1997 50 2 8.0735 -2.5947 4.8483 0 1 0 + 1998 50 2 7.1702 -2.8045 4.6575 0 1 0 + 1999 50 2 7.3982 -1.9054 4.4658 0 1 0 + 2000 50 2 7.2047 -1.2756 3.8127 0 1 0 + 2001 51 1 6.5959 4.4721 5.7950 0 0 0 + 2002 51 1 7.3918 3.9882 6.1496 0 0 0 + 2003 51 1 7.3064 3.7873 5.2335 0 0 0 + 2004 51 1 6.9838 4.0633 4.4184 0 0 0 + 2005 51 1 6.9447 3.5633 3.5986 0 0 0 + 2006 51 1 6.5105 2.9848 2.9563 0 0 0 + 2007 51 1 6.1751 2.4254 2.2199 0 0 0 + 2008 51 1 5.3745 2.3557 1.7621 0 0 0 + 2009 51 1 4.5722 1.8916 1.6662 0 0 0 + 2010 51 1 3.7248 2.3347 1.4155 0 0 0 + 2011 51 1 3.1478 2.9304 0.9374 0 0 0 + 2012 51 1 2.7135 2.5658 1.7775 0 0 0 + 2013 51 1 2.7670 2.3295 2.6689 0 0 0 + 2014 51 1 2.7331 1.3598 2.8318 0 0 0 + 2015 51 1 3.1265 1.4734 1.9320 0 0 0 + 2016 51 1 3.7226 1.0249 1.2964 0 0 0 + 2017 51 1 3.8092 0.1282 0.8933 0 0 0 + 2018 51 1 3.9925 -0.0037 -0.0743 0 0 0 + 2019 51 1 4.6124 -0.1137 -0.7672 0 0 0 + 2020 51 1 5.4363 -0.1729 -1.2586 0 0 0 + 2021 51 1 5.8863 -0.2894 -0.4135 0 0 0 + 2022 51 1 6.7035 -0.4568 0.0069 0 0 0 + 2023 51 1 7.3719 -1.1295 0.0896 0 0 0 + 2024 51 1 7.9196 -0.7567 -0.6327 0 0 0 + 2025 51 1 7.5853 -0.6603 -1.5456 0 0 0 + 2026 51 1 6.6351 -0.4835 -1.2277 0 0 0 + 2027 51 1 6.2306 -0.0911 -2.0135 0 0 0 + 2028 51 1 6.0064 0.6241 -2.5924 0 0 0 + 2029 51 1 6.1694 0.7581 -3.4989 0 0 0 + 2030 51 1 6.1533 0.7402 -4.4484 0 0 0 + 2031 51 1 6.0450 0.9918 -5.3503 0 0 0 + 2032 51 1 5.1089 1.2345 -5.2004 0 0 0 + 2033 51 1 4.3645 1.0404 -5.8022 0 0 0 + 2034 51 1 3.8347 1.4329 -6.5100 0 0 0 + 2035 51 1 4.5203 1.8703 -7.0584 0 0 0 + 2036 51 1 5.5106 2.1912 -6.9424 0 0 0 + 2037 51 1 6.3876 2.3141 -7.3011 0 0 0 + 2038 51 1 6.8671 2.9308 -7.8711 0 0 0 + 2039 51 1 7.6948 3.1993 8.2083 0 0 -1 + 2040 51 1 -8.0665 3.6479 7.6208 1 0 -1 + 2041 52 2 -6.3218 5.9196 -6.8361 0 0 0 + 2042 52 2 -7.0661 6.3425 -7.2014 0 0 0 + 2043 52 2 -8.0019 6.5106 -7.5397 0 0 0 + 2044 52 2 7.8491 7.1712 -7.0994 -1 0 0 + 2045 52 2 7.2996 7.6073 -6.3772 -1 0 0 + 2046 52 2 7.8475 6.7708 -6.1485 -1 0 0 + 2047 52 2 8.2080 5.9814 -5.6864 -1 0 0 + 2048 52 2 -7.7851 5.1709 -5.6758 0 0 0 + 2049 52 2 -7.3919 4.3805 -5.5660 0 0 0 + 2050 52 2 -7.9684 3.7064 -5.7851 0 0 0 + 2051 52 2 -7.8289 4.3090 -6.5553 0 0 0 + 2052 52 2 -7.3166 5.1087 -6.6768 0 0 0 + 2053 52 2 -6.9653 5.3835 -7.5774 0 0 0 + 2054 52 2 -6.6091 6.0709 -8.1128 0 0 0 + 2055 52 2 -6.3963 6.1081 7.3850 0 0 -1 + 2056 52 2 -6.1121 5.8324 6.4696 0 0 -1 + 2057 52 2 -6.6267 6.1797 5.7459 0 0 -1 + 2058 52 2 -7.1862 6.5235 5.0107 0 0 -1 + 2059 52 2 -7.8607 6.1823 4.3454 0 0 -1 + 2060 52 2 7.8495 5.6444 4.6531 -1 0 -1 + 2061 52 2 -7.7747 5.3656 5.1423 0 0 -1 + 2062 52 2 -7.6827 5.9219 6.0098 0 0 -1 + 2063 52 2 -7.4966 6.8953 5.9517 0 0 -1 + 2064 52 2 -7.3037 7.8208 6.0902 0 0 -1 + 2065 52 2 -7.0041 7.8462 5.2138 0 0 -1 + 2066 52 2 -7.5671 -7.8396 5.0985 0 1 -1 + 2067 52 2 -7.7854 -7.0411 5.6035 0 1 -1 + 2068 52 2 8.1560 -6.4474 6.1421 -1 1 -1 + 2069 52 2 7.3316 -6.8247 6.2719 -1 1 -1 + 2070 52 2 6.8172 -7.6559 6.2348 -1 1 -1 + 2071 52 2 5.8644 -7.8776 6.3821 -1 1 -1 + 2072 52 2 5.3230 -7.7134 7.1758 -1 1 -1 + 2073 52 2 4.9089 -7.3274 7.9488 -1 1 -1 + 2074 52 2 4.6323 -6.4784 7.9880 -1 1 -1 + 2075 52 2 4.8947 -6.1639 -7.5671 -1 1 0 + 2076 52 2 4.1907 -6.3863 -6.9031 -1 1 0 + 2077 52 2 3.4676 -5.8197 -7.1483 -1 1 0 + 2078 52 2 2.5256 -5.9588 -6.8814 -1 1 0 + 2079 52 2 1.8487 -6.5810 -6.9706 -1 1 0 + 2080 52 2 2.4257 -7.2818 -6.7274 -1 1 0 + 2081 53 1 6.0399 0.0531 7.6725 0 0 0 + 2082 53 1 6.2895 0.7582 7.0754 0 0 0 + 2083 53 1 5.5607 0.7053 6.4081 0 0 0 + 2084 53 1 5.0316 0.8832 5.6553 0 0 0 + 2085 53 1 4.4810 1.4781 6.1645 0 0 0 + 2086 53 1 3.6084 1.6436 6.6688 0 0 0 + 2087 53 1 3.4209 2.3803 6.0491 0 0 0 + 2088 53 1 2.4454 2.2683 6.1228 0 0 0 + 2089 53 1 1.5340 1.9413 6.1418 0 0 0 + 2090 53 1 1.6413 0.9975 6.0891 0 0 0 + 2091 53 1 1.9226 0.0716 6.1168 0 0 0 + 2092 53 1 2.1649 -0.3647 6.9722 0 0 0 + 2093 53 1 3.1023 -0.6021 7.0736 0 0 0 + 2094 53 1 3.5317 -1.0957 7.8663 0 0 0 + 2095 53 1 3.6201 -2.0343 -8.1619 0 0 1 + 2096 53 1 2.8273 -1.9970 -7.6420 0 0 1 + 2097 53 1 2.8531 -1.0523 -7.8001 0 0 1 + 2098 53 1 3.0389 -0.2164 -7.5564 0 0 1 + 2099 53 1 3.8710 -0.1421 -8.0591 0 0 1 + 2100 53 1 4.0270 -0.0314 7.3920 0 0 0 + 2101 53 1 3.7701 0.4519 6.6359 0 0 0 + 2102 53 1 3.8052 0.7536 5.7870 0 0 0 + 2103 53 1 3.2230 0.0303 5.9788 0 0 0 + 2104 53 1 3.1564 -0.5238 5.2039 0 0 0 + 2105 53 1 2.8692 -0.7976 4.3223 0 0 0 + 2106 53 1 2.2382 -0.1136 4.0026 0 0 0 + 2107 53 1 1.7958 0.6784 4.3695 0 0 0 + 2108 53 1 1.1519 0.1450 4.8929 0 0 0 + 2109 53 1 0.4266 -0.3813 4.6360 0 0 0 + 2110 53 1 -0.4061 -0.6988 4.2468 0 0 0 + 2111 53 1 -0.0058 -1.4302 3.8334 0 0 0 + 2112 53 1 0.5911 -1.5410 4.6893 0 0 0 + 2113 53 1 1.2699 -2.0964 4.3120 0 0 0 + 2114 53 1 0.7270 -2.1187 3.5096 0 0 0 + 2115 53 1 1.6488 -1.9838 3.2431 0 0 0 + 2116 53 1 2.2559 -2.7163 3.2618 0 0 0 + 2117 53 1 2.7007 -3.4317 2.7939 0 0 0 + 2118 53 1 2.8048 -3.5975 1.8750 0 0 0 + 2119 53 1 3.5644 -3.8700 1.3217 0 0 0 + 2120 53 1 4.2412 -3.3356 1.7322 0 0 0 + 2121 54 2 -5.4967 -6.7887 -3.1496 0 0 0 + 2122 54 2 -5.6553 -7.0659 -2.2235 0 0 0 + 2123 54 2 -6.5388 -7.5023 -2.1782 0 0 0 + 2124 54 2 -7.3331 -7.9765 -1.8649 0 0 0 + 2125 54 2 -7.0792 7.5261 -1.7752 0 -1 0 + 2126 54 2 -7.1890 7.4218 -0.7827 0 -1 0 + 2127 54 2 -7.3952 7.9993 -0.0534 0 -1 0 + 2128 54 2 -6.5657 7.4977 0.1345 0 -1 0 + 2129 54 2 -6.0919 6.9290 -0.4711 0 -1 0 + 2130 54 2 -6.1053 7.0787 -1.4070 0 -1 0 + 2131 54 2 -5.5535 6.5328 -2.0617 0 -1 0 + 2132 54 2 -5.2731 6.9698 -2.8570 0 -1 0 + 2133 54 2 -6.1672 6.7515 -3.1270 0 -1 0 + 2134 54 2 -6.6876 6.6306 -2.3289 0 -1 0 + 2135 54 2 -6.2963 5.7723 -2.3776 0 -1 0 + 2136 54 2 -5.6983 5.4478 -1.7132 0 -1 0 + 2137 54 2 -4.9914 5.0971 -1.1895 0 -1 0 + 2138 54 2 -4.6343 4.2439 -1.3165 0 -1 0 + 2139 54 2 -4.1607 3.5158 -1.7319 0 -1 0 + 2140 54 2 -3.5894 3.0645 -2.4924 0 -1 0 + 2141 54 2 -4.1862 2.3904 -2.8494 0 -1 0 + 2142 54 2 -4.4095 2.1480 -1.8902 0 -1 0 + 2143 54 2 -3.8580 2.4053 -1.1694 0 -1 0 + 2144 54 2 -3.6606 3.0762 -0.4099 0 -1 0 + 2145 54 2 -3.2909 2.2079 -0.3580 0 -1 0 + 2146 54 2 -3.4362 1.5261 0.3072 0 -1 0 + 2147 54 2 -2.6693 1.6183 0.8396 0 -1 0 + 2148 54 2 -2.5530 2.2385 1.6647 0 -1 0 + 2149 54 2 -2.9860 2.8821 2.2696 0 -1 0 + 2150 54 2 -3.7115 3.3306 1.7913 0 -1 0 + 2151 54 2 -4.2868 2.9103 2.4507 0 -1 0 + 2152 54 2 -4.6677 2.8595 3.3286 0 -1 0 + 2153 54 2 -4.7361 2.2940 4.1479 0 -1 0 + 2154 54 2 -4.3010 1.6996 4.7108 0 -1 0 + 2155 54 2 -3.4093 2.0473 4.8769 0 -1 0 + 2156 54 2 -2.5536 1.9107 5.2870 0 -1 0 + 2157 54 2 -2.8317 2.5723 5.8923 0 -1 0 + 2158 54 2 -2.4157 3.3812 5.8551 0 -1 0 + 2159 54 2 -2.0048 3.8186 6.6135 0 -1 0 + 2160 54 2 -1.5137 4.6294 6.6768 0 -1 0 + 2161 55 1 -6.8435 2.0003 0.9931 0 0 0 + 2162 55 1 -6.1452 1.3536 0.8446 0 0 0 + 2163 55 1 -6.4173 1.3209 -0.0248 0 0 0 + 2164 55 1 -7.0821 1.5813 -0.6587 0 0 0 + 2165 55 1 -7.6354 2.3596 -1.0498 0 0 0 + 2166 55 1 -8.0594 3.0413 -1.5808 0 0 0 + 2167 55 1 7.5855 3.5225 -1.7055 -1 0 0 + 2168 55 1 7.1910 3.8876 -2.4584 -1 0 0 + 2169 55 1 7.7465 4.5382 -2.8472 -1 0 0 + 2170 55 1 7.0301 4.2036 -3.4513 -1 0 0 + 2171 55 1 6.1879 4.1840 -3.9175 -1 0 0 + 2172 55 1 5.6147 3.4793 -3.8223 -1 0 0 + 2173 55 1 5.2727 2.8993 -4.5031 -1 0 0 + 2174 55 1 4.7554 2.3057 -4.9718 -1 0 0 + 2175 55 1 4.3694 2.2299 -5.8199 -1 0 0 + 2176 55 1 5.3035 2.0983 -5.8490 -1 0 0 + 2177 55 1 6.1635 2.0490 -6.1706 -1 0 0 + 2178 55 1 7.0336 2.3695 -5.9808 -1 0 0 + 2179 55 1 7.7683 2.2168 -5.4481 -1 0 0 + 2180 55 1 -8.0210 2.7513 -4.9386 0 0 0 + 2181 55 1 7.5821 3.3254 -4.8164 -1 0 0 + 2182 55 1 6.7741 3.8285 -4.9031 -1 0 0 + 2183 55 1 6.4751 2.9972 -4.5589 -1 0 0 + 2184 55 1 6.1180 2.5761 -3.8123 -1 0 0 + 2185 55 1 6.6221 2.3601 -3.0294 -1 0 0 + 2186 55 1 6.7528 1.6674 -3.7066 -1 0 0 + 2187 55 1 7.1072 0.9508 -4.1617 -1 0 0 + 2188 55 1 7.8127 0.2825 -4.2460 -1 0 0 + 2189 55 1 -8.1059 -0.1952 -3.5940 0 0 0 + 2190 55 1 -7.2572 -0.6030 -3.7139 0 0 0 + 2191 55 1 -7.1943 -1.1110 -2.8900 0 0 0 + 2192 55 1 -6.9775 -1.7954 -2.2904 0 0 0 + 2193 55 1 -7.2460 -2.7449 -2.2477 0 0 0 + 2194 55 1 -6.6646 -2.7821 -2.9671 0 0 0 + 2195 55 1 -5.9624 -2.1983 -2.8207 0 0 0 + 2196 55 1 -5.8399 -1.1989 -2.7590 0 0 0 + 2197 55 1 -5.7213 -1.6876 -1.8608 0 0 0 + 2198 55 1 -6.0181 -1.3452 -1.0550 0 0 0 + 2199 55 1 -6.4533 -2.0124 -0.4868 0 0 0 + 2200 55 1 -6.4762 -2.3210 -1.4117 0 0 0 + 2201 56 2 -5.3216 -7.1080 -4.2424 0 0 0 + 2202 56 2 -4.5912 -6.8177 -3.7216 0 0 0 + 2203 56 2 -4.1219 -7.0469 -4.5876 0 0 0 + 2204 56 2 -3.7854 -6.8545 -5.4560 0 0 0 + 2205 56 2 -3.8694 -7.3240 -6.2758 0 0 0 + 2206 56 2 -3.6872 -7.8414 -7.0275 0 0 0 + 2207 56 2 -4.0756 7.9423 -7.6925 0 -1 0 + 2208 56 2 -4.8929 7.7142 -8.1229 0 -1 0 + 2209 56 2 -4.8914 7.0485 7.6274 0 -1 -1 + 2210 56 2 -3.9627 6.6401 7.6699 0 -1 -1 + 2211 56 2 -4.1015 7.2163 6.9505 0 -1 -1 + 2212 56 2 -4.3014 7.4527 6.0182 0 -1 -1 + 2213 56 2 -3.5028 7.6914 5.5467 0 -1 -1 + 2214 56 2 -3.5887 -7.8275 5.7753 0 0 -1 + 2215 56 2 -3.4267 -7.1745 5.0956 0 0 -1 + 2216 56 2 -2.5833 -7.0720 5.4933 0 0 -1 + 2217 56 2 -1.8515 -6.4957 5.6805 0 0 -1 + 2218 56 2 -1.7128 -5.6030 5.8167 0 0 -1 + 2219 56 2 -0.9829 -5.4999 6.4242 0 0 -1 + 2220 56 2 -0.0820 -5.8573 6.4811 0 0 -1 + 2221 56 2 0.9359 -5.7597 6.4878 0 0 -1 + 2222 56 2 1.6328 -5.8358 7.1142 0 0 -1 + 2223 56 2 1.6403 -5.3153 7.9759 0 0 -1 + 2224 56 2 1.1835 -4.6620 -7.9571 0 0 0 + 2225 56 2 0.4553 -4.1476 -8.0218 0 0 0 + 2226 56 2 -0.1210 -4.0471 7.6714 0 0 -1 + 2227 56 2 -0.9083 -4.5218 7.6187 0 0 -1 + 2228 56 2 -1.6867 -5.0668 7.2959 0 0 -1 + 2229 56 2 -2.2829 -5.2956 8.0015 0 0 -1 + 2230 56 2 -2.9532 -5.9988 7.8229 0 0 -1 + 2231 56 2 -2.4733 -6.8674 7.7615 0 0 -1 + 2232 56 2 -1.9011 -7.3252 7.0346 0 0 -1 + 2233 56 2 -1.6852 -7.5248 6.1461 0 0 -1 + 2234 56 2 -1.2737 -7.4066 5.3438 0 0 -1 + 2235 56 2 -1.0316 -7.8405 4.4581 0 0 -1 + 2236 56 2 -0.6947 7.7746 4.0575 0 -1 -1 + 2237 56 2 -1.1071 7.5619 3.2688 0 -1 -1 + 2238 56 2 -1.6870 7.7892 4.0133 0 -1 -1 + 2239 56 2 -2.5913 7.8964 3.9601 0 -1 -1 + 2240 56 2 -3.2663 7.4427 4.3838 0 -1 -1 + 2241 57 1 5.2547 8.1233 -1.4065 0 0 0 + 2242 57 1 6.1693 8.0749 -1.4869 0 0 0 + 2243 57 1 6.5142 7.2053 -1.1024 0 0 0 + 2244 57 1 7.4645 7.2774 -1.1647 0 0 0 + 2245 57 1 8.1287 6.9918 -0.5430 0 0 0 + 2246 57 1 -7.4999 6.8668 0.0416 1 0 0 + 2247 57 1 -6.7876 6.3305 0.4423 1 0 0 + 2248 57 1 -6.0754 5.8198 0.1010 1 0 0 + 2249 57 1 -5.5031 5.8329 -0.6159 1 0 0 + 2250 57 1 -4.9005 6.2821 -1.2837 1 0 0 + 2251 57 1 -4.6238 7.0936 -1.7757 1 0 0 + 2252 57 1 -4.1680 7.0642 -0.9409 1 0 0 + 2253 57 1 -3.2546 7.0792 -0.6167 1 0 0 + 2254 57 1 -3.6930 6.3165 -0.2120 1 0 0 + 2255 57 1 -4.2409 5.6355 -0.4382 1 0 0 + 2256 57 1 -3.7354 5.0297 0.0240 1 0 0 + 2257 57 1 -3.0364 5.6489 0.3930 1 0 0 + 2258 57 1 -2.7582 5.5562 1.2685 1 0 0 + 2259 57 1 -2.7369 6.4517 1.0834 1 0 0 + 2260 57 1 -3.0767 7.2327 1.6209 1 0 0 + 2261 57 1 -3.9289 6.7677 1.9483 1 0 0 + 2262 57 1 -4.2447 6.6394 2.7979 1 0 0 + 2263 57 1 -4.8967 7.0725 3.3263 1 0 0 + 2264 57 1 -4.0957 7.2531 3.7338 1 0 0 + 2265 57 1 -3.3924 7.1978 3.1077 1 0 0 + 2266 57 1 -3.9452 7.8870 2.7138 1 0 0 + 2267 57 1 -3.7113 8.1962 3.6248 1 0 0 + 2268 57 1 -3.7387 -7.9825 4.5427 1 1 0 + 2269 57 1 -2.8779 -8.0829 4.9168 1 1 0 + 2270 57 1 -2.0678 -7.6642 4.8280 1 1 0 + 2271 57 1 -1.9264 -6.7450 4.5397 1 1 0 + 2272 57 1 -2.0661 -6.4506 3.6169 1 1 0 + 2273 57 1 -1.4494 -6.3098 2.8791 1 1 0 + 2274 57 1 -0.5023 -6.0699 2.5486 1 1 0 + 2275 57 1 -1.0171 -5.3091 2.8475 1 1 0 + 2276 57 1 -1.9147 -5.4696 3.0772 1 1 0 + 2277 57 1 -2.7772 -5.8663 2.9750 1 1 0 + 2278 57 1 -3.2040 -6.5371 3.4906 1 1 0 + 2279 57 1 -3.7403 -7.0876 4.0514 1 1 0 + 2280 57 1 -4.3629 -7.2306 4.7463 1 1 0 + 2281 58 2 -7.5649 7.6417 -7.2687 0 0 0 + 2282 58 2 -8.0207 -7.9676 -7.2845 0 1 0 + 2283 58 2 7.5376 -7.5304 -7.2777 -1 1 0 + 2284 58 2 7.9588 -7.0700 -7.9890 -1 1 0 + 2285 58 2 -7.9959 -6.3401 7.9493 0 1 -1 + 2286 58 2 -8.0600 -6.0599 7.0744 0 1 -1 + 2287 58 2 -7.2749 -6.3689 6.5648 0 1 -1 + 2288 58 2 -6.5783 -6.2897 5.9544 0 1 -1 + 2289 58 2 -5.7613 -6.8594 5.8719 0 1 -1 + 2290 58 2 -5.4292 -7.6421 6.2776 0 1 -1 + 2291 58 2 -5.7531 -7.3466 7.2774 0 1 -1 + 2292 58 2 -6.6029 -7.0950 6.8119 0 1 -1 + 2293 58 2 -7.3225 -7.6688 6.6542 0 1 -1 + 2294 58 2 -8.1530 -7.3380 6.8662 0 1 -1 + 2295 58 2 7.5508 -6.9186 7.3935 -1 1 -1 + 2296 58 2 7.5370 -5.9241 7.6298 -1 1 -1 + 2297 58 2 6.9226 -5.1515 7.6150 -1 1 -1 + 2298 58 2 6.2106 -4.5674 7.7895 -1 1 -1 + 2299 58 2 5.2620 -4.7523 7.5564 -1 1 -1 + 2300 58 2 4.3601 -4.6058 7.3941 -1 1 -1 + 2301 58 2 3.5737 -4.5187 6.8029 -1 1 -1 + 2302 58 2 3.5103 -3.7490 7.3254 -1 1 -1 + 2303 58 2 2.7005 -3.7797 7.8145 -1 1 -1 + 2304 58 2 2.6043 -4.6598 7.4662 -1 1 -1 + 2305 58 2 1.8121 -4.8023 6.9971 -1 1 -1 + 2306 58 2 0.8718 -5.0926 7.3407 -1 1 -1 + 2307 58 2 0.0144 -4.8684 6.9787 -1 1 -1 + 2308 58 2 -0.5568 -4.3166 6.3847 -1 1 -1 + 2309 58 2 -0.8860 -3.5640 5.9884 -1 1 -1 + 2310 58 2 -1.4764 -3.5603 5.2184 -1 1 -1 + 2311 58 2 -2.4084 -3.3536 5.3528 -1 1 -1 + 2312 58 2 -3.1713 -3.3477 5.8943 -1 1 -1 + 2313 58 2 -3.0367 -2.4530 5.5947 -1 1 -1 + 2314 58 2 -3.3127 -1.6277 5.2752 -1 1 -1 + 2315 58 2 -3.2279 -0.7613 4.9326 -1 1 -1 + 2316 58 2 -3.7285 -0.2662 5.6249 -1 1 -1 + 2317 58 2 -4.2660 0.4728 5.9340 -1 1 -1 + 2318 58 2 -5.0553 0.9635 5.9190 -1 1 -1 + 2319 58 2 -4.9456 1.8473 6.2292 -1 1 -1 + 2320 58 2 -5.2544 2.7973 6.2206 -1 1 -1 + 2321 59 1 0.4525 -6.6704 -4.5988 0 0 0 + 2322 59 1 1.1994 -7.0538 -5.0188 0 0 0 + 2323 59 1 2.0204 -6.7913 -4.6227 0 0 0 + 2324 59 1 2.4453 -6.0560 -4.1878 0 0 0 + 2325 59 1 2.4566 -5.1931 -4.5691 0 0 0 + 2326 59 1 1.6126 -4.8582 -4.8726 0 0 0 + 2327 59 1 1.4155 -4.0196 -5.3727 0 0 0 + 2328 59 1 1.1300 -3.1718 -5.7385 0 0 0 + 2329 59 1 1.7841 -3.6113 -6.1831 0 0 0 + 2330 59 1 2.3584 -3.6381 -7.0290 0 0 0 + 2331 59 1 2.8001 -2.9735 -7.5767 0 0 0 + 2332 59 1 3.4681 -3.0193 -6.9256 0 0 0 + 2333 59 1 3.4081 -3.9459 -6.6789 0 0 0 + 2334 59 1 3.3172 -4.7749 -7.0975 0 0 0 + 2335 59 1 2.4705 -5.1371 -7.4261 0 0 0 + 2336 59 1 2.2894 -5.9936 -7.8728 0 0 0 + 2337 59 1 1.8001 -6.4968 7.8904 0 0 -1 + 2338 59 1 1.7324 -6.9218 7.0227 0 0 -1 + 2339 59 1 1.9784 -7.7806 6.6472 0 0 -1 + 2340 59 1 1.0182 -7.6639 6.6130 0 0 -1 + 2341 59 1 0.3444 -6.9405 6.7497 0 0 -1 + 2342 59 1 0.4486 -6.5874 5.8787 0 0 -1 + 2343 59 1 1.3635 -6.7856 5.8652 0 0 -1 + 2344 59 1 2.1985 -6.3757 6.1932 0 0 -1 + 2345 59 1 2.8236 -6.4609 5.5165 0 0 -1 + 2346 59 1 2.8237 -7.4397 5.4450 0 0 -1 + 2347 59 1 3.1969 -8.0860 4.7644 0 0 -1 + 2348 59 1 2.6678 -8.1384 3.9533 0 0 -1 + 2349 59 1 1.9361 -8.2027 3.4063 0 0 -1 + 2350 59 1 1.2897 7.5923 3.0653 0 -1 -1 + 2351 59 1 0.8154 8.1844 3.6479 0 -1 -1 + 2352 59 1 0.0034 -7.7516 3.8747 0 0 -1 + 2353 59 1 -0.6529 -7.0569 4.2315 0 0 -1 + 2354 59 1 -0.2934 -6.2185 4.6381 0 0 -1 + 2355 59 1 0.2775 -6.9366 4.7662 0 0 -1 + 2356 59 1 0.7171 -7.5724 5.2524 0 0 -1 + 2357 59 1 1.5508 -7.7951 5.6909 0 0 -1 + 2358 59 1 2.1618 -8.0119 4.9060 0 0 -1 + 2359 59 1 1.7051 -7.4673 4.2848 0 0 -1 + 2360 59 1 1.4254 -6.4888 3.9510 0 0 -1 + 2361 60 2 2.7955 0.4297 -1.6605 0 0 0 + 2362 60 2 1.9639 0.2729 -2.0769 0 0 0 + 2363 60 2 2.5947 0.2968 -2.7712 0 0 0 + 2364 60 2 2.1554 -0.5975 -2.9446 0 0 0 + 2365 60 2 2.5164 -1.3920 -3.3433 0 0 0 + 2366 60 2 3.1827 -2.0723 -3.6086 0 0 0 + 2367 60 2 3.4616 -2.4987 -4.4152 0 0 0 + 2368 60 2 2.5913 -2.2443 -4.7419 0 0 0 + 2369 60 2 2.2303 -2.8480 -5.4234 0 0 0 + 2370 60 2 2.7355 -3.2399 -6.1011 0 0 0 + 2371 60 2 3.0405 -2.3785 -6.2228 0 0 0 + 2372 60 2 3.6335 -1.9241 -6.8471 0 0 0 + 2373 60 2 4.3735 -2.4670 -6.7497 0 0 0 + 2374 60 2 4.6646 -3.3746 -6.7822 0 0 0 + 2375 60 2 4.3025 -3.3634 -5.9056 0 0 0 + 2376 60 2 3.4743 -3.6701 -5.5278 0 0 0 + 2377 60 2 2.6601 -4.0877 -5.3602 0 0 0 + 2378 60 2 2.8050 -4.9267 -5.7550 0 0 0 + 2379 60 2 1.9892 -4.7606 -6.0523 0 0 0 + 2380 60 2 1.4724 -4.6371 -6.8908 0 0 0 + 2381 60 2 0.5832 -4.9853 -7.0318 0 0 0 + 2382 60 2 1.2135 -5.6699 -7.3477 0 0 0 + 2383 60 2 1.4591 -5.8067 -6.4107 0 0 0 + 2384 60 2 2.2323 -5.8149 -5.8582 0 0 0 + 2385 60 2 2.0242 -6.7650 -5.8671 0 0 0 + 2386 60 2 1.0733 -6.7229 -6.0239 0 0 0 + 2387 60 2 0.6001 -6.3096 -6.7355 0 0 0 + 2388 60 2 0.0618 -6.0349 -7.4922 0 0 0 + 2389 60 2 0.7338 -6.1719 -8.1524 0 0 0 + 2390 60 2 1.1941 -6.9485 -7.8154 0 0 0 + 2391 60 2 0.9708 -7.1914 7.6436 0 0 -1 + 2392 60 2 0.4167 -7.9064 7.4576 0 0 -1 + 2393 60 2 -0.2795 7.8048 7.6898 0 -1 -1 + 2394 60 2 0.5334 7.3882 7.9695 0 -1 -1 + 2395 60 2 1.4072 7.6778 -8.0100 0 -1 0 + 2396 60 2 2.2600 7.5315 -7.7338 0 -1 0 + 2397 60 2 3.2285 7.2740 -7.7508 0 -1 0 + 2398 60 2 3.0753 6.3277 -7.6143 0 -1 0 + 2399 60 2 2.9738 6.5962 -6.6975 0 -1 0 + 2400 60 2 3.1539 6.1506 -5.8577 0 -1 0 + 2401 61 1 -7.3109 -6.6024 -4.7452 0 0 0 + 2402 61 1 -6.3991 -6.6687 -4.9991 0 0 0 + 2403 61 1 -6.8268 -7.2868 -5.6630 0 0 0 + 2404 61 1 -7.5506 -7.5618 -5.1304 0 0 0 + 2405 61 1 -7.2776 7.9848 -4.9660 0 -1 0 + 2406 61 1 -6.4466 -8.0588 -4.6079 0 0 0 + 2407 61 1 -5.8797 -7.6496 -5.2556 0 0 0 + 2408 61 1 -5.4136 8.0768 -5.6416 0 -1 0 + 2409 61 1 -5.7420 7.7905 -6.4680 0 -1 0 + 2410 61 1 -6.4136 7.8880 -5.8350 0 -1 0 + 2411 61 1 -6.5712 7.3256 -5.0883 0 -1 0 + 2412 61 1 -6.9428 6.9905 -5.9069 0 -1 0 + 2413 61 1 -7.5767 6.6851 -6.5258 0 -1 0 + 2414 61 1 -7.1908 5.9569 -6.0666 0 -1 0 + 2415 61 1 -6.4258 6.0532 -5.4516 0 -1 0 + 2416 61 1 -6.4994 5.0988 -5.4391 0 -1 0 + 2417 61 1 -5.7852 4.4169 -5.4667 0 -1 0 + 2418 61 1 -5.1719 3.6640 -5.3378 0 -1 0 + 2419 61 1 -4.6825 2.9142 -5.5838 0 -1 0 + 2420 61 1 -4.7760 2.0719 -5.2002 0 -1 0 + 2421 61 1 -5.0094 1.6095 -5.9836 0 -1 0 + 2422 61 1 -5.5020 1.2227 -6.6792 0 -1 0 + 2423 61 1 -6.1981 0.5681 -7.0778 0 -1 0 + 2424 61 1 -5.8583 -0.1209 -6.5559 0 -1 0 + 2425 61 1 -5.7014 -1.0070 -6.8794 0 -1 0 + 2426 61 1 -5.5045 -0.2122 -7.5798 0 -1 0 + 2427 61 1 -6.0092 0.2588 8.2093 0 -1 -1 + 2428 61 1 -6.0471 1.1986 -7.9541 0 -1 0 + 2429 61 1 -6.3272 2.0719 -8.1877 0 -1 0 + 2430 61 1 -7.2598 2.1078 -7.9935 0 -1 0 + 2431 61 1 -7.3345 2.4359 -7.0709 0 -1 0 + 2432 61 1 -7.6097 3.3638 -6.8807 0 -1 0 + 2433 61 1 -8.1067 3.9877 -7.4984 0 -1 0 + 2434 61 1 7.3830 3.6960 -7.2586 -1 -1 0 + 2435 61 1 6.4752 3.7006 -6.8756 -1 -1 0 + 2436 61 1 5.9803 3.0268 -6.5238 -1 -1 0 + 2437 61 1 5.1614 3.1042 -5.9654 -1 -1 0 + 2438 61 1 4.2981 3.1511 -5.3553 -1 -1 0 + 2439 61 1 4.0045 3.0575 -4.4276 -1 -1 0 + 2440 61 1 3.7408 3.0469 -3.4847 -1 -1 0 + 2441 62 2 3.7790 -1.9945 -2.6587 0 0 0 + 2442 62 2 4.3143 -1.5118 -1.9531 0 0 0 + 2443 62 2 5.1657 -1.7925 -1.8020 0 0 0 + 2444 62 2 4.7781 -2.6520 -2.1554 0 0 0 + 2445 62 2 5.4805 -3.2550 -2.4721 0 0 0 + 2446 62 2 6.1369 -3.0800 -3.0847 0 0 0 + 2447 62 2 6.5733 -2.3303 -3.5469 0 0 0 + 2448 62 2 6.3832 -2.0096 -4.4028 0 0 0 + 2449 62 2 7.1758 -2.4449 -4.4552 0 0 0 + 2450 62 2 7.2166 -3.1203 -5.2201 0 0 0 + 2451 62 2 8.1017 -3.4383 -5.4295 0 0 0 + 2452 62 2 -7.6417 -2.8487 -5.1132 1 0 0 + 2453 62 2 -6.7893 -2.7450 -4.6371 1 0 0 + 2454 62 2 -5.9118 -3.0081 -5.0090 1 0 0 + 2455 62 2 -6.6052 -3.3168 -5.5533 1 0 0 + 2456 62 2 -7.4195 -3.5017 -6.1185 1 0 0 + 2457 62 2 -7.4154 -4.4460 -6.4043 1 0 0 + 2458 62 2 -8.0079 -5.2222 -6.5635 1 0 0 + 2459 62 2 7.8155 -5.2011 -7.3184 0 0 0 + 2460 62 2 8.0192 -6.0835 -7.6024 0 0 0 + 2461 62 2 7.1901 -6.5274 -7.3836 0 0 0 + 2462 62 2 6.8484 -5.6547 -7.7269 0 0 0 + 2463 62 2 6.0232 -5.1236 -7.7581 0 0 0 + 2464 62 2 5.0682 -4.9501 -7.8299 0 0 0 + 2465 62 2 4.2081 -5.3688 -7.9587 0 0 0 + 2466 62 2 3.9150 -5.5640 7.5624 0 0 -1 + 2467 62 2 3.5865 -6.4108 7.6488 0 0 -1 + 2468 62 2 2.7212 -6.9003 7.4590 0 0 -1 + 2469 62 2 2.8712 -7.7636 7.6674 0 0 -1 + 2470 62 2 3.4768 7.9549 7.4509 0 -1 -1 + 2471 62 2 3.5094 7.0343 7.3892 0 -1 -1 + 2472 62 2 4.2937 6.7135 7.0629 0 -1 -1 + 2473 62 2 4.0474 6.0443 7.6606 0 -1 -1 + 2474 62 2 4.2381 6.8310 8.2084 0 -1 -1 + 2475 62 2 4.9156 7.0156 -7.5851 0 -1 0 + 2476 62 2 4.5888 7.3995 -6.7531 0 -1 0 + 2477 62 2 3.9874 6.9440 -6.0342 0 -1 0 + 2478 62 2 3.0571 7.0958 -5.6932 0 -1 0 + 2479 62 2 2.9693 6.6684 -4.8951 0 -1 0 + 2480 62 2 3.2755 5.9356 -4.3961 0 -1 0 + 2481 63 1 -1.0106 -5.9029 8.0002 0 0 0 + 2482 63 1 -1.8641 -6.2029 -8.0879 0 0 1 + 2483 63 1 -2.6450 -6.2661 -7.5304 0 0 1 + 2484 63 1 -2.9868 -5.3700 -7.7129 0 0 1 + 2485 63 1 -2.7310 -4.4366 -7.8839 0 0 1 + 2486 63 1 -2.5604 -3.5406 -7.6315 0 0 1 + 2487 63 1 -1.7583 -3.0271 -7.5872 0 0 1 + 2488 63 1 -1.1835 -2.2857 -7.7859 0 0 1 + 2489 63 1 -0.5323 -2.2329 7.9109 0 0 0 + 2490 63 1 0.1149 -2.5970 -7.9578 0 0 1 + 2491 63 1 -0.1320 -2.2603 -7.0663 0 0 1 + 2492 63 1 -0.9187 -1.9603 -6.5025 0 0 1 + 2493 63 1 -1.8387 -2.2155 -6.6599 0 0 1 + 2494 63 1 -2.3807 -2.9487 -6.4430 0 0 1 + 2495 63 1 -1.8498 -3.6767 -6.2721 0 0 1 + 2496 63 1 -1.2800 -4.3371 -5.8547 0 0 1 + 2497 63 1 -1.6868 -5.0663 -5.2299 0 0 1 + 2498 63 1 -0.9011 -5.4769 -4.9800 0 0 1 + 2499 63 1 -0.3310 -6.0887 -5.4542 0 0 1 + 2500 63 1 -1.0763 -5.8455 -5.9954 0 0 1 + 2501 63 1 -0.5828 -6.4126 -6.5693 0 0 1 + 2502 63 1 -0.7112 -6.9397 -5.8042 0 0 1 + 2503 63 1 -0.4402 -7.4214 -5.0315 0 0 1 + 2504 63 1 -0.6347 -6.5802 -4.5148 0 0 1 + 2505 63 1 -1.1430 -5.9991 -3.9684 0 0 1 + 2506 63 1 -0.9435 -5.2485 -3.4968 0 0 1 + 2507 63 1 -0.0937 -5.2965 -3.1319 0 0 1 + 2508 63 1 0.6012 -5.1489 -2.5877 0 0 1 + 2509 63 1 1.5477 -4.9489 -2.6636 0 0 1 + 2510 63 1 2.0372 -5.7198 -2.9513 0 0 1 + 2511 63 1 2.4284 -6.5887 -3.2498 0 0 1 + 2512 63 1 2.5217 -7.4870 -3.6839 0 0 1 + 2513 63 1 3.1006 -8.0628 -4.1552 0 0 1 + 2514 63 1 3.4022 7.4413 -4.1337 0 -1 1 + 2515 63 1 3.9184 6.6615 -4.3010 0 -1 1 + 2516 63 1 3.9833 6.1722 -5.1366 0 -1 1 + 2517 63 1 4.0168 5.2330 -5.5308 0 -1 1 + 2518 63 1 4.4321 5.0293 -6.4203 0 -1 1 + 2519 63 1 4.1434 5.9423 -6.4831 0 -1 1 + 2520 63 1 4.0593 6.6107 -7.1676 0 -1 1 + 2521 64 2 7.5004 -1.7882 -0.6491 0 0 0 + 2522 64 2 6.5455 -1.6748 -0.8188 0 0 0 + 2523 64 2 6.7408 -2.5918 -0.6773 0 0 0 + 2524 64 2 7.5901 -2.9880 -0.7586 0 0 0 + 2525 64 2 7.4659 -2.7865 -1.8138 0 0 0 + 2526 64 2 8.1814 -2.9663 -2.3725 0 0 0 + 2527 64 2 -7.5105 -3.3280 -3.0295 1 0 0 + 2528 64 2 -7.4497 -3.9423 -3.7382 1 0 0 + 2529 64 2 -7.9951 -3.9471 -4.5359 1 0 0 + 2530 64 2 -7.5529 -4.7676 -4.4850 1 0 0 + 2531 64 2 -6.6989 -4.6404 -4.0405 1 0 0 + 2532 64 2 -6.0565 -4.9517 -3.4203 1 0 0 + 2533 64 2 -5.9436 -4.7942 -2.5369 1 0 0 + 2534 64 2 -5.5849 -4.1620 -1.8861 1 0 0 + 2535 64 2 -4.7789 -3.8963 -1.2838 1 0 0 + 2536 64 2 -3.8916 -3.5212 -1.2918 1 0 0 + 2537 64 2 -3.0541 -3.3652 -1.7022 1 0 0 + 2538 64 2 -3.4087 -2.5827 -2.0451 1 0 0 + 2539 64 2 -3.2540 -1.6642 -2.1694 1 0 0 + 2540 64 2 -3.5814 -0.7471 -2.2107 1 0 0 + 2541 64 2 -3.2544 -0.5090 -1.3397 1 0 0 + 2542 64 2 -2.3611 -0.5143 -1.0364 1 0 0 + 2543 64 2 -1.4257 -0.6648 -0.8249 1 0 0 + 2544 64 2 -0.7191 -0.9952 -0.2550 1 0 0 + 2545 64 2 0.1899 -1.2046 -0.2202 1 0 0 + 2546 64 2 0.4706 -0.2370 -0.5132 1 0 0 + 2547 64 2 1.2653 -0.4908 -0.0917 1 0 0 + 2548 64 2 2.1877 -0.6042 -0.2028 1 0 0 + 2549 64 2 2.0214 0.2271 0.1697 1 0 0 + 2550 64 2 1.8119 1.1342 0.4030 1 0 0 + 2551 64 2 1.1103 1.6090 0.8666 1 0 0 + 2552 64 2 1.9019 2.0453 0.9337 1 0 0 + 2553 64 2 2.1591 2.2048 0.0373 1 0 0 + 2554 64 2 1.9392 1.9853 -0.8858 1 0 0 + 2555 64 2 1.2022 2.2839 -1.4324 1 0 0 + 2556 64 2 0.6273 2.3686 -2.1277 1 0 0 + 2557 64 2 0.4632 1.5859 -2.8061 1 0 0 + 2558 64 2 0.3692 0.7006 -3.1473 1 0 0 + 2559 64 2 0.4065 0.0187 -3.8058 1 0 0 + 2560 64 2 -0.4008 -0.1243 -4.3242 1 0 0 + 2561 65 1 6.1127 -2.9504 4.3889 0 0 0 + 2562 65 1 6.6546 -3.7448 4.4490 0 0 0 + 2563 65 1 6.7366 -3.4606 5.3684 0 0 0 + 2564 65 1 6.4877 -3.0457 6.1934 0 0 0 + 2565 65 1 5.9012 -2.7075 5.5710 0 0 0 + 2566 65 1 5.4770 -1.8852 5.2083 0 0 0 + 2567 65 1 4.6174 -1.9746 5.6189 0 0 0 + 2568 65 1 3.9863 -2.6584 5.4912 0 0 0 + 2569 65 1 3.6435 -2.9055 4.6730 0 0 0 + 2570 65 1 4.3526 -2.1907 4.6394 0 0 0 + 2571 65 1 5.2785 -2.1873 4.1895 0 0 0 + 2572 65 1 5.1328 -2.8533 4.8202 0 0 0 + 2573 65 1 4.9161 -3.6226 5.3260 0 0 0 + 2574 65 1 4.9945 -3.0281 6.1064 0 0 0 + 2575 65 1 5.3199 -2.8786 6.9625 0 0 0 + 2576 65 1 4.8255 -3.6167 7.3350 0 0 0 + 2577 65 1 4.8789 -3.9819 8.2074 0 0 0 + 2578 65 1 4.2694 -4.0996 -7.5151 0 0 1 + 2579 65 1 3.4197 -3.8088 -7.6816 0 0 1 + 2580 65 1 3.5521 -4.5081 8.0266 0 0 0 + 2581 65 1 3.1654 -5.3558 -8.1497 0 0 1 + 2582 65 1 2.6254 -5.8461 7.5475 0 0 0 + 2583 65 1 3.2622 -6.0245 6.7559 0 0 0 + 2584 65 1 2.7621 -5.2364 6.5503 0 0 0 + 2585 65 1 2.6571 -4.3850 6.1078 0 0 0 + 2586 65 1 2.3210 -3.9718 5.3209 0 0 0 + 2587 65 1 2.8168 -3.1479 5.2459 0 0 0 + 2588 65 1 2.0255 -2.6887 5.1678 0 0 0 + 2589 65 1 1.7772 -3.2777 4.4245 0 0 0 + 2590 65 1 1.2744 -3.0983 3.6158 0 0 0 + 2591 65 1 0.5764 -3.7407 3.4885 0 0 0 + 2592 65 1 -0.0466 -3.9803 4.1640 0 0 0 + 2593 65 1 -0.8916 -3.5943 3.9297 0 0 0 + 2594 65 1 -1.1044 -4.3427 4.4857 0 0 0 + 2595 65 1 -1.5842 -4.4872 3.6658 0 0 0 + 2596 65 1 -2.0318 -3.7199 4.1589 0 0 0 + 2597 65 1 -2.5478 -2.9484 4.4240 0 0 0 + 2598 65 1 -3.3922 -2.4505 4.4863 0 0 0 + 2599 65 1 -4.2434 -2.8204 4.1720 0 0 0 + 2600 65 1 -4.4719 -2.1920 3.4650 0 0 0 + 2601 66 2 0.5194 2.4211 -3.2965 0 0 0 + 2602 66 2 0.2680 2.6413 -4.2426 0 0 0 + 2603 66 2 -0.0430 1.7684 -4.5338 0 0 0 + 2604 66 2 -0.1831 0.9362 -5.0820 0 0 0 + 2605 66 2 0.7249 0.8417 -4.9114 0 0 0 + 2606 66 2 1.4764 0.2381 -4.8637 0 0 0 + 2607 66 2 2.0778 -0.0353 -5.5045 0 0 0 + 2608 66 2 2.5138 0.0994 -4.6498 0 0 0 + 2609 66 2 2.6623 -0.2900 -3.7902 0 0 0 + 2610 66 2 3.5105 -0.1422 -3.2599 0 0 0 + 2611 66 2 4.2521 0.3643 -3.6107 0 0 0 + 2612 66 2 4.3600 -0.4896 -3.9821 0 0 0 + 2613 66 2 4.8230 -0.3846 -4.7743 0 0 0 + 2614 66 2 4.3521 0.4394 -4.9560 0 0 0 + 2615 66 2 4.2123 1.3020 -4.5038 0 0 0 + 2616 66 2 3.6931 1.8169 -3.8908 0 0 0 + 2617 66 2 3.0889 2.4933 -4.1815 0 0 0 + 2618 66 2 3.5859 2.1796 -4.9867 0 0 0 + 2619 66 2 3.4465 1.3330 -5.3666 0 0 0 + 2620 66 2 2.5410 1.0870 -5.2168 0 0 0 + 2621 66 2 1.6687 1.3922 -4.8965 0 0 0 + 2622 66 2 1.0646 2.1347 -4.7193 0 0 0 + 2623 66 2 0.4094 2.4992 -5.3462 0 0 0 + 2624 66 2 0.7833 3.3728 -5.5449 0 0 0 + 2625 66 2 0.5585 3.5558 -4.6667 0 0 0 + 2626 66 2 0.8427 4.0434 -3.8861 0 0 0 + 2627 66 2 1.7022 4.0579 -3.5839 0 0 0 + 2628 66 2 2.4479 4.6269 -3.3758 0 0 0 + 2629 66 2 1.5859 5.1269 -3.5848 0 0 0 + 2630 66 2 0.8067 5.0814 -4.1635 0 0 0 + 2631 66 2 -0.0211 5.2648 -4.5378 0 0 0 + 2632 66 2 -0.1919 4.7442 -3.7759 0 0 0 + 2633 66 2 -0.1816 3.7828 -3.6232 0 0 0 + 2634 66 2 -0.4372 2.9001 -3.3399 0 0 0 + 2635 66 2 -0.5090 2.0175 -3.6039 0 0 0 + 2636 66 2 -0.6915 1.3985 -2.8059 0 0 0 + 2637 66 2 -0.1230 1.4579 -2.0375 0 0 0 + 2638 66 2 -0.0970 0.6893 -1.5296 0 0 0 + 2639 66 2 -0.9338 0.4002 -1.2727 0 0 0 + 2640 66 2 -1.6302 0.3394 -0.5358 0 0 0 + 2641 67 1 2.9089 -4.6563 1.6843 0 0 0 + 2642 67 1 2.5384 -5.4174 2.1933 0 0 0 + 2643 67 1 1.5946 -5.5676 2.1571 0 0 0 + 2644 67 1 1.2012 -6.3834 2.4062 0 0 0 + 2645 67 1 1.7204 -5.9170 3.1102 0 0 0 + 2646 67 1 2.3568 -6.1821 3.7537 0 0 0 + 2647 67 1 3.1630 -5.9086 4.2129 0 0 0 + 2648 67 1 3.5699 -5.6927 5.0534 0 0 0 + 2649 67 1 3.4957 -5.1300 5.8238 0 0 0 + 2650 67 1 2.5926 -5.3310 5.4756 0 0 0 + 2651 67 1 1.6957 -5.0506 5.8114 0 0 0 + 2652 67 1 1.3054 -4.1324 5.6567 0 0 0 + 2653 67 1 1.1944 -3.1963 5.4557 0 0 0 + 2654 67 1 0.6325 -2.4912 5.1196 0 0 0 + 2655 67 1 -0.2041 -2.2854 5.6096 0 0 0 + 2656 67 1 -0.9468 -1.6039 5.6513 0 0 0 + 2657 67 1 -1.2516 -0.7865 6.1049 0 0 0 + 2658 67 1 -0.7578 -0.5816 5.3796 0 0 0 + 2659 67 1 -1.6591 -0.6246 5.0991 0 0 0 + 2660 67 1 -2.1899 -0.2281 4.4247 0 0 0 + 2661 67 1 -3.1558 0.0066 4.2486 0 0 0 + 2662 67 1 -3.9646 -0.5102 4.0584 0 0 0 + 2663 67 1 -4.6836 -1.0793 3.7974 0 0 0 + 2664 67 1 -5.3321 -1.2683 3.0637 0 0 0 + 2665 67 1 -6.1662 -1.7170 3.0254 0 0 0 + 2666 67 1 -6.9156 -2.3495 3.1627 0 0 0 + 2667 67 1 -7.5074 -2.1536 3.9362 0 0 0 + 2668 67 1 -7.9478 -1.5486 4.5476 0 0 0 + 2669 67 1 7.9585 -0.8088 4.6752 -1 0 0 + 2670 67 1 7.8608 -0.2365 3.9586 -1 0 0 + 2671 67 1 8.0102 0.4611 3.3583 -1 0 0 + 2672 67 1 -7.6888 1.0010 2.9876 0 0 0 + 2673 67 1 -7.1775 1.5428 2.4006 0 0 0 + 2674 67 1 -6.5265 1.2903 1.8199 0 0 0 + 2675 67 1 -6.7651 0.6198 1.1518 0 0 0 + 2676 67 1 -7.1119 0.4806 0.2795 0 0 0 + 2677 67 1 -6.2429 0.1787 0.3377 0 0 0 + 2678 67 1 -5.4802 0.4032 0.9182 0 0 0 + 2679 67 1 -5.9503 0.2247 1.7328 0 0 0 + 2680 67 1 -6.0209 -0.3647 2.4861 0 0 0 + 2681 68 2 -4.4384 5.6996 8.1227 0 0 0 + 2682 68 2 -4.5282 5.4047 7.2103 0 0 0 + 2683 68 2 -5.1953 4.8586 6.8323 0 0 0 + 2684 68 2 -5.2143 4.0487 6.2947 0 0 0 + 2685 68 2 -6.1018 3.6620 6.0101 0 0 0 + 2686 68 2 -6.5315 3.0579 5.4021 0 0 0 + 2687 68 2 -7.0775 3.1102 4.6263 0 0 0 + 2688 68 2 -7.5286 3.1533 3.7173 0 0 0 + 2689 68 2 -8.0364 3.0699 2.8867 0 0 0 + 2690 68 2 7.9263 2.2143 2.9823 -1 0 0 + 2691 68 2 7.2224 1.7646 2.5443 -1 0 0 + 2692 68 2 7.1997 2.4932 1.8819 -1 0 0 + 2693 68 2 7.1897 2.2603 0.9867 -1 0 0 + 2694 68 2 7.2998 1.5172 0.3895 -1 0 0 + 2695 68 2 8.1244 1.9499 0.4755 -1 0 0 + 2696 68 2 -7.4590 2.3279 0.1851 0 0 0 + 2697 68 2 -6.6920 2.6125 -0.3005 0 0 0 + 2698 68 2 -7.3685 3.2606 -0.2089 0 0 0 + 2699 68 2 -8.1725 3.7863 -0.0666 0 0 0 + 2700 68 2 7.6517 4.5039 0.2503 -1 0 0 + 2701 68 2 -7.8339 4.5086 0.5050 0 0 0 + 2702 68 2 -7.9361 5.5194 0.7012 0 0 0 + 2703 68 2 7.9288 6.2555 0.3681 -1 0 0 + 2704 68 2 7.8883 7.2200 0.5625 -1 0 0 + 2705 68 2 7.9469 8.0450 0.0701 -1 0 0 + 2706 68 2 -8.0726 -7.4881 0.2345 0 1 0 + 2707 68 2 -7.7076 -8.0529 0.9047 0 1 0 + 2708 68 2 -7.6802 7.4155 1.1007 0 0 0 + 2709 68 2 -7.6732 6.4950 1.3320 0 0 0 + 2710 68 2 -8.0665 6.8498 2.1233 0 0 0 + 2711 68 2 -7.5123 7.5002 2.5139 0 0 0 + 2712 68 2 -6.7122 8.0247 2.4504 0 0 0 + 2713 68 2 -6.8009 7.9757 1.4777 0 0 0 + 2714 68 2 -5.9905 7.9282 0.9028 0 0 0 + 2715 68 2 -5.0200 7.6086 0.6620 0 0 0 + 2716 68 2 -4.3907 7.1263 1.0847 0 0 0 + 2717 68 2 -4.1808 7.3274 0.1406 0 0 0 + 2718 68 2 -3.3601 7.6234 0.4430 0 0 0 + 2719 68 2 -3.4119 8.1216 -0.3709 0 0 0 + 2720 68 2 -2.9322 -7.6882 0.1671 0 1 0 + 2721 69 1 -1.5976 0.6749 -7.1646 0 0 0 + 2722 69 1 -2.1315 0.5175 -6.3512 0 0 0 + 2723 69 1 -2.9993 0.1467 -6.3137 0 0 0 + 2724 69 1 -3.3516 -0.7366 -6.5492 0 0 0 + 2725 69 1 -2.7909 -1.1999 -5.9807 0 0 0 + 2726 69 1 -2.0415 -1.6779 -5.5993 0 0 0 + 2727 69 1 -1.2610 -1.1775 -5.8379 0 0 0 + 2728 69 1 -1.9102 -0.5448 -6.2433 0 0 0 + 2729 69 1 -1.2406 0.1623 -6.1369 0 0 0 + 2730 69 1 -1.4093 0.6913 -5.3762 0 0 0 + 2731 69 1 -1.0273 1.5430 -4.9017 0 0 0 + 2732 69 1 -1.5857 2.2690 -4.5824 0 0 0 + 2733 69 1 -0.7495 2.7360 -4.4447 0 0 0 + 2734 69 1 -1.1388 3.4970 -4.8416 0 0 0 + 2735 69 1 -0.4263 3.5937 -5.4453 0 0 0 + 2736 69 1 -0.2908 3.5126 -6.4598 0 0 0 + 2737 69 1 0.5868 3.1585 -6.5957 0 0 0 + 2738 69 1 1.2834 2.5356 -6.5041 0 0 0 + 2739 69 1 2.1458 2.5809 -6.9349 0 0 0 + 2740 69 1 2.6535 3.2653 -6.5329 0 0 0 + 2741 69 1 2.4754 3.9802 -5.8938 0 0 0 + 2742 69 1 3.4124 3.8845 -6.1233 0 0 0 + 2743 69 1 4.3763 3.9680 -6.1726 0 0 0 + 2744 69 1 4.0718 4.1178 -7.0260 0 0 0 + 2745 69 1 4.4153 3.9091 -7.8789 0 0 0 + 2746 69 1 4.8669 3.9573 7.7050 0 0 -1 + 2747 69 1 5.3510 3.1369 7.6474 0 0 -1 + 2748 69 1 5.4599 2.4181 -8.1441 0 0 0 + 2749 69 1 5.4514 2.0915 7.2739 0 0 -1 + 2750 69 1 5.2729 2.3059 6.4146 0 0 -1 + 2751 69 1 5.3358 3.2542 6.4250 0 0 -1 + 2752 69 1 4.6858 3.9427 6.3564 0 0 -1 + 2753 69 1 4.1976 4.6515 6.7140 0 0 -1 + 2754 69 1 4.2365 5.0819 7.5687 0 0 -1 + 2755 69 1 4.7578 5.5213 6.8509 0 0 -1 + 2756 69 1 5.1419 6.2796 6.4756 0 0 -1 + 2757 69 1 5.9286 6.4882 5.9507 0 0 -1 + 2758 69 1 5.5729 6.1576 5.1549 0 0 -1 + 2759 69 1 5.4868 5.7911 4.1922 0 0 -1 + 2760 69 1 5.1694 5.0736 3.6068 0 0 -1 + 2761 70 2 6.8320 -2.3961 6.9270 0 0 0 + 2762 70 2 6.0783 -1.9102 7.1338 0 0 0 + 2763 70 2 5.2770 -1.7705 7.5052 0 0 0 + 2764 70 2 4.5699 -1.3471 7.9960 0 0 0 + 2765 70 2 4.3302 -1.3296 -7.5186 0 0 1 + 2766 70 2 5.1629 -0.9539 -7.4435 0 0 1 + 2767 70 2 5.0303 -1.5219 -6.6932 0 0 1 + 2768 70 2 5.7180 -1.8397 -6.1184 0 0 1 + 2769 70 2 6.6582 -1.6170 -6.1856 0 0 1 + 2770 70 2 7.0253 -0.8748 -6.6388 0 0 1 + 2771 70 2 7.6467 -1.6162 -6.5826 0 0 1 + 2772 70 2 7.5971 -2.0239 -5.7063 0 0 1 + 2773 70 2 -8.1341 -2.6121 -6.3428 1 0 1 + 2774 70 2 -7.9561 -2.1857 -7.2162 1 0 1 + 2775 70 2 -7.5885 -1.8463 -8.0285 1 0 1 + 2776 70 2 -6.8111 -2.4563 -8.0157 1 0 1 + 2777 70 2 -6.3958 -2.0553 -7.2652 1 0 1 + 2778 70 2 -6.3949 -1.5745 -6.4574 1 0 1 + 2779 70 2 -6.7703 -1.0339 -5.7560 1 0 1 + 2780 70 2 -7.3890 -1.5921 -6.3373 1 0 1 + 2781 70 2 -7.0388 -2.4769 -6.3631 1 0 1 + 2782 70 2 -6.1914 -2.8632 -6.7224 1 0 1 + 2783 70 2 -5.5281 -3.4190 -6.2590 1 0 1 + 2784 70 2 -6.1158 -4.1275 -6.1646 1 0 1 + 2785 70 2 -6.5208 -4.9857 -6.4159 1 0 1 + 2786 70 2 -6.5686 -5.8009 -5.8363 1 0 1 + 2787 70 2 -5.7518 -5.7842 -5.3562 1 0 1 + 2788 70 2 -6.2435 -4.9061 -5.1825 1 0 1 + 2789 70 2 -5.6850 -4.1094 -5.1404 1 0 1 + 2790 70 2 -5.8102 -4.1556 -4.1748 1 0 1 + 2791 70 2 -6.4581 -3.4840 -3.9120 1 0 1 + 2792 70 2 -6.9191 -3.8801 -4.6813 1 0 1 + 2793 70 2 -7.1748 -4.4859 -5.4586 1 0 1 + 2794 70 2 -7.7213 -5.3001 -5.4669 1 0 1 + 2795 70 2 -7.6776 -6.2613 -5.7934 1 0 1 + 2796 70 2 -7.2982 -6.0847 -6.6370 1 0 1 + 2797 70 2 -6.5952 -6.7239 -6.6917 1 0 1 + 2798 70 2 -5.8274 -6.8110 -6.0265 1 0 1 + 2799 70 2 -5.1728 -6.8317 -5.3331 1 0 1 + 2800 70 2 -5.0116 -6.1772 -4.6863 1 0 1 + 2801 71 1 0.4162 6.0322 -3.4019 0 0 0 + 2802 71 1 0.6219 5.1261 -3.0897 0 0 0 + 2803 71 1 1.2527 5.8407 -2.9367 0 0 0 + 2804 71 1 1.3914 6.9046 -2.9730 0 0 0 + 2805 71 1 1.1846 7.5396 -2.3495 0 0 0 + 2806 71 1 1.8094 8.2016 -2.0883 0 0 0 + 2807 71 1 2.0157 -7.5271 -1.5117 0 1 0 + 2808 71 1 1.2253 -7.0739 -1.6122 0 1 0 + 2809 71 1 1.4520 -6.3805 -2.2578 0 1 0 + 2810 71 1 0.8350 -7.0145 -2.7146 0 1 0 + 2811 71 1 0.8228 -7.8674 -2.2592 0 1 0 + 2812 71 1 0.4465 -8.0736 -3.1855 0 1 0 + 2813 71 1 -0.4735 8.1900 -3.0575 0 0 0 + 2814 71 1 -0.9685 -7.7322 -2.4739 0 1 0 + 2815 71 1 -0.1654 -7.4123 -2.0916 0 1 0 + 2816 71 1 0.1818 -6.5348 -2.0419 0 1 0 + 2817 71 1 -0.4268 -5.7404 -2.0002 0 1 0 + 2818 71 1 -1.1987 -5.2354 -2.2543 0 1 0 + 2819 71 1 -2.1763 -5.3984 -2.2662 0 1 0 + 2820 71 1 -3.1053 -5.7011 -2.1997 0 1 0 + 2821 71 1 -4.0505 -5.5000 -2.0332 0 1 0 + 2822 71 1 -3.9139 -4.7316 -1.4829 0 1 0 + 2823 71 1 -2.9947 -4.4213 -1.1548 0 1 0 + 2824 71 1 -2.1207 -4.0526 -0.8745 0 1 0 + 2825 71 1 -2.8878 -3.4684 -0.6574 0 1 0 + 2826 71 1 -3.6129 -4.1016 -0.4541 0 1 0 + 2827 71 1 -3.9613 -4.9452 -0.2105 0 1 0 + 2828 71 1 -4.3625 -5.4519 -0.9283 0 1 0 + 2829 71 1 -4.5143 -6.2263 -0.3886 0 1 0 + 2830 71 1 -3.5413 -6.1604 -0.2444 0 1 0 + 2831 71 1 -3.1747 -5.3937 -0.6363 0 1 0 + 2832 71 1 -2.3643 -4.9725 -0.2860 0 1 0 + 2833 71 1 -2.0372 -4.2093 0.1375 0 1 0 + 2834 71 1 -2.4017 -3.4047 0.5090 0 1 0 + 2835 71 1 -1.9475 -3.8077 1.2357 0 1 0 + 2836 71 1 -1.4346 -4.5171 0.8644 0 1 0 + 2837 71 1 -2.2775 -4.9999 0.8410 0 1 0 + 2838 71 1 -3.1193 -5.0385 0.4440 0 1 0 + 2839 71 1 -3.7680 -4.3967 0.6715 0 1 0 + 2840 71 1 -3.4917 -3.5296 0.4755 0 1 0 + 2841 72 2 2.2052 -3.0770 -1.6560 0 0 0 + 2842 72 2 1.7247 -3.7608 -2.2275 0 0 0 + 2843 72 2 0.9435 -4.2536 -2.1236 0 0 0 + 2844 72 2 1.1512 -4.7158 -1.3417 0 0 0 + 2845 72 2 0.5981 -4.1904 -0.7393 0 0 0 + 2846 72 2 1.2922 -4.2027 -0.0367 0 0 0 + 2847 72 2 1.6837 -4.9806 -0.3833 0 0 0 + 2848 72 2 2.3334 -5.6649 -0.1521 0 0 0 + 2849 72 2 2.4515 -5.3527 0.7860 0 0 0 + 2850 72 2 1.9155 -4.6825 1.1666 0 0 0 + 2851 72 2 1.3595 -5.3600 0.7279 0 0 0 + 2852 72 2 1.1771 -6.1205 1.2399 0 0 0 + 2853 72 2 0.9675 -7.0596 1.3991 0 0 0 + 2854 72 2 0.0614 -7.3980 1.5681 0 0 0 + 2855 72 2 -0.4532 -7.9220 0.9893 0 0 0 + 2856 72 2 -1.1781 7.8937 1.1199 0 -1 0 + 2857 72 2 -0.4163 7.3162 1.1825 0 -1 0 + 2858 72 2 0.0591 7.3911 0.3189 0 -1 0 + 2859 72 2 -0.6193 7.9560 -0.0046 0 -1 0 + 2860 72 2 -1.2355 -8.0459 -0.5408 0 0 0 + 2861 72 2 -1.3034 -7.3745 -1.3272 0 0 0 + 2862 72 2 -0.7116 -6.7042 -0.9020 0 0 0 + 2863 72 2 0.0773 -6.2414 -0.5338 0 0 0 + 2864 72 2 0.7869 -5.6879 -0.1662 0 0 0 + 2865 72 2 0.5039 -4.8306 0.1575 0 0 0 + 2866 72 2 0.8009 -4.2132 0.8042 0 0 0 + 2867 72 2 0.1640 -3.8767 1.4086 0 0 0 + 2868 72 2 0.8524 -4.1034 2.0106 0 0 0 + 2869 72 2 1.7769 -4.1193 2.0836 0 0 0 + 2870 72 2 2.4693 -4.5044 2.6736 0 0 0 + 2871 72 2 1.6417 -4.9026 3.0593 0 0 0 + 2872 72 2 1.5420 -3.9638 3.0425 0 0 0 + 2873 72 2 1.6948 -3.2039 2.4392 0 0 0 + 2874 72 2 2.0352 -2.7152 1.6846 0 0 0 + 2875 72 2 2.7977 -2.3047 1.2260 0 0 0 + 2876 72 2 3.5877 -2.7740 1.1227 0 0 0 + 2877 72 2 4.4018 -3.1156 0.7097 0 0 0 + 2878 72 2 4.8043 -2.6334 -0.0242 0 0 0 + 2879 72 2 4.7271 -2.8401 -0.9948 0 0 0 + 2880 72 2 5.2014 -3.6112 -1.1305 0 0 0 + 2881 73 1 6.0593 -7.8306 7.7923 0 0 0 + 2882 73 1 6.7361 -7.1806 8.1031 0 0 0 + 2883 73 1 7.4007 -7.8601 8.0135 0 0 0 + 2884 73 1 7.5445 -7.9231 7.0918 0 0 0 + 2885 73 1 -8.0458 8.0072 7.0844 1 -1 0 + 2886 73 1 -7.7306 7.0759 6.9960 1 -1 0 + 2887 73 1 -7.0245 6.5600 6.7767 1 -1 0 + 2888 73 1 -6.1124 6.8904 6.6002 1 -1 0 + 2889 73 1 -5.3373 7.5149 6.5857 1 -1 0 + 2890 73 1 -4.8968 8.1471 7.2132 1 -1 0 + 2891 73 1 -5.2331 -7.8458 7.9896 1 0 0 + 2892 73 1 -5.9243 -7.3084 -8.0557 1 0 1 + 2893 73 1 -6.3815 -6.6278 7.9940 1 0 0 + 2894 73 1 -7.0199 -6.0613 7.6251 1 0 0 + 2895 73 1 -7.1005 -5.8981 -7.8415 1 0 1 + 2896 73 1 -7.0136 -4.9746 -7.4516 1 0 1 + 2897 73 1 -6.3913 -5.6690 -7.1684 1 0 1 + 2898 73 1 -5.7122 -5.8369 -6.4673 1 0 1 + 2899 73 1 -5.3764 -5.0394 -6.1426 1 0 1 + 2900 73 1 -4.8091 -4.3288 -5.8471 1 0 1 + 2901 73 1 -4.5821 -4.1063 -4.9633 1 0 1 + 2902 73 1 -3.9791 -4.7901 -4.8939 1 0 1 + 2903 73 1 -4.7114 -5.2558 -5.2823 1 0 1 + 2904 73 1 -5.2945 -5.0933 -4.5262 1 0 1 + 2905 73 1 -4.8751 -4.4976 -3.8335 1 0 1 + 2906 73 1 -5.3680 -4.0570 -3.1849 1 0 1 + 2907 73 1 -6.2234 -3.8208 -2.9087 1 0 1 + 2908 73 1 -7.0425 -4.3574 -2.9862 1 0 1 + 2909 73 1 -7.6860 -4.5283 -2.3209 1 0 1 + 2910 73 1 7.8662 -4.6450 -1.9802 0 0 1 + 2911 73 1 6.9494 -4.5846 -1.8176 0 0 1 + 2912 73 1 6.0248 -4.6923 -1.6617 0 0 1 + 2913 73 1 6.0712 -4.5434 -0.7359 0 0 1 + 2914 73 1 6.7546 -3.8851 -0.5006 0 0 1 + 2915 73 1 7.3399 -3.8454 -1.2447 0 0 1 + 2916 73 1 -8.1863 -3.7556 -1.7323 1 0 1 + 2917 73 1 -7.2354 -3.7069 -1.7711 1 0 1 + 2918 73 1 -6.3172 -3.4973 -1.5452 1 0 1 + 2919 73 1 -6.5111 -4.4185 -1.6620 1 0 1 + 2920 73 1 -6.8208 -5.2693 -1.9328 1 0 1 + 2921 74 2 3.9712 -2.9641 6.4727 0 0 0 + 2922 74 2 3.7953 -3.5939 5.7713 0 0 0 + 2923 74 2 3.4889 -4.0366 4.9609 0 0 0 + 2924 74 2 2.7959 -4.4581 4.5145 0 0 0 + 2925 74 2 2.6904 -4.9813 3.7385 0 0 0 + 2926 74 2 2.9251 -5.6697 3.1165 0 0 0 + 2927 74 2 3.4534 -6.4125 2.9289 0 0 0 + 2928 74 2 2.7413 -7.0254 2.8470 0 0 0 + 2929 74 2 1.8777 -7.1106 3.1872 0 0 0 + 2930 74 2 0.9159 -7.2220 3.3590 0 0 0 + 2931 74 2 0.2628 -6.5680 3.6869 0 0 0 + 2932 74 2 0.5742 -5.8446 3.0916 0 0 0 + 2933 74 2 0.5068 -5.6867 2.1574 0 0 0 + 2934 74 2 0.5045 -4.9640 1.5558 0 0 0 + 2935 74 2 -0.2377 -4.6383 2.1167 0 0 0 + 2936 74 2 -1.1062 -4.9220 1.8509 0 0 0 + 2937 74 2 -1.6984 -5.6387 1.5183 0 0 0 + 2938 74 2 -2.2100 -5.2307 2.1900 0 0 0 + 2939 74 2 -2.9242 -5.6879 1.6975 0 0 0 + 2940 74 2 -3.7235 -5.0836 1.5673 0 0 0 + 2941 74 2 -4.3143 -5.1528 2.3276 0 0 0 + 2942 74 2 -4.9179 -4.8094 1.7001 0 0 0 + 2943 74 2 -4.6726 -5.2451 0.8968 0 0 0 + 2944 74 2 -4.0052 -5.9147 0.6191 0 0 0 + 2945 74 2 -3.5210 -6.6770 0.9622 0 0 0 + 2946 74 2 -2.7164 -6.9827 1.3075 0 0 0 + 2947 74 2 -1.8157 -7.3230 1.6910 0 0 0 + 2948 74 2 -0.8976 -7.0637 1.8576 0 0 0 + 2949 74 2 -0.8469 -7.9980 2.0320 0 0 0 + 2950 74 2 -0.7153 7.4919 2.2553 0 -1 0 + 2951 74 2 -1.0061 6.6390 1.8962 0 -1 0 + 2952 74 2 -1.7005 6.2922 1.2825 0 -1 0 + 2953 74 2 -1.1152 5.6569 0.8604 0 -1 0 + 2954 74 2 -0.4460 4.9572 0.7140 0 -1 0 + 2955 74 2 0.0861 4.2943 0.9934 0 -1 0 + 2956 74 2 0.9390 4.3773 0.6487 0 -1 0 + 2957 74 2 1.5352 5.2000 0.6343 0 -1 0 + 2958 74 2 1.6205 4.6248 -0.1811 0 -1 0 + 2959 74 2 1.6115 3.6434 -0.2147 0 -1 0 + 2960 74 2 1.7634 3.2384 -1.0709 0 -1 0 + 2961 75 1 6.9342 0.5823 -5.0870 0 0 0 + 2962 75 1 6.7740 -0.2816 -4.7481 0 0 0 + 2963 75 1 6.8070 -0.1934 -3.7187 0 0 0 + 2964 75 1 6.1329 -0.3231 -3.1066 0 0 0 + 2965 75 1 6.9775 -0.8707 -2.8982 0 0 0 + 2966 75 1 7.4574 -0.0558 -2.7352 0 0 0 + 2967 75 1 6.9904 0.6676 -3.0617 0 0 0 + 2968 75 1 7.0433 1.3720 -2.5419 0 0 0 + 2969 75 1 7.9779 1.2648 -2.3569 0 0 0 + 2970 75 1 -7.8678 1.3403 -1.6224 1 0 0 + 2971 75 1 -7.6618 2.1674 -2.0714 1 0 0 + 2972 75 1 -7.7303 2.5825 -2.9449 1 0 0 + 2973 75 1 -8.0851 2.7617 -3.8777 1 0 0 + 2974 75 1 -7.1600 3.0226 -4.0742 1 0 0 + 2975 75 1 -6.2896 2.9428 -4.4428 1 0 0 + 2976 75 1 -5.6914 2.5186 -5.0789 1 0 0 + 2977 75 1 -5.1478 2.8991 -4.4133 1 0 0 + 2978 75 1 -4.6102 2.3171 -3.9774 1 0 0 + 2979 75 1 -4.3406 3.1294 -3.6253 1 0 0 + 2980 75 1 -4.7868 3.9082 -3.9850 1 0 0 + 2981 75 1 -5.5744 4.2865 -4.3239 1 0 0 + 2982 75 1 -5.7796 5.1955 -4.5687 1 0 0 + 2983 75 1 -5.5576 6.0725 -4.7381 1 0 0 + 2984 75 1 -5.6325 6.7513 -5.4743 1 0 0 + 2985 75 1 -5.8566 6.7071 -6.3672 1 0 0 + 2986 75 1 -6.0665 6.9692 -7.2628 1 0 0 + 2987 75 1 -6.0248 6.9972 8.1915 1 0 -1 + 2988 75 1 -5.7664 7.8061 7.6094 1 0 -1 + 2989 75 1 -6.4924 7.9835 6.8254 1 0 -1 + 2990 75 1 -6.7996 7.3973 7.5078 1 0 -1 + 2991 75 1 -7.1398 7.0054 -8.0462 1 0 0 + 2992 75 1 -6.6210 7.7979 -7.9479 1 0 0 + 2993 75 1 -6.8441 -7.8060 -7.6166 1 1 0 + 2994 75 1 -6.8975 -8.0963 -6.7354 1 1 0 + 2995 75 1 -7.6972 -7.9115 -6.2602 1 1 0 + 2996 75 1 -7.7437 7.6612 -5.8181 1 0 0 + 2997 75 1 7.9529 8.1948 -5.5797 0 0 0 + 2998 75 1 7.9572 -7.2812 -5.6822 0 1 0 + 2999 75 1 8.0706 -6.5887 -5.1105 0 1 0 + 3000 75 1 -8.1006 -5.8448 -4.5805 1 1 0 + 3001 76 2 -1.2817 -1.4459 4.6417 0 0 0 + 3002 76 2 -1.5550 -0.9458 3.9243 0 0 0 + 3003 76 2 -1.7657 -0.4986 3.0806 0 0 0 + 3004 76 2 -2.5235 -1.0329 2.8672 0 0 0 + 3005 76 2 -3.4207 -1.2651 2.9530 0 0 0 + 3006 76 2 -4.2880 -1.0084 2.7139 0 0 0 + 3007 76 2 -3.7989 -1.8206 2.2710 0 0 0 + 3008 76 2 -2.9706 -2.2995 2.2170 0 0 0 + 3009 76 2 -2.4426 -2.5364 1.4391 0 0 0 + 3010 76 2 -1.6504 -2.8062 1.9911 0 0 0 + 3011 76 2 -1.8923 -2.1602 2.7060 0 0 0 + 3012 76 2 -2.6296 -2.0983 3.2592 0 0 0 + 3013 76 2 -3.4115 -2.6017 3.0926 0 0 0 + 3014 76 2 -4.1253 -3.1984 2.9040 0 0 0 + 3015 76 2 -4.0659 -3.8545 2.1806 0 0 0 + 3016 76 2 -3.2609 -3.5633 2.6174 0 0 0 + 3017 76 2 -2.4587 -3.1519 2.8731 0 0 0 + 3018 76 2 -1.4788 -3.1211 2.9561 0 0 0 + 3019 76 2 -1.5651 -2.7924 3.8302 0 0 0 + 3020 76 2 -1.2288 -1.9586 3.5857 0 0 0 + 3021 76 2 -0.8677 -1.0994 3.2096 0 0 0 + 3022 76 2 -0.0119 -0.6477 3.2099 0 0 0 + 3023 76 2 0.5280 -0.5058 2.3917 0 0 0 + 3024 76 2 1.2041 0.0316 2.7753 0 0 0 + 3025 76 2 1.5986 0.6220 3.3671 0 0 0 + 3026 76 2 1.5860 1.4829 2.8643 0 0 0 + 3027 76 2 1.2693 1.9757 3.7173 0 0 0 + 3028 76 2 0.7292 2.6441 4.0742 0 0 0 + 3029 76 2 0.2422 3.3387 4.5966 0 0 0 + 3030 76 2 1.1257 3.6586 4.3508 0 0 0 + 3031 76 2 1.0423 3.4077 3.4276 0 0 0 + 3032 76 2 1.7950 4.0017 3.2022 0 0 0 + 3033 76 2 2.1550 3.3090 3.7335 0 0 0 + 3034 76 2 1.8640 2.8698 4.5271 0 0 0 + 3035 76 2 1.1154 2.7083 5.0388 0 0 0 + 3036 76 2 1.3910 1.8104 4.8281 0 0 0 + 3037 76 2 2.2991 1.6809 4.5480 0 0 0 + 3038 76 2 2.3122 2.2059 3.7482 0 0 0 + 3039 76 2 1.7799 2.6092 3.0626 0 0 0 + 3040 76 2 1.4281 3.2741 2.4595 0 0 0 + 3041 77 1 -1.8315 5.5893 6.2620 0 0 0 + 3042 77 1 -2.4674 5.7019 5.5694 0 0 0 + 3043 77 1 -3.0441 5.2930 4.9227 0 0 0 + 3044 77 1 -3.4259 5.2972 4.0762 0 0 0 + 3045 77 1 -4.0494 4.6488 4.0111 0 0 0 + 3046 77 1 -4.8058 4.2801 4.4482 0 0 0 + 3047 77 1 -5.5411 4.1606 5.0775 0 0 0 + 3048 77 1 -6.2021 3.9297 4.4189 0 0 0 + 3049 77 1 -6.4192 3.5183 3.6054 0 0 0 + 3050 77 1 -6.2622 3.4131 2.6147 0 0 0 + 3051 77 1 -6.2505 3.3400 1.6362 0 0 0 + 3052 77 1 -5.6075 3.3997 0.9667 0 0 0 + 3053 77 1 -5.8485 2.5623 0.6288 0 0 0 + 3054 77 1 -5.1063 2.0430 0.5823 0 0 0 + 3055 77 1 -5.3775 1.4730 -0.2050 0 0 0 + 3056 77 1 -4.8140 0.9978 -0.7989 0 0 0 + 3057 77 1 -4.8026 1.2084 -1.7987 0 0 0 + 3058 77 1 -5.7620 1.2550 -1.7990 0 0 0 + 3059 77 1 -6.2712 1.7999 -2.4255 0 0 0 + 3060 77 1 -6.9910 1.7089 -2.9882 0 0 0 + 3061 77 1 -7.5555 1.8035 -3.8054 0 0 0 + 3062 77 1 -7.5052 1.6475 -4.7822 0 0 0 + 3063 77 1 -7.8312 1.5967 -5.6538 0 0 0 + 3064 77 1 7.7354 1.2156 -5.9110 -1 0 0 + 3065 77 1 6.8572 0.9468 -6.1843 -1 0 0 + 3066 77 1 6.3632 0.1786 -5.8624 -1 0 0 + 3067 77 1 5.9758 -0.6707 -5.9288 -1 0 0 + 3068 77 1 6.0363 -1.0977 -6.8274 -1 0 0 + 3069 77 1 6.5269 -1.7933 -7.2356 -1 0 0 + 3070 77 1 6.8594 -1.9949 -8.1140 -1 0 0 + 3071 77 1 7.0473 -2.8569 7.9839 -1 0 -1 + 3072 77 1 7.2085 -3.7922 7.9840 -1 0 -1 + 3073 77 1 6.8554 -4.1697 7.1288 -1 0 -1 + 3074 77 1 6.6687 -4.9003 6.5755 -1 0 -1 + 3075 77 1 5.8194 -5.2925 6.7968 -1 0 -1 + 3076 77 1 5.4828 -6.1114 6.4093 -1 0 -1 + 3077 77 1 5.3889 -6.6957 7.1820 -1 0 -1 + 3078 77 1 6.3215 -7.0370 7.1217 -1 0 -1 + 3079 77 1 6.4387 -6.2449 7.5754 -1 0 -1 + 3080 77 1 6.6548 -6.1188 6.7047 -1 0 -1 + 3081 78 2 -0.1144 5.6959 -5.5731 0 0 0 + 3082 78 2 0.5363 5.0237 -5.7555 0 0 0 + 3083 78 2 0.7649 4.1408 -6.2806 0 0 0 + 3084 78 2 0.4312 4.3368 -7.1589 0 0 0 + 3085 78 2 -0.3565 4.2460 -7.8534 0 0 0 + 3086 78 2 -1.2519 4.1110 8.1531 0 0 -1 + 3087 78 2 -1.8538 4.7273 7.6672 0 0 -1 + 3088 78 2 -0.9889 5.0411 7.8806 0 0 -1 + 3089 78 2 -0.4565 4.5466 7.3694 0 0 -1 + 3090 78 2 -0.6182 4.0205 6.6269 0 0 -1 + 3091 78 2 -1.1819 3.6024 7.2484 0 0 -1 + 3092 78 2 -1.3548 2.6809 7.0174 0 0 -1 + 3093 78 2 -0.8919 2.3698 6.2240 0 0 -1 + 3094 78 2 0.0060 2.2917 5.7702 0 0 -1 + 3095 78 2 0.1852 2.0898 4.8117 0 0 -1 + 3096 78 2 0.2475 1.7127 3.9644 0 0 -1 + 3097 78 2 0.7443 1.0365 4.4913 0 0 -1 + 3098 78 2 0.5446 0.9964 5.4356 0 0 -1 + 3099 78 2 0.7008 0.7449 6.3406 0 0 -1 + 3100 78 2 -0.1419 0.4801 6.0336 0 0 -1 + 3101 78 2 -1.0332 0.4454 5.6882 0 0 -1 + 3102 78 2 -1.2409 0.3176 4.7706 0 0 -1 + 3103 78 2 -1.6957 0.7961 3.9699 0 0 -1 + 3104 78 2 -1.1422 0.0552 3.6764 0 0 -1 + 3105 78 2 -0.3302 0.4836 3.9764 0 0 -1 + 3106 78 2 -0.2820 0.9524 4.8036 0 0 -1 + 3107 78 2 -0.5845 1.4288 5.5895 0 0 -1 + 3108 78 2 -1.4592 1.3218 5.1290 0 0 -1 + 3109 78 2 -2.1333 0.6468 5.3721 0 0 -1 + 3110 78 2 -2.4826 -0.2116 5.6582 0 0 -1 + 3111 78 2 -3.0180 -0.3755 6.3910 0 0 -1 + 3112 78 2 -2.6795 -0.7867 7.2467 0 0 -1 + 3113 78 2 -2.2935 -0.0539 7.7751 0 0 -1 + 3114 78 2 -1.7200 0.5145 -8.1975 0 0 0 + 3115 78 2 -0.7647 0.4276 -8.1330 0 0 0 + 3116 78 2 0.1856 0.6136 -7.9183 0 0 0 + 3117 78 2 0.6616 1.3907 -7.7027 0 0 0 + 3118 78 2 0.6946 2.3051 -7.3666 0 0 0 + 3119 78 2 -0.2844 2.3614 -7.6186 0 0 0 + 3120 78 2 -0.9296 2.2674 8.0967 0 0 -1 + 3121 79 1 -8.0941 2.6759 4.9747 0 0 0 + 3122 79 1 -7.6157 3.3722 5.4347 0 0 0 + 3123 79 1 -7.1003 3.9935 6.0455 0 0 0 + 3124 79 1 -7.0933 3.0918 6.5466 0 0 0 + 3125 79 1 -7.2080 2.3740 5.9164 0 0 0 + 3126 79 1 -6.9138 1.9214 5.1566 0 0 0 + 3127 79 1 -6.4246 1.3576 4.6159 0 0 0 + 3128 79 1 -5.8571 0.8659 3.9300 0 0 0 + 3129 79 1 -5.9144 0.1116 3.3629 0 0 0 + 3130 79 1 -5.0659 0.0628 3.8891 0 0 0 + 3131 79 1 -4.7708 -0.4477 4.6477 0 0 0 + 3132 79 1 -4.4853 -0.8688 5.4274 0 0 0 + 3133 79 1 -4.2955 -1.6414 5.9900 0 0 0 + 3134 79 1 -5.1853 -1.6998 5.6826 0 0 0 + 3135 79 1 -5.0988 -1.4298 4.7860 0 0 0 + 3136 79 1 -5.9610 -1.2211 5.0177 0 0 0 + 3137 79 1 -5.4716 -0.5485 5.4255 0 0 0 + 3138 79 1 -5.7130 0.1909 5.9274 0 0 0 + 3139 79 1 -5.6818 0.4380 4.9185 0 0 0 + 3140 79 1 -4.8376 0.8873 4.8537 0 0 0 + 3141 79 1 -5.3301 1.6993 4.8322 0 0 0 + 3142 79 1 -5.9495 1.6832 5.5168 0 0 0 + 3143 79 1 -6.0888 2.1984 6.2602 0 0 0 + 3144 79 1 -6.8318 1.7552 6.7369 0 0 0 + 3145 79 1 -7.4307 1.2980 6.1721 0 0 0 + 3146 79 1 -7.6507 0.4642 5.6465 0 0 0 + 3147 79 1 8.0203 0.4001 5.0932 -1 0 0 + 3148 79 1 7.4313 0.6006 4.3732 -1 0 0 + 3149 79 1 6.5206 0.4132 4.1884 -1 0 0 + 3150 79 1 6.3158 -0.4789 3.9429 -1 0 0 + 3151 79 1 6.0411 -1.4253 4.0369 -1 0 0 + 3152 79 1 6.3784 -1.9618 4.7345 -1 0 0 + 3153 79 1 6.8196 -2.1411 5.5833 -1 0 0 + 3154 79 1 7.5996 -2.6124 5.9755 -1 0 0 + 3155 79 1 7.7464 -3.4518 5.4314 -1 0 0 + 3156 79 1 -7.7777 -3.2166 5.7260 0 0 0 + 3157 79 1 -7.6438 -3.1974 6.7293 0 0 0 + 3158 79 1 -7.3382 -3.5114 7.5899 0 0 0 + 3159 79 1 -7.8103 -4.0197 8.1482 0 0 0 + 3160 79 1 -7.9347 -4.4569 -7.3933 0 0 1 + 3161 80 2 -7.5891 -5.2874 7.9547 0 0 0 + 3162 80 2 -6.9871 -4.5784 7.6441 0 0 0 + 3163 80 2 -6.4150 -4.4882 6.8386 0 0 0 + 3164 80 2 -5.5313 -4.2697 6.6682 0 0 0 + 3165 80 2 -4.8372 -3.6055 6.7143 0 0 0 + 3166 80 2 -4.0589 -3.1064 6.4477 0 0 0 + 3167 80 2 -4.0936 -3.2095 7.3810 0 0 0 + 3168 80 2 -4.7128 -3.9233 7.6706 0 0 0 + 3169 80 2 -5.1956 -4.1100 -7.9116 0 0 1 + 3170 80 2 -5.5378 -4.1453 -6.9820 0 0 1 + 3171 80 2 -5.0120 -4.8925 -7.0881 0 0 1 + 3172 80 2 -4.6158 -5.8050 -7.1836 0 0 1 + 3173 80 2 -4.4083 -5.4022 -6.3706 0 0 1 + 3174 80 2 -3.8373 -5.7521 -5.7152 0 0 1 + 3175 80 2 -2.9850 -6.0000 -5.3578 0 0 1 + 3176 80 2 -2.0502 -5.9952 -5.7025 0 0 1 + 3177 80 2 -1.4274 -6.5009 -5.2261 0 0 1 + 3178 80 2 -1.3955 -7.2929 -4.6706 0 0 1 + 3179 80 2 -1.3599 -8.1603 -4.1951 0 0 1 + 3180 80 2 -2.2356 7.8876 -4.0969 0 -1 1 + 3181 80 2 -3.0769 7.9674 -3.7280 0 -1 1 + 3182 80 2 -3.4862 7.2498 -3.2879 0 -1 1 + 3183 80 2 -4.1697 6.7320 -2.9419 0 -1 1 + 3184 80 2 -4.6713 6.3526 -3.7217 0 -1 1 + 3185 80 2 -3.8060 6.3117 -4.0619 0 -1 1 + 3186 80 2 -3.2834 6.1696 -4.8608 0 -1 1 + 3187 80 2 -2.3440 5.9486 -4.7910 0 -1 1 + 3188 80 2 -1.6836 6.3336 -4.1419 0 -1 1 + 3189 80 2 -1.7995 5.4374 -3.7977 0 -1 1 + 3190 80 2 -2.1763 4.6022 -3.6147 0 -1 1 + 3191 80 2 -2.6015 4.8160 -2.7150 0 -1 1 + 3192 80 2 -3.0024 5.5359 -2.2200 0 -1 1 + 3193 80 2 -2.7350 6.1103 -1.4854 0 -1 1 + 3194 80 2 -2.3259 6.5185 -0.7205 0 -1 1 + 3195 80 2 -2.1796 6.1758 0.2398 0 -1 1 + 3196 80 2 -2.0711 5.3155 0.6096 0 -1 1 + 3197 80 2 -1.4964 4.5998 0.6437 0 -1 1 + 3198 80 2 -1.3284 4.4775 -0.2668 0 -1 1 + 3199 80 2 -1.2092 4.1177 -1.0795 0 -1 1 + 3200 80 2 -0.5103 4.2055 -1.7125 0 -1 1 + 3201 81 1 2.0033 6.8319 3.7207 0 0 0 + 3202 81 1 2.8698 6.6677 4.1319 0 0 0 + 3203 81 1 3.0299 6.0722 3.4814 0 0 0 + 3204 81 1 3.0646 5.1769 3.1667 0 0 0 + 3205 81 1 3.4298 4.4601 3.6173 0 0 0 + 3206 81 1 2.9378 3.8412 3.0576 0 0 0 + 3207 81 1 2.3302 3.7509 2.3123 0 0 0 + 3208 81 1 2.0286 3.4078 1.4806 0 0 0 + 3209 81 1 2.3126 3.4764 0.5326 0 0 0 + 3210 81 1 2.6501 3.1391 -0.3302 0 0 0 + 3211 81 1 2.7101 2.5634 -1.0810 0 0 0 + 3212 81 1 2.5486 2.0625 -1.9444 0 0 0 + 3213 81 1 2.7357 1.4122 -2.6292 0 0 0 + 3214 81 1 3.5080 0.9971 -2.1118 0 0 0 + 3215 81 1 3.6540 0.1128 -2.2834 0 0 0 + 3216 81 1 3.9842 -0.5815 -1.7188 0 0 0 + 3217 81 1 3.7038 -0.6103 -0.7882 0 0 0 + 3218 81 1 3.8569 -1.1996 -0.0919 0 0 0 + 3219 81 1 3.6434 -1.8700 0.6035 0 0 0 + 3220 81 1 3.2325 -2.4924 0.0348 0 0 0 + 3221 81 1 2.8472 -2.8769 -0.7445 0 0 0 + 3222 81 1 2.9113 -2.2440 -1.4138 0 0 0 + 3223 81 1 3.4418 -1.4270 -1.5531 0 0 0 + 3224 81 1 2.8876 -0.6259 -1.7148 0 0 0 + 3225 81 1 2.2139 -0.1700 -1.1807 0 0 0 + 3226 81 1 1.3499 0.1763 -1.1777 0 0 0 + 3227 81 1 2.0099 0.6981 -0.7027 0 0 0 + 3228 81 1 2.7981 1.0348 -0.3277 0 0 0 + 3229 81 1 2.8708 1.4349 -1.1313 0 0 0 + 3230 81 1 2.0807 1.1607 -1.6354 0 0 0 + 3231 81 1 1.2100 0.9960 -1.9521 0 0 0 + 3232 81 1 1.4753 1.7965 -2.3903 0 0 0 + 3233 81 1 1.7493 2.7084 -2.3187 0 0 0 + 3234 81 1 1.9693 3.6098 -2.1284 0 0 0 + 3235 81 1 1.0972 3.4337 -1.7316 0 0 0 + 3236 81 1 0.8740 4.2069 -1.1945 0 0 0 + 3237 81 1 1.8211 4.4632 -1.1505 0 0 0 + 3238 81 1 1.4442 5.0508 -1.8094 0 0 0 + 3239 81 1 1.6942 4.6790 -2.6288 0 0 0 + 3240 81 1 2.5193 4.4397 -2.1799 0 0 0 + 3241 82 2 2.8035 5.4342 0.1406 0 0 0 + 3242 82 2 2.4059 5.3175 -0.6869 0 0 0 + 3243 82 2 1.4657 5.4770 -0.8288 0 0 0 + 3244 82 2 0.5472 5.6197 -0.8903 0 0 0 + 3245 82 2 -0.0632 4.9012 -1.0594 0 0 0 + 3246 82 2 -0.9943 5.1669 -1.3321 0 0 0 + 3247 82 2 -0.4703 5.9728 -1.4514 0 0 0 + 3248 82 2 -0.0613 6.7430 -1.0974 0 0 0 + 3249 82 2 0.2803 6.3037 -0.3104 0 0 0 + 3250 82 2 0.3915 5.5363 0.2314 0 0 0 + 3251 82 2 0.1658 4.6483 -0.0237 0 0 0 + 3252 82 2 0.1882 3.6062 0.0509 0 0 0 + 3253 82 2 -0.7526 3.7446 0.2834 0 0 0 + 3254 82 2 -1.7144 3.6854 0.3574 0 0 0 + 3255 82 2 -2.2547 3.6602 1.1012 0 0 0 + 3256 82 2 -2.7178 3.8188 1.9408 0 0 0 + 3257 82 2 -3.0884 4.0781 2.7354 0 0 0 + 3258 82 2 -3.0772 4.4458 3.5928 0 0 0 + 3259 82 2 -2.4402 4.8646 4.0815 0 0 0 + 3260 82 2 -2.1679 5.6419 4.5417 0 0 0 + 3261 82 2 -2.1752 6.5997 4.6722 0 0 0 + 3262 82 2 -2.2748 7.4591 5.1067 0 0 0 + 3263 82 2 -1.2773 7.5528 4.9973 0 0 0 + 3264 82 2 -1.1718 6.8584 4.2710 0 0 0 + 3265 82 2 -0.4208 6.2829 4.1256 0 0 0 + 3266 82 2 0.4135 6.0437 4.5138 0 0 0 + 3267 82 2 0.9012 6.0770 5.3176 0 0 0 + 3268 82 2 1.6452 6.4923 4.7634 0 0 0 + 3269 82 2 1.7342 5.7460 4.0970 0 0 0 + 3270 82 2 2.3130 4.9240 4.1370 0 0 0 + 3271 82 2 1.3879 4.7148 4.2637 0 0 0 + 3272 82 2 0.5044 4.5856 4.7137 0 0 0 + 3273 82 2 0.0272 5.3027 5.0995 0 0 0 + 3274 82 2 -0.7555 5.4781 4.5416 0 0 0 + 3275 82 2 -0.1894 5.1195 3.7988 0 0 0 + 3276 82 2 -1.0140 4.5855 3.7190 0 0 0 + 3277 82 2 -1.5623 3.9266 3.3659 0 0 0 + 3278 82 2 -2.1905 3.4657 2.8247 0 0 0 + 3279 82 2 -2.6714 2.7706 3.4397 0 0 0 + 3280 82 2 -3.5433 3.0764 3.2039 0 0 0 + 3281 83 1 0.6668 -8.0107 -7.8989 0 0 0 + 3282 83 1 -0.1957 8.0294 -7.7013 0 -1 0 + 3283 83 1 -0.2364 -7.5422 -8.0857 0 0 0 + 3284 83 1 -0.2792 -6.6855 7.8964 0 0 -1 + 3285 83 1 -0.1022 -5.8121 7.5085 0 0 -1 + 3286 83 1 -0.2693 -5.0966 8.1156 0 0 -1 + 3287 83 1 -0.6624 -4.4139 -7.7318 0 0 0 + 3288 83 1 -0.1924 -4.1306 -7.0123 0 0 0 + 3289 83 1 0.5369 -4.2046 -6.3660 0 0 0 + 3290 83 1 0.9324 -5.0394 -5.9691 0 0 0 + 3291 83 1 0.6851 -5.9001 -5.5309 0 0 0 + 3292 83 1 1.4679 -5.9725 -5.0555 0 0 0 + 3293 83 1 1.3546 -6.0824 -4.1029 0 0 0 + 3294 83 1 0.8026 -6.0304 -3.3255 0 0 0 + 3295 83 1 -0.0281 -6.1107 -3.7997 0 0 0 + 3296 83 1 0.0519 -5.5832 -4.5631 0 0 0 + 3297 83 1 0.4431 -4.7297 -4.8507 0 0 0 + 3298 83 1 0.1938 -4.2544 -4.0775 0 0 0 + 3299 83 1 1.0549 -3.8919 -4.3424 0 0 0 + 3300 83 1 1.9328 -3.5775 -4.5334 0 0 0 + 3301 83 1 2.8535 -3.4042 -4.6631 0 0 0 + 3302 83 1 3.0281 -3.9561 -3.9257 0 0 0 + 3303 83 1 3.8332 -4.3885 -3.5710 0 0 0 + 3304 83 1 4.5037 -5.2506 -3.5141 0 0 0 + 3305 83 1 4.9699 -6.0853 -3.2613 0 0 0 + 3306 83 1 5.8597 -6.3504 -3.1677 0 0 0 + 3307 83 1 6.7163 -6.0074 -3.5795 0 0 0 + 3308 83 1 7.2193 -5.8823 -4.3384 0 0 0 + 3309 83 1 7.6121 -5.0428 -4.6991 0 0 0 + 3310 83 1 7.6528 -4.2680 -5.2117 0 0 0 + 3311 83 1 6.8180 -4.2509 -4.7667 0 0 0 + 3312 83 1 6.6556 -5.0404 -4.2498 0 0 0 + 3313 83 1 7.4391 -5.0059 -3.6999 0 0 0 + 3314 83 1 -7.9661 -4.8599 -3.4998 1 0 0 + 3315 83 1 7.8676 -4.3946 -2.9344 0 0 0 + 3316 83 1 7.9898 -3.5889 -3.3957 0 0 0 + 3317 83 1 7.4032 -2.8143 -3.2650 0 0 0 + 3318 83 1 7.0450 -3.3456 -2.5716 0 0 0 + 3319 83 1 6.4933 -3.0102 -1.8268 0 0 0 + 3320 83 1 5.6903 -2.8069 -1.3697 0 0 0 + 3321 84 2 -3.5540 -4.7927 4.6395 0 0 0 + 3322 84 2 -4.2580 -5.3775 4.4543 0 0 0 + 3323 84 2 -5.1207 -5.5486 4.6318 0 0 0 + 3324 84 2 -6.0659 -5.6897 4.8918 0 0 0 + 3325 84 2 -5.8741 -5.4467 5.7689 0 0 0 + 3326 84 2 -5.8484 -5.7301 6.6404 0 0 0 + 3327 84 2 -6.7371 -5.4697 6.5802 0 0 0 + 3328 84 2 -7.6269 -5.3856 6.3342 0 0 0 + 3329 84 2 -8.1019 -4.8477 5.6968 0 0 0 + 3330 84 2 -7.8309 -5.3344 4.8946 0 0 0 + 3331 84 2 8.1603 -6.2179 4.9639 -1 0 0 + 3332 84 2 7.6730 -7.0114 5.1511 -1 0 0 + 3333 84 2 6.8141 -7.0485 4.8060 -1 0 0 + 3334 84 2 6.4552 -6.9840 3.9096 -1 0 0 + 3335 84 2 5.7781 -6.8471 3.2014 -1 0 0 + 3336 84 2 5.3792 -6.5919 2.3728 -1 0 0 + 3337 84 2 5.8140 -7.3512 1.8998 -1 0 0 + 3338 84 2 6.3585 -6.6927 1.5244 -1 0 0 + 3339 84 2 6.0040 -5.8205 1.2705 -1 0 0 + 3340 84 2 6.3506 -5.0591 0.8383 -1 0 0 + 3341 84 2 6.4833 -4.1646 0.6080 -1 0 0 + 3342 84 2 5.8449 -3.4696 0.8456 -1 0 0 + 3343 84 2 5.4978 -2.5982 0.9060 -1 0 0 + 3344 84 2 6.3793 -2.6885 1.3261 -1 0 0 + 3345 84 2 6.2560 -3.3729 1.9817 -1 0 0 + 3346 84 2 5.3244 -3.1192 1.8703 -1 0 0 + 3347 84 2 5.6760 -2.6973 2.6545 -1 0 0 + 3348 84 2 6.1335 -2.4734 3.4905 -1 0 0 + 3349 84 2 7.1003 -2.5036 3.6302 -1 0 0 + 3350 84 2 7.8349 -1.9735 3.4939 -1 0 0 + 3351 84 2 -8.0876 -1.1897 3.5194 0 0 0 + 3352 84 2 -7.7467 -0.3782 3.1008 0 0 0 + 3353 84 2 -7.1129 0.1569 3.4700 0 0 0 + 3354 84 2 -7.4553 -0.5607 4.0476 0 0 0 + 3355 84 2 -7.5756 -0.4134 5.0667 0 0 0 + 3356 84 2 -8.1936 -0.6078 5.7863 0 0 0 + 3357 84 2 7.3288 -0.7421 5.9752 -1 0 0 + 3358 84 2 6.5007 -1.1859 6.0650 -1 0 0 + 3359 84 2 6.4572 -0.9608 5.1400 -1 0 0 + 3360 84 2 6.9117 -0.1462 5.0619 -1 0 0 + 3361 85 1 6.2235 -6.8960 5.8323 0 0 0 + 3362 85 1 6.6344 -6.1622 5.4501 0 0 0 + 3363 85 1 7.3343 -5.5147 5.4893 0 0 0 + 3364 85 1 7.6228 -5.4155 6.3544 0 0 0 + 3365 85 1 7.9044 -5.0268 7.1765 0 0 0 + 3366 85 1 7.8313 -4.7427 8.0588 0 0 0 + 3367 85 1 7.4549 -4.3525 -7.6034 0 0 1 + 3368 85 1 6.7288 -4.6916 -7.0658 0 0 1 + 3369 85 1 6.1011 -5.2377 -6.6340 0 0 1 + 3370 85 1 5.2096 -5.5577 -6.7611 0 0 1 + 3371 85 1 4.3041 -5.3915 -6.7868 0 0 1 + 3372 85 1 4.2789 -4.5044 -6.4749 0 0 1 + 3373 85 1 3.8010 -4.7392 -5.6396 0 0 1 + 3374 85 1 3.3597 -4.7634 -4.7755 0 0 1 + 3375 85 1 3.8478 -3.9504 -4.6073 0 0 1 + 3376 85 1 4.2974 -3.1628 -4.8490 0 0 1 + 3377 85 1 5.2178 -3.2176 -4.9810 0 0 1 + 3378 85 1 5.8949 -3.8850 -4.9987 0 0 1 + 3379 85 1 5.6961 -4.8167 -4.9661 0 0 1 + 3380 85 1 5.5515 -5.4731 -5.6487 0 0 1 + 3381 85 1 4.6361 -5.5580 -5.8681 0 0 1 + 3382 85 1 4.0846 -5.9724 -5.2883 0 0 1 + 3383 85 1 3.3827 -5.7411 -5.9648 0 0 1 + 3384 85 1 3.2656 -6.6019 -6.3394 0 0 1 + 3385 85 1 3.3408 -6.9568 -7.2497 0 0 1 + 3386 85 1 2.5908 -6.9775 -7.7931 0 0 1 + 3387 85 1 2.1273 -7.8612 -7.7466 0 0 1 + 3388 85 1 3.1037 -8.0650 -7.7829 0 0 1 + 3389 85 1 3.9665 7.8799 -7.9023 0 -1 1 + 3390 85 1 4.8408 8.1543 -7.7710 0 -1 1 + 3391 85 1 5.7501 7.8176 -7.8515 0 -1 1 + 3392 85 1 5.5954 7.6539 -6.9403 0 -1 1 + 3393 85 1 6.2278 -8.1790 -6.4592 0 0 1 + 3394 85 1 6.9191 -7.7721 -5.9915 0 0 1 + 3395 85 1 7.1172 -6.8701 -6.2283 0 0 1 + 3396 85 1 7.2903 -5.9747 -5.6796 0 0 1 + 3397 85 1 7.5587 -5.1182 -6.0055 0 0 1 + 3398 85 1 7.9012 -4.2789 -6.2956 0 0 1 + 3399 85 1 8.0693 -3.5124 -6.7963 0 0 1 + 3400 85 1 7.6254 -2.8340 -7.4615 0 0 1 + 3401 86 2 2.9781 0.0867 -0.1631 0 0 0 + 3402 86 2 3.5378 0.4403 -0.8823 0 0 0 + 3403 86 2 3.8897 1.3755 -0.9045 0 0 0 + 3404 86 2 3.9547 2.3039 -1.0643 0 0 0 + 3405 86 2 3.7488 2.9538 -0.3535 0 0 0 + 3406 86 2 3.5480 3.7543 0.1384 0 0 0 + 3407 86 2 3.6341 4.7020 0.1604 0 0 0 + 3408 86 2 3.7670 5.5070 -0.3364 0 0 0 + 3409 86 2 4.3623 6.1065 -0.6640 0 0 0 + 3410 86 2 4.8710 6.7310 -0.0918 0 0 0 + 3411 86 2 5.7183 6.5944 -0.5843 0 0 0 + 3412 86 2 5.4510 6.5146 -1.5240 0 0 0 + 3413 86 2 4.9209 6.5587 -2.3506 0 0 0 + 3414 86 2 5.3426 7.4093 -2.4317 0 0 0 + 3415 86 2 6.0878 6.9621 -2.7926 0 0 0 + 3416 86 2 6.7977 7.2819 -2.1707 0 0 0 + 3417 86 2 7.2697 8.0861 -1.8814 0 0 0 + 3418 86 2 6.6276 -8.1473 -2.5574 0 1 0 + 3419 86 2 7.0227 7.5743 -3.0753 0 0 0 + 3420 86 2 6.1498 7.7096 -3.5444 0 0 0 + 3421 86 2 6.1893 -7.7879 -3.4235 0 1 0 + 3422 86 2 6.8534 -7.1277 -3.7612 0 1 0 + 3423 86 2 7.6638 -7.0398 -4.1915 0 1 0 + 3424 86 2 -7.9784 -6.6111 -3.8438 1 1 0 + 3425 86 2 7.8246 -5.9967 -3.4596 0 1 0 + 3426 86 2 7.3431 -5.5950 -2.7351 0 1 0 + 3427 86 2 7.2672 -5.6387 -1.7745 0 1 0 + 3428 86 2 7.8618 -5.2440 -1.0848 0 1 0 + 3429 86 2 8.1403 -5.2822 -0.1746 0 1 0 + 3430 86 2 7.4344 -5.0307 0.4050 0 1 0 + 3431 86 2 7.2956 -4.8470 1.3359 0 1 0 + 3432 86 2 7.1875 -3.9449 1.2890 0 1 0 + 3433 86 2 7.5401 -3.0687 1.0339 0 1 0 + 3434 86 2 7.2945 -2.9488 1.9531 0 1 0 + 3435 86 2 7.5170 -2.0791 2.2437 0 1 0 + 3436 86 2 8.0812 -1.2960 2.1261 0 1 0 + 3437 86 2 -7.9684 -0.4646 1.9857 1 1 0 + 3438 86 2 -7.2039 -0.5794 1.4803 1 1 0 + 3439 86 2 -6.2631 -0.8277 1.2176 1 1 0 + 3440 86 2 -5.6301 -0.6821 0.5419 1 1 0 + 3441 87 1 -0.0448 0.8323 1.0716 0 0 0 + 3442 87 1 -0.9474 0.7492 1.0191 0 0 0 + 3443 87 1 -1.8881 0.7017 1.0203 0 0 0 + 3444 87 1 -2.2336 0.2673 0.3087 0 0 0 + 3445 87 1 -3.0412 0.6471 0.7287 0 0 0 + 3446 87 1 -3.7201 0.8882 1.3643 0 0 0 + 3447 87 1 -4.4875 0.6928 1.8393 0 0 0 + 3448 87 1 -5.1444 1.1911 1.4048 0 0 0 + 3449 87 1 -5.6616 1.9601 1.5318 0 0 0 + 3450 87 1 -6.3641 2.3117 2.0717 0 0 0 + 3451 87 1 -6.7929 2.5948 2.8942 0 0 0 + 3452 87 1 -5.9867 2.5202 3.3927 0 0 0 + 3453 87 1 -5.4869 1.8087 3.6768 0 0 0 + 3454 87 1 -5.1564 1.0165 3.2516 0 0 0 + 3455 87 1 -5.0482 0.2700 2.6807 0 0 0 + 3456 87 1 -4.1118 0.2457 3.0262 0 0 0 + 3457 87 1 -3.3951 0.6840 2.6201 0 0 0 + 3458 87 1 -2.8768 0.5555 1.8470 0 0 0 + 3459 87 1 -2.6302 -0.2483 1.3211 0 0 0 + 3460 87 1 -2.0053 -0.6378 1.9118 0 0 0 + 3461 87 1 -1.3882 -1.2437 2.3210 0 0 0 + 3462 87 1 -0.8255 -1.9856 2.5561 0 0 0 + 3463 87 1 0.0327 -1.5342 2.6898 0 0 0 + 3464 87 1 0.9186 -1.2711 2.9974 0 0 0 + 3465 87 1 1.7716 -0.9566 2.7566 0 0 0 + 3466 87 1 2.2909 -0.2780 2.3590 0 0 0 + 3467 87 1 2.1603 0.6519 2.3735 0 0 0 + 3468 87 1 2.0956 1.5459 1.9548 0 0 0 + 3469 87 1 1.5001 2.2940 1.9789 0 0 0 + 3470 87 1 0.7212 2.7594 1.6255 0 0 0 + 3471 87 1 0.8724 3.2618 0.8741 0 0 0 + 3472 87 1 1.0332 3.8553 1.6221 0 0 0 + 3473 87 1 0.8776 4.0841 2.5429 0 0 0 + 3474 87 1 0.8233 4.9387 2.9434 0 0 0 + 3475 87 1 0.6931 5.7571 3.5115 0 0 0 + 3476 87 1 0.8310 6.6649 3.5854 0 0 0 + 3477 87 1 0.0250 7.1392 3.8031 0 0 0 + 3478 87 1 -0.0960 7.8566 3.1308 0 0 0 + 3479 87 1 -0.1007 -7.6711 2.7569 0 1 0 + 3480 87 1 0.3778 -6.8511 2.5943 0 1 0 + 3481 88 2 -6.6948 -5.6882 -4.6239 0 0 0 + 3482 88 2 -6.8627 -6.3409 -3.8571 0 0 0 + 3483 88 2 -6.7923 -5.7756 -3.0541 0 0 0 + 3484 88 2 -5.9892 -5.7854 -2.5083 0 0 0 + 3485 88 2 -6.0490 -5.9335 -1.5552 0 0 0 + 3486 88 2 -5.4764 -6.3360 -0.9533 0 0 0 + 3487 88 2 -5.2465 -6.9160 -0.2544 0 0 0 + 3488 88 2 -5.5579 -7.0685 0.6410 0 0 0 + 3489 88 2 -5.2326 -7.8520 1.1785 0 0 0 + 3490 88 2 -4.2822 -7.9898 1.0474 0 0 0 + 3491 88 2 -3.7480 -7.4763 1.6376 0 0 0 + 3492 88 2 -3.1197 -8.0842 1.2649 0 0 0 + 3493 88 2 -2.2280 8.0768 1.7061 0 -1 0 + 3494 88 2 -2.8343 -7.8666 2.3211 0 0 0 + 3495 88 2 -2.5844 -7.7234 3.2201 0 0 0 + 3496 88 2 -2.7071 -7.4216 4.1596 0 0 0 + 3497 88 2 -1.7883 -7.5856 3.7842 0 0 0 + 3498 88 2 -1.0481 -7.6483 3.1967 0 0 0 + 3499 88 2 -0.6266 -6.8418 3.1045 0 0 0 + 3500 88 2 -0.5728 -5.9506 3.5605 0 0 0 + 3501 88 2 -1.2470 -5.4023 3.9583 0 0 0 + 3502 88 2 -2.1051 -5.4959 4.2593 0 0 0 + 3503 88 2 -1.7608 -4.9961 4.9790 0 0 0 + 3504 88 2 -1.2513 -4.4699 5.6193 0 0 0 + 3505 88 2 -1.6596 -4.1544 6.4360 0 0 0 + 3506 88 2 -2.3487 -3.5515 6.5585 0 0 0 + 3507 88 2 -3.2682 -3.7096 6.8461 0 0 0 + 3508 88 2 -3.4251 -4.1290 7.6603 0 0 0 + 3509 88 2 -2.4667 -4.2190 7.4218 0 0 0 + 3510 88 2 -1.7971 -3.8715 8.0876 0 0 0 + 3511 88 2 -0.8986 -3.4412 8.0322 0 0 0 + 3512 88 2 -0.5530 -3.3261 -7.5194 0 0 1 + 3513 88 2 -1.0784 -3.2006 -6.7166 0 0 1 + 3514 88 2 -1.5278 -3.9655 -7.2724 0 0 1 + 3515 88 2 -1.8153 -4.7738 -7.6352 0 0 1 + 3516 88 2 -1.8768 -5.4578 -6.9598 0 0 1 + 3517 88 2 -1.7597 -6.3563 -6.7357 0 0 1 + 3518 88 2 -2.4363 -6.7644 -6.2542 0 0 1 + 3519 88 2 -2.9158 -7.3857 -5.7338 0 0 1 + 3520 88 2 -2.6078 -8.0157 -6.4453 0 0 1 + 3521 89 1 3.7846 3.1327 5.3316 0 0 0 + 3522 89 1 4.5047 3.7549 5.3536 0 0 0 + 3523 89 1 5.3586 4.1023 5.5276 0 0 0 + 3524 89 1 6.2577 3.6417 5.3720 0 0 0 + 3525 89 1 6.0906 4.3720 4.8806 0 0 0 + 3526 89 1 5.2258 4.3774 4.5110 0 0 0 + 3527 89 1 4.7096 5.2400 4.5753 0 0 0 + 3528 89 1 4.2566 4.4452 4.2162 0 0 0 + 3529 89 1 3.6462 3.7492 4.5780 0 0 0 + 3530 89 1 2.7294 3.9074 4.4941 0 0 0 + 3531 89 1 1.8992 3.9868 4.8936 0 0 0 + 3532 89 1 1.0908 4.0939 5.4963 0 0 0 + 3533 89 1 1.2180 3.9570 6.4464 0 0 0 + 3534 89 1 1.8155 4.0828 7.1549 0 0 0 + 3535 89 1 1.5573 3.8628 8.0508 0 0 0 + 3536 89 1 1.4098 3.0585 -7.8699 0 0 1 + 3537 89 1 0.5625 3.4171 -7.6039 0 0 1 + 3538 89 1 0.6328 4.1707 -8.1340 0 0 1 + 3539 89 1 0.5035 5.0068 7.8467 0 0 0 + 3540 89 1 0.8449 5.4174 -7.7805 0 0 1 + 3541 89 1 -0.1037 5.2298 -7.5860 0 0 1 + 3542 89 1 -1.0991 5.4429 -7.4726 0 0 1 + 3543 89 1 -1.9551 4.9007 -7.4986 0 0 1 + 3544 89 1 -2.1370 3.9412 -7.4740 0 0 1 + 3545 89 1 -2.0167 4.1875 -6.5724 0 0 1 + 3546 89 1 -2.7038 4.9368 -6.6287 0 0 1 + 3547 89 1 -3.1830 4.2038 -6.4941 0 0 1 + 3548 89 1 -2.6626 3.4162 -6.4457 0 0 1 + 3549 89 1 -2.8408 2.6134 -6.0348 0 0 1 + 3550 89 1 -2.7635 2.2724 -5.1207 0 0 1 + 3551 89 1 -2.6970 2.5293 -4.1724 0 0 1 + 3552 89 1 -3.4074 2.6371 -3.4844 0 0 1 + 3553 89 1 -3.5392 1.6793 -3.3614 0 0 1 + 3554 89 1 -3.5168 0.6847 -3.5172 0 0 1 + 3555 89 1 -2.9917 -0.0916 -3.1048 0 0 1 + 3556 89 1 -3.1566 -0.1637 -4.0596 0 0 1 + 3557 89 1 -2.6263 0.3132 -4.6675 0 0 1 + 3558 89 1 -2.8150 0.8462 -5.4007 0 0 1 + 3559 89 1 -2.7621 1.4230 -6.1834 0 0 1 + 3560 89 1 -3.2965 1.8910 -6.8309 0 0 1 + 3561 90 2 7.6430 -1.9244 -3.6326 0 0 0 + 3562 90 2 7.5318 -1.9794 -2.6484 0 0 0 + 3563 90 2 7.5430 -1.7062 -1.6900 0 0 0 + 3564 90 2 6.7098 -1.3034 -1.7163 0 0 0 + 3565 90 2 5.9208 -1.1095 -2.1616 0 0 0 + 3566 90 2 5.0118 -0.6761 -2.0928 0 0 0 + 3567 90 2 4.7187 0.1293 -2.6038 0 0 0 + 3568 90 2 5.2397 0.2105 -3.3839 0 0 0 + 3569 90 2 5.0265 0.8220 -4.0741 0 0 0 + 3570 90 2 5.4840 1.5948 -3.7431 0 0 0 + 3571 90 2 5.0436 2.3527 -3.3666 0 0 0 + 3572 90 2 4.7761 3.2389 -3.1256 0 0 0 + 3573 90 2 4.1680 3.8315 -2.6317 0 0 0 + 3574 90 2 4.2421 3.2276 -1.9214 0 0 0 + 3575 90 2 3.5122 2.6162 -2.0163 0 0 0 + 3576 90 2 2.8229 3.1637 -2.4324 0 0 0 + 3577 90 2 2.5042 3.4289 -3.2910 0 0 0 + 3578 90 2 2.9829 3.7351 -4.0688 0 0 0 + 3579 90 2 3.0575 4.6517 -4.4093 0 0 0 + 3580 90 2 3.3119 5.1563 -3.6485 0 0 0 + 3581 90 2 3.1831 5.9780 -3.2149 0 0 0 + 3582 90 2 2.4392 5.5052 -2.7810 0 0 0 + 3583 90 2 2.3800 6.4623 -2.6267 0 0 0 + 3584 90 2 2.4468 7.4342 -2.4789 0 0 0 + 3585 90 2 3.2840 7.5883 -3.1152 0 0 0 + 3586 90 2 2.7291 6.8680 -3.5010 0 0 0 + 3587 90 2 2.1911 6.1352 -3.5642 0 0 0 + 3588 90 2 2.4399 5.4688 -4.2253 0 0 0 + 3589 90 2 2.0504 4.6451 -4.5137 0 0 0 + 3590 90 2 2.1882 5.3795 -5.2458 0 0 0 + 3591 90 2 1.5376 5.1334 -5.9552 0 0 0 + 3592 90 2 0.9660 5.3945 -6.6808 0 0 0 + 3593 90 2 0.7929 6.2700 -7.1188 0 0 0 + 3594 90 2 1.0864 6.6711 -7.9480 0 0 0 + 3595 90 2 0.1407 6.4988 -8.0057 0 0 0 + 3596 90 2 -0.0064 7.1197 -7.2982 0 0 0 + 3597 90 2 -0.4815 7.6825 -6.6807 0 0 0 + 3598 90 2 -0.2730 -8.1013 -5.9029 0 1 0 + 3599 90 2 -0.2516 7.9491 -4.9528 0 0 0 + 3600 90 2 -0.5070 7.8787 -4.0280 0 0 0 + 3601 91 1 0.6223 -4.7095 2.7945 0 0 0 + 3602 91 1 0.7569 -4.7830 3.7632 0 0 0 + 3603 91 1 0.8296 -4.7011 4.7468 0 0 0 + 3604 91 1 0.8229 -3.7360 4.6554 0 0 0 + 3605 91 1 0.3845 -2.9559 4.2514 0 0 0 + 3606 91 1 -0.2964 -2.5611 3.7200 0 0 0 + 3607 91 1 -0.2820 -2.0971 4.6000 0 0 0 + 3608 91 1 -1.0418 -2.7487 4.8396 0 0 0 + 3609 91 1 -0.3278 -3.2755 5.0093 0 0 0 + 3610 91 1 0.2260 -3.6621 5.6597 0 0 0 + 3611 91 1 -0.0864 -4.4345 5.2561 0 0 0 + 3612 91 1 0.2662 -5.3256 5.4393 0 0 0 + 3613 91 1 0.6071 -4.6709 6.0704 0 0 0 + 3614 91 1 1.1085 -4.1290 6.6853 0 0 0 + 3615 91 1 1.9173 -3.7325 6.9972 0 0 0 + 3616 91 1 2.0567 -2.9408 7.4996 0 0 0 + 3617 91 1 2.4505 -2.1883 7.8871 0 0 0 + 3618 91 1 2.5560 -1.2386 7.6676 0 0 0 + 3619 91 1 2.5152 -0.2378 8.0337 0 0 0 + 3620 91 1 2.1280 0.6061 -8.1650 0 0 1 + 3621 91 1 1.3822 1.0683 7.9757 0 0 0 + 3622 91 1 0.6052 1.1811 7.4819 0 0 0 + 3623 91 1 -0.0126 1.8197 7.8920 0 0 0 + 3624 91 1 -0.3811 1.4478 -7.7050 0 0 1 + 3625 91 1 -0.1606 1.0380 -6.8800 0 0 1 + 3626 91 1 -0.1481 0.5705 -6.0248 0 0 1 + 3627 91 1 -0.3447 -0.2268 -5.5177 0 0 1 + 3628 91 1 -0.0775 -1.0934 -5.1781 0 0 1 + 3629 91 1 0.6574 -1.3480 -5.7742 0 0 1 + 3630 91 1 0.0879 -2.1068 -5.7543 0 0 1 + 3631 91 1 -0.3576 -2.7902 -5.2361 0 0 1 + 3632 91 1 0.0254 -2.9423 -4.3472 0 0 1 + 3633 91 1 -0.3613 -3.4714 -3.6089 0 0 1 + 3634 91 1 -0.1642 -2.6916 -3.0436 0 0 1 + 3635 91 1 -0.8741 -2.1141 -3.3529 0 0 1 + 3636 91 1 -1.1906 -1.3007 -3.0277 0 0 1 + 3637 91 1 -1.1741 -0.5922 -3.6176 0 0 1 + 3638 91 1 -0.4676 -0.4699 -3.0283 0 0 1 + 3639 91 1 -0.3009 -0.3478 -2.1091 0 0 1 + 3640 91 1 -0.1885 -0.6961 -1.1832 0 0 1 + 3641 92 2 -0.9911 -4.2988 -1.5795 0 0 0 + 3642 92 2 -1.8063 -4.7628 -1.5485 0 0 0 + 3643 92 2 -2.3638 -4.3270 -2.2405 0 0 0 + 3644 92 2 -2.4481 -4.1665 -3.1721 0 0 0 + 3645 92 2 -1.5754 -3.8175 -3.6807 0 0 0 + 3646 92 2 -1.2625 -2.9782 -3.9715 0 0 0 + 3647 92 2 -1.4869 -2.9451 -3.0271 0 0 0 + 3648 92 2 -0.8642 -3.3345 -2.3194 0 0 0 + 3649 92 2 -0.1218 -3.7872 -1.9106 0 0 0 + 3650 92 2 0.1336 -4.7546 -1.6780 0 0 0 + 3651 92 2 0.5096 -5.7030 -1.4842 0 0 0 + 3652 92 2 1.2181 -6.0868 -1.0024 0 0 0 + 3653 92 2 2.0704 -6.5264 -0.8645 0 0 0 + 3654 92 2 2.2224 -7.3431 -0.4004 0 0 0 + 3655 92 2 2.9083 -7.8229 -0.9674 0 0 0 + 3656 92 2 3.5186 -7.2218 -1.3121 0 0 0 + 3657 92 2 3.7235 -7.3489 -2.2234 0 0 0 + 3658 92 2 3.2919 -6.7889 -2.7696 0 0 0 + 3659 92 2 2.7340 -6.5851 -2.0199 0 0 0 + 3660 92 2 2.8506 -5.6275 -2.1346 0 0 0 + 3661 92 2 3.1697 -4.9592 -2.6934 0 0 0 + 3662 92 2 2.7534 -5.1649 -3.5137 0 0 0 + 3663 92 2 3.2863 -5.9430 -3.3552 0 0 0 + 3664 92 2 3.5813 -6.7340 -3.7205 0 0 0 + 3665 92 2 4.0903 -7.5130 -4.0241 0 0 0 + 3666 92 2 4.6066 -7.8031 -4.7657 0 0 0 + 3667 92 2 5.1451 7.8302 -4.9908 0 -1 0 + 3668 92 2 5.8601 7.3116 -4.5359 0 -1 0 + 3669 92 2 6.6248 6.7741 -4.3327 0 -1 0 + 3670 92 2 7.0689 5.8764 -4.3380 0 -1 0 + 3671 92 2 7.9754 5.5530 -4.5888 0 -1 0 + 3672 92 2 -7.7764 5.1541 -4.1110 1 -1 0 + 3673 92 2 -7.9957 5.2073 -3.2385 1 -1 0 + 3674 92 2 -7.8665 5.0133 -2.2742 1 -1 0 + 3675 92 2 -7.9484 5.3139 -1.3053 1 -1 0 + 3676 92 2 7.9808 6.2511 -1.3897 0 -1 0 + 3677 92 2 -7.5047 6.5615 -1.3143 1 -1 0 + 3678 92 2 -7.1236 6.1255 -0.5485 1 -1 0 + 3679 92 2 -6.5441 6.0533 -1.3527 1 -1 0 + 3680 92 2 -6.3317 5.2630 -0.7679 1 -1 0 + 3681 93 1 4.4523 -7.2150 -7.6080 0 0 0 + 3682 93 1 4.8168 -7.6798 -6.8248 0 0 0 + 3683 93 1 4.9922 -8.0643 -5.9476 0 0 0 + 3684 93 1 4.2049 7.8967 -5.9835 0 -1 0 + 3685 93 1 3.5145 7.9610 -5.3472 0 -1 0 + 3686 93 1 4.2292 7.5306 -4.9714 0 -1 0 + 3687 93 1 4.8487 6.7662 -4.9595 0 -1 0 + 3688 93 1 5.4873 6.1358 -4.5808 0 -1 0 + 3689 93 1 6.0026 6.4486 -5.2913 0 -1 0 + 3690 93 1 6.7702 6.6300 -5.8978 0 -1 0 + 3691 93 1 6.1935 7.3643 -6.1067 0 -1 0 + 3692 93 1 5.2948 7.2202 -5.8189 0 -1 0 + 3693 93 1 4.9931 6.2313 -5.9513 0 -1 0 + 3694 93 1 5.6594 5.5812 -5.8156 0 -1 0 + 3695 93 1 6.1190 4.7465 -5.8175 0 -1 0 + 3696 93 1 5.9981 3.8139 -5.9083 0 -1 0 + 3697 93 1 6.0196 2.9565 -5.4082 0 -1 0 + 3698 93 1 6.0513 2.1076 -4.9955 0 -1 0 + 3699 93 1 6.9013 1.6275 -5.1798 0 -1 0 + 3700 93 1 7.7674 1.3041 -4.9268 0 -1 0 + 3701 93 1 7.9116 0.4543 -5.3372 0 -1 0 + 3702 93 1 -8.0598 0.3767 -6.2293 1 -1 0 + 3703 93 1 -7.1543 0.7683 -6.1678 1 -1 0 + 3704 93 1 -6.8733 0.9141 -5.2877 1 -1 0 + 3705 93 1 -6.4099 0.9525 -4.3833 1 -1 0 + 3706 93 1 -6.6307 1.9062 -4.3746 1 -1 0 + 3707 93 1 -6.8364 2.3795 -5.2522 1 -1 0 + 3708 93 1 -7.1810 3.2617 -5.1219 1 -1 0 + 3709 93 1 -6.2672 3.3382 -5.3198 1 -1 0 + 3710 93 1 -5.8754 3.4155 -6.1494 1 -1 0 + 3711 93 1 -6.5217 2.7037 -6.4517 1 -1 0 + 3712 93 1 -7.4785 2.7341 -6.0180 1 -1 0 + 3713 93 1 8.1243 2.4827 -6.3666 0 -1 0 + 3714 93 1 -7.9242 1.6579 -6.6941 1 -1 0 + 3715 93 1 -8.2073 1.4561 -7.5947 1 -1 0 + 3716 93 1 8.1961 1.1089 7.8770 0 -1 -1 + 3717 93 1 -7.8253 1.0494 7.0267 1 -1 -1 + 3718 93 1 7.8246 1.5530 6.8332 0 -1 -1 + 3719 93 1 7.0198 2.0656 6.9128 0 -1 -1 + 3720 93 1 6.2210 2.6562 6.8084 0 -1 -1 + 3721 94 2 4.4680 2.1721 -2.0004 0 0 0 + 3722 94 2 3.7664 1.8460 -2.5839 0 0 0 + 3723 94 2 3.0880 2.3140 -3.0135 0 0 0 + 3724 94 2 2.1800 2.4074 -3.2201 0 0 0 + 3725 94 2 1.5627 1.8950 -3.8548 0 0 0 + 3726 94 2 0.6779 1.3522 -3.8490 0 0 0 + 3727 94 2 -0.1707 0.9561 -3.9195 0 0 0 + 3728 94 2 -0.7627 0.3256 -3.4503 0 0 0 + 3729 94 2 -0.9066 0.3824 -2.5211 0 0 0 + 3730 94 2 -1.4046 -0.3086 -2.0663 0 0 0 + 3731 94 2 -0.9244 -1.1594 -1.9028 0 0 0 + 3732 94 2 -0.1321 -1.4246 -2.3011 0 0 0 + 3733 94 2 0.7705 -1.4335 -2.0574 0 0 0 + 3734 94 2 1.5616 -0.8229 -1.9028 0 0 0 + 3735 94 2 1.6335 -0.9786 -1.0179 0 0 0 + 3736 94 2 2.3262 -1.5805 -1.0228 0 0 0 + 3737 94 2 1.8583 -1.8560 -1.8201 0 0 0 + 3738 94 2 1.7274 -1.5181 -2.7045 0 0 0 + 3739 94 2 1.6254 -1.9092 -3.6648 0 0 0 + 3740 94 2 1.3845 -1.0765 -3.7451 0 0 0 + 3741 94 2 1.5610 -0.2121 -3.9906 0 0 0 + 3742 94 2 1.5143 0.8143 -3.9763 0 0 0 + 3743 94 2 1.5399 1.0162 -3.0405 0 0 0 + 3744 94 2 1.2317 0.1307 -3.0721 0 0 0 + 3745 94 2 0.7904 -0.6224 -2.7730 0 0 0 + 3746 94 2 0.5077 -1.4376 -3.0911 0 0 0 + 3747 94 2 0.4126 -2.1941 -3.6895 0 0 0 + 3748 94 2 1.1690 -2.8415 -3.7132 0 0 0 + 3749 94 2 1.3016 -3.5581 -3.0808 0 0 0 + 3750 94 2 0.5876 -3.3105 -2.5100 0 0 0 + 3751 94 2 0.1158 -2.6992 -1.8997 0 0 0 + 3752 94 2 -0.0867 -1.9870 -1.3448 0 0 0 + 3753 94 2 -0.5192 -2.1377 -0.5062 0 0 0 + 3754 94 2 0.4444 -2.3646 -0.4102 0 0 0 + 3755 94 2 1.0662 -2.0390 -1.1018 0 0 0 + 3756 94 2 1.7026 -2.6777 -0.7593 0 0 0 + 3757 94 2 1.9622 -3.5584 -0.4785 0 0 0 + 3758 94 2 2.1679 -4.1024 -1.1824 0 0 0 + 3759 94 2 2.2753 -4.7708 -1.8271 0 0 0 + 3760 94 2 2.0547 -5.5373 -1.3506 0 0 0 + 3761 95 1 -6.6573 -7.8409 0.5266 0 0 0 + 3762 95 1 -6.5122 -7.4271 -0.3240 0 0 0 + 3763 95 1 -6.2325 -6.5195 -0.1798 0 0 0 + 3764 95 1 -5.8987 -5.9885 0.5490 0 0 0 + 3765 95 1 -5.0622 -6.1487 0.8667 0 0 0 + 3766 95 1 -4.5835 -6.9149 1.1602 0 0 0 + 3767 95 1 -4.0666 -6.3351 1.7189 0 0 0 + 3768 95 1 -3.6959 -5.9879 2.4936 0 0 0 + 3769 95 1 -4.1678 -6.1581 3.3049 0 0 0 + 3770 95 1 -4.6572 -6.7756 3.8167 0 0 0 + 3771 95 1 -5.3937 -7.2791 3.8830 0 0 0 + 3772 95 1 -5.6824 -8.1720 4.0510 0 0 0 + 3773 95 1 -5.8701 7.8472 4.9005 0 -1 0 + 3774 95 1 -6.0999 7.6890 5.8286 0 -1 0 + 3775 95 1 -6.5356 -7.8725 5.9492 0 0 0 + 3776 95 1 -6.5452 -7.5319 5.0583 0 0 0 + 3777 95 1 -5.9531 -6.8211 4.8043 0 0 0 + 3778 95 1 -5.0676 -6.5825 4.8270 0 0 0 + 3779 95 1 -5.1460 -7.3738 5.3148 0 0 0 + 3780 95 1 -4.5541 -6.9605 5.9733 0 0 0 + 3781 95 1 -3.9251 -6.6961 6.6788 0 0 0 + 3782 95 1 -4.7330 -7.0102 7.1003 0 0 0 + 3783 95 1 -5.4015 -6.3448 7.3828 0 0 0 + 3784 95 1 -5.9311 -5.5673 7.6817 0 0 0 + 3785 95 1 -6.1483 -4.8273 -8.1510 0 0 1 + 3786 95 1 -5.5206 -4.5305 7.6164 0 0 0 + 3787 95 1 -5.7784 -3.5858 7.4964 0 0 0 + 3788 95 1 -5.1342 -2.8470 7.6810 0 0 0 + 3789 95 1 -5.2974 -2.9006 -7.7942 0 0 1 + 3790 95 1 -6.1523 -3.2622 -7.6513 0 0 1 + 3791 95 1 -6.7498 -3.9216 -8.0386 0 0 1 + 3792 95 1 -6.7021 -4.0262 -7.0797 0 0 1 + 3793 95 1 -7.1200 -3.1645 -7.1035 0 0 1 + 3794 95 1 -7.6996 -3.0755 -7.8478 0 0 1 + 3795 95 1 8.1553 -2.9654 7.8080 -1 0 0 + 3796 95 1 7.9116 -2.2877 7.1723 -1 0 0 + 3797 95 1 7.5092 -1.7021 6.4381 -1 0 0 + 3798 95 1 7.8130 -1.6096 5.5344 -1 0 0 + 3799 95 1 -7.6748 -1.4231 5.5215 0 0 0 + 3800 95 1 -7.8242 -1.6039 6.5139 0 0 0 + 3801 96 2 -0.2064 5.8582 1.6664 0 0 0 + 3802 96 2 0.6740 5.4034 1.7008 0 0 0 + 3803 96 2 0.2553 4.5682 1.9470 0 0 0 + 3804 96 2 -0.0165 3.7083 1.8207 0 0 0 + 3805 96 2 -0.2308 3.2039 1.0658 0 0 0 + 3806 96 2 -0.6797 2.7826 1.8430 0 0 0 + 3807 96 2 -0.8754 3.0708 2.7450 0 0 0 + 3808 96 2 -0.6116 3.9515 2.7173 0 0 0 + 3809 96 2 -0.5369 4.9095 2.8249 0 0 0 + 3810 96 2 -0.0072 5.6713 2.7435 0 0 0 + 3811 96 2 0.8336 6.0860 2.5309 0 0 0 + 3812 96 2 1.6746 6.5182 2.6754 0 0 0 + 3813 96 2 2.3632 7.1221 2.8032 0 0 0 + 3814 96 2 3.1426 7.4229 3.2098 0 0 0 + 3815 96 2 3.8603 7.6818 2.5637 0 0 0 + 3816 96 2 3.7389 -7.9848 1.9720 0 1 0 + 3817 96 2 4.0411 -7.2316 1.4904 0 1 0 + 3818 96 2 4.1239 -6.3788 1.9507 0 1 0 + 3819 96 2 4.5640 -5.8143 2.5664 0 1 0 + 3820 96 2 4.8200 -5.0204 3.0631 0 1 0 + 3821 96 2 4.7816 -4.3022 3.7595 0 1 0 + 3822 96 2 4.2132 -3.5626 4.0334 0 1 0 + 3823 96 2 4.3987 -2.6592 3.6698 0 1 0 + 3824 96 2 4.6377 -1.8461 3.2403 0 1 0 + 3825 96 2 4.6675 -2.3457 2.3781 0 1 0 + 3826 96 2 4.5222 -2.2432 1.4497 0 1 0 + 3827 96 2 4.6793 -1.7836 0.5833 0 1 0 + 3828 96 2 4.5890 -1.0127 1.1512 0 1 0 + 3829 96 2 5.4810 -0.6902 1.4786 0 1 0 + 3830 96 2 5.6239 0.3098 1.6953 0 1 0 + 3831 96 2 5.7421 1.2206 1.8102 0 1 0 + 3832 96 2 6.1718 1.4709 2.6257 0 1 0 + 3833 96 2 6.2930 1.6216 3.5859 0 1 0 + 3834 96 2 6.4221 1.9578 4.4871 0 1 0 + 3835 96 2 6.9843 2.3248 3.8584 0 1 0 + 3836 96 2 7.7458 2.9537 3.9104 0 1 0 + 3837 96 2 7.9951 3.6358 4.4548 0 1 0 + 3838 96 2 8.2029 4.4086 4.9750 0 1 0 + 3839 96 2 -8.1360 4.7580 5.8771 1 1 0 + 3840 96 2 8.0645 4.5369 6.8113 0 1 0 + 3841 97 1 2.2176 -2.9274 -3.8226 0 0 0 + 3842 97 1 2.8929 -3.2219 -3.2024 0 0 0 + 3843 97 1 3.6141 -3.2384 -2.5673 0 0 0 + 3844 97 1 3.9311 -4.1229 -2.4003 0 0 0 + 3845 97 1 4.5565 -3.6787 -3.0248 0 0 0 + 3846 97 1 4.7864 -2.9487 -3.5626 0 0 0 + 3847 97 1 5.5886 -2.6648 -3.9160 0 0 0 + 3848 97 1 6.2406 -3.2310 -4.3089 0 0 0 + 3849 97 1 5.6700 -3.9656 -3.9760 0 0 0 + 3850 97 1 4.7723 -4.1973 -4.2281 0 0 0 + 3851 97 1 4.5470 -4.9681 -4.7430 0 0 0 + 3852 97 1 4.6849 -4.2229 -5.3700 0 0 0 + 3853 97 1 5.3739 -4.3661 -6.1301 0 0 0 + 3854 97 1 5.2196 -4.2225 -7.0693 0 0 0 + 3855 97 1 5.8976 -4.0524 -7.7757 0 0 0 + 3856 97 1 5.4442 -3.1967 -7.6501 0 0 0 + 3857 97 1 5.7946 -2.5912 -6.9866 0 0 0 + 3858 97 1 6.6077 -2.7919 -7.3467 0 0 0 + 3859 97 1 6.8766 -3.6557 -7.0869 0 0 0 + 3860 97 1 6.0351 -3.5913 -6.6762 0 0 0 + 3861 97 1 5.5009 -3.2243 -5.9232 0 0 0 + 3862 97 1 4.8788 -2.4881 -5.8521 0 0 0 + 3863 97 1 3.9104 -2.3312 -5.5244 0 0 0 + 3864 97 1 4.2056 -1.5060 -6.0766 0 0 0 + 3865 97 1 4.9607 -1.4426 -5.5598 0 0 0 + 3866 97 1 5.6463 -1.1450 -5.0275 0 0 0 + 3867 97 1 6.5996 -1.3033 -5.2726 0 0 0 + 3868 97 1 7.4756 -1.5377 -4.8725 0 0 0 + 3869 97 1 -8.1520 -1.9564 -4.6295 1 0 0 + 3870 97 1 -7.6298 -1.4899 -4.0482 1 0 0 + 3871 97 1 -8.0985 -1.3013 -3.2348 1 0 0 + 3872 97 1 8.0718 -0.9901 -2.3552 0 0 0 + 3873 97 1 -7.8066 -0.7851 -1.6191 1 0 0 + 3874 97 1 -6.8574 -0.6092 -1.6602 1 0 0 + 3875 97 1 -5.8815 -0.6170 -1.6926 1 0 0 + 3876 97 1 -5.6996 0.1750 -2.3004 1 0 0 + 3877 97 1 -5.1896 0.8974 -2.6834 1 0 0 + 3878 97 1 -5.2093 1.8078 -2.8274 1 0 0 + 3879 97 1 -4.5488 1.3299 -3.3981 1 0 0 + 3880 97 1 -4.4461 1.3287 -4.3497 1 0 0 + 3881 98 2 -7.4942 6.0337 7.6977 0 0 0 + 3882 98 2 -8.1690 5.6874 7.0895 0 0 0 + 3883 98 2 7.3459 5.4855 7.2686 -1 0 0 + 3884 98 2 6.9916 4.6791 7.5562 -1 0 0 + 3885 98 2 6.4535 5.1731 6.8732 -1 0 0 + 3886 98 2 5.7204 5.3752 6.2811 -1 0 0 + 3887 98 2 5.2617 5.2731 5.4817 -1 0 0 + 3888 98 2 4.6718 5.9912 5.5488 -1 0 0 + 3889 98 2 4.2878 5.1171 5.7795 -1 0 0 + 3890 98 2 3.7989 5.6316 6.4428 -1 0 0 + 3891 98 2 3.2292 5.1097 7.0029 -1 0 0 + 3892 98 2 3.0393 5.0355 6.0669 -1 0 0 + 3893 98 2 2.5949 5.8431 5.9616 -1 0 0 + 3894 98 2 2.1568 5.6068 5.0991 -1 0 0 + 3895 98 2 2.4896 4.7649 5.3387 -1 0 0 + 3896 98 2 1.9143 4.6290 6.0671 -1 0 0 + 3897 98 2 2.2942 4.9366 6.9173 -1 0 0 + 3898 98 2 2.9235 4.1278 6.9701 -1 0 0 + 3899 98 2 2.5725 3.5630 6.2633 -1 0 0 + 3900 98 2 2.0380 3.1685 5.5789 -1 0 0 + 3901 98 2 2.7763 2.6831 5.1908 -1 0 0 + 3902 98 2 3.0235 2.6720 4.2237 -1 0 0 + 3903 98 2 3.6488 3.1947 3.6444 -1 0 0 + 3904 98 2 4.2144 3.6322 3.0384 -1 0 0 + 3905 98 2 4.8975 4.0952 2.6262 -1 0 0 + 3906 98 2 5.6524 3.4583 2.4646 -1 0 0 + 3907 98 2 5.6717 3.7592 3.3583 -1 0 0 + 3908 98 2 6.1617 4.6357 3.6583 -1 0 0 + 3909 98 2 6.4158 5.2311 4.3886 -1 0 0 + 3910 98 2 7.0746 5.0313 5.0350 -1 0 0 + 3911 98 2 6.6465 5.5738 5.6948 -1 0 0 + 3912 98 2 6.7898 6.1867 4.9582 -1 0 0 + 3913 98 2 6.9233 6.1730 4.0313 -1 0 0 + 3914 98 2 6.4301 6.9638 4.2154 -1 0 0 + 3915 98 2 7.0534 7.5509 4.6320 -1 0 0 + 3916 98 2 7.4794 -8.1866 5.2521 -1 1 0 + 3917 98 2 8.0154 -7.9437 6.0497 -1 1 0 + 3918 98 2 8.0564 7.5547 5.7590 -1 0 0 + 3919 98 2 7.8396 6.8147 6.4245 -1 0 0 + 3920 98 2 7.5599 6.8805 7.3209 -1 0 0 + 3921 99 1 -2.6511 -6.6859 -2.9121 0 0 0 + 3922 99 1 -1.7653 -7.0269 -3.1716 0 0 0 + 3923 99 1 -0.9589 -7.3221 -3.6025 0 0 0 + 3924 99 1 -0.1562 -6.9875 -3.1788 0 0 0 + 3925 99 1 0.0503 -7.3933 -3.9821 0 0 0 + 3926 99 1 0.4866 -8.1059 -4.3875 0 0 0 + 3927 99 1 1.4127 -7.9622 -4.5685 0 0 0 + 3928 99 1 2.3239 -7.7622 -4.8107 0 0 0 + 3929 99 1 2.8610 -7.8147 -5.6104 0 0 0 + 3930 99 1 3.4741 -7.5413 -6.2854 0 0 0 + 3931 99 1 3.8719 -7.9771 -7.0558 0 0 0 + 3932 99 1 3.4359 7.6830 -6.6406 0 -1 0 + 3933 99 1 2.5774 8.1445 -6.6252 0 -1 0 + 3934 99 1 1.7239 -8.1801 -6.7809 0 0 0 + 3935 99 1 1.0718 -7.4714 -6.9195 0 0 0 + 3936 99 1 0.3431 -8.0777 -6.7810 0 0 0 + 3937 99 1 0.9578 7.6113 -6.9475 0 -1 0 + 3938 99 1 1.4527 7.5950 -6.1025 0 -1 0 + 3939 99 1 1.9555 6.8497 -6.3643 0 -1 0 + 3940 99 1 2.0673 6.7828 -5.4465 0 -1 0 + 3941 99 1 1.9142 6.3749 -4.5645 0 -1 0 + 3942 99 1 1.2348 6.7046 -4.0041 0 -1 0 + 3943 99 1 1.2482 7.6196 -3.8559 0 -1 0 + 3944 99 1 0.4342 7.4045 -4.2628 0 -1 0 + 3945 99 1 -0.0701 6.9421 -3.6305 0 -1 0 + 3946 99 1 0.3520 7.3533 -2.8616 0 -1 0 + 3947 99 1 0.0830 6.6155 -2.1990 0 -1 0 + 3948 99 1 -0.8998 6.4798 -2.2951 0 -1 0 + 3949 99 1 -0.7661 7.3393 -2.6824 0 -1 0 + 3950 99 1 -0.2049 7.9437 -2.1199 0 -1 0 + 3951 99 1 0.4468 7.4593 -1.6601 0 -1 0 + 3952 99 1 1.3016 7.5690 -1.3034 0 -1 0 + 3953 99 1 0.5376 7.6028 -0.7224 0 -1 0 + 3954 99 1 1.0954 -8.0806 -0.6026 0 0 0 + 3955 99 1 0.8394 -8.1920 0.3112 0 0 0 + 3956 99 1 0.4630 7.8580 1.1605 0 -1 0 + 3957 99 1 0.6496 7.9163 2.1331 0 -1 0 + 3958 99 1 1.2222 -7.8225 2.4436 0 0 0 + 3959 99 1 1.8590 -7.1861 2.0758 0 0 0 + 3960 99 1 2.2357 -6.4494 1.5474 0 0 0 + 3961 100 2 6.4113 3.1710 -2.1706 0 0 0 + 3962 100 2 5.6570 3.0466 -2.7465 0 0 0 + 3963 100 2 5.2007 3.6574 -2.1073 0 0 0 + 3964 100 2 5.3121 2.7867 -1.7184 0 0 0 + 3965 100 2 5.9663 2.0712 -1.5363 0 0 0 + 3966 100 2 5.9158 1.7612 -2.4522 0 0 0 + 3967 100 2 5.0206 1.4834 -2.7386 0 0 0 + 3968 100 2 4.2637 1.3713 -3.3115 0 0 0 + 3969 100 2 3.4221 0.8671 -3.2860 0 0 0 + 3970 100 2 3.3572 0.7603 -4.2097 0 0 0 + 3971 100 2 2.4794 0.8200 -3.8262 0 0 0 + 3972 100 2 2.4925 1.5676 -4.3610 0 0 0 + 3973 100 2 2.3614 2.1423 -5.1211 0 0 0 + 3974 100 2 1.6577 2.8577 -5.4364 0 0 0 + 3975 100 2 1.6094 3.4333 -6.2720 0 0 0 + 3976 100 2 1.5995 3.7313 -7.1570 0 0 0 + 3977 100 2 1.5783 4.5664 -7.6095 0 0 0 + 3978 100 2 1.7286 4.9157 7.9155 0 0 -1 + 3979 100 2 1.2413 5.1097 7.0880 0 0 -1 + 3980 100 2 1.5442 5.8274 6.4799 0 0 -1 + 3981 100 2 2.1561 6.0235 7.1258 0 0 -1 + 3982 100 2 2.5293 5.4955 7.7964 0 0 -1 + 3983 100 2 2.6656 5.1380 -7.7496 0 0 0 + 3984 100 2 3.4163 4.5476 -7.7127 0 0 0 + 3985 100 2 2.9216 4.1944 -6.9944 0 0 0 + 3986 100 2 2.2870 4.8367 -6.7200 0 0 0 + 3987 100 2 2.0293 5.7732 -6.7039 0 0 0 + 3988 100 2 1.9921 6.3163 -7.4576 0 0 0 + 3989 100 2 1.6896 6.0225 8.0822 0 0 -1 + 3990 100 2 0.7463 6.0286 7.6473 0 0 -1 + 3991 100 2 0.5802 6.2086 6.6852 0 0 -1 + 3992 100 2 0.0280 5.8380 6.0163 0 0 -1 + 3993 100 2 -0.8852 5.6790 5.7187 0 0 -1 + 3994 100 2 -1.3945 4.8974 5.4669 0 0 -1 + 3995 100 2 -1.5923 3.9584 5.5511 0 0 -1 + 3996 100 2 -1.2935 3.2574 6.0695 0 0 -1 + 3997 100 2 -0.5427 3.5610 5.5476 0 0 -1 + 3998 100 2 -0.9175 3.2914 4.6129 0 0 -1 + 3999 100 2 -1.5850 3.0510 3.9963 0 0 -1 + 4000 100 2 -2.2447 3.7440 4.1318 0 0 -1 + +Bonds + + 1 1 1 2 + 2 1 2 3 + 3 1 3 4 + 4 1 4 5 + 5 1 5 6 + 6 1 6 7 + 7 1 7 8 + 8 1 8 9 + 9 1 9 10 + 10 1 10 11 + 11 1 11 12 + 12 1 12 13 + 13 1 13 14 + 14 1 14 15 + 15 1 15 16 + 16 1 16 17 + 17 1 17 18 + 18 1 18 19 + 19 1 19 20 + 20 1 20 21 + 21 1 21 22 + 22 1 22 23 + 23 1 23 24 + 24 1 24 25 + 25 1 25 26 + 26 1 26 27 + 27 1 27 28 + 28 1 28 29 + 29 1 29 30 + 30 1 30 31 + 31 1 31 32 + 32 1 32 33 + 33 1 33 34 + 34 1 34 35 + 35 1 35 36 + 36 1 36 37 + 37 1 37 38 + 38 1 38 39 + 39 1 39 40 + 40 1 41 42 + 41 1 42 43 + 42 1 43 44 + 43 1 44 45 + 44 1 45 46 + 45 1 46 47 + 46 1 47 48 + 47 1 48 49 + 48 1 49 50 + 49 1 50 51 + 50 1 51 52 + 51 1 52 53 + 52 1 53 54 + 53 1 54 55 + 54 1 55 56 + 55 1 56 57 + 56 1 57 58 + 57 1 58 59 + 58 1 59 60 + 59 1 60 61 + 60 1 61 62 + 61 1 62 63 + 62 1 63 64 + 63 1 64 65 + 64 1 65 66 + 65 1 66 67 + 66 1 67 68 + 67 1 68 69 + 68 1 69 70 + 69 1 70 71 + 70 1 71 72 + 71 1 72 73 + 72 1 73 74 + 73 1 74 75 + 74 1 75 76 + 75 1 76 77 + 76 1 77 78 + 77 1 78 79 + 78 1 79 80 + 79 1 81 82 + 80 1 82 83 + 81 1 83 84 + 82 1 84 85 + 83 1 85 86 + 84 1 86 87 + 85 1 87 88 + 86 1 88 89 + 87 1 89 90 + 88 1 90 91 + 89 1 91 92 + 90 1 92 93 + 91 1 93 94 + 92 1 94 95 + 93 1 95 96 + 94 1 96 97 + 95 1 97 98 + 96 1 98 99 + 97 1 99 100 + 98 1 100 101 + 99 1 101 102 + 100 1 102 103 + 101 1 103 104 + 102 1 104 105 + 103 1 105 106 + 104 1 106 107 + 105 1 107 108 + 106 1 108 109 + 107 1 109 110 + 108 1 110 111 + 109 1 111 112 + 110 1 112 113 + 111 1 113 114 + 112 1 114 115 + 113 1 115 116 + 114 1 116 117 + 115 1 117 118 + 116 1 118 119 + 117 1 119 120 + 118 1 121 122 + 119 1 122 123 + 120 1 123 124 + 121 1 124 125 + 122 1 125 126 + 123 1 126 127 + 124 1 127 128 + 125 1 128 129 + 126 1 129 130 + 127 1 130 131 + 128 1 131 132 + 129 1 132 133 + 130 1 133 134 + 131 1 134 135 + 132 1 135 136 + 133 1 136 137 + 134 1 137 138 + 135 1 138 139 + 136 1 139 140 + 137 1 140 141 + 138 1 141 142 + 139 1 142 143 + 140 1 143 144 + 141 1 144 145 + 142 1 145 146 + 143 1 146 147 + 144 1 147 148 + 145 1 148 149 + 146 1 149 150 + 147 1 150 151 + 148 1 151 152 + 149 1 152 153 + 150 1 153 154 + 151 1 154 155 + 152 1 155 156 + 153 1 156 157 + 154 1 157 158 + 155 1 158 159 + 156 1 159 160 + 157 1 161 162 + 158 1 162 163 + 159 1 163 164 + 160 1 164 165 + 161 1 165 166 + 162 1 166 167 + 163 1 167 168 + 164 1 168 169 + 165 1 169 170 + 166 1 170 171 + 167 1 171 172 + 168 1 172 173 + 169 1 173 174 + 170 1 174 175 + 171 1 175 176 + 172 1 176 177 + 173 1 177 178 + 174 1 178 179 + 175 1 179 180 + 176 1 180 181 + 177 1 181 182 + 178 1 182 183 + 179 1 183 184 + 180 1 184 185 + 181 1 185 186 + 182 1 186 187 + 183 1 187 188 + 184 1 188 189 + 185 1 189 190 + 186 1 190 191 + 187 1 191 192 + 188 1 192 193 + 189 1 193 194 + 190 1 194 195 + 191 1 195 196 + 192 1 196 197 + 193 1 197 198 + 194 1 198 199 + 195 1 199 200 + 196 1 201 202 + 197 1 202 203 + 198 1 203 204 + 199 1 204 205 + 200 1 205 206 + 201 1 206 207 + 202 1 207 208 + 203 1 208 209 + 204 1 209 210 + 205 1 210 211 + 206 1 211 212 + 207 1 212 213 + 208 1 213 214 + 209 1 214 215 + 210 1 215 216 + 211 1 216 217 + 212 1 217 218 + 213 1 218 219 + 214 1 219 220 + 215 1 220 221 + 216 1 221 222 + 217 1 222 223 + 218 1 223 224 + 219 1 224 225 + 220 1 225 226 + 221 1 226 227 + 222 1 227 228 + 223 1 228 229 + 224 1 229 230 + 225 1 230 231 + 226 1 231 232 + 227 1 232 233 + 228 1 233 234 + 229 1 234 235 + 230 1 235 236 + 231 1 236 237 + 232 1 237 238 + 233 1 238 239 + 234 1 239 240 + 235 1 241 242 + 236 1 242 243 + 237 1 243 244 + 238 1 244 245 + 239 1 245 246 + 240 1 246 247 + 241 1 247 248 + 242 1 248 249 + 243 1 249 250 + 244 1 250 251 + 245 1 251 252 + 246 1 252 253 + 247 1 253 254 + 248 1 254 255 + 249 1 255 256 + 250 1 256 257 + 251 1 257 258 + 252 1 258 259 + 253 1 259 260 + 254 1 260 261 + 255 1 261 262 + 256 1 262 263 + 257 1 263 264 + 258 1 264 265 + 259 1 265 266 + 260 1 266 267 + 261 1 267 268 + 262 1 268 269 + 263 1 269 270 + 264 1 270 271 + 265 1 271 272 + 266 1 272 273 + 267 1 273 274 + 268 1 274 275 + 269 1 275 276 + 270 1 276 277 + 271 1 277 278 + 272 1 278 279 + 273 1 279 280 + 274 1 281 282 + 275 1 282 283 + 276 1 283 284 + 277 1 284 285 + 278 1 285 286 + 279 1 286 287 + 280 1 287 288 + 281 1 288 289 + 282 1 289 290 + 283 1 290 291 + 284 1 291 292 + 285 1 292 293 + 286 1 293 294 + 287 1 294 295 + 288 1 295 296 + 289 1 296 297 + 290 1 297 298 + 291 1 298 299 + 292 1 299 300 + 293 1 300 301 + 294 1 301 302 + 295 1 302 303 + 296 1 303 304 + 297 1 304 305 + 298 1 305 306 + 299 1 306 307 + 300 1 307 308 + 301 1 308 309 + 302 1 309 310 + 303 1 310 311 + 304 1 311 312 + 305 1 312 313 + 306 1 313 314 + 307 1 314 315 + 308 1 315 316 + 309 1 316 317 + 310 1 317 318 + 311 1 318 319 + 312 1 319 320 + 313 1 321 322 + 314 1 322 323 + 315 1 323 324 + 316 1 324 325 + 317 1 325 326 + 318 1 326 327 + 319 1 327 328 + 320 1 328 329 + 321 1 329 330 + 322 1 330 331 + 323 1 331 332 + 324 1 332 333 + 325 1 333 334 + 326 1 334 335 + 327 1 335 336 + 328 1 336 337 + 329 1 337 338 + 330 1 338 339 + 331 1 339 340 + 332 1 340 341 + 333 1 341 342 + 334 1 342 343 + 335 1 343 344 + 336 1 344 345 + 337 1 345 346 + 338 1 346 347 + 339 1 347 348 + 340 1 348 349 + 341 1 349 350 + 342 1 350 351 + 343 1 351 352 + 344 1 352 353 + 345 1 353 354 + 346 1 354 355 + 347 1 355 356 + 348 1 356 357 + 349 1 357 358 + 350 1 358 359 + 351 1 359 360 + 352 1 361 362 + 353 1 362 363 + 354 1 363 364 + 355 1 364 365 + 356 1 365 366 + 357 1 366 367 + 358 1 367 368 + 359 1 368 369 + 360 1 369 370 + 361 1 370 371 + 362 1 371 372 + 363 1 372 373 + 364 1 373 374 + 365 1 374 375 + 366 1 375 376 + 367 1 376 377 + 368 1 377 378 + 369 1 378 379 + 370 1 379 380 + 371 1 380 381 + 372 1 381 382 + 373 1 382 383 + 374 1 383 384 + 375 1 384 385 + 376 1 385 386 + 377 1 386 387 + 378 1 387 388 + 379 1 388 389 + 380 1 389 390 + 381 1 390 391 + 382 1 391 392 + 383 1 392 393 + 384 1 393 394 + 385 1 394 395 + 386 1 395 396 + 387 1 396 397 + 388 1 397 398 + 389 1 398 399 + 390 1 399 400 + 391 1 401 402 + 392 1 402 403 + 393 1 403 404 + 394 1 404 405 + 395 1 405 406 + 396 1 406 407 + 397 1 407 408 + 398 1 408 409 + 399 1 409 410 + 400 1 410 411 + 401 1 411 412 + 402 1 412 413 + 403 1 413 414 + 404 1 414 415 + 405 1 415 416 + 406 1 416 417 + 407 1 417 418 + 408 1 418 419 + 409 1 419 420 + 410 1 420 421 + 411 1 421 422 + 412 1 422 423 + 413 1 423 424 + 414 1 424 425 + 415 1 425 426 + 416 1 426 427 + 417 1 427 428 + 418 1 428 429 + 419 1 429 430 + 420 1 430 431 + 421 1 431 432 + 422 1 432 433 + 423 1 433 434 + 424 1 434 435 + 425 1 435 436 + 426 1 436 437 + 427 1 437 438 + 428 1 438 439 + 429 1 439 440 + 430 1 441 442 + 431 1 442 443 + 432 1 443 444 + 433 1 444 445 + 434 1 445 446 + 435 1 446 447 + 436 1 447 448 + 437 1 448 449 + 438 1 449 450 + 439 1 450 451 + 440 1 451 452 + 441 1 452 453 + 442 1 453 454 + 443 1 454 455 + 444 1 455 456 + 445 1 456 457 + 446 1 457 458 + 447 1 458 459 + 448 1 459 460 + 449 1 460 461 + 450 1 461 462 + 451 1 462 463 + 452 1 463 464 + 453 1 464 465 + 454 1 465 466 + 455 1 466 467 + 456 1 467 468 + 457 1 468 469 + 458 1 469 470 + 459 1 470 471 + 460 1 471 472 + 461 1 472 473 + 462 1 473 474 + 463 1 474 475 + 464 1 475 476 + 465 1 476 477 + 466 1 477 478 + 467 1 478 479 + 468 1 479 480 + 469 1 481 482 + 470 1 482 483 + 471 1 483 484 + 472 1 484 485 + 473 1 485 486 + 474 1 486 487 + 475 1 487 488 + 476 1 488 489 + 477 1 489 490 + 478 1 490 491 + 479 1 491 492 + 480 1 492 493 + 481 1 493 494 + 482 1 494 495 + 483 1 495 496 + 484 1 496 497 + 485 1 497 498 + 486 1 498 499 + 487 1 499 500 + 488 1 500 501 + 489 1 501 502 + 490 1 502 503 + 491 1 503 504 + 492 1 504 505 + 493 1 505 506 + 494 1 506 507 + 495 1 507 508 + 496 1 508 509 + 497 1 509 510 + 498 1 510 511 + 499 1 511 512 + 500 1 512 513 + 501 1 513 514 + 502 1 514 515 + 503 1 515 516 + 504 1 516 517 + 505 1 517 518 + 506 1 518 519 + 507 1 519 520 + 508 1 521 522 + 509 1 522 523 + 510 1 523 524 + 511 1 524 525 + 512 1 525 526 + 513 1 526 527 + 514 1 527 528 + 515 1 528 529 + 516 1 529 530 + 517 1 530 531 + 518 1 531 532 + 519 1 532 533 + 520 1 533 534 + 521 1 534 535 + 522 1 535 536 + 523 1 536 537 + 524 1 537 538 + 525 1 538 539 + 526 1 539 540 + 527 1 540 541 + 528 1 541 542 + 529 1 542 543 + 530 1 543 544 + 531 1 544 545 + 532 1 545 546 + 533 1 546 547 + 534 1 547 548 + 535 1 548 549 + 536 1 549 550 + 537 1 550 551 + 538 1 551 552 + 539 1 552 553 + 540 1 553 554 + 541 1 554 555 + 542 1 555 556 + 543 1 556 557 + 544 1 557 558 + 545 1 558 559 + 546 1 559 560 + 547 1 561 562 + 548 1 562 563 + 549 1 563 564 + 550 1 564 565 + 551 1 565 566 + 552 1 566 567 + 553 1 567 568 + 554 1 568 569 + 555 1 569 570 + 556 1 570 571 + 557 1 571 572 + 558 1 572 573 + 559 1 573 574 + 560 1 574 575 + 561 1 575 576 + 562 1 576 577 + 563 1 577 578 + 564 1 578 579 + 565 1 579 580 + 566 1 580 581 + 567 1 581 582 + 568 1 582 583 + 569 1 583 584 + 570 1 584 585 + 571 1 585 586 + 572 1 586 587 + 573 1 587 588 + 574 1 588 589 + 575 1 589 590 + 576 1 590 591 + 577 1 591 592 + 578 1 592 593 + 579 1 593 594 + 580 1 594 595 + 581 1 595 596 + 582 1 596 597 + 583 1 597 598 + 584 1 598 599 + 585 1 599 600 + 586 1 601 602 + 587 1 602 603 + 588 1 603 604 + 589 1 604 605 + 590 1 605 606 + 591 1 606 607 + 592 1 607 608 + 593 1 608 609 + 594 1 609 610 + 595 1 610 611 + 596 1 611 612 + 597 1 612 613 + 598 1 613 614 + 599 1 614 615 + 600 1 615 616 + 601 1 616 617 + 602 1 617 618 + 603 1 618 619 + 604 1 619 620 + 605 1 620 621 + 606 1 621 622 + 607 1 622 623 + 608 1 623 624 + 609 1 624 625 + 610 1 625 626 + 611 1 626 627 + 612 1 627 628 + 613 1 628 629 + 614 1 629 630 + 615 1 630 631 + 616 1 631 632 + 617 1 632 633 + 618 1 633 634 + 619 1 634 635 + 620 1 635 636 + 621 1 636 637 + 622 1 637 638 + 623 1 638 639 + 624 1 639 640 + 625 1 641 642 + 626 1 642 643 + 627 1 643 644 + 628 1 644 645 + 629 1 645 646 + 630 1 646 647 + 631 1 647 648 + 632 1 648 649 + 633 1 649 650 + 634 1 650 651 + 635 1 651 652 + 636 1 652 653 + 637 1 653 654 + 638 1 654 655 + 639 1 655 656 + 640 1 656 657 + 641 1 657 658 + 642 1 658 659 + 643 1 659 660 + 644 1 660 661 + 645 1 661 662 + 646 1 662 663 + 647 1 663 664 + 648 1 664 665 + 649 1 665 666 + 650 1 666 667 + 651 1 667 668 + 652 1 668 669 + 653 1 669 670 + 654 1 670 671 + 655 1 671 672 + 656 1 672 673 + 657 1 673 674 + 658 1 674 675 + 659 1 675 676 + 660 1 676 677 + 661 1 677 678 + 662 1 678 679 + 663 1 679 680 + 664 1 681 682 + 665 1 682 683 + 666 1 683 684 + 667 1 684 685 + 668 1 685 686 + 669 1 686 687 + 670 1 687 688 + 671 1 688 689 + 672 1 689 690 + 673 1 690 691 + 674 1 691 692 + 675 1 692 693 + 676 1 693 694 + 677 1 694 695 + 678 1 695 696 + 679 1 696 697 + 680 1 697 698 + 681 1 698 699 + 682 1 699 700 + 683 1 700 701 + 684 1 701 702 + 685 1 702 703 + 686 1 703 704 + 687 1 704 705 + 688 1 705 706 + 689 1 706 707 + 690 1 707 708 + 691 1 708 709 + 692 1 709 710 + 693 1 710 711 + 694 1 711 712 + 695 1 712 713 + 696 1 713 714 + 697 1 714 715 + 698 1 715 716 + 699 1 716 717 + 700 1 717 718 + 701 1 718 719 + 702 1 719 720 + 703 1 721 722 + 704 1 722 723 + 705 1 723 724 + 706 1 724 725 + 707 1 725 726 + 708 1 726 727 + 709 1 727 728 + 710 1 728 729 + 711 1 729 730 + 712 1 730 731 + 713 1 731 732 + 714 1 732 733 + 715 1 733 734 + 716 1 734 735 + 717 1 735 736 + 718 1 736 737 + 719 1 737 738 + 720 1 738 739 + 721 1 739 740 + 722 1 740 741 + 723 1 741 742 + 724 1 742 743 + 725 1 743 744 + 726 1 744 745 + 727 1 745 746 + 728 1 746 747 + 729 1 747 748 + 730 1 748 749 + 731 1 749 750 + 732 1 750 751 + 733 1 751 752 + 734 1 752 753 + 735 1 753 754 + 736 1 754 755 + 737 1 755 756 + 738 1 756 757 + 739 1 757 758 + 740 1 758 759 + 741 1 759 760 + 742 1 761 762 + 743 1 762 763 + 744 1 763 764 + 745 1 764 765 + 746 1 765 766 + 747 1 766 767 + 748 1 767 768 + 749 1 768 769 + 750 1 769 770 + 751 1 770 771 + 752 1 771 772 + 753 1 772 773 + 754 1 773 774 + 755 1 774 775 + 756 1 775 776 + 757 1 776 777 + 758 1 777 778 + 759 1 778 779 + 760 1 779 780 + 761 1 780 781 + 762 1 781 782 + 763 1 782 783 + 764 1 783 784 + 765 1 784 785 + 766 1 785 786 + 767 1 786 787 + 768 1 787 788 + 769 1 788 789 + 770 1 789 790 + 771 1 790 791 + 772 1 791 792 + 773 1 792 793 + 774 1 793 794 + 775 1 794 795 + 776 1 795 796 + 777 1 796 797 + 778 1 797 798 + 779 1 798 799 + 780 1 799 800 + 781 1 801 802 + 782 1 802 803 + 783 1 803 804 + 784 1 804 805 + 785 1 805 806 + 786 1 806 807 + 787 1 807 808 + 788 1 808 809 + 789 1 809 810 + 790 1 810 811 + 791 1 811 812 + 792 1 812 813 + 793 1 813 814 + 794 1 814 815 + 795 1 815 816 + 796 1 816 817 + 797 1 817 818 + 798 1 818 819 + 799 1 819 820 + 800 1 820 821 + 801 1 821 822 + 802 1 822 823 + 803 1 823 824 + 804 1 824 825 + 805 1 825 826 + 806 1 826 827 + 807 1 827 828 + 808 1 828 829 + 809 1 829 830 + 810 1 830 831 + 811 1 831 832 + 812 1 832 833 + 813 1 833 834 + 814 1 834 835 + 815 1 835 836 + 816 1 836 837 + 817 1 837 838 + 818 1 838 839 + 819 1 839 840 + 820 1 841 842 + 821 1 842 843 + 822 1 843 844 + 823 1 844 845 + 824 1 845 846 + 825 1 846 847 + 826 1 847 848 + 827 1 848 849 + 828 1 849 850 + 829 1 850 851 + 830 1 851 852 + 831 1 852 853 + 832 1 853 854 + 833 1 854 855 + 834 1 855 856 + 835 1 856 857 + 836 1 857 858 + 837 1 858 859 + 838 1 859 860 + 839 1 860 861 + 840 1 861 862 + 841 1 862 863 + 842 1 863 864 + 843 1 864 865 + 844 1 865 866 + 845 1 866 867 + 846 1 867 868 + 847 1 868 869 + 848 1 869 870 + 849 1 870 871 + 850 1 871 872 + 851 1 872 873 + 852 1 873 874 + 853 1 874 875 + 854 1 875 876 + 855 1 876 877 + 856 1 877 878 + 857 1 878 879 + 858 1 879 880 + 859 1 881 882 + 860 1 882 883 + 861 1 883 884 + 862 1 884 885 + 863 1 885 886 + 864 1 886 887 + 865 1 887 888 + 866 1 888 889 + 867 1 889 890 + 868 1 890 891 + 869 1 891 892 + 870 1 892 893 + 871 1 893 894 + 872 1 894 895 + 873 1 895 896 + 874 1 896 897 + 875 1 897 898 + 876 1 898 899 + 877 1 899 900 + 878 1 900 901 + 879 1 901 902 + 880 1 902 903 + 881 1 903 904 + 882 1 904 905 + 883 1 905 906 + 884 1 906 907 + 885 1 907 908 + 886 1 908 909 + 887 1 909 910 + 888 1 910 911 + 889 1 911 912 + 890 1 912 913 + 891 1 913 914 + 892 1 914 915 + 893 1 915 916 + 894 1 916 917 + 895 1 917 918 + 896 1 918 919 + 897 1 919 920 + 898 1 921 922 + 899 1 922 923 + 900 1 923 924 + 901 1 924 925 + 902 1 925 926 + 903 1 926 927 + 904 1 927 928 + 905 1 928 929 + 906 1 929 930 + 907 1 930 931 + 908 1 931 932 + 909 1 932 933 + 910 1 933 934 + 911 1 934 935 + 912 1 935 936 + 913 1 936 937 + 914 1 937 938 + 915 1 938 939 + 916 1 939 940 + 917 1 940 941 + 918 1 941 942 + 919 1 942 943 + 920 1 943 944 + 921 1 944 945 + 922 1 945 946 + 923 1 946 947 + 924 1 947 948 + 925 1 948 949 + 926 1 949 950 + 927 1 950 951 + 928 1 951 952 + 929 1 952 953 + 930 1 953 954 + 931 1 954 955 + 932 1 955 956 + 933 1 956 957 + 934 1 957 958 + 935 1 958 959 + 936 1 959 960 + 937 1 961 962 + 938 1 962 963 + 939 1 963 964 + 940 1 964 965 + 941 1 965 966 + 942 1 966 967 + 943 1 967 968 + 944 1 968 969 + 945 1 969 970 + 946 1 970 971 + 947 1 971 972 + 948 1 972 973 + 949 1 973 974 + 950 1 974 975 + 951 1 975 976 + 952 1 976 977 + 953 1 977 978 + 954 1 978 979 + 955 1 979 980 + 956 1 980 981 + 957 1 981 982 + 958 1 982 983 + 959 1 983 984 + 960 1 984 985 + 961 1 985 986 + 962 1 986 987 + 963 1 987 988 + 964 1 988 989 + 965 1 989 990 + 966 1 990 991 + 967 1 991 992 + 968 1 992 993 + 969 1 993 994 + 970 1 994 995 + 971 1 995 996 + 972 1 996 997 + 973 1 997 998 + 974 1 998 999 + 975 1 999 1000 + 976 1 1001 1002 + 977 1 1002 1003 + 978 1 1003 1004 + 979 1 1004 1005 + 980 1 1005 1006 + 981 1 1006 1007 + 982 1 1007 1008 + 983 1 1008 1009 + 984 1 1009 1010 + 985 1 1010 1011 + 986 1 1011 1012 + 987 1 1012 1013 + 988 1 1013 1014 + 989 1 1014 1015 + 990 1 1015 1016 + 991 1 1016 1017 + 992 1 1017 1018 + 993 1 1018 1019 + 994 1 1019 1020 + 995 1 1020 1021 + 996 1 1021 1022 + 997 1 1022 1023 + 998 1 1023 1024 + 999 1 1024 1025 + 1000 1 1025 1026 + 1001 1 1026 1027 + 1002 1 1027 1028 + 1003 1 1028 1029 + 1004 1 1029 1030 + 1005 1 1030 1031 + 1006 1 1031 1032 + 1007 1 1032 1033 + 1008 1 1033 1034 + 1009 1 1034 1035 + 1010 1 1035 1036 + 1011 1 1036 1037 + 1012 1 1037 1038 + 1013 1 1038 1039 + 1014 1 1039 1040 + 1015 1 1041 1042 + 1016 1 1042 1043 + 1017 1 1043 1044 + 1018 1 1044 1045 + 1019 1 1045 1046 + 1020 1 1046 1047 + 1021 1 1047 1048 + 1022 1 1048 1049 + 1023 1 1049 1050 + 1024 1 1050 1051 + 1025 1 1051 1052 + 1026 1 1052 1053 + 1027 1 1053 1054 + 1028 1 1054 1055 + 1029 1 1055 1056 + 1030 1 1056 1057 + 1031 1 1057 1058 + 1032 1 1058 1059 + 1033 1 1059 1060 + 1034 1 1060 1061 + 1035 1 1061 1062 + 1036 1 1062 1063 + 1037 1 1063 1064 + 1038 1 1064 1065 + 1039 1 1065 1066 + 1040 1 1066 1067 + 1041 1 1067 1068 + 1042 1 1068 1069 + 1043 1 1069 1070 + 1044 1 1070 1071 + 1045 1 1071 1072 + 1046 1 1072 1073 + 1047 1 1073 1074 + 1048 1 1074 1075 + 1049 1 1075 1076 + 1050 1 1076 1077 + 1051 1 1077 1078 + 1052 1 1078 1079 + 1053 1 1079 1080 + 1054 1 1081 1082 + 1055 1 1082 1083 + 1056 1 1083 1084 + 1057 1 1084 1085 + 1058 1 1085 1086 + 1059 1 1086 1087 + 1060 1 1087 1088 + 1061 1 1088 1089 + 1062 1 1089 1090 + 1063 1 1090 1091 + 1064 1 1091 1092 + 1065 1 1092 1093 + 1066 1 1093 1094 + 1067 1 1094 1095 + 1068 1 1095 1096 + 1069 1 1096 1097 + 1070 1 1097 1098 + 1071 1 1098 1099 + 1072 1 1099 1100 + 1073 1 1100 1101 + 1074 1 1101 1102 + 1075 1 1102 1103 + 1076 1 1103 1104 + 1077 1 1104 1105 + 1078 1 1105 1106 + 1079 1 1106 1107 + 1080 1 1107 1108 + 1081 1 1108 1109 + 1082 1 1109 1110 + 1083 1 1110 1111 + 1084 1 1111 1112 + 1085 1 1112 1113 + 1086 1 1113 1114 + 1087 1 1114 1115 + 1088 1 1115 1116 + 1089 1 1116 1117 + 1090 1 1117 1118 + 1091 1 1118 1119 + 1092 1 1119 1120 + 1093 1 1121 1122 + 1094 1 1122 1123 + 1095 1 1123 1124 + 1096 1 1124 1125 + 1097 1 1125 1126 + 1098 1 1126 1127 + 1099 1 1127 1128 + 1100 1 1128 1129 + 1101 1 1129 1130 + 1102 1 1130 1131 + 1103 1 1131 1132 + 1104 1 1132 1133 + 1105 1 1133 1134 + 1106 1 1134 1135 + 1107 1 1135 1136 + 1108 1 1136 1137 + 1109 1 1137 1138 + 1110 1 1138 1139 + 1111 1 1139 1140 + 1112 1 1140 1141 + 1113 1 1141 1142 + 1114 1 1142 1143 + 1115 1 1143 1144 + 1116 1 1144 1145 + 1117 1 1145 1146 + 1118 1 1146 1147 + 1119 1 1147 1148 + 1120 1 1148 1149 + 1121 1 1149 1150 + 1122 1 1150 1151 + 1123 1 1151 1152 + 1124 1 1152 1153 + 1125 1 1153 1154 + 1126 1 1154 1155 + 1127 1 1155 1156 + 1128 1 1156 1157 + 1129 1 1157 1158 + 1130 1 1158 1159 + 1131 1 1159 1160 + 1132 1 1161 1162 + 1133 1 1162 1163 + 1134 1 1163 1164 + 1135 1 1164 1165 + 1136 1 1165 1166 + 1137 1 1166 1167 + 1138 1 1167 1168 + 1139 1 1168 1169 + 1140 1 1169 1170 + 1141 1 1170 1171 + 1142 1 1171 1172 + 1143 1 1172 1173 + 1144 1 1173 1174 + 1145 1 1174 1175 + 1146 1 1175 1176 + 1147 1 1176 1177 + 1148 1 1177 1178 + 1149 1 1178 1179 + 1150 1 1179 1180 + 1151 1 1180 1181 + 1152 1 1181 1182 + 1153 1 1182 1183 + 1154 1 1183 1184 + 1155 1 1184 1185 + 1156 1 1185 1186 + 1157 1 1186 1187 + 1158 1 1187 1188 + 1159 1 1188 1189 + 1160 1 1189 1190 + 1161 1 1190 1191 + 1162 1 1191 1192 + 1163 1 1192 1193 + 1164 1 1193 1194 + 1165 1 1194 1195 + 1166 1 1195 1196 + 1167 1 1196 1197 + 1168 1 1197 1198 + 1169 1 1198 1199 + 1170 1 1199 1200 + 1171 1 1201 1202 + 1172 1 1202 1203 + 1173 1 1203 1204 + 1174 1 1204 1205 + 1175 1 1205 1206 + 1176 1 1206 1207 + 1177 1 1207 1208 + 1178 1 1208 1209 + 1179 1 1209 1210 + 1180 1 1210 1211 + 1181 1 1211 1212 + 1182 1 1212 1213 + 1183 1 1213 1214 + 1184 1 1214 1215 + 1185 1 1215 1216 + 1186 1 1216 1217 + 1187 1 1217 1218 + 1188 1 1218 1219 + 1189 1 1219 1220 + 1190 1 1220 1221 + 1191 1 1221 1222 + 1192 1 1222 1223 + 1193 1 1223 1224 + 1194 1 1224 1225 + 1195 1 1225 1226 + 1196 1 1226 1227 + 1197 1 1227 1228 + 1198 1 1228 1229 + 1199 1 1229 1230 + 1200 1 1230 1231 + 1201 1 1231 1232 + 1202 1 1232 1233 + 1203 1 1233 1234 + 1204 1 1234 1235 + 1205 1 1235 1236 + 1206 1 1236 1237 + 1207 1 1237 1238 + 1208 1 1238 1239 + 1209 1 1239 1240 + 1210 1 1241 1242 + 1211 1 1242 1243 + 1212 1 1243 1244 + 1213 1 1244 1245 + 1214 1 1245 1246 + 1215 1 1246 1247 + 1216 1 1247 1248 + 1217 1 1248 1249 + 1218 1 1249 1250 + 1219 1 1250 1251 + 1220 1 1251 1252 + 1221 1 1252 1253 + 1222 1 1253 1254 + 1223 1 1254 1255 + 1224 1 1255 1256 + 1225 1 1256 1257 + 1226 1 1257 1258 + 1227 1 1258 1259 + 1228 1 1259 1260 + 1229 1 1260 1261 + 1230 1 1261 1262 + 1231 1 1262 1263 + 1232 1 1263 1264 + 1233 1 1264 1265 + 1234 1 1265 1266 + 1235 1 1266 1267 + 1236 1 1267 1268 + 1237 1 1268 1269 + 1238 1 1269 1270 + 1239 1 1270 1271 + 1240 1 1271 1272 + 1241 1 1272 1273 + 1242 1 1273 1274 + 1243 1 1274 1275 + 1244 1 1275 1276 + 1245 1 1276 1277 + 1246 1 1277 1278 + 1247 1 1278 1279 + 1248 1 1279 1280 + 1249 1 1281 1282 + 1250 1 1282 1283 + 1251 1 1283 1284 + 1252 1 1284 1285 + 1253 1 1285 1286 + 1254 1 1286 1287 + 1255 1 1287 1288 + 1256 1 1288 1289 + 1257 1 1289 1290 + 1258 1 1290 1291 + 1259 1 1291 1292 + 1260 1 1292 1293 + 1261 1 1293 1294 + 1262 1 1294 1295 + 1263 1 1295 1296 + 1264 1 1296 1297 + 1265 1 1297 1298 + 1266 1 1298 1299 + 1267 1 1299 1300 + 1268 1 1300 1301 + 1269 1 1301 1302 + 1270 1 1302 1303 + 1271 1 1303 1304 + 1272 1 1304 1305 + 1273 1 1305 1306 + 1274 1 1306 1307 + 1275 1 1307 1308 + 1276 1 1308 1309 + 1277 1 1309 1310 + 1278 1 1310 1311 + 1279 1 1311 1312 + 1280 1 1312 1313 + 1281 1 1313 1314 + 1282 1 1314 1315 + 1283 1 1315 1316 + 1284 1 1316 1317 + 1285 1 1317 1318 + 1286 1 1318 1319 + 1287 1 1319 1320 + 1288 1 1321 1322 + 1289 1 1322 1323 + 1290 1 1323 1324 + 1291 1 1324 1325 + 1292 1 1325 1326 + 1293 1 1326 1327 + 1294 1 1327 1328 + 1295 1 1328 1329 + 1296 1 1329 1330 + 1297 1 1330 1331 + 1298 1 1331 1332 + 1299 1 1332 1333 + 1300 1 1333 1334 + 1301 1 1334 1335 + 1302 1 1335 1336 + 1303 1 1336 1337 + 1304 1 1337 1338 + 1305 1 1338 1339 + 1306 1 1339 1340 + 1307 1 1340 1341 + 1308 1 1341 1342 + 1309 1 1342 1343 + 1310 1 1343 1344 + 1311 1 1344 1345 + 1312 1 1345 1346 + 1313 1 1346 1347 + 1314 1 1347 1348 + 1315 1 1348 1349 + 1316 1 1349 1350 + 1317 1 1350 1351 + 1318 1 1351 1352 + 1319 1 1352 1353 + 1320 1 1353 1354 + 1321 1 1354 1355 + 1322 1 1355 1356 + 1323 1 1356 1357 + 1324 1 1357 1358 + 1325 1 1358 1359 + 1326 1 1359 1360 + 1327 1 1361 1362 + 1328 1 1362 1363 + 1329 1 1363 1364 + 1330 1 1364 1365 + 1331 1 1365 1366 + 1332 1 1366 1367 + 1333 1 1367 1368 + 1334 1 1368 1369 + 1335 1 1369 1370 + 1336 1 1370 1371 + 1337 1 1371 1372 + 1338 1 1372 1373 + 1339 1 1373 1374 + 1340 1 1374 1375 + 1341 1 1375 1376 + 1342 1 1376 1377 + 1343 1 1377 1378 + 1344 1 1378 1379 + 1345 1 1379 1380 + 1346 1 1380 1381 + 1347 1 1381 1382 + 1348 1 1382 1383 + 1349 1 1383 1384 + 1350 1 1384 1385 + 1351 1 1385 1386 + 1352 1 1386 1387 + 1353 1 1387 1388 + 1354 1 1388 1389 + 1355 1 1389 1390 + 1356 1 1390 1391 + 1357 1 1391 1392 + 1358 1 1392 1393 + 1359 1 1393 1394 + 1360 1 1394 1395 + 1361 1 1395 1396 + 1362 1 1396 1397 + 1363 1 1397 1398 + 1364 1 1398 1399 + 1365 1 1399 1400 + 1366 1 1401 1402 + 1367 1 1402 1403 + 1368 1 1403 1404 + 1369 1 1404 1405 + 1370 1 1405 1406 + 1371 1 1406 1407 + 1372 1 1407 1408 + 1373 1 1408 1409 + 1374 1 1409 1410 + 1375 1 1410 1411 + 1376 1 1411 1412 + 1377 1 1412 1413 + 1378 1 1413 1414 + 1379 1 1414 1415 + 1380 1 1415 1416 + 1381 1 1416 1417 + 1382 1 1417 1418 + 1383 1 1418 1419 + 1384 1 1419 1420 + 1385 1 1420 1421 + 1386 1 1421 1422 + 1387 1 1422 1423 + 1388 1 1423 1424 + 1389 1 1424 1425 + 1390 1 1425 1426 + 1391 1 1426 1427 + 1392 1 1427 1428 + 1393 1 1428 1429 + 1394 1 1429 1430 + 1395 1 1430 1431 + 1396 1 1431 1432 + 1397 1 1432 1433 + 1398 1 1433 1434 + 1399 1 1434 1435 + 1400 1 1435 1436 + 1401 1 1436 1437 + 1402 1 1437 1438 + 1403 1 1438 1439 + 1404 1 1439 1440 + 1405 1 1441 1442 + 1406 1 1442 1443 + 1407 1 1443 1444 + 1408 1 1444 1445 + 1409 1 1445 1446 + 1410 1 1446 1447 + 1411 1 1447 1448 + 1412 1 1448 1449 + 1413 1 1449 1450 + 1414 1 1450 1451 + 1415 1 1451 1452 + 1416 1 1452 1453 + 1417 1 1453 1454 + 1418 1 1454 1455 + 1419 1 1455 1456 + 1420 1 1456 1457 + 1421 1 1457 1458 + 1422 1 1458 1459 + 1423 1 1459 1460 + 1424 1 1460 1461 + 1425 1 1461 1462 + 1426 1 1462 1463 + 1427 1 1463 1464 + 1428 1 1464 1465 + 1429 1 1465 1466 + 1430 1 1466 1467 + 1431 1 1467 1468 + 1432 1 1468 1469 + 1433 1 1469 1470 + 1434 1 1470 1471 + 1435 1 1471 1472 + 1436 1 1472 1473 + 1437 1 1473 1474 + 1438 1 1474 1475 + 1439 1 1475 1476 + 1440 1 1476 1477 + 1441 1 1477 1478 + 1442 1 1478 1479 + 1443 1 1479 1480 + 1444 1 1481 1482 + 1445 1 1482 1483 + 1446 1 1483 1484 + 1447 1 1484 1485 + 1448 1 1485 1486 + 1449 1 1486 1487 + 1450 1 1487 1488 + 1451 1 1488 1489 + 1452 1 1489 1490 + 1453 1 1490 1491 + 1454 1 1491 1492 + 1455 1 1492 1493 + 1456 1 1493 1494 + 1457 1 1494 1495 + 1458 1 1495 1496 + 1459 1 1496 1497 + 1460 1 1497 1498 + 1461 1 1498 1499 + 1462 1 1499 1500 + 1463 1 1500 1501 + 1464 1 1501 1502 + 1465 1 1502 1503 + 1466 1 1503 1504 + 1467 1 1504 1505 + 1468 1 1505 1506 + 1469 1 1506 1507 + 1470 1 1507 1508 + 1471 1 1508 1509 + 1472 1 1509 1510 + 1473 1 1510 1511 + 1474 1 1511 1512 + 1475 1 1512 1513 + 1476 1 1513 1514 + 1477 1 1514 1515 + 1478 1 1515 1516 + 1479 1 1516 1517 + 1480 1 1517 1518 + 1481 1 1518 1519 + 1482 1 1519 1520 + 1483 1 1521 1522 + 1484 1 1522 1523 + 1485 1 1523 1524 + 1486 1 1524 1525 + 1487 1 1525 1526 + 1488 1 1526 1527 + 1489 1 1527 1528 + 1490 1 1528 1529 + 1491 1 1529 1530 + 1492 1 1530 1531 + 1493 1 1531 1532 + 1494 1 1532 1533 + 1495 1 1533 1534 + 1496 1 1534 1535 + 1497 1 1535 1536 + 1498 1 1536 1537 + 1499 1 1537 1538 + 1500 1 1538 1539 + 1501 1 1539 1540 + 1502 1 1540 1541 + 1503 1 1541 1542 + 1504 1 1542 1543 + 1505 1 1543 1544 + 1506 1 1544 1545 + 1507 1 1545 1546 + 1508 1 1546 1547 + 1509 1 1547 1548 + 1510 1 1548 1549 + 1511 1 1549 1550 + 1512 1 1550 1551 + 1513 1 1551 1552 + 1514 1 1552 1553 + 1515 1 1553 1554 + 1516 1 1554 1555 + 1517 1 1555 1556 + 1518 1 1556 1557 + 1519 1 1557 1558 + 1520 1 1558 1559 + 1521 1 1559 1560 + 1522 1 1561 1562 + 1523 1 1562 1563 + 1524 1 1563 1564 + 1525 1 1564 1565 + 1526 1 1565 1566 + 1527 1 1566 1567 + 1528 1 1567 1568 + 1529 1 1568 1569 + 1530 1 1569 1570 + 1531 1 1570 1571 + 1532 1 1571 1572 + 1533 1 1572 1573 + 1534 1 1573 1574 + 1535 1 1574 1575 + 1536 1 1575 1576 + 1537 1 1576 1577 + 1538 1 1577 1578 + 1539 1 1578 1579 + 1540 1 1579 1580 + 1541 1 1580 1581 + 1542 1 1581 1582 + 1543 1 1582 1583 + 1544 1 1583 1584 + 1545 1 1584 1585 + 1546 1 1585 1586 + 1547 1 1586 1587 + 1548 1 1587 1588 + 1549 1 1588 1589 + 1550 1 1589 1590 + 1551 1 1590 1591 + 1552 1 1591 1592 + 1553 1 1592 1593 + 1554 1 1593 1594 + 1555 1 1594 1595 + 1556 1 1595 1596 + 1557 1 1596 1597 + 1558 1 1597 1598 + 1559 1 1598 1599 + 1560 1 1599 1600 + 1561 1 1601 1602 + 1562 1 1602 1603 + 1563 1 1603 1604 + 1564 1 1604 1605 + 1565 1 1605 1606 + 1566 1 1606 1607 + 1567 1 1607 1608 + 1568 1 1608 1609 + 1569 1 1609 1610 + 1570 1 1610 1611 + 1571 1 1611 1612 + 1572 1 1612 1613 + 1573 1 1613 1614 + 1574 1 1614 1615 + 1575 1 1615 1616 + 1576 1 1616 1617 + 1577 1 1617 1618 + 1578 1 1618 1619 + 1579 1 1619 1620 + 1580 1 1620 1621 + 1581 1 1621 1622 + 1582 1 1622 1623 + 1583 1 1623 1624 + 1584 1 1624 1625 + 1585 1 1625 1626 + 1586 1 1626 1627 + 1587 1 1627 1628 + 1588 1 1628 1629 + 1589 1 1629 1630 + 1590 1 1630 1631 + 1591 1 1631 1632 + 1592 1 1632 1633 + 1593 1 1633 1634 + 1594 1 1634 1635 + 1595 1 1635 1636 + 1596 1 1636 1637 + 1597 1 1637 1638 + 1598 1 1638 1639 + 1599 1 1639 1640 + 1600 1 1641 1642 + 1601 1 1642 1643 + 1602 1 1643 1644 + 1603 1 1644 1645 + 1604 1 1645 1646 + 1605 1 1646 1647 + 1606 1 1647 1648 + 1607 1 1648 1649 + 1608 1 1649 1650 + 1609 1 1650 1651 + 1610 1 1651 1652 + 1611 1 1652 1653 + 1612 1 1653 1654 + 1613 1 1654 1655 + 1614 1 1655 1656 + 1615 1 1656 1657 + 1616 1 1657 1658 + 1617 1 1658 1659 + 1618 1 1659 1660 + 1619 1 1660 1661 + 1620 1 1661 1662 + 1621 1 1662 1663 + 1622 1 1663 1664 + 1623 1 1664 1665 + 1624 1 1665 1666 + 1625 1 1666 1667 + 1626 1 1667 1668 + 1627 1 1668 1669 + 1628 1 1669 1670 + 1629 1 1670 1671 + 1630 1 1671 1672 + 1631 1 1672 1673 + 1632 1 1673 1674 + 1633 1 1674 1675 + 1634 1 1675 1676 + 1635 1 1676 1677 + 1636 1 1677 1678 + 1637 1 1678 1679 + 1638 1 1679 1680 + 1639 1 1681 1682 + 1640 1 1682 1683 + 1641 1 1683 1684 + 1642 1 1684 1685 + 1643 1 1685 1686 + 1644 1 1686 1687 + 1645 1 1687 1688 + 1646 1 1688 1689 + 1647 1 1689 1690 + 1648 1 1690 1691 + 1649 1 1691 1692 + 1650 1 1692 1693 + 1651 1 1693 1694 + 1652 1 1694 1695 + 1653 1 1695 1696 + 1654 1 1696 1697 + 1655 1 1697 1698 + 1656 1 1698 1699 + 1657 1 1699 1700 + 1658 1 1700 1701 + 1659 1 1701 1702 + 1660 1 1702 1703 + 1661 1 1703 1704 + 1662 1 1704 1705 + 1663 1 1705 1706 + 1664 1 1706 1707 + 1665 1 1707 1708 + 1666 1 1708 1709 + 1667 1 1709 1710 + 1668 1 1710 1711 + 1669 1 1711 1712 + 1670 1 1712 1713 + 1671 1 1713 1714 + 1672 1 1714 1715 + 1673 1 1715 1716 + 1674 1 1716 1717 + 1675 1 1717 1718 + 1676 1 1718 1719 + 1677 1 1719 1720 + 1678 1 1721 1722 + 1679 1 1722 1723 + 1680 1 1723 1724 + 1681 1 1724 1725 + 1682 1 1725 1726 + 1683 1 1726 1727 + 1684 1 1727 1728 + 1685 1 1728 1729 + 1686 1 1729 1730 + 1687 1 1730 1731 + 1688 1 1731 1732 + 1689 1 1732 1733 + 1690 1 1733 1734 + 1691 1 1734 1735 + 1692 1 1735 1736 + 1693 1 1736 1737 + 1694 1 1737 1738 + 1695 1 1738 1739 + 1696 1 1739 1740 + 1697 1 1740 1741 + 1698 1 1741 1742 + 1699 1 1742 1743 + 1700 1 1743 1744 + 1701 1 1744 1745 + 1702 1 1745 1746 + 1703 1 1746 1747 + 1704 1 1747 1748 + 1705 1 1748 1749 + 1706 1 1749 1750 + 1707 1 1750 1751 + 1708 1 1751 1752 + 1709 1 1752 1753 + 1710 1 1753 1754 + 1711 1 1754 1755 + 1712 1 1755 1756 + 1713 1 1756 1757 + 1714 1 1757 1758 + 1715 1 1758 1759 + 1716 1 1759 1760 + 1717 1 1761 1762 + 1718 1 1762 1763 + 1719 1 1763 1764 + 1720 1 1764 1765 + 1721 1 1765 1766 + 1722 1 1766 1767 + 1723 1 1767 1768 + 1724 1 1768 1769 + 1725 1 1769 1770 + 1726 1 1770 1771 + 1727 1 1771 1772 + 1728 1 1772 1773 + 1729 1 1773 1774 + 1730 1 1774 1775 + 1731 1 1775 1776 + 1732 1 1776 1777 + 1733 1 1777 1778 + 1734 1 1778 1779 + 1735 1 1779 1780 + 1736 1 1780 1781 + 1737 1 1781 1782 + 1738 1 1782 1783 + 1739 1 1783 1784 + 1740 1 1784 1785 + 1741 1 1785 1786 + 1742 1 1786 1787 + 1743 1 1787 1788 + 1744 1 1788 1789 + 1745 1 1789 1790 + 1746 1 1790 1791 + 1747 1 1791 1792 + 1748 1 1792 1793 + 1749 1 1793 1794 + 1750 1 1794 1795 + 1751 1 1795 1796 + 1752 1 1796 1797 + 1753 1 1797 1798 + 1754 1 1798 1799 + 1755 1 1799 1800 + 1756 1 1801 1802 + 1757 1 1802 1803 + 1758 1 1803 1804 + 1759 1 1804 1805 + 1760 1 1805 1806 + 1761 1 1806 1807 + 1762 1 1807 1808 + 1763 1 1808 1809 + 1764 1 1809 1810 + 1765 1 1810 1811 + 1766 1 1811 1812 + 1767 1 1812 1813 + 1768 1 1813 1814 + 1769 1 1814 1815 + 1770 1 1815 1816 + 1771 1 1816 1817 + 1772 1 1817 1818 + 1773 1 1818 1819 + 1774 1 1819 1820 + 1775 1 1820 1821 + 1776 1 1821 1822 + 1777 1 1822 1823 + 1778 1 1823 1824 + 1779 1 1824 1825 + 1780 1 1825 1826 + 1781 1 1826 1827 + 1782 1 1827 1828 + 1783 1 1828 1829 + 1784 1 1829 1830 + 1785 1 1830 1831 + 1786 1 1831 1832 + 1787 1 1832 1833 + 1788 1 1833 1834 + 1789 1 1834 1835 + 1790 1 1835 1836 + 1791 1 1836 1837 + 1792 1 1837 1838 + 1793 1 1838 1839 + 1794 1 1839 1840 + 1795 1 1841 1842 + 1796 1 1842 1843 + 1797 1 1843 1844 + 1798 1 1844 1845 + 1799 1 1845 1846 + 1800 1 1846 1847 + 1801 1 1847 1848 + 1802 1 1848 1849 + 1803 1 1849 1850 + 1804 1 1850 1851 + 1805 1 1851 1852 + 1806 1 1852 1853 + 1807 1 1853 1854 + 1808 1 1854 1855 + 1809 1 1855 1856 + 1810 1 1856 1857 + 1811 1 1857 1858 + 1812 1 1858 1859 + 1813 1 1859 1860 + 1814 1 1860 1861 + 1815 1 1861 1862 + 1816 1 1862 1863 + 1817 1 1863 1864 + 1818 1 1864 1865 + 1819 1 1865 1866 + 1820 1 1866 1867 + 1821 1 1867 1868 + 1822 1 1868 1869 + 1823 1 1869 1870 + 1824 1 1870 1871 + 1825 1 1871 1872 + 1826 1 1872 1873 + 1827 1 1873 1874 + 1828 1 1874 1875 + 1829 1 1875 1876 + 1830 1 1876 1877 + 1831 1 1877 1878 + 1832 1 1878 1879 + 1833 1 1879 1880 + 1834 1 1881 1882 + 1835 1 1882 1883 + 1836 1 1883 1884 + 1837 1 1884 1885 + 1838 1 1885 1886 + 1839 1 1886 1887 + 1840 1 1887 1888 + 1841 1 1888 1889 + 1842 1 1889 1890 + 1843 1 1890 1891 + 1844 1 1891 1892 + 1845 1 1892 1893 + 1846 1 1893 1894 + 1847 1 1894 1895 + 1848 1 1895 1896 + 1849 1 1896 1897 + 1850 1 1897 1898 + 1851 1 1898 1899 + 1852 1 1899 1900 + 1853 1 1900 1901 + 1854 1 1901 1902 + 1855 1 1902 1903 + 1856 1 1903 1904 + 1857 1 1904 1905 + 1858 1 1905 1906 + 1859 1 1906 1907 + 1860 1 1907 1908 + 1861 1 1908 1909 + 1862 1 1909 1910 + 1863 1 1910 1911 + 1864 1 1911 1912 + 1865 1 1912 1913 + 1866 1 1913 1914 + 1867 1 1914 1915 + 1868 1 1915 1916 + 1869 1 1916 1917 + 1870 1 1917 1918 + 1871 1 1918 1919 + 1872 1 1919 1920 + 1873 1 1921 1922 + 1874 1 1922 1923 + 1875 1 1923 1924 + 1876 1 1924 1925 + 1877 1 1925 1926 + 1878 1 1926 1927 + 1879 1 1927 1928 + 1880 1 1928 1929 + 1881 1 1929 1930 + 1882 1 1930 1931 + 1883 1 1931 1932 + 1884 1 1932 1933 + 1885 1 1933 1934 + 1886 1 1934 1935 + 1887 1 1935 1936 + 1888 1 1936 1937 + 1889 1 1937 1938 + 1890 1 1938 1939 + 1891 1 1939 1940 + 1892 1 1940 1941 + 1893 1 1941 1942 + 1894 1 1942 1943 + 1895 1 1943 1944 + 1896 1 1944 1945 + 1897 1 1945 1946 + 1898 1 1946 1947 + 1899 1 1947 1948 + 1900 1 1948 1949 + 1901 1 1949 1950 + 1902 1 1950 1951 + 1903 1 1951 1952 + 1904 1 1952 1953 + 1905 1 1953 1954 + 1906 1 1954 1955 + 1907 1 1955 1956 + 1908 1 1956 1957 + 1909 1 1957 1958 + 1910 1 1958 1959 + 1911 1 1959 1960 + 1912 1 1961 1962 + 1913 1 1962 1963 + 1914 1 1963 1964 + 1915 1 1964 1965 + 1916 1 1965 1966 + 1917 1 1966 1967 + 1918 1 1967 1968 + 1919 1 1968 1969 + 1920 1 1969 1970 + 1921 1 1970 1971 + 1922 1 1971 1972 + 1923 1 1972 1973 + 1924 1 1973 1974 + 1925 1 1974 1975 + 1926 1 1975 1976 + 1927 1 1976 1977 + 1928 1 1977 1978 + 1929 1 1978 1979 + 1930 1 1979 1980 + 1931 1 1980 1981 + 1932 1 1981 1982 + 1933 1 1982 1983 + 1934 1 1983 1984 + 1935 1 1984 1985 + 1936 1 1985 1986 + 1937 1 1986 1987 + 1938 1 1987 1988 + 1939 1 1988 1989 + 1940 1 1989 1990 + 1941 1 1990 1991 + 1942 1 1991 1992 + 1943 1 1992 1993 + 1944 1 1993 1994 + 1945 1 1994 1995 + 1946 1 1995 1996 + 1947 1 1996 1997 + 1948 1 1997 1998 + 1949 1 1998 1999 + 1950 1 1999 2000 + 1951 1 2001 2002 + 1952 1 2002 2003 + 1953 1 2003 2004 + 1954 1 2004 2005 + 1955 1 2005 2006 + 1956 1 2006 2007 + 1957 1 2007 2008 + 1958 1 2008 2009 + 1959 1 2009 2010 + 1960 1 2010 2011 + 1961 1 2011 2012 + 1962 1 2012 2013 + 1963 1 2013 2014 + 1964 1 2014 2015 + 1965 1 2015 2016 + 1966 1 2016 2017 + 1967 1 2017 2018 + 1968 1 2018 2019 + 1969 1 2019 2020 + 1970 1 2020 2021 + 1971 1 2021 2022 + 1972 1 2022 2023 + 1973 1 2023 2024 + 1974 1 2024 2025 + 1975 1 2025 2026 + 1976 1 2026 2027 + 1977 1 2027 2028 + 1978 1 2028 2029 + 1979 1 2029 2030 + 1980 1 2030 2031 + 1981 1 2031 2032 + 1982 1 2032 2033 + 1983 1 2033 2034 + 1984 1 2034 2035 + 1985 1 2035 2036 + 1986 1 2036 2037 + 1987 1 2037 2038 + 1988 1 2038 2039 + 1989 1 2039 2040 + 1990 1 2041 2042 + 1991 1 2042 2043 + 1992 1 2043 2044 + 1993 1 2044 2045 + 1994 1 2045 2046 + 1995 1 2046 2047 + 1996 1 2047 2048 + 1997 1 2048 2049 + 1998 1 2049 2050 + 1999 1 2050 2051 + 2000 1 2051 2052 + 2001 1 2052 2053 + 2002 1 2053 2054 + 2003 1 2054 2055 + 2004 1 2055 2056 + 2005 1 2056 2057 + 2006 1 2057 2058 + 2007 1 2058 2059 + 2008 1 2059 2060 + 2009 1 2060 2061 + 2010 1 2061 2062 + 2011 1 2062 2063 + 2012 1 2063 2064 + 2013 1 2064 2065 + 2014 1 2065 2066 + 2015 1 2066 2067 + 2016 1 2067 2068 + 2017 1 2068 2069 + 2018 1 2069 2070 + 2019 1 2070 2071 + 2020 1 2071 2072 + 2021 1 2072 2073 + 2022 1 2073 2074 + 2023 1 2074 2075 + 2024 1 2075 2076 + 2025 1 2076 2077 + 2026 1 2077 2078 + 2027 1 2078 2079 + 2028 1 2079 2080 + 2029 1 2081 2082 + 2030 1 2082 2083 + 2031 1 2083 2084 + 2032 1 2084 2085 + 2033 1 2085 2086 + 2034 1 2086 2087 + 2035 1 2087 2088 + 2036 1 2088 2089 + 2037 1 2089 2090 + 2038 1 2090 2091 + 2039 1 2091 2092 + 2040 1 2092 2093 + 2041 1 2093 2094 + 2042 1 2094 2095 + 2043 1 2095 2096 + 2044 1 2096 2097 + 2045 1 2097 2098 + 2046 1 2098 2099 + 2047 1 2099 2100 + 2048 1 2100 2101 + 2049 1 2101 2102 + 2050 1 2102 2103 + 2051 1 2103 2104 + 2052 1 2104 2105 + 2053 1 2105 2106 + 2054 1 2106 2107 + 2055 1 2107 2108 + 2056 1 2108 2109 + 2057 1 2109 2110 + 2058 1 2110 2111 + 2059 1 2111 2112 + 2060 1 2112 2113 + 2061 1 2113 2114 + 2062 1 2114 2115 + 2063 1 2115 2116 + 2064 1 2116 2117 + 2065 1 2117 2118 + 2066 1 2118 2119 + 2067 1 2119 2120 + 2068 1 2121 2122 + 2069 1 2122 2123 + 2070 1 2123 2124 + 2071 1 2124 2125 + 2072 1 2125 2126 + 2073 1 2126 2127 + 2074 1 2127 2128 + 2075 1 2128 2129 + 2076 1 2129 2130 + 2077 1 2130 2131 + 2078 1 2131 2132 + 2079 1 2132 2133 + 2080 1 2133 2134 + 2081 1 2134 2135 + 2082 1 2135 2136 + 2083 1 2136 2137 + 2084 1 2137 2138 + 2085 1 2138 2139 + 2086 1 2139 2140 + 2087 1 2140 2141 + 2088 1 2141 2142 + 2089 1 2142 2143 + 2090 1 2143 2144 + 2091 1 2144 2145 + 2092 1 2145 2146 + 2093 1 2146 2147 + 2094 1 2147 2148 + 2095 1 2148 2149 + 2096 1 2149 2150 + 2097 1 2150 2151 + 2098 1 2151 2152 + 2099 1 2152 2153 + 2100 1 2153 2154 + 2101 1 2154 2155 + 2102 1 2155 2156 + 2103 1 2156 2157 + 2104 1 2157 2158 + 2105 1 2158 2159 + 2106 1 2159 2160 + 2107 1 2161 2162 + 2108 1 2162 2163 + 2109 1 2163 2164 + 2110 1 2164 2165 + 2111 1 2165 2166 + 2112 1 2166 2167 + 2113 1 2167 2168 + 2114 1 2168 2169 + 2115 1 2169 2170 + 2116 1 2170 2171 + 2117 1 2171 2172 + 2118 1 2172 2173 + 2119 1 2173 2174 + 2120 1 2174 2175 + 2121 1 2175 2176 + 2122 1 2176 2177 + 2123 1 2177 2178 + 2124 1 2178 2179 + 2125 1 2179 2180 + 2126 1 2180 2181 + 2127 1 2181 2182 + 2128 1 2182 2183 + 2129 1 2183 2184 + 2130 1 2184 2185 + 2131 1 2185 2186 + 2132 1 2186 2187 + 2133 1 2187 2188 + 2134 1 2188 2189 + 2135 1 2189 2190 + 2136 1 2190 2191 + 2137 1 2191 2192 + 2138 1 2192 2193 + 2139 1 2193 2194 + 2140 1 2194 2195 + 2141 1 2195 2196 + 2142 1 2196 2197 + 2143 1 2197 2198 + 2144 1 2198 2199 + 2145 1 2199 2200 + 2146 1 2201 2202 + 2147 1 2202 2203 + 2148 1 2203 2204 + 2149 1 2204 2205 + 2150 1 2205 2206 + 2151 1 2206 2207 + 2152 1 2207 2208 + 2153 1 2208 2209 + 2154 1 2209 2210 + 2155 1 2210 2211 + 2156 1 2211 2212 + 2157 1 2212 2213 + 2158 1 2213 2214 + 2159 1 2214 2215 + 2160 1 2215 2216 + 2161 1 2216 2217 + 2162 1 2217 2218 + 2163 1 2218 2219 + 2164 1 2219 2220 + 2165 1 2220 2221 + 2166 1 2221 2222 + 2167 1 2222 2223 + 2168 1 2223 2224 + 2169 1 2224 2225 + 2170 1 2225 2226 + 2171 1 2226 2227 + 2172 1 2227 2228 + 2173 1 2228 2229 + 2174 1 2229 2230 + 2175 1 2230 2231 + 2176 1 2231 2232 + 2177 1 2232 2233 + 2178 1 2233 2234 + 2179 1 2234 2235 + 2180 1 2235 2236 + 2181 1 2236 2237 + 2182 1 2237 2238 + 2183 1 2238 2239 + 2184 1 2239 2240 + 2185 1 2241 2242 + 2186 1 2242 2243 + 2187 1 2243 2244 + 2188 1 2244 2245 + 2189 1 2245 2246 + 2190 1 2246 2247 + 2191 1 2247 2248 + 2192 1 2248 2249 + 2193 1 2249 2250 + 2194 1 2250 2251 + 2195 1 2251 2252 + 2196 1 2252 2253 + 2197 1 2253 2254 + 2198 1 2254 2255 + 2199 1 2255 2256 + 2200 1 2256 2257 + 2201 1 2257 2258 + 2202 1 2258 2259 + 2203 1 2259 2260 + 2204 1 2260 2261 + 2205 1 2261 2262 + 2206 1 2262 2263 + 2207 1 2263 2264 + 2208 1 2264 2265 + 2209 1 2265 2266 + 2210 1 2266 2267 + 2211 1 2267 2268 + 2212 1 2268 2269 + 2213 1 2269 2270 + 2214 1 2270 2271 + 2215 1 2271 2272 + 2216 1 2272 2273 + 2217 1 2273 2274 + 2218 1 2274 2275 + 2219 1 2275 2276 + 2220 1 2276 2277 + 2221 1 2277 2278 + 2222 1 2278 2279 + 2223 1 2279 2280 + 2224 1 2281 2282 + 2225 1 2282 2283 + 2226 1 2283 2284 + 2227 1 2284 2285 + 2228 1 2285 2286 + 2229 1 2286 2287 + 2230 1 2287 2288 + 2231 1 2288 2289 + 2232 1 2289 2290 + 2233 1 2290 2291 + 2234 1 2291 2292 + 2235 1 2292 2293 + 2236 1 2293 2294 + 2237 1 2294 2295 + 2238 1 2295 2296 + 2239 1 2296 2297 + 2240 1 2297 2298 + 2241 1 2298 2299 + 2242 1 2299 2300 + 2243 1 2300 2301 + 2244 1 2301 2302 + 2245 1 2302 2303 + 2246 1 2303 2304 + 2247 1 2304 2305 + 2248 1 2305 2306 + 2249 1 2306 2307 + 2250 1 2307 2308 + 2251 1 2308 2309 + 2252 1 2309 2310 + 2253 1 2310 2311 + 2254 1 2311 2312 + 2255 1 2312 2313 + 2256 1 2313 2314 + 2257 1 2314 2315 + 2258 1 2315 2316 + 2259 1 2316 2317 + 2260 1 2317 2318 + 2261 1 2318 2319 + 2262 1 2319 2320 + 2263 1 2321 2322 + 2264 1 2322 2323 + 2265 1 2323 2324 + 2266 1 2324 2325 + 2267 1 2325 2326 + 2268 1 2326 2327 + 2269 1 2327 2328 + 2270 1 2328 2329 + 2271 1 2329 2330 + 2272 1 2330 2331 + 2273 1 2331 2332 + 2274 1 2332 2333 + 2275 1 2333 2334 + 2276 1 2334 2335 + 2277 1 2335 2336 + 2278 1 2336 2337 + 2279 1 2337 2338 + 2280 1 2338 2339 + 2281 1 2339 2340 + 2282 1 2340 2341 + 2283 1 2341 2342 + 2284 1 2342 2343 + 2285 1 2343 2344 + 2286 1 2344 2345 + 2287 1 2345 2346 + 2288 1 2346 2347 + 2289 1 2347 2348 + 2290 1 2348 2349 + 2291 1 2349 2350 + 2292 1 2350 2351 + 2293 1 2351 2352 + 2294 1 2352 2353 + 2295 1 2353 2354 + 2296 1 2354 2355 + 2297 1 2355 2356 + 2298 1 2356 2357 + 2299 1 2357 2358 + 2300 1 2358 2359 + 2301 1 2359 2360 + 2302 1 2361 2362 + 2303 1 2362 2363 + 2304 1 2363 2364 + 2305 1 2364 2365 + 2306 1 2365 2366 + 2307 1 2366 2367 + 2308 1 2367 2368 + 2309 1 2368 2369 + 2310 1 2369 2370 + 2311 1 2370 2371 + 2312 1 2371 2372 + 2313 1 2372 2373 + 2314 1 2373 2374 + 2315 1 2374 2375 + 2316 1 2375 2376 + 2317 1 2376 2377 + 2318 1 2377 2378 + 2319 1 2378 2379 + 2320 1 2379 2380 + 2321 1 2380 2381 + 2322 1 2381 2382 + 2323 1 2382 2383 + 2324 1 2383 2384 + 2325 1 2384 2385 + 2326 1 2385 2386 + 2327 1 2386 2387 + 2328 1 2387 2388 + 2329 1 2388 2389 + 2330 1 2389 2390 + 2331 1 2390 2391 + 2332 1 2391 2392 + 2333 1 2392 2393 + 2334 1 2393 2394 + 2335 1 2394 2395 + 2336 1 2395 2396 + 2337 1 2396 2397 + 2338 1 2397 2398 + 2339 1 2398 2399 + 2340 1 2399 2400 + 2341 1 2401 2402 + 2342 1 2402 2403 + 2343 1 2403 2404 + 2344 1 2404 2405 + 2345 1 2405 2406 + 2346 1 2406 2407 + 2347 1 2407 2408 + 2348 1 2408 2409 + 2349 1 2409 2410 + 2350 1 2410 2411 + 2351 1 2411 2412 + 2352 1 2412 2413 + 2353 1 2413 2414 + 2354 1 2414 2415 + 2355 1 2415 2416 + 2356 1 2416 2417 + 2357 1 2417 2418 + 2358 1 2418 2419 + 2359 1 2419 2420 + 2360 1 2420 2421 + 2361 1 2421 2422 + 2362 1 2422 2423 + 2363 1 2423 2424 + 2364 1 2424 2425 + 2365 1 2425 2426 + 2366 1 2426 2427 + 2367 1 2427 2428 + 2368 1 2428 2429 + 2369 1 2429 2430 + 2370 1 2430 2431 + 2371 1 2431 2432 + 2372 1 2432 2433 + 2373 1 2433 2434 + 2374 1 2434 2435 + 2375 1 2435 2436 + 2376 1 2436 2437 + 2377 1 2437 2438 + 2378 1 2438 2439 + 2379 1 2439 2440 + 2380 1 2441 2442 + 2381 1 2442 2443 + 2382 1 2443 2444 + 2383 1 2444 2445 + 2384 1 2445 2446 + 2385 1 2446 2447 + 2386 1 2447 2448 + 2387 1 2448 2449 + 2388 1 2449 2450 + 2389 1 2450 2451 + 2390 1 2451 2452 + 2391 1 2452 2453 + 2392 1 2453 2454 + 2393 1 2454 2455 + 2394 1 2455 2456 + 2395 1 2456 2457 + 2396 1 2457 2458 + 2397 1 2458 2459 + 2398 1 2459 2460 + 2399 1 2460 2461 + 2400 1 2461 2462 + 2401 1 2462 2463 + 2402 1 2463 2464 + 2403 1 2464 2465 + 2404 1 2465 2466 + 2405 1 2466 2467 + 2406 1 2467 2468 + 2407 1 2468 2469 + 2408 1 2469 2470 + 2409 1 2470 2471 + 2410 1 2471 2472 + 2411 1 2472 2473 + 2412 1 2473 2474 + 2413 1 2474 2475 + 2414 1 2475 2476 + 2415 1 2476 2477 + 2416 1 2477 2478 + 2417 1 2478 2479 + 2418 1 2479 2480 + 2419 1 2481 2482 + 2420 1 2482 2483 + 2421 1 2483 2484 + 2422 1 2484 2485 + 2423 1 2485 2486 + 2424 1 2486 2487 + 2425 1 2487 2488 + 2426 1 2488 2489 + 2427 1 2489 2490 + 2428 1 2490 2491 + 2429 1 2491 2492 + 2430 1 2492 2493 + 2431 1 2493 2494 + 2432 1 2494 2495 + 2433 1 2495 2496 + 2434 1 2496 2497 + 2435 1 2497 2498 + 2436 1 2498 2499 + 2437 1 2499 2500 + 2438 1 2500 2501 + 2439 1 2501 2502 + 2440 1 2502 2503 + 2441 1 2503 2504 + 2442 1 2504 2505 + 2443 1 2505 2506 + 2444 1 2506 2507 + 2445 1 2507 2508 + 2446 1 2508 2509 + 2447 1 2509 2510 + 2448 1 2510 2511 + 2449 1 2511 2512 + 2450 1 2512 2513 + 2451 1 2513 2514 + 2452 1 2514 2515 + 2453 1 2515 2516 + 2454 1 2516 2517 + 2455 1 2517 2518 + 2456 1 2518 2519 + 2457 1 2519 2520 + 2458 1 2521 2522 + 2459 1 2522 2523 + 2460 1 2523 2524 + 2461 1 2524 2525 + 2462 1 2525 2526 + 2463 1 2526 2527 + 2464 1 2527 2528 + 2465 1 2528 2529 + 2466 1 2529 2530 + 2467 1 2530 2531 + 2468 1 2531 2532 + 2469 1 2532 2533 + 2470 1 2533 2534 + 2471 1 2534 2535 + 2472 1 2535 2536 + 2473 1 2536 2537 + 2474 1 2537 2538 + 2475 1 2538 2539 + 2476 1 2539 2540 + 2477 1 2540 2541 + 2478 1 2541 2542 + 2479 1 2542 2543 + 2480 1 2543 2544 + 2481 1 2544 2545 + 2482 1 2545 2546 + 2483 1 2546 2547 + 2484 1 2547 2548 + 2485 1 2548 2549 + 2486 1 2549 2550 + 2487 1 2550 2551 + 2488 1 2551 2552 + 2489 1 2552 2553 + 2490 1 2553 2554 + 2491 1 2554 2555 + 2492 1 2555 2556 + 2493 1 2556 2557 + 2494 1 2557 2558 + 2495 1 2558 2559 + 2496 1 2559 2560 + 2497 1 2561 2562 + 2498 1 2562 2563 + 2499 1 2563 2564 + 2500 1 2564 2565 + 2501 1 2565 2566 + 2502 1 2566 2567 + 2503 1 2567 2568 + 2504 1 2568 2569 + 2505 1 2569 2570 + 2506 1 2570 2571 + 2507 1 2571 2572 + 2508 1 2572 2573 + 2509 1 2573 2574 + 2510 1 2574 2575 + 2511 1 2575 2576 + 2512 1 2576 2577 + 2513 1 2577 2578 + 2514 1 2578 2579 + 2515 1 2579 2580 + 2516 1 2580 2581 + 2517 1 2581 2582 + 2518 1 2582 2583 + 2519 1 2583 2584 + 2520 1 2584 2585 + 2521 1 2585 2586 + 2522 1 2586 2587 + 2523 1 2587 2588 + 2524 1 2588 2589 + 2525 1 2589 2590 + 2526 1 2590 2591 + 2527 1 2591 2592 + 2528 1 2592 2593 + 2529 1 2593 2594 + 2530 1 2594 2595 + 2531 1 2595 2596 + 2532 1 2596 2597 + 2533 1 2597 2598 + 2534 1 2598 2599 + 2535 1 2599 2600 + 2536 1 2601 2602 + 2537 1 2602 2603 + 2538 1 2603 2604 + 2539 1 2604 2605 + 2540 1 2605 2606 + 2541 1 2606 2607 + 2542 1 2607 2608 + 2543 1 2608 2609 + 2544 1 2609 2610 + 2545 1 2610 2611 + 2546 1 2611 2612 + 2547 1 2612 2613 + 2548 1 2613 2614 + 2549 1 2614 2615 + 2550 1 2615 2616 + 2551 1 2616 2617 + 2552 1 2617 2618 + 2553 1 2618 2619 + 2554 1 2619 2620 + 2555 1 2620 2621 + 2556 1 2621 2622 + 2557 1 2622 2623 + 2558 1 2623 2624 + 2559 1 2624 2625 + 2560 1 2625 2626 + 2561 1 2626 2627 + 2562 1 2627 2628 + 2563 1 2628 2629 + 2564 1 2629 2630 + 2565 1 2630 2631 + 2566 1 2631 2632 + 2567 1 2632 2633 + 2568 1 2633 2634 + 2569 1 2634 2635 + 2570 1 2635 2636 + 2571 1 2636 2637 + 2572 1 2637 2638 + 2573 1 2638 2639 + 2574 1 2639 2640 + 2575 1 2641 2642 + 2576 1 2642 2643 + 2577 1 2643 2644 + 2578 1 2644 2645 + 2579 1 2645 2646 + 2580 1 2646 2647 + 2581 1 2647 2648 + 2582 1 2648 2649 + 2583 1 2649 2650 + 2584 1 2650 2651 + 2585 1 2651 2652 + 2586 1 2652 2653 + 2587 1 2653 2654 + 2588 1 2654 2655 + 2589 1 2655 2656 + 2590 1 2656 2657 + 2591 1 2657 2658 + 2592 1 2658 2659 + 2593 1 2659 2660 + 2594 1 2660 2661 + 2595 1 2661 2662 + 2596 1 2662 2663 + 2597 1 2663 2664 + 2598 1 2664 2665 + 2599 1 2665 2666 + 2600 1 2666 2667 + 2601 1 2667 2668 + 2602 1 2668 2669 + 2603 1 2669 2670 + 2604 1 2670 2671 + 2605 1 2671 2672 + 2606 1 2672 2673 + 2607 1 2673 2674 + 2608 1 2674 2675 + 2609 1 2675 2676 + 2610 1 2676 2677 + 2611 1 2677 2678 + 2612 1 2678 2679 + 2613 1 2679 2680 + 2614 1 2681 2682 + 2615 1 2682 2683 + 2616 1 2683 2684 + 2617 1 2684 2685 + 2618 1 2685 2686 + 2619 1 2686 2687 + 2620 1 2687 2688 + 2621 1 2688 2689 + 2622 1 2689 2690 + 2623 1 2690 2691 + 2624 1 2691 2692 + 2625 1 2692 2693 + 2626 1 2693 2694 + 2627 1 2694 2695 + 2628 1 2695 2696 + 2629 1 2696 2697 + 2630 1 2697 2698 + 2631 1 2698 2699 + 2632 1 2699 2700 + 2633 1 2700 2701 + 2634 1 2701 2702 + 2635 1 2702 2703 + 2636 1 2703 2704 + 2637 1 2704 2705 + 2638 1 2705 2706 + 2639 1 2706 2707 + 2640 1 2707 2708 + 2641 1 2708 2709 + 2642 1 2709 2710 + 2643 1 2710 2711 + 2644 1 2711 2712 + 2645 1 2712 2713 + 2646 1 2713 2714 + 2647 1 2714 2715 + 2648 1 2715 2716 + 2649 1 2716 2717 + 2650 1 2717 2718 + 2651 1 2718 2719 + 2652 1 2719 2720 + 2653 1 2721 2722 + 2654 1 2722 2723 + 2655 1 2723 2724 + 2656 1 2724 2725 + 2657 1 2725 2726 + 2658 1 2726 2727 + 2659 1 2727 2728 + 2660 1 2728 2729 + 2661 1 2729 2730 + 2662 1 2730 2731 + 2663 1 2731 2732 + 2664 1 2732 2733 + 2665 1 2733 2734 + 2666 1 2734 2735 + 2667 1 2735 2736 + 2668 1 2736 2737 + 2669 1 2737 2738 + 2670 1 2738 2739 + 2671 1 2739 2740 + 2672 1 2740 2741 + 2673 1 2741 2742 + 2674 1 2742 2743 + 2675 1 2743 2744 + 2676 1 2744 2745 + 2677 1 2745 2746 + 2678 1 2746 2747 + 2679 1 2747 2748 + 2680 1 2748 2749 + 2681 1 2749 2750 + 2682 1 2750 2751 + 2683 1 2751 2752 + 2684 1 2752 2753 + 2685 1 2753 2754 + 2686 1 2754 2755 + 2687 1 2755 2756 + 2688 1 2756 2757 + 2689 1 2757 2758 + 2690 1 2758 2759 + 2691 1 2759 2760 + 2692 1 2761 2762 + 2693 1 2762 2763 + 2694 1 2763 2764 + 2695 1 2764 2765 + 2696 1 2765 2766 + 2697 1 2766 2767 + 2698 1 2767 2768 + 2699 1 2768 2769 + 2700 1 2769 2770 + 2701 1 2770 2771 + 2702 1 2771 2772 + 2703 1 2772 2773 + 2704 1 2773 2774 + 2705 1 2774 2775 + 2706 1 2775 2776 + 2707 1 2776 2777 + 2708 1 2777 2778 + 2709 1 2778 2779 + 2710 1 2779 2780 + 2711 1 2780 2781 + 2712 1 2781 2782 + 2713 1 2782 2783 + 2714 1 2783 2784 + 2715 1 2784 2785 + 2716 1 2785 2786 + 2717 1 2786 2787 + 2718 1 2787 2788 + 2719 1 2788 2789 + 2720 1 2789 2790 + 2721 1 2790 2791 + 2722 1 2791 2792 + 2723 1 2792 2793 + 2724 1 2793 2794 + 2725 1 2794 2795 + 2726 1 2795 2796 + 2727 1 2796 2797 + 2728 1 2797 2798 + 2729 1 2798 2799 + 2730 1 2799 2800 + 2731 1 2801 2802 + 2732 1 2802 2803 + 2733 1 2803 2804 + 2734 1 2804 2805 + 2735 1 2805 2806 + 2736 1 2806 2807 + 2737 1 2807 2808 + 2738 1 2808 2809 + 2739 1 2809 2810 + 2740 1 2810 2811 + 2741 1 2811 2812 + 2742 1 2812 2813 + 2743 1 2813 2814 + 2744 1 2814 2815 + 2745 1 2815 2816 + 2746 1 2816 2817 + 2747 1 2817 2818 + 2748 1 2818 2819 + 2749 1 2819 2820 + 2750 1 2820 2821 + 2751 1 2821 2822 + 2752 1 2822 2823 + 2753 1 2823 2824 + 2754 1 2824 2825 + 2755 1 2825 2826 + 2756 1 2826 2827 + 2757 1 2827 2828 + 2758 1 2828 2829 + 2759 1 2829 2830 + 2760 1 2830 2831 + 2761 1 2831 2832 + 2762 1 2832 2833 + 2763 1 2833 2834 + 2764 1 2834 2835 + 2765 1 2835 2836 + 2766 1 2836 2837 + 2767 1 2837 2838 + 2768 1 2838 2839 + 2769 1 2839 2840 + 2770 1 2841 2842 + 2771 1 2842 2843 + 2772 1 2843 2844 + 2773 1 2844 2845 + 2774 1 2845 2846 + 2775 1 2846 2847 + 2776 1 2847 2848 + 2777 1 2848 2849 + 2778 1 2849 2850 + 2779 1 2850 2851 + 2780 1 2851 2852 + 2781 1 2852 2853 + 2782 1 2853 2854 + 2783 1 2854 2855 + 2784 1 2855 2856 + 2785 1 2856 2857 + 2786 1 2857 2858 + 2787 1 2858 2859 + 2788 1 2859 2860 + 2789 1 2860 2861 + 2790 1 2861 2862 + 2791 1 2862 2863 + 2792 1 2863 2864 + 2793 1 2864 2865 + 2794 1 2865 2866 + 2795 1 2866 2867 + 2796 1 2867 2868 + 2797 1 2868 2869 + 2798 1 2869 2870 + 2799 1 2870 2871 + 2800 1 2871 2872 + 2801 1 2872 2873 + 2802 1 2873 2874 + 2803 1 2874 2875 + 2804 1 2875 2876 + 2805 1 2876 2877 + 2806 1 2877 2878 + 2807 1 2878 2879 + 2808 1 2879 2880 + 2809 1 2881 2882 + 2810 1 2882 2883 + 2811 1 2883 2884 + 2812 1 2884 2885 + 2813 1 2885 2886 + 2814 1 2886 2887 + 2815 1 2887 2888 + 2816 1 2888 2889 + 2817 1 2889 2890 + 2818 1 2890 2891 + 2819 1 2891 2892 + 2820 1 2892 2893 + 2821 1 2893 2894 + 2822 1 2894 2895 + 2823 1 2895 2896 + 2824 1 2896 2897 + 2825 1 2897 2898 + 2826 1 2898 2899 + 2827 1 2899 2900 + 2828 1 2900 2901 + 2829 1 2901 2902 + 2830 1 2902 2903 + 2831 1 2903 2904 + 2832 1 2904 2905 + 2833 1 2905 2906 + 2834 1 2906 2907 + 2835 1 2907 2908 + 2836 1 2908 2909 + 2837 1 2909 2910 + 2838 1 2910 2911 + 2839 1 2911 2912 + 2840 1 2912 2913 + 2841 1 2913 2914 + 2842 1 2914 2915 + 2843 1 2915 2916 + 2844 1 2916 2917 + 2845 1 2917 2918 + 2846 1 2918 2919 + 2847 1 2919 2920 + 2848 1 2921 2922 + 2849 1 2922 2923 + 2850 1 2923 2924 + 2851 1 2924 2925 + 2852 1 2925 2926 + 2853 1 2926 2927 + 2854 1 2927 2928 + 2855 1 2928 2929 + 2856 1 2929 2930 + 2857 1 2930 2931 + 2858 1 2931 2932 + 2859 1 2932 2933 + 2860 1 2933 2934 + 2861 1 2934 2935 + 2862 1 2935 2936 + 2863 1 2936 2937 + 2864 1 2937 2938 + 2865 1 2938 2939 + 2866 1 2939 2940 + 2867 1 2940 2941 + 2868 1 2941 2942 + 2869 1 2942 2943 + 2870 1 2943 2944 + 2871 1 2944 2945 + 2872 1 2945 2946 + 2873 1 2946 2947 + 2874 1 2947 2948 + 2875 1 2948 2949 + 2876 1 2949 2950 + 2877 1 2950 2951 + 2878 1 2951 2952 + 2879 1 2952 2953 + 2880 1 2953 2954 + 2881 1 2954 2955 + 2882 1 2955 2956 + 2883 1 2956 2957 + 2884 1 2957 2958 + 2885 1 2958 2959 + 2886 1 2959 2960 + 2887 1 2961 2962 + 2888 1 2962 2963 + 2889 1 2963 2964 + 2890 1 2964 2965 + 2891 1 2965 2966 + 2892 1 2966 2967 + 2893 1 2967 2968 + 2894 1 2968 2969 + 2895 1 2969 2970 + 2896 1 2970 2971 + 2897 1 2971 2972 + 2898 1 2972 2973 + 2899 1 2973 2974 + 2900 1 2974 2975 + 2901 1 2975 2976 + 2902 1 2976 2977 + 2903 1 2977 2978 + 2904 1 2978 2979 + 2905 1 2979 2980 + 2906 1 2980 2981 + 2907 1 2981 2982 + 2908 1 2982 2983 + 2909 1 2983 2984 + 2910 1 2984 2985 + 2911 1 2985 2986 + 2912 1 2986 2987 + 2913 1 2987 2988 + 2914 1 2988 2989 + 2915 1 2989 2990 + 2916 1 2990 2991 + 2917 1 2991 2992 + 2918 1 2992 2993 + 2919 1 2993 2994 + 2920 1 2994 2995 + 2921 1 2995 2996 + 2922 1 2996 2997 + 2923 1 2997 2998 + 2924 1 2998 2999 + 2925 1 2999 3000 + 2926 1 3001 3002 + 2927 1 3002 3003 + 2928 1 3003 3004 + 2929 1 3004 3005 + 2930 1 3005 3006 + 2931 1 3006 3007 + 2932 1 3007 3008 + 2933 1 3008 3009 + 2934 1 3009 3010 + 2935 1 3010 3011 + 2936 1 3011 3012 + 2937 1 3012 3013 + 2938 1 3013 3014 + 2939 1 3014 3015 + 2940 1 3015 3016 + 2941 1 3016 3017 + 2942 1 3017 3018 + 2943 1 3018 3019 + 2944 1 3019 3020 + 2945 1 3020 3021 + 2946 1 3021 3022 + 2947 1 3022 3023 + 2948 1 3023 3024 + 2949 1 3024 3025 + 2950 1 3025 3026 + 2951 1 3026 3027 + 2952 1 3027 3028 + 2953 1 3028 3029 + 2954 1 3029 3030 + 2955 1 3030 3031 + 2956 1 3031 3032 + 2957 1 3032 3033 + 2958 1 3033 3034 + 2959 1 3034 3035 + 2960 1 3035 3036 + 2961 1 3036 3037 + 2962 1 3037 3038 + 2963 1 3038 3039 + 2964 1 3039 3040 + 2965 1 3041 3042 + 2966 1 3042 3043 + 2967 1 3043 3044 + 2968 1 3044 3045 + 2969 1 3045 3046 + 2970 1 3046 3047 + 2971 1 3047 3048 + 2972 1 3048 3049 + 2973 1 3049 3050 + 2974 1 3050 3051 + 2975 1 3051 3052 + 2976 1 3052 3053 + 2977 1 3053 3054 + 2978 1 3054 3055 + 2979 1 3055 3056 + 2980 1 3056 3057 + 2981 1 3057 3058 + 2982 1 3058 3059 + 2983 1 3059 3060 + 2984 1 3060 3061 + 2985 1 3061 3062 + 2986 1 3062 3063 + 2987 1 3063 3064 + 2988 1 3064 3065 + 2989 1 3065 3066 + 2990 1 3066 3067 + 2991 1 3067 3068 + 2992 1 3068 3069 + 2993 1 3069 3070 + 2994 1 3070 3071 + 2995 1 3071 3072 + 2996 1 3072 3073 + 2997 1 3073 3074 + 2998 1 3074 3075 + 2999 1 3075 3076 + 3000 1 3076 3077 + 3001 1 3077 3078 + 3002 1 3078 3079 + 3003 1 3079 3080 + 3004 1 3081 3082 + 3005 1 3082 3083 + 3006 1 3083 3084 + 3007 1 3084 3085 + 3008 1 3085 3086 + 3009 1 3086 3087 + 3010 1 3087 3088 + 3011 1 3088 3089 + 3012 1 3089 3090 + 3013 1 3090 3091 + 3014 1 3091 3092 + 3015 1 3092 3093 + 3016 1 3093 3094 + 3017 1 3094 3095 + 3018 1 3095 3096 + 3019 1 3096 3097 + 3020 1 3097 3098 + 3021 1 3098 3099 + 3022 1 3099 3100 + 3023 1 3100 3101 + 3024 1 3101 3102 + 3025 1 3102 3103 + 3026 1 3103 3104 + 3027 1 3104 3105 + 3028 1 3105 3106 + 3029 1 3106 3107 + 3030 1 3107 3108 + 3031 1 3108 3109 + 3032 1 3109 3110 + 3033 1 3110 3111 + 3034 1 3111 3112 + 3035 1 3112 3113 + 3036 1 3113 3114 + 3037 1 3114 3115 + 3038 1 3115 3116 + 3039 1 3116 3117 + 3040 1 3117 3118 + 3041 1 3118 3119 + 3042 1 3119 3120 + 3043 1 3121 3122 + 3044 1 3122 3123 + 3045 1 3123 3124 + 3046 1 3124 3125 + 3047 1 3125 3126 + 3048 1 3126 3127 + 3049 1 3127 3128 + 3050 1 3128 3129 + 3051 1 3129 3130 + 3052 1 3130 3131 + 3053 1 3131 3132 + 3054 1 3132 3133 + 3055 1 3133 3134 + 3056 1 3134 3135 + 3057 1 3135 3136 + 3058 1 3136 3137 + 3059 1 3137 3138 + 3060 1 3138 3139 + 3061 1 3139 3140 + 3062 1 3140 3141 + 3063 1 3141 3142 + 3064 1 3142 3143 + 3065 1 3143 3144 + 3066 1 3144 3145 + 3067 1 3145 3146 + 3068 1 3146 3147 + 3069 1 3147 3148 + 3070 1 3148 3149 + 3071 1 3149 3150 + 3072 1 3150 3151 + 3073 1 3151 3152 + 3074 1 3152 3153 + 3075 1 3153 3154 + 3076 1 3154 3155 + 3077 1 3155 3156 + 3078 1 3156 3157 + 3079 1 3157 3158 + 3080 1 3158 3159 + 3081 1 3159 3160 + 3082 1 3161 3162 + 3083 1 3162 3163 + 3084 1 3163 3164 + 3085 1 3164 3165 + 3086 1 3165 3166 + 3087 1 3166 3167 + 3088 1 3167 3168 + 3089 1 3168 3169 + 3090 1 3169 3170 + 3091 1 3170 3171 + 3092 1 3171 3172 + 3093 1 3172 3173 + 3094 1 3173 3174 + 3095 1 3174 3175 + 3096 1 3175 3176 + 3097 1 3176 3177 + 3098 1 3177 3178 + 3099 1 3178 3179 + 3100 1 3179 3180 + 3101 1 3180 3181 + 3102 1 3181 3182 + 3103 1 3182 3183 + 3104 1 3183 3184 + 3105 1 3184 3185 + 3106 1 3185 3186 + 3107 1 3186 3187 + 3108 1 3187 3188 + 3109 1 3188 3189 + 3110 1 3189 3190 + 3111 1 3190 3191 + 3112 1 3191 3192 + 3113 1 3192 3193 + 3114 1 3193 3194 + 3115 1 3194 3195 + 3116 1 3195 3196 + 3117 1 3196 3197 + 3118 1 3197 3198 + 3119 1 3198 3199 + 3120 1 3199 3200 + 3121 1 3201 3202 + 3122 1 3202 3203 + 3123 1 3203 3204 + 3124 1 3204 3205 + 3125 1 3205 3206 + 3126 1 3206 3207 + 3127 1 3207 3208 + 3128 1 3208 3209 + 3129 1 3209 3210 + 3130 1 3210 3211 + 3131 1 3211 3212 + 3132 1 3212 3213 + 3133 1 3213 3214 + 3134 1 3214 3215 + 3135 1 3215 3216 + 3136 1 3216 3217 + 3137 1 3217 3218 + 3138 1 3218 3219 + 3139 1 3219 3220 + 3140 1 3220 3221 + 3141 1 3221 3222 + 3142 1 3222 3223 + 3143 1 3223 3224 + 3144 1 3224 3225 + 3145 1 3225 3226 + 3146 1 3226 3227 + 3147 1 3227 3228 + 3148 1 3228 3229 + 3149 1 3229 3230 + 3150 1 3230 3231 + 3151 1 3231 3232 + 3152 1 3232 3233 + 3153 1 3233 3234 + 3154 1 3234 3235 + 3155 1 3235 3236 + 3156 1 3236 3237 + 3157 1 3237 3238 + 3158 1 3238 3239 + 3159 1 3239 3240 + 3160 1 3241 3242 + 3161 1 3242 3243 + 3162 1 3243 3244 + 3163 1 3244 3245 + 3164 1 3245 3246 + 3165 1 3246 3247 + 3166 1 3247 3248 + 3167 1 3248 3249 + 3168 1 3249 3250 + 3169 1 3250 3251 + 3170 1 3251 3252 + 3171 1 3252 3253 + 3172 1 3253 3254 + 3173 1 3254 3255 + 3174 1 3255 3256 + 3175 1 3256 3257 + 3176 1 3257 3258 + 3177 1 3258 3259 + 3178 1 3259 3260 + 3179 1 3260 3261 + 3180 1 3261 3262 + 3181 1 3262 3263 + 3182 1 3263 3264 + 3183 1 3264 3265 + 3184 1 3265 3266 + 3185 1 3266 3267 + 3186 1 3267 3268 + 3187 1 3268 3269 + 3188 1 3269 3270 + 3189 1 3270 3271 + 3190 1 3271 3272 + 3191 1 3272 3273 + 3192 1 3273 3274 + 3193 1 3274 3275 + 3194 1 3275 3276 + 3195 1 3276 3277 + 3196 1 3277 3278 + 3197 1 3278 3279 + 3198 1 3279 3280 + 3199 1 3281 3282 + 3200 1 3282 3283 + 3201 1 3283 3284 + 3202 1 3284 3285 + 3203 1 3285 3286 + 3204 1 3286 3287 + 3205 1 3287 3288 + 3206 1 3288 3289 + 3207 1 3289 3290 + 3208 1 3290 3291 + 3209 1 3291 3292 + 3210 1 3292 3293 + 3211 1 3293 3294 + 3212 1 3294 3295 + 3213 1 3295 3296 + 3214 1 3296 3297 + 3215 1 3297 3298 + 3216 1 3298 3299 + 3217 1 3299 3300 + 3218 1 3300 3301 + 3219 1 3301 3302 + 3220 1 3302 3303 + 3221 1 3303 3304 + 3222 1 3304 3305 + 3223 1 3305 3306 + 3224 1 3306 3307 + 3225 1 3307 3308 + 3226 1 3308 3309 + 3227 1 3309 3310 + 3228 1 3310 3311 + 3229 1 3311 3312 + 3230 1 3312 3313 + 3231 1 3313 3314 + 3232 1 3314 3315 + 3233 1 3315 3316 + 3234 1 3316 3317 + 3235 1 3317 3318 + 3236 1 3318 3319 + 3237 1 3319 3320 + 3238 1 3321 3322 + 3239 1 3322 3323 + 3240 1 3323 3324 + 3241 1 3324 3325 + 3242 1 3325 3326 + 3243 1 3326 3327 + 3244 1 3327 3328 + 3245 1 3328 3329 + 3246 1 3329 3330 + 3247 1 3330 3331 + 3248 1 3331 3332 + 3249 1 3332 3333 + 3250 1 3333 3334 + 3251 1 3334 3335 + 3252 1 3335 3336 + 3253 1 3336 3337 + 3254 1 3337 3338 + 3255 1 3338 3339 + 3256 1 3339 3340 + 3257 1 3340 3341 + 3258 1 3341 3342 + 3259 1 3342 3343 + 3260 1 3343 3344 + 3261 1 3344 3345 + 3262 1 3345 3346 + 3263 1 3346 3347 + 3264 1 3347 3348 + 3265 1 3348 3349 + 3266 1 3349 3350 + 3267 1 3350 3351 + 3268 1 3351 3352 + 3269 1 3352 3353 + 3270 1 3353 3354 + 3271 1 3354 3355 + 3272 1 3355 3356 + 3273 1 3356 3357 + 3274 1 3357 3358 + 3275 1 3358 3359 + 3276 1 3359 3360 + 3277 1 3361 3362 + 3278 1 3362 3363 + 3279 1 3363 3364 + 3280 1 3364 3365 + 3281 1 3365 3366 + 3282 1 3366 3367 + 3283 1 3367 3368 + 3284 1 3368 3369 + 3285 1 3369 3370 + 3286 1 3370 3371 + 3287 1 3371 3372 + 3288 1 3372 3373 + 3289 1 3373 3374 + 3290 1 3374 3375 + 3291 1 3375 3376 + 3292 1 3376 3377 + 3293 1 3377 3378 + 3294 1 3378 3379 + 3295 1 3379 3380 + 3296 1 3380 3381 + 3297 1 3381 3382 + 3298 1 3382 3383 + 3299 1 3383 3384 + 3300 1 3384 3385 + 3301 1 3385 3386 + 3302 1 3386 3387 + 3303 1 3387 3388 + 3304 1 3388 3389 + 3305 1 3389 3390 + 3306 1 3390 3391 + 3307 1 3391 3392 + 3308 1 3392 3393 + 3309 1 3393 3394 + 3310 1 3394 3395 + 3311 1 3395 3396 + 3312 1 3396 3397 + 3313 1 3397 3398 + 3314 1 3398 3399 + 3315 1 3399 3400 + 3316 1 3401 3402 + 3317 1 3402 3403 + 3318 1 3403 3404 + 3319 1 3404 3405 + 3320 1 3405 3406 + 3321 1 3406 3407 + 3322 1 3407 3408 + 3323 1 3408 3409 + 3324 1 3409 3410 + 3325 1 3410 3411 + 3326 1 3411 3412 + 3327 1 3412 3413 + 3328 1 3413 3414 + 3329 1 3414 3415 + 3330 1 3415 3416 + 3331 1 3416 3417 + 3332 1 3417 3418 + 3333 1 3418 3419 + 3334 1 3419 3420 + 3335 1 3420 3421 + 3336 1 3421 3422 + 3337 1 3422 3423 + 3338 1 3423 3424 + 3339 1 3424 3425 + 3340 1 3425 3426 + 3341 1 3426 3427 + 3342 1 3427 3428 + 3343 1 3428 3429 + 3344 1 3429 3430 + 3345 1 3430 3431 + 3346 1 3431 3432 + 3347 1 3432 3433 + 3348 1 3433 3434 + 3349 1 3434 3435 + 3350 1 3435 3436 + 3351 1 3436 3437 + 3352 1 3437 3438 + 3353 1 3438 3439 + 3354 1 3439 3440 + 3355 1 3441 3442 + 3356 1 3442 3443 + 3357 1 3443 3444 + 3358 1 3444 3445 + 3359 1 3445 3446 + 3360 1 3446 3447 + 3361 1 3447 3448 + 3362 1 3448 3449 + 3363 1 3449 3450 + 3364 1 3450 3451 + 3365 1 3451 3452 + 3366 1 3452 3453 + 3367 1 3453 3454 + 3368 1 3454 3455 + 3369 1 3455 3456 + 3370 1 3456 3457 + 3371 1 3457 3458 + 3372 1 3458 3459 + 3373 1 3459 3460 + 3374 1 3460 3461 + 3375 1 3461 3462 + 3376 1 3462 3463 + 3377 1 3463 3464 + 3378 1 3464 3465 + 3379 1 3465 3466 + 3380 1 3466 3467 + 3381 1 3467 3468 + 3382 1 3468 3469 + 3383 1 3469 3470 + 3384 1 3470 3471 + 3385 1 3471 3472 + 3386 1 3472 3473 + 3387 1 3473 3474 + 3388 1 3474 3475 + 3389 1 3475 3476 + 3390 1 3476 3477 + 3391 1 3477 3478 + 3392 1 3478 3479 + 3393 1 3479 3480 + 3394 1 3481 3482 + 3395 1 3482 3483 + 3396 1 3483 3484 + 3397 1 3484 3485 + 3398 1 3485 3486 + 3399 1 3486 3487 + 3400 1 3487 3488 + 3401 1 3488 3489 + 3402 1 3489 3490 + 3403 1 3490 3491 + 3404 1 3491 3492 + 3405 1 3492 3493 + 3406 1 3493 3494 + 3407 1 3494 3495 + 3408 1 3495 3496 + 3409 1 3496 3497 + 3410 1 3497 3498 + 3411 1 3498 3499 + 3412 1 3499 3500 + 3413 1 3500 3501 + 3414 1 3501 3502 + 3415 1 3502 3503 + 3416 1 3503 3504 + 3417 1 3504 3505 + 3418 1 3505 3506 + 3419 1 3506 3507 + 3420 1 3507 3508 + 3421 1 3508 3509 + 3422 1 3509 3510 + 3423 1 3510 3511 + 3424 1 3511 3512 + 3425 1 3512 3513 + 3426 1 3513 3514 + 3427 1 3514 3515 + 3428 1 3515 3516 + 3429 1 3516 3517 + 3430 1 3517 3518 + 3431 1 3518 3519 + 3432 1 3519 3520 + 3433 1 3521 3522 + 3434 1 3522 3523 + 3435 1 3523 3524 + 3436 1 3524 3525 + 3437 1 3525 3526 + 3438 1 3526 3527 + 3439 1 3527 3528 + 3440 1 3528 3529 + 3441 1 3529 3530 + 3442 1 3530 3531 + 3443 1 3531 3532 + 3444 1 3532 3533 + 3445 1 3533 3534 + 3446 1 3534 3535 + 3447 1 3535 3536 + 3448 1 3536 3537 + 3449 1 3537 3538 + 3450 1 3538 3539 + 3451 1 3539 3540 + 3452 1 3540 3541 + 3453 1 3541 3542 + 3454 1 3542 3543 + 3455 1 3543 3544 + 3456 1 3544 3545 + 3457 1 3545 3546 + 3458 1 3546 3547 + 3459 1 3547 3548 + 3460 1 3548 3549 + 3461 1 3549 3550 + 3462 1 3550 3551 + 3463 1 3551 3552 + 3464 1 3552 3553 + 3465 1 3553 3554 + 3466 1 3554 3555 + 3467 1 3555 3556 + 3468 1 3556 3557 + 3469 1 3557 3558 + 3470 1 3558 3559 + 3471 1 3559 3560 + 3472 1 3561 3562 + 3473 1 3562 3563 + 3474 1 3563 3564 + 3475 1 3564 3565 + 3476 1 3565 3566 + 3477 1 3566 3567 + 3478 1 3567 3568 + 3479 1 3568 3569 + 3480 1 3569 3570 + 3481 1 3570 3571 + 3482 1 3571 3572 + 3483 1 3572 3573 + 3484 1 3573 3574 + 3485 1 3574 3575 + 3486 1 3575 3576 + 3487 1 3576 3577 + 3488 1 3577 3578 + 3489 1 3578 3579 + 3490 1 3579 3580 + 3491 1 3580 3581 + 3492 1 3581 3582 + 3493 1 3582 3583 + 3494 1 3583 3584 + 3495 1 3584 3585 + 3496 1 3585 3586 + 3497 1 3586 3587 + 3498 1 3587 3588 + 3499 1 3588 3589 + 3500 1 3589 3590 + 3501 1 3590 3591 + 3502 1 3591 3592 + 3503 1 3592 3593 + 3504 1 3593 3594 + 3505 1 3594 3595 + 3506 1 3595 3596 + 3507 1 3596 3597 + 3508 1 3597 3598 + 3509 1 3598 3599 + 3510 1 3599 3600 + 3511 1 3601 3602 + 3512 1 3602 3603 + 3513 1 3603 3604 + 3514 1 3604 3605 + 3515 1 3605 3606 + 3516 1 3606 3607 + 3517 1 3607 3608 + 3518 1 3608 3609 + 3519 1 3609 3610 + 3520 1 3610 3611 + 3521 1 3611 3612 + 3522 1 3612 3613 + 3523 1 3613 3614 + 3524 1 3614 3615 + 3525 1 3615 3616 + 3526 1 3616 3617 + 3527 1 3617 3618 + 3528 1 3618 3619 + 3529 1 3619 3620 + 3530 1 3620 3621 + 3531 1 3621 3622 + 3532 1 3622 3623 + 3533 1 3623 3624 + 3534 1 3624 3625 + 3535 1 3625 3626 + 3536 1 3626 3627 + 3537 1 3627 3628 + 3538 1 3628 3629 + 3539 1 3629 3630 + 3540 1 3630 3631 + 3541 1 3631 3632 + 3542 1 3632 3633 + 3543 1 3633 3634 + 3544 1 3634 3635 + 3545 1 3635 3636 + 3546 1 3636 3637 + 3547 1 3637 3638 + 3548 1 3638 3639 + 3549 1 3639 3640 + 3550 1 3641 3642 + 3551 1 3642 3643 + 3552 1 3643 3644 + 3553 1 3644 3645 + 3554 1 3645 3646 + 3555 1 3646 3647 + 3556 1 3647 3648 + 3557 1 3648 3649 + 3558 1 3649 3650 + 3559 1 3650 3651 + 3560 1 3651 3652 + 3561 1 3652 3653 + 3562 1 3653 3654 + 3563 1 3654 3655 + 3564 1 3655 3656 + 3565 1 3656 3657 + 3566 1 3657 3658 + 3567 1 3658 3659 + 3568 1 3659 3660 + 3569 1 3660 3661 + 3570 1 3661 3662 + 3571 1 3662 3663 + 3572 1 3663 3664 + 3573 1 3664 3665 + 3574 1 3665 3666 + 3575 1 3666 3667 + 3576 1 3667 3668 + 3577 1 3668 3669 + 3578 1 3669 3670 + 3579 1 3670 3671 + 3580 1 3671 3672 + 3581 1 3672 3673 + 3582 1 3673 3674 + 3583 1 3674 3675 + 3584 1 3675 3676 + 3585 1 3676 3677 + 3586 1 3677 3678 + 3587 1 3678 3679 + 3588 1 3679 3680 + 3589 1 3681 3682 + 3590 1 3682 3683 + 3591 1 3683 3684 + 3592 1 3684 3685 + 3593 1 3685 3686 + 3594 1 3686 3687 + 3595 1 3687 3688 + 3596 1 3688 3689 + 3597 1 3689 3690 + 3598 1 3690 3691 + 3599 1 3691 3692 + 3600 1 3692 3693 + 3601 1 3693 3694 + 3602 1 3694 3695 + 3603 1 3695 3696 + 3604 1 3696 3697 + 3605 1 3697 3698 + 3606 1 3698 3699 + 3607 1 3699 3700 + 3608 1 3700 3701 + 3609 1 3701 3702 + 3610 1 3702 3703 + 3611 1 3703 3704 + 3612 1 3704 3705 + 3613 1 3705 3706 + 3614 1 3706 3707 + 3615 1 3707 3708 + 3616 1 3708 3709 + 3617 1 3709 3710 + 3618 1 3710 3711 + 3619 1 3711 3712 + 3620 1 3712 3713 + 3621 1 3713 3714 + 3622 1 3714 3715 + 3623 1 3715 3716 + 3624 1 3716 3717 + 3625 1 3717 3718 + 3626 1 3718 3719 + 3627 1 3719 3720 + 3628 1 3721 3722 + 3629 1 3722 3723 + 3630 1 3723 3724 + 3631 1 3724 3725 + 3632 1 3725 3726 + 3633 1 3726 3727 + 3634 1 3727 3728 + 3635 1 3728 3729 + 3636 1 3729 3730 + 3637 1 3730 3731 + 3638 1 3731 3732 + 3639 1 3732 3733 + 3640 1 3733 3734 + 3641 1 3734 3735 + 3642 1 3735 3736 + 3643 1 3736 3737 + 3644 1 3737 3738 + 3645 1 3738 3739 + 3646 1 3739 3740 + 3647 1 3740 3741 + 3648 1 3741 3742 + 3649 1 3742 3743 + 3650 1 3743 3744 + 3651 1 3744 3745 + 3652 1 3745 3746 + 3653 1 3746 3747 + 3654 1 3747 3748 + 3655 1 3748 3749 + 3656 1 3749 3750 + 3657 1 3750 3751 + 3658 1 3751 3752 + 3659 1 3752 3753 + 3660 1 3753 3754 + 3661 1 3754 3755 + 3662 1 3755 3756 + 3663 1 3756 3757 + 3664 1 3757 3758 + 3665 1 3758 3759 + 3666 1 3759 3760 + 3667 1 3761 3762 + 3668 1 3762 3763 + 3669 1 3763 3764 + 3670 1 3764 3765 + 3671 1 3765 3766 + 3672 1 3766 3767 + 3673 1 3767 3768 + 3674 1 3768 3769 + 3675 1 3769 3770 + 3676 1 3770 3771 + 3677 1 3771 3772 + 3678 1 3772 3773 + 3679 1 3773 3774 + 3680 1 3774 3775 + 3681 1 3775 3776 + 3682 1 3776 3777 + 3683 1 3777 3778 + 3684 1 3778 3779 + 3685 1 3779 3780 + 3686 1 3780 3781 + 3687 1 3781 3782 + 3688 1 3782 3783 + 3689 1 3783 3784 + 3690 1 3784 3785 + 3691 1 3785 3786 + 3692 1 3786 3787 + 3693 1 3787 3788 + 3694 1 3788 3789 + 3695 1 3789 3790 + 3696 1 3790 3791 + 3697 1 3791 3792 + 3698 1 3792 3793 + 3699 1 3793 3794 + 3700 1 3794 3795 + 3701 1 3795 3796 + 3702 1 3796 3797 + 3703 1 3797 3798 + 3704 1 3798 3799 + 3705 1 3799 3800 + 3706 1 3801 3802 + 3707 1 3802 3803 + 3708 1 3803 3804 + 3709 1 3804 3805 + 3710 1 3805 3806 + 3711 1 3806 3807 + 3712 1 3807 3808 + 3713 1 3808 3809 + 3714 1 3809 3810 + 3715 1 3810 3811 + 3716 1 3811 3812 + 3717 1 3812 3813 + 3718 1 3813 3814 + 3719 1 3814 3815 + 3720 1 3815 3816 + 3721 1 3816 3817 + 3722 1 3817 3818 + 3723 1 3818 3819 + 3724 1 3819 3820 + 3725 1 3820 3821 + 3726 1 3821 3822 + 3727 1 3822 3823 + 3728 1 3823 3824 + 3729 1 3824 3825 + 3730 1 3825 3826 + 3731 1 3826 3827 + 3732 1 3827 3828 + 3733 1 3828 3829 + 3734 1 3829 3830 + 3735 1 3830 3831 + 3736 1 3831 3832 + 3737 1 3832 3833 + 3738 1 3833 3834 + 3739 1 3834 3835 + 3740 1 3835 3836 + 3741 1 3836 3837 + 3742 1 3837 3838 + 3743 1 3838 3839 + 3744 1 3839 3840 + 3745 1 3841 3842 + 3746 1 3842 3843 + 3747 1 3843 3844 + 3748 1 3844 3845 + 3749 1 3845 3846 + 3750 1 3846 3847 + 3751 1 3847 3848 + 3752 1 3848 3849 + 3753 1 3849 3850 + 3754 1 3850 3851 + 3755 1 3851 3852 + 3756 1 3852 3853 + 3757 1 3853 3854 + 3758 1 3854 3855 + 3759 1 3855 3856 + 3760 1 3856 3857 + 3761 1 3857 3858 + 3762 1 3858 3859 + 3763 1 3859 3860 + 3764 1 3860 3861 + 3765 1 3861 3862 + 3766 1 3862 3863 + 3767 1 3863 3864 + 3768 1 3864 3865 + 3769 1 3865 3866 + 3770 1 3866 3867 + 3771 1 3867 3868 + 3772 1 3868 3869 + 3773 1 3869 3870 + 3774 1 3870 3871 + 3775 1 3871 3872 + 3776 1 3872 3873 + 3777 1 3873 3874 + 3778 1 3874 3875 + 3779 1 3875 3876 + 3780 1 3876 3877 + 3781 1 3877 3878 + 3782 1 3878 3879 + 3783 1 3879 3880 + 3784 1 3881 3882 + 3785 1 3882 3883 + 3786 1 3883 3884 + 3787 1 3884 3885 + 3788 1 3885 3886 + 3789 1 3886 3887 + 3790 1 3887 3888 + 3791 1 3888 3889 + 3792 1 3889 3890 + 3793 1 3890 3891 + 3794 1 3891 3892 + 3795 1 3892 3893 + 3796 1 3893 3894 + 3797 1 3894 3895 + 3798 1 3895 3896 + 3799 1 3896 3897 + 3800 1 3897 3898 + 3801 1 3898 3899 + 3802 1 3899 3900 + 3803 1 3900 3901 + 3804 1 3901 3902 + 3805 1 3902 3903 + 3806 1 3903 3904 + 3807 1 3904 3905 + 3808 1 3905 3906 + 3809 1 3906 3907 + 3810 1 3907 3908 + 3811 1 3908 3909 + 3812 1 3909 3910 + 3813 1 3910 3911 + 3814 1 3911 3912 + 3815 1 3912 3913 + 3816 1 3913 3914 + 3817 1 3914 3915 + 3818 1 3915 3916 + 3819 1 3916 3917 + 3820 1 3917 3918 + 3821 1 3918 3919 + 3822 1 3919 3920 + 3823 1 3921 3922 + 3824 1 3922 3923 + 3825 1 3923 3924 + 3826 1 3924 3925 + 3827 1 3925 3926 + 3828 1 3926 3927 + 3829 1 3927 3928 + 3830 1 3928 3929 + 3831 1 3929 3930 + 3832 1 3930 3931 + 3833 1 3931 3932 + 3834 1 3932 3933 + 3835 1 3933 3934 + 3836 1 3934 3935 + 3837 1 3935 3936 + 3838 1 3936 3937 + 3839 1 3937 3938 + 3840 1 3938 3939 + 3841 1 3939 3940 + 3842 1 3940 3941 + 3843 1 3941 3942 + 3844 1 3942 3943 + 3845 1 3943 3944 + 3846 1 3944 3945 + 3847 1 3945 3946 + 3848 1 3946 3947 + 3849 1 3947 3948 + 3850 1 3948 3949 + 3851 1 3949 3950 + 3852 1 3950 3951 + 3853 1 3951 3952 + 3854 1 3952 3953 + 3855 1 3953 3954 + 3856 1 3954 3955 + 3857 1 3955 3956 + 3858 1 3956 3957 + 3859 1 3957 3958 + 3860 1 3958 3959 + 3861 1 3959 3960 + 3862 1 3961 3962 + 3863 1 3962 3963 + 3864 1 3963 3964 + 3865 1 3964 3965 + 3866 1 3965 3966 + 3867 1 3966 3967 + 3868 1 3967 3968 + 3869 1 3968 3969 + 3870 1 3969 3970 + 3871 1 3970 3971 + 3872 1 3971 3972 + 3873 1 3972 3973 + 3874 1 3973 3974 + 3875 1 3974 3975 + 3876 1 3975 3976 + 3877 1 3976 3977 + 3878 1 3977 3978 + 3879 1 3978 3979 + 3880 1 3979 3980 + 3881 1 3980 3981 + 3882 1 3981 3982 + 3883 1 3982 3983 + 3884 1 3983 3984 + 3885 1 3984 3985 + 3886 1 3985 3986 + 3887 1 3986 3987 + 3888 1 3987 3988 + 3889 1 3988 3989 + 3890 1 3989 3990 + 3891 1 3990 3991 + 3892 1 3991 3992 + 3893 1 3992 3993 + 3894 1 3993 3994 + 3895 1 3994 3995 + 3896 1 3995 3996 + 3897 1 3996 3997 + 3898 1 3997 3998 + 3899 1 3998 3999 + 3900 1 3999 4000 + +Angles + + 1 1 1 2 3 + 2 1 2 3 4 + 3 1 3 4 5 + 4 1 4 5 6 + 5 1 5 6 7 + 6 1 6 7 8 + 7 1 7 8 9 + 8 1 8 9 10 + 9 1 9 10 11 + 10 1 10 11 12 + 11 1 11 12 13 + 12 1 12 13 14 + 13 1 13 14 15 + 14 1 14 15 16 + 15 1 15 16 17 + 16 1 16 17 18 + 17 1 17 18 19 + 18 1 18 19 20 + 19 1 19 20 21 + 20 1 20 21 22 + 21 1 21 22 23 + 22 1 22 23 24 + 23 1 23 24 25 + 24 1 24 25 26 + 25 1 25 26 27 + 26 1 26 27 28 + 27 1 27 28 29 + 28 1 28 29 30 + 29 1 29 30 31 + 30 1 30 31 32 + 31 1 31 32 33 + 32 1 32 33 34 + 33 1 33 34 35 + 34 1 34 35 36 + 35 1 35 36 37 + 36 1 36 37 38 + 37 1 37 38 39 + 38 1 38 39 40 + 39 1 41 42 43 + 40 1 42 43 44 + 41 1 43 44 45 + 42 1 44 45 46 + 43 1 45 46 47 + 44 1 46 47 48 + 45 1 47 48 49 + 46 1 48 49 50 + 47 1 49 50 51 + 48 1 50 51 52 + 49 1 51 52 53 + 50 1 52 53 54 + 51 1 53 54 55 + 52 1 54 55 56 + 53 1 55 56 57 + 54 1 56 57 58 + 55 1 57 58 59 + 56 1 58 59 60 + 57 1 59 60 61 + 58 1 60 61 62 + 59 1 61 62 63 + 60 1 62 63 64 + 61 1 63 64 65 + 62 1 64 65 66 + 63 1 65 66 67 + 64 1 66 67 68 + 65 1 67 68 69 + 66 1 68 69 70 + 67 1 69 70 71 + 68 1 70 71 72 + 69 1 71 72 73 + 70 1 72 73 74 + 71 1 73 74 75 + 72 1 74 75 76 + 73 1 75 76 77 + 74 1 76 77 78 + 75 1 77 78 79 + 76 1 78 79 80 + 77 1 81 82 83 + 78 1 82 83 84 + 79 1 83 84 85 + 80 1 84 85 86 + 81 1 85 86 87 + 82 1 86 87 88 + 83 1 87 88 89 + 84 1 88 89 90 + 85 1 89 90 91 + 86 1 90 91 92 + 87 1 91 92 93 + 88 1 92 93 94 + 89 1 93 94 95 + 90 1 94 95 96 + 91 1 95 96 97 + 92 1 96 97 98 + 93 1 97 98 99 + 94 1 98 99 100 + 95 1 99 100 101 + 96 1 100 101 102 + 97 1 101 102 103 + 98 1 102 103 104 + 99 1 103 104 105 + 100 1 104 105 106 + 101 1 105 106 107 + 102 1 106 107 108 + 103 1 107 108 109 + 104 1 108 109 110 + 105 1 109 110 111 + 106 1 110 111 112 + 107 1 111 112 113 + 108 1 112 113 114 + 109 1 113 114 115 + 110 1 114 115 116 + 111 1 115 116 117 + 112 1 116 117 118 + 113 1 117 118 119 + 114 1 118 119 120 + 115 1 121 122 123 + 116 1 122 123 124 + 117 1 123 124 125 + 118 1 124 125 126 + 119 1 125 126 127 + 120 1 126 127 128 + 121 1 127 128 129 + 122 1 128 129 130 + 123 1 129 130 131 + 124 1 130 131 132 + 125 1 131 132 133 + 126 1 132 133 134 + 127 1 133 134 135 + 128 1 134 135 136 + 129 1 135 136 137 + 130 1 136 137 138 + 131 1 137 138 139 + 132 1 138 139 140 + 133 1 139 140 141 + 134 1 140 141 142 + 135 1 141 142 143 + 136 1 142 143 144 + 137 1 143 144 145 + 138 1 144 145 146 + 139 1 145 146 147 + 140 1 146 147 148 + 141 1 147 148 149 + 142 1 148 149 150 + 143 1 149 150 151 + 144 1 150 151 152 + 145 1 151 152 153 + 146 1 152 153 154 + 147 1 153 154 155 + 148 1 154 155 156 + 149 1 155 156 157 + 150 1 156 157 158 + 151 1 157 158 159 + 152 1 158 159 160 + 153 1 161 162 163 + 154 1 162 163 164 + 155 1 163 164 165 + 156 1 164 165 166 + 157 1 165 166 167 + 158 1 166 167 168 + 159 1 167 168 169 + 160 1 168 169 170 + 161 1 169 170 171 + 162 1 170 171 172 + 163 1 171 172 173 + 164 1 172 173 174 + 165 1 173 174 175 + 166 1 174 175 176 + 167 1 175 176 177 + 168 1 176 177 178 + 169 1 177 178 179 + 170 1 178 179 180 + 171 1 179 180 181 + 172 1 180 181 182 + 173 1 181 182 183 + 174 1 182 183 184 + 175 1 183 184 185 + 176 1 184 185 186 + 177 1 185 186 187 + 178 1 186 187 188 + 179 1 187 188 189 + 180 1 188 189 190 + 181 1 189 190 191 + 182 1 190 191 192 + 183 1 191 192 193 + 184 1 192 193 194 + 185 1 193 194 195 + 186 1 194 195 196 + 187 1 195 196 197 + 188 1 196 197 198 + 189 1 197 198 199 + 190 1 198 199 200 + 191 1 201 202 203 + 192 1 202 203 204 + 193 1 203 204 205 + 194 1 204 205 206 + 195 1 205 206 207 + 196 1 206 207 208 + 197 1 207 208 209 + 198 1 208 209 210 + 199 1 209 210 211 + 200 1 210 211 212 + 201 1 211 212 213 + 202 1 212 213 214 + 203 1 213 214 215 + 204 1 214 215 216 + 205 1 215 216 217 + 206 1 216 217 218 + 207 1 217 218 219 + 208 1 218 219 220 + 209 1 219 220 221 + 210 1 220 221 222 + 211 1 221 222 223 + 212 1 222 223 224 + 213 1 223 224 225 + 214 1 224 225 226 + 215 1 225 226 227 + 216 1 226 227 228 + 217 1 227 228 229 + 218 1 228 229 230 + 219 1 229 230 231 + 220 1 230 231 232 + 221 1 231 232 233 + 222 1 232 233 234 + 223 1 233 234 235 + 224 1 234 235 236 + 225 1 235 236 237 + 226 1 236 237 238 + 227 1 237 238 239 + 228 1 238 239 240 + 229 1 241 242 243 + 230 1 242 243 244 + 231 1 243 244 245 + 232 1 244 245 246 + 233 1 245 246 247 + 234 1 246 247 248 + 235 1 247 248 249 + 236 1 248 249 250 + 237 1 249 250 251 + 238 1 250 251 252 + 239 1 251 252 253 + 240 1 252 253 254 + 241 1 253 254 255 + 242 1 254 255 256 + 243 1 255 256 257 + 244 1 256 257 258 + 245 1 257 258 259 + 246 1 258 259 260 + 247 1 259 260 261 + 248 1 260 261 262 + 249 1 261 262 263 + 250 1 262 263 264 + 251 1 263 264 265 + 252 1 264 265 266 + 253 1 265 266 267 + 254 1 266 267 268 + 255 1 267 268 269 + 256 1 268 269 270 + 257 1 269 270 271 + 258 1 270 271 272 + 259 1 271 272 273 + 260 1 272 273 274 + 261 1 273 274 275 + 262 1 274 275 276 + 263 1 275 276 277 + 264 1 276 277 278 + 265 1 277 278 279 + 266 1 278 279 280 + 267 1 281 282 283 + 268 1 282 283 284 + 269 1 283 284 285 + 270 1 284 285 286 + 271 1 285 286 287 + 272 1 286 287 288 + 273 1 287 288 289 + 274 1 288 289 290 + 275 1 289 290 291 + 276 1 290 291 292 + 277 1 291 292 293 + 278 1 292 293 294 + 279 1 293 294 295 + 280 1 294 295 296 + 281 1 295 296 297 + 282 1 296 297 298 + 283 1 297 298 299 + 284 1 298 299 300 + 285 1 299 300 301 + 286 1 300 301 302 + 287 1 301 302 303 + 288 1 302 303 304 + 289 1 303 304 305 + 290 1 304 305 306 + 291 1 305 306 307 + 292 1 306 307 308 + 293 1 307 308 309 + 294 1 308 309 310 + 295 1 309 310 311 + 296 1 310 311 312 + 297 1 311 312 313 + 298 1 312 313 314 + 299 1 313 314 315 + 300 1 314 315 316 + 301 1 315 316 317 + 302 1 316 317 318 + 303 1 317 318 319 + 304 1 318 319 320 + 305 1 321 322 323 + 306 1 322 323 324 + 307 1 323 324 325 + 308 1 324 325 326 + 309 1 325 326 327 + 310 1 326 327 328 + 311 1 327 328 329 + 312 1 328 329 330 + 313 1 329 330 331 + 314 1 330 331 332 + 315 1 331 332 333 + 316 1 332 333 334 + 317 1 333 334 335 + 318 1 334 335 336 + 319 1 335 336 337 + 320 1 336 337 338 + 321 1 337 338 339 + 322 1 338 339 340 + 323 1 339 340 341 + 324 1 340 341 342 + 325 1 341 342 343 + 326 1 342 343 344 + 327 1 343 344 345 + 328 1 344 345 346 + 329 1 345 346 347 + 330 1 346 347 348 + 331 1 347 348 349 + 332 1 348 349 350 + 333 1 349 350 351 + 334 1 350 351 352 + 335 1 351 352 353 + 336 1 352 353 354 + 337 1 353 354 355 + 338 1 354 355 356 + 339 1 355 356 357 + 340 1 356 357 358 + 341 1 357 358 359 + 342 1 358 359 360 + 343 1 361 362 363 + 344 1 362 363 364 + 345 1 363 364 365 + 346 1 364 365 366 + 347 1 365 366 367 + 348 1 366 367 368 + 349 1 367 368 369 + 350 1 368 369 370 + 351 1 369 370 371 + 352 1 370 371 372 + 353 1 371 372 373 + 354 1 372 373 374 + 355 1 373 374 375 + 356 1 374 375 376 + 357 1 375 376 377 + 358 1 376 377 378 + 359 1 377 378 379 + 360 1 378 379 380 + 361 1 379 380 381 + 362 1 380 381 382 + 363 1 381 382 383 + 364 1 382 383 384 + 365 1 383 384 385 + 366 1 384 385 386 + 367 1 385 386 387 + 368 1 386 387 388 + 369 1 387 388 389 + 370 1 388 389 390 + 371 1 389 390 391 + 372 1 390 391 392 + 373 1 391 392 393 + 374 1 392 393 394 + 375 1 393 394 395 + 376 1 394 395 396 + 377 1 395 396 397 + 378 1 396 397 398 + 379 1 397 398 399 + 380 1 398 399 400 + 381 1 401 402 403 + 382 1 402 403 404 + 383 1 403 404 405 + 384 1 404 405 406 + 385 1 405 406 407 + 386 1 406 407 408 + 387 1 407 408 409 + 388 1 408 409 410 + 389 1 409 410 411 + 390 1 410 411 412 + 391 1 411 412 413 + 392 1 412 413 414 + 393 1 413 414 415 + 394 1 414 415 416 + 395 1 415 416 417 + 396 1 416 417 418 + 397 1 417 418 419 + 398 1 418 419 420 + 399 1 419 420 421 + 400 1 420 421 422 + 401 1 421 422 423 + 402 1 422 423 424 + 403 1 423 424 425 + 404 1 424 425 426 + 405 1 425 426 427 + 406 1 426 427 428 + 407 1 427 428 429 + 408 1 428 429 430 + 409 1 429 430 431 + 410 1 430 431 432 + 411 1 431 432 433 + 412 1 432 433 434 + 413 1 433 434 435 + 414 1 434 435 436 + 415 1 435 436 437 + 416 1 436 437 438 + 417 1 437 438 439 + 418 1 438 439 440 + 419 1 441 442 443 + 420 1 442 443 444 + 421 1 443 444 445 + 422 1 444 445 446 + 423 1 445 446 447 + 424 1 446 447 448 + 425 1 447 448 449 + 426 1 448 449 450 + 427 1 449 450 451 + 428 1 450 451 452 + 429 1 451 452 453 + 430 1 452 453 454 + 431 1 453 454 455 + 432 1 454 455 456 + 433 1 455 456 457 + 434 1 456 457 458 + 435 1 457 458 459 + 436 1 458 459 460 + 437 1 459 460 461 + 438 1 460 461 462 + 439 1 461 462 463 + 440 1 462 463 464 + 441 1 463 464 465 + 442 1 464 465 466 + 443 1 465 466 467 + 444 1 466 467 468 + 445 1 467 468 469 + 446 1 468 469 470 + 447 1 469 470 471 + 448 1 470 471 472 + 449 1 471 472 473 + 450 1 472 473 474 + 451 1 473 474 475 + 452 1 474 475 476 + 453 1 475 476 477 + 454 1 476 477 478 + 455 1 477 478 479 + 456 1 478 479 480 + 457 1 481 482 483 + 458 1 482 483 484 + 459 1 483 484 485 + 460 1 484 485 486 + 461 1 485 486 487 + 462 1 486 487 488 + 463 1 487 488 489 + 464 1 488 489 490 + 465 1 489 490 491 + 466 1 490 491 492 + 467 1 491 492 493 + 468 1 492 493 494 + 469 1 493 494 495 + 470 1 494 495 496 + 471 1 495 496 497 + 472 1 496 497 498 + 473 1 497 498 499 + 474 1 498 499 500 + 475 1 499 500 501 + 476 1 500 501 502 + 477 1 501 502 503 + 478 1 502 503 504 + 479 1 503 504 505 + 480 1 504 505 506 + 481 1 505 506 507 + 482 1 506 507 508 + 483 1 507 508 509 + 484 1 508 509 510 + 485 1 509 510 511 + 486 1 510 511 512 + 487 1 511 512 513 + 488 1 512 513 514 + 489 1 513 514 515 + 490 1 514 515 516 + 491 1 515 516 517 + 492 1 516 517 518 + 493 1 517 518 519 + 494 1 518 519 520 + 495 1 521 522 523 + 496 1 522 523 524 + 497 1 523 524 525 + 498 1 524 525 526 + 499 1 525 526 527 + 500 1 526 527 528 + 501 1 527 528 529 + 502 1 528 529 530 + 503 1 529 530 531 + 504 1 530 531 532 + 505 1 531 532 533 + 506 1 532 533 534 + 507 1 533 534 535 + 508 1 534 535 536 + 509 1 535 536 537 + 510 1 536 537 538 + 511 1 537 538 539 + 512 1 538 539 540 + 513 1 539 540 541 + 514 1 540 541 542 + 515 1 541 542 543 + 516 1 542 543 544 + 517 1 543 544 545 + 518 1 544 545 546 + 519 1 545 546 547 + 520 1 546 547 548 + 521 1 547 548 549 + 522 1 548 549 550 + 523 1 549 550 551 + 524 1 550 551 552 + 525 1 551 552 553 + 526 1 552 553 554 + 527 1 553 554 555 + 528 1 554 555 556 + 529 1 555 556 557 + 530 1 556 557 558 + 531 1 557 558 559 + 532 1 558 559 560 + 533 1 561 562 563 + 534 1 562 563 564 + 535 1 563 564 565 + 536 1 564 565 566 + 537 1 565 566 567 + 538 1 566 567 568 + 539 1 567 568 569 + 540 1 568 569 570 + 541 1 569 570 571 + 542 1 570 571 572 + 543 1 571 572 573 + 544 1 572 573 574 + 545 1 573 574 575 + 546 1 574 575 576 + 547 1 575 576 577 + 548 1 576 577 578 + 549 1 577 578 579 + 550 1 578 579 580 + 551 1 579 580 581 + 552 1 580 581 582 + 553 1 581 582 583 + 554 1 582 583 584 + 555 1 583 584 585 + 556 1 584 585 586 + 557 1 585 586 587 + 558 1 586 587 588 + 559 1 587 588 589 + 560 1 588 589 590 + 561 1 589 590 591 + 562 1 590 591 592 + 563 1 591 592 593 + 564 1 592 593 594 + 565 1 593 594 595 + 566 1 594 595 596 + 567 1 595 596 597 + 568 1 596 597 598 + 569 1 597 598 599 + 570 1 598 599 600 + 571 1 601 602 603 + 572 1 602 603 604 + 573 1 603 604 605 + 574 1 604 605 606 + 575 1 605 606 607 + 576 1 606 607 608 + 577 1 607 608 609 + 578 1 608 609 610 + 579 1 609 610 611 + 580 1 610 611 612 + 581 1 611 612 613 + 582 1 612 613 614 + 583 1 613 614 615 + 584 1 614 615 616 + 585 1 615 616 617 + 586 1 616 617 618 + 587 1 617 618 619 + 588 1 618 619 620 + 589 1 619 620 621 + 590 1 620 621 622 + 591 1 621 622 623 + 592 1 622 623 624 + 593 1 623 624 625 + 594 1 624 625 626 + 595 1 625 626 627 + 596 1 626 627 628 + 597 1 627 628 629 + 598 1 628 629 630 + 599 1 629 630 631 + 600 1 630 631 632 + 601 1 631 632 633 + 602 1 632 633 634 + 603 1 633 634 635 + 604 1 634 635 636 + 605 1 635 636 637 + 606 1 636 637 638 + 607 1 637 638 639 + 608 1 638 639 640 + 609 1 641 642 643 + 610 1 642 643 644 + 611 1 643 644 645 + 612 1 644 645 646 + 613 1 645 646 647 + 614 1 646 647 648 + 615 1 647 648 649 + 616 1 648 649 650 + 617 1 649 650 651 + 618 1 650 651 652 + 619 1 651 652 653 + 620 1 652 653 654 + 621 1 653 654 655 + 622 1 654 655 656 + 623 1 655 656 657 + 624 1 656 657 658 + 625 1 657 658 659 + 626 1 658 659 660 + 627 1 659 660 661 + 628 1 660 661 662 + 629 1 661 662 663 + 630 1 662 663 664 + 631 1 663 664 665 + 632 1 664 665 666 + 633 1 665 666 667 + 634 1 666 667 668 + 635 1 667 668 669 + 636 1 668 669 670 + 637 1 669 670 671 + 638 1 670 671 672 + 639 1 671 672 673 + 640 1 672 673 674 + 641 1 673 674 675 + 642 1 674 675 676 + 643 1 675 676 677 + 644 1 676 677 678 + 645 1 677 678 679 + 646 1 678 679 680 + 647 1 681 682 683 + 648 1 682 683 684 + 649 1 683 684 685 + 650 1 684 685 686 + 651 1 685 686 687 + 652 1 686 687 688 + 653 1 687 688 689 + 654 1 688 689 690 + 655 1 689 690 691 + 656 1 690 691 692 + 657 1 691 692 693 + 658 1 692 693 694 + 659 1 693 694 695 + 660 1 694 695 696 + 661 1 695 696 697 + 662 1 696 697 698 + 663 1 697 698 699 + 664 1 698 699 700 + 665 1 699 700 701 + 666 1 700 701 702 + 667 1 701 702 703 + 668 1 702 703 704 + 669 1 703 704 705 + 670 1 704 705 706 + 671 1 705 706 707 + 672 1 706 707 708 + 673 1 707 708 709 + 674 1 708 709 710 + 675 1 709 710 711 + 676 1 710 711 712 + 677 1 711 712 713 + 678 1 712 713 714 + 679 1 713 714 715 + 680 1 714 715 716 + 681 1 715 716 717 + 682 1 716 717 718 + 683 1 717 718 719 + 684 1 718 719 720 + 685 1 721 722 723 + 686 1 722 723 724 + 687 1 723 724 725 + 688 1 724 725 726 + 689 1 725 726 727 + 690 1 726 727 728 + 691 1 727 728 729 + 692 1 728 729 730 + 693 1 729 730 731 + 694 1 730 731 732 + 695 1 731 732 733 + 696 1 732 733 734 + 697 1 733 734 735 + 698 1 734 735 736 + 699 1 735 736 737 + 700 1 736 737 738 + 701 1 737 738 739 + 702 1 738 739 740 + 703 1 739 740 741 + 704 1 740 741 742 + 705 1 741 742 743 + 706 1 742 743 744 + 707 1 743 744 745 + 708 1 744 745 746 + 709 1 745 746 747 + 710 1 746 747 748 + 711 1 747 748 749 + 712 1 748 749 750 + 713 1 749 750 751 + 714 1 750 751 752 + 715 1 751 752 753 + 716 1 752 753 754 + 717 1 753 754 755 + 718 1 754 755 756 + 719 1 755 756 757 + 720 1 756 757 758 + 721 1 757 758 759 + 722 1 758 759 760 + 723 1 761 762 763 + 724 1 762 763 764 + 725 1 763 764 765 + 726 1 764 765 766 + 727 1 765 766 767 + 728 1 766 767 768 + 729 1 767 768 769 + 730 1 768 769 770 + 731 1 769 770 771 + 732 1 770 771 772 + 733 1 771 772 773 + 734 1 772 773 774 + 735 1 773 774 775 + 736 1 774 775 776 + 737 1 775 776 777 + 738 1 776 777 778 + 739 1 777 778 779 + 740 1 778 779 780 + 741 1 779 780 781 + 742 1 780 781 782 + 743 1 781 782 783 + 744 1 782 783 784 + 745 1 783 784 785 + 746 1 784 785 786 + 747 1 785 786 787 + 748 1 786 787 788 + 749 1 787 788 789 + 750 1 788 789 790 + 751 1 789 790 791 + 752 1 790 791 792 + 753 1 791 792 793 + 754 1 792 793 794 + 755 1 793 794 795 + 756 1 794 795 796 + 757 1 795 796 797 + 758 1 796 797 798 + 759 1 797 798 799 + 760 1 798 799 800 + 761 1 801 802 803 + 762 1 802 803 804 + 763 1 803 804 805 + 764 1 804 805 806 + 765 1 805 806 807 + 766 1 806 807 808 + 767 1 807 808 809 + 768 1 808 809 810 + 769 1 809 810 811 + 770 1 810 811 812 + 771 1 811 812 813 + 772 1 812 813 814 + 773 1 813 814 815 + 774 1 814 815 816 + 775 1 815 816 817 + 776 1 816 817 818 + 777 1 817 818 819 + 778 1 818 819 820 + 779 1 819 820 821 + 780 1 820 821 822 + 781 1 821 822 823 + 782 1 822 823 824 + 783 1 823 824 825 + 784 1 824 825 826 + 785 1 825 826 827 + 786 1 826 827 828 + 787 1 827 828 829 + 788 1 828 829 830 + 789 1 829 830 831 + 790 1 830 831 832 + 791 1 831 832 833 + 792 1 832 833 834 + 793 1 833 834 835 + 794 1 834 835 836 + 795 1 835 836 837 + 796 1 836 837 838 + 797 1 837 838 839 + 798 1 838 839 840 + 799 1 841 842 843 + 800 1 842 843 844 + 801 1 843 844 845 + 802 1 844 845 846 + 803 1 845 846 847 + 804 1 846 847 848 + 805 1 847 848 849 + 806 1 848 849 850 + 807 1 849 850 851 + 808 1 850 851 852 + 809 1 851 852 853 + 810 1 852 853 854 + 811 1 853 854 855 + 812 1 854 855 856 + 813 1 855 856 857 + 814 1 856 857 858 + 815 1 857 858 859 + 816 1 858 859 860 + 817 1 859 860 861 + 818 1 860 861 862 + 819 1 861 862 863 + 820 1 862 863 864 + 821 1 863 864 865 + 822 1 864 865 866 + 823 1 865 866 867 + 824 1 866 867 868 + 825 1 867 868 869 + 826 1 868 869 870 + 827 1 869 870 871 + 828 1 870 871 872 + 829 1 871 872 873 + 830 1 872 873 874 + 831 1 873 874 875 + 832 1 874 875 876 + 833 1 875 876 877 + 834 1 876 877 878 + 835 1 877 878 879 + 836 1 878 879 880 + 837 1 881 882 883 + 838 1 882 883 884 + 839 1 883 884 885 + 840 1 884 885 886 + 841 1 885 886 887 + 842 1 886 887 888 + 843 1 887 888 889 + 844 1 888 889 890 + 845 1 889 890 891 + 846 1 890 891 892 + 847 1 891 892 893 + 848 1 892 893 894 + 849 1 893 894 895 + 850 1 894 895 896 + 851 1 895 896 897 + 852 1 896 897 898 + 853 1 897 898 899 + 854 1 898 899 900 + 855 1 899 900 901 + 856 1 900 901 902 + 857 1 901 902 903 + 858 1 902 903 904 + 859 1 903 904 905 + 860 1 904 905 906 + 861 1 905 906 907 + 862 1 906 907 908 + 863 1 907 908 909 + 864 1 908 909 910 + 865 1 909 910 911 + 866 1 910 911 912 + 867 1 911 912 913 + 868 1 912 913 914 + 869 1 913 914 915 + 870 1 914 915 916 + 871 1 915 916 917 + 872 1 916 917 918 + 873 1 917 918 919 + 874 1 918 919 920 + 875 1 921 922 923 + 876 1 922 923 924 + 877 1 923 924 925 + 878 1 924 925 926 + 879 1 925 926 927 + 880 1 926 927 928 + 881 1 927 928 929 + 882 1 928 929 930 + 883 1 929 930 931 + 884 1 930 931 932 + 885 1 931 932 933 + 886 1 932 933 934 + 887 1 933 934 935 + 888 1 934 935 936 + 889 1 935 936 937 + 890 1 936 937 938 + 891 1 937 938 939 + 892 1 938 939 940 + 893 1 939 940 941 + 894 1 940 941 942 + 895 1 941 942 943 + 896 1 942 943 944 + 897 1 943 944 945 + 898 1 944 945 946 + 899 1 945 946 947 + 900 1 946 947 948 + 901 1 947 948 949 + 902 1 948 949 950 + 903 1 949 950 951 + 904 1 950 951 952 + 905 1 951 952 953 + 906 1 952 953 954 + 907 1 953 954 955 + 908 1 954 955 956 + 909 1 955 956 957 + 910 1 956 957 958 + 911 1 957 958 959 + 912 1 958 959 960 + 913 1 961 962 963 + 914 1 962 963 964 + 915 1 963 964 965 + 916 1 964 965 966 + 917 1 965 966 967 + 918 1 966 967 968 + 919 1 967 968 969 + 920 1 968 969 970 + 921 1 969 970 971 + 922 1 970 971 972 + 923 1 971 972 973 + 924 1 972 973 974 + 925 1 973 974 975 + 926 1 974 975 976 + 927 1 975 976 977 + 928 1 976 977 978 + 929 1 977 978 979 + 930 1 978 979 980 + 931 1 979 980 981 + 932 1 980 981 982 + 933 1 981 982 983 + 934 1 982 983 984 + 935 1 983 984 985 + 936 1 984 985 986 + 937 1 985 986 987 + 938 1 986 987 988 + 939 1 987 988 989 + 940 1 988 989 990 + 941 1 989 990 991 + 942 1 990 991 992 + 943 1 991 992 993 + 944 1 992 993 994 + 945 1 993 994 995 + 946 1 994 995 996 + 947 1 995 996 997 + 948 1 996 997 998 + 949 1 997 998 999 + 950 1 998 999 1000 + 951 1 1001 1002 1003 + 952 1 1002 1003 1004 + 953 1 1003 1004 1005 + 954 1 1004 1005 1006 + 955 1 1005 1006 1007 + 956 1 1006 1007 1008 + 957 1 1007 1008 1009 + 958 1 1008 1009 1010 + 959 1 1009 1010 1011 + 960 1 1010 1011 1012 + 961 1 1011 1012 1013 + 962 1 1012 1013 1014 + 963 1 1013 1014 1015 + 964 1 1014 1015 1016 + 965 1 1015 1016 1017 + 966 1 1016 1017 1018 + 967 1 1017 1018 1019 + 968 1 1018 1019 1020 + 969 1 1019 1020 1021 + 970 1 1020 1021 1022 + 971 1 1021 1022 1023 + 972 1 1022 1023 1024 + 973 1 1023 1024 1025 + 974 1 1024 1025 1026 + 975 1 1025 1026 1027 + 976 1 1026 1027 1028 + 977 1 1027 1028 1029 + 978 1 1028 1029 1030 + 979 1 1029 1030 1031 + 980 1 1030 1031 1032 + 981 1 1031 1032 1033 + 982 1 1032 1033 1034 + 983 1 1033 1034 1035 + 984 1 1034 1035 1036 + 985 1 1035 1036 1037 + 986 1 1036 1037 1038 + 987 1 1037 1038 1039 + 988 1 1038 1039 1040 + 989 1 1041 1042 1043 + 990 1 1042 1043 1044 + 991 1 1043 1044 1045 + 992 1 1044 1045 1046 + 993 1 1045 1046 1047 + 994 1 1046 1047 1048 + 995 1 1047 1048 1049 + 996 1 1048 1049 1050 + 997 1 1049 1050 1051 + 998 1 1050 1051 1052 + 999 1 1051 1052 1053 + 1000 1 1052 1053 1054 + 1001 1 1053 1054 1055 + 1002 1 1054 1055 1056 + 1003 1 1055 1056 1057 + 1004 1 1056 1057 1058 + 1005 1 1057 1058 1059 + 1006 1 1058 1059 1060 + 1007 1 1059 1060 1061 + 1008 1 1060 1061 1062 + 1009 1 1061 1062 1063 + 1010 1 1062 1063 1064 + 1011 1 1063 1064 1065 + 1012 1 1064 1065 1066 + 1013 1 1065 1066 1067 + 1014 1 1066 1067 1068 + 1015 1 1067 1068 1069 + 1016 1 1068 1069 1070 + 1017 1 1069 1070 1071 + 1018 1 1070 1071 1072 + 1019 1 1071 1072 1073 + 1020 1 1072 1073 1074 + 1021 1 1073 1074 1075 + 1022 1 1074 1075 1076 + 1023 1 1075 1076 1077 + 1024 1 1076 1077 1078 + 1025 1 1077 1078 1079 + 1026 1 1078 1079 1080 + 1027 1 1081 1082 1083 + 1028 1 1082 1083 1084 + 1029 1 1083 1084 1085 + 1030 1 1084 1085 1086 + 1031 1 1085 1086 1087 + 1032 1 1086 1087 1088 + 1033 1 1087 1088 1089 + 1034 1 1088 1089 1090 + 1035 1 1089 1090 1091 + 1036 1 1090 1091 1092 + 1037 1 1091 1092 1093 + 1038 1 1092 1093 1094 + 1039 1 1093 1094 1095 + 1040 1 1094 1095 1096 + 1041 1 1095 1096 1097 + 1042 1 1096 1097 1098 + 1043 1 1097 1098 1099 + 1044 1 1098 1099 1100 + 1045 1 1099 1100 1101 + 1046 1 1100 1101 1102 + 1047 1 1101 1102 1103 + 1048 1 1102 1103 1104 + 1049 1 1103 1104 1105 + 1050 1 1104 1105 1106 + 1051 1 1105 1106 1107 + 1052 1 1106 1107 1108 + 1053 1 1107 1108 1109 + 1054 1 1108 1109 1110 + 1055 1 1109 1110 1111 + 1056 1 1110 1111 1112 + 1057 1 1111 1112 1113 + 1058 1 1112 1113 1114 + 1059 1 1113 1114 1115 + 1060 1 1114 1115 1116 + 1061 1 1115 1116 1117 + 1062 1 1116 1117 1118 + 1063 1 1117 1118 1119 + 1064 1 1118 1119 1120 + 1065 1 1121 1122 1123 + 1066 1 1122 1123 1124 + 1067 1 1123 1124 1125 + 1068 1 1124 1125 1126 + 1069 1 1125 1126 1127 + 1070 1 1126 1127 1128 + 1071 1 1127 1128 1129 + 1072 1 1128 1129 1130 + 1073 1 1129 1130 1131 + 1074 1 1130 1131 1132 + 1075 1 1131 1132 1133 + 1076 1 1132 1133 1134 + 1077 1 1133 1134 1135 + 1078 1 1134 1135 1136 + 1079 1 1135 1136 1137 + 1080 1 1136 1137 1138 + 1081 1 1137 1138 1139 + 1082 1 1138 1139 1140 + 1083 1 1139 1140 1141 + 1084 1 1140 1141 1142 + 1085 1 1141 1142 1143 + 1086 1 1142 1143 1144 + 1087 1 1143 1144 1145 + 1088 1 1144 1145 1146 + 1089 1 1145 1146 1147 + 1090 1 1146 1147 1148 + 1091 1 1147 1148 1149 + 1092 1 1148 1149 1150 + 1093 1 1149 1150 1151 + 1094 1 1150 1151 1152 + 1095 1 1151 1152 1153 + 1096 1 1152 1153 1154 + 1097 1 1153 1154 1155 + 1098 1 1154 1155 1156 + 1099 1 1155 1156 1157 + 1100 1 1156 1157 1158 + 1101 1 1157 1158 1159 + 1102 1 1158 1159 1160 + 1103 1 1161 1162 1163 + 1104 1 1162 1163 1164 + 1105 1 1163 1164 1165 + 1106 1 1164 1165 1166 + 1107 1 1165 1166 1167 + 1108 1 1166 1167 1168 + 1109 1 1167 1168 1169 + 1110 1 1168 1169 1170 + 1111 1 1169 1170 1171 + 1112 1 1170 1171 1172 + 1113 1 1171 1172 1173 + 1114 1 1172 1173 1174 + 1115 1 1173 1174 1175 + 1116 1 1174 1175 1176 + 1117 1 1175 1176 1177 + 1118 1 1176 1177 1178 + 1119 1 1177 1178 1179 + 1120 1 1178 1179 1180 + 1121 1 1179 1180 1181 + 1122 1 1180 1181 1182 + 1123 1 1181 1182 1183 + 1124 1 1182 1183 1184 + 1125 1 1183 1184 1185 + 1126 1 1184 1185 1186 + 1127 1 1185 1186 1187 + 1128 1 1186 1187 1188 + 1129 1 1187 1188 1189 + 1130 1 1188 1189 1190 + 1131 1 1189 1190 1191 + 1132 1 1190 1191 1192 + 1133 1 1191 1192 1193 + 1134 1 1192 1193 1194 + 1135 1 1193 1194 1195 + 1136 1 1194 1195 1196 + 1137 1 1195 1196 1197 + 1138 1 1196 1197 1198 + 1139 1 1197 1198 1199 + 1140 1 1198 1199 1200 + 1141 1 1201 1202 1203 + 1142 1 1202 1203 1204 + 1143 1 1203 1204 1205 + 1144 1 1204 1205 1206 + 1145 1 1205 1206 1207 + 1146 1 1206 1207 1208 + 1147 1 1207 1208 1209 + 1148 1 1208 1209 1210 + 1149 1 1209 1210 1211 + 1150 1 1210 1211 1212 + 1151 1 1211 1212 1213 + 1152 1 1212 1213 1214 + 1153 1 1213 1214 1215 + 1154 1 1214 1215 1216 + 1155 1 1215 1216 1217 + 1156 1 1216 1217 1218 + 1157 1 1217 1218 1219 + 1158 1 1218 1219 1220 + 1159 1 1219 1220 1221 + 1160 1 1220 1221 1222 + 1161 1 1221 1222 1223 + 1162 1 1222 1223 1224 + 1163 1 1223 1224 1225 + 1164 1 1224 1225 1226 + 1165 1 1225 1226 1227 + 1166 1 1226 1227 1228 + 1167 1 1227 1228 1229 + 1168 1 1228 1229 1230 + 1169 1 1229 1230 1231 + 1170 1 1230 1231 1232 + 1171 1 1231 1232 1233 + 1172 1 1232 1233 1234 + 1173 1 1233 1234 1235 + 1174 1 1234 1235 1236 + 1175 1 1235 1236 1237 + 1176 1 1236 1237 1238 + 1177 1 1237 1238 1239 + 1178 1 1238 1239 1240 + 1179 1 1241 1242 1243 + 1180 1 1242 1243 1244 + 1181 1 1243 1244 1245 + 1182 1 1244 1245 1246 + 1183 1 1245 1246 1247 + 1184 1 1246 1247 1248 + 1185 1 1247 1248 1249 + 1186 1 1248 1249 1250 + 1187 1 1249 1250 1251 + 1188 1 1250 1251 1252 + 1189 1 1251 1252 1253 + 1190 1 1252 1253 1254 + 1191 1 1253 1254 1255 + 1192 1 1254 1255 1256 + 1193 1 1255 1256 1257 + 1194 1 1256 1257 1258 + 1195 1 1257 1258 1259 + 1196 1 1258 1259 1260 + 1197 1 1259 1260 1261 + 1198 1 1260 1261 1262 + 1199 1 1261 1262 1263 + 1200 1 1262 1263 1264 + 1201 1 1263 1264 1265 + 1202 1 1264 1265 1266 + 1203 1 1265 1266 1267 + 1204 1 1266 1267 1268 + 1205 1 1267 1268 1269 + 1206 1 1268 1269 1270 + 1207 1 1269 1270 1271 + 1208 1 1270 1271 1272 + 1209 1 1271 1272 1273 + 1210 1 1272 1273 1274 + 1211 1 1273 1274 1275 + 1212 1 1274 1275 1276 + 1213 1 1275 1276 1277 + 1214 1 1276 1277 1278 + 1215 1 1277 1278 1279 + 1216 1 1278 1279 1280 + 1217 1 1281 1282 1283 + 1218 1 1282 1283 1284 + 1219 1 1283 1284 1285 + 1220 1 1284 1285 1286 + 1221 1 1285 1286 1287 + 1222 1 1286 1287 1288 + 1223 1 1287 1288 1289 + 1224 1 1288 1289 1290 + 1225 1 1289 1290 1291 + 1226 1 1290 1291 1292 + 1227 1 1291 1292 1293 + 1228 1 1292 1293 1294 + 1229 1 1293 1294 1295 + 1230 1 1294 1295 1296 + 1231 1 1295 1296 1297 + 1232 1 1296 1297 1298 + 1233 1 1297 1298 1299 + 1234 1 1298 1299 1300 + 1235 1 1299 1300 1301 + 1236 1 1300 1301 1302 + 1237 1 1301 1302 1303 + 1238 1 1302 1303 1304 + 1239 1 1303 1304 1305 + 1240 1 1304 1305 1306 + 1241 1 1305 1306 1307 + 1242 1 1306 1307 1308 + 1243 1 1307 1308 1309 + 1244 1 1308 1309 1310 + 1245 1 1309 1310 1311 + 1246 1 1310 1311 1312 + 1247 1 1311 1312 1313 + 1248 1 1312 1313 1314 + 1249 1 1313 1314 1315 + 1250 1 1314 1315 1316 + 1251 1 1315 1316 1317 + 1252 1 1316 1317 1318 + 1253 1 1317 1318 1319 + 1254 1 1318 1319 1320 + 1255 1 1321 1322 1323 + 1256 1 1322 1323 1324 + 1257 1 1323 1324 1325 + 1258 1 1324 1325 1326 + 1259 1 1325 1326 1327 + 1260 1 1326 1327 1328 + 1261 1 1327 1328 1329 + 1262 1 1328 1329 1330 + 1263 1 1329 1330 1331 + 1264 1 1330 1331 1332 + 1265 1 1331 1332 1333 + 1266 1 1332 1333 1334 + 1267 1 1333 1334 1335 + 1268 1 1334 1335 1336 + 1269 1 1335 1336 1337 + 1270 1 1336 1337 1338 + 1271 1 1337 1338 1339 + 1272 1 1338 1339 1340 + 1273 1 1339 1340 1341 + 1274 1 1340 1341 1342 + 1275 1 1341 1342 1343 + 1276 1 1342 1343 1344 + 1277 1 1343 1344 1345 + 1278 1 1344 1345 1346 + 1279 1 1345 1346 1347 + 1280 1 1346 1347 1348 + 1281 1 1347 1348 1349 + 1282 1 1348 1349 1350 + 1283 1 1349 1350 1351 + 1284 1 1350 1351 1352 + 1285 1 1351 1352 1353 + 1286 1 1352 1353 1354 + 1287 1 1353 1354 1355 + 1288 1 1354 1355 1356 + 1289 1 1355 1356 1357 + 1290 1 1356 1357 1358 + 1291 1 1357 1358 1359 + 1292 1 1358 1359 1360 + 1293 1 1361 1362 1363 + 1294 1 1362 1363 1364 + 1295 1 1363 1364 1365 + 1296 1 1364 1365 1366 + 1297 1 1365 1366 1367 + 1298 1 1366 1367 1368 + 1299 1 1367 1368 1369 + 1300 1 1368 1369 1370 + 1301 1 1369 1370 1371 + 1302 1 1370 1371 1372 + 1303 1 1371 1372 1373 + 1304 1 1372 1373 1374 + 1305 1 1373 1374 1375 + 1306 1 1374 1375 1376 + 1307 1 1375 1376 1377 + 1308 1 1376 1377 1378 + 1309 1 1377 1378 1379 + 1310 1 1378 1379 1380 + 1311 1 1379 1380 1381 + 1312 1 1380 1381 1382 + 1313 1 1381 1382 1383 + 1314 1 1382 1383 1384 + 1315 1 1383 1384 1385 + 1316 1 1384 1385 1386 + 1317 1 1385 1386 1387 + 1318 1 1386 1387 1388 + 1319 1 1387 1388 1389 + 1320 1 1388 1389 1390 + 1321 1 1389 1390 1391 + 1322 1 1390 1391 1392 + 1323 1 1391 1392 1393 + 1324 1 1392 1393 1394 + 1325 1 1393 1394 1395 + 1326 1 1394 1395 1396 + 1327 1 1395 1396 1397 + 1328 1 1396 1397 1398 + 1329 1 1397 1398 1399 + 1330 1 1398 1399 1400 + 1331 1 1401 1402 1403 + 1332 1 1402 1403 1404 + 1333 1 1403 1404 1405 + 1334 1 1404 1405 1406 + 1335 1 1405 1406 1407 + 1336 1 1406 1407 1408 + 1337 1 1407 1408 1409 + 1338 1 1408 1409 1410 + 1339 1 1409 1410 1411 + 1340 1 1410 1411 1412 + 1341 1 1411 1412 1413 + 1342 1 1412 1413 1414 + 1343 1 1413 1414 1415 + 1344 1 1414 1415 1416 + 1345 1 1415 1416 1417 + 1346 1 1416 1417 1418 + 1347 1 1417 1418 1419 + 1348 1 1418 1419 1420 + 1349 1 1419 1420 1421 + 1350 1 1420 1421 1422 + 1351 1 1421 1422 1423 + 1352 1 1422 1423 1424 + 1353 1 1423 1424 1425 + 1354 1 1424 1425 1426 + 1355 1 1425 1426 1427 + 1356 1 1426 1427 1428 + 1357 1 1427 1428 1429 + 1358 1 1428 1429 1430 + 1359 1 1429 1430 1431 + 1360 1 1430 1431 1432 + 1361 1 1431 1432 1433 + 1362 1 1432 1433 1434 + 1363 1 1433 1434 1435 + 1364 1 1434 1435 1436 + 1365 1 1435 1436 1437 + 1366 1 1436 1437 1438 + 1367 1 1437 1438 1439 + 1368 1 1438 1439 1440 + 1369 1 1441 1442 1443 + 1370 1 1442 1443 1444 + 1371 1 1443 1444 1445 + 1372 1 1444 1445 1446 + 1373 1 1445 1446 1447 + 1374 1 1446 1447 1448 + 1375 1 1447 1448 1449 + 1376 1 1448 1449 1450 + 1377 1 1449 1450 1451 + 1378 1 1450 1451 1452 + 1379 1 1451 1452 1453 + 1380 1 1452 1453 1454 + 1381 1 1453 1454 1455 + 1382 1 1454 1455 1456 + 1383 1 1455 1456 1457 + 1384 1 1456 1457 1458 + 1385 1 1457 1458 1459 + 1386 1 1458 1459 1460 + 1387 1 1459 1460 1461 + 1388 1 1460 1461 1462 + 1389 1 1461 1462 1463 + 1390 1 1462 1463 1464 + 1391 1 1463 1464 1465 + 1392 1 1464 1465 1466 + 1393 1 1465 1466 1467 + 1394 1 1466 1467 1468 + 1395 1 1467 1468 1469 + 1396 1 1468 1469 1470 + 1397 1 1469 1470 1471 + 1398 1 1470 1471 1472 + 1399 1 1471 1472 1473 + 1400 1 1472 1473 1474 + 1401 1 1473 1474 1475 + 1402 1 1474 1475 1476 + 1403 1 1475 1476 1477 + 1404 1 1476 1477 1478 + 1405 1 1477 1478 1479 + 1406 1 1478 1479 1480 + 1407 1 1481 1482 1483 + 1408 1 1482 1483 1484 + 1409 1 1483 1484 1485 + 1410 1 1484 1485 1486 + 1411 1 1485 1486 1487 + 1412 1 1486 1487 1488 + 1413 1 1487 1488 1489 + 1414 1 1488 1489 1490 + 1415 1 1489 1490 1491 + 1416 1 1490 1491 1492 + 1417 1 1491 1492 1493 + 1418 1 1492 1493 1494 + 1419 1 1493 1494 1495 + 1420 1 1494 1495 1496 + 1421 1 1495 1496 1497 + 1422 1 1496 1497 1498 + 1423 1 1497 1498 1499 + 1424 1 1498 1499 1500 + 1425 1 1499 1500 1501 + 1426 1 1500 1501 1502 + 1427 1 1501 1502 1503 + 1428 1 1502 1503 1504 + 1429 1 1503 1504 1505 + 1430 1 1504 1505 1506 + 1431 1 1505 1506 1507 + 1432 1 1506 1507 1508 + 1433 1 1507 1508 1509 + 1434 1 1508 1509 1510 + 1435 1 1509 1510 1511 + 1436 1 1510 1511 1512 + 1437 1 1511 1512 1513 + 1438 1 1512 1513 1514 + 1439 1 1513 1514 1515 + 1440 1 1514 1515 1516 + 1441 1 1515 1516 1517 + 1442 1 1516 1517 1518 + 1443 1 1517 1518 1519 + 1444 1 1518 1519 1520 + 1445 1 1521 1522 1523 + 1446 1 1522 1523 1524 + 1447 1 1523 1524 1525 + 1448 1 1524 1525 1526 + 1449 1 1525 1526 1527 + 1450 1 1526 1527 1528 + 1451 1 1527 1528 1529 + 1452 1 1528 1529 1530 + 1453 1 1529 1530 1531 + 1454 1 1530 1531 1532 + 1455 1 1531 1532 1533 + 1456 1 1532 1533 1534 + 1457 1 1533 1534 1535 + 1458 1 1534 1535 1536 + 1459 1 1535 1536 1537 + 1460 1 1536 1537 1538 + 1461 1 1537 1538 1539 + 1462 1 1538 1539 1540 + 1463 1 1539 1540 1541 + 1464 1 1540 1541 1542 + 1465 1 1541 1542 1543 + 1466 1 1542 1543 1544 + 1467 1 1543 1544 1545 + 1468 1 1544 1545 1546 + 1469 1 1545 1546 1547 + 1470 1 1546 1547 1548 + 1471 1 1547 1548 1549 + 1472 1 1548 1549 1550 + 1473 1 1549 1550 1551 + 1474 1 1550 1551 1552 + 1475 1 1551 1552 1553 + 1476 1 1552 1553 1554 + 1477 1 1553 1554 1555 + 1478 1 1554 1555 1556 + 1479 1 1555 1556 1557 + 1480 1 1556 1557 1558 + 1481 1 1557 1558 1559 + 1482 1 1558 1559 1560 + 1483 1 1561 1562 1563 + 1484 1 1562 1563 1564 + 1485 1 1563 1564 1565 + 1486 1 1564 1565 1566 + 1487 1 1565 1566 1567 + 1488 1 1566 1567 1568 + 1489 1 1567 1568 1569 + 1490 1 1568 1569 1570 + 1491 1 1569 1570 1571 + 1492 1 1570 1571 1572 + 1493 1 1571 1572 1573 + 1494 1 1572 1573 1574 + 1495 1 1573 1574 1575 + 1496 1 1574 1575 1576 + 1497 1 1575 1576 1577 + 1498 1 1576 1577 1578 + 1499 1 1577 1578 1579 + 1500 1 1578 1579 1580 + 1501 1 1579 1580 1581 + 1502 1 1580 1581 1582 + 1503 1 1581 1582 1583 + 1504 1 1582 1583 1584 + 1505 1 1583 1584 1585 + 1506 1 1584 1585 1586 + 1507 1 1585 1586 1587 + 1508 1 1586 1587 1588 + 1509 1 1587 1588 1589 + 1510 1 1588 1589 1590 + 1511 1 1589 1590 1591 + 1512 1 1590 1591 1592 + 1513 1 1591 1592 1593 + 1514 1 1592 1593 1594 + 1515 1 1593 1594 1595 + 1516 1 1594 1595 1596 + 1517 1 1595 1596 1597 + 1518 1 1596 1597 1598 + 1519 1 1597 1598 1599 + 1520 1 1598 1599 1600 + 1521 1 1601 1602 1603 + 1522 1 1602 1603 1604 + 1523 1 1603 1604 1605 + 1524 1 1604 1605 1606 + 1525 1 1605 1606 1607 + 1526 1 1606 1607 1608 + 1527 1 1607 1608 1609 + 1528 1 1608 1609 1610 + 1529 1 1609 1610 1611 + 1530 1 1610 1611 1612 + 1531 1 1611 1612 1613 + 1532 1 1612 1613 1614 + 1533 1 1613 1614 1615 + 1534 1 1614 1615 1616 + 1535 1 1615 1616 1617 + 1536 1 1616 1617 1618 + 1537 1 1617 1618 1619 + 1538 1 1618 1619 1620 + 1539 1 1619 1620 1621 + 1540 1 1620 1621 1622 + 1541 1 1621 1622 1623 + 1542 1 1622 1623 1624 + 1543 1 1623 1624 1625 + 1544 1 1624 1625 1626 + 1545 1 1625 1626 1627 + 1546 1 1626 1627 1628 + 1547 1 1627 1628 1629 + 1548 1 1628 1629 1630 + 1549 1 1629 1630 1631 + 1550 1 1630 1631 1632 + 1551 1 1631 1632 1633 + 1552 1 1632 1633 1634 + 1553 1 1633 1634 1635 + 1554 1 1634 1635 1636 + 1555 1 1635 1636 1637 + 1556 1 1636 1637 1638 + 1557 1 1637 1638 1639 + 1558 1 1638 1639 1640 + 1559 1 1641 1642 1643 + 1560 1 1642 1643 1644 + 1561 1 1643 1644 1645 + 1562 1 1644 1645 1646 + 1563 1 1645 1646 1647 + 1564 1 1646 1647 1648 + 1565 1 1647 1648 1649 + 1566 1 1648 1649 1650 + 1567 1 1649 1650 1651 + 1568 1 1650 1651 1652 + 1569 1 1651 1652 1653 + 1570 1 1652 1653 1654 + 1571 1 1653 1654 1655 + 1572 1 1654 1655 1656 + 1573 1 1655 1656 1657 + 1574 1 1656 1657 1658 + 1575 1 1657 1658 1659 + 1576 1 1658 1659 1660 + 1577 1 1659 1660 1661 + 1578 1 1660 1661 1662 + 1579 1 1661 1662 1663 + 1580 1 1662 1663 1664 + 1581 1 1663 1664 1665 + 1582 1 1664 1665 1666 + 1583 1 1665 1666 1667 + 1584 1 1666 1667 1668 + 1585 1 1667 1668 1669 + 1586 1 1668 1669 1670 + 1587 1 1669 1670 1671 + 1588 1 1670 1671 1672 + 1589 1 1671 1672 1673 + 1590 1 1672 1673 1674 + 1591 1 1673 1674 1675 + 1592 1 1674 1675 1676 + 1593 1 1675 1676 1677 + 1594 1 1676 1677 1678 + 1595 1 1677 1678 1679 + 1596 1 1678 1679 1680 + 1597 1 1681 1682 1683 + 1598 1 1682 1683 1684 + 1599 1 1683 1684 1685 + 1600 1 1684 1685 1686 + 1601 1 1685 1686 1687 + 1602 1 1686 1687 1688 + 1603 1 1687 1688 1689 + 1604 1 1688 1689 1690 + 1605 1 1689 1690 1691 + 1606 1 1690 1691 1692 + 1607 1 1691 1692 1693 + 1608 1 1692 1693 1694 + 1609 1 1693 1694 1695 + 1610 1 1694 1695 1696 + 1611 1 1695 1696 1697 + 1612 1 1696 1697 1698 + 1613 1 1697 1698 1699 + 1614 1 1698 1699 1700 + 1615 1 1699 1700 1701 + 1616 1 1700 1701 1702 + 1617 1 1701 1702 1703 + 1618 1 1702 1703 1704 + 1619 1 1703 1704 1705 + 1620 1 1704 1705 1706 + 1621 1 1705 1706 1707 + 1622 1 1706 1707 1708 + 1623 1 1707 1708 1709 + 1624 1 1708 1709 1710 + 1625 1 1709 1710 1711 + 1626 1 1710 1711 1712 + 1627 1 1711 1712 1713 + 1628 1 1712 1713 1714 + 1629 1 1713 1714 1715 + 1630 1 1714 1715 1716 + 1631 1 1715 1716 1717 + 1632 1 1716 1717 1718 + 1633 1 1717 1718 1719 + 1634 1 1718 1719 1720 + 1635 1 1721 1722 1723 + 1636 1 1722 1723 1724 + 1637 1 1723 1724 1725 + 1638 1 1724 1725 1726 + 1639 1 1725 1726 1727 + 1640 1 1726 1727 1728 + 1641 1 1727 1728 1729 + 1642 1 1728 1729 1730 + 1643 1 1729 1730 1731 + 1644 1 1730 1731 1732 + 1645 1 1731 1732 1733 + 1646 1 1732 1733 1734 + 1647 1 1733 1734 1735 + 1648 1 1734 1735 1736 + 1649 1 1735 1736 1737 + 1650 1 1736 1737 1738 + 1651 1 1737 1738 1739 + 1652 1 1738 1739 1740 + 1653 1 1739 1740 1741 + 1654 1 1740 1741 1742 + 1655 1 1741 1742 1743 + 1656 1 1742 1743 1744 + 1657 1 1743 1744 1745 + 1658 1 1744 1745 1746 + 1659 1 1745 1746 1747 + 1660 1 1746 1747 1748 + 1661 1 1747 1748 1749 + 1662 1 1748 1749 1750 + 1663 1 1749 1750 1751 + 1664 1 1750 1751 1752 + 1665 1 1751 1752 1753 + 1666 1 1752 1753 1754 + 1667 1 1753 1754 1755 + 1668 1 1754 1755 1756 + 1669 1 1755 1756 1757 + 1670 1 1756 1757 1758 + 1671 1 1757 1758 1759 + 1672 1 1758 1759 1760 + 1673 1 1761 1762 1763 + 1674 1 1762 1763 1764 + 1675 1 1763 1764 1765 + 1676 1 1764 1765 1766 + 1677 1 1765 1766 1767 + 1678 1 1766 1767 1768 + 1679 1 1767 1768 1769 + 1680 1 1768 1769 1770 + 1681 1 1769 1770 1771 + 1682 1 1770 1771 1772 + 1683 1 1771 1772 1773 + 1684 1 1772 1773 1774 + 1685 1 1773 1774 1775 + 1686 1 1774 1775 1776 + 1687 1 1775 1776 1777 + 1688 1 1776 1777 1778 + 1689 1 1777 1778 1779 + 1690 1 1778 1779 1780 + 1691 1 1779 1780 1781 + 1692 1 1780 1781 1782 + 1693 1 1781 1782 1783 + 1694 1 1782 1783 1784 + 1695 1 1783 1784 1785 + 1696 1 1784 1785 1786 + 1697 1 1785 1786 1787 + 1698 1 1786 1787 1788 + 1699 1 1787 1788 1789 + 1700 1 1788 1789 1790 + 1701 1 1789 1790 1791 + 1702 1 1790 1791 1792 + 1703 1 1791 1792 1793 + 1704 1 1792 1793 1794 + 1705 1 1793 1794 1795 + 1706 1 1794 1795 1796 + 1707 1 1795 1796 1797 + 1708 1 1796 1797 1798 + 1709 1 1797 1798 1799 + 1710 1 1798 1799 1800 + 1711 1 1801 1802 1803 + 1712 1 1802 1803 1804 + 1713 1 1803 1804 1805 + 1714 1 1804 1805 1806 + 1715 1 1805 1806 1807 + 1716 1 1806 1807 1808 + 1717 1 1807 1808 1809 + 1718 1 1808 1809 1810 + 1719 1 1809 1810 1811 + 1720 1 1810 1811 1812 + 1721 1 1811 1812 1813 + 1722 1 1812 1813 1814 + 1723 1 1813 1814 1815 + 1724 1 1814 1815 1816 + 1725 1 1815 1816 1817 + 1726 1 1816 1817 1818 + 1727 1 1817 1818 1819 + 1728 1 1818 1819 1820 + 1729 1 1819 1820 1821 + 1730 1 1820 1821 1822 + 1731 1 1821 1822 1823 + 1732 1 1822 1823 1824 + 1733 1 1823 1824 1825 + 1734 1 1824 1825 1826 + 1735 1 1825 1826 1827 + 1736 1 1826 1827 1828 + 1737 1 1827 1828 1829 + 1738 1 1828 1829 1830 + 1739 1 1829 1830 1831 + 1740 1 1830 1831 1832 + 1741 1 1831 1832 1833 + 1742 1 1832 1833 1834 + 1743 1 1833 1834 1835 + 1744 1 1834 1835 1836 + 1745 1 1835 1836 1837 + 1746 1 1836 1837 1838 + 1747 1 1837 1838 1839 + 1748 1 1838 1839 1840 + 1749 1 1841 1842 1843 + 1750 1 1842 1843 1844 + 1751 1 1843 1844 1845 + 1752 1 1844 1845 1846 + 1753 1 1845 1846 1847 + 1754 1 1846 1847 1848 + 1755 1 1847 1848 1849 + 1756 1 1848 1849 1850 + 1757 1 1849 1850 1851 + 1758 1 1850 1851 1852 + 1759 1 1851 1852 1853 + 1760 1 1852 1853 1854 + 1761 1 1853 1854 1855 + 1762 1 1854 1855 1856 + 1763 1 1855 1856 1857 + 1764 1 1856 1857 1858 + 1765 1 1857 1858 1859 + 1766 1 1858 1859 1860 + 1767 1 1859 1860 1861 + 1768 1 1860 1861 1862 + 1769 1 1861 1862 1863 + 1770 1 1862 1863 1864 + 1771 1 1863 1864 1865 + 1772 1 1864 1865 1866 + 1773 1 1865 1866 1867 + 1774 1 1866 1867 1868 + 1775 1 1867 1868 1869 + 1776 1 1868 1869 1870 + 1777 1 1869 1870 1871 + 1778 1 1870 1871 1872 + 1779 1 1871 1872 1873 + 1780 1 1872 1873 1874 + 1781 1 1873 1874 1875 + 1782 1 1874 1875 1876 + 1783 1 1875 1876 1877 + 1784 1 1876 1877 1878 + 1785 1 1877 1878 1879 + 1786 1 1878 1879 1880 + 1787 1 1881 1882 1883 + 1788 1 1882 1883 1884 + 1789 1 1883 1884 1885 + 1790 1 1884 1885 1886 + 1791 1 1885 1886 1887 + 1792 1 1886 1887 1888 + 1793 1 1887 1888 1889 + 1794 1 1888 1889 1890 + 1795 1 1889 1890 1891 + 1796 1 1890 1891 1892 + 1797 1 1891 1892 1893 + 1798 1 1892 1893 1894 + 1799 1 1893 1894 1895 + 1800 1 1894 1895 1896 + 1801 1 1895 1896 1897 + 1802 1 1896 1897 1898 + 1803 1 1897 1898 1899 + 1804 1 1898 1899 1900 + 1805 1 1899 1900 1901 + 1806 1 1900 1901 1902 + 1807 1 1901 1902 1903 + 1808 1 1902 1903 1904 + 1809 1 1903 1904 1905 + 1810 1 1904 1905 1906 + 1811 1 1905 1906 1907 + 1812 1 1906 1907 1908 + 1813 1 1907 1908 1909 + 1814 1 1908 1909 1910 + 1815 1 1909 1910 1911 + 1816 1 1910 1911 1912 + 1817 1 1911 1912 1913 + 1818 1 1912 1913 1914 + 1819 1 1913 1914 1915 + 1820 1 1914 1915 1916 + 1821 1 1915 1916 1917 + 1822 1 1916 1917 1918 + 1823 1 1917 1918 1919 + 1824 1 1918 1919 1920 + 1825 1 1921 1922 1923 + 1826 1 1922 1923 1924 + 1827 1 1923 1924 1925 + 1828 1 1924 1925 1926 + 1829 1 1925 1926 1927 + 1830 1 1926 1927 1928 + 1831 1 1927 1928 1929 + 1832 1 1928 1929 1930 + 1833 1 1929 1930 1931 + 1834 1 1930 1931 1932 + 1835 1 1931 1932 1933 + 1836 1 1932 1933 1934 + 1837 1 1933 1934 1935 + 1838 1 1934 1935 1936 + 1839 1 1935 1936 1937 + 1840 1 1936 1937 1938 + 1841 1 1937 1938 1939 + 1842 1 1938 1939 1940 + 1843 1 1939 1940 1941 + 1844 1 1940 1941 1942 + 1845 1 1941 1942 1943 + 1846 1 1942 1943 1944 + 1847 1 1943 1944 1945 + 1848 1 1944 1945 1946 + 1849 1 1945 1946 1947 + 1850 1 1946 1947 1948 + 1851 1 1947 1948 1949 + 1852 1 1948 1949 1950 + 1853 1 1949 1950 1951 + 1854 1 1950 1951 1952 + 1855 1 1951 1952 1953 + 1856 1 1952 1953 1954 + 1857 1 1953 1954 1955 + 1858 1 1954 1955 1956 + 1859 1 1955 1956 1957 + 1860 1 1956 1957 1958 + 1861 1 1957 1958 1959 + 1862 1 1958 1959 1960 + 1863 1 1961 1962 1963 + 1864 1 1962 1963 1964 + 1865 1 1963 1964 1965 + 1866 1 1964 1965 1966 + 1867 1 1965 1966 1967 + 1868 1 1966 1967 1968 + 1869 1 1967 1968 1969 + 1870 1 1968 1969 1970 + 1871 1 1969 1970 1971 + 1872 1 1970 1971 1972 + 1873 1 1971 1972 1973 + 1874 1 1972 1973 1974 + 1875 1 1973 1974 1975 + 1876 1 1974 1975 1976 + 1877 1 1975 1976 1977 + 1878 1 1976 1977 1978 + 1879 1 1977 1978 1979 + 1880 1 1978 1979 1980 + 1881 1 1979 1980 1981 + 1882 1 1980 1981 1982 + 1883 1 1981 1982 1983 + 1884 1 1982 1983 1984 + 1885 1 1983 1984 1985 + 1886 1 1984 1985 1986 + 1887 1 1985 1986 1987 + 1888 1 1986 1987 1988 + 1889 1 1987 1988 1989 + 1890 1 1988 1989 1990 + 1891 1 1989 1990 1991 + 1892 1 1990 1991 1992 + 1893 1 1991 1992 1993 + 1894 1 1992 1993 1994 + 1895 1 1993 1994 1995 + 1896 1 1994 1995 1996 + 1897 1 1995 1996 1997 + 1898 1 1996 1997 1998 + 1899 1 1997 1998 1999 + 1900 1 1998 1999 2000 + 1901 1 2001 2002 2003 + 1902 1 2002 2003 2004 + 1903 1 2003 2004 2005 + 1904 1 2004 2005 2006 + 1905 1 2005 2006 2007 + 1906 1 2006 2007 2008 + 1907 1 2007 2008 2009 + 1908 1 2008 2009 2010 + 1909 1 2009 2010 2011 + 1910 1 2010 2011 2012 + 1911 1 2011 2012 2013 + 1912 1 2012 2013 2014 + 1913 1 2013 2014 2015 + 1914 1 2014 2015 2016 + 1915 1 2015 2016 2017 + 1916 1 2016 2017 2018 + 1917 1 2017 2018 2019 + 1918 1 2018 2019 2020 + 1919 1 2019 2020 2021 + 1920 1 2020 2021 2022 + 1921 1 2021 2022 2023 + 1922 1 2022 2023 2024 + 1923 1 2023 2024 2025 + 1924 1 2024 2025 2026 + 1925 1 2025 2026 2027 + 1926 1 2026 2027 2028 + 1927 1 2027 2028 2029 + 1928 1 2028 2029 2030 + 1929 1 2029 2030 2031 + 1930 1 2030 2031 2032 + 1931 1 2031 2032 2033 + 1932 1 2032 2033 2034 + 1933 1 2033 2034 2035 + 1934 1 2034 2035 2036 + 1935 1 2035 2036 2037 + 1936 1 2036 2037 2038 + 1937 1 2037 2038 2039 + 1938 1 2038 2039 2040 + 1939 1 2041 2042 2043 + 1940 1 2042 2043 2044 + 1941 1 2043 2044 2045 + 1942 1 2044 2045 2046 + 1943 1 2045 2046 2047 + 1944 1 2046 2047 2048 + 1945 1 2047 2048 2049 + 1946 1 2048 2049 2050 + 1947 1 2049 2050 2051 + 1948 1 2050 2051 2052 + 1949 1 2051 2052 2053 + 1950 1 2052 2053 2054 + 1951 1 2053 2054 2055 + 1952 1 2054 2055 2056 + 1953 1 2055 2056 2057 + 1954 1 2056 2057 2058 + 1955 1 2057 2058 2059 + 1956 1 2058 2059 2060 + 1957 1 2059 2060 2061 + 1958 1 2060 2061 2062 + 1959 1 2061 2062 2063 + 1960 1 2062 2063 2064 + 1961 1 2063 2064 2065 + 1962 1 2064 2065 2066 + 1963 1 2065 2066 2067 + 1964 1 2066 2067 2068 + 1965 1 2067 2068 2069 + 1966 1 2068 2069 2070 + 1967 1 2069 2070 2071 + 1968 1 2070 2071 2072 + 1969 1 2071 2072 2073 + 1970 1 2072 2073 2074 + 1971 1 2073 2074 2075 + 1972 1 2074 2075 2076 + 1973 1 2075 2076 2077 + 1974 1 2076 2077 2078 + 1975 1 2077 2078 2079 + 1976 1 2078 2079 2080 + 1977 1 2081 2082 2083 + 1978 1 2082 2083 2084 + 1979 1 2083 2084 2085 + 1980 1 2084 2085 2086 + 1981 1 2085 2086 2087 + 1982 1 2086 2087 2088 + 1983 1 2087 2088 2089 + 1984 1 2088 2089 2090 + 1985 1 2089 2090 2091 + 1986 1 2090 2091 2092 + 1987 1 2091 2092 2093 + 1988 1 2092 2093 2094 + 1989 1 2093 2094 2095 + 1990 1 2094 2095 2096 + 1991 1 2095 2096 2097 + 1992 1 2096 2097 2098 + 1993 1 2097 2098 2099 + 1994 1 2098 2099 2100 + 1995 1 2099 2100 2101 + 1996 1 2100 2101 2102 + 1997 1 2101 2102 2103 + 1998 1 2102 2103 2104 + 1999 1 2103 2104 2105 + 2000 1 2104 2105 2106 + 2001 1 2105 2106 2107 + 2002 1 2106 2107 2108 + 2003 1 2107 2108 2109 + 2004 1 2108 2109 2110 + 2005 1 2109 2110 2111 + 2006 1 2110 2111 2112 + 2007 1 2111 2112 2113 + 2008 1 2112 2113 2114 + 2009 1 2113 2114 2115 + 2010 1 2114 2115 2116 + 2011 1 2115 2116 2117 + 2012 1 2116 2117 2118 + 2013 1 2117 2118 2119 + 2014 1 2118 2119 2120 + 2015 1 2121 2122 2123 + 2016 1 2122 2123 2124 + 2017 1 2123 2124 2125 + 2018 1 2124 2125 2126 + 2019 1 2125 2126 2127 + 2020 1 2126 2127 2128 + 2021 1 2127 2128 2129 + 2022 1 2128 2129 2130 + 2023 1 2129 2130 2131 + 2024 1 2130 2131 2132 + 2025 1 2131 2132 2133 + 2026 1 2132 2133 2134 + 2027 1 2133 2134 2135 + 2028 1 2134 2135 2136 + 2029 1 2135 2136 2137 + 2030 1 2136 2137 2138 + 2031 1 2137 2138 2139 + 2032 1 2138 2139 2140 + 2033 1 2139 2140 2141 + 2034 1 2140 2141 2142 + 2035 1 2141 2142 2143 + 2036 1 2142 2143 2144 + 2037 1 2143 2144 2145 + 2038 1 2144 2145 2146 + 2039 1 2145 2146 2147 + 2040 1 2146 2147 2148 + 2041 1 2147 2148 2149 + 2042 1 2148 2149 2150 + 2043 1 2149 2150 2151 + 2044 1 2150 2151 2152 + 2045 1 2151 2152 2153 + 2046 1 2152 2153 2154 + 2047 1 2153 2154 2155 + 2048 1 2154 2155 2156 + 2049 1 2155 2156 2157 + 2050 1 2156 2157 2158 + 2051 1 2157 2158 2159 + 2052 1 2158 2159 2160 + 2053 1 2161 2162 2163 + 2054 1 2162 2163 2164 + 2055 1 2163 2164 2165 + 2056 1 2164 2165 2166 + 2057 1 2165 2166 2167 + 2058 1 2166 2167 2168 + 2059 1 2167 2168 2169 + 2060 1 2168 2169 2170 + 2061 1 2169 2170 2171 + 2062 1 2170 2171 2172 + 2063 1 2171 2172 2173 + 2064 1 2172 2173 2174 + 2065 1 2173 2174 2175 + 2066 1 2174 2175 2176 + 2067 1 2175 2176 2177 + 2068 1 2176 2177 2178 + 2069 1 2177 2178 2179 + 2070 1 2178 2179 2180 + 2071 1 2179 2180 2181 + 2072 1 2180 2181 2182 + 2073 1 2181 2182 2183 + 2074 1 2182 2183 2184 + 2075 1 2183 2184 2185 + 2076 1 2184 2185 2186 + 2077 1 2185 2186 2187 + 2078 1 2186 2187 2188 + 2079 1 2187 2188 2189 + 2080 1 2188 2189 2190 + 2081 1 2189 2190 2191 + 2082 1 2190 2191 2192 + 2083 1 2191 2192 2193 + 2084 1 2192 2193 2194 + 2085 1 2193 2194 2195 + 2086 1 2194 2195 2196 + 2087 1 2195 2196 2197 + 2088 1 2196 2197 2198 + 2089 1 2197 2198 2199 + 2090 1 2198 2199 2200 + 2091 1 2201 2202 2203 + 2092 1 2202 2203 2204 + 2093 1 2203 2204 2205 + 2094 1 2204 2205 2206 + 2095 1 2205 2206 2207 + 2096 1 2206 2207 2208 + 2097 1 2207 2208 2209 + 2098 1 2208 2209 2210 + 2099 1 2209 2210 2211 + 2100 1 2210 2211 2212 + 2101 1 2211 2212 2213 + 2102 1 2212 2213 2214 + 2103 1 2213 2214 2215 + 2104 1 2214 2215 2216 + 2105 1 2215 2216 2217 + 2106 1 2216 2217 2218 + 2107 1 2217 2218 2219 + 2108 1 2218 2219 2220 + 2109 1 2219 2220 2221 + 2110 1 2220 2221 2222 + 2111 1 2221 2222 2223 + 2112 1 2222 2223 2224 + 2113 1 2223 2224 2225 + 2114 1 2224 2225 2226 + 2115 1 2225 2226 2227 + 2116 1 2226 2227 2228 + 2117 1 2227 2228 2229 + 2118 1 2228 2229 2230 + 2119 1 2229 2230 2231 + 2120 1 2230 2231 2232 + 2121 1 2231 2232 2233 + 2122 1 2232 2233 2234 + 2123 1 2233 2234 2235 + 2124 1 2234 2235 2236 + 2125 1 2235 2236 2237 + 2126 1 2236 2237 2238 + 2127 1 2237 2238 2239 + 2128 1 2238 2239 2240 + 2129 1 2241 2242 2243 + 2130 1 2242 2243 2244 + 2131 1 2243 2244 2245 + 2132 1 2244 2245 2246 + 2133 1 2245 2246 2247 + 2134 1 2246 2247 2248 + 2135 1 2247 2248 2249 + 2136 1 2248 2249 2250 + 2137 1 2249 2250 2251 + 2138 1 2250 2251 2252 + 2139 1 2251 2252 2253 + 2140 1 2252 2253 2254 + 2141 1 2253 2254 2255 + 2142 1 2254 2255 2256 + 2143 1 2255 2256 2257 + 2144 1 2256 2257 2258 + 2145 1 2257 2258 2259 + 2146 1 2258 2259 2260 + 2147 1 2259 2260 2261 + 2148 1 2260 2261 2262 + 2149 1 2261 2262 2263 + 2150 1 2262 2263 2264 + 2151 1 2263 2264 2265 + 2152 1 2264 2265 2266 + 2153 1 2265 2266 2267 + 2154 1 2266 2267 2268 + 2155 1 2267 2268 2269 + 2156 1 2268 2269 2270 + 2157 1 2269 2270 2271 + 2158 1 2270 2271 2272 + 2159 1 2271 2272 2273 + 2160 1 2272 2273 2274 + 2161 1 2273 2274 2275 + 2162 1 2274 2275 2276 + 2163 1 2275 2276 2277 + 2164 1 2276 2277 2278 + 2165 1 2277 2278 2279 + 2166 1 2278 2279 2280 + 2167 1 2281 2282 2283 + 2168 1 2282 2283 2284 + 2169 1 2283 2284 2285 + 2170 1 2284 2285 2286 + 2171 1 2285 2286 2287 + 2172 1 2286 2287 2288 + 2173 1 2287 2288 2289 + 2174 1 2288 2289 2290 + 2175 1 2289 2290 2291 + 2176 1 2290 2291 2292 + 2177 1 2291 2292 2293 + 2178 1 2292 2293 2294 + 2179 1 2293 2294 2295 + 2180 1 2294 2295 2296 + 2181 1 2295 2296 2297 + 2182 1 2296 2297 2298 + 2183 1 2297 2298 2299 + 2184 1 2298 2299 2300 + 2185 1 2299 2300 2301 + 2186 1 2300 2301 2302 + 2187 1 2301 2302 2303 + 2188 1 2302 2303 2304 + 2189 1 2303 2304 2305 + 2190 1 2304 2305 2306 + 2191 1 2305 2306 2307 + 2192 1 2306 2307 2308 + 2193 1 2307 2308 2309 + 2194 1 2308 2309 2310 + 2195 1 2309 2310 2311 + 2196 1 2310 2311 2312 + 2197 1 2311 2312 2313 + 2198 1 2312 2313 2314 + 2199 1 2313 2314 2315 + 2200 1 2314 2315 2316 + 2201 1 2315 2316 2317 + 2202 1 2316 2317 2318 + 2203 1 2317 2318 2319 + 2204 1 2318 2319 2320 + 2205 1 2321 2322 2323 + 2206 1 2322 2323 2324 + 2207 1 2323 2324 2325 + 2208 1 2324 2325 2326 + 2209 1 2325 2326 2327 + 2210 1 2326 2327 2328 + 2211 1 2327 2328 2329 + 2212 1 2328 2329 2330 + 2213 1 2329 2330 2331 + 2214 1 2330 2331 2332 + 2215 1 2331 2332 2333 + 2216 1 2332 2333 2334 + 2217 1 2333 2334 2335 + 2218 1 2334 2335 2336 + 2219 1 2335 2336 2337 + 2220 1 2336 2337 2338 + 2221 1 2337 2338 2339 + 2222 1 2338 2339 2340 + 2223 1 2339 2340 2341 + 2224 1 2340 2341 2342 + 2225 1 2341 2342 2343 + 2226 1 2342 2343 2344 + 2227 1 2343 2344 2345 + 2228 1 2344 2345 2346 + 2229 1 2345 2346 2347 + 2230 1 2346 2347 2348 + 2231 1 2347 2348 2349 + 2232 1 2348 2349 2350 + 2233 1 2349 2350 2351 + 2234 1 2350 2351 2352 + 2235 1 2351 2352 2353 + 2236 1 2352 2353 2354 + 2237 1 2353 2354 2355 + 2238 1 2354 2355 2356 + 2239 1 2355 2356 2357 + 2240 1 2356 2357 2358 + 2241 1 2357 2358 2359 + 2242 1 2358 2359 2360 + 2243 1 2361 2362 2363 + 2244 1 2362 2363 2364 + 2245 1 2363 2364 2365 + 2246 1 2364 2365 2366 + 2247 1 2365 2366 2367 + 2248 1 2366 2367 2368 + 2249 1 2367 2368 2369 + 2250 1 2368 2369 2370 + 2251 1 2369 2370 2371 + 2252 1 2370 2371 2372 + 2253 1 2371 2372 2373 + 2254 1 2372 2373 2374 + 2255 1 2373 2374 2375 + 2256 1 2374 2375 2376 + 2257 1 2375 2376 2377 + 2258 1 2376 2377 2378 + 2259 1 2377 2378 2379 + 2260 1 2378 2379 2380 + 2261 1 2379 2380 2381 + 2262 1 2380 2381 2382 + 2263 1 2381 2382 2383 + 2264 1 2382 2383 2384 + 2265 1 2383 2384 2385 + 2266 1 2384 2385 2386 + 2267 1 2385 2386 2387 + 2268 1 2386 2387 2388 + 2269 1 2387 2388 2389 + 2270 1 2388 2389 2390 + 2271 1 2389 2390 2391 + 2272 1 2390 2391 2392 + 2273 1 2391 2392 2393 + 2274 1 2392 2393 2394 + 2275 1 2393 2394 2395 + 2276 1 2394 2395 2396 + 2277 1 2395 2396 2397 + 2278 1 2396 2397 2398 + 2279 1 2397 2398 2399 + 2280 1 2398 2399 2400 + 2281 1 2401 2402 2403 + 2282 1 2402 2403 2404 + 2283 1 2403 2404 2405 + 2284 1 2404 2405 2406 + 2285 1 2405 2406 2407 + 2286 1 2406 2407 2408 + 2287 1 2407 2408 2409 + 2288 1 2408 2409 2410 + 2289 1 2409 2410 2411 + 2290 1 2410 2411 2412 + 2291 1 2411 2412 2413 + 2292 1 2412 2413 2414 + 2293 1 2413 2414 2415 + 2294 1 2414 2415 2416 + 2295 1 2415 2416 2417 + 2296 1 2416 2417 2418 + 2297 1 2417 2418 2419 + 2298 1 2418 2419 2420 + 2299 1 2419 2420 2421 + 2300 1 2420 2421 2422 + 2301 1 2421 2422 2423 + 2302 1 2422 2423 2424 + 2303 1 2423 2424 2425 + 2304 1 2424 2425 2426 + 2305 1 2425 2426 2427 + 2306 1 2426 2427 2428 + 2307 1 2427 2428 2429 + 2308 1 2428 2429 2430 + 2309 1 2429 2430 2431 + 2310 1 2430 2431 2432 + 2311 1 2431 2432 2433 + 2312 1 2432 2433 2434 + 2313 1 2433 2434 2435 + 2314 1 2434 2435 2436 + 2315 1 2435 2436 2437 + 2316 1 2436 2437 2438 + 2317 1 2437 2438 2439 + 2318 1 2438 2439 2440 + 2319 1 2441 2442 2443 + 2320 1 2442 2443 2444 + 2321 1 2443 2444 2445 + 2322 1 2444 2445 2446 + 2323 1 2445 2446 2447 + 2324 1 2446 2447 2448 + 2325 1 2447 2448 2449 + 2326 1 2448 2449 2450 + 2327 1 2449 2450 2451 + 2328 1 2450 2451 2452 + 2329 1 2451 2452 2453 + 2330 1 2452 2453 2454 + 2331 1 2453 2454 2455 + 2332 1 2454 2455 2456 + 2333 1 2455 2456 2457 + 2334 1 2456 2457 2458 + 2335 1 2457 2458 2459 + 2336 1 2458 2459 2460 + 2337 1 2459 2460 2461 + 2338 1 2460 2461 2462 + 2339 1 2461 2462 2463 + 2340 1 2462 2463 2464 + 2341 1 2463 2464 2465 + 2342 1 2464 2465 2466 + 2343 1 2465 2466 2467 + 2344 1 2466 2467 2468 + 2345 1 2467 2468 2469 + 2346 1 2468 2469 2470 + 2347 1 2469 2470 2471 + 2348 1 2470 2471 2472 + 2349 1 2471 2472 2473 + 2350 1 2472 2473 2474 + 2351 1 2473 2474 2475 + 2352 1 2474 2475 2476 + 2353 1 2475 2476 2477 + 2354 1 2476 2477 2478 + 2355 1 2477 2478 2479 + 2356 1 2478 2479 2480 + 2357 1 2481 2482 2483 + 2358 1 2482 2483 2484 + 2359 1 2483 2484 2485 + 2360 1 2484 2485 2486 + 2361 1 2485 2486 2487 + 2362 1 2486 2487 2488 + 2363 1 2487 2488 2489 + 2364 1 2488 2489 2490 + 2365 1 2489 2490 2491 + 2366 1 2490 2491 2492 + 2367 1 2491 2492 2493 + 2368 1 2492 2493 2494 + 2369 1 2493 2494 2495 + 2370 1 2494 2495 2496 + 2371 1 2495 2496 2497 + 2372 1 2496 2497 2498 + 2373 1 2497 2498 2499 + 2374 1 2498 2499 2500 + 2375 1 2499 2500 2501 + 2376 1 2500 2501 2502 + 2377 1 2501 2502 2503 + 2378 1 2502 2503 2504 + 2379 1 2503 2504 2505 + 2380 1 2504 2505 2506 + 2381 1 2505 2506 2507 + 2382 1 2506 2507 2508 + 2383 1 2507 2508 2509 + 2384 1 2508 2509 2510 + 2385 1 2509 2510 2511 + 2386 1 2510 2511 2512 + 2387 1 2511 2512 2513 + 2388 1 2512 2513 2514 + 2389 1 2513 2514 2515 + 2390 1 2514 2515 2516 + 2391 1 2515 2516 2517 + 2392 1 2516 2517 2518 + 2393 1 2517 2518 2519 + 2394 1 2518 2519 2520 + 2395 1 2521 2522 2523 + 2396 1 2522 2523 2524 + 2397 1 2523 2524 2525 + 2398 1 2524 2525 2526 + 2399 1 2525 2526 2527 + 2400 1 2526 2527 2528 + 2401 1 2527 2528 2529 + 2402 1 2528 2529 2530 + 2403 1 2529 2530 2531 + 2404 1 2530 2531 2532 + 2405 1 2531 2532 2533 + 2406 1 2532 2533 2534 + 2407 1 2533 2534 2535 + 2408 1 2534 2535 2536 + 2409 1 2535 2536 2537 + 2410 1 2536 2537 2538 + 2411 1 2537 2538 2539 + 2412 1 2538 2539 2540 + 2413 1 2539 2540 2541 + 2414 1 2540 2541 2542 + 2415 1 2541 2542 2543 + 2416 1 2542 2543 2544 + 2417 1 2543 2544 2545 + 2418 1 2544 2545 2546 + 2419 1 2545 2546 2547 + 2420 1 2546 2547 2548 + 2421 1 2547 2548 2549 + 2422 1 2548 2549 2550 + 2423 1 2549 2550 2551 + 2424 1 2550 2551 2552 + 2425 1 2551 2552 2553 + 2426 1 2552 2553 2554 + 2427 1 2553 2554 2555 + 2428 1 2554 2555 2556 + 2429 1 2555 2556 2557 + 2430 1 2556 2557 2558 + 2431 1 2557 2558 2559 + 2432 1 2558 2559 2560 + 2433 1 2561 2562 2563 + 2434 1 2562 2563 2564 + 2435 1 2563 2564 2565 + 2436 1 2564 2565 2566 + 2437 1 2565 2566 2567 + 2438 1 2566 2567 2568 + 2439 1 2567 2568 2569 + 2440 1 2568 2569 2570 + 2441 1 2569 2570 2571 + 2442 1 2570 2571 2572 + 2443 1 2571 2572 2573 + 2444 1 2572 2573 2574 + 2445 1 2573 2574 2575 + 2446 1 2574 2575 2576 + 2447 1 2575 2576 2577 + 2448 1 2576 2577 2578 + 2449 1 2577 2578 2579 + 2450 1 2578 2579 2580 + 2451 1 2579 2580 2581 + 2452 1 2580 2581 2582 + 2453 1 2581 2582 2583 + 2454 1 2582 2583 2584 + 2455 1 2583 2584 2585 + 2456 1 2584 2585 2586 + 2457 1 2585 2586 2587 + 2458 1 2586 2587 2588 + 2459 1 2587 2588 2589 + 2460 1 2588 2589 2590 + 2461 1 2589 2590 2591 + 2462 1 2590 2591 2592 + 2463 1 2591 2592 2593 + 2464 1 2592 2593 2594 + 2465 1 2593 2594 2595 + 2466 1 2594 2595 2596 + 2467 1 2595 2596 2597 + 2468 1 2596 2597 2598 + 2469 1 2597 2598 2599 + 2470 1 2598 2599 2600 + 2471 1 2601 2602 2603 + 2472 1 2602 2603 2604 + 2473 1 2603 2604 2605 + 2474 1 2604 2605 2606 + 2475 1 2605 2606 2607 + 2476 1 2606 2607 2608 + 2477 1 2607 2608 2609 + 2478 1 2608 2609 2610 + 2479 1 2609 2610 2611 + 2480 1 2610 2611 2612 + 2481 1 2611 2612 2613 + 2482 1 2612 2613 2614 + 2483 1 2613 2614 2615 + 2484 1 2614 2615 2616 + 2485 1 2615 2616 2617 + 2486 1 2616 2617 2618 + 2487 1 2617 2618 2619 + 2488 1 2618 2619 2620 + 2489 1 2619 2620 2621 + 2490 1 2620 2621 2622 + 2491 1 2621 2622 2623 + 2492 1 2622 2623 2624 + 2493 1 2623 2624 2625 + 2494 1 2624 2625 2626 + 2495 1 2625 2626 2627 + 2496 1 2626 2627 2628 + 2497 1 2627 2628 2629 + 2498 1 2628 2629 2630 + 2499 1 2629 2630 2631 + 2500 1 2630 2631 2632 + 2501 1 2631 2632 2633 + 2502 1 2632 2633 2634 + 2503 1 2633 2634 2635 + 2504 1 2634 2635 2636 + 2505 1 2635 2636 2637 + 2506 1 2636 2637 2638 + 2507 1 2637 2638 2639 + 2508 1 2638 2639 2640 + 2509 1 2641 2642 2643 + 2510 1 2642 2643 2644 + 2511 1 2643 2644 2645 + 2512 1 2644 2645 2646 + 2513 1 2645 2646 2647 + 2514 1 2646 2647 2648 + 2515 1 2647 2648 2649 + 2516 1 2648 2649 2650 + 2517 1 2649 2650 2651 + 2518 1 2650 2651 2652 + 2519 1 2651 2652 2653 + 2520 1 2652 2653 2654 + 2521 1 2653 2654 2655 + 2522 1 2654 2655 2656 + 2523 1 2655 2656 2657 + 2524 1 2656 2657 2658 + 2525 1 2657 2658 2659 + 2526 1 2658 2659 2660 + 2527 1 2659 2660 2661 + 2528 1 2660 2661 2662 + 2529 1 2661 2662 2663 + 2530 1 2662 2663 2664 + 2531 1 2663 2664 2665 + 2532 1 2664 2665 2666 + 2533 1 2665 2666 2667 + 2534 1 2666 2667 2668 + 2535 1 2667 2668 2669 + 2536 1 2668 2669 2670 + 2537 1 2669 2670 2671 + 2538 1 2670 2671 2672 + 2539 1 2671 2672 2673 + 2540 1 2672 2673 2674 + 2541 1 2673 2674 2675 + 2542 1 2674 2675 2676 + 2543 1 2675 2676 2677 + 2544 1 2676 2677 2678 + 2545 1 2677 2678 2679 + 2546 1 2678 2679 2680 + 2547 1 2681 2682 2683 + 2548 1 2682 2683 2684 + 2549 1 2683 2684 2685 + 2550 1 2684 2685 2686 + 2551 1 2685 2686 2687 + 2552 1 2686 2687 2688 + 2553 1 2687 2688 2689 + 2554 1 2688 2689 2690 + 2555 1 2689 2690 2691 + 2556 1 2690 2691 2692 + 2557 1 2691 2692 2693 + 2558 1 2692 2693 2694 + 2559 1 2693 2694 2695 + 2560 1 2694 2695 2696 + 2561 1 2695 2696 2697 + 2562 1 2696 2697 2698 + 2563 1 2697 2698 2699 + 2564 1 2698 2699 2700 + 2565 1 2699 2700 2701 + 2566 1 2700 2701 2702 + 2567 1 2701 2702 2703 + 2568 1 2702 2703 2704 + 2569 1 2703 2704 2705 + 2570 1 2704 2705 2706 + 2571 1 2705 2706 2707 + 2572 1 2706 2707 2708 + 2573 1 2707 2708 2709 + 2574 1 2708 2709 2710 + 2575 1 2709 2710 2711 + 2576 1 2710 2711 2712 + 2577 1 2711 2712 2713 + 2578 1 2712 2713 2714 + 2579 1 2713 2714 2715 + 2580 1 2714 2715 2716 + 2581 1 2715 2716 2717 + 2582 1 2716 2717 2718 + 2583 1 2717 2718 2719 + 2584 1 2718 2719 2720 + 2585 1 2721 2722 2723 + 2586 1 2722 2723 2724 + 2587 1 2723 2724 2725 + 2588 1 2724 2725 2726 + 2589 1 2725 2726 2727 + 2590 1 2726 2727 2728 + 2591 1 2727 2728 2729 + 2592 1 2728 2729 2730 + 2593 1 2729 2730 2731 + 2594 1 2730 2731 2732 + 2595 1 2731 2732 2733 + 2596 1 2732 2733 2734 + 2597 1 2733 2734 2735 + 2598 1 2734 2735 2736 + 2599 1 2735 2736 2737 + 2600 1 2736 2737 2738 + 2601 1 2737 2738 2739 + 2602 1 2738 2739 2740 + 2603 1 2739 2740 2741 + 2604 1 2740 2741 2742 + 2605 1 2741 2742 2743 + 2606 1 2742 2743 2744 + 2607 1 2743 2744 2745 + 2608 1 2744 2745 2746 + 2609 1 2745 2746 2747 + 2610 1 2746 2747 2748 + 2611 1 2747 2748 2749 + 2612 1 2748 2749 2750 + 2613 1 2749 2750 2751 + 2614 1 2750 2751 2752 + 2615 1 2751 2752 2753 + 2616 1 2752 2753 2754 + 2617 1 2753 2754 2755 + 2618 1 2754 2755 2756 + 2619 1 2755 2756 2757 + 2620 1 2756 2757 2758 + 2621 1 2757 2758 2759 + 2622 1 2758 2759 2760 + 2623 1 2761 2762 2763 + 2624 1 2762 2763 2764 + 2625 1 2763 2764 2765 + 2626 1 2764 2765 2766 + 2627 1 2765 2766 2767 + 2628 1 2766 2767 2768 + 2629 1 2767 2768 2769 + 2630 1 2768 2769 2770 + 2631 1 2769 2770 2771 + 2632 1 2770 2771 2772 + 2633 1 2771 2772 2773 + 2634 1 2772 2773 2774 + 2635 1 2773 2774 2775 + 2636 1 2774 2775 2776 + 2637 1 2775 2776 2777 + 2638 1 2776 2777 2778 + 2639 1 2777 2778 2779 + 2640 1 2778 2779 2780 + 2641 1 2779 2780 2781 + 2642 1 2780 2781 2782 + 2643 1 2781 2782 2783 + 2644 1 2782 2783 2784 + 2645 1 2783 2784 2785 + 2646 1 2784 2785 2786 + 2647 1 2785 2786 2787 + 2648 1 2786 2787 2788 + 2649 1 2787 2788 2789 + 2650 1 2788 2789 2790 + 2651 1 2789 2790 2791 + 2652 1 2790 2791 2792 + 2653 1 2791 2792 2793 + 2654 1 2792 2793 2794 + 2655 1 2793 2794 2795 + 2656 1 2794 2795 2796 + 2657 1 2795 2796 2797 + 2658 1 2796 2797 2798 + 2659 1 2797 2798 2799 + 2660 1 2798 2799 2800 + 2661 1 2801 2802 2803 + 2662 1 2802 2803 2804 + 2663 1 2803 2804 2805 + 2664 1 2804 2805 2806 + 2665 1 2805 2806 2807 + 2666 1 2806 2807 2808 + 2667 1 2807 2808 2809 + 2668 1 2808 2809 2810 + 2669 1 2809 2810 2811 + 2670 1 2810 2811 2812 + 2671 1 2811 2812 2813 + 2672 1 2812 2813 2814 + 2673 1 2813 2814 2815 + 2674 1 2814 2815 2816 + 2675 1 2815 2816 2817 + 2676 1 2816 2817 2818 + 2677 1 2817 2818 2819 + 2678 1 2818 2819 2820 + 2679 1 2819 2820 2821 + 2680 1 2820 2821 2822 + 2681 1 2821 2822 2823 + 2682 1 2822 2823 2824 + 2683 1 2823 2824 2825 + 2684 1 2824 2825 2826 + 2685 1 2825 2826 2827 + 2686 1 2826 2827 2828 + 2687 1 2827 2828 2829 + 2688 1 2828 2829 2830 + 2689 1 2829 2830 2831 + 2690 1 2830 2831 2832 + 2691 1 2831 2832 2833 + 2692 1 2832 2833 2834 + 2693 1 2833 2834 2835 + 2694 1 2834 2835 2836 + 2695 1 2835 2836 2837 + 2696 1 2836 2837 2838 + 2697 1 2837 2838 2839 + 2698 1 2838 2839 2840 + 2699 1 2841 2842 2843 + 2700 1 2842 2843 2844 + 2701 1 2843 2844 2845 + 2702 1 2844 2845 2846 + 2703 1 2845 2846 2847 + 2704 1 2846 2847 2848 + 2705 1 2847 2848 2849 + 2706 1 2848 2849 2850 + 2707 1 2849 2850 2851 + 2708 1 2850 2851 2852 + 2709 1 2851 2852 2853 + 2710 1 2852 2853 2854 + 2711 1 2853 2854 2855 + 2712 1 2854 2855 2856 + 2713 1 2855 2856 2857 + 2714 1 2856 2857 2858 + 2715 1 2857 2858 2859 + 2716 1 2858 2859 2860 + 2717 1 2859 2860 2861 + 2718 1 2860 2861 2862 + 2719 1 2861 2862 2863 + 2720 1 2862 2863 2864 + 2721 1 2863 2864 2865 + 2722 1 2864 2865 2866 + 2723 1 2865 2866 2867 + 2724 1 2866 2867 2868 + 2725 1 2867 2868 2869 + 2726 1 2868 2869 2870 + 2727 1 2869 2870 2871 + 2728 1 2870 2871 2872 + 2729 1 2871 2872 2873 + 2730 1 2872 2873 2874 + 2731 1 2873 2874 2875 + 2732 1 2874 2875 2876 + 2733 1 2875 2876 2877 + 2734 1 2876 2877 2878 + 2735 1 2877 2878 2879 + 2736 1 2878 2879 2880 + 2737 1 2881 2882 2883 + 2738 1 2882 2883 2884 + 2739 1 2883 2884 2885 + 2740 1 2884 2885 2886 + 2741 1 2885 2886 2887 + 2742 1 2886 2887 2888 + 2743 1 2887 2888 2889 + 2744 1 2888 2889 2890 + 2745 1 2889 2890 2891 + 2746 1 2890 2891 2892 + 2747 1 2891 2892 2893 + 2748 1 2892 2893 2894 + 2749 1 2893 2894 2895 + 2750 1 2894 2895 2896 + 2751 1 2895 2896 2897 + 2752 1 2896 2897 2898 + 2753 1 2897 2898 2899 + 2754 1 2898 2899 2900 + 2755 1 2899 2900 2901 + 2756 1 2900 2901 2902 + 2757 1 2901 2902 2903 + 2758 1 2902 2903 2904 + 2759 1 2903 2904 2905 + 2760 1 2904 2905 2906 + 2761 1 2905 2906 2907 + 2762 1 2906 2907 2908 + 2763 1 2907 2908 2909 + 2764 1 2908 2909 2910 + 2765 1 2909 2910 2911 + 2766 1 2910 2911 2912 + 2767 1 2911 2912 2913 + 2768 1 2912 2913 2914 + 2769 1 2913 2914 2915 + 2770 1 2914 2915 2916 + 2771 1 2915 2916 2917 + 2772 1 2916 2917 2918 + 2773 1 2917 2918 2919 + 2774 1 2918 2919 2920 + 2775 1 2921 2922 2923 + 2776 1 2922 2923 2924 + 2777 1 2923 2924 2925 + 2778 1 2924 2925 2926 + 2779 1 2925 2926 2927 + 2780 1 2926 2927 2928 + 2781 1 2927 2928 2929 + 2782 1 2928 2929 2930 + 2783 1 2929 2930 2931 + 2784 1 2930 2931 2932 + 2785 1 2931 2932 2933 + 2786 1 2932 2933 2934 + 2787 1 2933 2934 2935 + 2788 1 2934 2935 2936 + 2789 1 2935 2936 2937 + 2790 1 2936 2937 2938 + 2791 1 2937 2938 2939 + 2792 1 2938 2939 2940 + 2793 1 2939 2940 2941 + 2794 1 2940 2941 2942 + 2795 1 2941 2942 2943 + 2796 1 2942 2943 2944 + 2797 1 2943 2944 2945 + 2798 1 2944 2945 2946 + 2799 1 2945 2946 2947 + 2800 1 2946 2947 2948 + 2801 1 2947 2948 2949 + 2802 1 2948 2949 2950 + 2803 1 2949 2950 2951 + 2804 1 2950 2951 2952 + 2805 1 2951 2952 2953 + 2806 1 2952 2953 2954 + 2807 1 2953 2954 2955 + 2808 1 2954 2955 2956 + 2809 1 2955 2956 2957 + 2810 1 2956 2957 2958 + 2811 1 2957 2958 2959 + 2812 1 2958 2959 2960 + 2813 1 2961 2962 2963 + 2814 1 2962 2963 2964 + 2815 1 2963 2964 2965 + 2816 1 2964 2965 2966 + 2817 1 2965 2966 2967 + 2818 1 2966 2967 2968 + 2819 1 2967 2968 2969 + 2820 1 2968 2969 2970 + 2821 1 2969 2970 2971 + 2822 1 2970 2971 2972 + 2823 1 2971 2972 2973 + 2824 1 2972 2973 2974 + 2825 1 2973 2974 2975 + 2826 1 2974 2975 2976 + 2827 1 2975 2976 2977 + 2828 1 2976 2977 2978 + 2829 1 2977 2978 2979 + 2830 1 2978 2979 2980 + 2831 1 2979 2980 2981 + 2832 1 2980 2981 2982 + 2833 1 2981 2982 2983 + 2834 1 2982 2983 2984 + 2835 1 2983 2984 2985 + 2836 1 2984 2985 2986 + 2837 1 2985 2986 2987 + 2838 1 2986 2987 2988 + 2839 1 2987 2988 2989 + 2840 1 2988 2989 2990 + 2841 1 2989 2990 2991 + 2842 1 2990 2991 2992 + 2843 1 2991 2992 2993 + 2844 1 2992 2993 2994 + 2845 1 2993 2994 2995 + 2846 1 2994 2995 2996 + 2847 1 2995 2996 2997 + 2848 1 2996 2997 2998 + 2849 1 2997 2998 2999 + 2850 1 2998 2999 3000 + 2851 1 3001 3002 3003 + 2852 1 3002 3003 3004 + 2853 1 3003 3004 3005 + 2854 1 3004 3005 3006 + 2855 1 3005 3006 3007 + 2856 1 3006 3007 3008 + 2857 1 3007 3008 3009 + 2858 1 3008 3009 3010 + 2859 1 3009 3010 3011 + 2860 1 3010 3011 3012 + 2861 1 3011 3012 3013 + 2862 1 3012 3013 3014 + 2863 1 3013 3014 3015 + 2864 1 3014 3015 3016 + 2865 1 3015 3016 3017 + 2866 1 3016 3017 3018 + 2867 1 3017 3018 3019 + 2868 1 3018 3019 3020 + 2869 1 3019 3020 3021 + 2870 1 3020 3021 3022 + 2871 1 3021 3022 3023 + 2872 1 3022 3023 3024 + 2873 1 3023 3024 3025 + 2874 1 3024 3025 3026 + 2875 1 3025 3026 3027 + 2876 1 3026 3027 3028 + 2877 1 3027 3028 3029 + 2878 1 3028 3029 3030 + 2879 1 3029 3030 3031 + 2880 1 3030 3031 3032 + 2881 1 3031 3032 3033 + 2882 1 3032 3033 3034 + 2883 1 3033 3034 3035 + 2884 1 3034 3035 3036 + 2885 1 3035 3036 3037 + 2886 1 3036 3037 3038 + 2887 1 3037 3038 3039 + 2888 1 3038 3039 3040 + 2889 1 3041 3042 3043 + 2890 1 3042 3043 3044 + 2891 1 3043 3044 3045 + 2892 1 3044 3045 3046 + 2893 1 3045 3046 3047 + 2894 1 3046 3047 3048 + 2895 1 3047 3048 3049 + 2896 1 3048 3049 3050 + 2897 1 3049 3050 3051 + 2898 1 3050 3051 3052 + 2899 1 3051 3052 3053 + 2900 1 3052 3053 3054 + 2901 1 3053 3054 3055 + 2902 1 3054 3055 3056 + 2903 1 3055 3056 3057 + 2904 1 3056 3057 3058 + 2905 1 3057 3058 3059 + 2906 1 3058 3059 3060 + 2907 1 3059 3060 3061 + 2908 1 3060 3061 3062 + 2909 1 3061 3062 3063 + 2910 1 3062 3063 3064 + 2911 1 3063 3064 3065 + 2912 1 3064 3065 3066 + 2913 1 3065 3066 3067 + 2914 1 3066 3067 3068 + 2915 1 3067 3068 3069 + 2916 1 3068 3069 3070 + 2917 1 3069 3070 3071 + 2918 1 3070 3071 3072 + 2919 1 3071 3072 3073 + 2920 1 3072 3073 3074 + 2921 1 3073 3074 3075 + 2922 1 3074 3075 3076 + 2923 1 3075 3076 3077 + 2924 1 3076 3077 3078 + 2925 1 3077 3078 3079 + 2926 1 3078 3079 3080 + 2927 1 3081 3082 3083 + 2928 1 3082 3083 3084 + 2929 1 3083 3084 3085 + 2930 1 3084 3085 3086 + 2931 1 3085 3086 3087 + 2932 1 3086 3087 3088 + 2933 1 3087 3088 3089 + 2934 1 3088 3089 3090 + 2935 1 3089 3090 3091 + 2936 1 3090 3091 3092 + 2937 1 3091 3092 3093 + 2938 1 3092 3093 3094 + 2939 1 3093 3094 3095 + 2940 1 3094 3095 3096 + 2941 1 3095 3096 3097 + 2942 1 3096 3097 3098 + 2943 1 3097 3098 3099 + 2944 1 3098 3099 3100 + 2945 1 3099 3100 3101 + 2946 1 3100 3101 3102 + 2947 1 3101 3102 3103 + 2948 1 3102 3103 3104 + 2949 1 3103 3104 3105 + 2950 1 3104 3105 3106 + 2951 1 3105 3106 3107 + 2952 1 3106 3107 3108 + 2953 1 3107 3108 3109 + 2954 1 3108 3109 3110 + 2955 1 3109 3110 3111 + 2956 1 3110 3111 3112 + 2957 1 3111 3112 3113 + 2958 1 3112 3113 3114 + 2959 1 3113 3114 3115 + 2960 1 3114 3115 3116 + 2961 1 3115 3116 3117 + 2962 1 3116 3117 3118 + 2963 1 3117 3118 3119 + 2964 1 3118 3119 3120 + 2965 1 3121 3122 3123 + 2966 1 3122 3123 3124 + 2967 1 3123 3124 3125 + 2968 1 3124 3125 3126 + 2969 1 3125 3126 3127 + 2970 1 3126 3127 3128 + 2971 1 3127 3128 3129 + 2972 1 3128 3129 3130 + 2973 1 3129 3130 3131 + 2974 1 3130 3131 3132 + 2975 1 3131 3132 3133 + 2976 1 3132 3133 3134 + 2977 1 3133 3134 3135 + 2978 1 3134 3135 3136 + 2979 1 3135 3136 3137 + 2980 1 3136 3137 3138 + 2981 1 3137 3138 3139 + 2982 1 3138 3139 3140 + 2983 1 3139 3140 3141 + 2984 1 3140 3141 3142 + 2985 1 3141 3142 3143 + 2986 1 3142 3143 3144 + 2987 1 3143 3144 3145 + 2988 1 3144 3145 3146 + 2989 1 3145 3146 3147 + 2990 1 3146 3147 3148 + 2991 1 3147 3148 3149 + 2992 1 3148 3149 3150 + 2993 1 3149 3150 3151 + 2994 1 3150 3151 3152 + 2995 1 3151 3152 3153 + 2996 1 3152 3153 3154 + 2997 1 3153 3154 3155 + 2998 1 3154 3155 3156 + 2999 1 3155 3156 3157 + 3000 1 3156 3157 3158 + 3001 1 3157 3158 3159 + 3002 1 3158 3159 3160 + 3003 1 3161 3162 3163 + 3004 1 3162 3163 3164 + 3005 1 3163 3164 3165 + 3006 1 3164 3165 3166 + 3007 1 3165 3166 3167 + 3008 1 3166 3167 3168 + 3009 1 3167 3168 3169 + 3010 1 3168 3169 3170 + 3011 1 3169 3170 3171 + 3012 1 3170 3171 3172 + 3013 1 3171 3172 3173 + 3014 1 3172 3173 3174 + 3015 1 3173 3174 3175 + 3016 1 3174 3175 3176 + 3017 1 3175 3176 3177 + 3018 1 3176 3177 3178 + 3019 1 3177 3178 3179 + 3020 1 3178 3179 3180 + 3021 1 3179 3180 3181 + 3022 1 3180 3181 3182 + 3023 1 3181 3182 3183 + 3024 1 3182 3183 3184 + 3025 1 3183 3184 3185 + 3026 1 3184 3185 3186 + 3027 1 3185 3186 3187 + 3028 1 3186 3187 3188 + 3029 1 3187 3188 3189 + 3030 1 3188 3189 3190 + 3031 1 3189 3190 3191 + 3032 1 3190 3191 3192 + 3033 1 3191 3192 3193 + 3034 1 3192 3193 3194 + 3035 1 3193 3194 3195 + 3036 1 3194 3195 3196 + 3037 1 3195 3196 3197 + 3038 1 3196 3197 3198 + 3039 1 3197 3198 3199 + 3040 1 3198 3199 3200 + 3041 1 3201 3202 3203 + 3042 1 3202 3203 3204 + 3043 1 3203 3204 3205 + 3044 1 3204 3205 3206 + 3045 1 3205 3206 3207 + 3046 1 3206 3207 3208 + 3047 1 3207 3208 3209 + 3048 1 3208 3209 3210 + 3049 1 3209 3210 3211 + 3050 1 3210 3211 3212 + 3051 1 3211 3212 3213 + 3052 1 3212 3213 3214 + 3053 1 3213 3214 3215 + 3054 1 3214 3215 3216 + 3055 1 3215 3216 3217 + 3056 1 3216 3217 3218 + 3057 1 3217 3218 3219 + 3058 1 3218 3219 3220 + 3059 1 3219 3220 3221 + 3060 1 3220 3221 3222 + 3061 1 3221 3222 3223 + 3062 1 3222 3223 3224 + 3063 1 3223 3224 3225 + 3064 1 3224 3225 3226 + 3065 1 3225 3226 3227 + 3066 1 3226 3227 3228 + 3067 1 3227 3228 3229 + 3068 1 3228 3229 3230 + 3069 1 3229 3230 3231 + 3070 1 3230 3231 3232 + 3071 1 3231 3232 3233 + 3072 1 3232 3233 3234 + 3073 1 3233 3234 3235 + 3074 1 3234 3235 3236 + 3075 1 3235 3236 3237 + 3076 1 3236 3237 3238 + 3077 1 3237 3238 3239 + 3078 1 3238 3239 3240 + 3079 1 3241 3242 3243 + 3080 1 3242 3243 3244 + 3081 1 3243 3244 3245 + 3082 1 3244 3245 3246 + 3083 1 3245 3246 3247 + 3084 1 3246 3247 3248 + 3085 1 3247 3248 3249 + 3086 1 3248 3249 3250 + 3087 1 3249 3250 3251 + 3088 1 3250 3251 3252 + 3089 1 3251 3252 3253 + 3090 1 3252 3253 3254 + 3091 1 3253 3254 3255 + 3092 1 3254 3255 3256 + 3093 1 3255 3256 3257 + 3094 1 3256 3257 3258 + 3095 1 3257 3258 3259 + 3096 1 3258 3259 3260 + 3097 1 3259 3260 3261 + 3098 1 3260 3261 3262 + 3099 1 3261 3262 3263 + 3100 1 3262 3263 3264 + 3101 1 3263 3264 3265 + 3102 1 3264 3265 3266 + 3103 1 3265 3266 3267 + 3104 1 3266 3267 3268 + 3105 1 3267 3268 3269 + 3106 1 3268 3269 3270 + 3107 1 3269 3270 3271 + 3108 1 3270 3271 3272 + 3109 1 3271 3272 3273 + 3110 1 3272 3273 3274 + 3111 1 3273 3274 3275 + 3112 1 3274 3275 3276 + 3113 1 3275 3276 3277 + 3114 1 3276 3277 3278 + 3115 1 3277 3278 3279 + 3116 1 3278 3279 3280 + 3117 1 3281 3282 3283 + 3118 1 3282 3283 3284 + 3119 1 3283 3284 3285 + 3120 1 3284 3285 3286 + 3121 1 3285 3286 3287 + 3122 1 3286 3287 3288 + 3123 1 3287 3288 3289 + 3124 1 3288 3289 3290 + 3125 1 3289 3290 3291 + 3126 1 3290 3291 3292 + 3127 1 3291 3292 3293 + 3128 1 3292 3293 3294 + 3129 1 3293 3294 3295 + 3130 1 3294 3295 3296 + 3131 1 3295 3296 3297 + 3132 1 3296 3297 3298 + 3133 1 3297 3298 3299 + 3134 1 3298 3299 3300 + 3135 1 3299 3300 3301 + 3136 1 3300 3301 3302 + 3137 1 3301 3302 3303 + 3138 1 3302 3303 3304 + 3139 1 3303 3304 3305 + 3140 1 3304 3305 3306 + 3141 1 3305 3306 3307 + 3142 1 3306 3307 3308 + 3143 1 3307 3308 3309 + 3144 1 3308 3309 3310 + 3145 1 3309 3310 3311 + 3146 1 3310 3311 3312 + 3147 1 3311 3312 3313 + 3148 1 3312 3313 3314 + 3149 1 3313 3314 3315 + 3150 1 3314 3315 3316 + 3151 1 3315 3316 3317 + 3152 1 3316 3317 3318 + 3153 1 3317 3318 3319 + 3154 1 3318 3319 3320 + 3155 1 3321 3322 3323 + 3156 1 3322 3323 3324 + 3157 1 3323 3324 3325 + 3158 1 3324 3325 3326 + 3159 1 3325 3326 3327 + 3160 1 3326 3327 3328 + 3161 1 3327 3328 3329 + 3162 1 3328 3329 3330 + 3163 1 3329 3330 3331 + 3164 1 3330 3331 3332 + 3165 1 3331 3332 3333 + 3166 1 3332 3333 3334 + 3167 1 3333 3334 3335 + 3168 1 3334 3335 3336 + 3169 1 3335 3336 3337 + 3170 1 3336 3337 3338 + 3171 1 3337 3338 3339 + 3172 1 3338 3339 3340 + 3173 1 3339 3340 3341 + 3174 1 3340 3341 3342 + 3175 1 3341 3342 3343 + 3176 1 3342 3343 3344 + 3177 1 3343 3344 3345 + 3178 1 3344 3345 3346 + 3179 1 3345 3346 3347 + 3180 1 3346 3347 3348 + 3181 1 3347 3348 3349 + 3182 1 3348 3349 3350 + 3183 1 3349 3350 3351 + 3184 1 3350 3351 3352 + 3185 1 3351 3352 3353 + 3186 1 3352 3353 3354 + 3187 1 3353 3354 3355 + 3188 1 3354 3355 3356 + 3189 1 3355 3356 3357 + 3190 1 3356 3357 3358 + 3191 1 3357 3358 3359 + 3192 1 3358 3359 3360 + 3193 1 3361 3362 3363 + 3194 1 3362 3363 3364 + 3195 1 3363 3364 3365 + 3196 1 3364 3365 3366 + 3197 1 3365 3366 3367 + 3198 1 3366 3367 3368 + 3199 1 3367 3368 3369 + 3200 1 3368 3369 3370 + 3201 1 3369 3370 3371 + 3202 1 3370 3371 3372 + 3203 1 3371 3372 3373 + 3204 1 3372 3373 3374 + 3205 1 3373 3374 3375 + 3206 1 3374 3375 3376 + 3207 1 3375 3376 3377 + 3208 1 3376 3377 3378 + 3209 1 3377 3378 3379 + 3210 1 3378 3379 3380 + 3211 1 3379 3380 3381 + 3212 1 3380 3381 3382 + 3213 1 3381 3382 3383 + 3214 1 3382 3383 3384 + 3215 1 3383 3384 3385 + 3216 1 3384 3385 3386 + 3217 1 3385 3386 3387 + 3218 1 3386 3387 3388 + 3219 1 3387 3388 3389 + 3220 1 3388 3389 3390 + 3221 1 3389 3390 3391 + 3222 1 3390 3391 3392 + 3223 1 3391 3392 3393 + 3224 1 3392 3393 3394 + 3225 1 3393 3394 3395 + 3226 1 3394 3395 3396 + 3227 1 3395 3396 3397 + 3228 1 3396 3397 3398 + 3229 1 3397 3398 3399 + 3230 1 3398 3399 3400 + 3231 1 3401 3402 3403 + 3232 1 3402 3403 3404 + 3233 1 3403 3404 3405 + 3234 1 3404 3405 3406 + 3235 1 3405 3406 3407 + 3236 1 3406 3407 3408 + 3237 1 3407 3408 3409 + 3238 1 3408 3409 3410 + 3239 1 3409 3410 3411 + 3240 1 3410 3411 3412 + 3241 1 3411 3412 3413 + 3242 1 3412 3413 3414 + 3243 1 3413 3414 3415 + 3244 1 3414 3415 3416 + 3245 1 3415 3416 3417 + 3246 1 3416 3417 3418 + 3247 1 3417 3418 3419 + 3248 1 3418 3419 3420 + 3249 1 3419 3420 3421 + 3250 1 3420 3421 3422 + 3251 1 3421 3422 3423 + 3252 1 3422 3423 3424 + 3253 1 3423 3424 3425 + 3254 1 3424 3425 3426 + 3255 1 3425 3426 3427 + 3256 1 3426 3427 3428 + 3257 1 3427 3428 3429 + 3258 1 3428 3429 3430 + 3259 1 3429 3430 3431 + 3260 1 3430 3431 3432 + 3261 1 3431 3432 3433 + 3262 1 3432 3433 3434 + 3263 1 3433 3434 3435 + 3264 1 3434 3435 3436 + 3265 1 3435 3436 3437 + 3266 1 3436 3437 3438 + 3267 1 3437 3438 3439 + 3268 1 3438 3439 3440 + 3269 1 3441 3442 3443 + 3270 1 3442 3443 3444 + 3271 1 3443 3444 3445 + 3272 1 3444 3445 3446 + 3273 1 3445 3446 3447 + 3274 1 3446 3447 3448 + 3275 1 3447 3448 3449 + 3276 1 3448 3449 3450 + 3277 1 3449 3450 3451 + 3278 1 3450 3451 3452 + 3279 1 3451 3452 3453 + 3280 1 3452 3453 3454 + 3281 1 3453 3454 3455 + 3282 1 3454 3455 3456 + 3283 1 3455 3456 3457 + 3284 1 3456 3457 3458 + 3285 1 3457 3458 3459 + 3286 1 3458 3459 3460 + 3287 1 3459 3460 3461 + 3288 1 3460 3461 3462 + 3289 1 3461 3462 3463 + 3290 1 3462 3463 3464 + 3291 1 3463 3464 3465 + 3292 1 3464 3465 3466 + 3293 1 3465 3466 3467 + 3294 1 3466 3467 3468 + 3295 1 3467 3468 3469 + 3296 1 3468 3469 3470 + 3297 1 3469 3470 3471 + 3298 1 3470 3471 3472 + 3299 1 3471 3472 3473 + 3300 1 3472 3473 3474 + 3301 1 3473 3474 3475 + 3302 1 3474 3475 3476 + 3303 1 3475 3476 3477 + 3304 1 3476 3477 3478 + 3305 1 3477 3478 3479 + 3306 1 3478 3479 3480 + 3307 1 3481 3482 3483 + 3308 1 3482 3483 3484 + 3309 1 3483 3484 3485 + 3310 1 3484 3485 3486 + 3311 1 3485 3486 3487 + 3312 1 3486 3487 3488 + 3313 1 3487 3488 3489 + 3314 1 3488 3489 3490 + 3315 1 3489 3490 3491 + 3316 1 3490 3491 3492 + 3317 1 3491 3492 3493 + 3318 1 3492 3493 3494 + 3319 1 3493 3494 3495 + 3320 1 3494 3495 3496 + 3321 1 3495 3496 3497 + 3322 1 3496 3497 3498 + 3323 1 3497 3498 3499 + 3324 1 3498 3499 3500 + 3325 1 3499 3500 3501 + 3326 1 3500 3501 3502 + 3327 1 3501 3502 3503 + 3328 1 3502 3503 3504 + 3329 1 3503 3504 3505 + 3330 1 3504 3505 3506 + 3331 1 3505 3506 3507 + 3332 1 3506 3507 3508 + 3333 1 3507 3508 3509 + 3334 1 3508 3509 3510 + 3335 1 3509 3510 3511 + 3336 1 3510 3511 3512 + 3337 1 3511 3512 3513 + 3338 1 3512 3513 3514 + 3339 1 3513 3514 3515 + 3340 1 3514 3515 3516 + 3341 1 3515 3516 3517 + 3342 1 3516 3517 3518 + 3343 1 3517 3518 3519 + 3344 1 3518 3519 3520 + 3345 1 3521 3522 3523 + 3346 1 3522 3523 3524 + 3347 1 3523 3524 3525 + 3348 1 3524 3525 3526 + 3349 1 3525 3526 3527 + 3350 1 3526 3527 3528 + 3351 1 3527 3528 3529 + 3352 1 3528 3529 3530 + 3353 1 3529 3530 3531 + 3354 1 3530 3531 3532 + 3355 1 3531 3532 3533 + 3356 1 3532 3533 3534 + 3357 1 3533 3534 3535 + 3358 1 3534 3535 3536 + 3359 1 3535 3536 3537 + 3360 1 3536 3537 3538 + 3361 1 3537 3538 3539 + 3362 1 3538 3539 3540 + 3363 1 3539 3540 3541 + 3364 1 3540 3541 3542 + 3365 1 3541 3542 3543 + 3366 1 3542 3543 3544 + 3367 1 3543 3544 3545 + 3368 1 3544 3545 3546 + 3369 1 3545 3546 3547 + 3370 1 3546 3547 3548 + 3371 1 3547 3548 3549 + 3372 1 3548 3549 3550 + 3373 1 3549 3550 3551 + 3374 1 3550 3551 3552 + 3375 1 3551 3552 3553 + 3376 1 3552 3553 3554 + 3377 1 3553 3554 3555 + 3378 1 3554 3555 3556 + 3379 1 3555 3556 3557 + 3380 1 3556 3557 3558 + 3381 1 3557 3558 3559 + 3382 1 3558 3559 3560 + 3383 1 3561 3562 3563 + 3384 1 3562 3563 3564 + 3385 1 3563 3564 3565 + 3386 1 3564 3565 3566 + 3387 1 3565 3566 3567 + 3388 1 3566 3567 3568 + 3389 1 3567 3568 3569 + 3390 1 3568 3569 3570 + 3391 1 3569 3570 3571 + 3392 1 3570 3571 3572 + 3393 1 3571 3572 3573 + 3394 1 3572 3573 3574 + 3395 1 3573 3574 3575 + 3396 1 3574 3575 3576 + 3397 1 3575 3576 3577 + 3398 1 3576 3577 3578 + 3399 1 3577 3578 3579 + 3400 1 3578 3579 3580 + 3401 1 3579 3580 3581 + 3402 1 3580 3581 3582 + 3403 1 3581 3582 3583 + 3404 1 3582 3583 3584 + 3405 1 3583 3584 3585 + 3406 1 3584 3585 3586 + 3407 1 3585 3586 3587 + 3408 1 3586 3587 3588 + 3409 1 3587 3588 3589 + 3410 1 3588 3589 3590 + 3411 1 3589 3590 3591 + 3412 1 3590 3591 3592 + 3413 1 3591 3592 3593 + 3414 1 3592 3593 3594 + 3415 1 3593 3594 3595 + 3416 1 3594 3595 3596 + 3417 1 3595 3596 3597 + 3418 1 3596 3597 3598 + 3419 1 3597 3598 3599 + 3420 1 3598 3599 3600 + 3421 1 3601 3602 3603 + 3422 1 3602 3603 3604 + 3423 1 3603 3604 3605 + 3424 1 3604 3605 3606 + 3425 1 3605 3606 3607 + 3426 1 3606 3607 3608 + 3427 1 3607 3608 3609 + 3428 1 3608 3609 3610 + 3429 1 3609 3610 3611 + 3430 1 3610 3611 3612 + 3431 1 3611 3612 3613 + 3432 1 3612 3613 3614 + 3433 1 3613 3614 3615 + 3434 1 3614 3615 3616 + 3435 1 3615 3616 3617 + 3436 1 3616 3617 3618 + 3437 1 3617 3618 3619 + 3438 1 3618 3619 3620 + 3439 1 3619 3620 3621 + 3440 1 3620 3621 3622 + 3441 1 3621 3622 3623 + 3442 1 3622 3623 3624 + 3443 1 3623 3624 3625 + 3444 1 3624 3625 3626 + 3445 1 3625 3626 3627 + 3446 1 3626 3627 3628 + 3447 1 3627 3628 3629 + 3448 1 3628 3629 3630 + 3449 1 3629 3630 3631 + 3450 1 3630 3631 3632 + 3451 1 3631 3632 3633 + 3452 1 3632 3633 3634 + 3453 1 3633 3634 3635 + 3454 1 3634 3635 3636 + 3455 1 3635 3636 3637 + 3456 1 3636 3637 3638 + 3457 1 3637 3638 3639 + 3458 1 3638 3639 3640 + 3459 1 3641 3642 3643 + 3460 1 3642 3643 3644 + 3461 1 3643 3644 3645 + 3462 1 3644 3645 3646 + 3463 1 3645 3646 3647 + 3464 1 3646 3647 3648 + 3465 1 3647 3648 3649 + 3466 1 3648 3649 3650 + 3467 1 3649 3650 3651 + 3468 1 3650 3651 3652 + 3469 1 3651 3652 3653 + 3470 1 3652 3653 3654 + 3471 1 3653 3654 3655 + 3472 1 3654 3655 3656 + 3473 1 3655 3656 3657 + 3474 1 3656 3657 3658 + 3475 1 3657 3658 3659 + 3476 1 3658 3659 3660 + 3477 1 3659 3660 3661 + 3478 1 3660 3661 3662 + 3479 1 3661 3662 3663 + 3480 1 3662 3663 3664 + 3481 1 3663 3664 3665 + 3482 1 3664 3665 3666 + 3483 1 3665 3666 3667 + 3484 1 3666 3667 3668 + 3485 1 3667 3668 3669 + 3486 1 3668 3669 3670 + 3487 1 3669 3670 3671 + 3488 1 3670 3671 3672 + 3489 1 3671 3672 3673 + 3490 1 3672 3673 3674 + 3491 1 3673 3674 3675 + 3492 1 3674 3675 3676 + 3493 1 3675 3676 3677 + 3494 1 3676 3677 3678 + 3495 1 3677 3678 3679 + 3496 1 3678 3679 3680 + 3497 1 3681 3682 3683 + 3498 1 3682 3683 3684 + 3499 1 3683 3684 3685 + 3500 1 3684 3685 3686 + 3501 1 3685 3686 3687 + 3502 1 3686 3687 3688 + 3503 1 3687 3688 3689 + 3504 1 3688 3689 3690 + 3505 1 3689 3690 3691 + 3506 1 3690 3691 3692 + 3507 1 3691 3692 3693 + 3508 1 3692 3693 3694 + 3509 1 3693 3694 3695 + 3510 1 3694 3695 3696 + 3511 1 3695 3696 3697 + 3512 1 3696 3697 3698 + 3513 1 3697 3698 3699 + 3514 1 3698 3699 3700 + 3515 1 3699 3700 3701 + 3516 1 3700 3701 3702 + 3517 1 3701 3702 3703 + 3518 1 3702 3703 3704 + 3519 1 3703 3704 3705 + 3520 1 3704 3705 3706 + 3521 1 3705 3706 3707 + 3522 1 3706 3707 3708 + 3523 1 3707 3708 3709 + 3524 1 3708 3709 3710 + 3525 1 3709 3710 3711 + 3526 1 3710 3711 3712 + 3527 1 3711 3712 3713 + 3528 1 3712 3713 3714 + 3529 1 3713 3714 3715 + 3530 1 3714 3715 3716 + 3531 1 3715 3716 3717 + 3532 1 3716 3717 3718 + 3533 1 3717 3718 3719 + 3534 1 3718 3719 3720 + 3535 1 3721 3722 3723 + 3536 1 3722 3723 3724 + 3537 1 3723 3724 3725 + 3538 1 3724 3725 3726 + 3539 1 3725 3726 3727 + 3540 1 3726 3727 3728 + 3541 1 3727 3728 3729 + 3542 1 3728 3729 3730 + 3543 1 3729 3730 3731 + 3544 1 3730 3731 3732 + 3545 1 3731 3732 3733 + 3546 1 3732 3733 3734 + 3547 1 3733 3734 3735 + 3548 1 3734 3735 3736 + 3549 1 3735 3736 3737 + 3550 1 3736 3737 3738 + 3551 1 3737 3738 3739 + 3552 1 3738 3739 3740 + 3553 1 3739 3740 3741 + 3554 1 3740 3741 3742 + 3555 1 3741 3742 3743 + 3556 1 3742 3743 3744 + 3557 1 3743 3744 3745 + 3558 1 3744 3745 3746 + 3559 1 3745 3746 3747 + 3560 1 3746 3747 3748 + 3561 1 3747 3748 3749 + 3562 1 3748 3749 3750 + 3563 1 3749 3750 3751 + 3564 1 3750 3751 3752 + 3565 1 3751 3752 3753 + 3566 1 3752 3753 3754 + 3567 1 3753 3754 3755 + 3568 1 3754 3755 3756 + 3569 1 3755 3756 3757 + 3570 1 3756 3757 3758 + 3571 1 3757 3758 3759 + 3572 1 3758 3759 3760 + 3573 1 3761 3762 3763 + 3574 1 3762 3763 3764 + 3575 1 3763 3764 3765 + 3576 1 3764 3765 3766 + 3577 1 3765 3766 3767 + 3578 1 3766 3767 3768 + 3579 1 3767 3768 3769 + 3580 1 3768 3769 3770 + 3581 1 3769 3770 3771 + 3582 1 3770 3771 3772 + 3583 1 3771 3772 3773 + 3584 1 3772 3773 3774 + 3585 1 3773 3774 3775 + 3586 1 3774 3775 3776 + 3587 1 3775 3776 3777 + 3588 1 3776 3777 3778 + 3589 1 3777 3778 3779 + 3590 1 3778 3779 3780 + 3591 1 3779 3780 3781 + 3592 1 3780 3781 3782 + 3593 1 3781 3782 3783 + 3594 1 3782 3783 3784 + 3595 1 3783 3784 3785 + 3596 1 3784 3785 3786 + 3597 1 3785 3786 3787 + 3598 1 3786 3787 3788 + 3599 1 3787 3788 3789 + 3600 1 3788 3789 3790 + 3601 1 3789 3790 3791 + 3602 1 3790 3791 3792 + 3603 1 3791 3792 3793 + 3604 1 3792 3793 3794 + 3605 1 3793 3794 3795 + 3606 1 3794 3795 3796 + 3607 1 3795 3796 3797 + 3608 1 3796 3797 3798 + 3609 1 3797 3798 3799 + 3610 1 3798 3799 3800 + 3611 1 3801 3802 3803 + 3612 1 3802 3803 3804 + 3613 1 3803 3804 3805 + 3614 1 3804 3805 3806 + 3615 1 3805 3806 3807 + 3616 1 3806 3807 3808 + 3617 1 3807 3808 3809 + 3618 1 3808 3809 3810 + 3619 1 3809 3810 3811 + 3620 1 3810 3811 3812 + 3621 1 3811 3812 3813 + 3622 1 3812 3813 3814 + 3623 1 3813 3814 3815 + 3624 1 3814 3815 3816 + 3625 1 3815 3816 3817 + 3626 1 3816 3817 3818 + 3627 1 3817 3818 3819 + 3628 1 3818 3819 3820 + 3629 1 3819 3820 3821 + 3630 1 3820 3821 3822 + 3631 1 3821 3822 3823 + 3632 1 3822 3823 3824 + 3633 1 3823 3824 3825 + 3634 1 3824 3825 3826 + 3635 1 3825 3826 3827 + 3636 1 3826 3827 3828 + 3637 1 3827 3828 3829 + 3638 1 3828 3829 3830 + 3639 1 3829 3830 3831 + 3640 1 3830 3831 3832 + 3641 1 3831 3832 3833 + 3642 1 3832 3833 3834 + 3643 1 3833 3834 3835 + 3644 1 3834 3835 3836 + 3645 1 3835 3836 3837 + 3646 1 3836 3837 3838 + 3647 1 3837 3838 3839 + 3648 1 3838 3839 3840 + 3649 1 3841 3842 3843 + 3650 1 3842 3843 3844 + 3651 1 3843 3844 3845 + 3652 1 3844 3845 3846 + 3653 1 3845 3846 3847 + 3654 1 3846 3847 3848 + 3655 1 3847 3848 3849 + 3656 1 3848 3849 3850 + 3657 1 3849 3850 3851 + 3658 1 3850 3851 3852 + 3659 1 3851 3852 3853 + 3660 1 3852 3853 3854 + 3661 1 3853 3854 3855 + 3662 1 3854 3855 3856 + 3663 1 3855 3856 3857 + 3664 1 3856 3857 3858 + 3665 1 3857 3858 3859 + 3666 1 3858 3859 3860 + 3667 1 3859 3860 3861 + 3668 1 3860 3861 3862 + 3669 1 3861 3862 3863 + 3670 1 3862 3863 3864 + 3671 1 3863 3864 3865 + 3672 1 3864 3865 3866 + 3673 1 3865 3866 3867 + 3674 1 3866 3867 3868 + 3675 1 3867 3868 3869 + 3676 1 3868 3869 3870 + 3677 1 3869 3870 3871 + 3678 1 3870 3871 3872 + 3679 1 3871 3872 3873 + 3680 1 3872 3873 3874 + 3681 1 3873 3874 3875 + 3682 1 3874 3875 3876 + 3683 1 3875 3876 3877 + 3684 1 3876 3877 3878 + 3685 1 3877 3878 3879 + 3686 1 3878 3879 3880 + 3687 1 3881 3882 3883 + 3688 1 3882 3883 3884 + 3689 1 3883 3884 3885 + 3690 1 3884 3885 3886 + 3691 1 3885 3886 3887 + 3692 1 3886 3887 3888 + 3693 1 3887 3888 3889 + 3694 1 3888 3889 3890 + 3695 1 3889 3890 3891 + 3696 1 3890 3891 3892 + 3697 1 3891 3892 3893 + 3698 1 3892 3893 3894 + 3699 1 3893 3894 3895 + 3700 1 3894 3895 3896 + 3701 1 3895 3896 3897 + 3702 1 3896 3897 3898 + 3703 1 3897 3898 3899 + 3704 1 3898 3899 3900 + 3705 1 3899 3900 3901 + 3706 1 3900 3901 3902 + 3707 1 3901 3902 3903 + 3708 1 3902 3903 3904 + 3709 1 3903 3904 3905 + 3710 1 3904 3905 3906 + 3711 1 3905 3906 3907 + 3712 1 3906 3907 3908 + 3713 1 3907 3908 3909 + 3714 1 3908 3909 3910 + 3715 1 3909 3910 3911 + 3716 1 3910 3911 3912 + 3717 1 3911 3912 3913 + 3718 1 3912 3913 3914 + 3719 1 3913 3914 3915 + 3720 1 3914 3915 3916 + 3721 1 3915 3916 3917 + 3722 1 3916 3917 3918 + 3723 1 3917 3918 3919 + 3724 1 3918 3919 3920 + 3725 1 3921 3922 3923 + 3726 1 3922 3923 3924 + 3727 1 3923 3924 3925 + 3728 1 3924 3925 3926 + 3729 1 3925 3926 3927 + 3730 1 3926 3927 3928 + 3731 1 3927 3928 3929 + 3732 1 3928 3929 3930 + 3733 1 3929 3930 3931 + 3734 1 3930 3931 3932 + 3735 1 3931 3932 3933 + 3736 1 3932 3933 3934 + 3737 1 3933 3934 3935 + 3738 1 3934 3935 3936 + 3739 1 3935 3936 3937 + 3740 1 3936 3937 3938 + 3741 1 3937 3938 3939 + 3742 1 3938 3939 3940 + 3743 1 3939 3940 3941 + 3744 1 3940 3941 3942 + 3745 1 3941 3942 3943 + 3746 1 3942 3943 3944 + 3747 1 3943 3944 3945 + 3748 1 3944 3945 3946 + 3749 1 3945 3946 3947 + 3750 1 3946 3947 3948 + 3751 1 3947 3948 3949 + 3752 1 3948 3949 3950 + 3753 1 3949 3950 3951 + 3754 1 3950 3951 3952 + 3755 1 3951 3952 3953 + 3756 1 3952 3953 3954 + 3757 1 3953 3954 3955 + 3758 1 3954 3955 3956 + 3759 1 3955 3956 3957 + 3760 1 3956 3957 3958 + 3761 1 3957 3958 3959 + 3762 1 3958 3959 3960 + 3763 1 3961 3962 3963 + 3764 1 3962 3963 3964 + 3765 1 3963 3964 3965 + 3766 1 3964 3965 3966 + 3767 1 3965 3966 3967 + 3768 1 3966 3967 3968 + 3769 1 3967 3968 3969 + 3770 1 3968 3969 3970 + 3771 1 3969 3970 3971 + 3772 1 3970 3971 3972 + 3773 1 3971 3972 3973 + 3774 1 3972 3973 3974 + 3775 1 3973 3974 3975 + 3776 1 3974 3975 3976 + 3777 1 3975 3976 3977 + 3778 1 3976 3977 3978 + 3779 1 3977 3978 3979 + 3780 1 3978 3979 3980 + 3781 1 3979 3980 3981 + 3782 1 3980 3981 3982 + 3783 1 3981 3982 3983 + 3784 1 3982 3983 3984 + 3785 1 3983 3984 3985 + 3786 1 3984 3985 3986 + 3787 1 3985 3986 3987 + 3788 1 3986 3987 3988 + 3789 1 3987 3988 3989 + 3790 1 3988 3989 3990 + 3791 1 3989 3990 3991 + 3792 1 3990 3991 3992 + 3793 1 3991 3992 3993 + 3794 1 3992 3993 3994 + 3795 1 3993 3994 3995 + 3796 1 3994 3995 3996 + 3797 1 3995 3996 3997 + 3798 1 3996 3997 3998 + 3799 1 3997 3998 3999 + 3800 1 3998 3999 4000 diff --git a/examples/gcmc/data.spce b/examples/mc/data.spce similarity index 100% rename from examples/gcmc/data.spce rename to examples/mc/data.spce diff --git a/examples/gcmc/data.widom.lj b/examples/mc/data.widom.lj similarity index 100% rename from examples/gcmc/data.widom.lj rename to examples/mc/data.widom.lj diff --git a/examples/gcmc/in.gcmc.co2 b/examples/mc/in.gcmc.co2 similarity index 100% rename from examples/gcmc/in.gcmc.co2 rename to examples/mc/in.gcmc.co2 diff --git a/examples/gcmc/in.gcmc.h2o b/examples/mc/in.gcmc.h2o similarity index 100% rename from examples/gcmc/in.gcmc.h2o rename to examples/mc/in.gcmc.h2o diff --git a/examples/gcmc/in.gcmc.lj b/examples/mc/in.gcmc.lj similarity index 100% rename from examples/gcmc/in.gcmc.lj rename to examples/mc/in.gcmc.lj diff --git a/examples/mc/in.mixed b/examples/mc/in.mixed new file mode 100644 index 0000000000..318bb1312c --- /dev/null +++ b/examples/mc/in.mixed @@ -0,0 +1,44 @@ +# test script for fix mol/swap +# initial system is 50/50 chains of type 1 and type 2 +# b/c epsilon12 is set to 1.02 (weakly same as 1/1 or 1/2) the +# system will stay in equilibrium as a mix of both chain types +# fix mol/swap helps this happen quickly +# see the last 2 columns of thermo output for counts of 2 chain types + +units lj +atom_style angle +neighbor 0.36 bin +neigh_modify delay 0 + +pair_style lj/cut 1.1224620483 +bond_style fene +angle_style cosine +special_bonds lj 0.0 1.0 1.0 + +read_data data.bead + +pair_coeff * * 1.0 1.0 1.1224620483 +pair_coeff 1 2 1.02 1.0 1.1224620483 +bond_coeff 1 30.0 1.5 1.0 1.0 +angle_coeff 1 1.500 +pair_modify shift yes + +variable vt1 atom type==1 +variable vt2 atom type==2 +group g1 dynamic all var vt1 every 100 +group g2 dynamic all var vt2 every 100 +variable count1 equal count(g1) +variable count2 equal count(g2) + +timestep 0.010 + +fix 1 all langevin 1.0 1.0 100.0 702547 +fix 2 all nve +fix 3 all mol/swap 100 1 1 2 482794 1.0 + +compute p all pressure thermo_temp +thermo 1000 +thermo_style custom step temp etotal press f_3[1] f_3[2] v_count1 v_count2 + +run 50000 + diff --git a/examples/mc/in.pure b/examples/mc/in.pure new file mode 100644 index 0000000000..b12d2f7891 --- /dev/null +++ b/examples/mc/in.pure @@ -0,0 +1,44 @@ +# test script for fix mol/swap +# initial system is 50/50 chains of type 1 and type 2 +# b/c epsilon12 is set to 1.1 (stronger than 1/1 or 2/2) the +# system will go to equilibrium as mostly one type or the other +# fix mol/swap helps this happen quickly +# see the last 2 columns of thermo output for counts of 2 chain types + +units lj +atom_style angle +neighbor 0.36 bin +neigh_modify delay 0 + +pair_style lj/cut 1.1224620483 +bond_style fene +angle_style cosine +special_bonds lj 0.0 1.0 1.0 + +read_data data.bead + +pair_coeff * * 1.0 1.0 1.1224620483 +pair_coeff 1 2 1.1 1.0 1.1224620483 +bond_coeff 1 30.0 1.5 1.0 1.0 +angle_coeff 1 1.500 +pair_modify shift yes + +variable vt1 atom type==1 +variable vt2 atom type==2 +group g1 dynamic all var vt1 every 100 +group g2 dynamic all var vt2 every 100 +variable count1 equal count(g1) +variable count2 equal count(g2) + +timestep 0.010 + +fix 1 all langevin 1.0 1.0 100.0 702547 +fix 2 all nve +fix 3 all mol/swap 100 1 1 2 482794 1.0 + +compute p all pressure thermo_temp +thermo 1000 +thermo_style custom step temp etotal press f_3[1] f_3[2] v_count1 v_count2 + +run 50000 + diff --git a/examples/gcmc/in.widom.lj b/examples/mc/in.widom.lj similarity index 100% rename from examples/gcmc/in.widom.lj rename to examples/mc/in.widom.lj diff --git a/examples/gcmc/in.widom.spce b/examples/mc/in.widom.spce similarity index 100% rename from examples/gcmc/in.widom.spce rename to examples/mc/in.widom.spce diff --git a/examples/mc/log.13Oct21.mixed.g++.4 b/examples/mc/log.13Oct21.mixed.g++.4 new file mode 100644 index 0000000000..3602a17827 --- /dev/null +++ b/examples/mc/log.13Oct21.mixed.g++.4 @@ -0,0 +1,164 @@ +LAMMPS (29 Sep 2021) +# test script for fix mol/swap +# initial system is 50/50 chains of type 1 and type 2 +# b/c epsilon12 is set to 1.02 (weakly same as 1/1 or 1/2) the +# system will stay in equilibrium as a mix of both chain types +# fix mol/swap helps this happen quickly +# see the last 2 columns of thermo output for counts of 2 chain types + +units lj +atom_style angle +neighbor 0.36 bin +neigh_modify delay 0 + +pair_style lj/cut 1.1224620483 +bond_style fene +angle_style cosine +special_bonds lj 0.0 1.0 1.0 + +read_data data.bead +Reading data file ... + orthogonal box = (-8.2115700 -8.2115700 -8.2115700) to (8.2115700 8.2115700 8.2115700) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 4000 atoms + scanning bonds ... + 1 = max bonds/atom + scanning angles ... + 1 = max angles/atom + reading bonds ... + 3900 bonds + reading angles ... + 3800 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 2 = max # of 1-3 neighbors + 4 = max # of 1-4 neighbors + 6 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.028 seconds + +pair_coeff * * 1.0 1.0 1.1224620483 +pair_coeff 1 2 1.02 1.0 1.1224620483 +bond_coeff 1 30.0 1.5 1.0 1.0 +angle_coeff 1 1.500 +pair_modify shift yes + +variable vt1 atom type==1 +variable vt2 atom type==2 +group g1 dynamic all var vt1 every 100 +dynamic group g1 defined +group g2 dynamic all var vt2 every 100 +dynamic group g2 defined +variable count1 equal count(g1) +variable count2 equal count(g2) + +timestep 0.010 + +fix 1 all langevin 1.0 1.0 100.0 702547 +fix 2 all nve +fix 3 all mol/swap 100 1 1 2 482794 1.0 + +compute p all pressure thermo_temp +thermo 1000 +thermo_style custom step temp etotal press f_3[1] f_3[2] v_count1 v_count2 + +run 50000 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.482462 + ghost atom cutoff = 1.482462 + binsize = 0.74123102, bins = 23 23 23 + 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 + bin: standard +WARNING: Communication cutoff 1.4824620483 is shorter than a bond length based estimate of 1.815. This may lead to errors. (../comm.cpp:728) +Per MPI rank memory allocation (min/avg/max) = 5.313 | 5.314 | 5.314 Mbytes +Step Temp TotEng Press f_3[1] f_3[2] v_count1 v_count2 + 0 0 21.451627 5.079399 0 0 2000 2000 + 1000 0.49011138 21.59359 4.2337989 10 10 2000 2000 + 2000 0.55288866 21.724374 4.4596786 20 20 2080 1920 + 3000 0.59299724 21.844178 4.6112243 30 29 2280 1720 + 4000 0.64746348 21.964318 4.9463669 40 39 2280 1720 + 5000 0.67853936 22.053147 5.1950218 50 48 2320 1680 + 6000 0.70751144 22.147453 5.0636869 60 58 2240 1760 + 7000 0.73570064 22.233705 5.4872622 70 68 2160 1840 + 8000 0.7677554 22.312938 5.4283736 80 77 2360 1640 + 9000 0.78493237 22.383155 5.8547233 90 87 2440 1560 + 10000 0.80634514 22.449402 5.8785731 100 96 2400 1600 + 11000 0.82563194 22.475286 5.8193738 110 104 2400 1600 + 12000 0.81684024 22.527492 6.0323967 120 114 2320 1680 + 13000 0.84497155 22.567888 6.0488755 130 122 2240 1760 + 14000 0.85452242 22.606908 6.1983634 140 132 2080 1920 + 15000 0.88109242 22.654336 6.1408279 150 141 1960 2040 + 16000 0.88925915 22.707597 6.1560975 160 150 2000 2000 + 17000 0.91598439 22.762791 6.1071728 170 160 2000 2000 + 18000 0.92453211 22.778304 6.3330693 180 170 2240 1760 + 19000 0.92839551 22.797316 6.2917909 190 180 2000 2000 + 20000 0.93054033 22.819289 6.091701 200 189 2200 1800 + 21000 0.93955351 22.844135 6.5833013 210 198 2000 2000 + 22000 0.94454858 22.856272 6.5661753 220 207 2200 1800 + 23000 0.95446407 22.878735 6.5957294 230 216 2160 1840 + 24000 0.94748257 22.894539 6.6187447 240 226 1920 2080 + 25000 0.95732202 22.912292 6.4795471 250 236 1680 2320 + 26000 0.96970172 22.908988 6.537366 260 245 1720 2280 + 27000 0.96032166 22.924899 6.6238248 270 255 1960 2040 + 28000 0.96197769 22.9358 6.8926097 280 264 1920 2080 + 29000 0.98745595 22.964694 6.5839025 290 271 2040 1960 + 30000 0.99264869 22.947884 6.3893499 300 280 1920 2080 + 31000 0.96953069 22.957927 6.6616047 310 289 1800 2200 + 32000 0.99955117 22.963979 6.5958456 320 298 1680 2320 + 33000 0.97090103 22.969029 6.9087296 330 307 1800 2200 + 34000 0.99818457 22.988477 6.6471994 340 316 1920 2080 + 35000 0.9965288 22.992883 6.9691785 350 325 2040 1960 + 36000 0.99533174 22.983774 6.6585089 360 334 2000 2000 + 37000 0.98819278 22.995387 6.618802 370 344 2080 1920 + 38000 0.99598576 22.991892 6.7536669 380 354 2080 1920 + 39000 0.99312702 22.989239 6.4028165 390 364 2080 1920 + 40000 1.0035821 23.001944 6.9307671 400 374 1920 2080 + 41000 0.99914733 23.00134 6.6251677 410 383 1880 2120 + 42000 0.98054536 22.981781 6.5918554 420 393 1880 2120 + 43000 0.99413829 23.008 6.7390795 430 403 1720 2280 + 44000 0.98867961 23.00521 6.8505543 440 412 1600 2400 + 45000 0.99626811 23.019995 6.827741 450 421 1640 2360 + 46000 1.0186043 23.020759 6.6195562 460 430 1680 2320 + 47000 1.0121335 23.019271 6.6022102 470 439 1800 2200 + 48000 0.99883756 23.013973 6.5255522 480 448 1920 2080 + 49000 0.99425223 23.022708 6.609746 490 458 2240 1760 + 50000 0.99505489 23.012641 6.4592863 500 468 2240 1760 +Loop time of 19.4175 on 4 procs for 50000 steps with 4000 atoms + +Performance: 2224796.830 tau/day, 2574.996 timesteps/s +95.0% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.5467 | 2.6684 | 2.7896 | 6.3 | 13.74 +Bond | 2.3037 | 2.4117 | 2.5085 | 5.3 | 12.42 +Neigh | 7.3597 | 7.3633 | 7.3673 | 0.1 | 37.92 +Comm | 3.0482 | 3.2694 | 3.4997 | 10.2 | 16.84 +Output | 0.0014609 | 0.0017069 | 0.0021793 | 0.7 | 0.01 +Modify | 2.9624 | 3.0581 | 3.1424 | 4.7 | 15.75 +Other | | 0.6447 | | | 3.32 + +Nlocal: 1000.00 ave 1013 max 986 min +Histogram: 1 0 0 1 0 0 0 1 0 1 +Nghost: 1186.25 ave 1198 max 1178 min +Histogram: 2 0 0 0 0 0 1 0 0 1 +Neighs: 4927.00 ave 5028 max 4790 min +Histogram: 1 0 0 0 0 1 0 1 0 1 + +Total # of neighbors = 19708 +Ave neighs/atom = 4.9270000 +Ave special neighs/atom = 5.7000000 +Neighbor list builds = 10721 +Dangerous builds = 0 + +Total wall time: 0:00:19 diff --git a/examples/mc/log.13Oct21.pure.g++.4 b/examples/mc/log.13Oct21.pure.g++.4 new file mode 100644 index 0000000000..46f29bf6e4 --- /dev/null +++ b/examples/mc/log.13Oct21.pure.g++.4 @@ -0,0 +1,164 @@ +LAMMPS (29 Sep 2021) +# test script for fix mol/swap +# initial system is 50/50 chains of type 1 and type 2 +# b/c epsilon12 is set to 1.1 (stronger than 1/1 or 2/2) the +# system will go to equilibrium as mostly one type or the other +# fix mol/swap helps this happen quickly +# see the last 2 columns of thermo output for counts of 2 chain types + +units lj +atom_style angle +neighbor 0.36 bin +neigh_modify delay 0 + +pair_style lj/cut 1.1224620483 +bond_style fene +angle_style cosine +special_bonds lj 0.0 1.0 1.0 + +read_data data.bead +Reading data file ... + orthogonal box = (-8.2115700 -8.2115700 -8.2115700) to (8.2115700 8.2115700 8.2115700) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 4000 atoms + scanning bonds ... + 1 = max bonds/atom + scanning angles ... + 1 = max angles/atom + reading bonds ... + 3900 bonds + reading angles ... + 3800 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 1 1 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 2 = max # of 1-3 neighbors + 4 = max # of 1-4 neighbors + 6 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.034 seconds + +pair_coeff * * 1.0 1.0 1.1224620483 +pair_coeff 1 2 1.1 1.0 1.1224620483 +bond_coeff 1 30.0 1.5 1.0 1.0 +angle_coeff 1 1.500 +pair_modify shift yes + +variable vt1 atom type==1 +variable vt2 atom type==2 +group g1 dynamic all var vt1 every 100 +dynamic group g1 defined +group g2 dynamic all var vt2 every 100 +dynamic group g2 defined +variable count1 equal count(g1) +variable count2 equal count(g2) + +timestep 0.010 + +fix 1 all langevin 1.0 1.0 100.0 702547 +fix 2 all nve +fix 3 all mol/swap 100 1 1 2 482794 1.0 + +compute p all pressure thermo_temp +thermo 1000 +thermo_style custom step temp etotal press f_3[1] f_3[2] v_count1 v_count2 + +run 50000 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.482462 + ghost atom cutoff = 1.482462 + binsize = 0.74123102, bins = 23 23 23 + 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 + bin: standard +WARNING: Communication cutoff 1.4824620483 is shorter than a bond length based estimate of 1.815. This may lead to errors. (../comm.cpp:728) +Per MPI rank memory allocation (min/avg/max) = 5.313 | 5.314 | 5.314 Mbytes +Step Temp TotEng Press f_3[1] f_3[2] v_count1 v_count2 + 0 0 21.4699 5.230121 0 0 2000 2000 + 1000 0.50228459 21.61044 4.3659303 10 9 1960 2040 + 2000 0.55721903 21.75955 4.5695439 20 17 1960 2040 + 3000 0.61139287 21.892943 4.6514755 30 26 2240 1760 + 4000 0.65767189 22.002303 5.1854503 40 33 2280 1720 + 5000 0.69383416 22.110271 5.3803498 50 41 2280 1720 + 6000 0.72692038 22.205887 5.1756569 60 49 2280 1720 + 7000 0.77151336 22.306777 5.5743555 70 56 2240 1760 + 8000 0.78606858 22.37036 5.7745208 80 64 2560 1440 + 9000 0.79363653 22.420931 5.7369418 90 71 2680 1320 + 10000 0.82352629 22.488759 6.0238896 100 76 2720 1280 + 11000 0.83867685 22.534887 6.1263771 110 82 2800 1200 + 12000 0.85335127 22.590281 6.1499954 120 86 2800 1200 + 13000 0.86430985 22.632068 6.1654016 130 89 2760 1240 + 14000 0.88057592 22.680253 6.2162735 140 94 2800 1200 + 15000 0.89326694 22.719731 6.4789839 150 97 2760 1240 + 16000 0.90667644 22.737367 6.214481 160 101 2760 1240 + 17000 0.91190336 22.758572 6.2293336 170 105 2600 1400 + 18000 0.93182455 22.782019 6.2865382 180 111 2680 1320 + 19000 0.93002139 22.797048 6.5579988 190 117 2600 1400 + 20000 0.92396243 22.796108 6.6207461 200 122 2800 1200 + 21000 0.92949808 22.802813 6.3753268 210 125 2920 1080 + 22000 0.93415719 22.807112 6.4696121 220 130 3040 960 + 23000 0.9214833 22.82116 6.4146288 230 131 3080 920 + 24000 0.95693685 22.839738 6.4035728 240 135 2920 1080 + 25000 0.95421851 22.865199 6.4510751 250 138 2880 1120 + 26000 0.95476555 22.878082 6.4652888 260 145 3000 1000 + 27000 0.95773535 22.880671 6.757952 270 149 3000 1000 + 28000 0.95405332 22.896053 6.7425175 280 155 3080 920 + 29000 0.95955713 22.904144 6.6672832 290 161 3240 760 + 30000 0.95521498 22.886699 6.6197941 300 164 3360 640 + 31000 0.96431176 22.91094 6.6373887 310 168 3440 560 + 32000 0.96592495 22.903679 6.4245884 320 172 3520 480 + 33000 0.96457971 22.922681 6.6987987 330 175 3480 520 + 34000 0.96541889 22.92116 6.5992755 340 178 3600 400 + 35000 0.96892691 22.923361 6.7973298 350 178 3600 400 + 36000 0.97267726 22.923431 6.6577403 360 179 3640 360 + 37000 0.97514714 22.939979 6.4028068 370 183 3640 360 + 38000 0.98638599 22.952022 6.6518868 380 183 3640 360 + 39000 0.97864891 22.962534 6.3906837 390 184 3680 320 + 40000 0.9933016 22.975785 6.6819613 400 185 3720 280 + 41000 0.9861477 22.977271 6.6747347 410 187 3800 200 + 42000 0.98157369 22.963129 6.830028 420 187 3800 200 + 43000 0.98202452 22.966947 6.5257905 430 187 3800 200 + 44000 0.99540503 22.971262 6.5546513 440 187 3800 200 + 45000 0.98433653 22.978028 6.4316725 450 189 3800 200 + 46000 0.97912775 22.981328 6.9139851 460 189 3800 200 + 47000 0.9791927 22.981131 6.6417971 470 190 3840 160 + 48000 0.99601024 22.998536 6.6756953 480 191 3880 120 + 49000 0.99589958 22.998489 6.9262843 490 191 3880 120 + 50000 0.99294715 23.00399 6.6976013 500 192 3920 80 +Loop time of 19.5161 on 4 procs for 50000 steps with 4000 atoms + +Performance: 2213556.537 tau/day, 2561.987 timesteps/s +95.0% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.6256 | 2.7183 | 2.8265 | 5.2 | 13.93 +Bond | 2.3363 | 2.4406 | 2.5197 | 4.8 | 12.51 +Neigh | 7.382 | 7.3884 | 7.3936 | 0.2 | 37.86 +Comm | 3.014 | 3.2136 | 3.3994 | 9.4 | 16.47 +Output | 0.0014574 | 0.0017086 | 0.0020613 | 0.5 | 0.01 +Modify | 3.0282 | 3.1295 | 3.2034 | 4.1 | 16.04 +Other | | 0.624 | | | 3.20 + +Nlocal: 1000.00 ave 1011 max 993 min +Histogram: 2 0 0 0 0 1 0 0 0 1 +Nghost: 1187.25 ave 1202 max 1179 min +Histogram: 2 0 0 1 0 0 0 0 0 1 +Neighs: 4939.25 ave 5067 max 4850 min +Histogram: 1 0 0 2 0 0 0 0 0 1 + +Total # of neighbors = 19757 +Ave neighs/atom = 4.9392500 +Ave special neighs/atom = 5.7000000 +Neighbor list builds = 10714 +Dangerous builds = 0 + +Total wall time: 0:00:19 diff --git a/examples/gcmc/log.27Nov18.gcmc.h2o.g++.1 b/examples/mc/log.27Nov18.gcmc.h2o.g++.1 similarity index 100% rename from examples/gcmc/log.27Nov18.gcmc.h2o.g++.1 rename to examples/mc/log.27Nov18.gcmc.h2o.g++.1 diff --git a/examples/gcmc/log.27Nov18.gcmc.lj.g++.1 b/examples/mc/log.27Nov18.gcmc.lj.g++.1 similarity index 100% rename from examples/gcmc/log.27Nov18.gcmc.lj.g++.1 rename to examples/mc/log.27Nov18.gcmc.lj.g++.1 diff --git a/examples/gcmc/log.27Nov18.gcmc.lj.g++.4 b/examples/mc/log.27Nov18.gcmc.lj.g++.4 similarity index 100% rename from examples/gcmc/log.27Nov18.gcmc.lj.g++.4 rename to examples/mc/log.27Nov18.gcmc.lj.g++.4 diff --git a/examples/gcmc/log.30Jun20.widom.lj.g++.1 b/examples/mc/log.30Jun20.widom.lj.g++.1 similarity index 100% rename from examples/gcmc/log.30Jun20.widom.lj.g++.1 rename to examples/mc/log.30Jun20.widom.lj.g++.1 diff --git a/examples/gcmc/log.30Jun20.widom.lj.g++.4 b/examples/mc/log.30Jun20.widom.lj.g++.4 similarity index 100% rename from examples/gcmc/log.30Jun20.widom.lj.g++.4 rename to examples/mc/log.30Jun20.widom.lj.g++.4 diff --git a/examples/gcmc/log.30Jun20.widom.spce.g++.1 b/examples/mc/log.30Jun20.widom.spce.g++.1 similarity index 100% rename from examples/gcmc/log.30Jun20.widom.spce.g++.1 rename to examples/mc/log.30Jun20.widom.spce.g++.1 diff --git a/examples/gcmc/log.31Mar21.gcmc.co2.g++.1 b/examples/mc/log.31Mar21.gcmc.co2.g++.1 similarity index 100% rename from examples/gcmc/log.31Mar21.gcmc.co2.g++.1 rename to examples/mc/log.31Mar21.gcmc.co2.g++.1 diff --git a/examples/reaxff/water/acks2_ff.water b/examples/reaxff/water/acks2_ff.water new file mode 120000 index 0000000000..26dd420190 --- /dev/null +++ b/examples/reaxff/water/acks2_ff.water @@ -0,0 +1 @@ +../../../potentials/acks2_ff.water \ No newline at end of file diff --git a/examples/reaxff/water/data.water b/examples/reaxff/water/data.water new file mode 100644 index 0000000000..5da2c434eb --- /dev/null +++ b/examples/reaxff/water/data.water @@ -0,0 +1,3016 @@ +LAMMPS data file + +3000 atoms +2 atom types + +0.0000000000000000e+00 3.1043045599999999e+01 xlo xhi +0.0000000000000000e+00 3.1043045599999999e+01 ylo yhi +0.0000000000000000e+00 3.1043045599999999e+01 zlo zhi + +Masses + +1 15.9994 +2 1.008 + +Atoms # charge + +1497 2 3.8692754524846124e-01 4.4005135488793817e-01 6.8027067297961290e+00 5.5831272410063155e+00 1 1 0 +2401 1 -7.3547395604658661e-01 2.8088432936816430e+00 5.9999842940434611e+00 7.5341673350383074e+00 0 0 1 +498 2 3.0554141478230923e-01 3.1386470457186180e+00 2.2943733261485031e+00 5.1875440798585783e+00 0 0 0 +496 1 -7.5716565194584284e-01 3.8873560175490196e+00 2.3951000308343597e+00 4.5394769377363851e+00 0 0 0 +497 2 3.7474917326292168e-01 3.7024128468444144e+00 3.2217803242562795e+00 4.1929178141452947e+00 0 0 0 +141 2 3.2819006595815370e-01 2.5785003546035381e+00 5.9522998290113884e+00 5.8385480391059792e+00 0 0 0 +139 1 -7.7172999478983184e-01 2.0053458831978461e+00 5.9351684255357595e+00 4.9823207910634197e+00 0 0 0 +140 2 3.4612974959574128e-01 1.9901552204785218e+00 4.9986259421397863e+00 4.6918048080889641e+00 0 0 0 +1528 1 -7.5149674240312681e-01 1.2212058305113851e+00 3.1560995554557962e+00 5.1718212890067647e+00 0 0 1 +1530 2 3.7575023559399656e-01 1.0614876365158610e+00 2.8589915602608413e+00 4.2601977545295187e+00 0 0 1 +239 2 3.1918884951446297e-01 3.4548424578221191e+00 6.8686033008322411e+00 4.0968412335733095e+00 0 0 0 +1631 2 3.6861828487030079e-01 3.9941113970107973e+00 8.2656574262085822e+00 3.7036119701634340e+00 0 0 1 +238 1 -7.2526545622797589e-01 4.2937849132106294e+00 7.3521044049343605e+00 3.8476838702946998e+00 0 0 0 +1529 2 3.8946339762840293e-01 4.7692250699647681e-01 2.8107643958401316e+00 5.8055619177966395e+00 0 0 1 +803 2 3.6060640616141898e-01 5.1999339494958026e+00 7.1414015202400929e+00 5.2920488833458919e+00 0 0 0 +25 1 -6.8827487728119863e-01 3.0985740485415683e+01 2.1645132256403783e+00 7.1925310016229442e+00 -1 0 0 +27 2 3.9080868164496113e-01 3.1038026593265343e+01 1.2354407250465411e+00 6.7561483851304862e+00 -1 0 0 +2163 2 3.6472103780410930e-01 4.6878345557312040e-01 4.4573173444597218e+00 8.2821613647545185e+00 1 1 0 +1496 2 3.6063498463225496e-01 5.7206768577255742e+00 2.4384675008031360e+00 7.1873570706862715e+00 1 1 0 +115 1 -7.4965480601589229e-01 3.9517920662385966e+00 4.5447061663723476e+00 2.6662584102276901e+00 0 0 0 +1085 2 3.3764339144646993e-01 3.9978584926219818e+00 5.4230104078563821e+00 3.1053878503627486e+00 0 1 0 +314 2 3.5708750153667096e-01 1.0310030023560768e+00 6.7316041319369146e+00 3.3734266629564154e+00 0 0 0 +819 2 3.6128343578796446e-01 4.0463343017695772e+00 7.1003506727668608e-01 3.6622194337536271e+00 0 1 0 +2403 2 3.5806910955956361e-01 3.1226344268198925e+00 5.0377455961668165e+00 7.5171760439731976e+00 0 0 1 +1574 2 3.5863203818711292e-01 4.9947645983585964e+00 1.2493041620163177e+00 5.6377122255901835e+00 0 0 1 +116 2 3.4196008866457084e-01 4.7958254257633097e+00 4.5134813120446164e+00 2.1983078109383745e+00 0 0 0 +1636 1 -7.3478551595100094e-01 5.6121875121579743e+00 9.8694416382053440e-01 6.3597906501324371e+00 0 0 1 +2065 1 -6.8215047066870260e-01 1.6875908310066173e+01 1.1238310027866776e+01 5.4081336330899350e-02 0 0 1 +802 1 -7.2240461296520764e-01 6.0892988070798753e+00 7.3641709926087646e+00 5.7407764588525003e+00 0 0 0 +59 2 3.5081337980355071e-01 1.3604526173929814e+00 2.3513564015736548e+00 2.0377862637213977e+00 0 0 0 +33 2 3.6353567283317345e-01 3.0775061814683362e+01 6.5696256871609071e+00 2.6276539222916169e+00 -1 0 0 +2127 2 3.8311301768239048e-01 3.6974335831421676e+00 2.7027373781194757e+00 1.4961865571696141e+01 1 0 0 +550 1 -7.4281091881652961e-01 2.3465162274577466e+01 9.3744257059057343e+00 1.5241859744894187e+01 0 0 0 +309 2 3.7176965299895415e-01 1.4990887604490121e+01 2.5382454665563348e-01 2.1346503640246048e+00 0 0 0 +2232 2 3.4815014742283323e-01 8.5202267262527187e-01 5.3847185145336800e+00 4.3093648474523089e-01 1 0 1 +226 1 -7.4722095769484009e-01 6.0692884597532881e+00 2.3731132049765241e-01 1.3056780543916178e+00 0 0 0 +1637 2 3.6806353395792374e-01 6.5164572239659728e+00 8.5646744910183303e-01 5.9444090391217541e+00 0 0 1 +260 2 3.5228697506239837e-01 5.8972736974633246e+00 7.8289186664455324e+00 6.5863339763837985e+00 0 0 0 +1086 2 3.2722459596763726e-01 7.0330455928520674e+00 5.8850176611591190e+00 6.8095906828009625e+00 0 1 0 +1840 1 -6.9152209464673109e-01 7.3245865814791085e+00 7.9057953792723765e+00 1.2980778971057452e+00 0 0 1 +2612 2 4.1176928679744829e-01 7.0756137615931474e+00 8.4166252144604954e+00 2.1531585977535128e+00 0 1 1 +1842 2 3.6725157545857429e-01 8.3748740565416746e+00 7.8690080028348319e+00 1.3560226011424448e+00 0 0 1 +963 2 4.1022870020113211e-01 9.9106967870758638e+00 8.0146702338176699e+00 7.2466157795297530e+00 0 0 0 +1084 1 -7.4044322693270392e-01 7.6057467080876133e+00 5.0781976218288616e+00 6.7743760963270709e+00 0 1 0 +1663 1 -7.1834560936369407e-01 9.9879391215874271e+00 8.0388811719689492e+00 1.2917807541733919e+00 0 0 1 +821 2 3.5209674216131409e-01 6.9247313199235387e+00 4.3047612584180914e+00 6.9943975000286365e+00 0 1 0 +1791 2 4.0841331548659748e-01 7.7878722270508298e+00 5.3818187244858136e+00 5.1636842205127689e+00 0 0 1 +2023 1 -7.3605189371990465e-01 1.1063137080072600e+01 6.0098264472003251e+00 4.7345199683786516e+00 0 0 1 +1664 2 3.6238506868933806e-01 1.0108354841357976e+01 8.8072390044573137e+00 1.9305013188119438e+00 0 0 1 +1767 2 3.6100076072975557e-01 1.1741733648682450e+01 5.8658042545439084e+00 5.4513143091575005e+00 0 0 1 +2311 1 -7.3005291084991386e-01 8.3020764393069832e+00 5.1948566338776221e+00 4.3179489922325596e+00 0 1 1 +2312 2 3.9274744365696557e-01 9.1759366291491578e+00 5.5291322309174307e+00 4.3792866152146628e+00 0 1 1 +303 2 3.8608151180006473e-01 1.2482611497403401e+01 1.6658621953141555e+00 7.1576373240832911e+00 0 0 0 +1853 2 3.8557910794412215e-01 6.6913261295433673e+00 8.6875135976398994e+00 4.3705239171971151e+00 0 0 1 +1852 1 -7.6091540778352407e-01 6.8668361281846897e+00 9.2238953384065479e+00 3.5736208524521458e+00 0 0 1 +829 1 -7.3432390170804673e-01 1.2651767705075731e+01 2.5248313732060534e+00 7.4965512157935255e+00 0 1 0 +2875 1 -6.8813502015404293e-01 9.1874051384777449e+00 7.6860288086314632e-01 7.6608447591038757e+00 1 1 0 +2759 2 3.7682339456265845e-01 8.5249450804126656e+00 3.3731054837881027e+00 4.0641841504019780e+00 0 1 1 +249 2 3.6791165233171941e-01 7.2214553136648609e+00 4.7206182695467334e+00 2.3723286638248067e+00 0 0 0 +993 2 3.9800531948136814e-01 7.9893180393450729e+00 1.2276942134777038e+00 4.9666634620494534e+00 0 1 0 +401 2 3.6396631747563196e-01 7.2262707803170203e+00 5.8369412728614911e+00 1.3803763554044857e+00 0 0 0 +247 1 -7.0764043316735903e-01 7.0942828324841241e+00 4.9106461584568386e+00 1.4288882775766745e+00 0 0 0 +1103 2 3.7230345163383838e-01 1.1235962979488763e+01 5.4404357695885279e+00 3.9635214837262134e+00 0 1 1 +2876 2 3.9583804731902583e-01 9.0582611669642077e+00 1.2231093581437821e-01 8.4012470775560555e+00 1 1 0 +1011 2 3.1959728574581830e-01 1.2437946514638131e+01 1.8732979306873965e+00 3.6181266905009841e+00 0 1 0 +1893 2 3.7036844773404975e-01 1.1900156966658409e+01 7.4502596457796590e+00 3.8797921320454436e+00 0 0 0 +2877 2 3.7223487628956575e-01 1.0152687605106527e+01 7.0850125780251816e-01 7.3676117410643789e+00 1 1 0 +1841 2 3.9790957842087205e-01 9.8835907129974281e+00 8.4957358744048488e+00 4.8066780575509332e-01 0 0 1 +203 2 3.6407021234816317e-01 9.4391284270869331e+00 2.2161312855505408e+00 3.4466407008994877e+00 0 0 0 +2466 2 3.9557744289353053e-01 1.0478382294700539e+01 1.9034549670425855e+00 1.1912053570753032e+00 0 1 0 +1700 2 3.4174585658026774e-01 7.6681567751202886e+00 4.9737131302251258e+00 8.6429890150973634e+00 0 0 0 +218 2 3.9489709747944879e-01 1.0903840596118812e+01 5.9682168503065460e+00 7.8542237295695791e+00 0 0 0 +202 1 -6.9246227426584595e-01 8.5034914220925781e+00 2.4316557415608751e+00 3.8001377954723088e+00 0 0 0 +1104 2 4.1528548950455579e-01 8.3645436315872566e+00 3.1379844007295282e-01 6.1604329151249164e+00 0 1 1 +991 1 -7.6182583273993854e-01 8.0263667515679185e+00 3.4744605461058575e-01 5.2922470899230607e+00 0 1 0 +102 2 3.6492516758405213e-01 8.0013989365832714e+00 1.4028078508187747e+00 1.5379165763135083e+01 0 0 0 +2029 1 -7.8283617067763300e-01 1.2424136860279537e+01 5.4791209410548314e+00 7.1612535440534977e+00 0 0 1 +2025 2 3.5494230815894440e-01 1.2591724131934392e+01 4.5209311627752200e+00 7.2145026163518384e+00 0 0 1 +2031 2 3.9304550594436322e-01 1.3267174250891356e+01 5.8828315339307844e+00 7.3758229847280052e+00 0 0 1 +1111 1 -7.5194924903800975e-01 1.1789258909767749e+01 4.2473893606497439e+00 2.7973156311830794e+00 0 1 0 +1112 2 3.8149161266254628e-01 1.1325719951844707e+01 3.5140850737691274e+00 2.4518247585030761e+00 0 1 0 +1009 1 -6.7933790730634036e-01 1.2973399971679061e+01 1.2394482882933624e+00 4.1644406722513532e+00 0 1 0 +1113 2 3.2793652825314779e-01 1.2508853849264057e+01 3.8651741180754389e+00 3.4664525276051128e+00 0 1 0 +983 2 3.8034871224020939e-01 1.6372200409886108e+01 3.2828243758410647e+00 5.8612475722303015e-01 0 1 0 +982 1 -7.3826897087316046e-01 1.6538672856583677e+01 2.3344314174687226e+00 3.5593412007078301e-01 0 1 0 +196 1 -7.4549107934801362e-01 1.2855296474912164e+01 5.4732616414580368e+00 3.3990948313494568e-01 0 0 0 +379 1 -7.5307613958567499e-01 1.7194559173341730e+01 6.4295472504929743e+00 3.1166682064054481e+00 0 0 0 +954 2 3.2002351836232878e-01 1.5888333805783443e+01 5.3623905112413706e+00 1.6366381459492292e+00 0 0 0 +197 2 3.9353316471972760e-01 1.2366235949554447e+01 5.2689950079443948e+00 1.0819343253779545e+00 0 0 0 +308 2 3.8053566932308219e-01 1.5827400649134340e+01 1.5102383139749007e+00 1.6944312751168922e+00 0 0 0 +2674 1 -7.5251563708889002e-01 1.6616504346881126e+01 3.8056411956327221e+00 3.9613426800009357e+00 0 1 0 +2675 2 3.6376048259316174e-01 1.5794339487607786e+01 4.0211703398579264e+00 4.4872213323852286e+00 0 1 0 +381 2 3.7093646473040048e-01 1.6989489495356811e+01 5.5370106263854231e+00 3.4535566149823853e+00 0 0 0 +2676 2 3.5623982090771111e-01 1.6485199958957558e+01 2.9341789231643403e+00 3.5795848239229255e+00 0 1 0 +221 2 3.1224109180106219e-01 1.3507875971913872e+01 5.1731003897988455e+00 4.2683251224427101e+00 0 0 0 +220 1 -7.3383156196182264e-01 1.3725487235521911e+01 4.3585589872930308e+00 4.6808284626942935e+00 0 0 0 +222 2 3.2778663941490466e-01 1.3273816959634512e+01 4.4026137329898694e+00 5.5445678182165032e+00 0 0 0 +958 1 -7.4610017930944261e-01 1.5663290274330219e+01 4.9796893426559716e+00 7.5150390905448938e-01 0 0 0 +960 2 3.7551283813146968e-01 1.4736666783744411e+01 5.3254716418768213e+00 7.1438023451097432e-01 0 0 0 +320 2 3.4147571367646573e-01 1.4548277543914198e+01 7.7726612206472465e+00 8.6200265130584590e+00 0 0 0 +380 2 3.8288888396260523e-01 1.8086680823606102e+01 6.6958699296408941e+00 3.4346868318853470e+00 0 0 0 +319 1 -7.5289236146249161e-01 1.4504190487958663e+01 6.8302827431032336e+00 8.3585598210513634e+00 0 0 0 +2078 2 3.6896467802253480e-01 1.9837126505526836e+01 9.4872638994601708e+00 1.4545504814288625e+01 0 0 0 +2042 2 3.8133266548460326e-01 1.8632936926135795e+01 1.8847209418642434e+00 1.0661866182918509e+00 0 0 1 +525 2 3.5767804986002788e-01 1.6044729651565728e+01 7.7152962602539885e+00 4.9279045177504499e-01 0 0 0 +526 1 -7.1675182179051944e-01 1.7338617473894164e+01 3.9073780698890020e-01 4.3862477545242067e+00 0 0 0 +527 2 3.7606096783862469e-01 1.6471133582835396e+01 6.4871802983856663e-01 3.9292007431044085e+00 0 0 0 +534 2 3.5687435904323250e-01 1.8050783975465485e+01 3.7181143555290390e+00 5.1537709798264908e+00 0 0 0 +119 2 3.7458680445139569e-01 2.0487263421233615e+00 5.4481575893417078e-01 1.3498519365226000e+01 0 0 0 +307 1 -7.5313456861153183e-01 1.5516325859493993e+01 1.0041223608999403e+00 2.5148439529207085e+00 0 0 0 +434 2 3.6060382443901440e-01 2.8318372247716162e+01 6.0000350790735746e-01 1.3039033487948334e+01 0 0 0 +2538 2 3.7038237727101675e-01 1.5873081510603580e+01 7.3431633253088568e+00 4.2151889384124237e+00 0 1 0 +362 2 3.5138788653950254e-01 1.3822311947328766e+01 1.2399332735227380e+00 3.7058472510950380e+00 0 1 0 +1773 2 3.7574693015917909e-01 2.4710555149281316e+01 1.1915637515904558e+01 8.9573752514615723e+00 0 0 0 +1441 1 -7.3263272810282853e-01 2.6976878393661949e+01 3.0627092401548633e-01 6.9616920124764707e+00 0 0 0 +2049 2 3.5088136504355405e-01 2.7431266984046175e+01 1.4851721772360399e+01 4.7815946067125177e+00 0 0 1 +1311 2 3.5918535518609329e-01 1.1906016994206430e+01 1.4181562861585023e-01 5.7126228122925715e+00 0 1 0 +1194 2 3.4995179923095754e-01 1.7833416122412100e+01 1.5436461184933348e-01 9.0760596623794463e+00 0 1 0 +1144 1 -7.2894009311541352e-01 2.1625386814021507e+01 5.4650300718290135e+00 6.7230254595329866e+00 0 0 0 +2043 2 3.8805213934516697e-01 1.9877585541745020e+01 1.0369100917515413e+00 9.1741760286022211e-01 0 0 1 +532 1 -7.0517978497245426e-01 1.8491368955069976e+01 3.5217019209699156e+00 6.0490036778759615e+00 0 0 0 +533 2 3.9142658940071773e-01 1.8144895666077264e+01 4.3371633326148933e+00 6.6153233851801607e+00 0 0 0 +2041 1 -7.1168345284775480e-01 1.9352240103205951e+01 1.5571033521169870e+00 1.5405407560902771e+00 0 0 1 +1905 2 3.6418908688370261e-01 2.1605773287702167e+01 4.2765165277270425e+00 5.1106621918495518e+00 0 0 1 +1903 1 -6.9792797977161336e-01 2.1748551405429989e+01 4.0998926315357895e+00 4.1658099232003689e+00 0 0 1 +1217 2 3.7913386240549446e-01 2.2836463194848776e+01 5.2406299294258698e+00 2.9961168585826239e+00 0 1 0 +1904 2 3.6724890029640833e-01 2.1010627209303685e+01 3.3761847111544125e+00 4.0045156441401977e+00 0 0 1 +1216 1 -7.2604871901178580e-01 2.3447202645475159e+01 5.5920326273056826e+00 2.2944876098746829e+00 0 1 0 +248 2 3.3978223300435040e-01 2.3198037218540914e+01 7.6326540121433748e+00 2.6633349332777576e+00 0 0 0 +1146 2 3.4792706746670926e-01 2.1431062769332790e+01 6.3968311439957963e+00 6.5873809264560750e+00 0 0 0 +515 2 3.7066235504587541e-01 2.3336985121668135e+01 4.9569713602477519e+00 1.5211960503752682e+00 0 0 0 +1116 2 3.5646923248294565e-01 2.0298081690348930e+01 5.4854204901743469e+00 3.5506637971694550e+00 0 1 0 +1114 1 -7.0395571779608335e-01 1.9907703230303699e+01 6.1513486169178977e+00 3.0110646253217355e+00 0 1 0 +1115 2 3.8069079044468124e-01 1.9945826625468705e+01 5.9246211790915924e+00 2.0351856889836997e+00 0 1 0 +579 2 3.9547297628369682e-01 2.3996070039116375e+01 1.0529411602750995e+00 1.1165198143647250e+00 0 0 0 +585 2 3.7096507480798313e-01 2.3767754484183236e+01 2.6411712385066539e+00 1.1225288846698618e+00 0 0 0 +1196 2 3.5072559348999632e-01 1.9373676533195667e+01 2.4530216578494639e+00 4.7668697348213600e+00 0 1 0 +1714 1 -7.0802398477202177e-01 1.9900350884093399e+01 5.2222678995018956e+00 3.7497577490663969e-01 0 0 0 +2814 2 3.9150922204105332e-01 1.6699795914991270e+01 9.4769974678379248e-02 5.7930995252327664e+00 0 1 1 +2819 2 3.3914466909902691e-01 2.3808226622202906e+01 1.4027657188514016e+01 1.5194174847249243e+01 0 0 0 +583 1 -7.3812607951190867e-01 2.4143811703288495e+01 1.9114222006859189e+00 1.6122127404924802e+00 0 0 0 +624 2 3.5387842445422352e-01 2.4421069009592568e+01 6.6814349771311372e+00 7.2476246528316957e-01 0 0 0 +1195 1 -7.0634180393460455e-01 1.9969889729479270e+01 1.9322909693732215e+00 4.0979444083531487e+00 0 1 0 +1197 2 4.0772620806047699e-01 1.9396653865507815e+01 1.5237357262145894e+00 3.3353295837171375e+00 0 1 0 +418 1 -7.0399715143996378e-01 2.4418330292019323e+01 1.7532752213027898e+00 4.5070628850662953e+00 0 0 0 +420 2 3.8368844685430692e-01 2.4262150970924750e+01 7.7767358985760937e-01 4.5882878553516822e+00 0 0 0 +419 2 4.1155198449350688e-01 2.4460738669155493e+01 2.0224169088874415e+00 3.6037300525953690e+00 0 0 0 +1145 2 3.3232971594426863e-01 2.4543873230681669e+01 6.5476103457458166e+00 6.4993358688362211e+00 0 0 0 +1171 1 -6.8843097609044668e-01 1.3127471808587817e+01 1.5430342606026111e+01 5.2162038862750935e+00 0 0 0 +503 2 3.5852519131886351e-01 2.3431171518107213e+01 5.6038697706205145e+00 5.8644913703225265e+00 0 0 0 +1280 2 3.5376168279638437e-01 2.1067713619991196e+01 1.5516513195141689e+01 3.1292364926754366e+00 0 0 0 +502 1 -7.3571741856961170e-01 2.4383876101821894e+01 5.6246216646123770e+00 6.2255871204360247e+00 0 0 0 +884 2 3.3705342906758395e-01 2.0831958439525298e+01 8.4319099928220318e+00 1.4983513705461160e+01 -1 1 0 +2161 1 -7.2741868531417841e-01 3.1002324428745287e-01 5.3902843230030770e+00 8.4582030730450217e+00 1 1 0 +32 2 3.7224714013611548e-01 2.8969088068039767e+01 5.8853613725276244e-01 1.3415063196894363e+00 -1 0 0 +31 1 -7.0701682996664361e-01 2.8861481885382837e+01 1.6305346253392183e+00 1.2125555964014341e+00 -1 0 0 +1397 2 3.7287783474065178e-01 2.9021060975786416e+01 5.8230468622467777e+00 1.1493524979364806e+00 0 1 0 +615 2 3.8565372047805646e-01 2.4926495528292843e+01 2.4681537292063078e+00 6.2171953534894255e+00 0 0 0 +302 2 3.6922138072184107e-01 3.0448744544102141e+01 6.4864682511493870e+00 6.6729371988181709e+00 -1 0 0 +2901 2 4.2376035006718926e-01 3.0021935022741616e+01 2.3328327033627505e+00 7.4094868457492877e+00 0 1 1 +301 1 -7.8432242912457006e-01 3.0600037180261197e+01 6.9519317345137130e+00 5.8723762844978475e+00 -1 0 0 +58 1 -6.9908992171353024e-01 6.3748292073836732e-01 2.0463572721280681e+00 2.6294907465286599e+00 0 0 0 +240 2 3.3485166879456130e-01 3.0843398181986625e+01 2.1919511746150593e+00 2.1074553862407970e+00 -1 0 0 +2007 2 3.6413535825084464e-01 2.7884518960634296e+01 6.6614101874550382e+00 2.9471974124708211e+00 0 0 1 +622 1 -7.5750477464126409e-01 2.5145684392649883e+01 7.1849543661857584e+00 3.5392257365769353e-01 0 0 0 +1298 2 3.3441853145114819e-01 2.7818478639726820e+01 3.3144672824362722e+00 4.0335774579265600e+00 0 1 0 +448 1 -7.0318713721338333e-01 2.8097674324043851e+01 2.4598468287538888e+00 4.1297936159472464e+00 0 0 0 +2004 2 3.7851807512870878e-01 2.8277280394440744e+01 2.1676827663847433e+00 3.2511065976651894e+00 0 0 0 +1415 2 3.5501881145054931e-01 2.7398178513195557e+01 4.8176197476632554e+00 8.1955155867095399e+00 0 0 0 +935 2 3.7926192283897481e-01 2.7867354921700084e+01 2.3163446476640237e+00 7.1464374500543952e+00 -1 1 0 +934 1 -7.0550798053293162e-01 2.8514066684769428e+01 3.0309372866169420e+00 6.9865725072981961e+00 -1 1 0 +936 2 3.5802385594781078e-01 2.8350968993500395e+01 3.1826801669888085e+00 6.0233873348596116e+00 -1 1 0 +1654 1 -7.2778148499228823e-01 2.6000151339640546e+01 6.2984732742535758e+00 3.9240473831981197e+00 -1 0 1 +1656 2 3.8027277584560176e-01 2.5187286537297961e+01 6.1459731664565673e+00 3.3539954771306548e+00 -1 0 1 +1416 2 3.7533076508460606e-01 2.7486061051601464e+01 6.1751659468413065e+00 7.6778011869943370e+00 0 0 0 +1284 2 3.7296810722231194e-01 2.5695725667684769e+01 6.1010097723828309e+00 4.7757707803728042e+00 -1 1 0 +1282 1 -7.2633138156117139e-01 2.6533195522991019e+01 3.0430789772738978e+00 9.4074079366307362e-01 -1 1 0 +395 2 3.7194150494052364e-01 2.0721686406351484e+01 1.4825699905520535e+01 6.7864002498783798e+00 0 -1 0 +315 2 3.9182710238531726e-01 2.7194063305354611e+01 2.3585563875597009e+00 7.3548938961926469e-01 -1 0 0 +2005 1 -7.3670581211206421e-01 2.8797406268766185e+01 6.8426764115822305e+00 2.7028840681739510e+00 0 0 1 +1283 2 3.8989794328252242e-01 2.5720251978925841e+01 2.5003236123211270e+00 1.1432158812361251e+00 -1 1 0 +2454 2 3.5521705336813136e-01 5.1507876412977160e-01 1.3637905550535947e+01 1.3746168208106381e+01 0 0 0 +143 2 3.6506930274778204e-01 2.8548886820557613e+01 7.1302593790984945e+00 5.5261781302066835e+00 -1 0 0 +322 1 -7.1522081979271412e-01 2.7851815251966961e+01 1.1251230139737199e+01 1.0598254784622664e+01 0 0 0 +2006 2 3.8260586691915549e-01 2.8793657450713877e+01 7.7546719844509173e+00 2.2997713633332033e+00 0 0 1 +144 2 3.6242795555462648e-01 2.7062070631452631e+01 7.2243739405285794e+00 5.1544861901002568e+00 -1 0 0 +142 1 -7.4158746208401738e-01 2.7655742999010020e+01 7.0029279966475046e+00 5.9266458450432316e+00 -1 0 0 +128 2 3.6493793175219513e-01 2.9251866054560224e+01 1.8128122219449998e+00 2.9835519613040862e-01 -1 0 0 +893 2 3.7946920482746471e-01 2.0789415683959433e+01 5.0171134231841330e-01 4.9622184914003116e+00 -1 1 0 +613 1 -7.2930970719515864e-01 2.5354487785368573e+01 2.9206965939664045e+00 7.0171052428807306e+00 0 0 0 +1854 2 3.6046538469487516e-01 6.0186383954012292e+00 9.6181536881972463e+00 3.3021872686892668e+00 0 0 1 +313 1 -7.2860828500242214e-01 6.6309818808902365e-01 6.8670236808095488e+00 2.5073334000482266e+00 0 0 0 +489 2 3.8242671450949917e-01 3.2789655077764341e+00 1.0335182590066815e+01 3.1661711981267127e+00 1 0 0 +1582 1 -6.9633133541634928e-01 3.9175816189525694e+00 8.8798388320891473e+00 6.6440531322343496e-02 0 0 1 +1583 2 3.8330519894733267e-01 3.7157303505667616e+00 9.3075520118682071e+00 9.5043849871585739e-01 0 0 1 +1545 2 3.3547912585773454e-01 1.7513554097617570e+00 1.4264802299774038e+01 1.3255855811745821e+01 0 0 0 +487 1 -7.5962823214403985e-01 4.0623364446220558e+00 1.0069168258611036e+01 2.6871955226819590e+00 1 0 0 +488 2 3.3513510512049199e-01 4.4047292342860924e+00 1.0884175221904872e+01 2.3609347733608774e+00 1 0 0 +236 2 3.3992074273664707e-01 5.8140865525284569e-01 1.0447318523122952e+01 4.6983525142782989e+00 0 0 0 +1087 1 -7.7121238428502759e-01 2.2878236686215194e+00 1.0794053515937286e+01 4.6705075461661476e+00 0 0 0 +876 2 3.7577555404776669e-01 2.6906293270298849e+00 1.0167016969107877e+01 5.3443139055192077e+00 0 0 0 +1089 2 3.5301346996899213e-01 2.4523046410709441e+00 1.1721309434211925e+01 5.0512172834935525e+00 0 0 0 +988 1 -7.3980602252790906e-01 3.0605477789577495e+00 8.6425406263411908e+00 6.3050430950897791e+00 0 0 0 +989 2 3.5221983851749666e-01 2.7372684251186699e+00 7.7380758558943352e+00 6.3162320630704851e+00 0 0 0 +351 2 3.5476259391158621e-01 4.9008643683721811e+00 1.3370829450075949e+01 1.4978719937142511e+00 0 0 0 +349 1 -7.2438225240095444e-01 3.9668742629788083e+00 1.3106368663758122e+01 1.3619716573037230e+00 0 0 0 +2204 2 3.3502436980086803e-01 1.3133732729193814e+00 1.1046095576944669e+01 7.3879940582274928e-01 1 0 1 +2090 2 3.1416504629569597e-01 3.5713442770377184e+00 1.3601010630849697e+01 2.1393200249164996e+00 1 0 0 +2165 2 3.6187320847216919e-01 3.0809439330817803e+01 1.3842330112549433e+01 4.6223282175213347e+00 0 -1 1 +2822 2 3.8410087331911397e-01 7.0484164184591402e-01 8.6201759024897981e+00 2.2996257689948187e+00 1 0 1 +2821 1 -6.9317519523929871e-01 1.0510035515236795e+00 9.5837781336614452e+00 2.2453884041254644e+00 1 0 1 +2838 2 3.4514550685245993e-01 9.6234805605568241e-01 9.9084729669537506e+00 3.1471571998744992e+00 1 0 1 +2164 1 -7.5352117053148004e-01 3.0047419170952306e+01 1.3303786185264741e+01 4.3623085402350235e+00 0 -1 1 +975 2 3.7682730648664148e-01 4.1159794867671584e+00 1.3015015958314439e+01 5.9005683034394236e+00 0 0 0 +2066 2 3.8742997998029072e-01 1.6019479085528225e+01 1.1685737415708365e+01 2.1333527031933200e-01 0 0 1 +2935 1 -7.3059112897193779e-01 1.3639244652625697e+00 1.1859835077454461e+01 1.5196214658237747e-01 1 0 1 +2244 2 3.5548258327564458e-01 2.1573034557559936e+00 1.2211891396818533e+01 4.2478770601766352e-01 1 0 1 +990 2 3.5068291930645673e-01 4.0201368215177693e+00 8.5826932481606466e+00 6.5452969738789379e+00 0 0 0 +2149 1 -7.4148447957628705e-01 1.2019739267070590e+00 1.4672260592254840e+01 5.5630992204181284e+00 1 0 1 +973 1 -7.8775790214207508e-01 3.2808598996908067e+00 1.2848526359195688e+01 6.2732967928043202e+00 0 0 0 +762 2 3.6025664654146405e-01 1.9056954910051354e+00 1.4057376445312965e+01 5.5313206816203708e+00 0 0 0 +2795 2 3.9224283641486529e-01 2.6521176460952926e+01 4.6186126865153296e+00 2.5126444848059759e-01 0 1 1 +122 2 3.6819491116834224e-01 2.3324552592077765e+01 3.5796379652413099e-02 7.4527908359156143e+00 -1 0 0 +358 1 -7.4765682452255755e-01 5.4380659569255423e+00 1.3878425473942585e+01 4.4473440250118168e+00 0 0 0 +417 2 3.7382189272773941e-01 1.7560447634827046e+01 1.5143597939000566e+01 8.1699992837828930e+00 0 0 0 +961 1 -7.6642246769839772e-01 1.0042308679106254e+01 8.9584766183836724e+00 7.1840235780789001e+00 0 0 0 +962 2 3.6857664079591451e-01 9.1568370079591368e+00 9.4753221975802866e+00 7.3013392451650754e+00 0 0 0 +2030 2 3.8077556991114592e-01 1.1274953341341806e+01 9.1756604772778196e+00 8.2615689499298348e+00 0 0 1 +296 2 3.8390767271087611e-01 8.3870652149458866e+00 1.0498040232468407e+01 4.1447572130468879e+00 0 0 0 +1684 1 -7.2814409094719501e-01 7.3903507455065967e+00 1.1071556853951039e+01 1.2250354825262861e+00 0 0 1 +295 1 -7.5867788325900443e-01 8.3606792224635225e+00 1.1198565313529352e+01 4.7578819239418824e+00 0 0 0 +297 2 3.8050488962837858e-01 8.1992673935332281e+00 1.0810184886840672e+01 5.5982050466612767e+00 0 0 0 +752 2 3.7058099998233940e-01 6.9641895936893086e+00 1.2308111468798824e+01 6.9658155757407219e+00 0 0 0 +751 1 -7.4278412639228442e-01 6.8317676886338417e+00 1.3225459031894374e+01 6.7438315667638911e+00 0 0 0 +333 2 3.2594448957973510e-01 1.0940086812021329e+01 1.0907622350149609e+01 2.3696570893195164e+00 0 0 0 +1721 2 3.6555965852011851e-01 1.0108207122612409e+01 1.2939405571008342e+01 1.8138351188170265e+00 0 0 1 +1720 1 -6.7979005435637685e-01 1.0139115176726332e+01 1.2619264235791288e+01 9.1494055886703352e-01 0 0 1 +1722 2 3.1408722434581637e-01 9.3407660548652700e+00 1.3012442918969811e+01 4.6724181254637065e-01 0 0 1 +513 2 3.5331149898951131e-01 6.1258136386977373e+00 1.3650690886881765e+01 5.1785295600723549e+00 0 0 0 +359 2 3.3369997701578780e-01 5.9767384049249790e+00 1.3598746260467328e+01 3.6815405445583935e+00 0 0 0 +1686 2 3.5240375771748844e-01 6.9460097646681369e+00 1.1918500061515987e+01 1.4366910383412708e+00 0 0 1 +2280 2 3.7119825856449817e-01 7.2401035636003090e+00 1.4224140737357329e+01 1.1984115186101394e+00 0 0 1 +332 2 3.4834558761665085e-01 1.0853174350853518e+01 1.0627732179932620e+01 6.3333012192419424e+00 0 0 0 +994 1 -7.1059773710688490e-01 1.1083273692355830e+01 1.1613748775864417e+01 6.4686656234184738e+00 0 0 0 +341 2 3.3735279609069491e-01 7.0764838609572767e+00 9.4518567379441283e+00 7.8554150256115385e+00 0 0 0 +340 1 -7.5518289903745917e-01 7.6864902765107814e+00 1.0199138450529055e+01 7.5550827779115322e+00 0 0 0 +2278 1 -7.8009249592433916e-01 6.8004361878348911e+00 1.3720896671082105e+01 1.9284680084598940e+00 0 0 1 +331 1 -7.3418890315657181e-01 1.0267332256594415e+01 1.0457999131588730e+01 2.9030361238710336e+00 0 0 0 +1272 2 3.1651297923855615e-01 1.0320620493004430e+01 1.1044707571318979e+01 3.6633258241542537e+00 0 0 0 +2279 2 3.0287135476369220e-01 7.5119692850690356e+00 1.3642877563459185e+01 2.5709230452345122e+00 0 0 1 +552 2 3.1157287016550422e-01 2.2611381264759519e+01 9.5628153947696610e+00 1.4801127234723051e+01 0 0 0 +1071 2 3.6370197009760108e-01 9.2109793110600613e+00 1.2678296857439486e+01 4.1086137374479605e+00 0 0 0 +753 2 3.8398429683529961e-01 7.6805428689642357e+00 1.3657573344140784e+01 6.9011137950325541e+00 0 0 0 +996 2 3.7894194562482475e-01 1.2011414776837247e+01 1.1748453532754196e+01 6.1451088221579040e+00 0 0 0 +649 1 -7.3435592382189663e-01 1.3706413328780920e+00 1.3953920709658846e+01 1.4118039306937186e+01 1 0 0 +1069 1 -7.7126130153104555e-01 9.6710350248297203e+00 1.3461439256148447e+01 3.6996363509544015e+00 0 0 0 +698 2 3.8485248110641607e-01 1.0125965419176254e+01 1.2973195546590683e+01 7.2780509680289356e+00 1 0 0 +2720 2 3.5902734372621675e-01 2.5263573307082972e+01 1.4868669781495987e+01 9.8064356926907124e+00 0 1 0 +806 2 3.6058437088561074e-01 1.0569862483970079e+01 1.3309830973784278e+01 3.9004031613580823e+00 0 0 0 +524 2 3.7925251782370911e-01 1.7318664733722265e+01 7.6410073785404355e+00 1.4165581848616602e+00 0 0 0 +523 1 -7.2080194552706012e-01 1.6846011175578873e+01 8.1855784635332398e+00 8.6426136208733129e-01 0 0 0 +1892 2 3.3559177520446359e-01 1.2031997034331688e+01 8.9284412640576942e+00 3.4755052150328223e+00 0 0 0 +977 2 3.5661278293438609e-01 1.2923340356870726e+01 1.3924500954723241e+01 2.8572605709043160e+00 0 0 0 +1270 1 -7.6167366620956856e-01 1.3625015813317914e+01 1.1635889254372275e+01 5.3936156072980204e+00 0 0 0 +1271 2 3.2283997763176686e-01 1.3363419589478919e+01 1.2055222357868308e+01 4.5025536195181903e+00 0 0 0 +1891 1 -7.1511451722943142e-01 1.2546260930801695e+01 8.1678258594311988e+00 3.7054756391045220e+00 0 0 0 +374 2 3.7100735648407795e-01 1.4671305077239150e+01 8.4693641702357034e+00 6.5010617381468663e+00 0 0 0 +999 2 3.7673389148422226e-01 1.6858188839617025e+01 1.3260840101787142e+01 3.6536277097279157e+00 0 0 0 +976 1 -7.6500251118257601e-01 1.2495194270294981e+01 1.3064141836183607e+01 2.9073867924432082e+00 0 0 0 +2537 2 3.4154322829704103e-01 1.4449902508342412e+01 8.1164653714006967e+00 4.4858453812232160e+00 0 1 0 +945 2 3.5756763237003220e-01 1.2874768239465711e+01 1.2619148926920694e+01 2.2110146519842866e+00 0 0 0 +1925 2 3.4095981919838175e-01 1.5692511942686176e+01 9.6147015634048660e+00 3.3486570916909053e+00 0 0 0 +1924 1 -7.2404266196428380e-01 1.5221695559658110e+01 1.0459664212803514e+01 3.1680209738104517e+00 0 0 0 +1926 2 3.1717212270082579e-01 1.4608794019453144e+01 1.0494730065994817e+01 3.9453561254685292e+00 0 0 0 +1128 2 3.7402235582157090e-01 1.5045005346193431e+01 1.3260823429527811e+01 1.1281503733802314e+00 0 0 0 +1126 1 -7.7268408356808438e-01 1.4601781128230201e+01 1.2432780275579875e+01 1.0212338110373231e+00 0 0 0 +1127 2 3.4268230352755635e-01 1.4871898918240923e+01 1.1922153454176515e+01 1.8370952174557196e+00 0 0 0 +997 1 -7.5019155484829303e-01 1.6185721333585239e+01 1.2897821630729570e+01 4.2814784430507942e+00 0 0 0 +1962 2 3.3676684637680410e-01 1.5928223210051311e+01 1.2042646060180729e+01 3.8470288527138665e+00 0 0 1 +373 1 -7.3021666868400825e-01 1.4189227303820456e+01 9.1725985459417014e+00 7.0508923828249097e+00 0 0 0 +558 2 3.4524258190978491e-01 1.7275618272182506e+01 1.1647239440605443e+01 5.1520170782588597e+00 0 0 0 +2536 1 -7.3118747489834701e-01 1.5339710978302147e+01 7.8541542818862613e+00 4.8443859035052554e+00 0 1 0 +1758 2 3.6338525820394019e-01 1.4247358999328338e+01 1.2307757516201359e+01 5.7088167338458087e+00 0 0 0 +2450 2 3.8953285002764459e-01 1.5772388334175179e+01 1.3474992876695412e+01 6.0753715007786573e+00 0 0 0 +1060 1 -7.7834296710778439e-01 1.5161746436035390e+01 1.3765190928991137e+01 6.7030838997542705e+00 0 0 0 +1052 2 3.7091095558428605e-01 1.8874535562468576e+01 1.0112325706223350e+01 4.9605214777657274e+00 0 0 0 +952 1 -7.4211657418473165e-01 1.5899211349038151e+01 1.4813070298548183e+01 3.5141057336039394e-01 0 0 0 +1160 2 3.5794340822123361e-01 1.2922128370188350e+01 1.5070432297648827e+01 4.3865123063701645e+00 0 0 0 +1061 2 3.9340394586448718e-01 1.4686691678917770e+01 1.4503427917135310e+01 6.3605934765078400e+00 0 0 0 +2157 2 3.4733707346504189e-01 1.2826235656375388e+01 1.5424466508002052e+01 1.4236822660756496e+00 0 0 1 +271 1 -7.3284933903259986e-01 1.9797012417861556e+01 1.0198648564118789e+01 2.1808724178878028e-01 0 0 0 +2843 2 3.6286479239287156e-01 2.5028410449812743e+01 1.3224309494639456e+01 1.5379719493730903e+00 0 0 1 +2865 2 3.8321205054164886e-01 2.4981110364415954e+01 1.1787790131490294e+01 1.0665015240334432e+00 0 0 1 +2336 2 3.4760543734255200e-01 2.6794298776418618e+01 4.7204019993334845e-02 1.1493774722804988e+01 -1 1 1 +560 2 4.1327771374331596e-01 2.4698030269425669e+01 1.4859157153438852e+01 6.4557658311544310e+00 0 0 0 +1002 2 3.6831536018504235e-01 9.0709264057027355e+00 1.5175519125043248e+01 4.0706270566276270e+00 0 0 0 +556 1 -7.1120261122680717e-01 1.8023493016279513e+01 1.1324096084893167e+01 5.7339965207913473e+00 0 0 0 +557 2 3.7278171676663396e-01 1.8744556612773923e+01 1.1998961480393996e+01 5.7709015871253806e+00 0 0 0 +1051 1 -7.5106068386773239e-01 1.9463097868557114e+01 9.4375597435248260e+00 4.4429166969099612e+00 0 0 0 +1141 1 -7.0865497417696000e-01 2.3622330297184394e+01 8.0976140201513047e+00 3.4823814250952703e+00 0 0 0 +1143 2 3.5276029334045467e-01 2.3877297116691985e+01 8.4869227450750060e+00 5.9959241109173318e+00 0 0 0 +1142 2 3.8480780230000083e-01 2.4009491806606366e+01 8.8987499849634037e+00 3.1807848067586919e+00 0 0 0 +1344 2 3.4431754370412976e-01 2.2031646719938472e+01 8.3703161142980598e+00 4.7295540868584167e+00 0 0 0 +1342 1 -6.8308981538894631e-01 2.4624194584247398e+01 8.6718279784660304e+00 6.4315465104822378e+00 0 0 0 +1279 1 -7.2047636044830288e-01 2.1194438088659144e+01 1.4655113145176898e+01 3.5599068905706899e+00 0 0 0 +1323 2 3.2231289034768323e-01 2.4319336433573465e+01 1.2486041030298008e+01 3.4344236859922881e+00 0 0 0 +749 2 3.4257377797706601e-01 1.8165041987963619e+01 1.4215742191736197e+01 2.0663913242721450e+00 0 0 0 +750 2 3.4918107205585291e-01 1.9293946610269717e+01 1.3944062873668372e+01 3.0360673982438584e+00 0 0 0 +1053 2 3.7355122674223473e-01 1.9981613596945731e+01 1.0142044406269951e+01 3.6721064556180352e+00 0 0 0 +1364 2 3.6485201855729510e-01 1.9318564114233528e+01 1.1646004194054118e+01 2.7559119559059511e+00 0 0 0 +1343 2 3.7323439077733678e-01 2.5272702753623754e+01 8.8444474476632546e+00 5.6789401336957352e+00 0 0 0 +1363 1 -7.2813137446444254e-01 2.0174853811185752e+01 1.1180685316542265e+01 2.6899483744839250e+00 0 0 0 +1365 2 3.9713794882029002e-01 2.0227614540723657e+01 1.0639849292957415e+01 1.8135908162679584e+00 0 0 0 +1294 1 -7.5872247108158186e-01 2.1586974012361846e+01 8.5220006770698973e+00 5.6332414905894312e+00 0 1 0 +1229 2 3.6559621130358355e-01 2.5796342575252574e+01 1.0434659060781394e+01 3.9758072329309679e+00 0 0 0 +1296 2 3.6607457751404843e-01 2.0366112239366135e+01 9.1572924816627204e+00 5.1228506915628627e+00 0 1 0 +2934 2 4.0311508896507325e-01 2.3942267593843457e+01 1.4796025914797434e+01 1.3442222386508997e+00 0 0 1 +2850 2 3.8315464193520832e-01 2.4620142727404136e+01 1.4909320955578064e+01 2.7131452306888910e+00 0 0 1 +2932 1 -7.8039979922039138e-01 2.4013594742696309e+01 1.4359470428390750e+01 2.2266960707494654e+00 0 0 1 +748 1 -7.3018650304512345e-01 1.8427046215860823e+01 1.3583293653000359e+01 2.7271658023086571e+00 0 0 0 +1321 1 -6.5864153984116669e-01 2.4268201200445308e+01 1.1986392490174696e+01 4.2974713873037711e+00 0 0 0 +1281 2 3.5433692469751338e-01 2.2077395306594351e+01 1.4348392712373405e+01 3.1790452010726651e+00 0 0 0 +2780 2 3.6847894214086452e-01 2.0657071677182085e+01 1.3437978308603224e+01 5.0024740459382340e+00 0 0 1 +1295 2 3.8008842647280749e-01 2.2075169149491696e+01 9.3884094689527533e+00 6.0161724973545869e+00 0 1 0 +1177 1 -7.2133807426964403e-01 2.0445471297606030e+01 1.3020624667663823e+01 5.9033396771857563e+00 0 0 0 +1178 2 3.8760922709331613e-01 2.1123036439837861e+01 1.2364993781325525e+01 6.1885183465221001e+00 0 0 0 +2228 2 3.4804715633184741e-01 2.4810796102968023e+01 9.2674126213427019e+00 1.1286540554542459e+00 0 0 1 +1322 2 3.3033554877197840e-01 2.4605511059419875e+01 1.2673089397605336e+01 4.8771040732884554e+00 0 0 0 +224 2 3.5080382579655595e-01 1.9820240129964642e+01 7.6595505302338704e+00 6.4471005405667841e+00 0 0 0 +2227 1 -7.2929343957952986e-01 2.4726632068728112e+01 9.9745764484836581e+00 1.7381256100416549e+00 0 0 1 +2229 2 3.2258576344761747e-01 2.5640140643847204e+01 9.9550075705358392e+00 2.1361854473283866e+00 0 0 1 +507 2 3.4073756485913104e-01 2.2660158628013029e+01 1.4128931869446916e+01 1.4168782827577042e+01 0 0 0 +2080 1 -7.1497924938304980e-01 2.1835153667262524e+01 1.0736491192306897e+01 6.9156177707814352e+00 0 0 0 +2082 2 3.6731570280412973e-01 2.2588381513180167e+01 1.0893927333057611e+01 7.5772875029759232e+00 0 0 0 +431 2 3.6489346980624221e-01 3.0534173399577149e+01 8.3380848420287279e+00 6.5163502149762520e+00 0 0 0 +1632 2 3.8167188596816054e-01 3.0422394593164292e+01 1.1494413603359128e+01 4.6230591406290511e+00 -1 0 1 +1630 1 -7.2546998377165361e-01 3.0594866062596974e+01 1.0538283577190228e+01 4.6956648343540257e+00 -1 0 1 +2166 2 3.6335358282092878e-01 2.9345361139250041e+01 1.3735034155610570e+01 4.8968147581269275e+00 0 -1 1 +1917 2 3.2831460205591412e-01 1.9266198291343610e+01 1.5112588328716638e+01 2.2304837569120856e-01 0 0 1 +2203 1 -7.5258231877874160e-01 2.9176683859194647e+01 1.3163150997103514e+01 8.3128994673950860e+00 0 0 1 +1180 1 -7.0673420754785987e-01 2.6303583275596061e+01 9.8250799245261149e+00 4.5254814934012977e+00 0 0 0 +127 1 -7.1578102381674791e-01 2.7732456825143593e+01 9.2933380246859176e+00 7.6714896220953657e+00 -1 0 0 +12 2 3.6193354459566540e-01 2.7540038293111024e+01 8.4959479214118510e+00 7.0545459217828670e+00 -1 0 0 +2095 1 -7.0831593411319604e-01 3.0349609271392325e+01 9.2925902847310340e+00 7.0978653600088935e+00 0 0 1 +2096 2 3.5281360484553997e-01 3.0398418861229050e+01 1.0051212924202549e+01 6.2213252553154827e+00 0 0 1 +623 2 3.5880766260311747e-01 2.9201482049435800e+01 9.2244346653423044e+00 7.4358684922306608e+00 0 0 0 +2159 2 3.3823564268491546e-01 3.0803202576366676e+01 1.1920531603542944e+01 1.3415442326919869e+00 0 0 1 +2158 1 -7.6119678411316760e-01 2.9918961599720525e+01 1.2338436941275864e+01 1.5832925508022093e+00 0 0 1 +2130 2 3.2749563037318280e-01 2.7349919815107906e+01 8.4101723016108476e+00 5.8452461182870985e-01 0 0 1 +1182 2 3.6320659557072082e-01 2.6759606122075066e+01 1.0434746236492805e+01 5.1603883516707372e+00 0 0 0 +2128 1 -7.4887991140858612e-01 2.8193494970906894e+01 8.7573589475964475e+00 9.2231447524737176e-01 0 0 1 +2129 2 3.4655998913080804e-01 2.7963380512288413e+01 9.6628989688977480e+00 1.3165453879185831e+00 0 0 1 +2870 2 3.8236049531283289e-01 2.8378756069119923e+01 1.1602593554863265e+01 2.0292751474858477e+00 0 0 1 +1328 2 3.8257873680038068e-01 2.8970511947163111e+01 1.4437357976968004e+01 7.0268108477778783e+00 0 0 0 +2869 1 -7.2788703577564851e-01 2.7464457162804660e+01 1.1234554557070336e+01 2.0922560348112369e+00 0 0 1 +610 1 -7.5670187498919206e-01 2.7428196957311773e+01 1.1811720209771533e+01 6.5291027444831045e+00 0 0 0 +611 2 3.8633155299559213e-01 2.7984044401595391e+01 1.2201081873390617e+01 7.1949645419678045e+00 0 0 0 +2160 2 3.5874055738087113e-01 3.0072740007557556e+01 1.2736754349937966e+01 2.4906916468330875e+00 0 0 1 +612 2 3.4738415209155832e-01 2.6702794741356012e+01 1.2389274641474589e+01 6.3231656173156452e+00 0 0 0 +759 2 3.9616694464984792e-01 2.7539456960359395e+01 1.0156517527325532e+01 7.2848106393189465e+00 -1 0 0 +559 1 -7.6802716399825677e-01 2.5314039050599870e+01 1.4074321651001933e+01 6.4730245007519622e+00 0 0 0 +561 2 3.7947197609714545e-01 2.5773924435289068e+01 1.4104908221359842e+01 7.3426255188206442e+00 0 0 0 +2048 2 3.3591653857891007e-01 2.6130737768723165e+01 1.3963141533124302e+01 4.6591233878349740e+00 0 0 1 +1623 2 3.3553535013638147e-01 2.3138636559317027e+00 8.9397229842037773e-01 1.2855145624292841e-01 0 0 1 +2047 1 -7.0776349214812362e-01 2.6594343953738139e+01 1.4706967508049495e+01 4.1879832928810821e+00 0 0 1 +2871 2 3.5675816071708077e-01 2.6911060654405620e+01 1.1711113956614183e+01 1.4175830917304237e+00 0 0 1 +1379 2 3.7241022699859389e-01 2.9281223062034392e+00 3.6528369544011947e+00 1.5515745498743394e+00 1 1 0 +2863 1 -7.2210570654265871e-01 2.5501068128887301e+01 1.2537161650963242e+01 8.9119591835198164e-01 0 0 1 +1327 1 -7.9225778065681240e-01 2.8811271119403859e+01 1.4901043031405694e+01 6.2030426088140684e+00 0 0 0 +228 2 4.0263595287173426e-01 5.9708137404961015e+00 1.0298900434273990e+00 7.7292692797755957e-01 0 0 0 +1495 1 -7.4698069194326755e-01 5.7133136422425741e+00 3.3509113292494890e+00 7.7236616434180014e+00 1 1 0 +1706 2 3.5283818767689318e-01 2.3690454189175880e+00 3.2404197638510954e+00 6.8417722693677980e+00 0 0 0 +1707 2 3.4478117026980820e-01 3.6857667798295326e+00 3.0473906768742740e+00 7.4777849585167786e+00 0 0 0 +1100 2 3.7628027277296727e-01 6.1575532700915261e+00 3.1089099103660129e+00 8.5453585887206884e+00 0 1 0 +117 2 3.9455890049263220e-01 1.8833110884786941e+00 5.9475010730976550e+00 7.8668284206495871e+00 0 0 0 +6 2 3.4014153576746908e-01 6.6653646394599662e+00 1.7006186811850021e+00 1.0874927030134137e+01 0 0 0 +4 1 -7.2571111880246442e-01 6.7333840652394521e+00 2.3787727470738345e+00 1.0219750954424841e+01 0 0 0 +1527 2 4.0100653288494820e-01 5.4528014673772898e+00 1.3956758948560801e+00 1.5307386648498444e+01 0 0 0 +151 1 -7.2910801690274551e-01 2.7262298784151353e+00 4.2955663940398221e+00 1.0510748319366119e+01 0 0 0 +153 2 3.7237597048485871e-01 2.6371530330396142e+00 4.0278556956960045e+00 9.5908798943605404e+00 0 0 0 +1119 2 3.8835260883331613e-01 4.4268410355053716e+00 4.7329718288267433e+00 1.0728787081880176e+01 0 1 0 +147 2 3.7708792650528411e-01 7.5267048627925659e-01 2.3059348787375873e+00 1.3112627078656976e+01 0 0 0 +1117 1 -7.5142747813406152e-01 5.1387664257184182e+00 4.9803723392331127e+00 1.1342304349160040e+01 0 1 0 +1118 2 3.6271966363746028e-01 5.4984890411492540e+00 5.8908091924721653e+00 1.1127059252087154e+01 0 1 0 +1123 1 -7.4006805555028954e-01 6.3042443441123792e+00 7.2148468774146242e+00 1.0319917218624509e+01 0 1 0 +5 2 3.0950048252677159e-01 6.1984768332792770e+00 3.0689625281473445e+00 1.0689680908331225e+01 0 0 0 +2433 2 3.6790902828033573e-01 4.1653063962835608e+00 6.3273345186813721e+00 1.3999319382857966e+01 0 1 0 +2431 1 -7.3438271689388468e-01 4.7187226779524876e+00 5.4769634480967486e+00 1.3945376600475882e+01 0 1 0 +2432 2 3.9084393881077384e-01 4.7398138108415253e+00 5.1990830606188325e+00 1.2995460855747162e+01 0 1 0 +152 2 3.3992824104581582e-01 2.4155991985277527e+00 3.5382690774085708e+00 1.0987691593868808e+01 0 0 0 +857 2 3.8124271137402527e-01 2.4747479270569568e+00 6.6203061567186445e+00 1.0887159393930956e+01 0 0 0 +923 2 3.2869068578915284e-01 6.3697320057901470e+00 6.6784125010570463e+00 1.3501034206207150e+01 0 1 0 +1525 1 -7.5992241024094487e-01 4.5103057463138860e+00 1.1475765232913371e+00 1.5133305617863787e+01 0 0 0 +856 1 -7.2800469554517955e-01 2.2942863580243062e+00 7.5346055017169800e+00 1.0829874489228526e+01 0 0 0 +858 2 3.4450384066690903e-01 2.7729168460391116e+00 7.8972231176541925e+00 1.1679026265479433e+01 0 0 0 +120 2 3.5154660324048509e-01 2.3446515644617008e+00 1.6742848679669022e+00 1.4471381758370747e+01 0 0 0 +118 1 -7.1973118402817282e-01 1.6337449119010632e+00 1.1435179646868354e+00 1.4125673846681433e+01 0 0 0 +1705 1 -7.4619529430445708e-01 2.8020966808238748e+00 3.3596387585687006e+00 7.6862162452808773e+00 0 0 0 +792 2 3.8162134395491909e-01 4.7476299851296516e-01 7.5080694733013980e+00 1.1117422277791169e+01 0 1 0 +145 1 -7.2456733119125016e-01 9.7035303704488512e-02 2.8037480815284308e+00 1.2502648753185213e+01 0 0 0 +146 2 3.6960101144384100e-01 3.3213958954874911e-01 3.7881333174906344e+00 1.2651781996324514e+01 0 0 0 +885 2 3.6343115339204518e-01 3.9216228535512293e-01 5.7211140002981447e+00 1.2421215920920250e+01 0 1 0 +733 1 -7.2939243403239429e-01 1.0591558935808338e+00 5.2316792952360576e+00 1.3040137299130430e+01 1 0 0 +734 2 3.7885173336262007e-01 7.7356250970958040e-01 5.2155320245704964e+00 1.3943828663846643e+01 1 0 0 +2326 1 -7.5959298392515695e-01 3.4747639361285931e+00 7.7758768787384263e+00 1.3523957449850817e+01 0 1 0 +2118 2 3.7032656930185393e-01 7.7843948181891809e-01 6.7423516357047797e+00 1.4849541735561921e+01 1 0 0 +1871 2 3.7742868774015342e-01 1.2907370063895211e+01 4.4263912919383808e+00 1.5492392870088166e+01 0 0 0 +2205 2 3.5816460566448205e-01 2.8946845771120604e+01 1.2627751108813840e+01 9.1250146354086610e+00 0 0 1 +1641 2 3.4073380398166719e-01 7.1111993645099947e+00 1.1366622304192653e+01 1.5359188902057735e+01 0 0 0 +1208 2 3.6388529937889968e-01 2.5056081596788722e+01 1.4584530002965888e+00 1.1020268642399330e+01 0 1 0 +1125 2 3.5950591727482978e-01 6.8748449510385647e+00 6.4533818108221057e+00 9.8958183731961320e+00 0 1 0 +1124 2 3.6079497036949704e-01 6.8670303828595243e+00 7.5817382274248049e+00 1.1016727356105484e+01 0 1 0 +75 2 3.8204465030924051e-01 7.1142711055162033e+00 7.4286205407604458e+00 1.4657265748022505e+01 0 0 0 +1699 1 -7.2931258945533617e-01 8.0658743106840500e+00 5.4073124961907117e+00 9.4539036839712871e+00 0 0 0 +1701 2 3.7159147156970163e-01 8.2335210912987247e+00 4.7266377202255532e+00 1.0177642672103413e+01 0 0 0 +830 2 3.5956669984241846e-01 1.3400883293480890e+01 2.3588279160837056e+00 8.0615325900692927e+00 0 1 0 +73 1 -7.5694911019102484e-01 7.2938075580930937e+00 6.8554873823714217e+00 1.3873973895860502e+01 0 0 0 +848 2 3.5315011637445082e-01 7.6614448452830199e+00 8.0302126081544554e+00 1.2642514058156374e+01 0 0 0 +101 2 3.6642454244934813e-01 7.2517605405166901e+00 1.2005813022855081e+00 1.3975943969519834e+01 0 0 0 +217 1 -7.0702430479286171e-01 1.0085707824014888e+01 6.5561230328896141e+00 8.0915255535996220e+00 0 0 0 +219 2 3.7622741341933796e-01 9.2985003663325791e+00 6.0191502568826607e+00 7.8377760739129236e+00 0 0 0 +820 1 -7.2553446153842394e-01 1.1880570912905165e+01 3.4432634914317197e+00 1.0382975998786526e+01 0 1 0 +822 2 3.4320117180500115e-01 1.2011507734689886e+01 3.1042560325459547e+00 9.4523576660266677e+00 0 1 0 +2937 2 3.2429534466538423e-01 2.9647128738089414e+01 1.5235459388641615e+01 5.9945384093753304e+00 0 0 1 +2293 1 -7.2726234223499353e-01 8.0404399513760083e+00 4.3439217238147378e+00 1.3755030513215200e+01 0 1 0 +2585 2 3.7659831892793261e-01 9.7960146545419313e+00 4.6050109223523279e+00 1.3951856085888535e+01 0 1 0 +2586 2 3.5592816744559364e-01 1.1356255901199329e+01 4.4804001893060894e+00 1.4228130964569861e+01 0 1 0 +2295 2 3.5623744243767957e-01 7.6461122285125604e+00 3.7650915357505688e+00 1.4455339332419513e+01 0 1 0 +567 2 4.0714735396839730e-01 2.1459914129644218e+01 9.0359099877329443e-02 1.1951506949480251e+01 0 0 0 +100 1 -7.1917012813285031e-01 7.1710414426954534e+00 1.5952229176299946e+00 1.4910248227520436e+01 0 0 0 +2300 2 3.7659586689290209e-01 1.0875148664424408e+01 3.5493398962347711e+00 1.0616015335094025e+01 0 1 0 +1559 2 3.5039867302626498e-01 1.0884136499129305e+01 7.0708785770579992e+00 1.3919477973256607e+01 0 0 0 +1522 1 -7.5891955514033194e-01 1.0306342379913511e+01 8.2620202951080319e+00 1.0775546187730539e+01 0 0 0 +1524 2 3.7292101546655892e-01 1.1131579343509493e+01 8.4596096396323102e+00 1.0284470239703452e+01 0 0 0 +53 2 3.6921541695409194e-01 8.8009057386326699e+00 3.9237712801575633e+00 1.1939014204161996e+01 0 0 0 +54 2 3.9677587277412490e-01 8.2006061888405046e+00 2.9551428942942040e+00 1.0984331249647768e+01 0 0 0 +52 1 -7.5399507143701594e-01 8.9736740142172291e+00 3.4644949499441897e+00 1.1129417096795120e+01 0 0 0 +1558 1 -7.0982689216245853e-01 1.0736636700935271e+01 8.0392435980254859e+00 1.3677296770396085e+01 0 0 0 +1523 2 3.5617246436127509e-01 9.8246901650007672e+00 7.7074572213170116e+00 1.0195397330490612e+01 0 0 0 +1560 2 3.7060906657481996e-01 1.0622419309330631e+01 7.9885487528953618e+00 1.2739077872884986e+01 0 0 0 +1035 2 3.5430395266288411e-01 1.1755990067763298e+01 1.5531919009169568e+00 1.4699794161400284e+01 0 1 0 +1033 1 -7.4239732885452370e-01 1.1462755227583308e+01 6.4250326314457440e-01 1.4811198729257669e+01 0 1 0 +849 2 3.2588457826761136e-01 8.4494469543540944e+00 8.7386137534629054e+00 1.1506531414782774e+01 0 0 0 +2584 1 -7.5666937390064370e-01 1.0587786945850189e+01 5.0905357888490519e+00 1.4303284175726585e+01 0 1 0 +193 1 -7.1287083432825538e-01 7.8382265342042690e+00 2.3779209227304340e-01 1.2514005498705270e+01 0 0 0 +1692 2 3.6522500943951181e-01 1.3534655771838898e+01 7.4176192148884805e+00 1.6295776923088712e-01 0 0 1 +1547 2 3.9166368478328889e-01 7.8127611458585022e+00 5.2785968207496676e+00 1.4085507762735677e+01 0 0 0 +1443 2 3.8374231033145811e-01 2.5998019544678456e+01 2.8394336364644585e-01 7.0548265690801184e+00 0 0 0 +832 1 -6.9673257579541992e-01 1.2840610249101658e+01 1.3841791945474853e+00 1.2181402975252579e+01 0 1 0 +833 2 3.5884040781426424e-01 1.2376086065692428e+01 1.8667618491299727e+00 1.1456946786471265e+01 0 1 0 +2642 2 3.6981504723344494e-01 2.7071245340385886e+01 1.2004734280878186e+01 1.3941196865662315e+01 0 0 0 +603 2 3.5243032749698672e-01 2.1323013615519361e+01 3.1366377295372072e-01 6.9373111750742895e+00 0 0 0 +1949 2 3.5927253244587376e-01 1.7627695566807684e+01 6.7390027859976085e+00 1.5169383768081236e+01 0 0 1 +56 2 3.5460786295729047e-01 1.5430802090070969e+01 6.6069356227314815e+00 8.0459831895907676e+00 0 0 0 +1998 2 3.8092999858822763e-01 1.3629256348678762e+01 6.2081487222913481e+00 9.7558929481132246e+00 0 0 0 +1996 1 -7.2640888473934240e-01 1.3165107561590442e+01 6.0337852110526731e+00 1.0569893871710724e+01 0 0 0 +2394 2 3.7955176869700491e-01 1.6528327719850296e+01 1.1576886767317813e+00 1.1896604473667898e+01 0 1 0 +2392 1 -7.6881336977051029e-01 1.5632143431262186e+01 9.0429830282334211e-01 1.2183148993929432e+01 0 1 0 +1997 2 3.6663644849215593e-01 1.2759100558626701e+01 5.0750909933917931e+00 1.0464243508742552e+01 0 0 0 +2393 2 3.8419389942242832e-01 1.5542558701553912e+01 1.1696011527051366e+00 1.3102245564015671e+01 0 1 0 +831 2 3.2987354907166927e-01 1.3756734760099002e+01 1.4251576584910015e+00 1.1767007872056187e+01 0 1 0 +343 1 -6.7059247534451183e-01 1.5178509152001014e+01 2.0862989205225126e+00 9.1205032185698958e+00 0 0 0 +345 2 3.3546865276217364e-01 1.5593169009727291e+01 1.8614151463305353e+00 9.9543209648358513e+00 0 0 0 +492 2 3.2163642474231885e-01 1.5072739477871830e+01 2.9379796849983619e+00 1.4599114764632004e+01 0 0 0 +490 1 -6.8923155762771027e-01 1.5870664080705264e+01 2.2946748312771486e+00 1.4622540169784720e+01 0 0 0 +344 2 3.2709224677898363e-01 1.5260077170758947e+01 1.1881908703163702e+00 8.7864480986886573e+00 0 0 0 +520 1 -7.1909122473513598e-01 1.7196179393454212e+01 5.3160814081286532e+00 7.4190619249913814e+00 0 0 0 +521 2 3.9324981174881513e-01 1.7515121661074613e+01 5.2364937919488321e+00 8.3752986681744126e+00 0 0 0 +522 2 3.7366943836384536e-01 1.7659531806788582e+01 6.1391560605467985e+00 7.1304365771098972e+00 0 0 0 +1756 1 -7.5920068941129171e-01 1.4658426527003499e+01 5.4131185264803490e+00 1.3029751411629096e+01 0 0 0 +1747 1 -7.6977085098305553e-01 1.2951722182284975e+01 3.4261101982938764e+00 1.3951502709799188e+01 0 0 0 +1749 2 3.8069646076011232e-01 1.3031148144009412e+01 2.5934113104381828e+00 1.3420560270630570e+01 0 0 0 +267 2 3.6472195954212816e-01 1.3423192309218713e+01 4.1516343738345025e+00 1.3468895058772269e+01 0 0 0 +356 2 3.4386349506320291e-01 1.6552260029851563e+01 4.3293187167755542e+00 1.2745163994997455e+01 0 0 0 +2478 2 3.3570330258088549e-01 1.5751225260829186e+01 1.5326252644421219e+01 1.3452394066409243e+01 0 0 0 +292 1 -7.6930786348559488e-01 1.7498856879713266e+01 4.4234803340157081e+00 1.2821595326717844e+01 0 0 0 +293 2 3.7740954655498354e-01 1.7626170157134943e+01 5.0554943057059312e+00 1.3559100941008857e+01 0 0 0 +1107 2 3.7509855283061289e-01 1.8344004032485415e+01 9.7556653751391431e-01 1.5364596329616360e+01 0 1 0 +1105 1 -6.7518709531011267e-01 1.8723242139432877e+01 4.3558395874367029e-01 1.4634747326163616e+01 0 1 0 +2125 1 -7.2564151296795454e-01 3.2825009797657576e+00 3.5620178750378977e+00 1.5105453773350597e+01 1 0 0 +43 1 -7.6895660931875232e-01 1.4525041166807853e+01 7.6337968708818593e+00 1.5062981791735449e+01 0 0 0 +1757 2 3.3649682619480270e-01 1.4240228224212217e+01 5.6841728368902089e+00 1.2158828663489908e+01 0 0 0 +509 2 3.5271511808719580e-01 1.4800378720215621e+01 6.2276266425671079e+00 1.3420897004972213e+01 0 0 0 +1380 2 3.5419580005962442e-01 1.8629586546026868e+00 3.5734243636620358e+00 4.3615791560615447e-01 1 1 0 +578 2 3.9713960387532932e-01 1.9423597927993939e+01 2.9087318733399328e+00 7.5262129406817797e+00 0 0 0 +367 1 -7.2710051161364753e-01 1.2416579314956541e+01 1.3715613318069197e+01 1.4282946030400939e+01 0 0 0 +511 1 -7.4512171403837524e-01 2.4803930176844077e+01 1.5302413347388612e+01 1.1822671179344709e+01 0 0 0 +2011 1 -7.4709735292318813e-01 1.8293031422855183e+01 5.9346095513880632e+00 1.5000140911255304e+01 0 0 1 +1475 2 3.7317206201114816e-01 1.8722213765556745e+01 1.6548596530678135e+00 1.1537800875257661e+01 0 1 0 +601 1 -7.3361955356670383e-01 2.1503320401422290e+01 5.9271631056304008e-01 7.9231840338727277e+00 0 0 0 +2187 2 3.9199351910503838e-01 2.0383710913812656e+01 1.8097855837437467e+00 8.0543115564475762e+00 0 0 1 +577 1 -7.1127677377745213e-01 1.9771472487393350e+01 2.5487891083800212e+00 8.3316328506980515e+00 0 0 0 +614 2 3.7407505471021024e-01 2.5086527208419309e+01 3.8100320200869837e+00 6.9347479762894189e+00 0 0 0 +2866 1 -7.1838721784639314e-01 2.2238867143818478e+01 6.6206143565943476e-01 1.4928980901267295e+01 0 1 0 +1474 1 -7.3385455535695043e-01 1.7918285931244117e+01 1.8130464925742915e+00 1.0997306604195431e+01 0 1 0 +1476 2 3.4120536749794717e-01 1.7757211567132394e+01 2.7166985286889385e+00 1.1133431815624004e+01 0 1 0 +1218 2 3.8295664823557690e-01 2.1369664604147701e+01 5.2399459239212680e+00 7.6448964751219899e+00 0 1 0 +688 1 -7.2755518245297979e-01 2.4293169407784752e+01 3.9273309354706862e+00 1.0643415684716048e+01 0 0 0 +1499 2 3.8499485474923101e-01 1.9764920848695187e+01 2.0728330953581264e+00 1.3749685454709892e+01 0 1 0 +1498 1 -7.2744822404421194e-01 1.9745330612381039e+01 2.5562014222464264e+00 1.2927390608295685e+01 0 1 0 +1258 1 -7.5280235702916753e-01 2.1617875467307812e+01 4.7266631525898264e+00 1.2180684242899421e+01 0 1 0 +1259 2 3.6065897597166990e-01 2.2531985320522988e+01 4.5834971460310134e+00 1.1847305831217536e+01 0 1 0 +1260 2 3.7948299592490964e-01 2.1251128340378809e+01 3.9240324328407725e+00 1.2406167656940005e+01 0 1 0 +516 2 3.6355959192629644e-01 1.8963523036386565e+01 4.9644183039953784e+00 9.8160073701109241e+00 0 0 0 +450 2 3.6319861548005317e-01 1.7848789498040787e+01 4.7885244433410792e+00 1.0916461708628269e+01 0 0 0 +514 1 -7.5075433757592747e-01 1.7987631123439659e+01 5.1223746744036243e+00 1.0033030945088347e+01 0 0 0 +543 2 3.4132266198773081e-01 2.3867112800622952e+01 1.6422617546848621e+00 1.5138059691781502e+01 0 0 0 +477 2 3.6838885712128094e-01 2.1428327513080283e+01 6.0937984323510017e+00 1.3625290474690019e+01 0 0 0 +1500 2 3.5740794308851537e-01 1.8960890627387890e+01 3.1658381752513125e+00 1.3002813973944345e+01 0 1 0 +540 2 3.8842943715533584e-01 1.9969925118498818e+01 6.1533798695849091e+00 1.4036472502277128e+01 0 0 0 +475 1 -7.2524608520236422e-01 2.0721609429132087e+01 6.7240774213857311e+00 1.3843706035189133e+01 0 0 0 +519 2 3.6530567454443974e-01 2.0367391722149197e+01 3.7827098785259343e+00 9.4710867505824847e+00 0 0 0 +518 2 3.8659561321700209e-01 2.0835639071694882e+01 4.8767936584255667e+00 1.0505604454054886e+01 0 0 0 +517 1 -7.2066827505495823e-01 2.0646024547525908e+01 4.7807012491235161e+00 9.5878601215390802e+00 0 0 0 +1463 2 3.7001165460315288e-01 2.5059579336733343e+01 4.2763792425139195e+00 1.2290755791753025e+01 0 0 0 +690 2 3.6693302663680660e-01 2.4310976815310109e+01 4.7688926171791550e+00 1.0023589800306729e+01 0 0 0 +305 2 3.7494168538359440e-01 1.8241266517473772e+01 7.0521986669749470e+00 1.0514820728488631e+01 0 0 0 +1427 2 3.6857040212391262e-01 2.3981080670517841e+01 7.8018909703968005e+00 1.4881169962592374e+01 0 0 0 +705 2 3.8425099015734254e-01 2.2158210635817589e+01 1.0129117115909334e+00 1.2994618483866436e+01 0 0 0 +541 1 -7.2403593484458073e-01 2.4818789731263312e+01 1.9865041075917433e+00 1.5121754790064486e+01 0 0 0 +1899 2 3.5006908968893219e-01 2.4629951035817367e+01 5.8571271246248955e+00 8.3141505342192570e+00 0 0 0 +1426 1 -7.3252070929554536e-01 2.4364470171787243e+01 7.0626678839497599e+00 1.4261751884869325e+01 0 0 0 +1428 2 3.8811277937038174e-01 2.5314987960777852e+01 7.3058943500301545e+00 1.4178682086942812e+01 0 0 0 +1414 1 -7.3360064589594565e-01 2.7550993312303770e+01 5.6656193425421897e+00 8.5318781731843671e+00 0 0 0 +1927 1 -7.1226092232480398e-01 1.9729614667682423e+01 1.5424098996174450e+01 1.4474084736050346e+01 0 -1 0 +689 2 3.5766754950756602e-01 2.5048967802606384e+01 3.5056094159587645e+00 1.0381098217008788e+01 0 0 0 +435 2 3.7931327983461433e-01 2.9446989394442696e+01 1.6218432754743712e+00 1.3276518359438416e+01 0 0 0 +2162 2 3.4970524972792255e-01 3.0881876535836799e+01 5.3481350682064557e+00 9.3333566602071443e+00 0 1 0 +542 2 3.5429491755211329e-01 2.4853376276356393e+01 2.6291827450099525e+00 1.4360183767796540e+01 0 0 0 +1462 1 -7.5273842885691056e-01 2.4961405255763978e+01 4.3820559262979417e+00 1.3252482556716789e+01 0 0 0 +1464 2 3.6588036398348228e-01 2.4675418213377018e+01 5.2665533818946253e+00 1.3521796518492849e+01 0 0 0 +433 1 -7.4496846761722701e-01 2.8815112296954197e+01 1.1197361386327909e+00 1.3787799256087547e+01 0 0 0 +790 1 -7.5639345045353734e-01 3.0908502199854400e+01 7.2335211641266817e+00 1.1809308959148076e+01 -1 1 0 +791 2 3.6378133514370009e-01 3.0163753828671656e+01 6.7203935794026775e+00 1.1419903438246410e+01 -1 1 0 +1898 2 3.5604854841982447e-01 2.5893725848115270e+01 5.6819508484033321e+00 9.2472145514554978e+00 0 0 0 +932 2 3.8928443975686011e-01 2.8884150973543537e+01 5.1476857725271996e+00 1.1737063860324186e+01 -1 1 0 +1897 1 -7.4283557466891181e-01 2.4963791994829780e+01 6.0131427661728312e+00 9.2015076259513453e+00 0 0 0 +65 2 3.6082840563451934e-01 2.6885396675267820e+01 4.6028681473046484e+00 1.3481959750039932e+01 -1 0 0 +931 1 -8.1088513364181436e-01 2.9255858784630693e+01 5.3273925909343962e+00 1.0897493567716483e+01 -1 1 0 +619 1 -7.1897738960383728e-01 2.6129680901438498e+01 1.9080919771772891e+00 9.4393291344901300e+00 0 0 0 +621 2 3.4805877891152026e-01 2.6709713348679507e+01 1.1306369025534946e+00 9.4562024416560426e+00 0 0 0 +149 2 3.9863672181096071e-01 2.9710227484758057e+01 3.7273264779773094e+00 1.0386017198568913e+01 -1 0 0 +620 2 4.0245852268132121e-01 2.5757537478202931e+01 2.0588464877755692e+00 8.5413076989905914e+00 0 0 0 +64 1 -7.1031165311971567e-01 2.7835584228745912e+01 4.5979208713487276e+00 1.3304429629555900e+01 -1 0 0 +933 2 3.7767524248048312e-01 2.8529341729640390e+01 5.6097797335513393e+00 1.0327938664820277e+01 -1 1 0 +66 2 3.8410634538348182e-01 2.8208691812263652e+01 4.3345433020500499e+00 1.4146818622807317e+01 -1 0 0 +150 2 4.0268078220208936e-01 3.0587651121091721e+01 2.4562019655713105e+00 1.0913608954452620e+01 -1 0 0 +148 1 -6.3523680236714652e-01 3.0014261231985849e+01 2.8296976555733773e+00 1.0158711234295309e+01 -1 0 0 +1410 2 3.6647851066022674e-01 2.7488614868809975e+01 7.1557091370555070e-01 1.5224526324660104e+01 0 1 0 +565 1 -7.0889569352593951e-01 2.2228996263999704e+01 6.0238629867093429e-01 1.2108798677536178e+01 0 0 0 +632 2 3.6323187105566485e-01 2.5144041786703801e+00 9.4766086883921563e+00 8.2812127516801031e+00 1 0 0 +2361 2 3.4036869030220601e-01 2.9674900959485498e+01 1.4554021886093295e+01 1.2414896945940716e-01 -1 0 1 +175 1 -7.1256654098368699e-01 5.0510690378808478e+00 1.4054240563036581e+01 1.5192545137924117e+01 0 0 0 +2328 2 3.7945131769037721e-01 3.9755357360033243e+00 8.3278810059172610e+00 1.4157480598329165e+01 0 1 0 +176 2 3.9534833332635477e-01 5.3966204843848313e+00 1.3142753310221739e+01 1.5262334948571340e+01 0 0 0 +330 2 3.8113145336997034e-01 5.8265739962506391e+00 1.4525990156178503e+01 1.4974835903439269e+01 0 0 0 +2327 2 3.3778404717192428e-01 2.6210714833892559e+00 7.6150242495597000e+00 1.4009654743941478e+01 0 1 0 +62 2 3.9022171798512079e-01 2.4270912233213426e+00 1.4619355445812479e+01 1.0945158420731445e+01 0 0 0 +1041 2 3.9381067712012852e-01 4.1247444702289715e-01 1.5282437437760446e+01 1.0247937301268676e+01 0 0 0 +1351 1 -7.1844759922879664e-01 3.2647902595068965e+00 1.5019216694508511e+01 1.1275636723095214e+01 1 0 0 +2198 2 3.8695732532320609e-01 9.3302114669402680e-01 1.1426457102712940e+01 8.4224985261841550e+00 1 0 1 +974 2 3.6570859822813900e-01 3.4743395439333682e+00 1.2715522170313381e+01 7.1995715196440289e+00 0 0 0 +631 1 -7.3454660884554557e-01 2.3473583134333067e+00 9.9816407567125189e+00 9.0883602162905728e+00 1 0 0 +1088 2 3.4986801754381086e-01 2.3658031539947602e+00 9.2965667631731783e+00 9.7881976239072763e+00 0 0 0 +2199 2 3.3300954549302841e-01 1.4942537249128416e+00 1.2277814561966592e+01 7.3708249797022791e+00 1 0 1 +235 1 -6.9185039046371155e-01 2.7858714028179783e+00 1.1373552859314389e+01 1.1473971760379191e+01 0 0 0 +898 1 -7.1546013722357327e-01 4.5728877373402117e+00 9.7356503938037537e+00 1.5228266034106058e+01 0 0 0 +900 2 3.8551458325678650e-01 4.0662714882203721e+00 1.0534941764101706e+01 1.4941000064104637e+01 0 0 0 +600 2 3.7616842927993599e-01 3.8592090106160084e+00 1.1258886749178458e+01 8.8955421940629442e+00 1 0 0 +69 2 3.5437298951555540e-01 3.0175793727847826e+00 1.1344702898904723e+01 1.3249419028151904e+01 0 0 0 +1353 2 3.6261572656089902e-01 3.8907736665690482e+00 1.4969924434423264e+01 1.0517398272303460e+01 1 0 0 +67 1 -7.5721933547325304e-01 2.7977829457583492e+00 1.1595097936647573e+01 1.4202652389008371e+01 0 0 0 +598 1 -7.4548411408638593e-01 4.6085102326547531e+00 1.1671350202005954e+01 8.5945596401325108e+00 1 0 0 +2097 2 3.2616634809562145e-01 5.1932452087937717e+00 1.1628802911703145e+01 9.4141628986432853e+00 1 0 1 +2402 2 3.3232902575633561e-01 2.9203238072282449e+00 1.0537214466214817e+01 1.0955919204746792e+01 0 0 1 +237 2 3.6117813687213041e-01 3.7306249546188499e+00 1.1674842950233487e+01 1.1600395594646823e+01 0 0 0 +68 2 3.7369642806847442e-01 2.3291316493498266e+00 1.2501622035907316e+01 1.4144076842591076e+01 0 0 0 +2116 1 -7.7467702004768768e-01 8.2509460147234337e-01 7.7332871707655277e+00 1.4708910945969693e+01 1 0 0 +1040 2 3.6824975972104207e-01 6.7726099912866222e-01 1.3934154697437014e+01 9.4292664487016502e+00 0 0 0 +1039 1 -7.1915875524611683e-01 7.7061219812285620e-01 1.4407170423297879e+01 1.0281047320349066e+01 0 0 0 +2117 2 3.4165987529066466e-01 6.8809203875384128e-01 7.7099421116350584e+00 1.3707451004693933e+01 1 0 0 +2825 2 3.3634351290587594e-01 4.5731908619027911e-01 1.0013474287264552e+01 1.3886569726088378e+01 1 0 0 +706 1 -7.7577799668990832e-01 5.3402842681625984e+00 8.8242451468595107e+00 8.0314052894323549e+00 1 0 0 +707 2 3.6197410070447383e-01 5.4133691767784029e+00 8.1890158701469744e+00 8.7881009544477156e+00 1 0 0 +416 2 4.0897508337024036e-01 1.8938881161337186e+01 1.5423961340711873e+01 7.4916310555025651e+00 0 0 0 +1515 2 3.4854657550425927e-01 5.2407497151329068e+00 9.7038874935259685e+00 8.3966252068746865e+00 0 0 0 +2197 1 -7.3270182105120618e-01 8.3638097207326800e-01 1.2301219737199974e+01 8.1123058565547019e+00 1 0 1 +342 2 3.6869306631487608e-01 7.9752491031405643e+00 1.0593815814522161e+01 8.4267344213652517e+00 0 0 0 +1820 2 3.4835300792302981e-01 7.9080190360120870e+00 1.3742529101460926e+01 1.4836547168486410e+01 0 0 0 +1396 1 -6.8160967262519656e-01 2.9199425610566159e+01 5.1557316302804956e+00 4.6058973490166810e-01 0 1 0 +1971 2 3.4378221006170773e-01 4.2691464692347942e+00 4.2911180777030433e-01 1.3541214377972180e+01 1 1 0 +864 2 3.6221396727336957e-01 5.4011107038344548e+00 1.3622666988440319e+01 8.6630142516521040e+00 0 0 0 +862 1 -7.2312990450742654e-01 5.3164288643742870e+00 1.4508037162843033e+01 9.1832503475579799e+00 0 0 0 +179 2 3.6983465043738645e-01 8.3681498642717074e+00 1.5287477348211810e+01 1.0932559507091939e+01 0 0 0 +368 2 3.7384765574432249e-01 1.2113975015615358e+01 1.4373441936166605e+01 1.3613044619767901e+01 0 0 0 +847 1 -7.4625410459184238e-01 7.6114411201264192e+00 8.8345758186914498e+00 1.2031997872207691e+01 0 0 0 +1556 2 3.4607933991430101e-01 8.4894321682405600e+00 1.3260036097534050e+01 1.3453906753586784e+01 0 0 0 +1849 1 -7.5826327946819061e-01 8.2219713509954904e+00 1.0534883720263394e+01 1.4261587656728096e+01 0 0 0 +875 2 3.4628831556292750e-01 6.2036199822241187e+00 1.0816092574783342e+01 1.1756085309391285e+01 0 0 0 +874 1 -7.6721271103192745e-01 5.5006746482693147e+00 1.1429298196254583e+01 1.1461487068386344e+01 0 0 0 +1850 2 3.4368576799360379e-01 8.5532727468126719e+00 1.1371405936897432e+01 1.3878305151510423e+01 0 0 0 +1352 2 3.6099020013418986e-01 5.8634257921349411e+00 1.2273479037391111e+01 1.1527736381924981e+01 1 0 0 +697 1 -6.7372755743035562e-01 9.5368907373516105e+00 1.3728358780387213e+01 7.5879373029887853e+00 1 0 0 +1819 1 -7.2384686721009794e-01 7.7749767883787735e+00 1.3744469529055349e+01 1.3854457093015277e+01 0 0 0 +863 2 3.7101867574652236e-01 6.0616787569562973e+00 1.4440997872349303e+01 9.8370058480532414e+00 0 0 0 +1889 2 3.7154349698977801e-01 1.0569027162466815e+01 1.2225452339569722e+01 1.2187159933206958e+01 0 0 0 +259 1 -7.3907422426271996e-01 9.2212299334563479e+00 1.1011001983258442e+01 9.5277153321190706e+00 0 0 0 +261 2 3.3123664523105278e-01 1.0019057265055931e+01 1.0799423178478612e+01 8.9854322204571613e+00 0 0 0 +995 2 3.1441156819427241e-01 9.2962010878406485e+00 1.0252617092324030e+01 1.0084691998616259e+01 0 0 0 +1034 2 3.8202031942421089e-01 1.2236019915196165e+01 2.0685842576854424e-01 1.5127120751213184e+01 0 1 0 +699 2 3.9128160412870866e-01 1.0226361816213313e+01 1.4417677632816389e+01 7.8262147116734138e+00 1 0 0 +2623 1 -7.8518436937249569e-01 7.3251743975931358e+00 1.3703751981950591e+01 1.1060579822248586e+01 0 1 0 +1888 1 -7.5230914550575378e-01 9.5714256225588858e+00 1.2192901377913387e+01 1.2098450530410913e+01 0 0 0 +1890 2 3.7826304768593366e-01 9.4246157725069910e+00 1.1844281426848662e+01 1.1243283609994752e+01 0 0 0 +2624 2 3.6799455844006079e-01 7.2220783572003864e+00 1.3822915732590209e+01 1.1987387143676774e+01 0 1 0 +2625 2 3.7047237374636399e-01 8.2147933065206811e+00 1.3487682189002763e+01 1.1022853040391489e+01 0 1 0 +1851 2 3.7557884113773271e-01 8.0098905038594843e+00 9.9884053512695825e+00 1.3496647955433131e+01 0 0 0 +2299 1 -7.4935019161293304e-01 1.2108997577930463e+01 9.3578992994288690e+00 8.8624506400222973e+00 0 1 0 +1703 2 3.5213714684172709e-01 1.2600364127449541e+01 1.2378754731062484e+01 1.3174034048480326e+01 0 0 0 +1702 1 -7.3445128669028947e-01 1.2352568694707379e+01 1.1536266125690561e+01 1.2635485852958809e+01 0 0 0 +1797 2 3.9086193618279358e-01 1.2929499620837738e+01 1.0904275148930514e+01 1.3028315991352713e+01 0 0 0 +335 2 3.8436601110728097e-01 1.2790915079262431e+01 1.0950884681179991e+01 9.3226942830891133e+00 0 0 0 +336 2 3.7749356398398981e-01 1.2994880735222880e+01 1.1519746584911347e+01 1.0834419198523271e+01 0 0 0 +334 1 -6.9194193699388473e-01 1.3070709353243952e+01 1.1736784095631251e+01 9.8966579973736319e+00 0 0 0 +1685 2 3.6794997010952657e-01 7.7724225295432223e+00 1.0794020274007613e+01 1.9980259744134663e+00 0 0 1 +537 2 3.7617949555891889e-01 3.0352608007898755e+01 1.5292762429650033e+01 1.3611914768050639e+01 0 0 0 +375 2 3.5985771637074726e-01 1.4050934342318588e+01 9.8507658621470711e+00 6.3699004785784918e+00 0 0 0 +436 1 -6.9628992781636767e-01 1.7861427948118685e+01 1.4005275285175220e+01 1.0087469238618057e+01 0 0 0 +2465 2 4.1049144451903985e-01 1.1053064864600064e+01 7.9770982711656047e-01 2.2060582074997805e+00 0 1 0 +2477 2 3.5334407817839336e-01 1.6983953987250555e+01 1.4789005891330811e+01 1.4000184816240790e+01 0 0 0 +1207 1 -7.2685808496485005e-01 2.5068993021377405e+01 7.1517949332431752e-01 1.1646346191865806e+01 0 1 0 +2301 2 3.5587697542778574e-01 1.2899300625474321e+01 9.0347428312602815e+00 8.2532099987662626e+00 0 1 0 +2464 1 -7.6547446209804382e-01 1.0803626904458927e+01 1.7415316898854185e+00 2.1278171410067301e+00 0 1 0 +1049 2 3.7618877708325776e-01 5.6525939448965365e+00 1.5470483925689594e+01 4.3424559501640170e+00 0 0 0 +2508 2 3.6626666131299679e-01 1.2419309659202666e+01 8.9877037724421296e+00 1.3186787138226194e+01 0 1 0 +347 2 3.8832070273161101e-01 1.7536610563872866e+01 8.6584416778594342e+00 1.4864686067386366e+01 0 0 0 +1378 1 -7.2407938002267280e-01 2.5198976932286881e+00 3.0459831679154385e+00 8.4447489177580748e-01 1 1 0 +2507 2 3.4796346709787190e-01 1.3415241860187432e+01 8.9266991728841596e+00 1.2056842476039316e+01 0 1 0 +491 2 3.6802830129143027e-01 1.6546261003130770e+01 2.8622352328216270e+00 1.4957035963695160e+01 0 0 0 +44 2 3.5170765723501285e-01 1.4233628718958199e+01 8.2605359337797601e+00 1.4352839044873956e+01 0 0 0 +2506 1 -7.6317509688909824e-01 1.3307926903842354e+01 9.2412988590119980e+00 1.2980159702996358e+01 0 1 0 +2445 2 3.8910472272986035e-01 1.4150829933315288e+01 1.4082554114346150e+01 8.3164131937419423e+00 0 0 0 +2444 2 3.7597674789307645e-01 1.3410647645922783e+01 1.3800511309957566e+01 9.5912670583587065e+00 0 0 0 +2443 1 -7.0695820898623263e-01 1.3591216817836305e+01 1.4508245843689529e+01 8.9772679054738855e+00 0 0 0 +1679 2 3.9415597946906744e-01 1.7002627673007073e+01 1.2643479626950681e+01 9.1738436528182632e+00 0 0 0 +294 2 3.7677434630057410e-01 1.7499630436375082e+01 1.0050748771611607e+01 1.2911418550692350e+01 0 0 0 +2322 2 3.2454267056843245e-01 1.4418146245027749e+01 7.7528064629374400e+00 1.0603328670803052e+01 0 1 0 +1236 2 4.1591465031405017e-01 1.7038090739215136e+01 1.0212083559286407e+01 8.8210327502874826e+00 0 0 0 +1234 1 -7.0181594927675783e-01 1.6910844522357635e+01 9.3334833730111821e+00 9.0614270710616918e+00 0 0 0 +2320 1 -7.7995955009736828e-01 1.4564659966903978e+01 8.7119669984032271e+00 1.0394426096987834e+01 0 1 0 +2321 2 3.2706515324009028e-01 1.3914541178163393e+01 8.9283197438642361e+00 9.7040632582504482e+00 0 1 0 +1235 2 3.6000161630653205e-01 1.5922382217166840e+01 9.2636062839886115e+00 9.4017718976185218e+00 0 0 0 +192 2 3.7863753918516846e-01 1.5795994234107379e+01 1.0013697455798233e+01 1.1414632202568395e+01 0 0 0 +225 2 3.5900476150387772e-01 1.8424084703550506e+01 8.1329111016575091e+00 6.1039447215342895e+00 0 0 0 +190 1 -7.6440824714737277e-01 1.6212701087864936e+01 1.0753573118072811e+01 1.1800204804492413e+01 0 0 0 +191 2 3.6426841542444666e-01 1.6096934002153485e+01 1.1390818153436520e+01 1.1117083763735293e+01 0 0 0 +464 2 3.3345857964535902e-01 1.6533493286225973e+01 1.2100672942793659e+01 1.3391494518708470e+01 0 0 0 +1678 1 -7.4542523415333728e-01 1.6340555987389582e+01 1.1993857169746310e+01 8.9562111676013973e+00 0 0 0 +1680 2 3.7797532836806036e-01 1.5890575282685097e+01 1.2281921236486545e+01 8.2100808005516992e+00 0 0 0 +265 1 -7.2792815830226498e-01 1.8053227773245663e+01 9.3399328369175585e+00 1.3341691701114369e+01 0 0 0 +1629 2 4.0207408133331468e-01 3.7525524134059589e+00 4.1945307319817848e+00 1.4528339249235058e+01 0 0 0 +463 1 -7.1928622889755167e-01 1.7248864875875505e+01 1.2664574242922360e+01 1.3819109714817531e+01 0 0 0 +1821 2 3.5318199884344503e-01 1.7987912599434498e+01 8.5728177173768749e+00 1.2695167140692295e+01 0 0 0 +465 2 3.9282018413119174e-01 1.8038071129362386e+01 1.2682127503630825e+01 1.3205666115817445e+01 0 0 0 +438 2 3.6262695588460714e-01 1.8639554917877131e+01 1.3557804478367318e+01 1.0588356249900754e+01 0 0 0 +437 2 3.8069747748786925e-01 1.7632612931389684e+01 1.4850547478971897e+01 1.0657604169213638e+01 0 0 0 +348 2 3.5849033921804402e-01 1.6076875177668288e+01 8.1604527645670508e+00 1.5325095379922852e+01 0 0 0 +2684 2 3.8165231504517405e-01 2.0370591487101755e+01 1.3046331621233044e+01 1.2442167957333156e+01 0 0 0 +2685 2 3.6716241882986833e-01 1.9444306985277990e+01 1.4237067004688502e+01 1.2986582256910832e+01 0 0 0 +2683 1 -7.2729365554285530e-01 1.9407295761853856e+01 1.3405376665675909e+01 1.2416062788389333e+01 0 0 0 +1299 2 3.5662067612573489e-01 2.1511128828889710e+01 8.3664829944472050e+00 1.2878807838265264e+01 0 1 0 +1297 1 -7.8038793636572479e-01 2.2133032912490517e+01 9.0628496499327920e+00 1.2664604505005762e+01 0 1 0 +369 2 3.7700999843324917e-01 1.1680050854260362e+01 1.3674395632821453e+01 1.4869813829585434e+01 0 0 0 +223 1 -7.0432946310929068e-01 1.8854239159834265e+01 7.4548083806965701e+00 6.5982823053108541e+00 0 0 0 +306 2 3.9116104018299891e-01 1.8137828835965667e+01 8.5378840045810875e+00 1.0171322109686470e+01 0 0 0 +216 2 3.7407262888710491e-01 2.1851238764469500e+01 1.3498802481852247e+01 1.0073563374735084e+01 0 0 -1 +2903 2 3.6697304517318297e-01 2.4754134515445305e+01 7.5329058594875944e+00 1.0809023206215731e+01 0 1 1 +2818 1 -7.5464418300264435e-01 2.3178456689671755e+01 1.4653008311281141e+01 1.4783164273894650e+01 0 0 0 +304 1 -7.4900016640674760e-01 1.8546635977164048e+01 7.9079602000544309e+00 1.0824929005761328e+01 0 0 0 +215 2 3.6461639849292388e-01 2.2384672803760374e+01 1.2353447380936000e+01 9.3456918184227487e+00 0 0 -1 +1771 1 -6.9945300201792360e-01 2.4046967718602335e+01 1.2121887617509843e+01 8.2376687707388125e+00 0 0 0 +2091 2 3.5092494554714743e-01 3.8290290067108770e+00 1.4667353589554441e+01 4.7654658315901333e-01 1 0 0 +357 2 4.0003205593279401e-01 2.4928996728156832e+01 9.8558011994321664e+00 1.0980002832701787e+01 0 0 0 +2060 2 3.8162999792195684e-01 2.2000437013527819e+01 1.1863156510915559e+01 1.5190051362214954e+01 0 0 0 +476 2 3.6931796488627072e-01 2.2944145117267688e+01 8.8501336859294213e+00 1.3082555903369343e+01 0 0 0 +539 2 3.9721062311427563e-01 2.0116610008006489e+01 8.2230001853087984e+00 1.0482880295579346e+01 0 0 0 +2081 2 3.7162549465230527e-01 2.1033819751188460e+01 1.0438444646746214e+01 7.5940513801972971e+00 0 0 0 +566 2 3.2754303058235495e-01 2.1625340373215931e+01 8.4916514376649364e+00 1.0841286836116350e+01 0 0 0 +2661 2 3.6520916481788801e-01 2.1794398977913627e+01 1.1205390879030327e+01 1.2742696462033910e+01 0 0 0 +2659 1 -7.3199643929306590e-01 2.1766278273622181e+01 1.2062785442966065e+01 1.3228902446727293e+01 0 0 0 +538 1 -6.8738599585666416e-01 2.1051957186109437e+01 8.2330807363867518e+00 1.0062721727541366e+01 0 0 0 +2679 2 3.4337609102700573e-01 2.2697596936349349e+01 1.2351395432047699e+01 1.3024946648562894e+01 0 0 0 +743 2 3.6321216341445989e-01 2.0637042975477872e+01 1.1283999243175000e+01 9.2446869920364598e+00 0 0 0 +744 2 3.6492990438233003e-01 2.0790529728540090e+01 9.6768202240555077e+00 9.4545415539637307e+00 0 0 0 +742 1 -6.9910926044188471e-01 2.0249225932928244e+01 1.0460038352663576e+01 8.9427573607720099e+00 0 0 0 +214 1 -7.3819453976054428e-01 2.1833412337973130e+01 1.2574418146008139e+01 1.0066659124827012e+01 0 0 -1 +2904 2 3.3747869463845837e-01 2.3456844808901081e+01 8.4346530516689331e+00 1.1340364575618912e+01 0 1 1 +2902 1 -6.9652996043492099e-01 2.4444775969407988e+01 8.2713960771545221e+00 1.1410153869487301e+01 0 1 1 +2150 2 3.6355431465394411e-01 1.5401705396129437e+00 1.5483672391355634e+01 6.0537436598866821e+00 1 0 1 +599 2 3.8656076985198329e-01 2.9626195230369184e+01 9.6166167997728706e+00 1.2407232060777559e+01 0 0 0 +508 1 -7.2566005372054387e-01 2.7060530829894191e+01 1.2321907068767443e+01 1.2980927125187613e+01 0 0 0 +633 2 3.7572529492007356e-01 3.0110266392792226e+01 1.2993961531209360e+01 8.1571098017301349e+00 0 0 0 +2545 1 -7.6549095752588614e-01 2.4501785395416483e+01 1.2539484283209120e+01 1.2322059640204825e+01 0 0 0 +2547 2 3.8334195697522183e-01 2.4458562167604533e+01 1.3459791514414610e+01 1.2019234351476994e+01 0 0 0 +360 2 3.6567013913170665e-01 2.6034319251757939e+01 1.0866260586438253e+01 1.0615698441911004e+01 0 0 0 +2546 2 3.8204766713781108e-01 2.4448820912791941e+01 1.1928747533378550e+01 1.1509976079495136e+01 0 0 0 +1371 2 3.7922816854004460e-01 2.8892033986313628e+01 1.3296748843700371e+01 1.3139676194859646e+01 0 0 0 +324 2 3.7804058289877623e-01 2.8045388837938837e+01 1.0362956781269546e+01 1.0966335639341752e+01 0 0 0 +1513 1 -7.2430023342488414e-01 2.8881320118970088e+01 9.1041277390575210e+00 1.1994439370381899e+01 -1 0 0 +1209 2 3.6441290231988888e-01 2.4074791303539190e+01 8.2571344459664209e-01 1.1862709696153372e+01 0 1 0 +2867 2 3.3367087750989155e-01 2.1933261226144282e+01 1.4430897465590604e+00 1.5337873311969894e+01 0 1 0 +726 2 3.6686138816262709e-01 2.6720980896046598e+01 1.4626232759462358e+01 9.2802711162368201e+00 0 0 0 +2842 1 -7.8624468131457681e-01 2.7232480962626724e+01 1.0845559515884709e+01 1.5373328913467384e+01 0 0 0 +696 2 3.6054808539297123e-01 2.7793969361930291e+01 7.6259855775402254e+00 1.4944171960632884e+01 0 0 0 +1369 1 -7.4256077125336828e-01 2.9803870731787580e+01 1.3305936847377534e+01 1.3411588260019409e+01 0 0 0 +694 1 -7.1706463366983519e-01 2.7156586492888376e+01 7.9883996773441774e+00 1.4295256096137743e+01 0 0 0 +323 2 3.7195855152570956e-01 2.7748777322164095e+01 1.1830503224226787e+01 1.1382950676740167e+01 0 0 0 +695 2 3.7124602497091064e-01 2.7719706022336297e+01 8.4919202452640921e+00 1.3681935636205370e+01 0 0 0 +1514 2 3.3933637568221964e-01 2.9244700970521720e+01 8.5963009096932481e+00 1.1263828767558987e+01 -1 0 0 +510 2 3.8828823839584120e-01 2.6075368031705707e+01 1.2310988791367421e+01 1.2640872847247850e+01 0 0 0 +724 1 -7.4511947281101720e-01 2.5808929774370789e+01 1.4484311885958050e+01 9.0710492431024345e+00 0 0 0 +2826 2 3.4887634552912389e-01 5.9193304107028055e-01 1.1066701119073434e+01 1.2820465662405345e+01 1 0 0 +2824 1 -7.5927476105466352e-01 3.1028903563827427e+01 1.0527702429881463e+01 1.3263943547969522e+01 0 0 0 +2820 2 3.7680495638587247e-01 2.7198103327062668e+01 1.0007304625255401e+01 1.5022055025560837e+01 0 0 0 +355 1 -7.4087532910863818e-01 2.5065694721935749e+01 1.0732818529069602e+01 1.0531887179220396e+01 0 0 0 +1370 2 3.4983799635826440e-01 3.0024031504195523e+01 1.2365774545705298e+01 1.3552683999184932e+01 0 0 0 +1772 2 3.6575589708809214e-01 2.4452498441039850e+01 1.2881998712136237e+01 7.7199011432608176e+00 0 0 0 +770 2 3.0514881990206211e-01 2.7043323742653396e+00 1.5385836115352269e+01 3.7684308975494005e+00 0 0 0 +1928 2 3.6744256412349430e-01 1.9015268991040973e+01 1.5328149726063067e+01 1.5092092926297921e+01 0 -1 0 +618 2 3.8371631137463069e-01 1.7283132603655634e+01 1.1639274473160445e+01 1.5411448380872919e+01 0 0 -1 +1398 2 3.6170274436740163e-01 2.8344713847646990e+01 4.6570878052941138e+00 4.1436624389794313e-01 0 1 0 +2077 1 -6.9112585706452034e-01 2.0332731357558455e+01 9.1701180155735926e+00 1.5371016053672376e+01 0 0 0 +2760 2 3.5269778250415618e-01 1.3919531869932301e+01 3.9832781067599221e-01 3.3263240469941745e-02 0 1 1 +2360 2 3.4047980808683631e-01 3.0925661301778430e+01 1.3754547587631775e+01 2.4433814371848030e-02 -1 0 1 +1716 2 3.4898581950663687e-01 2.0414648143923635e+01 6.0070979551118855e+00 2.2458159776908376e-02 0 0 0 +2495 2 3.8380415923813643e-01 1.2140772796270996e+01 1.5044179570579624e+01 1.9111398600325018e+01 0 0 0 +1510 1 -7.5087682457039318e-01 3.0366012304851388e+01 6.1425731923167015e-01 2.2613501028601558e+01 -1 0 0 +1399 1 -7.3768371946575073e-01 1.6036239048419159e+00 4.0672114579694050e+00 1.7352383834671262e+01 1 1 0 +1400 2 3.9908454065479759e-01 2.2469667070937702e+00 3.8278551127389129e+00 1.6637850643092481e+01 1 1 0 +1512 2 3.7789271319007245e-01 1.1188339514775696e+00 3.1944434011273817e+00 1.7370035174685299e+01 0 0 0 +721 1 -7.5018429578768908e-01 1.8031644249929522e+00 1.6133111032942060e-01 2.0247364996942810e+01 1 0 0 +667 1 -7.3286889311415315e-01 5.3080738250166161e-02 5.2318713355838966e+00 1.5585876800557909e+01 1 0 0 +1489 1 -7.3908919336096490e-01 1.9485635399818588e-01 4.3228418464458418e+00 2.0155165992122306e+01 1 1 0 +1491 2 3.4964605628851708e-01 4.6497595408908804e-01 4.0032993099037570e+00 1.9282687909750742e+01 1 1 0 +2182 1 -7.5543509374757967e-01 2.3278267931767402e+00 5.2002967180338544e+00 2.2910361225889229e+01 1 0 0 +1490 2 3.1827242776042053e-01 7.3452297627354446e-01 5.1186662985752998e+00 2.0350056541337807e+01 1 1 0 +1731 2 3.5388933782086229e-01 5.5843392737237787e+00 6.0418140928456792e+00 1.8155919825881185e+01 0 0 0 +1076 2 3.5925501011934230e-01 3.1067739134570624e+00 4.4736987664420358e+00 1.9385540613216282e+01 0 1 0 +1628 2 3.5683532717327937e-01 3.5001120784175699e+00 2.7890180412728469e+00 2.1700652288420351e+01 0 0 0 +1627 1 -7.2273125880781386e-01 3.9835327298466581e+00 2.3352342284873102e+00 2.0971434826072894e+01 0 0 0 +2302 1 -7.0671176857821183e-01 4.5156038197760315e+00 7.2556119695501851e+00 1.7102214893634791e+01 0 0 0 +2304 2 3.5902776632376993e-01 5.2375754720243934e+00 7.8796653845499849e+00 1.7042413429928562e+01 0 0 0 +1730 2 3.9122348771072701e-01 1.6159253099446187e+00 8.9409708084989450e-02 2.1191345524475746e+01 0 0 0 +2123 2 3.3328495684696835e-01 4.5959361664854512e+00 1.7706380801194286e+00 2.1455895706505316e+01 1 0 0 +18 2 3.8131770931075393e-01 5.1566534214106134e+00 5.9981878488765989e+00 2.2151131964849540e+01 0 0 -1 +1576 1 -6.6410084264859059e-01 4.9727258709300983e+00 1.8421900885191604e+00 1.8310105025334661e+01 0 1 0 +834 2 3.7529924274621479e-01 3.1009809600866177e+01 1.0638446673244799e+00 1.7570565363985121e+01 -1 1 0 +1077 2 3.4357885518072762e-01 2.7970410402511705e+00 4.9459460775930140e+00 2.0859845990047440e+01 0 1 0 +2768 2 3.6062790576513026e-01 2.2580455379630944e+01 1.5438392406888545e+01 2.3954633004980806e+01 0 0 0 +1075 1 -6.5499093433895306e-01 3.3425664832525501e+00 5.1337538522957633e+00 2.0064116071962964e+01 0 1 0 +1737 2 3.2572362065507643e-01 1.3956370612838672e+01 1.1413512973612010e+01 1.5719743085265273e+01 0 0 0 +74 2 4.0732383282033274e-01 2.4941039528789433e+00 7.1950484067293354e+00 1.7528595974246507e+01 0 0 0 +723 2 3.4337683920961237e-01 2.5369430889723623e+00 8.0466266280131649e-01 2.0218306108728594e+01 1 0 0 +1557 2 3.8836367816662498e-01 5.9625076694271373e+00 5.5946436522259386e+00 2.0021845571050747e+01 0 0 0 +2012 2 3.9584671272080552e-01 1.8504646269966113e+01 5.5234091503868079e+00 1.5831704470793509e+01 0 0 1 +1548 2 4.0123598128015719e-01 3.0197131138107711e+01 3.4014120288545215e+00 2.1337687711589620e+01 -1 0 0 +1526 2 3.9376431680434920e-01 6.2004220365499518e-01 5.0247897242583619e+00 1.6469455493334944e+01 0 0 0 +1736 2 3.7869480886154222e-01 1.4153874689421853e+01 1.0455895969520149e+01 1.6859976886356076e+01 0 0 0 +199 1 -6.7259345207262222e-01 2.9625432202375613e+01 3.1774571783918465e-01 2.5277794518370417e+01 -1 0 -1 +2183 2 3.6123631159819070e-01 1.6309647867153443e+00 5.4154992990929900e+00 2.3558477513813042e+01 1 0 0 +2184 2 3.8107882408386001e-01 3.0588474354809465e+00 5.8777943718182781e+00 2.2862340992754000e+01 1 0 0 +2119 1 -7.4899778242209114e-01 4.7974041303109329e+00 6.4643051584335076e+00 2.2932352779587710e+01 1 0 0 +1029 2 3.6357343930949232e-01 1.0078126475917001e+01 8.7976628401234347e+00 1.5612421301471080e+01 0 1 0 +1578 2 3.8019150424600251e-01 4.5729134334226602e+00 1.9775568967392523e+00 1.9183033038538440e+01 0 1 0 +922 1 -7.6797331029097093e-01 1.0613199336801812e-01 1.8392220094765086e+00 1.6955856193145575e+01 0 1 0 +350 2 3.9969535736414824e-01 4.2232535021455782e+00 9.6529713555406857e+00 3.0589992691307742e+01 0 0 -1 +1642 1 -7.7104691105573120e-01 7.1216189276687381e+00 8.5579228135051810e+00 1.6037020459541761e+01 0 0 0 +1729 1 -6.6244722620080421e-01 6.1710446796733072e+00 5.2596730581611482e+00 1.8140015691845608e+01 0 0 0 +2126 2 3.5311034071653336e-01 7.0485537923870947e+00 5.6017835615675446e+00 1.7967951239720950e+01 1 0 0 +1577 2 3.9541432552641215e-01 5.9262676715720231e+00 1.5610599273080601e+00 1.8455505913264496e+01 0 1 0 +1555 1 -7.3418059770973620e-01 6.4224173297836087e+00 6.0320937360710563e+00 2.0795048533013787e+01 0 0 0 +2314 1 -7.9322023620712423e-01 1.0212451950467653e+01 5.8943355257454169e+00 1.6846163435672906e+01 0 1 0 +2316 2 3.8255374431915579e-01 1.0435619686776985e+01 6.7699402674077769e+00 1.6634658656641051e+01 0 1 0 +2339 2 3.1113846851151389e-01 2.6091183348311787e+01 4.9385471341871062e-01 2.9379533922411643e+01 -1 1 0 +1717 1 -7.1024551195204777e-01 9.2922541148218230e+00 3.8731526996218681e+00 1.8644298699628731e+01 0 0 0 +1718 2 3.5988581904060296e-01 9.7409871077917689e+00 4.6725087736830675e+00 1.8356994294703249e+01 0 0 0 +2535 2 3.5412795516933754e-01 1.2501075646043335e+01 1.2303266899416381e+00 2.1214372309792267e+01 0 1 0 +2533 1 -7.4481726688147765e-01 1.2729300494112945e+01 8.7889801182680549e-01 2.0342171106077370e+01 0 1 0 +1719 2 4.1339726876671729e-01 9.1805256363796293e+00 3.3409469153405462e+00 1.7842810847455642e+01 0 0 0 +461 2 3.7726726364868329e-01 8.3678538140723067e+00 7.2070804720138582e-01 1.9084968957537004e+01 0 1 0 +880 1 -7.0455425675989003e-01 9.0706567727846608e+00 7.5666569765700542e-01 2.1495416000911337e+01 0 1 0 +837 2 3.7100411902490354e-01 7.3307541717727309e+00 5.7493044868988967e+00 2.0771777886484315e+01 0 1 0 +1858 1 -7.1356101893345791e-01 1.8882085367805807e+01 1.9447505818290339e-01 2.9729080610363102e+01 0 0 0 +1846 1 -7.6289544618688920e-01 9.1645125578645530e+00 5.0563505558921547e+00 2.0942052309907574e+01 0 0 0 +1847 2 3.5549954169923575e-01 9.7280416466814685e+00 5.8085850743355287e+00 2.0675028731634548e+01 0 0 0 +1848 2 4.0206265312287748e-01 9.3577279611524169e+00 4.3049481912625627e+00 2.0324157244908037e+01 0 0 0 +2291 2 3.3105650807375864e-01 7.5104327653658300e+00 4.7204814139978444e+00 2.2338331590732952e+01 0 1 0 +257 2 3.9862677946627079e-01 9.6857126567886525e+00 2.2661911053678696e+00 2.2317133889285383e+01 0 0 -1 +1600 1 -7.7841198332143224e-01 1.0978388164408370e+01 7.2062613921027374e+00 2.0334591348240288e+01 0 0 0 +1408 1 -7.8153555295219479e-01 2.7185838954793191e+01 4.7608085410496626e-01 1.6110115042871087e+01 0 1 0 +2667 2 3.4731250093441185e-01 1.1969979438032301e+01 3.2406400264920188e+00 2.2709076063911297e+01 0 1 0 +1643 2 3.4577566703734625e-01 7.6991171113266104e+00 8.5537351952302174e+00 1.6767266852350037e+01 0 0 0 +112 1 -7.3610922477869090e-01 8.4272358017205349e+00 7.1874247759227625e+00 1.8618264431273410e+01 0 0 0 +113 2 3.4931817850272084e-01 8.7785893529198038e+00 6.9264238927739203e+00 1.7788660050224067e+01 0 0 0 +114 2 3.5828579006050776e-01 9.2406203148625465e+00 7.3636187921657461e+00 1.9081630997881891e+01 0 0 0 +460 1 -7.3306959425209728e-01 7.6627785111790834e+00 9.2440600318877042e-01 1.8509786915145462e+01 0 1 0 +258 2 3.6302959621720760e-01 9.3931026087409464e+00 3.6926457562881869e+00 2.2942698180548238e+01 0 0 -1 +256 1 -7.5529004157831792e-01 9.9800909169102798e+00 2.8944128097040145e+00 2.2977757183128457e+01 0 0 -1 +1602 2 3.5748374023611279e-01 1.1280991547179148e+01 7.1947121243517644e+00 2.1216792306881498e+01 0 0 0 +2274 2 4.0329908767829520e-01 1.0109249958114512e+01 1.3266344584526082e+00 1.6492584063196652e+01 0 1 0 +2273 2 3.6199572830753601e-01 8.6868378772880988e+00 1.3846988131221662e+00 1.7122059713194172e+01 0 1 0 +2534 2 3.7698533762185865e-01 1.3096741541861098e+01 1.5668244608297690e+00 1.9858419662881357e+01 0 1 0 +2723 2 3.2966014241342950e-01 1.2865507327929111e+01 5.7657970636332880e+00 2.0284696859934535e+01 0 0 0 +2429 2 3.9890142939534395e-01 1.3235520029327782e+01 3.2610660365757540e+00 1.7720558094505961e+01 0 1 0 +2722 1 -7.5583929838210839e-01 1.3495328152854746e+01 5.0761740639646380e+00 2.0358024376679783e+01 0 0 0 +2428 1 -7.6321343601412650e-01 1.3533255260984459e+01 3.0064324184348932e+00 1.8594329457124999e+01 0 1 0 +2430 2 3.8238974683830995e-01 1.3348108069065720e+01 3.7717196700134994e+00 1.9169076795662715e+01 0 1 0 +2724 2 3.7014591264750768e-01 1.4334658657550106e+01 5.5309074417988855e+00 2.0165644432206360e+01 0 0 0 +212 2 3.7507533078296590e-01 1.0233641220443133e+01 3.1196638769055820e+00 3.0299391052978574e+01 0 0 -1 +2666 2 3.3253925871032169e-01 1.2922329552277349e+01 3.3585087518611449e+00 2.1577677162873119e+01 0 1 0 +311 2 3.9680860625847059e-01 1.5196069416190609e+01 2.4210270875749567e+00 1.8369710823338629e+01 0 0 0 +310 1 -7.4297434057977974e-01 1.6061178007015329e+01 1.9236080127837125e+00 1.8463774077714241e+01 0 0 0 +312 2 3.6296563152846356e-01 1.6698036888593922e+01 2.0918846528450246e+00 1.7695322844206643e+01 0 0 0 +2512 1 -7.1447877135425020e-01 1.5524816726500596e+01 5.5154840880220801e+00 1.6820872483234677e+01 0 1 0 +1726 1 -7.2647410965505543e-01 1.7930496079099601e+01 1.1801658182298256e+00 2.2675462098797091e+01 0 0 0 +2807 2 3.9615037625287181e-01 1.5827065749399567e+01 5.9932610940907418e+00 1.8317301659279494e+01 0 1 0 +2806 1 -7.8077159178042066e-01 1.5937665797146234e+01 6.4601060475095720e+00 1.9216312302800269e+01 0 1 0 +2808 2 3.8432282399363588e-01 1.6407095299361821e+01 7.3023239614847881e+00 1.9138853514357827e+01 0 1 0 +1450 1 -7.4552673337158848e-01 1.8015211860067204e+01 2.5793663608097672e+00 1.6536654630651896e+01 0 1 0 +2522 2 3.7573333389898150e-01 1.7008007562356166e+01 8.3125790408370193e-01 2.2682063203603214e+01 0 1 0 +1728 2 3.5557836099406387e-01 1.7873561001581070e+01 1.8783684370156675e+00 2.1924094861675691e+01 0 0 0 +2514 2 3.5704297687646563e-01 1.4538382969196579e+01 5.6581887698343438e+00 1.6731770621130298e+01 0 1 0 +597 2 3.6838808546295970e-01 1.6892303638410976e+01 2.4377488271971202e+00 1.9823131554774847e+01 0 0 0 +596 2 4.0008098263286890e-01 1.7742449623088444e+01 3.7497354081613237e+00 2.0074349183211687e+01 0 0 0 +2531 2 3.4504061612994036e-01 1.4704173681135734e+01 1.5898811908156958e+00 2.2475550075454489e+01 0 1 0 +2665 1 -7.6326543782505774e-01 1.2865065253930233e+01 2.8924017149285000e+00 2.2427091762386485e+01 0 1 0 +1452 2 3.7139220650702942e-01 1.8355035776373093e+01 2.0120135709890774e+00 1.7232858667620217e+01 0 1 0 +595 1 -7.5682276478538346e-01 1.7713875025393552e+01 2.8242178713402324e+00 2.0273752811152491e+01 0 0 0 +1906 1 -7.6790724115151865e-01 1.8341767584286075e+01 5.3612836502727008e+00 2.0360793250683866e+01 0 0 0 +1907 2 3.3404104676695939e-01 1.8861098063299817e+01 5.7846346208771955e+00 1.9777399107098045e+01 0 0 0 +1908 2 3.4389498527733947e-01 1.7405974075624133e+01 5.7316539539647691e+00 2.0086768232486353e+01 0 0 0 +2568 2 3.4334428892311453e-01 1.4215814597672862e+01 3.6419862833665153e+00 2.3353777878700900e+01 0 0 0 +2696 2 3.5191086878952516e-01 1.8628729439088247e+01 1.6129994331342259e+00 1.9167948805470086e+01 0 1 0 +1870 1 -7.4807001377895854e-01 1.2794565283042013e+01 4.5672901877578393e+00 1.6439936121378878e+01 0 0 0 +1451 2 3.7505732443904505e-01 1.8483153648502871e+01 3.4552827083940656e+00 1.6699691043118662e+01 0 1 0 +1807 1 -7.1708389979514675e-01 1.1987311595652530e+01 7.8876023479661930e+00 2.2974062537851768e+01 0 0 0 +1809 2 3.7001576738569475e-01 1.2779299470376676e+01 8.3474837865414813e+00 2.2651068126240350e+01 0 0 0 +1872 2 3.6143177469791959e-01 1.1913393176631594e+01 4.9047426120171140e+00 1.6548088241326184e+01 0 0 0 +2513 2 3.3544440426149241e-01 1.5874352219267594e+01 6.1609623454137710e+00 1.6158974870228228e+01 0 1 0 +2750 2 3.4844332937132061e-01 1.8939834789518464e+01 5.3548506879791899e+00 2.2370157376858458e+01 0 0 0 +2751 2 3.9710958952960085e-01 1.8684430037259045e+01 4.6166519135821122e+00 2.3720840532831094e+01 0 0 0 +2548 1 -7.2500975173994919e-01 2.4398141217717630e+01 1.5066201235548282e+00 2.0648397575609916e+01 0 0 0 +2549 2 3.5942198542886616e-01 2.4686865774467350e+01 5.4185048008071712e-01 2.0416649887435781e+01 0 0 0 +704 2 3.4397990125970002e-01 2.3961476301029190e+01 4.6775175986420106e+00 1.6620366843348158e+01 0 0 0 +703 1 -7.3657177238484384e-01 2.3387012202217360e+01 5.5971433300209910e+00 1.6307873022207598e+01 0 0 0 +2104 1 -7.2165781836774701e-01 2.1070590376772099e+01 4.1265734082450702e+00 2.0151961866413032e+01 0 0 0 +2106 2 3.8891137084512883e-01 2.1047646402560087e+01 3.3271412204592914e+00 2.0651031825938972e+01 0 0 0 +1933 1 -7.5489489567222001e-01 2.1875744765757279e+01 2.1549335059777008e+00 2.1804583009605864e+01 0 0 0 +1935 2 3.6546947997464563e-01 2.2641662767210502e+01 1.9008251074049098e+00 2.1285876124251484e+01 0 0 0 +1934 2 3.5167752337170388e-01 2.1399382466953121e+01 1.3372657622763970e+00 2.1935226252481069e+01 0 0 0 +2105 2 3.4956828454256972e-01 2.0169494826853967e+01 4.5086360521536966e+00 2.0164080891958633e+01 0 0 0 +2703 2 3.6169134714827844e-01 2.0208159180265085e+01 4.6500351603551247e+00 1.6949289521344458e+01 0 1 0 +1977 2 3.6227389483556977e-01 2.2183570585073195e+01 6.1160173341246171e+00 2.2732505571545655e+01 0 0 0 +2897 2 3.9101094604738995e-01 2.2569417337313467e+01 5.1153011905446846e+00 2.0674231920968779e+01 0 1 0 +1214 2 3.5605487665142194e-01 2.2972347386857596e+01 1.9764508001142294e+00 1.9183797150727944e+01 0 1 0 +2701 1 -7.5285041152992094e-01 1.9355181725869073e+01 5.0502109475701635e+00 1.7318465661457108e+01 0 1 0 +2898 2 3.5698439783817099e-01 2.4078240794210586e+01 5.4371706745556576e+00 2.0403872106911571e+01 0 1 0 +1215 2 3.6300774567522309e-01 2.2846492228884660e+01 1.1444733804903375e+00 1.7838640945562048e+01 0 1 0 +1213 1 -7.4232847802753166e-01 2.2801287712195730e+01 2.0652893763025508e+00 1.8239584983223260e+01 0 1 0 +1539 2 3.8153948636053286e-01 2.4246725550188323e+01 2.9062001202492209e+00 1.7819079045324681e+01 -1 0 0 +2212 1 -6.8484229727562052e-01 2.6950220419873258e+01 1.5337925523512927e+01 3.0036170495158427e+01 0 -1 0 +2695 1 -7.3148367832924932e-01 1.9017859654628392e+01 9.3497112919308378e-01 1.8553987369009768e+01 0 1 0 +1806 2 3.4073944927022032e-01 2.1967495412854674e+01 4.2722321976073747e+00 1.5870916188327204e+01 0 0 0 +1805 2 3.7311057201484432e-01 2.1692745419053487e+01 3.3331048050995826e+00 1.6978789820814846e+01 0 0 0 +2697 2 3.8948678557809024e-01 1.9737028295240538e+01 5.2044300784260122e-01 1.9013732817730865e+01 0 1 0 +2896 1 -7.4113625020590856e-01 2.3264285650263719e+01 5.7579241525589371e+00 2.0744568373963073e+01 0 1 0 +1804 1 -7.3710896232291279e-01 2.1341741017368161e+01 3.5531996306732743e+00 1.6157283372022793e+01 0 0 0 +2749 1 -7.3934220363961434e-01 1.9180677327347432e+01 5.3621157473836289e+00 2.3337307400779466e+01 0 0 0 +2702 2 3.6865003712290911e-01 1.9644798397915739e+01 5.8729888340691696e+00 1.7698178978855907e+01 0 1 0 +1976 2 3.5068974077975706e-01 2.1047799730702469e+01 5.8336483315295267e+00 2.3633413249403770e+01 0 0 0 +1752 2 3.8216632993801475e-01 2.3509631005766302e+01 6.6028333833886999e+00 1.7646409570393065e+01 0 0 0 +1750 1 -7.6521898331383797e-01 2.3204144681456928e+01 7.2658169328883657e+00 1.8338490258449397e+01 0 0 0 +2110 1 -7.2712249954507657e-01 2.0446505703884430e+01 7.6793514021836842e+00 1.7914955076678705e+01 0 0 0 +2844 2 3.7070022365367028e-01 2.1392755482132475e+01 7.6314899521161124e+00 1.7776830958570969e+01 0 0 0 +1751 2 3.6520478085553282e-01 2.3363740043900894e+01 6.8549653838828606e+00 1.9198634912467842e+01 0 0 0 +1511 2 3.9674404770742960e-01 2.9848200302601587e+01 3.1208543954542306e-01 2.3360153157430634e+01 -1 0 0 +883 1 -7.7564575432904614e-01 2.4804116676098811e+01 3.6079442952052045e+00 1.7333517725433307e+01 -1 1 0 +2231 2 3.9317639957322165e-01 3.1022236881941787e+01 5.1339060816356730e+00 3.0358312375049980e+01 0 0 0 +2294 2 4.0147134126849410e-01 2.9655604965329509e+01 2.1048628903381141e+00 2.2044797311289138e+01 -1 1 0 +2550 2 3.9377724350660276e-01 2.5251613938761700e+01 1.9507494572765729e+00 2.0507750845162786e+01 0 0 0 +1404 2 3.6701323517805917e-01 2.6548106773200796e+01 3.2730252276319405e+00 2.2331832672943985e+01 0 1 0 +840 2 3.8477945967648181e-01 2.8179795711856599e+01 3.8997593520209257e+00 1.6598188317460181e+01 -1 1 0 +2532 2 3.4193596019526312e-01 1.4647043611781461e+01 1.7112687857158618e-01 2.2996742722587530e+01 0 1 0 +1546 1 -7.3697581911800814e-01 2.9407543317472097e+01 3.0108394092492485e+00 2.1648362692686568e+01 -1 0 0 +1921 1 -7.0795569268367298e-01 2.8564919201177538e+01 2.5314864439847811e+00 1.7537579598910398e+01 0 0 0 +555 2 3.3248409601433471e-01 2.6744569832249603e+01 5.4427023589553167e+00 1.8716092392999588e+01 0 0 0 +2913 2 3.7305112269939156e-01 2.8117182390276444e+01 1.1023792109791506e+01 1.5678664589960315e+01 0 1 0 +919 1 -7.5312632732781148e-01 2.7435504978866611e+01 6.9693469538572668e+00 1.7082550528432016e+01 -1 1 0 +2317 1 -7.7753729142573613e-01 2.6755851186055377e+01 3.1192083142036604e+00 2.0751177018989626e+01 -1 1 0 +650 2 3.8278606702436219e-01 2.6594103028328075e+01 1.5235512573629876e+01 1.6332700020294890e+01 0 0 0 +2103 2 3.7175421364097755e-01 2.7442110799564006e+01 7.4066067766033852e+00 2.0304558513852822e+01 0 0 0 +735 2 3.4788674624738092e-01 2.9801781278393399e+01 6.6569554526966952e+00 2.0872480829592039e+01 0 0 0 +553 1 -7.4782725985236120e-01 2.5956786594272085e+01 5.2975849808341522e+00 1.9293645257456657e+01 0 0 0 +2319 2 3.9489058500456531e-01 2.6554217595761138e+01 3.9746118866937090e+00 2.0361220289471241e+01 -1 1 0 +2318 2 4.2090532594699959e-01 2.7663195235437865e+01 3.0520259558939564e+00 2.0950808479327208e+01 -1 1 0 +2069 2 3.8520960585906278e-01 2.9492776324890073e+01 2.3249704609938795e+00 1.7309738064352466e+01 0 0 0 +2419 1 -7.3422594626442594e-01 2.9166648949061670e+01 6.3295584508809082e+00 2.0326894663149726e+01 -1 1 0 +2234 2 3.6200217424902098e-01 2.9620827851563043e+01 5.6241594721068067e+00 1.9889138605458310e+01 0 0 0 +1910 2 3.7325564203044420e-01 2.8029843119160535e+01 1.8398773393439074e+00 1.7109689773618754e+01 0 0 0 +554 2 3.6177414155192317e-01 2.5403050813272564e+01 4.8638310169205461e+00 1.8661833567443907e+01 0 0 0 +2101 1 -7.4354647583889499e-01 2.7049435147623811e+01 8.2649551915291948e+00 2.0456272993052767e+01 0 0 0 +3000 2 3.4785770740465199e-01 2.6210375496757404e+01 6.7848535079359031e+00 2.1685381552879406e+01 0 1 0 +2998 1 -7.3773180866674382e-01 2.6145236639145288e+01 6.3639748409843007e+00 2.2595101808948755e+01 0 1 0 +2799 2 3.7811775266067665e-01 2.4541392918600117e+01 8.5129640455712625e+00 1.8461787021149501e+01 0 1 0 +1920 2 3.5570745040804447e-01 2.5378429261221580e+01 1.5300887016718237e+01 1.9431652897793192e+01 0 0 0 +2338 1 -7.1501232389933123e-01 2.6256861330951718e+01 3.2990508597986612e-01 3.0302262984548694e+01 -1 1 0 +2196 2 3.8258434810517011e-01 2.6064007265534816e+01 8.4756018837624509e+00 1.9017440862832462e+01 0 0 0 +2562 2 4.0191351957169247e-01 1.6809195589802684e+01 1.4839059328887014e+01 3.1029300751958736e+01 0 0 0 +2086 1 -7.0559567942719459e-01 2.7198142309122478e+01 8.9600562750331358e-01 2.3297509165240378e+01 0 0 0 +920 2 3.7154519453671969e-01 2.6561931439292728e+01 7.2884432772868220e+00 1.7452219151581595e+01 -1 1 0 +2102 2 3.7410167064637262e-01 2.7839258537780733e+01 8.8715341427024317e+00 2.0475072649422199e+01 0 0 0 +2088 2 3.7972293168842208e-01 2.6840489778526059e+01 1.7359779465611900e+00 2.3492552448470118e+01 0 0 0 +2375 2 3.5605642667339016e-01 4.7553421563886396e+00 1.4945748775937680e+01 1.7959394986209002e+01 0 0 0 +30 2 3.7313644596893036e-01 4.2771687146128468e+00 1.4050519690115335e+01 2.1557218113291022e+01 0 0 0 +131 2 3.7244563299825334e-01 3.8402269884191518e+00 1.4014381408215009e+01 1.6545257947265270e+01 0 0 0 +722 2 3.8550484114095246e-01 1.0438902264090224e+00 7.2769105915557564e+00 1.9538693570107075e+01 1 0 0 +2071 1 -7.4691105578504957e-01 9.9468678528572518e-01 7.7473030574023767e+00 2.0386510264149848e+01 1 0 0 +1566 2 3.7786243872903308e-01 3.0685101118112281e+00 1.0480663574424261e+01 1.8908756792250706e+01 0 0 0 +164 2 3.7792787876025169e-01 3.5406694169400783e+00 1.0520195357463011e+01 2.1264898369459136e+01 0 0 0 +165 2 3.7301593364406482e-01 2.1602686002361025e+00 1.0949361589932771e+01 2.1607132517587605e+01 0 0 0 +163 1 -7.4278167096018366e-01 2.6183894521599580e+00 1.0226351915179732e+01 2.1119894608589568e+01 0 0 0 +2073 2 3.9523756184886205e-01 1.5856240291663786e+00 8.4210206141675084e+00 2.0534899210785877e+01 1 0 0 +1564 1 -6.8777965339655978e-01 3.7286159460637016e+00 1.0573973436499173e+01 1.8271110370858004e+01 0 0 0 +1565 2 3.6122715307603448e-01 3.6653418311743171e+00 1.1534373972218873e+01 1.8050695846568338e+01 0 0 0 +28 1 -6.5552817048155709e-01 4.8640724442328418e+00 1.3599606162402642e+01 2.0901920218534155e+01 0 0 0 +843 2 3.7183929016315392e-01 2.0932244124097892e+00 1.0722102311402404e+01 1.5613065539209638e+01 0 1 0 +841 1 -7.4100986848281925e-01 1.4860346424824933e+00 1.0124927516662728e+01 1.6161875387129459e+01 0 1 0 +136 1 -7.1055350980855814e-01 1.6305260131994366e+00 7.5049545131389452e+00 1.7704559019254795e+01 0 0 0 +29 2 3.8035511303910141e-01 4.9500953483716792e+00 1.2710906172512630e+01 2.1331309043466288e+01 0 0 0 +138 2 3.7747680868513417e-01 1.5667395929956487e+00 8.3358720892168101e+00 1.7221829972434470e+01 0 0 0 +161 2 3.7199682962507802e-01 6.8264417361419110e+00 9.5788332517440296e+00 1.9064913935596906e+01 0 0 0 +1543 1 -7.6039189059221568e-01 6.6284958159658460e+00 1.0356187588597551e+01 1.8422421673149088e+01 0 0 0 +1544 2 3.7261321575622547e-01 5.7041060006714996e+00 1.0202409702968264e+01 1.8185324009578295e+01 0 0 0 +2989 1 -7.3744979863482263e-01 5.2002482597871955e+00 1.1050179517214810e+01 2.1900544583151135e+01 1 1 0 +132 2 3.3749949997674528e-01 2.4392963953691109e+00 1.3600652152954888e+01 1.7022357287869010e+01 0 0 0 +130 1 -7.0935056090895865e-01 3.3857884751847749e+00 1.3631600125067159e+01 1.7332633598652475e+01 0 0 0 +2460 2 3.5030606816395526e-01 5.2120122006547154e-01 1.2096326668225956e+01 2.2373234552819920e+01 0 0 0 +2458 1 -6.9003921263218182e-01 1.2088702059821916e+00 1.2377476885679373e+01 2.1676674104669765e+01 0 0 0 +2261 2 3.4529986508138705e-01 1.8628227882398931e+00 1.2725199218329593e+01 2.2315669124116550e+01 0 0 0 +2990 2 3.7725943655815275e-01 5.9585430320242487e+00 1.0425576974017529e+01 2.1758287172653681e+01 1 1 0 +2836 1 -7.2338594604304973e-01 3.0881772568642623e+00 1.4036975629414393e+01 2.3162135742500073e+01 1 0 0 +2991 2 3.0982451582420384e-01 5.2280013586330387e+00 1.1203024874281757e+01 2.2920463007595512e+01 1 1 0 +1785 2 3.8281471486206287e-01 6.6167742260554228e+00 1.3612536459776695e+01 1.9313609737248520e+01 0 0 0 +2121 2 3.8585698851848321e-01 4.4807308426661656e+00 7.3066901447446870e+00 2.2606766608759379e+01 1 0 0 +2837 2 3.7013465404632945e-01 3.5954162742032376e+00 1.3873516136223056e+01 2.3965882799467401e+01 1 0 0 +937 1 -7.3314223531008127e-01 2.9009549042530489e+00 8.4066590110596824e+00 2.3065122293270981e+01 0 1 0 +938 2 3.7193465068244991e-01 2.5191766273619289e+00 8.9434038738914126e+00 2.2299129294937106e+01 0 1 0 +2900 2 3.7818319167858133e-01 2.7415196699207897e+01 8.5499633253260967e+00 2.7845323239798631e+01 0 1 0 +405 2 4.0057701173858695e-01 1.2084678057047451e+01 8.9585126757363334e+00 1.6877323855921205e+01 0 0 0 +2794 1 -7.1956077419890807e-01 2.6712684139134382e+01 5.2906405574568689e+00 3.0610308369025347e+01 0 1 0 +2407 1 -7.2798611750345976e-01 7.3061596056138445e+00 9.1177404986389856e+00 2.0833418652341557e+01 0 1 0 +2408 2 3.6041671248831952e-01 7.3585132166454654e+00 8.2126653276617905e+00 2.0557345700254629e+01 0 1 0 +2409 2 3.6349064748110360e-01 8.2029129887498033e+00 9.3373021614919374e+00 2.1047308869552040e+01 0 1 0 +1640 2 3.5413656085315520e-01 6.7125397866169587e+00 1.1556501214790561e+01 1.6890357199937188e+01 0 0 0 +207 2 3.5322247205880647e-01 1.0524607756799654e+01 9.3693843752394290e+00 2.0792799719310164e+01 0 0 -1 +551 2 3.1596334670470599e-01 2.3139540645992245e+01 9.1643025932865942e+00 1.6085846237278776e+01 0 0 0 +1028 2 3.6283021390048514e-01 9.9820280890318642e+00 9.4050140382677920e+00 1.6941434255403038e+01 0 1 0 +1573 1 -7.2522851749844286e-01 9.3058726890929240e+00 1.1238508275232054e+01 1.7770799164061348e+01 0 0 0 +129 2 3.5259057163977803e-01 8.3037113370707765e+00 1.1287229704106414e+01 1.7808208870495932e+01 0 0 -1 +1575 2 3.6052169880570617e-01 9.4943013114788730e+00 1.1281399552467397e+01 1.8757265704033799e+01 0 0 0 +2423 2 4.1237379394554557e-01 1.0186267108735564e+01 1.2482543054700727e+01 1.6924064738290593e+01 0 1 0 +2422 1 -7.5528864189308997e-01 1.0617722992488041e+01 1.3201662366329364e+01 1.6503243095375066e+01 0 1 0 +1233 2 3.8200896233481607e-01 2.9020145946440103e+01 9.4345824693544422e+00 3.0586678472936867e+01 0 0 -1 +1533 2 3.9295894415255977e-01 1.0589356890099278e+01 1.1009283924992937e+01 2.0983954036008033e+01 0 0 0 +1531 1 -7.0374484297774720e-01 1.0106263090408950e+01 1.0226083225003583e+01 2.0595863319388489e+01 0 0 0 +2357 2 3.8210603736161919e-01 9.3430479690853403e+00 1.4443269291071177e+01 1.6225834414127757e+01 0 0 0 +2567 2 3.8669808384358728e-01 1.1333563966860329e+01 1.3333851376525297e+01 1.7201856579169146e+01 0 0 0 +1784 2 3.6121546867068344e-01 6.6624094012602990e+00 1.2176837629813919e+01 1.8723857648926369e+01 0 0 0 +2923 1 -7.3571394649167221e-01 1.1882439002847120e+01 1.2312812451221372e+01 2.1406602358155876e+01 1 0 0 +2561 2 3.9705462740753311e-01 9.4233693390889908e+00 1.4297828641073684e+01 2.1471400197495001e+01 0 0 0 +2560 1 -7.1032641792680462e-01 8.6943397986103594e+00 1.3755425443541210e+01 2.1178575676550675e+01 0 0 0 +1869 2 4.0682694563708804e-01 8.3710478606434258e+00 1.4164576937614921e+01 2.0375780486508098e+01 0 0 0 +206 2 3.3829609616742795e-01 8.7602454773378078e+00 5.9344065142883000e+00 2.2942854230873522e+01 0 0 -1 +2181 2 3.6130387415390852e-01 8.0414942997850325e+00 1.3458170888224247e+01 2.2923758503112353e+01 1 0 0 +2924 2 3.3776533563465239e-01 1.1654790831468008e+01 1.3105746318028583e+01 2.1920772281945446e+01 1 0 0 +2053 1 -7.3766684215097889e-01 2.5145602703224867e+01 8.6541961282170412e+00 2.3799760133041396e+01 0 0 0 +1644 2 3.5429954575230982e-01 7.3141820210076478e+00 9.3631445469736505e+00 1.5554808430099202e+01 0 0 0 +1027 1 -7.7401990553758282e-01 1.0388384085254383e+01 8.6584800868084262e+00 1.6539136615228763e+01 0 1 0 +278 2 4.0489742409491369e-01 6.9938898484793306e+00 1.5173297331096748e+01 2.4008993477712167e+01 0 0 0 +1783 1 -6.7335777806983732e-01 7.0430888152495594e+00 1.3106370436589541e+01 1.8618614099721668e+01 0 0 0 +2230 1 -7.5263543177058245e-01 8.5774186803729857e-01 5.1195093617962808e+00 3.0600357686081662e+01 1 0 0 +2018 2 3.6679909686347079e-01 1.6956245911637073e+01 8.9418921168532250e+00 1.7658439969659675e+01 0 0 0 +403 1 -7.4516078083489978e-01 1.2992692192882428e+01 9.0005766882634362e+00 1.7173322065859242e+01 0 0 0 +1401 2 3.8626833829586898e-01 4.4637530188548071e+00 2.7502724249676175e-01 1.5697870538564095e+01 1 1 0 +1754 2 3.8391964633410047e-01 1.1764550375668628e+01 1.3032705248164630e+01 1.9772788204968641e+01 0 0 0 +1665 2 3.4798518694100483e-01 1.1773395057063254e+01 7.0581714244376617e+00 1.9806056777995511e+01 0 0 0 +2925 2 3.7387206093991754e-01 1.2787584030668560e+01 1.2116691670547677e+01 2.1790460177572896e+01 1 0 0 +1753 1 -7.5022387562627957e-01 1.2039905378946813e+01 1.3351891586988085e+01 1.8873350966911072e+01 0 0 0 +2017 1 -7.3492391394875911e-01 1.6665501964712966e+01 8.9550052987174027e+00 1.8602274889064965e+01 0 0 0 +404 2 3.8301311901100599e-01 1.3055490172705039e+01 8.6872601889770351e+00 1.8165908713344329e+01 0 0 0 +1755 2 3.8871816627699718e-01 1.3049313906018305e+01 1.3321481532767583e+01 1.8928877974205388e+01 0 0 0 +2019 2 4.1561876716004592e-01 1.7365685743876266e+01 9.3759140561039285e+00 1.9039778589444754e+01 0 0 0 +1739 2 3.8801784154160446e-01 1.3642089513094440e+01 8.3609359204199958e+00 2.0178747887490413e+01 0 0 0 +1738 1 -7.8914970851668176e-01 1.3572069606153219e+01 7.7633324407689921e+00 1.9475132354984773e+01 0 0 0 +2730 2 4.0251827972944865e-01 1.7263138369980986e+01 1.3637637118825557e+01 2.0534207733959761e+01 0 0 0 +1740 2 3.8191172211745650e-01 1.4495710456273171e+01 7.4828978210185149e+00 1.9191910649208896e+01 0 0 0 +1210 1 -7.3635400562140607e-01 1.4286356936194165e+01 9.2377315162547564e+00 2.1969271672374305e+01 0 1 0 +2519 2 3.9450616331243338e-01 1.5532727974393639e+01 1.2716095898468238e+01 1.9005980741709461e+01 0 1 0 +2518 1 -7.0020767951093255e-01 1.4748998304438500e+01 1.2980336604099989e+01 1.8479994559915177e+01 0 1 0 +2520 2 3.8806503026240069e-01 1.4704854582895956e+01 1.2369733460036672e+01 1.7698543367203715e+01 0 1 0 +2728 1 -6.9651091995638481e-01 1.7074355541895120e+01 1.2813235371684920e+01 2.0142623733808158e+01 0 0 0 +2672 2 3.7300178188927147e-01 1.7804755750171203e+01 1.2681357261096485e+01 1.9532548952210597e+01 0 0 0 +616 1 -6.9174492598625059e-01 1.7435581503971978e+01 1.1433822824662480e+01 1.6367465338872680e+01 0 0 -1 +1212 2 3.8335884669842629e-01 1.4147485685425524e+01 1.0050674626063481e+01 2.2532174256149407e+01 0 1 0 +1211 2 4.0778944741854067e-01 1.4969405215963242e+01 8.7025602838862657e+00 2.2381354008202933e+01 0 1 0 +1037 2 3.9083726566379051e-01 1.3766844118198629e+01 1.4210140240142200e+01 2.2786501057899198e+01 0 1 -1 +1836 2 3.9187442257055055e-01 1.8979423247115456e+01 1.2009427785390942e+01 1.7407244710259985e+01 0 0 0 +2940 2 3.4632860432638313e-01 1.8451600439801506e+01 1.4839552720185747e+01 1.7368561537060227e+01 0 0 0 +842 2 3.4119337800122618e-01 1.3170436151882294e+00 9.4108747050476378e+00 1.5543224130927058e+01 0 1 0 +1516 1 -6.7068126500296144e-01 1.1425229800113051e+01 2.6455517175375637e-01 1.7762034538861357e+01 0 0 0 +1639 1 -7.2373086427851052e-01 6.3764181916873843e+00 1.1759659047129542e+01 1.5981229637569374e+01 0 0 0 +1038 2 3.7926588337572753e-01 1.5156959038847516e+01 1.3698403096322609e+01 2.2897074520829197e+01 0 1 -1 +388 1 -7.5510394342290132e-01 1.4111550559310265e+01 1.1560434211278997e+01 2.3443295473973926e+01 0 0 -1 +390 2 4.0655347049402102e-01 1.5039516853489459e+01 1.1720980918698904e+01 2.3307150086746127e+01 0 0 -1 +2595 2 4.1713439738631469e-01 1.7555658074944745e+01 1.2046788493534205e+01 2.3228099335612924e+01 0 0 0 +1036 1 -6.7551293206049901e-01 1.4561103067342792e+01 1.4032165389974502e+01 2.2296849078877067e+01 0 1 -1 +617 2 3.7623215020866863e-01 1.6543106285011845e+01 1.1407863625327440e+01 1.6695487415549007e+01 0 0 -1 +1735 1 -7.5113409137827258e-01 1.4590044443041155e+01 1.1218354811374031e+01 1.6427683357216281e+01 0 0 0 +1991 2 3.8459332332863760e-01 1.9497277727423661e+01 1.0578887237316250e-02 2.2458156727385099e+01 0 0 0 +899 2 3.8127010516342885e-01 5.3391559075200679e+00 9.9804570387332223e+00 1.5720359735406319e+01 0 0 0 +398 2 3.2004491336324487e-01 2.1495986442264993e+01 7.6050513166391003e+00 2.2363098294672028e+01 0 0 -1 +2680 1 -7.3202861077267689e-01 2.2066768893607218e+01 1.5375730708080813e+01 1.9415608440359819e+01 0 0 0 +2170 1 -7.6349686183636911e-01 1.8865824155187205e+01 9.4916039563870118e+00 1.9805581370270467e+01 0 0 0 +716 2 3.5632299047840366e-01 1.9357449724098466e+01 9.0020272700128974e+00 1.9135097158884438e+01 0 0 0 +2678 2 3.4951967851345100e-01 1.9495817439363719e+01 1.0952223438296004e+01 2.2143519070705047e+01 0 0 0 +354 2 3.5916029308246983e-01 2.0956698347810864e+01 1.1783208277501810e+01 1.9587783079463009e+01 0 0 0 +352 1 -6.8878961535675709e-01 2.0550706516505961e+01 1.1663387875887267e+01 2.0534690899852240e+01 0 0 0 +353 2 3.5776060615036392e-01 1.9734667085056032e+01 1.1066395062612594e+01 2.0358463217175814e+01 0 0 0 +2172 2 3.2563405921591260e-01 1.8971789304714186e+01 8.9767862096464004e+00 2.0605374764272497e+01 0 0 0 +506 2 3.7336604353172415e-01 2.1243934859328998e+01 1.3067633517947597e+01 2.1722114689046712e+01 0 0 0 +397 1 -7.0203789006736461e-01 2.1272215741460059e+01 8.4190413649576481e+00 2.1923024798635119e+01 0 0 -1 +2112 2 3.5749643675307025e-01 2.3277342972110947e+01 1.0273506654345852e+01 1.9746190274072337e+01 0 0 0 +399 2 3.8529248043220982e-01 2.2095981443530921e+01 8.9608436992017477e+00 2.1882225118690091e+01 0 0 -1 +669 2 3.5241719615984168e-01 2.3835092940756191e+01 1.1028890441661733e+01 2.1590790738013276e+01 0 0 0 +1939 1 -7.2135771505377078e-01 2.2966671549940813e+01 1.0008086922405964e+01 1.8897908893064958e+01 0 0 0 +715 1 -7.2997705047380057e-01 2.3653015785898301e+01 1.0098747871485116e+01 2.1824770265916694e+01 0 0 0 +1940 2 3.5160598280934757e-01 2.2669112888586351e+01 9.0908235054689985e+00 1.9073113742305335e+01 0 0 0 +717 2 3.8320793146871557e-01 2.4311519990824511e+01 9.7755906645591999e+00 2.2462924941857636e+01 0 0 0 +459 2 3.8416886073134027e-01 2.3070896264022778e+01 1.2452390151392521e+01 1.9315406632261965e+01 0 0 0 +1834 1 -7.2161997489727125e-01 1.9381599658981891e+01 1.2659658978319085e+01 1.8015457035261701e+01 0 0 0 +505 1 -6.9860310377840651e-01 2.1642858799412103e+01 1.3937964923486071e+01 2.1816452323103469e+01 0 0 0 +1835 2 3.7207914288685157e-01 2.0278979344207215e+01 1.2638224531969829e+01 1.7854801478038407e+01 0 0 0 +458 2 3.8212115507743072e-01 2.2372624989832556e+01 1.2229091079374045e+01 1.7903894019546094e+01 0 0 0 +457 1 -7.6499416451080382e-01 2.2343098067345160e+01 1.2805355870533806e+01 1.8699219400743679e+01 0 0 0 +1956 2 3.4339814167844712e-01 2.4186106360868280e+01 1.2969190144837924e+01 2.2301851785400849e+01 0 0 0 +2729 2 3.7703957361105783e-01 2.2081585098562567e+01 1.4464589638277989e+01 1.8968631374295192e+01 0 0 0 +1941 2 3.8549314621537878e-01 2.1944326659494948e+01 1.4125339370548296e+01 2.0896046712774201e+01 0 0 0 +2111 2 3.5065550630186537e-01 2.0214586295971163e+01 8.2482085452366718e+00 1.7099343233387046e+01 0 0 0 +2303 2 3.3566251428324961e-01 4.7982086445837524e+00 6.5562331072971682e+00 1.6506782621679776e+01 0 0 0 +882 2 3.5386422755678792e-01 9.7165959201112670e+00 1.5169399558564750e-01 2.1823152404527185e+01 0 1 0 +185 2 3.4046379682562783e-01 4.3305035655275319e-02 1.2912647970572984e+01 1.7031286717738347e+01 0 0 0 +2384 2 3.7660846054579272e-01 2.9465405847905281e+01 9.2655430068648865e+00 2.2725072426645035e+01 -1 1 0 +1068 2 3.8476208951181273e-01 1.3329215191795530e+01 1.1354157060663415e+01 3.1042205074704174e+01 0 0 -1 +2987 2 3.6560553509206023e-01 2.7464957672870540e+01 1.1248565497139367e+01 2.3809506566471352e+01 0 1 0 +346 1 -7.3391986676753573e-01 1.7056858454851412e+01 8.2180755585903089e+00 1.5626796727305591e+01 0 0 0 +184 1 -7.2609578154427024e-01 4.9464161798220929e-01 1.3770931023181264e+01 1.6871790013461275e+01 0 0 0 +2469 2 3.9352264166164758e-01 1.4823853627918639e+00 1.5415517317916478e+01 1.7290114940775041e+01 0 0 0 +921 2 3.9567342613304785e-01 2.7976820586123839e+01 7.6241864611821573e+00 1.6669910450292988e+01 -1 1 0 +730 1 -7.5440831141625975e-01 2.9940507767907427e+01 1.1024414260594568e+01 1.6465650387139668e+01 0 0 0 +732 2 3.6608217473124127e-01 3.0900323309008844e+01 1.0756077083335166e+01 1.6365877614743567e+01 0 0 0 +2132 2 4.0049444066124251e-01 2.4976244607438534e+01 1.3260747334438147e+01 2.0221675044683380e+01 0 0 0 +2131 1 -7.7945494920877012e-01 2.4472214704824960e+01 1.2409196296592279e+01 2.0203897211372077e+01 0 0 0 +2133 2 3.8570991198323573e-01 2.4943570048139250e+01 1.1853053597824776e+01 1.9524475894365100e+01 0 0 0 +640 1 -7.4773484071651031e-01 2.5532342776021249e+01 8.6043278685170712e+00 1.8213454212182754e+01 0 0 0 +2225 2 3.7750922652840646e-01 2.6069108746220927e+01 1.0262117383019357e+01 1.8267611041747067e+01 0 0 0 +2226 2 3.4778060237024450e-01 2.6239382865318579e+01 1.1685965248509371e+01 1.7749768533991165e+01 0 0 0 +2246 2 3.7627811404600109e-01 3.0297260992956371e+01 8.6714161509651131e+00 2.0389554356097957e+01 0 0 0 +160 1 -7.3033074976895529e-01 2.9624109555854151e+01 9.2807951844092678e+00 2.0695257535476276e+01 -1 0 0 +162 2 3.6796053651740235e-01 2.9490886980093705e+01 1.0053299858495222e+01 1.9995802359191931e+01 -1 0 0 +731 2 3.6711482998338107e-01 2.9715292499906422e+01 1.1173930209302149e+01 1.7425157563527797e+01 0 0 0 +2136 2 3.7353312060824306e-01 3.0456462227425714e+01 1.3397929850443866e+01 2.0727463330593576e+01 0 0 0 +2135 2 3.7707725039739515e-01 2.9083332776355398e+01 1.3250228537723050e+01 2.1409642910163022e+01 0 0 0 +2134 1 -7.2738501400538580e-01 2.9500436262165433e+01 1.3543525387246625e+01 2.0629409301244063e+01 0 0 0 +2072 2 3.8891740371251265e-01 2.8010580003273464e+01 1.1290754689919872e+01 1.8919865387757891e+01 0 0 0 +2122 1 -7.6644048790081043e-01 2.8976243521620926e+01 1.1401425816808537e+01 1.9049523031513747e+01 0 0 0 +2224 1 -7.6287182875028514e-01 2.6302186259578878e+01 1.1200627055575357e+01 1.8558007066340860e+01 0 0 0 +2124 2 3.8177232409347289e-01 2.9162220178382157e+01 1.2281700072770796e+01 1.9590310578059650e+01 0 0 0 +2247 2 3.7278880601710385e-01 2.6732418424088859e+01 1.3375916691502859e+01 2.2948704244468736e+01 0 0 0 +2912 2 3.5654891863482036e-01 2.8478781872414316e+01 1.4628254342701968e+01 1.8070471132846095e+01 0 1 0 +2911 1 -7.3296770724997251e-01 2.7562138940867662e+01 1.4686028519329875e+01 1.7771090994399270e+01 0 1 0 +2245 1 -7.3198965470550681e-01 2.7613387979096714e+01 1.3034627827881975e+01 2.3073332631836262e+01 0 0 0 +2732 2 3.6399052841284724e-01 2.8474495064115239e+01 1.0035090529339035e+01 2.4089533533768773e+01 0 0 0 +1405 1 -7.1712130024312082e-01 2.4909497949203029e+01 1.2417893636624896e+01 1.6247143313584463e+01 0 1 0 +1919 2 3.8535487605174684e-01 2.7056171148481642e+01 1.4437251107957492e+01 1.8535957281679362e+01 0 0 0 +137 2 3.6010823860519475e-01 2.8070308191720184e+01 1.3668673401282824e+01 2.3632800567763915e+01 -1 0 0 +2797 1 -7.4053306465865087e-01 2.7531406994413494e+01 1.0337524702304648e+01 2.4187314942978201e+01 0 1 0 +1407 2 3.3584572053128925e-01 2.4134739719232172e+01 1.1828768930389478e+01 1.6211473199796917e+01 0 1 0 +2887 1 -6.6686361361738655e-01 1.7366594829490911e+00 3.8184872265588798e-01 3.0534326547643687e+01 1 1 0 +2356 1 -7.3218856391362297e-01 8.7508872956418760e+00 1.5223406319860592e+01 1.5987431167238142e+01 0 0 0 +1135 1 -7.1096791971419460e-01 2.6483728833226294e+01 1.5402925392905622e+01 2.7411168513907231e+01 0 0 -1 +45 2 3.6392287941140833e-01 1.4006717062920890e+01 7.9881129827318178e+00 1.5817203648188739e+01 0 0 0 +652 1 -7.1326045703175078e-01 1.7940745850141756e+01 1.5517649835166518e+01 2.0664114896539090e+01 0 0 0 +1605 2 3.5111781404263770e-01 2.6299486851682459e+00 1.9084394243801095e+00 2.6702910352040490e+01 0 0 0 +156 2 3.7815022812234889e-01 2.8944617535136126e+00 3.7000780234493660e+00 2.3375635489162701e+01 0 0 0 +2576 2 3.6944053787329784e-01 4.5306460799063819e+00 6.8045844706988023e-01 2.3882858342485843e+01 0 1 0 +1603 1 -7.2352326684273671e-01 2.0925608534674192e+00 1.4994002789243699e+00 2.6053898871459438e+01 0 0 0 +1604 2 3.5784239543508978e-01 2.6558924493573683e+00 1.6491644984747833e+00 2.5285569030322147e+01 0 0 0 +768 2 3.5889503483555663e-01 2.6155775692569061e+00 6.2952737954860494e+00 3.0069361965627756e+01 0 0 -1 +959 2 3.4847682532600549e-01 3.3896562876093910e+00 5.3534311883952777e+00 2.8301965994702510e+01 0 0 -1 +154 1 -7.1845298746042896e-01 3.0060271800735214e+00 2.6906180589790232e+00 2.3485835681460074e+01 0 0 0 +155 2 3.6310940125395524e-01 3.9564133801821355e+00 2.4997700481529299e+00 2.3608032808913929e+01 0 0 0 +746 2 3.3452565110090060e-01 4.6091031750912199e+00 2.0564926734150242e+00 2.8598566794230077e+01 1 0 -1 +745 1 -7.4957206719184666e-01 4.6446472830542271e+00 2.0601499171929896e+00 2.7656284147156228e+01 1 0 -1 +747 2 3.3876187850410905e-01 5.5986980737654228e+00 2.2173410774498237e+00 2.7463488941283973e+01 1 0 -1 +2140 1 -7.5910771445322278e-01 4.6072371158375891e-01 5.6894736955241223e+00 2.7002676169462639e+01 1 0 0 +760 1 -7.2383900700149562e-01 3.0124918542978749e+00 4.9031052564718873e+00 2.7509888261364623e+01 0 0 -1 +761 2 3.3007493639865093e-01 3.3127594365808206e+00 4.0046170422366432e+00 2.7669968488879821e+01 0 0 -1 +766 1 -7.8191702293143428e-01 3.4450228601390331e+00 6.6501573073070226e+00 2.9746624243370210e+01 0 0 -1 +2142 2 3.8289699939760330e-01 1.3174004643759945e+00 5.1965945452085469e+00 2.7210580526167202e+01 1 0 0 +104 2 3.5380180318457871e-01 5.5198701162709645e+00 6.8752345186909745e+00 2.6249799741025491e+01 0 0 -1 +55 1 -6.9427182695468448e-01 5.9577817224673000e+00 6.4368574169994650e+00 2.5509779416469595e+01 0 0 -1 +2243 2 3.7410388442771397e-01 1.2034232408547305e+00 7.1972306827937826e+00 2.7274449960386374e+01 1 0 0 +57 2 3.7136024885638275e-01 5.2676968644264459e+00 6.2372575723454098e+00 2.4839309811753004e+01 0 0 -1 +1610 2 3.7631132379252363e-01 4.0437390210148987e+00 3.2407764692770552e-01 2.8154713224445732e+01 0 0 0 +231 2 3.7991147877901293e-01 6.1647893646658352e+00 5.0583850605738689e+00 3.0835566349958654e+01 0 0 -1 +2575 1 -7.3924682246274653e-01 5.6104836585269391e+00 2.2948051186240721e+00 2.4068361492403909e+01 0 1 0 +229 1 -7.3142249570417361e-01 5.6897214367236337e+00 5.0771683978045949e+00 2.9988809681094182e+01 0 0 -1 +2242 1 -7.5275488968526127e-01 1.6121977001859173e+00 8.0621852338332864e+00 2.6927327677845390e+01 1 0 0 +1709 2 3.7759477195007612e-01 2.3009551945892234e-01 2.9054335778181983e-01 2.2910480586009719e+01 0 0 0 +230 2 3.7105478337597031e-01 4.9008827539773936e+00 5.7163105546997963e+00 3.0041707584755315e+01 0 0 -1 +1437 2 3.4991221351340213e-01 2.9437131111781120e+01 9.2616161897067162e+00 1.6312167778586037e+01 0 0 0 +2257 1 -7.3155476328684443e-01 2.7783557954778793e+01 1.5400060019718380e+01 2.4781951177859217e+01 -1 0 0 +2141 2 3.4741712872681252e-01 3.8863220752417565e-01 5.7522035734289352e+00 2.6005208355033556e+01 1 0 0 +1506 2 3.7428710536178583e-01 3.4616250200203041e-01 2.2811146231229431e+00 2.5588369112161367e+01 0 0 0 +2341 1 -7.6276413519313246e-01 8.7773055780748210e-01 7.1913810433029584e+00 2.4444154580846838e+01 0 1 0 +604 1 -7.3234327216229211e-01 9.7533281522530437e+00 8.0503141526497166e-02 2.8715255588762510e+01 0 0 -1 +1668 2 3.8204713336037099e-01 7.0998155724257650e+00 7.6432442203046289e+00 3.0448364884145068e+01 0 0 0 +2470 1 -7.1006127391757046e-01 5.8392836050614196e+00 1.9472392741888216e+00 3.0045369550134733e+01 0 1 0 +1698 2 3.7835501800116833e-01 1.0620223823987079e+01 2.0039196363086931e+00 2.4380001590043584e+01 0 0 0 +2505 2 3.9505263210629882e-01 7.7472986644074577e+00 1.6450692330334811e+00 2.7092945216945559e+01 0 1 0 +1790 2 3.9959303180025546e-01 8.6149533170788413e+00 1.3639145340245475e+00 2.8480885121536478e+01 0 0 0 +1667 2 3.4316804129203538e-01 6.7094284903958750e+00 6.4608432582388646e+00 2.9436238510216565e+01 0 0 0 +2471 2 3.8693552030295769e-01 6.6157992859761992e+00 1.8301818197673485e+00 2.9397771245472452e+01 0 1 0 +828 2 3.6959373561806791e-01 7.9730749989243206e+00 5.3762975343585486e+00 2.6510240742923454e+01 0 1 -1 +827 2 3.8533812346834262e-01 9.1098967293564321e+00 5.7867348203768900e+00 2.5415050302772961e+01 0 1 -1 +2290 1 -7.2311861325806781e-01 7.1990819250561247e+00 4.4161739407096965e+00 2.3214107095139333e+01 0 1 0 +2292 2 3.5282785373504333e-01 6.6043512343042048e+00 5.1504590610166359e+00 2.3369187485954960e+01 0 1 0 +826 1 -7.7327279910532365e-01 8.8852591236397522e+00 5.3907166658805066e+00 2.6321780757862346e+01 0 1 -1 +2462 2 3.8127918981240727e-01 1.1106926559939263e+01 3.2142510335419128e+00 2.6313151503225818e+01 0 0 0 +2577 2 3.9111127420726477e-01 6.1737599263758964e+00 3.0920245359822180e+00 2.3754152255765142e+01 0 1 0 +1676 2 3.4671941264342054e-01 9.3309146799038558e+00 6.0605507641258232e+00 2.7918826665849195e+01 0 0 0 +2463 2 3.5797165668398834e-01 1.0529963878015691e+01 4.6798321049604681e+00 2.6604494471453545e+01 0 0 0 +2461 1 -7.6672260309278528e-01 1.1330983766945398e+01 4.1107424917779500e+00 2.6588347801866334e+01 0 0 0 +1675 1 -7.5495380454948657e-01 9.6517566920452396e+00 6.6463425202929249e+00 2.8643151899383643e+01 0 0 0 +1677 2 3.7929200748761688e-01 8.7702547003611944e+00 6.8687629380470234e+00 2.9126412959566544e+01 0 0 0 +1612 1 -7.3815051531118636e-01 1.1246395560967327e+01 4.4466625634810439e+00 2.9348903503134387e+01 0 0 0 +1695 2 3.5770006483896866e-01 8.2820740425731127e+00 1.5367669740626146e+00 2.5115092014407637e+01 0 0 0 +1613 2 3.6211581024232170e-01 1.0586182661907189e+01 5.1683886359094950e+00 2.9192950691679115e+01 0 0 0 +1614 2 3.6663082131535712e-01 1.1360675801485524e+01 4.1186753637637681e+00 2.8426967799714145e+01 0 0 0 +2504 2 3.9006410078894199e-01 6.1686030868556090e+00 1.8484193377472726e+00 2.4856211741934199e+01 0 1 0 +1666 1 -7.4804678719134265e-01 7.2295609345927812e+00 7.3725389976496345e+00 2.9498489434899135e+01 0 0 0 +1789 1 -7.0789100849723052e-01 7.8347032250510464e+00 1.8745090856575120e+00 2.8150593435894123e+01 0 0 0 +1102 1 -7.2484897577735463e-01 7.4954160196154804e+00 1.3475667352039538e+00 2.5622737359185873e+01 0 1 0 +1950 2 3.8211414353034612e-01 2.6318576396838196e+01 6.2005906232047820e+00 3.0926365845374470e+01 0 0 0 +201 2 3.8505026476286963e-01 2.8875311946310578e+01 1.0486113117526268e-01 2.5903813880384430e+01 -1 0 -1 +213 2 3.5331547354572462e-01 1.0094350323601551e+01 1.6355217338086478e+00 2.9902040913462724e+01 0 0 -1 +1697 2 3.5665869442543852e-01 1.1812417085794502e+01 1.4179132341840108e+00 2.5349575673031623e+01 0 0 0 +1696 1 -6.9906214495727226e-01 1.0816648011309034e+01 1.5732587734711427e+00 2.5266034404801520e+01 0 0 0 +2784 2 3.8284675805091112e-01 1.1800505099415970e+01 5.3980783829212857e+00 2.5506553022148633e+01 0 1 0 +200 2 3.5498199675316910e-01 2.9860072104936709e+01 1.2613231033752976e+00 2.5515978975457060e+01 -1 0 -1 +2087 2 3.8132925818039848e-01 2.7079357627333255e+01 3.9538809364147370e-01 2.4125426836104438e+01 0 0 0 +2055 2 3.9062362437675457e-01 2.6027125624982066e+01 9.0056621598958237e+00 2.3815178340636532e+01 0 0 0 +2715 2 3.8679293265460046e-01 1.7672954384457459e+01 2.4689610820071568e+00 2.3791118220408435e+01 0 1 0 +2530 1 -7.4476748089193567e-01 1.5164226625356950e+01 9.7577773171138671e-01 2.3001443303076130e+01 0 1 0 +2713 1 -7.7496637692445991e-01 1.7483805518372101e+01 3.3746191935728023e+00 2.4103637805231486e+01 0 1 0 +1879 1 -7.2581626411596223e-01 1.6079187392870164e+01 7.7491964483766420e+00 2.3322678776045596e+01 0 0 0 +198 2 4.0416597710417085e-01 1.2339982134060692e+01 5.2958185199224834e+00 3.0553713530058854e+01 0 0 -1 +383 2 3.6816002057937336e-01 1.3718608800421432e+01 2.2539414034241911e+00 2.4632719231922977e+01 0 0 -1 +2189 2 3.7184577153859505e-01 1.3697004879830212e+01 7.4745839213884258e-01 2.5202791018715246e+01 0 0 0 +1808 2 3.5707964716517671e-01 1.2164030559487436e+01 7.3814702824088050e+00 2.3810382629409432e+01 0 0 0 +412 1 -7.2247844298604080e-01 1.4280465766839763e+01 2.0154595068977179e+00 2.9596266300365343e+01 0 0 -1 +2188 1 -7.4594174866031282e-01 1.3533969980129937e+01 1.6527397343918953e+00 2.5395849873291269e+01 0 0 0 +1794 2 3.8659034471889031e-01 1.4463252385309664e+01 5.6746620476312488e+00 2.8245119598851449e+01 0 0 0 +1691 2 3.9863451050656573e-01 1.4288471439622102e+01 7.7356083129237740e+00 2.9938865219573312e+01 0 0 0 +2782 1 -7.4311594708760220e-01 1.2401050650869941e+01 5.7841873787684888e+00 2.4847262494224694e+01 0 1 0 +2714 2 3.8020034689892418e-01 1.6508369862393078e+01 3.4988704682037368e+00 2.4208899519999502e+01 0 1 0 +1867 1 -7.2703398778301620e-01 1.4320172044433900e+01 6.6061317379975737e+00 2.8590330500386656e+01 0 0 0 +1860 2 3.6259354613133710e-01 1.3682191928063379e+01 7.0944660188658855e+00 2.7989646814815874e+01 0 0 0 +1801 1 -7.4395001518338510e-01 1.4524362524969639e+01 3.9127560792567242e+00 2.7574044750927154e+01 0 0 0 +24 2 3.1572007617749354e-01 1.5629619413419856e+01 5.6405255910187329e+00 2.5727182980490600e+01 0 0 -1 +23 2 3.3802191421555616e-01 1.5125566437350948e+01 6.7160073750058054e+00 2.6620021779098007e+01 0 0 -1 +22 1 -7.3055579090838396e-01 1.5891352345289096e+01 6.5418138309028828e+00 2.6029168877611063e+01 0 0 -1 +2424 2 3.5056989389545112e-01 1.4175089634680990e+01 4.8223776090127233e+00 2.4370479728181770e+01 0 1 0 +1802 2 3.4706211476779852e-01 1.5261195821634548e+01 3.4496911264633634e+00 2.7077869109044276e+01 0 0 0 +1822 1 -7.3869738211977010e-01 1.6945727137725200e+01 2.3665741269187799e+00 2.6754995542136687e+01 0 0 0 +2566 1 -7.2238086286676650e-01 1.4732018505396947e+01 4.0616910904253132e+00 2.4184656701567210e+01 0 0 0 +1824 2 4.0099874000931812e-01 1.6361263160538176e+01 1.5433515087414060e+00 2.6681694995932268e+01 0 0 0 +1823 2 3.5259860836217050e-01 1.7004232190130114e+01 2.7659484071560354e+00 2.5864238730984031e+01 0 0 0 +413 2 3.8194871278859543e-01 1.4493083830094669e+01 2.6915599088621218e+00 2.8964653139671135e+01 0 0 -1 +1132 1 -7.8684514788307447e-01 1.8113618383064782e+01 6.6564105624918390e+00 2.7825846085913078e+01 0 0 -1 +1023 2 3.9654087966533347e-01 1.7443075465581735e+01 5.7488500582853614e+00 2.9150612393490185e+01 0 1 -1 +1803 2 3.5226628335139892e-01 1.3736252433620466e+01 3.4577806895413277e+00 2.7297176176563575e+01 0 0 0 +1881 2 3.7309282547796940e-01 1.5960450825911897e+01 7.1685773230358913e+00 2.4089572576216767e+01 0 0 0 +2783 2 3.4352357034503550e-01 1.2988656095323929e+01 6.3854497952466618e+00 2.5318059663795211e+01 0 1 0 +1021 1 -7.5456799263442131e-01 1.7525918910477358e+01 4.9951615398262001e+00 2.9759290956075663e+01 0 1 -1 +1134 2 3.6239482331144030e-01 1.7462744899850858e+01 6.5074837269233123e+00 2.7077778836775249e+01 0 0 -1 +1793 2 4.1572512658299882e-01 1.8073425223065041e+01 3.3575067534915588e+00 2.9207373212601954e+01 0 0 0 +2796 2 4.2213039093411159e-01 1.8179336613522949e+01 2.4919400463894288e+00 2.7864552441067762e+01 0 1 0 +1792 1 -7.3738376359606139e-01 1.8620994317729217e+01 2.7171006406247078e+00 2.8759393908495117e+01 0 0 0 +1880 2 3.6330696047818717e-01 1.6995808128896741e+01 8.1279433991093537e+00 2.3311703301759788e+01 0 0 0 +2061 2 3.2537907809503785e-01 2.2440273268792474e+01 1.0964887291422052e+01 1.6297516466307698e+01 0 0 0 +839 2 3.8027724849319211e-01 2.7759267097755888e+01 5.4301314090060684e+00 1.6279486475935325e+01 -1 1 0 +1308 2 3.4652344809115321e-01 2.7376399502770262e+01 1.2686836450099335e+01 3.0847557279745700e+01 0 1 -1 +414 2 3.5026080502107043e-01 1.3610820703506388e+01 1.3989815362903599e+00 2.9152424176363148e+01 0 0 -1 +838 1 -7.4661124037097937e-01 2.8336958586340820e+01 4.6545977211036629e+00 1.5985798359172170e+01 -1 1 0 +2040 2 3.4841893979641375e-01 2.3116508880722311e+01 2.2742405108769868e+00 2.3248279285215204e+01 0 0 0 +408 2 3.3615325000522034e-01 2.1886245219915821e+01 1.4620116047737040e+00 3.0305882116767531e+01 0 0 -1 +1319 2 3.6377511606203944e-01 2.2679173557773613e+01 3.8312650465522329e+00 3.0337714197555496e+01 0 0 -1 +1725 2 3.5999155580158826e-01 1.9396800376357625e+01 2.8517078784890120e+00 2.4770633049667293e+01 0 0 0 +1723 1 -7.0291368591368775e-01 2.0031609566505022e+01 2.3100487504592011e+00 2.5236743027128966e+01 0 0 0 +2039 2 3.8601830871155030e-01 2.4689986385242818e+01 2.7333703199245574e+00 2.3533497119533202e+01 0 0 0 +1975 1 -7.7479016530442568e-01 2.2035449930098789e+01 5.9817972726034707e+00 2.3596815989300730e+01 0 0 0 +1133 2 4.0552689273242359e-01 1.8982058003137158e+01 6.2605938973427699e+00 2.7616583004620413e+01 0 0 -1 +251 2 3.7998342573887978e-01 2.0934339493891319e+01 1.3052873225415755e+00 2.6503990225166806e+01 0 0 -1 +2013 2 3.9423272690181710e-01 1.8631629587743380e+01 1.1303446468208378e+00 2.9505706772310898e+01 0 0 0 +2221 1 -7.5996622342131370e-01 2.4433660816953392e+01 3.1920332351693292e-01 2.7233526334968218e+01 0 0 0 +2038 1 -7.2477816625334268e-01 2.3890510211906154e+01 2.1946548833974879e+00 2.3908604479720488e+01 0 0 0 +1918 1 -7.4155527600601256e-01 2.5926359835059351e+01 1.4698996019020885e+01 2.0016330192932870e+01 0 0 0 +2015 2 3.6363809299288735e-01 2.2778312640167730e+01 3.1461983364573145e+00 2.5033216009192092e+01 0 0 0 +2016 2 3.7478891531000047e-01 2.2657166473054961e+01 4.6844022674643870e+00 2.4869835982086411e+01 0 0 0 +2014 1 -7.1214110885986637e-01 2.2571366834895294e+01 3.9748534047102417e+00 2.5540547659930525e+01 0 0 0 +1724 2 3.4134589759837836e-01 2.0842203093187724e+01 2.8239487034057364e+00 2.5299412584682365e+01 0 0 0 +2615 2 3.8528317315514266e-01 2.1777207634367581e+01 2.5957189027018090e+00 2.8075641756680287e+01 0 1 0 +2616 2 3.5940547383941868e-01 2.0785643999831347e+01 3.1781194810922901e+00 2.9152301692711102e+01 0 1 0 +2614 1 -7.6820777209436375e-01 2.1692978096403248e+01 3.1748162583595714e+00 2.8848176403157424e+01 0 1 0 +250 1 -7.3931312868170040e-01 2.1673960370643645e+01 9.5121953101989898e-01 2.7056977704243231e+01 0 0 -1 +2223 2 3.7247416059367261e-01 2.3541408786793877e+01 6.6017054320870006e-01 2.7434862837779910e+01 0 0 0 +1938 2 3.6279674091145114e-01 2.1096445250826850e+01 4.8628377591166805e+00 2.8083029348299146e+01 0 0 0 +2975 2 3.8381030301725305e-01 2.3805159178106493e+01 5.0293373259224659e+00 2.6723716857786389e+01 0 1 0 +2974 1 -7.2344779356769162e-01 2.4633119241402110e+01 5.4403491464787317e+00 2.6950581463737869e+01 0 1 0 +1936 1 -7.0856542248055776e-01 2.0701215126028124e+01 5.7697851570504719e+00 2.7901223821110477e+01 0 0 0 +2208 2 3.9722107295347597e-01 2.1984122819343177e+01 6.9208006527616437e+00 2.5149997722782850e+01 0 0 0 +1944 2 3.7009164707375797e-01 2.1452746854380685e+01 6.4137866829722237e+00 2.7642214835097100e+01 0 0 0 +2222 2 3.7668046195695482e-01 2.5040740162029486e+01 1.0461749322270053e+00 2.6946065048380657e+01 0 0 0 +2767 1 -7.4337786974117792e-01 2.1742307820327344e+01 1.5134418643722100e+01 2.4366126454495504e+01 0 0 0 +371 2 3.6116972247229417e-01 2.0271230995454754e+01 7.1271787017209522e+00 2.9462320916362494e+01 0 0 -1 +2268 2 3.8457219349314065e-01 2.5980819952702472e+01 1.3714583291187926e+01 2.7282890283323162e+01 -1 0 0 +1232 2 3.4413758709031472e-01 2.9137567040215881e+01 1.0949202512858209e+01 3.0188781454335743e+01 0 0 -1 +1505 2 3.3551538791325869e-01 3.0317430235107839e+01 2.9847883207742885e+00 2.6452510489649907e+01 -1 0 0 +2272 1 -7.1071342598118648e-01 9.3835958734398410e+00 1.9561492285590161e+00 1.6622592390969427e+01 0 1 0 +1402 1 -6.9090595601270877e-01 2.6153445107788702e+01 3.6986035008505143e+00 2.3233331582584253e+01 0 1 0 +642 2 3.9542601294035035e-01 2.5957914270746148e+01 4.6662342532055536e+00 2.3026093473662279e+01 0 0 0 +406 1 -7.2490031864237825e-01 2.1528688902268865e+01 7.9429199794798822e-01 3.0885245286492957e+01 0 0 -1 +2258 2 3.9486945463227829e-01 2.7359054985104358e+01 1.5436089924173725e+01 2.5637251930300373e+01 -1 0 0 +1431 2 3.9006331304254127e-01 8.2659253456867976e+00 1.1522236767241642e+01 3.0860983968750393e+01 1 0 -1 +2976 2 3.9887145224155784e-01 2.4517444990185002e+01 6.3712412588653491e+00 2.6740258769931579e+01 0 1 0 +2100 2 3.6322920647257073e-01 2.9629275158220981e+01 4.5700023648180492e+00 2.2808902444718804e+01 0 0 0 +2999 2 3.5082069769033863e-01 2.7040992222736573e+01 6.3552519615497500e+00 2.2920612554283686e+01 0 1 0 +1220 2 3.4087260111907031e-01 2.9682593014266931e+01 6.7623466501355862e+00 2.7401651354898359e+01 0 1 -1 +881 2 3.7611075813075673e-01 8.2941119941425061e+00 2.4507050696816179e-01 2.1775686689633140e+01 0 1 0 +2120 2 3.5975526793042684e-01 2.9234149746931653e+01 8.3374100951964962e+00 2.3985806198816153e+01 0 0 0 +2098 1 -7.1624302267277173e-01 2.9462080781502500e+01 4.7667433676649136e+00 2.3739855004374014e+01 0 0 0 +1943 2 3.2804604961872091e-01 2.6167227951336340e+01 2.7451899980758090e+00 2.7322560420098402e+01 0 0 0 +2910 2 3.7101859261354220e-01 2.8735247220914726e+01 6.3319590384294813e+00 2.4458525183914798e+01 0 1 0 +2908 1 -7.2716197609036148e-01 2.8378839276950643e+01 7.2498675408571609e+00 2.4719567635135576e+01 0 1 0 +1942 1 -6.8838152630748339e-01 2.6379132025647991e+01 2.0205581695014101e+00 2.6642795589277483e+01 0 0 0 +2420 2 3.3319989750073198e-01 2.7128680562758586e+01 1.5534418813685780e+00 2.7085445017186270e+01 -1 1 0 +1504 1 -7.3813947165875382e-01 3.0614709508732197e+01 2.8938895549518966e+00 2.5526870002667810e+01 -1 0 0 +2168 2 3.7507212316829724e-01 2.9040012568709660e+01 4.0195686600996305e+00 2.8053508071473072e+01 0 0 0 +1306 1 -7.3274483043115135e-01 2.8188220391426622e+01 1.2863624903147597e+01 3.0372057121312960e+01 0 1 -1 +2868 2 3.3936535350076769e-01 2.2235497459102703e+01 1.2320692327513624e-01 1.5742347904127183e+01 0 1 0 +2798 2 3.3851635523595636e-01 3.0527506010436827e+01 4.0585061296507003e+00 2.8051268696236018e+01 0 1 0 +2167 1 -7.4174741026786273e-01 2.9775876264620848e+01 3.5160377555752933e+00 2.8311356739956437e+01 0 0 0 +2909 2 3.7305397904399157e-01 2.8652845000281829e+01 7.5003064417264893e+00 2.5670730788252705e+01 0 1 0 +2889 2 3.9806029509204588e-01 2.9654465761888165e+01 3.9558254468869434e+00 2.4258640376803672e+01 0 1 0 +2733 2 3.7517338274961209e-01 2.7028842914118083e+01 4.6824780691510828e+00 2.8824592225694200e+01 0 0 0 +2731 1 -7.1900772137801938e-01 2.7122895792893566e+01 4.7338574122783506e+00 2.7849286889968994e+01 0 0 0 +671 2 3.8169834079412152e-01 2.9864196120943340e+01 1.7126153484504640e+00 2.9226896633769105e+01 0 0 -1 +1403 2 4.0132675187727163e-01 2.6224451088274588e+01 5.1348426597395056e+00 2.7597014274458878e+01 0 1 0 +670 1 -7.4002040050912421e-01 2.9874692231980340e+01 1.0162881596271729e+00 2.9897001642592940e+01 0 0 -1 +1221 2 3.7142453933153258e-01 2.8279180522399930e+01 6.3082051403849597e+00 2.7253072575456311e+01 0 1 -1 +1219 1 -7.4636223009135871e-01 2.8758138158755816e+01 7.1096213158585195e+00 2.7330644076947245e+01 0 1 -1 +672 2 3.6210127057263714e-01 3.0760197576931898e+01 1.0466490121463978e+00 3.0247980756380638e+01 0 0 -1 +1435 1 -7.2190580097339840e-01 2.9452542875187081e+01 8.3672546868835571e+00 1.5906688128526630e+01 0 0 0 +2059 1 -7.3637836147899527e-01 2.1998281203684527e+01 1.1770994523966618e+01 1.6128556252963122e+01 0 0 0 +1542 2 3.5572588517955095e-01 4.9678608395711095e+00 1.4496217192802565e+01 2.7229720314445228e+01 0 0 0 +1540 1 -6.9617458328670623e-01 5.6494376971442675e+00 1.4712315230056680e+01 2.7937831813085410e+01 0 0 0 +39 2 3.5861234707695044e-01 4.2242415429574915e+00 7.1689718685924051e+00 2.7971694427089329e+01 0 0 -1 +37 1 -6.8293218877967798e-01 4.2243836444752185e+00 7.8731720250773298e+00 2.7244136020901131e+01 0 0 -1 +38 2 4.0408897137400679e-01 3.2693517614548901e+00 8.0355786580291166e+00 2.6892708490084008e+01 0 0 -1 +2169 2 3.7283530489617012e-01 1.4461182609017900e+00 7.9806912796887701e+00 2.5962933797040051e+01 1 0 0 +2267 2 2.9668086831985852e-01 2.5218640424788600e+01 1.5265070169491409e+01 1.5671407808032143e+01 -1 0 0 +72 2 3.7026895866173609e-01 1.3867832616450693e+01 1.4159720159449840e+01 3.0646427607190635e+01 0 0 -1 +2864 2 3.2700706478367164e-01 2.2260451793554332e+00 1.4487314715567837e+01 2.3536880541097752e+01 1 0 0 +2359 1 -6.8370245709145028e-01 3.0582305117577373e+01 1.4674977867580935e+01 3.0856409602959928e+01 -1 0 0 +462 2 3.4300757633537127e-01 7.4140687869223365e+00 2.7094644349793407e-02 1.8276899988028021e+01 0 1 0 +2362 1 -7.2627827420049385e-01 5.1300680550884314e-01 1.4918816875037386e+01 2.5135838730051187e+01 0 0 0 +1592 2 3.7139105979830456e-01 2.9400588249469295e+00 1.4517999193433587e+01 2.9001036244968251e+01 0 0 0 +2941 1 -7.4462083103699006e-01 9.3610162932407676e-02 1.0181900578098317e+01 2.7565106823884161e+01 1 0 0 +1591 1 -7.2882083130276931e-01 2.5307453373854911e+00 1.4151414661377173e+01 2.8248997847423023e+01 0 0 0 +2396 2 3.6784498076161737e-01 3.0646037543374511e+01 1.0246317877433162e+01 2.8449760965429725e+01 -1 0 0 +2298 2 3.6457852508912042e-01 2.9919726624970487e+01 1.0961711742085427e+01 2.3895181447391430e+01 -1 0 0 +2284 1 -7.4986487750855080e-01 4.2221351932768503e+00 1.4512571687982078e+01 2.5577301509529715e+01 0 0 0 +906 2 3.5494463352187366e-01 5.0623581615972464e+00 1.4834750370470212e+01 2.5110075858927122e+01 0 0 0 +1593 2 3.6294671123359029e-01 2.6911123838420017e+00 1.4729274599255127e+01 2.7500072314648300e+01 0 0 0 +2286 2 3.4001321138576840e-01 3.6077027164224593e+00 1.5354396474631793e+01 2.5659230906477365e+01 0 0 0 +1588 1 -7.0224825924218082e-01 3.9396362933366968e+00 1.1180257810114183e+01 2.9672092199664018e+01 0 0 0 +1541 2 3.6634528701174501e-01 6.4232917626113029e+00 1.4045427369791419e+01 2.7798968297227240e+01 0 0 0 +1590 2 3.9299471288102078e-01 3.8439067244240359e+00 1.1182704270701278e+01 2.8725760042884541e+01 0 0 0 +939 2 3.7889554677963672e-01 3.1308990689371603e+00 9.0706579105645471e+00 2.3825276035668782e+01 0 1 0 +590 2 3.4099858381779224e-01 3.9079268612007989e+00 1.1023233719783413e+01 2.4416295019901721e+01 1 0 -1 +589 1 -7.3055710272660168e-01 3.1588868788990050e+00 1.0521774667455457e+01 2.4794251812079033e+01 1 0 -1 +591 2 3.9640569180812241e-01 3.0069035000148943e+00 1.0819166199861776e+01 2.5720713444941524e+01 1 0 -1 +2209 1 -7.4058726174786715e-01 2.4651844894301518e+00 1.1450756359328805e+01 2.7442975570571651e+01 1 0 0 +2210 2 3.9054443342471989e-01 2.4574421765046113e+00 1.2399789697648865e+01 2.7692287455894533e+01 1 0 0 +2342 2 3.8362119674916201e-01 1.5551610000962601e+00 7.4983921792818649e+00 2.3810325756597745e+01 0 1 0 +2211 2 3.9427357191716933e-01 1.5470960743010029e+00 1.1073827292825166e+01 2.7570238020110391e+01 1 0 0 +2943 2 3.9514820652904376e-01 5.5471627542911661e-01 9.3388406833634612e+00 2.7614604490374539e+01 1 0 0 +2296 1 -7.1236628613563036e-01 3.0288038992894748e+01 1.1891617541030371e+01 2.3785810801441983e+01 -1 0 0 +2285 2 3.8843422502513547e-01 3.0504430738562395e+01 1.2277686589018002e+01 2.4639067344550650e+01 -1 0 0 +2936 2 3.7592630022093781e-01 3.0495347353597253e+01 1.1796023505393366e+01 2.6730913591147498e+01 0 0 0 +1589 2 3.5585578732322409e-01 3.0769313060266446e+00 1.1401326177486144e+01 3.0019014162730830e+01 0 0 0 +1715 2 3.6592154707217900e-01 1.9119631631711794e+01 5.0957894691655037e+00 3.0856115566946080e+01 0 0 -1 +2179 1 -7.3576805836275816e-01 7.6428581120790291e+00 1.3649075742178995e+01 2.3868015950000178e+01 1 0 0 +1430 2 3.6962577028369970e-01 9.5114639211613827e+00 1.1146345127838069e+01 2.9896118744479889e+01 1 0 -1 +2099 2 3.5590240159484249e-01 2.5165549541140205e+01 3.2366734523813196e+00 1.6492967667691268e+01 0 0 0 +2400 2 3.6240394614890403e-01 7.8397507555831805e+00 1.0390370612433033e+01 2.8804495886785038e+01 0 0 0 +51 2 3.6426344024945895e-01 6.9484764865737683e+00 1.1903531431972809e+01 2.7865028600320933e+01 0 0 -1 +49 1 -7.3441038539718639e-01 7.4046816950252339e+00 1.2688289530083246e+01 2.7514386835899902e+01 0 0 -1 +50 2 3.7680649087463575e-01 8.0628416188075249e+00 1.2839291690922069e+01 2.8189651996597505e+01 0 0 -1 +1223 2 3.7553084906304313e-01 1.0410741065457357e+01 9.2462147121461822e+00 2.9222646529105592e+01 0 0 -1 +1222 1 -7.5752147116263280e-01 1.0437140477975637e+01 9.5239762304402991e+00 3.0109463093526308e+01 0 0 -1 +2613 2 3.9209503293121073e-01 1.1379096832794138e+01 1.4210732760283307e+01 2.3982189963442210e+01 0 1 0 +2399 2 3.9151086462139789e-01 7.2864631937944306e+00 9.0003713345648766e+00 2.8539637167125836e+01 0 0 0 +2421 2 3.4816273159019728e-01 5.4747690850977886e+00 1.2595299279229106e+01 2.5700338326658262e+01 0 1 0 +2398 1 -7.2570165141514331e-01 7.1952936871103788e+00 9.8829171701046032e+00 2.8215888078479619e+01 0 0 0 +1568 2 3.6834063502975911e-01 6.1560165127909396e+00 8.6181010067783088e+00 2.5506608774633765e+01 0 0 0 +1601 2 3.2358122622373536e-01 1.0116384061065309e+01 6.4982652262942358e+00 2.3451422880453226e+01 0 0 0 +2233 1 -7.6861675710023625e-01 5.6161524871326440e+00 1.1981694313675961e+01 2.4969285341615876e+01 1 0 0 +2235 2 3.9836520947625603e-01 5.9696953497278322e+00 1.1198915402289865e+01 2.5328621473404599e+01 1 0 0 +205 1 -7.3186253672978274e-01 9.1783924588759973e+00 6.4329403599104618e+00 2.3715969238286270e+01 0 0 -1 +807 2 3.5677813942826919e-01 9.9407577011290922e+00 1.4762319948506670e+01 2.7529406079765664e+01 0 0 -1 +1567 1 -7.4318531449877401e-01 6.5885014905525283e+00 9.4150600556692012e+00 2.5476266167280151e+01 0 0 0 +1569 2 3.6287698509635291e-01 6.7669684753976611e+00 9.4857954369291981e+00 2.6478231281362799e+01 0 0 0 +2589 2 3.5864712440984275e-01 1.0246386261049768e+01 7.8905920035178907e+00 2.7693668999369891e+01 0 0 0 +1963 1 -7.2978146437310099e-01 9.6480234711128237e+00 1.4230304675408638e+01 2.9304354275696895e+01 0 0 0 +2588 2 3.6545566104495525e-01 1.0189190853122922e+01 8.8750228438218208e+00 2.6352546802691119e+01 0 0 0 +2587 1 -7.5162454275216706e-01 1.0621484814575963e+01 8.8277177881974023e+00 2.7310532994428019e+01 0 0 0 +1616 2 3.6508060642397017e-01 9.3888884268851331e+00 8.1908006786719412e+00 2.4337339212077602e+01 0 0 0 +2180 2 3.7049505703944913e-01 6.8335782900938487e+00 1.3124442268860719e+01 2.3943252330511189e+01 1 0 0 +1615 1 -7.0195211258738544e-01 9.3235833086111803e+00 9.0148562976188611e+00 2.4907497399279741e+01 0 0 0 +1617 2 3.7299194053441515e-01 8.3115161854827040e+00 9.0772445471886716e+00 2.5030182288118073e+01 0 0 0 +243 2 3.6943960457661101e-01 9.4431053783938257e+00 1.3073690124272256e+01 2.4435309877965214e+01 0 0 -1 +241 1 -7.3550207460185191e-01 1.0290879811508914e+01 1.3246509965238314e+01 2.4894754291299218e+01 0 0 -1 +242 2 3.6986133431240209e-01 1.0029662483541564e+01 1.3570438681856572e+01 2.5776338519097621e+01 0 0 -1 +845 2 3.6759904222954809e-01 1.1049604233757004e+01 1.0679185969056464e+01 2.7182404461721596e+01 0 1 -1 +846 2 3.5444703164848623e-01 1.0943196758053141e+01 1.1821319200125513e+01 2.6187538408398886e+01 0 1 -1 +844 1 -7.4646953513523773e-01 1.1514640541826521e+01 1.1481770936844777e+01 2.6901606791767986e+01 0 1 -1 +2775 2 3.7189529593826987e-01 9.6988915608867696e+00 1.3351926321439610e+01 2.9685155487054431e+01 0 0 0 +1965 2 3.6027082664024102e-01 1.0314724453905713e+01 1.4828627074189509e+01 2.9724633244913335e+01 0 0 0 +1251 2 3.6390514371470745e-01 1.2230601788389780e+01 8.3549891292779392e+00 2.6763176312018071e+01 0 0 -1 +1429 1 -7.3755387147500051e-01 8.6603756157886309e+00 1.1672256841694081e+01 2.9893916338742375e+01 1 0 -1 +1320 2 3.3984712578852078e-01 2.3740494180871607e+01 4.9289179891238080e+00 3.0337682886309828e+01 0 0 -1 +2611 1 -7.5168904395737246e-01 1.2046618954313910e+01 1.4815922679415843e+01 2.3515391494775386e+01 0 1 0 +1031 2 3.5255696149622395e-01 1.7590652400127311e+01 8.6111658574123950e+00 3.0280038245601290e+01 0 1 -1 +1030 1 -7.2090796210714692e-01 1.7485945167936734e+01 9.0101215506177201e+00 2.9374939950931687e+01 0 1 -1 +1032 2 3.6059340406568469e-01 1.7487395933041739e+01 8.2511054003332962e+00 2.8731636288112234e+01 0 1 -1 +70 1 -7.1908880074910375e-01 1.3003035662536277e+01 1.4573046134768324e+01 3.0478907896603410e+01 0 0 -1 +1224 2 3.7002032248760303e-01 1.1387284486344816e+01 9.7508752883121659e+00 3.0176246699077293e+01 0 0 -1 +1584 2 3.7338278298850380e-01 1.3122218925873353e+01 1.2560458414712578e+01 2.7609016300242700e+01 0 0 0 +1690 1 -7.3261588728269289e-01 1.4154750551460582e+01 8.0613976631500730e+00 3.0842115453033625e+01 0 0 0 +254 2 3.5400767882879891e-01 1.2975355583524246e+01 1.4358504881096881e+01 2.9535505531545841e+01 0 0 -1 +1318 1 -7.3829241788275757e-01 2.3440934652973024e+01 4.2173310504361314e+00 3.0884664709329645e+01 0 0 -1 +2067 2 3.7086266746562369e-01 1.6722170400844732e+01 1.0332129788727764e+01 3.0773577145031442e+01 0 0 0 +1249 1 -7.7176614437156921e-01 1.3149845842827069e+01 7.9479961653192213e+00 2.6533201295297772e+01 0 0 -1 +924 2 3.5926130269895179e-01 2.9777519518003594e-02 1.4642647413850332e+00 1.6076274244652478e+01 0 1 0 +1067 2 3.7555348424999740e-01 1.3474248871970975e+01 9.7777321119930694e+00 3.0871291345861994e+01 0 0 -1 +943 1 -7.3885981148809010e-01 1.3863022926984286e+01 1.2933914663542650e+01 2.8029602427302923e+01 0 0 -1 +944 2 3.2645766721847108e-01 1.4443815595593499e+01 1.2100364985372689e+01 2.8041591777057892e+01 0 0 -1 +1066 1 -6.9308342418200730e-01 1.3135376072575207e+01 1.0617038722820512e+01 3.0444555921833498e+01 0 0 -1 +2927 2 3.7231504642579638e-01 1.5948584908909615e+01 1.4366848905157598e+01 2.6497351790989303e+01 0 0 0 +2594 2 4.0942350427212904e-01 1.6866727123626671e+01 1.2447822063546607e+01 2.4504944623641542e+01 0 0 0 +2254 1 -7.5741993894989923e-01 1.7095129243139990e+01 1.3053068219190285e+01 2.6276042650491018e+01 0 0 0 +2256 2 3.5747611263439277e-01 1.6693942847611886e+01 1.2495350543941456e+01 2.6964518466576436e+01 0 0 0 +1250 2 3.9928654224103322e-01 1.3695812340575733e+01 8.7092802031819048e+00 2.6316681143940126e+01 0 0 -1 +2712 2 3.6740706677397278e-01 1.7836994135747865e+01 8.2973909185965731e+00 2.6855371731050841e+01 0 1 0 +389 2 3.8863285554926197e-01 1.4013644500234198e+01 1.1318805993758266e+01 2.4364338635282653e+01 0 0 -1 +2926 1 -6.5518108624343618e-01 1.5139904684103225e+01 1.4944574250370017e+01 2.6750834006912438e+01 0 0 0 +321 2 3.8839805196292321e-01 1.6721185856088599e+01 1.0384302981084428e+01 2.6905157017976478e+01 0 0 -1 +2593 1 -7.5584351346392065e-01 1.6711446642201821e+01 1.2177172868582511e+01 2.3635182926111757e+01 0 0 0 +2540 2 3.4933343827043423e-01 1.4559659276007043e+01 1.0699755814390009e+01 2.6618881822839249e+01 0 0 0 +2539 1 -7.6176399300844888e-01 1.3904482413237840e+01 1.0382490274097279e+01 2.5944402258811312e+01 0 0 0 +2541 2 3.6100473826910701e-01 1.3035262101429341e+01 1.0780955213044482e+01 2.6195143018200525e+01 0 0 0 +1765 1 -7.6838144694002819e-01 1.6196733211797753e+01 1.0792165979655469e+01 2.7606348291129120e+01 0 0 0 +1868 2 3.8260134982473554e-01 1.6638121121890155e+01 1.0537277543388669e+01 2.8449834790504301e+01 0 0 0 +2710 1 -7.4938284365397201e-01 1.7957536039248932e+01 9.0813264746525473e+00 2.6314605390941097e+01 0 1 0 +2711 2 3.7844864974130921e-01 1.7833608760430423e+01 8.8493325068138926e+00 2.5338943437270476e+01 0 1 0 +2255 2 3.6204341783161703e-01 1.7953977765971938e+01 1.3350999568023578e+01 2.6603482321664856e+01 0 0 0 +1831 1 -7.2163466401533338e-01 1.9864072191461105e+01 1.3829159726081066e+01 2.7797560797020392e+01 0 0 0 +2928 2 3.7733032487063167e-01 1.4608448925878156e+01 1.4235562836990999e+01 2.7195367897781161e+01 0 0 0 +1252 1 -6.9337922552946130e-01 2.3505755663332447e+01 1.5479486650063775e+01 3.0861932010713211e+01 0 0 -1 +273 2 3.6615962090347254e-01 2.0184349969732065e+01 1.0907384134317995e+01 3.0720161079963741e+01 0 0 -1 +2677 1 -6.9606850966630252e-01 1.9150644739527728e+01 1.1067304574358163e+01 2.3043684317980041e+01 0 0 0 +1954 1 -7.4644189057264454e-01 2.4607064663740783e+01 1.3434072305963191e+01 2.3021391544329379e+01 0 0 0 +1955 2 3.2345829415543931e-01 2.3977466272082573e+01 1.4196279372107945e+01 2.3030159411875562e+01 0 0 0 +767 2 4.1803269378989694e-01 3.4008874571419883e+00 7.5149829030921094e+00 3.0161455750068082e+01 0 0 -1 +1326 2 3.8458355610183048e-01 2.2657037909937561e+01 7.6952793130615769e+00 2.9808736186645596e+01 0 0 -1 +2769 2 3.6816651155703489e-01 2.1552111681654665e+01 1.4328644005991656e+01 2.3808756107552878e+01 0 0 0 +2050 1 -7.3036464236562093e-01 1.8830612616867469e+01 8.2123081028284890e+00 2.3776564335254232e+01 0 0 0 +26 2 3.7663516946512482e-01 2.4817458855973054e+01 7.3213029642390079e+00 3.0418530560350298e+01 -1 0 -1 +2052 2 3.6415991144659277e-01 1.9219186731828366e+01 8.7662510600245618e+00 2.3129451374004418e+01 0 0 0 +372 2 3.8267756729165803e-01 2.0361196230764332e+01 8.3608907289740912e+00 3.0460856817817696e+01 0 0 -1 +2777 2 3.2745849681104400e-01 1.8908100590978659e+01 1.3938658983239886e+01 3.0327175040705690e+01 0 0 0 +2051 2 3.5322405173020199e-01 1.9063977438781244e+01 7.3429362850749094e+00 2.3399643835257663e+01 0 0 0 +1203 2 3.7315442065106896e-01 2.1086677563589795e+01 9.0475313492608436e+00 2.6567582880722401e+01 0 1 -1 +2717 2 3.4179291281142737e-01 2.4586366501334876e+01 1.2450697874123701e+01 2.5943500249323172e+01 0 1 0 +2716 1 -6.9790408596402775e-01 2.3764414856222807e+01 1.2402371316352536e+01 2.5274239075029751e+01 0 1 0 +1202 2 3.8767203412495160e-01 1.9570007757344687e+01 9.6544295887039659e+00 2.6438772204238230e+01 0 1 -1 +2554 1 -6.8587633698067185e-01 2.0779628128122603e+01 1.1863751647131176e+01 2.5075524504922058e+01 0 0 0 +2555 2 3.5006620922183168e-01 2.1670502603019280e+01 1.2225748680662123e+01 2.5372392535752759e+01 0 0 0 +1459 1 -7.6091546577333902e-01 2.4531265931752326e+01 8.1992126418417346e+00 2.6382772014022091e+01 0 1 -1 +2207 2 3.5787456165345188e-01 2.2789831114430680e+01 7.7197335845105206e+00 2.6196582206987429e+01 0 0 0 +1461 2 3.7987848336558844e-01 2.4270378568134412e+01 8.9804879511398408e+00 2.6871767299035508e+01 0 1 -1 +1460 2 4.1084175724619054e-01 2.4805603355334107e+01 8.4977119717592196e+00 2.5504322743398028e+01 0 1 -1 +1355 2 3.4231126247334248e-01 2.3242726330565116e+01 1.3762550164577764e+01 2.6881000678053365e+01 0 0 -1 +1354 1 -7.4744912752367210e-01 2.2612918195537944e+01 1.4476063968319004e+01 2.6985247795495919e+01 0 0 -1 +1201 1 -7.3438678231092258e-01 2.0526505684678551e+01 9.7863294327368511e+00 2.6871752271518481e+01 0 1 -1 +1833 2 3.5221933723432480e-01 1.9520488894503714e+01 1.4695159899882913e+01 2.8146904442089273e+01 0 0 0 +1832 2 3.5840937381944460e-01 2.0727904841758630e+01 1.4146571997584156e+01 2.7369774764842777e+01 0 0 0 +2556 2 3.7015980766861267e-01 2.0683038594399971e+01 1.1134619056060622e+01 2.5773062888891904e+01 0 0 0 +2718 2 3.7227306718111819e-01 2.4028020235307523e+01 1.2991715491341429e+01 2.4525292676997790e+01 0 1 0 +1937 2 3.9163086699743588e-01 1.9867652757001487e+01 1.1566317364903790e+01 2.3543602668840418e+01 0 0 0 +2206 1 -7.4319344325428016e-01 2.1930675435890773e+01 7.3225352759222107e+00 2.6024055205952003e+01 0 0 0 +2743 1 -7.1454330024061097e-01 2.3732929529155555e+01 1.0421216441480366e+01 2.8057495220151395e+01 0 0 0 +2744 2 3.5522423066547987e-01 2.3002132804534881e+01 1.0738322689970936e+01 2.8655016353926133e+01 0 0 0 +2032 1 -7.1670809265970581e-01 2.1126484323243023e+01 1.1618053907314316e+01 2.9094188912910383e+01 0 0 0 +2033 2 3.7232309926473756e-01 2.0649257627967469e+01 1.2323094889572433e+01 2.8618072444528572e+01 0 0 0 +2034 2 3.6058725589811036e-01 2.0936902186625044e+01 1.0893590056556416e+01 2.8474466449709357e+01 0 0 0 +370 1 -7.7486139711504487e-01 2.0772648527146977e+01 7.5909672370584884e+00 3.0118583147604571e+01 0 0 -1 +1324 1 -7.4575661471423416e-01 2.3502376638532120e+01 7.5262522508895060e+00 2.9415435351328117e+01 0 0 -1 +1325 2 3.5496586285518006e-01 2.3679337842730096e+01 8.2512296835829471e+00 2.8748497387054208e+01 0 0 -1 +668 2 3.9019269915085431e-01 3.0178195645804333e+01 4.8795282230790766e+00 1.5729127343218364e+01 0 0 0 +1356 2 3.4291885561066721e-01 2.2454776700784222e+01 1.4767791491579834e+01 2.6043658073713843e+01 0 0 -1 +1518 2 3.7297762471075507e-01 1.1827838269216288e+01 3.9958652087929397e-01 1.8592675856644892e+01 0 0 0 +805 1 -7.0222538880556751e-01 1.0121294060846285e+01 1.5336738420335568e+01 2.6735778368045619e+01 0 0 -1 +2054 2 3.7990930902103182e-01 2.5187909137143663e+01 7.7732309370045662e+00 2.3255653954477527e+01 0 0 0 +2397 2 3.6284896121242138e-01 2.9287473241487039e+01 1.2656625252638880e+01 2.6335525234599711e+01 -1 0 0 +2383 1 -7.7168804571121441e-01 2.9782473536317386e+01 9.1866963866927751e+00 2.3601641485033145e+01 -1 1 0 +2214 2 3.8436421972059215e-01 2.7476598450427190e+01 1.4493391223539671e+01 2.9896758921674625e+01 0 -1 0 +439 1 -7.3582490133829759e-01 2.7786009948387601e+01 1.1274913579352024e+01 2.6687825761059038e+01 0 0 -1 +2343 2 3.4907141645629958e-01 1.0064014998135919e-01 7.7754273915464154e+00 2.4326714624655818e+01 0 1 0 +440 2 3.7856671999853420e-01 2.7496780585523805e+01 1.0388428574885440e+01 2.7144276799038430e+01 0 0 -1 +211 1 -6.9206319141369588e-01 9.8551753558672086e+00 2.2881315888689069e+00 3.0620859466811371e+01 0 0 -1 +2745 2 3.7111900686371230e-01 2.4140008737882518e+01 1.1195112566037064e+01 2.7685767597761451e+01 0 0 0 +1517 2 3.5027749431956678e-01 1.2241154057467007e+01 5.4251939566346601e-02 1.7194415153076616e+01 0 0 0 +2266 1 -7.4837978412387107e-01 2.5666959854110619e+01 1.2764591897885040e+01 2.7289567559533129e+01 -1 0 0 +1231 1 -7.3512264787799930e-01 2.9224034939070627e+01 1.0032025404300111e+01 2.9819780031551147e+01 0 0 -1 +2364 2 3.7600045855482433e-01 3.8210510880160570e-01 1.4090075630453816e+01 2.5655632621486543e+01 0 0 0 +17 2 3.8404127316507997e-01 2.7814631527943114e+01 9.6136735024217916e+00 2.8908411182917405e+01 -1 0 -1 +441 2 3.6714781700274551e-01 2.7577606415934124e+01 1.1202264812631968e+01 2.5761554179009281e+01 0 0 -1 +1022 2 3.8051071504683176e-01 1.6979920708603281e+01 5.1095945580787729e+00 3.0567559173830919e+01 0 1 -1 +2899 1 -6.9839264007380397e-01 2.7047479511696213e+01 9.2972429530987988e+00 2.8330056852929889e+01 0 1 0 +1859 2 3.7662362325805243e-01 1.9790140790461642e+01 2.1025761371817378e-01 3.0018716010965100e+01 0 0 0 +2262 2 4.0773363764782983e-01 2.6457864585390475e+01 1.2222576178807852e+01 2.7284847068774752e+01 -1 0 0 +2395 1 -7.3262416296173027e-01 3.0281010264566000e+01 1.2678454819065420e+01 2.6308455438532384e+01 -1 0 0 +186 2 3.7105946236647086e-01 8.2641482539367761e-01 1.3813689264504916e+01 1.5989204090997502e+01 0 0 0 +2472 2 3.4740305439733304e-01 5.4596877340897256e+00 2.8511874469288285e+00 2.9914633676876164e+01 0 1 0 +801 2 3.9356148663602925e-01 2.4096965187295133e+01 4.3747877468416174e-01 2.4191366888096685e+01 -1 1 -1 +1406 2 3.5889338972649137e-01 2.5705908434356864e+01 1.1899739971576274e+01 1.5967572235992353e+01 0 1 0 +2776 1 -7.7032252786047339e-01 1.8546809640933855e+01 1.4709725997251729e+01 3.0780839661899606e+01 0 0 0 +984 2 3.7589816383438779e-01 1.5843834465814167e+01 2.1083921347527315e+00 3.0737484844494858e+01 0 1 -1 +549 2 3.8617949742343616e-01 2.6246523659256205e+01 1.5286360803191695e+01 2.0816859470888282e+01 0 0 0 +1409 2 3.5954437351334118e-01 2.6316954826345647e+01 8.3596162239170158e-01 1.6164716406264585e+01 0 1 0 +407 2 3.5737383026556502e-01 2.2283251894607368e+01 1.8988241314283669e-01 3.1037036210495021e+01 0 0 -1 +1436 2 3.8124932259699423e-01 3.0459601482399361e+01 8.1629619523180050e+00 1.5701157569868110e+01 0 0 0 +2315 2 3.7657760419023989e-01 1.0110963694832099e+01 5.5087374717922248e+00 1.5986441777362851e+01 0 1 0 +272 2 3.5697070015610638e-01 1.8870024361143980e+01 1.0270113656671143e+01 3.0934021587873112e+01 0 0 -1 +998 2 3.4041375882109109e-01 2.2529203339448873e+01 1.5424313822779025e+01 3.0948004844537024e+01 0 0 -1 +641 2 3.5967083873655054e-01 2.3950018178880701e+01 6.0083897031014279e+00 1.5646673375867737e+01 0 0 0 +2213 2 3.9905979850899792e-01 2.6919442322391607e+01 1.5391041971116845e+01 3.0992982197532420e+01 0 -1 0 +1307 2 3.4503419400871360e-01 2.8850456277268556e+01 1.2832572500657587e+01 3.1036208171232158e+01 0 1 -1 +1377 2 3.6145268451783769e-01 4.9813657775303808e+00 2.2320550475034722e+01 2.7099934555927128e+00 1 0 0 +853 1 -7.3520649994988041e-01 4.9170073315906828e+00 2.3257867726170538e+01 2.7834196547407686e+00 0 0 0 +855 2 3.3751920999950380e-01 4.0376106836924377e+00 2.3508728971170537e+01 2.3618171480494294e+00 0 0 0 +674 2 3.5579603600565934e-01 1.2556860214013086e+00 2.0526106150741324e+01 5.9429658258120099e+00 1 -1 0 +776 2 3.3687009472154289e-01 1.4706783248068886e+00 2.0558905786742393e+01 2.3812653251518192e+00 0 0 0 +673 1 -7.2362900272915021e-01 3.4837511994522152e-01 2.0906272801285638e+01 5.7322170314623753e+00 1 -1 0 +1372 1 -7.2271758732812852e-01 1.7912847373590091e+00 2.0853123244453275e+01 3.3024899636151592e+00 1 0 0 +1981 1 -6.9609525303561315e-01 4.6362217272477855e+00 2.1543939142993690e+01 5.9298228434220279e+00 1 -1 1 +1982 2 3.5423417005857399e-01 4.8233248494559646e+00 2.2400901876437732e+01 6.2940656316416410e+00 1 -1 1 +1983 2 3.3994529251158107e-01 4.4298911910204977e+00 2.1016966423129574e+01 6.7424697863375327e+00 1 -1 1 +675 2 3.7874381902779058e-01 2.8292422259293143e-01 2.1436800623913488e+01 6.5272433762437796e+00 1 -1 0 +1374 2 3.8437132747653374e-01 1.0324336606725366e+00 2.0806516582044765e+01 3.8319049933011691e+00 1 0 0 +757 1 -7.3616671509959819e-01 4.6874750191101455e+00 2.0354715515942466e+01 3.3835616648380520e+00 0 0 0 +646 1 -7.4144123425876218e-01 8.7025453204935133e-01 1.7154901642415687e+01 1.9943764351177937e+00 1 0 0 +159 2 3.8649674830675296e-01 4.9248439939546982e+00 1.8725331864425588e+01 2.6950179545756363e+00 0 0 0 +1829 2 3.5994180931204850e-01 6.9432792887059236e-01 1.8884142152934398e+01 1.1079080774231416e+00 0 0 1 +1638 2 3.8062230348106058e-01 4.9961027121403463e+00 2.0694425157453175e+01 4.2690737239142189e+00 0 0 1 +758 2 3.8396828309964637e-01 3.7331105958266262e+00 2.0398687796017889e+01 3.5267657453713932e+00 0 0 0 +2323 1 -7.6274852305224550e-01 2.3498026326552583e+00 2.3267361163564136e+01 1.5376879143867994e+00 0 0 1 +2325 2 3.4752431823370106e-01 2.3577192366623696e+00 2.2408261338078788e+01 1.8810826769061988e+00 0 0 1 +1828 1 -7.4848034676727737e-01 7.2509186761944100e-01 1.9820720269909170e+01 6.9635609507510898e-01 0 0 1 +647 2 3.7567515438289367e-01 7.7217212041441396e-01 1.6855307225520843e+01 1.0277670687743758e+00 1 0 0 +1063 1 -7.4972997294180699e-01 2.6155541595857885e+00 1.9652834438342506e+01 7.2351141013598470e+00 0 0 0 +648 2 3.9287251098806886e-01 1.5004423598965582e+00 1.6524111876337756e+01 2.4057361341437544e+00 1 0 0 +284 2 3.5571294393081432e-01 6.4723685388158412e+00 2.4046843767698931e+01 7.2967991662829155e+00 0 0 0 +1469 2 3.9157260047427511e-01 1.8261870932432822e+00 1.8105497356444744e+01 6.9670943039550810e+00 1 0 0 +1161 2 3.7109842714260582e-01 3.0372744217846197e+01 1.7310936015586805e+01 2.9052826757659362e+00 0 0 0 +61 1 -7.1915143019389238e-01 1.3363841992223695e+00 1.7256173542343735e+01 6.9219532237645982e+00 0 0 0 +629 2 3.6430377284430215e-01 2.7666966959922707e+01 1.6191976253238945e+01 1.1247802121718347e+01 0 0 0 +769 1 -7.2123717759963757e-01 3.0109812974123065e+00 1.5711230291228754e+01 2.9040336704797705e+00 0 0 0 +63 2 3.7142418395045473e-01 4.4983797778331253e-01 1.7472544962885404e+01 6.6776918650778168e+00 0 0 0 +1050 2 3.6714562210961105e-01 7.1388233943708697e+00 1.6112352566344853e+01 4.2313041986695437e+00 0 0 0 +771 2 3.7258146496478006e-01 3.7316712625305466e+00 1.6361190068378601e+01 3.0630773900297892e+00 0 0 0 +1563 2 4.1764023920004645e-01 5.6080931932543310e+00 1.7679970861929892e+01 9.2803632980923589e-01 0 0 1 +1376 2 3.6977779659685683e-01 5.7197066795083931e+00 2.3780967597645137e+01 1.2296966461755161e+00 1 0 0 +756 2 3.8410200377464593e-01 4.4558187871718351e+00 3.0902352253980968e+01 7.8893910456925500e+00 0 0 0 +1966 1 -7.0598282933888645e-01 5.3096400138651019e+00 1.6830081332719470e+01 7.3101300579635629e+00 0 0 1 +157 1 -7.1852766204986152e-01 4.9965924192637718e+00 1.7733210415195334e+01 2.5305017691771026e+00 0 0 0 +968 2 3.6864860655895504e-01 7.2260313769063620e+00 1.7160115849981331e+01 7.8612679593019088e+00 0 0 0 +978 2 3.4986502112660256e-01 7.9275384818267343e+00 1.7719364540471958e+01 4.9012074046812275e+00 0 0 0 +1395 2 3.8751010940669467e-01 8.2803290542441648e+00 2.2765814222040678e+01 6.8693729585362027e+00 1 1 0 +1393 1 -7.1667431449545782e-01 8.8268657696462469e+00 2.1900326918391897e+01 7.0214400681588991e+00 1 1 0 +710 2 3.8204186445849492e-01 1.0699059845911856e+01 1.7320806794375553e+01 1.1490876880746872e+00 1 0 0 +709 1 -7.5321336572864950e-01 1.0444807988191570e+01 1.7684165446842222e+01 1.9980504265104064e+00 1 0 0 +711 2 3.9573447825273195e-01 9.7634280482867908e+00 1.7198902060796360e+01 2.4525433116984074e+00 1 0 0 +914 2 3.6570555465416504e-01 9.4192667289396574e+00 2.1390780987711626e+01 4.3185523755436481e+00 0 0 0 +913 1 -7.1670755031685385e-01 8.7160834201292410e+00 2.0870860704238282e+01 3.9473108248769453e+00 0 0 0 +915 2 3.3325441535579370e-01 8.4587211579727430e+00 2.1483250627735611e+01 3.2518553923524829e+00 0 0 0 +1633 1 -7.2967170646070356e-01 8.0249309258073449e+00 1.7710066368264414e+01 8.0415827931283541e+00 0 0 1 +1634 2 3.6922227284171938e-01 8.3880104158869067e+00 1.7952667106814701e+01 7.2003370000277949e+00 0 0 1 +158 2 3.6212477811519911e-01 5.5624038279547827e+00 1.7342266159888847e+01 3.3244638776128386e+00 0 0 0 +255 2 3.9945035103287385e-01 8.3726833799828295e+00 1.9159780066566611e+01 4.6380088784972724e+00 0 0 0 +253 1 -7.3064485694220160e-01 8.4636628127450440e+00 1.8432518368979274e+01 5.2534317602531377e+00 0 0 0 +300 2 3.9278983387251859e-01 1.2211583075443677e+01 1.8308153178609142e+01 2.8481793951727798e+00 0 -1 0 +299 2 3.7112922158200323e-01 1.2390232669788634e+01 1.9683585280398020e+01 3.4887153261137840e+00 0 -1 0 +466 1 -7.1422478660756383e-01 1.1616077541404199e+01 2.1282199185173962e+01 4.4329056239141291e+00 0 0 0 +298 1 -7.2626548321767859e-01 1.2832446032106636e+01 1.9025129120453343e+01 2.9586214158007391e+00 0 -1 0 +467 2 3.6203011900252402e-01 1.1865914035605504e+01 2.0712154076544468e+01 5.1898747520501836e+00 0 0 0 +376 1 -7.1708573736543113e-01 8.6796789707301993e+00 2.3041581569487683e+01 1.5959958738004092e+00 0 -1 0 +468 2 3.7447843004189912e-01 1.1441213216390041e+01 2.2134915574767909e+01 4.7981128824413162e+00 0 0 0 +825 2 3.4630967272985691e-01 2.1197232843194344e-01 2.8713454432196624e+01 1.5483466792302057e+01 0 0 0 +377 2 3.7212022234201986e-01 9.0373040176840576e+00 2.3708963367673398e+01 2.2690007717434857e+00 0 -1 0 +1000 1 -7.3075902181300656e-01 8.8241006118171370e+00 1.5980038269830017e+01 3.5121983696177663e+00 0 0 0 +232 1 -7.1935170015693795e-01 1.1367553560120852e+01 1.7516519173910190e+01 5.6761280474775750e+00 0 0 0 +233 2 3.4226764711242119e-01 1.1898861494789887e+01 1.8274103967755945e+01 5.8575518320184585e+00 0 0 0 +1827 2 3.6739977489158565e-01 9.2695819534435913e+00 1.8947109939364175e+01 1.2313570492272501e+00 0 0 1 +378 2 3.5953680091615808e-01 7.7504438216404017e+00 2.3309109273166122e+01 1.4701159156616048e+00 0 -1 0 +2156 2 3.5288614482338343e-01 1.4195606824246877e+01 1.5748332130239204e+01 1.9522680503923120e+00 0 0 1 +2155 1 -7.2784982031232393e-01 1.3309945026149416e+01 1.5663186859160566e+01 2.2458465690781058e+00 0 0 1 +1070 2 4.0242104758192254e-01 1.0006055434826775e+01 2.2517434463010623e+01 3.1681549946571791e-01 0 0 0 +326 2 3.5832493697816448e-01 1.1127549304803788e+01 1.6543194716164390e+01 7.6372198514959058e+00 0 0 0 +1375 1 -7.4927306637055235e-01 6.3028905287973434e+00 2.3818550343574532e+01 4.8334017342298796e-01 1 0 0 +234 2 3.7825226719218280e-01 1.0479958888869660e+01 1.7831446085302030e+01 5.5878089957823871e+00 0 0 0 +2036 2 3.5369298257878984e-01 1.8681615045565923e+01 2.5975415925228504e+01 1.4251153185668935e+01 0 0 1 +1018 1 -7.2439776916941612e-01 1.5892501420849426e+01 1.7492846658111773e+01 1.7508411496471137e+00 0 1 0 +1001 2 3.3909750762120677e-01 8.5641147014040602e+00 1.5626323085028652e+01 2.5934128640939740e+00 0 0 0 +1734 2 3.9457443469475756e-01 7.5708272703449246e+00 1.6166234064061459e+01 2.1036261985416574e-01 0 0 1 +2654 2 4.0551930439273709e-01 2.1430068337843018e+01 1.5666862495041043e+01 9.1464694810108362e+00 0 0 1 +2108 2 3.9155488189778465e-01 1.2193729622687782e+01 2.1354313648387450e+01 1.3470153925190623e-01 0 0 1 +264 2 3.6564111674887212e-01 1.7673966571112715e+01 1.7627586751788339e+01 2.2440087393477479e+00 0 0 0 +2602 1 -6.8614742265344086e-01 1.4432720337189108e+01 1.7444494884489686e+01 7.1784998360576218e+00 0 0 1 +2603 2 3.5698512136306798e-01 1.4709102782461828e+01 1.7568248262367678e+01 6.2459637273994781e+00 0 0 1 +1779 2 3.3985153746115848e-01 1.5687134238333501e+01 1.9215619068629838e+01 4.7656307265499152e+00 0 0 1 +1777 1 -7.4066667392284058e-01 1.5378966614260536e+01 1.8295687903210123e+01 4.5755077699244522e+00 0 0 1 +1778 2 3.4014268234240580e-01 1.4675150959373795e+01 1.8459946822448480e+01 3.9176536532953761e+00 0 0 1 +287 2 3.5039465808115899e-01 1.8113691747200303e+01 2.0060417150142214e+01 4.0336772632706479e+00 0 0 0 +2699 2 3.5658869902554957e-01 1.7045221706542904e+01 2.1243239634684162e+01 5.6504909865542352e+00 0 0 1 +263 2 3.6438294586849768e-01 1.8758382578204067e+01 1.6931341260971163e+01 3.1798251567598235e+00 0 0 0 +286 1 -7.6165748766751817e-01 1.7222009916791567e+01 2.0396474110331589e+01 4.0313883751197555e+00 0 0 0 +262 1 -7.2823142892947978e-01 1.8663339692989990e+01 1.7318436972944184e+01 2.2481973037115304e+00 0 0 0 +472 1 -7.2246774265653502e-01 1.4859840152567269e+01 2.1703317100897223e+01 2.2646897112240119e+00 0 -1 0 +288 2 3.6969993895661685e-01 1.7096807551701581e+01 2.0612969563678334e+01 3.1348586740129982e+00 0 0 0 +473 2 3.5534630248855253e-01 1.4119522026342489e+01 2.1624548652242922e+01 1.5907673026202556e+00 0 -1 0 +1054 1 -7.1438246754363388e-01 1.8000415380923481e+01 1.6590534036017306e+01 4.7929580919444321e+00 0 0 0 +1047 2 3.6859773747118585e-01 1.9450792925014401e+01 1.8689814418698880e+01 2.9105364289327329e+00 0 0 0 +1056 2 3.7972920279152972e-01 1.8068273313537087e+01 1.6118909737492015e+01 5.6538388426608721e+00 0 0 0 +1055 2 3.5434411621069151e-01 1.7149159665531318e+01 1.7071601037677752e+01 4.8690919800673997e+00 0 0 0 +1045 1 -7.0293424130799842e-01 2.0021137538127160e+01 1.9417567576000515e+01 3.2798849706518540e+00 0 0 0 +2107 1 -7.6803008473882806e-01 1.2894033700069791e+01 2.0780694317680165e+01 4.4461162369517926e-01 0 0 1 +2109 2 3.6841735157903299e-01 1.2660882750074881e+01 2.0419982003297214e+01 1.2868677436593952e+00 0 0 1 +2008 1 -7.1318891054517020e-01 1.9292810974277945e+01 1.9680409529617517e+01 7.3021180621858344e+00 0 0 1 +2010 2 3.5334322178545902e-01 1.9187070899602020e+01 2.0589178624453609e+01 7.4972637017281363e+00 0 0 1 +2009 2 3.5536776640230716e-01 1.9823854152400973e+01 1.9739432156923204e+01 6.5219768413870769e+00 0 0 1 +1020 2 3.3127327304395382e-01 1.5574217964576853e+01 1.8026514498970883e+01 2.5181160795807540e+00 0 1 0 +316 1 -7.4815326075891353e-01 1.9875574708927214e+01 2.2652294952884365e+01 6.9949471767612046e+00 0 -1 0 +2762 2 3.6473029481672714e-01 1.8011403601994317e+01 2.2227818382757981e+01 6.4517076410616871e+00 0 0 1 +2761 1 -7.2161175182531923e-01 1.7108541332627954e+01 2.1814193989420232e+01 6.4863221826620752e+00 0 0 1 +2604 2 3.6235838320129088e-01 1.5199163409273311e+01 1.7793512563824805e+01 7.6803759701187477e+00 0 0 1 +1173 2 3.8368206485428941e-01 1.2943958626291606e+01 1.6369286720717454e+01 5.0782558942964409e+00 0 0 0 +1082 2 3.5725621479485065e-01 9.7386332081614473e+00 2.5847739683697721e+01 3.0199412287553579e-01 0 0 0 +2426 2 3.9014084542948613e-01 2.5495827285938022e+00 1.9879954791275928e+01 9.1683484210780722e-02 0 0 1 +415 1 -7.4273174337580183e-01 1.7984642542152642e+01 1.5662715761200037e+01 7.4796355027689359e+00 0 0 0 +817 1 -7.1145364412181644e-01 4.2354448228157642e+00 3.0848445715791712e+01 3.3839673941147135e+00 0 0 0 +2916 2 3.6399216254522349e-01 2.8527549939068741e+01 2.2982156707672967e+01 1.5125922027046085e+01 0 0 0 +474 2 3.5946108003884264e-01 1.5585386092548063e+01 2.1297359866573657e+01 1.7853527206108262e+00 0 -1 0 +1442 2 3.6679915682077535e-01 2.7221890162594967e+01 3.0853919684972876e+01 6.1243939656359307e+00 0 -1 0 +1254 2 3.7116456490628669e-01 1.9903998895337349e+01 1.6863986572931733e+01 6.9883015347164001e-01 0 0 0 +2698 1 -7.7545314652810560e-01 2.0751473797956866e+01 1.6577546390906658e+01 3.8264404035562399e-01 0 0 1 +1046 2 3.3090073244898099e-01 2.0682372662886369e+01 1.8912763850781221e+01 3.8454542391287196e+00 0 0 0 +1264 1 -7.2501064617946076e-01 2.1225916960923009e+01 1.7535298367536335e+01 5.5677304474970235e+00 0 0 0 +1265 2 3.8861293293972260e-01 2.1581212645253736e+01 1.7378937365868804e+01 4.7279840652965044e+00 0 0 0 +1337 2 3.9398402977175517e-01 2.1618854942506662e+01 1.6992289865591182e+01 1.9134674148175284e+00 0 0 0 +1336 1 -7.4809738809572190e-01 2.2030322781316251e+01 1.7124505222988510e+01 2.7901659756519441e+00 0 0 0 +1338 2 3.5523440927157107e-01 2.2918824229141876e+01 1.6810185363119171e+01 2.8803359625463010e+00 0 0 0 +2973 2 3.5662738462216725e-01 1.9750967425155022e+01 2.2071027511600928e+01 1.3468505637329373e+00 0 0 1 +1181 2 3.8669363153730546e-01 2.0497904262864228e+01 2.0855345671695488e+01 2.0295683681128875e+00 0 0 0 +1444 1 -6.7983985437307159e-01 2.0660403082660956e+01 2.1694479298420354e+01 1.4981017531780987e+00 0 0 0 +1266 2 3.3490672568000618e-01 2.1205180224436369e+01 1.8487007364140478e+01 5.7101158472741185e+00 0 0 0 +1152 2 3.3518450908748509e-01 2.4607771167812295e+01 1.9098215836157074e+01 4.1644282019576258e+00 0 0 0 +2792 2 3.5645632223712637e-01 2.3811596018003996e+01 2.1772904285268641e+01 3.5193565043609900e+00 0 0 1 +1150 1 -7.3448599933983960e-01 2.4174942243319673e+01 1.8472201560677753e+01 4.8064359269327177e+00 0 0 0 +1151 2 3.6173027062307733e-01 2.4631029813175591e+01 1.8777135583269391e+01 5.6171733288673451e+00 0 0 0 +2239 1 -7.2632553814212819e-01 2.3535212426259740e+01 1.9391810674588768e+01 5.6148807017238223e-01 0 0 1 +2815 1 -7.5921315886160734e-01 1.7322369678780067e+01 2.1176214739859290e+01 9.9251420043365424e-01 0 0 1 +2793 2 3.6814816264716388e-01 2.2827068686348145e+01 2.2270420408963805e+01 4.6038852890958992e+00 0 0 1 +2791 1 -7.3411323787394145e-01 2.3661302057971419e+01 2.1797114259170954e+01 4.4620874578380727e+00 0 0 1 +2958 2 3.9869887384734931e-01 2.2037354955409469e+01 2.3029625186168452e+01 1.6343787412115072e+00 0 0 1 +1776 2 3.6598667331034290e-01 2.3796208094450865e+01 1.6731675507024480e+01 5.7878693083929980e+00 0 0 1 +1329 2 3.3682459528125397e-01 2.5163739092720778e+01 2.0039229827629349e+01 1.9971688019433658e+00 0 0 0 +2643 2 3.7039716155372293e-01 2.4005426832710164e+01 1.6883467101414865e+01 7.2585554753636066e+00 0 0 0 +2641 1 -6.9686577930997284e-01 2.3682191509139411e+01 1.6204045066788964e+01 6.5846470466215825e+00 0 0 0 +396 2 4.1276130184906729e-01 2.0710935025950135e+01 1.6315062407657329e+01 6.8768805697910933e+00 0 -1 0 +394 1 -7.4723122441974044e-01 2.0553974271751926e+01 1.5531023924465099e+01 7.4352891013540221e+00 0 -1 0 +1549 1 -7.4392899159898218e-01 2.1672389607847645e+01 2.0809118504881202e+01 6.3541899075774024e+00 -1 0 0 +1550 2 3.5945013029116596e-01 2.2542571367412574e+01 2.1013787675957762e+01 5.9220420381194936e+00 -1 0 0 +1551 2 4.1060863188637420e-01 2.1330489734613465e+01 2.1626659968350339e+01 6.6775362251154462e+00 -1 0 0 +187 1 -7.7813433155291212e-01 3.0629567383459374e+01 2.2349531182527997e+01 1.3106795010648782e+00 -1 0 1 +2956 1 -7.1975927288017838e-01 2.2969793790523482e+01 2.3274776937938221e+01 1.7329227562475202e+00 0 0 1 +2816 2 3.4857152547439851e-01 1.7938857836385989e+01 2.1887289565757339e+01 7.8913321311638884e-01 0 0 1 +1826 2 3.5131187006748366e-01 8.4871140865779715e+00 1.9845720950741924e+01 2.0876645559329297e+00 0 0 1 +1099 1 -6.9245925144271170e-01 9.3002347019241700e+00 2.9470099295486769e+01 9.4771488928205834e+00 0 0 0 +1968 2 3.5002912170804579e-01 5.4424501973759787e+00 1.6419735534746611e+01 6.4468743340494390e+00 0 0 1 +1101 2 3.8034542462663312e-01 8.6966209881750913e+00 2.8780268425854455e+01 9.8509552114970287e+00 0 0 0 +796 1 -7.6356758328059560e-01 3.0215616057761050e+01 1.8391562042156171e+01 5.5932390542907511e+00 -1 0 0 +785 2 3.7719159679540409e-01 3.0050279273838523e+01 1.7871046061179989e+01 4.7605021226753914e+00 -1 0 0 +798 2 3.8060827618580106e-01 3.0576128526967441e+01 1.9235076886677490e+01 5.3247599533504140e+00 -1 0 0 +1585 1 -7.5609350866441949e-01 2.5145848426927081e+01 1.6619583364866354e+01 3.2512741471091666e+00 -1 0 1 +1335 2 3.6406464562030649e-01 2.6924950711764712e+01 2.2237393389778372e+01 1.0603876694350756e-01 0 0 0 +1348 1 -7.0635988222156298e-01 2.5159386132018302e+01 2.0392735171655779e+01 6.6450934451745853e+00 0 0 0 +444 2 3.3828325895694944e-01 2.7152581004088272e+01 1.8070604250208053e+01 6.1986010373904472e+00 0 0 0 +1587 2 3.8717230332882896e-01 2.4667244445900156e+01 1.7358649022974628e+01 3.5902595082440349e+00 -1 0 1 +1958 2 3.4750670392093480e-01 2.5975965102195794e+01 2.1277684110578061e+01 2.4206277869909694e+00 0 0 1 +873 2 3.1868802911634969e-01 2.8633462779342647e+01 2.0517570475789476e+01 3.3335919208908167e+00 -1 0 0 +1159 1 -7.7572408792043468e-01 2.9455854341629912e+01 1.7414096877590630e+01 3.2748314182030911e+00 0 0 0 +1957 1 -7.4849215787623302e-01 2.5755082132922745e+01 2.0397617040553790e+01 2.6539947284113619e+00 0 0 1 +871 1 -7.2491846090039058e-01 2.9303288630042982e+01 2.0273558593566285e+01 2.6924407197774194e+00 -1 0 0 +872 2 3.5136777056847912e-01 2.8909917813692108e+01 2.0494952099178477e+01 1.8973854517534583e+00 -1 0 0 +725 2 3.3914469235875599e-01 2.9159598682642795e+01 1.8214232649007428e+01 2.8065079374735773e+00 0 0 0 +2574 2 3.4201563348160202e-01 1.4032700329541004e+01 2.8549289790869707e+01 2.1474732824375395e-01 0 0 1 +2647 1 -7.2024053252758780e-01 2.8538682072227818e+01 2.1743916327673524e+01 5.8701307170169423e+00 0 0 0 +2649 2 3.4358497053525161e-01 2.8045385974852564e+01 2.0981637591051292e+01 5.4298704226482748e+00 0 0 0 +665 2 3.5305853508755336e-01 2.6979306174346227e+01 1.9352140153524548e+01 3.9292242612989323e+00 0 -1 0 +664 1 -7.8841843197891370e-01 2.7339837485437041e+01 1.9393692225357313e+01 4.8217610350826288e+00 0 -1 0 +666 2 3.1811072911639759e-01 2.8041975216625044e+01 1.8715353160840547e+01 4.7705137308304275e+00 0 -1 0 +2648 2 3.6605147746802935e-01 2.9020127084912680e+01 2.1270468194655194e+01 6.5272024221862948e+00 0 0 0 +2237 2 3.7220065703801902e-01 2.7812236339658551e+01 2.3147771180011524e+01 2.5697292726629897e+00 0 0 1 +443 2 3.4321107080293883e-01 2.7504681470452226e+01 1.6587348560493052e+01 6.4303691298121546e+00 0 0 0 +2236 1 -7.4880377933505970e-01 2.7061391083183960e+01 2.2953538180791025e+01 1.9584560473446697e+00 0 0 1 +2238 2 3.7461551146678662e-01 2.6276593836533486e+01 2.3473135113858529e+01 2.2487234772842988e+00 0 0 1 +804 2 3.3695247389241156e-01 2.9142729113998104e+01 1.8888349146889784e+01 7.4401440261450098e+00 -1 0 0 +1350 2 3.2500553590188297e-01 2.6005415593871284e+01 2.0251910327118924e+01 6.1428755909562414e+00 0 0 0 +763 1 -7.2747918331602002e-01 2.7642890874322660e+01 1.6132854156133028e+01 1.5556380831984231e+00 -1 0 0 +446 2 3.5165162287066154e-01 2.4438707841526330e+01 2.4093521045468258e+01 3.2996980383076164e+00 0 0 0 +2972 2 3.5247552467731330e-01 2.8352596590607352e+01 1.7838706440295422e+01 6.0488676938640140e-01 0 0 1 +442 1 -7.5114971124189256e-01 2.6778107822442283e+01 1.7219671343742117e+01 6.4628477112242662e+00 0 0 0 +1349 2 3.6114445952234586e-01 2.4698492598411597e+01 2.0984318466605792e+01 6.0422378284532252e+00 0 0 0 +765 2 3.6208454850760396e-01 2.8398811893585471e+01 1.6402717004884696e+01 2.1133989973714336e+00 -1 0 0 +2971 1 -7.3196870955371129e-01 2.8231612660602035e+01 1.8735577785299540e+01 1.9526986467594393e-01 0 0 1 +1421 2 3.9576670460776053e-01 2.9843760768094970e+01 2.2642998135001282e+01 2.7809764274651592e+00 0 0 0 +2813 2 3.9045064072069613e-01 1.6818862999193140e+01 3.0636748373919648e+01 7.4078079950149327e+00 0 0 1 +2756 2 3.8522715794908158e-01 2.6726131045149369e+01 1.7606633943005193e+01 8.0233800141051237e+00 0 0 1 +2493 2 3.9213588031692331e-01 1.0169793168637511e+01 2.9342042721051328e+01 9.8527422093009402e+00 0 0 0 +879 2 3.2785034107277450e-01 2.3348181239792245e+00 2.3904096531269140e+01 2.3367199282102691e+00 0 0 0 +2840 2 3.4798658194914389e-01 4.9818343995013414e+00 2.3980847604744433e+01 8.8539376179718499e+00 1 0 0 +2839 1 -7.2406655632900985e-01 4.7987895158893972e+00 2.4245798731400420e+01 7.9210270429145648e+00 1 0 0 +2270 2 3.5180632221951880e-01 1.2487564152629931e+01 1.6776588591782190e+01 1.4364622660177345e+01 0 0 0 +588 2 3.6382858618720820e-01 1.2481492240218066e-01 2.5567804657932296e+01 5.8748362921325308e+00 1 -1 0 +586 1 -6.8760572962081024e-01 4.6575643504128111e-01 2.4676195316062618e+01 5.7331297077847241e+00 1 -1 0 +587 2 3.2122886990444466e-01 3.0791763299208480e+01 2.4128552393353107e+01 5.3121763358150123e+00 0 -1 0 +2601 2 3.5315584237641190e-01 4.1827610340272390e+00 2.7260559638215234e+01 1.8526553638829770e+00 0 0 1 +692 2 3.7362055851118586e-01 4.4139458218055143e+00 2.5083851016904752e+01 8.1330493377444135e+00 1 -1 0 +1508 2 3.9599296208801193e-01 9.8041773896469875e-01 3.0734807974689989e+01 6.1378302216299980e+00 0 -1 0 +644 2 3.6427481137337370e-01 3.9749017453391904e+00 2.7561951457261120e+01 5.5955676542483062e+00 1 0 0 +643 1 -7.3790222776002778e-01 3.0097151535489699e+00 2.7451438691890679e+01 5.6724899440070162e+00 1 0 0 +645 2 3.6022422275627614e-01 2.7461488108542951e+00 2.7356497435064306e+01 6.6245942559451088e+00 1 0 0 +2790 2 3.6811668594800584e-01 1.6692992236350936e+00 2.4930875235632854e+01 4.5043410701156485e+00 1 0 1 +755 2 3.8339690242043317e-01 3.2639043585156537e+00 2.9996356350344904e+01 7.4858828427149966e+00 0 0 0 +754 1 -6.4682773214593459e-01 3.8305525219460512e+00 3.0293721502029669e+01 8.2417777190370050e+00 0 0 0 +2416 1 -7.5357092565344552e-01 2.5812219145837716e+00 3.0205564775295734e+01 5.8572418349209361e+00 0 0 1 +2417 2 3.8341513321457343e-01 2.7699560100156813e+00 2.9233052460452900e+01 5.7902141164142336e+00 0 0 1 +2418 2 3.4445164203891443e-01 2.8562295425717061e+00 3.0679757101358874e+01 5.0015581499621131e+00 0 0 1 +2788 1 -7.0321027099045230e-01 2.3442477061084475e+00 2.5317247752129028e+01 3.8363861884046484e+00 1 0 1 +2789 2 3.7914725817921408e-01 2.7763855350319124e+00 2.6075294597664179e+01 4.3788785634425063e+00 1 0 1 +680 2 4.0283841723983022e-01 5.8203615544809295e-01 2.6764007370292994e+01 7.8694081214223246e+00 1 -1 0 +1509 2 3.8770948720614790e-01 2.0034500066489502e-02 3.0034440585611247e+01 7.1254400770143738e+00 0 -1 0 +1507 1 -7.5437694527071142e-01 3.7022571074369785e-02 3.0666165280521902e+01 6.3857002569780912e+00 0 -1 0 +1653 2 3.5883296888623417e-01 2.8474263742866501e+00 2.9495322724824696e+01 2.4680526617736120e+00 0 -1 1 +16 1 -7.2949093288191802e-01 2.5958855517257855e+00 2.8592930499102319e+01 2.2199622917335491e+00 0 -1 0 +108 2 3.6168532880153298e-01 2.4820354224226322e+00 2.4655039907155640e+01 4.3932622392821898e-03 0 -1 0 +2596 1 -7.3884773905394074e-01 5.6845506450879366e+00 2.8179861155318306e+01 5.6133334243432298e+00 0 0 1 +2598 2 3.6510608759941843e-01 6.2632055888284510e+00 2.8826680396986436e+01 5.1770222846244129e+00 0 0 1 +2917 1 -7.3092209538063713e-01 2.9999889001514347e+01 2.6751046624975530e+01 7.1138141231407346e+00 0 0 1 +2619 2 3.4575735632172039e-01 2.3651954241411102e+00 2.8667144260223125e+01 1.2163286206696953e+00 0 0 1 +2599 1 -7.5488422254164322e-01 4.8841104236752351e+00 2.6925542396030586e+01 1.2838580867329015e+00 0 0 1 +2979 2 3.4397986483063014e-01 8.1965699631026423e-01 2.5376454781663146e+01 2.5295589716767419e+00 1 0 1 +2977 1 -7.4518508058038901e-01 3.1035985845318130e+01 2.5570830792796205e+01 2.0267725385352917e+00 0 0 1 +2240 2 3.5078401128980990e-01 2.4308205531827095e+01 1.8898609856773312e+01 1.4167813111160538e-01 0 0 1 +1537 1 -7.3777883422486357e-01 2.8183611068164300e+01 2.8021526755735568e+01 1.4909216079243803e+01 -1 -1 0 +1078 1 -7.1161377304581475e-01 1.0603164880436095e+01 3.0287962315273230e+01 1.2742050479495079e+01 0 0 0 +2381 2 3.5399757106050078e-01 6.1067728487761750e+00 2.4781064959124869e+01 3.6336376148565597e+00 0 0 1 +283 1 -7.5672796575542789e-01 7.3340276396581530e+00 2.4120587328236045e+01 6.7334638335770185e+00 0 0 0 +2382 2 3.4011467000542039e-01 5.6781126010134022e+00 2.6154821192660336e+01 3.3820129454259331e+00 0 0 1 +285 2 3.4574003908113682e-01 6.9889042977657487e+00 2.4462488098381062e+01 5.8661198873599929e+00 0 0 0 +2380 1 -7.0966788174009432e-01 6.1891249826381323e+00 2.5677801265080234e+01 4.0114929462837150e+00 0 0 1 +866 2 3.7974762058817363e-01 1.1437161451323156e+01 2.3935483643544291e+01 6.4844741141495179e+00 0 0 0 +865 1 -7.5045270964496991e-01 1.1684542206206830e+01 2.4034220174916079e+01 5.6087450809481565e+00 0 0 0 +713 2 3.8100618498572247e-01 2.2784688436261732e+01 2.8067384693091206e+01 1.5168157765466054e+01 0 -1 0 +2651 2 3.7134754646185764e-01 1.0564932711540903e+01 2.4417224439023801e+01 3.9821442280327397e+00 0 0 0 +2497 1 -7.8008249791842177e-01 1.0146781899866344e+01 2.4716450193775763e+01 3.1827349450385665e+00 0 0 0 +2499 2 3.9519385266339480e-01 9.8251259176630352e+00 2.5593636191229397e+01 3.3708764163336000e+00 0 0 0 +947 2 3.9253924940428797e-01 1.0263825030224725e+01 2.7852683659544994e+01 4.0455615741418205e+00 0 0 0 +948 2 3.9725362218035121e-01 9.1515364235489809e+00 2.8305362413977200e+01 3.1159321237190047e+00 0 0 0 +946 1 -7.0669887383965291e-01 9.6698379933881409e+00 2.7491147131501222e+01 3.3837868622275784e+00 0 0 0 +2415 2 3.9085663853667518e-01 7.8214692137169388e+00 3.0262367492327279e+01 3.6417069179902399e+00 0 0 1 +2413 1 -7.3042635851030735e-01 7.8611977585993138e+00 2.9503130536524999e+01 3.0631082528549514e+00 0 0 1 +2414 2 3.6257527513306098e-01 7.5130039510401589e+00 2.9877260365777943e+01 2.2557876138095705e+00 0 0 1 +2597 2 3.4847208100918808e-01 5.9287756755990690e+00 2.7333902335473979e+01 5.1899307770680885e+00 0 0 1 +1595 2 3.6244592889370902e-01 1.2433936904412802e+01 2.1934965053416544e+01 1.4992406370894184e+01 0 0 0 +2271 2 4.0909570526419575e-01 1.3522451860086692e+01 1.6951634432715593e+01 1.5508375253755103e+01 0 0 0 +327 2 3.8759023730211123e-01 1.2050978705537872e+01 1.5573452653055504e+01 8.2784716132267206e+00 0 0 0 +35 2 3.4845842899276164e-01 1.1812588280128036e+01 2.9385188020711290e+01 2.5041572044769072e+00 0 -1 0 +46 1 -7.1593692545468413e-01 1.1232403277271668e+01 3.0168149651200153e+01 2.3303314562343735e+00 0 -1 0 +1059 2 3.6824864110585426e-01 1.1638504469448538e+01 2.5099123254431568e+01 2.0648781431552830e+00 0 0 0 +48 2 3.1878107605473444e-01 1.0347514158940282e+01 2.9690768110446829e+01 2.1037573159972309e+00 0 -1 0 +2306 2 3.6730774642582426e-01 1.1677638270183767e+01 2.7832135131347837e+01 5.4673888184085717e+00 0 0 0 +867 2 3.1370858253756073e-01 1.2192252410484890e+01 2.4874949039818269e+01 5.6579771234908787e+00 0 0 0 +1240 1 -7.5180796299280950e-01 1.2327087450360994e+01 2.6722712144246813e+01 7.0555309702582889e+00 0 0 0 +970 1 -7.3146600161462005e-01 1.1248152038688696e+01 2.8611069856538506e+01 5.1499323635329528e+00 0 0 0 +797 2 4.0297523845729272e-01 4.7530543081548977e+00 1.5871585490732055e+01 2.8057350832087859e-02 0 0 0 +2907 2 3.3000121827207451e-01 1.4254911479743537e+01 2.5045975715533139e+01 2.5261004334418780e-01 0 0 1 +1310 2 3.6912627891884631e-01 1.1435715601608260e+01 3.0051416679416132e+01 6.5685756635319086e+00 0 0 0 +194 2 3.4139849350075085e-01 7.1415094141566895e+00 3.0604232298233732e+01 1.2211017372962626e+01 0 -1 0 +2404 1 -7.2918970427923557e-01 7.7443173631668092e+00 2.6595939568484972e+01 3.4140147144317651e-01 0 0 1 +2241 2 3.9659912662053765e-01 2.2799435060564139e+01 1.9066923564805702e+01 6.9285759649524839e-02 0 0 1 +2024 2 3.2328026818693090e-01 1.2934503583841352e+01 3.0969340188993392e+01 1.0085149821386086e+00 0 -1 1 +2600 2 3.7262301809038745e-01 7.8437230034604051e+00 2.8625302519356289e+01 3.6919372515878351e-01 0 0 1 +2503 1 -7.2267250532881955e-01 8.1079081356276106e+00 2.9515055246603296e+01 2.2072243477987505e-01 0 0 1 +892 1 -7.5148672502679792e-01 2.0888208841338542e+01 3.0715669616108823e+01 5.4691140517319417e+00 -1 0 0 +2914 1 -7.6421926990744804e-01 2.9510703840073099e+01 2.3060877292649728e+01 1.5053406826873461e+01 0 0 0 +422 2 3.9557308470781993e-01 1.4958599980011073e+01 2.3266598884233236e+01 2.7100072576749090e+00 0 -1 0 +1440 2 3.3666172492882906e-01 1.5566427432003387e+01 2.3299397669057697e+01 5.7236708951045312e+00 0 0 0 +971 2 3.2567165474977544e-01 1.1929566312924079e+01 2.8923647751821658e+01 4.4487948302918046e+00 0 0 0 +1438 1 -7.6400355645773477e-01 1.4805332823009291e+01 2.3937420344020648e+01 5.6136468707181102e+00 0 0 0 +1439 2 3.3814215799380470e-01 1.3976209769692970e+01 2.3456528366304326e+01 5.7527473356036429e+00 0 0 0 +1165 1 -7.7180149244132290e-01 1.6892018185723501e+01 2.5179950685440588e+01 1.9553738940112357e+00 0 0 0 +2758 1 -7.2968332908530154e-01 1.3875326099665889e+01 3.0808333193614605e+01 7.2626576973725365e-01 0 0 1 +1057 1 -7.3718390505409592e-01 1.2453032324606104e+01 2.5482972853962679e+01 1.6979261521525946e+00 0 0 0 +1058 2 3.7170747392897024e-01 1.3154453168675921e+01 2.4886115881196488e+01 2.1278488278569094e+00 0 0 0 +361 1 -7.2020473249304684e-01 1.5111938052273384e+01 2.6545935198238293e+01 6.5288380534713806e+00 0 0 0 +363 2 3.7710795587665641e-01 1.4130307401196781e+01 2.6895766235910095e+01 6.7011746282590110e+00 0 0 0 +1787 2 3.6506550621193440e-01 1.6437016935767591e+01 2.8270823428873410e+01 7.1889962650727446e-01 0 0 0 +500 2 3.9563439978420145e-01 1.3139570395859357e+01 2.7125366038007243e+01 2.4405650434562336e+00 0 -1 0 +499 1 -7.4192491401160543e-01 1.3246382458096035e+01 2.7884269656775327e+01 2.9621932171635712e+00 0 -1 0 +1786 1 -7.2694685533705328e-01 1.6124079983728649e+01 2.7701169952745143e+01 1.4707548318084380e+00 0 0 0 +501 2 3.4901563025656368e-01 1.4186706205235831e+01 2.8044701640144048e+01 2.9716726018831583e+00 0 -1 0 +1788 2 3.7300324528589590e-01 1.6565487798225700e+01 2.6743546285094954e+01 1.4172319899393557e+00 0 0 0 +485 2 3.8917163444130082e-01 1.7133153268846343e+01 2.8432448855102731e+01 2.5828995953958405e+00 0 -1 0 +484 1 -7.2478139607319303e-01 1.7771011581849773e+01 2.9090312988370790e+01 3.0195170845673602e+00 0 -1 0 +719 2 3.5973544565603732e-01 1.3210824358055650e+01 2.9980253058615219e+01 6.8901163302489712e+00 0 -1 0 +1131 2 3.7398792739649861e-01 1.4972565243952641e+01 2.5615051745422370e+01 6.2364669835306543e+00 0 0 0 +1120 1 -7.6437393633003570e-01 1.7188136437858049e+01 2.7620586692659064e+01 5.2313564427111094e+00 0 0 0 +478 1 -7.7153794208645088e-01 1.4556112571796843e+01 2.4170731992946010e+01 2.8571853183454174e+00 0 -1 0 +480 2 3.7039279087856108e-01 1.4659375689306321e+01 2.4377802333564819e+01 3.8306330776186162e+00 0 -1 0 +1166 2 3.6818913917165530e-01 1.5988849046281164e+01 2.4719250714218951e+01 2.0730647480009945e+00 0 0 0 +718 1 -7.0007226663817013e-01 1.4033321826486652e+01 2.9451312566205477e+01 7.1128216935617550e+00 0 -1 0 +1167 2 3.7923338543484714e-01 1.7372547670804369e+01 2.5141492059876267e+01 2.8388481697703978e+00 0 0 0 +486 2 3.4851896327417431e-01 1.7840015927983163e+01 2.8729788861126512e+01 3.9900023789032013e+00 0 -1 0 +1122 2 3.9950948061246394e-01 1.6283452598076114e+01 2.7493752546370004e+01 5.6820739550444701e+00 0 0 0 +1004 2 3.6922321685265796e-01 1.8067819858332463e+01 2.6103514753011648e+01 4.7800600944944955e+00 0 0 0 +1241 2 3.8317209833142313e-01 1.2631762626548294e+01 2.6617459281135197e+01 7.9366488579655634e+00 0 0 0 +720 2 3.8883256719159187e-01 1.4886218006873349e+01 3.0052887370892567e+01 7.0252477601468382e+00 0 -1 0 +317 2 3.7660963558257304e-01 2.0474708064777836e+01 2.3357459428841722e+01 7.2036772262635322e+00 0 -1 0 +569 2 3.8783285696535674e-01 2.2455722248379106e+00 2.2066220204576794e+01 1.5370151484013425e+01 1 -1 0 +2269 1 -7.1752401459424253e-01 1.2711347438041340e+01 1.7352224147378934e+01 1.5155041314866999e+01 0 0 0 +1825 1 -6.9402006245137993e-01 8.4972674772146011e+00 1.9497033734637270e+01 1.1809872771074947e+00 0 0 1 +430 1 -6.5456537019421690e-01 2.0996612135100165e+01 2.3575278454644387e+01 4.4848104634520487e+00 0 -1 0 +479 2 3.5143149704121679e-01 2.0090941043366730e+01 2.3794803455930094e+01 4.1063801965498241e+00 0 -1 0 +452 2 3.7511039745343261e-01 1.8242038568261091e+01 2.4312676814993754e+01 1.2408014532412548e+00 0 0 0 +2335 1 -7.0663871699902170e-01 2.7803249955786349e+01 3.0841525302039685e+01 1.1576639981750375e+01 -1 0 1 +2215 1 -7.5759516482600286e-01 2.4044598058876268e+01 3.0499261364788985e+01 7.5098444224430383e-01 0 -1 1 +432 2 3.5321799230547979e-01 2.1099341991831480e+01 2.3978205976758272e+01 5.3721841612848751e+00 0 -1 0 +1121 2 3.6602716921762257e-01 1.7788562511675782e+01 2.7500115242099934e+01 5.9408997621475974e+00 0 0 0 +451 1 -7.7479114258616244e-01 1.8956195284318440e+01 2.3779380845961956e+01 8.1650275600510236e-01 0 0 0 +1005 2 3.7425010479579085e-01 1.9019115995034273e+01 2.5937547750436089e+01 3.5420941138403799e+00 0 0 0 +391 1 -7.1903343169706346e-01 2.0633741021534266e+01 2.9437036759946299e+01 2.7178639091630310e+00 0 -1 0 +393 2 3.5197438791556285e-01 2.1042308894894298e+01 2.9938298988577603e+01 3.4500547962865422e+00 0 -1 0 +1 1 -7.5275174968800906e-01 2.2274546567364681e+01 2.3971593227612047e+01 7.0297719550043682e+00 -1 -1 0 +593 2 3.6821692456138522e-01 2.2630094997345115e+01 2.7119253615506256e+01 5.8004682052621579e+00 0 -1 0 +594 2 3.4130618206757080e-01 2.1599167406847030e+01 2.6222489465669813e+01 4.9644171821037251e+00 0 -1 0 +592 1 -7.4558336044021079e-01 2.1854184757612302e+01 2.6584592873719430e+01 5.8904946484285450e+00 0 -1 0 +392 2 3.4369613413918820e-01 1.9697038968448663e+01 2.9724448606225398e+01 2.8358995172859380e+00 0 -1 0 +126 2 3.7422219785173821e-01 2.0285381681406673e+01 2.7775135400249162e+01 3.0427494983516028e+00 -1 -1 0 +124 1 -7.2809449525284942e-01 2.0423346277474227e+01 2.6777363351430647e+01 3.1271560553692686e+00 -1 -1 0 +1857 2 3.4776498394299105e-01 2.0266250559281630e+01 2.8889562568593252e+01 5.3890956197132767e-01 0 -1 1 +125 2 3.7886289804488649e-01 2.0661450519657514e+01 2.6403793270474445e+01 2.1939402385286337e+00 -1 -1 0 +1003 1 -7.3374260266434299e-01 1.8394082976062357e+01 2.5426417334217984e+01 4.1281055653717926e+00 0 0 0 +1358 2 3.5320920959414304e-01 2.0181884329293933e+01 2.7535391615396801e+01 6.0836395423973135e+00 0 0 0 +453 2 3.8464374378974286e-01 1.9753646988402490e+01 2.4321280695410977e+01 7.1526528408521084e-01 0 0 0 +2217 2 3.7007639929684993e-01 2.4513342179557473e+01 2.9827918774373099e+01 1.2963472561364868e+00 0 -1 1 +1170 2 3.7203639517515485e-01 2.4316477511954879e+01 2.6019812701370970e+01 2.5424985484790432e+00 0 0 0 +1190 2 3.6648816131771772e-01 2.3530990378337936e+01 2.5373947402039541e+01 1.4763190384323588e+00 0 0 0 +1168 1 -7.1726548443494753e-01 2.3669431004163265e+01 2.6222569850352421e+01 1.8849284222704075e+00 0 0 0 +774 2 3.5870976329075838e-01 2.4611646906770677e+01 2.8008246261675229e+01 2.2690190621100172e+00 -1 0 0 +772 1 -7.6998498468766385e-01 2.5231146016647635e+01 2.8697308125595963e+01 2.6048632096997633e+00 -1 0 0 +1357 1 -7.2474852232336362e-01 1.9542919602024099e+01 2.7539633386633540e+01 6.8697274120249769e+00 0 0 0 +574 1 -7.3565241237755274e-01 2.0874195857857323e+01 2.5872258837729937e+01 6.5644486888479714e-01 0 -1 0 +576 2 3.2214123564982566e-01 2.1856440541000719e+01 2.6118436770139766e+01 5.2721422664059880e-01 0 -1 0 +1561 1 -7.2442043641608134e-01 6.1478558005357398e+00 1.7351146160950446e+01 2.1199996540750790e-01 0 0 1 +2707 1 -7.4908870477242695e-01 2.3572987187960493e+01 3.0247951655633539e+01 4.2770187072569259e+00 0 0 1 +2709 2 3.7701416401847976e-01 2.4018228287972992e+01 3.0016839751672130e+01 3.4541154315762790e+00 0 0 1 +121 1 -7.2051113576138714e-01 2.4191625099975827e+01 3.0650915047544217e+01 7.4574712232716918e+00 -1 -1 0 +3 2 4.1577633930000224e-01 2.3105901992940503e+01 2.3975506485778499e+01 7.5010060338255879e+00 -1 -1 0 +571 1 -7.1341890243255535e-01 2.4930557565015704e+01 2.4176879224243887e+01 7.6865627972039157e+00 0 -1 0 +123 2 3.3569826248679580e-01 2.4039494944321241e+01 2.9712947151475923e+01 7.2580477181558241e+00 -1 -1 0 +2451 2 3.7901607775320451e-01 1.7260992719357549e+01 1.7280321903502422e+01 1.5507075495442072e+01 0 0 0 +36 2 3.2211910731470411e-01 2.8596288805862930e+01 2.8755568105638790e+01 1.2611351594675826e+00 -1 -1 0 +1420 1 -7.6839855138204449e-01 2.9369288731394516e+01 2.3152743013854376e+01 3.5229814268119322e+00 0 0 0 +1418 2 3.3332506312944232e-01 2.7799031631687289e+01 2.4206610139617137e+01 4.8937517743836914e+00 0 0 0 +1079 2 4.1202959723708116e-01 1.1017085812565135e+01 3.0958157562986710e+01 1.3435728670024270e+01 0 0 0 +77 2 4.1061427900959452e-01 1.0175736789658936e+00 2.8182432170832623e+01 2.6693340884161372e+00 0 0 0 +103 1 -7.5456901333818416e-01 2.9649161718599714e+01 2.7187899327989076e+01 1.7311454374726398e-01 -1 -1 0 +1422 2 3.7138709430363176e-01 2.9407740548480952e+01 2.2677894956409339e+01 4.3436692679758417e+00 0 0 0 +573 2 3.7154365941629924e-01 2.5535670144797308e+01 2.4038380722464264e+01 6.9828917470572112e+00 0 -1 0 +2439 2 3.6826283620290740e-01 2.4691029633893312e+01 2.7767950007339177e+01 7.2722458966768038e+00 -1 0 1 +2437 1 -7.3154265702444210e-01 2.4484744310442654e+01 2.7802548689359515e+01 6.3432053449949279e+00 -1 0 1 +2981 2 3.6511473696165159e-01 2.9588960281624633e+01 2.7115320512173195e+01 6.3101417465397853e+00 0 0 1 +76 1 -7.4446262168796229e-01 4.4347907502734367e-02 2.8083582667516676e+01 2.8106831640334979e+00 0 0 0 +1417 1 -7.0444574478905619e-01 2.7176785934000979e+01 2.4342046570308533e+01 5.6224049670235079e+00 0 0 0 +2955 2 3.7873227585346980e-01 2.5593963277319812e+01 2.4460708836016174e+01 4.2460155714017382e+00 0 0 1 +78 2 3.6862115269425916e-01 3.0742708187176721e+01 2.7191840167992034e+01 2.5352936045524888e+00 -1 0 0 +1419 2 3.5501644844363678e-01 2.7621550811901798e+01 2.3813714936953865e+01 6.3081552703764885e+00 0 0 0 +2332 1 -7.3611234651260138e-01 2.9578056580891140e+01 2.8697427284645038e+01 5.0539779490147163e+00 -1 0 1 +2334 2 4.0171294821696840e-01 3.0129444416058540e+01 2.9357390069091423e+01 5.3552591046352775e+00 -1 0 1 +2953 1 -7.7697637895686589e-01 2.5324831336060210e+01 2.4487390586951999e+01 3.3571062370488240e+00 0 0 1 +907 1 -7.2251028040591492e-01 2.7100203938797701e+01 2.6593106258267170e+01 2.4440379882400376e+00 -1 0 0 +909 2 3.3500662682571025e-01 2.7427278216403398e+01 2.6522956737287711e+01 1.5033342341908511e+00 -1 0 0 +908 2 3.7961236192047176e-01 2.6956469552165704e+01 2.5744703492226272e+01 2.6400960394064432e+00 -1 0 0 +2412 2 3.4623101210603358e-01 2.6029577309995265e+01 2.9171189633077898e+01 4.3079987642570918e+00 -1 0 1 +2411 2 3.5218645700129853e-01 2.7336288672869212e+01 2.8783519190678735e+01 5.0785014135684090e+00 -1 0 1 +2410 1 -7.6011493149154941e-01 2.6477880327746849e+01 2.9184653431160037e+01 5.2067375322384324e+00 -1 0 1 +2708 2 3.3181334848678523e-01 2.4164266597886574e+01 2.9822345617660844e+01 4.9099631442280707e+00 0 0 1 +773 2 3.7012580699728387e-01 2.6102804889668402e+01 2.8294793487265327e+01 2.4404325203689918e+00 -1 0 0 +60 2 3.6438661909224723e-01 2.9672415367119456e+01 2.8687242549486129e+01 4.0691075695933865e+00 -1 -1 0 +2438 2 3.6905390739666244e-01 2.5397596245482042e+01 2.8086722995784147e+01 5.9351200968678022e+00 -1 0 1 +1913 2 3.9777170499484688e-01 1.2445734247165840e+01 1.5994290894358539e+01 1.1900694900542913e+01 0 0 0 +105 2 3.8022186632645188e-01 3.0441932538363968e+01 2.6795585923877784e+01 5.8196599449822606e-01 -1 -1 0 +34 1 -6.9103165850333870e-01 2.9102913931594440e+01 2.9592407312246191e+01 1.5211275179373571e+00 -1 -1 0 +2918 2 3.6744823694418821e-01 2.9460198883696403e+01 2.7028527124131571e+01 7.8749192047765266e+00 0 0 1 +1655 2 3.7093515606989202e-01 2.9881610170356275e+01 2.9150987659245054e+01 1.8389359555123999e+00 -1 -1 1 +1064 2 3.3879951321891011e-01 2.5483525215636931e+00 2.0024626791342854e+01 8.1380248165505513e+00 0 0 0 +1065 2 3.6124126446920163e-01 3.4938963528843967e+00 1.9346220672408222e+01 7.2481726367541306e+00 0 0 0 +818 2 3.8826292627461073e-01 4.9533731605449649e+00 3.1001128832846643e+01 2.7089246988955824e+00 0 0 0 +781 1 -7.1053193243808477e-01 3.0918245522048736e+01 2.2210287096960165e+01 8.4999784213451690e+00 -1 0 0 +783 2 3.3829689662728679e-01 1.9347358200781137e-02 2.1413498559152941e+01 9.0284816532350796e+00 0 0 0 +897 2 3.9667986531971500e-01 3.0590078971226010e+01 1.6721897173546587e+01 1.1712801130585841e+01 -1 0 0 +896 2 3.9060271093257459e-01 7.1430249162270276e-01 1.7354038616218705e+01 1.0935784766862362e+01 0 0 0 +2978 2 3.3328822053012341e-01 3.0403075834293748e+01 2.5154780732356976e+01 2.5831932127906847e+00 0 0 1 +782 2 3.8068974490929453e-01 3.6850592315502234e-01 2.2868794731213487e+01 8.9895074290264496e+00 0 0 0 +2479 1 -7.4283161069088044e-01 4.9449624192179638e+00 2.0053044930582871e+01 8.7838756901349413e+00 0 0 0 +2480 2 3.8904952102009055e-01 4.6308351414032618e+00 2.0801035198761209e+01 9.3320441559769840e+00 0 0 0 +2481 2 3.9032107431036239e-01 5.0447721051635677e+00 1.9232398023379780e+01 9.3816456769200052e+00 0 0 0 +902 2 3.7392508857859746e-01 2.8598438701388549e+00 1.6635609298857183e+01 1.1753616607594813e+01 0 0 0 +903 2 3.8081156908654729e-01 2.3674417963906715e+00 1.8052996094063570e+01 1.2287970858182797e+01 0 0 0 +1570 1 -7.5893671651103367e-01 3.0218300902229167e+00 1.9308785499479292e+01 1.3536737357231672e+01 0 0 0 +1571 2 3.8388295512999776e-01 3.8972856227907071e+00 1.9678335988182738e+01 1.3330824242472874e+01 0 0 0 +1572 2 4.0340330515784095e-01 2.9148444381818490e+00 1.9257058322215780e+01 1.4503628319612218e+01 0 0 0 +170 2 3.8882921609954363e-01 2.9427592381579668e+00 2.1619466459223013e+01 1.1027876270810093e+01 0 0 0 +169 1 -7.7463134278409251e-01 3.8529636758273407e+00 2.1699173051760646e+01 1.0628485272851613e+01 0 0 0 +1484 2 4.0383560934081486e-01 4.2071330215285281e+00 2.2606910771010458e+01 1.0772474498839145e+01 1 0 0 +2308 1 -7.3569171940956501e-01 1.5017620852195062e+00 2.0831890139540402e+01 1.1782616700171493e+01 0 0 0 +2309 2 3.8366802113539478e-01 1.9342199150744828e+00 2.0244472854130983e+01 1.2485520341268021e+01 0 0 0 +2310 2 3.9498363709379281e-01 1.2958100040264249e+00 2.0300058783725483e+01 1.0983524237686135e+01 0 0 0 +917 2 3.7008761071742147e-01 4.8220292832352154e+00 2.0914860722736151e+01 1.1825020786045929e+01 0 0 0 +901 1 -7.1954901362842083e-01 2.4476472653585248e+00 1.7539212404128129e+01 1.1476237039039427e+01 0 0 0 +2653 1 -7.1407794147296166e-01 2.2223217817991088e+01 1.5600288137492777e+01 9.7129661428534746e+00 0 0 1 +1661 2 3.5806502752998431e-01 2.8723309707562222e-01 1.8518812070504179e+01 9.5105582699629085e+00 0 0 1 +2681 2 3.7408838542420436e-01 2.5692127879270789e+01 2.4050868588982262e+01 1.5209429065012028e+01 0 0 0 +895 1 -7.7254256646473796e-01 3.0916044323341680e+01 1.6865507987979797e+01 1.0832587972324836e+01 -1 0 0 +972 2 3.8958678083689607e-01 5.2845295544754913e+00 2.2041888025454103e+01 1.4164436092325849e+01 0 0 0 +916 1 -7.1849250243876217e-01 5.2917958307580353e+00 2.0765686248163561e+01 1.2715811801842168e+01 0 0 0 +41 2 3.4597041917537447e-01 4.5404653034810440e+00 1.7441943296259307e+01 1.0763676472309626e+01 0 0 0 +42 2 3.4625268632405820e-01 5.4911163946317982e+00 1.6955800727265036e+01 9.6416415245918454e+00 0 0 0 +40 1 -6.9298718920580493e-01 5.3586832037896297e+00 1.7668787968159918e+01 1.0272929656102887e+01 0 0 0 +918 2 3.7241349642923333e-01 6.2774434684204188e+00 2.0597766446606272e+01 1.2439943861592742e+01 0 0 0 +2817 2 3.6362109850572560e-01 1.7072551470060397e+01 2.0791821797317706e+01 1.9730653547291296e-01 0 0 1 +2473 1 -7.8376303661055080e-01 5.2329675428867226e+00 2.2926869569941765e+01 1.4508261223785039e+01 0 0 0 +1394 2 3.7561675712294307e-01 1.0066961393282048e+01 2.2137513267239317e+01 7.9241561763396282e+00 1 1 0 +182 2 3.7036336294443822e-01 2.9772454062655132e+01 2.7398338040325360e+01 1.2452158687330796e+01 -1 0 0 +1929 2 3.7304411352453759e-01 2.0571506036799700e+01 1.5843275251657795e+01 1.4902031573720491e+01 0 -1 0 +2735 2 4.0466389476064457e-01 1.3663928778675162e+01 1.7700859662394102e+01 1.1273600014757855e+01 0 0 0 +693 2 3.7355905365668080e-01 8.2924051047883438e+00 2.1211611421873101e+01 7.5605276769303620e+00 1 -1 0 +81 2 3.4643788751501525e-01 1.3437500808154157e+01 2.0858005523084625e+01 7.0855832710738369e+00 0 0 0 +79 1 -7.0472834330902390e-01 1.2891631836566249e+01 2.0075875296449333e+01 6.7214342140418841e+00 0 0 0 +1094 2 3.8663965999858252e-01 1.1538959925197428e+01 1.8805378150876944e+01 1.4242985681441615e+01 0 0 0 +2154 2 3.6420188231188699e-01 1.0521146231131416e+01 2.2524680111552552e+01 9.4763834191858258e+00 1 0 1 +1362 2 3.5824690391237357e-01 6.5921348900644317e+00 2.0394826958198973e+01 8.1492985187104168e+00 1 0 0 +1635 2 3.6460421980976943e-01 7.8791961372700694e+00 1.9437307217523852e+01 8.4551633696940574e+00 0 0 1 +691 1 -7.1634038175820036e-01 7.4457620197018342e+00 2.0340597100576886e+01 8.7188804807012357e+00 1 -1 0 +1091 2 3.5348108080554042e-01 9.2352024301846232e+00 2.3062119115273926e+01 1.0688071281129636e+01 0 0 0 +1093 1 -7.5610592836972312e-01 1.1176049494231272e+01 1.9369925143825022e+01 1.3526617279730933e+01 0 0 0 +1092 2 3.5698678780043508e-01 1.0428095081578661e+01 2.2355387862443486e+01 1.1390639381003277e+01 0 0 0 +1090 1 -7.4170775116856325e-01 9.7310897953903712e+00 2.2196116250200184e+01 1.0732220278777797e+01 0 0 0 +2297 2 3.7934871719845747e-01 1.0794042060809771e+01 2.1020294208138296e+01 1.3887529507469980e+01 0 0 0 +2488 1 -7.3192761463762990e-01 7.5729790375084214e+00 1.9966054609970051e+01 1.1495176640393668e+01 0 0 0 +2489 2 3.9010762880406841e-01 7.2457720749580972e+00 2.0103302581885902e+01 1.0563387900827802e+01 0 0 0 +2490 2 3.5552434097681462e-01 8.2903037248428042e+00 2.0628250272285275e+01 1.1486238901911690e+01 0 0 0 +177 2 3.8421024410092713e-01 7.6534694143330260e+00 1.7274206383348062e+01 1.3765775587804821e+01 0 0 0 +2355 2 3.5028584914948896e-01 1.1086995691185416e+01 2.2359508348038510e+01 1.3131526882750579e+01 0 0 0 +2344 1 -7.2028535602954824e-01 8.3422327917342951e+00 1.7749713127973955e+01 1.3166647643860570e+01 0 1 0 +2346 2 4.0082094308859451e-01 7.8805465917902895e+00 1.8433376952478259e+01 1.2752454210832761e+01 0 1 0 +1095 2 3.5064756010964881e-01 1.0277271754319097e+01 1.9081853876585306e+01 1.3359986510885417e+01 0 0 0 +2353 1 -7.7169283784575082e-01 1.0892211058050357e+01 2.2012390989266652e+01 1.3985946095630926e+01 0 0 0 +329 2 3.8245793311242204e-01 9.4294825512239715e+00 1.8375170009595195e+01 9.3862643340546743e+00 0 0 0 +328 1 -6.8284934097088801e-01 1.0364693584158644e+01 1.8694073610397169e+01 9.3369426823978721e+00 0 0 0 +266 2 3.3998906893874364e-01 1.0835107512327555e+01 1.7886338480507185e+01 9.0448861727927401e+00 0 0 0 +180 2 3.6629437370309237e-01 8.9191909014610218e+00 1.6278123394845156e+01 1.2171630277942121e+01 0 0 0 +1230 2 3.4897159507022230e-01 1.2651522049522319e+01 2.2828698079773773e+01 1.1426060156834017e+01 0 0 0 +1248 2 3.7127122779483096e-01 1.2019755864652671e+01 1.9177004225515454e+01 1.0239280429073586e+01 0 0 0 +1246 1 -7.5123810229363408e-01 1.2612701047009665e+01 1.9269563800417110e+01 1.1007569385750237e+01 0 0 0 +1247 2 3.8478602703622933e-01 1.2022865885117511e+01 1.9363862621856210e+01 1.1794799083569512e+01 0 0 0 +325 1 -7.2032755691587191e-01 1.1154565249619596e+01 1.5905196799573638e+01 8.3293449943930895e+00 0 0 0 +628 1 -7.5200533637137024e-01 2.8083405600877811e+01 1.5856571411951402e+01 1.0421546054314188e+01 0 0 0 +1228 1 -7.2454729889141289e-01 1.1852767672858807e+01 2.3488213193315296e+01 1.1719209222607425e+01 0 0 0 +80 2 3.2829440486445405e-01 1.3397101627017882e+01 1.9252574526373138e+01 6.9684973749010570e+00 0 0 0 +1763 2 3.5492558261878643e-01 1.5831304590054888e+01 2.0671522283692784e+01 1.4260462216041889e+01 0 0 0 +1762 1 -7.4836374636434422e-01 1.5674285106779241e+01 2.1536284625293433e+01 1.4858417154632580e+01 0 0 0 +365 2 3.5847440711504786e-01 1.5936511086240854e+01 1.8619360678049826e+01 1.4222218270812556e+01 0 0 0 +364 1 -7.0291574883952124e-01 1.5402952506808310e+01 1.9153946361765730e+01 1.3562568591795484e+01 0 0 0 +483 2 3.0717727600877298e-01 1.5558502772744433e+01 2.3032799019011815e+01 1.3268370468094734e+01 0 -1 0 +2774 2 3.5465290195660870e-01 1.8661662836362428e+01 1.6595386784445584e+01 1.1730397209133352e+01 0 0 0 +1865 2 3.7846677915290078e-01 1.3991602498196146e+01 2.2008668217447539e+01 9.6822988125197078e+00 0 0 0 +1864 1 -7.5619108736371377e-01 1.3832629170277741e+01 2.1805191047844094e+01 1.0672757659842960e+01 0 0 0 +366 2 3.3662957893240802e-01 1.5892497289862192e+01 1.9052851851296623e+01 1.2798893411830880e+01 0 0 0 +2045 2 3.6843327272201931e-01 1.7383148487775625e+01 1.6242664951766255e+01 1.2430622317259399e+01 0 0 0 +1866 2 3.6888569615343975e-01 1.3449574509359403e+01 2.0853571389735475e+01 1.0770810432268060e+01 0 0 0 +1048 1 -7.7850812089130550e-01 6.2519657267750040e+00 1.6287851365657861e+01 4.4681118342316779e+00 0 0 0 +2773 1 -7.0289866530104472e-01 1.7720694473769644e+01 1.6392192292685635e+01 1.1554923167460693e+01 0 0 0 +1293 2 3.5874739847185821e-01 1.7573841405063501e+01 1.8998560915984307e+01 7.8418420310689143e+00 0 0 0 +1775 2 3.7930886030505406e-01 1.7628951233281235e+01 2.1651091800331972e+01 9.6374044199956437e+00 0 0 1 +1291 1 -7.1733704230154260e-01 1.6939076932549632e+01 1.8312466969617159e+01 8.2419840513479539e+00 0 0 0 +1292 2 3.8068886773413796e-01 1.7323067967853635e+01 1.7484472713562187e+01 7.8964692417287292e+00 0 0 0 +2627 2 3.2744916934268492e-01 1.5961330693165227e+01 2.0714668578823805e+01 1.0632985837133541e+01 0 0 0 +2626 1 -7.2597635668302984e-01 1.6852985064361519e+01 2.0338225510179768e+01 1.0533847084845975e+01 0 0 0 +482 2 3.7732523695064918e-01 1.4789997302559515e+01 2.2756784640945057e+01 1.1880158544694746e+01 0 -1 0 +2064 2 3.4982189958829368e-01 1.5398745546105964e+01 2.1573632558705661e+01 7.4042228792037763e+00 0 0 1 +2636 2 3.6801504006444241e-01 1.9287424658031981e+01 1.8884583749552444e+01 1.2304592146246019e+01 0 0 0 +2635 1 -7.1930182243662977e-01 1.8721799978166800e+01 1.9031954580377946e+01 1.3056327433617250e+01 0 0 0 +2834 2 3.3904231354261710e-01 1.8011825502857707e+01 1.9571668908372096e+01 1.2729719668732258e+01 0 0 0 +2062 1 -7.5233856886005890e-01 1.4720889017106710e+01 2.2083751114041338e+01 7.9319879318777540e+00 0 0 1 +2628 2 3.6013062061877316e-01 1.6793504274382368e+01 1.9667082287731365e+01 9.8196129202630988e+00 0 0 0 +246 2 3.8223723397471004e-01 1.9677629648349928e+01 2.2659560861524234e+01 1.3470837764260315e+01 0 -1 0 +318 2 3.6460510894379844e-01 1.9391691935460369e+01 2.2632410876852376e+01 7.8743501717128872e+00 0 -1 0 +1774 1 -7.3808776636459816e-01 1.8388365856387527e+01 2.2257583029510826e+01 9.4106770166346898e+00 0 0 1 +481 1 -7.3686566666960396e-01 1.5392754018076330e+01 2.3401506948523021e+01 1.2326685474492542e+01 0 -1 0 +2690 2 3.8077933113803375e-01 1.7118700699729459e+01 2.3755057829849676e+01 1.2108509925928093e+01 0 0 0 +2571 2 3.4705504739017007e-01 1.6659729929720985e+01 2.3120707191088925e+01 1.4711938719177578e+01 0 0 0 +2345 2 3.3408049698686781e-01 1.7951003949121066e+01 1.8490666724892229e+01 1.4971765217918959e+01 0 1 0 +1458 2 3.3546848630018994e-01 2.0688532644434744e+01 1.9796632568193832e+01 1.4429771487945500e+01 0 0 0 +274 1 -7.3567961464394083e-01 2.5123966332927758e+01 2.0330798567902363e+01 1.4445848293135958e+01 0 0 0 +2930 2 3.5568366779223870e-01 3.4285721790098439e-01 2.2938730406175065e+01 1.4631219344744295e+00 1 0 1 +1456 1 -6.9123898505827908e-01 2.1672533974329593e+01 1.9919714078324510e+01 1.4400695086354490e+01 0 0 0 +528 2 3.7194736345747315e-01 1.7530553520903077e+01 3.0545144868361422e+01 3.9729845031758839e+00 0 -1 0 +1244 2 3.7478692617993181e-01 2.0273458814267748e+01 1.7990155238290292e+01 1.1160300170329492e+01 0 0 0 +181 1 -7.4730568145306686e-01 2.9430578371317857e+01 2.6588779748915744e+01 1.1961461469247768e+01 -1 0 0 +1243 1 -7.3174734640122197e-01 2.0737337468379774e+01 1.7170816955908140e+01 1.1396599161137804e+01 0 0 0 +282 2 3.8360281622256703e-01 2.1021092367318527e+01 1.9731840779446717e+01 1.0351425630162543e+01 0 0 0 +1245 2 3.9155171097875230e-01 2.1419365418185183e+01 1.7423445127614535e+01 1.2048261554259843e+01 0 0 0 +280 1 -7.6743092679418234e-01 2.0178810112504355e+01 1.9743231124767004e+01 1.0680718568691095e+01 0 0 0 +281 2 3.5842289632887275e-01 1.9688873997523658e+01 2.0308117129783962e+01 1.0090800136651925e+01 0 0 0 +2957 2 3.4592950163766484e-01 2.3289160873739561e+01 2.2883794480643740e+01 9.3265178419923145e-01 0 0 1 +2655 2 3.7064092809625354e-01 2.2037209951736987e+01 1.6169541421012749e+01 1.0582799613228202e+01 0 0 1 +1276 1 -7.5469087222565279e-01 2.3008391762653400e+01 1.7326918310159513e+01 1.2818953611288835e+01 0 0 0 +1278 2 3.3681277895958806e-01 2.2801442616324763e+01 1.7137023953533227e+01 1.3770873088966352e+01 0 0 0 +1277 2 3.6340304975251581e-01 2.3505779351600385e+01 1.8086758659667957e+01 1.2957714615811325e+01 0 0 0 +1289 2 3.6533091991039757e-01 2.2848764884322208e+01 1.9894275044266344e+01 1.2794661809258885e+01 0 0 0 +1288 1 -7.1011042439796679e-01 2.3688861487805319e+01 2.0061435833718654e+01 1.2304173525710651e+01 0 0 0 +1290 2 3.8098515036334835e-01 2.4092879824807778e+01 2.0702079761935977e+01 1.2991360251216689e+01 0 0 0 +764 2 3.7022355281977826e-01 2.6872310051988801e+01 1.6115154023736682e+01 2.1725137676795652e+00 -1 0 0 +512 2 3.8412380436018584e-01 2.4267644800078443e+01 1.5986899549558521e+01 1.2225108267747364e+01 0 0 0 +1914 2 3.8847786056277950e-01 1.0897688610698163e+01 1.5810805535212650e+01 1.2033235321975353e+01 0 0 0 +244 1 -6.9521786709554856e-01 1.9544052489598037e+01 2.2348710749988040e+01 1.4370548852622965e+01 0 -1 0 +2742 2 3.6084303049161259e-01 2.0251362377557456e+01 2.1852148622208741e+01 1.1439894558044323e+01 0 0 1 +2633 2 3.9933252227664767e-01 2.3440361873456663e+01 1.6723943395913373e+01 9.3598720620014166e+00 0 0 0 +2632 1 -7.3915576872259658e-01 2.4038034342201431e+01 1.7447894673381377e+01 9.0492303629412252e+00 0 0 0 +1179 2 3.9660368888882308e-01 2.1852866160514409e+01 1.9522164809799822e+01 7.7530687749261791e+00 0 0 0 +2781 2 4.1030647399571779e-01 2.2890591164047450e+01 1.8612554158838794e+01 8.5930560897962547e+00 0 0 1 +2779 1 -7.2727859115035309e-01 2.2073751557777175e+01 1.9198543875935329e+01 8.6298631073995491e+00 0 0 1 +1434 2 3.9851599447773650e-01 2.3506887394850455e+01 2.1020272739838518e+01 1.0948284240640614e+01 0 0 0 +2741 2 3.3678527741236330e-01 2.0181249639319986e+01 2.3318724259645538e+01 1.1561525817332308e+01 0 0 1 +2740 1 -7.4866476455259201e-01 2.0600744267511196e+01 2.2554120619800575e+01 1.1914395065903795e+01 0 0 1 +1433 2 3.8322665744508810e-01 2.2869176642482675e+01 2.0539493450712051e+01 9.5226028653044441e+00 0 0 0 +1432 1 -6.6847296558310765e-01 2.3298033615914775e+01 2.1312867632419710e+01 9.9907725484808871e+00 0 0 0 +1205 2 3.8377984232055873e-01 2.3499690111339021e+01 2.3320835146967340e+01 1.0111167479857757e+01 0 0 0 +1137 2 3.6770268558152153e-01 1.8353088651016321e+01 2.2953721785978278e+01 1.0058670775751686e+01 0 0 0 +1453 1 -7.5145082130426499e-01 2.6789096505217518e+01 2.2430587692014818e+01 1.5442910304471745e+01 0 0 0 +2637 2 3.9311219977788153e-01 2.4741204898595598e+01 1.9647113231003271e+01 1.5113791566614278e+01 0 0 0 +1468 1 -7.2068342123639539e-01 2.8966434349854417e+01 1.9154201968148524e+01 1.4979358376186727e+01 0 0 0 +861 2 4.0651075317900559e-01 2.5806411494840208e-02 2.1270450064237135e+01 1.2783883048745254e+01 0 0 0 +608 2 3.6675238729668996e-01 2.7850178787626216e+01 1.9136371441949084e+01 1.3803217393134240e+01 0 0 0 +630 2 3.6309080307885683e-01 2.9028125951237563e+01 1.6058989394956633e+01 1.0415260748932875e+01 0 0 0 +1660 1 -7.5442722379400595e-01 4.0135881704838167e-01 1.9431027012911230e+01 9.7173969865152667e+00 0 0 1 +1662 2 3.5618623031647290e-01 3.0574287542183043e+01 1.9722017819454177e+01 9.4855283779133952e+00 -1 0 1 +859 1 -7.5023654268626561e-01 3.0254978323648722e+01 2.1079628652697938e+01 1.3298100381778786e+01 -1 0 0 +275 2 3.8390079721216863e-01 2.5787637441177402e+01 1.9840094727727273e+01 1.3938347969523656e+01 0 0 0 +786 2 3.6027909744608505e-01 2.8148054126738025e+01 1.8753102315176864e+01 8.6193906780994549e+00 -1 0 0 +784 1 -7.2302511553283211e-01 2.8903658671929485e+01 1.9389477793691043e+01 8.2089807192514126e+00 -1 0 0 +195 2 3.8191353315325044e-01 8.7113363255162319e+00 3.0846212294261775e+01 1.2596785873973463e+01 0 -1 0 +953 2 3.6027044517098017e-01 1.5817598124148383e+01 1.5714005722017710e+01 5.6174108869596939e-01 0 0 0 +1189 1 -7.1544367291068811e-01 2.6921682084028351e+01 1.7789488102408793e+01 8.9711005428389168e+00 0 0 0 +1733 2 3.6895704063676416e-01 9.1963439014940320e+00 1.5831193077288665e+01 2.3916686679337407e-01 0 0 1 +2847 2 3.9835923189317363e-01 2.7640457545297767e+01 2.0910592306274317e+01 8.6418918519677383e+00 0 0 1 +547 1 -7.2312140353185683e-01 2.7105741343730866e+01 1.9177755757790784e+01 1.3031043664579730e+01 0 0 0 +548 2 3.9742500055695790e-01 2.7304498342915164e+01 2.0033877462850207e+01 1.2530677573972113e+01 0 0 0 +1191 2 3.4840538967143153e-01 2.7451330835753257e+01 1.6933755771103396e+01 9.3414820357359876e+00 0 0 0 +708 2 3.6488594194418511e-01 2.7070039735781386e+01 1.7310121484343870e+01 1.3122638800061480e+01 0 0 0 +2719 1 -7.2966322172293274e-01 2.7107813178606079e+01 1.6311703555282133e+01 1.3207549150690276e+01 0 1 0 +449 2 3.5261750338568154e-01 2.5724691297489919e+01 1.5563016208233936e+01 1.2037111339031529e+01 0 0 0 +2845 1 -6.8769288041857168e-01 2.7025491040190250e+01 2.1592881727130667e+01 8.4990628473396512e+00 0 0 1 +2846 2 3.8038735579488880e-01 2.6433602461348386e+01 2.1354419784401358e+01 7.7688668323159575e+00 0 0 1 +1743 2 3.7765073139456967e-01 7.2356872641078835e+00 1.6060498379255343e+01 1.5391384239203663e+01 0 0 0 +535 1 -6.9351140030448077e-01 3.0284127290741271e+01 1.6230269670986370e+01 1.3573916799934615e+01 0 0 0 +536 2 3.7314818964639873e-01 2.9901479008657134e+01 1.6352230165212294e+01 1.4441972570683136e+01 0 0 0 +660 2 3.7179064244987614e-01 2.8865788050204245e+01 2.1362944491574712e+01 1.2154042996054416e+01 0 0 0 +659 2 4.0432105193771761e-01 2.7791523949705152e+01 2.2456870164268040e+01 1.1704153621669375e+01 0 0 0 +658 1 -6.9223023092681224e-01 2.8012348343654654e+01 2.1448870618608790e+01 1.1715364926751253e+01 0 0 0 +2721 2 3.6108356320386598e-01 2.6732987384118097e+01 1.6118864937044048e+01 1.4054984522232740e+01 0 1 0 +2406 2 3.5759213084386299e-01 6.9917753744641971e+00 2.6618904346310060e+01 9.1981759563612431e-01 0 0 1 +2634 2 3.7251254928066418e-01 2.4933829306015355e+01 1.7281373873388898e+01 9.4288325992868725e+00 0 0 0 +852 2 3.6451835468165611e-01 2.7934010582606248e+01 2.3453446618877454e+01 9.1836728485920904e+00 -1 0 0 +851 2 3.6612875001996253e-01 2.9385911656431233e+01 2.3579932011057522e+01 8.9765043757203298e+00 -1 0 0 +850 1 -6.8714835947063957e-01 2.8609390307377367e+01 2.4166971249212075e+01 9.0063218834278285e+00 -1 0 0 +1465 1 -7.0697422021671075e-01 2.6814958960255879e+01 2.3821799842204708e+01 1.1510981608322417e+01 0 0 0 +1470 2 3.9396544034778719e-01 2.9607576814578849e+01 1.9739531833934805e+01 1.4554791256008762e+01 0 0 0 +860 2 3.9738405253143166e-01 3.0049415937613894e+01 2.1845685412330898e+01 1.3854917881241008e+01 -1 0 0 +1970 2 3.6631544657957621e-01 4.4801048982882392e+00 3.0384862741634578e+01 1.2457271286002571e+01 1 0 0 +679 1 -7.3884430294729031e-01 1.3884601581128519e+00 2.7307601184088483e+01 8.0433511615065196e+00 1 -1 0 +2138 2 3.6574522442457519e-01 6.9649678246169577e-01 2.4684228485841167e+01 1.3184934328737844e+01 1 0 0 +2137 1 -7.0704388954002095e-01 9.3231783484885575e-02 2.4368009481772123e+01 1.2452573721020419e+01 1 0 0 +741 2 3.7434885247858879e-01 2.7727092391315016e+00 2.6691716599280845e+01 8.7988528462250741e+00 1 0 0 +1445 2 3.8548131930074031e-01 2.2005697343618769e+00 2.4900957451708251e+01 1.0087717825901684e+01 1 0 0 +739 1 -7.5354058077878527e-01 3.3607101838340738e+00 2.6226518828141142e+01 9.4456856881618663e+00 1 0 0 +1689 2 3.5366450763106971e-01 4.6756331867403400e+00 2.7096660767504279e+01 8.6034060848582605e+00 0 0 1 +2664 2 3.6248914724789583e-01 3.6253351295021203e+00 2.3415664233892677e+01 1.4668228614684358e+01 0 0 0 +740 2 3.7813238114201547e-01 3.2460095888464986e+00 2.6699903299190165e+01 1.0368050223914613e+01 1 0 0 +1586 2 3.7914039895457374e-01 2.5740308199525472e+01 1.6185108114413278e+01 3.9510960135165032e+00 -1 0 1 +681 2 3.6443997307201897e-01 1.0555671798228803e+00 2.8004445704230264e+01 8.7094294737145947e+00 1 -1 0 +1360 1 -6.7480008408751069e-01 1.4882493780982777e+00 2.4269534685597151e+01 1.0097032697747219e+01 1 0 0 +2491 1 -7.4313586911541984e-01 3.7274056157859561e+00 2.7308610645775840e+01 1.1901978495234834e+01 0 0 0 +1010 2 3.5848162394431332e-01 4.3408557086198805e+00 2.8087849175057361e+01 1.1869491949944251e+01 0 0 0 +1969 1 -7.1861000860944768e-01 3.7762539101629833e+00 3.0949819758938002e+01 1.2762526107510293e+01 1 0 0 +1361 2 3.7604403072138470e-01 9.6890215047289319e-01 2.4434767575930834e+01 1.0987557222386553e+01 1 0 0 +2663 2 3.7514753484908803e-01 2.5655514490488831e+00 2.4484266788593096e+01 1.4091030504039944e+01 0 0 0 +2281 1 -7.2337854692324965e-01 8.3296510298333487e-02 2.9523357072742080e+01 9.0212914448415393e+00 0 0 0 +111 2 3.4865849155406547e-01 2.5712482674108879e+00 2.6740270841671524e+01 1.3652703216261845e+01 0 -1 0 +337 1 -7.3277063770123152e-01 5.2120488092907511e+00 2.3985492898151392e+01 1.0959719444651245e+01 0 -1 0 +338 2 3.4553558971079390e-01 6.2101215163811032e+00 2.4246202947588152e+01 1.0943827835801443e+01 0 -1 0 +339 2 3.3212807815336182e-01 4.9598037038503726e+00 2.4396189596964280e+01 1.1791023608398064e+01 0 -1 0 +2283 2 4.1823708180317992e-01 4.5748216314865070e-01 2.9633425011777803e+01 9.9150992687357231e+00 0 0 0 +2662 1 -7.4003655433427440e-01 2.6664637143622563e+00 2.3560630291725882e+01 1.4418375427170361e+01 0 0 0 +109 1 -7.5977382313663044e-01 1.9055882972700284e+00 2.6096448762336642e+01 1.4006135911992970e+01 0 -1 0 +110 2 3.5479215686412657e-01 1.3927653851935911e+00 2.6513347488364442e+01 1.4765745062724859e+01 0 -1 0 +2475 2 3.5741072622930053e-01 5.6307128342522352e+00 2.2855817075340919e+01 1.5361045007921270e+01 0 0 0 +2492 2 3.4668336412011003e-01 4.2340425669308424e+00 2.6694833106235713e+01 1.2413656554824133e+01 0 0 0 +2487 2 3.6683106593829695e-01 5.5441176634189455e+00 2.4617578699145994e+01 1.3662232150179799e+01 0 0 0 +2485 1 -7.3305340844882494e-01 5.7369451291585660e+00 2.5553291098444294e+01 1.3448761055350099e+01 0 0 0 +912 2 3.7863694181231811e-01 2.7893370743276495e+01 3.0413138803232307e+01 8.0702270047507252e+00 -1 0 0 +92 2 3.8132548215501233e-01 2.1190540495800669e+00 3.0302769407529631e+01 1.1789497509934840e+01 0 0 0 +91 1 -6.9177040178921889e-01 1.2569725004997006e+00 3.0103235284568061e+01 1.1455679813964528e+01 0 0 0 +575 2 3.3863973483648530e-01 2.0446333414633720e+01 2.6761208615750910e+01 4.0302338863605713e-01 0 -1 0 +1688 2 3.8521082307435872e-01 5.6336866786490143e+00 2.7608018581349981e+01 7.4137911714745517e+00 0 0 1 +2831 2 4.0120236849744478e-01 1.1541474163486269e+01 2.9359371686660065e+01 1.1752173950452967e+01 0 0 0 +2152 1 -7.2840395014258164e-01 1.0771233970095382e+01 2.2869455708534712e+01 8.4131440408646938e+00 1 0 1 +2153 2 3.4814834762962904e-01 1.0147816463516468e+01 2.3775620741313222e+01 8.3219357419077973e+00 1 0 1 +2037 2 3.8362085249896749e-01 1.9899847643284769e+01 2.5336370734770949e+01 1.4911183385682811e+01 0 0 1 +894 2 3.4374717299163865e-01 2.1779549416947212e+01 3.0425566677244884e+01 5.2775980603456469e+00 -1 0 0 +188 2 3.8115975079692371e-01 3.0992125779233263e+01 2.1477571266727409e+01 1.1216504440015862e+00 -1 0 1 +1687 1 -7.1719615304991724e-01 5.5991592764731992e+00 2.7338239278206903e+01 8.3617872748748301e+00 0 0 1 +1795 1 -7.6870820021542008e-01 5.9494360062101341e+00 2.8972972617046459e+01 1.2403016717369882e+01 0 -1 0 +1878 2 3.7636298385944633e-01 6.4934736890311697e+00 2.8466200272256263e+01 1.1743586516661779e+01 0 -1 0 +1242 2 3.4819153269248820e-01 1.1458703621783737e+01 2.6217662116156244e+01 7.0050228561939214e+00 0 0 0 +172 1 -7.1874989402726008e-01 9.8018782620938776e+00 2.5205555533011093e+01 7.6901266485896800e+00 0 0 0 +174 2 3.4596646801330511e-01 8.8205436118645792e+00 2.5004152451287883e+01 7.4015636926675379e+00 0 0 0 +173 2 3.0562091312378320e-01 9.5135997837157511e+00 2.5731573796909860e+01 8.5283624559504201e+00 0 0 0 +2289 2 3.4569195403219072e-01 8.3959156523212233e+00 2.4458657913821110e+01 1.2248577581774047e+01 0 0 0 +1874 2 3.4453520128448678e-01 1.1217599696795792e+01 2.5665299626114340e+01 1.4875566851880778e+01 0 0 0 +1875 2 3.0763144174779811e-01 1.1633158219400611e+01 2.6723684815386864e+01 1.3980132317917876e+01 0 0 0 +1873 1 -7.7644829978827168e-01 1.0870391602787791e+01 2.6164980504216064e+01 1.4163444117104003e+01 0 0 0 +2944 1 -7.8030950606872118e-01 2.5094625183601316e+01 2.4729624226333470e+01 1.4848347488443634e+01 0 0 0 +2287 1 -7.5971256236996898e-01 8.1613287892445463e+00 2.4424577554753924e+01 1.1296842670315336e+01 0 0 0 +1796 2 3.5652387618113229e-01 6.1658294090837220e+00 2.8629799499281052e+01 1.3291114191694442e+01 0 -1 0 +171 2 3.5455462731887888e-01 8.7845489577640645e+00 2.5037455967793871e+01 1.0824436580267422e+01 0 0 0 +2830 1 -7.4329954283332977e-01 1.1656641946018244e+01 2.8912746684218583e+01 1.0890491019252101e+01 0 0 0 +1274 2 3.3728908911554367e-01 1.0254271118106468e+01 2.6247367068049233e+01 1.1641460915073457e+01 0 0 0 +2457 2 3.1916350196148274e-01 7.4395176851492133e+00 2.6616304689440746e+01 1.0786739217533420e+01 0 0 0 +1017 2 3.4525292214042869e-01 9.9089982397385334e+00 2.7756063275864712e+01 1.4549603740398132e+01 0 0 0 +2455 1 -7.2212191390713598e-01 7.1761790177787246e+00 2.7529759230761492e+01 1.0450754065767292e+01 0 0 0 +2456 2 4.0167138987704837e-01 6.3966272305360334e+00 2.7358149110698143e+01 9.8423136660914370e+00 0 0 0 +1129 1 -7.4402689481222684e-01 9.8679871040149294e+00 2.6428557603968883e+01 1.0818379404068505e+01 0 0 0 +1130 2 3.4906253787067065e-01 1.0308848949186933e+01 2.7296657017511102e+01 1.0631858315759979e+01 0 0 0 +1108 1 -7.3509866285050496e-01 6.7819386709148510e+00 2.8350745869579519e+01 1.5157542166913336e+01 0 0 0 +2486 2 3.7124170033753284e-01 6.7668685306300000e+00 2.5639416955711489e+01 1.3452178874451207e+01 0 0 0 +1309 1 -7.7410997084759603e-01 1.1738301814259012e+01 3.0966864452431789e+01 6.6548083195092929e+00 0 0 0 +1080 2 3.5058274539291207e-01 1.0337418717062187e+01 2.9558191710750361e+01 1.3402523135697662e+01 0 0 0 +1275 2 3.6837993201431540e-01 9.0598754230804577e+00 2.5439639281251701e+01 1.4159497195899700e+01 0 0 0 +1273 1 -7.5103018929361298e-01 8.2221070722734506e+00 2.4989921683706754e+01 1.4234853006812012e+01 0 0 0 +545 2 3.7983422390290761e-01 8.3190199387179860e+00 2.4323247452721915e+01 1.4988061584299976e+01 0 0 0 +1015 1 -7.2625316751530800e-01 9.5679904653137164e+00 2.8632579762848515e+01 1.4747348448165372e+01 0 0 0 +1016 2 3.8358706448607893e-01 8.5947944756125754e+00 2.8552143838314887e+01 1.4740479930045707e+01 0 0 0 +2832 2 3.6833849269024443e-01 1.2588437322679425e+01 2.9053786834328644e+01 1.0683054358137804e+01 0 0 0 +227 2 3.8069043050140500e-01 6.7542390031189177e+00 3.0773260057919693e+01 9.1966885347387062e-01 0 -1 0 +2915 2 3.8551792146819380e-01 2.9656999864425053e+01 2.3973228441648722e+01 1.4866838077747847e+01 0 0 0 +2639 2 3.5382776357617346e-01 1.6007331995540330e+01 2.5236837403739859e+01 7.9389906345421988e+00 0 0 0 +1193 2 3.8051987740779625e-01 1.8522913699255128e+01 2.9847006931604518e+01 8.6640675735241128e+00 0 0 0 +1732 1 -7.4532839113724625e-01 8.2798027313755096e+00 1.5589978915163060e+01 6.0614107305412301e-01 0 0 1 +1538 2 3.2744579304075944e-01 2.8846945819764723e+01 2.8684559785946476e+01 1.4562564651170861e+01 -1 -1 0 +1073 2 3.5008751492266438e-01 1.3516348774983586e+01 2.7235119518117589e+01 1.5243551143419339e+01 0 0 0 +1227 2 3.8695006736496318e-01 1.6865139872453611e+01 2.5470963849060176e+01 1.4541920940672078e+01 0 0 0 +1226 2 3.7873760396994960e-01 1.5874096929113774e+01 2.6770712919022515e+01 1.4331108043844960e+01 0 0 0 +2063 2 3.8209526769738550e-01 1.4922461290486877e+01 2.3021166676742244e+01 7.9279146966643985e+00 0 0 1 +1172 2 3.5355614092858006e-01 1.2267462673473288e+01 2.4221920277934284e+01 1.2202751818008295e+01 0 0 0 +1317 2 3.6427128582856894e-01 1.7258174439809238e+01 2.8197828259110025e+01 1.4529929347731880e+01 0 0 0 +1315 1 -7.0673690633660369e-01 1.7467177185380216e+01 2.8996844434408963e+01 1.5032248418901911e+01 0 0 0 +1225 1 -7.3521269320585547e-01 1.6760428185466743e+01 2.6343852476671227e+01 1.4119017882511317e+01 0 0 0 +2307 2 4.1092433174476961e-01 1.3686499160217535e+01 2.6190888129513567e+01 1.0509522490312445e+01 0 0 0 +2305 1 -7.3363234297698821e-01 1.3801725526248331e+01 2.6425268615620343e+01 9.5587547222638403e+00 0 0 0 +1043 2 3.7488238002414792e-01 1.4224794825377835e+01 2.4795576440808638e+01 1.2407501077041029e+01 0 0 0 +1072 1 -7.5077515467102973e-01 1.4100174963763427e+01 2.7158099946067772e+01 1.4422332292510733e+01 0 0 0 +2354 2 3.7955646818807254e-01 1.4403336353317394e+01 2.5707977956498741e+01 9.0801816765774657e+00 0 0 0 +1042 1 -7.5574451851450375e-01 1.3722560202291875e+01 2.5625203017520530e+01 1.2160140075432530e+01 0 0 0 +2689 1 -7.5596613291204851e-01 1.8049130070871175e+01 2.4077677492745515e+01 1.1843914553786719e+01 0 0 0 +1044 2 3.8444265938506628e-01 1.3719370747684914e+01 2.6258494731729748e+01 1.2866591766800873e+01 0 0 0 +2638 1 -7.3946183648271491e-01 1.5838469627839384e+01 2.4793575644859470e+01 8.7445951541069427e+00 0 0 0 +2640 2 3.8000076377866066e-01 1.6482863244304806e+01 2.5165264274375453e+01 9.3536532814575395e+00 0 0 0 +402 2 3.5434434072595594e-01 1.6485829848811974e+01 2.9322011186864653e+01 1.1874800116819284e+01 0 -1 0 +2691 2 3.4324381271677640e-01 1.8497596222731573e+01 2.4288384210517094e+01 1.2685712673771203e+01 0 0 0 +456 2 4.0156213536723340e-01 1.4079078091068254e+01 2.9208691867340892e+01 8.7948409004611250e+00 0 0 0 +454 1 -7.4724607350644467e-01 1.4269704606927844e+01 2.9049367119220246e+01 9.7639277367604222e+00 0 0 0 +1157 2 3.9693621783976146e-01 1.4549899230700456e+01 3.0410698280629511e+01 1.2407421056395414e+01 0 0 0 +455 2 3.8938432504030729e-01 1.4306317791770821e+01 2.8082202413390142e+01 9.8257789927633485e+00 0 0 0 +1074 2 3.3688842220012999e-01 1.4007528479879568e+01 2.8062766023229749e+01 1.4005996237181597e+01 0 0 0 +1158 2 3.6991769068996366e-01 1.4328583456193895e+01 2.9097732895946045e+01 1.1522628580131078e+01 0 0 0 +1156 1 -7.3693579554483479e-01 1.4375724792677884e+01 2.9473555471827485e+01 1.2424077907767250e+01 0 0 0 +494 2 3.8074666430643545e-01 1.7744184738142668e+01 2.5702243032888457e+01 1.1254239154423740e+01 0 -1 0 +495 2 4.0180544917710997e-01 1.7684296342007571e+01 2.7320131652222550e+01 1.1035037616890445e+01 0 -1 0 +493 1 -7.2753012853380328e-01 1.7560127483372341e+01 2.6468309166629076e+01 1.0624576470576089e+01 0 -1 0 +400 1 -7.4414814174795618e-01 1.7364456511259320e+01 2.9156083069696830e+01 1.1409583424397898e+01 0 -1 0 +2526 2 3.8682226415933840e-01 1.7407891697735227e+01 2.9800800492857434e+01 1.0697719107152466e+01 0 0 1 +1192 1 -7.5146970683876402e-01 1.7676230764997566e+01 3.0276716962852685e+01 8.8718959354934217e+00 0 0 0 +1741 1 -7.3205757942065153e-01 6.5646294206871234e+00 1.6602793438545699e+01 1.4935295448350956e+01 0 0 0 +1019 2 3.7533566628932991e-01 1.5494448101255530e+01 1.7967393218913010e+01 9.6419364205948610e-01 0 1 0 +1457 2 3.3608578371234021e-01 2.1802152775354795e+01 1.9974146943511290e+01 1.5349502717791385e+01 0 0 0 +429 2 3.7369022834846510e-01 2.3737537351792326e+01 2.9042833884525809e+01 9.9993294061308617e+00 0 -1 0 +245 2 3.2729285075045900e-01 1.9299541545737657e+01 2.3204914995461841e+01 1.4823889772453104e+01 0 -1 0 +2945 2 3.8493052695990354e-01 2.4558820099153891e+01 2.4237362512852961e+01 1.4248491875091533e+01 0 0 0 +1110 2 3.2284115324006901e-01 5.9629587183467230e+00 2.7879547095184176e+01 1.5289372348273277e+01 0 0 0 +1946 2 3.4319387916119626e-01 2.6385533926690393e+01 2.6915266267265956e+01 1.2790122706965821e+01 0 0 0 +2035 1 -7.4850951670186616e-01 1.9522439391815791e+01 2.5501955878457565e+01 1.4044260114417856e+01 0 0 1 +2 2 3.7182616676479113e-01 2.2099257703414636e+01 2.4866968193163192e+01 6.7331328722075625e+00 -1 -1 0 +1486 1 -7.4570053510063972e-01 2.9970113727581392e+01 3.0166641069568584e+01 1.4964882298871128e+01 0 0 0 +2084 2 3.6571927225739886e-01 1.8926476090992040e+01 2.5747936370918769e+01 9.4622934725375138e+00 0 -1 0 +1885 1 -7.5905026705536827e-01 1.9492371208209629e+01 2.5436962842319616e+01 8.7592194762612987e+00 0 -1 0 +1886 2 3.9134367693637823e-01 1.9417671525079349e+01 2.6040516596834813e+01 8.0482391152251491e+00 0 -1 0 +2264 2 3.6876059672045897e-01 2.0127903249874674e+01 2.9294240185926455e+01 1.0162597224450533e+01 -1 0 0 +1359 2 3.5682764756711299e-01 2.0003498669298974e+01 2.8159304742168526e+01 7.4747609713330609e+00 0 0 0 +1014 2 3.4719095364891989e-01 2.2834738116041521e+01 2.7860297648398340e+01 7.6587750779259025e+00 0 0 0 +2736 2 3.4769891114122353e-01 1.3599245093020784e+01 1.6479025823656730e+01 1.0280685422969542e+01 0 0 0 +2263 1 -7.4090646041065489e-01 2.0305524809265258e+01 2.9319573919632511e+01 9.0448243895213505e+00 -1 0 0 +1012 1 -7.6915917651958687e-01 2.2686210632562460e+01 2.8150152827682845e+01 8.5602338989257909e+00 0 0 0 +2265 2 3.6087503388705217e-01 2.1257154507068531e+01 2.9033514336035918e+01 8.9465941849200608e+00 -1 0 0 +1013 2 3.6505715459970411e-01 2.2306724491447220e+01 2.7355122049564567e+01 9.0130000203875085e+00 0 0 0 +2954 2 3.7582232234417695e-01 2.1564640697541989e+01 2.6395567250149814e+01 1.0872246030938877e+01 0 0 1 +2755 1 -7.6148392492405548e-01 2.1799280755174109e+01 2.5846175036755039e+01 1.0063024342258730e+01 0 0 1 +1184 2 3.7014196369676028e-01 2.0509120429392205e+01 2.8869233821073585e+01 1.2145827657275872e+01 0 0 0 +2757 2 3.8709186019132275e-01 2.0979702888375712e+01 2.5586546353317935e+01 9.5932138541673204e+00 0 0 1 +1185 2 3.7230877560740350e-01 1.9055063706262271e+01 2.9462956218345347e+01 1.1831934015659300e+01 0 0 0 +2076 2 3.7915662099277253e-01 2.0567140417363138e+01 2.6485831293818670e+01 1.2865693203352905e+01 0 -1 0 +1183 1 -7.3721753404518597e-01 2.0050729408969488e+01 2.9641306532156555e+01 1.1671696178352919e+01 0 0 0 +2074 1 -7.7414661817605712e-01 2.1190928563446558e+01 2.7145357222097807e+01 1.2441861780772955e+01 0 -1 0 +2075 2 4.0285127557932976e-01 2.1963979517384846e+01 2.7248635801780097e+01 1.2960945200595175e+01 0 -1 0 +2882 2 3.4567728753195492e-01 2.3689262756956474e+01 2.6221608865749200e+01 1.3897438508303820e+01 0 0 0 +683 2 3.8850947898225768e-01 2.2287043656262462e+01 2.2710659639236084e+01 1.3159838603159599e+01 0 -1 0 +684 2 3.9098808257530643e-01 2.3339634958910594e+01 2.3402399945945756e+01 1.2344122318292756e+01 0 -1 0 +682 1 -6.9746337220353483e-01 2.3125296302024395e+01 2.3166784061331143e+01 1.3275389404967701e+01 0 -1 0 +2883 2 3.3405337731821316e-01 2.4594507691402203e+01 2.7413326810741978e+01 1.3573785439163032e+01 0 0 0 +2881 1 -7.4833507498208907e-01 2.3678702829374647e+01 2.7157308162026748e+01 1.3777877093008364e+01 0 0 0 +1206 2 4.0841236155139748e-01 2.3127446955732903e+01 2.4816037541215099e+01 1.0488707043851456e+01 0 0 0 +1204 1 -7.3831533211398614e-01 2.3666061908616861e+01 2.4028985318967081e+01 1.0766836745112006e+01 0 0 0 +572 2 3.5723901917161704e-01 2.5448062543971378e+01 2.4378839592437217e+01 8.4478213725293188e+00 0 -1 0 +427 1 -7.2658915359131349e-01 2.4338046472811751e+01 2.9165416708310708e+01 1.0751912586528359e+01 0 -1 0 +911 2 3.2269895416079913e-01 2.8199373540185583e+01 2.9038503386115810e+01 8.8708669066955714e+00 -1 0 0 +428 2 3.4990884231565705e-01 2.4398068524033910e+01 3.0172422508081215e+01 1.0810772009746300e+01 0 -1 0 +2331 2 3.5079342493493992e-01 5.2064627058065236e+00 2.7708451934664833e+01 9.4589076273547601e-01 0 0 1 +289 1 -6.8890047440900226e-01 2.5614823927510720e+01 2.7405470988437354e+01 9.0938119240594943e+00 -1 -1 0 +2143 1 -7.5804542689975407e-01 7.8745710373642239e-02 2.8267785805496505e+01 1.3067751100228358e+01 1 0 0 +2139 2 3.7928201005903961e-01 3.0523943861771443e+01 2.5123347238073457e+01 1.2286052823693883e+01 0 0 0 +2337 2 3.5914943750021483e-01 2.7982980760739459e+01 3.0361659529949762e+01 1.0725883676226925e+01 -1 0 1 +1467 2 3.5954451884135707e-01 2.5873940482334660e+01 2.3683995088923901e+01 1.1185822601501235e+01 0 0 0 +1455 2 3.7693870283650671e-01 2.6146068105875198e+01 2.1789399816838561e+01 1.5035604289235520e+01 0 0 0 +183 2 3.4828795567031207e-01 2.8557800567354928e+01 2.6376138691493416e+01 1.2266070203373703e+01 -1 0 0 +677 2 3.6396272860491191e-01 2.5712859436769588e+01 2.9030195725155021e+01 1.2128497063177194e+01 0 -1 0 +1106 2 3.9913351683679482e-01 1.8174279945828175e+01 3.0684727674107993e+01 1.4512233723842488e+01 0 0 0 +1304 2 3.6107063623748398e-01 2.8625501449869109e+01 2.7181843318364749e+01 1.0310947948550398e+01 0 0 0 +1912 1 -7.4104414153033016e-01 1.1698069005670529e+01 1.5744419460621131e+01 1.2544597663609681e+01 0 0 0 +678 2 3.3044914957682942e-01 2.6419359007871105e+01 2.9680792073147057e+01 1.3215613763102581e+01 0 -1 0 +910 1 -7.4281924048833048e-01 2.8437280336074551e+01 2.9976056974506591e+01 8.8325068950829451e+00 -1 0 0 +676 1 -7.6505901219117389e-01 2.6301827644936228e+01 2.8799583958072560e+01 1.2882579797955763e+01 0 -1 0 +1303 1 -7.8727795606889606e-01 2.8309919864935516e+01 2.7010363946789624e+01 9.4216674720800295e+00 0 0 0 +290 2 3.7043836185306966e-01 2.6565017029408050e+01 2.7390411449107006e+01 9.1249793246568327e+00 -1 -1 0 +2171 2 3.4326834663890887e-01 2.7562919121937277e+01 2.7975513531725674e+01 1.4186873036472745e+01 0 -1 0 +2145 2 3.5341020361431097e-01 5.8511868267090583e-01 2.7692818681943656e+01 1.3752232476885101e+01 1 0 0 +1945 1 -7.6402729752946219e-01 2.6695077837973667e+01 2.6000376719885502e+01 1.2969061133326520e+01 0 0 0 +93 2 3.7976280265708601e-01 9.0348566445855460e-01 2.9409424590030735e+01 1.2152921026129114e+01 0 0 0 +1947 2 3.5703833910423982e-01 2.6106173714029055e+01 2.5634024907519958e+01 1.3699848668347313e+01 0 0 0 +2282 2 3.8799513008704178e-01 3.0099826630609414e+01 2.9613146404803253e+01 8.9160193148825062e+00 -1 0 0 +291 2 3.5750723329860512e-01 2.5331940887455815e+01 2.8152410132656726e+01 9.7326543340109648e+00 -1 -1 0 +2144 2 3.3552473139954792e-01 3.0642422856655269e+01 2.8868905179467856e+01 1.3638219124658908e+01 0 0 0 +1305 2 3.9480578818462042e-01 2.8376297744365395e+01 2.6030779364580070e+01 9.3636649868968576e+00 0 0 0 +1466 2 3.9246402888933674e-01 2.6904922929046229e+01 2.4783907287116225e+01 1.1771241445637314e+01 0 0 0 +2734 1 -7.2382854903492777e-01 1.3707108314973883e+01 1.6770863409777963e+01 1.1231203325519900e+01 0 0 0 +1238 2 3.4481247578860302e-01 2.9313808677053302e+01 2.6259789677049987e+01 1.5302785766078491e+01 0 0 0 +2569 1 -7.3177289447898375e-01 1.7137009565743430e+01 2.3885095763143838e+01 1.5187813887405355e+01 0 0 0 +1488 2 3.5692691954684008e-01 2.9509775826894746e+01 3.0717097422710697e+01 1.4205998097752483e+01 0 0 0 +1967 2 3.5178852207702033e-01 5.1822116287820572e+00 1.6081427724137171e+01 7.8795791913758668e+00 0 0 1 +178 1 -6.7984691073543635e-01 9.1232380330040979e+00 1.5777570487371852e+01 1.1278161510519119e+01 0 0 0 +2216 2 3.4190717057196779e-01 2.4732804026675620e+01 3.0787678630554399e+01 6.5088003105526468e-02 0 -1 1 +107 2 3.4971144609339067e-01 3.5813792575530221e+00 2.5772053968346633e+01 2.5939715693812210e-01 0 -1 0 +1596 2 3.8907654241846407e-01 1.3932695527699384e+01 2.1276800284547537e+01 1.5421449348608080e+01 0 0 0 +2812 1 -7.0935516142550625e-01 1.6201426602723924e+01 3.1004616013418381e+01 6.7505702489044870e+00 0 0 1 +942 2 3.5904571565151733e-01 9.9603587503673836e+00 2.2884806884661739e+01 1.5325075750172157e+01 0 0 0 +2476 1 -7.5195101737034253e-01 1.6465874655471463e+01 1.5593224616913542e+01 1.3965217933360407e+01 0 0 0 +602 2 3.6704959261871023e-01 2.1035877062916210e+01 3.0977558031118289e+01 8.4737950394283104e+00 0 -1 0 +2829 2 3.8852471663730892e-01 2.2462937506558461e+01 1.5984134869706034e+01 1.5510374544909403e+01 0 0 0 +2841 2 3.6796209378854011e-01 6.3042865678625271e+00 2.2908991682961382e+01 8.0237084697705630e-02 1 0 0 +2565 2 4.0436469491963317e-01 1.2704761764209320e+00 1.6053650115450203e+01 1.9080890623613435e+01 0 0 0 +2563 1 -6.7611000077238470e-01 1.1472683325292459e+00 1.6249162632465769e+01 2.0035846446403664e+01 0 0 0 +2564 2 4.0778981150198818e-01 3.2501020578611023e-01 1.6753303182253919e+01 2.0229597294791944e+01 0 0 0 +2874 2 3.0889470933723584e-01 4.5820739533130483e+00 2.2128723260691615e+01 1.7462635147454915e+01 1 0 0 +1062 2 3.6037252280074866e-01 1.5638869745625017e+00 2.1597388647498928e+01 2.0415959146700228e+01 0 0 0 +2453 2 3.7904019657753646e-01 2.3220359130048061e+00 2.1698675539625103e+01 1.8975353307752130e+01 0 0 0 +2452 1 -7.1933244817353248e-01 1.8909493635495129e+00 2.1082951341513748e+01 1.9587431856443843e+01 0 0 0 +810 2 3.4622181872072527e-01 3.3923609315101131e+00 1.7049297110884318e+01 2.0486325237545703e+01 0 0 -1 +2467 1 -7.4410670249583011e-01 1.9985166093300266e+00 1.6134561924140069e+01 1.7564190458245303e+01 0 0 0 +2374 1 -7.5549882313366945e-01 4.9708970216671613e+00 1.5897640845727093e+01 1.8162153196036638e+01 0 0 0 +2376 2 3.4100942613539392e-01 5.3517499864409963e+00 1.6193354287035945e+01 1.7356460206206449e+01 0 0 0 +809 2 3.7578964355484112e-01 4.7014133471784998e+00 1.7027075716661063e+01 1.9863578419664893e+01 0 0 -1 +957 2 4.0200516441711215e-01 3.1711690929003957e+00 2.0435804024865750e+01 2.0366921012028225e+01 0 0 -1 +955 1 -7.8889873207496419e-01 3.9247566400771396e+00 2.0163465758259353e+01 2.0907781192972930e+01 0 0 -1 +956 2 3.8557050395591708e-01 4.0623801606004930e+00 1.9223205577425333e+01 2.0751641667477642e+01 0 0 -1 +2880 2 3.6470456104793036e-01 4.5590835487633585e+00 2.1324788166738507e+01 2.2180636558811027e+01 1 0 0 +2448 2 3.7891469717871362e-01 6.4104048348264353e+00 1.5780213047357663e+01 1.9122582220757749e+01 0 0 0 +581 2 3.7460426720235190e-01 1.5419382297134044e+01 3.0800518915771480e+01 2.6043886925557764e+01 0 -1 -1 +2872 1 -7.6269479373786953e-01 3.7009428876424453e+00 2.2413959840696482e+01 1.7771422527835437e+01 1 0 0 +2583 2 3.7327435409857357e-01 5.4441623512822481e+00 1.8249974051004482e+01 2.2056304735162637e+01 0 0 0 +2276 2 3.6149696853742197e-01 3.1288172812713939e+00 2.2351439514553785e+01 1.7001251371961878e+01 0 0 0 +1711 1 -6.8819152537359740e-01 5.8566533843091850e+00 1.8293718521491556e+01 2.2909298612410424e+01 0 -1 0 +570 2 3.7790956638870143e-01 1.0061486189159239e+00 2.2026618126685257e+01 1.6446196223609501e+01 1 -1 0 +1712 2 3.7429560628687081e-01 5.9482113502938487e+00 1.7356911971271291e+01 2.3291942335504508e+01 0 -1 0 +2997 2 3.5225437272715709e-01 6.6086757608250366e+00 2.1146860438570563e+01 1.9455868658346034e+01 1 0 0 +2995 1 -7.1265882757587440e-01 6.0246788973483776e+00 2.0382500638383885e+01 1.9229781344684003e+01 1 0 0 +2996 2 3.6650296349571998e-01 5.2499733116524041e+00 2.0470690161445592e+01 1.9880591363399045e+01 1 0 0 +868 1 -7.3205821000451254e-01 2.5958374885186419e+00 1.8850417537589575e+01 1.6354720355830807e+01 0 0 0 +2878 1 -7.1548846979217984e-01 4.9358770289344820e+00 2.2117119705858219e+01 2.2697449221692509e+01 1 0 0 +635 2 3.5961360442179929e-01 5.6901360064690110e+00 1.9633135447409259e+01 1.7042339689310896e+01 1 0 0 +634 1 -6.7563410020830350e-01 5.3605055245776070e+00 1.8786296859330406e+01 1.6629063670717017e+01 1 0 0 +2115 2 3.6239867576259466e-01 8.1957615718520105e-01 2.1726024313333614e+01 2.2120325638004008e+01 1 -1 0 +808 1 -7.5427064274521927e-01 4.2494047742010075e+00 1.7450448103663643e+01 2.0626646924584463e+01 0 0 -1 +869 2 3.8570557115870291e-01 2.5185340578773343e+00 1.7998889873837001e+01 1.6843735479251066e+01 0 0 0 +2879 2 3.7164260702824170e-01 5.8521700015176608e+00 2.2045790028891812e+01 2.2297213410798278e+01 1 0 0 +2929 1 -7.1547115163270913e-01 1.6733174735264713e+00 1.7565037739044858e+01 2.3239784168949743e+01 1 0 0 +2931 2 3.2300493004303144e-01 2.2415982955798239e+00 1.7185611160903488e+01 2.2537360933781954e+01 1 0 0 +636 2 3.5946336426886771e-01 4.4147762414063987e+00 1.9027776247970419e+01 1.6412064428481170e+01 1 0 0 +870 2 3.7872752608724825e-01 2.0905325493323708e+00 1.9511792379724071e+01 1.6829961939440512e+01 0 0 0 +90 2 3.8834987715673935e-01 3.0943079419730942e+01 2.3362929219921256e+01 1.7346239916805800e+01 -1 0 0 +2113 1 -7.4531961303516558e-01 4.7096294719936260e-01 2.2425780260519058e+01 2.1565634816952937e+01 1 -1 0 +84 2 3.4897705322751993e-01 6.4508803916872415e+00 2.3559543074305076e+01 1.9269480285743430e+01 0 0 0 +2446 1 -6.7386356744338205e-01 7.2018006619244739e+00 1.5776218241604699e+01 1.9761553973954879e+01 0 0 0 +2442 2 3.5677817428353492e-01 9.6049044051135581e+00 2.2246363140981110e+01 1.7420877969602010e+01 0 0 0 +2447 2 3.9770318677378780e-01 7.4935616608432012e+00 1.6709551456264087e+01 1.9776904052396038e+01 0 0 0 +1800 2 4.1263441495919023e-01 1.0493244043314887e+01 1.7856467585679393e+01 1.7093068535115474e+01 0 -1 0 +135 2 3.9020101999581147e-01 8.9585516768587699e+00 1.8955011839864781e+01 1.8149561907320830e+01 0 0 0 +2260 1 -7.0103070485976005e-01 9.3873721090698456e+00 1.9082381628952291e+01 1.7263300317648142e+01 0 0 0 +2459 2 4.0434139329975316e-01 9.9682070030173868e+00 1.9843076963821684e+01 1.7447146520603926e+01 0 0 0 +1672 1 -7.3253141780020958e-01 7.9840608557733734e+00 1.8482620317594353e+01 1.9685083124885651e+01 0 0 0 +1674 2 3.7607888027345554e-01 7.3596416275299301e+00 1.9230285660106546e+01 1.9813327146661464e+01 0 0 0 +1673 2 3.6415389748626503e-01 8.5081160988086832e+00 1.8502998507052023e+01 2.0514696258781356e+01 0 0 0 +2440 1 -7.2029648161625559e-01 9.6242880106291349e+00 2.1778741467411137e+01 1.8312320727913580e+01 0 0 0 +2441 2 3.4230058605961328e-01 8.8814147484251507e+00 2.2167102283532959e+01 1.8858178997559353e+01 0 0 0 +979 1 -6.7482259063424510e-01 9.3088737385903926e+00 1.8844654865070989e+01 2.2460656347640754e+01 0 0 -1 +981 2 3.2430814659994767e-01 1.0090752856278911e+01 1.8493242842363081e+01 2.3048318147233751e+01 0 0 -1 +2509 1 -7.0196068058637862e-01 1.1788754153574342e+01 2.1536558931188686e+01 2.2727285444582797e+01 0 0 0 +2494 1 -7.4134374356485211e-01 1.1760325640174159e+01 1.5944605909120598e+01 1.9376881358470484e+01 0 0 0 +1972 1 -7.0047005231308657e-01 1.0356107018540603e+01 1.5765792843229191e+01 2.1808303769585933e+01 0 -1 0 +1097 2 3.6804654533983650e-01 7.8990432043169108e+00 2.1860162981074073e+01 2.2981153842560516e+01 0 0 0 +1096 1 -7.2729234791305175e-01 7.6152216078739663e+00 2.1444382553767134e+01 2.2209500718085835e+01 0 0 0 +1098 2 3.4838062587641866e-01 8.2952355939697160e+00 2.0776200139787651e+01 2.1968914814861467e+01 0 0 0 +980 2 3.7621919366667722e-01 8.5832690427575464e+00 1.8897036762754400e+01 2.3096414297956674e+01 0 0 -1 +2511 2 3.7597610626228445e-01 1.2184327819808559e+01 2.1060047289538311e+01 2.1924792581040840e+01 0 0 0 +2652 2 3.9789000070420916e-01 1.2263660768542426e+01 2.0679378164077566e+01 1.6766552072505430e+01 0 0 0 +2650 1 -6.8409435611026848e-01 1.1940315526251053e+01 1.9971637937423427e+01 1.7402509219403665e+01 0 0 0 +276 2 3.5792728558793091e-01 1.2473518730115815e+01 1.9986571964075942e+01 1.8227032133933289e+01 0 0 0 +1883 2 3.5294858934765755e-01 2.0126515986864028e+01 2.6600416664575562e+01 1.6710503370343691e+01 0 -1 0 +2468 2 3.5615560919483652e-01 2.8654151542591384e+00 1.5740984955840435e+01 1.7791581939739004e+01 0 0 0 +47 2 3.7949325700519548e-01 2.9817534616981050e+01 2.8032334758234612e+01 3.0746086176961189e+01 -1 -1 -1 +82 1 -7.7671112964081956e-01 7.1843657320280654e+00 2.3006719761256434e+01 1.9524647308538508e+01 0 0 0 +83 2 3.7436185898904384e-01 7.7254895369175776e+00 2.3519389228185439e+01 2.0129349219977321e+01 0 0 0 +1799 2 4.0180775006962682e-01 1.1810581389420010e+01 1.7033363248374886e+01 1.6621855523625594e+01 0 -1 0 +2496 2 4.0008485730469134e-01 1.1250540164512902e+01 1.6368263642458796e+01 1.8542999428761011e+01 0 0 0 +1083 2 3.4433348874294767e-01 1.1232902323015876e+01 2.5552244869791163e+01 3.0999593987954334e+01 0 0 -1 +2259 2 3.6420374135793915e-01 2.8495310473049784e+01 1.6082096260150365e+01 2.4803330061870188e+01 -1 0 0 +605 2 3.6069102724715812e-01 1.0653259836693101e+01 3.0665436152166350e+01 2.8953516374747096e+01 0 -1 -1 +1798 1 -7.4143336877672139e-01 1.0949162989447700e+01 1.6939559656764274e+01 1.7089535490890931e+01 0 -1 0 +1973 2 3.9184314405503479e-01 1.0849543291546629e+01 1.6068095219841016e+01 2.1029731159266454e+01 0 -1 0 +2682 2 3.5444139370273653e-01 2.2872210746000949e+01 1.5823126078637777e+01 1.9045757247082200e+01 0 0 0 +2177 2 3.7577310362369815e-01 2.7328595985351306e+01 2.7745186194996887e+01 2.7380636598096508e+01 0 -1 0 +1861 1 -7.2948921739616235e-01 1.4647541013196969e+01 1.5893645690038790e+01 1.6279559372752470e+01 0 0 0 +2498 2 3.8097263973112555e-01 1.2938270040404607e+01 1.7100569370949469e+01 1.9757891409716329e+01 0 0 0 +2510 2 3.9891115678219063e-01 1.2767352583765447e+01 2.1753746710905055e+01 2.3420981789955796e+01 0 0 0 +1200 2 3.8872285951965591e-01 1.3469725203925210e+01 2.0688908003932251e+01 2.0114797967351016e+01 0 0 0 +2558 2 3.6746091393743319e-01 1.4197026966545986e+01 1.7970933823901291e+01 2.1890988724450011e+01 0 0 0 +2753 2 3.7812641223402427e-01 1.4503789050574767e+01 1.7016554098710056e+01 2.0007044748354808e+01 0 0 0 +2752 1 -7.5794476806788680e-01 1.3773058971560914e+01 1.7610063743754900e+01 2.0147381432369915e+01 0 0 0 +1198 1 -7.3785542644020652e-01 1.2722945994650141e+01 2.0178892074428340e+01 2.0412494058857920e+01 0 0 0 +2754 2 3.7953874501108459e-01 1.2955585724155942e+01 1.9237787247783668e+01 2.0402977981879534e+01 0 0 0 +2501 2 3.8591245743111002e-01 1.7069179347359253e+01 2.0427873319025792e+01 1.8107261744812714e+01 0 0 0 +2500 1 -7.6572664227792298e-01 1.7451409436569911e+01 2.0796108924863930e+01 1.7384990849850592e+01 0 0 0 +627 2 3.8642862893208907e-01 2.9111656614776731e+01 3.0905618749578579e+01 2.1355596991645790e+01 0 -1 -1 +949 1 -7.3787771051202400e-01 1.6477607738654012e+01 1.9366811648631813e+01 1.9731657372562406e+01 0 0 -1 +950 2 3.3931122396063440e-01 1.5985927502409446e+01 1.8563515801563192e+01 2.0012871080420258e+01 0 0 -1 +951 2 3.3522345570974904e-01 1.6399763962324545e+01 1.9974858343661673e+01 2.0488216687038562e+01 0 0 -1 +2502 2 3.2300893204683401e-01 1.7701586389495752e+01 1.9978779271362470e+01 1.6797287143588839e+01 0 0 0 +2856 2 3.6286740285890251e-01 1.9088413504040428e+01 2.1422083807728644e+01 1.7331561596723645e+01 0 0 0 +1896 2 3.3866811829528354e-01 1.8154982291173472e+01 2.2262265937145784e+01 1.8813822681117955e+01 0 -1 0 +1894 1 -7.3085053977240566e-01 1.8742250855955579e+01 2.2242430132658562e+01 1.9587550246900438e+01 0 -1 0 +1153 1 -7.0909725109401156e-01 1.4568212577030154e+01 2.1758084676468798e+01 1.9084218084358760e+01 0 0 0 +1155 2 3.9048148196889804e-01 1.4683212818975365e+01 2.2584919729163854e+01 1.8463305709392731e+01 0 0 0 +1594 1 -7.5416754141135045e-01 1.3083912575970864e+01 2.1704003403232615e+01 1.5708244538227005e+01 0 0 0 +1813 1 -6.9441977609673300e-01 6.3039324182827920e+00 3.0821799880495821e+01 2.1189606677534080e+01 0 -1 0 +2849 2 3.5480349581328491e-01 1.8129051651410556e+01 1.8705079174557753e+01 2.0228902761443340e+01 0 0 0 +1863 2 3.6854576007161327e-01 1.5172666627302098e+01 1.6095702708726595e+01 1.7029458334273805e+01 0 0 0 +2746 1 -7.3273328749835243e-01 1.6093205557140369e+01 1.6337803951705954e+01 1.9134412030967425e+01 0 0 0 +2670 2 3.7884885366866627e-01 1.6904941489106388e+01 3.1017946547072516e+01 1.8351426234861631e+01 0 0 0 +2747 2 3.7526896474913241e-01 1.6632130676703571e+01 1.6039388323818944e+01 1.8415729258210146e+01 0 0 0 +1386 2 3.8475593535460384e-01 2.7164340055959478e+01 3.0099801116608390e+01 1.7095499208172395e+01 0 0 0 +653 2 3.7600427557950300e-01 1.8429978363641840e+01 1.6393214087114725e+01 2.0536708163206043e+01 0 0 0 +926 2 3.3585894276326667e-01 1.1333087962713002e+01 3.0477256321291371e+01 2.4285673591173943e+01 0 0 0 +2965 1 -7.2583966210207052e-01 1.2864962032239149e+00 1.6632632849149697e+01 3.0381041687091447e+01 1 0 0 +2559 2 3.4260462364336525e-01 1.4848326918990606e+01 1.8875073679901682e+01 2.2968734193161435e+01 0 0 0 +2557 1 -7.0605139533455008e-01 1.4331764527916098e+01 1.8058309776495935e+01 2.2872018353667798e+01 0 0 0 +568 1 -7.1732389025140930e-01 1.8578047794583581e+00 2.1535792668020783e+01 1.6028395496735452e+01 1 -1 0 +2748 2 3.8168868936078065e-01 1.6471888994325148e+01 1.6105801488731093e+01 1.9974337730133673e+01 0 0 0 +2193 2 3.7234436478270250e-01 2.7998844550166559e+01 2.6328675841197466e+01 2.6367469356902838e+01 0 -1 0 +2855 2 3.6194534394557654e-01 2.0033965557468058e+01 2.1858791951418684e+01 1.6125877121497311e+01 0 0 0 +1148 2 3.4354261902983407e-01 2.5158469268152945e+01 1.6053290568144252e+01 2.3155099627088500e+01 0 0 -1 +2835 2 3.3871436051537818e-01 2.1391769693115197e+01 1.6752990314935037e+01 1.6522425972689309e+01 0 0 0 +2854 1 -7.6148130321416307e-01 2.0042981091993074e+01 2.1579410100574112e+01 1.7093249739522637e+01 0 0 0 +1895 2 3.3633802886671432e-01 1.9645176520042821e+01 2.2097828586501326e+01 1.9152440208691370e+01 0 -1 0 +1811 2 3.5609428898676954e-01 1.8707827025288051e+01 1.6952055951109241e+01 2.3651863342904992e+01 0 -1 0 +701 2 3.9222358501290394e-01 2.3503612900094463e+01 2.0341372940500914e+01 1.7687642841542818e+01 0 0 0 +702 2 3.7651346292397025e-01 2.4993255123712686e+01 2.0385384067740553e+01 1.7991898240006243e+01 0 0 0 +1199 2 3.6152846434730673e-01 2.1925673007890705e+01 2.2668013759151197e+01 1.7366330540124970e+01 0 0 0 +2922 2 3.6359369647919776e-01 2.3361693486816201e+01 1.7936969153801638e+01 1.5680260362233357e+01 0 0 0 +1951 1 -7.9328339981929941e-01 2.0314945917663909e+01 1.7053498194643307e+01 1.8136306919551057e+01 0 0 0 +1953 2 4.0646187120711424e-01 1.9964678378818739e+01 1.7591120829025456e+01 1.8830486704836559e+01 0 0 0 +1471 1 -7.0560238583825863e-01 2.1591710370264284e+01 1.9400709504333953e+01 1.7575382984451089e+01 0 0 0 +1473 2 3.6358229425505018e-01 2.0895794207685931e+01 2.0046956148602124e+01 1.7377298397087262e+01 0 0 0 +1472 2 3.5797336917149358e-01 2.1135558773815383e+01 1.8509993956440493e+01 1.7515866130752990e+01 0 0 0 +2848 1 -7.4639765540348535e-01 1.8884359102375498e+01 1.8088210388615583e+01 2.0089347304986042e+01 0 0 0 +2823 2 3.3361870878766836e-01 1.9594100684430078e+01 1.8350188943716372e+01 2.0815798117173369e+01 0 0 0 +729 2 3.7204357853523695e-01 2.5116144885662930e+01 1.7388683086282882e+01 1.8512589751641979e+01 0 0 0 +727 1 -7.5798923778031790e-01 2.4500483041448923e+01 1.6633913849547586e+01 1.8522427042114860e+01 0 0 0 +700 1 -7.2428328091107230e-01 2.4173472907905484e+01 2.0978036113664331e+01 1.7857787913545049e+01 0 0 0 +1598 2 3.5615949548720716e-01 2.4266877405299546e+01 2.1718804381820732e+01 1.9993608189643279e+01 -1 -1 0 +1597 1 -6.8879075016082236e-01 2.4547053504657136e+01 2.1460191437475498e+01 2.0842654794992228e+01 -1 -1 0 +2895 2 3.4721873723606850e-01 2.3611735806262967e+01 1.7418190978508740e+01 2.0520242610221505e+01 0 1 0 +728 2 3.2560686269065575e-01 2.4729109153127549e+01 1.6294300081678781e+01 1.7621847646784289e+01 0 0 0 +812 2 3.6544233381893815e-01 3.0350325135098089e+01 2.9852854799496011e+01 1.8855060403428610e+01 -1 0 0 +1262 2 3.9280028734695327e-01 2.3320715372853154e+01 2.2594933660546744e+01 1.8002306692272668e+01 0 0 0 +2893 1 -6.7043759366381761e-01 2.3372327680289807e+01 1.7931492806898280e+01 2.1317027953159300e+01 0 1 0 +687 2 3.8011281492684679e-01 2.2063828530596499e+01 3.0140444948093727e+01 1.8154991056672642e+01 0 -1 0 +1261 1 -7.8027245716304938e-01 2.2625684936239633e+01 2.3207155910459772e+01 1.7695133159849458e+01 0 0 0 +1599 2 3.4109075232904440e-01 2.5005131269365876e+01 2.2272712024131749e+01 2.1123917212844873e+01 -1 -1 0 +2894 2 3.8818749381521300e-01 2.2400140867531587e+01 1.8072813606607230e+01 2.1214357055362939e+01 0 1 0 +2920 1 -7.4414679730307309e-01 2.4285015990036879e+01 1.8212687527780602e+01 1.5899101547282720e+01 0 0 0 +1300 1 -7.4822613276536010e-01 2.0800383473570825e+01 1.8465849784410672e+01 2.2204085512601551e+01 0 0 0 +1302 2 3.5738914623477813e-01 2.0487439209381307e+01 1.9408482096827495e+01 2.2244477767286060e+01 0 0 0 +1149 2 4.0392969453323502e-01 2.3972783245823674e+01 1.7019307704670378e+01 2.2751918520546074e+01 0 0 -1 +1916 2 3.3613964528713897e-01 1.8997302249916039e+01 2.0878099496222401e+01 2.1543113259621361e+01 0 0 0 +1915 1 -7.6926925654261991e-01 1.9342540467916194e+01 2.0868884698068083e+01 2.2407952677753215e+01 0 0 0 +1964 2 4.0187800998034429e-01 1.9927315977925936e+01 2.1596354965791296e+01 2.2454076308555667e+01 0 0 0 +1909 1 -7.2852885325819183e-01 2.1619076440640026e+01 2.2641295424567502e+01 2.2370432722815025e+01 0 -1 0 +1923 2 3.3898145705281468e-01 2.2544854891054413e+01 2.2316554998686897e+01 2.2403423703457392e+01 0 -1 0 +2939 2 3.8223651968555239e-01 1.8668189867310097e+01 1.6390840966832787e+01 1.7277087787602792e+01 0 0 0 +2484 2 3.7307712781596902e-01 7.6359864421142936e+00 3.0975696403139899e+01 2.5643613489742151e+01 0 0 0 +1652 2 3.5794883155325735e-01 5.0427297969356157e+00 3.0832567574938459e+01 2.2775451059533083e+01 0 -1 0 +2174 2 3.8363043313262279e-01 2.6110317662816119e+01 2.0443548485530055e+01 2.1075769124118832e+01 0 -1 0 +1391 2 3.7290317354576341e-01 2.7111382834942216e+01 2.1894183992540228e+01 1.6151440859766556e+01 0 0 0 +2358 2 3.8008604609966268e-01 9.3263411365665654e+00 1.5948262579326640e+01 1.5980403394054617e+01 0 0 0 +2833 1 -7.7680805794190866e-01 2.1889033295979491e+01 1.6742009812923342e+01 1.5635214724251041e+01 0 0 0 +2552 2 3.4690752209002046e-01 3.0224935614711704e+01 1.8289187070138855e+01 2.0077458156807612e+01 -1 0 0 +2551 1 -6.9442600053127224e-01 2.9902739622371950e+01 1.7510894175084186e+01 2.0595281762567023e+01 -1 0 0 +2671 1 -7.8981279469468568e-01 2.7038448668057629e+01 1.6109327801297642e+01 2.1980652823958877e+01 0 0 0 +2553 2 3.4054194871104354e-01 2.9932848115363079e+01 1.7888113838751423e+01 2.1503092451354249e+01 -1 0 0 +2673 2 3.5462103090337649e-01 2.7642869727354125e+01 1.6345687751129560e+01 2.1314664342917510e+01 0 0 0 +1339 1 -7.1505846326089539e-01 3.0264441714750088e+01 2.0001447498995709e+01 1.8559038714274156e+01 0 0 -1 +1340 2 3.8626202073150107e-01 3.0830832560579825e+01 2.0507250999418257e+01 1.8012385725203700e+01 0 0 -1 +1341 2 3.6031343875946437e-01 3.0053357011462392e+01 2.0572482492739759e+01 1.9371104911776399e+01 0 0 -1 +133 1 -7.3076751616149360e-01 2.8186702082558806e+01 2.0605350989896191e+01 1.6998728028641448e+01 -1 0 0 +2288 2 3.6741410489919724e-01 2.8499639413149080e+01 1.9791474184393412e+01 1.6047710584435372e+01 -1 0 0 +88 1 -7.3974407319908686e-01 3.0642275184573499e+01 2.2444786654927732e+01 1.7303369220099167e+01 -1 0 0 +2147 2 3.7038335781937110e-01 2.7025335670146816e+01 1.9672959580777288e+01 1.7723089611091176e+01 0 0 0 +2148 2 3.7651016205666127e-01 2.6496805034932265e+01 1.9443354706358477e+01 1.9246338887601325e+01 0 0 0 +2146 1 -7.2104093540569658e-01 2.6280388468820234e+01 1.9237152426356072e+01 1.8293702857600966e+01 0 0 0 +654 2 3.4769438023806692e-01 1.7623658204021812e+01 1.5643832632787415e+01 2.1610894594067368e+01 0 0 0 +1877 2 3.2112080310880986e-01 1.3870985175542049e+01 2.9875449119889161e+01 1.5792307590707940e+01 0 -1 0 +651 2 3.9286800400053029e-01 2.9192664370322753e+01 1.7711724994172208e+01 1.5802045269930654e+01 0 0 0 +134 2 3.9047567034986069e-01 2.9008881684968355e+01 2.0503523319701635e+01 1.7547946173593918e+01 -1 0 0 +2275 1 -6.4774583495306726e-01 2.9360709086511637e+01 1.6935661418682951e+01 1.6403866516251814e+01 -1 0 0 +2173 1 -7.3404361623082071e-01 2.6633380646204319e+01 1.9635410283715427e+01 2.1140455287178625e+01 0 -1 0 +89 2 3.8746167291159628e-01 2.9827072030322309e+01 2.2528212416225113e+01 1.6740639784501301e+01 -1 0 0 +1392 2 3.7102612806233226e-01 2.8390741155099267e+01 2.0538409814570340e+01 2.1339382996650819e+01 0 0 0 +1974 2 3.9124312565084696e-01 1.1007641386595305e+01 1.5652532773548923e+01 2.2598675846856850e+01 0 -1 0 +1766 2 4.1012433962073519e-01 1.2093625146649675e+01 1.5616728719308202e+01 2.4139661025106957e+01 0 0 0 +1390 1 -7.4075990346411791e-01 2.8955462743157913e+01 2.1197977826611819e+01 2.0980214939671992e+01 0 0 0 +14 2 3.3216402906072906e-01 3.0807338651004379e+01 2.0010596347711214e+01 2.3173548166399449e+01 -1 0 -1 +13 1 -7.1823393407369551e-01 3.0181623694281640e+01 1.9196841376224548e+01 2.3232789797521033e+01 -1 0 -1 +15 2 3.6643141516383010e-01 3.0824115746408197e+01 1.8564929535970997e+01 2.3620467024305327e+01 -1 0 -1 +2946 2 3.5464067049253556e-01 2.8347711815742397e+01 2.1955609811562447e+01 2.0786727957214900e+01 0 0 0 +609 2 3.3726211282363161e-01 2.6722126209328781e+01 2.1864245394913599e+01 1.8227963199264458e+01 0 0 0 +2114 2 3.6294635940713710e-01 3.0569382111652988e+01 2.2092167602819217e+01 2.1384765432168759e+01 0 -1 0 +2175 2 3.6956857299387247e-01 2.6775328288934990e+01 1.9391414265406720e+01 2.2070995898872191e+01 0 -1 0 +2277 2 3.4130372475137410e-01 2.8461490696868786e+01 1.6572290727888070e+01 1.6616339409653147e+01 -1 0 0 +607 1 -6.7870281831109713e-01 2.6848217984759554e+01 2.2629066216455989e+01 1.8799515229904490e+01 0 0 0 +1742 2 3.7733924902200827e-01 6.2124954020967262e+00 1.7260377098056626e+01 1.5550962438447414e+01 0 0 0 +1330 1 -7.8496253413332018e-01 2.3270089834049863e+01 2.6534928251474859e+01 2.4065661470658988e+01 0 0 -1 +887 2 3.6946757095486138e-01 2.0040782937944233e+00 3.0061591848212984e+01 1.8686775775007728e+01 0 0 0 +737 2 3.7155224071670767e-01 3.5949238954512595e+00 2.9850888051310818e+01 1.7110461504270695e+01 1 0 0 +835 1 -7.3994905485209217e-01 1.9001215466248231e+00 3.0243246749550234e+01 2.2811929013447735e+01 0 0 0 +1482 2 3.2537375859813600e-01 1.9086213375222647e+00 2.4433742767312904e+01 1.6078242920839681e+01 1 0 0 +2379 2 3.8172034119539050e-01 1.1872760584299091e+00 2.8351728036452197e+01 1.6573683527548113e+01 0 0 0 +1658 2 3.7598090017212937e-01 4.3362350139691737e+00 2.3622345476035559e+01 1.8845548092946810e+01 0 0 0 +1448 2 3.9598335182587041e-01 2.8956507372101109e-01 2.4211592747288478e+01 2.1898365888876480e+01 1 0 0 +1816 1 -7.4039505542705264e-01 4.4548197327358166e+00 2.9048771957014083e+01 2.0364574050961149e+01 0 -1 0 +1608 2 3.8415672467719181e-01 3.4094829216785132e+00 2.4810241251644356e+01 2.3214769057767086e+01 0 -1 0 +1480 1 -7.4321766030088710e-01 1.3151549441660131e+00 2.4699572551697230e+01 1.6845119956996410e+01 1 0 0 +1657 1 -7.5391051177746882e-01 4.6406861138286324e+00 2.4411640466564599e+01 1.9369193193625961e+01 0 0 0 +1607 2 3.4950019252893449e-01 3.9391172258977307e+00 2.4668809266498091e+01 2.1762309228807219e+01 0 -1 0 +168 2 3.9778111545845751e-01 4.8475093205966653e+00 2.6357860575154756e+01 2.2702131321288228e+01 0 -1 0 +890 2 3.6811701282287895e-01 6.2511905814711950e+00 2.6600886977625279e+01 1.9000587336021255e+01 0 0 0 +2218 1 -7.7505098638268577e-01 1.6972191076454666e+00 2.7678944955362095e+01 2.0391031360233221e+01 1 -1 0 +2220 2 3.2792785896845461e-01 1.0077534081334456e+00 2.6993360710017047e+01 2.0440971238793225e+01 1 -1 0 +1659 2 3.8144052861295125e-01 4.0897156698269264e+00 2.5182641988673712e+01 1.9084729215070265e+01 0 0 0 +891 2 3.5274381077766698e-01 6.2083068484585358e+00 2.5461600949760292e+01 2.0013337957564250e+01 0 0 0 +889 1 -7.6685202371536598e-01 6.4538906183109939e+00 2.6406976884223820e+01 1.9888325559538149e+01 0 0 0 +2389 1 -7.4567975904915462e-01 2.9232523437030604e+00 2.6152195051468794e+01 1.8331498017525611e+01 0 0 0 +2391 2 3.9326254808262040e-01 2.3780527706042967e+00 2.5518835027557358e+01 1.7847227822781967e+01 0 0 0 +2219 2 3.5504751925497596e-01 1.9382781297843090e+00 2.7899885033152866e+01 2.1228752311420461e+01 1 -1 0 +2390 2 3.5492559747849900e-01 2.3951946751869384e+00 2.6463788627000607e+01 1.9098362572217635e+01 0 0 0 +1606 1 -7.8273983031529759e-01 3.5379376735739876e+00 2.5287692988003748e+01 2.2404395229677025e+01 0 -1 0 +824 2 3.5757835209464606e-01 1.6778081964300646e+00 2.8544713183763236e+01 1.8504583158296640e+01 0 0 0 +1447 1 -7.8084231982991281e-01 4.1723176459940631e-01 2.5098881068255277e+01 2.2252886266331245e+01 1 0 0 +886 1 -7.4338410648607733e-01 1.9580275389767821e+00 2.9338943355103435e+01 1.8031630550089133e+01 0 0 0 +1449 2 3.4068386353378610e-01 1.3526734389341162e+00 2.5260052242748490e+01 2.2189683785804149e+01 1 0 0 +1817 2 3.3863263823282508e-01 4.7495420765212675e+00 2.8245071703044033e+01 2.0815730761767309e+01 0 -1 0 +1818 2 3.6230976516486735e-01 3.6050574599956482e+00 2.8796585338422496e+01 2.0080230250081200e+01 0 -1 0 +836 2 3.7944051003969576e-01 1.8343953575126255e+00 2.9269659788844582e+01 2.2711957199106845e+01 0 0 0 +1619 2 3.0865492332967515e-01 5.2531346251025601e+00 2.5839475428431044e+01 1.7155063367279972e+01 0 -1 0 +1553 2 3.3759533236758055e-01 2.3331642385303124e+00 2.6798799991892459e+01 2.3233869925364218e+01 0 -1 0 +2888 2 3.7221098412170578e-01 2.1736036678608901e+00 3.0554994531806472e+01 3.0547439384624489e+01 1 0 0 +1618 1 -7.2150748307404122e-01 6.0675544812496733e+00 2.6343445561732437e+01 1.6914227835244521e+01 0 -1 0 +166 1 -7.7798256713464498e-01 5.4730584070999084e+00 2.7036778709998938e+01 2.2512398414187615e+01 0 -1 0 +1481 2 3.6273777416015407e-01 7.8842479601488002e-01 2.5379055134433440e+01 1.6393740924115864e+01 1 0 0 +1622 2 3.7958629953034284e-01 3.0355259666111596e+01 2.8912811005557533e+01 2.8734220869269837e+01 -1 -1 0 +2658 2 3.3046556022745233e-01 1.2616239059600234e+01 2.3718554088655857e+01 1.6156384330192726e+01 0 0 0 +2967 2 3.9694405617735240e-01 7.8619980381494770e-01 1.5852233150811893e+01 3.0191631415087002e+01 1 0 0 +1536 2 2.9020479076616773e-01 1.2721807801685799e+01 3.0544256463690271e+01 2.7995926123662766e+01 0 -1 0 +1521 2 3.8855343951159921e-01 2.9008050743040521e+01 2.4575896530061790e+01 2.9455934354360195e+01 -1 -1 0 +1581 2 3.4044964783745879e-01 6.6704753023468610e+00 2.2146446156744457e+01 1.7720354237761928e+01 0 0 0 +1579 1 -7.3079233402842936e-01 6.8473799725083850e+00 2.2032389149695376e+01 1.6775499150127768e+01 0 0 0 +1710 2 3.3164288297072542e-01 6.3442717039164833e+00 2.9399264140279374e+01 1.7809259870664633e+01 0 -1 0 +1186 1 -7.1762498153613963e-01 1.2061130362862064e+01 2.7710725555119232e+01 1.6303129930368414e+01 0 0 0 +2543 2 3.9132667210679384e-01 8.0328620678882103e+00 2.7360249799475074e+01 2.0200877092041747e+01 0 0 0 +2542 1 -7.4335551537365108e-01 8.8588566111759999e+00 2.7839565103082613e+01 2.0158454636607239e+01 0 0 0 +1580 2 3.6660103810031852e-01 7.7822935418275607e+00 2.2187181491108323e+01 1.6653747143274629e+01 0 0 0 +905 2 3.8125581257206370e-01 9.9809440180732878e+00 2.5058303935333765e+01 1.8708120984336677e+01 0 0 0 +904 1 -6.6718807913192824e-01 9.7640093485817729e+00 2.5881439346480942e+01 1.8157436649501598e+01 0 0 0 +2028 2 3.7288708414509059e-01 1.1465150032820725e+01 2.2959931806776911e+01 2.2204695762379774e+01 0 -1 0 +189 2 3.6496297873456091e-01 9.5150793476160480e+00 2.6576982078446441e+01 1.8746133122372619e+01 0 0 0 +1683 2 3.3609316699776010e-01 9.5418941214948010e+00 2.4143828787022262e+01 2.1454915643622822e+01 0 0 0 +2544 2 3.5925502517564772e-01 8.7192940972858128e+00 2.8455501814449036e+01 1.9433901210997096e+01 0 0 0 +2026 1 -7.6000936424524745e-01 1.1481342449937031e+01 2.4001709511526855e+01 2.1916569286833848e+01 0 -1 0 +167 2 3.5939831747318335e-01 5.8399563755352411e+00 2.6838134911364133e+01 2.1648050653970635e+01 0 -1 0 +2387 2 3.7171811309155250e-01 2.7904319420004885e+01 2.8455017550611686e+01 3.0357763291847803e+01 -1 0 0 +99 2 3.6473960429000868e-01 1.0731596183910357e+01 2.2867900148968648e+01 1.9092941586161427e+01 0 -1 0 +2700 2 3.7199849930061141e-01 2.0852448107235148e+01 1.7054906030418309e+01 3.0575464308630306e+01 0 0 0 +97 1 -7.5071721085194021e-01 1.1049890349600167e+01 2.3840135524714370e+01 1.9254247088408178e+01 0 -1 0 +800 2 3.5710118669031121e-01 2.4035493305068787e+01 3.0830422818147284e+01 2.5625406350025436e+01 -1 0 -1 +98 2 3.9763138146762189e-01 1.1341014006311463e+01 2.3953077489078169e+01 2.0157369867347231e+01 0 -1 0 +1682 2 3.5912858910436246e-01 8.3063524807804434e+00 2.3893927687367249e+01 2.2415732600795270e+01 0 0 0 +1746 2 4.0922736998545300e-01 1.0218875115844151e+01 2.7265474418666845e+01 2.1122927422688214e+01 0 -1 0 +1681 1 -7.1194996980377623e-01 8.5989116638959242e+00 2.4407703998472464e+01 2.1619795482451607e+01 0 0 0 +1745 2 3.7183887959671857e-01 1.0709595644695415e+01 2.5864885948545112e+01 2.1638167364185758e+01 0 -1 0 +1744 1 -7.3448628392948379e-01 1.0884850457999093e+01 2.6795137266220760e+01 2.1657055121225177e+01 0 -1 0 +2656 1 -7.3595319421670635e-01 1.2278339467500622e+01 2.4569208954327447e+01 1.6485816072697872e+01 0 0 0 +2657 2 3.4676392257192501e-01 1.1761127253799433e+01 2.4296052154892031e+01 1.7274728627990154e+01 0 0 0 +1708 1 -7.2804739697530674e-01 7.2541583481233065e+00 2.9027374704991516e+01 1.7779498249360810e+01 0 -1 0 +1769 2 3.6420768175652235e-01 1.0065218192421860e+01 2.4199319642198414e+01 2.4657457497983135e+01 0 0 0 +1814 2 3.4098094159333331e-01 6.6857723747746620e+00 2.9926880883147600e+01 2.1470524305880222e+01 0 -1 0 +1704 2 3.4684011316705121e-01 7.0846777559195795e+00 2.8056444158164609e+01 1.7623210577804553e+01 0 -1 0 +1026 2 3.8781539415751987e-01 1.0532268753529356e+01 2.7258597941924911e+01 2.3254135035277464e+01 0 0 0 +1815 2 3.6556475865578497e-01 5.4602084228133503e+00 3.0496894748905664e+01 2.0791504545758951e+01 0 -1 0 +1532 2 4.1676796539526711e-01 2.6985021244925864e+00 3.0332255359412574e+01 2.3328311399892229e+01 0 -1 0 +941 2 3.3011655614087365e-01 1.0235075396833105e+01 2.3914868421003952e+01 1.6431859224198476e+01 0 0 0 +1960 1 -7.4577671936548362e-01 1.0672557369495419e+01 2.2202495197016393e+01 3.0797234871241518e+01 0 0 0 +1187 2 3.5475340768696395e-01 1.2074232581338990e+01 2.6801524266253413e+01 1.6557468728805507e+01 0 0 0 +1263 2 3.6177104414988503e-01 6.8798332669191469e+00 2.8866167446549504e+01 1.6015683362064738e+01 0 0 0 +1025 2 3.4740510085813531e-01 1.3831000128405167e+01 2.9956041032301236e+01 2.0265276112271710e+01 0 0 0 +1887 2 3.4401208015117996e-01 1.3693521295342007e+01 2.9883365004670086e+01 1.8803328339921094e+01 0 -1 0 +1024 1 -7.4732187151657015e-01 1.4087397191898239e+01 2.9404061588278498e+01 1.9492453858151610e+01 0 0 0 +530 2 3.7072902686858572e-01 1.8333980877958460e+01 2.8495650933719439e+01 2.1013438094557412e+01 0 -1 0 +2668 1 -7.2586779053953332e-01 1.6468616660246916e+01 3.0200576834508450e+01 1.8107458376186266e+01 0 0 0 +1154 2 3.4661338446117257e-01 1.5147437638589933e+01 2.1087505274478012e+01 1.8824016883184473e+01 0 0 0 +2027 2 3.6997504158884464e-01 1.2396017155534320e+01 2.4352657259825314e+01 2.2151001049086265e+01 0 -1 0 +1140 2 3.4746339177485541e-01 1.3293086927379797e+01 2.8899256805032657e+01 2.1625048514514795e+01 0 0 -1 +964 1 -7.4458835564014869e-01 1.4019783567999925e+01 2.4794847815034593e+01 2.1473518938176689e+01 0 0 -1 +1625 2 3.4774047102489730e-01 1.5675859432699948e+01 2.4603413527062351e+01 1.8148153647608549e+01 0 -1 0 +2620 1 -7.0699379411909236e-01 1.4511457350057446e+01 2.6632506733136950e+01 1.9393603708328243e+01 0 0 0 +2622 2 4.0309427424184130e-01 1.4177434274016157e+01 2.7522401107493817e+01 1.9327041279340989e+01 0 0 0 +965 2 3.7670942870363838e-01 1.4795561586879975e+01 2.4239948137266012e+01 2.1598707770989751e+01 0 0 -1 +966 2 4.0283551317030708e-01 1.4130893948778615e+01 2.5315683513789242e+01 2.0618639203639322e+01 0 0 -1 +2621 2 3.7009770339032583e-01 1.5534641821589435e+01 2.6597926923867742e+01 1.9152049738736999e+01 0 0 0 +546 2 3.9382516461967920e-01 1.7478807026721604e+01 2.5575790465036320e+01 1.9552121382113413e+01 0 0 0 +1109 2 3.9603631716475218e-01 1.7587893381911218e+01 2.7037447379780758e+01 1.8842235312372665e+01 0 0 0 +544 1 -7.5072975927881780e-01 1.7106796996545597e+01 2.6158125046985724e+01 1.8868433779044160e+01 0 0 0 +2521 1 -7.4647176537913629e-01 1.6428268017121251e+01 2.3429442241142524e+01 2.2041669613978961e+01 0 0 0 +529 1 -7.0375099083884907e-01 1.8131769227280607e+01 2.8795775098271839e+01 2.1924862280486551e+01 0 -1 0 +531 2 3.5122400712037394e-01 1.8980691893033367e+01 2.9179868653899451e+01 2.2242680310203820e+01 0 -1 0 +2570 2 3.6124228882708764e-01 1.6866886169502983e+01 2.3823010403779197e+01 1.6164612093841882e+01 0 0 0 +2021 2 3.5382380688622811e-01 8.1392963818983528e+00 2.9579488267733431e+01 3.0253733617405214e+01 0 -1 0 +2523 2 3.6929354710445378e-01 1.7232548888680952e+01 2.3622220153421953e+01 2.1593006085617734e+01 0 0 0 +1256 2 3.8051453201239649e-01 1.9030161814415106e+01 2.8274253626770872e+01 1.8113350609912985e+01 0 0 0 +1454 2 3.5206106808239324e-01 1.7664833885406878e+01 2.9013449343858760e+01 1.8533401541384283e+01 0 0 0 +1255 1 -7.5347409426897416e-01 1.8438052720492330e+01 2.8456261883209745e+01 1.8922797934676712e+01 0 0 0 +2083 1 -7.0262180250070194e-01 1.8718730438484116e+01 2.4754632237447048e+01 2.0588384405181767e+01 0 -1 0 +1624 1 -7.3956337810603157e-01 1.5475438283386362e+01 2.3771735795258046e+01 1.7641629969102098e+01 0 -1 0 +1138 1 -7.6146681499474245e-01 1.3501118733959119e+01 2.9300473626089911e+01 2.2448873836361070e+01 0 0 -1 +2474 2 3.5290603632116113e-01 1.2611528613337823e+01 2.9176722611242191e+01 2.2934708093577072e+01 0 0 0 +1626 2 3.2229356468678999e-01 1.4641124069320480e+01 2.3957978604511425e+01 1.7192156142550395e+01 0 -1 0 +2669 2 3.4717046986472083e-01 1.5952070580594635e+01 2.9875827566246453e+01 1.8883612975171534e+01 0 0 0 +1901 2 3.5317885571686453e-01 1.4822065551027405e+01 3.0854677505537257e+01 1.6477916041192977e+01 0 -1 0 +1136 2 4.0767392731456431e-01 2.6442879725683227e+01 1.5660008620575594e+01 2.8388589670819208e+01 0 0 -1 +1176 2 3.9978903776553631e-01 1.6613533320728646e+01 2.8201931388980782e+01 2.2813638686767995e+01 0 0 -1 +1174 1 -7.1174938226555085e-01 1.5872914593859974e+01 2.7707197555882992e+01 2.3184198145441943e+01 0 0 -1 +1286 2 3.4628438558018088e-01 1.3704448050920417e+01 2.4838717995177532e+01 2.3350832111526049e+01 0 0 0 +1175 2 3.8363519506068650e-01 1.5078492004653695e+01 2.8150711279424037e+01 2.2899483423447752e+01 0 0 -1 +1651 1 -7.8285060938598927e-01 4.4194403360896963e+00 3.0887922791398800e+01 2.3466532786569424e+01 0 -1 0 +626 2 3.9621845435720282e-01 2.7847615437997295e+01 3.0501424331885072e+01 2.2180508767960035e+01 0 -1 -1 +1992 2 3.6051410708628318e-01 2.0626178995937018e+01 3.0100602719890823e+01 2.3131218091174588e+01 0 -1 0 +686 2 3.7421055410712623e-01 2.3659852309891750e+01 3.0028143307556778e+01 1.8342547479037314e+01 0 -1 0 +2079 2 3.9583162780992048e-01 1.9723128741721968e+01 2.4988631778753060e+01 2.0407977996557332e+01 0 -1 0 +1932 2 3.4421227945259986e-01 2.1344207544968793e+01 2.7851226360959707e+01 2.1272955535337648e+01 0 -1 0 +2094 2 3.6354366099202706e-01 2.0173786607516888e+01 2.9422326227873164e+01 1.9269407748667831e+01 0 -1 0 +2085 2 3.8122818574191608e-01 1.8605509104893063e+01 2.3830764690561470e+01 2.0277565134432361e+01 0 -1 0 +1930 1 -7.1467213111077366e-01 2.1061847246342328e+01 2.6972145939373167e+01 2.0962496030190213e+01 0 -1 0 +2861 2 3.7137108517621442e-01 2.4010162127788433e+01 2.8885012400371821e+01 2.2101341853608798e+01 0 0 0 +1493 2 3.1921227646168970e-01 2.1941377844299840e+01 2.6041777970915742e+01 1.6078635848747432e+01 0 0 0 +2645 2 3.7965892203550533e-01 2.1310205260161514e+01 2.3565953570186085e+01 2.0756286030596012e+01 0 0 0 +2646 2 3.5161030539515398e-01 2.1820045308662191e+01 2.3535148380306374e+01 1.9184269218590966e+01 0 0 0 +2644 1 -7.1520438057815272e-01 2.1191335657157019e+01 2.3965552173549941e+01 1.9868811349623044e+01 0 0 0 +2000 2 3.1274855451952654e-01 2.2624599183228213e+01 2.6435976023384825e+01 1.7772537425430986e+01 0 -1 0 +2001 2 3.6783470505669036e-01 2.2505073076895595e+01 2.5088515871338409e+01 1.8459579740222669e+01 0 -1 0 +1999 1 -7.3642715313987328e-01 2.2887589255464917e+01 2.5970513611562644e+01 1.8578068888355745e+01 0 -1 0 +1501 1 -6.9287330548869552e-01 2.0836175516565266e+01 2.5384126095132398e+01 2.3299606156038639e+01 -1 -1 0 +1503 2 3.7331495611030308e-01 2.0789067022777637e+01 2.5767747167377664e+01 2.2398845118656855e+01 -1 -1 0 +87 2 3.8326523475718316e-01 2.4548780893894236e+01 2.5925905445403366e+01 1.9298195248266229e+01 -1 0 0 +714 2 3.6404874289258238e-01 2.2611542123142179e+01 2.9062648080099102e+01 1.6401000149738167e+01 0 -1 0 +1494 2 3.6072749688955152e-01 2.1849896753612629e+01 2.4555361021431327e+01 1.6572136572799668e+01 0 0 0 +1492 1 -7.3316391226676914e-01 2.1376452327114844e+01 2.5236755111693732e+01 1.6013729069238671e+01 0 0 0 +712 1 -7.6409342265939650e-01 2.2275477138770068e+01 2.8254020254038011e+01 1.5978890268152776e+01 0 -1 0 +1502 2 3.2750900876334710e-01 2.1854605585089143e+01 2.5496881375028856e+01 2.3527282653141938e+01 -1 -1 0 +1979 2 3.5852533808203746e-01 2.1799106933111819e+01 2.6740398500441689e+01 2.0401528248955636e+01 0 -1 0 +788 2 3.6507823480155110e-01 6.4987601079497761e+00 1.5912072241343145e+01 2.7219369238076688e+01 0 0 -1 +940 1 -7.5993433492151319e-01 9.4971805038864261e+00 2.3359367531046708e+01 1.6091599198667009e+01 0 0 0 +1477 1 -7.1577442377359546e-01 2.3053780979927641e+01 2.8890241959665630e+01 2.2208804037335931e+01 0 0 0 +2092 1 -7.5466715536911633e-01 2.0846215571218774e+01 3.0087135731962384e+01 1.9428012576765440e+01 0 -1 0 +1884 2 3.5873098249391222e-01 2.0613278823251694e+01 2.8033346049140139e+01 1.6555712592891147e+01 0 -1 0 +2093 2 3.5280392882267042e-01 2.1063815814163046e+01 3.0163670223973018e+01 2.0433479183754347e+01 0 -1 0 +2660 2 3.5286436995863907e-01 2.7487043461046728e+01 1.5571799794734668e+01 2.2627831911794022e+01 0 0 0 +1334 2 2.7821251700341615e-01 2.6832516560421453e+01 2.0818061555282569e+01 3.0764535328747993e+01 0 0 -1 +1487 2 3.4957869916832085e-01 2.9561919775415696e+01 3.0500099929317116e+01 1.5755978158247848e+01 0 0 0 +1764 2 3.5788303295335155e-01 1.6073523692620853e+01 2.1330068963384001e+01 1.5693728250753868e+01 0 0 0 +2251 1 -6.5790732008145958e-01 2.7060622111411480e+01 2.3138700873311208e+01 2.2664690476658780e+01 -1 0 0 +1312 1 -7.3031361001199424e-01 2.5070922222013131e+01 3.0006153655259908e+01 1.9220975369543176e+01 0 0 0 +1313 2 3.5012392042868484e-01 2.5663626027006142e+01 2.9716243149321699e+01 1.8394812199552447e+01 0 0 0 +1425 2 3.7723369047906075e-01 2.8704011049145159e+01 2.8681496250141464e+01 1.8905034529406556e+01 0 -1 0 +1423 1 -7.6388720290780832e-01 2.9459068497605028e+01 2.8458150964772159e+01 1.9529336963744697e+01 0 -1 0 +2859 2 3.3898463393995498e-01 2.4412946085468128e+01 2.5266811427507651e+01 2.2706451280232127e+01 0 0 0 +1314 2 3.9911783707008580e-01 2.5230358647721125e+01 2.9296964356321265e+01 1.9878087884485009e+01 0 0 0 +85 1 -7.2176281150996591e-01 2.5501815796869369e+01 2.5912885136275552e+01 1.9550462972877664e+01 -1 0 0 +86 2 3.7828471673898134e-01 2.5977024907606967e+01 2.6044837885169201e+01 1.8729185148217773e+01 -1 0 0 +2857 1 -7.1861125738522080e-01 2.4810140820814162e+01 2.4609540156158999e+01 2.2135171478698584e+01 0 0 0 +2858 2 3.5289203010979869e-01 2.5210821844548992e+01 2.5198328136581399e+01 2.1434880036131528e+01 0 0 0 +2860 1 -7.5285457172525971e-01 2.5601738315333559e+01 2.8319951749867720e+01 2.1315971798595246e+01 0 0 0 +2329 1 -7.1587306170789655e-01 1.2745333444452337e+01 3.0713852883838449e+01 2.8991351654586076e+01 0 0 0 +210 2 3.6226682833164664e-01 1.4143902594545324e+01 1.9423887559536048e+01 3.0612047887587707e+01 0 -1 -1 +2959 1 -7.3013535989558320e-01 3.0237182633524661e+01 2.5890023663243380e+01 1.9740863231399143e+01 0 0 0 +2960 2 3.5622862537414779e-01 3.0299131846153013e+01 2.5693359166793037e+01 2.0688122868310288e+01 0 0 0 +1257 2 3.5933204238177729e-01 2.5657296690931656e+01 2.7455889667437290e+01 2.0917270722460326e+01 0 0 0 +2862 2 3.7250045307840729e-01 2.6255280745453227e+01 2.8288700086652774e+01 2.2064979665634123e+01 0 0 0 +1922 2 3.4362641349359224e-01 2.6976547696003230e+01 2.6801524385294677e+01 1.6077574805213192e+01 0 -1 0 +655 1 -7.3923104617492019e-01 2.8532214575804154e+01 2.4786964313114087e+01 1.7945087656029163e+01 0 0 0 +2961 2 3.8798185001293345e-01 3.0122827747604592e+01 2.6862559208414233e+01 1.9598814034183825e+01 0 0 0 +1239 2 3.4811734015773615e-01 2.9401706320264012e+01 2.5196281784305587e+01 1.6473066862725489e+01 0 0 0 +1980 2 3.5305149377366718e-01 2.5905406120992328e+01 2.5790280102005948e+01 1.6219988346805874e+01 0 -1 0 +2828 2 3.9278023582779725e-01 2.7598890178238655e+01 2.3144953493614747e+01 1.8505526299270542e+01 0 0 0 +1989 2 3.4454112243938917e-01 3.0076554704847812e+01 2.6633317441455134e+01 2.2689203245614717e+01 0 -1 0 +1978 1 -7.6844919196992867e-01 2.6583171425421828e+01 2.6293726405368989e+01 1.6752193747778342e+01 0 -1 0 +2885 2 3.9118904723554615e-01 2.8359710255059280e+01 2.7730344669396558e+01 2.2859672370126003e+01 0 0 0 +656 2 3.9255638374308610e-01 2.9045824561554294e+01 2.5362944038839306e+01 1.8596145177741722e+01 0 0 0 +657 2 3.7129585855316388e-01 2.7893426569355885e+01 2.5397429958062208e+01 1.7541061765761540e+01 0 0 0 +2884 1 -7.3268410251980332e-01 2.7413006812704335e+01 2.7529314741846104e+01 2.3251247739875684e+01 0 0 0 +1948 1 -7.4953320836361537e-01 2.8122726365632381e+01 3.0850868487460112e+01 2.7573055039574019e+01 0 -1 0 +1385 2 3.3269047709986116e-01 2.6842454196208301e+01 2.8600625368696640e+01 1.6957790706377303e+01 0 0 0 +1384 1 -7.1975854813490003e-01 2.7167743036007774e+01 2.9237737336757228e+01 1.7610578135538887e+01 0 0 0 +2253 2 3.8404855165492230e-01 2.6250991974089555e+01 2.3689503084155746e+01 2.2698207350136617e+01 -1 0 0 +1990 1 -7.5799876694940427e-01 2.0310033339867175e+01 3.0558379448676224e+01 2.2290969717053880e+01 0 -1 0 +504 2 3.2915485874146866e-01 2.7263663448182932e+01 3.0494235989220375e+01 2.7481866585701230e+01 0 -1 -1 +2947 1 -7.3195509874969900e-01 2.6441829801977150e+01 2.5826687157912477e+01 2.5428823592552760e+01 0 0 0 +1424 2 3.9331289744865816e-01 2.9214220635044462e+01 2.8921798538790245e+01 2.0328427778120837e+01 0 -1 0 +2886 2 3.7960746802718409e-01 2.7191708866374935e+01 2.8239158756923270e+01 2.3829865930469452e+01 0 0 0 +1237 1 -7.3117183968274879e-01 2.9918237329244480e+01 2.5592796656982234e+01 1.5666137887588182e+01 0 0 0 +1952 2 3.7923751450845622e-01 2.0907546181404513e+01 1.6385037666537183e+01 1.8589971419953056e+01 0 0 0 +2952 2 3.8170399981523723e-01 2.8453831402895418e+01 3.0346460350421467e+01 2.8318315062606668e+01 0 0 0 +2982 2 3.5160848176065723e-01 2.1433520797686438e+00 1.9570177324108638e+01 2.3107669594727223e+01 1 0 0 +738 2 3.3881585883435528e-01 4.3942328605555732e+00 3.0940415646398296e+01 1.7571086406364834e+01 1 0 0 +2527 1 -7.2698607350615241e-01 2.3196844427726404e+00 2.8597361533093011e+01 3.0511378841156507e+01 0 0 0 +2385 2 3.8112394632777896e-01 2.9961022611046481e+01 3.0046928320472791e+01 2.9583730813162237e+01 -1 0 0 +2425 1 -7.1482193954971462e-01 3.3532621097783730e+00 1.9839960179927040e+01 3.0697845470502060e+01 0 0 0 +2044 1 -7.6541947644699238e-01 2.4080883844593615e+00 1.6570250945378213e+01 2.6274366783401948e+01 0 0 0 +2349 2 3.4925697880558282e-01 4.2177899621053410e+00 1.8625834447867678e+01 2.8263978262672715e+01 0 0 0 +1670 2 3.5537701753545869e-01 4.3957175266996851e+00 1.8261981054295262e+01 2.4220414729432971e+01 0 0 0 +2993 2 3.5601728201365512e-01 5.9966209851872598e+00 2.1505486325908254e+01 2.9316820119416924e+01 1 0 0 +2185 1 -7.2026698964259472e-01 5.9251447342090566e+00 2.1302848211743100e+01 3.0255932247279645e+01 1 -1 0 +2427 2 3.7781551298825800e-01 3.2391788583891357e+00 1.9129839771225384e+01 3.0004605488449087e+01 0 0 0 +2186 2 3.8086033796125646e-01 5.1316614119440169e+00 2.0823693620839357e+01 3.0628727699587035e+01 1 -1 0 +662 2 3.7040438123801894e-01 5.6057775253857596e+00 2.1244164183074147e+01 2.7714058504464710e+01 1 0 -1 +1669 1 -7.7973807097322501e-01 3.7105665137867598e+00 1.8465511511109611e+01 2.4917478135107892e+01 0 0 0 +661 1 -7.4345978647853916e-01 5.4534343238070910e+00 2.2178300475985267e+01 2.7535137116941208e+01 1 0 -1 +1671 2 3.7906399431028182e-01 3.6035188306125527e+00 1.9407400904731173e+01 2.5080826225205467e+01 0 0 0 +639 2 3.4775917502865855e-01 5.0086058037080203e+00 2.1304207456058961e+01 2.5805251422869500e+01 1 0 -1 +638 2 3.7575797283131918e-01 4.8161222937691592e+00 2.1373822266418401e+01 2.4186793679858802e+01 1 0 -1 +2609 2 3.6207718172912584e-01 2.5653745886657213e+00 1.7346433081956352e+01 2.5687148876610067e+01 0 0 0 +637 1 -7.5029474511640637e-01 4.3746138153245155e+00 2.1132142902691289e+01 2.5054344794489687e+01 1 0 -1 +1781 2 3.7299382573261469e-01 1.5271124588344611e+00 2.2359489900499078e+01 2.7318293041670938e+01 0 0 0 +1782 2 3.4965800040112033e-01 4.0408778846199250e-01 2.2811477995160018e+01 2.6495021835586197e+01 0 0 0 +1780 1 -6.6727446371460963e-01 7.6765915283417141e-01 2.1982486223802791e+01 2.6826298420496851e+01 0 0 0 +8 2 4.0004543789923119e-01 3.7389007622466433e+00 2.2956485676150958e+01 2.4736635630508982e+01 0 -1 -1 +2373 2 3.4132676429244602e-01 2.2320075841095659e+00 1.7572741224824838e+01 2.3968808897901820e+01 0 0 0 +2347 1 -6.9994644078339785e-01 3.2585968610693312e+00 1.8514001117853020e+01 2.8126629022433701e+01 0 0 0 +663 2 3.8517369262463574e-01 6.2863239824351833e+00 2.2550862664264713e+01 2.7125988994371482e+01 1 0 -1 +2985 2 3.5959307243929090e-01 2.7533647909566361e+00 2.0801544070023564e+01 2.3695961648486293e+01 1 0 0 +2980 1 -7.2435082162749465e-01 1.9530433639087641e+00 2.0497439297340019e+01 2.3255410862279671e+01 1 0 0 +2348 2 3.9242028395195871e-01 3.2298511116835784e+00 1.7896940828707912e+01 2.7452545440331555e+01 0 0 0 +1332 2 3.7557528071718405e-01 2.3335505391886112e+01 2.7170785156078885e+01 2.4806508931105750e+01 0 0 -1 +2970 2 3.6688522164120557e-01 2.1392287851070968e-01 1.6775029319005199e+01 2.8400191754781204e+01 1 0 0 +1164 2 3.7203740054446527e-01 2.3420702508344302e+01 1.5916410685922342e+01 2.7892214141606132e+01 0 0 -1 +877 1 -7.2797792673171768e-01 2.7326507547330130e+00 2.3122953324870057e+01 2.8587166585888376e+01 0 0 -1 +1373 2 3.7454744342175622e-01 3.5294120548527474e+00 2.2758599641007351e+01 2.8177262459028825e+01 1 0 -1 +878 2 3.4533057748804208e-01 2.7299791782970173e+00 2.2789702867485666e+01 2.9454504281095979e+01 0 0 -1 +1855 1 -7.4413045278774148e-01 2.0109463741570114e+01 2.8384278303775087e+01 3.0775028429911707e+01 0 -1 0 +789 2 3.2201335287888250e-01 8.0366521987961370e+00 1.6295480587007585e+01 2.6943826305270736e+01 0 0 -1 +1008 2 3.6199647950362324e-01 1.1433061008357118e+01 2.0584924781475298e+01 2.4739606332638903e+01 0 0 -1 +1007 2 3.3963757848030784e-01 1.1848870115635458e+01 1.9859120995618696e+01 2.6036267103374858e+01 0 0 -1 +2046 2 3.7504334709875575e-01 1.6784148202346003e+00 1.6097212511656824e+01 2.5866521603033110e+01 0 0 0 +1368 2 3.5296855135188632e-01 2.6786486543256075e+01 2.9770869533580811e+01 2.5853573431031720e+01 0 0 -1 +854 2 3.6495895283248919e-01 1.0286963693574066e+01 1.6226732856398215e+01 2.7079333688374668e+01 0 0 -1 +2580 2 3.7666573385358160e-01 8.0818711634162241e+00 1.9557816392836582e+01 3.0249395448745599e+01 0 0 0 +2984 2 3.4942380265166256e-01 7.3056665123708395e+00 2.4380438677743957e+01 2.9776738135504704e+01 1 0 0 +787 1 -7.1655311593151649e-01 7.1150450095111992e+00 1.6645050808161916e+01 2.6734791315587966e+01 0 0 -1 +2372 2 3.2708739682564875e-01 5.0403624953012516e+00 1.9460215584045418e+01 2.6762566269908149e+01 0 0 0 +2933 2 3.6884964838213624e-01 6.2588127909998352e+00 1.8712568461369344e+01 2.7358088496745232e+01 1 0 0 +2371 1 -7.6084226326464821e-01 5.7205299563339622e+00 1.9502373901037121e+01 2.7485782073226098e+01 0 0 0 +2579 2 3.7101854074803220e-01 7.3931112197157898e+00 1.9412394060699523e+01 2.8883205652423072e+01 0 0 0 +816 2 3.6774779926751000e-01 9.4885281301581639e+00 2.0502346966278203e+01 2.6628657758632169e+01 0 0 -1 +814 1 -7.4049522540214852e-01 8.9900266550976813e+00 2.0373456443070861e+01 2.7417177277438903e+01 0 0 -1 +1006 1 -7.4730406840951236e-01 1.1097194937958344e+01 2.0016171171720160e+01 2.5430917037415238e+01 0 0 -1 +815 2 3.5102478765766632e-01 9.6899271298978391e+00 2.0409386983556040e+01 2.8102725733044746e+01 0 0 -1 +929 2 3.5755448360355291e-01 1.2546024301591041e+01 2.0845001726412651e+01 2.8344045518432125e+01 0 0 -1 +2517 2 3.6053355160253997e-01 8.4146087133532834e+00 1.8066566043726258e+01 2.5923904072527709e+01 0 0 0 +2516 2 3.4208952252192504e-01 9.2010884982553840e+00 1.9021930393649431e+01 2.5203628674164495e+01 0 0 0 +2515 1 -6.8006417961155186e-01 8.3528672536724606e+00 1.8612341393371388e+01 2.5136481650863537e+01 0 0 0 +928 1 -7.4850589529028377e-01 1.1671665128308016e+01 2.0545031197013902e+01 2.8559542782304217e+01 0 0 -1 +930 2 3.5951898378706293e-01 1.1589631713643650e+01 2.0699238047084538e+01 2.9503360926302939e+01 0 0 -1 +411 2 3.6526854477137383e-01 1.0645338564008624e+01 1.8898674590499819e+01 2.8282499080327316e+01 0 -1 -1 +409 1 -7.3779704757276465e-01 1.0766834302382104e+01 1.7944319338377518e+01 2.8103255051933751e+01 0 -1 -1 +270 2 4.0932337550909392e-01 8.1287106356269145e+00 2.3450734020607989e+01 2.7686443730116949e+01 0 0 -1 +268 1 -7.6334650286139838e-01 7.9717188740338152e+00 2.2791802523291700e+01 2.6972408292185314e+01 0 0 -1 +269 2 3.8850743812907546e-01 8.3507946121563723e+00 2.1871436925633514e+01 2.7166011096979176e+01 0 0 -1 +10 1 -7.4144922682737113e-01 1.2652418375462048e+01 2.3822356309873324e+01 2.9498822671200010e+01 0 -1 -1 +2578 1 -6.8685119850518728e-01 7.7546564097184811e+00 1.8883074033833029e+01 2.9632613543449569e+01 0 0 0 +277 1 -7.4706014041644864e-01 6.3301207185237756e+00 1.5872939889636022e+01 2.4321732661954936e+01 0 0 0 +1139 2 3.3703715380538052e-01 1.1492728536418293e+01 1.7905262033176264e+01 2.4808368934517500e+01 0 0 -1 +11 2 3.5868183038247675e-01 1.3261055176239545e+01 2.4501129818021180e+01 2.9929913633790228e+01 0 -1 -1 +279 2 3.9636694809602385e-01 6.6822072006268058e+00 1.6388886105691455e+01 2.5120445204020498e+01 0 0 0 +1845 2 4.0037342141108112e-01 7.9788801684986606e+00 2.3368313336261640e+01 2.5155337074150104e+01 0 -1 0 +969 2 3.7681680487321695e-01 1.0780364875361105e+01 1.6902594079348503e+01 2.9810591300870293e+01 0 0 -1 +967 1 -8.0341325939387198e-01 1.0920621920707132e+01 1.6408302649097482e+01 3.0592893380933546e+01 0 0 -1 +2020 1 -7.7720933259377167e-01 8.2167274088490192e+00 2.3526983558392313e+01 2.4273999926959096e+01 0 -1 0 +2330 2 3.1725450587772430e-01 1.3446069005233168e+01 3.0100047985129379e+01 2.9198445776585761e+01 0 0 0 +1562 2 4.0113596528416090e-01 6.7074618120947695e+00 1.8100496235919344e+01 3.0879391555179403e+01 0 0 0 +2340 2 3.4546254223701778e-01 2.6540877819908410e+01 3.0447579965943490e+01 3.0279007941670262e+01 -1 0 0 +2333 2 3.7427108553013344e-01 3.0312874408061170e+01 2.7955092532008830e+01 2.7083093710849329e+01 -1 0 0 +1838 2 3.6426806310453319e-01 2.7112712927454506e+01 2.5237078829455747e+01 2.9994996804296004e+01 -1 -1 0 +2921 2 3.6796808973412642e-01 2.4922742466873604e+01 1.7489024369484341e+01 1.5888872013393337e+01 0 0 0 +736 1 -7.4994288039603940e-01 4.4751578473554732e+00 3.0231809296514271e+01 1.6926561001074131e+01 1 0 0 +410 2 3.7103952897677045e-01 1.1700570944419812e+01 1.7907387620704849e+01 2.8072410962195082e+01 0 -1 -1 +2249 2 3.6271331741513041e-01 1.6047288290823513e+01 2.1465633278741688e+01 2.2290319722325474e+01 0 0 0 +2248 1 -7.5260699785787322e-01 1.5731104879424302e+01 2.0552829578736780e+01 2.2430334922013024e+01 0 0 0 +2804 2 3.4363111603013075e-01 1.4471450578665561e+01 2.1724211498166685e+01 2.3504168456583962e+01 0 0 0 +2803 1 -7.4214056675984197e-01 1.3740812956746506e+01 2.1922717519747298e+01 2.4070672139493468e+01 0 0 0 +2250 2 3.5142395968296219e-01 1.6129463650684603e+01 2.0248459053629599e+01 2.3317441670243696e+01 0 0 0 +2582 2 3.8977704893254450e-01 1.2861941248787465e+01 1.7812813146045013e+01 2.3995236909727296e+01 0 0 0 +563 2 3.5360806667720890e-01 1.5080638054134404e+01 1.8520850171831054e+01 2.5758444075542553e+01 0 0 0 +580 1 -7.1206380693296645e-01 1.5819259777887305e+01 3.0978924485328747e+01 2.6928838839147804e+01 0 -1 -1 +2581 1 -7.2464733914795854e-01 1.2072914091350238e+01 1.7310040258710867e+01 2.4319887671166473e+01 0 0 0 +2606 2 3.8488747493431397e-01 1.7223805320404139e+01 1.8751765336860593e+01 2.8549103739813059e+01 0 0 0 +2629 1 -7.1240331807136525e-01 1.3724090020591767e+01 1.7128619971024985e+01 2.8231056127148104e+01 0 0 0 +2630 2 3.9094337921919620e-01 1.4281730500596009e+01 1.6483114767839940e+01 2.7746463813392200e+01 0 0 0 +2607 2 3.9206192799752232e-01 1.6847408948963519e+01 1.7849259917193070e+01 2.7332766647667007e+01 0 0 0 +2631 2 3.9134762402389950e-01 1.4279825054977309e+01 1.7441650590514307e+01 2.8860695893539742e+01 0 0 0 +2763 2 3.7883083012660163e-01 1.4862849102273890e+01 2.1199087176219283e+01 2.7047873708804747e+01 0 0 0 +2610 2 3.8097877885246345e-01 1.4310294745680100e+01 2.1191642484291055e+01 2.5568789027123973e+01 0 0 0 +564 2 3.8620485995142811e-01 1.6334436071431139e+01 1.8209376617717730e+01 2.4885801605375711e+01 0 0 0 +562 1 -6.9442575926660211e-01 1.5960965023542474e+01 1.8000404601672813e+01 2.5681609184661667e+01 0 0 0 +1993 1 -7.8544544675307293e-01 1.7438500911029035e+01 1.9461175578395899e+01 2.4088072177965216e+01 0 -1 0 +1995 2 3.6610933987576810e-01 1.7858694438469321e+01 1.9743094768525580e+01 2.4957071043448625e+01 0 -1 0 +1994 2 3.8039387092930027e-01 1.8053146063622791e+01 1.9757759414042464e+01 2.3452471451239436e+01 0 -1 0 +2608 1 -6.9546497224632975e-01 1.4427363092491850e+01 2.0614043292949013e+01 2.6354243067334536e+01 0 0 0 +2605 1 -7.0024437477443791e-01 1.7089106746636350e+01 1.7781850141267849e+01 2.8280314037135241e+01 0 0 0 +470 2 3.4606186412457152e-01 1.6607238470069163e+01 2.1272678734434784e+01 2.8979620400158684e+01 0 0 -1 +471 2 3.8486238589398858e-01 1.8010319637759057e+01 2.0559641968183449e+01 2.9183181282864364e+01 0 0 -1 +469 1 -7.5831135526856086e-01 1.7013760232937795e+01 2.0417007679385165e+01 2.9221752671395731e+01 0 0 -1 +1810 1 -6.8899465113569558e-01 1.7911312854825663e+01 1.6412749962375969e+01 2.3513700999536169e+01 0 -1 0 +2771 2 3.7489250165045396e-01 1.8493762769375266e+01 1.6714324027319922e+01 2.8490710819456293e+01 0 0 0 +204 2 3.6041723731107411e-01 1.5442314737664583e+01 1.9466709597492596e+01 3.0037712119166141e+01 0 -1 -1 +208 1 -7.2934340302405676e-01 1.4871228020502002e+01 1.8824698229469004e+01 3.0484373772147251e+01 0 -1 -1 +1366 1 -7.4613125621415322e-01 2.6643465478865014e+01 2.9872579896477610e+01 2.4914848573997180e+01 0 0 -1 +1147 1 -7.5456616405851118e-01 2.4163657367115821e+01 1.6259721158965124e+01 2.3377254583738907e+01 0 0 -1 +2964 2 3.6279463005322188e-01 2.4298622883527816e+01 1.6542279311060948e+01 2.5095159947458509e+01 0 0 0 +2770 1 -7.7205724521821151e-01 1.9427531126532596e+01 1.6342768478911413e+01 2.8787123080373348e+01 0 0 0 +2772 2 3.6390852749045111e-01 1.9248788262341225e+01 1.5861972063849548e+01 2.9589690494124500e+01 0 0 0 +2692 1 -7.3114909635428738e-01 2.4990018061830138e+01 2.3585327886121178e+01 2.6797083651917649e+01 0 0 0 +424 1 -7.2929243113180064e-01 2.1239111080180553e+01 1.8939714610065902e+01 3.0062136047596304e+01 0 0 -1 +426 2 4.1507469421731258e-01 2.0759460028566689e+01 1.9761222262362434e+01 3.0087046903840445e+01 0 0 -1 +1301 2 4.0909015601880788e-01 2.0767657987657248e+01 1.8167735872840655e+01 2.3088357058105732e+01 0 0 0 +447 2 3.6191683487441856e-01 2.4868176168858252e+01 1.7637350263868818e+01 2.9233546595072163e+01 0 0 -1 +1169 2 3.5321442406942771e-01 2.0277735005661945e+01 2.0606302196555387e+01 2.6436307245565981e+01 0 0 -1 +421 1 -6.7318672714800865e-01 1.9429796533662035e+01 2.0122675620520248e+01 2.6266337750176962e+01 0 -1 -1 +423 2 3.2409281002149115e-01 1.9884268339156151e+01 1.9303723181849239e+01 2.5886815017702389e+01 0 -1 -1 +2765 2 3.5381083906999028e-01 2.0505030447930626e+01 1.7688359823121470e+01 2.5712955095425375e+01 0 0 0 +2764 1 -7.5695650025452821e-01 2.0398911189531699e+01 1.7533166422233943e+01 2.4798122794444140e+01 0 0 0 +2766 2 3.8334976508300433e-01 2.0683086237215296e+01 1.6572826079878492e+01 2.4694602340485581e+01 0 0 0 +2739 2 3.8092389943616745e-01 2.0598879023088998e+01 1.7308868782891839e+01 2.7904348744792323e+01 0 0 0 +2737 1 -7.5949639804443092e-01 2.1237717472622915e+01 1.7984561023148117e+01 2.7588141215097284e+01 0 0 0 +2800 1 -7.6863444694662719e-01 1.9762401024159434e+01 2.0920727819452814e+01 2.9158192822963130e+01 0 0 0 +2962 1 -7.2012821007221539e-01 2.4782289513233604e+01 1.7161592013255284e+01 2.5759584365449108e+01 0 0 0 +2963 2 3.9475884974624215e-01 2.4642101980632091e+01 1.8152731193999116e+01 2.5386051097155971e+01 0 0 0 +2200 1 -7.0806354251879322e-01 2.4803482404097416e+01 1.9573007909627194e+01 2.4639957992118209e+01 0 0 0 +2202 2 3.5398416735722610e-01 2.5208295664395344e+01 2.0065017129635752e+01 2.5355732899804082e+01 0 0 0 +1345 1 -7.4077799166676994e-01 2.4337151889574532e+01 2.0976359468170397e+01 2.7482560070454834e+01 0 0 0 +2738 2 3.5382670487519752e-01 2.2154171455854229e+01 1.7571991838633284e+01 2.7621612234553314e+01 0 0 0 +1347 2 3.5767944889164582e-01 2.4098675887539958e+01 2.1058088172753649e+01 2.8429073543605433e+01 0 0 0 +2890 1 -7.1134171079813080e-01 2.3948994068967480e+01 2.1768390795138274e+01 3.0239052543182453e+01 0 0 0 +2194 1 -7.7005533830644213e-01 2.1593578849022897e+01 2.1909665487347979e+01 2.7150936207444126e+01 0 -1 0 +2801 2 3.7680248718311998e-01 1.9753315877993963e+01 2.1850851090497795e+01 2.9250284169925031e+01 0 0 0 +2802 2 3.7775311204537776e-01 2.0088431299985153e+01 2.0835141653967284e+01 2.8262560503447393e+01 0 0 0 +1931 2 3.7340981769755499e-01 2.2481048550654055e+01 2.1634913462016630e+01 2.7334322781005660e+01 0 -1 0 +425 2 3.7733790477895340e-01 2.1341562748922446e+01 1.8715140346393170e+01 2.9035597074486233e+01 0 0 -1 +1520 2 3.5081941354284474e-01 2.8604862763264908e+01 2.6064968730485209e+01 3.0012145223389343e+01 -1 -1 0 +1163 2 3.5123299324139184e-01 2.4218545706233790e+01 1.7177471664828058e+01 2.7344628742021239e+01 0 0 -1 +2195 2 3.7191712074675409e-01 2.1641294437109263e+01 2.2553720625071406e+01 2.6358006779170779e+01 0 -1 0 +2787 2 3.7900832422832464e-01 2.1357955026866012e+01 2.3358944425225616e+01 2.8043798120570020e+01 0 0 0 +1162 1 -7.7294150906629944e-01 2.3738793405157892e+01 1.6793835797848175e+01 2.8183931456706201e+01 0 0 -1 +777 2 3.6526099881417373e-01 2.9291447506110003e+01 1.9633422795007050e+01 3.0227173720571582e+01 -1 0 -1 +2948 2 3.3876707305675657e-01 2.5840550746034133e+01 2.6563734313338895e+01 2.5634148093608594e+01 0 0 0 +1519 1 -7.4423344612837405e-01 2.8566053943919371e+01 2.5389228152121881e+01 2.9231470426526773e+01 -1 -1 0 +2892 2 3.4394128628595089e-01 2.7411376064331339e+01 1.8548164515244540e+01 3.0704759839983378e+01 0 0 0 +2891 2 3.1500274960369046e-01 2.4942839275197503e+01 2.1683154869679498e+01 3.0248557032862443e+01 0 0 0 +445 1 -7.2055742434151882e-01 2.5453325969256660e+01 1.8201205864971534e+01 2.9922644033042840e+01 0 0 -1 +1346 2 3.7426422957622152e-01 2.4777820535855341e+01 2.1777859132828794e+01 2.7157887994497667e+01 0 0 0 +1959 2 3.5676757844118456e-01 2.5955744968716498e+01 1.8830190125656461e+01 2.9401250695427361e+01 0 0 0 +2778 2 3.3240223367030014e-01 2.5653419504413105e+01 1.5905306876794777e+01 2.7091852749206318e+01 0 0 0 +2969 2 3.6140904145656000e-01 3.0371147281621667e+01 1.7962524420357099e+01 2.8442466939553253e+01 0 0 0 +1759 1 -7.0207241864620085e-01 2.6803821166335151e+01 1.9902731058748088e+01 2.8047471868469973e+01 0 0 0 +1761 2 3.3033621077096037e-01 2.6146036844911823e+01 2.0376170066351857e+01 2.7486409083193607e+01 0 0 0 +2201 2 3.7114937986094171e-01 2.5492265507516144e+01 1.9491449559574850e+01 2.3980633814947911e+01 0 0 0 +2852 2 3.8642713804367368e-01 3.0292001594240364e+01 2.0568454834328030e+01 2.6273874260723719e+01 0 0 0 +2851 1 -7.1396659452734812e-01 2.9781360737889816e+01 1.9760783830209274e+01 2.6173936849067317e+01 0 0 0 +2853 2 3.6259541874575191e-01 2.9856612523789366e+01 1.9371806996527081e+01 2.7002171787561632e+01 0 0 0 +1760 2 3.3584733374450615e-01 2.7063943447771521e+01 2.0579588662236208e+01 2.8739497742062330e+01 0 0 0 +2873 2 3.8156420091352133e-01 2.8303034274005881e+01 1.8810809494973025e+01 2.3592363344886095e+01 0 0 0 +2377 1 -7.7285998145380552e-01 2.7411198341751980e+01 1.8610465274165609e+01 2.3509268190818457e+01 -1 0 0 +2368 1 -7.4133803164839684e-01 3.0071042992031234e+01 1.7172635406489047e+01 2.5360360610992696e+01 -1 0 0 +1411 1 -7.0726184327607333e-01 2.9703089302358126e+01 2.2688212790944046e+01 2.9781736784407720e+01 0 1 -1 +2378 2 3.6741168961987092e-01 2.7325458878714954e+01 1.7854217822780477e+01 2.2924957783030532e+01 -1 0 0 +1413 2 3.4035912367261106e-01 2.8906208759675490e+01 2.2121840792563646e+01 2.9850792566144921e+01 0 1 -1 +2366 2 3.6557559721913407e-01 2.7846204052099736e+01 2.0623467579608405e+01 2.4661950593140830e+01 -1 0 0 +1412 2 3.7429572264244859e-01 2.9997367793858011e+01 2.2785128819122058e+01 3.0713338178886954e+01 0 1 -1 +1333 1 -7.5236688755738135e-01 2.7027778479900594e+01 2.1701169214954394e+01 3.0363360727079922e+01 0 0 -1 +2370 2 3.8938617284034410e-01 2.9791141378046454e+01 1.8065002579796118e+01 2.5164060641733553e+01 -1 0 0 +2365 1 -7.0341069822843671e-01 2.7292999694524205e+01 2.1051650997946986e+01 2.5299927111788076e+01 -1 0 0 +2367 2 3.5931050852613372e-01 2.7202886627774667e+01 2.0591058063121025e+01 2.6141104189896701e+01 -1 0 0 +1081 1 -7.2623026523966339e-01 1.0359708259632736e+01 2.5754602836530488e+01 3.0597181989901138e+01 0 0 -1 +2369 2 3.8601335417491206e-01 3.0184442787734234e+01 1.7122241626572624e+01 2.6392827528273283e+01 -1 0 0 +2151 2 3.5893200566606132e-01 2.9853835223179420e+01 2.0775184427352997e+01 2.9358028437581574e+01 0 0 0 +2968 1 -7.0585150738382718e-01 3.0415294278882868e+01 1.7061252469570523e+01 2.8049592201235807e+01 0 0 0 +2252 2 3.3233735956158739e-01 2.7135265159528309e+01 2.2677530133245838e+01 2.3586960967350421e+01 -1 0 0 +775 1 -7.1814401310402909e-01 2.9918594119506444e+01 1.9839242677151031e+01 2.9430222869433294e+01 -1 0 -1 +1882 1 -7.2962295169510083e-01 1.9766300369619930e+01 2.7484739766634636e+01 1.6840089774999381e+01 0 -1 0 +2363 2 3.9183006922419689e-01 3.0839120732604822e+01 1.5524605227580697e+01 2.5368644947236863e+01 -1 0 0 +1988 2 3.6340908240412312e-01 3.0967276367153293e+01 2.7788527741365566e+01 2.3146059568728401e+01 0 -1 0 +1554 2 3.5062160154457800e-01 2.1164725943631124e+00 2.7678281093954819e+01 2.4448838860822121e+01 0 -1 0 +1552 1 -7.5913021673515657e-01 1.9530853219502355e+00 2.7658148697066434e+01 2.3496036916015548e+01 0 -1 0 +2617 1 -7.1264602361352236e-01 1.5842973009205968e-01 2.8313015250304193e+01 2.7375141368128162e+01 0 0 0 +1383 2 3.4875302711310585e-01 1.4474008158954297e+00 2.4172295651312034e+01 2.4966607673459713e+01 1 0 -1 +1483 1 -7.6320194121864704e-01 2.5453294539634537e+00 2.9521571381169366e+01 2.6039842449803501e+01 1 0 0 +1611 2 3.5863197081729287e-01 3.6205108526375840e+00 3.0060441539693148e+01 2.7362278849312919e+01 0 -1 0 +7 1 -7.5409262646562625e-01 3.3900185909921507e+00 2.3823035607086346e+01 2.4742428461570352e+01 0 -1 -1 +992 2 3.7610283904537362e-01 7.4047158409418379e-01 2.4993492128150478e+01 2.6937442204874170e+01 0 0 -1 +1381 1 -7.0217098583733417e-01 4.5520265359593814e-01 2.4391166630035702e+01 2.5003301853567422e+01 1 0 -1 +9 2 3.7975874120524844e-01 3.9878364961086796e+00 2.4416407729365705e+01 2.5299613634629868e+01 0 -1 -1 +2988 2 3.6537032146765108e-01 5.3630589197478207e+00 2.6674288377103551e+01 2.5588961302343627e+01 1 0 0 +888 2 3.7320512175451920e-01 2.0259605386041040e+00 2.8989725874326989e+01 2.6643812594427295e+01 0 0 0 +1648 1 -6.8731347318196734e-01 4.3383930649571809e+00 2.6876900521866716e+01 2.8627980167180233e+01 0 -1 0 +1650 2 3.5035214020937255e-01 4.4602818424953181e+00 2.7800290571680282e+01 2.8974432396754139e+01 0 -1 0 +1485 2 3.7992839106175530e-01 2.0724564809390413e+00 3.0352605799639591e+01 2.6080167500462871e+01 1 0 0 +2986 1 -7.0517640356463918e-01 5.0520641376271467e+00 2.5868858529121702e+01 2.5993326509601506e+01 1 0 0 +2529 2 3.4380582257115677e-01 2.2785048511840382e+00 2.7600134441466800e+01 3.0465877467269781e+01 0 0 0 +1649 2 3.6993684073797140e-01 3.7866749124656991e+00 2.6503061020048609e+01 2.9334048146157194e+01 0 -1 0 +794 2 3.4907112031664300e-01 5.0334666622090438e+00 2.9699565783287376e+01 2.9453950022178201e+01 0 0 -1 +2528 2 3.2110433303502028e-01 3.2630215633260642e+00 2.8788177915042240e+01 3.0266879555696274e+01 0 0 0 +94 1 -7.3215244151473424e-01 5.4398947636738129e+00 2.8944232487265118e+01 2.9996847749942390e+01 0 0 -1 +1961 2 3.6720856359441328e-01 1.1058221646402345e+01 2.3018171575082601e+01 3.0437508092903503e+01 0 0 0 +96 2 3.6525225261484517e-01 6.3672541858607197e+00 2.8908676796345578e+01 2.9657490921514537e+01 0 0 -1 +1389 2 3.6840834067600892e-01 4.3452777825173037e+00 2.9298867914184569e+01 2.5621753667941775e+01 1 0 -1 +2942 2 3.8448109061175989e-01 5.1013602095786190e+00 2.6106041213995315e+01 2.6924039253064095e+01 1 -1 0 +1387 1 -7.2554241457730873e-01 5.2127084233274603e+00 2.8978618994196445e+01 2.5197873399463443e+01 1 0 -1 +2386 1 -7.7376847037950447e-01 2.6969910565227856e+01 2.8386413434994740e+01 3.0314562483857912e+01 -1 0 0 +793 1 -7.1460856800938677e-01 9.7591676489196044e-01 2.5523489704217855e+01 2.7659852576475188e+01 0 0 -1 +795 2 3.8577436027645262e-01 1.4825937931493596e+00 2.4955746313923022e+01 2.8220796550580239e+01 0 0 -1 +1388 2 3.6925195446831038e-01 5.1691797847700611e+00 2.9393746663623940e+01 2.4310500047171569e+01 1 0 -1 +2618 2 3.7121663015303408e-01 5.8782697787149829e-01 2.7432234349809995e+01 2.7603766565551126e+01 0 0 0 +1382 2 3.7990383263614713e-01 2.6443699335495163e-01 2.4767822202894063e+01 2.4144401120631628e+01 1 0 -1 +106 1 -7.0486890047044037e-01 2.7985788214763172e+00 2.5569580527672773e+01 3.0721585942445316e+01 0 -1 -1 +2191 1 -7.3083575291983516e-01 2.8704437797836427e+01 2.6894651490831347e+01 2.6734975656461348e+01 0 -1 0 +2694 2 3.6337366625768674e-01 2.5737670399612583e+01 2.4216796695439196e+01 2.6649687322663659e+01 0 0 0 +2176 1 -7.5613931522288169e-01 2.6762040473911160e+01 2.8483105591886680e+01 2.7605050075699619e+01 0 -1 0 +925 1 -7.2044071090621375e-01 1.1004842122560150e+01 3.0016032342643072e+01 2.3574561590193454e+01 0 0 0 +927 2 3.5110245458827566e-01 1.0466623919005164e+01 2.9355810372546408e+01 2.4065796143698797e+01 0 0 0 +779 2 3.6630765481385175e-01 8.6167900450400197e+00 2.8521014218489622e+01 2.3190577399418117e+01 0 0 0 +1535 2 3.4816152118132787e-01 7.0727241547640611e+00 2.8396433899465585e+01 2.2807856871500093e+01 0 -1 0 +2178 2 3.5675646291851237e-01 2.6856755211333482e+01 2.8666566478278924e+01 2.8626403150797390e+01 0 -1 0 +1534 1 -7.2079320399291869e-01 7.8709229505903080e+00 2.8881479574040327e+01 2.2696054936946226e+01 0 -1 0 +209 2 3.7890348180635819e-01 1.2096436414616607e+01 2.4283157202713589e+01 2.8853301925179338e+01 0 -1 -1 +1694 2 3.7520729136396180e-01 1.0953731572345454e+01 2.4580176926173490e+01 2.6777936550244700e+01 0 -1 0 +1693 1 -7.2028810897973572e-01 1.0715917823054868e+01 2.4721082239705062e+01 2.7764209730456109e+01 0 -1 0 +2483 2 3.8049307740787236e-01 6.8324288598040166e+00 2.9479525315165830e+01 2.5702964183565111e+01 0 0 0 +2983 1 -7.3414451880007303e-01 7.9875708816313775e+00 2.4463438658456099e+01 2.9096783413365394e+01 1 0 0 +2590 1 -7.2907085058343046e-01 1.0713225216098387e+01 2.8165099995967665e+01 2.9144048021431452e+01 0 0 0 +2022 2 3.7474215018716495e-01 7.9321816111131778e+00 2.4454649762766973e+01 2.4141189095730770e+01 0 -1 0 +2388 2 3.3855074313136202e-01 8.8410670268371678e+00 2.4523189780805186e+01 2.9687125346169363e+01 0 0 0 +778 1 -7.3530338721298338e-01 7.4537888540314698e+00 2.6201661620481389e+01 2.4328928176807235e+01 0 0 0 +95 2 3.5587007654712272e-01 6.6464886966388210e+00 2.6455432280956632e+01 2.3738958179300059e+01 0 0 -1 +780 2 3.6094472110162096e-01 8.1797419624579817e+00 2.6754160530349242e+01 2.4063336587493822e+01 0 0 0 +2351 2 3.7263350397852646e-01 1.2095558771593497e+01 2.6893517914914153e+01 2.8658514256147928e+01 0 0 0 +1900 1 -7.5017107106248870e-01 1.0047486607705302e+01 2.7297477414103192e+01 2.4106027791286110e+01 0 -1 0 +1902 2 3.7742380634974315e-01 1.0357768258223230e+01 2.6528225575362569e+01 2.4640372223980712e+01 0 -1 0 +2436 2 3.3064507514740132e-01 8.2323848658921044e+00 2.6245640125394928e+01 2.7666321339555154e+01 0 0 0 +2434 1 -7.6684558527022262e-01 8.6740245078306568e+00 2.6918569071689486e+01 2.7162793777667694e+01 0 0 0 +2435 2 3.6972965492390847e-01 8.2509188569067984e+00 2.6878450585816331e+01 2.6292718318792783e+01 0 0 0 +1713 2 3.6317368550040352e-01 9.9653952796582459e+00 2.5352711622882772e+01 2.7677101168969372e+01 0 -1 0 +2482 1 -6.6884895017431434e-01 7.7119215590855346e+00 2.9819988715105385e+01 2.5913585988215438e+01 0 0 0 +1768 1 -7.4820989217329548e-01 1.0806932376836187e+01 2.4697294621808201e+01 2.4999548897865250e+01 0 0 0 +2352 2 3.3682209783127309e-01 1.2465870149761788e+01 2.5664582375565605e+01 2.7903000497471627e+01 0 0 0 +986 2 3.6084021645724457e-01 8.2753706048266480e+00 2.8074798137637920e+01 2.8296011002168939e+01 0 0 -1 +985 1 -7.8115382437982284e-01 7.8739472659069119e+00 2.9015117011382625e+01 2.8528028459092397e+01 0 0 -1 +987 2 3.9002089906374315e-01 7.6985290404801940e+00 2.9413557581916631e+01 2.7637481126301328e+01 0 0 -1 +1316 2 3.5091206851755652e-01 1.7770036251770858e+01 2.8700256245078734e+01 1.5883152222774891e+01 0 0 0 +2350 1 -7.1253130897378247e-01 1.2814965956497741e+01 2.6557520855818161e+01 2.8070815413822476e+01 0 0 0 +2592 2 3.4110753363333102e-01 1.0030333530839522e+01 2.8107151557959874e+01 2.8417960549489454e+01 0 0 0 +1770 2 3.5170336486136156e-01 1.1513488860313641e+01 2.4656801810522989e+01 2.4286819711244870e+01 0 0 0 +606 2 3.6385264633856612e-01 9.1466917539784660e+00 3.0404332468949825e+01 2.8859181933473284e+01 0 -1 -1 +2591 2 3.7854329901120853e-01 1.0438083463654520e+01 2.7540518291983641e+01 2.9775168239414267e+01 0 0 0 +1620 2 3.3604212857084048e-01 6.0709212969241069e+00 2.6247420923327301e+01 1.5980916154775347e+01 0 -1 0 +2687 2 3.9087604956725852e-01 1.7622129756600057e+01 2.9928015108487546e+01 3.0079417920144522e+01 0 0 0 +1647 2 3.6075636633338520e-01 2.5235880987689036e+01 2.8038742066905233e+01 2.6646719148616551e+01 -1 -1 0 +1727 2 3.6764575340621874e-01 1.6452491471712243e+01 2.4081167199556990e+01 2.2777656890647606e+01 0 -1 0 +582 2 3.6831021773205630e-01 1.5549289163030222e+01 3.0201367488385721e+01 2.7417632738869521e+01 0 -1 -1 +823 1 -7.3516470270034551e-01 1.0035927205217823e+00 2.8118524429521937e+01 1.5676637337578386e+01 0 0 0 +2805 2 3.7391239590807357e-01 1.3538816278882962e+01 2.3684716482749010e+01 2.4326891292117342e+01 0 0 0 +2810 2 3.9093755993206647e-01 1.4014598370655994e+01 2.3023500339754261e+01 2.8639030381633468e+01 0 0 0 +2809 1 -7.3262781038372915e-01 1.4756960259799975e+01 2.2508609309234476e+01 2.8255141987300249e+01 0 0 0 +2190 2 3.6014914737506321e-01 1.5334509282582109e+01 2.3213266681974812e+01 2.7842344949930002e+01 0 -1 0 +2070 2 3.8882041488348895e-01 1.6553590010225371e+01 2.5286772999264638e+01 2.7442275352269800e+01 0 -1 0 +2002 1 -7.0378300403560734e-01 1.7129616940812923e+01 2.5389778301853571e+01 2.4275413345063487e+01 0 -1 0 +2003 2 3.8780752904161625e-01 1.6655070310705369e+01 2.6207382688531730e+01 2.3936863052330455e+01 0 -1 0 +2068 1 -7.2808066890463030e-01 1.6095334105090782e+01 2.4803547543770900e+01 2.6784206983098890e+01 0 -1 0 +1478 2 4.1761848612086006e-01 1.6254280242307647e+01 2.5075195163945317e+01 2.5934700912500176e+01 0 0 0 +2905 1 -7.1075187786685157e-01 1.4617800468373995e+01 2.5410815879726041e+01 3.0487900816105022e+01 0 0 0 +2906 2 3.7754294860194931e-01 1.4223248156640576e+01 2.6338978664063184e+01 3.0430746927634406e+01 0 0 0 +2572 1 -7.4531379502836315e-01 1.3546298381435944e+01 2.8095604635320178e+01 3.0502364202542847e+01 0 0 0 +384 2 3.5651215750392595e-01 1.3886508788719953e+01 2.9870827945273504e+01 2.4100047036607084e+01 0 -1 -1 +1285 1 -7.2050589708172608e-01 1.3511883500665618e+01 2.4681824286146849e+01 2.4301924947063576e+01 0 0 0 +1287 2 3.9328036995849186e-01 1.4036705975733248e+01 2.9008649365676227e+01 2.5465121929570358e+01 0 0 0 +382 1 -7.5527424873250282e-01 1.4117349154791070e+01 2.9941452563643050e+01 2.5081547463325599e+01 0 -1 -1 +2313 2 4.0458292355223296e-01 1.3659834686985018e+01 2.6447811829920681e+01 2.5044311700596946e+01 0 0 0 +1843 1 -7.3135402935307969e-01 1.3676724329591480e+01 2.7330696169100058e+01 2.5481621223302461e+01 0 -1 0 +1844 2 3.7595962128880162e-01 1.3557345164051824e+01 2.7180939481059948e+01 2.6412742230556990e+01 0 -1 0 +2057 2 3.6506409503807830e-01 1.7042007962283868e+01 2.7042214182468303e+01 2.9010314649618508e+01 0 0 0 +2058 2 3.4009653230409059e-01 1.7064597438359606e+01 2.5768114672953143e+01 2.9894780175783726e+01 0 0 0 +2056 1 -7.2199243227411480e-01 1.7325713749006116e+01 2.6102863001217031e+01 2.9065231302929991e+01 0 0 0 +387 2 3.3951229230480767e-01 1.4242415604477493e+01 2.8193928381198607e+01 2.7710812344400068e+01 0 -1 -1 +2524 1 -7.1540897185153074e-01 1.5088215211884521e+01 2.8346132092430032e+01 2.8163745691278145e+01 0 0 0 +2525 2 3.3713086907605433e-01 1.4908941862619400e+01 2.8028687490498818e+01 2.9120332366794937e+01 0 0 0 +2573 2 3.5737926522529234e-01 1.2760235703432556e+01 2.8621653619195200e+01 3.0370938938254547e+01 0 0 0 +2688 2 3.3244394654366038e-01 1.6467799768217787e+01 2.8971082726217151e+01 2.9575279074570702e+01 0 0 0 +1748 2 3.9932207221014837e-01 1.7943470010350762e+01 2.5823004247923688e+01 2.4619943642054714e+01 0 -1 0 +2686 1 -7.4281423106968880e-01 1.7209207993618779e+01 2.9010021595303098e+01 3.0203456019417672e+01 0 0 0 +2726 2 3.6069766156550270e-01 1.8044706625504677e+01 2.4171176863546254e+01 2.8673693693914721e+01 0 0 0 +1911 2 3.6333317646275737e-01 2.1674751578335314e+01 2.3230973178826719e+01 2.3120171874733760e+01 0 -1 0 +1856 2 3.7801019952403159e-01 1.9157564727075059e+01 2.8463717008823142e+01 3.0565682923722431e+01 0 -1 0 +2089 1 -7.0496813300901562e-01 3.8846483720764891e+00 1.5580136852342440e+01 3.0988989949697324e+01 1 0 -1 +1446 2 3.5684944118174039e-01 2.3622382153967447e+01 2.1145980699353274e+01 3.0922007381584152e+01 0 0 -1 +20 2 3.8313988649451719e-01 2.3567149168289870e+01 2.6521600224523564e+01 2.9047557301732944e+01 -1 -1 -1 +1645 1 -7.2975217517491020e-01 2.4503116602137837e+01 2.8220645360772622e+01 2.6024256833339081e+01 -1 -1 0 +1479 2 3.3277901451789660e-01 2.3043266049476788e+01 2.9472055510377256e+01 2.3026684338522582e+01 0 0 0 +21 2 3.6957552563387847e-01 2.3004009724383639e+01 2.5151261985446151e+01 2.9010157214707696e+01 -1 -1 -1 +19 1 -7.3283206707000104e-01 2.3837342577896429e+01 2.5590600819654583e+01 2.9004041557282498e+01 -1 -1 -1 +2919 2 3.3657564800542050e-01 2.3226334412340972e+01 2.8631419923044739e+01 3.0565437556374363e+01 0 0 0 +2994 2 3.3185646686298959e-01 2.2130529141372453e+01 2.7788822981808160e+01 3.0249116095757081e+01 0 0 0 +2811 2 3.4347782695574663e-01 2.1728890000655692e+01 2.9920986248140004e+01 2.5214011447807373e+01 0 0 0 +2950 1 -7.5540204534745348e-01 2.0926670256690628e+01 2.9448847715040952e+01 2.5024621462083321e+01 0 0 0 +2725 1 -7.3873503702858367e-01 1.8570953662424213e+01 2.3495487828789724e+01 2.9114240296907006e+01 0 0 0 +2727 2 3.4578431704926010e-01 1.8521402073736528e+01 2.3803369510420776e+01 3.0046711269915065e+01 0 0 0 +2706 2 4.0134355968739022e-01 2.0027182644166121e+01 2.6557493357920286e+01 2.4145390728749291e+01 0 0 0 +2992 1 -7.5913711940645257e-01 2.2970109524231784e+01 2.8032645642922468e+01 2.9869171958268229e+01 0 0 0 +385 1 -7.1279576946000944e-01 2.2400765939444359e+01 2.3888346755024067e+01 2.5425837077985594e+01 0 -1 -1 +584 2 3.3997388729632499e-01 2.3252595381056373e+01 2.3597189808628819e+01 2.5892592333652562e+01 0 -1 -1 +386 2 3.6021614130896101e-01 2.2591488978199816e+01 2.4730541934939339e+01 2.5006367399286887e+01 0 -1 -1 +1646 2 3.5247924473061648e-01 2.4187891291529947e+01 2.9084220378797124e+01 2.6265107250975543e+01 -1 -1 0 +2704 1 -7.2538461010879418e-01 1.9366548933982255e+01 2.7003482749459032e+01 2.4784293272716216e+01 0 0 0 +2705 2 3.5569396967362998e-01 1.9532957843494568e+01 2.7959407245345876e+01 2.4860260856571184e+01 0 0 0 +799 1 -7.6050101057871444e-01 2.3988048355725599e+01 3.0636437496838141e+01 2.4652500799214650e+01 -1 0 -1 +1268 2 3.7639747176313071e-01 2.2231703368249963e+01 2.9098356754253786e+01 2.8585082778064507e+01 0 0 -1 +1986 2 3.5487267787675603e-01 1.9750188049423382e+01 2.7187594892472802e+01 2.6640233875527738e+01 0 -1 0 +1985 2 3.3736674454677884e-01 2.0267462855064423e+01 2.6820323975036533e+01 2.8102370674810249e+01 0 -1 0 +1984 1 -6.9783562612802830e-01 1.9825533572332510e+01 2.7529939521248139e+01 2.7600380138886276e+01 0 -1 0 +1267 1 -7.2532864435020250e-01 2.1636063668219499e+01 2.9461977229570202e+01 2.7859512169419489e+01 0 0 -1 +2785 1 -6.8589612528722610e-01 2.1172630996025855e+01 2.4133535125323121e+01 2.8645805385843328e+01 0 0 0 +2786 2 3.6187004113704491e-01 2.0324955226508639e+01 2.3878077420526786e+01 2.9143893808061488e+01 0 0 0 +1269 2 3.8169946623808348e-01 2.0777827361035222e+01 2.8843598204104719e+01 2.7926543763986889e+01 0 0 -1 +2827 1 -7.5178981778370491e-01 2.5980207330104658e+01 1.5883927015697910e+01 1.5933980603556099e+01 0 0 0 +2951 2 3.5115645556354869e-01 2.0613112882121001e+01 2.9282777176086590e+01 2.5849956558510126e+01 0 0 0 +1830 2 3.4562081475759565e-01 2.5042883762442986e-01 1.9659806805631007e+01 3.0838531101438452e+01 0 0 0 +2949 2 3.7538315262016592e-01 2.6728904078646107e+01 2.5980725541678012e+01 2.4524765091211119e+01 0 0 0 +2693 2 3.3339425832370145e-01 2.4465202567280162e+01 2.4127880542052008e+01 2.7395744824065918e+01 0 0 0 +2192 2 3.6659376702940660e-01 2.8856470552368346e+01 2.6506868869494156e+01 2.7596926665383766e+01 0 -1 0 +1837 1 -7.1365031316252459e-01 2.6425043242862866e+01 2.5620135077268284e+01 3.0621573076223548e+01 -1 -1 0 +1331 2 3.5500527902638757e-01 2.3184779434937365e+01 2.7082744171995643e+01 2.3370410135977959e+01 0 0 -1 +1621 1 -7.6435417363797209e-01 2.9628730033886924e+01 2.9180588446022917e+01 2.9391911565459942e+01 -1 -1 0 +1367 2 3.6840931346151579e-01 2.5693374475437924e+01 3.0087113401159538e+01 2.4915942123885991e+01 0 0 -1 +1987 1 -7.1082251196474511e-01 3.0060262246121411e+01 2.7610554694576539e+01 2.2780775200354022e+01 0 -1 0 +2938 1 -7.4112000273699075e-01 1.8149803686751540e+01 1.5695169511354322e+01 1.6947474577849174e+01 0 0 0 +1839 2 3.6079283000119255e-01 2.5602942316285514e+01 2.5649254220041389e+01 3.0064023277643344e+01 -1 -1 0 +1876 1 -7.1122447250616871e-01 1.3882831693372349e+01 3.0791374304312075e+01 1.6088923223980341e+01 0 -1 0 +1188 2 3.5912490985459461e-01 1.1132479352648046e+01 2.7769533203195365e+01 1.6085424043853980e+01 0 0 0 +625 1 -6.8070199915260399e-01 2.8298375442686439e+01 3.0378227657718618e+01 2.1330941736995175e+01 0 -1 -1 +2324 2 3.6528238885428532e-01 2.6624285533476154e+01 2.7465633462681023e+01 3.0405350018301814e+01 -1 0 0 +2966 2 3.8324270048809833e-01 2.2145736866876939e+00 1.6293361592060393e+01 3.0554627512122444e+01 1 0 0 +685 1 -7.6185286627974624e-01 2.2911596052139330e+01 3.0356836516298955e+01 1.7698177981943278e+01 0 -1 0 +1812 2 3.4587306522017625e-01 1.7231487300098411e+01 1.6994206995354919e+01 2.3772481960570808e+01 0 -1 0 +2449 1 -7.3098760066670754e-01 1.7226073658772862e+01 1.8207511631168725e+01 1.5571328926836692e+01 0 0 0 +1609 1 -7.3209378689090843e-01 3.8038541319091670e+00 3.0469943247784794e+01 2.8248713179443495e+01 0 -1 0 +71 2 3.7722929972710306e-01 1.1828349487701109e+01 1.6115815808013849e+01 3.0621871422273017e+01 0 0 -1 +811 1 -6.9547622941354248e-01 3.0428812893249077e+01 3.0859717988145043e+01 1.8802269306680319e+01 -1 0 0 +2405 2 3.4020652691064257e-01 7.4528018084076963e+00 2.6012876505596005e+01 3.0705739252272764e+01 0 0 0 +1253 2 3.5717004716194040e-01 2.3664945895202479e+01 1.6287715192098435e+01 3.0322970930456712e+01 0 0 -1 +252 2 3.8701305495106386e-01 2.1482185801453028e+01 3.1006367209523919e+01 2.7196564479751714e+01 0 -1 -1 +1862 2 3.7625538466757952e-01 1.5251364631771182e+01 1.5616838924692072e+01 1.5618905489741165e+01 0 0 0 +813 2 3.7367922684603366e-01 1.1794541687145023e-01 3.1039606881210492e+01 1.9416399237735966e+01 0 0 0 diff --git a/examples/reaxff/water/in.water.acks2 b/examples/reaxff/water/in.water.acks2 new file mode 100644 index 0000000000..54199b8044 --- /dev/null +++ b/examples/reaxff/water/in.water.acks2 @@ -0,0 +1,29 @@ +# ACKS2 Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015) + +boundary p p p +units real +atom_style charge + +read_data data.water + +variable x index 1 +variable y index 1 +variable z index 1 + +replicate $x $y $z + +pair_style reaxff NULL safezone 3.0 mincap 150 +pair_coeff * * acks2_ff.water O H +neighbor 0.5 bin +neigh_modify every 1 delay 0 check yes + +velocity all create 300.0 4928459 rot yes dist gaussian + +fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 1000 +fix 2 all nvt temp 300 300 50.0 + +timestep 0.5 +thermo 10 +thermo_style custom step temp press density vol + +run 20 diff --git a/examples/reaxff/water/in.water.acks2.field b/examples/reaxff/water/in.water.acks2.field new file mode 100644 index 0000000000..9b0678422e --- /dev/null +++ b/examples/reaxff/water/in.water.acks2.field @@ -0,0 +1,31 @@ +# ACKS2 Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015) + +boundary p p s +units real +atom_style charge + +read_data data.water + +variable x index 1 +variable y index 1 +variable z index 1 + +replicate $x $y $z + +pair_style reaxff NULL safezone 3.0 mincap 150 +pair_coeff * * acks2_ff.water O H +neighbor 0.5 bin +neigh_modify every 1 delay 0 check yes + +velocity all create 300.0 4928459 rot yes dist gaussian + +fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 1000 +fix 2 all nvt temp 300 300 50.0 +fix 3 all efield 0.0 0.0 1.0 +fix 4 all wall/reflect zlo EDGE zhi EDGE + +timestep 0.5 +thermo 10 +thermo_style custom step temp press density vol + +run 20 diff --git a/examples/reaxff/water/in.water.qeq b/examples/reaxff/water/in.water.qeq new file mode 100644 index 0000000000..85a56a0e60 --- /dev/null +++ b/examples/reaxff/water/in.water.qeq @@ -0,0 +1,29 @@ +# QEq Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015) + +boundary p p p +units real +atom_style charge + +read_data data.water + +variable x index 1 +variable y index 1 +variable z index 1 + +replicate $x $y $z + +pair_style reaxff NULL safezone 3.0 mincap 150 +pair_coeff * * qeq_ff.water O H +neighbor 0.5 bin +neigh_modify every 1 delay 0 check yes + +velocity all create 300.0 4928459 rot yes dist gaussian + +fix 1 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 400 +fix 2 all nvt temp 300 300 50.0 + +timestep 0.5 +thermo 10 +thermo_style custom step temp press density vol + +run 20 diff --git a/examples/reaxff/water/in.water.qeq.field b/examples/reaxff/water/in.water.qeq.field new file mode 100644 index 0000000000..54b68ea898 --- /dev/null +++ b/examples/reaxff/water/in.water.qeq.field @@ -0,0 +1,31 @@ +# QEq Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015) + +boundary p p s +units real +atom_style charge + +read_data data.water + +variable x index 1 +variable y index 1 +variable z index 1 + +replicate $x $y $z + +pair_style reaxff NULL safezone 3.0 mincap 150 +pair_coeff * * qeq_ff.water O H +neighbor 0.5 bin +neigh_modify every 1 delay 0 check yes + +velocity all create 300.0 4928459 rot yes dist gaussian + +fix 1 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 400 +fix 2 all nvt temp 300 300 50.0 +fix 3 all efield 0.0 0.0 1.0 +fix 4 all wall/reflect zlo EDGE zhi EDGE + +timestep 0.5 +thermo 10 +thermo_style custom step temp press density vol + +run 20 diff --git a/examples/reaxff/water/log.13Oct21.reaxff.water-acks2-field.g++.1 b/examples/reaxff/water/log.13Oct21.reaxff.water-acks2-field.g++.1 new file mode 100644 index 0000000000..fe4cfdbfd9 --- /dev/null +++ b/examples/reaxff/water/log.13Oct21.reaxff.water-acks2-field.g++.1 @@ -0,0 +1,129 @@ +LAMMPS (29 Sep 2021) +# ACKS2 Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015) + +boundary p p s +units real +atom_style charge + +read_data data.water +Reading data file ... + orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046) + 1 by 1 by 1 MPI processor grid + reading atoms ... +WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208) +WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208) +WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208) + 3000 atoms + read_data CPU = 0.010 seconds + +variable x index 1 +variable y index 1 +variable z index 1 + +replicate $x $y $z +replicate 1 $y $z +replicate 1 1 $z +replicate 1 1 1 +Replicating atoms ... + orthogonal box = (0.0000000 0.0000000 0.0012889577) to (31.043046 31.043046 31.045309) + 1 by 1 by 1 MPI processor grid + 3000 atoms + replicate CPU = 0.001 seconds + +pair_style reaxff NULL safezone 3.0 mincap 150 +pair_coeff * * acks2_ff.water O H +Reading potential file acks2_ff.water with DATE: 2021-09-21 +WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296) +neighbor 0.5 bin +neigh_modify every 1 delay 0 check yes + +velocity all create 300.0 4928459 rot yes dist gaussian + +fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 1000 +fix 2 all nvt temp 300 300 50.0 +fix 3 all efield 0.0 0.0 1.0 +fix 4 all wall/reflect zlo EDGE zhi EDGE + +timestep 0.5 +thermo 10 +thermo_style custom step temp press density vol + +run 20 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair reaxff command: + +@Article{Aktulga12, + author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama}, + title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques}, + journal = {Parallel Computing}, + year = 2012, + volume = 38, + pages = {245--259} +} + +- fix acks2/reaxff command: + +@Article{O'Hearn2020, + author = {K. A. O'Hearn, A. Alperen, and H. M. Aktulga}, + title = {Fast Solvers for Charge Distribution Models on Shared Memory Platforms}, + journal = {SIAM J. Sci. Comput.}, + year = 2020, + volume = 42, + pages = {1--22} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair reaxff, perpetual + attributes: half, newton off, ghost + pair build: half/bin/newtoff/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) fix acks2/reaxff, perpetual, copy from (1) + attributes: half, newton off, ghost + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 361.2 | 361.2 | 361.2 Mbytes +Step Temp Press Density Volume + 0 300 -20762.954 0.99996859 29916.212 + 10 396.27588 -18423.747 1.0000143 29914.844 + 20 518.59361 -10010.691 1.0000209 29914.647 +Loop time of 29.8896 on 1 procs for 20 steps with 3000 atoms + +Performance: 0.029 ns/day, 830.268 hours/ns, 0.669 timesteps/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 11.611 | 11.611 | 11.611 | 0.0 | 38.85 +Neigh | 0.6729 | 0.6729 | 0.6729 | 0.0 | 2.25 +Comm | 0.0020791 | 0.0020791 | 0.0020791 | 0.0 | 0.01 +Output | 0.00015777 | 0.00015777 | 0.00015777 | 0.0 | 0.00 +Modify | 17.602 | 17.602 | 17.602 | 0.0 | 58.89 +Other | | 0.001149 | | | 0.00 + +Nlocal: 3000.00 ave 3000 max 3000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 5438.00 ave 5438 max 5438 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 787357.0 ave 787357 max 787357 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 787357 +Ave neighs/atom = 262.45233 +Neighbor list builds = 7 +Dangerous builds = 0 +Total wall time: 0:00:32 diff --git a/examples/reaxff/water/log.13Oct21.reaxff.water-acks2-field.g++.4 b/examples/reaxff/water/log.13Oct21.reaxff.water-acks2-field.g++.4 new file mode 100644 index 0000000000..f69b274c02 --- /dev/null +++ b/examples/reaxff/water/log.13Oct21.reaxff.water-acks2-field.g++.4 @@ -0,0 +1,129 @@ +LAMMPS (29 Sep 2021) +# ACKS2 Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015) + +boundary p p s +units real +atom_style charge + +read_data data.water +Reading data file ... + orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046) + 1 by 2 by 2 MPI processor grid + reading atoms ... +WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208) +WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208) +WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208) + 3000 atoms + read_data CPU = 0.011 seconds + +variable x index 1 +variable y index 1 +variable z index 1 + +replicate $x $y $z +replicate 1 $y $z +replicate 1 1 $z +replicate 1 1 1 +Replicating atoms ... + orthogonal box = (0.0000000 0.0000000 0.0012889577) to (31.043046 31.043046 31.045309) + 2 by 1 by 2 MPI processor grid + 3000 atoms + replicate CPU = 0.001 seconds + +pair_style reaxff NULL safezone 3.0 mincap 150 +pair_coeff * * acks2_ff.water O H +Reading potential file acks2_ff.water with DATE: 2021-09-21 +WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296) +neighbor 0.5 bin +neigh_modify every 1 delay 0 check yes + +velocity all create 300.0 4928459 rot yes dist gaussian + +fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 1000 +fix 2 all nvt temp 300 300 50.0 +fix 3 all efield 0.0 0.0 1.0 +fix 4 all wall/reflect zlo EDGE zhi EDGE + +timestep 0.5 +thermo 10 +thermo_style custom step temp press density vol + +run 20 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair reaxff command: + +@Article{Aktulga12, + author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama}, + title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques}, + journal = {Parallel Computing}, + year = 2012, + volume = 38, + pages = {245--259} +} + +- fix acks2/reaxff command: + +@Article{O'Hearn2020, + author = {K. A. O'Hearn, A. Alperen, and H. M. Aktulga}, + title = {Fast Solvers for Charge Distribution Models on Shared Memory Platforms}, + journal = {SIAM J. Sci. Comput.}, + year = 2020, + volume = 42, + pages = {1--22} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair reaxff, perpetual + attributes: half, newton off, ghost + pair build: half/bin/newtoff/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) fix acks2/reaxff, perpetual, copy from (1) + attributes: half, newton off, ghost + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 198.5 | 199.3 | 199.9 Mbytes +Step Temp Press Density Volume + 0 300 -20761.724 0.99996859 29916.212 + 10 396.27588 -18420.441 1.0000144 29914.843 + 20 518.59146 -10012.622 1.0000207 29914.652 +Loop time of 11.3556 on 4 procs for 20 steps with 3000 atoms + +Performance: 0.076 ns/day, 315.433 hours/ns, 1.761 timesteps/s +94.3% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.7511 | 3.8123 | 3.9245 | 3.4 | 33.57 +Neigh | 0.36492 | 0.3767 | 0.39023 | 1.5 | 3.32 +Comm | 0.12022 | 0.23202 | 0.29307 | 13.8 | 2.04 +Output | 8.0451e-05 | 0.00017452 | 0.00045489 | 0.0 | 0.00 +Modify | 6.9172 | 6.9312 | 6.9431 | 0.4 | 61.04 +Other | | 0.003189 | | | 0.03 + +Nlocal: 750.000 ave 758 max 737 min +Histogram: 1 0 0 0 0 0 1 0 1 1 +Nghost: 4219.50 ave 4233 max 4198 min +Histogram: 1 0 0 0 1 0 0 0 0 2 +Neighs: 230733.0 ave 233431 max 225531 min +Histogram: 1 0 0 0 0 0 0 0 2 1 + +Total # of neighbors = 922931 +Ave neighs/atom = 307.64367 +Neighbor list builds = 7 +Dangerous builds = 0 +Total wall time: 0:00:12 diff --git a/examples/reaxff/water/log.13Oct21.reaxff.water-acks2.g++.1 b/examples/reaxff/water/log.13Oct21.reaxff.water-acks2.g++.1 new file mode 100644 index 0000000000..4bf0a5b789 --- /dev/null +++ b/examples/reaxff/water/log.13Oct21.reaxff.water-acks2.g++.1 @@ -0,0 +1,124 @@ +LAMMPS (29 Sep 2021) +# ACKS2 Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015) + +boundary p p p +units real +atom_style charge + +read_data data.water +Reading data file ... + orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 3000 atoms + read_data CPU = 0.010 seconds + +variable x index 1 +variable y index 1 +variable z index 1 + +replicate $x $y $z +replicate 1 $y $z +replicate 1 1 $z +replicate 1 1 1 +Replicating atoms ... + orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046) + 1 by 1 by 1 MPI processor grid + 3000 atoms + replicate CPU = 0.001 seconds + +pair_style reaxff NULL safezone 3.0 mincap 150 +pair_coeff * * acks2_ff.water O H +Reading potential file acks2_ff.water with DATE: 2021-09-21 +WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296) +neighbor 0.5 bin +neigh_modify every 1 delay 0 check yes + +velocity all create 300.0 4928459 rot yes dist gaussian + +fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 1000 +fix 2 all nvt temp 300 300 50.0 + +timestep 0.5 +thermo 10 +thermo_style custom step temp press density vol + +run 20 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair reaxff command: + +@Article{Aktulga12, + author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama}, + title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques}, + journal = {Parallel Computing}, + year = 2012, + volume = 38, + pages = {245--259} +} + +- fix acks2/reaxff command: + +@Article{O'Hearn2020, + author = {K. A. O'Hearn, A. Alperen, and H. M. Aktulga}, + title = {Fast Solvers for Charge Distribution Models on Shared Memory Platforms}, + journal = {SIAM J. Sci. Comput.}, + year = 2020, + volume = 42, + pages = {1--22} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair reaxff, perpetual + attributes: half, newton off, ghost + pair build: half/bin/newtoff/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) fix acks2/reaxff, perpetual, copy from (1) + attributes: half, newton off, ghost + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 574.5 | 574.5 | 574.5 Mbytes +Step Temp Press Density Volume + 0 300 1572.3474 1 29915.273 + 10 300.61522 8252.7686 1 29915.273 + 20 294.7387 2502.6624 1 29915.273 +Loop time of 25.9579 on 1 procs for 20 steps with 3000 atoms + +Performance: 0.033 ns/day, 721.052 hours/ns, 0.770 timesteps/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 14.081 | 14.081 | 14.081 | 0.0 | 54.24 +Neigh | 0.34284 | 0.34284 | 0.34284 | 0.0 | 1.32 +Comm | 0.0027799 | 0.0027799 | 0.0027799 | 0.0 | 0.01 +Output | 0.00012876 | 0.00012876 | 0.00012876 | 0.0 | 0.00 +Modify | 11.53 | 11.53 | 11.53 | 0.0 | 44.42 +Other | | 0.001007 | | | 0.00 + +Nlocal: 3000.00 ave 3000 max 3000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11077.0 ave 11077 max 11077 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 971815.0 ave 971815 max 971815 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 971815 +Ave neighs/atom = 323.93833 +Neighbor list builds = 2 +Dangerous builds = 0 +Total wall time: 0:00:27 diff --git a/examples/reaxff/water/log.13Oct21.reaxff.water-acks2.g++.4 b/examples/reaxff/water/log.13Oct21.reaxff.water-acks2.g++.4 new file mode 100644 index 0000000000..4124e7f82f --- /dev/null +++ b/examples/reaxff/water/log.13Oct21.reaxff.water-acks2.g++.4 @@ -0,0 +1,124 @@ +LAMMPS (29 Sep 2021) +# ACKS2 Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015) + +boundary p p p +units real +atom_style charge + +read_data data.water +Reading data file ... + orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 3000 atoms + read_data CPU = 0.013 seconds + +variable x index 1 +variable y index 1 +variable z index 1 + +replicate $x $y $z +replicate 1 $y $z +replicate 1 1 $z +replicate 1 1 1 +Replicating atoms ... + orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046) + 1 by 2 by 2 MPI processor grid + 3000 atoms + replicate CPU = 0.002 seconds + +pair_style reaxff NULL safezone 3.0 mincap 150 +pair_coeff * * acks2_ff.water O H +Reading potential file acks2_ff.water with DATE: 2021-09-21 +WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296) +neighbor 0.5 bin +neigh_modify every 1 delay 0 check yes + +velocity all create 300.0 4928459 rot yes dist gaussian + +fix 1 all acks2/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 1000 +fix 2 all nvt temp 300 300 50.0 + +timestep 0.5 +thermo 10 +thermo_style custom step temp press density vol + +run 20 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair reaxff command: + +@Article{Aktulga12, + author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama}, + title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques}, + journal = {Parallel Computing}, + year = 2012, + volume = 38, + pages = {245--259} +} + +- fix acks2/reaxff command: + +@Article{O'Hearn2020, + author = {K. A. O'Hearn, A. Alperen, and H. M. Aktulga}, + title = {Fast Solvers for Charge Distribution Models on Shared Memory Platforms}, + journal = {SIAM J. Sci. Comput.}, + year = 2020, + volume = 42, + pages = {1--22} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair reaxff, perpetual + attributes: half, newton off, ghost + pair build: half/bin/newtoff/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) fix acks2/reaxff, perpetual, copy from (1) + attributes: half, newton off, ghost + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 271.9 | 273.6 | 275.1 Mbytes +Step Temp Press Density Volume + 0 300 1572.3807 1 29915.273 + 10 300.6152 8252.4834 1 29915.273 + 20 294.73868 2502.5661 1 29915.273 +Loop time of 11.1133 on 4 procs for 20 steps with 3000 atoms + +Performance: 0.078 ns/day, 308.702 hours/ns, 1.800 timesteps/s +92.7% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 4.3609 | 4.7715 | 5.4812 | 19.5 | 42.94 +Neigh | 0.15797 | 0.17176 | 0.19405 | 3.5 | 1.55 +Comm | 0.21014 | 0.922 | 1.3353 | 44.6 | 8.30 +Output | 8.815e-05 | 0.0002 | 0.00030501 | 0.0 | 0.00 +Modify | 5.2267 | 5.2468 | 5.2584 | 0.5 | 47.21 +Other | | 0.001074 | | | 0.01 + +Nlocal: 750.000 ave 760 max 735 min +Histogram: 1 0 0 0 1 0 0 0 0 2 +Nghost: 6231.50 ave 6255 max 6192 min +Histogram: 1 0 0 0 0 1 0 0 0 2 +Neighs: 277006.0 ave 280567 max 271394 min +Histogram: 1 0 0 0 0 1 0 0 0 2 + +Total # of neighbors = 1108026 +Ave neighs/atom = 369.34200 +Neighbor list builds = 2 +Dangerous builds = 0 +Total wall time: 0:00:12 diff --git a/examples/reaxff/water/log.13Oct21.reaxff.water-qeq-field.g++.1 b/examples/reaxff/water/log.13Oct21.reaxff.water-qeq-field.g++.1 new file mode 100644 index 0000000000..74f49665b9 --- /dev/null +++ b/examples/reaxff/water/log.13Oct21.reaxff.water-qeq-field.g++.1 @@ -0,0 +1,128 @@ +LAMMPS (29 Sep 2021) +# QEq Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015) + +boundary p p s +units real +atom_style charge + +read_data data.water +Reading data file ... + orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046) + 1 by 1 by 1 MPI processor grid + reading atoms ... +WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208) +WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208) +WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208) + 3000 atoms + read_data CPU = 0.010 seconds + +variable x index 1 +variable y index 1 +variable z index 1 + +replicate $x $y $z +replicate 1 $y $z +replicate 1 1 $z +replicate 1 1 1 +Replicating atoms ... + orthogonal box = (0.0000000 0.0000000 0.0012889577) to (31.043046 31.043046 31.045309) + 1 by 1 by 1 MPI processor grid + 3000 atoms + replicate CPU = 0.001 seconds + +pair_style reaxff NULL safezone 3.0 mincap 150 +pair_coeff * * qeq_ff.water O H +WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296) +neighbor 0.5 bin +neigh_modify every 1 delay 0 check yes + +velocity all create 300.0 4928459 rot yes dist gaussian + +fix 1 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 400 +fix 2 all nvt temp 300 300 50.0 +fix 3 all efield 0.0 0.0 1.0 +fix 4 all wall/reflect zlo EDGE zhi EDGE + +timestep 0.5 +thermo 10 +thermo_style custom step temp press density vol + +run 20 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair reaxff command: + +@Article{Aktulga12, + author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama}, + title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques}, + journal = {Parallel Computing}, + year = 2012, + volume = 38, + pages = {245--259} +} + +- fix qeq/reaxff command: + +@Article{Aktulga12, + author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama}, + title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques}, + journal = {Parallel Computing}, + year = 2012, + volume = 38, + pages = {245--259} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair reaxff, perpetual + attributes: half, newton off, ghost + pair build: half/bin/newtoff/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) fix qeq/reaxff, perpetual, copy from (1) + attributes: half, newton off, ghost + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 332.3 | 332.3 | 332.3 Mbytes +Step Temp Press Density Volume + 0 300 25015.837 0.99996859 29916.212 + 10 348.83356 31131.298 0.99964273 29925.965 + 20 414.67243 27564.999 0.99979791 29921.32 +Loop time of 15.4107 on 1 procs for 20 steps with 3000 atoms + +Performance: 0.056 ns/day, 428.074 hours/ns, 1.298 timesteps/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 11.413 | 11.413 | 11.413 | 0.0 | 74.06 +Neigh | 0.57486 | 0.57486 | 0.57486 | 0.0 | 3.73 +Comm | 0.0019709 | 0.0019709 | 0.0019709 | 0.0 | 0.01 +Output | 0.00013211 | 0.00013211 | 0.00013211 | 0.0 | 0.00 +Modify | 3.4192 | 3.4192 | 3.4192 | 0.0 | 22.19 +Other | | 0.001104 | | | 0.01 + +Nlocal: 3000.00 ave 3000 max 3000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 5439.00 ave 5439 max 5439 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 786591.0 ave 786591 max 786591 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 786591 +Ave neighs/atom = 262.19700 +Neighbor list builds = 6 +Dangerous builds = 0 +Total wall time: 0:00:16 diff --git a/examples/reaxff/water/log.13Oct21.reaxff.water-qeq-field.g++.4 b/examples/reaxff/water/log.13Oct21.reaxff.water-qeq-field.g++.4 new file mode 100644 index 0000000000..4f56281aaa --- /dev/null +++ b/examples/reaxff/water/log.13Oct21.reaxff.water-qeq-field.g++.4 @@ -0,0 +1,128 @@ +LAMMPS (29 Sep 2021) +# QEq Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015) + +boundary p p s +units real +atom_style charge + +read_data data.water +Reading data file ... + orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046) + 1 by 2 by 2 MPI processor grid + reading atoms ... +WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208) +WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208) +WARNING: Non-zero imageflag(s) in z direction for non-periodic boundary reset to zero (../atom.cpp:1208) + 3000 atoms + read_data CPU = 0.017 seconds + +variable x index 1 +variable y index 1 +variable z index 1 + +replicate $x $y $z +replicate 1 $y $z +replicate 1 1 $z +replicate 1 1 1 +Replicating atoms ... + orthogonal box = (0.0000000 0.0000000 0.0012889577) to (31.043046 31.043046 31.045309) + 2 by 1 by 2 MPI processor grid + 3000 atoms + replicate CPU = 0.002 seconds + +pair_style reaxff NULL safezone 3.0 mincap 150 +pair_coeff * * qeq_ff.water O H +WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296) +neighbor 0.5 bin +neigh_modify every 1 delay 0 check yes + +velocity all create 300.0 4928459 rot yes dist gaussian + +fix 1 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 400 +fix 2 all nvt temp 300 300 50.0 +fix 3 all efield 0.0 0.0 1.0 +fix 4 all wall/reflect zlo EDGE zhi EDGE + +timestep 0.5 +thermo 10 +thermo_style custom step temp press density vol + +run 20 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair reaxff command: + +@Article{Aktulga12, + author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama}, + title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques}, + journal = {Parallel Computing}, + year = 2012, + volume = 38, + pages = {245--259} +} + +- fix qeq/reaxff command: + +@Article{Aktulga12, + author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama}, + title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques}, + journal = {Parallel Computing}, + year = 2012, + volume = 38, + pages = {245--259} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair reaxff, perpetual + attributes: half, newton off, ghost + pair build: half/bin/newtoff/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) fix qeq/reaxff, perpetual, copy from (1) + attributes: half, newton off, ghost + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 188.9 | 189.5 | 190.1 Mbytes +Step Temp Press Density Volume + 0 300 25015.837 0.99996859 29916.212 + 10 348.83356 31131.298 0.99964273 29925.965 + 20 414.67243 27564.999 0.99979791 29921.32 +Loop time of 5.71549 on 4 procs for 20 steps with 3000 atoms + +Performance: 0.151 ns/day, 158.764 hours/ns, 3.499 timesteps/s +94.1% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.6678 | 3.8126 | 4.1402 | 9.8 | 66.71 +Neigh | 0.31449 | 0.34639 | 0.38898 | 5.5 | 6.06 +Comm | 0.032125 | 0.35935 | 0.50408 | 31.9 | 6.29 +Output | 7.643e-05 | 0.00015959 | 0.00039876 | 0.0 | 0.00 +Modify | 1.1534 | 1.1959 | 1.2283 | 3.0 | 20.92 +Other | | 0.001099 | | | 0.02 + +Nlocal: 750.000 ave 757 max 738 min +Histogram: 1 0 0 0 0 1 0 0 0 2 +Nghost: 4219.00 ave 4232 max 4198 min +Histogram: 1 0 0 0 0 1 0 0 1 1 +Neighs: 230549.0 ave 233374 max 225849 min +Histogram: 1 0 0 0 0 0 1 0 1 1 + +Total # of neighbors = 922196 +Ave neighs/atom = 307.39867 +Neighbor list builds = 6 +Dangerous builds = 0 +Total wall time: 0:00:06 diff --git a/examples/reaxff/water/log.13Oct21.reaxff.water-qeq.g++.1 b/examples/reaxff/water/log.13Oct21.reaxff.water-qeq.g++.1 new file mode 100644 index 0000000000..9c991e2ff8 --- /dev/null +++ b/examples/reaxff/water/log.13Oct21.reaxff.water-qeq.g++.1 @@ -0,0 +1,123 @@ +LAMMPS (29 Sep 2021) +# QEq Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015) + +boundary p p p +units real +atom_style charge + +read_data data.water +Reading data file ... + orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 3000 atoms + read_data CPU = 0.010 seconds + +variable x index 1 +variable y index 1 +variable z index 1 + +replicate $x $y $z +replicate 1 $y $z +replicate 1 1 $z +replicate 1 1 1 +Replicating atoms ... + orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046) + 1 by 1 by 1 MPI processor grid + 3000 atoms + replicate CPU = 0.001 seconds + +pair_style reaxff NULL safezone 3.0 mincap 150 +pair_coeff * * qeq_ff.water O H +WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296) +neighbor 0.5 bin +neigh_modify every 1 delay 0 check yes + +velocity all create 300.0 4928459 rot yes dist gaussian + +fix 1 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 400 +fix 2 all nvt temp 300 300 50.0 + +timestep 0.5 +thermo 10 +thermo_style custom step temp press density vol + +run 20 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair reaxff command: + +@Article{Aktulga12, + author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama}, + title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques}, + journal = {Parallel Computing}, + year = 2012, + volume = 38, + pages = {245--259} +} + +- fix qeq/reaxff command: + +@Article{Aktulga12, + author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama}, + title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques}, + journal = {Parallel Computing}, + year = 2012, + volume = 38, + pages = {245--259} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair reaxff, perpetual + attributes: half, newton off, ghost + pair build: half/bin/newtoff/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) fix qeq/reaxff, perpetual, copy from (1) + attributes: half, newton off, ghost + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 539.2 | 539.2 | 539.2 Mbytes +Step Temp Press Density Volume + 0 300 780.33989 1 29915.273 + 10 301.29205 5433.7415 1 29915.273 + 20 297.90652 1572.6111 1 29915.273 +Loop time of 17.5765 on 1 procs for 20 steps with 3000 atoms + +Performance: 0.049 ns/day, 488.237 hours/ns, 1.138 timesteps/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 13.806 | 13.806 | 13.806 | 0.0 | 78.55 +Neigh | 0.34211 | 0.34211 | 0.34211 | 0.0 | 1.95 +Comm | 0.0028155 | 0.0028155 | 0.0028155 | 0.0 | 0.02 +Output | 0.00012279 | 0.00012279 | 0.00012279 | 0.0 | 0.00 +Modify | 3.4248 | 3.4248 | 3.4248 | 0.0 | 19.49 +Other | | 0.001008 | | | 0.01 + +Nlocal: 3000.00 ave 3000 max 3000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11077.0 ave 11077 max 11077 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 971826.0 ave 971826 max 971826 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 971826 +Ave neighs/atom = 323.94200 +Neighbor list builds = 2 +Dangerous builds = 0 +Total wall time: 0:00:18 diff --git a/examples/reaxff/water/log.13Oct21.reaxff.water-qeq.g++.4 b/examples/reaxff/water/log.13Oct21.reaxff.water-qeq.g++.4 new file mode 100644 index 0000000000..152842f516 --- /dev/null +++ b/examples/reaxff/water/log.13Oct21.reaxff.water-qeq.g++.4 @@ -0,0 +1,123 @@ +LAMMPS (29 Sep 2021) +# QEq Water, CITE: Achtyl et al., Nat. Comm., 6 6539 (2015) + +boundary p p p +units real +atom_style charge + +read_data data.water +Reading data file ... + orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 3000 atoms + read_data CPU = 0.010 seconds + +variable x index 1 +variable y index 1 +variable z index 1 + +replicate $x $y $z +replicate 1 $y $z +replicate 1 1 $z +replicate 1 1 1 +Replicating atoms ... + orthogonal box = (0.0000000 0.0000000 0.0000000) to (31.043046 31.043046 31.043046) + 1 by 2 by 2 MPI processor grid + 3000 atoms + replicate CPU = 0.001 seconds + +pair_style reaxff NULL safezone 3.0 mincap 150 +pair_coeff * * qeq_ff.water O H +WARNING: Changed valency_val to valency_boc for X (../reaxff_ffield.cpp:296) +neighbor 0.5 bin +neigh_modify every 1 delay 0 check yes + +velocity all create 300.0 4928459 rot yes dist gaussian + +fix 1 all qeq/reaxff 1 0.0 10.0 1.0e-6 reaxff maxiter 400 +fix 2 all nvt temp 300 300 50.0 + +timestep 0.5 +thermo 10 +thermo_style custom step temp press density vol + +run 20 + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Your simulation uses code contributions which should be cited: + +- pair reaxff command: + +@Article{Aktulga12, + author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama}, + title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques}, + journal = {Parallel Computing}, + year = 2012, + volume = 38, + pages = {245--259} +} + +- fix qeq/reaxff command: + +@Article{Aktulga12, + author = {H. M. Aktulga, J. C. Fogarty, S. A. Pandit, A. Y. Grama}, + title = {Parallel reactive molecular dynamics: Numerical methods and algorithmic techniques}, + journal = {Parallel Computing}, + year = 2012, + volume = 38, + pages = {245--259} +} + +CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE + +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10.5 + ghost atom cutoff = 10.5 + binsize = 5.25, bins = 6 6 6 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair reaxff, perpetual + attributes: half, newton off, ghost + pair build: half/bin/newtoff/ghost + stencil: full/ghost/bin/3d + bin: standard + (2) fix qeq/reaxff, perpetual, copy from (1) + attributes: half, newton off, ghost + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 260.5 | 262.2 | 263.6 Mbytes +Step Temp Press Density Volume + 0 300 780.34006 1 29915.273 + 10 301.29205 5433.7414 1 29915.273 + 20 297.90652 1572.6111 1 29915.273 +Loop time of 6.79573 on 4 procs for 20 steps with 3000 atoms + +Performance: 0.127 ns/day, 188.770 hours/ns, 2.943 timesteps/s +93.0% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 4.4827 | 4.6649 | 4.866 | 6.6 | 68.64 +Neigh | 0.16329 | 0.17253 | 0.18074 | 1.6 | 2.54 +Comm | 0.44871 | 0.64804 | 0.82827 | 17.5 | 9.54 +Output | 9.9269e-05 | 0.00013061 | 0.00022048 | 0.0 | 0.00 +Modify | 1.3028 | 1.3091 | 1.3201 | 0.6 | 19.26 +Other | | 0.001043 | | | 0.02 + +Nlocal: 750.000 ave 759 max 735 min +Histogram: 1 0 0 0 0 1 0 0 0 2 +Nghost: 6230.50 ave 6256 max 6190 min +Histogram: 1 0 0 0 0 1 0 0 1 1 +Neighs: 277008.0 ave 280943 max 271394 min +Histogram: 1 0 0 0 0 1 0 0 1 1 + +Total # of neighbors = 1108032 +Ave neighs/atom = 369.34400 +Neighbor list builds = 2 +Dangerous builds = 0 +Total wall time: 0:00:07 diff --git a/examples/reaxff/water/qeq_ff.water b/examples/reaxff/water/qeq_ff.water new file mode 100644 index 0000000000..5d71e747b7 --- /dev/null +++ b/examples/reaxff/water/qeq_ff.water @@ -0,0 +1,83 @@ +Reactive MD-force field: QEq Water [CITE: Achtyl et al., Nat. Comm., 6 6539 (2015)] + 39 ! Number of general parameters + 50.0000 !Overcoordination parameter + 9.5469 !Overcoordination parameter + 26.5405 !Valency angle conjugation parameter + 1.7224 !Triple bond stabilisation parameter + 6.8702 !Triple bond stabilisation parameter + 60.4850 !C2-correction + 1.0588 !Undercoordination parameter + 4.6000 !Triple bond stabilisation parameter + 12.1176 !Undercoordination parameter + 13.3056 !Undercoordination parameter + -70.5044 !Triple bond stabilization energy + 0.0000 !Lower Taper-radius + 10.0000 !Upper Taper-radius + 2.8793 !Not used + 33.8667 !Valency undercoordination + 6.0891 !Valency angle/lone pair parameter + 1.0563 !Valency angle + 2.0384 !Valency angle parameter + 6.1431 !Not used + 6.9290 !Double bond/angle parameter + 0.3989 !Double bond/angle parameter: overcoord + 3.9954 !Double bond/angle parameter: overcoord + -2.4837 !Not used + 5.7796 !Torsion/BO parameter + 10.0000 !Torsion overcoordination + 1.9487 !Torsion overcoordination + -1.2327 !Conjugation 0 (not used) + 2.1645 !Conjugation + 1.5591 !vdWaals shielding + 0.1000 !Cutoff for bond order (*100) + 2.1365 !Valency angle conjugation parameter + 0.6991 !Overcoordination parameter + 50.0000 !Overcoordination parameter + 1.8512 !Valency/lone pair parameter + 0.5000 !Not used + 20.0000 !Not used + 5.0000 !Molecular energy (not used) + 0.0000 !Molecular energy (not used) + 2.6962 !Valency angle conjugation parameter + 3 ! Nr of atoms; cov.r; valency;a.m;Rvdw;Evdw;gammaEEM;cov.r2;# + alfa;gammavdW;valency;Eunder;Eover;chiEEM;etaEEM;n.u. + cov r3;Elp;Heat inc.;n.u.;n.u.;n.u.;n.u. + ov/un;val1;n.u.;val3,vval4 + H 0.8930 1.0000 1.0080 1.3550 0.0930 0.8203 -0.1000 1.0000 + 8.2230 33.2894 1.0000 0.0000 121.1250 3.7248 9.6093 1.0000 + -0.1000 0.0000 61.6606 3.0408 2.4197 0.0003 1.0698 0.0000 + -19.4571 4.2733 1.0338 1.0000 2.8793 0.0000 0.0000 0.0000 + O 1.2450 2.0000 15.9990 2.3890 0.1000 1.0898 1.0548 6.0000 + 9.7300 13.8449 4.0000 37.5000 116.0768 8.5000 8.3122 2.0000 + 0.9049 0.4056 59.0626 3.5027 0.7640 0.0021 0.9745 0.0000 + -3.5500 2.9000 1.0493 4.0000 2.9225 0.0000 0.0000 0.0000 + X -0.1000 2.0000 1.0080 2.0000 0.0000 1.0000 -0.1000 6.0000 + 10.0000 2.5000 4.0000 0.0000 0.0000 8.5000 1.5000 0.0000 + -0.1000 0.0000 -2.3700 8.7410 13.3640 0.6690 0.9745 0.0000 + -11.0000 2.7466 1.0338 2.0000 2.8793 0.0000 0.0000 0.0000 + 3 ! Nr of bonds; Edis1;LPpen;n.u.;pbe1;pbo5;13corr;pbo6 + pbe2;pbo3;pbo4;n.u.;pbo1;pbo2;ovcorr + 1 1 153.3934 0.0000 0.0000 -0.4600 0.0000 1.0000 6.0000 0.7300 + 6.2500 1.0000 0.0000 1.0000 -0.0790 6.0552 0.0000 0.0000 + 2 2 142.2858 145.0000 50.8293 0.2506 -0.1000 1.0000 29.7503 0.6051 + 0.3451 -0.1055 9.0000 1.0000 -0.1225 5.5000 1.0000 0.0000 + 1 2 160.0000 0.0000 0.0000 -0.5725 0.0000 1.0000 6.0000 0.5626 + 1.1150 1.0000 0.0000 0.0000 -0.0920 4.2790 0.0000 0.0000 + 1 ! Nr of off-diagonal terms; Ediss;Ro;gamma;rsigma;rpi;rpi2 + 1 2 0.0283 1.2885 10.9190 0.9215 -1.0000 -1.0000 + 6 ! Nr of angles;at1;at2;at3;Thetao,o;ka;kb;pv1;pv2 + 1 1 1 0.0000 27.9213 5.8635 0.0000 0.0000 0.0000 1.0400 + 2 2 2 80.7324 30.4554 0.9953 0.0000 1.6310 50.0000 1.0783 + 1 2 2 75.6935 50.0000 2.0000 0.0000 1.0000 0.0000 1.1680 + 1 2 1 85.8000 9.8453 2.2720 0.0000 2.8635 0.0000 1.5800 + 2 1 2 0.0000 15.0000 2.8900 0.0000 0.0000 0.0000 2.8774 + 1 1 2 0.0000 8.5744 3.0000 0.0000 0.0000 0.0000 1.0421 + 6 ! Nr of torsions;at1;at2;at3;at4;;V1;V2;V3;V2(BO);vconj;n.u;n + 1 2 2 1 2.5000 -4.0000 0.9000 -2.5000 -1.0000 0.0000 0.0000 + 1 2 2 2 0.8302 -4.0000 -0.7763 -2.5000 -1.0000 0.0000 0.0000 + 2 2 2 2 -2.5000 -4.0000 1.0000 -2.5000 -1.0000 0.0000 0.0000 + 0 1 1 0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0 1 2 0 0.0000 0.1000 0.0200 -2.5415 0.0000 0.0000 0.0000 + 0 2 2 0 0.5511 25.4150 1.1330 -5.1903 -1.0000 0.0000 0.0000 + 1 ! Nr of hydrogen bonds;at1;at2;at3;Rhb;Dehb;vhb1 + 2 1 2 2.1200 -3.5800 1.4500 19.5000 diff --git a/lib/awpmd/ivutils/include/vector_3.h b/lib/awpmd/ivutils/include/vector_3.h index 5711d3bf35..6beef2bcd6 100644 --- a/lib/awpmd/ivutils/include/vector_3.h +++ b/lib/awpmd/ivutils/include/vector_3.h @@ -487,7 +487,7 @@ vec_type dist_av(Vector_3 *va1,Vector_3 *va2,int n); /*e optionally gives the indexes for maximal and minimal difference va2 can be nullptr, then the norm of va1 is used */ -vec_type diff_av(Vector_3 *va1,Vector_3 *va2,int n, int *minind=0, int *maxind=0); +vec_type diff_av(Vector_3 *va1,Vector_3 *va2,int n, int *minind=nullptr, int *maxind=nullptr); //e finds suitable perpendicular to a vector Vector_3 FindPerp(const Vector_3 &vAB); @@ -507,7 +507,7 @@ Vector_3 GetIScopei(const Vector_3 *varr,int *indarr,int n,Vector_3* box_min,Vec // neue Funktionen //e clears vector array with optional integer index -void clear_vecarri(int n,Vector_3 *vec, int *ind=0); +void clear_vecarri(int n,Vector_3 *vec, int *ind=nullptr); //e reflects the vector ini+dir*t+0.5*force*t^2 to be inside a box limited by 0 and box sizes //e changes dir according to the final state diff --git a/lib/gpu/geryon/ocl_device.h b/lib/gpu/geryon/ocl_device.h index df53aff5b8..2cb06999d9 100644 --- a/lib/gpu/geryon/ocl_device.h +++ b/lib/gpu/geryon/ocl_device.h @@ -88,7 +88,7 @@ struct OCLProperties { cl_uint clock; size_t work_group_size; size_t work_item_size[3]; - bool double_precision; + bool has_double_precision; int preferred_vector_width32, preferred_vector_width64; int alignment; size_t timer_resolution; @@ -226,7 +226,7 @@ class UCL_Device { inline bool double_precision() { return double_precision(_device); } /// Returns true if double precision is support for the device inline bool double_precision(const int i) - {return _properties[i].double_precision;} + {return _properties[i].has_double_precision;} /// Get the number of compute units on the current device inline unsigned cus() { return cus(_device); } @@ -569,9 +569,9 @@ void UCL_Device::add_properties(cl_device_id device_list) { CL_SAFE_CALL(clGetDeviceInfo(device_list,CL_DEVICE_DOUBLE_FP_CONFIG, sizeof(double_avail),&double_avail,nullptr)); if ((double_avail & double_mask) == double_mask) - op.double_precision=true; + op.has_double_precision=true; else - op.double_precision=false; + op.has_double_precision=false; CL_SAFE_CALL(clGetDeviceInfo(device_list, CL_DEVICE_PROFILING_TIMER_RESOLUTION, diff --git a/lib/gpu/lal_device.cpp b/lib/gpu/lal_device.cpp index 59eac78483..43a565c9fe 100644 --- a/lib/gpu/lal_device.cpp +++ b/lib/gpu/lal_device.cpp @@ -1039,10 +1039,18 @@ Device global_device; using namespace LAMMPS_AL; -bool lmp_has_gpu_device() +// check if a suitable GPU is present. +// for mixed and double precision GPU library compilation +// also the GPU needs to support double precision. +bool lmp_has_compatible_gpu_device() { UCL_Device gpu; - return (gpu.num_platforms() > 0); + bool compatible_gpu = gpu.num_platforms() > 0; + #if defined(_SINGLE_DOUBLE) || defined(_DOUBLE_DOUBLE) + if (compatible_gpu && !gpu.double_precision(0)) + compatible_gpu = false; + #endif + return compatible_gpu; } std::string lmp_gpu_device_info() diff --git a/lib/poems/SystemProcessor.h b/lib/poems/SystemProcessor.h index f009794f66..faa8c01d62 100644 --- a/lib/poems/SystemProcessor.h +++ b/lib/poems/SystemProcessor.h @@ -49,9 +49,9 @@ private: POEMSChain * AddNewChain(POEMSNode * currentNode); bool setLinkVisited(POEMSNode * firstNode, POEMSNode * secondNode); public: - SystemProcessor(void); + SystemProcessor(); - ~SystemProcessor(void) { + ~SystemProcessor() { headsOfSystems.DeleteValues(); for(int i = 0; i < ringsInSystem.GetNumElements(); i++) { @@ -66,7 +66,7 @@ public: int getNumberOfHeadChains(); }; -SystemProcessor::SystemProcessor(void){ +SystemProcessor::SystemProcessor(){ // register callback for deleting auxiliary data from tree nodes. nodes.SetDeleteAuxData(&POEMSNodeDelete_cb); } @@ -271,14 +271,14 @@ bool SystemProcessor::setLinkVisited(POEMSNode * firstNode, POEMSNode * secondNo return true; //return true to indicate that this is the first time the link has been visited } -List * SystemProcessor::getSystemData(void) //Gets the list of POEMSChains that comprise the system. Might eventually only +List * SystemProcessor::getSystemData() //Gets the list of POEMSChains that comprise the system. Might eventually only //return chains linked to the reference plane, but currently returns every chain //in the system. { return &headsOfSystems; } -int SystemProcessor::getNumberOfHeadChains(void) //This function isnt implemented yet, and might be taken out entirely; this was a holdover +int SystemProcessor::getNumberOfHeadChains() //This function isnt implemented yet, and might be taken out entirely; this was a holdover //from when I intended to return an array of chain pointers, rather than a list of chains //It will probably be deleted once I finish figuring out exactly what needs to be returned { diff --git a/lib/poems/body.cpp b/lib/poems/body.cpp index 1fc31243c8..510154ac75 100644 --- a/lib/poems/body.cpp +++ b/lib/poems/body.cpp @@ -132,6 +132,6 @@ Body* NewBody(int type){ case PARTICLE : // A Particle return new Particle; default : // error - return 0; + return nullptr; } } diff --git a/lib/poems/body23joint.cpp b/lib/poems/body23joint.cpp index 2f024a9a58..ef6d888aaf 100644 --- a/lib/poems/body23joint.cpp +++ b/lib/poems/body23joint.cpp @@ -30,8 +30,7 @@ Body23Joint::Body23Joint(){ DimQandU(4,2); } -Body23Joint::~Body23Joint(){ -} +Body23Joint::~Body23Joint() = default; JointType Body23Joint::GetType(){ return BODY23JOINT; diff --git a/lib/poems/colmatmap.cpp b/lib/poems/colmatmap.cpp index 69ec4ec1b0..e075f1d297 100644 --- a/lib/poems/colmatmap.cpp +++ b/lib/poems/colmatmap.cpp @@ -24,7 +24,7 @@ using namespace std; ColMatMap::ColMatMap(){ numrows = 0; - elements = 0; + elements = nullptr; } ColMatMap::~ColMatMap(){ @@ -33,7 +33,7 @@ ColMatMap::~ColMatMap(){ ColMatMap::ColMatMap(const ColMatMap& A){ // copy constructor numrows = 0; - elements = 0; + elements = nullptr; Dim(A.numrows); for(int i=0;iDim(m,n); } diff --git a/lib/poems/matrixfun.cpp b/lib/poems/matrixfun.cpp index 9c20d7cac9..b57710aa7a 100644 --- a/lib/poems/matrixfun.cpp +++ b/lib/poems/matrixfun.cpp @@ -36,7 +36,7 @@ VirtualMatrix* NewMatrix(int type){ case MAT4X4 : return new Mat4x4; case VECT3 : return new Vect3; case VECT4 : return new Vect4; - default : return 0; // error! + default : return nullptr; // error! } } diff --git a/lib/poems/mixedjoint.cpp b/lib/poems/mixedjoint.cpp index 8597b3bb46..f9aad39615 100644 --- a/lib/poems/mixedjoint.cpp +++ b/lib/poems/mixedjoint.cpp @@ -26,11 +26,9 @@ -MixedJoint::MixedJoint(){ -} +MixedJoint::MixedJoint() = default; -MixedJoint::~MixedJoint(){ -} +MixedJoint::~MixedJoint() = default; JointType MixedJoint::GetType(){ return MIXEDJOINT; diff --git a/lib/poems/onbody.cpp b/lib/poems/onbody.cpp index a9f260a329..84dd0b9ea3 100644 --- a/lib/poems/onbody.cpp +++ b/lib/poems/onbody.cpp @@ -30,9 +30,9 @@ using namespace std; OnBody::OnBody(){ - system_body = 0; - system_joint = 0; - parent = 0; + system_body = nullptr; + system_joint = nullptr; + parent = nullptr; // these terms have zeros which are NEVER overwritten sI.Zeros(); diff --git a/lib/poems/onsolver.cpp b/lib/poems/onsolver.cpp index 8149ad694b..24758a7aa8 100644 --- a/lib/poems/onsolver.cpp +++ b/lib/poems/onsolver.cpp @@ -28,8 +28,8 @@ using namespace std; OnSolver::OnSolver(){ numbodies = 0; - bodyarray = 0; - q=0;u=0; qdot=0; udot=0; qdotdot=0; + bodyarray = nullptr; + q=nullptr;u=nullptr; qdot=nullptr; udot=nullptr; qdotdot=nullptr; type = ONSOLVER; } diff --git a/lib/poems/particle.cpp b/lib/poems/particle.cpp index 1993136923..0094a81ec0 100644 --- a/lib/poems/particle.cpp +++ b/lib/poems/particle.cpp @@ -19,11 +19,9 @@ #include "particle.h" #include "fixedpoint.h" -Particle::Particle(){ -} +Particle::Particle() = default; -Particle::~Particle(){ -} +Particle::~Particle() = default; BodyType Particle::GetType(){ return PARTICLE; diff --git a/lib/poems/poemslist.h b/lib/poems/poemslist.h index 39a3af2b51..a56c953349 100644 --- a/lib/poems/poemslist.h +++ b/lib/poems/poemslist.h @@ -65,7 +65,7 @@ template ListElement::ListElement(){ } template ListElement::ListElement(T* v){ - next = prev = 0; + next = prev = nullptr; value = v; } @@ -77,7 +77,7 @@ template ListElement::~ListElement(){ // template List::List(){ - head = tail = 0; + head = tail = nullptr; numelements = 0; } @@ -181,7 +181,7 @@ template S** List::CreateArray(){ S** array = new S* [numelements]; ListElement* ele = head; - for(int i=0;ele != 0;i++){ + for(int i=0;ele != nullptr;i++){ array[i] = ele->value; ele = ele->next; } diff --git a/lib/poems/poemsobject.cpp b/lib/poems/poemsobject.cpp index 5f221f1242..0732179415 100644 --- a/lib/poems/poemsobject.cpp +++ b/lib/poems/poemsobject.cpp @@ -20,7 +20,7 @@ #include POEMSObject::POEMSObject(){ - name = 0; + name = nullptr; ChangeName((const char*)"unnamed"); ID = -1; } diff --git a/lib/poems/poemstree.h b/lib/poems/poemstree.h index cb9499cfd4..6ff7c5ccde 100644 --- a/lib/poems/poemstree.h +++ b/lib/poems/poemstree.h @@ -64,8 +64,8 @@ protected: public: // constructor, destructor - Tree(void); - ~Tree(void) + Tree(); + ~Tree() { ClearTree(root); }; @@ -85,19 +85,19 @@ public: void Insert(const int& item, const int& data, void * AuxData = nullptr); void Delete(const int& item); void AVLInsert(TreeNode* &tree, TreeNode* newNode, int &reviseBalanceFactor); - void ClearList(void); + void ClearList(); // tree specific methods void Update(const int& item); - TreeNode *GetRoot(void) const; + TreeNode *GetRoot() const; }; // constructor -Tree::Tree(void) +Tree::Tree() { - root = 0; - current = 0; + root = nullptr; + current = nullptr; size = 0; DeleteAuxData = nullptr; } @@ -105,7 +105,7 @@ Tree::Tree(void) // return root pointer -TreeNode *Tree::GetRoot(void) const +TreeNode *Tree::GetRoot() const { return root; } @@ -603,7 +603,7 @@ void Tree::ClearTree(TreeNode * &t) } // delete all nodes in list -void Tree::ClearList(void) +void Tree::ClearList() { delete root; delete current; diff --git a/lib/poems/poemstreenode.cpp b/lib/poems/poemstreenode.cpp index d1fd965752..48bd80f283 100644 --- a/lib/poems/poemstreenode.cpp +++ b/lib/poems/poemstreenode.cpp @@ -27,23 +27,23 @@ TreeNode::TreeNode (const int & item, TreeNode *lptr,TreeNode *rptr, // return left -TreeNode* TreeNode::Left(void) +TreeNode* TreeNode::Left() { return left; } // return right -TreeNode* TreeNode::Right(void) +TreeNode* TreeNode::Right() { return right; } -int TreeNode::GetBalanceFactor(void) +int TreeNode::GetBalanceFactor() { return balanceFactor; } -int TreeNode::GetData(void) +int TreeNode::GetData() { return data; } diff --git a/lib/poems/point.cpp b/lib/poems/point.cpp index 66bf8d0373..a742473669 100644 --- a/lib/poems/point.cpp +++ b/lib/poems/point.cpp @@ -21,8 +21,7 @@ Point::Point(){ position.Zeros(); } -Point::~Point(){ -} +Point::~Point() = default; bool Point::ReadIn(std::istream& in){ return ReadInPointData(in); @@ -39,6 +38,6 @@ Point* NewPoint(int type){ case FIXEDPOINT : // A Fixed Point return new FixedPoint(); default : // error - return 0; + return nullptr; } } diff --git a/lib/poems/prismaticjoint.cpp b/lib/poems/prismaticjoint.cpp index e0a0e7b87a..b40705c8dc 100644 --- a/lib/poems/prismaticjoint.cpp +++ b/lib/poems/prismaticjoint.cpp @@ -27,8 +27,7 @@ PrismaticJoint::PrismaticJoint(){ u.Dim(1); udot.Dim(1); } -PrismaticJoint::~PrismaticJoint(){ -} +PrismaticJoint::~PrismaticJoint() = default; JointType PrismaticJoint::GetType(){ return PRISMATICJOINT; diff --git a/lib/poems/revolutejoint.cpp b/lib/poems/revolutejoint.cpp index eef83dc978..5a4ad3edfd 100644 --- a/lib/poems/revolutejoint.cpp +++ b/lib/poems/revolutejoint.cpp @@ -29,8 +29,7 @@ RevoluteJoint::RevoluteJoint(){ SetAxisPK(axis); } -RevoluteJoint::~RevoluteJoint(){ -} +RevoluteJoint::~RevoluteJoint() = default; JointType RevoluteJoint::GetType(){ return REVOLUTEJOINT; diff --git a/lib/poems/rigidbody.cpp b/lib/poems/rigidbody.cpp index 92963f93da..f5063df1e2 100644 --- a/lib/poems/rigidbody.cpp +++ b/lib/poems/rigidbody.cpp @@ -20,10 +20,8 @@ using namespace std; -RigidBody::RigidBody(){ -} -RigidBody::~RigidBody(){ -} +RigidBody::RigidBody() = default; +RigidBody::~RigidBody() = default; BodyType RigidBody::GetType(){ return RIGIDBODY; diff --git a/lib/poems/rowmatrix.cpp b/lib/poems/rowmatrix.cpp index 41e24911aa..dcd00ce7cb 100644 --- a/lib/poems/rowmatrix.cpp +++ b/lib/poems/rowmatrix.cpp @@ -24,7 +24,7 @@ using namespace std; RowMatrix::RowMatrix(){ numcols = 0; - elements = 0; + elements = nullptr; } RowMatrix::~RowMatrix(){ @@ -33,7 +33,7 @@ RowMatrix::~RowMatrix(){ RowMatrix::RowMatrix(const RowMatrix& A){ // copy constructor numcols = 0; - elements = 0; + elements = nullptr; Dim(A.numcols); for(int i=0;i* b_ele = bodies.GetHeadElement(); - while(b_ele !=0){ + while(b_ele !=nullptr){ out << i << ' '; body = b_ele->value; @@ -200,7 +200,7 @@ void System::WriteOut(ostream& out){ i = 0; Joint* joint; ListElement* j_ele = joints.GetHeadElement(); - while(j_ele !=0){ + while(j_ele !=nullptr){ out << i << ' '; joint = j_ele->value; diff --git a/lib/poems/vect3.cpp b/lib/poems/vect3.cpp index d0cb53ff15..2836c1a9d3 100644 --- a/lib/poems/vect3.cpp +++ b/lib/poems/vect3.cpp @@ -23,8 +23,6 @@ using namespace std; Vect3::Vect3(){ numrows = 3; numcols = 1; } -Vect3::~Vect3(){ -} Vect3::Vect3(const Vect3& A){ // copy constructor numrows = 3; numcols = 1; diff --git a/lib/poems/vect3.h b/lib/poems/vect3.h index 0eb4450174..041de608fb 100644 --- a/lib/poems/vect3.h +++ b/lib/poems/vect3.h @@ -30,7 +30,7 @@ class Vect3 : public VirtualColMatrix { double elements[3]; public: Vect3(); - ~Vect3(); + ~Vect3() = default; Vect3(const Vect3& A); // copy constructor Vect3(const VirtualMatrix& A); // copy constructor diff --git a/lib/poems/vect4.cpp b/lib/poems/vect4.cpp index 86b014d129..249eccf1e1 100644 --- a/lib/poems/vect4.cpp +++ b/lib/poems/vect4.cpp @@ -23,8 +23,6 @@ using namespace std; Vect4::Vect4(){ numrows = 4; numcols = 1; } -Vect4::~Vect4(){ -} Vect4::Vect4(const Vect4& A){ // copy constructor numrows = 4; numcols = 1; diff --git a/lib/poems/vect4.h b/lib/poems/vect4.h index 81a3c2143c..28d37313f1 100644 --- a/lib/poems/vect4.h +++ b/lib/poems/vect4.h @@ -28,7 +28,7 @@ class Vect4 : public VirtualColMatrix { double elements[4]; public: Vect4(); - ~Vect4(); + ~Vect4() = default; Vect4(const Vect4& A); // copy constructor Vect4(const VirtualMatrix& A); // copy constructor diff --git a/lib/poems/vect6.cpp b/lib/poems/vect6.cpp index e3fe07e1ea..611a701198 100644 --- a/lib/poems/vect6.cpp +++ b/lib/poems/vect6.cpp @@ -23,8 +23,6 @@ using namespace std; Vect6::Vect6(){ numrows = 6; numcols = 1; } -Vect6::~Vect6(){ -} Vect6::Vect6(const Vect6& A){ // copy constructor numrows = 6; numcols = 1; diff --git a/lib/poems/vect6.h b/lib/poems/vect6.h index 1127daf80e..16ed576ee8 100644 --- a/lib/poems/vect6.h +++ b/lib/poems/vect6.h @@ -29,7 +29,7 @@ class Vect6 : public VirtualColMatrix { double elements[6]; public: Vect6(); - ~Vect6(); + ~Vect6() = default; Vect6(const Vect6& A); // copy constructor Vect6(const VirtualMatrix& A); // copy constructor diff --git a/lib/poems/virtualcolmatrix.cpp b/lib/poems/virtualcolmatrix.cpp index e004458731..adf7bab3fb 100644 --- a/lib/poems/virtualcolmatrix.cpp +++ b/lib/poems/virtualcolmatrix.cpp @@ -25,9 +25,6 @@ VirtualColMatrix::VirtualColMatrix(){ numcols = 1; } -VirtualColMatrix::~VirtualColMatrix(){ -} - double& VirtualColMatrix::operator_2int(int i, int j){ if(j!=1){ cerr << "matrix index invalid in operator ()" << endl; diff --git a/lib/poems/virtualcolmatrix.h b/lib/poems/virtualcolmatrix.h index e0af8b4ae7..e8e348d9d1 100644 --- a/lib/poems/virtualcolmatrix.h +++ b/lib/poems/virtualcolmatrix.h @@ -25,7 +25,7 @@ class VirtualColMatrix : public VirtualMatrix { public: VirtualColMatrix(); - ~VirtualColMatrix(); + ~VirtualColMatrix() = default; double& operator_2int (int i, int j); // array access double Get_2int (int i, int j) const; void Set_2int (int i, int j, double value); diff --git a/lib/poems/virtualmatrix.cpp b/lib/poems/virtualmatrix.cpp index 938c69c037..89e595e648 100644 --- a/lib/poems/virtualmatrix.cpp +++ b/lib/poems/virtualmatrix.cpp @@ -26,8 +26,7 @@ VirtualMatrix::VirtualMatrix(){ numrows = numcols = 0; } -VirtualMatrix::~VirtualMatrix(){ -} +VirtualMatrix::~VirtualMatrix()= default; int VirtualMatrix::GetNumRows() const { return numrows; diff --git a/lib/poems/virtualrowmatrix.cpp b/lib/poems/virtualrowmatrix.cpp index 6d2976a584..9d52de73f4 100644 --- a/lib/poems/virtualrowmatrix.cpp +++ b/lib/poems/virtualrowmatrix.cpp @@ -26,9 +26,6 @@ VirtualRowMatrix::VirtualRowMatrix(){ numrows = 1; } -VirtualRowMatrix::~VirtualRowMatrix(){ -} - double& VirtualRowMatrix::operator_2int (int i, int j){ if(i!=1){ cerr << "matrix index invalid in operator ()" << endl; diff --git a/lib/poems/virtualrowmatrix.h b/lib/poems/virtualrowmatrix.h index 9b1a3bbc44..122ba910da 100644 --- a/lib/poems/virtualrowmatrix.h +++ b/lib/poems/virtualrowmatrix.h @@ -24,7 +24,7 @@ class VirtualRowMatrix : public VirtualMatrix { public: VirtualRowMatrix(); - ~VirtualRowMatrix(); + ~VirtualRowMatrix() = default; double& operator_2int (int i, int j); // array access double Get_2int(int i, int j) const; void Set_2int(int i, int j, double value); diff --git a/potentials/acks2_ff.water b/potentials/acks2_ff.water new file mode 100644 index 0000000000..b2488bf406 --- /dev/null +++ b/potentials/acks2_ff.water @@ -0,0 +1,83 @@ +DATE: 2021-09-21 UNITS: real CONTRIBUTOR: Stan Moore, stamoor@sandia.gov CITATION: Achtyl et al., Nat. Comm., 6 6539 (2015), COMMENT: Reactive MD-force field: ACKS2 Water + 39 ! Number of general parameters + 50.0000 !Overcoordination parameter + 9.5469 !Overcoordination parameter + 26.5405 !Valency angle conjugation parameter + 1.7224 !Triple bond stabilisation parameter + 6.8702 !Triple bond stabilisation parameter + 60.4850 !C2-correction + 1.0588 !Undercoordination parameter + 4.6000 !Triple bond stabilisation parameter + 12.1176 !Undercoordination parameter + 13.3056 !Undercoordination parameter + -70.5044 !Triple bond stabilization energy + 0.0000 !Lower Taper-radius + 10.0000 !Upper Taper-radius + 2.8793 !Not used + 33.8667 !Valency undercoordination + 6.0891 !Valency angle/lone pair parameter + 1.0563 !Valency angle + 2.0384 !Valency angle parameter + 6.1431 !Not used + 6.9290 !Double bond/angle parameter + 0.3989 !Double bond/angle parameter: overcoord + 3.9954 !Double bond/angle parameter: overcoord + -2.4837 !Not used + 5.7796 !Torsion/BO parameter + 10.0000 !Torsion overcoordination + 1.9487 !Torsion overcoordination + -1.2327 !Conjugation 0 (not used) + 2.1645 !Conjugation + 1.5591 !vdWaals shielding + 0.1000 !Cutoff for bond order (*100) + 2.1365 !Valency angle conjugation parameter + 0.6991 !Overcoordination parameter + 50.0000 !Overcoordination parameter + 1.8512 !Valency/lone pair parameter + 548.6451 !Softness + 20.0000 !Not used + 5.0000 !Molecular energy (not used) + 0.0000 !Molecular energy (not used) + 2.6962 !Valency angle conjugation parameter + 3 ! Nr of atoms; cov.r; valency;a.m;Rvdw;Evdw;gammaEEM;cov.r2;# + alfa;gammavdW;valency;Eunder;Eover;chiEEM;etaEEM;n.u. + cov r3;Elp;Heat inc.;n.u.;n.u.;n.u.;n.u. + ov/un;val1;n.u.;val3,vval4 + H 0.8930 1.0000 1.0080 1.3550 0.0930 0.8203 -0.1000 1.0000 + 8.2230 33.2894 1.0000 0.0000 121.1250 3.7248 9.6093 1.0000 + -0.1000 0.0000 61.6606 3.0408 2.4197 0.0003 3.4114 0.0000 + -19.4571 4.2733 1.0338 1.0000 2.8793 0.0000 0.0000 0.0000 + O 1.2450 2.0000 15.9990 2.3890 0.1000 1.0898 1.0548 6.0000 + 9.7300 13.8449 4.0000 37.5000 116.0768 8.5000 8.3122 2.0000 + 0.9049 0.4056 59.0626 3.5027 0.7640 0.0021 0.9745 0.0000 + -3.5500 2.9000 1.0493 4.0000 2.9225 0.0000 0.0000 0.0000 + X -0.1000 2.0000 1.0080 2.0000 0.0000 1.0000 -0.1000 6.0000 + 10.0000 2.5000 4.0000 0.0000 0.0000 8.5000 1.5000 0.0000 + -0.1000 0.0000 -2.3700 8.7410 13.3640 0.6690 0.9745 0.0000 + -11.0000 2.7466 1.0338 2.0000 2.8793 0.0000 0.0000 0.0000 + 3 ! Nr of bonds; Edis1;LPpen;n.u.;pbe1;pbo5;13corr;pbo6 + pbe2;pbo3;pbo4;n.u.;pbo1;pbo2;ovcorr + 1 1 153.3934 0.0000 0.0000 -0.4600 0.0000 1.0000 6.0000 0.7300 + 6.2500 1.0000 0.0000 1.0000 -0.0790 6.0552 0.0000 0.0000 + 2 2 142.2858 145.0000 50.8293 0.2506 -0.1000 1.0000 29.7503 0.6051 + 0.3451 -0.1055 9.0000 1.0000 -0.1225 5.5000 1.0000 0.0000 + 1 2 160.0000 0.0000 0.0000 -0.5725 0.0000 1.0000 6.0000 0.5626 + 1.1150 1.0000 0.0000 0.0000 -0.0920 4.2790 0.0000 0.0000 + 1 ! Nr of off-diagonal terms; Ediss;Ro;gamma;rsigma;rpi;rpi2 + 1 2 0.0283 1.2885 10.9190 0.9215 -1.0000 -1.0000 + 6 ! Nr of angles;at1;at2;at3;Thetao,o;ka;kb;pv1;pv2 + 1 1 1 0.0000 27.9213 5.8635 0.0000 0.0000 0.0000 1.0400 + 2 2 2 80.7324 30.4554 0.9953 0.0000 1.6310 50.0000 1.0783 + 1 2 2 75.6935 50.0000 2.0000 0.0000 1.0000 0.0000 1.1680 + 1 2 1 85.8000 9.8453 2.2720 0.0000 2.8635 0.0000 1.5800 + 2 1 2 0.0000 15.0000 2.8900 0.0000 0.0000 0.0000 2.8774 + 1 1 2 0.0000 8.5744 3.0000 0.0000 0.0000 0.0000 1.0421 + 6 ! Nr of torsions;at1;at2;at3;at4;;V1;V2;V3;V2(BO);vconj;n.u;n + 1 2 2 1 2.5000 -4.0000 0.9000 -2.5000 -1.0000 0.0000 0.0000 + 1 2 2 2 0.8302 -4.0000 -0.7763 -2.5000 -1.0000 0.0000 0.0000 + 2 2 2 2 -2.5000 -4.0000 1.0000 -2.5000 -1.0000 0.0000 0.0000 + 0 1 1 0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0 1 2 0 0.0000 0.1000 0.0200 -2.5415 0.0000 0.0000 0.0000 + 0 2 2 0 0.5511 25.4150 1.1330 -5.1903 -1.0000 0.0000 0.0000 + 1 ! Nr of hydrogen bonds;at1;at2;at3;Rhb;Dehb;vhb1 + 2 1 2 2.1200 -3.5800 1.4500 19.5000 diff --git a/src/.gitignore b/src/.gitignore index 1a87b9fa5c..7da6b7feb7 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -609,6 +609,8 @@ /fft3d_wrap.h /fix_accelerate_cos.cpp /fix_accelerate_cos.h +/fix_acks2_reaxff.cpp +/fix_acks2_reaxff.h /fix_adapt_fep.cpp /fix_adapt_fep.h /fix_addtorque.cpp @@ -1393,6 +1395,8 @@ /fix_drude_transform.h /fix_langevin_drude.cpp /fix_langevin_drude.h +/fix_mol_swap.cpp +/fix_mol_swap.h /fix_pimd.cpp /fix_pimd.h /fix_qbmsst.cpp diff --git a/src/BOCS/fix_bocs.cpp b/src/BOCS/fix_bocs.cpp index 786ff216b0..61339cd31a 100644 --- a/src/BOCS/fix_bocs.cpp +++ b/src/BOCS/fix_bocs.cpp @@ -637,7 +637,7 @@ int FixBocs::read_F_table( char *filename, int p_basis_type ) char line[MAX_F_TABLE_LINE_LENGTH]; std::vector inputLines; while (fgets(line, MAX_F_TABLE_LINE_LENGTH, fpi)) { - inputLines.push_back(std::string(line)); + inputLines.emplace_back(line); } fclose(fpi); diff --git a/src/BROWNIAN/fix_brownian.cpp b/src/BROWNIAN/fix_brownian.cpp index 4994b304e1..d4bdefca8b 100644 --- a/src/BROWNIAN/fix_brownian.cpp +++ b/src/BROWNIAN/fix_brownian.cpp @@ -45,7 +45,7 @@ void FixBrownian::init() { FixBrownianBase::init(); g1 /= gamma_t; - g2 *= sqrt(gamma_t); + g2 /= sqrt(gamma_t); } /* ---------------------------------------------------------------------- */ diff --git a/src/CG-DNA/atom_vec_oxdna.cpp b/src/CG-DNA/atom_vec_oxdna.cpp index e1c99d7ca5..120fe5d9ac 100644 --- a/src/CG-DNA/atom_vec_oxdna.cpp +++ b/src/CG-DNA/atom_vec_oxdna.cpp @@ -52,9 +52,6 @@ AtomVecOxdna::AtomVecOxdna(LAMMPS *lmp) : AtomVec(lmp) error->warning(FLERR, "Write_data command requires newton on to preserve 3'->5' bond polarity"); } -/* ---------------------------------------------------------------------- */ -AtomVecOxdna::~AtomVecOxdna() {} - /* ---------------------------------------------------------------------- set local copies of all grow ptrs used by this class, except defaults needed in replicate when 2 atom classes exist and it calls pack_restart() diff --git a/src/CG-DNA/atom_vec_oxdna.h b/src/CG-DNA/atom_vec_oxdna.h index f05f6d2013..c100abdfff 100644 --- a/src/CG-DNA/atom_vec_oxdna.h +++ b/src/CG-DNA/atom_vec_oxdna.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class AtomVecOxdna : public AtomVec { public: AtomVecOxdna(class LAMMPS *); - ~AtomVecOxdna(); + ~AtomVecOxdna() = default; void grow_pointers(); void data_atom_post(int); diff --git a/src/COMPRESS/dump_atom_gz.cpp b/src/COMPRESS/dump_atom_gz.cpp index 5f799054bb..8bdc025436 100644 --- a/src/COMPRESS/dump_atom_gz.cpp +++ b/src/COMPRESS/dump_atom_gz.cpp @@ -27,10 +27,6 @@ DumpAtomGZ::DumpAtomGZ(LAMMPS *lmp, int narg, char **arg) : DumpAtom(lmp, narg, if (!compressed) error->all(FLERR, "Dump atom/gz only writes compressed files"); } -/* ---------------------------------------------------------------------- */ - -DumpAtomGZ::~DumpAtomGZ() {} - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or compressed diff --git a/src/COMPRESS/dump_atom_gz.h b/src/COMPRESS/dump_atom_gz.h index 777c34345a..2b87e36f1d 100644 --- a/src/COMPRESS/dump_atom_gz.h +++ b/src/COMPRESS/dump_atom_gz.h @@ -28,7 +28,7 @@ namespace LAMMPS_NS { class DumpAtomGZ : public DumpAtom { public: DumpAtomGZ(class LAMMPS *, int, char **); - virtual ~DumpAtomGZ(); + virtual ~DumpAtomGZ() = default; protected: GzFileWriter writer; diff --git a/src/COMPRESS/dump_atom_zstd.cpp b/src/COMPRESS/dump_atom_zstd.cpp index a23ea2025b..aa1c161d73 100644 --- a/src/COMPRESS/dump_atom_zstd.cpp +++ b/src/COMPRESS/dump_atom_zstd.cpp @@ -33,10 +33,6 @@ DumpAtomZstd::DumpAtomZstd(LAMMPS *lmp, int narg, char **arg) : DumpAtom(lmp, na if (!compressed) error->all(FLERR, "Dump atom/zstd only writes compressed files"); } -/* ---------------------------------------------------------------------- */ - -DumpAtomZstd::~DumpAtomZstd() {} - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or compressed diff --git a/src/COMPRESS/dump_atom_zstd.h b/src/COMPRESS/dump_atom_zstd.h index 4a85089167..fb2da0c83b 100644 --- a/src/COMPRESS/dump_atom_zstd.h +++ b/src/COMPRESS/dump_atom_zstd.h @@ -34,7 +34,7 @@ namespace LAMMPS_NS { class DumpAtomZstd : public DumpAtom { public: DumpAtomZstd(class LAMMPS *, int, char **); - virtual ~DumpAtomZstd(); + virtual ~DumpAtomZstd() = default; protected: ZstdFileWriter writer; diff --git a/src/COMPRESS/dump_cfg_gz.cpp b/src/COMPRESS/dump_cfg_gz.cpp index 8d6347d978..8d85e8cf83 100644 --- a/src/COMPRESS/dump_cfg_gz.cpp +++ b/src/COMPRESS/dump_cfg_gz.cpp @@ -29,10 +29,6 @@ DumpCFGGZ::DumpCFGGZ(LAMMPS *lmp, int narg, char **arg) : DumpCFG(lmp, narg, arg if (!compressed) error->all(FLERR, "Dump cfg/gz only writes compressed files"); } -/* ---------------------------------------------------------------------- */ - -DumpCFGGZ::~DumpCFGGZ() {} - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or compressed diff --git a/src/COMPRESS/dump_cfg_gz.h b/src/COMPRESS/dump_cfg_gz.h index ccd40141eb..153a4490c6 100644 --- a/src/COMPRESS/dump_cfg_gz.h +++ b/src/COMPRESS/dump_cfg_gz.h @@ -28,7 +28,7 @@ namespace LAMMPS_NS { class DumpCFGGZ : public DumpCFG { public: DumpCFGGZ(class LAMMPS *, int, char **); - virtual ~DumpCFGGZ(); + virtual ~DumpCFGGZ() = default; protected: GzFileWriter writer; diff --git a/src/COMPRESS/dump_cfg_zstd.cpp b/src/COMPRESS/dump_cfg_zstd.cpp index 73ee3e7e11..6d70749479 100644 --- a/src/COMPRESS/dump_cfg_zstd.cpp +++ b/src/COMPRESS/dump_cfg_zstd.cpp @@ -35,10 +35,6 @@ DumpCFGZstd::DumpCFGZstd(LAMMPS *lmp, int narg, char **arg) : DumpCFG(lmp, narg, if (!compressed) error->all(FLERR, "Dump cfg/zstd only writes compressed files"); } -/* ---------------------------------------------------------------------- */ - -DumpCFGZstd::~DumpCFGZstd() {} - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or compressed diff --git a/src/COMPRESS/dump_cfg_zstd.h b/src/COMPRESS/dump_cfg_zstd.h index ddcb06f00e..32013b274e 100644 --- a/src/COMPRESS/dump_cfg_zstd.h +++ b/src/COMPRESS/dump_cfg_zstd.h @@ -33,7 +33,7 @@ namespace LAMMPS_NS { class DumpCFGZstd : public DumpCFG { public: DumpCFGZstd(class LAMMPS *, int, char **); - virtual ~DumpCFGZstd(); + virtual ~DumpCFGZstd() = default; protected: ZstdFileWriter writer; diff --git a/src/COMPRESS/dump_custom_gz.cpp b/src/COMPRESS/dump_custom_gz.cpp index f40cf8d3d1..a8ef1ffe7c 100644 --- a/src/COMPRESS/dump_custom_gz.cpp +++ b/src/COMPRESS/dump_custom_gz.cpp @@ -27,10 +27,6 @@ DumpCustomGZ::DumpCustomGZ(LAMMPS *lmp, int narg, char **arg) : DumpCustom(lmp, if (!compressed) error->all(FLERR, "Dump custom/gz only writes compressed files"); } -/* ---------------------------------------------------------------------- */ - -DumpCustomGZ::~DumpCustomGZ() {} - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or compressed diff --git a/src/COMPRESS/dump_custom_gz.h b/src/COMPRESS/dump_custom_gz.h index 10455eb8db..660af8bfae 100644 --- a/src/COMPRESS/dump_custom_gz.h +++ b/src/COMPRESS/dump_custom_gz.h @@ -28,7 +28,7 @@ namespace LAMMPS_NS { class DumpCustomGZ : public DumpCustom { public: DumpCustomGZ(class LAMMPS *, int, char **); - virtual ~DumpCustomGZ(); + virtual ~DumpCustomGZ() = default; protected: GzFileWriter writer; diff --git a/src/COMPRESS/dump_custom_zstd.cpp b/src/COMPRESS/dump_custom_zstd.cpp index 347c9c08e2..c6c7e3592e 100644 --- a/src/COMPRESS/dump_custom_zstd.cpp +++ b/src/COMPRESS/dump_custom_zstd.cpp @@ -37,12 +37,6 @@ DumpCustomZstd::DumpCustomZstd(LAMMPS *lmp, int narg, char **arg) : error->all(FLERR,"Dump custom/zstd only writes compressed files"); } -/* ---------------------------------------------------------------------- */ - -DumpCustomZstd::~DumpCustomZstd() -{ -} - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or compressed diff --git a/src/COMPRESS/dump_custom_zstd.h b/src/COMPRESS/dump_custom_zstd.h index a687cfb928..f179223265 100644 --- a/src/COMPRESS/dump_custom_zstd.h +++ b/src/COMPRESS/dump_custom_zstd.h @@ -34,7 +34,7 @@ namespace LAMMPS_NS { class DumpCustomZstd : public DumpCustom { public: DumpCustomZstd(class LAMMPS *, int, char **); - virtual ~DumpCustomZstd(); + virtual ~DumpCustomZstd() = default; protected: ZstdFileWriter writer; diff --git a/src/COMPRESS/dump_local_gz.cpp b/src/COMPRESS/dump_local_gz.cpp index a23fa1a1ac..c3669e6157 100644 --- a/src/COMPRESS/dump_local_gz.cpp +++ b/src/COMPRESS/dump_local_gz.cpp @@ -27,10 +27,6 @@ DumpLocalGZ::DumpLocalGZ(LAMMPS *lmp, int narg, char **arg) : DumpLocal(lmp, nar if (!compressed) error->all(FLERR, "Dump local/gz only writes compressed files"); } -/* ---------------------------------------------------------------------- */ - -DumpLocalGZ::~DumpLocalGZ() {} - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or compressed diff --git a/src/COMPRESS/dump_local_gz.h b/src/COMPRESS/dump_local_gz.h index a6b1b118b7..e2e7a028aa 100644 --- a/src/COMPRESS/dump_local_gz.h +++ b/src/COMPRESS/dump_local_gz.h @@ -28,7 +28,7 @@ namespace LAMMPS_NS { class DumpLocalGZ : public DumpLocal { public: DumpLocalGZ(class LAMMPS *, int, char **); - virtual ~DumpLocalGZ(); + virtual ~DumpLocalGZ() = default; protected: GzFileWriter writer; diff --git a/src/COMPRESS/dump_local_zstd.cpp b/src/COMPRESS/dump_local_zstd.cpp index 1d3fc4756e..63af89afcc 100644 --- a/src/COMPRESS/dump_local_zstd.cpp +++ b/src/COMPRESS/dump_local_zstd.cpp @@ -33,10 +33,6 @@ DumpLocalZstd::DumpLocalZstd(LAMMPS *lmp, int narg, char **arg) : DumpLocal(lmp, if (!compressed) error->all(FLERR, "Dump local/zstd only writes compressed files"); } -/* ---------------------------------------------------------------------- */ - -DumpLocalZstd::~DumpLocalZstd() {} - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or compressed diff --git a/src/COMPRESS/dump_local_zstd.h b/src/COMPRESS/dump_local_zstd.h index c14e58fd71..fb4f017b3d 100644 --- a/src/COMPRESS/dump_local_zstd.h +++ b/src/COMPRESS/dump_local_zstd.h @@ -34,7 +34,7 @@ namespace LAMMPS_NS { class DumpLocalZstd : public DumpLocal { public: DumpLocalZstd(class LAMMPS *, int, char **); - virtual ~DumpLocalZstd(); + virtual ~DumpLocalZstd() = default; protected: ZstdFileWriter writer; diff --git a/src/COMPRESS/dump_xyz_gz.cpp b/src/COMPRESS/dump_xyz_gz.cpp index 2d9548bf14..9d38c4673c 100644 --- a/src/COMPRESS/dump_xyz_gz.cpp +++ b/src/COMPRESS/dump_xyz_gz.cpp @@ -26,10 +26,6 @@ DumpXYZGZ::DumpXYZGZ(LAMMPS *lmp, int narg, char **arg) : DumpXYZ(lmp, narg, arg if (!compressed) error->all(FLERR, "Dump xyz/gz only writes compressed files"); } -/* ---------------------------------------------------------------------- */ - -DumpXYZGZ::~DumpXYZGZ() {} - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or compressed diff --git a/src/COMPRESS/dump_xyz_gz.h b/src/COMPRESS/dump_xyz_gz.h index 5fe60ced6f..62a25cfc66 100644 --- a/src/COMPRESS/dump_xyz_gz.h +++ b/src/COMPRESS/dump_xyz_gz.h @@ -28,7 +28,7 @@ namespace LAMMPS_NS { class DumpXYZGZ : public DumpXYZ { public: DumpXYZGZ(class LAMMPS *, int, char **); - virtual ~DumpXYZGZ(); + virtual ~DumpXYZGZ() = default; protected: GzFileWriter writer; diff --git a/src/COMPRESS/dump_xyz_zstd.cpp b/src/COMPRESS/dump_xyz_zstd.cpp index b56488ec09..bcbdc08a24 100644 --- a/src/COMPRESS/dump_xyz_zstd.cpp +++ b/src/COMPRESS/dump_xyz_zstd.cpp @@ -32,10 +32,6 @@ DumpXYZZstd::DumpXYZZstd(LAMMPS *lmp, int narg, char **arg) : DumpXYZ(lmp, narg, if (!compressed) error->all(FLERR, "Dump xyz/zstd only writes compressed files"); } -/* ---------------------------------------------------------------------- */ - -DumpXYZZstd::~DumpXYZZstd() {} - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or compressed diff --git a/src/COMPRESS/dump_xyz_zstd.h b/src/COMPRESS/dump_xyz_zstd.h index add279c4e7..110e27ab8f 100644 --- a/src/COMPRESS/dump_xyz_zstd.h +++ b/src/COMPRESS/dump_xyz_zstd.h @@ -34,7 +34,7 @@ namespace LAMMPS_NS { class DumpXYZZstd : public DumpXYZ { public: DumpXYZZstd(class LAMMPS *, int, char **); - virtual ~DumpXYZZstd(); + virtual ~DumpXYZZstd() = default; protected: ZstdFileWriter writer; diff --git a/src/DIELECTRIC/fix_polarize_bem_icc.cpp b/src/DIELECTRIC/fix_polarize_bem_icc.cpp index 35171c0a19..7bd6ff25bd 100644 --- a/src/DIELECTRIC/fix_polarize_bem_icc.cpp +++ b/src/DIELECTRIC/fix_polarize_bem_icc.cpp @@ -93,10 +93,6 @@ FixPolarizeBEMICC::FixPolarizeBEMICC(LAMMPS *lmp, int narg, char **arg) : Fix(lm /* ---------------------------------------------------------------------- */ -FixPolarizeBEMICC::~FixPolarizeBEMICC() {} - -/* ---------------------------------------------------------------------- */ - int FixPolarizeBEMICC::setmask() { int mask = 0; diff --git a/src/DIELECTRIC/fix_polarize_bem_icc.h b/src/DIELECTRIC/fix_polarize_bem_icc.h index 6ba6acb1a0..df04b52fdf 100644 --- a/src/DIELECTRIC/fix_polarize_bem_icc.h +++ b/src/DIELECTRIC/fix_polarize_bem_icc.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class FixPolarizeBEMICC : public Fix { public: FixPolarizeBEMICC(class LAMMPS *, int, char **); - ~FixPolarizeBEMICC(); + ~FixPolarizeBEMICC() = default; virtual int setmask(); virtual void init(); virtual void setup(int); diff --git a/src/DPD-MESO/fix_edpd_source.cpp b/src/DPD-MESO/fix_edpd_source.cpp index 0ad303516a..83ff896ff9 100644 --- a/src/DPD-MESO/fix_edpd_source.cpp +++ b/src/DPD-MESO/fix_edpd_source.cpp @@ -61,12 +61,6 @@ FixEDPDSource::FixEDPDSource(LAMMPS *lmp, int narg, char **arg) : /* ---------------------------------------------------------------------- */ -FixEDPDSource::~FixEDPDSource() -{ -} - -/* ---------------------------------------------------------------------- */ - int FixEDPDSource::setmask() { int mask = 0; diff --git a/src/DPD-MESO/fix_edpd_source.h b/src/DPD-MESO/fix_edpd_source.h index 0d6fab1d9d..13eecc7c56 100644 --- a/src/DPD-MESO/fix_edpd_source.h +++ b/src/DPD-MESO/fix_edpd_source.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class FixEDPDSource : public Fix { public: FixEDPDSource(class LAMMPS *, int, char **); - ~FixEDPDSource(); + ~FixEDPDSource() = default; int setmask(); void init(); void post_force(int); diff --git a/src/DPD-MESO/fix_tdpd_source.cpp b/src/DPD-MESO/fix_tdpd_source.cpp index 5eb7416d5b..80848d553d 100644 --- a/src/DPD-MESO/fix_tdpd_source.cpp +++ b/src/DPD-MESO/fix_tdpd_source.cpp @@ -62,12 +62,6 @@ FixTDPDSource::FixTDPDSource(LAMMPS *lmp, int narg, char **arg) : /* ---------------------------------------------------------------------- */ -FixTDPDSource::~FixTDPDSource() -{ -} - -/* ---------------------------------------------------------------------- */ - int FixTDPDSource::setmask() { int mask = 0; diff --git a/src/DPD-MESO/fix_tdpd_source.h b/src/DPD-MESO/fix_tdpd_source.h index fe0a806ac2..8bd9778ed0 100644 --- a/src/DPD-MESO/fix_tdpd_source.h +++ b/src/DPD-MESO/fix_tdpd_source.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class FixTDPDSource : public Fix { public: FixTDPDSource(class LAMMPS *, int, char **); - ~FixTDPDSource(); + ~FixTDPDSource() = default; int setmask(); void init(); void post_force(int); diff --git a/src/DPD-REACT/fix_rx.cpp b/src/DPD-REACT/fix_rx.cpp index b14831ee8d..f21914e2d5 100644 --- a/src/DPD-REACT/fix_rx.cpp +++ b/src/DPD-REACT/fix_rx.cpp @@ -84,7 +84,7 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : id_fix_species = nullptr; id_fix_species_old = nullptr; - const int Verbosity = 1; + constexpr int Verbosity = 1; // Keep track of the argument list. int iarg = 3; @@ -101,13 +101,10 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : if (strcmp(word,"none") == 0) { wtFlag = 0; localTempFlag = NONE; - } - else if (strcmp(word,"lucy") == 0) { + } else if (strcmp(word,"lucy") == 0) { wtFlag = LUCY; localTempFlag = HARMONIC; - } - else - error->all(FLERR,"Illegal fix rx local temperature weighting technique"); + } else error->all(FLERR,"Illegal fix rx local temperature weighting technique"); } // Select either sparse and dense matrix @@ -120,21 +117,11 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : useSparseKinetics = true; else if (strcmp(word,"dense") == 0) useSparseKinetics = false; - else { - std::string errmsg = "Illegal command " + std::string(word) - + " expected \"sparse\" or \"dense\"\n"; - error->all(FLERR, errmsg); - } + else error->all(FLERR, "Illegal command " + std::string(word) + + " expected \"sparse\" or \"dense\"\n"); - if (comm->me == 0 && Verbosity > 1) { - std::string msg = "FixRX: matrix format is "; - if (useSparseKinetics) - msg += std::string("sparse"); - else - msg += std::string("dense"); - - error->message(FLERR, msg); - } + if (comm->me == 0 && Verbosity > 1) + error->message(FLERR, fmt::format("FixRX: matrix format is {}",word)); } // Determine the ODE solver/stepper strategy in arg[6]. @@ -169,40 +156,32 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : } if (odeIntegrationFlag == ODE_LAMMPS_RK4 && narg==8) { - char *word = arg[iarg++]; - minSteps = atoi( word ); + minSteps = utils::inumeric(FLERR,arg[iarg++],false,lmp); - if (comm->me == 0 && Verbosity > 1) { - char msg[128]; - sprintf(msg, "FixRX: RK4 numSteps= %d", minSteps); - error->message(FLERR, msg); - } - } - else if (odeIntegrationFlag == ODE_LAMMPS_RK4 && narg>8) { + if (comm->me == 0 && Verbosity > 1) + error->message(FLERR,fmt::format("FixRX: RK4 numSteps= {}", minSteps)); + } else if (odeIntegrationFlag == ODE_LAMMPS_RK4 && narg>8) { error->all(FLERR,"Illegal fix rx command. Too many arguments for RK4 solver."); - } - else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) { + } else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) { // Must have four options. if (narg < 11) error->all(FLERR,"Illegal fix rx command. Too few arguments for RKF45 solver."); - minSteps = atoi( arg[iarg++] ); - maxIters = atoi( arg[iarg++] ); - relTol = strtod( arg[iarg++], nullptr); - absTol = strtod( arg[iarg++], nullptr); + minSteps = utils::inumeric(FLERR,arg[iarg++],false,lmp); + maxIters = utils::inumeric(FLERR,arg[iarg++],false,lmp); + relTol = utils::numeric(FLERR,arg[iarg++],false,lmp); + absTol = utils::numeric(FLERR,arg[iarg++],false,lmp); if (iarg < narg) - diagnosticFrequency = atoi( arg[iarg++] ); + diagnosticFrequency = utils::inumeric(FLERR,arg[iarg++],false,lmp); // maxIters must be at least minSteps. maxIters = std::max( minSteps, maxIters ); - if (comm->me == 0 && Verbosity > 1) { - //printf("FixRX: RKF45 minSteps= %d maxIters= %d absTol= %e relTol= %e\n", minSteps, maxIters, absTol, relTol); - char msg[128]; - sprintf(msg, "FixRX: RKF45 minSteps= %d maxIters= %d relTol= %.1e absTol= %.1e diagnosticFrequency= %d", minSteps, maxIters, relTol, absTol, diagnosticFrequency); - error->message(FLERR, msg); - } + if (comm->me == 0 && Verbosity > 1) + error->message(FLERR, fmt::format("FixRX: RKF45 minSteps= {} maxIters= {} " + "relTol= {:.1e} absTol= {:.1e} diagnosticFrequency= {}", + minSteps, maxIters, relTol, absTol, diagnosticFrequency)); } // Initialize/Create the sparse matrix database. @@ -265,11 +244,8 @@ void FixRX::post_constructor() fp = nullptr; if (comm->me == 0) { fp = utils::open_potential(kineticsFile,lmp,nullptr); - if (fp == nullptr) { - char str[128]; - snprintf(str,128,"Cannot open rx file %s",kineticsFile); - error->one(FLERR,str); - } + if (fp == nullptr) + error->one(FLERR,"Cannot open rx file {}: {}",kineticsFile,utils::getsyserror()); } // Assign species names to tmpspecies array and determine the number of unique species @@ -358,7 +334,7 @@ void FixRX::post_constructor() read_file( kineticsFile ); if (useSparseKinetics) - this->initSparse(); + initSparse(); // set comm size needed by this Pair comm_forward = nspecies*2; @@ -369,7 +345,7 @@ void FixRX::post_constructor() void FixRX::initSparse() { - const int Verbosity = 1; + constexpr int Verbosity = 1; if (comm->me == 0 && Verbosity > 1) { for (int k = 0; k < nspecies; ++k) @@ -449,7 +425,8 @@ void FixRX::initSparse() } } if (comm->me == 0 && Verbosity > 1) - printf("rx%3d: %d %d %d ... %s %s %s\n", i, nreac_i, nprod_i, allAreIntegral, rstr.c_str(), /*reversible[i]*/ (false) ? "<=>" : "=", pstr.c_str()); + utils::logmesg(lmp,"rx{:3d}: {} {} {} ... {} = {}\n", + i, nreac_i, nprod_i, allAreIntegral, rstr, pstr); mxreac = std::max( mxreac, nreac_i ); mxprod = std::max( mxprod, nprod_i ); @@ -458,8 +435,12 @@ void FixRX::initSparse() } if (comm->me == 0 && Verbosity > 1) { - char msg[256]; - sprintf(msg, "FixRX: Sparsity of Stoichiometric Matrix= %.1f%% non-zeros= %d nspecies= %d nreactions= %d maxReactants= %d maxProducts= %d maxSpecies= %d integralReactions= %d", 100*(double(nzeros) / (nspecies * nreactions)), nzeros, nspecies, nreactions, mxreac, mxprod, (mxreac + mxprod), SparseKinetics_enableIntegralReactions); + auto msg = fmt::format("FixRX: Sparsity of Stoichiometric Matrix= {:.1f}% non-zeros= {} " + "nspecies= {} nreactions= {} maxReactants= {} maxProducts= {} " + "maxSpecies= {} integralReactions= {}", + 100*(double(nzeros) / (nspecies * nreactions)), nzeros, nspecies, + nreactions, mxreac, mxprod, (mxreac + mxprod), + SparseKinetics_enableIntegralReactions); error->message(FLERR, msg); } @@ -774,18 +755,9 @@ void FixRX::pre_force(int /*vflag*/) double time_ODE = getElapsedTime(timer_localTemperature, timer_ODE); - //printf("me= %d total= %g temp= %g ode= %g comm= %g nlocal= %d nfc= %d %d\n", comm->me, - // getElapsedTime(timer_start, timer_stop), - // getElapsedTime(timer_start, timer_localTemperature), - // getElapsedTime(timer_localTemperature, timer_ODE), - // getElapsedTime(timer_ODE, timer_stop), nlocal, nFuncs, nSteps); - // Warn the user if a failure was detected in the ODE solver. - if (nFails > 0) { - char sbuf[128]; - sprintf(sbuf,"in FixRX::pre_force, ODE solver failed for %d atoms.", nFails); - error->warning(FLERR, sbuf); - } + if (nFails > 0) + error->warning(FLERR, fmt::format("FixRX::pre_force ODE solver failed for {} atoms.", nFails)); // Compute and report ODE diagnostics, if requested. if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency != 0) { @@ -1422,17 +1394,9 @@ void FixRX::odeDiagnostics() double time_local = getElapsedTime( timer_start, timer_stop ); if (comm->me == 0) { - char smesg[128]; - -#define print_mesg(smesg) {\ - if (screen) fprintf(screen,"%s\n", smesg); \ - if (logfile) fprintf(logfile,"%s\n", smesg); } - - sprintf(smesg, "FixRX::ODE Diagnostics: # of iters |# of rhs evals| run-time (sec) | # atoms"); - print_mesg(smesg); - - sprintf(smesg, " AVG per ODE : %-12.5g | %-12.5g | %-12.5g", avg_per_atom[0], avg_per_atom[1], avg_per_atom[2]); - print_mesg(smesg); + utils::logmesg(lmp,"FixRX::ODE Diagnostics: # of iters |# of rhs evals| run-time (sec) | # atoms\n"); + utils::logmesg(lmp," AVG per ODE : {:>12.5g} | {:>12.5g} | {:>12.5g}\n", + avg_per_atom[0], avg_per_atom[1], avg_per_atom[2]); // only valid for single time-step! if (diagnosticFrequency == 1) { @@ -1440,41 +1404,32 @@ void FixRX::odeDiagnostics() for (int i = 0; i < numCounters; ++i) rms_per_ODE[i] = sqrt( sum_sq[i+numCounters] / nODEs ); - sprintf(smesg, " RMS per ODE : %-12.5g | %-12.5g ", rms_per_ODE[0], rms_per_ODE[1]); - print_mesg(smesg); - - sprintf(smesg, " MAX per ODE : %-12.5g | %-12.5g ", max_per_ODE[0], max_per_ODE[1]); - print_mesg(smesg); - - sprintf(smesg, " MIN per ODE : %-12.5g | %-12.5g ", min_per_ODE[0], min_per_ODE[1]); - print_mesg(smesg); + utils::logmesg(lmp, " RMS per ODE : {:>12.5g} | {:>12.5g}\n", + rms_per_ODE[0], rms_per_ODE[1]); + utils::logmesg(lmp, " MAX per ODE : {:>12.5g} | {:>12.5g}\n", + max_per_ODE[0], max_per_ODE[1]); + utils::logmesg(lmp, " MIN per ODE : {:>12.5g} | {:>12.5g}\n", + min_per_ODE[0], min_per_ODE[1]); } - sprintf(smesg, " AVG per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", avg_per_proc[StepSum], avg_per_proc[FuncSum], avg_per_proc[TimeSum], avg_per_proc[AtomSum]); - print_mesg(smesg); + utils::logmesg(lmp," AVG per Proc : {:>12.5g} | {:>12.5g} | {:>12.5g} | {:>12.5g}\n", + avg_per_proc[StepSum], avg_per_proc[FuncSum], avg_per_proc[TimeSum], avg_per_proc[AtomSum]); if (comm->nprocs > 1) { double rms_per_proc[numCounters]; for (int i = 0; i < numCounters; ++i) rms_per_proc[i] = sqrt( sum_sq[i] / comm->nprocs ); - sprintf(smesg, " RMS per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", rms_per_proc[0], rms_per_proc[1], rms_per_proc[2], rms_per_proc[AtomSum]); - print_mesg(smesg); - - sprintf(smesg, " MAX per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", max_per_proc[0], max_per_proc[1], max_per_proc[2], max_per_proc[AtomSum]); - print_mesg(smesg); - - sprintf(smesg, " MIN per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", min_per_proc[0], min_per_proc[1], min_per_proc[2], min_per_proc[AtomSum]); - print_mesg(smesg); + utils::logmesg(lmp," RMS per Proc : {:>12.5g} | {:>12.5g} | {:>12.5g} | {:>12.5g}\n", + rms_per_proc[0], rms_per_proc[1], rms_per_proc[2], rms_per_proc[AtomSum]); + utils::logmesg(lmp," MAX per Proc : {:>12.5g} | {:>12.5g} | {:>12.5g} | {:>12.5g}\n", + max_per_proc[0], max_per_proc[1], max_per_proc[2], max_per_proc[AtomSum]); + utils::logmesg(lmp," MIN per Proc : {:>12.5g} | {:>12.5g} | {:>12.5g} | {:>12.5g}\n", + min_per_proc[0], min_per_proc[1], min_per_proc[2], min_per_proc[AtomSum]); } - sprintf(smesg, " AVG'd over %d time-steps", nTimes); - print_mesg(smesg); - sprintf(smesg, " AVG'ing took %g sec", time_local); - print_mesg(smesg); - -#undef print_mesg - + utils::logmesg(lmp, " AVG'd over {} time-steps\n", nTimes); + utils::logmesg(lmp, " AVG'ing took {} sec", time_local); } // Reset the counters. diff --git a/src/DPD-REACT/fix_rx.h b/src/DPD-REACT/fix_rx.h index 1d65c4c09e..bd3122e81d 100644 --- a/src/DPD-REACT/fix_rx.h +++ b/src/DPD-REACT/fix_rx.h @@ -97,7 +97,7 @@ class FixRX : public Fix { // Sparse stoichiometric matrix storage format and methods. bool useSparseKinetics; //SparseKinetics sparseKinetics; - void initSparse(void); + void initSparse(); int rhs_sparse(double, const double *, double *, void *) const; int sparseKinetics_maxReactants; //all(FLERR,"Fix shardlow does not yet support triclinic geometries"); if (rcut >= bbx || rcut >= bby || rcut>= bbz ) - { - char fmt[] = {"Shardlow algorithm requires sub-domain length > 2*(rcut+skin). Either reduce the number of processors requested, or change the cutoff/skin: rcut= %e bbx= %e bby= %e bbz= %e\n"}; - char *msg = (char *) malloc(sizeof(fmt) + 4*15); - sprintf(msg, fmt, rcut, bbx, bby, bbz); - error->one(FLERR, msg); - } + error->one(FLERR,"Shardlow algorithm requires sub-domain length > 2*(rcut+skin). " + "Either reduce the number of processors requested, or change the cutoff/skin: " + "rcut= {} bbx= {} bby= {} bbz= {}\n", rcut, bbx, bby, bbz); NPairHalfBinNewtonSSA *np_ssa = dynamic_cast(list->np); if (!np_ssa) error->one(FLERR, "NPair wasn't a NPairHalfBinNewtonSSA object"); diff --git a/src/DPD-REACT/nbin_ssa.cpp b/src/DPD-REACT/nbin_ssa.cpp index 993a41b356..c6ef22fe7d 100644 --- a/src/DPD-REACT/nbin_ssa.cpp +++ b/src/DPD-REACT/nbin_ssa.cpp @@ -34,10 +34,6 @@ NBinSSA::NBinSSA(LAMMPS *lmp) : NBinStandard(lmp) } } -NBinSSA::~NBinSSA() -{ -} - /* ---------------------------------------------------------------------- bin owned and ghost atoms for the Shardlow Splitting Algorithm (SSA) local atoms are in distinct bins (binhead[]) from the ghosts diff --git a/src/DPD-REACT/nbin_ssa.h b/src/DPD-REACT/nbin_ssa.h index c09ef7b692..5285c5b44d 100644 --- a/src/DPD-REACT/nbin_ssa.h +++ b/src/DPD-REACT/nbin_ssa.h @@ -41,7 +41,7 @@ class NBinSSA : public NBinStandard { int lbinzhi; // highest local bin z-dim coordinate NBinSSA(class LAMMPS *); - ~NBinSSA(); + virtual ~NBinSSA() = default; void bin_atoms_setup(int); void bin_atoms(); diff --git a/src/DPD-REACT/pair_exp6_rx.cpp b/src/DPD-REACT/pair_exp6_rx.cpp index 1d242de90b..b0b9f97ca2 100644 --- a/src/DPD-REACT/pair_exp6_rx.cpp +++ b/src/DPD-REACT/pair_exp6_rx.cpp @@ -58,7 +58,7 @@ struct PairExp6ParamDataType *epsilonOld2, *alphaOld2, *rmOld2, *mixWtSite2old; // Default constructor -- nullify everything. - PairExp6ParamDataType(void) + PairExp6ParamDataType() : n(0), epsilon1(nullptr), alpha1(nullptr), rm1(nullptr), mixWtSite1(nullptr), epsilon2(nullptr), alpha2(nullptr), rm2(nullptr), mixWtSite2(nullptr), epsilonOld1(nullptr), alphaOld1(nullptr), rmOld1(nullptr), mixWtSite1old(nullptr), diff --git a/src/EFF/compute_temp_deform_eff.h b/src/EFF/compute_temp_deform_eff.h index 1bd6768847..e90ba0465e 100644 --- a/src/EFF/compute_temp_deform_eff.h +++ b/src/EFF/compute_temp_deform_eff.h @@ -29,7 +29,7 @@ class ComputeTempDeformEff : public Compute { ComputeTempDeformEff(class LAMMPS *, int, char **); virtual ~ComputeTempDeformEff(); void init(); - void setup(void); + void setup(); virtual double compute_scalar(); virtual void compute_vector(); diff --git a/src/EFF/compute_temp_region_eff.h b/src/EFF/compute_temp_region_eff.h index 8ab10dd39a..08211c63c8 100644 --- a/src/EFF/compute_temp_region_eff.h +++ b/src/EFF/compute_temp_region_eff.h @@ -33,7 +33,7 @@ class ComputeTempRegionEff : public Compute { virtual double compute_scalar(); virtual void compute_vector(); - void dof_remove_pre(void); + void dof_remove_pre(); int dof_remove(int); void remove_bias(int, double *); void remove_bias_all(); diff --git a/src/EXTRA-DUMP/xdr_compat.cpp b/src/EXTRA-DUMP/xdr_compat.cpp index 04807a60cc..f2302f3ce7 100644 --- a/src/EXTRA-DUMP/xdr_compat.cpp +++ b/src/EXTRA-DUMP/xdr_compat.cpp @@ -604,7 +604,7 @@ xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op) xdrs->x_ops = (struct xdr_ops *) &xdrstdio_ops; xdrs->x_private = (char *) file; xdrs->x_handy = 0; - xdrs->x_base = 0; + xdrs->x_base = nullptr; } /* diff --git a/src/EXTRA-FIX/fix_ttm.cpp b/src/EXTRA-FIX/fix_ttm.cpp index abcbd2ba1e..13fbd4aff4 100644 --- a/src/EXTRA-FIX/fix_ttm.cpp +++ b/src/EXTRA-FIX/fix_ttm.cpp @@ -77,7 +77,7 @@ FixTTM::FixTTM(LAMMPS *lmp, int narg, char **arg) : nzgrid = utils::inumeric(FLERR,arg[12],false,lmp); tinit = 0.0; - infile = outfile = NULL; + infile = outfile = nullptr; int iarg = 13; while (iarg < narg) { diff --git a/src/GRANULAR/fix_pour.cpp b/src/GRANULAR/fix_pour.cpp index a2f4d91840..b73593b1d7 100644 --- a/src/GRANULAR/fix_pour.cpp +++ b/src/GRANULAR/fix_pour.cpp @@ -268,16 +268,9 @@ FixPour::FixPour(LAMMPS *lmp, int narg, char **arg) : // print stats - if (me == 0) { - if (screen) - fprintf(screen, - "Particle insertion: %d every %d steps, %d by step %d\n", - nper,nfreq,ninsert,nfinal); - if (logfile) - fprintf(logfile, - "Particle insertion: %d every %d steps, %d by step %d\n", - nper,nfreq,ninsert,nfinal); - } + if (me == 0) + utils::logmesg(lmp, "Particle insertion: {} every {} steps, {} by step {}\n", + nper,nfreq,ninsert,nfinal); } /* ---------------------------------------------------------------------- */ diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index be52d98183..49aea4eeb6 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -148,7 +148,7 @@ PairKIM::PairKIM(LAMMPS *lmp) : PairKIM::~PairKIM() { // clean up kim_modelname - if (kim_modelname != 0) delete [] kim_modelname; + if (kim_modelname != nullptr) delete [] kim_modelname; // clean up lammps atom species number to unique particle names mapping if (lmps_unique_elements) @@ -169,7 +169,7 @@ PairKIM::~PairKIM() // clean up lmps_stripped_neigh_ptr if (lmps_stripped_neigh_ptr) { delete [] lmps_stripped_neigh_ptr; - lmps_stripped_neigh_ptr = 0; + lmps_stripped_neigh_ptr = nullptr; } // clean up allocated memory for standard Pair class usage @@ -184,7 +184,7 @@ PairKIM::~PairKIM() // clean up neighborlist pointers if (neighborLists) { delete [] neighborLists; - neighborLists = 0; + neighborLists = nullptr; } // clean up KIM interface (if necessary) @@ -330,9 +330,9 @@ void PairKIM::settings(int narg, char **arg) set_lmps_flags(); // set KIM Model name - if (kim_modelname != 0) { + if (kim_modelname != nullptr) { delete [] kim_modelname; - kim_modelname = 0; + kim_modelname = nullptr; } kim_modelname = utils::strdup(arg[0]); @@ -385,7 +385,7 @@ void PairKIM::coeff(int narg, char **arg) delete [] lmps_unique_elements; } lmps_unique_elements = new char*[atom->ntypes]; - for (i = 0; i < atom->ntypes; i++) lmps_unique_elements[i] = 0; + for (i = 0; i < atom->ntypes; i++) lmps_unique_elements[i] = nullptr; // Assume all species arguments are valid // errors will be detected by below diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 9d8674d0e8..04bf84ed31 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -109,6 +109,8 @@ action domain_kokkos.h action fftdata_kokkos.h fft3d.h action fft3d_kokkos.cpp fft3d.cpp action fft3d_kokkos.h fft3d.h +action fix_acks2_reaxff_kokkos.cpp fix_acks2_reaxff.cpp +action fix_acks2_reaxff_kokkos.h fix_acks2_reaxff.h action fix_deform_kokkos.cpp action fix_deform_kokkos.h action fix_enforce2d_kokkos.cpp diff --git a/src/KOKKOS/fix_acks2_reaxff_kokkos.cpp b/src/KOKKOS/fix_acks2_reaxff_kokkos.cpp new file mode 100644 index 0000000000..63fb1e7a53 --- /dev/null +++ b/src/KOKKOS/fix_acks2_reaxff_kokkos.cpp @@ -0,0 +1,1972 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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: Stan Moore (SNL) +------------------------------------------------------------------------- */ + +#include "fix_acks2_reaxff_kokkos.h" + +#include "atom.h" +#include "atom_kokkos.h" +#include "atom_masks.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "integrate.h" +#include "kokkos.h" +#include "memory_kokkos.h" +#include "neigh_list_kokkos.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "pair_reaxff_kokkos.h" +#include "update.h" + +#include + +using namespace LAMMPS_NS; +using namespace FixConst; + +#define SMALL 0.0001 +#define EV_TO_KCAL_PER_MOL 14.4 + +/* ---------------------------------------------------------------------- */ + +template +FixACKS2ReaxFFKokkos:: +FixACKS2ReaxFFKokkos(LAMMPS *lmp, int narg, char **arg) : + FixACKS2ReaxFF(lmp, narg, arg) +{ + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + + datamask_read = X_MASK | V_MASK | F_MASK | MASK_MASK | Q_MASK | TYPE_MASK | TAG_MASK; + datamask_modify = Q_MASK | X_MASK; + + nmax = m_cap = 0; + allocated_flag = 0; + nprev = 4; + + memory->destroy(s_hist); + memory->destroy(s_hist_X); + memory->destroy(s_hist_last); + grow_arrays(atom->nmax); + memoryKK->create_kokkos(k_s_hist_last,s_hist_last,2,nprev,"acks2/reax:s_hist_last"); + d_s_hist_last = k_s_hist_last.template view(); + buf = new double[2*nprev]; + prev_last_rows_rank = 0; + + d_mfill_offset = typename AT::t_int_scalar("acks2/kk:mfill_offset"); +} + +/* ---------------------------------------------------------------------- */ + +template +FixACKS2ReaxFFKokkos::~FixACKS2ReaxFFKokkos() +{ + if (copymode) return; + + memoryKK->destroy_kokkos(k_s_hist,s_hist); + memoryKK->destroy_kokkos(k_s_hist_X,s_hist_X); + memoryKK->destroy_kokkos(k_s_hist_last,s_hist_last); + delete [] buf; + + deallocate_array(); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::init() +{ + atomKK->k_q.modify(); + atomKK->k_q.sync(); + + FixACKS2ReaxFF::init(); + + neighflag = lmp->kokkos->neighflag_qeq; + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = std::is_same::value && + !std::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = std::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->fix = 1; + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + } else { //if (neighflag == HALF || neighflag == HALFTHREAD) + neighbor->requests[irequest]->fix = 1; + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + neighbor->requests[irequest]->ghost = 1; + } + + int ntypes = atom->ntypes; + k_params = Kokkos::DualView + ("FixACKS2ReaxFF::params",ntypes+1); + params = k_params.template view(); + + for (int n = 1; n <= ntypes; n++) { + k_params.h_view(n).chi = chi[n]; + k_params.h_view(n).eta = eta[n]; + k_params.h_view(n).gamma = gamma[n]; + k_params.h_view(n).bcut_acks2 = bcut_acks2[n]; + } + k_params.template modify(); + + cutsq = swb * swb; + + init_shielding_k(); + init_hist(); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::init_shielding_k() +{ + int i,j; + int ntypes = atom->ntypes; + + k_shield = DAT::tdual_ffloat_2d("acks2/kk:shield",ntypes+1,ntypes+1); + d_shield = k_shield.template view(); + + for( i = 1; i <= ntypes; ++i ) + for( j = 1; j <= ntypes; ++j ) + k_shield.h_view(i,j) = pow( gamma[i] * gamma[j], -1.5 ); + + k_shield.template modify(); + k_shield.template sync(); + + k_bcut = DAT::tdual_ffloat_2d("acks2/kk:bcut",ntypes+1,ntypes+1); + d_bcut = k_bcut.template view(); + + for( i = 1; i <= ntypes; ++i ) + for( j = 1; j <= ntypes; ++j ) + k_bcut.h_view(i,j) = 0.5*(bcut_acks2[i] + bcut_acks2[j]); + + k_bcut.template modify(); + k_bcut.template sync(); + + k_tap = DAT::tdual_ffloat_1d("acks2/kk:tap",8); + d_tap = k_tap.template view(); + + for (i = 0; i < 8; i ++) + k_tap.h_view(i) = Tap[i]; + + k_tap.template modify(); + k_tap.template sync(); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::init_hist() +{ + k_s_hist.clear_sync_state(); + k_s_hist_X.clear_sync_state(); + k_s_hist_last.clear_sync_state(); + + Kokkos::deep_copy(d_s_hist,0.0); + Kokkos::deep_copy(d_s_hist_X,0.0); + Kokkos::deep_copy(d_s_hist_last,0.0); + + k_s_hist.template modify(); + k_s_hist_X.template modify(); + k_s_hist_last.template modify(); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::setup_pre_force(int vflag) +{ + pre_force(vflag); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::pre_force(int vflag) +{ + if (update->ntimestep % nevery) return; + + atomKK->sync(execution_space,datamask_read); + + x = atomKK->k_x.view(); + v = atomKK->k_v.view(); + f = atomKK->k_f.view(); + q = atomKK->k_q.view(); + tag = atomKK->k_tag.view(); + type = atomKK->k_type.view(); + mask = atomKK->k_mask.view(); + nlocal = atomKK->nlocal; + nall = atom->nlocal + atom->nghost; + newton_pair = force->newton_pair; + + k_params.template sync(); + k_shield.template sync(); + k_bcut.template sync(); + k_tap.template sync(); + + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + nn = list->inum; + NN = list->inum + list->gnum; + + copymode = 1; + + // allocate + + allocate_array(); + + if (!allocated_flag || last_allocate < neighbor->lastcall) { + + // get max number of neighbor + + allocate_matrix(); + + // last_rows_rank proc must not own zero atoms (unless no atoms total) + // otherwise some loops are no-ops and last rows contribution won't + // be computed correctly + + int flag = comm->me; + if (nn == 0) flag = MAXSMALLINT; + MPI_Allreduce(&flag, &last_rows_rank, 1, MPI_INT, MPI_MIN, world); + last_rows_flag = (comm->me == last_rows_rank); + + // pass along "s" array history if necessary + + if (prev_last_rows_rank != last_rows_rank) { + + MPI_Request request; + if (comm->me == last_rows_rank) + MPI_Irecv(buf,2*nprev,MPI_DOUBLE, + prev_last_rows_rank,0,world,&request); + + if (comm->me == prev_last_rows_rank) { + + // pack buffer + k_s_hist_last.template sync(); + auto h_s_hist_last = k_s_hist_last.h_view; + int n = 0; + for (int k = 0; k < nprev; k++) { + buf[n++] = h_s_hist_last(0,k); + buf[n++] = h_s_hist_last(1,k); + } + + MPI_Send(buf,2*nprev,MPI_DOUBLE,last_rows_rank,0,world); + } + + if (comm->me == last_rows_rank) { + MPI_Wait(&request,MPI_STATUS_IGNORE); + + // unpack buffer + k_s_hist_last.template sync(); + auto h_s_hist_last = k_s_hist_last.h_view; + int n = 0; + for (int k = 0; k < nprev; k++) { + h_s_hist_last(0,k) = buf[n++]; + h_s_hist_last(1,k) = buf[n++]; + } + k_s_hist_last.template modify(); + } + } + + prev_last_rows_rank = last_rows_rank; + + last_allocate = update->ntimestep; + } + + // compute_H + + if (execution_space == Host) { // CPU + if (neighflag == FULL) { + FixACKS2ReaxFFKokkosComputeHFunctor computeH_functor(this); + Kokkos::parallel_scan(nn,computeH_functor); + } else { // HALF and HALFTHREAD are the same + FixACKS2ReaxFFKokkosComputeHFunctor computeH_functor(this); + Kokkos::parallel_scan(nn,computeH_functor); + } + } else { // GPU, use teams + Kokkos::deep_copy(d_mfill_offset,0); + + int vector_length = 32; + int atoms_per_team = 4; + int num_teams = nn / atoms_per_team + (nn % atoms_per_team ? 1 : 0); + + Kokkos::TeamPolicy policy(num_teams, atoms_per_team, + vector_length); + + if (neighflag == FULL) { + FixACKS2ReaxFFKokkosComputeHFunctor computeH_functor( + this, atoms_per_team, vector_length); + Kokkos::parallel_for(policy, computeH_functor); + } else { // HALF and HALFTHREAD are the same + FixACKS2ReaxFFKokkosComputeHFunctor computeH_functor( + this, atoms_per_team, vector_length); + Kokkos::parallel_for(policy, computeH_functor); + } + } + + need_dup = lmp->kokkos->need_dup(1); + + if (need_dup) + dup_X_diag = Kokkos::Experimental::create_scatter_view (d_X_diag); // allocate duplicated memory + else + ndup_X_diag = Kokkos::Experimental::create_scatter_view (d_X_diag); + + // compute_X + + Kokkos::deep_copy(d_X_diag,0.0); + + if (execution_space == Host || 1) { // CPU + if (neighflag == FULL) { + FixACKS2ReaxFFKokkosComputeXFunctor computeX_functor(this); + Kokkos::parallel_scan(nn,computeX_functor); + } else if (neighflag == HALFTHREAD) { + FixACKS2ReaxFFKokkosComputeXFunctor computeX_functor(this); + Kokkos::parallel_scan(nn,computeX_functor); + } else { + FixACKS2ReaxFFKokkosComputeXFunctor computeX_functor(this); + Kokkos::parallel_scan(nn,computeX_functor); + } + } else { // GPU, use teams + Kokkos::deep_copy(d_mfill_offset,0); + + int vector_length = 32; + int atoms_per_team = 4; + int num_teams = nn / atoms_per_team + (nn % atoms_per_team ? 1 : 0); + + Kokkos::TeamPolicy policy(num_teams, atoms_per_team, + vector_length); + if (neighflag == FULL) { + FixACKS2ReaxFFKokkosComputeXFunctor computeX_functor( + this, atoms_per_team, vector_length); + Kokkos::parallel_for(policy, computeX_functor); + } else if (neighflag == HALFTHREAD) { + FixACKS2ReaxFFKokkosComputeXFunctor computeX_functor( + this, atoms_per_team, vector_length); + Kokkos::parallel_for(policy, computeX_functor); + } else { + FixACKS2ReaxFFKokkosComputeXFunctor computeX_functor( + this, atoms_per_team, vector_length); + Kokkos::parallel_for(policy, computeX_functor); + } + } + + if (need_dup) { + Kokkos::Experimental::contribute(d_X_diag, dup_X_diag); + + // free duplicated memory + + dup_X_diag = decltype(dup_X_diag)(); + } + + if (neighflag != FULL) { + pack_flag = 4; + //comm->reverse_comm_fix(this); //Coll_Vector( X_diag ); + k_X_diag.template modify(); + k_X_diag.template sync(); + comm->reverse_comm_fix(this); + k_X_diag.template modify(); + k_X_diag.template sync(); + } + + if (efield) get_chi_field(); + + // init_matvec + + k_s_hist.template sync(); + k_s_hist_X.template sync(); + k_s_hist_last.template sync(); + Kokkos::parallel_for(Kokkos::RangePolicy(0,nn),*this); + + pack_flag = 2; + // comm->forward_comm_fix(this); //Dist_vector( s ); + k_s.template modify(); + k_s.template sync(); + comm->forward_comm_fix(this); + more_forward_comm(k_s.h_view.data()); + k_s.template modify(); + k_s.template sync(); + + // bicgstab solve over b_s, s + + bicgstab_solve(); + + calculate_Q(); + + k_s_hist.template modify(); + k_s_hist_X.template modify(); + k_s_hist_last.template modify(); + + copymode = 0; + + if (!allocated_flag) + allocated_flag = 1; + + atomKK->modified(execution_space,datamask_modify); + k_s.modify(); +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::num_neigh_item(int ii, int &maxneigh) const +{ + const int i = d_ilist[ii]; + maxneigh += d_numneigh[i]; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::allocate_matrix() +{ + nmax = atom->nmax; + + // determine the total space for the H matrix + + m_cap = 0; + FixACKS2ReaxFFKokkosNumNeighFunctor neigh_functor(this); + Kokkos::parallel_reduce(nn,neigh_functor,m_cap); + + // H matrix + + d_firstnbr = typename AT::t_int_1d("acks2/kk:firstnbr",nmax); + d_numnbrs = typename AT::t_int_1d("acks2/kk:numnbrs",nmax); + d_jlist = typename AT::t_int_1d("acks2/kk:jlist",m_cap); + d_val = typename AT::t_ffloat_1d("acks2/kk:val",m_cap); + + // X matrix + + d_firstnbr_X = typename AT::t_int_1d("acks2/kk:firstnbr_X",nmax); + d_numnbrs_X = typename AT::t_int_1d("acks2/kk:numnbrs_X",nmax); + d_jlist_X = typename AT::t_int_1d("acks2/kk:jlist_X",m_cap); + d_val_X = typename AT::t_ffloat_1d("acks2/kk:val_X",m_cap); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::allocate_array() +{ + // 0 to nn-1: owned atoms related to H matrix + // nn to NN-1: ghost atoms related to H matrix + // NN to NN+nn-1: owned atoms related to X matrix + // NN+nn to 2*NN-1: ghost atoms related X matrix + // 2*NN to 2*NN+1: last two rows, owned by proc 0 + + if (atom->nmax > nmax) { + nmax = atom->nmax; + int size = nmax*2 + 2; + + d_q = typename AT::t_ffloat_1d("acks2/kk:q",size); + + memoryKK->create_kokkos(k_s,s,size,"acks2/kk:s"); + d_s = k_s.template view(); + + d_b_s = typename AT::t_ffloat_1d("acks2/kk:b_s",size); + + d_Hdia_inv = typename AT::t_ffloat_1d("acks2/kk:Hdia_inv",nmax); + + memoryKK->create_kokkos(k_chi_field,chi_field,nmax,"acks2/kk:chi_field"); + d_chi_field = k_chi_field.template view(); + + memoryKK->create_kokkos(k_X_diag,X_diag,nmax,"acks2/kk:X_diag"); + d_X_diag = k_X_diag.template view(); + + d_Xdia_inv = typename AT::t_ffloat_1d("acks2/kk:Xdia_inv",nmax); + + d_p = typename AT::t_ffloat_1d("acks2/kk:p",size); + d_r = typename AT::t_ffloat_1d("acks2/kk:r",size); + + memoryKK->create_kokkos(k_d,d,size,"acks2/kk:d"); + d_d = k_d.template view(); + + d_g = typename AT::t_ffloat_1d("acks2/kk:g",size); + + memoryKK->create_kokkos(k_q_hat,q_hat,size,"acks2/kk:q_hat"); + d_q_hat = k_q_hat.template view(); + + d_r_hat = typename AT::t_ffloat_1d("acks2/kk:r_hat",size); + + memoryKK->create_kokkos(k_y,y,size,"acks2/kk:y"); + d_y = k_y.template view(); + + memoryKK->create_kokkos(k_z,z,size,"acks2/kk:z"); + d_z = k_z.template view(); + } + + if (efield) get_chi_field(); + + // init_storage + Kokkos::parallel_for(Kokkos::RangePolicy(0,NN),*this); + +} + +/* ---------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::deallocate_array() +{ + memoryKK->destroy_kokkos(k_s,s); + memoryKK->destroy_kokkos(k_chi_field,chi_field); + memoryKK->destroy_kokkos(X_diag); + memoryKK->destroy_kokkos(k_d,d); + memoryKK->destroy_kokkos(k_q_hat,q_hat); + memoryKK->destroy_kokkos(k_y,y); + memoryKK->destroy_kokkos(k_z,z); +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Zero, const int &ii) const +{ + const int i = d_ilist[ii]; + const int itype = type(i); + + if (mask[i] & groupbit) { + d_Hdia_inv[i] = 1.0 / params(itype).eta; + d_b_s[i] = -params(itype).chi - d_chi_field[i]; + d_s[i] = 0.0; + d_p[i] = 0.0; + d_r[i] = 0.0; + d_d[i] = 0.0; + } + +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::compute_h_item(int ii, int &m_fill, const bool &final) const +{ + const int i = d_ilist[ii]; + int j,jj,jtype; + + if (mask[i] & groupbit) { + + const X_FLOAT xtmp = x(i,0); + const X_FLOAT ytmp = x(i,1); + const X_FLOAT ztmp = x(i,2); + const int itype = type(i); + const tagint itag = tag(i); + const int jnum = d_numneigh[i]; + if (final) + d_firstnbr[i] = m_fill; + + for (jj = 0; jj < jnum; jj++) { + j = d_neighbors(i,jj); + j &= NEIGHMASK; + jtype = type(j); + + const X_FLOAT delx = x(j,0) - xtmp; + const X_FLOAT dely = x(j,1) - ytmp; + const X_FLOAT delz = x(j,2) - ztmp; + + if (NEIGHFLAG != FULL) { + // skip half of the interactions + const tagint jtag = tag(j); + if (j >= nlocal) { + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x(j,2) < ztmp) continue; + if (x(j,2) == ztmp && x(j,1) < ytmp) continue; + if (x(j,2) == ztmp && x(j,1) == ytmp && x(j,0) < xtmp) continue; + } + } + } + + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if (rsq > cutsq) continue; + + if (final) { + const F_FLOAT r = sqrt(rsq); + d_jlist(m_fill) = j; + const F_FLOAT shldij = d_shield(itype,jtype); + d_val(m_fill) = calculate_H_k(r,shldij); + } + m_fill++; + } + if (final) + d_numnbrs[i] = m_fill - d_firstnbr[i]; + } +} + +/* ---------------------------------------------------------------------- */ + +// Calculate Qeq matrix H where H is a sparse matrix and H[i][j] represents the electrostatic interaction coefficients on atom-i with atom-j +// d_val - contains the non-zero entries of sparse matrix H +// d_numnbrs - d_numnbrs[i] contains the # of non-zero entries in the i-th row of H (which also represents the # of neighbor atoms with electrostatic interaction coefficients with atom-i) +// d_firstnbr- d_firstnbr[i] contains the beginning index from where the H matrix entries corresponding to row-i is stored in d_val +// d_jlist - contains the column index corresponding to each entry in d_val + +template +template +void FixACKS2ReaxFFKokkos::compute_h_team( + const typename Kokkos::TeamPolicy::member_type &team, + int atoms_per_team, int vector_length) const { + + // scratch space setup + Kokkos::View, + Kokkos::MemoryTraits> + s_ilist(team.team_shmem(), atoms_per_team); + Kokkos::View, + Kokkos::MemoryTraits> + s_numnbrs(team.team_shmem(), atoms_per_team); + Kokkos::View, + Kokkos::MemoryTraits> + s_firstnbr(team.team_shmem(), atoms_per_team); + + Kokkos::View, + Kokkos::MemoryTraits> + s_jtype(team.team_shmem(), atoms_per_team, vector_length); + Kokkos::View, + Kokkos::MemoryTraits> + s_jlist(team.team_shmem(), atoms_per_team, vector_length); + Kokkos::View, + Kokkos::MemoryTraits> + s_r(team.team_shmem(), atoms_per_team, vector_length); + + // team of threads work on atoms with index in [firstatom, lastatom) + int firstatom = team.league_rank() * atoms_per_team; + int lastatom = + (firstatom + atoms_per_team < nn) ? (firstatom + atoms_per_team) : nn; + + // kokkos-thread-0 is used to load info from global memory into scratch space + if (team.team_rank() == 0) { + + // copy atom indices from d_ilist[firstatom:lastatom] to scratch space s_ilist[0:atoms_per_team] + // copy # of neighbor atoms for all the atoms with indices in d_ilist[firstatom:lastatom] from d_numneigh to scratch space s_numneigh[0:atoms_per_team] + // calculate total number of neighbor atoms for all atoms assigned to the current team of threads (Note - Total # of neighbor atoms here provides the + // upper bound space requirement to store the H matrix values corresponding to the atoms with indices in d_ilist[firstatom:lastatom]) + + Kokkos::parallel_scan(Kokkos::ThreadVectorRange(team, atoms_per_team), + [&](const int &idx, int &totalnbrs, bool final) { + int ii = firstatom + idx; + + if (ii < nn) { + const int i = d_ilist[ii]; + int jnum = d_numneigh[i]; + + if (final) { + s_ilist[idx] = i; + s_numnbrs[idx] = jnum; + s_firstnbr[idx] = totalnbrs; + } + totalnbrs += jnum; + } else { + s_numnbrs[idx] = 0; + } + }); + } + + // barrier ensures that the data moved to scratch space is visible to all the + // threads of the corresponding team + team.team_barrier(); + + // calculate the global memory offset from where the H matrix values to be + // calculated by the current team will be stored in d_val + int team_firstnbr_idx = 0; + Kokkos::single(Kokkos::PerTeam(team), + [=](int &val) { + int totalnbrs = s_firstnbr[lastatom - firstatom - 1] + + s_numnbrs[lastatom - firstatom - 1]; + val = Kokkos::atomic_fetch_add(&d_mfill_offset(), totalnbrs); + }, + team_firstnbr_idx); + + // map the H matrix computation of each atom to kokkos-thread (one atom per + // kokkos-thread) neighbor computation for each atom is assigned to vector + // lanes of the corresponding thread + Kokkos::parallel_for( + Kokkos::TeamThreadRange(team, atoms_per_team), [&](const int &idx) { + int ii = firstatom + idx; + + if (ii < nn) { + const int i = s_ilist[idx]; + + if (mask[i] & groupbit) { + const X_FLOAT xtmp = x(i, 0); + const X_FLOAT ytmp = x(i, 1); + const X_FLOAT ztmp = x(i, 2); + const int itype = type(i); + tagint itag = tag(i); + int jnum = s_numnbrs[idx]; + + // calculate the write-offset for atom-i's first neighbor + int atomi_firstnbr_idx = team_firstnbr_idx + s_firstnbr[idx]; + Kokkos::single(Kokkos::PerThread(team), + [&]() { d_firstnbr[i] = atomi_firstnbr_idx; }); + + // current # of neighbor atoms with non-zero electrostatic + // interaction coefficients with atom-i which represents the # of + // non-zero elements in row-i of H matrix + int atomi_nbrs_inH = 0; + + // calculate H matrix values corresponding to atom-i where neighbors + // are processed in batches and the batch size is vector_length + for (int jj_start = 0; jj_start < jnum; jj_start += vector_length) { + + int atomi_nbr_writeIdx = atomi_firstnbr_idx + atomi_nbrs_inH; + + // count the # of neighbor atoms with non-zero electrostatic + // interaction coefficients with atom-i in the current batch + int atomi_nbrs_curbatch = 0; + + // compute rsq, jtype, j and store in scratch space which is + // reused later + Kokkos::parallel_reduce( + Kokkos::ThreadVectorRange(team, vector_length), + [&](const int &idx, int &m_fill) { + const int jj = jj_start + idx; + + // initialize: -1 represents no interaction with atom-j + // where j = d_neighbors(i,jj) + s_jlist(team.team_rank(), idx) = -1; + + if (jj < jnum) { + int j = d_neighbors(i, jj); + j &= NEIGHMASK; + const int jtype = type(j); + + const X_FLOAT delx = x(j, 0) - xtmp; + const X_FLOAT dely = x(j, 1) - ytmp; + const X_FLOAT delz = x(j, 2) - ztmp; + + // valid nbr interaction + bool valid = true; + if (NEIGHFLAG != FULL) { + // skip half of the interactions + const tagint jtag = tag(j); + if (j >= nlocal) { + if (itag > jtag) { + if ((itag + jtag) % 2 == 0) + valid = false; + } else if (itag < jtag) { + if ((itag + jtag) % 2 == 1) + valid = false; + } else { + if (x(j, 2) < ztmp) + valid = false; + if (x(j, 2) == ztmp && x(j, 1) < ytmp) + valid = false; + if (x(j, 2) == ztmp && x(j, 1) == ytmp && x(j, 0) < xtmp) + valid = false; + } + } + } + + const F_FLOAT rsq = + delx * delx + dely * dely + delz * delz; + if (rsq > cutsq) + valid = false; + + if (valid) { + s_jlist(team.team_rank(), idx) = j; + s_jtype(team.team_rank(), idx) = jtype; + s_r(team.team_rank(), idx) = sqrt(rsq); + m_fill++; + } + } + }, + atomi_nbrs_curbatch); + + // write non-zero entries of H to global memory + Kokkos::parallel_scan( + Kokkos::ThreadVectorRange(team, vector_length), + [&](const int &idx, int &m_fill, bool final) { + int j = s_jlist(team.team_rank(), idx); + if (final) { + if (j != -1) { + const int jtype = s_jtype(team.team_rank(), idx); + const F_FLOAT r = s_r(team.team_rank(), idx); + const F_FLOAT shldij = d_shield(itype, jtype); + + d_jlist[atomi_nbr_writeIdx + m_fill] = j; + d_val[atomi_nbr_writeIdx + m_fill] = + calculate_H_k(r, shldij); + } + } + + if (j != -1) { + m_fill++; + } + }); + atomi_nbrs_inH += atomi_nbrs_curbatch; + } + + Kokkos::single(Kokkos::PerThread(team), + [&]() { d_numnbrs[i] = atomi_nbrs_inH; }); + } + } + }); +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +double FixACKS2ReaxFFKokkos::calculate_H_k(const F_FLOAT &r, const F_FLOAT &shld) const +{ + F_FLOAT taper, denom; + + taper = d_tap[7] * r + d_tap[6]; + taper = taper * r + d_tap[5]; + taper = taper * r + d_tap[4]; + taper = taper * r + d_tap[3]; + taper = taper * r + d_tap[2]; + taper = taper * r + d_tap[1]; + taper = taper * r + d_tap[0]; + + denom = r * r * r + shld; + denom = pow(denom,1.0/3.0); + + return taper * EV_TO_KCAL_PER_MOL / denom; +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::compute_x_item(int ii, int &m_fill, const bool &final) const +{ + // The X_diag array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + auto v_X_diag = ScatterViewHelper::value,decltype(dup_X_diag),decltype(ndup_X_diag)>::get(dup_X_diag,ndup_X_diag); + auto a_X_diag = v_X_diag.template access::value>(); + + const int i = d_ilist[ii]; + int j,jj,jtype; + F_FLOAT tmp = 0.0; + + if (mask[i] & groupbit) { + + const X_FLOAT xtmp = x(i,0); + const X_FLOAT ytmp = x(i,1); + const X_FLOAT ztmp = x(i,2); + const int itype = type(i); + const tagint itag = tag(i); + const int jnum = d_numneigh[i]; + if (final) + d_firstnbr_X[i] = m_fill; + + for (jj = 0; jj < jnum; jj++) { + j = d_neighbors(i,jj); + j &= NEIGHMASK; + jtype = type(j); + + const X_FLOAT delx = x(j,0) - xtmp; + const X_FLOAT dely = x(j,1) - ytmp; + const X_FLOAT delz = x(j,2) - ztmp; + + if (NEIGHFLAG != FULL) { + // skip half of the interactions + const tagint jtag = tag(j); + if (j >= nlocal) { + if (itag > jtag) { + if ((itag+jtag) % 2 == 0) continue; + } else if (itag < jtag) { + if ((itag+jtag) % 2 == 1) continue; + } else { + if (x(j,2) < ztmp) continue; + if (x(j,2) == ztmp && x(j,1) < ytmp) continue; + if (x(j,2) == ztmp && x(j,1) == ytmp && x(j,0) < xtmp) continue; + } + } + } + + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if (rsq > cutsq) continue; + + const F_FLOAT bcutoff = d_bcut(itype,jtype); + const F_FLOAT bcutoff2 = bcutoff*bcutoff; + if (rsq > bcutoff2) continue; + + if (final) { + const F_FLOAT r = sqrt(rsq); + d_jlist_X(m_fill) = j; + const F_FLOAT X_val = calculate_X_k(r,bcutoff); + d_val_X(m_fill) = X_val; + tmp -= X_val; + if (NEIGHFLAG != FULL) + a_X_diag[j] -= X_val; + } + m_fill++; + } + if (final) { + a_X_diag[i] += tmp; + d_numnbrs_X[i] = m_fill - d_firstnbr_X[i]; + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +template +void FixACKS2ReaxFFKokkos::compute_x_team( + const typename Kokkos::TeamPolicy::member_type &team, + int atoms_per_team, int vector_length) const { + + // The X_diag array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + auto v_X_diag = ScatterViewHelper::value,decltype(dup_X_diag),decltype(ndup_X_diag)>::get(dup_X_diag,ndup_X_diag); + auto a_X_diag = v_X_diag.template access::value>(); + + // scratch space setup + Kokkos::View, + Kokkos::MemoryTraits> + s_ilist(team.team_shmem(), atoms_per_team); + Kokkos::View, + Kokkos::MemoryTraits> + s_numnbrs(team.team_shmem(), atoms_per_team); + Kokkos::View, + Kokkos::MemoryTraits> + s_firstnbr(team.team_shmem(), atoms_per_team); + + Kokkos::View, + Kokkos::MemoryTraits> + s_jtype(team.team_shmem(), atoms_per_team, vector_length); + Kokkos::View, + Kokkos::MemoryTraits> + s_jlist(team.team_shmem(), atoms_per_team, vector_length); + Kokkos::View, + Kokkos::MemoryTraits> + s_r(team.team_shmem(), atoms_per_team, vector_length); + + // team of threads work on atoms with index in [firstatom, lastatom) + int firstatom = team.league_rank() * atoms_per_team; + int lastatom = + (firstatom + atoms_per_team < nn) ? (firstatom + atoms_per_team) : nn; + + // kokkos-thread-0 is used to load info from global memory into scratch space + if (team.team_rank() == 0) { + + // copy atom indices from d_ilist[firstatom:lastatom] to scratch space s_ilist[0:atoms_per_team] + // copy # of neighbor atoms for all the atoms with indices in d_ilist[firstatom:lastatom] from d_numneigh to scratch space s_numneigh[0:atoms_per_team] + // calculate total number of neighbor atoms for all atoms assigned to the current team of threads (Note - Total # of neighbor atoms here provides the + // upper bound space requirement to store the H matrix values corresponding to the atoms with indices in d_ilist[firstatom:lastatom]) + + Kokkos::parallel_scan(Kokkos::ThreadVectorRange(team, atoms_per_team), + [&](const int &idx, int &totalnbrs, bool final) { + int ii = firstatom + idx; + + if (ii < nn) { + const int i = d_ilist[ii]; + int jnum = d_numneigh[i]; + + if (final) { + s_ilist[idx] = i; + s_numnbrs[idx] = jnum; + s_firstnbr[idx] = totalnbrs; + } + totalnbrs += jnum; + } else { + s_numnbrs[idx] = 0; + } + }); + } + + // barrier ensures that the data moved to scratch space is visible to all the + // threads of the corresponding team + team.team_barrier(); + + // calculate the global memory offset from where the H matrix values to be + // calculated by the current team will be stored in d_val_X + int team_firstnbr_idx = 0; + Kokkos::single(Kokkos::PerTeam(team), + [=](int &val) { + int totalnbrs = s_firstnbr[lastatom - firstatom - 1] + + s_numnbrs[lastatom - firstatom - 1]; + val = Kokkos::atomic_fetch_add(&d_mfill_offset(), totalnbrs); + }, + team_firstnbr_idx); + + // map the H matrix computation of each atom to kokkos-thread (one atom per + // kokkos-thread) neighbor computation for each atom is assigned to vector + // lanes of the corresponding thread + Kokkos::parallel_for( + Kokkos::TeamThreadRange(team, atoms_per_team), [&](const int &idx) { + int ii = firstatom + idx; + + if (ii < nn) { + const int i = s_ilist[idx]; + + if (mask[i] & groupbit) { + const X_FLOAT xtmp = x(i, 0); + const X_FLOAT ytmp = x(i, 1); + const X_FLOAT ztmp = x(i, 2); + const int itype = type(i); + tagint itag = tag(i); + int jnum = s_numnbrs[idx]; + + // calculate the write-offset for atom-i's first neighbor + int atomi_firstnbr_idx = team_firstnbr_idx + s_firstnbr[idx]; + Kokkos::single(Kokkos::PerThread(team), + [&]() { d_firstnbr_X[i] = atomi_firstnbr_idx; }); + + // current # of neighbor atoms with non-zero electrostatic + // interaction coefficients with atom-i which represents the # of + // non-zero elements in row-i of H matrix + int atomi_nbrs_inH = 0; + + // calculate H matrix values corresponding to atom-i where neighbors + // are processed in batches and the batch size is vector_length + for (int jj_start = 0; jj_start < jnum; jj_start += vector_length) { + + int atomi_nbr_writeIdx = atomi_firstnbr_idx + atomi_nbrs_inH; + + // count the # of neighbor atoms with non-zero electrostatic + // interaction coefficients with atom-i in the current batch + int atomi_nbrs_curbatch = 0; + + // compute rsq, jtype, j and store in scratch space which is + // reused later + Kokkos::parallel_reduce( + Kokkos::ThreadVectorRange(team, vector_length), + [&](const int &idx, int &m_fill) { + const int jj = jj_start + idx; + + // initialize: -1 represents no interaction with atom-j + // where j = d_neighbors(i,jj) + s_jlist(team.team_rank(), idx) = -1; + + if (jj < jnum) { + int j = d_neighbors(i, jj); + j &= NEIGHMASK; + const int jtype = type(j); + + const X_FLOAT delx = x(j, 0) - xtmp; + const X_FLOAT dely = x(j, 1) - ytmp; + const X_FLOAT delz = x(j, 2) - ztmp; + + // valid nbr interaction + bool valid = true; + if (NEIGHFLAG != FULL) { + // skip half of the interactions + const tagint jtag = tag(j); + if (j >= nlocal) { + if (itag > jtag) { + if ((itag + jtag) % 2 == 0) + valid = false; + } else if (itag < jtag) { + if ((itag + jtag) % 2 == 1) + valid = false; + } else { + if (x(j, 2) < ztmp) + valid = false; + if (x(j, 2) == ztmp && x(j, 1) < ytmp) + valid = false; + if (x(j, 2) == ztmp && x(j, 1) == ytmp && + x(j, 0) < xtmp) + valid = false; + } + } + } + + const F_FLOAT rsq = + delx * delx + dely * dely + delz * delz; + if (rsq > cutsq) + valid = false; + + const F_FLOAT bcutoff = d_bcut(itype,jtype); + const F_FLOAT bcutoff2 = bcutoff*bcutoff; + if (rsq > bcutoff2) + valid = false; + + if (valid) { + s_jlist(team.team_rank(), idx) = j; + s_jtype(team.team_rank(), idx) = jtype; + s_r(team.team_rank(), idx) = sqrt(rsq); + m_fill++; + } + } + }, + atomi_nbrs_curbatch); + + // write non-zero entries of H to global memory + Kokkos::parallel_scan( + Kokkos::ThreadVectorRange(team, vector_length), + [&](const int &idx, int &m_fill, bool final) { + int j = s_jlist(team.team_rank(), idx); + if (final) { + if (j != -1) { + const int jtype = s_jtype(team.team_rank(), idx); + const F_FLOAT r = s_r(team.team_rank(), idx); + const F_FLOAT bcutoff = d_bcut(itype, jtype); + + d_jlist_X[atomi_nbr_writeIdx + m_fill] = j; + const F_FLOAT X_val = calculate_X_k(r, bcutoff); + d_val_X[atomi_nbr_writeIdx + m_fill] = + X_val; + a_X_diag[i] -= X_val; + if (NEIGHFLAG != FULL) + a_X_diag[j] -= X_val; + } + } + + if (j != -1) { + m_fill++; + } + }); + atomi_nbrs_inH += atomi_nbrs_curbatch; + } + + Kokkos::single(Kokkos::PerThread(team), + [&]() { d_numnbrs_X[i] = atomi_nbrs_inH; }); + } + } + }); +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +double FixACKS2ReaxFFKokkos::calculate_X_k( const double &r, const double &bcut) const +{ + const F_FLOAT d = r/bcut; + const F_FLOAT d3 = d*d*d; + const F_FLOAT omd = 1.0 - d; + const F_FLOAT omd2 = omd*omd; + const F_FLOAT omd6 = omd2*omd2*omd2; + + return bond_softness*d3*omd6; +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2InitMatvec, const int &ii) const +{ + if (d_X_diag[ii] == 0.0) + d_Xdia_inv[ii] = 1.0; + else + d_Xdia_inv[ii] = 1.0 / d_X_diag[ii]; + + const int i = d_ilist[ii]; + const int itype = type(i); + + if (mask[i] & groupbit) { + d_Hdia_inv[i] = 1.0 / params(itype).eta; + d_b_s[i] = -params(itype).chi - d_chi_field[i]; + d_b_s[NN+i] = 0.0; + + d_s[i] = 4*(d_s_hist(i,0)+d_s_hist(i,2))-(6*d_s_hist(i,1)+d_s_hist(i,3)); + d_s[NN+i] = 4*(d_s_hist_X(i,0)+d_s_hist_X(i,2))-(6*d_s_hist_X(i,1)+d_s_hist_X(i,3)); + } + + // last two rows + if (last_rows_flag && ii == 0) { + for (int k = 0; k < 2; k++) { + d_b_s[2*NN+k] = 0.0; + d_s[2*NN+k] = 4*(d_s_hist_last(k,0)+d_s_hist_last(k,2))-(6*d_s_hist_last(k,1)+d_s_hist_last(k,3)); + } + } + +} + +/* ---------------------------------------------------------------------- */ + +template +int FixACKS2ReaxFFKokkos::bicgstab_solve() +{ + int i; + F_FLOAT my_norm,norm_sqr,my_dot,dot_sqr; + double tmp, sigma, rho, rho_old, rnorm, bnorm; + + // sparse_matvec( &H, &X, x, d ); + sparse_matvec_acks2(d_s, d_d); + + pack_flag = 1; + k_d.template modify(); + k_d.template sync(); + if (neighflag != FULL) + comm->reverse_comm_fix(this); //Coll_vector( d ); + more_reverse_comm(k_d.h_view.data()); + k_d.template modify(); + k_d.template sync(); + + // vector_sum( r , 1., b, -1., d, nn ); + // bnorm = parallel_norm( b, nn ); + my_norm = 0.0; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nn),*this,my_norm); + norm_sqr = 0.0; + MPI_Allreduce( &my_norm, &norm_sqr, 1, MPI_DOUBLE, MPI_SUM, world ); + bnorm = sqrt(norm_sqr); + + // rnorm = parallel_norm( r, nn); + my_norm = 0.0; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nn),*this,my_norm); + norm_sqr = 0.0; + MPI_Allreduce( &my_norm, &norm_sqr, 1, MPI_DOUBLE, MPI_SUM, world ); + rnorm = sqrt(norm_sqr); + + if (bnorm == 0.0 ) bnorm = 1.0; + deep_copy(d_r_hat,d_r); + omega = 1.0; + rho = 1.0; + + for (i = 1; i < imax && rnorm / bnorm > tolerance; ++i) { + // rho = parallel_dot( r_hat, r, nn); + my_dot = 0.0; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nn),*this,my_dot); + dot_sqr = 0.0; + MPI_Allreduce( &my_dot, &dot_sqr, 1, MPI_DOUBLE, MPI_SUM, world ); + rho = dot_sqr; + if (rho == 0.0) break; + + if (i > 1) { + beta = (rho / rho_old) * (alpha / omega); + + // vector_sum( p , 1., r, beta, q, nn); + // vector_sum( q , 1., p, -omega, z, nn); + // pre-conditioning + Kokkos::parallel_for(Kokkos::RangePolicy(0,nn),*this); + } else { + + // vector_copy( p , r nn); + // pre-conditioning + Kokkos::parallel_for(Kokkos::RangePolicy(0,nn),*this); + } + + pack_flag = 1; + // comm->forward_comm_fix(this); //Dist_vector( d ); + k_d.template modify(); + k_d.template sync(); + comm->forward_comm_fix(this); + more_forward_comm(k_d.h_view.data()); + k_d.template modify(); + k_d.template sync(); + + // sparse_matvec( &H, &X, d, z ); + sparse_matvec_acks2(d_d, d_z); + + pack_flag = 2; + k_z.template modify(); + k_z.template sync(); + if (neighflag != FULL) + comm->reverse_comm_fix(this); //Coll_vector( z ); + more_reverse_comm(k_z.h_view.data()); + k_z.template modify(); + k_z.template sync(); + + // tmp = parallel_dot( r_hat, z, nn); + my_dot = dot_sqr = 0.0; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nn),*this,my_dot); + MPI_Allreduce( &my_dot, &dot_sqr, 1, MPI_DOUBLE, MPI_SUM, world ); + tmp = dot_sqr; + alpha = rho / tmp; + + // vector_sum( q, 1., r, -alpha, z, nn); + // tmp = parallel_dot( q, q, nn); + my_dot = dot_sqr = 0.0; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nn),*this,my_dot); + MPI_Allreduce( &my_dot, &dot_sqr, 1, MPI_DOUBLE, MPI_SUM, world ); + tmp = dot_sqr; + + // early convergence check + if (tmp < tolerance) { + // vector_add( x, alpha, d, nn); + Kokkos::parallel_for(Kokkos::RangePolicy(0,nn),*this); + break; + } + + // pre-conditioning + Kokkos::parallel_for(Kokkos::RangePolicy(0,nn),*this); + + // sparse_matvec( &H, &X, q_hat, y ); + pack_flag = 3; + // comm->forward_comm_fix(this); //Dist_vector( q_hat ); + k_q_hat.template modify(); + k_q_hat.template sync(); + comm->forward_comm_fix(this); + more_forward_comm(k_q_hat.h_view.data()); + k_q_hat.template modify(); + k_q_hat.template sync(); + + sparse_matvec_acks2(d_q_hat, d_y); + + pack_flag = 3; + k_y.template modify(); + k_y.template sync(); + if (neighflag != FULL) + comm->reverse_comm_fix(this); //Coll_vector( y ); + more_reverse_comm(k_y.h_view.data()); + k_y.template modify(); + k_y.template sync(); + + // sigma = parallel_dot( y, q, nn); + my_dot = dot_sqr = 0.0; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nn),*this,my_dot); + MPI_Allreduce( &my_dot, &dot_sqr, 1, MPI_DOUBLE, MPI_SUM, world ); + sigma = dot_sqr; + + // tmp = parallel_dot( y, y, nn); + my_dot = dot_sqr = 0.0; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nn),*this,my_dot); + MPI_Allreduce( &my_dot, &dot_sqr, 1, MPI_DOUBLE, MPI_SUM, world ); + tmp = dot_sqr; + + omega = sigma / tmp; + + // vector_sum( g , alpha, d, omega, q_hat, nn); + // vector_add( x, 1., g, nn); + // vector_sum( r , 1., q, -omega, y, nn); + // rnorm = parallel_norm( r, nn); + my_dot = dot_sqr = 0.0; + Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nn),*this,my_dot); + MPI_Allreduce( &my_dot, &dot_sqr, 1, MPI_DOUBLE, MPI_SUM, world ); + rnorm = sqrt(dot_sqr); + + if (omega == 0) break; + rho_old = rho; + } + + if (comm->me == 0) { + if (omega == 0 || rho == 0) { + error->warning(FLERR,"Fix acks2/reaxff/kk BiCGStab numerical breakdown, omega = {:.8}, rho = {:.8}", + omega,rho); + } else if (i >= imax) { + error->warning(FLERR,"Fix acks2/reaxff/kk BiCGStab convergence failed after {} iterations " + "at step {}", i, update->ntimestep); + } + } + + return i; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::calculate_Q() +{ + + Kokkos::parallel_for(Kokkos::RangePolicy(0,nn),*this); + + pack_flag = 2; + //comm->forward_comm_fix( this ); //Dist_vector( s ); + k_s.modify(); + k_s.sync(); + comm->forward_comm_fix(this); + k_s.modify(); + k_s.sync(); + + Kokkos::parallel_for(Kokkos::RangePolicy(0,NN),*this); + +} + +/* ---------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::sparse_matvec_acks2(typename AT::t_ffloat_1d &d_xx_in, typename AT::t_ffloat_1d &d_bb_in) +{ + d_xx = d_xx_in; + d_bb = d_bb_in; + + if (need_dup) + dup_bb = Kokkos::Experimental::create_scatter_view (d_bb); // allocate duplicated memory + else + ndup_bb = Kokkos::Experimental::create_scatter_view (d_bb); + + Kokkos::deep_copy(d_bb,0.0); // can make more efficient? + Kokkos::parallel_for(Kokkos::RangePolicy(0,nn),*this); + + if (neighflag == FULL) { + int teamsize; + if (execution_space == Host) teamsize = 1; + else teamsize = 128; + + Kokkos::parallel_for(Kokkos::TeamPolicy(nn,teamsize),*this); + } else if (neighflag == HALFTHREAD) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,nn),*this); + else if (neighflag == HALF) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,nn),*this); + + if (need_dup) { + Kokkos::Experimental::contribute(d_bb, dup_bb); + + // free duplicated memory + + dup_bb = decltype(dup_bb)(); + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2SparseMatvec1, const int &ii) const +{ + const int i = d_ilist[ii]; + const int itype = type(i); + if (mask[i] & groupbit) { + d_bb[i] = params(itype).eta * d_xx[i]; + d_bb[NN + i] = d_X_diag[i] * d_xx[NN + i]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2SparseMatvec2, const int &ii) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + d_bb[i] = 0.0; + d_bb[NN + i] = 0.0; + } +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2SparseMatvec3_Half, const int &ii) const +{ + // The bb array is duplicated for OpenMP, atomic for CUDA, and neither for Serial + auto v_bb = ScatterViewHelper::value,decltype(dup_bb),decltype(ndup_bb)>::get(dup_bb,ndup_bb); + auto a_bb = v_bb.template access::value>(); + + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + F_FLOAT tmp = 0.0; + + // H Matrix + for(int jj = d_firstnbr[i]; jj < d_firstnbr[i] + d_numnbrs[i]; jj++) { + const int j = d_jlist(jj); + tmp += d_val(jj) * d_xx[j]; + a_bb[j] += d_val(jj) * d_xx[i]; + } + a_bb[i] += tmp; + + // X Matrix + tmp = 0.0; + for(int jj = d_firstnbr_X[i]; jj < d_firstnbr_X[i] + d_numnbrs_X[i]; jj++) { + const int j = d_jlist_X(jj); + tmp += d_val_X(jj) * d_xx[NN + j]; + a_bb[NN + j] += d_val_X(jj) * d_xx[NN + i]; + } + a_bb[NN + i] += tmp; + + // Identity Matrix + a_bb[NN + i] += d_xx[i]; + a_bb[i] += d_xx[NN + i]; + + // Second-to-last row/column + a_bb[2*NN] += d_xx[NN + i]; + a_bb[NN + i] += d_xx[2*NN]; + + // Last row/column + a_bb[2*NN + 1] += d_xx[i]; + a_bb[i] += d_xx[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2SparseMatvec3_Full, const membertype &team) const +{ + int i = d_ilist[team.league_rank()]; + if (mask[i] & groupbit) { + F_FLOAT sum; + F_FLOAT sum2; + + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, d_firstnbr[i], d_firstnbr[i] + d_numnbrs[i]), [&] (const int &jj, F_FLOAT &sum) { + const int j = d_jlist(jj); + sum += d_val(jj) * d_xx[j]; + }, sum); + team.team_barrier(); + + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team, d_firstnbr_X[i], d_firstnbr_X[i] + d_numnbrs_X[i]), [&] (const int &jj, F_FLOAT &sum2) { + const int j = d_jlist_X(jj); + sum2 += d_val_X(jj) * d_xx[NN + j]; + }, sum2); + + Kokkos::single(Kokkos::PerTeam(team), [&] () { + d_bb[i] += sum; + d_bb[NN + i] += sum2; + + // Identity Matrix + d_bb[NN + i] += d_xx[i]; + d_bb[i] += d_xx[NN + i]; + + // Second-to-last row/column + Kokkos::atomic_add(&(d_bb[2*NN]),d_xx[NN + i]); + d_bb[NN + i] += d_xx[2*NN]; + + // Last row/column + Kokkos::atomic_add(&(d_bb[2*NN + 1]),d_xx[i]); + d_bb[i] += d_xx[2*NN + 1]; + }); + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Norm1, const int &ii, double &lsum) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + d_r[i] = d_b_s[i] - d_d[i]; + d_r[NN+i] = d_b_s[NN+i] - d_d[NN+i]; + + lsum += d_b_s[i] * d_b_s[i]; + lsum += d_b_s[NN+i] * d_b_s[NN+i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + d_r[2*NN] = d_b_s[2*NN] - d_d[2*NN]; + d_r[2*NN + 1] = d_b_s[2*NN + 1] - d_d[2*NN + 1]; + + lsum += d_b_s[2*NN] * d_b_s[2*NN]; + lsum += d_b_s[2*NN + 1] * d_b_s[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Norm2, const int &ii, double &lsum) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + lsum += d_r[i] * d_r[i]; + lsum += d_r[NN + i] * d_r[NN + i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + lsum += d_r[2*NN] * d_r[2*NN]; + lsum += d_r[2*NN + 1] * d_r[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Dot1, const int &ii, double &lsum) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + lsum += d_r_hat[i] * d_r[i]; + lsum += d_r_hat[NN+i] * d_r[NN+i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + lsum += d_r_hat[2*NN] * d_r[2*NN]; + lsum += d_r_hat[2*NN + 1] * d_r[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Precon1A, const int &ii) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + d_q[i] = d_p[i] - omega*d_z[i]; + d_q[NN+i] = d_p[NN+i] - omega*d_z[NN+i]; + + d_p[i] = d_r[i] + beta*d_q[i]; + d_p[NN+i] = d_r[NN+i] + beta*d_q[NN+i]; + + d_d[i] = d_p[i]*d_Hdia_inv[i]; + d_d[NN+i] = d_p[NN+i]*d_Xdia_inv[i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + d_q[2*NN] = d_p[2*NN] - omega*d_z[2*NN]; + d_q[2*NN + 1] = d_p[2*NN + 1] - omega*d_z[2*NN + 1]; + + d_p[2*NN] = d_r[2*NN] + beta*d_q[2*NN]; + d_p[2*NN + 1] = d_r[2*NN + 1] + beta*d_q[2*NN + 1]; + + d_d[2*NN] = d_p[2*NN]; + d_d[2*NN + 1] = d_p[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Precon1B, const int &ii) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + d_p[i] = d_r[i] ; + d_p[NN+i] = d_r[NN+i]; + + d_d[i] = d_p[i]*d_Hdia_inv[i]; + d_d[NN+i] = d_p[NN+i]*d_Xdia_inv[i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + d_p[2*NN] = d_r[2*NN]; + d_p[2*NN + 1] = d_r[2*NN + 1]; + + d_d[2*NN] = d_p[2*NN]; + d_d[2*NN + 1] = d_p[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Dot2, const int &ii, double &lsum) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + lsum += d_r_hat[i] * d_z[i]; + lsum += d_r_hat[NN+i] * d_z[NN+i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + lsum += d_r_hat[2*NN] * d_z[2*NN]; + lsum += d_r_hat[2*NN + 1] * d_z[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Dot3, const int &ii, double &lsum) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + d_q[i] = d_r[i] - alpha*d_z[i]; + d_q[NN+i] = d_r[NN+i] - alpha*d_z[NN+i]; + + lsum += d_q[i] * d_q[i]; + lsum += d_q[NN+i] * d_q[NN+i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + d_q[2*NN] = d_r[2*NN] - alpha*d_z[2*NN]; + d_q[2*NN + 1] = d_r[2*NN + 1] - alpha*d_z[2*NN + 1]; + + lsum += d_q[2*NN] * d_q[2*NN]; + lsum += d_q[2*NN + 1] * d_q[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Dot4, const int &ii, double &lsum) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + lsum += d_y[i] * d_q[i]; + lsum += d_y[NN+i] * d_q[NN+i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + lsum += d_y[2*NN] * d_q[2*NN]; + lsum += d_y[2*NN + 1] * d_q[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Dot5, const int &ii, double &lsum) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + lsum += d_y[i] * d_y[i]; + lsum += d_y[NN+i] * d_y[NN+i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + lsum += d_y[2*NN] * d_y[2*NN]; + lsum += d_y[2*NN + 1] * d_y[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Add, const int &ii) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + d_s[i] += alpha * d_d[i]; + d_s[NN+i] += alpha * d_d[NN+i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + d_s[2*NN] += alpha*d_d[2*NN]; + d_s[2*NN + 1] += alpha*d_d[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Precon2, const int &ii) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + d_q_hat[i] = d_q[i]*d_Hdia_inv[i]; + d_q_hat[NN+i] = d_q[NN+i]*d_Xdia_inv[i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + d_q_hat[2*NN] = d_q[2*NN]; + d_q_hat[2*NN + 1] = d_q[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2Norm3, const int &ii, double &lsum) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + d_g[i] = alpha*d_d[i] + omega*d_q_hat[i]; + d_g[NN+i] = alpha*d_d[NN+i] + omega*d_q_hat[NN+i]; + + d_s[i] += d_g[i]; + d_s[NN+i] += d_g[NN+i]; + + d_r[i] = d_q[i] - omega*d_y[i]; + d_r[NN+i] = d_q[NN+i] - omega*d_y[NN+i]; + + lsum += d_r[i] * d_r[i]; + lsum += d_r[NN+i] * d_r[NN+i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + d_g[2*NN] = alpha*d_d[2*NN] + omega*d_q_hat[2*NN]; + d_g[2*NN + 1] = alpha*d_d[2*NN + 1] + omega*d_q_hat[2*NN + 1]; + + d_s[2*NN] += d_g[2*NN]; + d_s[2*NN + 1] += d_g[2*NN + 1]; + + d_r[2*NN] = d_q[2*NN] - omega*d_y[2*NN]; + d_r[2*NN + 1] = d_q[2*NN + 1] - omega*d_y[2*NN + 1]; + + lsum += d_r[2*NN] * d_r[2*NN]; + lsum += d_r[2*NN + 1] * d_r[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2CalculateQ1, const int &ii) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) { + + /* backup s */ + for (int k = nprev-1; k > 0; --k) { + d_s_hist(i,k) = d_s_hist(i,k-1); + d_s_hist_X(i,k) = d_s_hist_X(i,k-1); + } + d_s_hist(i,0) = d_s[i]; + d_s_hist_X(i,0) = d_s[NN+i]; + } + + // last two rows + if (last_rows_flag && ii == 0) { + for (int i = 0; i < 2; ++i) { + for (int k = nprev-1; k > 0; --k) + d_s_hist_last(i,k) = d_s_hist_last(i,k-1); + d_s_hist_last(i,0) = d_s[2*NN+i]; + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixACKS2ReaxFFKokkos::operator() (TagACKS2CalculateQ2, const int &ii) const +{ + const int i = d_ilist[ii]; + if (mask[i] & groupbit) + q(i) = d_s(i); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::cleanup_copy() +{ + id = style = NULL; +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based arrays +------------------------------------------------------------------------- */ + +template +double FixACKS2ReaxFFKokkos::memory_usage() +{ + double bytes; + + int size = 2*nmax + 2; + + bytes = size*nprev * sizeof(double); // s_hist + bytes += nmax*4 * sizeof(double); // storage + bytes += size*11 * sizeof(double); // storage + bytes += n_cap*4 * sizeof(int); // matrix... + bytes += m_cap*2 * sizeof(int); + bytes += m_cap*2 * sizeof(double); + + return bytes; +} + +/* ---------------------------------------------------------------------- + allocate fictitious charge arrays +------------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::grow_arrays(int nmax) +{ + k_s_hist.template sync(); + k_s_hist_X.template sync(); + + k_s_hist.template modify(); // force reallocation on host + k_s_hist_X.template modify(); + + memoryKK->grow_kokkos(k_s_hist,s_hist,nmax,nprev,"acks2:s_hist"); + memoryKK->grow_kokkos(k_s_hist_X,s_hist_X,nmax,nprev,"acks2:s_hist_X"); + + d_s_hist = k_s_hist.template view(); + d_s_hist_X = k_s_hist_X.template view(); + + k_s_hist.template modify(); + k_s_hist_X.template modify(); +} + +/* ---------------------------------------------------------------------- + copy values within fictitious charge arrays +------------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::copy_arrays(int i, int j, int delflag) +{ + k_s_hist.template sync(); + k_s_hist_X.template sync(); + + FixACKS2ReaxFF::copy_arrays(i,j,delflag); + + k_s_hist.template modify(); + k_s_hist_X.template modify(); +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based array for exchange with another proc +------------------------------------------------------------------------- */ + +template +int FixACKS2ReaxFFKokkos::pack_exchange(int i, double *buf) +{ + k_s_hist.template sync(); + k_s_hist_X.template sync(); + + return FixACKS2ReaxFF::pack_exchange(i,buf); +} + +/* ---------------------------------------------------------------------- + unpack values in local atom-based array from exchange with another proc +------------------------------------------------------------------------- */ + +template +int FixACKS2ReaxFFKokkos::unpack_exchange(int nlocal, double *buf) +{ + k_s_hist.template sync(); + k_s_hist_X.template sync(); + + int n = FixACKS2ReaxFF::unpack_exchange(nlocal,buf); + + k_s_hist.template modify(); + k_s_hist_X.template modify(); + + return n; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixACKS2ReaxFFKokkos::get_chi_field() +{ + atomKK->sync(Host,X_MASK|MASK_MASK|IMAGE_MASK); + FixQEqReaxFF::get_chi_field(); + k_chi_field.modify_host(); + k_chi_field.sync_device(); +} + +/* ---------------------------------------------------------------------- */ + +namespace LAMMPS_NS { +template class FixACKS2ReaxFFKokkos; +#ifdef KOKKOS_ENABLE_CUDA +template class FixACKS2ReaxFFKokkos; +#endif +} diff --git a/src/KOKKOS/fix_acks2_reaxff_kokkos.h b/src/KOKKOS/fix_acks2_reaxff_kokkos.h new file mode 100644 index 0000000000..67c737498f --- /dev/null +++ b/src/KOKKOS/fix_acks2_reaxff_kokkos.h @@ -0,0 +1,372 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +FixStyle(acks2/reaxff/kk,FixACKS2ReaxFFKokkos); +FixStyle(acks2/reaxff/kk/device,FixACKS2ReaxFFKokkos); +FixStyle(acks2/reaxff/kk/host,FixACKS2ReaxFFKokkos); +FixStyle(acks2/reax/kk,FixACKS2ReaxFFKokkos); +FixStyle(acks2/reax/kk/device,FixACKS2ReaxFFKokkos); +FixStyle(acks2/reax/kk/host,FixACKS2ReaxFFKokkos); +// clang-format on +#else +// clang-format off +#ifndef LMP_FIX_ACKS2_REAXFF_KOKKOS_H +#define LMP_FIX_ACKS2_REAXFF_KOKKOS_H + +#include "fix_acks2_reaxff.h" +#include "kokkos_type.h" +#include "neigh_list.h" +#include "neigh_list_kokkos.h" + +namespace LAMMPS_NS { + +struct TagACKS2Zero{}; +struct TagACKS2InitMatvec{}; +struct TagACKS2SparseMatvec1{}; +struct TagACKS2SparseMatvec2{}; + +template +struct TagACKS2SparseMatvec3_Half{}; + +struct TagACKS2SparseMatvec3_Full{}; +struct TagACKS2Norm1{}; +struct TagACKS2Norm2{}; +struct TagACKS2Norm3{}; +struct TagACKS2Dot1{}; +struct TagACKS2Dot2{}; +struct TagACKS2Dot3{}; +struct TagACKS2Dot4{}; +struct TagACKS2Dot5{}; +struct TagACKS2Precon1A{}; +struct TagACKS2Precon1B{}; +struct TagACKS2Precon2{}; +struct TagACKS2Add{}; +struct TagACKS2ZeroQGhosts{}; +struct TagACKS2CalculateQ1{}; +struct TagACKS2CalculateQ2{}; + +template +class FixACKS2ReaxFFKokkos : public FixACKS2ReaxFF { + public: + typedef DeviceType device_type; + typedef double value_type; + typedef ArrayTypes AT; + FixACKS2ReaxFFKokkos(class LAMMPS *, int, char **); + ~FixACKS2ReaxFFKokkos(); + + void cleanup_copy(); + void init(); + void setup_pre_force(int); + void pre_force(int); + + DAT::tdual_ffloat_1d get_s() {return k_s;} + + KOKKOS_INLINE_FUNCTION + void num_neigh_item(int, int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Zero, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2InitMatvec, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void compute_h_item(int, int &, const bool &) const; + + template + KOKKOS_INLINE_FUNCTION + void compute_h_team(const typename Kokkos::TeamPolicy ::member_type &team, int, int) const; + + template + KOKKOS_INLINE_FUNCTION + void compute_x_item(int, int &, const bool &) const; + + template + KOKKOS_INLINE_FUNCTION + void compute_x_team(const typename Kokkos::TeamPolicy ::member_type &team, int, int) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2SparseMatvec1, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2SparseMatvec2, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2SparseMatvec3_Half, const int&) const; + + typedef typename Kokkos::TeamPolicy::member_type membertype; + KOKKOS_INLINE_FUNCTION + void operator() (TagACKS2SparseMatvec3_Full, const membertype &team) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Norm1, const int&, double&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Norm2, const int&, double&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Norm3, const int&, double&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Dot1, const int&, double&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Dot2, const int&, double&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Dot3, const int&, double&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Dot4, const int&, double&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Dot5, const int&, double&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Precon1A, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Precon1B, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Precon2, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2Add, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2ZeroQGhosts, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2CalculateQ1, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagACKS2CalculateQ2, const int&) const; + + KOKKOS_INLINE_FUNCTION + double calculate_H_k(const F_FLOAT &r, const F_FLOAT &shld) const; + + KOKKOS_INLINE_FUNCTION + double calculate_X_k(const F_FLOAT &r, const F_FLOAT &bcut) const; + + struct params_acks2{ + KOKKOS_INLINE_FUNCTION + params_acks2(){chi=0;eta=0;gamma=0;bcut_acks2=0;}; + KOKKOS_INLINE_FUNCTION + params_acks2(int i){chi=0;eta=0;gamma=0;bcut_acks2=0;}; + F_FLOAT chi, eta, gamma, bcut_acks2; + }; + + private: + int inum; + int allocated_flag, last_allocate; + int need_dup,prev_last_rows_rank; + double* buf; + + typename AT::t_int_scalar d_mfill_offset; + + typedef Kokkos::DualView tdual_int_1d; + Kokkos::DualView k_params; + typename Kokkos::DualView::t_dev_const params; + + typename ArrayTypes::t_x_array x; + typename ArrayTypes::t_v_array v; + typename ArrayTypes::t_f_array_const f; + typename ArrayTypes::t_ffloat_1d_randomread mass; + typename ArrayTypes::t_ffloat_1d q; + typename ArrayTypes::t_int_1d type, mask; + typename ArrayTypes::t_tagint_1d tag; + + typename ArrayTypes::t_neighbors_2d d_neighbors; + typename ArrayTypes::t_int_1d_randomread d_ilist, d_numneigh; + + DAT::tdual_ffloat_1d k_tap; + typename AT::t_ffloat_1d d_tap; + + DAT::tdual_ffloat_2d k_bcut; + typename AT::t_ffloat_2d d_bcut; + + typename AT::t_int_1d d_firstnbr; + typename AT::t_int_1d d_numnbrs; + typename AT::t_int_1d d_jlist; + typename AT::t_ffloat_1d d_val; + + typename AT::t_int_1d d_firstnbr_X; + typename AT::t_int_1d d_numnbrs_X; + typename AT::t_int_1d d_jlist_X; + typename AT::t_ffloat_1d d_val_X; + + DAT::tdual_ffloat_1d k_s, k_X_diag, k_chi_field; + typename AT::t_ffloat_1d d_Hdia_inv,d_Xdia_inv, d_X_diag, d_chi_field, d_b_s, d_s; + typename AT::t_ffloat_1d_randomread r_b_s, r_s; + + DAT::tdual_ffloat_1d k_d, k_q_hat, k_z, k_y; + typename AT::t_ffloat_1d d_p, d_q, d_r, d_d, d_g, d_q_hat, d_r_hat, d_y, d_z, d_bb, d_xx; + typename AT::t_ffloat_1d_randomread r_p, r_r, r_d; + + DAT::tdual_ffloat_2d k_shield, k_s_hist, k_s_hist_X, k_s_hist_last; + typename AT::t_ffloat_2d d_shield, d_s_hist, d_s_hist_X, d_s_hist_last; + typename AT::t_ffloat_2d_randomread r_s_hist, r_s_hist_X, r_s_hist_last; + + Kokkos::Experimental::ScatterView::value, Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated> dup_X_diag; + Kokkos::Experimental::ScatterView::value, Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated> ndup_X_diag; + + Kokkos::Experimental::ScatterView::value, Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterDuplicated> dup_bb; + Kokkos::Experimental::ScatterView::value, Kokkos::Experimental::ScatterSum, Kokkos::Experimental::ScatterNonDuplicated> ndup_bb; + + void init_shielding_k(); + void init_hist(); + void allocate_matrix(); + void allocate_array(); + void deallocate_array(); + int bicgstab_solve(); + void calculate_Q(); + + int neighflag; + int nlocal,nall,nmax,newton_pair; + int count, isuccess; + double alpha, beta, omega, 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 *); + int unpack_exchange(int, double *); + void get_chi_field(); + double memory_usage(); + + void sparse_matvec_acks2(typename AT::t_ffloat_1d &, typename AT::t_ffloat_1d &); +}; + +template +struct FixACKS2ReaxFFKokkosNumNeighFunctor { + typedef DeviceType device_type; + typedef int value_type; + FixACKS2ReaxFFKokkos c; + FixACKS2ReaxFFKokkosNumNeighFunctor(FixACKS2ReaxFFKokkos* c_ptr):c(*c_ptr) { + c.cleanup_copy(); + }; + KOKKOS_INLINE_FUNCTION + void operator()(const int ii, int &maxneigh) const { + c.num_neigh_item(ii, maxneigh); + } +}; + +template +struct FixACKS2ReaxFFKokkosComputeHFunctor { + int atoms_per_team, vector_length; + typedef int value_type; + typedef Kokkos::ScratchMemorySpace scratch_space; + FixACKS2ReaxFFKokkos c; + + FixACKS2ReaxFFKokkosComputeHFunctor(FixACKS2ReaxFFKokkos* c_ptr):c(*c_ptr) { + c.cleanup_copy(); + }; + + FixACKS2ReaxFFKokkosComputeHFunctor(FixACKS2ReaxFFKokkos *c_ptr, + int _atoms_per_team, int _vector_length) + : c(*c_ptr), atoms_per_team(_atoms_per_team), + vector_length(_vector_length) { + c.cleanup_copy(); + }; + + KOKKOS_INLINE_FUNCTION + void operator()(const int ii, int &m_fill, const bool &final) const { + c.template compute_h_item(ii,m_fill,final); + } + + KOKKOS_INLINE_FUNCTION + void operator()( + const typename Kokkos::TeamPolicy::member_type &team) const { + c.template compute_h_team(team, atoms_per_team, vector_length); + } + + size_t team_shmem_size(int team_size) const { + size_t shmem_size = + Kokkos::View::shmem_size( + atoms_per_team) + // s_ilist + Kokkos::View::shmem_size( + atoms_per_team) + // s_numnbrs + Kokkos::View::shmem_size( + atoms_per_team) + // s_firstnbr + Kokkos::View:: + shmem_size(atoms_per_team, vector_length) + // s_jtype + Kokkos::View:: + shmem_size(atoms_per_team, vector_length) + // s_j + Kokkos::View::shmem_size(atoms_per_team, + vector_length); // s_r + return shmem_size; + } +}; + +template +struct FixACKS2ReaxFFKokkosComputeXFunctor { + int atoms_per_team, vector_length; + typedef int value_type; + typedef Kokkos::ScratchMemorySpace scratch_space; + FixACKS2ReaxFFKokkos c; + + FixACKS2ReaxFFKokkosComputeXFunctor(FixACKS2ReaxFFKokkos* c_ptr):c(*c_ptr) { + c.cleanup_copy(); + }; + + FixACKS2ReaxFFKokkosComputeXFunctor(FixACKS2ReaxFFKokkos *c_ptr, + int _atoms_per_team, int _vector_length) + : c(*c_ptr), atoms_per_team(_atoms_per_team), + vector_length(_vector_length) { + c.cleanup_copy(); + }; + + KOKKOS_INLINE_FUNCTION + void operator()(const int ii, int &m_fill, const bool &final) const { + c.template compute_x_item(ii,m_fill,final); + } + + KOKKOS_INLINE_FUNCTION + void operator()( + const typename Kokkos::TeamPolicy::member_type &team) const { + c.template compute_x_team(team, atoms_per_team, vector_length); + } + + size_t team_shmem_size(int team_size) const { + size_t shmem_size = + Kokkos::View::shmem_size( + atoms_per_team) + // s_ilist + Kokkos::View::shmem_size( + atoms_per_team) + // s_numnbrs + Kokkos::View::shmem_size( + atoms_per_team) + // s_firstnbr + Kokkos::View:: + shmem_size(atoms_per_team, vector_length) + // s_jtype + Kokkos::View:: + shmem_size(atoms_per_team, vector_length) + // s_j + Kokkos::View::shmem_size(atoms_per_team, + vector_length); // s_r + return shmem_size; + } +}; + +} + +#endif +#endif diff --git a/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp b/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp index 6761ab9b0e..b35bbc46ee 100644 --- a/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp +++ b/src/KOKKOS/fix_qeq_reaxff_kokkos.cpp @@ -75,6 +75,7 @@ FixQEqReaxFFKokkos::~FixQEqReaxFFKokkos() memoryKK->destroy_kokkos(k_s_hist,s_hist); memoryKK->destroy_kokkos(k_t_hist,t_hist); + memoryKK->destroy_kokkos(k_chi_field,chi_field); } /* ---------------------------------------------------------------------- */ @@ -256,6 +257,8 @@ void FixQEqReaxFFKokkos::pre_force(int /*vflag*/) // init_matvec + if (efield) get_chi_field(); + k_s_hist.template sync(); k_t_hist.template sync(); FixQEqReaxFFKokkosMatVecFunctor matvec_functor(this); @@ -373,10 +376,15 @@ void FixQEqReaxFFKokkos::allocate_array() k_d = DAT::tdual_ffloat_1d("qeq/kk:d",nmax); d_d = k_d.template view(); h_d = k_d.h_view; + + memoryKK->create_kokkos(k_chi_field,chi_field,nmax,"qeq/kk:chi_field"); + d_chi_field = k_chi_field.template view(); } // init_storage + if (efield) get_chi_field(); + FixQEqReaxFFKokkosZeroFunctor zero_functor(this); Kokkos::parallel_for(ignum,zero_functor); @@ -392,7 +400,7 @@ void FixQEqReaxFFKokkos::zero_item(int ii) const if (mask[i] & groupbit) { d_Hdia_inv[i] = 1.0 / params(itype).eta; - d_b_s[i] = -params(itype).chi; + d_b_s[i] = -params(itype).chi - d_chi_field[i]; d_b_t[i] = -1.0; d_s[i] = 0.0; d_t[i] = 0.0; @@ -711,7 +719,7 @@ void FixQEqReaxFFKokkos::matvec_item(int ii) const if (mask[i] & groupbit) { d_Hdia_inv[i] = 1.0 / params(itype).eta; - d_b_s[i] = -params(itype).chi; + d_b_s[i] = -params(itype).chi - d_chi_field[i]; d_b_t[i] = -1.0; d_t[i] = d_t_hist(i,2) + 3*(d_t_hist(i,0) - d_t_hist(i,1)); d_s[i] = 4*(d_s_hist(i,0)+d_s_hist(i,2))-(6*d_s_hist(i,1)+d_s_hist(i,3)); @@ -1575,6 +1583,17 @@ int FixQEqReaxFFKokkos::unpack_exchange(int nlocal, double *buf) /* ---------------------------------------------------------------------- */ +template +void FixQEqReaxFFKokkos::get_chi_field() +{ + atomKK->sync(Host,X_MASK|MASK_MASK|IMAGE_MASK); + FixQEqReaxFF::get_chi_field(); + k_chi_field.modify_host(); + k_chi_field.sync_device(); +} + +/* ---------------------------------------------------------------------- */ + namespace LAMMPS_NS { template class FixQEqReaxFFKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/fix_qeq_reaxff_kokkos.h b/src/KOKKOS/fix_qeq_reaxff_kokkos.h index 3965770236..3256e56aef 100644 --- a/src/KOKKOS/fix_qeq_reaxff_kokkos.h +++ b/src/KOKKOS/fix_qeq_reaxff_kokkos.h @@ -201,8 +201,8 @@ class FixQEqReaxFFKokkos : public FixQEqReaxFF, public KokkosBase { typename AT::t_int_1d d_jlist; typename AT::t_ffloat_1d d_val; - DAT::tdual_ffloat_1d k_t, k_s; - typename AT::t_ffloat_1d d_Hdia_inv, d_b_s, d_b_t, d_t, d_s; + DAT::tdual_ffloat_1d k_t, k_s, k_chi_field; + typename AT::t_ffloat_1d d_Hdia_inv, d_b_s, d_b_t, d_t, d_s, d_chi_field; HAT::t_ffloat_1d h_t, h_s; typename AT::t_ffloat_1d_randomread r_b_s, r_b_t, r_t, r_s; @@ -241,6 +241,7 @@ class FixQEqReaxFFKokkos : public FixQEqReaxFF, public KokkosBase { void copy_arrays(int, int, int); int pack_exchange(int, double *); int unpack_exchange(int, double *); + void get_chi_field(); }; template diff --git a/src/KOKKOS/kokkos.h b/src/KOKKOS/kokkos.h index 65990544ad..fa5ff42a44 100644 --- a/src/KOKKOS/kokkos.h +++ b/src/KOKKOS/kokkos.h @@ -61,9 +61,11 @@ class KokkosLMP : protected Pointers { int neigh_count(int); template - int need_dup() + int need_dup(int qeq_flag = 0) { int value = 0; + int neighflag = this->neighflag; + if (qeq_flag) neighflag = this->neighflag_qeq; if (neighflag == HALFTHREAD) value = std::is_same::value,Kokkos::Experimental::ScatterDuplicated>::value; diff --git a/src/KOKKOS/pair_reaxff_kokkos.cpp b/src/KOKKOS/pair_reaxff_kokkos.cpp index aac0229f87..43a650efb2 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.cpp +++ b/src/KOKKOS/pair_reaxff_kokkos.cpp @@ -23,6 +23,7 @@ #include "comm.h" #include "error.h" #include "force.h" +#include "fix_acks2_reaxff_kokkos.h" #include "kokkos.h" #include "math_const.h" #include "math_special.h" @@ -141,6 +142,25 @@ void PairReaxFFKokkos::init_style() if (fix_reaxff) modify->delete_fix(fix_id); // not needed in the Kokkos version fix_reaxff = nullptr; + acks2_flag = api->system->acks2_flag; + if (acks2_flag) { + int ifix = modify->find_fix_by_style("^acks2/reax"); + Fix* fix = modify->fix[ifix]; + if (!fix->kokkosable) + error->all(FLERR,"Must use Kokkos version of acks2/reaxff with pair reaxff/kk"); + if (fix->execution_space == Host) { + FixACKS2ReaxFFKokkos* acks2_fix = (FixACKS2ReaxFFKokkos*) modify->fix[ifix]; + auto k_s = acks2_fix->get_s(); + k_s.sync(); + d_s = k_s.view(); + } else { + FixACKS2ReaxFFKokkos* acks2_fix = (FixACKS2ReaxFFKokkos*) modify->fix[ifix]; + auto k_s = acks2_fix->get_s(); + k_s.sync(); + d_s = k_s.view(); + } + } + // irequest = neigh request made by parent class neighflag = lmp->kokkos->neighflag; @@ -230,6 +250,9 @@ void PairReaxFFKokkos::setup() // hydrogen bond k_params_sing.h_view(i).p_hbond = api->system->reax_param.sbp[map[i]].p_hbond; + // acks2 + k_params_sing.h_view(i).bcut_acks2 = api->system->reax_param.sbp[map[i]].bcut_acks2; + for (j = 1; j <= n; j++) { if (map[j] == -1) continue; @@ -690,9 +713,11 @@ void PairReaxFFKokkos::compute(int eflag_in, int vflag_in) tag = atomKK->k_tag.view(); type = atomKK->k_type.view(); nlocal = atomKK->nlocal; - nall = atom->nlocal + atom->nghost; newton_pair = force->newton_pair; + nn = list->inum; + NN = list->inum + list->gnum; + const int inum = list->inum; const int ignum = inum + list->gnum; NeighListKokkos* k_list = static_cast*>(list); @@ -700,6 +725,22 @@ void PairReaxFFKokkos::compute(int eflag_in, int vflag_in) d_neighbors = k_list->d_neighbors; d_ilist = k_list->d_ilist; + if (acks2_flag) { + int ifix = modify->find_fix_by_style("^acks2/reax"); + Fix* fix = modify->fix[ifix]; + if (fix->execution_space == Host) { + FixACKS2ReaxFFKokkos* acks2_fix = (FixACKS2ReaxFFKokkos*) modify->fix[ifix]; + auto k_s = acks2_fix->get_s(); + k_s.sync(); + d_s = k_s.view(); + } else { + FixACKS2ReaxFFKokkos* acks2_fix = (FixACKS2ReaxFFKokkos*) modify->fix[ifix]; + auto k_s = acks2_fix->get_s(); + k_s.sync(); + d_s = k_s.view(); + } + } + need_dup = lmp->kokkos->need_dup(); // allocate duplicated memory @@ -1057,7 +1098,12 @@ void PairReaxFFKokkos::operator()(PairReaxFFComputePolartemplate ev_tally(ev,i,i,epol,0.0,0.0,0.0,0.0); if (eflag_atom) this->template e_tally_single(ev,i,epol); @@ -1195,8 +1241,47 @@ void PairReaxFFKokkos::operator()(PairReaxFFComputeLJCoulomb 0.0) { + /* Coulombic energy contribution */ + const F_FLOAT effpot_diff = d_s[NN + i] + - d_s[NN + j]; + const F_FLOAT e_ele = -0.5 * KCALpMOL_to_EV * bond_softness + * SQR( effpot_diff ); + + ecoul += e_ele; + + /* forces contribution */ + F_FLOAT d_bond_softness; + d_bond_softness = gp[34] + * 3.0 / xcut * pow( d, 2.0 ) + * pow( 1.0 - d, 5.0 ) * (1.0 - 3.0 * d); + d_bond_softness = -0.5 * d_bond_softness + * SQR( effpot_diff ); + d_bond_softness = KCALpMOL_to_EV * d_bond_softness + / rij; + + fcoul += d_bond_softness; + } + } + } + const F_FLOAT ftotal = fvdwl + fcoul; fxtmp += delx*ftotal; @@ -1296,15 +1381,53 @@ void PairReaxFFKokkos::operator()(PairReaxFFComputeTabulatedLJCoulom const F_FLOAT evdwl = ((vdW.d*dif + vdW.c)*dif + vdW.b)*dif + vdW.a; - const F_FLOAT ecoul = (((ele.d*dif + ele.c)*dif + ele.b)*dif + + F_FLOAT ecoul = (((ele.d*dif + ele.c)*dif + ele.b)*dif + ele.a)*qi*qj; const F_FLOAT fvdwl = ((CEvd.d*dif + CEvd.c)*dif + CEvd.b)*dif + CEvd.a; - const F_FLOAT fcoul = (((CEclmb.d*dif+CEclmb.c)*dif+CEclmb.b)*dif + + F_FLOAT fcoul = (((CEclmb.d*dif+CEclmb.c)*dif+CEclmb.b)*dif + CEclmb.a)*qi*qj; + /* contribution to energy and gradients (atoms and cell) + * due to geometry-dependent terms in the ACKS2 + * kinetic energy */ + if (acks2_flag) { + + /* kinetic energy terms */ + double xcut = 0.5 * (paramssing(itype).bcut_acks2 + + paramssing(jtype).bcut_acks2); + + if (rij <= xcut) { + const F_FLOAT d = rij / xcut; + const F_FLOAT bond_softness = gp[34] * pow( d, 3.0 ) + * pow( 1.0 - d, 6.0 ); + + if (bond_softness > 0.0) { + /* Coulombic energy contribution */ + const F_FLOAT effpot_diff = d_s[NN + i] + - d_s[NN + j]; + const F_FLOAT e_ele = -0.5 * KCALpMOL_to_EV * bond_softness + * SQR( effpot_diff ); + + ecoul += e_ele; + + /* forces contribution */ + F_FLOAT d_bond_softness; + d_bond_softness = gp[34] + * 3.0 / xcut * pow( d, 2.0 ) + * pow( 1.0 - d, 5.0 ) * (1.0 - 3.0 * d); + d_bond_softness = -0.5 * d_bond_softness + * SQR( effpot_diff ); + d_bond_softness = KCALpMOL_to_EV * d_bond_softness + / rij; + + fcoul += d_bond_softness; + } + } + } + const F_FLOAT ftotal = fvdwl + fcoul; fxtmp += delx*ftotal; fytmp += dely*ftotal; diff --git a/src/KOKKOS/pair_reaxff_kokkos.h b/src/KOKKOS/pair_reaxff_kokkos.h index 5ed89bf62f..a88248a717 100644 --- a/src/KOKKOS/pair_reaxff_kokkos.h +++ b/src/KOKKOS/pair_reaxff_kokkos.h @@ -252,12 +252,12 @@ class PairReaxFFKokkos : public PairReaxFF { struct params_sing{ KOKKOS_INLINE_FUNCTION params_sing() {mass=0;chi=0;eta=0;r_s=0;r_pi=0;r_pi2=0;valency=0;valency_val=0;valency_e=0;valency_boc=0;nlp_opt=0; - p_lp2=0;p_ovun2=0;p_ovun5=0;p_val3=0;p_val5=0;p_hbond=0;}; + p_lp2=0;p_ovun2=0;p_ovun5=0;p_val3=0;p_val5=0;p_hbond=0;bcut_acks2=0;}; KOKKOS_INLINE_FUNCTION params_sing(int /*i*/) {mass=0;chi=0;eta=0;r_s=0;r_pi=0;r_pi2=0;valency=0;valency_val=0;valency_e=0;valency_boc=0;nlp_opt=0; - p_lp2=0;p_ovun2=0;p_ovun5=0;p_val3=0;p_val5=0;p_hbond=0;}; + p_lp2=0;p_ovun2=0;p_ovun5=0;p_val3=0;p_val5=0;p_hbond=0;bcut_acks2=0;}; F_FLOAT mass,chi,eta,r_s,r_pi,r_pi2,valency,valency_val,valency_e,valency_boc,nlp_opt, - p_lp2,p_ovun2,p_ovun5, p_val3, p_val5, p_hbond; + p_lp2,p_ovun2,p_ovun5, p_val3, p_val5, p_hbond, bcut_acks2; }; struct params_twbp{ @@ -377,7 +377,7 @@ class PairReaxFFKokkos : public PairReaxFF { typename AT::t_float_1d d_tap; HAT::t_float_1d h_tap; - typename AT::t_float_1d d_bo_rij, d_hb_rsq, d_Deltap, d_Deltap_boc, d_total_bo; + typename AT::t_float_1d d_bo_rij, d_hb_rsq, d_Deltap, d_Deltap_boc, d_total_bo, d_s; typename AT::t_float_1d d_Delta, d_Delta_boc, d_Delta_lp, d_dDelta_lp, d_Delta_lp_temp, d_CdDelta; typename AT::t_ffloat_2d_dl d_BO, d_BO_s, d_BO_pi, d_BO_pi2, d_dBOp; typename AT::t_ffloat_2d_dl d_dln_BOp_pix, d_dln_BOp_piy, d_dln_BOp_piz; @@ -426,7 +426,7 @@ class PairReaxFFKokkos : public PairReaxFF { typename AT::t_ffloat_2d_dl d_dBOpx, d_dBOpy, d_dBOpz; int neighflag, newton_pair, maxnumneigh, maxhb, maxbo; - int nlocal,nall,eflag,vflag; + int nlocal,nn,NN,eflag,vflag,acks2_flag; F_FLOAT cut_nbsq, cut_hbsq, cut_bosq, bo_cut, thb_cut, thb_cutsq; F_FLOAT bo_cut_bond; diff --git a/src/KSPACE/ewald_dipole_spin.cpp b/src/KSPACE/ewald_dipole_spin.cpp index 6f093d5d0a..1f08205f21 100644 --- a/src/KSPACE/ewald_dipole_spin.cpp +++ b/src/KSPACE/ewald_dipole_spin.cpp @@ -51,12 +51,6 @@ EwaldDipoleSpin::EwaldDipoleSpin(LAMMPS *lmp) : mub2mu0hbinv = mub2mu0 / hbar; // in rad.THz } -/* ---------------------------------------------------------------------- - free all memory -------------------------------------------------------------------------- */ - -EwaldDipoleSpin::~EwaldDipoleSpin() {} - /* ---------------------------------------------------------------------- called once before run ------------------------------------------------------------------------- */ diff --git a/src/KSPACE/ewald_dipole_spin.h b/src/KSPACE/ewald_dipole_spin.h index eb87c69ae2..4660dde987 100644 --- a/src/KSPACE/ewald_dipole_spin.h +++ b/src/KSPACE/ewald_dipole_spin.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class EwaldDipoleSpin : public EwaldDipole { public: EwaldDipoleSpin(class LAMMPS *); - virtual ~EwaldDipoleSpin(); + virtual ~EwaldDipoleSpin() = default; void init(); void setup(); void compute(int, int); diff --git a/src/LATBOLTZ/fix_lb_fluid.cpp b/src/LATBOLTZ/fix_lb_fluid.cpp index 0295c04f47..2dfe603ca1 100644 --- a/src/LATBOLTZ/fix_lb_fluid.cpp +++ b/src/LATBOLTZ/fix_lb_fluid.cpp @@ -570,7 +570,7 @@ int FixLbFluid::setmask() return mask; } -void FixLbFluid::init(void) +void FixLbFluid::init() { int i,j; @@ -787,7 +787,7 @@ int FixLbFluid::unpack_exchange(int nlocal, double *buf) //========================================================================== // calculate the force from the local atoms acting on the fluid. //========================================================================== -void FixLbFluid::calc_fluidforce(void) +void FixLbFluid::calc_fluidforce() { int *mask = atom->mask; int nlocal = atom->nlocal; @@ -1255,7 +1255,7 @@ require more frequent neighborlist rebuilds"); // read in a fluid restart file. This is only used to restart the // fluid portion of a LAMMPS simulation. //========================================================================== -void FixLbFluid::read_restartfile(void) +void FixLbFluid::read_restartfile() { MPI_Status status; MPI_Datatype realtype; @@ -1295,7 +1295,7 @@ void FixLbFluid::read_restartfile(void) //========================================================================== // write a fluid restart file. //========================================================================== -void FixLbFluid::write_restartfile(void) +void FixLbFluid::write_restartfile() { MPI_File fh; @@ -1343,7 +1343,7 @@ void FixLbFluid::write_restartfile(void) // This assumes that all the simulation parameters have been given in // terms of distance, time and mass units. //========================================================================== -void FixLbFluid::rescale(void) +void FixLbFluid::rescale() { vwtp = vwtp*dt_lb/dx_lb; vwbt = vwbt*dt_lb/dx_lb; @@ -1419,7 +1419,7 @@ satisfy the Courant condition.\n"); // Set the lattice-Boltzmann velocity vectors and weights for the D3Q15 // model. Initialize the fluid velocity and density. //========================================================================== -void FixLbFluid::initializeLB15(void) +void FixLbFluid::initializeLB15() { int i,j,k,m; @@ -1586,7 +1586,7 @@ void FixLbFluid::initializeLB15(void) // Set the lattice-Boltzmann velocity vectors and weights for the D3Q19 // model. Initialize the fluid velocity and density. //========================================================================== -void FixLbFluid::initializeLB19(void) +void FixLbFluid::initializeLB19() { int i,j,k,m; @@ -1823,7 +1823,7 @@ void FixLbFluid::initializeLB19(void) // Initialize the equilibrium distribution functions // (this just uses the initial fluid parameters, and assumes no forces). //========================================================================== -void FixLbFluid::initialize_feq(void) +void FixLbFluid::initialize_feq() { int i,j,k,p; MPI_Request requests[8]; @@ -2311,7 +2311,7 @@ void FixLbFluid::equilibriumdist19(int xstart, int xend, int ystart, int yend, i // Calculate the fluid density and velocity over the entire simulation // domain. //========================================================================== -void FixLbFluid::parametercalc_full(void) +void FixLbFluid::parametercalc_full() { MPI_Request requests[4]; MPI_Request requests2[12]; @@ -2529,7 +2529,7 @@ void FixLbFluid::update_periodic(int xstart, int xend, int ystart, int yend, int //========================================================================== // Print the fluid properties to the screen. //========================================================================== -void FixLbFluid::streamout(void) +void FixLbFluid::streamout() { int i,j,k; int istart,jstart,kstart; @@ -2651,7 +2651,7 @@ void FixLbFluid::streamout(void) // Update the distribution functions over the entire simulation domain for // the D3Q15 model. //========================================================================== -void FixLbFluid::update_full15(void) +void FixLbFluid::update_full15() { MPI_Request req_send15,req_recv15; @@ -3008,7 +3008,7 @@ void FixLbFluid::update_full15(void) // Update the distribution functions over the entire simulation domain for // the D3Q19 model. //========================================================================== -void FixLbFluid::update_full19(void) +void FixLbFluid::update_full19() { MPI_Request req_send15,req_recv15; diff --git a/src/LATBOLTZ/fix_lb_fluid.h b/src/LATBOLTZ/fix_lb_fluid.h index 0842acbe64..98d3e2c792 100644 --- a/src/LATBOLTZ/fix_lb_fluid.h +++ b/src/LATBOLTZ/fix_lb_fluid.h @@ -139,26 +139,26 @@ class FixLbFluid : public Fix { int printfluid; int fixviscouslb; - void rescale(void); - void (FixLbFluid::*initializeLB)(void); - void initializeLB15(void); - void initializeLB19(void); - void initialize_feq(void); + void rescale(); + void (FixLbFluid::*initializeLB)(); + void initializeLB15(); + void initializeLB19(); + void initialize_feq(); void (FixLbFluid::*equilibriumdist)(int, int, int, int, int, int); void equilibriumdist15(int, int, int, int, int, int); void equilibriumdist19(int, int, int, int, int, int); void parametercalc_part(int, int, int, int, int, int); - void parametercalc_full(void); + void parametercalc_full(); void update_periodic(int, int, int, int, int, int); - void (FixLbFluid::*update_full)(void); - void update_full15(void); - void update_full19(void); - void streamout(void); - void read_restartfile(void); - void write_restartfile(void); + void (FixLbFluid::*update_full)(); + void update_full15(); + void update_full19(); + void streamout(); + void read_restartfile(); + void write_restartfile(); void peskin_interpolation(int); void trilinear_interpolation(int); - void calc_fluidforce(void); + void calc_fluidforce(); }; } // namespace LAMMPS_NS #endif diff --git a/src/LATBOLTZ/fix_lb_pc.cpp b/src/LATBOLTZ/fix_lb_pc.cpp index bae0987b21..352803b670 100644 --- a/src/LATBOLTZ/fix_lb_pc.cpp +++ b/src/LATBOLTZ/fix_lb_pc.cpp @@ -338,7 +338,7 @@ int FixLbPC::unpack_exchange(int nlocal, double *buf) } /* ---------------------------------------------------------------------- */ - void FixLbPC::compute_up(void) + void FixLbPC::compute_up() { int *mask = atom->mask; int nlocal = atom->nlocal; diff --git a/src/LATBOLTZ/fix_lb_pc.h b/src/LATBOLTZ/fix_lb_pc.h index e2e47d915f..d218f22ebd 100644 --- a/src/LATBOLTZ/fix_lb_pc.h +++ b/src/LATBOLTZ/fix_lb_pc.h @@ -50,7 +50,7 @@ class FixLbPC : public Fix { double **up; double **up_old; - void compute_up(void); + void compute_up(); class FixLbFluid *fix_lb_fluid; }; diff --git a/src/LATBOLTZ/fix_lb_rigid_pc_sphere.cpp b/src/LATBOLTZ/fix_lb_rigid_pc_sphere.cpp index 304d5bbf0f..d9dfc7b264 100644 --- a/src/LATBOLTZ/fix_lb_rigid_pc_sphere.cpp +++ b/src/LATBOLTZ/fix_lb_rigid_pc_sphere.cpp @@ -1536,7 +1536,7 @@ double FixLbRigidPCSphere::compute_array(int i, int j) } /* ---------------------------------------------------------------------- */ - void FixLbRigidPCSphere::compute_up(void) + void FixLbRigidPCSphere::compute_up() { int *mask = atom->mask; int nlocal = atom->nlocal; diff --git a/src/LATBOLTZ/fix_lb_viscous.cpp b/src/LATBOLTZ/fix_lb_viscous.cpp index 95e36a98a9..0873a0fc94 100644 --- a/src/LATBOLTZ/fix_lb_viscous.cpp +++ b/src/LATBOLTZ/fix_lb_viscous.cpp @@ -55,13 +55,6 @@ FixLbViscous::FixLbViscous(LAMMPS *lmp, int narg, char **arg) : } -} - -/* ---------------------------------------------------------------------- */ - -FixLbViscous::~FixLbViscous() -{ - } /* ---------------------------------------------------------------------- */ diff --git a/src/LATBOLTZ/fix_lb_viscous.h b/src/LATBOLTZ/fix_lb_viscous.h index 1d08a15463..8c86e47553 100644 --- a/src/LATBOLTZ/fix_lb_viscous.h +++ b/src/LATBOLTZ/fix_lb_viscous.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class FixLbViscous : public Fix { public: FixLbViscous(class LAMMPS *, int, char **); - ~FixLbViscous(); + virtual ~FixLbViscous() = default; int setmask(); void init(); void setup(int); diff --git a/src/MACHDYN/fix_smd_move_triangulated_surface.cpp b/src/MACHDYN/fix_smd_move_triangulated_surface.cpp index c790720e99..6fc8a1dadc 100644 --- a/src/MACHDYN/fix_smd_move_triangulated_surface.cpp +++ b/src/MACHDYN/fix_smd_move_triangulated_surface.cpp @@ -215,15 +215,6 @@ FixSMDMoveTriSurf::FixSMDMoveTriSurf(LAMMPS *lmp, int narg, char **arg) : /* ---------------------------------------------------------------------- */ -FixSMDMoveTriSurf::~FixSMDMoveTriSurf() -{ - // unregister callbacks to this fix from Atom class - //atom->delete_callback(id,Atom::GROW); - //atom->delete_callback(id,Atom::RESTART); -} - -/* ---------------------------------------------------------------------- */ - int FixSMDMoveTriSurf::setmask() { int mask = 0; mask |= INITIAL_INTEGRATE; diff --git a/src/MACHDYN/fix_smd_move_triangulated_surface.h b/src/MACHDYN/fix_smd_move_triangulated_surface.h index aec2fcb688..e64d2fc409 100644 --- a/src/MACHDYN/fix_smd_move_triangulated_surface.h +++ b/src/MACHDYN/fix_smd_move_triangulated_surface.h @@ -39,7 +39,7 @@ namespace LAMMPS_NS { class FixSMDMoveTriSurf : public Fix { public: FixSMDMoveTriSurf(class LAMMPS *, int, char **); - ~FixSMDMoveTriSurf(); + ~FixSMDMoveTriSurf() = default; int setmask(); virtual void init(); virtual void initial_integrate(int); diff --git a/src/MACHDYN/pair_smd_tlsph.h b/src/MACHDYN/pair_smd_tlsph.h index 86e2bbe52b..0950430ca0 100644 --- a/src/MACHDYN/pair_smd_tlsph.h +++ b/src/MACHDYN/pair_smd_tlsph.h @@ -49,8 +49,8 @@ class PairTlsph : public Pair { void write_restart_settings(FILE *) {} void read_restart_settings(FILE *) {} virtual double memory_usage(); - void compute_shape_matrix(void); - void material_model(void); + void compute_shape_matrix(); + void material_model(); void *extract(const char *, int &); int pack_forward_comm(int, int *, double *, int, int *); void unpack_forward_comm(int, int, double *); diff --git a/src/MAKE/MACHINES/Makefile.cygwin b/src/MAKE/MACHINES/Makefile.cygwin index 3d4a50a8ea..1af9cfe802 100644 --- a/src/MAKE/MACHINES/Makefile.cygwin +++ b/src/MAKE/MACHINES/Makefile.cygwin @@ -65,6 +65,9 @@ JPG_INC = JPG_PATH = JPG_LIB = +# library for loading shared objects (defaults to -ldl, but should be empty on Windows) + +override DYN_LIB = # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section diff --git a/src/MAKE/Makefile.mpi b/src/MAKE/Makefile.mpi index 42f48b4e2c..cf796be69b 100644 --- a/src/MAKE/Makefile.mpi +++ b/src/MAKE/Makefile.mpi @@ -65,6 +65,11 @@ JPG_INC = JPG_PATH = JPG_LIB = +# library for loading shared objects (defaults to -ldl) +# uncomment to change the default + +# override DYN_LIB = + # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section diff --git a/src/MAKE/Makefile.serial b/src/MAKE/Makefile.serial index b527919147..6dd8415ea9 100644 --- a/src/MAKE/Makefile.serial +++ b/src/MAKE/Makefile.serial @@ -65,6 +65,11 @@ JPG_INC = JPG_PATH = JPG_LIB = +# library for loading shared objects (defaults to -ldl, should be empty on Windows) +# uncomment to change the default + +# override DYN_LIB = + # --------------------------------------------------------------------- # build rules and dependencies # do not edit this section @@ -74,7 +79,7 @@ include Makefile.package EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) -EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) +EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) $(DYN_LIB) EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) diff --git a/src/MANIFOLD/manifold_thylakoid_shared.cpp b/src/MANIFOLD/manifold_thylakoid_shared.cpp index b71cf23e5e..5efc20a298 100644 --- a/src/MANIFOLD/manifold_thylakoid_shared.cpp +++ b/src/MANIFOLD/manifold_thylakoid_shared.cpp @@ -90,11 +90,6 @@ thyla_part::thyla_part( int type, double *args, double xlo, double ylo, double z z0 = (type == THYLA_TYPE_SPHERE) ? params[3] : params[5]; } - - -thyla_part::~thyla_part() -{} - double thyla_part::g(const double *x) { switch(type) { diff --git a/src/MANIFOLD/manifold_thylakoid_shared.h b/src/MANIFOLD/manifold_thylakoid_shared.h index a90d5e8801..67909802b0 100644 --- a/src/MANIFOLD/manifold_thylakoid_shared.h +++ b/src/MANIFOLD/manifold_thylakoid_shared.h @@ -33,7 +33,7 @@ namespace user_manifold { thyla_part(int type, double *args, double xlo, double ylo, double zlo, double xhi, double yhi, double zhi); thyla_part() : type(-1), x0(-1337), y0(-1337), z0(-1337) {} - ~thyla_part(); + ~thyla_part() = default; double g(const double *x); void n(const double *x, double *n); diff --git a/src/MANYBODY/pair_edip.cpp b/src/MANYBODY/pair_edip.cpp index 0efa509cb3..51b38037ab 100644 --- a/src/MANYBODY/pair_edip.cpp +++ b/src/MANYBODY/pair_edip.cpp @@ -463,7 +463,7 @@ void PairEDIP::compute(int eflag, int vflag) /* ---------------------------------------------------------------------- */ -void PairEDIP::allocateGrids(void) +void PairEDIP::allocateGrids() { int numGridPointsOneCutoffFunction; int numGridPointsNotOneCutoffFunction; diff --git a/src/MANYBODY/pair_edip.h b/src/MANYBODY/pair_edip.h index 8ee3a74dd8..5812768d55 100644 --- a/src/MANYBODY/pair_edip.h +++ b/src/MANYBODY/pair_edip.h @@ -90,11 +90,11 @@ class PairEDIP : public Pair { Param *params; // parameter set for an I-J-K interaction void allocate(); - void allocatePreLoops(void); - void deallocatePreLoops(void); - void allocateGrids(void); - void deallocateGrids(void); - void initGrids(void); + void allocatePreLoops(); + void deallocatePreLoops(); + void allocateGrids(); + void deallocateGrids(); + void initGrids(); void read_file(char *); void setup_params(); diff --git a/src/MANYBODY/pair_edip_multi.cpp b/src/MANYBODY/pair_edip_multi.cpp index 47cc5a90fa..3cabec4505 100644 --- a/src/MANYBODY/pair_edip_multi.cpp +++ b/src/MANYBODY/pair_edip_multi.cpp @@ -486,7 +486,7 @@ void PairEDIPMulti::edip_fcut3(double r, Param *param, double &f, double &fdr) pre-calculated structures ------------------------------------------------------------------------- */ -void PairEDIPMulti::allocatePreLoops(void) +void PairEDIPMulti::allocatePreLoops() { int nthreads = comm->nthreads; @@ -497,7 +497,7 @@ void PairEDIPMulti::allocatePreLoops(void) deallocate preLoops ------------------------------------------------------------------------- */ -void PairEDIPMulti::deallocatePreLoops(void) +void PairEDIPMulti::deallocatePreLoops() { memory->destroy(preForceCoord); } diff --git a/src/MANYBODY/pair_edip_multi.h b/src/MANYBODY/pair_edip_multi.h index 44921ebdba..3ee7347a56 100644 --- a/src/MANYBODY/pair_edip_multi.h +++ b/src/MANYBODY/pair_edip_multi.h @@ -57,8 +57,8 @@ class PairEDIPMulti : public Pair { Param *params; // parameter set for an I-J-K interaction void allocate(); - void allocatePreLoops(void); - void deallocatePreLoops(void); + void allocatePreLoops(); + void deallocatePreLoops(); void read_file(char *); void setup(); diff --git a/src/MANYBODY/pair_tersoff_table.h b/src/MANYBODY/pair_tersoff_table.h index 662fd532b7..ab345d8af2 100644 --- a/src/MANYBODY/pair_tersoff_table.h +++ b/src/MANYBODY/pair_tersoff_table.h @@ -69,8 +69,8 @@ class PairTersoffTable : public Pair { double **preGtetaFunction, **preGtetaFunctionDerived; double *preCutoffFunction, *preCutoffFunctionDerived; - virtual void allocatePreLoops(void); - virtual void deallocatePreLoops(void); + virtual void allocatePreLoops(); + virtual void deallocatePreLoops(); // grids @@ -79,8 +79,8 @@ class PairTersoffTable : public Pair { double **gtetaFunction, **gtetaFunctionDerived; double **betaZetaPower, **betaZetaPowerDerived; - void allocateGrids(void); - void deallocateGrids(void); + void allocateGrids(); + void deallocateGrids(); }; } // namespace LAMMPS_NS diff --git a/src/MC/fix_atom_swap.cpp b/src/MC/fix_atom_swap.cpp index 76200dc614..b3420e423e 100644 --- a/src/MC/fix_atom_swap.cpp +++ b/src/MC/fix_atom_swap.cpp @@ -74,11 +74,13 @@ FixAtomSwap::FixAtomSwap(LAMMPS *lmp, int narg, char **arg) : ncycles = utils::inumeric(FLERR,arg[4],false,lmp); seed = utils::inumeric(FLERR,arg[5],false,lmp); double temperature = utils::numeric(FLERR,arg[6],false,lmp); - beta = 1.0/(force->boltz*temperature); if (nevery <= 0) error->all(FLERR,"Illegal fix atom/swap command"); if (ncycles < 0) error->all(FLERR,"Illegal fix atom/swap command"); if (seed <= 0) error->all(FLERR,"Illegal fix atom/swap command"); + if (temperature <= 0.0) error->all(FLERR,"Illegal fix atom/swap command"); + + beta = 1.0/(force->boltz*temperature); memory->create(type_list,atom->ntypes,"atom/swap:type_list"); memory->create(mu,atom->ntypes+1,"atom/swap:mu"); @@ -142,7 +144,7 @@ void FixAtomSwap::options(int narg, char **arg) if (narg < 0) error->all(FLERR,"Illegal fix atom/swap command"); regionflag = 0; - conserve_ke_flag = 1; + ke_flag = 1; semi_grand_flag = 0; nswaptypes = 0; nmutypes = 0; @@ -160,7 +162,7 @@ void FixAtomSwap::options(int narg, char **arg) iarg += 2; } else if (strcmp(arg[iarg],"ke") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix atom/swap command"); - conserve_ke_flag = utils::logical(FLERR,arg[iarg+1],false,lmp); + ke_flag = utils::logical(FLERR,arg[iarg+1],false,lmp); iarg += 2; } else if (strcmp(arg[iarg],"semi-grand") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix atom/swap command"); @@ -301,6 +303,8 @@ void FixAtomSwap::pre_exchange() if (next_reneighbor != update->ntimestep) return; + // insure current system is ready to compute energy + if (domain->triclinic) domain->x2lamda(atom->nlocal); domain->pbc(); comm->exchange(); @@ -309,8 +313,13 @@ void FixAtomSwap::pre_exchange() if (modify->n_pre_neighbor) modify->pre_neighbor(); neighbor->build(1); + // energy_stored = energy of current state + // will be updated after accepted swaps + energy_stored = energy_full(); + // attempt Ncycle atom swaps + int nsuccess = 0; if (semi_grand_flag) { update_semi_grand_atoms_list(); @@ -320,23 +329,30 @@ void FixAtomSwap::pre_exchange() for (int i = 0; i < ncycles; i++) nsuccess += attempt_swap(); } + // udpate MC stats + nswap_attempts += ncycles; nswap_successes += nsuccess; - energy_full(); next_reneighbor = update->ntimestep + nevery; } /* ---------------------------------------------------------------------- -Note: atom charges are assumed equal and so are not updated + attempt a semd-grand swap of a single atom + compare before/after energy and accept/reject the swap + NOTE: atom charges are assumed equal and so are not updated ------------------------------------------------------------------------- */ int FixAtomSwap::attempt_semi_grand() { if (nswap == 0) return 0; + // pre-swap energy + double energy_before = energy_stored; + // pick a random atom and perform swap + int itype,jtype,jswaptype; int i = pick_semi_grand_atom(); if (i >= 0) { @@ -350,9 +366,12 @@ int FixAtomSwap::attempt_semi_grand() atom->type[i] = jtype; } + // if unequal_cutoffs, call comm->borders() and rebuild neighbor list + // else communicate ghost atoms + // call to comm->exchange() is a no-op but clears ghost atoms + if (unequal_cutoffs) { if (domain->triclinic) domain->x2lamda(atom->nlocal); - domain->pbc(); comm->exchange(); comm->borders(); if (domain->triclinic) domain->lamda2x(atom->nlocal+atom->nghost); @@ -362,6 +381,8 @@ int FixAtomSwap::attempt_semi_grand() comm->forward_comm_fix(this); } + // post-swap energy + if (force->kspace) force->kspace->qsum_qsq(); double energy_after = energy_full(); @@ -374,10 +395,12 @@ int FixAtomSwap::attempt_semi_grand() int success_all = 0; MPI_Allreduce(&success,&success_all,1,MPI_INT,MPI_MAX,world); + // swap accepted, return 1 + if (success_all) { update_semi_grand_atoms_list(); energy_stored = energy_after; - if (conserve_ke_flag) { + if (ke_flag) { if (i >= 0) { atom->v[i][0] *= sqrt_mass_ratio[itype][jtype]; atom->v[i][1] *= sqrt_mass_ratio[itype][jtype]; @@ -385,38 +408,35 @@ int FixAtomSwap::attempt_semi_grand() } } return 1; - } else { - if (i >= 0) { - atom->type[i] = itype; - } - if (force->kspace) force->kspace->qsum_qsq(); - energy_stored = energy_before; - - if (unequal_cutoffs) { - if (domain->triclinic) domain->x2lamda(atom->nlocal); - domain->pbc(); - comm->exchange(); - comm->borders(); - if (domain->triclinic) domain->lamda2x(atom->nlocal+atom->nghost); - if (modify->n_pre_neighbor) modify->pre_neighbor(); - neighbor->build(1); - } else { - comm->forward_comm_fix(this); - } } + + // swap not accepted, return 0 + // restore the swapped atom + // do not need to re-call comm->borders() and rebuild neighbor list + // since will be done on next cycle or in Verlet when this fix finishes + + if (i >= 0) atom->type[i] = itype; + if (force->kspace) force->kspace->qsum_qsq(); + return 0; } - /* ---------------------------------------------------------------------- + attempt a swap of a pair of atoms + compare before/after energy and accept/reject the swap ------------------------------------------------------------------------- */ int FixAtomSwap::attempt_swap() { if ((niswap == 0) || (njswap == 0)) return 0; + // pre-swap energy + double energy_before = energy_stored; + // pick a random pair of atoms + // swap their properties + int i = pick_i_swap_atom(); int j = pick_j_swap_atom(); int itype = type_list[0]; @@ -431,6 +451,10 @@ int FixAtomSwap::attempt_swap() if (atom->q_flag) atom->q[j] = qtype[0]; } + // if unequal_cutoffs, call comm->borders() and rebuild neighbor list + // else communicate ghost atoms + // call to comm->exchange() is a no-op but clears ghost atoms + if (unequal_cutoffs) { if (domain->triclinic) domain->x2lamda(atom->nlocal); domain->pbc(); @@ -443,13 +467,17 @@ int FixAtomSwap::attempt_swap() comm->forward_comm_fix(this); } + // post-swap energy + double energy_after = energy_full(); + // swap accepted, return 1 + // if ke_flag, rescale atom velocities + if (random_equal->uniform() < exp(beta*(energy_before - energy_after))) { update_swap_atoms_list(); - energy_stored = energy_after; - if (conserve_ke_flag) { + if (ke_flag) { if (i >= 0) { atom->v[i][0] *= sqrt_mass_ratio[itype][jtype]; atom->v[i][1] *= sqrt_mass_ratio[itype][jtype]; @@ -461,30 +489,24 @@ int FixAtomSwap::attempt_swap() atom->v[j][2] *= sqrt_mass_ratio[jtype][itype]; } } + energy_stored = energy_after; return 1; - } else { - if (i >= 0) { - atom->type[i] = type_list[0]; - if (atom->q_flag) atom->q[i] = qtype[0]; - } - if (j >= 0) { - atom->type[j] = type_list[1]; - if (atom->q_flag) atom->q[j] = qtype[1]; - } - energy_stored = energy_before; - - if (unequal_cutoffs) { - if (domain->triclinic) domain->x2lamda(atom->nlocal); - domain->pbc(); - comm->exchange(); - comm->borders(); - if (domain->triclinic) domain->lamda2x(atom->nlocal+atom->nghost); - if (modify->n_pre_neighbor) modify->pre_neighbor(); - neighbor->build(1); - } else { - comm->forward_comm_fix(this); - } } + + // swap not accepted, return 0 + // restore the swapped itype & jtype atoms + // do not need to re-call comm->borders() and rebuild neighbor list + // since will be done on next cycle or in Verlet when this fix finishes + + if (i >= 0) { + atom->type[i] = type_list[0]; + if (atom->q_flag) atom->q[i] = qtype[0]; + } + if (j >= 0) { + atom->type[j] = type_list[1]; + if (atom->q_flag) atom->q[j] = qtype[1]; + } + return 0; } @@ -497,7 +519,6 @@ double FixAtomSwap::energy_full() int eflag = 1; int vflag = 0; - if (modify->n_pre_neighbor) modify->pre_neighbor(); if (modify->n_pre_force) modify->pre_force(vflag); if (force->pair) force->pair->compute(eflag,vflag); diff --git a/src/MC/fix_atom_swap.h b/src/MC/fix_atom_swap.h index a77b5a944e..2511fe6544 100644 --- a/src/MC/fix_atom_swap.h +++ b/src/MC/fix_atom_swap.h @@ -17,8 +17,8 @@ FixStyle(atom/swap,FixAtomSwap); // clang-format on #else -#ifndef LMP_FIX_MCSWAP_H -#define LMP_FIX_MCSWAP_H +#ifndef LMP_FIX_ATOM_SWAP_H +#define LMP_FIX_ATOM_SWAP_H #include "fix.h" @@ -31,14 +31,6 @@ class FixAtomSwap : public Fix { int setmask(); void init(); void pre_exchange(); - int attempt_semi_grand(); - int attempt_swap(); - double energy_full(); - int pick_semi_grand_atom(); - int pick_i_swap_atom(); - int pick_j_swap_atom(); - void update_semi_grand_atoms_list(); - void update_swap_atoms_list(); int pack_forward_comm(int, int *, double *, int, int *); void unpack_forward_comm(int, int, double *); double compute_vector(int); @@ -48,7 +40,7 @@ class FixAtomSwap : public Fix { private: int nevery, seed; - int conserve_ke_flag; // yes = conserve ke, no = do not conserve ke + int ke_flag; // yes = conserve ke, no = do not conserve ke int semi_grand_flag; // yes = semi-grand canonical, no = constant composition int ncycles; int niswap, njswap; // # of i,j swap atoms on all procs @@ -85,6 +77,14 @@ class FixAtomSwap : public Fix { class Compute *c_pe; void options(int, char **); + int attempt_semi_grand(); + int attempt_swap(); + double energy_full(); + int pick_semi_grand_atom(); + int pick_i_swap_atom(); + int pick_j_swap_atom(); + void update_semi_grand_atoms_list(); + void update_swap_atoms_list(); }; } // namespace LAMMPS_NS diff --git a/src/MC/fix_mol_swap.cpp b/src/MC/fix_mol_swap.cpp new file mode 100644 index 0000000000..8d7c2bf367 --- /dev/null +++ b/src/MC/fix_mol_swap.cpp @@ -0,0 +1,501 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 "fix_mol_swap.h" + +#include "angle.h" +#include "atom.h" +#include "bond.h" +#include "comm.h" +#include "compute.h" +#include "dihedral.h" +#include "domain.h" +#include "error.h" +#include "fix.h" +#include "force.h" +#include "improper.h" +#include "kspace.h" +#include "modify.h" +#include "neighbor.h" +#include "pair.h" +#include "random_park.h" +#include "update.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +#define BIG 1.0e20 + +/* ---------------------------------------------------------------------- */ + +FixMolSwap::FixMolSwap(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), random(nullptr), c_pe(nullptr) +{ + if (narg < 9) error->all(FLERR,"Illegal fix mol/swap command"); + + vector_flag = 1; + size_vector = 2; + global_freq = 1; + extvector = 0; + restart_global = 1; + time_depend = 1; + + // parse args + + nevery = utils::inumeric(FLERR,arg[3],false,lmp); + ncycles = utils::inumeric(FLERR,arg[4],false,lmp); + itype = utils::inumeric(FLERR,arg[5],false,lmp); + jtype = utils::inumeric(FLERR,arg[6],false,lmp); + seed = utils::inumeric(FLERR,arg[7],false,lmp); + double temperature = utils::numeric(FLERR,arg[8],false,lmp); + + // optional args + + ke_flag = 1; + + int iarg = 9; + while (iarg < narg) { + if (strcmp(arg[iarg],"ke") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal fix mol/swap command"); + ke_flag = utils::logical(FLERR,arg[iarg+1],false,lmp); + iarg += 2; + } else error->all(FLERR,"Illegal fix mol/swap command"); + } + + // error check + + if (nevery <= 0) error->all(FLERR,"Illegal fix mol/swap command"); + if (ncycles < 0) error->all(FLERR,"Illegal fix mol/swap command"); + if (itype == jtype) error->all(FLERR,"Illegal fix mol/swap command"); + if (itype <= 0 || itype > atom->ntypes || + jtype <= 0 || jtype > atom->ntypes) + error->all(FLERR,"Fix mol/swap atom types are invalid"); + if (seed <= 0) error->all(FLERR,"Illegal fix mol/swap command"); + if (temperature <= 0.0) error->all(FLERR,"Illegal fix mol/swap command"); + if (ke_flag && atom->rmass) + error->all(FLERR,"Cannot conserve kinetic energy with fix mol/swap " + "unless per-type masses"); + + beta = 1.0/(force->boltz*temperature); + + // random number generator, same for all procs + + random = new RanPark(lmp,seed); + + // set up reneighboring + + force_reneighbor = 1; + next_reneighbor = update->ntimestep + 1; + + // zero out counters + + nswap_attempt = 0.0; + nswap_accept = 0.0; + + // qflag = 1 if charges are defined + + if (atom->q_flag) qflag = 1; + else qflag = 0; + + // set comm size needed by this Fix + + if (qflag) comm_forward = 2; + else comm_forward = 1; +} + +/* ---------------------------------------------------------------------- */ + +FixMolSwap::~FixMolSwap() +{ + delete random; +} + +/* ---------------------------------------------------------------------- */ + +int FixMolSwap::setmask() +{ + int mask = 0; + mask |= PRE_EXCHANGE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixMolSwap::init() +{ + // c_pe = compute used to calculate before/after potential energy + + char *id_pe = (char *) "thermo_pe"; + int ipe = modify->find_compute(id_pe); + c_pe = modify->compute[ipe]; + + // minmol = smallest molID with atoms of itype or jtype + // maxmol = largest molID with atoms of itype or jtype + // require: molID > 0, atoms in fix group + + int *mask = atom->mask; + int *type = atom->type; + tagint *molecule = atom->molecule; + int nlocal = atom->nlocal; + + tagint minmol_me = MAXTAGINT; + tagint maxmol_me = 0; + + for (int i = 0; i < nlocal; i++) { + if (molecule[i] == 0) continue; + if (!(mask[i] & groupbit)) continue; + + if (molecule[i] < minmol_me) { + if (type[i] == itype || type[i] == jtype) minmol_me = molecule[i]; + } + if (molecule[i] > maxmol_me) { + if (type[i] == itype || type[i] == jtype) maxmol_me = molecule[i]; + } + } + + MPI_Allreduce(&minmol_me,&minmol,1,MPI_LMP_TAGINT,MPI_MIN,world); + MPI_Allreduce(&maxmol_me,&maxmol,1,MPI_LMP_TAGINT,MPI_MAX,world); + + // if ke_flag, check if itype/jtype masses are different + // if yes, pre-calcuate velocity scale factors that keep KE constant + // if no, turn ke_flag off + + if (ke_flag) { + double *mass = atom->mass; + if (mass[itype] != mass[jtype]) { + i2j_vscale = sqrt(mass[itype]/mass[jtype]); + j2i_vscale = sqrt(mass[jtype]/mass[itype]); + } else ke_flag = 0; + } + + // if qflag, check if all charges for itype are identical, ditto for jtype + // if not, cannot swap charges, issue warning + + if (qflag) { + double *q = atom->q; + + double iqone,jqone; + iqone = jqone = -BIG; + + for (int i = 0; i < nlocal; i++) { + if (molecule[i] == 0) continue; + if (!(mask[i] & groupbit)) continue; + if (type[i] == itype) iqone = q[i]; + if (type[i] == jtype) jqone = q[i]; + } + + MPI_Allreduce(&iqone,&iq,1,MPI_DOUBLE,MPI_MAX,world); + MPI_Allreduce(&jqone,&jq,1,MPI_DOUBLE,MPI_MAX,world); + + int flag = 0; + + for (int i = 0; i < nlocal; i++) { + if (molecule[i] == 0) continue; + if (!(mask[i] & groupbit)) continue; + if (type[i] == itype && q[i] != iq) flag = 1; + if (type[i] == jtype && q[i] != jq) flag = 1; + } + + int flagall; + MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_MAX,world); + if (flagall) qflag = 0; + + if (!qflag && comm->me == 0) + error->warning(FLERR,"Cannot swap charges in fix mol/swap"); + } + + // check if all cutoffs involving itype and jtype are the same + // if not, reneighboring will be needed after swaps + + double **cutsq = force->pair->cutsq; + + unequal_cutoffs = false; + for (int ktype = 1; ktype <= atom->ntypes; ktype++) + if (cutsq[itype][ktype] != cutsq[jtype][ktype]) unequal_cutoffs = true; +} + +/* ---------------------------------------------------------------------- + perform ncycle Monte Carlo swaps +------------------------------------------------------------------------- */ + +void FixMolSwap::pre_exchange() +{ + // just return if should not be called on this timestep + + if (next_reneighbor != update->ntimestep) return; + + // insure current system is ready to compute energy + + if (domain->triclinic) domain->x2lamda(atom->nlocal); + domain->pbc(); + comm->exchange(); + comm->borders(); + if (domain->triclinic) domain->lamda2x(atom->nlocal+atom->nghost); + if (modify->n_pre_neighbor) modify->pre_neighbor(); + neighbor->build(1); + + // energy_stored = energy of current state + // will be updated after accepted swaps + + energy_stored = energy_full(); + + // attempt Ncycle molecule swaps + + int naccept = 0; + for (int m = 0; m < ncycles; m++) naccept += attempt_swap(); + + // udpate MC stats + + nswap_attempt += ncycles; + nswap_accept += naccept; + + next_reneighbor = update->ntimestep + nevery; +} + +/* ---------------------------------------------------------------------- + attempt a swap of atom types within a random molecule + compare before/after energy and accept/reject the swap +------------------------------------------------------------------------- */ + +int FixMolSwap::attempt_swap() +{ + // pre-swap energy + + double energy_before = energy_stored; + + // pick a random molecule + // swap properties of all its eligible itype & jtype atoms + + tagint molID = + minmol + static_cast (random->uniform() * (maxmol-minmol+1)); + if (molID > maxmol) molID = maxmol; + + int *mask = atom->mask; + double **v = atom->v; + double *q = atom->q; + int *type = atom->type; + tagint *molecule = atom->molecule; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (molecule[i] != molID) continue; + if (!(mask[i] & groupbit)) continue; + if (type[i] == itype) { + type[i] = jtype; + if (qflag) q[i] = jq; + if (ke_flag) { + v[i][0] *= i2j_vscale; + v[i][1] *= i2j_vscale; + v[i][2] *= i2j_vscale; + } + } else if (type[i] == jtype) { + type[i] = itype; + if (qflag) q[i] = iq; + if (ke_flag) { + v[i][0] *= j2i_vscale; + v[i][1] *= j2i_vscale; + v[i][2] *= j2i_vscale; + } + } + } + + // if unequal_cutoffs, call comm->borders() and rebuild neighbor list + // else communicate ghost atoms + // call to comm->exchange() is a no-op but clears ghost atoms + + if (unequal_cutoffs) { + if (domain->triclinic) domain->x2lamda(atom->nlocal); + comm->exchange(); + comm->borders(); + if (domain->triclinic) domain->lamda2x(atom->nlocal+atom->nghost); + if (modify->n_pre_neighbor) modify->pre_neighbor(); + neighbor->build(1); + } else { + comm->forward_comm_fix(this); + } + + // post-swap energy + + double energy_after = energy_full(); + + // swap accepted, return 1 + + if (random->uniform() < exp(beta*(energy_before - energy_after))) { + energy_stored = energy_after; + return 1; + } + + // swap not accepted, return 0 + // restore the swapped itype & jtype atoms + // do not need to re-call comm->borders() and rebuild neighbor list + // since will be done on next cycle or in Verlet when this fix finishes + + for (int i = 0; i < nlocal; i++) { + if (molecule[i] != molID) continue; + if (!(mask[i] & groupbit)) continue; + if (type[i] == itype) { + type[i] = jtype; + if (qflag) q[i] = jq; + if (ke_flag) { + v[i][0] *= i2j_vscale; + v[i][1] *= i2j_vscale; + v[i][2] *= i2j_vscale; + } + } else if (type[i] == jtype) { + type[i] = itype; + if (qflag) q[i] = iq; + if (ke_flag) { + v[i][0] *= j2i_vscale; + v[i][1] *= j2i_vscale; + v[i][2] *= j2i_vscale; + } + } + } + + return 0; +} + +/* ---------------------------------------------------------------------- + compute system potential energy before or after a swap +------------------------------------------------------------------------- */ + +double FixMolSwap::energy_full() +{ + int eflag = 1; + int vflag = 0; + + if (modify->n_pre_force) modify->pre_force(vflag); + + if (force->pair) force->pair->compute(eflag,vflag); + + if (atom->molecular != Atom::ATOMIC) { + if (force->bond) force->bond->compute(eflag,vflag); + if (force->angle) force->angle->compute(eflag,vflag); + if (force->dihedral) force->dihedral->compute(eflag,vflag); + if (force->improper) force->improper->compute(eflag,vflag); + } + + if (force->kspace) force->kspace->compute(eflag,vflag); + + if (modify->n_post_force) modify->post_force(vflag); + + update->eflag_global = update->ntimestep; + double total_energy = c_pe->compute_scalar(); + + return total_energy; +} + +/* ---------------------------------------------------------------------- */ + +int FixMolSwap::pack_forward_comm(int n, int *list, double *buf, int /*pbc_flag*/, int * /*pbc*/) +{ + int i,j,m; + + int *type = atom->type; + double *q = atom->q; + + m = 0; + + if (qflag) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = type[j]; + buf[m++] = q[j]; + } + } else { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = type[j]; + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void FixMolSwap::unpack_forward_comm(int n, int first, double *buf) +{ + int i,m,last; + + int *type = atom->type; + double *q = atom->q; + + m = 0; + last = first + n; + + if (qflag) { + for (i = first; i < last; i++) { + type[i] = static_cast (buf[m++]); + q[i] = buf[m++]; + } + } else { + for (i = first; i < last; i++) + type[i] = static_cast (buf[m++]); + } +} + +/* ---------------------------------------------------------------------- + return acceptance ratio +------------------------------------------------------------------------- */ + +double FixMolSwap::compute_vector(int n) +{ + if (n == 0) return nswap_attempt; + if (n == 1) return nswap_accept; + return 0.0; +} + +/* ---------------------------------------------------------------------- + pack entire state of Fix into one write +------------------------------------------------------------------------- */ + +void FixMolSwap::write_restart(FILE *fp) +{ + int n = 0; + double list[6]; + list[n++] = random->state(); + list[n++] = ubuf(next_reneighbor).d; + list[n++] = nswap_attempt; + list[n++] = nswap_accept; + list[n++] = ubuf(update->ntimestep).d; + + if (comm->me == 0) { + int size = n * sizeof(double); + fwrite(&size,sizeof(int),1,fp); + fwrite(list,sizeof(double),n,fp); + } +} + +/* ---------------------------------------------------------------------- + use state info from restart file to restart the Fix +------------------------------------------------------------------------- */ + +void FixMolSwap::restart(char *buf) +{ + int n = 0; + double *list = (double *) buf; + + seed = static_cast (list[n++]); + random->reset(seed); + + next_reneighbor = (bigint) ubuf(list[n++]).i; + + nswap_attempt = static_cast(list[n++]); + nswap_accept = static_cast(list[n++]); + + bigint ntimestep_restart = (bigint) ubuf(list[n++]).i; + if (ntimestep_restart != update->ntimestep) + error->all(FLERR,"Must not reset timestep when restarting fix mol/swap"); +} diff --git a/src/MC/fix_mol_swap.h b/src/MC/fix_mol_swap.h new file mode 100644 index 0000000000..3197cbd832 --- /dev/null +++ b/src/MC/fix_mol_swap.h @@ -0,0 +1,122 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +FixStyle(mol/swap,FixMolSwap); +// clang-format on +#else + +#ifndef LMP_FIX_MOL_SWAP_H +#define LMP_FIX_MOL_SWAP_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixMolSwap : public Fix { + public: + FixMolSwap(class LAMMPS *, int, char **); + ~FixMolSwap(); + int setmask(); + void init(); + void pre_exchange(); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + double compute_vector(int); + void write_restart(FILE *); + void restart(char *); + + private: + int nevery, ncycles, seed; + int itype, jtype; + double temperature; + + int ke_flag; // 1 if kinetic energy is also swapped + double i2j_vscale; // scale factors for velocity to keep KE constant + double j2i_vscale; + + int qflag; // 1 if charge is also swapped + double iq,jq; // charge values for all itype,jtype atoms + + bool unequal_cutoffs; // 1 if itype and jtype have any different cutoffs + tagint minmol,maxmol; // range of mol IDs selected for swaps + + double nswap_attempt; // cummulative stats on MC attempts and accepts + double nswap_accept; + + double beta; // 1/kT + double energy_stored; // energy of current state as swaps are accepted + + class RanPark *random; + class Compute *c_pe; + + int attempt_swap(); + double energy_full(); +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Region ID for fix atom/swap does not exist + +Self-explanatory. + +E: Must specify at least 2 types in fix atom/swap command + +Self-explanatory. + +E: Need nswaptypes mu values in fix atom/swap command + +Self-explanatory. + +E: Only 2 types allowed when not using semi-grand in fix atom/swap command + +Self-explanatory. + +E: Mu not allowed when not using semi-grand in fix atom/swap command + +Self-explanatory. + +E: Invalid atom type in fix atom/swap command + +The atom type specified in the atom/swap command does not exist. + +E: All atoms of a swapped type must have the same charge. + +Self-explanatory. + +E: At least one atom of each swapped type must be present to define charges. + +Self-explanatory. + +E: All atoms of a swapped type must have same charge. + +Self-explanatory. + +E: Cannot do atom/swap on atoms in atom_modify first group + +This is a restriction due to the way atoms are organized in a list to +enable the atom_modify first command. + +*/ diff --git a/src/MEAM/pair_meam.cpp b/src/MEAM/pair_meam.cpp index 2acf58f738..b69d17f0a9 100644 --- a/src/MEAM/pair_meam.cpp +++ b/src/MEAM/pair_meam.cpp @@ -255,7 +255,7 @@ void PairMEAM::coeff(int narg, char **arg) "'maxelt' in meam.h and recompile.", maxelt); for (int i = 0; i < nlibelements; i++) { - libelements.push_back(arg[i+3]); + libelements.emplace_back(arg[i+3]); mass.push_back(0.0); } diff --git a/src/MESONT/pair_mesont_tpm.cpp b/src/MESONT/pair_mesont_tpm.cpp index 64aeeeeadd..425722a569 100644 --- a/src/MESONT/pair_mesont_tpm.cpp +++ b/src/MESONT/pair_mesont_tpm.cpp @@ -38,7 +38,7 @@ using namespace LAMMPS_NS; class MESONTList { public: MESONTList(const Atom* atom, const NeighList* nblist); - ~MESONTList() {}; + ~MESONTList() = default;; //list of segments const std::vector>& get_segments() const; //list of triplets diff --git a/src/MGPT/mgpt_readpot.cpp b/src/MGPT/mgpt_readpot.cpp index 75ea1202aa..df62bf735d 100644 --- a/src/MGPT/mgpt_readpot.cpp +++ b/src/MGPT/mgpt_readpot.cpp @@ -166,7 +166,7 @@ void potdata::readpot(const char *parmin_file,const char *potin_file,const doubl int ipotx,modex; double pnx; double vol0; - double *vatab,*vbtab,*vctab,*vdtab,*vetab,*p1tab,*altab,*vpairtab = 0; + double *vatab,*vbtab,*vctab,*vdtab,*vetab,*p1tab,*altab,*vpairtab = nullptr; double *r0rwstab,*evol0tab; double (*C)[4]; double *y,*dy; diff --git a/src/MGPT/mgpt_readpot.h b/src/MGPT/mgpt_readpot.h index d860146959..89b59aa243 100644 --- a/src/MGPT/mgpt_readpot.h +++ b/src/MGPT/mgpt_readpot.h @@ -320,7 +320,7 @@ struct potdata2 { tdeppot.devol0 = maketempspline(ntemp,potlist,&(potlist[0].devol0)); - tdeppot.ddl[0] = 0; + tdeppot.ddl[0] = nullptr; for(int k = 1; k<=4; k++) tdeppot.ddl[k] = maketempspline(ntemp,potlist,&(potlist[0].ddl[k])); diff --git a/src/MGPT/pair_mgpt.cpp b/src/MGPT/pair_mgpt.cpp index fb956cabaf..2bea1273c6 100644 --- a/src/MGPT/pair_mgpt.cpp +++ b/src/MGPT/pair_mgpt.cpp @@ -222,8 +222,8 @@ PairMGPT::triplet_data *PairMGPT::get_triplet(const double xx[][3],int i,int j,i double t0,t1; - bond_data *bij = 0,*bik = 0; - triplet_data *tptr = 0; + bond_data *bij = nullptr,*bik = nullptr; + triplet_data *tptr = nullptr; t0 = gettime(); if (recompute == 0) { @@ -231,7 +231,7 @@ PairMGPT::triplet_data *PairMGPT::get_triplet(const double xx[][3],int i,int j,i bik = bhash->Lookup(Doublet(i,k)); } - if (bij == 0) { + if (bij == nullptr) { if (recompute == 0) bij = bhash->Insert(Doublet(i,j)); else @@ -242,7 +242,7 @@ PairMGPT::triplet_data *PairMGPT::get_triplet(const double xx[][3],int i,int j,i make_bond(xx,j,i,bij); } - if (bik == 0) { + if (bik == nullptr) { if (recompute == 0) bik = bhash->Insert(Doublet(i,k)); else @@ -256,7 +256,7 @@ PairMGPT::triplet_data *PairMGPT::get_triplet(const double xx[][3],int i,int j,i t_make_b += t1-t0; t0 = gettime(); - if (bij != 0 && bij != 0) { + if (bij != nullptr && bij != nullptr) { tptr = twork; make_triplet(bij,bik,tptr); *dvir_ij_p = bij->fl_deriv_sum; @@ -933,7 +933,7 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, const int ski = (k < i) ? 1 : -1; - T12 = T23 = T31 = 0; + T12 = T23 = T31 = nullptr; mj = first[j]; /* @@ -1042,7 +1042,7 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, accumulate_forces_3(w3); } - if (T12 != 0) { + if (T12 != nullptr) { //printf("T12 i,j,k = %d,%d,%d\n",i,j,k); mcount++; if (three_body_energies && evflag) { @@ -1098,7 +1098,7 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, accumulate_forces_3(w3); } - if (T23 != 0) { + if (T23 != nullptr) { //printf("T23 i,j,k = %d,%d,%d\n",i,j,k); mcount++; if (three_body_energies && evflag) { @@ -1154,7 +1154,7 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, } - if (T31 != 0) { + if (T31 != nullptr) { //printf("T31 i,j,k = %d,%d,%d\n",i,j,k); mcount++; if (three_body_energies && evflag) { @@ -1327,15 +1327,15 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, tr1 = tr2 = tr3 = 0.0; dvir_im = dvir_jm = dvir_km = 0.0; - T45 = T56 = T64 = 0; - if (T12 != 0 && c_km && c_im) + T45 = T56 = T64 = nullptr; + if (T12 != nullptr && c_km && c_im) T45 = get_triplet(xx,m,i,k,&bond_hash,&T45work,&dvir_im,&dvir_km); - if (T23 != 0 && c_im && c_jm) + if (T23 != nullptr && c_im && c_jm) T56 = get_triplet(xx,m,i,j,&bond_hash,&T56work,&dvir_im,&dvir_jm); - if (T31 != 0 && c_jm && c_km) + if (T31 != nullptr && c_jm && c_km) T64 = get_triplet(xx,m,j,k,&bond_hash,&T64work,&dvir_jm,&dvir_km); - if (T12 != 0 && T45 != 0) { + if (T12 != nullptr && T45 != nullptr) { if (four_body_energies && evflag) { tr1 = transtrace(T12->H1H2,T45->H1H2); double dvir = ( (dvir_ij + dvir_jk + dvir_im + dvir_km)*splinepot.ve + @@ -1364,7 +1364,7 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, accumulate_forces_4(w4); } - if (T23 != 0 && T56 != 0) { + if (T23 != nullptr && T56 != nullptr) { if (four_body_energies && evflag) { tr2 = transtrace(T23->H1H2,T56->H1H2); double dvir = ( (dvir_ki + dvir_jk + dvir_im + dvir_jm)*splinepot.ve + @@ -1394,7 +1394,7 @@ void PairMGPT::compute_x(const int *nnei,const int * const *nlist, } - if (T31 != 0 && T64 != 0) { + if (T31 != nullptr && T64 != nullptr) { if (four_body_energies && evflag) { tr3 = transtrace(T31->H1H2,T64->H1H2); double dvir = ( (dvir_ki + dvir_ij + dvir_jm + dvir_km)*splinepot.ve + diff --git a/src/MGPT/pair_mgpt.h b/src/MGPT/pair_mgpt.h index 106c2cc8f0..ed73ed1f35 100644 --- a/src/MGPT/pair_mgpt.h +++ b/src/MGPT/pair_mgpt.h @@ -146,7 +146,7 @@ public: table = new Link *[size]; for(int i = 0; inext; delete p; p = q; @@ -188,9 +188,9 @@ public: return &table[idx]->data; } else { /* This is for threading... and incomplete */ typedef Link *LinkPtr; - LinkPtr ptr = table[idx],last = 0,dataptr = new Link(key,0); + LinkPtr ptr = table[idx],last = nullptr,dataptr = new Link(key,nullptr); - while(ptr != 0) { + while(ptr != nullptr) { last = ptr; ptr = ptr->next; } @@ -241,7 +241,7 @@ public: p = table[idx]; - while(p != 0 && !(p->key == key)) { + while(p != nullptr && !(p->key == key)) { p = p->next; count = count + 1; } @@ -251,9 +251,9 @@ public: nsearch = nsearch + 1; nstep = nstep + count; - if(p != 0) p->hits++; + if(p != nullptr) p->hits++; - return (p == 0) ? 0 : &p->data; + return (p == nullptr) ? nullptr : &p->data; } }; @@ -469,8 +469,8 @@ public: return 0; } double get_weight(const int triclinic, - const double a[3] = 0,const double b[3] = 0, - const double c[3] = 0,const double d[3] = 0) { + const double a[3] = nullptr,const double b[3] = nullptr, + const double c[3] = nullptr,const double d[3] = nullptr) { const double *s0 = triclinic ? domain->sublo_lamda : domain->sublo, *s1 = triclinic ? domain->subhi_lamda : domain->subhi; @@ -479,10 +479,10 @@ public: for(int p = 0; p<3; p++) { double cog = 0.0,q,w,n = 0.0; - if(a != 0) { cog = cog + a[p]; n = n + 1; } - if(b != 0) { cog = cog + b[p]; n = n + 1; } - if(c != 0) { cog = cog + c[p]; n = n + 1; } - if(d != 0) { cog = cog + d[p]; n = n + 1; } + if(a != nullptr) { cog = cog + a[p]; n = n + 1; } + if(b != nullptr) { cog = cog + b[p]; n = n + 1; } + if(c != nullptr) { cog = cog + c[p]; n = n + 1; } + if(d != nullptr) { cog = cog + d[p]; n = n + 1; } cog = cog * (1.0/n); if(cog < 0.5*(s0[p]+s1[p])) q = cog - s0[p]; diff --git a/src/ML-IAP/mliap_model_linear.cpp b/src/ML-IAP/mliap_model_linear.cpp index 1323b95aa1..08654783d8 100644 --- a/src/ML-IAP/mliap_model_linear.cpp +++ b/src/ML-IAP/mliap_model_linear.cpp @@ -31,10 +31,6 @@ MLIAPModelLinear::MLIAPModelLinear(LAMMPS* lmp, char* coefffilename) : if (nparams > 0) ndescriptors = nparams - 1; } -/* ---------------------------------------------------------------------- */ - -MLIAPModelLinear::~MLIAPModelLinear() {} - /* ---------------------------------------------------------------------- get number of parameters ---------------------------------------------------------------------- */ diff --git a/src/ML-IAP/mliap_model_linear.h b/src/ML-IAP/mliap_model_linear.h index b485e58eff..d2abaec31e 100644 --- a/src/ML-IAP/mliap_model_linear.h +++ b/src/ML-IAP/mliap_model_linear.h @@ -21,7 +21,7 @@ namespace LAMMPS_NS { class MLIAPModelLinear : public MLIAPModelSimple { public: MLIAPModelLinear(LAMMPS *, char * = nullptr); - ~MLIAPModelLinear(); + ~MLIAPModelLinear() = default; virtual int get_nparams(); virtual int get_gamma_nnz(class MLIAPData *); virtual void compute_gradients(class MLIAPData *); diff --git a/src/ML-IAP/mliap_model_python.cpp b/src/ML-IAP/mliap_model_python.cpp index b89d17f289..878d234c69 100644 --- a/src/ML-IAP/mliap_model_python.cpp +++ b/src/ML-IAP/mliap_model_python.cpp @@ -62,7 +62,7 @@ MLIAPModelPython::MLIAPModelPython(LAMMPS *lmp, char *coefffilename) : // if LAMMPS_POTENTIALS environment variable is set, add it to PYTHONPATH as well const char *potentials_path = getenv("LAMMPS_POTENTIALS"); - if (potentials_path != NULL) { PyList_Append(py_path, PY_STRING_FROM_STRING(potentials_path)); } + if (potentials_path != nullptr) { PyList_Append(py_path, PY_STRING_FROM_STRING(potentials_path)); } PyGILState_Release(gstate); if (coefffilename) read_coeffs(coefffilename); diff --git a/src/ML-IAP/mliap_model_python.h b/src/ML-IAP/mliap_model_python.h index 8410b4dc4a..4243c67332 100644 --- a/src/ML-IAP/mliap_model_python.h +++ b/src/ML-IAP/mliap_model_python.h @@ -20,7 +20,7 @@ namespace LAMMPS_NS { class MLIAPModelPython : public MLIAPModel { public: - MLIAPModelPython(LAMMPS *, char * = NULL); + MLIAPModelPython(LAMMPS *, char * = nullptr); ~MLIAPModelPython(); virtual int get_nparams(); virtual int get_gamma_nnz(class MLIAPData *); diff --git a/src/ML-IAP/mliap_model_quadratic.cpp b/src/ML-IAP/mliap_model_quadratic.cpp index a881c7848c..10507adc91 100644 --- a/src/ML-IAP/mliap_model_quadratic.cpp +++ b/src/ML-IAP/mliap_model_quadratic.cpp @@ -34,10 +34,6 @@ MLIAPModelQuadratic::MLIAPModelQuadratic(LAMMPS* lmp, char* coefffilename) : nonlinearflag = 1; } -/* ---------------------------------------------------------------------- */ - -MLIAPModelQuadratic::~MLIAPModelQuadratic() {} - /* ---------------------------------------------------------------------- get number of parameters ---------------------------------------------------------------------- */ diff --git a/src/ML-IAP/mliap_model_quadratic.h b/src/ML-IAP/mliap_model_quadratic.h index c183178339..74234066c8 100644 --- a/src/ML-IAP/mliap_model_quadratic.h +++ b/src/ML-IAP/mliap_model_quadratic.h @@ -21,7 +21,7 @@ namespace LAMMPS_NS { class MLIAPModelQuadratic : public MLIAPModelSimple { public: MLIAPModelQuadratic(LAMMPS *, char * = nullptr); - ~MLIAPModelQuadratic(); + ~MLIAPModelQuadratic() = default; virtual int get_nparams(); virtual int get_gamma_nnz(class MLIAPData *); virtual void compute_gradients(class MLIAPData *); diff --git a/src/ML-RANN/pair_rann.cpp b/src/ML-RANN/pair_rann.cpp index 60ed776c41..fbc54e745f 100644 --- a/src/ML-RANN/pair_rann.cpp +++ b/src/ML-RANN/pair_rann.cpp @@ -432,7 +432,7 @@ void PairRANN::read_atom_types(std::vector line,char *filename,int int nwords = line.size(); if (nwords < 1) error->one(filename,linenum,"Incorrect syntax for atom types"); nelements = nwords; - line.push_back("all"); + line.emplace_back("all"); allocate(line); } diff --git a/src/ML-RANN/rann_fingerprint_bond.cpp b/src/ML-RANN/rann_fingerprint_bond.cpp index dd2a309415..48c73757e7 100644 --- a/src/ML-RANN/rann_fingerprint_bond.cpp +++ b/src/ML-RANN/rann_fingerprint_bond.cpp @@ -77,26 +77,26 @@ bool Fingerprint_bond::parse_values(std::string constant,std::vectorerrorf(FLERR,"Undefined value for bond power"); if (re!=0.0 && rc!=0.0 && alpha_k[0]!=-1 && dr!=0.0 && mlength!=0 && kmax!=0)return true; diff --git a/src/ML-RANN/rann_fingerprint_bondscreened.cpp b/src/ML-RANN/rann_fingerprint_bondscreened.cpp index 0e9d562f6e..6f65ca6454 100644 --- a/src/ML-RANN/rann_fingerprint_bondscreened.cpp +++ b/src/ML-RANN/rann_fingerprint_bondscreened.cpp @@ -78,26 +78,26 @@ bool Fingerprint_bondscreened::parse_values(std::string constant,std::vectorerrorf(FLERR,"Undefined value for bond power"); if (re!=0.0 && rc!=0.0 && alpha_k[0]!=-1 && dr!=0.0 && mlength!=0 && kmax!=0)return true; diff --git a/src/ML-RANN/rann_fingerprint_bondscreenedspin.cpp b/src/ML-RANN/rann_fingerprint_bondscreenedspin.cpp index 5fb81dc5b1..1dcf8872d2 100644 --- a/src/ML-RANN/rann_fingerprint_bondscreenedspin.cpp +++ b/src/ML-RANN/rann_fingerprint_bondscreenedspin.cpp @@ -79,26 +79,26 @@ bool Fingerprint_bondscreenedspin::parse_values(std::string constant,std::vector int nwords,l; nwords=line1.size(); if (constant.compare("re")==0) { - re = strtod(line1[0].c_str(),NULL); + re = strtod(line1[0].c_str(),nullptr); } else if (constant.compare("rc")==0) { - rc = strtod(line1[0].c_str(),NULL); + rc = strtod(line1[0].c_str(),nullptr); } else if (constant.compare("alphak")==0) { delete[] alpha_k; alpha_k = new double[nwords]; for (l=0;lerrorf(FLERR,"Undefined value for bond power"); if (re!=0.0 && rc!=0.0 && alpha_k[0]!=-1 && dr!=0.0 && mlength!=0 && kmax!=0)return true; diff --git a/src/ML-RANN/rann_fingerprint_bondspin.cpp b/src/ML-RANN/rann_fingerprint_bondspin.cpp index 77749fa3c7..76c4c016ac 100644 --- a/src/ML-RANN/rann_fingerprint_bondspin.cpp +++ b/src/ML-RANN/rann_fingerprint_bondspin.cpp @@ -78,26 +78,26 @@ bool Fingerprint_bondspin::parse_values(std::string constant,std::vectorerrorf(FLERR,"Undefined value for bond power"); if (re!=0.0 && rc!=0.0 && alpha_k[0]!=-1 && dr!=0.0 && mlength!=0 && kmax!=0)return true; diff --git a/src/ML-RANN/rann_fingerprint_radial.cpp b/src/ML-RANN/rann_fingerprint_radial.cpp index 29eeb07a65..f5b381f1f1 100644 --- a/src/ML-RANN/rann_fingerprint_radial.cpp +++ b/src/ML-RANN/rann_fingerprint_radial.cpp @@ -67,30 +67,30 @@ bool Fingerprint_radial::parse_values(std::string constant,std::vectorerrorf(FLERR,"Undefined value for radial power"); //code will run with default o=0 if o is never specified. All other values must be defined in potential file. - if (re!=0 && rc!=0 && alpha!=0 && dr!=0 && nmax!=0)return true; + if (re!=0 && rc!=0 && alpha!=nullptr && dr!=0 && nmax!=0)return true; return false; } diff --git a/src/ML-RANN/rann_fingerprint_radialscreened.cpp b/src/ML-RANN/rann_fingerprint_radialscreened.cpp index 9ac98d183c..b8af308389 100644 --- a/src/ML-RANN/rann_fingerprint_radialscreened.cpp +++ b/src/ML-RANN/rann_fingerprint_radialscreened.cpp @@ -68,30 +68,30 @@ bool Fingerprint_radialscreened::parse_values(std::string constant,std::vectorerrorf(FLERR,"Undefined value for radial power"); //code will run with default o=0 if o is never specified. All other values must be defined in potential file. - if (re!=0 && rc!=0 && alpha!=0 && dr!=0 && nmax!=0)return true; + if (re!=0 && rc!=0 && alpha!=nullptr && dr!=0 && nmax!=0)return true; return false; } diff --git a/src/ML-RANN/rann_fingerprint_radialscreenedspin.cpp b/src/ML-RANN/rann_fingerprint_radialscreenedspin.cpp index 3caeaa84da..de28610c8b 100644 --- a/src/ML-RANN/rann_fingerprint_radialscreenedspin.cpp +++ b/src/ML-RANN/rann_fingerprint_radialscreenedspin.cpp @@ -69,30 +69,30 @@ bool Fingerprint_radialscreenedspin::parse_values(std::string constant,std::vect int l; int nwords=line1.size(); if (constant.compare("re")==0) { - re = strtod(line1[0].c_str(),NULL); + re = strtod(line1[0].c_str(),nullptr); } else if (constant.compare("rc")==0) { - rc = strtod(line1[0].c_str(),NULL); + rc = strtod(line1[0].c_str(),nullptr); } else if (constant.compare("alpha")==0) { delete[] alpha; alpha = new double[nwords]; for (l=0;lerrorf(FLERR,"Undefined value for radial power"); //code will run with default o=0 if o is never specified. All other values must be defined in potential file. - if (re!=0 && rc!=0 && alpha!=0 && dr!=0 && nmax!=0)return true; + if (re!=0 && rc!=0 && alpha!=nullptr && dr!=0 && nmax!=0)return true; return false; } diff --git a/src/ML-RANN/rann_fingerprint_radialspin.cpp b/src/ML-RANN/rann_fingerprint_radialspin.cpp index b48fad80d0..e7a4ef449e 100644 --- a/src/ML-RANN/rann_fingerprint_radialspin.cpp +++ b/src/ML-RANN/rann_fingerprint_radialspin.cpp @@ -68,30 +68,30 @@ bool Fingerprint_radialspin::parse_values(std::string constant,std::vectorerrorf(FLERR,"Undefined value for radial power"); //code will run with default o=0 if o is never specified. All other values must be defined in potential file. - if (re!=0 && rc!=0 && alpha!=0 && dr!=0 && nmax!=0)return true; + if (re!=0 && rc!=0 && alpha!=nullptr && dr!=0 && nmax!=0)return true; return false; } diff --git a/src/MOLECULE/dihedral_table.cpp b/src/MOLECULE/dihedral_table.cpp index c701c4564f..a91324dd98 100644 --- a/src/MOLECULE/dihedral_table.cpp +++ b/src/MOLECULE/dihedral_table.cpp @@ -86,7 +86,7 @@ static int solve_cyc_tridiag( const double diag[], size_t d_stride, double * c = (double *) malloc (N * sizeof (double)); double * z = (double *) malloc (N * sizeof (double)); - if (delta == 0 || gamma == 0 || alpha == 0 || c == 0 || z == 0) { + if (delta == nullptr || gamma == nullptr || alpha == nullptr || c == nullptr || z == nullptr) { if (warn) fprintf(stderr,"Internal Cyclic Spline Error: failed to allocate working space\n"); diff --git a/src/MOLFILE/molfile_interface.cpp b/src/MOLFILE/molfile_interface.cpp index 808bc16ab4..9ce3822082 100644 --- a/src/MOLFILE/molfile_interface.cpp +++ b/src/MOLFILE/molfile_interface.cpp @@ -35,9 +35,9 @@ #define DEBUG 0 extern "C" { - typedef int (*initfunc)(void); + typedef int (*initfunc)(); typedef int (*regfunc)(void *, vmdplugin_register_cb); - typedef int (*finifunc)(void); + typedef int (*finifunc)(); typedef struct { void *p; diff --git a/src/MOLFILE/molfile_interface.h b/src/MOLFILE/molfile_interface.h index 4be74d5cbe..151618286b 100644 --- a/src/MOLFILE/molfile_interface.h +++ b/src/MOLFILE/molfile_interface.h @@ -113,7 +113,7 @@ class MolfileInterface { // inquire on interface status // true if file stream is active. - bool is_open() const { return (_ptr != 0); }; + bool is_open() const { return (_ptr != nullptr); }; // true if file format requires or provides atom properties bool has_props() const { return (_mode & (M_RSTRUCT | M_WSTRUCT)) != 0; }; // true if file format can read or write velocities diff --git a/src/Makefile b/src/Makefile index 7f02c1e84b..2d651c4986 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2,6 +2,7 @@ SHELL = /bin/bash PYTHON = python +DYN_LIB = -ldl #.IGNORE: @@ -400,14 +401,14 @@ ifeq ($(mode),static) @cd $(objdir); \ $(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" "SHFLAGS =" \ "LMPLIB = $(ARLIB)" "ARLIB = $(ARLIB)" "SHLIB = $(SHLIB)" \ - "LMPLINK = $(LMPLINK)" "EXE = ../$(EXE)" ../$(EXE) + "LMPLINK = $(LMPLINK)" "DYN_LIB = $(DYN_LIB)" "EXE = ../$(EXE)" ../$(EXE) @ln -s $(ARLIB) $(ARLINK) endif ifeq ($(mode),shared) @cd $(objdir); \ $(MAKE) $(MFLAGS) "OBJ = $(OBJLIB)" "INC = $(INC)" \ "LMPLIB = $(SHLIB)" "ARLIB = $(ARLIB)" "SHLIB = $(SHLIB)" \ - "LMPLINK = $(LMPLINK)" "EXE = ../$(EXE)" ../$(EXE) + "LMPLINK = $(LMPLINK)" "DYN_LIB = $(DYN_LIB)" "EXE = ../$(EXE)" ../$(EXE) @ln -s $(SHLIB) $(SHLINK) endif # backward compatibility diff --git a/src/OPENMP/fix_qeq_reaxff_omp.cpp b/src/OPENMP/fix_qeq_reaxff_omp.cpp index 89b75bfe7a..0b0ba589cf 100644 --- a/src/OPENMP/fix_qeq_reaxff_omp.cpp +++ b/src/OPENMP/fix_qeq_reaxff_omp.cpp @@ -232,12 +232,15 @@ void FixQEqReaxFFOMP::compute_H() void FixQEqReaxFFOMP::init_storage() { + if (efield) get_chi_field(); + #if defined(_OPENMP) #pragma omp parallel for schedule(static) #endif for (int i = 0; i < NN; i++) { Hdia_inv[i] = 1. / eta[atom->type[i]]; b_s[i] = -chi[atom->type[i]]; + if (efield) b_s[i] -= chi_field[i]; b_t[i] = -1.0; b_prc[i] = 0; b_prm[i] = 0; @@ -274,6 +277,8 @@ void FixQEqReaxFFOMP::pre_force(int /* vflag */) if (n > n_cap*DANGER_ZONE || m_fill > m_cap*DANGER_ZONE) reallocate_matrix(); + if (efield) get_chi_field(); + init_matvec(); if (dual_enabled) { @@ -310,6 +315,7 @@ void FixQEqReaxFFOMP::init_matvec() /* init pre-conditioner for H and init solution vectors */ Hdia_inv[i] = 1. / eta[atom->type[i]]; b_s[i] = -chi[atom->type[i]]; + if (efield) b_s[i] -= chi_field[i]; b_t[i] = -1.0; // Predictor Step @@ -338,6 +344,7 @@ void FixQEqReaxFFOMP::init_matvec() /* init pre-conditioner for H and init solution vectors */ Hdia_inv[i] = 1. / eta[atom->type[i]]; b_s[i] = -chi[atom->type[i]]; + if (efield) b_s[i] -= chi_field[i]; b_t[i] = -1.0; /* linear extrapolation for s & t from previous solutions */ diff --git a/src/OPENMP/pair_buck_long_coul_long_omp.cpp b/src/OPENMP/pair_buck_long_coul_long_omp.cpp index 4fd746b9a4..372c993a8d 100644 --- a/src/OPENMP/pair_buck_long_coul_long_omp.cpp +++ b/src/OPENMP/pair_buck_long_coul_long_omp.cpp @@ -332,7 +332,7 @@ void PairBuckLongCoulLongOMP::compute_inner() loop_setup_thr(ifrom, ito, tid, inum, nthreads); ThrData *thr = fix->get_thr(tid); thr->timer(Timer::START); - ev_setup_thr(0, 0, nall, 0, 0, nullptr, thr); + ev_setup_thr(0, 0, nall, nullptr, nullptr, nullptr, thr); eval_inner(ifrom, ito, thr); thr->timer(Timer::PAIR); @@ -357,7 +357,7 @@ void PairBuckLongCoulLongOMP::compute_middle() loop_setup_thr(ifrom, ito, tid, inum, nthreads); ThrData *thr = fix->get_thr(tid); thr->timer(Timer::START); - ev_setup_thr(0, 0, nall, 0, 0, nullptr, thr); + ev_setup_thr(0, 0, nall, nullptr, nullptr, nullptr, thr); eval_middle(ifrom, ito, thr); thr->timer(Timer::PAIR); @@ -810,7 +810,7 @@ void PairBuckLongCoulLongOMP::eval_inner(int iifrom, int iito, ThrData * const t const double qqrd2e = force->qqrd2e; const double *x0 = x[0]; - double *f0 = f[0], *fi = 0; + double *f0 = f[0], *fi = nullptr; int *ilist = list->ilist_inner; @@ -903,7 +903,7 @@ void PairBuckLongCoulLongOMP::eval_middle(int iifrom, int iito, ThrData * const const double qqrd2e = force->qqrd2e; const double *x0 = x[0]; - double *f0 = f[0], *fi = 0; + double *f0 = f[0], *fi = nullptr; int *ilist = list->ilist_middle; diff --git a/src/OPENMP/pair_lj_cut_coul_cut_dielectric_omp.cpp b/src/OPENMP/pair_lj_cut_coul_cut_dielectric_omp.cpp index 43e2fb15e4..6d013c5f7c 100644 --- a/src/OPENMP/pair_lj_cut_coul_cut_dielectric_omp.cpp +++ b/src/OPENMP/pair_lj_cut_coul_cut_dielectric_omp.cpp @@ -41,10 +41,6 @@ PairLJCutCoulCutDielectricOMP::PairLJCutCoulCutDielectricOMP(LAMMPS *lmp) : /* ---------------------------------------------------------------------- */ -PairLJCutCoulCutDielectricOMP::~PairLJCutCoulCutDielectricOMP() {} - -/* ---------------------------------------------------------------------- */ - void PairLJCutCoulCutDielectricOMP::compute(int eflag, int vflag) { ev_init(eflag, vflag); diff --git a/src/OPENMP/pair_lj_cut_coul_cut_dielectric_omp.h b/src/OPENMP/pair_lj_cut_coul_cut_dielectric_omp.h index 093d0a8a42..5f28aa4d17 100644 --- a/src/OPENMP/pair_lj_cut_coul_cut_dielectric_omp.h +++ b/src/OPENMP/pair_lj_cut_coul_cut_dielectric_omp.h @@ -28,7 +28,7 @@ namespace LAMMPS_NS { class PairLJCutCoulCutDielectricOMP : public PairLJCutCoulCutDielectric, public ThrOMP { public: PairLJCutCoulCutDielectricOMP(class LAMMPS *); - virtual ~PairLJCutCoulCutDielectricOMP(); + virtual ~PairLJCutCoulCutDielectricOMP() = default; virtual void compute(int, int); protected: diff --git a/src/OPENMP/pair_lj_cut_coul_long_dielectric_omp.cpp b/src/OPENMP/pair_lj_cut_coul_long_dielectric_omp.cpp index 6aa79e18a5..c076501d68 100644 --- a/src/OPENMP/pair_lj_cut_coul_long_dielectric_omp.cpp +++ b/src/OPENMP/pair_lj_cut_coul_long_dielectric_omp.cpp @@ -47,10 +47,6 @@ PairLJCutCoulLongDielectricOMP::PairLJCutCoulLongDielectricOMP(LAMMPS *lmp) : /* ---------------------------------------------------------------------- */ -PairLJCutCoulLongDielectricOMP::~PairLJCutCoulLongDielectricOMP() {} - -/* ---------------------------------------------------------------------- */ - void PairLJCutCoulLongDielectricOMP::compute(int eflag, int vflag) { ev_init(eflag, vflag); diff --git a/src/OPENMP/pair_lj_cut_coul_long_dielectric_omp.h b/src/OPENMP/pair_lj_cut_coul_long_dielectric_omp.h index 0d13c4a92e..f70809524f 100644 --- a/src/OPENMP/pair_lj_cut_coul_long_dielectric_omp.h +++ b/src/OPENMP/pair_lj_cut_coul_long_dielectric_omp.h @@ -29,7 +29,7 @@ class PairLJCutCoulLongDielectricOMP : public PairLJCutCoulLongDielectric, publi public: PairLJCutCoulLongDielectricOMP(class LAMMPS *); - virtual ~PairLJCutCoulLongDielectricOMP(); + virtual ~PairLJCutCoulLongDielectricOMP() = default; virtual void compute(int, int); protected: diff --git a/src/OPENMP/pair_lj_long_coul_long_omp.cpp b/src/OPENMP/pair_lj_long_coul_long_omp.cpp index a2758c545c..e0707a87e0 100644 --- a/src/OPENMP/pair_lj_long_coul_long_omp.cpp +++ b/src/OPENMP/pair_lj_long_coul_long_omp.cpp @@ -331,7 +331,7 @@ void PairLJLongCoulLongOMP::compute_inner() loop_setup_thr(ifrom, ito, tid, inum, nthreads); ThrData *thr = fix->get_thr(tid); thr->timer(Timer::START); - ev_setup_thr(0, 0, nall, 0, 0, nullptr, thr); + ev_setup_thr(0, 0, nall, nullptr, nullptr, nullptr, thr); eval_inner(ifrom, ito, thr); thr->timer(Timer::PAIR); @@ -356,7 +356,7 @@ void PairLJLongCoulLongOMP::compute_middle() loop_setup_thr(ifrom, ito, tid, inum, nthreads); ThrData *thr = fix->get_thr(tid); thr->timer(Timer::START); - ev_setup_thr(0, 0, nall, 0, 0, nullptr, thr); + ev_setup_thr(0, 0, nall, nullptr, nullptr, nullptr, thr); eval_middle(ifrom, ito, thr); thr->timer(Timer::PAIR); @@ -805,7 +805,7 @@ void PairLJLongCoulLongOMP::eval_inner(int iifrom, int iito, ThrData * const thr const double qqrd2e = force->qqrd2e; const double *x0 = x[0]; - double *f0 = f[0], *fi = 0; + double *f0 = f[0], *fi = nullptr; int *ilist = list->ilist_inner; @@ -896,7 +896,7 @@ void PairLJLongCoulLongOMP::eval_middle(int iifrom, int iito, ThrData * const th const double qqrd2e = force->qqrd2e; const double *x0 = x[0]; - double *f0 = f[0], *fi = 0; + double *f0 = f[0], *fi = nullptr; int *ilist = list->ilist_middle; diff --git a/src/OPENMP/pair_lubricate_omp.cpp b/src/OPENMP/pair_lubricate_omp.cpp index 0233ea5a06..f2df1b3ee8 100644 --- a/src/OPENMP/pair_lubricate_omp.cpp +++ b/src/OPENMP/pair_lubricate_omp.cpp @@ -47,11 +47,6 @@ PairLubricateOMP::PairLubricateOMP(LAMMPS *lmp) : /* ---------------------------------------------------------------------- */ -PairLubricateOMP::~PairLubricateOMP() -{} - -/* ---------------------------------------------------------------------- */ - void PairLubricateOMP::compute(int eflag, int vflag) { ev_init(eflag,vflag); diff --git a/src/OPENMP/pair_lubricate_omp.h b/src/OPENMP/pair_lubricate_omp.h index 27dbe73dd8..1f5fc340bb 100644 --- a/src/OPENMP/pair_lubricate_omp.h +++ b/src/OPENMP/pair_lubricate_omp.h @@ -33,7 +33,7 @@ class PairLubricateOMP : public PairLubricate, public ThrOMP { public: PairLubricateOMP(class LAMMPS *); - virtual ~PairLubricateOMP(); + virtual ~PairLubricateOMP() = default; virtual void compute(int, int); virtual double memory_usage(); diff --git a/src/OPENMP/pair_lubricate_poly_omp.cpp b/src/OPENMP/pair_lubricate_poly_omp.cpp index d3ad6b926c..669b964c73 100644 --- a/src/OPENMP/pair_lubricate_poly_omp.cpp +++ b/src/OPENMP/pair_lubricate_poly_omp.cpp @@ -47,11 +47,6 @@ PairLubricatePolyOMP::PairLubricatePolyOMP(LAMMPS *lmp) : /* ---------------------------------------------------------------------- */ -PairLubricatePolyOMP::~PairLubricatePolyOMP() -{} - -/* ---------------------------------------------------------------------- */ - void PairLubricatePolyOMP::compute(int eflag, int vflag) { ev_init(eflag,vflag); diff --git a/src/OPENMP/pair_lubricate_poly_omp.h b/src/OPENMP/pair_lubricate_poly_omp.h index 7fdfed6c62..5a36d232b8 100644 --- a/src/OPENMP/pair_lubricate_poly_omp.h +++ b/src/OPENMP/pair_lubricate_poly_omp.h @@ -33,7 +33,7 @@ class PairLubricatePolyOMP : public PairLubricatePoly, public ThrOMP { public: PairLubricatePolyOMP(class LAMMPS *); - virtual ~PairLubricatePolyOMP(); + virtual ~PairLubricatePolyOMP() = default; virtual void compute(int, int); virtual double memory_usage(); diff --git a/src/OPENMP/pair_reaxff_omp.cpp b/src/OPENMP/pair_reaxff_omp.cpp index 6cf3e90575..d39672f09b 100644 --- a/src/OPENMP/pair_reaxff_omp.cpp +++ b/src/OPENMP/pair_reaxff_omp.cpp @@ -101,13 +101,17 @@ PairReaxFFOMP::~PairReaxFFOMP() void PairReaxFFOMP::init_style() { - if (!atom->q_flag) - error->all(FLERR,"Pair style reaxff/omp requires atom attribute q"); - bool have_qeq = ((modify->find_fix_by_style("^qeq/reax") != -1) - || (modify->find_fix_by_style("^qeq/shielded") != -1)); + || (modify->find_fix_by_style("^qeq/shielded") != -1) + || (modify->find_fix_by_style("^acks2/reax") != -1)); if (!have_qeq && qeqflag == 1) - error->all(FLERR,"Pair reaxff/omp requires use of fix qeq/reaxff or qeq/shielded"); + error->all(FLERR,"Pair reaxff/omp requires use of fix qeq/reaxff or qeq/shielded" + " or fix acks2/reaxff"); + + int have_acks2 = (modify->find_fix_by_style("^acks2/reax") != -1); + api->system->acks2_flag = have_acks2; + if (api->system->acks2_flag) + error->all(FLERR,"Cannot (yet) use ACKS2 with OPENMP ReaxFF"); api->system->n = atom->nlocal; // my atoms api->system->N = atom->nlocal + atom->nghost; // mine + ghosts diff --git a/src/OPENMP/pair_tersoff_table_omp.cpp b/src/OPENMP/pair_tersoff_table_omp.cpp index 5367a3d043..94f9e72c3d 100644 --- a/src/OPENMP/pair_tersoff_table_omp.cpp +++ b/src/OPENMP/pair_tersoff_table_omp.cpp @@ -502,7 +502,7 @@ void PairTersoffTableOMP::eval(int iifrom, int iito, ThrData * const thr) } // loop on I } -void PairTersoffTableOMP::deallocatePreLoops(void) +void PairTersoffTableOMP::deallocatePreLoops() { memory->destroy(thrGtetaFunction); memory->destroy(thrGtetaFunctionDerived); @@ -510,7 +510,7 @@ void PairTersoffTableOMP::deallocatePreLoops(void) memory->destroy(thrCutoffFunctionDerived); } -void PairTersoffTableOMP::allocatePreLoops(void) +void PairTersoffTableOMP::allocatePreLoops() { const int nthreads = comm->nthreads; memory->create(thrGtetaFunction,nthreads,leadingDimensionInteractionList,leadingDimensionInteractionList,"tersofftable:thrGtetaFunction"); diff --git a/src/OPENMP/pair_tersoff_table_omp.h b/src/OPENMP/pair_tersoff_table_omp.h index ce5260f77f..c686087f11 100644 --- a/src/OPENMP/pair_tersoff_table_omp.h +++ b/src/OPENMP/pair_tersoff_table_omp.h @@ -37,8 +37,8 @@ class PairTersoffTableOMP : public PairTersoffTable, public ThrOMP { double ***thrGtetaFunction, ***thrGtetaFunctionDerived; double **thrCutoffFunction, **thrCutoffFunctionDerived; - void allocatePreLoops(void); - void deallocatePreLoops(void); + void allocatePreLoops(); + void deallocatePreLoops(); private: template void eval(int ifrom, int ito, ThrData *const thr); diff --git a/src/OPENMP/reaxff_nonbonded_omp.cpp b/src/OPENMP/reaxff_nonbonded_omp.cpp index a57542f550..a2888e1993 100644 --- a/src/OPENMP/reaxff_nonbonded_omp.cpp +++ b/src/OPENMP/reaxff_nonbonded_omp.cpp @@ -221,7 +221,7 @@ namespace ReaxFF { data->my_en.e_vdW = total_EvdW; data->my_en.e_ele = total_Eele; - Compute_Polarization_Energy(system, data); + Compute_Polarization_Energy(system, data, workspace); } /* ---------------------------------------------------------------------- */ @@ -343,6 +343,6 @@ namespace ReaxFF { data->my_en.e_vdW = total_EvdW; data->my_en.e_ele = total_Eele; - Compute_Polarization_Energy(system, data); + Compute_Polarization_Energy(system, data, workspace); } } diff --git a/src/OPENMP/thr_data.cpp b/src/OPENMP/thr_data.cpp index 5ff0263eea..f85b2b685f 100644 --- a/src/OPENMP/thr_data.cpp +++ b/src/OPENMP/thr_data.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ------------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -17,8 +16,8 @@ per-thread data management for LAMMPS ------------------------------------------------------------------------- */ -#include #include +#include #include "thr_data.h" @@ -29,21 +28,20 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -ThrData::ThrData(int tid, Timer *t) - : _f(0),_torque(0),_erforce(0),_de(0),_drho(0),_mu(0),_lambda(0),_rhoB(0), - _D_values(0),_rho(0),_fp(0),_rho1d(0),_drho1d(0),_rho1d_6(0),_drho1d_6(0), - _tid(tid), _timer(t) +ThrData::ThrData(int tid, Timer *t) : + _f(nullptr), _torque(nullptr), _erforce(nullptr), _de(nullptr), _drho(nullptr), _mu(nullptr), + _lambda(nullptr), _rhoB(nullptr), _D_values(nullptr), _rho(nullptr), _fp(nullptr), + _rho1d(nullptr), _drho1d(nullptr), _rho1d_6(nullptr), _drho1d_6(nullptr), _tid(tid), _timer(t) { _timer_active = 0; } - /* ---------------------------------------------------------------------- */ void ThrData::check_tid(int tid) { if (tid != _tid) - fprintf(stderr,"WARNING: external and internal tid mismatch %d != %d\n",tid,_tid); + fprintf(stderr, "WARNING: external and internal tid mismatch %d != %d\n", tid, _tid); } /* ---------------------------------------------------------------------- */ @@ -53,9 +51,7 @@ void ThrData::_stamp(enum Timer::ttype flag) // do nothing until it gets set to 0 in ::setup() if (_timer_active < 0) return; - if (flag == Timer::START) { - _timer_active = 1; - } + if (flag == Timer::START) { _timer_active = 1; } if (_timer_active) _timer->stamp(flag); } @@ -72,44 +68,49 @@ double ThrData::get_time(enum Timer::ttype flag) /* ---------------------------------------------------------------------- */ -void ThrData::init_force(int nall, double **f, double **torque, - double *erforce, double *de, double *drho) +void ThrData::init_force(int nall, double **f, double **torque, double *erforce, double *de, + double *drho) { - eng_vdwl=eng_coul=eng_bond=eng_angle=eng_dihed=eng_imprp=eng_kspce=0.0; - memset(virial_pair,0,6*sizeof(double)); - memset(virial_bond,0,6*sizeof(double)); - memset(virial_angle,0,6*sizeof(double)); - memset(virial_dihed,0,6*sizeof(double)); - memset(virial_imprp,0,6*sizeof(double)); - memset(virial_kspce,0,6*sizeof(double)); + eng_vdwl = eng_coul = eng_bond = eng_angle = eng_dihed = eng_imprp = eng_kspce = 0.0; + memset(virial_pair, 0, 6 * sizeof(double)); + memset(virial_bond, 0, 6 * sizeof(double)); + memset(virial_angle, 0, 6 * sizeof(double)); + memset(virial_dihed, 0, 6 * sizeof(double)); + memset(virial_imprp, 0, 6 * sizeof(double)); + memset(virial_kspce, 0, 6 * sizeof(double)); - eatom_pair=eatom_bond=eatom_angle=eatom_dihed=eatom_imprp=eatom_kspce=nullptr; - vatom_pair=vatom_bond=vatom_angle=vatom_dihed=vatom_imprp=vatom_kspce=nullptr; + eatom_pair = eatom_bond = eatom_angle = eatom_dihed = eatom_imprp = eatom_kspce = nullptr; + vatom_pair = vatom_bond = vatom_angle = vatom_dihed = vatom_imprp = vatom_kspce = nullptr; if (nall >= 0 && f) { - _f = f + _tid*nall; - memset(&(_f[0][0]),0,nall*3*sizeof(double)); - } else _f = nullptr; + _f = f + _tid * nall; + memset(&(_f[0][0]), 0, nall * 3 * sizeof(double)); + } else + _f = nullptr; if (nall >= 0 && torque) { - _torque = torque + _tid*nall; - memset(&(_torque[0][0]),0,nall*3*sizeof(double)); - } else _torque = nullptr; + _torque = torque + _tid * nall; + memset(&(_torque[0][0]), 0, nall * 3 * sizeof(double)); + } else + _torque = nullptr; if (nall >= 0 && erforce) { - _erforce = erforce + _tid*nall; - memset(&(_erforce[0]),0,nall*sizeof(double)); - } else _erforce = nullptr; + _erforce = erforce + _tid * nall; + memset(&(_erforce[0]), 0, nall * sizeof(double)); + } else + _erforce = nullptr; if (nall >= 0 && de) { - _de = de + _tid*nall; - memset(&(_de[0]),0,nall*sizeof(double)); - } else _de = nullptr; + _de = de + _tid * nall; + memset(&(_de[0]), 0, nall * sizeof(double)); + } else + _de = nullptr; if (nall >= 0 && drho) { - _drho = drho + _tid*nall; - memset(&(_drho[0]),0,nall*sizeof(double)); - } else _drho = nullptr; + _drho = drho + _tid * nall; + memset(&(_drho[0]), 0, nall * sizeof(double)); + } else + _drho = nullptr; } /* ---------------------------------------------------------------------- @@ -119,8 +120,8 @@ void ThrData::init_force(int nall, double **f, double **torque, void ThrData::init_eam(int nall, double *rho) { if (nall >= 0 && rho) { - _rho = rho + _tid*nall; - memset(_rho, 0, nall*sizeof(double)); + _rho = rho + _tid * nall; + memset(_rho, 0, nall * sizeof(double)); } } @@ -131,10 +132,10 @@ void ThrData::init_adp(int nall, double *rho, double **mu, double **lambda) init_eam(nall, rho); if (nall >= 0 && mu && lambda) { - _mu = mu + _tid*nall; - _lambda = lambda + _tid*nall; - memset(&(_mu[0][0]), 0, nall*3*sizeof(double)); - memset(&(_lambda[0][0]), 0, nall*6*sizeof(double)); + _mu = mu + _tid * nall; + _lambda = lambda + _tid * nall; + memset(&(_mu[0][0]), 0, nall * 3 * sizeof(double)); + memset(&(_lambda[0][0]), 0, nall * 6 * sizeof(double)); } } @@ -145,8 +146,8 @@ void ThrData::init_eim(int nall, double *rho, double *fp) init_eam(nall, rho); if (nall >= 0 && fp) { - _fp = fp + _tid*nall; - memset(_fp,0,nall*sizeof(double)); + _fp = fp + _tid * nall; + memset(_fp, 0, nall * sizeof(double)); } } @@ -166,18 +167,18 @@ void ThrData::init_pppm(int order, Memory *memory) if (order > 0) { rho1d = static_cast(_rho1d); drho1d = static_cast(_drho1d); - if (rho1d) memory->destroy2d_offset(rho1d,-order/2); - if (drho1d) memory->destroy2d_offset(drho1d,-order/2); - memory->create2d_offset(rho1d,3,-order/2,order/2,"thr_data:rho1d"); - memory->create2d_offset(drho1d,3,-order/2,order/2,"thr_data:drho1d"); + if (rho1d) memory->destroy2d_offset(rho1d, -order / 2); + if (drho1d) memory->destroy2d_offset(drho1d, -order / 2); + memory->create2d_offset(rho1d, 3, -order / 2, order / 2, "thr_data:rho1d"); + memory->create2d_offset(drho1d, 3, -order / 2, order / 2, "thr_data:drho1d"); _rho1d = static_cast(rho1d); _drho1d = static_cast(drho1d); } else { order = -order; rho1d = static_cast(_rho1d); drho1d = static_cast(_drho1d); - if (rho1d) memory->destroy2d_offset(rho1d,-order/2); - if (drho1d) memory->destroy2d_offset(drho1d,-order/2); + if (rho1d) memory->destroy2d_offset(rho1d, -order / 2); + if (drho1d) memory->destroy2d_offset(drho1d, -order / 2); _rho1d = nullptr; _drho1d = nullptr; } @@ -199,18 +200,18 @@ void ThrData::init_pppm_disp(int order_6, Memory *memory) if (order_6 > 0) { rho1d_6 = static_cast(_rho1d_6); drho1d_6 = static_cast(_drho1d_6); - if (rho1d_6) memory->destroy2d_offset(rho1d_6,-order_6/2); - if (drho1d_6) memory->destroy2d_offset(drho1d_6,-order_6/2); - memory->create2d_offset(rho1d_6,3,-order_6/2,order_6/2,"thr_data:rho1d_6"); - memory->create2d_offset(drho1d_6,3,-order_6/2,order_6/2,"thr_data:drho1d_6"); + if (rho1d_6) memory->destroy2d_offset(rho1d_6, -order_6 / 2); + if (drho1d_6) memory->destroy2d_offset(drho1d_6, -order_6 / 2); + memory->create2d_offset(rho1d_6, 3, -order_6 / 2, order_6 / 2, "thr_data:rho1d_6"); + memory->create2d_offset(drho1d_6, 3, -order_6 / 2, order_6 / 2, "thr_data:drho1d_6"); _rho1d_6 = static_cast(rho1d_6); _drho1d_6 = static_cast(drho1d_6); } else { order_6 = -order_6; rho1d_6 = static_cast(_rho1d_6); drho1d_6 = static_cast(_drho1d_6); - if (rho1d_6) memory->destroy2d_offset(rho1d_6,-order_6/2); - if (drho1d_6) memory->destroy2d_offset(drho1d_6,-order_6/2); + if (rho1d_6) memory->destroy2d_offset(rho1d_6, -order_6 / 2); + if (drho1d_6) memory->destroy2d_offset(drho1d_6, -order_6 / 2); } } @@ -227,35 +228,35 @@ void ThrData::virial_fdotr_compute(double **x, int nlocal, int nghost, int nfirs if (nfirst < 0) { int nall = nlocal + nghost; for (int i = 0; i < nall; i++) { - virial_pair[0] += _f[i][0]*x[i][0]; - virial_pair[1] += _f[i][1]*x[i][1]; - virial_pair[2] += _f[i][2]*x[i][2]; - virial_pair[3] += _f[i][1]*x[i][0]; - virial_pair[4] += _f[i][2]*x[i][0]; - virial_pair[5] += _f[i][2]*x[i][1]; + virial_pair[0] += _f[i][0] * x[i][0]; + virial_pair[1] += _f[i][1] * x[i][1]; + virial_pair[2] += _f[i][2] * x[i][2]; + virial_pair[3] += _f[i][1] * x[i][0]; + virial_pair[4] += _f[i][2] * x[i][0]; + virial_pair[5] += _f[i][2] * x[i][1]; } - // neighbor includegroup flag is set - // sum over force on initial nfirst particles and ghosts + // neighbor includegroup flag is set + // sum over force on initial nfirst particles and ghosts } else { int nall = nfirst; for (int i = 0; i < nall; i++) { - virial_pair[0] += _f[i][0]*x[i][0]; - virial_pair[1] += _f[i][1]*x[i][1]; - virial_pair[2] += _f[i][2]*x[i][2]; - virial_pair[3] += _f[i][1]*x[i][0]; - virial_pair[4] += _f[i][2]*x[i][0]; - virial_pair[5] += _f[i][2]*x[i][1]; + virial_pair[0] += _f[i][0] * x[i][0]; + virial_pair[1] += _f[i][1] * x[i][1]; + virial_pair[2] += _f[i][2] * x[i][2]; + virial_pair[3] += _f[i][1] * x[i][0]; + virial_pair[4] += _f[i][2] * x[i][0]; + virial_pair[5] += _f[i][2] * x[i][1]; } nall = nlocal + nghost; for (int i = nlocal; i < nall; i++) { - virial_pair[0] += _f[i][0]*x[i][0]; - virial_pair[1] += _f[i][1]*x[i][1]; - virial_pair[2] += _f[i][2]*x[i][2]; - virial_pair[3] += _f[i][1]*x[i][0]; - virial_pair[4] += _f[i][2]*x[i][0]; - virial_pair[5] += _f[i][2]*x[i][1]; + virial_pair[0] += _f[i][0] * x[i][0]; + virial_pair[1] += _f[i][1] * x[i][1]; + virial_pair[2] += _f[i][2] * x[i][2]; + virial_pair[3] += _f[i][1] * x[i][0]; + virial_pair[4] += _f[i][2] * x[i][0]; + virial_pair[5] += _f[i][2] * x[i][1]; } } } @@ -264,9 +265,9 @@ void ThrData::virial_fdotr_compute(double **x, int nlocal, int nghost, int nfirs double ThrData::memory_usage() { - double bytes = (7 + 6*6) * sizeof(double); - bytes += (double)2 * sizeof(double*); - bytes += (double)4 * sizeof(int); + double bytes = (7 + 6 * 6) * sizeof(double); + bytes += (double) 2 * sizeof(double *); + bytes += (double) 4 * sizeof(int); return bytes; } @@ -287,10 +288,10 @@ void LAMMPS_NS::data_reduce_thr(double *dall, int nall, int nthreads, int ndim, if (nthreads == 1) return; #pragma omp barrier { - const int nvals = ndim*nall; - const int idelta = nvals/nthreads + 1; - const int ifrom = tid*idelta; - const int ito = ((ifrom + idelta) > nvals) ? nvals : (ifrom + idelta); + const int nvals = ndim * nall; + const int idelta = nvals / nthreads + 1; + const int ifrom = tid * idelta; + const int ito = ((ifrom + idelta) > nvals) ? nvals : (ifrom + idelta); #if defined(USER_OMP_NO_UNROLL) if (ifrom < nvals) { @@ -298,8 +299,8 @@ void LAMMPS_NS::data_reduce_thr(double *dall, int nall, int nthreads, int ndim, for (m = ifrom; m < ito; ++m) { for (int n = 1; n < nthreads; ++n) { - dall[m] += dall[n*nvals + m]; - dall[n*nvals + m] = 0.0; + dall[m] += dall[n * nvals + m]; + dall[n * nvals + m] = 0.0; } } } @@ -313,47 +314,47 @@ void LAMMPS_NS::data_reduce_thr(double *dall, int nall, int nthreads, int ndim, // contiguous values in the array at a time // -- modify this code based on the size of the cache line double t0, t1, t2, t3, t4, t5, t6, t7; - for (m = ifrom; m < (ito-7); m+=8) { - t0 = dall[m ]; - t1 = dall[m+1]; - t2 = dall[m+2]; - t3 = dall[m+3]; - t4 = dall[m+4]; - t5 = dall[m+5]; - t6 = dall[m+6]; - t7 = dall[m+7]; + for (m = ifrom; m < (ito - 7); m += 8) { + t0 = dall[m]; + t1 = dall[m + 1]; + t2 = dall[m + 2]; + t3 = dall[m + 3]; + t4 = dall[m + 4]; + t5 = dall[m + 5]; + t6 = dall[m + 6]; + t7 = dall[m + 7]; for (int n = 1; n < nthreads; ++n) { - t0 += dall[n*nvals + m ]; - t1 += dall[n*nvals + m+1]; - t2 += dall[n*nvals + m+2]; - t3 += dall[n*nvals + m+3]; - t4 += dall[n*nvals + m+4]; - t5 += dall[n*nvals + m+5]; - t6 += dall[n*nvals + m+6]; - t7 += dall[n*nvals + m+7]; - dall[n*nvals + m ] = 0.0; - dall[n*nvals + m+1] = 0.0; - dall[n*nvals + m+2] = 0.0; - dall[n*nvals + m+3] = 0.0; - dall[n*nvals + m+4] = 0.0; - dall[n*nvals + m+5] = 0.0; - dall[n*nvals + m+6] = 0.0; - dall[n*nvals + m+7] = 0.0; + t0 += dall[n * nvals + m]; + t1 += dall[n * nvals + m + 1]; + t2 += dall[n * nvals + m + 2]; + t3 += dall[n * nvals + m + 3]; + t4 += dall[n * nvals + m + 4]; + t5 += dall[n * nvals + m + 5]; + t6 += dall[n * nvals + m + 6]; + t7 += dall[n * nvals + m + 7]; + dall[n * nvals + m] = 0.0; + dall[n * nvals + m + 1] = 0.0; + dall[n * nvals + m + 2] = 0.0; + dall[n * nvals + m + 3] = 0.0; + dall[n * nvals + m + 4] = 0.0; + dall[n * nvals + m + 5] = 0.0; + dall[n * nvals + m + 6] = 0.0; + dall[n * nvals + m + 7] = 0.0; } - dall[m ] = t0; - dall[m+1] = t1; - dall[m+2] = t2; - dall[m+3] = t3; - dall[m+4] = t4; - dall[m+5] = t5; - dall[m+6] = t6; - dall[m+7] = t7; + dall[m] = t0; + dall[m + 1] = t1; + dall[m + 2] = t2; + dall[m + 3] = t3; + dall[m + 4] = t4; + dall[m + 5] = t5; + dall[m + 6] = t6; + dall[m + 7] = t7; } // do the last < 8 values for (; m < ito; m++) { for (int n = 1; n < nthreads; ++n) { - dall[m] += dall[n*nvals + m]; - dall[n*nvals + m] = 0.0; + dall[m] += dall[n * nvals + m]; + dall[n * nvals + m] = 0.0; } } } diff --git a/src/OPENMP/thr_omp.cpp b/src/OPENMP/thr_omp.cpp index 7f4bc95e8c..73a5f97ca2 100644 --- a/src/OPENMP/thr_omp.cpp +++ b/src/OPENMP/thr_omp.cpp @@ -53,13 +53,6 @@ ThrOMP::ThrOMP(LAMMPS *ptr, int style) fix = static_cast(lmp->modify->fix[ifix]); } -/* ---------------------------------------------------------------------- */ - -ThrOMP::~ThrOMP() -{ - // nothing to do? -} - /* ---------------------------------------------------------------------- Hook up per thread per atom arrays into the tally infrastructure ---------------------------------------------------------------------- */ diff --git a/src/OPENMP/thr_omp.h b/src/OPENMP/thr_omp.h index c35ca9a056..78d93bd55f 100644 --- a/src/OPENMP/thr_omp.h +++ b/src/OPENMP/thr_omp.h @@ -46,7 +46,7 @@ class ThrOMP { public: ThrOMP(LAMMPS *, int); - virtual ~ThrOMP(); + virtual ~ThrOMP() = default; double memory_usage_thr(); diff --git a/src/OPT/pair_eam_opt.cpp b/src/OPT/pair_eam_opt.cpp index 08af3e7d18..998b14a5e7 100644 --- a/src/OPT/pair_eam_opt.cpp +++ b/src/OPT/pair_eam_opt.cpp @@ -349,8 +349,8 @@ void PairEAMOpt::eval() ff[i].z += tmpfz; } - free(fast_alpha); fast_alpha = 0; - free(fast_gamma); fast_gamma = 0; + free(fast_alpha); fast_alpha = nullptr; + free(fast_gamma); fast_gamma = nullptr; if (vflag_fdotr) virial_fdotr_compute(); } diff --git a/src/OPT/pair_lj_charmm_coul_long_opt.cpp b/src/OPT/pair_lj_charmm_coul_long_opt.cpp index 7b6bec5b94..186172035c 100644 --- a/src/OPT/pair_lj_charmm_coul_long_opt.cpp +++ b/src/OPT/pair_lj_charmm_coul_long_opt.cpp @@ -333,7 +333,7 @@ void PairLJCharmmCoulLongOpt::eval() ff[i].z += tmpfz; } - free(fast_alpha); fast_alpha = 0; + free(fast_alpha); fast_alpha = nullptr; if (vflag_fdotr) virial_fdotr_compute(); } diff --git a/src/OPT/pair_lj_cut_opt.cpp b/src/OPT/pair_lj_cut_opt.cpp index e0ab42b779..f272e6fc78 100644 --- a/src/OPT/pair_lj_cut_opt.cpp +++ b/src/OPT/pair_lj_cut_opt.cpp @@ -195,7 +195,7 @@ void PairLJCutOpt::eval() ff[i].z += tmpfz; } - free(fast_alpha); fast_alpha = 0; + free(fast_alpha); fast_alpha = nullptr; if (vflag_fdotr) virial_fdotr_compute(); } diff --git a/src/OPT/pair_morse_opt.cpp b/src/OPT/pair_morse_opt.cpp index 80414b40c8..04aace0d43 100644 --- a/src/OPT/pair_morse_opt.cpp +++ b/src/OPT/pair_morse_opt.cpp @@ -192,7 +192,7 @@ void PairMorseOpt::eval() ff[i].z += tmpfz; } - free(fast_alpha); fast_alpha = 0; + free(fast_alpha); fast_alpha = nullptr; if (vflag_fdotr) virial_fdotr_compute(); } diff --git a/src/OPT/pair_ufm_opt.cpp b/src/OPT/pair_ufm_opt.cpp index 3008d0af22..3502dfda6c 100644 --- a/src/OPT/pair_ufm_opt.cpp +++ b/src/OPT/pair_ufm_opt.cpp @@ -191,7 +191,7 @@ void PairUFMOpt::eval() ff[i].z += tmpfz; } - free(fast_alpha); fast_alpha = 0; + free(fast_alpha); fast_alpha = nullptr; if (vflag_fdotr) virial_fdotr_compute(); } diff --git a/src/PTM/ptm_index.cpp b/src/PTM/ptm_index.cpp index a0798b9e88..aff81af2e3 100644 --- a/src/PTM/ptm_index.cpp +++ b/src/PTM/ptm_index.cpp @@ -23,7 +23,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI #include #include #include -#include +#include static double calculate_interatomic_distance(int type, double scale) { assert(type >= 1 && type <= 8); diff --git a/src/QEQ/fix_qeq.cpp b/src/QEQ/fix_qeq.cpp index e2cae80dd4..79205f7c81 100644 --- a/src/QEQ/fix_qeq.cpp +++ b/src/QEQ/fix_qeq.cpp @@ -23,9 +23,12 @@ #include "comm.h" #include "error.h" #include "force.h" +#include "group.h" #include "memory.h" +#include "modify.h" #include "neigh_list.h" #include "pair.h" +#include "respa.h" #include "suffix.h" #include "text_file_reader.h" #include "update.h" @@ -291,6 +294,23 @@ double FixQEq::compute_scalar() /* ---------------------------------------------------------------------- */ +void FixQEq::init() +{ + if (!atom->q_flag) + error->all(FLERR,"Fix {} requires atom attribute q", style); + + ngroup = group->count(igroup); + if (ngroup == 0) error->all(FLERR,"Fix {} group has no atoms", style); + + if ((comm->me == 0) && (modify->find_fix_by_style("^efield") >= 0)) + error->warning(FLERR,"Fix efield is ignored during charge equilibration"); + + if (utils::strmatch(update->integrate_style,"^respa")) + nlevels_respa = ((Respa *) update->integrate)->nlevels; +} + +/* ---------------------------------------------------------------------- */ + void FixQEq::init_list(int /*id*/, NeighList *ptr) { list = ptr; diff --git a/src/QEQ/fix_qeq.h b/src/QEQ/fix_qeq.h index f2260cbf30..bd25628508 100644 --- a/src/QEQ/fix_qeq.h +++ b/src/QEQ/fix_qeq.h @@ -1,4 +1,4 @@ -/* -*- c++ -*- ---------------------------------------------------------- +/* -*- c++ -*- --------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories Steve Plimpton, sjplimp@sandia.gov @@ -39,7 +39,7 @@ class FixQEq : public Fix { // derived child classes must provide these functions - virtual void init() = 0; + virtual void init(); virtual void pre_force(int) = 0; virtual int pack_forward_comm(int, int *, double *, int, int *); diff --git a/src/QEQ/fix_qeq_dynamic.cpp b/src/QEQ/fix_qeq_dynamic.cpp index 06cfe0d0bd..689ecfb026 100644 --- a/src/QEQ/fix_qeq_dynamic.cpp +++ b/src/QEQ/fix_qeq_dynamic.cpp @@ -22,12 +22,10 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "group.h" #include "kspace.h" #include "neigh_list.h" #include "neigh_request.h" #include "neighbor.h" -#include "respa.h" #include "update.h" #include @@ -66,11 +64,7 @@ FixQEqDynamic::FixQEqDynamic(LAMMPS *lmp, int narg, char **arg) : void FixQEqDynamic::init() { - if (!atom->q_flag) - error->all(FLERR,"Fix qeq/dynamic requires atom attribute q"); - - ngroup = group->count(igroup); - if (ngroup == 0) error->all(FLERR,"Fix qeq/dynamic group has no atoms"); + FixQEq::init(); int irequest = neighbor->request(this,instance_me); neighbor->requests[irequest]->pair = 0; @@ -82,10 +76,6 @@ void FixQEqDynamic::init() if (comm->me == 0) error->warning(FLERR,"Fix qeq/dynamic tolerance may be too small" " for damped dynamics"); - - if (utils::strmatch(update->integrate_style,"^respa")) - nlevels_respa = ((Respa *) update->integrate)->nlevels; - } /* ---------------------------------------------------------------------- */ diff --git a/src/QEQ/fix_qeq_fire.cpp b/src/QEQ/fix_qeq_fire.cpp index 77a5ae36a1..4e42ebc05e 100644 --- a/src/QEQ/fix_qeq_fire.cpp +++ b/src/QEQ/fix_qeq_fire.cpp @@ -22,14 +22,12 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "group.h" #include "kspace.h" #include "neigh_list.h" #include "neigh_request.h" #include "neighbor.h" #include "pair_comb.h" #include "pair_comb3.h" -#include "respa.h" #include "update.h" #include @@ -76,11 +74,7 @@ FixQEqFire::FixQEqFire(LAMMPS *lmp, int narg, char **arg) : void FixQEqFire::init() { - if (!atom->q_flag) - error->all(FLERR,"Fix qeq/fire requires atom attribute q"); - - ngroup = group->count(igroup); - if (ngroup == 0) error->all(FLERR,"Fix qeq/fire group has no atoms"); + FixQEq::init(); int irequest = neighbor->request(this,instance_me); neighbor->requests[irequest]->pair = 0; @@ -93,9 +87,6 @@ void FixQEqFire::init() error->warning(FLERR,"Fix qeq/fire tolerance may be too small" " for damped fires"); - if (utils::strmatch(update->integrate_style,"^respa")) - nlevels_respa = ((Respa *) update->integrate)->nlevels; - comb3 = (PairComb3 *) force->pair_match("^comb3",0); if (!comb3) comb = (PairComb *) force->pair_match("^comb",0); } diff --git a/src/QEQ/fix_qeq_point.cpp b/src/QEQ/fix_qeq_point.cpp index 3ad76b74d9..0c9115994c 100644 --- a/src/QEQ/fix_qeq_point.cpp +++ b/src/QEQ/fix_qeq_point.cpp @@ -22,13 +22,11 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "group.h" #include "kspace.h" #include "memory.h" #include "neigh_list.h" #include "neigh_request.h" #include "neighbor.h" -#include "respa.h" #include "update.h" #include @@ -51,11 +49,7 @@ FixQEqPoint::FixQEqPoint(LAMMPS *lmp, int narg, char **arg) : void FixQEqPoint::init() { - if (!atom->q_flag) - error->all(FLERR,"Fix qeq/point requires atom attribute q"); - - ngroup = group->count(igroup); - if (ngroup == 0) error->all(FLERR,"Fix qeq/point group has no atoms"); + FixQEq::init(); int irequest = neighbor->request(this,instance_me); neighbor->requests[irequest]->pair = 0; @@ -65,10 +59,6 @@ void FixQEqPoint::init() int ntypes = atom->ntypes; memory->create(shld,ntypes+1,ntypes+1,"qeq:shielding"); - - if (utils::strmatch(update->integrate_style,"^respa")) - nlevels_respa = ((Respa *) update->integrate)->nlevels; - } /* ---------------------------------------------------------------------- */ diff --git a/src/QEQ/fix_qeq_shielded.cpp b/src/QEQ/fix_qeq_shielded.cpp index 8c1b95996b..f2738051e8 100644 --- a/src/QEQ/fix_qeq_shielded.cpp +++ b/src/QEQ/fix_qeq_shielded.cpp @@ -22,14 +22,12 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "group.h" #include "kspace.h" #include "memory.h" #include "neigh_list.h" #include "neigh_request.h" #include "neighbor.h" #include "pair.h" -#include "respa.h" #include "update.h" #include @@ -53,11 +51,7 @@ FixQEqShielded::FixQEqShielded(LAMMPS *lmp, int narg, char **arg) : void FixQEqShielded::init() { - if (!atom->q_flag) - error->all(FLERR,"Fix qeq/shielded requires atom attribute q"); - - ngroup = group->count(igroup); - if (ngroup == 0) error->all(FLERR,"Fix qeq/shielded group has no atoms"); + FixQEq::init(); int irequest = neighbor->request(this,instance_me); neighbor->requests[irequest]->pair = 0; @@ -75,10 +69,6 @@ void FixQEqShielded::init() if (gamma[i] == 0.0) error->all(FLERR,"Invalid param file for fix qeq/shielded"); } - - if (utils::strmatch(update->integrate_style,"^respa")) - nlevels_respa = ((Respa *) update->integrate)->nlevels; - } /* ---------------------------------------------------------------------- */ diff --git a/src/QEQ/fix_qeq_slater.cpp b/src/QEQ/fix_qeq_slater.cpp index d491b301d5..e276727f01 100644 --- a/src/QEQ/fix_qeq_slater.cpp +++ b/src/QEQ/fix_qeq_slater.cpp @@ -22,14 +22,12 @@ #include "comm.h" #include "error.h" #include "force.h" -#include "group.h" #include "kspace.h" #include "math_const.h" #include "neigh_list.h" #include "neigh_request.h" #include "neighbor.h" #include "pair.h" -#include "respa.h" #include "update.h" #include @@ -67,11 +65,7 @@ FixQEqSlater::FixQEqSlater(LAMMPS *lmp, int narg, char **arg) : void FixQEqSlater::init() { - if (!atom->q_flag) - error->all(FLERR,"Fix qeq/slater requires atom attribute q"); - - ngroup = group->count(igroup); - if (ngroup == 0) error->all(FLERR,"Fix qeq/slater group has no atoms"); + FixQEq::init(); int irequest = neighbor->request(this,instance_me); neighbor->requests[irequest]->pair = 0; @@ -84,9 +78,6 @@ void FixQEqSlater::init() if (zeta[i] == 0.0) error->all(FLERR,"Invalid param file for fix qeq/slater"); } - - if (utils::strmatch(update->integrate_style,"^respa")) - nlevels_respa = ((Respa *) update->integrate)->nlevels; } /* ---------------------------------------------------------------------- */ diff --git a/src/QMMM/fix_qmmm.cpp b/src/QMMM/fix_qmmm.cpp index 4222a82247..8c59077c7d 100644 --- a/src/QMMM/fix_qmmm.cpp +++ b/src/QMMM/fix_qmmm.cpp @@ -822,7 +822,7 @@ void FixQMMM::post_force(int vflag) /* ---------------------------------------------------------------------- */ /* local memory usage. approximately. */ -double FixQMMM::memory_usage(void) +double FixQMMM::memory_usage() { double bytes; diff --git a/src/REACTION/fix_bond_react.cpp b/src/REACTION/fix_bond_react.cpp index 69c9c87ddf..bddeb330e4 100644 --- a/src/REACTION/fix_bond_react.cpp +++ b/src/REACTION/fix_bond_react.cpp @@ -49,6 +49,7 @@ Contributing Author: Jacob Gissinger (jacob.r.gissinger@gmail.com) #include #include +#include using namespace LAMMPS_NS; using namespace FixConst; @@ -1380,6 +1381,10 @@ void FixBondReact::superimpose_algorithm() if (!rxnflag) return; + // C++11 and later compatible version of Park pRNG + std::random_device rnd; + std::minstd_rand park_rng(rnd()); + // check if we overstepped our reaction limit for (int i = 0; i < nreacts; i++) { if (reaction_count_total[i] > max_rxn[i]) { @@ -1400,7 +1405,7 @@ void FixBondReact::superimpose_algorithm() for (int j = 0; j < nprocs; j++) for (int k = 0; k < local_rxncounts[j]; k++) rxn_by_proc[itemp++] = j; - std::random_shuffle(&rxn_by_proc[0],&rxn_by_proc[delta_rxn]); + std::shuffle(&rxn_by_proc[0],&rxn_by_proc[delta_rxn], park_rng); for (int j = 0; j < nprocs; j++) all_localskips[j] = 0; nghostlyskips[i] = 0; diff --git a/src/REAXFF/fix_acks2_reaxff.cpp b/src/REAXFF/fix_acks2_reaxff.cpp new file mode 100644 index 0000000000..f19b31f9ed --- /dev/null +++ b/src/REAXFF/fix_acks2_reaxff.cpp @@ -0,0 +1,1080 @@ +// clang-format off +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 author: Stan Moore (Sandia) +------------------------------------------------------------------------- */ + +#include "fix_acks2_reaxff.h" + +#include "atom.h" +#include "citeme.h" +#include "comm.h" +#include "error.h" +#include "fix_efield.h" +#include "force.h" +#include "group.h" +#include "memory.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "pair.h" +#include "pair_reaxff.h" +#include "reaxff_api.h" +#include "respa.h" +#include "text_file_reader.h" +#include "update.h" +#include "utils.h" + +#include +#include + +using namespace LAMMPS_NS; +using namespace FixConst; + +class parser_error : public std::exception { + std::string message; +public: + parser_error(const std::string &mesg) { message = mesg; } + const char *what() const noexcept { return message.c_str(); } +}; + +static const char cite_fix_acks2_reax[] = + "fix acks2/reaxff command:\n\n" + "@Article{O'Hearn2020,\n" + " author = {K. A. O'Hearn, A. Alperen, and H. M. Aktulga},\n" + " title = {Fast Solvers for Charge Distribution Models on Shared Memory Platforms},\n" + " journal = {SIAM J. Sci. Comput.},\n" + " year = 2020,\n" + " volume = 42,\n" + " pages = {1--22}\n" + "}\n\n"; + +/* ---------------------------------------------------------------------- */ + +FixACKS2ReaxFF::FixACKS2ReaxFF(LAMMPS *lmp, int narg, char **arg) : + FixQEqReaxFF(lmp, narg, arg) +{ + bcut = nullptr; + + X_diag = nullptr; + Xdia_inv = nullptr; + + // BiCGStab + g = nullptr; + q_hat = nullptr; + r_hat = nullptr; + y = nullptr; + z = nullptr; + + // X matrix + X.firstnbr = nullptr; + X.numnbrs = nullptr; + X.jlist = nullptr; + X.val = nullptr; + + // Update comm sizes for this fix + comm_forward = comm_reverse = 2; + + s_hist_X = s_hist_last = nullptr; + + last_rows_rank = 0; + last_rows_flag = (comm->me == last_rows_rank); +} + +/* ---------------------------------------------------------------------- */ + +FixACKS2ReaxFF::~FixACKS2ReaxFF() +{ + if (copymode) return; + + memory->destroy(bcut); + + if (!reaxflag) + memory->destroy(bcut_acks2); + + memory->destroy(s_hist_X); + memory->destroy(s_hist_last); + + deallocate_storage(); + deallocate_matrix(); +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::post_constructor() +{ + if (lmp->citeme) lmp->citeme->add(cite_fix_acks2_reax); + + memory->create(s_hist_last,2,nprev,"acks2/reax:s_hist_last"); + for (int i = 0; i < 2; i++) + for (int j = 0; j < nprev; ++j) + s_hist_last[i][j] = 0.0; + + grow_arrays(atom->nmax); + for (int i = 0; i < atom->nmax; i++) + for (int j = 0; j < nprev; ++j) + s_hist[i][j] = s_hist_X[i][j] = 0.0; + + pertype_parameters(pertype_option); + if (dual_enabled) + error->all(FLERR,"Dual keyword only supported with fix qeq/reax/omp"); +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::pertype_parameters(char *arg) +{ + // match either new keyword "reaxff" or old keyword "reax/c" + if (utils::strmatch(arg,"^reax..$")) { + reaxflag = 1; + Pair *pair = force->pair_match("^reax..",0); + if (!pair) error->all(FLERR,"No reaxff pair style for fix qeq/reaxff"); + + int tmp; + chi = (double *) pair->extract("chi",tmp); + eta = (double *) pair->extract("eta",tmp); + gamma = (double *) pair->extract("gamma",tmp); + bcut_acks2 = (double *) pair->extract("bcut_acks2",tmp); + double* bond_softness_ptr = (double *) pair->extract("bond_softness",tmp); + + if (chi == nullptr || eta == nullptr || gamma == nullptr || + bcut_acks2 == nullptr || bond_softness_ptr == nullptr) + error->all(FLERR, + "Fix acks2/reaxff could not extract params from pair reaxff"); + bond_softness = *bond_softness_ptr; + return; + } + + reaxflag = 0; + const int ntypes = atom->ntypes; + + memory->create(chi,ntypes+1,"acks2/reaxff:chi"); + memory->create(eta,ntypes+1,"acks2/reaxff:eta"); + memory->create(gamma,ntypes+1,"acks2/reaxff:gamma"); + memory->create(bcut_acks2,ntypes+1,"acks2/reaxff:bcut_acks2"); + + if (comm->me == 0) { + bond_softness = chi[0] = eta[0] = gamma[0] = 0.0; + try { + TextFileReader reader(arg,"acks2/reaxff parameter"); + reader.ignore_comments = false; + + const char *line = reader.next_line(); + if (!line) + throw parser_error("Invalid parameter file for fix acks2/reaxff"); + ValueTokenizer values(line); + + if (values.count() != 1) + throw parser_error("Fix acks2/reaxff: Incorrect format of parameter file"); + + bond_softness = values.next_double(); + + for (int i = 1; i <= ntypes; i++) { + const char *line = reader.next_line(); + if (!line) + throw parser_error("Invalid parameter file for fix acks2/reaxff"); + ValueTokenizer values(line); + + if (values.count() != 5) + throw parser_error("Fix acks2/reaxff: Incorrect format of parameter file"); + + int itype = values.next_int(); + if ((itype < 1) || (itype > ntypes)) + throw parser_error("Fix acks2/reaxff: invalid atom type in parameter file"); + + chi[itype] = values.next_double(); + eta[itype] = values.next_double(); + gamma[itype] = values.next_double(); + bcut_acks2[itype] = values.next_double(); + } + } catch (std::exception &e) { + error->one(FLERR,e.what()); + } + } + + MPI_Bcast(chi,ntypes+1,MPI_DOUBLE,0,world); + MPI_Bcast(eta,ntypes+1,MPI_DOUBLE,0,world); + MPI_Bcast(gamma,ntypes+1,MPI_DOUBLE,0,world); + MPI_Bcast(bcut_acks2,ntypes+1,MPI_DOUBLE,0,world); +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::allocate_storage() +{ + nmax = atom->nmax; + int size = nmax*2 + 2; + + // 0 to nn-1: owned atoms related to H matrix + // nn to NN-1: ghost atoms related to H matrix + // NN to NN+nn-1: owned atoms related to X matrix + // NN+nn to 2*NN-1: ghost atoms related X matrix + // 2*NN to 2*NN+1: last two rows, owned by proc 0 + + memory->create(s,size,"acks2:s"); + memory->create(b_s,size,"acks2:b_s"); + + memory->create(Hdia_inv,nmax,"acks2:Hdia_inv"); + memory->create(chi_field,nmax,"acks2:chi_field"); + + memory->create(X_diag,nmax,"acks2:X_diag"); + memory->create(Xdia_inv,nmax,"acks2:Xdia_inv"); + + memory->create(p,size,"acks2:p"); + memory->create(q,size,"acks2:q"); + memory->create(r,size,"acks2:r"); + memory->create(d,size,"acks2:d"); + + memory->create(g,size,"acks2:g"); + memory->create(q_hat,size,"acks2:q_hat"); + memory->create(r_hat,size,"acks2:r_hat"); + memory->create(y,size,"acks2:y"); + memory->create(z,size,"acks2:z"); +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::deallocate_storage() +{ + FixQEqReaxFF::deallocate_storage(); + + memory->destroy(X_diag); + memory->destroy(Xdia_inv); + + memory->destroy(g); + memory->destroy(q_hat); + memory->destroy(r_hat); + memory->destroy(y); + memory->destroy(z); +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::allocate_matrix() +{ + FixQEqReaxFF::allocate_matrix(); + + X.n = n_cap; + X.m = m_cap; + memory->create(X.firstnbr,n_cap,"acks2:X.firstnbr"); + memory->create(X.numnbrs,n_cap,"acks2:X.numnbrs"); + memory->create(X.jlist,m_cap,"acks2:X.jlist"); + memory->create(X.val,m_cap,"acks2:X.val"); +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::deallocate_matrix() +{ + FixQEqReaxFF::deallocate_matrix(); + + memory->destroy(X.firstnbr); + memory->destroy(X.numnbrs); + memory->destroy(X.jlist); + memory->destroy(X.val); +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::init() +{ + FixQEqReaxFF::init(); + + init_bondcut(); +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::init_bondcut() +{ + int i,j; + int ntypes; + + ntypes = atom->ntypes; + if (bcut == nullptr) + memory->create(bcut,ntypes+1,ntypes+1,"acks2:bondcut"); + + for (i = 1; i <= ntypes; ++i) + for (j = 1; j <= ntypes; ++j) { + bcut[i][j] = 0.5*(bcut_acks2[i] + bcut_acks2[j]); + } +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::init_storage() +{ + if (efield) get_chi_field(); + + for (int ii = 0; ii < NN; ii++) { + int i = ilist[ii]; + if (atom->mask[i] & groupbit) { + b_s[i] = -chi[atom->type[i]]; + if (efield) b_s[i] -= chi_field[i]; + b_s[NN + i] = 0.0; + s[i] = 0.0; + s[NN + i] = 0.0; + } + } + + for (int i = 0; i < 2; i++) { + b_s[2*NN + i] = 0.0; + s[2*NN + i] = 0.0; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::pre_force(int /*vflag*/) +{ + if (update->ntimestep % nevery) return; + + int n = atom->nlocal; + + if (reaxff) { + nn = reaxff->list->inum; + NN = reaxff->list->inum + reaxff->list->gnum; + ilist = reaxff->list->ilist; + numneigh = reaxff->list->numneigh; + firstneigh = reaxff->list->firstneigh; + } else { + nn = list->inum; + NN = list->inum + list->gnum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + } + + // grow arrays if necessary + // need to be atom->nmax in length + + if (atom->nmax > nmax) reallocate_storage(); + if (n > n_cap*DANGER_ZONE || m_fill > m_cap*DANGER_ZONE) + reallocate_matrix(); + + if (efield) get_chi_field(); + + init_matvec(); + + matvecs = BiCGStab(b_s, s); // BiCGStab on s - parallel + + calculate_Q(); +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::init_matvec() +{ + /* fill-in H matrix */ + compute_H(); + + /* fill-in X matrix */ + compute_X(); + pack_flag = 4; + comm->reverse_comm_fix(this); //Coll_Vector(X_diag); + + int ii, i; + + for (ii = 0; ii < nn; ++ii) { + if (X_diag[ii] == 0.0) + Xdia_inv[ii] = 1.0; + else + Xdia_inv[ii] = 1.0 / X_diag[ii]; + + i = ilist[ii]; + if (atom->mask[i] & groupbit) { + + /* init pre-conditioner for H and init solution vectors */ + Hdia_inv[i] = 1. / eta[atom->type[i]]; + b_s[i] = -chi[atom->type[i]]; + if (efield) b_s[i] -= chi_field[i]; + b_s[NN+i] = 0.0; + + /* cubic extrapolation for s from previous solutions */ + s[i] = 4*(s_hist[i][0]+s_hist[i][2])-(6*s_hist[i][1]+s_hist[i][3]); + s[NN+i] = 4*(s_hist_X[i][0]+s_hist_X[i][2])-(6*s_hist_X[i][1]+s_hist_X[i][3]); + } + } + + // last two rows + if (last_rows_flag) { + for (i = 0; i < 2; i++) { + b_s[2*NN+i] = 0.0; + s[2*NN+i] = 4*(s_hist_last[i][0]+s_hist_last[i][2])-(6*s_hist_last[i][1]+s_hist_last[i][3]); + } + } + + pack_flag = 2; + comm->forward_comm_fix(this); //Dist_vector(s); + more_forward_comm(s); +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::compute_X() +{ + int jnum; + int i, j, ii, jj, flag; + double dx, dy, dz, r_sqr; + const double SMALL = 0.0001; + + int *type = atom->type; + tagint *tag = atom->tag; + double **x = atom->x; + int *mask = atom->mask; + + memset(X_diag,0.0,atom->nmax*sizeof(double)); + + // fill in the X matrix + m_fill = 0; + r_sqr = 0; + for (ii = 0; ii < nn; ii++) { + i = ilist[ii]; + if (mask[i] & groupbit) { + jlist = firstneigh[i]; + jnum = numneigh[i]; + X.firstnbr[i] = m_fill; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + + dx = x[j][0] - x[i][0]; + dy = x[j][1] - x[i][1]; + dz = x[j][2] - x[i][2]; + r_sqr = SQR(dx) + SQR(dy) + SQR(dz); + + flag = 0; + if (r_sqr <= SQR(swb)) { + if (j < atom->nlocal) flag = 1; + else if (tag[i] < tag[j]) flag = 1; + else if (tag[i] == tag[j]) { + if (dz > SMALL) flag = 1; + else if (fabs(dz) < SMALL) { + if (dy > SMALL) flag = 1; + else if (fabs(dy) < SMALL && dx > SMALL) + flag = 1; + } + } + } + + if (flag) { + double bcutoff = bcut[type[i]][type[j]]; + double bcutoff2 = bcutoff*bcutoff; + if (r_sqr <= bcutoff2) { + X.jlist[m_fill] = j; + double X_val = calculate_X(sqrt(r_sqr), bcutoff); + X.val[m_fill] = X_val; + X_diag[i] -= X_val; + X_diag[j] -= X_val; + m_fill++; + } + } + } + + X.numnbrs[i] = m_fill - X.firstnbr[i]; + } + } + + if (m_fill >= X.m) + error->all(FLERR,"Fix acks2/reaxff has insufficient ACKS2 X matrix size: m_fill={} X.m={}\n",m_fill,X.m); +} + +/* ---------------------------------------------------------------------- */ + +double FixACKS2ReaxFF::calculate_X(double r, double bcut) +{ + double d = r/bcut; + double d3 = d*d*d; + double omd = 1.0 - d; + double omd2 = omd*omd; + double omd6 = omd2*omd2*omd2; + + return bond_softness*d3*omd6; +} + +/* ---------------------------------------------------------------------- */ + +int FixACKS2ReaxFF::BiCGStab(double *b, double *x) +{ + int i, j; + double tmp, alpha, beta, omega, sigma, rho, rho_old, rnorm, bnorm; + + int jj; + + sparse_matvec_acks2(&H, &X, x, d); + pack_flag = 1; + comm->reverse_comm_fix(this); //Coll_Vector(d); + more_reverse_comm(d); + + vector_sum(r , 1., b, -1., d, nn); + bnorm = parallel_norm(b, nn); + rnorm = parallel_norm(r, nn); + + if (bnorm == 0.0) bnorm = 1.0; + vector_copy(r_hat, r, nn); + omega = 1.0; + rho = 1.0; + + for (i = 1; i < imax && rnorm / bnorm > tolerance; ++i) { + rho = parallel_dot(r_hat, r, nn); + if (rho == 0.0) break; + + if (i > 1) { + beta = (rho / rho_old) * (alpha / omega); + vector_sum(q , 1., p, -omega, z, nn); + vector_sum(p , 1., r, beta, q, nn); + } else { + vector_copy(p, r, nn); + } + + // pre-conditioning + for (jj = 0; jj < nn; ++jj) { + j = ilist[jj]; + if (atom->mask[j] & groupbit) { + d[j] = p[j] * Hdia_inv[j]; + d[NN+j] = p[NN+j] * Xdia_inv[j]; + } + } + // last two rows + if (last_rows_flag) { + d[2*NN] = p[2*NN]; + d[2*NN + 1] = p[2*NN + 1]; + } + + pack_flag = 1; + comm->forward_comm_fix(this); //Dist_vector(d); + more_forward_comm(d); + sparse_matvec_acks2(&H, &X, d, z); + pack_flag = 2; + comm->reverse_comm_fix(this); //Coll_vector(z); + more_reverse_comm(z); + + tmp = parallel_dot(r_hat, z, nn); + alpha = rho / tmp; + + vector_sum(q , 1., r, -alpha, z, nn); + + tmp = parallel_dot(q, q, nn); + + // early convergence check + if (tmp < tolerance) { + vector_add(x, alpha, d, nn); + break; + } + + // pre-conditioning + for (jj = 0; jj < nn; ++jj) { + j = ilist[jj]; + if (atom->mask[j] & groupbit) { + q_hat[j] = q[j] * Hdia_inv[j]; + q_hat[NN+j] = q[NN+j] * Xdia_inv[j]; + } + } + // last two rows + if (last_rows_flag) { + q_hat[2*NN] = q[2*NN]; + q_hat[2*NN + 1] = q[2*NN + 1]; + } + + pack_flag = 3; + comm->forward_comm_fix(this); //Dist_vector(q_hat); + more_forward_comm(q_hat); + sparse_matvec_acks2(&H, &X, q_hat, y); + pack_flag = 3; + comm->reverse_comm_fix(this); //Dist_vector(y); + more_reverse_comm(y); + + sigma = parallel_dot(y, q, nn); + tmp = parallel_dot(y, y, nn); + omega = sigma / tmp; + + vector_sum(g , alpha, d, omega, q_hat, nn); + vector_add(x, 1., g, nn); + vector_sum(r , 1., q, -omega, y, nn); + + rnorm = parallel_norm(r, nn); + if (omega == 0) break; + rho_old = rho; + } + + if (comm->me == 0) { + if (omega == 0 || rho == 0) { + error->warning(FLERR,"Fix acks2/reaxff BiCGStab numerical breakdown, omega = {:.8}, rho = {:.8}", + omega,rho); + } else if (i >= imax) { + error->warning(FLERR,"Fix acks2/reaxff BiCGStab convergence failed after {} iterations " + "at step {}", i, update->ntimestep); + } + } + + return i; +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::sparse_matvec_acks2(sparse_matrix *H, sparse_matrix *X, double *x, double *b) +{ + int i, j, itr_j; + int ii; + + for (ii = 0; ii < nn; ++ii) { + i = ilist[ii]; + if (atom->mask[i] & groupbit) { + b[i] = eta[atom->type[i]] * x[i]; + b[NN + i] = X_diag[i] * x[NN + i]; + } + } + + for (ii = nn; ii < NN; ++ii) { + i = ilist[ii]; + if (atom->mask[i] & groupbit) { + b[i] = 0; + b[NN + i] = 0; + } + } + // last two rows + b[2*NN] = 0; + b[2*NN + 1] = 0; + + for (ii = 0; ii < nn; ++ii) { + i = ilist[ii]; + if (atom->mask[i] & groupbit) { + // H Matrix + for (itr_j=H->firstnbr[i]; itr_jfirstnbr[i]+H->numnbrs[i]; itr_j++) { + j = H->jlist[itr_j]; + b[i] += H->val[itr_j] * x[j]; + b[j] += H->val[itr_j] * x[i]; + } + + // X Matrix + for (itr_j=X->firstnbr[i]; itr_jfirstnbr[i]+X->numnbrs[i]; itr_j++) { + j = X->jlist[itr_j]; + b[NN + i] += X->val[itr_j] * x[NN + j]; + b[NN + j] += X->val[itr_j] * x[NN + i]; + } + + // Identity Matrix + b[NN + i] += x[i]; + b[i] += x[NN + i]; + + // Second-to-last row/column + b[2*NN] += x[NN + i]; + b[NN + i] += x[2*NN]; + + // Last row/column + b[2*NN + 1] += x[i]; + b[i] += x[2*NN + 1]; + } + } + +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::calculate_Q() +{ + int i, k; + + for (int ii = 0; ii < nn; ++ii) { + i = ilist[ii]; + if (atom->mask[i] & groupbit) { + + /* backup s */ + for (k = nprev-1; k > 0; --k) { + s_hist[i][k] = s_hist[i][k-1]; + s_hist_X[i][k] = s_hist_X[i][k-1]; + } + s_hist[i][0] = s[i]; + s_hist_X[i][0] = s[NN+i]; + } + } + // last two rows + if (last_rows_flag) { + for (int i = 0; i < 2; ++i) { + for (k = nprev-1; k > 0; --k) + s_hist_last[i][k] = s_hist_last[i][k-1]; + s_hist_last[i][0] = s[2*NN+i]; + } + } + + pack_flag = 2; + comm->forward_comm_fix(this); //Dist_vector(s); + + for (int ii = 0; ii < NN; ++ii) { + i = ilist[ii]; + if (atom->mask[i] & groupbit) + atom->q[i] = s[i]; + } +} + +/* ---------------------------------------------------------------------- */ + +int FixACKS2ReaxFF::pack_forward_comm(int n, int *list, double *buf, + int /*pbc_flag*/, int * /*pbc*/) +{ + int m = 0; + + if (pack_flag == 1) { + for(int i = 0; i < n; i++) { + int j = list[i]; + buf[m++] = d[j]; + buf[m++] = d[NN+j]; + } + } else if (pack_flag == 2) { + for(int i = 0; i < n; i++) { + int j = list[i]; + buf[m++] = s[j]; + buf[m++] = s[NN+j]; + } + } else if (pack_flag == 3) { + for(int i = 0; i < n; i++) { + int j = list[i]; + buf[m++] = q_hat[j]; + buf[m++] = q_hat[NN+j]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::unpack_forward_comm(int n, int first, double *buf) +{ + int i, m; + + int last = first + n; + m = 0; + + if (pack_flag == 1) { + for(i = first; i < last; i++) { + d[i] = buf[m++]; + d[NN+i] = buf[m++]; + } + } else if (pack_flag == 2) { + for(i = first; i < last; i++) { + s[i] = buf[m++]; + s[NN+i] = buf[m++]; + } + } else if (pack_flag == 3) { + for(i = first; i < last; i++) { + q_hat[i] = buf[m++]; + q_hat[NN+i] = buf[m++]; + } + } +} + +/* ---------------------------------------------------------------------- */ + +int FixACKS2ReaxFF::pack_reverse_comm(int n, int first, double *buf) +{ + int i, m; + m = 0; + int last = first + n; + + if (pack_flag == 1) { + for(i = first; i < last; i++) { + buf[m++] = d[i]; + buf[m++] = d[NN+i]; + } + } else if (pack_flag == 2) { + for(i = first; i < last; i++) { + buf[m++] = z[i]; + buf[m++] = z[NN+i]; + } + } else if (pack_flag == 3) { + for(i = first; i < last; i++) { + buf[m++] = y[i]; + buf[m++] = y[NN+i]; + } + } else if (pack_flag == 4) { + for(i = first; i < last; i++) + buf[m++] = X_diag[i]; + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::unpack_reverse_comm(int n, int *list, double *buf) +{ + int j; + int m = 0; + if (pack_flag == 1) { + for(int i = 0; i < n; i++) { + j = list[i]; + d[j] += buf[m++]; + d[NN+j] += buf[m++]; + } + } else if (pack_flag == 2) { + for(int i = 0; i < n; i++) { + j = list[i]; + z[j] += buf[m++]; + z[NN+j] += buf[m++]; + } + } else if (pack_flag == 3) { + for(int i = 0; i < n; i++) { + j = list[i]; + y[j] += buf[m++]; + y[NN+j] += buf[m++]; + } + } else if (pack_flag == 4) { + for(int i = 0; i < n; i++) { + j = list[i]; + X_diag[j] += buf[m++]; + } + } +} + +/* ---------------------------------------------------------------------- + one proc broadcasts last two rows of vector to everyone else +------------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::more_forward_comm(double *vec) +{ + MPI_Bcast(&vec[2*NN],2,MPI_DOUBLE,last_rows_rank,world); +} + +/* ---------------------------------------------------------------------- + reduce last two rows of vector and give to one proc +------------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::more_reverse_comm(double *vec) +{ + if (last_rows_flag) + MPI_Reduce(MPI_IN_PLACE,&vec[2*NN],2,MPI_DOUBLE,MPI_SUM,last_rows_rank,world); + else + MPI_Reduce(&vec[2*NN],nullptr,2,MPI_DOUBLE,MPI_SUM,last_rows_rank,world); +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based arrays +------------------------------------------------------------------------- */ + +double FixACKS2ReaxFF::memory_usage() +{ + double bytes; + const double size = 2.0*nmax + 2.0; + + bytes = size*nprev * sizeof(double); // s_hist + bytes += nmax*4.0 * sizeof(double); // storage + bytes += size*11.0 * sizeof(double); // storage + bytes += n_cap*4.0 * sizeof(int); // matrix... + bytes += m_cap*2.0 * sizeof(int); + bytes += m_cap*2.0 * sizeof(double); + + return bytes; +} + +/* ---------------------------------------------------------------------- + allocate solution history array +------------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::grow_arrays(int nmax) +{ + memory->grow(s_hist,nmax,nprev,"acks2:s_hist"); + memory->grow(s_hist_X,nmax,nprev,"acks2:s_hist_X"); +} + +/* ---------------------------------------------------------------------- + copy values within solution history array +------------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::copy_arrays(int i, int j, int /*delflag*/) +{ + for (int m = 0; m < nprev; m++) { + s_hist[j][m] = s_hist[i][m]; + s_hist_X[j][m] = s_hist_X[i][m]; + } +} + +/* ---------------------------------------------------------------------- + pack values in local atom-based array for exchange with another proc +------------------------------------------------------------------------- */ + +int FixACKS2ReaxFF::pack_exchange(int i, double *buf) +{ + for (int m = 0; m < nprev; m++) buf[m] = s_hist[i][m]; + for (int m = 0; m < nprev; m++) buf[nprev+m] = s_hist_X[i][m]; + return nprev*2; +} + +/* ---------------------------------------------------------------------- + unpack values in local atom-based array from exchange with another proc +------------------------------------------------------------------------- */ + +int FixACKS2ReaxFF::unpack_exchange(int nlocal, double *buf) +{ + for (int m = 0; m < nprev; m++) s_hist[nlocal][m] = buf[m]; + for (int m = 0; m < nprev; m++) s_hist_X[nlocal][m] = buf[nprev+m]; + return nprev*2; +} + +/* ---------------------------------------------------------------------- */ + +double FixACKS2ReaxFF::parallel_norm(double *v, int n) +{ + int i; + double my_sum, norm_sqr; + + int ii; + + my_sum = 0.0; + norm_sqr = 0.0; + for (ii = 0; ii < n; ++ii) { + i = ilist[ii]; + if (atom->mask[i] & groupbit) { + my_sum += SQR(v[i]); + my_sum += SQR(v[NN+i]); + } + } + + // last two rows + if (last_rows_flag) { + my_sum += SQR(v[2*NN]); + my_sum += SQR(v[2*NN + 1]); + } + + MPI_Allreduce(&my_sum, &norm_sqr, 1, MPI_DOUBLE, MPI_SUM, world); + + return sqrt(norm_sqr); +} + +/* ---------------------------------------------------------------------- */ + +double FixACKS2ReaxFF::parallel_dot(double *v1, double *v2, int n) +{ + int i; + double my_dot, res; + + int ii; + + my_dot = 0.0; + res = 0.0; + for (ii = 0; ii < n; ++ii) { + i = ilist[ii]; + if (atom->mask[i] & groupbit) { + my_dot += v1[i] * v2[i]; + my_dot += v1[NN+i] * v2[NN+i]; + } + } + + // last two rows + if (last_rows_flag) { + my_dot += v1[2*NN] * v2[2*NN]; + my_dot += v1[2*NN + 1] * v2[2*NN + 1]; + } + + MPI_Allreduce(&my_dot, &res, 1, MPI_DOUBLE, MPI_SUM, world); + + return res; +} + +/* ---------------------------------------------------------------------- */ + +double FixACKS2ReaxFF::parallel_vector_acc(double *v, int n) +{ + int i; + double my_acc, res; + + int ii; + + my_acc = 0.0; + res = 0.0; + for (ii = 0; ii < n; ++ii) { + i = ilist[ii]; + if (atom->mask[i] & groupbit) { + my_acc += v[i]; + my_acc += v[NN+i]; + } + } + + // last two rows + if (last_rows_flag) { + my_acc += v[2*NN]; + my_acc += v[2*NN + 1]; + } + + MPI_Allreduce(&my_acc, &res, 1, MPI_DOUBLE, MPI_SUM, world); + + return res; +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::vector_sum(double* dest, double c, double* v, + double d, double* y, int k) +{ + int kk; + + for (--k; k>=0; --k) { + kk = ilist[k]; + if (atom->mask[kk] & groupbit) { + dest[kk] = c * v[kk] + d * y[kk]; + dest[NN + kk] = c * v[NN + kk] + d * y[NN + kk]; + } + } + + // last two rows + if (last_rows_flag) { + dest[2*NN] = c * v[2*NN] + d * y[2*NN]; + dest[2*NN + 1] = c * v[2*NN + 1] + d * y[2*NN + 1]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::vector_add(double* dest, double c, double* v, int k) +{ + int kk; + + for (--k; k>=0; --k) { + kk = ilist[k]; + if (atom->mask[kk] & groupbit) { + dest[kk] += c * v[kk]; + dest[NN + kk] += c * v[NN + kk]; + } + } + + // last two rows + if (last_rows_flag) { + dest[2*NN] += c * v[2*NN]; + dest[2*NN + 1] += c * v[2*NN + 1]; + } +} + + +/* ---------------------------------------------------------------------- */ + +void FixACKS2ReaxFF::vector_copy(double* dest, double* v, int k) +{ + int kk; + + for (--k; k>=0; --k) { + kk = ilist[k]; + if (atom->mask[kk] & groupbit) { + dest[kk] = v[kk]; + dest[NN + kk] = v[NN + kk]; + } + } + + // last two rows + if (last_rows_flag) { + dest[2*NN] = v[2*NN]; + dest[2*NN + 1] = v[2*NN + 1]; + } +} + diff --git a/src/REAXFF/fix_acks2_reaxff.h b/src/REAXFF/fix_acks2_reaxff.h new file mode 100644 index 0000000000..6c4b85e23e --- /dev/null +++ b/src/REAXFF/fix_acks2_reaxff.h @@ -0,0 +1,91 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://www.lammps.org/, 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 +// clang-format off +FixStyle(acks2/reax,FixACKS2ReaxFF); +FixStyle(acks2/reaxff,FixACKS2ReaxFF); +// clang-format on +#else + +#ifndef LMP_FIX_ACKS2_REAXFF_H +#define LMP_FIX_ACKS2_REAXFF_H + +#include "fix_qeq_reaxff.h" + +namespace LAMMPS_NS { + +class FixACKS2ReaxFF : public FixQEqReaxFF { + public: + FixACKS2ReaxFF(class LAMMPS *, int, char **); + virtual ~FixACKS2ReaxFF(); + void post_constructor(); + virtual void init(); + void init_storage(); + virtual void pre_force(int); + + double *get_s() { return s; } + + protected: + int last_rows_rank, last_rows_flag; + + double **s_hist_X, **s_hist_last; + double *bcut_acks2, bond_softness, **bcut; // acks2 parameters + + sparse_matrix X; + double *Xdia_inv; + double *X_diag; + + //BiCGStab storage + double *g, *q_hat, *r_hat, *y, *z; + + void pertype_parameters(char *); + void init_bondcut(); + void allocate_storage(); + void deallocate_storage(); + void allocate_matrix(); + void deallocate_matrix(); + + void init_matvec(); + void compute_X(); + double calculate_X(double, double); + void calculate_Q(); + + int BiCGStab(double *, double *); + void sparse_matvec_acks2(sparse_matrix *, sparse_matrix *, double *, double *); + + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + int pack_reverse_comm(int, int, double *); + void unpack_reverse_comm(int, int *, double *); + void more_forward_comm(double *); + void more_reverse_comm(double *); + double memory_usage(); + virtual void grow_arrays(int); + virtual void copy_arrays(int, int, int); + virtual int pack_exchange(int, double *); + virtual int unpack_exchange(int, double *); + + double parallel_norm(double *, int); + double parallel_dot(double *, double *, int); + double parallel_vector_acc(double *, int); + + void vector_sum(double *, double, double *, double, double *, int); + void vector_add(double *, double, double *, int); + void vector_copy(double *, double *, int); +}; + +} // namespace LAMMPS_NS + +#endif +#endif diff --git a/src/REAXFF/fix_qeq_reaxff.cpp b/src/REAXFF/fix_qeq_reaxff.cpp index b58d10a643..f0ba651a26 100644 --- a/src/REAXFF/fix_qeq_reaxff.cpp +++ b/src/REAXFF/fix_qeq_reaxff.cpp @@ -24,7 +24,9 @@ #include "atom.h" #include "citeme.h" #include "comm.h" +#include "domain.h" #include "error.h" +#include "fix_efield.h" #include "force.h" #include "group.h" #include "memory.h" @@ -32,6 +34,7 @@ #include "neigh_request.h" #include "neighbor.h" #include "pair.h" +#include "region.h" #include "respa.h" #include "text_file_reader.h" #include "update.h" @@ -54,6 +57,7 @@ public: }; static constexpr double EV_TO_KCAL_PER_MOL = 14.4; +static constexpr double SMALL = 1.0e-14; static const char cite_fix_qeq_reaxff[] = "fix qeq/reaxff command:\n\n" @@ -97,10 +101,10 @@ FixQEqReaxFF::FixQEqReaxFF(LAMMPS *lmp, int narg, char **arg) : else if (strcmp(arg[iarg],"nowarn") == 0) maxwarn = 0; else if (strcmp(arg[iarg],"maxiter") == 0) { if (iarg+1 > narg-1) - error->all(FLERR,"Illegal fix qeq/reaxff command"); + error->all(FLERR,"Illegal fix {} command", style); imax = utils::numeric(FLERR,arg[iarg+1],false,lmp); iarg++; - } else error->all(FLERR,"Illegal fix qeq/reaxff command"); + } else error->all(FLERR,"Illegal fix {} command", style); iarg++; } shld = nullptr; @@ -115,6 +119,7 @@ FixQEqReaxFF::FixQEqReaxFF(LAMMPS *lmp, int narg, char **arg) : Hdia_inv = nullptr; b_s = nullptr; + chi_field = nullptr; b_t = nullptr; b_prc = nullptr; b_prm = nullptr; @@ -271,6 +276,7 @@ void FixQEqReaxFF::allocate_storage() memory->create(Hdia_inv,nmax,"qeq:Hdia_inv"); memory->create(b_s,nmax,"qeq:b_s"); + memory->create(chi_field,nmax,"qeq:chi_field"); memory->create(b_t,nmax,"qeq:b_t"); memory->create(b_prc,nmax,"qeq:b_prc"); memory->create(b_prm,nmax,"qeq:b_prm"); @@ -297,6 +303,7 @@ void FixQEqReaxFF::deallocate_storage() memory->destroy(b_t); memory->destroy(b_prc); memory->destroy(b_prm); + memory->destroy(chi_field); memory->destroy(p); memory->destroy(q); @@ -373,12 +380,40 @@ void FixQEqReaxFF::reallocate_matrix() void FixQEqReaxFF::init() { if (!atom->q_flag) - error->all(FLERR,"Fix qeq/reaxff requires atom attribute q"); + error->all(FLERR,"Fix {} requires atom attribute q", style); if (group->count(igroup) == 0) - error->all(FLERR,"Fix qeq/reaxff group has no atoms"); + error->all(FLERR,"Fix {} group has no atoms", style); - // need a half neighbor list w/ Newton off and ghost neighbors + // there may be only one instance of fix efield + + int num_efield = 0; + for (int ifix = 0; ifix < modify->nfix; ++ifix) { + if (utils::strmatch(modify->fix[ifix]->style, "^efield")) ++num_efield; + } + if (num_efield > 1) + error->all(FLERR, "There may be only one fix efield instance used with fix {}", style); + + efield = nullptr; + int ifix = modify->find_fix_by_style("^efield"); + if (ifix >= 0) efield = (FixEfield *) modify->fix[ifix]; + + // ensure that fix efield is properly initialized before accessing its data and check some settings + if (efield) { + efield->init(); + if (strcmp(update->unit_style,"real") != 0) + error->all(FLERR,"Must use unit_style real with fix {} and external fields", style); + if (efield->varflag != FixEfield::CONSTANT) + error->all(FLERR,"Cannot (yet) use fix {} with variable efield", style); + + if (((fabs(efield->ex) > SMALL) && domain->xperiodic) || + ((fabs(efield->ey) > SMALL) && domain->yperiodic) || + ((fabs(efield->ez) > SMALL) && domain->zperiodic)) + error->all(FLERR,"Must not have electric field component in direction of periodic " + "boundary when using charge equilibration with ReaxFF."); + } + + // we need a half neighbor list w/ Newton off and ghost neighbors // built whenever re-neighboring occurs int irequest = neighbor->request(this,instance_me); @@ -502,22 +537,14 @@ void FixQEqReaxFF::min_setup_pre_force(int vflag) void FixQEqReaxFF::init_storage() { - int NN; - int *ilist; - - if (reaxff) { - NN = reaxff->list->inum + reaxff->list->gnum; - ilist = reaxff->list->ilist; - } else { - NN = list->inum + list->gnum; - ilist = list->ilist; - } + if (efield) get_chi_field(); for (int ii = 0; ii < NN; ii++) { int i = ilist[ii]; if (atom->mask[i] & groupbit) { Hdia_inv[i] = 1. / eta[atom->type[i]]; b_s[i] = -chi[atom->type[i]]; + if (efield) b_s[i] -= chi_field[i]; b_t[i] = -1.0; b_prc[i] = 0; b_prm[i] = 0; @@ -555,6 +582,8 @@ void FixQEqReaxFF::pre_force(int /*vflag*/) if (n > n_cap*DANGER_ZONE || m_fill > m_cap*DANGER_ZONE) reallocate_matrix(); + if (efield) get_chi_field(); + init_matvec(); matvecs_s = CG(b_s, s); // CG on s - parallel @@ -594,6 +623,7 @@ void FixQEqReaxFF::init_matvec() /* init pre-conditioner for H and init solution vectors */ Hdia_inv[i] = 1. / eta[atom->type[i]]; b_s[i] = -chi[atom->type[i]]; + if (efield) b_s[i] -= chi_field[i]; b_t[i] = -1.0; /* quadratic extrapolation for s & t from previous solutions */ @@ -1060,3 +1090,50 @@ void FixQEqReaxFF::vector_add(double* dest, double c, double* v, int k) } } +/* ---------------------------------------------------------------------- */ + +void FixQEqReaxFF::get_chi_field() +{ + memset(&chi_field[0],0.0,atom->nmax*sizeof(double)); + if (!efield) return; + + const double * const *x = (const double * const *)atom->x; + const int *mask = atom->mask; + const imageint *image = atom->image; + const int nlocal = atom->nlocal; + + + // update electric field region if necessary + + Region *region = nullptr; + if (efield->iregion >= 0) { + region = domain->regions[efield->iregion]; + region->prematch(); + } + + // efield energy is in real units of kcal/mol/angstrom, need to convert to eV + + const double factor = -1.0/force->qe2f; + + // currently we only support constant efield + // atom selection is for the group of fix efield + + if (efield->varflag == FixEfield::CONSTANT) { + double unwrap[3]; + const double fx = efield->ex; + const double fy = efield->ey; + const double fz = efield->ez; + const int efgroupbit = efield->groupbit; + + // charge interactions + // force = qE, potential energy = F dot x in unwrapped coords + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & efgroupbit) { + if (region && !region->match(x[i][0],x[i][1],x[i][2])) continue; + domain->unmap(x[i],image[i],unwrap); + chi_field[i] = factor*(fx*unwrap[0] + fy*unwrap[1] + fz*unwrap[2]); + } + } + } +} diff --git a/src/REAXFF/fix_qeq_reaxff.h b/src/REAXFF/fix_qeq_reaxff.h index ab037aea6b..ac54ff72ca 100644 --- a/src/REAXFF/fix_qeq_reaxff.h +++ b/src/REAXFF/fix_qeq_reaxff.h @@ -45,7 +45,7 @@ class FixQEqReaxFF : public Fix { virtual void init(); void init_list(int, class NeighList *); virtual void init_storage(); - void setup_pre_force(int); + virtual void setup_pre_force(int); virtual void pre_force(int); void setup_pre_force_respa(int, int); @@ -65,6 +65,7 @@ class FixQEqReaxFF : public Fix { int nlevels_respa; class NeighList *list; class PairReaxFF *reaxff; + class FixEfield *efield; int *ilist, *jlist, *numneigh, **firstneigh; double swa, swb; // lower/upper Taper cutoff radius @@ -92,6 +93,7 @@ class FixQEqReaxFF : public Fix { double *Hdia_inv; double *b_s, *b_t; double *b_prc, *b_prm; + double *chi_field; //CG storage double *p, *q, *r, *d; @@ -105,7 +107,7 @@ class FixQEqReaxFF : public Fix { virtual void deallocate_storage(); void reallocate_storage(); virtual void allocate_matrix(); - void deallocate_matrix(); + virtual void deallocate_matrix(); void reallocate_matrix(); virtual void init_matvec(); @@ -134,6 +136,8 @@ class FixQEqReaxFF : public Fix { virtual void vector_sum(double *, double, double *, double, double *, int); virtual void vector_add(double *, double, double *, int); + virtual void get_chi_field(); + // dual CG support int dual_enabled; // 0: Original, separate s & t optimization; 1: dual optimization int matvecs_s, matvecs_t; // Iteration count for each system diff --git a/src/REAXFF/pair_reaxff.cpp b/src/REAXFF/pair_reaxff.cpp index 000209a606..1c6665b604 100644 --- a/src/REAXFF/pair_reaxff.cpp +++ b/src/REAXFF/pair_reaxff.cpp @@ -36,6 +36,7 @@ #include "neigh_request.h" #include "neighbor.h" #include "update.h" +#include "fix_acks2_reaxff.h" #include #include @@ -154,6 +155,7 @@ PairReaxFF::~PairReaxFF() delete [] chi; delete [] eta; delete [] gamma; + delete [] bcut_acks2; } memory->destroy(tmpid); @@ -178,6 +180,7 @@ void PairReaxFF::allocate() chi = new double[n+1]; eta = new double[n+1]; gamma = new double[n+1]; + bcut_acks2 = new double[n+1]; } /* ---------------------------------------------------------------------- */ @@ -333,9 +336,19 @@ void PairReaxFF::init_style() error->all(FLERR,"Pair style reaxff requires atom attribute q"); bool have_qeq = ((modify->find_fix_by_style("^qeq/reax") != -1) - || (modify->find_fix_by_style("^qeq/shielded") != -1)); + || (modify->find_fix_by_style("^qeq/shielded") != -1) + || (modify->find_fix_by_style("^acks2/reax") != -1)); if (!have_qeq && qeqflag == 1) - error->all(FLERR,"Pair reaxff requires use of fix qeq/reaxff or qeq/shielded"); + error->all(FLERR,"Pair reax/c requires use of fix qeq/reax or qeq/shielded" + " or fix acks2/reax"); + + int have_acks2 = (modify->find_fix_by_style("^acks2/reax") != -1); + api->system->acks2_flag = have_acks2; + if (api->system->acks2_flag) { + int ifix = modify->find_fix_by_style("^acks2/reax"); + FixACKS2ReaxFF* acks2_fix = (FixACKS2ReaxFF*) modify->fix[ifix]; + api->workspace->s = acks2_fix->get_s(); + } api->system->n = atom->nlocal; // my atoms api->system->N = atom->nlocal + atom->nghost; // mine + ghosts @@ -462,6 +475,12 @@ void PairReaxFF::compute(int eflag, int vflag) api->system->N = atom->nlocal + atom->nghost; // mine + ghosts api->system->bigN = static_cast (atom->natoms); // all atoms in the system + if (api->system->acks2_flag) { + int ifix = modify->find_fix_by_style("^acks2/reax"); + FixACKS2ReaxFF* acks2_fix = (FixACKS2ReaxFF*) modify->fix[ifix]; + api->workspace->s = acks2_fix->get_s(); + } + // setup data structures setup(); @@ -727,6 +746,16 @@ void *PairReaxFF::extract(const char *str, int &dim) if (map[i] >= 0) gamma[i] = api->system->reax_param.sbp[map[i]].gamma; else gamma[i] = 0.0; return (void *) gamma; + } + if (strcmp(str,"bcut_acks2") == 0 && bcut_acks2) { + for (int i = 1; i <= atom->ntypes; i++) + if (map[i] >= 0) bcut_acks2[i] = api->system->reax_param.sbp[map[i]].bcut_acks2; + else bcut_acks2[i] = 0.0; + return (void *) bcut_acks2; + } + if (strcmp(str,"bond_softness") == 0) { + double* bond_softness = &api->system->reax_param.gp.l[34]; + return (void *) bond_softness; } return nullptr; } diff --git a/src/REAXFF/pair_reaxff.h b/src/REAXFF/pair_reaxff.h index 846d4e8408..23b2ae894a 100644 --- a/src/REAXFF/pair_reaxff.h +++ b/src/REAXFF/pair_reaxff.h @@ -63,7 +63,7 @@ class PairReaxFF : public Pair { double cutmax; class FixReaxFF *fix_reaxff; - double *chi, *eta, *gamma; + double *chi, *eta, *gamma, *bcut_acks2; int qeqflag; int setup_flag; int firstwarn; diff --git a/src/REAXFF/reaxff_api.h b/src/REAXFF/reaxff_api.h index 043a1ebbf6..33436304f1 100644 --- a/src/REAXFF/reaxff_api.h +++ b/src/REAXFF/reaxff_api.h @@ -125,7 +125,7 @@ extern void Atom_Energy(reax_system *, control_params *, simulation_data *, stor // nonbonded -extern void Compute_Polarization_Energy(reax_system *, simulation_data *); +extern void Compute_Polarization_Energy(reax_system *, simulation_data *, storage *); extern void vdW_Coulomb_Energy(reax_system *, control_params *, simulation_data *, storage *, reax_list **); extern void Tabulated_vdW_Coulomb_Energy(reax_system *, control_params *, simulation_data *, diff --git a/src/REAXFF/reaxff_ffield.cpp b/src/REAXFF/reaxff_ffield.cpp index f3f9bf6a00..605e077724 100644 --- a/src/REAXFF/reaxff_ffield.cpp +++ b/src/REAXFF/reaxff_ffield.cpp @@ -205,6 +205,7 @@ namespace ReaxFF { sbp[i].b_o_131 = values.next_double(); sbp[i].b_o_132 = values.next_double(); sbp[i].b_o_133 = values.next_double(); + sbp[i].bcut_acks2 = values.next_double(); // line four diff --git a/src/REAXFF/reaxff_nonbonded.cpp b/src/REAXFF/reaxff_nonbonded.cpp index 8a1e41da29..7acab9915a 100644 --- a/src/REAXFF/reaxff_nonbonded.cpp +++ b/src/REAXFF/reaxff_nonbonded.cpp @@ -32,7 +32,7 @@ #include namespace ReaxFF { - void Compute_Polarization_Energy(reax_system *system, simulation_data *data) + void Compute_Polarization_Energy(reax_system *system, simulation_data *data, storage *workspace) { int i, type_i; double q, en_tmp; @@ -45,6 +45,12 @@ namespace ReaxFF { en_tmp = KCALpMOL_to_EV * (system->reax_param.sbp[type_i].chi * q + (system->reax_param.sbp[type_i].eta / 2.) * SQR(q)); + + if (system->acks2_flag) { + /* energy due to coupling with kinetic energy potential */ + en_tmp += KCALpMOL_to_EV * q * workspace->s[ system->N + i ]; + } + data->my_en.e_pol += en_tmp; /* tally energy into global or per-atom energy accumulators */ @@ -67,6 +73,7 @@ namespace ReaxFF { double dr3gamij_1, dr3gamij_3; double e_ele, e_vdW, e_core, SMALL = 0.0001; double e_lg, de_lg, r_ij5, r_ij6, re6; + double bond_softness, d_bond_softness, d, effpot_diff; two_body_parameters *twbp; far_neighbor_data *nbr_pj; reax_list *far_nbrs; @@ -207,7 +214,83 @@ namespace ReaxFF { } } - Compute_Polarization_Energy(system, data); + /* contribution to energy and gradients (atoms and cell) + * due to geometry-dependent terms in the ACKS2 + * kinetic energy */ + if (system->acks2_flag) + for( i = 0; i < natoms; ++i ) { + if (system->my_atoms[i].type < 0) continue; + start_i = Start_Index(i, far_nbrs); + end_i = End_Index(i, far_nbrs); + orig_i = system->my_atoms[i].orig_id; + + for( pj = start_i; pj < end_i; ++pj ) { + nbr_pj = &(far_nbrs->select.far_nbr_list[pj]); + j = nbr_pj->nbr; + if (system->my_atoms[j].type < 0) continue; + orig_j = system->my_atoms[j].orig_id; + + flag = 0; + + /* kinetic energy terms */ + double xcut = 0.5 * ( system->reax_param.sbp[ system->my_atoms[i].type ].bcut_acks2 + + system->reax_param.sbp[ system->my_atoms[j].type ].bcut_acks2 ); + + if(nbr_pj->d <= xcut) { + if (j < natoms) flag = 1; + else if (orig_i < orig_j) flag = 1; + else if (orig_i == orig_j) { + if (nbr_pj->dvec[2] > SMALL) flag = 1; + else if (fabs(nbr_pj->dvec[2]) < SMALL) { + if (nbr_pj->dvec[1] > SMALL) flag = 1; + else if (fabs(nbr_pj->dvec[1]) < SMALL && nbr_pj->dvec[0] > SMALL) + flag = 1; + } + } + } + + if (flag) { + + d = nbr_pj->d / xcut; + bond_softness = system->reax_param.gp.l[34] * pow( d, 3.0 ) + * pow( 1.0 - d, 6.0 ); + + if ( bond_softness > 0.0 ) + { + /* Coulombic energy contribution */ + effpot_diff = workspace->s[system->N + i] + - workspace->s[system->N + j]; + e_ele = -0.5 * KCALpMOL_to_EV * bond_softness + * SQR( effpot_diff ); + + data->my_en.e_ele += e_ele; + + /* forces contribution */ + d_bond_softness = system->reax_param.gp.l[34] + * 3.0 / xcut * pow( d, 2.0 ) + * pow( 1.0 - d, 5.0 ) * (1.0 - 3.0 * d); + d_bond_softness = -0.5 * d_bond_softness + * SQR( effpot_diff ); + d_bond_softness = KCALpMOL_to_EV * d_bond_softness + / nbr_pj->d; + + /* tally into per-atom energy */ + if (system->pair_ptr->evflag || system->pair_ptr->vflag_atom) { + rvec_ScaledSum( delij, 1., system->my_atoms[i].x, + -1., system->my_atoms[j].x ); + f_tmp = -d_bond_softness; + system->pair_ptr->ev_tally(i,j,natoms,1,0.0,e_ele, + f_tmp,delij[0],delij[1],delij[2]); + } + + rvec_ScaledAdd( workspace->f[i], -d_bond_softness, nbr_pj->dvec ); + rvec_ScaledAdd( workspace->f[j], d_bond_softness, nbr_pj->dvec ); + } + } + } + } + + Compute_Polarization_Energy( system, data, workspace ); } void Tabulated_vdW_Coulomb_Energy(reax_system *system, control_params *control, @@ -222,6 +305,7 @@ namespace ReaxFF { double e_vdW, e_ele; double CEvd, CEclmb, SMALL = 0.0001; double f_tmp, delij[3]; + double bond_softness, d_bond_softness, d, effpot_diff; far_neighbor_data *nbr_pj; reax_list *far_nbrs; @@ -306,7 +390,83 @@ namespace ReaxFF { } } - Compute_Polarization_Energy(system, data); + /* contribution to energy and gradients (atoms and cell) + * due to geometry-dependent terms in the ACKS2 + * kinetic energy */ + if (system->acks2_flag) + for( i = 0; i < natoms; ++i ) { + if (system->my_atoms[i].type < 0) continue; + start_i = Start_Index(i, far_nbrs); + end_i = End_Index(i, far_nbrs); + orig_i = system->my_atoms[i].orig_id; + + for( pj = start_i; pj < end_i; ++pj ) { + nbr_pj = &(far_nbrs->select.far_nbr_list[pj]); + j = nbr_pj->nbr; + if (system->my_atoms[j].type < 0) continue; + orig_j = system->my_atoms[j].orig_id; + + flag = 0; + + /* kinetic energy terms */ + double xcut = 0.5 * ( system->reax_param.sbp[ system->my_atoms[i].type ].bcut_acks2 + + system->reax_param.sbp[ system->my_atoms[j].type ].bcut_acks2 ); + + if(nbr_pj->d <= xcut) { + if (j < natoms) flag = 1; + else if (orig_i < orig_j) flag = 1; + else if (orig_i == orig_j) { + if (nbr_pj->dvec[2] > SMALL) flag = 1; + else if (fabs(nbr_pj->dvec[2]) < SMALL) { + if (nbr_pj->dvec[1] > SMALL) flag = 1; + else if (fabs(nbr_pj->dvec[1]) < SMALL && nbr_pj->dvec[0] > SMALL) + flag = 1; + } + } + } + + if (flag) { + + d = nbr_pj->d / xcut; + bond_softness = system->reax_param.gp.l[34] * pow( d, 3.0 ) + * pow( 1.0 - d, 6.0 ); + + if ( bond_softness > 0.0 ) + { + /* Coulombic energy contribution */ + effpot_diff = workspace->s[system->N + i] + - workspace->s[system->N + j]; + e_ele = -0.5 * KCALpMOL_to_EV * bond_softness + * SQR( effpot_diff ); + + data->my_en.e_ele += e_ele; + + /* forces contribution */ + d_bond_softness = system->reax_param.gp.l[34] + * 3.0 / xcut * pow( d, 2.0 ) + * pow( 1.0 - d, 5.0 ) * (1.0 - 3.0 * d); + d_bond_softness = -0.5 * d_bond_softness + * SQR( effpot_diff ); + d_bond_softness = KCALpMOL_to_EV * d_bond_softness + / nbr_pj->d; + + /* tally into per-atom energy */ + if (system->pair_ptr->evflag || system->pair_ptr->vflag_atom) { + rvec_ScaledSum( delij, 1., system->my_atoms[i].x, + -1., system->my_atoms[j].x ); + f_tmp = -d_bond_softness; + system->pair_ptr->ev_tally(i,j,natoms,1,0.0,e_ele, + f_tmp,delij[0],delij[1],delij[2]); + } + + rvec_ScaledAdd( workspace->f[i], -d_bond_softness, nbr_pj->dvec ); + rvec_ScaledAdd( workspace->f[j], d_bond_softness, nbr_pj->dvec ); + } + } + } + } + + Compute_Polarization_Energy(system, data, workspace); } void LR_vdW_Coulomb(reax_system *system, storage *workspace, diff --git a/src/REAXFF/reaxff_types.h b/src/REAXFF/reaxff_types.h index c124a2639d..1eac663e52 100644 --- a/src/REAXFF/reaxff_types.h +++ b/src/REAXFF/reaxff_types.h @@ -77,6 +77,7 @@ struct single_body_parameters { double b_o_131; double b_o_132; double b_o_133; + double bcut_acks2; // ACKS2 bond cutoff /* Line four in the field file */ double p_ovun2; @@ -212,6 +213,7 @@ struct reax_system { LR_lookup_table **LR; int omp_active; + int acks2_flag; }; /* system control parameters */ @@ -340,6 +342,9 @@ struct storage { double *CdDeltaReduction; int *valence_angle_atom_myoffset; + /* acks2 */ + double *s; + reallocate_data realloc; }; diff --git a/src/REPLICA/fix_pimd.cpp b/src/REPLICA/fix_pimd.cpp index bb4af16f1b..d4b3447f15 100644 --- a/src/REPLICA/fix_pimd.cpp +++ b/src/REPLICA/fix_pimd.cpp @@ -676,16 +676,11 @@ void FixPIMD::comm_exec(double **ptr) int index = atom->map(tag_send[i]); if (index < 0) { - char error_line[256]; - - sprintf(error_line, - "Atom " TAGINT_FORMAT " is missing at world [%d] " - "rank [%d] required by rank [%d] (" TAGINT_FORMAT ", " TAGINT_FORMAT - ", " TAGINT_FORMAT ").\n", - tag_send[i], universe->iworld, comm->me, plan_recv[iplan], atom->tag[0], - atom->tag[1], atom->tag[2]); - - error->universe_one(FLERR, error_line); + auto mesg = fmt::format("Atom {} is missing at world [{}] rank [{}] " + "required by rank [{}] ({}, {}, {}).\n", + tag_send[i], universe->iworld, comm->me, + plan_recv[iplan], atom->tag[0], atom->tag[1], atom->tag[2]); + error->universe_one(FLERR, mesg); } memcpy(wrap_ptr, ptr[index], ncpy); diff --git a/src/REPLICA/tad.cpp b/src/REPLICA/tad.cpp index 881ec1604c..0b1cc915c6 100644 --- a/src/REPLICA/tad.cpp +++ b/src/REPLICA/tad.cpp @@ -840,11 +840,9 @@ void TAD::initialize_event_list() { void TAD::delete_event_list() { - for (int i = 0; i < n_event_list; i++) { - char str[128]; - sprintf(str,"tad_event_%d",i); - modify->delete_fix(str); - } + for (int i = 0; i < n_event_list; i++) + modify->delete_fix(fmt::format("tad_event_{}",i)); + memory->sfree(fix_event_list); fix_event_list = nullptr; n_event_list = 0; diff --git a/src/SPIN/pair_spin.cpp b/src/SPIN/pair_spin.cpp index 9731a447a6..74f7aaaf77 100644 --- a/src/SPIN/pair_spin.cpp +++ b/src/SPIN/pair_spin.cpp @@ -53,10 +53,6 @@ PairSpin::PairSpin(LAMMPS *lmp) : Pair(lmp), emag(nullptr) lattice_flag = 0; } -/* ---------------------------------------------------------------------- */ - -PairSpin::~PairSpin() {} - /* ---------------------------------------------------------------------- global settings ------------------------------------------------------------------------- */ diff --git a/src/SPIN/pair_spin.h b/src/SPIN/pair_spin.h index 91262cdb5d..a9341bcb71 100644 --- a/src/SPIN/pair_spin.h +++ b/src/SPIN/pair_spin.h @@ -23,7 +23,7 @@ class PairSpin : public Pair { public: PairSpin(class LAMMPS *); - virtual ~PairSpin(); + virtual ~PairSpin() = default; virtual void settings(int, char **); virtual void coeff(int, char **) {} virtual void init_style(); diff --git a/src/VTK/dump_vtk.cpp b/src/VTK/dump_vtk.cpp index a7aabe3f51..54dc0d4b0e 100644 --- a/src/VTK/dump_vtk.cpp +++ b/src/VTK/dump_vtk.cpp @@ -31,6 +31,7 @@ #include "domain.h" #include "error.h" #include "fix.h" +#include "fix_store.h" #include "force.h" #include "group.h" #include "input.h" @@ -87,9 +88,9 @@ enum{X,Y,Z, // required for vtk, must come first Q,MUX,MUY,MUZ,MU,RADIUS,DIAMETER, OMEGAX,OMEGAY,OMEGAZ,ANGMOMX,ANGMOMY,ANGMOMZ, TQX,TQY,TQZ, - VARIABLE,COMPUTE,FIX,INAME,DNAME, + COMPUTE,FIX,VARIABLE,IVEC,DVEC,IARRAY,DARRAY, ATTRIBUTES}; // must come last -enum{LT,LE,GT,GE,EQ,NEQ}; +enum{LT,LE,GT,GE,EQ,NEQ,XOR}; enum{VTK,VTP,VTU,PVTP,PVTU}; // file formats #define ONEFIELD 32 @@ -119,11 +120,10 @@ DumpVTK::DumpVTK(LAMMPS *lmp, int narg, char **arg) : // ioptional = start of additional optional args // only dump image and dump movie styles process optional args - ioptional = parse_fields(narg,arg); + ioptional = parse_fields(nargnew,earg); - if (ioptional < narg && - strcmp(style,"image") != 0 && strcmp(style,"movie") != 0) - error->all(FLERR,"Invalid attribute in dump vtk command"); + if (ioptional < nargnew) + error->all(FLERR,"Invalid attribute {} in dump vtk command", earg[ioptional]); size_one = pack_choice.size(); current_pack_choice_key = -1; @@ -210,38 +210,40 @@ void DumpVTK::init_style() else write_choice = &DumpVTK::write_vtk; - // find current ptr for each compute,fix,variable + // find current ptr for each compute,fix,variable and custom atom property // check that fix frequency is acceptable - int icompute; for (int i = 0; i < ncompute; i++) { - icompute = modify->find_compute(id_compute[i]); + int icompute = modify->find_compute(id_compute[i]); if (icompute < 0) error->all(FLERR,"Could not find dump vtk compute ID"); compute[i] = modify->compute[icompute]; } - int ifix; for (int i = 0; i < nfix; i++) { - ifix = modify->find_fix(id_fix[i]); + int ifix = modify->find_fix(id_fix[i]); if (ifix < 0) error->all(FLERR,"Could not find dump vtk fix ID"); fix[i] = modify->fix[ifix]; if (nevery % modify->fix[ifix]->peratom_freq) error->all(FLERR,"Dump vtk and fix not computed at compatible times"); } - int ivariable; for (int i = 0; i < nvariable; i++) { - ivariable = input->variable->find(id_variable[i]); + int ivariable = input->variable->find(id_variable[i]); if (ivariable < 0) error->all(FLERR,"Could not find dump vtk variable name"); variable[i] = ivariable; } - int icustom; + int icustom,flag,cols; for (int i = 0; i < ncustom; i++) { - icustom = atom->find_custom(id_custom[i],flag_custom[i]); + icustom = atom->find_custom(id_custom[i],flag,cols); if (icustom < 0) error->all(FLERR,"Could not find custom per-atom property ID"); + custom[i] = icustom; + if (!flag && !cols) custom_flag[i] = IVEC; + else if (flag && !cols) custom_flag[i] = DVEC; + else if (!flag && cols) custom_flag[i] = IARRAY; + else if (flag && cols) custom_flag[i] = DARRAY; } // set index and check validity of region @@ -275,7 +277,7 @@ int DumpVTK::count() // grow choose and variable vbuf arrays if needed - int nlocal = atom->nlocal; + const int nlocal = atom->nlocal; if (atom->nmax > maxlocal) { maxlocal = atom->nmax; @@ -345,10 +347,10 @@ int DumpVTK::count() // un-choose if any threshold criterion isn't met if (nthresh) { - double *ptr; + double *ptr,*ptrhold; + double *values; double value; - int nstride; - int nlocal = atom->nlocal; + int nstride,lastflag; for (int ithresh = 0; ithresh < nthresh; ithresh++) { @@ -635,26 +637,22 @@ int DumpVTK::count() nstride = 1; } else if (thresh_array[ithresh] == MUX) { if (!atom->mu_flag) - error->all(FLERR, - "Threshold for an atom property that isn't allocated"); + error->all(FLERR,"Threshold for an atom property that isn't allocated"); ptr = &atom->mu[0][0]; nstride = 4; } else if (thresh_array[ithresh] == MUY) { if (!atom->mu_flag) - error->all(FLERR, - "Threshold for an atom property that isn't allocated"); + error->all(FLERR,"Threshold for an atom property that isn't allocated"); ptr = &atom->mu[0][1]; nstride = 4; } else if (thresh_array[ithresh] == MUZ) { if (!atom->mu_flag) - error->all(FLERR, - "Threshold for an atom property that isn't allocated"); + error->all(FLERR,"Threshold for an atom property that isn't allocated"); ptr = &atom->mu[0][2]; nstride = 4; } else if (thresh_array[ithresh] == MU) { if (!atom->mu_flag) - error->all(FLERR, - "Threshold for an atom property that isn't allocated"); + error->all(FLERR,"Threshold for an atom property that isn't allocated"); ptr = &atom->mu[0][3]; nstride = 4; @@ -753,9 +751,8 @@ int DumpVTK::count() nstride = 1; } else if (thresh_array[ithresh] == IVEC) { - int iwhich,flag,cols i = ATTRIBUTES + nfield + ithresh; - iwhich = atom->find_custom(id_custom[field2index[i]],flag,cols); + int iwhich = custom[field2index[i]]; int *ivector = atom->ivector[iwhich]; for (i = 0; i < nlocal; i++) dchoose[i] = ivector[i]; @@ -763,16 +760,14 @@ int DumpVTK::count() nstride = 1; } else if (thresh_array[ithresh] == DVEC) { - int iwhich,flag,cols; i = ATTRIBUTES + nfield + ithresh; - iwhich = atom->find_custom(id_custom[field2index[i]],flag,cols); + int iwhich = custom[field2index[i]]; ptr = atom->dvector[iwhich]; nstride = 1; } else if (thresh_array[ithresh] == IARRAY) { - int iwhich,flag,cols; i = ATTRIBUTES + nfield + ithresh; - iwhich = atom->find_custom(id_custom[field2index[i]],flag,cols); + int iwhich = custom[field2index[i]]; int **iarray = atom->iarray[iwhich]; int icol = argindex[i] - 1; for (i = 0; i < nlocal; i++) @@ -781,43 +776,99 @@ int DumpVTK::count() nstride = 1; } else if (thresh_array[ithresh] == DARRAY) { - int iwhich,flag,cols; i = ATTRIBUTES + nfield + ithresh; - iwhich = atom->find_custom(id_custom[field2index[i]],flag,cols) + int iwhich = custom[field2index[i]]; double **darray = atom->darray[iwhich]; ptr = &darray[0][argindex[i]-1]; nstride = atom->dcols[iwhich]; } // unselect atoms that don't meet threshold criterion + // compare to single value or values stored in threshfix + // copy ptr attribute into thresh_fix if this is first comparison - value = thresh_value[ithresh]; + if (thresh_last[ithresh] < 0) { + lastflag = 0; + value = thresh_value[ithresh]; + } else { + lastflag = 1; + int ilast = thresh_last[ithresh]; + values = thresh_fix[ilast]->vstore; + ptrhold = ptr; + if (thresh_first[ilast]) { + thresh_first[ilast] = 0; + for (i = 0; i < nlocal; i++, ptr += nstride) values[i] = *ptr; + ptr = ptrhold; + } + } - switch (thresh_op[ithresh]) { - case LT: - for (i = 0; i < nlocal; i++, ptr += nstride) - if (choose[i] && *ptr >= value) choose[i] = 0; - break; - case LE: - for (i = 0; i < nlocal; i++, ptr += nstride) - if (choose[i] && *ptr > value) choose[i] = 0; - break; - case GT: - for (i = 0; i < nlocal; i++, ptr += nstride) - if (choose[i] && *ptr <= value) choose[i] = 0; - break; - case GE: - for (i = 0; i < nlocal; i++, ptr += nstride) - if (choose[i] && *ptr < value) choose[i] = 0; - break; - case EQ: - for (i = 0; i < nlocal; i++, ptr += nstride) - if (choose[i] && *ptr != value) choose[i] = 0; - break; - case NEQ: - for (i = 0; i < nlocal; i++, ptr += nstride) - if (choose[i] && *ptr == value) choose[i] = 0; - break; + if (thresh_op[ithresh] == LT) { + if (lastflag) { + for (i = 0; i < nlocal; i++, ptr += nstride) + if (choose[i] && *ptr >= values[i]) choose[i] = 0; + } else { + for (i = 0; i < nlocal; i++, ptr += nstride) + if (choose[i] && *ptr >= value) choose[i] = 0; + } + } else if (thresh_op[ithresh] == LE) { + if (lastflag) { + for (i = 0; i < nlocal; i++, ptr += nstride) + if (choose[i] && *ptr > values[i]) choose[i] = 0; + } else { + for (i = 0; i < nlocal; i++, ptr += nstride) + if (choose[i] && *ptr > value) choose[i] = 0; + } + } else if (thresh_op[ithresh] == GT) { + if (lastflag) { + for (i = 0; i < nlocal; i++, ptr += nstride) + if (choose[i] && *ptr <= values[i]) choose[i] = 0; + } else { + for (i = 0; i < nlocal; i++, ptr += nstride) + if (choose[i] && *ptr <= value) choose[i] = 0; + } + } else if (thresh_op[ithresh] == GE) { + if (lastflag) { + for (i = 0; i < nlocal; i++, ptr += nstride) + if (choose[i] && *ptr < values[i]) choose[i] = 0; + } else { + for (i = 0; i < nlocal; i++, ptr += nstride) + if (choose[i] && *ptr < value) choose[i] = 0; + } + } else if (thresh_op[ithresh] == EQ) { + if (lastflag) { + for (i = 0; i < nlocal; i++, ptr += nstride) + if (choose[i] && *ptr != values[i]) choose[i] = 0; + } else { + for (i = 0; i < nlocal; i++, ptr += nstride) + if (choose[i] && *ptr != value) choose[i] = 0; + } + } else if (thresh_op[ithresh] == NEQ) { + if (lastflag) { + for (i = 0; i < nlocal; i++, ptr += nstride) + if (choose[i] && *ptr == values[i]) choose[i] = 0; + } else { + for (i = 0; i < nlocal; i++, ptr += nstride) + if (choose[i] && *ptr == value) choose[i] = 0; + } + } else if (thresh_op[ithresh] == XOR) { + if (lastflag) { + for (i = 0; i < nlocal; i++, ptr += nstride) + if ((choose[i] && *ptr == 0.0 && values[i] == 0.0) || + (*ptr != 0.0 && values[i] != 0.0)) + choose[i] = 0; + } else { + for (i = 0; i < nlocal; i++, ptr += nstride) + if ((choose[i] && *ptr == 0.0 && value == 0.0) || + (*ptr != 0.0 && value != 0.0)) + choose[i] = 0; + } + } + + // update values stored in threshfix + + if (lastflag) { + ptr = ptrhold; + for (i = 0; i < nlocal; i++, ptr += nstride) values[i] = *ptr; } } } @@ -1754,15 +1805,16 @@ int DumpVTK::parse_fields(int narg, char **arg) } else { - int n,tmp; + int n,flag,cols; ArgInfo argi(arg[iarg],ArgInfo::COMPUTE|ArgInfo::FIX|ArgInfo::VARIABLE - |ArgInfo::DVEC|ArgInfo::IVEC); + |ArgInfo::DNAME|ArgInfo::INAME); argindex[ATTRIBUTES+i] = argi.get_index1(); + auto aname = argi.get_name(); switch (argi.get_type()) { case ArgInfo::UNKNOWN: - error->all(FLERR,"Invalid attribute in dump vtk command"); + error->all(FLERR,"Invalid attribute in dump vtk command: {}",arg[iarg]); break; // compute value = c_ID @@ -1772,21 +1824,19 @@ int DumpVTK::parse_fields(int narg, char **arg) pack_choice[ATTRIBUTES+i] = &DumpVTK::pack_compute; vtype[ATTRIBUTES+i] = Dump::DOUBLE; - n = modify->find_compute(argi.get_name()); - if (n < 0) error->all(FLERR,"Could not find dump vtk compute ID"); + n = modify->find_compute(aname); + if (n < 0) error->all(FLERR,"Could not find dump vtk compute ID: {}",aname); if (modify->compute[n]->peratom_flag == 0) - error->all(FLERR,"Dump vtk compute does not compute per-atom info"); + error->all(FLERR,"Dump vtk compute {} does not compute per-atom info",aname); if (argi.get_dim() == 0 && modify->compute[n]->size_peratom_cols > 0) - error->all(FLERR, - "Dump vtk compute does not calculate per-atom vector"); + error->all(FLERR,"Dump vtk compute {} does not calculate per-atom vector",aname); if (argi.get_dim() > 0 && modify->compute[n]->size_peratom_cols == 0) - error->all(FLERR, - "Dump vtk compute does not calculate per-atom array"); + error->all(FLERR,"Dump vtk compute {} does not calculate per-atom array",aname); if (argi.get_dim() > 0 && argi.get_index1() > modify->compute[n]->size_peratom_cols) - error->all(FLERR,"Dump vtk compute vector is accessed out-of-range"); + error->all(FLERR,"Dump vtk compute {} vector is accessed out-of-range",aname); - field2index[ATTRIBUTES+i] = add_compute(argi.get_name()); + field2index[ATTRIBUTES+i] = add_compute(aname); name[ATTRIBUTES+i] = arg[iarg]; break; @@ -1797,19 +1847,19 @@ int DumpVTK::parse_fields(int narg, char **arg) pack_choice[ATTRIBUTES+i] = &DumpVTK::pack_fix; vtype[ATTRIBUTES+i] = Dump::DOUBLE; - n = modify->find_fix(argi.get_name()); - if (n < 0) error->all(FLERR,"Could not find dump vtk fix ID"); + n = modify->find_fix(aname); + if (n < 0) error->all(FLERR,"Could not find dump vtk fix ID: {}",aname); if (modify->fix[n]->peratom_flag == 0) - error->all(FLERR,"Dump vtk fix does not compute per-atom info"); + error->all(FLERR,"Dump vtk fix {} does not compute per-atom info",aname); if (argi.get_dim() == 0 && modify->fix[n]->size_peratom_cols > 0) - error->all(FLERR,"Dump vtk fix does not compute per-atom vector"); + error->all(FLERR,"Dump vtk fix {} does not compute per-atom vector",aname); if (argi.get_dim() > 0 && modify->fix[n]->size_peratom_cols == 0) - error->all(FLERR,"Dump vtk fix does not compute per-atom array"); + error->all(FLERR,"Dump vtk fix {} does not compute per-atom array",aname); if (argi.get_dim() > 0 && argi.get_index1() > modify->fix[n]->size_peratom_cols) - error->all(FLERR,"Dump vtk fix vector is accessed out-of-range"); + error->all(FLERR,"Dump vtk fix {} vector is accessed out-of-range",aname); - field2index[ATTRIBUTES+i] = add_fix(argi.get_name()); + field2index[ATTRIBUTES+i] = add_fix(aname); name[ATTRIBUTES+i] = arg[iarg]; break; @@ -1819,61 +1869,62 @@ int DumpVTK::parse_fields(int narg, char **arg) pack_choice[ATTRIBUTES+i] = &DumpVTK::pack_variable; vtype[ATTRIBUTES+i] = Dump::DOUBLE; - n = input->variable->find(argi.get_name()); - if (n < 0) error->all(FLERR,"Could not find dump vtk variable name"); + n = input->variable->find(aname); + if (n < 0) error->all(FLERR,"Could not find dump vtk variable name {}",aname); if (input->variable->atomstyle(n) == 0) - error->all(FLERR,"Dump vtk variable is not atom-style variable"); + error->all(FLERR,"Dump vtk variable {} is not atom-style variable",aname); - field2index[ATTRIBUTES+i] = add_variable(argi.get_name()); + field2index[ATTRIBUTES+i] = add_variable(aname); name[ATTRIBUTES+i] = arg[iarg]; break; - // custom per-atom integer vector = i_ID - - case ArgInfo::INAME: - pack_choice[ATTRIBUTES+i] = &DumpVTK::pack_custom; - vtype[ATTRIBUTES+i] = Dump::INT; - - tmp = -1; - n = atom->find_custom(argi.get_name(),tmp); - if (n < 0) - error->all(FLERR,"Could not find custom per-atom property ID"); - - if (tmp != 0) - error->all(FLERR,"Custom per-atom property ID is not integer"); - - field2index[ATTRIBUTES+i] = add_custom(argi.get_name(),0); - name[ATTRIBUTES+i] = arg[iarg]; - break; - - // custom per-atom floating point vector = d_ID + // custom per-atom floating point vector or array = d_ID d2_ID case ArgInfo::DNAME: pack_choice[ATTRIBUTES+i] = &DumpVTK::pack_custom; vtype[ATTRIBUTES+i] = Dump::DOUBLE; - tmp = -1; - n = atom->find_custom(argi.get_name(),tmp); + n = atom->find_custom(aname,flag,cols); + if (n < 0) - error->all(FLERR,"Could not find custom per-atom property ID"); - - if (tmp != 1) - error->all(FLERR,"Custom per-atom property ID is not floating point"); - - field2index[ATTRIBUTES+i] = add_custom(argi.get_name(),1); + error->all(FLERR,"Could not find custom per-atom property ID: {}", aname); + if (argindex[ATTRIBUTES+i] == 0) { + if (!flag || cols) + error->all(FLERR,"Property double vector {} for dump vtk does not exist",aname); + } else { + if (!flag || !cols) + error->all(FLERR,"Property double array {} for dump vtk does not exist",aname); + if (argindex[ATTRIBUTES+i] > atom->dcols[n]) + error->all(FLERR,"Dump vtk property array {} is accessed out-of-range",aname); + } + field2index[ATTRIBUTES+i] = add_custom(aname,1); name[ATTRIBUTES+i] = arg[iarg]; break; - // NEWSTYLE - // custom per-atom integer array = i2_ID + // custom per-atom integer vector or array = i_ID or i2_ID - case ArgInfo::IARRAY: - return iarg; + case ArgInfo::INAME: + pack_choice[ATTRIBUTES+i] = &DumpVTK::pack_custom; + vtype[ATTRIBUTES+i] = Dump::INT; - // custom per-atom floating point array = d2_ID + n = atom->find_custom(aname,flag,cols); - case ArgInfo::DARRAY: - return iarg; + if (n < 0) + error->all(FLERR,"Could not find custom per-atom property ID: {}", aname); + if (argindex[ATTRIBUTES+i] == 0) { + if (flag || cols) + error->all(FLERR,"Property integer vector {} for dump vtk does not exist",aname); + } else { + if (flag || !cols) + error->all(FLERR,"Property integer array {} for dump vtk does not exist",aname); + if (argindex[ATTRIBUTES+i] > atom->icols[n]) + error->all(FLERR,"Dump vtk property array {} is accessed out-of-range",aname); + } + field2index[ATTRIBUTES+i] = add_custom(aname,0); + name[ATTRIBUTES+i] = arg[iarg]; + break; + + // no match default: return iarg; @@ -1948,12 +1999,10 @@ int DumpVTK::add_compute(const char *id) id_compute = (char **) memory->srealloc(id_compute,(ncompute+1)*sizeof(char *),"dump:id_compute"); - delete [] compute; + delete[] compute; compute = new Compute*[ncompute+1]; - int n = strlen(id) + 1; - id_compute[ncompute] = new char[n]; - strcpy(id_compute[ncompute],id); + id_compute[ncompute] = utils::strdup(id); ncompute++; return ncompute-1; } @@ -1973,12 +2022,10 @@ int DumpVTK::add_fix(const char *id) id_fix = (char **) memory->srealloc(id_fix,(nfix+1)*sizeof(char *),"dump:id_fix"); - delete [] fix; + delete[] fix; fix = new Fix*[nfix+1]; - int n = strlen(id) + 1; - id_fix[nfix] = new char[n]; - strcpy(id_fix[nfix],id); + id_fix[nfix] = utils::strdup(id); nfix++; return nfix-1; } @@ -1999,22 +2046,20 @@ int DumpVTK::add_variable(const char *id) id_variable = (char **) memory->srealloc(id_variable,(nvariable+1)*sizeof(char *), "dump:id_variable"); - delete [] variable; + delete[] variable; variable = new int[nvariable+1]; - delete [] vbuf; + delete[] vbuf; vbuf = new double*[nvariable+1]; for (int i = 0; i <= nvariable; i++) vbuf[i] = nullptr; - int n = strlen(id) + 1; - id_variable[nvariable] = new char[n]; - strcpy(id_variable[nvariable],id); + id_variable[nvariable] = utils::strdup(id); nvariable++; return nvariable-1; } /* ---------------------------------------------------------------------- add custom atom property to list used by dump - return index of where this property is in list + return index of where this property is in Atom class custom lists if already in list, do not add, just return index, else add to list ------------------------------------------------------------------------- */ @@ -2022,21 +2067,17 @@ int DumpVTK::add_custom(const char *id, int flag) { int icustom; for (icustom = 0; icustom < ncustom; icustom++) - if ((strcmp(id,id_custom[icustom]) == 0) - && (flag == flag_custom[icustom])) break; + if (strcmp(id,id_custom[icustom]) == 0) break; if (icustom < ncustom) return icustom; - id_custom = (char **) - memory->srealloc(id_custom,(ncustom+1)*sizeof(char *),"dump:id_custom"); - flag_custom = (int *) - memory->srealloc(flag_custom,(ncustom+1)*sizeof(int),"dump:flag_custom"); - - int n = strlen(id) + 1; - id_custom[ncustom] = new char[n]; - strcpy(id_custom[ncustom],id); - flag_custom[ncustom] = flag; + id_custom = (char **) memory->srealloc(id_custom,(ncustom+1)*sizeof(char *),"dump:id_custom"); + custom = (int *) memory->srealloc(custom,(ncustom+1)*sizeof(int),"dump:custom"); + custom_flag = (int *) memory->srealloc(custom_flag,(ncustom+1)*sizeof(int),"dump:custom_flag"); + id_custom[ncustom] = utils::strdup(id); + custom_flag[ncustom] = flag; ncustom++; + return ncustom-1; } @@ -2050,21 +2091,17 @@ int DumpVTK::modify_param(int narg, char **arg) else { iregion = domain->find_region(arg[1]); if (iregion == -1) - error->all(FLERR,"Dump_modify region ID does not exist"); - delete [] idregion; - int n = strlen(arg[1]) + 1; - idregion = new char[n]; - strcpy(idregion,arg[1]); + error->all(FLERR,"Dump_modify region ID {} does not exist",arg[1]); + delete[] idregion; + idregion = utils::strdup(arg[1]); } return 2; } if (strcmp(arg[0],"label") == 0) { if (narg < 2) error->all(FLERR,"Illegal dump_modify command [label]"); - delete [] label; - int n = strlen(arg[1]) + 1; - label = new char[n]; - strcpy(label,arg[1]); + delete[] label; + label = utils::strdup(arg[1]); return 2; } @@ -2076,23 +2113,29 @@ int DumpVTK::modify_param(int narg, char **arg) if (strcmp(arg[0],"element") == 0) { if (narg < ntypes+1) - error->all(FLERR,"Dump modify: number of element names do not match atom types"); - - if (typenames) { - for (int i = 1; i <= ntypes; i++) delete [] typenames[i]; - delete [] typenames; - typenames = nullptr; - } + error->all(FLERR,"Number of dump_modify element names does not match number of atom types"); + for (int i = 1; i <= ntypes; i++) delete[] typenames[i]; + delete[] typenames; typenames = new char*[ntypes+1]; for (int itype = 1; itype <= ntypes; itype++) { - int n = strlen(arg[itype]) + 1; - typenames[itype] = new char[n]; - strcpy(typenames[itype],arg[itype]); + typenames[itype] = utils::strdup(arg[itype]); } return ntypes+1; } + if (strcmp(arg[0],"refresh") == 0) { + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); + ArgInfo argi(arg[1],ArgInfo::COMPUTE); + if ((argi.get_type() != ArgInfo::COMPUTE) || (argi.get_dim() != 0)) + error->all(FLERR,"Illegal dump_modify command"); + if (refreshflag) error->all(FLERR,"Dump_modify can only have one refresh"); + + refreshflag = 1; + refresh = argi.copy_name(); + return 2; + } + if (strcmp(arg[0],"thresh") == 0) { if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); if (strcmp(arg[1],"none") == 0) { @@ -2103,8 +2146,16 @@ int DumpVTK::modify_param(int narg, char **arg) thresh_array = nullptr; thresh_op = nullptr; thresh_value = nullptr; + thresh_last = nullptr; + for (int i = 0; i < nthreshlast; i++) { + modify->delete_fix(thresh_fixID[i]); + delete[] thresh_fixID[i]; + } + thresh_fix = nullptr; + thresh_fixID = nullptr; + thresh_first = nullptr; } - nthresh = 0; + nthresh = nthreshlast = 0; return 2; } @@ -2115,6 +2166,7 @@ int DumpVTK::modify_param(int narg, char **arg) memory->grow(thresh_array,nthresh+1,"dump:thresh_array"); memory->grow(thresh_op,(nthresh+1),"dump:thresh_op"); memory->grow(thresh_value,(nthresh+1),"dump:thresh_value"); + memory->grow(thresh_last,(nthresh+1),"dump:thresh_last"); // set attribute type of threshold // customize by adding to if statement @@ -2197,98 +2249,125 @@ int DumpVTK::modify_param(int narg, char **arg) else if (strcmp(arg[1],"tqy") == 0) thresh_array[nthresh] = TQY; else if (strcmp(arg[1],"tqz") == 0) thresh_array[nthresh] = TQZ; - // compute value = c_ID - // if no trailing [], then arg is set to 0, else arg is between [] + // compute or fix or variable or custom vector/array - else if (strncmp(arg[1],"c_",2) == 0) { - thresh_array[nthresh] = COMPUTE; - int n = strlen(arg[1]); - char *suffix = new char[n]; - strcpy(suffix,&arg[1][2]); + else { + int n,flag,cols; + ArgInfo argi(arg[1],ArgInfo::COMPUTE|ArgInfo::FIX|ArgInfo::VARIABLE + |ArgInfo::DNAME|ArgInfo::INAME); + argindex[ATTRIBUTES+nfield+nthresh] = argi.get_index1(); + auto aname = argi.get_name(); - char *ptr = strchr(suffix,'['); - if (ptr) { - if (suffix[strlen(suffix)-1] != ']') - error->all(FLERR,"Invalid attribute in dump modify command"); - argindex[ATTRIBUTES+nfield+nthresh] = atoi(ptr+1); - *ptr = '\0'; - } else argindex[ATTRIBUTES+nfield+nthresh] = 0; + switch (argi.get_type()) { - n = modify->find_compute(suffix); - if (n < 0) error->all(FLERR,"Could not find dump modify compute ID"); + case ArgInfo::UNKNOWN: + error->all(FLERR,"Invalid attribute in dump modify command"); + break; - if (modify->compute[n]->peratom_flag == 0) - error->all(FLERR, - "Dump modify compute ID does not compute per-atom info"); - if (argindex[ATTRIBUTES+nfield+nthresh] == 0 && - modify->compute[n]->size_peratom_cols > 0) - error->all(FLERR, - "Dump modify compute ID does not compute per-atom vector"); - if (argindex[ATTRIBUTES+nfield+nthresh] > 0 && - modify->compute[n]->size_peratom_cols == 0) - error->all(FLERR, - "Dump modify compute ID does not compute per-atom array"); - if (argindex[ATTRIBUTES+nfield+nthresh] > 0 && - argindex[ATTRIBUTES+nfield+nthresh] > modify->compute[n]->size_peratom_cols) - error->all(FLERR,"Dump modify compute ID vector is not large enough"); + // compute value = c_ID + // if no trailing [], then arg is set to 0, else arg is between [] - field2index[ATTRIBUTES+nfield+nthresh] = add_compute(suffix); - delete [] suffix; + case ArgInfo::COMPUTE: + thresh_array[nthresh] = COMPUTE; + n = modify->find_compute(aname); + if (n < 0) error->all(FLERR,"Could not find dump modify compute ID: {}",aname); - // fix value = f_ID - // if no trailing [], then arg is set to 0, else arg is between [] + if (modify->compute[n]->peratom_flag == 0) + error->all(FLERR,"Dump modify compute ID {} does not compute per-atom info",aname); + if (argi.get_dim() == 0 && modify->compute[n]->size_peratom_cols > 0) + error->all(FLERR,"Dump modify compute ID {} does not compute per-atom vector",aname); + if (argi.get_index1() > 0 && modify->compute[n]->size_peratom_cols == 0) + error->all(FLERR,"Dump modify compute ID {} does not compute per-atom array",aname); + if (argi.get_index1() > 0 && + argi.get_index1() > modify->compute[n]->size_peratom_cols) + error->all(FLERR,"Dump modify compute ID {} vector is not large enough",aname); - } else if (strncmp(arg[1],"f_",2) == 0) { - thresh_array[nthresh] = FIX; - int n = strlen(arg[1]); - char *suffix = new char[n]; - strcpy(suffix,&arg[1][2]); + field2index[ATTRIBUTES+nfield+nthresh] = add_compute(aname); + break; - char *ptr = strchr(suffix,'['); - if (ptr) { - if (suffix[strlen(suffix)-1] != ']') - error->all(FLERR,"Invalid attribute in dump modify command"); - argindex[ATTRIBUTES+nfield+nthresh] = atoi(ptr+1); - *ptr = '\0'; - } else argindex[ATTRIBUTES+nfield+nthresh] = 0; + // fix value = f_ID + // if no trailing [], then arg is set to 0, else arg is between [] - n = modify->find_fix(suffix); - if (n < 0) error->all(FLERR,"Could not find dump modify fix ID"); + case ArgInfo::FIX: + thresh_array[nthresh] = FIX; + n = modify->find_fix(aname); + if (n < 0) error->all(FLERR,"Could not find dump modify fix ID: {}",aname); - if (modify->fix[n]->peratom_flag == 0) - error->all(FLERR,"Dump modify fix ID does not compute per-atom info"); - if (argindex[ATTRIBUTES+nfield+nthresh] == 0 && - modify->fix[n]->size_peratom_cols > 0) - error->all(FLERR,"Dump modify fix ID does not compute per-atom vector"); - if (argindex[ATTRIBUTES+nfield+nthresh] > 0 && - modify->fix[n]->size_peratom_cols == 0) - error->all(FLERR,"Dump modify fix ID does not compute per-atom array"); - if (argindex[ATTRIBUTES+nfield+nthresh] > 0 && - argindex[ATTRIBUTES+nfield+nthresh] > modify->fix[n]->size_peratom_cols) - error->all(FLERR,"Dump modify fix ID vector is not large enough"); + if (modify->fix[n]->peratom_flag == 0) + error->all(FLERR,"Dump modify fix ID {} does not compute per-atom info",aname); + if (argi.get_dim() == 0 && modify->fix[n]->size_peratom_cols > 0) + error->all(FLERR,"Dump modify fix ID {} does not compute per-atom vector",aname); + if (argi.get_index1() > 0 && modify->fix[n]->size_peratom_cols == 0) + error->all(FLERR,"Dump modify fix ID {} does not compute per-atom array",aname); + if (argi.get_index1() > 0 && argi.get_index1() > modify->fix[n]->size_peratom_cols) + error->all(FLERR,"Dump modify fix ID {} vector is not large enough",aname); - field2index[ATTRIBUTES+nfield+nthresh] = add_fix(suffix); - delete [] suffix; + field2index[ATTRIBUTES+nfield+nthresh] = add_fix(aname); + break; - // variable value = v_ID + // variable value = v_ID - } else if (strncmp(arg[1],"v_",2) == 0) { - thresh_array[nthresh] = VARIABLE; - int n = strlen(arg[1]); - char *suffix = new char[n]; - strcpy(suffix,&arg[1][2]); + case ArgInfo::VARIABLE: + thresh_array[nthresh] = VARIABLE; + n = input->variable->find(aname); + if (n < 0) error->all(FLERR,"Could not find dump modify variable name: {}",aname); + if (input->variable->atomstyle(n) == 0) + error->all(FLERR,"Dump modify variable {} is not atom-style variable",aname); - argindex[ATTRIBUTES+nfield+nthresh] = 0; + field2index[ATTRIBUTES+nfield+nthresh] = add_variable(aname); + break; - n = input->variable->find(suffix); - if (n < 0) error->all(FLERR,"Could not find dump modify variable name"); - if (input->variable->atomstyle(n) == 0) - error->all(FLERR,"Dump modify variable is not atom-style variable"); + // custom per atom floating point vector or array - field2index[ATTRIBUTES+nfield+nthresh] = add_variable(suffix); - delete [] suffix; + case ArgInfo::DNAME: + n = atom->find_custom(aname,flag,cols); - } else error->all(FLERR,"Invalid dump_modify threshold operator"); + if (n < 0) + error->all(FLERR,"Could not find custom per-atom property ID: {}", aname); + if (argindex[ATTRIBUTES+nfield+nthresh] == 0) { + if (!flag || cols) + error->all(FLERR,"Property double vector for dump custom does not exist"); + thresh_array[nthresh] = DVEC; + } else { + if (!flag || !cols) + error->all(FLERR,"Property double array for dump custom does not exist"); + if (argindex[ATTRIBUTES+nfield+nthresh] > atom->dcols[n]) + error->all(FLERR,"Dump custom property array is accessed out-of-range"); + thresh_array[nthresh] = DARRAY; + } + + field2index[ATTRIBUTES+nfield+nthresh] = add_custom(aname,thresh_array[nthresh]); + break; + + // custom per atom integer vector or array + + case ArgInfo::INAME: + n = atom->find_custom(aname,flag,cols); + + if (n < 0) + error->all(FLERR,"Could not find custom per-atom property ID: {}", aname); + if (argindex[ATTRIBUTES+nfield+nthresh] == 0) { + if (flag || cols) + error->all(FLERR,"Property integer vector for dump custom does not exist"); + thresh_array[nthresh] = IVEC; + } else { + if (flag || !cols) + error->all(FLERR,"Property integer array for dump custom does not exist"); + if (argindex[ATTRIBUTES+nfield+nthresh] > atom->icols[n]) + error->all(FLERR,"Dump custom property array is accessed out-of-range"); + thresh_array[nthresh] = IARRAY; + } + + field2index[ATTRIBUTES+nfield+nthresh] = add_custom(aname,thresh_array[nthresh]); + break; + + // no match + + default: + error->all(FLERR,"Invalid dump_modify thresh attribute: {}",aname); + break; + } + } // set operation type of threshold @@ -2298,11 +2377,32 @@ int DumpVTK::modify_param(int narg, char **arg) else if (strcmp(arg[2],">=") == 0) thresh_op[nthresh] = GE; else if (strcmp(arg[2],"==") == 0) thresh_op[nthresh] = EQ; else if (strcmp(arg[2],"!=") == 0) thresh_op[nthresh] = NEQ; - else error->all(FLERR,"Invalid dump_modify threshold operator"); + else if (strcmp(arg[2],"|^") == 0) thresh_op[nthresh] = XOR; + else error->all(FLERR,"Invalid dump_modify thresh operator"); - // set threshold value + // set threshold value as number or special LAST keyword + // create FixStore to hold LAST values, should work with restart + // id = dump-ID + nthreshlast + DUMP_STORE, fix group = dump group - thresh_value[nthresh] = utils::numeric(FLERR,arg[3],false,lmp); + if (strcmp(arg[3],"LAST") != 0) { + thresh_value[nthresh] = utils::numeric(FLERR,arg[3],false,lmp); + thresh_last[nthresh] = -1; + } else { + thresh_fix = (FixStore **) + memory->srealloc(thresh_fix,(nthreshlast+1)*sizeof(FixStore *),"dump:thresh_fix"); + thresh_fixID = (char **) + memory->srealloc(thresh_fixID,(nthreshlast+1)*sizeof(char *),"dump:thresh_fixID"); + memory->grow(thresh_first,(nthreshlast+1),"dump:thresh_first"); + + std::string threshid = fmt::format("{}{}_DUMP_STORE",id,nthreshlast); + thresh_fixID[nthreshlast] = utils::strdup(threshid); + threshid += fmt::format(" {} STORE peratom 1 1", group->names[igroup]); + thresh_fix[nthreshlast] = (FixStore *) modify->add_fix(threshid); + + thresh_last[nthreshlast] = nthreshlast; + thresh_first[nthreshlast] = 1; + nthreshlast++; + } nthresh++; return 4; @@ -2387,25 +2487,35 @@ void DumpVTK::pack_variable(int n) void DumpVTK::pack_custom(int n) { - int index = field2index[n]; - - if (flag_custom[index] == 0) { // integer - int iwhich,tmp; - iwhich = atom->find_custom(id_custom[index],tmp); + int flag = custom_flag[field2index[current_pack_choice_key]]; + int iwhich = custom[field2index[current_pack_choice_key]]; + int index = argindex[current_pack_choice_key]; + if (flag == IVEC) { int *ivector = atom->ivector[iwhich]; for (int i = 0; i < nchoose; i++) { buf[n] = ivector[clist[i]]; n += size_one; } - } else if (flag_custom[index] == 1) { // double - int iwhich,tmp; - iwhich = atom->find_custom(id_custom[index],tmp); - + } else if (flag == DVEC) { double *dvector = atom->dvector[iwhich]; for (int i = 0; i < nchoose; i++) { buf[n] = dvector[clist[i]]; n += size_one; } + } else if (flag == IARRAY) { + index--; + int **iarray = atom->iarray[iwhich]; + for (int i = 0; i < nchoose; i++) { + buf[n] = iarray[clist[i]][index]; + n += size_one; + } + } else if (flag == DARRAY) { + index--; + double **darray = atom->darray[iwhich]; + for (int i = 0; i < nchoose; i++) { + buf[n] = darray[clist[i]][index]; + n += size_one; + } } } diff --git a/src/atom.cpp b/src/atom.cpp index 9fe115f5aa..796c0ba156 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -260,6 +260,7 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) map_hash = nullptr; unique_tags = nullptr; + reset_image_flag[0] = reset_image_flag[1] = reset_image_flag[2] = false; atom_style = nullptr; avec = nullptr; @@ -1134,7 +1135,6 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset, // remap atom into simulation box // if atom is in my sub-domain, unpack its values - int flagx = 0, flagy = 0, flagz = 0; for (int i = 0; i < n; i++) { next = strchr(buf,'\n'); @@ -1154,9 +1154,9 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset, imz = utils::inumeric(FLERR,values[iptr+2],false,lmp); if ((domain->dimension == 2) && (imz != 0)) error->all(FLERR,"Z-direction image flag must be 0 for 2d-systems"); - if ((!domain->xperiodic) && (imx != 0)) { flagx = 1; imx = 0; } - if ((!domain->yperiodic) && (imy != 0)) { flagy = 1; imy = 0; } - if ((!domain->zperiodic) && (imz != 0)) { flagz = 1; imz = 0; } + if ((!domain->xperiodic) && (imx != 0)) { reset_image_flag[0] = true; imx = 0; } + if ((!domain->yperiodic) && (imy != 0)) { reset_image_flag[1] = true; imy = 0; } + if ((!domain->zperiodic) && (imz != 0)) { reset_image_flag[2] = true; imz = 0; } } imagedata = ((imageint) (imx + IMGMAX) & IMGMASK) | (((imageint) (imy + IMGMAX) & IMGMASK) << IMGBITS) | @@ -1192,23 +1192,6 @@ void Atom::data_atoms(int n, char *buf, tagint id_offset, tagint mol_offset, buf = next + 1; } - - // warn if reading data with non-zero image flags for non-periodic boundaries. - // we may want to turn this into an error at some point, since this essentially - // creates invalid position information that works by accident most of the time. - - if (comm->me == 0) { - if (flagx) - error->warning(FLERR,"Non-zero imageflag(s) in x direction for " - "non-periodic boundary reset to zero"); - if (flagy) - error->warning(FLERR,"Non-zero imageflag(s) in y direction for " - "non-periodic boundary reset to zero"); - if (flagz) - error->warning(FLERR,"Non-zero imageflag(s) in z direction for " - "non-periodic boundary reset to zero"); - } - delete [] values; } diff --git a/src/atom.h b/src/atom.h index e196d2d135..25a56de1c4 100644 --- a/src/atom.h +++ b/src/atom.h @@ -270,6 +270,10 @@ class Atom : protected Pointers { int *sametag; // sametag[I] = next atom with same ID, -1 if no more + // true if image flags were reset to 0 during data_atoms() + + bool reset_image_flag[3]; + // AtomVec factory types and map typedef AtomVec *(*AtomVecCreator)(LAMMPS *); diff --git a/src/compute_orientorder_atom.cpp b/src/compute_orientorder_atom.cpp index d4291251b6..fd020e1865 100644 --- a/src/compute_orientorder_atom.cpp +++ b/src/compute_orientorder_atom.cpp @@ -181,6 +181,8 @@ void ComputeOrientOrderAtom::init() error->all(FLERR,"Compute orientorder/atom cutoff is " "longer than pairwise cutoff"); + memory->destroy(qnm_r); + memory->destroy(qnm_i); memory->create(qnm_r,nqlist,2*qmax+1,"orientorder/atom:qnm_r"); memory->create(qnm_i,nqlist,2*qmax+1,"orientorder/atom:qnm_i"); @@ -652,6 +654,7 @@ void ComputeOrientOrderAtom::init_clebsch_gordan() idxcg_count++; } idxcg_max = idxcg_count; + memory->destroy(cglist); memory->create(cglist, idxcg_max, "computeorientorderatom:cglist"); idxcg_count = 0; diff --git a/src/dump_custom.cpp b/src/dump_custom.cpp index b2acdbfc51..0e47671bb9 100644 --- a/src/dump_custom.cpp +++ b/src/dump_custom.cpp @@ -131,7 +131,7 @@ DumpCustom::DumpCustom(LAMMPS *lmp, int narg, char **arg) : if (ioptional < nfield && strcmp(style,"image") != 0 && strcmp(style,"movie") != 0) - error->all(FLERR,"Invalid attribute in dump custom command"); + error->all(FLERR,"Invalid attribute {} in dump {} command",earg[ioptional],style); // noptional = # of optional args // reset nfield to subtract off optional args @@ -238,9 +238,8 @@ DumpCustom::~DumpCustom() for (int i = 0; i < ncustom; i++) delete[] id_custom[i]; memory->sfree(id_custom); - delete [] custom; - delete [] custom_flag; - + memory->sfree(custom); + memory->sfree(custom_flag); memory->destroy(choose); memory->destroy(dchoose); memory->destroy(clist); @@ -909,32 +908,27 @@ int DumpCustom::count() } else if (thresh_array[ithresh] == Q) { if (!atom->q_flag) - error->all(FLERR, - "Threshold for an atom property that isn't allocated"); + error->all(FLERR,"Threshold for an atom property that isn't allocated"); ptr = atom->q; nstride = 1; } else if (thresh_array[ithresh] == MUX) { if (!atom->mu_flag) - error->all(FLERR, - "Threshold for an atom property that isn't allocated"); + error->all(FLERR,"Threshold for an atom property that isn't allocated"); ptr = &atom->mu[0][0]; nstride = 4; } else if (thresh_array[ithresh] == MUY) { if (!atom->mu_flag) - error->all(FLERR, - "Threshold for an atom property that isn't allocated"); + error->all(FLERR,"Threshold for an atom property that isn't allocated"); ptr = &atom->mu[0][1]; nstride = 4; } else if (thresh_array[ithresh] == MUZ) { if (!atom->mu_flag) - error->all(FLERR, - "Threshold for an atom property that isn't allocated"); + error->all(FLERR,"Threshold for an atom property that isn't allocated"); ptr = &atom->mu[0][2]; nstride = 4; } else if (thresh_array[ithresh] == MU) { if (!atom->mu_flag) - error->all(FLERR, - "Threshold for an atom property that isn't allocated"); + error->all(FLERR,"Threshold for an atom property that isn't allocated"); ptr = &atom->mu[0][3]; nstride = 4; @@ -1521,7 +1515,7 @@ int DumpCustom::parse_fields(int narg, char **arg) field2index[iarg] = add_variable(name); break; - // custom per-atom floating point vector or array + // custom per-atom floating point vector or array = d_ID d2_ID case ArgInfo::DNAME: pack_choice[iarg] = &DumpCustom::pack_custom; @@ -1533,18 +1527,18 @@ int DumpCustom::parse_fields(int narg, char **arg) error->all(FLERR,"Could not find custom per-atom property ID: {}", name); if (argindex[iarg] == 0) { if (!flag || cols) - error->all(FLERR,"Property double vector for dump custom does not exist"); + error->all(FLERR,"Property double vector {} for dump custom does not exist",name); } else { if (!flag || !cols) - error->all(FLERR,"Property double array for dump custom does not exist"); + error->all(FLERR,"Property double array {} for dump custom does not exist",name); if (argindex[iarg] > atom->dcols[n]) - error->all(FLERR,"Dump custom property array is accessed out-of-range"); + error->all(FLERR,"Dump custom property array {} is accessed out-of-range",name); } field2index[iarg] = add_custom(name,1); break; - // custom per-atom integer vector or array + // custom per-atom integer vector or array = i_ID or i2_ID case ArgInfo::INAME: pack_choice[iarg] = &DumpCustom::pack_custom; @@ -1556,15 +1550,12 @@ int DumpCustom::parse_fields(int narg, char **arg) error->all(FLERR,"Could not find custom per-atom property ID: {}", name); if (argindex[iarg] == 0) { if (flag || cols) - error->all(FLERR, - "Property integer vector for dump custom does not exist"); + error->all(FLERR,"Property integer vector {} for dump custom does not exist",name); } else { if (flag || !cols) - error->all(FLERR, - "Property integer array for dump custom does not exist"); + error->all(FLERR,"Property integer array {} for dump custom does not exist",name); if (argindex[iarg] > atom->icols[n]) - error->all(FLERR, - "Dump custom property array is accessed out-of-range"); + error->all(FLERR,"Dump custom property array {} is accessed out-of-range",name); } field2index[iarg] = add_custom(name,0); @@ -1574,6 +1565,7 @@ int DumpCustom::parse_fields(int narg, char **arg) default: return iarg; + break; } } } @@ -1667,13 +1659,9 @@ int DumpCustom::add_custom(const char *id, int flag) if (strcmp(id,id_custom[icustom]) == 0) break; if (icustom < ncustom) return icustom; - id_custom = (char **) - memory->srealloc(id_custom,(ncustom+1)*sizeof(char *),"dump:id_custom"); - - delete [] custom; - custom = new int[ncustom+1]; - delete [] custom_flag; - custom_flag = new int[ncustom+1]; + id_custom = (char **) memory->srealloc(id_custom,(ncustom+1)*sizeof(char *),"dump:id_custom"); + custom = (int *) memory->srealloc(custom,(ncustom+1)*sizeof(int),"dump:custom"); + custom_flag = (int *) memory->srealloc(custom_flag,(ncustom+1)*sizeof(int),"dump:custom_flag"); id_custom[ncustom] = utils::strdup(id); custom_flag[ncustom] = flag; @@ -1962,21 +1950,18 @@ int DumpCustom::modify_param(int narg, char **arg) if (n < 0) error->all(FLERR,"Could not find custom per-atom property ID: {}", name); if (argindex[nfield+nthresh] == 0) { - if (flag || cols) - error->all(FLERR, - "Property double vector for dump custom does not exist"); + if (!flag || cols) + error->all(FLERR,"Property double vector for dump custom does not exist"); thresh_array[nthresh] = DVEC; } else { - if (flag || !cols) - error->all(FLERR, - "Property double array for dump custom does not exist"); + if (!flag || !cols) + error->all(FLERR,"Property double array for dump custom does not exist"); if (argindex[nfield+nthresh] > atom->dcols[n]) - error->all(FLERR, - "Dump custom property array is accessed out-of-range"); + error->all(FLERR,"Dump custom property array is accessed out-of-range"); thresh_array[nthresh] = DARRAY; } - field2index[nfield+nthresh] = add_custom(name,0); + field2index[nfield+nthresh] = add_custom(name,thresh_array[nthresh]); break; // custom per atom integer vector or array @@ -1988,20 +1973,17 @@ int DumpCustom::modify_param(int narg, char **arg) error->all(FLERR,"Could not find custom per-atom property ID: {}", name); if (argindex[nfield+nthresh] == 0) { if (flag || cols) - error->all(FLERR, - "Property integer vector for dump custom does not exist"); + error->all(FLERR,"Property integer vector for dump custom does not exist"); thresh_array[nthresh] = IVEC; } else { if (flag || !cols) - error->all(FLERR, - "Property integer array for dump custom does not exist"); + error->all(FLERR,"Property integer array for dump custom does not exist"); if (argindex[nfield+nthresh] > atom->icols[n]) - error->all(FLERR, - "Dump custom property array is accessed out-of-range"); + error->all(FLERR,"Dump custom property array is accessed out-of-range"); thresh_array[nthresh] = IARRAY; } - field2index[nfield+nthresh] = add_custom(name,0); + field2index[nfield+nthresh] = add_custom(name,thresh_array[nthresh]); break; // no match diff --git a/src/exceptions.h b/src/exceptions.h index 1df6c5d1a3..1c9d8c8daf 100644 --- a/src/exceptions.h +++ b/src/exceptions.h @@ -26,9 +26,9 @@ class LAMMPSException : public std::exception { LAMMPSException(const std::string &msg) : message(msg) {} - ~LAMMPSException() throw() {} + ~LAMMPSException() noexcept {} - virtual const char *what() const throw() { return message.c_str(); } + virtual const char *what() const noexcept { return message.c_str(); } }; class LAMMPSAbortException : public LAMMPSException { diff --git a/src/file_writer.h b/src/file_writer.h index 473975d7fe..42e636d16f 100644 --- a/src/file_writer.h +++ b/src/file_writer.h @@ -39,9 +39,9 @@ class FileWriterException : public std::exception { public: FileWriterException(const std::string &msg) : message(msg) {} - ~FileWriterException() throw() {} + ~FileWriterException() noexcept {} - virtual const char *what() const throw() { return message.c_str(); } + virtual const char *what() const noexcept { return message.c_str(); } }; } // namespace LAMMPS_NS diff --git a/src/fix_efield.cpp b/src/fix_efield.cpp index f752585206..6fa3fc5297 100644 --- a/src/fix_efield.cpp +++ b/src/fix_efield.cpp @@ -19,25 +19,24 @@ #include "fix_efield.h" -#include #include "atom.h" -#include "update.h" -#include "domain.h" #include "comm.h" -#include "modify.h" -#include "force.h" -#include "respa.h" -#include "input.h" -#include "variable.h" -#include "region.h" -#include "memory.h" +#include "domain.h" #include "error.h" +#include "force.h" +#include "input.h" +#include "memory.h" +#include "modify.h" +#include "region.h" +#include "respa.h" +#include "update.h" +#include "variable.h" + +#include using namespace LAMMPS_NS; using namespace FixConst; -enum{NONE,CONSTANT,EQUAL,ATOM}; - /* ---------------------------------------------------------------------- */ FixEfield::FixEfield(LAMMPS *lmp, int narg, char **arg) : @@ -111,6 +110,8 @@ FixEfield::FixEfield(LAMMPS *lmp, int narg, char **arg) : maxatom = atom->nmax; memory->create(efield,maxatom,4,"efield:efield"); + + maxatom_energy = 0; } /* ---------------------------------------------------------------------- */ @@ -199,9 +200,7 @@ void FixEfield::init() error->all(FLERR,"Fix efield with dipoles cannot use atom-style variables"); if (muflag && update->whichflag == 2 && comm->me == 0) - error->warning(FLERR, - "The minimizer does not re-orient dipoles " - "when using fix efield"); + error->warning(FLERR, "The minimizer does not re-orient dipoles when using fix efield"); if (varflag == CONSTANT && estyle != NONE) error->all(FLERR,"Cannot use variable energy with " @@ -449,3 +448,4 @@ double FixEfield::compute_vector(int n) } return fsum_all[n+1]; } + diff --git a/src/fix_efield.h b/src/fix_efield.h index c9496e29d2..20201518ab 100644 --- a/src/fix_efield.h +++ b/src/fix_efield.h @@ -25,6 +25,7 @@ FixStyle(efield,FixEfield); namespace LAMMPS_NS { class FixEfield : public Fix { + friend class FixQEqReaxFF; public: FixEfield(class LAMMPS *, int, char **); ~FixEfield(); @@ -39,7 +40,9 @@ class FixEfield : public Fix { double compute_scalar(); double compute_vector(int); - private: + enum { NONE, CONSTANT, EQUAL, ATOM }; + + protected: double ex, ey, ez; int varflag, iregion; char *xstr, *ystr, *zstr, *estr; @@ -49,7 +52,7 @@ class FixEfield : public Fix { double qe2f; int qflag, muflag; - int maxatom; + int maxatom, maxatom_energy; double **efield; int force_flag; diff --git a/src/info.cpp b/src/info.cpp index 3d24f9b56a..bbc94fbccb 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -299,6 +299,7 @@ void Info::command(int narg, char **arg) if (has_png_support()) fputs("-DLAMMPS_PNG\n",out); if (has_jpeg_support()) fputs("-DLAMMPS_JPEG\n",out); if (has_ffmpeg_support()) fputs("-DLAMMPS_FFMPEG\n",out); + if (has_fft_single_support()) fputs("-DFFT_SINGLE\n",out); if (has_exceptions()) fputs("-DLAMMPS_EXCEPTIONS\n",out); #if defined(LAMMPS_BIGBIG) @@ -879,6 +880,8 @@ bool Info::is_available(const char *category, const char *name) return has_jpeg_support(); } else if (strcmp(name,"ffmpeg") == 0) { return has_ffmpeg_support(); + } else if (strcmp(name,"fft_single") == 0) { + return has_fft_single_support(); } else if (strcmp(name,"exceptions") == 0) { return has_exceptions(); } @@ -1011,7 +1014,7 @@ std::vector Info::get_available_styles(const std::string &category) } else if (category == "command") { return get_style_names(input->command_map); } - return std::vector(); + return {}; } template @@ -1127,6 +1130,14 @@ bool Info::has_ffmpeg_support() { #endif } +bool Info::has_fft_single_support() { +#ifdef FFT_SINGLE + return true; +#else + return false; +#endif +} + bool Info::has_exceptions() { #ifdef LAMMPS_EXCEPTIONS return true; @@ -1146,12 +1157,14 @@ bool Info::has_package(const std::string &package_name) { #if defined(LMP_GPU) extern bool lmp_gpu_config(const std::string &, const std::string &); -extern bool lmp_has_gpu_device(); +extern bool lmp_has_compatible_gpu_device(); extern std::string lmp_gpu_device_info(); +// we will only report compatible GPUs, i.e. when a GPU device is +// available *and* supports the required floating point precision bool Info::has_gpu_device() { - return lmp_has_gpu_device(); + return lmp_has_compatible_gpu_device(); } std::string Info::get_gpu_device_info() diff --git a/src/info.h b/src/info.h index 0e7bfb68f3..c1e10a2336 100644 --- a/src/info.h +++ b/src/info.h @@ -42,6 +42,7 @@ class Info : public Command { static bool has_png_support(); static bool has_jpeg_support(); static bool has_ffmpeg_support(); + static bool has_fft_single_support(); static bool has_exceptions(); static bool has_package(const std::string &); static bool has_accelerator_feature(const std::string &, const std::string &, diff --git a/src/lammps.cpp b/src/lammps.cpp index f4dd4e5708..5d571b88dd 100644 --- a/src/lammps.cpp +++ b/src/lammps.cpp @@ -51,6 +51,10 @@ #include "update.h" #include "version.h" +#if defined(LMP_PLUGIN) +#include "plugin.h" +#endif + #include #include #include @@ -59,6 +63,12 @@ #include "lmpinstalledpkgs.h" #include "lmpgitversion.h" +#if defined(LAMMPS_UPDATE) +#define UPDATE_STRING " - " LAMMPS_UPDATE +#else +#define UPDATE_STRING "" +#endif + static void print_style(FILE *fp, const char *str, int &pos); struct LAMMPS_NS::package_styles_lists { @@ -509,7 +519,7 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) : } if ((universe->me == 0) && !helpflag) - utils::logmesg(this,fmt::format("LAMMPS ({})\n",version)); + utils::logmesg(this,fmt::format("LAMMPS ({}{})\n",version,UPDATE_STRING)); // universe is one or more worlds, as setup by partition switch // split universe communicator into separate world communicators @@ -903,6 +913,10 @@ void LAMMPS::init() void LAMMPS::destroy() { + // must wipe out all plugins first, if configured +#if defined(LMP_PLUGIN) + plugin_clear(this); +#endif delete update; update = nullptr; @@ -1137,10 +1151,10 @@ void _noopt LAMMPS::help() if (has_git_info) { fprintf(fp,"\nLarge-scale Atomic/Molecular Massively Parallel Simulator - " - LAMMPS_VERSION "\nGit info (%s / %s)\n\n",git_branch, git_descriptor); + LAMMPS_VERSION UPDATE_STRING "\nGit info (%s / %s)\n\n",git_branch, git_descriptor); } else { fprintf(fp,"\nLarge-scale Atomic/Molecular Massively Parallel Simulator - " - LAMMPS_VERSION "\n\n"); + LAMMPS_VERSION UPDATE_STRING "\n\n"); } fprintf(fp, "Usage example: %s -var t 300 -echo screen -in in.alloy\n\n" @@ -1340,7 +1354,7 @@ void LAMMPS::print_config(FILE *fp) fmt::print(fp,"Accelerator configuration:\n\n{}\n", Info::get_accelerator_info()); #if defined(LMP_GPU) - fmt::print(fp,"GPU present: {}\n\n",Info::has_gpu_device() ? "yes" : "no"); + fmt::print(fp,"Compatible GPU present: {}\n\n",Info::has_gpu_device() ? "yes" : "no"); #endif fputs("Active compile time flags:\n\n",fp); @@ -1348,6 +1362,7 @@ void LAMMPS::print_config(FILE *fp) if (Info::has_png_support()) fputs("-DLAMMPS_PNG\n",fp); if (Info::has_jpeg_support()) fputs("-DLAMMPS_JPEG\n",fp); if (Info::has_ffmpeg_support()) fputs("-DLAMMPS_FFMPEG\n",fp); + if (Info::has_fft_single_support()) fputs("-DFFT_SINGLE\n",fp); if (Info::has_exceptions()) fputs("-DLAMMPS_EXCEPTIONS\n",fp); #if defined(LAMMPS_BIGBIG) fputs("-DLAMMPS_BIGBIG\n",fp); diff --git a/src/lmppython.cpp b/src/lmppython.cpp index b7e65d1f02..daebf23c23 100644 --- a/src/lmppython.cpp +++ b/src/lmppython.cpp @@ -38,10 +38,6 @@ Python::~Python() /* ---------------------------------------------------------------------- */ -PythonInterface::~PythonInterface() {} - -/* ---------------------------------------------------------------------- */ - void Python::init() { #if defined(LMP_PYTHON) diff --git a/src/lmppython.h b/src/lmppython.h index 7ecee915e5..3f0ebecae5 100644 --- a/src/lmppython.h +++ b/src/lmppython.h @@ -20,7 +20,7 @@ namespace LAMMPS_NS { class PythonInterface { public: - virtual ~PythonInterface(); + virtual ~PythonInterface() = default; virtual void command(int, char **) = 0; virtual void invoke_function(int, char *) = 0; virtual int find(const char *) = 0; diff --git a/src/min_hftn.cpp b/src/min_hftn.cpp index e743f1e1da..6786379cd7 100644 --- a/src/min_hftn.cpp +++ b/src/min_hftn.cpp @@ -95,7 +95,7 @@ MinHFTN::MinHFTN(LAMMPS *lmp) : Min(lmp) Destructor ------------------------------------------------------------------------- */ -MinHFTN::~MinHFTN (void) +MinHFTN::~MinHFTN() { for (int i = 1; i < NUM_HFTN_ATOM_BASED_VECTORS; i++) if (_daExtraGlobal[i] != nullptr) diff --git a/src/min_hftn.h b/src/min_hftn.h index 3512d24220..4b909c3112 100644 --- a/src/min_hftn.h +++ b/src/min_hftn.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class MinHFTN : public Min { public: MinHFTN(LAMMPS *); - ~MinHFTN(void); + ~MinHFTN(); void init(); void setup_style(); void reset_vectors(); @@ -64,7 +64,7 @@ class MinHFTN : public Min { const double dEnergyAtXin, const double dForce2AtXin, double &dEnergyAtXout, double &dForce2AtXout, int &nStepType, double &dStepLength2, double &dStepLengthInf); - double calc_xinf_using_mpi_(void) const; + double calc_xinf_using_mpi_() const; double calc_dot_prod_using_mpi_(const int nIx1, const int nIx2) const; double calc_grad_dot_v_using_mpi_(const int nIx) const; void calc_dhd_dd_using_mpi_(double &dDHD, double &dDD) const; @@ -72,19 +72,19 @@ class MinHFTN : public Min { void calc_plengths_using_mpi_(double &dStepLength2, double &dStepLengthInf) const; bool step_exceeds_TR_(const double dTrustRadius, const double dPP, const double dPD, const double dDD, double &dTau) const; - bool step_exceeds_DMAX_(void) const; + bool step_exceeds_DMAX_() const; void adjust_step_to_tau_(const double tau); double compute_to_tr_(const double dPP, const double dPD, const double dDD, const double dTrustRadius, const bool bConsiderBothRoots, const double dDHD, const double dPdotHD, const double dGradDotD) const; void evaluate_dir_der_(const bool bUseForwardDiffs, const int nIxDir, const int nIxResult, const bool bEvaluateAtX, double &dNewEnergy); - void open_hftn_print_file_(void); + void open_hftn_print_file_(); void hftn_print_line_(const bool bIsStepAccepted, const int nIteration, const int nTotalEvals, const double dEnergy, const double dForce2, const int nStepType, const double dTrustRadius, const double dStepLength2, const double dActualRed, const double dPredictedRed) const; - void close_hftn_print_file_(void); + void close_hftn_print_file_(); }; } // namespace LAMMPS_NS diff --git a/src/molecule.cpp b/src/molecule.cpp index 1a3acf53ba..2c9b03337d 100644 --- a/src/molecule.cpp +++ b/src/molecule.cpp @@ -2035,7 +2035,7 @@ std::string Molecule::parse_keyword(int flag, char *line) MPI_Bcast(&eof,1,MPI_INT,0,world); if (eof) { - return std::string(""); + return {""}; } // bcast keyword line to all procs diff --git a/src/platform.cpp b/src/platform.cpp index b057c6415b..555026b2ac 100644 --- a/src/platform.cpp +++ b/src/platform.cpp @@ -415,7 +415,7 @@ std::string platform::mpi_info(int &major, int &minor) major = 1; minor = 0; #endif - return std::string(version); + return {version}; } /* ---------------------------------------------------------------------- @@ -543,8 +543,8 @@ void *platform::dlopen(const std::string &fname) std::string platform::dlerror() { const char *errmesg = ::dlerror(); - if (errmesg) return std::string(errmesg); - else return ""; + if (errmesg) return {errmesg}; + else return {""}; } // close a shared object diff --git a/src/pointers.h b/src/pointers.h index 55033aae3e..44820d06eb 100644 --- a/src/pointers.h +++ b/src/pointers.h @@ -23,14 +23,16 @@ #define LMP_POINTERS_H #include "lmptype.h" // IWYU pragma: export + #include // IWYU pragma: export #include // IWYU pragme: export #include // IWYU pragma: export #include // IWYU pragma: export -#include "lammps.h" // IWYU pragma: export -#include "utils.h" // IWYU pragma: export + #include "fmt/format.h" // IWYU pragma: export +#include "lammps.h" // IWYU pragma: export #include "platform.h" // IWYU pragma: export +#include "utils.h" // IWYU pragma: export namespace LAMMPS_NS { @@ -91,6 +93,14 @@ class Pointers { python(ptr->python) {} virtual ~Pointers() {} + // remove default members execept for the copy constructor + + Pointers() = delete; + Pointers(const Pointers &) = default; + Pointers(Pointers &&) = delete; + Pointers & operator=(const Pointers&) = delete; + Pointers & operator=(Pointers&&) = delete; + protected: LAMMPS *lmp; Memory *&memory; diff --git a/src/read_data.cpp b/src/read_data.cpp index c17ab97229..edbfc16696 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -312,6 +312,10 @@ void ReadData::command(int narg, char **arg) error->all(FLERR,fmt::format("Cannot open file {}: {}", arg[0], utils::getsyserror())); + // reset so we can warn about reset image flags exactly once per data file + + atom->reset_image_flag[0] = atom->reset_image_flag[1] = atom->reset_image_flag[2] = false; + // first time system initialization if (addflag == NONE) { @@ -1238,6 +1242,22 @@ void ReadData::atoms() nread += nchunk; } + // warn if we have read data with non-zero image flags for non-periodic boundaries. + // we may want to turn this into an error at some point, since this essentially + // creates invalid position information that works by accident most of the time. + + if (comm->me == 0) { + if (atom->reset_image_flag[0]) + error->warning(FLERR,"Non-zero imageflag(s) in x direction for " + "non-periodic boundary reset to zero"); + if (atom->reset_image_flag[1]) + error->warning(FLERR,"Non-zero imageflag(s) in y direction for " + "non-periodic boundary reset to zero"); + if (atom->reset_image_flag[2]) + error->warning(FLERR,"Non-zero imageflag(s) in z direction for " + "non-periodic boundary reset to zero"); + } + // check that all atoms were assigned correctly bigint n = atom->nlocal; diff --git a/src/table_file_reader.cpp b/src/table_file_reader.cpp index bcd4e91886..bfbd466ae8 100644 --- a/src/table_file_reader.cpp +++ b/src/table_file_reader.cpp @@ -30,9 +30,6 @@ TableFileReader::TableFileReader(LAMMPS *lmp, { } -TableFileReader::~TableFileReader() { -} - char *TableFileReader::find_section_start(const std::string &keyword) { char *line = nullptr; while ((line = reader->next_line())) { diff --git a/src/table_file_reader.h b/src/table_file_reader.h index 643e1ce93c..832e68a34f 100644 --- a/src/table_file_reader.h +++ b/src/table_file_reader.h @@ -25,7 +25,7 @@ class TableFileReader : public PotentialFileReader { public: TableFileReader(class LAMMPS *lmp, const std::string &filename, const std::string &type, const int auto_convert = 0); - virtual ~TableFileReader(); + virtual ~TableFileReader() = default; char *find_section_start(const std::string &keyword); }; diff --git a/src/text_file_reader.cpp b/src/text_file_reader.cpp index 8fc57d9283..ab1c81efb1 100644 --- a/src/text_file_reader.cpp +++ b/src/text_file_reader.cpp @@ -22,6 +22,7 @@ #include "utils.h" #include +#include using namespace LAMMPS_NS; @@ -68,8 +69,8 @@ This function is useful in combination with :cpp:func:`utils::open_potential`. * \param fp File descriptor of the already opened file * \param filetype Description of file type for error messages */ -TextFileReader::TextFileReader(FILE *fp, const std::string &filetype) : - filetype(filetype), closefp(false), fp(fp), ignore_comments(true) +TextFileReader::TextFileReader(FILE *fp, std::string filetype) : + filetype(std::move(filetype)), closefp(false), fp(fp), ignore_comments(true) { if (fp == nullptr) throw FileReaderException("Invalid file descriptor"); } diff --git a/src/text_file_reader.h b/src/text_file_reader.h index 98657a937e..34556d7eb3 100644 --- a/src/text_file_reader.h +++ b/src/text_file_reader.h @@ -34,7 +34,7 @@ class TextFileReader { bool ignore_comments; //!< Controls whether comments are ignored TextFileReader(const std::string &filename, const std::string &filetype); - TextFileReader(FILE *fp, const std::string &filetype); + TextFileReader(FILE *fp, std::string filetype); ~TextFileReader(); @@ -52,9 +52,9 @@ class FileReaderException : public std::exception { public: FileReaderException(const std::string &msg) : message(msg) {} - ~FileReaderException() throw() {} + ~FileReaderException() noexcept {} - virtual const char *what() const throw() { return message.c_str(); } + virtual const char *what() const noexcept { return message.c_str(); } }; class EOFException : public FileReaderException { diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index 71b4ad610e..35a313ab3d 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -49,8 +49,8 @@ TokenizerException::TokenizerException(const std::string &msg, const std::string * \param str string to be processed * \param _separators string with separator characters (default: " \t\r\n\f") */ -Tokenizer::Tokenizer(const std::string &str, const std::string &_separators) : - text(str), separators(_separators), start(0), ntokens(std::string::npos) +Tokenizer::Tokenizer(std::string str, std::string _separators) : + text(std::move(str)), separators(std::move(_separators)), start(0), ntokens(std::string::npos) { // replace known UTF-8 characters with ASCII equivalents if (utils::has_utf8(text)) text = utils::utf8_subst(text); @@ -198,9 +198,6 @@ std::vector Tokenizer::as_vector() { ValueTokenizer::ValueTokenizer(const std::string &str, const std::string &separators) : tokens(str, separators) { } -ValueTokenizer::ValueTokenizer(const ValueTokenizer &rhs) : tokens(rhs.tokens) { -} - ValueTokenizer::ValueTokenizer(ValueTokenizer &&rhs) : tokens(std::move(rhs.tokens)) { } diff --git a/src/tokenizer.h b/src/tokenizer.h index 7f45a512dd..247afd0240 100644 --- a/src/tokenizer.h +++ b/src/tokenizer.h @@ -35,7 +35,7 @@ class Tokenizer { size_t ntokens; public: - Tokenizer(const std::string &str, const std::string &separators = TOKENIZER_DEFAULT_SEPARATORS); + Tokenizer(std::string str, std::string separators = TOKENIZER_DEFAULT_SEPARATORS); Tokenizer(Tokenizer &&); Tokenizer(const Tokenizer &); Tokenizer &operator=(const Tokenizer &); @@ -62,11 +62,11 @@ class TokenizerException : public std::exception { * \param token String of the token/word that caused the error */ TokenizerException(const std::string &msg, const std::string &token); - ~TokenizerException() throw() {} + ~TokenizerException() noexcept {} /** Retrieve message describing the thrown exception * \return string with error message */ - virtual const char *what() const throw() { return message.c_str(); } + virtual const char *what() const noexcept { return message.c_str(); } }; class InvalidIntegerException : public TokenizerException { @@ -97,7 +97,7 @@ class ValueTokenizer { public: ValueTokenizer(const std::string &str, const std::string &separators = TOKENIZER_DEFAULT_SEPARATORS); - ValueTokenizer(const ValueTokenizer &); + ValueTokenizer(const ValueTokenizer &) = default; ValueTokenizer(ValueTokenizer &&); ValueTokenizer &operator=(const ValueTokenizer &); ValueTokenizer &operator=(ValueTokenizer &&); diff --git a/src/utils.cpp b/src/utils.cpp index 035b68d660..507500f116 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -143,7 +143,7 @@ void utils::fmtargs_logmesg(LAMMPS *lmp, fmt::string_view format, fmt::format_ar std::string utils::getsyserror() { - return std::string(strerror(errno)); + return {strerror(errno)}; } // read line into buffer. if line is too long keep reading until EOL or EOF @@ -661,7 +661,10 @@ int utils::expand_args(const char *file, int line, int narg, char **arg, int mod } for (int index = nlo; index <= nhi; index++) { - earg[newarg] = utils::strdup(fmt::format("{}2_{}[{}]{}", word[0], id, index, tail)); + if (word[1] == '2') + earg[newarg] = utils::strdup(fmt::format("{}2_{}[{}]{}", word[0], id, index, tail)); + else + earg[newarg] = utils::strdup(fmt::format("{}_{}[{}]{}", word[0], id, index, tail)); newarg++; } } else { @@ -738,7 +741,7 @@ std::string utils::trim_comment(const std::string &line) { auto end = line.find_first_of('#'); if (end != std::string::npos) { return line.substr(0, end); } - return std::string(line); + return {line}; } /* ---------------------------------------------------------------------- @@ -1481,7 +1484,7 @@ static int ismetachar(char c); int re_matchp(const char *text, re_t pattern, int *matchlen) { *matchlen = 0; - if (pattern != 0) { + if (pattern != nullptr) { if (pattern[0].type == RX_BEGIN) { return ((matchpattern(&pattern[1], text, matchlen)) ? 0 : -1); } else { @@ -1595,7 +1598,7 @@ re_t re_compile(re_ctx_t context, const char *pattern) i += 1; /* Increment i to avoid including '^' in the char-buffer */ if (pattern[i + 1] == 0) /* incomplete pattern, missing non-zero char after '^' */ { - return 0; + return nullptr; } } else { re_compiled[j].type = RX_CHAR_CLASS; @@ -1605,20 +1608,20 @@ re_t re_compile(re_ctx_t context, const char *pattern) while ((pattern[++i] != ']') && (pattern[i] != '\0')) { /* Missing ] */ if (pattern[i] == '\\') { - if (ccl_bufidx >= MAX_CHAR_CLASS_LEN - 1) { return 0; } + if (ccl_bufidx >= MAX_CHAR_CLASS_LEN - 1) { return nullptr; } if (pattern[i + 1] == 0) /* incomplete pattern, missing non-zero char after '\\' */ { - return 0; + return nullptr; } ccl_buf[ccl_bufidx++] = pattern[i++]; } else if (ccl_bufidx >= MAX_CHAR_CLASS_LEN) { - return 0; + return nullptr; } ccl_buf[ccl_bufidx++] = pattern[i]; } if (ccl_bufidx >= MAX_CHAR_CLASS_LEN) { /* Catches cases such as [00000000000000000000000000000000000000][ */ - return 0; + return nullptr; } /* Null-terminate string end */ ccl_buf[ccl_bufidx++] = 0; @@ -1633,7 +1636,7 @@ re_t re_compile(re_ctx_t context, const char *pattern) } /* no buffer-out-of-bounds access on invalid patterns - * see https://github.com/kokke/tiny-regex-c/commit/1a279e04014b70b0695fba559a7c05d55e6ee90b */ - if (pattern[i] == 0) { return 0; } + if (pattern[i] == 0) { return nullptr; } i += 1; j += 1; diff --git a/tools/lammps-shell/lammps-shell.cpp b/tools/lammps-shell/lammps-shell.cpp index 936b539d43..d03e1da70b 100644 --- a/tools/lammps-shell/lammps-shell.cpp +++ b/tools/lammps-shell/lammps-shell.cpp @@ -21,7 +21,7 @@ #endif #include #else -#include +#include #endif #if defined(_OPENMP) @@ -153,14 +153,14 @@ static int save_history(std::string range, std::string file) std::size_t found = range.find_first_of("-"); if (found == std::string::npos) { // only a single number - int num = strtol(range.c_str(), NULL, 10); + int num = strtol(range.c_str(), nullptr, 10); if ((num >= from) && (num <= to)) { from = to = num; } else return 1; } else { // range of numbers if (found > 0) { // get number before '-' - int num = strtol(range.substr(0, found).c_str(), NULL, 10); + int num = strtol(range.substr(0, found).c_str(), nullptr, 10); if ((num >= from) && (num <= to)) { from = num; } else @@ -168,7 +168,7 @@ static int save_history(std::string range, std::string file) } if (range.size() > found + 1) { // get number after '-' - int num = strtol(range.substr(found + 1).c_str(), NULL, 10); + int num = strtol(range.substr(found + 1).c_str(), nullptr, 10); if ((num >= from) && (num <= to)) { to = num; } else @@ -340,13 +340,13 @@ static char *variable_expand_generator(const char *text, int state) static char *plugin_generator(const char *text, int state) { - const char *subcmd[] = {"load", "unload", "list", "clear", NULL}; + const char *subcmd[] = {"load", "unload", "list", "clear", nullptr}; const char *sub; static std::size_t idx=0, len; if (!state) idx = 0; len = strlen(text); - while ((sub = subcmd[idx]) != NULL) { + while ((sub = subcmd[idx]) != nullptr) { ++idx; if (strncmp(text,sub,len) == 0) return dupstring(sub); @@ -356,12 +356,12 @@ static char *plugin_generator(const char *text, int state) static char *plugin_style_generator(const char *text, int state) { - const char *styles[] = {"pair", "fix", "command", NULL}; + const char *styles[] = {"pair", "fix", "command", nullptr}; const char *s; static std::size_t idx=0, len; if (!state) idx = 0; len = strlen(text); - while ((s = styles[idx]) != NULL) { + while ((s = styles[idx]) != nullptr) { ++idx; if (strncmp(text,s,len) == 0) return dupstring(s); @@ -563,24 +563,24 @@ static void init_commands() // store internal commands int ncmds = sizeof(cmdlist) / sizeof(const char *); for (int i = 0; i < ncmds; ++i) - commands.push_back(cmdlist[i]); + commands.emplace_back(cmdlist[i]); // store optional commands from command styles ncmds = lammps_style_count(lmp, "command"); for (int i = 0; i < ncmds; ++i) { - if (lammps_style_name(lmp, "command", i, buf, BUFLEN)) commands.push_back(buf); + if (lammps_style_name(lmp, "command", i, buf, BUFLEN)) commands.emplace_back(buf); } // store LAMMPS shell specific command names - commands.push_back("help"); - commands.push_back("exit"); - commands.push_back("pwd"); - commands.push_back("cd"); - commands.push_back("mem"); - commands.push_back("source"); - commands.push_back("history"); - commands.push_back("clear_history"); - commands.push_back("save_history"); + commands.emplace_back("help"); + commands.emplace_back("exit"); + commands.emplace_back("pwd"); + commands.emplace_back("cd"); + commands.emplace_back("mem"); + commands.emplace_back("source"); + commands.emplace_back("history"); + commands.emplace_back("clear_history"); + commands.emplace_back("save_history"); // set name so there can be specific entries in ~/.inputrc rl_readline_name = "lammps-shell"; diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index 23a841b0a7..a61d50af45 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -42,7 +42,7 @@ add_test(NAME RunLammps WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) set_tests_properties(RunLammps PROPERTIES ENVIRONMENT "TSAN_OPTIONS=ignore_noninstrumented_modules=1;HWLOC_HIDE_ERRORS=1" - PASS_REGULAR_EXPRESSION "^LAMMPS \\([0-9]+ [A-Za-z]+ 2[0-9][0-9][0-9]\\)") + PASS_REGULAR_EXPRESSION "LAMMPS \\([0-9]+ [A-Za-z]+ 2[0-9][0-9][0-9]( - Update [0-9]+)?\\)") # check if the compiled executable will print the help message add_test(NAME HelpMessage diff --git a/unittest/c-library/test_library_commands.cpp b/unittest/c-library/test_library_commands.cpp index 6c52232a8e..267ee6108e 100644 --- a/unittest/c-library/test_library_commands.cpp +++ b/unittest/c-library/test_library_commands.cpp @@ -19,8 +19,8 @@ const char *cont_input[] = {"create_atoms 1 single &", "0.2 0.1 0.1"}; class LibraryCommands : public ::testing::Test { protected: void *lmp; - LibraryCommands(){}; - ~LibraryCommands() override{}; + LibraryCommands() = default; + ~LibraryCommands() override = default; void SetUp() override { @@ -31,7 +31,7 @@ protected: int argc = sizeof(args) / sizeof(char *); ::testing::internal::CaptureStdout(); - lmp = lammps_open_no_mpi(argc, argv, NULL); + lmp = lammps_open_no_mpi(argc, argv, nullptr); std::string output = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << output; EXPECT_THAT(output, StartsWith("LAMMPS (")); diff --git a/unittest/c-library/test_library_config.cpp b/unittest/c-library/test_library_config.cpp index e5eb044d31..456faff06f 100644 --- a/unittest/c-library/test_library_config.cpp +++ b/unittest/c-library/test_library_config.cpp @@ -22,8 +22,8 @@ protected: void *lmp; std::string INPUT_DIR = STRINGIFY(TEST_INPUT_FOLDER); - LibraryConfig(){}; - ~LibraryConfig() override{}; + LibraryConfig() = default; + ~LibraryConfig() override = default; void SetUp() override { @@ -35,7 +35,7 @@ protected: int argc = sizeof(args) / sizeof(char *); ::testing::internal::CaptureStdout(); - lmp = lammps_open_no_mpi(argc, argv, NULL); + lmp = lammps_open_no_mpi(argc, argv, nullptr); lammps_command(lmp, "fix charge all property/atom q ghost yes"); lammps_command(lmp, "region box block 0 1 0 1 0 1"); lammps_command(lmp, "create_box 1 box"); diff --git a/unittest/c-library/test_library_external.cpp b/unittest/c-library/test_library_external.cpp index 15edd5f113..57d3bef080 100644 --- a/unittest/c-library/test_library_external.cpp +++ b/unittest/c-library/test_library_external.cpp @@ -69,7 +69,7 @@ TEST(lammps_external, callback) int argc = sizeof(args) / sizeof(char *); ::testing::internal::CaptureStdout(); - void *handle = lammps_open_no_mpi(argc, argv, NULL); + void *handle = lammps_open_no_mpi(argc, argv, nullptr); std::string output = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << output; @@ -136,7 +136,7 @@ TEST(lammps_external, array) int argc = sizeof(args) / sizeof(char *); ::testing::internal::CaptureStdout(); - void *handle = lammps_open_no_mpi(argc, argv, NULL); + void *handle = lammps_open_no_mpi(argc, argv, nullptr); std::string output = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << output; diff --git a/unittest/c-library/test_library_open.cpp b/unittest/c-library/test_library_open.cpp index b7a8016a1a..c75fd3738b 100644 --- a/unittest/c-library/test_library_open.cpp +++ b/unittest/c-library/test_library_open.cpp @@ -18,7 +18,7 @@ using ::testing::StartsWith; TEST(lammps_open, null_args) { ::testing::internal::CaptureStdout(); - void *handle = lammps_open(0, NULL, MPI_COMM_WORLD, NULL); + void *handle = lammps_open(0, nullptr, MPI_COMM_WORLD, nullptr); std::string output = ::testing::internal::GetCapturedStdout(); EXPECT_THAT(output, StartsWith("LAMMPS (")); if (verbose) std::cout << output; @@ -175,7 +175,7 @@ TEST(lammps_open_fortran, no_args) MPI_Comm_split(MPI_COMM_WORLD, 0, 1, &mycomm); int fcomm = MPI_Comm_c2f(mycomm); ::testing::internal::CaptureStdout(); - void *handle = lammps_open_fortran(0, NULL, fcomm); + void *handle = lammps_open_fortran(0, nullptr, fcomm); std::string output = ::testing::internal::GetCapturedStdout(); EXPECT_THAT(output, StartsWith("LAMMPS (")); if (verbose) std::cout << output; diff --git a/unittest/c-library/test_library_properties.cpp b/unittest/c-library/test_library_properties.cpp index 57c0153c65..754c6df77f 100644 --- a/unittest/c-library/test_library_properties.cpp +++ b/unittest/c-library/test_library_properties.cpp @@ -23,8 +23,8 @@ protected: void *lmp; std::string INPUT_DIR = STRINGIFY(TEST_INPUT_FOLDER); - LibraryProperties(){}; - ~LibraryProperties() override{}; + LibraryProperties() = default; + ~LibraryProperties() override = default; void SetUp() override { @@ -36,7 +36,7 @@ protected: int argc = sizeof(args) / sizeof(char *); ::testing::internal::CaptureStdout(); - lmp = lammps_open_no_mpi(argc, argv, NULL); + lmp = lammps_open_no_mpi(argc, argv, nullptr); std::string output = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << output; EXPECT_THAT(output, StartsWith("LAMMPS (")); @@ -436,8 +436,8 @@ class AtomProperties : public ::testing::Test { protected: void *lmp; - AtomProperties(){}; - ~AtomProperties() override{}; + AtomProperties()= default;; + ~AtomProperties() override= default;; void SetUp() override { @@ -447,7 +447,7 @@ protected: int argc = sizeof(args) / sizeof(char *); ::testing::internal::CaptureStdout(); - lmp = lammps_open_no_mpi(argc, argv, NULL); + lmp = lammps_open_no_mpi(argc, argv, nullptr); std::string output = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << output; EXPECT_THAT(output, StartsWith("LAMMPS (")); diff --git a/unittest/c-library/test_library_scatter_gather.cpp b/unittest/c-library/test_library_scatter_gather.cpp index 34022f617e..7ee1cfc9eb 100644 --- a/unittest/c-library/test_library_scatter_gather.cpp +++ b/unittest/c-library/test_library_scatter_gather.cpp @@ -23,8 +23,8 @@ protected: void *lmp; std::string INPUT_DIR = STRINGIFY(TEST_INPUT_FOLDER); - GatherProperties(){}; - ~GatherProperties() override{}; + GatherProperties() = default; + ~GatherProperties() override = default; void SetUp() override { @@ -36,7 +36,7 @@ protected: int argc = sizeof(args) / sizeof(char *); ::testing::internal::CaptureStdout(); - lmp = lammps_open_no_mpi(argc, argv, NULL); + lmp = lammps_open_no_mpi(argc, argv, nullptr); std::string output = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << output; EXPECT_THAT(output, StartsWith("LAMMPS (")); diff --git a/unittest/cplusplus/test_input_class.cpp b/unittest/cplusplus/test_input_class.cpp index db11a91d88..4af7450ed8 100644 --- a/unittest/cplusplus/test_input_class.cpp +++ b/unittest/cplusplus/test_input_class.cpp @@ -29,7 +29,7 @@ protected: MPI_Initialized(&flag); if (!flag) MPI_Init(&argc, &argv); } - ~Input_commands() override {} + ~Input_commands() override = default; void SetUp() override { diff --git a/unittest/cplusplus/test_lammps_class.cpp b/unittest/cplusplus/test_lammps_class.cpp index fa7f6b30a9..663c7358d9 100644 --- a/unittest/cplusplus/test_lammps_class.cpp +++ b/unittest/cplusplus/test_lammps_class.cpp @@ -108,21 +108,22 @@ TEST_F(LAMMPS_plain, TestStyles) const char *found; const char *atom_styles[] = {"atomic", "body", "charge", "ellipsoid", "hybrid", - "line", "sphere", "tri", NULL}; - for (int i = 0; atom_styles[i] != NULL; ++i) { + "line", "sphere", "tri", nullptr}; + for (int i = 0; atom_styles[i] != nullptr; ++i) { found = lmp->match_style("atom", atom_styles[i]); - EXPECT_STREQ(found, NULL); + EXPECT_STREQ(found, nullptr); } - const char *molecule_atom_styles[] = {"angle", "bond", "full", "molecular", "template", NULL}; - for (int i = 0; molecule_atom_styles[i] != NULL; ++i) { + const char *molecule_atom_styles[] = {"angle", "bond", "full", + "molecular", "template", nullptr}; + for (int i = 0; molecule_atom_styles[i] != nullptr; ++i) { found = lmp->match_style("atom", molecule_atom_styles[i]); EXPECT_STREQ(found, "MOLECULE"); } const char *kokkos_atom_styles[] = {"angle/kk", "bond/kk", "full/kk", - "molecular/kk", "hybrid/kk", NULL}; - for (int i = 0; kokkos_atom_styles[i] != NULL; ++i) { + "molecular/kk", "hybrid/kk", nullptr}; + for (int i = 0; kokkos_atom_styles[i] != nullptr; ++i) { found = lmp->match_style("atom", kokkos_atom_styles[i]); EXPECT_STREQ(found, "KOKKOS"); } @@ -149,7 +150,7 @@ TEST_F(LAMMPS_plain, TestStyles) found = lmp->match_style("atom", "sph"); EXPECT_STREQ(found, "SPH"); found = lmp->match_style("atom", "i_don't_exist"); - EXPECT_STREQ(found, NULL); + EXPECT_STREQ(found, nullptr); } // test fixture for OpenMP with 2 threads diff --git a/unittest/force-styles/test_config_reader.cpp b/unittest/force-styles/test_config_reader.cpp index 726bd90a93..945c16c649 100644 --- a/unittest/force-styles/test_config_reader.cpp +++ b/unittest/force-styles/test_config_reader.cpp @@ -86,7 +86,7 @@ void TestConfigReader::prerequisites(const yaml_event_t &event) while (1) { data >> key >> value; if (data.eof()) break; - config.prerequisites.push_back(std::make_pair(key, value)); + config.prerequisites.emplace_back(key, value); } } @@ -141,7 +141,7 @@ void TestConfigReader::extract(const yaml_event_t &event) while (1) { data >> name >> value; if (data.eof()) break; - config.extract.push_back(make_pair(name, value)); + config.extract.emplace_back(name, value); } } diff --git a/unittest/force-styles/test_main.cpp b/unittest/force-styles/test_main.cpp index 5b2663a6cf..1ad0b79455 100644 --- a/unittest/force-styles/test_main.cpp +++ b/unittest/force-styles/test_main.cpp @@ -47,7 +47,7 @@ void write_yaml_header(YamlWriter *writer, TestConfig *cfg, const char *version) writer->emit("lammps_version", version); // date_generated - std::time_t now = time(NULL); + std::time_t now = time(nullptr); std::string block = trim(ctime(&now)); writer->emit("date_generated", block); diff --git a/unittest/force-styles/test_pair_style.cpp b/unittest/force-styles/test_pair_style.cpp index 2eda7bea9f..898fb8e412 100644 --- a/unittest/force-styles/test_pair_style.cpp +++ b/unittest/force-styles/test_pair_style.cpp @@ -858,6 +858,13 @@ TEST(PairStyle, gpu) if (!Info::has_gpu_device()) GTEST_SKIP(); if (test_config.skip_tests.count(test_info_->name())) GTEST_SKIP(); + // when testing PPPM styles with GPUs and GPU support is compiled with single precision + // we also must have single precision FFTs; otherwise skip since the test would abort + if (utils::strmatch(test_config.basename, ".*pppm.*") && + (Info::has_accelerator_feature("GPU", "precision", "single")) && + (!Info::has_fft_single_support())) + GTEST_SKIP(); + const char *args_neigh[] = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite", "-sf", "gpu"}; const char *args_noneigh[] = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite", "-sf", @@ -1252,7 +1259,7 @@ TEST(PairStyle, single) int argc = sizeof(args) / sizeof(char *); // need to add this dependency - test_config.prerequisites.push_back(std::make_pair("atom", "full")); + test_config.prerequisites.emplace_back("atom", "full"); // create a LAMMPS instance with standard settings to detect the number of atom types if (!verbose) ::testing::internal::CaptureStdout(); diff --git a/unittest/force-styles/tests/atomic-pair-reaxff-acks2.yaml b/unittest/force-styles/tests/atomic-pair-reaxff-acks2.yaml new file mode 100644 index 0000000000..2444e76746 --- /dev/null +++ b/unittest/force-styles/tests/atomic-pair-reaxff-acks2.yaml @@ -0,0 +1,173 @@ +--- +lammps_version: 31 Aug 2021 +date_generated: Tue Sep 21 15:02:20 2021 +epsilon: 5e-9 +skip_tests: omp +prerequisites: ! | + pair reaxff + fix acks2/reaxff +pre_commands: ! | + echo screen + variable newton_pair delete + variable newton_pair index on + atom_modify map array + units real + atom_style charge + lattice diamond 3.77 + region box block 0 2 0 2 0 2 + create_box 2 box + create_atoms 1 box + displace_atoms all random 0.1 0.1 0.1 623426 + mass 1 1.0 + mass 2 16.0 + set type 1 type/fraction 2 0.333333333 998877 + set type 1 charge 0.01 + set type 2 charge -0.02 + velocity all create 100 4534624 loop geom +post_commands: ! | + fix qeq all acks2/reaxff 1 0.0 8.0 1.0e-20 reaxff +input_file: in.empty +pair_style: reaxff NULL checkqeq yes +pair_coeff: ! | + * * acks2_ff.water H O +extract: ! "" +natoms: 64 +init_vdwl: -1315.674323112547 +init_coul: -251.82520863781136 +init_stress: ! |- + -3.6252552634610828e+02 -5.3642230434120154e+02 -3.2708821928047780e+02 -1.8739746594217769e+02 -7.3161204592256269e+01 2.8634078571435208e+02 +init_forces: ! |2 + 1 -6.0368026319723334e-01 2.0490281105259228e+01 1.6647650192347417e+01 + 2 -1.2754929753354234e+02 -6.4506752258382122e+01 -3.3765604494033497e+01 + 3 -1.6340638699344356e+02 -1.3395894275690221e+01 4.5681732661684634e+01 + 4 -7.8669167893588874e+00 1.2975050709670612e+02 -1.6422202215654622e+02 + 5 4.8895820330576854e+01 1.3583526793691512e+00 1.9082272968463208e+01 + 6 -3.2215264081964378e+01 -1.0434725558607181e+02 -2.9321909814724460e+01 + 7 5.4687724085035022e+01 -4.0913013646280532e+01 -5.8353503975056263e+01 + 8 -3.4374174863798075e+01 -5.4582176195261731e+01 3.9162148827896928e+01 + 9 1.0602587269872288e+02 2.4517278481186896e+01 -8.2926292024679384e+01 + 10 8.3433641774183407e+00 5.5896742851927943e+00 1.5837228744594089e+01 + 11 8.6970191683169129e-01 -5.8991563586004766e+01 -3.9877951865531514e+01 + 12 4.4192147377965640e+01 1.4903341767625852e+02 -1.6218738820961934e+02 + 13 -1.4906540622411359e+02 -1.1995838086244909e+02 1.0915797981155475e+02 + 14 -1.6840918424164060e+00 -2.4233434851726496e+01 -2.4811432594512457e+01 + 15 2.8916293161615947e+01 9.0150734924389738e+01 5.2202528013163860e+00 + 16 1.1511072719898208e+02 2.8294359308952078e+01 6.7521666411546050e+01 + 17 4.4257318509790032e+01 4.2406840066994654e+01 7.2795080140788869e+01 + 18 -7.8848831769041654e+00 -1.3664596390464098e+02 6.1096090529306210e+01 + 19 1.0685808811691570e+02 2.0723200091856646e+02 4.4123703145411937e+01 + 20 -4.9541566255910801e+01 -8.1664859207282433e+01 -2.8988844313476029e+01 + 21 -1.3289404043644814e+02 3.7558583406053941e+01 -1.0102514473761195e+02 + 22 1.3266704365038908e+02 -1.1782659065785897e+02 5.4036616742189061e+01 + 23 5.1406826507867223e+01 -2.3873203577956730e+01 -4.7707992031474234e+01 + 24 3.2375661774934940e+01 8.7122524112522697e+01 6.6904840845090462e+01 + 25 -7.6343346793073664e+01 1.4702372716259256e+02 -6.9634429545332381e+01 + 26 1.3052482043203892e+02 -7.6695952258764208e+01 -6.8144336882390846e+01 + 27 6.2295256121926471e+01 5.0088548894938114e+01 3.3482187356569881e+01 + 28 8.1224991426364603e+00 -3.8522307644648572e+00 -1.5910295435991639e+01 + 29 -1.1706768240874355e+02 7.1116543353676818e+01 1.0440306737798934e+02 + 30 2.6668840384251649e+01 -1.1285667565996226e+02 1.8633172811903989e+01 + 31 -1.0847355678967622e+02 1.0996595842176285e+02 -5.5616286819737311e+01 + 32 -1.4603119222198394e+01 4.2813303531510641e+01 3.8845175595330531e+01 + 33 -2.9522724683327016e+01 -7.8740075435568029e+00 4.0691892849331758e+01 + 34 9.4358005650347835e+01 5.1578786222111148e+01 4.9877606247135589e+00 + 35 1.3878162567772878e+02 1.3002914177061694e+01 -3.9262700309813695e+01 + 36 -5.4285827285916746e+01 -8.6097074177259515e+01 6.3573072280656689e+01 + 37 4.8502367882367082e+01 7.1094372467616139e+01 -6.4170831125588478e+01 + 38 -1.2068302892901679e+02 -2.3921624494724261e+02 1.0639158013338042e+02 + 39 4.7483616773316575e+00 1.1147185880245857e+01 9.5242536579092729e+01 + 40 -4.2106716215321676e+00 2.8923432927375652e+00 -3.8847459020822011e+00 + 41 -1.2582176673926276e+02 -1.1458507442867946e+02 1.5633840332025807e+01 + 42 4.3299931174721657e+01 -1.1323682562113908e+02 -1.2149036854079469e+02 + 43 -6.1455115997918410e+00 -1.1290761800594723e+01 1.3010001275147209e+02 + 44 2.3306479216564437e+01 -7.2456643864466814e+00 -2.1408875167843437e+01 + 45 -2.2863088909548026e+01 1.3728756890564244e+02 1.7762941813938326e+02 + 46 4.5766906983362070e+01 -6.7544686606488227e+01 3.7528326465811972e+01 + 47 -3.2700893536527538e+01 -5.3002101899722568e+01 -5.4679464444461047e+01 + 48 2.0328502419620253e+02 -3.0317080221415955e+02 -1.7385360483394399e+02 + 49 -6.8067873927712014e+01 3.9176176719051938e+01 3.5930432225694524e+01 + 50 8.9353300749969620e+00 1.4185265656301095e+02 1.5862761052665803e+02 + 51 3.5555345549045576e+01 -3.2564032333055451e+01 1.4767362774338116e+02 + 52 -1.0584640086659454e+02 1.0312320105331467e+02 -5.0601860204759092e+01 + 53 -3.3989834984567189e+01 9.4952795280998046e+01 -2.0788572482728082e+02 + 54 3.1058276661162811e+01 -5.5555419356318176e+01 4.7450764854663454e+01 + 55 8.0177808131181635e+01 -1.2981809858342260e+02 5.6596128355738813e+01 + 56 -1.2360446884305839e+01 -2.8595758498921775e+01 -5.6863776538006210e+00 + 57 4.5290996755611062e+01 1.5919693798996261e+02 9.9974122525349088e+01 + 58 -2.8760688272312827e+01 6.0635769417465973e+01 -2.3798836888216112e+01 + 59 -2.2258012527336544e+02 1.3033272684720029e+02 1.4065235688360508e+02 + 60 -2.7053865051546467e+01 1.4140560377577856e+02 -1.2766809320306062e+02 + 61 -6.3880582214376446e+01 -1.6334264803781880e+02 -1.2897713279774706e+02 + 62 6.9329936622438794e+01 6.4175913906891367e+01 -9.4055044619463501e+01 + 63 1.1093666087049192e+02 -1.8945409551622827e+01 -7.9769943280840309e+01 + 64 -3.2043182569612747e+00 6.0969354223353436e-02 8.3726884654705636e+00 +run_vdwl: -1315.67379925802 +run_coul: -251.82538792482003 +run_stress: ! |- + -3.6252933525980472e+02 -5.3641871517019717e+02 -3.2709175284369167e+02 -1.8738655015007816e+02 -7.3168357673524369e+01 2.8633318365887470e+02 +run_forces: ! |2 + 1 -6.0427779703512252e-01 2.0490756272412511e+01 1.6647493421616424e+01 + 2 -1.2754841307685804e+02 -6.4508077454175094e+01 -3.3763524679658680e+01 + 3 -1.6340651846845867e+02 -1.3399328724256982e+01 4.5679725510421832e+01 + 4 -7.8684594311176888e+00 1.2975107988543994e+02 -1.6422243689311080e+02 + 5 4.8894979857641701e+01 1.3587905179520945e+00 1.9080723746040558e+01 + 6 -3.2215908697921762e+01 -1.0434604335770943e+02 -2.9323571125825332e+01 + 7 5.4688956076284285e+01 -4.0913951081108415e+01 -5.8353333114689789e+01 + 8 -3.4374795730683481e+01 -5.4582565197183818e+01 3.9161685070849273e+01 + 9 1.0602750268492444e+02 2.4518806007662270e+01 -8.2928224031342211e+01 + 10 8.3448765452309477e+00 5.5864371171692877e+00 1.5832573244721663e+01 + 11 8.7180631758889338e-01 -5.8993323881745852e+01 -3.9884267152772146e+01 + 12 4.4192365852491093e+01 1.4903429729452878e+02 -1.6219206584779144e+02 + 13 -1.4906927452343609e+02 -1.1995874777506886e+02 1.0916264378106862e+02 + 14 -1.6828280298940346e+00 -2.4232825100885098e+01 -2.4809440148861022e+01 + 15 2.8919110783949506e+01 9.0150838201145390e+01 5.2192985984410605e+00 + 16 1.1511130216873305e+02 2.8295862401014123e+01 6.7521012199711848e+01 + 17 4.4256599992638108e+01 4.2406484713402243e+01 7.2795346026494585e+01 + 18 -7.8848008384430539e+00 -1.3664634639099947e+02 6.1095756801901778e+01 + 19 1.0685903199732036e+02 2.0723222350990062e+02 4.4124512300846625e+01 + 20 -4.9546858835888280e+01 -8.1659242595103365e+01 -2.8998046004100793e+01 + 21 -1.3289412244333695e+02 3.7556999753658936e+01 -1.0102308037606839e+02 + 22 1.3266755025284439e+02 -1.1782686540823109e+02 5.4036617937847950e+01 + 23 5.1405885909264370e+01 -2.3873943214452368e+01 -4.7708844268632390e+01 + 24 3.2373370471025311e+01 8.7125637769180997e+01 6.6908838382987426e+01 + 25 -7.6344016160229543e+01 1.4702421930244424e+02 -6.9633680565374561e+01 + 26 1.3052497933070995e+02 -7.6696652508392248e+01 -6.8143428678963431e+01 + 27 6.2295886509448287e+01 5.0089165913467404e+01 3.3482708752529071e+01 + 28 8.1190626623672930e+00 -3.8523237731699100e+00 -1.5914254496826086e+01 + 29 -1.1706723439423264e+02 7.1117332937318878e+01 1.0440215382628243e+02 + 30 2.6668772919869735e+01 -1.1285862351526934e+02 1.8633778385120795e+01 + 31 -1.0847428154293594e+02 1.0996582278921207e+02 -5.5617081154122886e+01 + 32 -1.4603651831782168e+01 4.2816664679363605e+01 3.8851610792442827e+01 + 33 -2.9519680131282556e+01 -7.8704683492661038e+00 4.0688290026701139e+01 + 34 9.4358200696983218e+01 5.1577940760121209e+01 4.9883503942774707e+00 + 35 1.3878184805054929e+02 1.3003401024036332e+01 -3.9263099864942795e+01 + 36 -5.4286023648995418e+01 -8.6096314968346391e+01 6.3573237117647288e+01 + 37 4.8502340503125687e+01 7.1092674139180076e+01 -6.4168924259418233e+01 + 38 -1.2068169270717785e+02 -2.3921584479385240e+02 1.0639203784120866e+02 + 39 4.7485776026051134e+00 1.1146641081166505e+01 9.5242256869966710e+01 + 40 -4.2108599786857281e+00 2.8922835579037174e+00 -3.8847867381075893e+00 + 41 -1.2582200605811198e+02 -1.1458626320666988e+02 1.5634634730428779e+01 + 42 4.3298811262104522e+01 -1.1323825959325698e+02 -1.2148951307455756e+02 + 43 -6.1445155174009782e+00 -1.1289851749911026e+01 1.3009938178494568e+02 + 44 2.3304112892355839e+01 -7.2440612084043048e+00 -2.1407988900122422e+01 + 45 -2.2861406128358620e+01 1.3728999900873370e+02 1.7762870040423550e+02 + 46 4.5768613429530582e+01 -6.7545097081622060e+01 3.7529079576855302e+01 + 47 -3.2701732666230441e+01 -5.3001652471881712e+01 -5.4679269668412701e+01 + 48 2.0328585168114128e+02 -3.0317396492632025e+02 -1.7385434764992988e+02 + 49 -6.8067688050655704e+01 3.9177224134041339e+01 3.5930110316890534e+01 + 50 8.9327213346898784e+00 1.4185280256429226e+02 1.5862826485318126e+02 + 51 3.5558738484365847e+01 -3.2568300408296722e+01 1.4767879474338230e+02 + 52 -1.0584741977885415e+02 1.0312398264883062e+02 -5.0601463470758752e+01 + 53 -3.3993088743715688e+01 9.4956349730017635e+01 -2.0789074418856003e+02 + 54 3.1064727433155586e+01 -5.5559689516396887e+01 4.7459382807520264e+01 + 55 8.0177886992157639e+01 -1.2981800298783250e+02 5.6595487267941550e+01 + 56 -1.2360401264720954e+01 -2.8594676148725313e+01 -5.6861881216640269e+00 + 57 4.5290952881935198e+01 1.5919551554155248e+02 9.9973551309890851e+01 + 58 -2.8760842576207317e+01 6.0634819158216445e+01 -2.3799874997643553e+01 + 59 -2.2258027485314665e+02 1.3033435434930627e+02 1.4065348873603111e+02 + 60 -2.7053242000018251e+01 1.4140890863215688e+02 -1.2766702327645474e+02 + 61 -6.3880091105988988e+01 -1.6334055272776587e+02 -1.2897680193744620e+02 + 62 6.9331724159145509e+01 6.4173290531939443e+01 -9.4050280780932169e+01 + 63 1.1093735613545634e+02 -1.8944653137110969e+01 -7.9770997264690990e+01 + 64 -3.2080968598290363e+00 5.4907326642554835e-02 8.3750551713524164e+00 +... diff --git a/unittest/force-styles/tests/atomic-pair-reaxff-acks2_efield.yaml b/unittest/force-styles/tests/atomic-pair-reaxff-acks2_efield.yaml new file mode 100644 index 0000000000..295b343dea --- /dev/null +++ b/unittest/force-styles/tests/atomic-pair-reaxff-acks2_efield.yaml @@ -0,0 +1,176 @@ +--- +lammps_version: 29 Sep 2021 +date_generated: Wed Oct 13 18:05:37 2021 +epsilon: 5e-09 +skip_tests: omp +prerequisites: ! | + pair reaxff + fix acks2/reaxff + fix efield +pre_commands: ! | + echo screen + boundary m p m + variable newton_pair delete + variable newton_pair index on + atom_modify map array + units real + atom_style charge + lattice diamond 3.77 + region box block 0 2 0 2 0 2 + create_box 2 box + create_atoms 1 box + displace_atoms all random 0.1 0.1 0.1 623426 + mass 1 1.0 + mass 2 16.0 + set type 1 type/fraction 2 0.333333333 998877 + set type 1 charge 0.01 + set type 2 charge -0.02 + velocity all create 100 4534624 loop geom +post_commands: ! | + fix qeq all acks2/reaxff 1 0.0 8.0 1.0e-20 reaxff + fix field all efield 0.001 0.000 -0.001 +input_file: in.empty +pair_style: reaxff NULL checkqeq yes +pair_coeff: ! | + * * acks2_ff.water H O +extract: ! "" +natoms: 64 +init_vdwl: -1263.7843580276833 +init_coul: -241.77421360301622 +init_stress: ! |- + -1.0732687705180101e+03 -1.0968581855302236e+03 -8.9675214779212911e+02 -6.2181509337974205e+02 8.0965758549240192e+01 -3.3557256247328615e+02 +init_forces: ! |2 + 1 1.6544873233628813e+01 1.8862665510840209e+01 2.0996152926847120e+01 + 2 1.4107834931964554e+01 1.1562492571378540e+01 1.7399331363893921e+01 + 3 -1.6237159803722722e+02 7.3768611650058613e-01 3.1249313093594427e+01 + 4 -3.7132168139442896e+01 -4.1348791089422249e+01 9.7297469776452239e+00 + 5 8.4639020127616135e+01 1.1700543338567250e+01 -2.0669303202462331e+01 + 6 -6.7193803612931589e+01 -1.0878669861242204e+02 -6.7762372009491596e+00 + 7 5.5859023847810974e+01 -3.6423373006689900e+01 -5.9883505955638867e+01 + 8 7.5524936995194892e+01 3.7206352688917150e+01 -9.1328349315703619e+01 + 9 9.1130895600440979e+01 -8.0301316370963942e+00 -5.4852426195812804e+01 + 10 -5.0551266395515722e+00 2.0267717120929724e+01 3.8895863126909710e+01 + 11 2.2566658900909613e+00 -5.5304165456265110e+01 -3.3341598415342069e+01 + 12 -8.6535829138121315e+01 -6.9396569247311319e+01 7.0609040432477826e+01 + 13 6.5588331967798567e+01 3.4684525121633868e+01 -1.0088769226898077e+02 + 14 -3.6420201957516922e+00 -2.4435068124276075e+01 -2.4467648024146090e+01 + 15 -1.8836951424155945e+01 4.6726538059504868e+01 4.0645964870661466e+01 + 16 -3.5128322960337672e+00 1.9617147249697741e+01 2.1986616163791854e+01 + 17 3.0824371211950428e+01 5.1089885717446847e+01 2.4230958400273195e+01 + 18 6.5737244296448072e+00 -1.4597245806268733e+01 -7.6810211814524658e+00 + 19 5.4554598758648780e+01 2.1142177097216361e+02 7.1040683521812937e+01 + 20 6.6655564140916761e+00 -1.2392613251772549e+02 6.2549558370165414e+01 + 21 -1.6665361076208004e+02 5.0057857067631467e+01 -1.1352343180529587e+02 + 22 3.1292433219186524e+01 -2.6413949828022356e+00 1.5285607176899094e+02 + 23 4.4081782799617116e+01 -3.6246774449704979e+01 -4.5797722792608511e+01 + 24 2.8700709559300659e+01 7.2175615569147638e+01 5.7369098498268578e+01 + 25 -5.5580855024638424e+01 -6.4654228469645361e+01 9.7692246756652978e+01 + 26 1.2973493969999291e+02 -7.5778827402876644e+01 -6.6515328508133550e+01 + 27 8.8126716297991138e+01 5.1433527767092137e+01 2.3407077354386384e+01 + 28 1.2511253239242043e+01 1.3636132025181478e+01 -9.4253259151143549e+00 + 29 -1.1778606765410751e+02 6.6008522248248454e+01 9.0944536800011150e+01 + 30 1.9914163526214200e+01 -1.1702697898021106e+02 1.5464671145793428e+01 + 31 -1.1140631382104954e+02 -4.6409410482794783e+01 -2.1344928927691623e+01 + 32 -1.1955448702076986e+01 9.5875384658668636e+00 2.7935715319779696e+01 + 33 8.7786579760163562e+01 -6.1345188767581263e+01 -7.1583281055181686e+01 + 34 1.2872548655914446e+02 8.7759051883822295e+01 6.8846205973723400e+01 + 35 1.6202753364566260e+02 2.8107190316085855e+01 -3.5703982160947440e+01 + 36 -5.1138513989988184e+01 -6.9911430734306776e+01 4.6497683634936855e+01 + 37 2.2164674302914040e+01 4.4737593543364085e+01 -6.8023531826609343e+01 + 38 -1.3243129081970449e+02 -9.8322438904976408e+01 -4.8865871604589785e+01 + 39 -1.4539914202022622e+01 7.0254382906605883e-01 -6.9870852838183719e+00 + 40 -6.3757234386642994e+00 3.6220340490265279e+00 -6.3430626603811451e+00 + 41 -1.2630715661950779e+02 -1.1405926855800243e+02 1.4235856837032820e+01 + 42 3.3348455809719603e+01 -1.2561825182001029e+02 -1.1707774931406259e+02 + 43 2.4855608100273688e+01 -3.4752760572532353e+01 1.1721316758164591e+02 + 44 4.0739282283363146e+01 -1.2074985902270566e+01 -2.3182902503712622e+01 + 45 -2.3237992224046511e+01 1.3605501182748912e+02 1.7647506188220666e+02 + 46 2.6919517337707384e+00 4.1721320911687787e+00 -3.8364966679971597e+00 + 47 -3.9485981497722868e+01 -4.3831504145579089e+01 -5.0164524782887561e+01 + 48 9.2976340136280768e+01 -8.8061944561111218e+01 -5.6621723131204867e+01 + 49 5.7415986126026773e+01 2.1746462671254432e+00 -4.3765218912166020e+01 + 50 5.0097667749424950e+01 2.7265189853128518e+01 1.0400665840596920e+02 + 51 1.8957139639185641e+01 -6.2782103815444735e+01 1.6722596849835512e+02 + 52 -1.0201283330855033e+02 1.0135195584789010e+02 -4.9656402161283062e+01 + 53 -8.9760482392830099e+01 1.0161186676769185e+02 -2.2025992484840475e+02 + 54 -3.0614746621547880e+01 -1.9050762297562603e+01 -2.5859185152914435e+01 + 55 -7.5153564648369642e-01 -9.6902529050367114e-01 1.2743187960663205e+00 + 56 -8.4859544509025913e+00 -1.4740153224666239e+01 1.0257345367891229e+01 + 57 4.7507280968459092e+01 1.6105950569287401e+02 1.0237884790486045e+02 + 58 -1.3171330115126645e+01 7.3223243955129831e+01 4.4809585421873388e+00 + 59 -6.4621630782895465e+01 9.6129174704686022e+01 1.5093371796835154e+02 + 60 3.0088516319665583e+01 1.7978356604345029e+02 -9.7558160484741677e+01 + 61 -5.1750730839626343e+01 -1.7194405989348417e+02 -1.2738166548385770e+02 + 62 5.7609018186683649e+01 5.3316676874956656e+01 -1.0988014102420154e+02 + 63 -2.5215659343014210e+01 -5.4629420152948171e+01 -5.0894419130817056e+01 + 64 -8.8059251331362219e+01 -3.0748812251211561e+01 3.1311409613927594e+01 +run_vdwl: -1263.7812226205149 +run_coul: -241.77431297463355 +run_stress: ! |- + -1.0732623865648388e+03 -1.0968521804966483e+03 -8.9674335342881352e+02 -6.2181391692244063e+02 8.0959729084010746e+01 -3.3558013691685204e+02 +run_forces: ! |2 + 1 1.6544232553581971e+01 1.8862019986836589e+01 2.0994941865486204e+01 + 2 1.4107290444024050e+01 1.1562222232717577e+01 1.7398935380843948e+01 + 3 -1.6237215881974376e+02 7.3432961093932936e-01 3.1246919721674431e+01 + 4 -3.7132561907901767e+01 -4.1349112476812373e+01 9.7306813516100714e+00 + 5 8.4639859379463857e+01 1.1701335850556484e+01 -2.0670118889863986e+01 + 6 -6.7193179286828212e+01 -1.0878480473686349e+02 -6.7776201873383126e+00 + 7 5.5860279340002492e+01 -3.6424202640975622e+01 -5.9883243627543052e+01 + 8 7.5523949595969242e+01 3.7205843645225180e+01 -9.1328163429407269e+01 + 9 9.1132153498365000e+01 -8.0294015106958536e+00 -5.4854373254291879e+01 + 10 -5.0543438938869816e+00 2.0265568551370560e+01 3.8892408370645036e+01 + 11 2.2590900417619166e+00 -5.5306216756222348e+01 -3.3348769387388884e+01 + 12 -8.6529917311355064e+01 -6.9392956100368195e+01 7.0605936206703788e+01 + 13 6.5582829942500510e+01 3.4683277452110765e+01 -1.0088129053457016e+02 + 14 -3.6407547584093862e+00 -2.4434434655450158e+01 -2.4465678413828943e+01 + 15 -1.8835383504020545e+01 4.6725147451466299e+01 4.0644786358859363e+01 + 16 -3.5128444201904752e+00 1.9614904774654285e+01 2.1983872664041776e+01 + 17 3.0824498024574577e+01 5.1089866020602130e+01 2.4231024241605290e+01 + 18 6.5739130682327769e+00 -1.4597089579069062e+01 -7.6808820450601480e+00 + 19 5.4555769907347333e+01 2.1142176567824694e+02 7.1041499624047702e+01 + 20 6.6656938419689631e+00 -1.2392554538030720e+02 6.2549560025499467e+01 + 21 -1.6665373624470132e+02 5.0057368819337832e+01 -1.1352271444751825e+02 + 22 3.1294137972313312e+01 -2.6433268939701646e+00 1.5285580563663439e+02 + 23 4.4080875001871384e+01 -3.6247455920969131e+01 -4.5798644712663076e+01 + 24 2.8698567600094101e+01 7.2178641106694457e+01 5.7372823020059315e+01 + 25 -5.5580418986766084e+01 -6.4654019131590019e+01 9.7691735465611018e+01 + 26 1.2973502303885829e+02 -7.5779455574870099e+01 -6.6514358152908059e+01 + 27 8.8126287913796759e+01 5.1435504570072304e+01 2.3409291923481693e+01 + 28 1.2510113771398244e+01 1.3634931483058264e+01 -9.4252533397897764e+00 + 29 -1.1778523460931234e+02 6.6009613580347121e+01 9.0943212016746855e+01 + 30 1.9914063738336566e+01 -1.1702883459063344e+02 1.5465197779555830e+01 + 31 -1.1140726302354332e+02 -4.6410020081938136e+01 -2.1345709679555512e+01 + 32 -1.1957048806890009e+01 9.5906378303466582e+00 2.7942436601482576e+01 + 33 8.7786367176445452e+01 -6.1345385969144544e+01 -7.1583303703860352e+01 + 34 1.2872581367351663e+02 8.7758298153621197e+01 6.8846441344195767e+01 + 35 1.6202779191187562e+02 2.8107540424415969e+01 -3.5704512791568746e+01 + 36 -5.1137206842063968e+01 -6.9909055340457016e+01 4.6496527650762957e+01 + 37 2.2163372903721005e+01 4.4734516931542203e+01 -6.8020131205899546e+01 + 38 -1.3243178798824840e+02 -9.8321818047878409e+01 -4.8866073883159153e+01 + 39 -1.4539787995247799e+01 7.0253538717035013e-01 -6.9871154389387859e+00 + 40 -6.3759251823074372e+00 3.6219715809810360e+00 -6.3431123972910317e+00 + 41 -1.2630739214311127e+02 -1.1406046951535005e+02 1.4236670870575175e+01 + 42 3.3347539164801596e+01 -1.2561964397086489e+02 -1.1707704405287748e+02 + 43 2.4855187641070557e+01 -3.4751994200759135e+01 1.1721400031115856e+02 + 44 4.0736513361477975e+01 -1.2073170509775336e+01 -2.3181680396846534e+01 + 45 -2.3236271184767592e+01 1.3605750605535329e+02 1.7647433643140135e+02 + 46 2.6919972472205083e+00 4.1721174495610596e+00 -3.8364650402611424e+00 + 47 -3.9486312669643070e+01 -4.3831801629913109e+01 -5.0165032821803521e+01 + 48 9.2977999041840789e+01 -8.8063595664574294e+01 -5.6623443462956914e+01 + 49 5.7416262761079196e+01 2.1747968406494360e+00 -4.3764886460190468e+01 + 50 5.0095819904085424e+01 2.7265328004138762e+01 1.0400611458885135e+02 + 51 1.8960698364911142e+01 -6.2786559548989580e+01 1.6723090861991949e+02 + 52 -1.0201510984444386e+02 1.0135385381698417e+02 -4.9656785152734628e+01 + 53 -8.9763310205569240e+01 1.0161533612990944e+02 -2.2026493760153934e+02 + 54 -3.0614025776936483e+01 -1.9050045961497887e+01 -2.5858482423080094e+01 + 55 -7.5156660469712333e-01 -9.6904023224723745e-01 1.2743032380741282e+00 + 56 -8.4859915855388337e+00 -1.4739109817962941e+01 1.0257420490900687e+01 + 57 4.7507223485547648e+01 1.6105805016960610e+02 1.0237826693894539e+02 + 58 -1.3170532544205338e+01 7.3223353402828366e+01 4.4818703297184754e+00 + 59 -6.4622658207012819e+01 9.6130764940749344e+01 1.5093510874841516e+02 + 60 3.0089230627199072e+01 1.7978668287947750e+02 -9.7557372159122423e+01 + 61 -5.1750204112643075e+01 -1.7194201577527312e+02 -1.2738134561846734e+02 + 62 5.7608008441869174e+01 5.3315211268989366e+01 -1.0988080965709574e+02 + 63 -2.5216351744964118e+01 -5.4629182629703294e+01 -5.0894055553792974e+01 + 64 -8.8059174176173670e+01 -3.0751077235434341e+01 3.1310372105706474e+01 +... diff --git a/unittest/force-styles/tests/mol-pair-coul_long.yaml b/unittest/force-styles/tests/mol-pair-coul_long.yaml index 61e038af54..5746877cc3 100644 --- a/unittest/force-styles/tests/mol-pair-coul_long.yaml +++ b/unittest/force-styles/tests/mol-pair-coul_long.yaml @@ -1,7 +1,7 @@ --- lammps_version: 10 Feb 2021 date_generated: Fri Feb 26 23:08:42 2021 -epsilon: 1.5e-13 +epsilon: 2.0e-13 prerequisites: ! | atom full pair coul/long diff --git a/unittest/force-styles/yaml_writer.cpp b/unittest/force-styles/yaml_writer.cpp index feaa3d52eb..b1165ff821 100644 --- a/unittest/force-styles/yaml_writer.cpp +++ b/unittest/force-styles/yaml_writer.cpp @@ -31,9 +31,9 @@ YamlWriter::YamlWriter(const char *outfile) yaml_stream_start_event_initialize(&event, YAML_UTF8_ENCODING); yaml_emitter_emit(&emitter, &event); - yaml_document_start_event_initialize(&event, NULL, NULL, NULL, 0); + yaml_document_start_event_initialize(&event, nullptr, nullptr, nullptr, 0); yaml_emitter_emit(&emitter, &event); - yaml_mapping_start_event_initialize(&event, NULL, (yaml_char_t *)YAML_MAP_TAG, 1, + yaml_mapping_start_event_initialize(&event, nullptr, (yaml_char_t *)YAML_MAP_TAG, 1, YAML_ANY_MAPPING_STYLE); yaml_emitter_emit(&emitter, &event); } @@ -67,11 +67,11 @@ void YamlWriter::emit(const std::string &key, const int value) void YamlWriter::emit(const std::string &key, const std::string &value) { - yaml_scalar_event_initialize(&event, NULL, (yaml_char_t *)YAML_STR_TAG, + yaml_scalar_event_initialize(&event, nullptr, (yaml_char_t *)YAML_STR_TAG, (yaml_char_t *)key.c_str(), key.size(), 1, 0, YAML_PLAIN_SCALAR_STYLE); yaml_emitter_emit(&emitter, &event); - yaml_scalar_event_initialize(&event, NULL, (yaml_char_t *)YAML_STR_TAG, + yaml_scalar_event_initialize(&event, nullptr, (yaml_char_t *)YAML_STR_TAG, (yaml_char_t *)value.c_str(), value.size(), 1, 0, YAML_PLAIN_SCALAR_STYLE); yaml_emitter_emit(&emitter, &event); @@ -79,11 +79,11 @@ void YamlWriter::emit(const std::string &key, const std::string &value) void YamlWriter::emit_block(const std::string &key, const std::string &value) { - yaml_scalar_event_initialize(&event, NULL, (yaml_char_t *)YAML_STR_TAG, + yaml_scalar_event_initialize(&event, nullptr, (yaml_char_t *)YAML_STR_TAG, (yaml_char_t *)key.c_str(), key.size(), 1, 0, YAML_PLAIN_SCALAR_STYLE); yaml_emitter_emit(&emitter, &event); - yaml_scalar_event_initialize(&event, NULL, (yaml_char_t *)YAML_STR_TAG, + yaml_scalar_event_initialize(&event, nullptr, (yaml_char_t *)YAML_STR_TAG, (yaml_char_t *)value.c_str(), value.size(), 1, 0, YAML_LITERAL_SCALAR_STYLE); yaml_emitter_emit(&emitter, &event); diff --git a/unittest/fortran/wrap_commands.cpp b/unittest/fortran/wrap_commands.cpp index bdf38144c5..2605cb7295 100644 --- a/unittest/fortran/wrap_commands.cpp +++ b/unittest/fortran/wrap_commands.cpp @@ -21,8 +21,8 @@ double f_lammps_get_natoms(); class LAMMPS_commands : public ::testing::Test { protected: LAMMPS_NS::LAMMPS *lmp; - LAMMPS_commands(){}; - ~LAMMPS_commands() override{}; + LAMMPS_commands() = default; + ~LAMMPS_commands() override = default; void SetUp() override {