From 311a17dbc7ab35ff544ddb10b54e2b1235b6cc7b Mon Sep 17 00:00:00 2001
From: AAAlvesJr <aalvesju@gmail.com>
Date: Fri, 17 Apr 2020 04:50:26 +0200
Subject: [PATCH] g# This is a combination of 3 commits.

initial refactory

Refactoring corsika/core corsica/framework/geometry

...

refactory: corsika/framework/sequence

refactorying...

header.h -> header.hpp + other refacorying...

...

refactory media directory...

refactory: corsika/processes

...

refactoring...

testing...

Sibyll headers...

Pythia headers...

module sub-dir

some floating cc files around

eliminate relative include paths on top directories

fixing include file paths, remove quotes from include directives, fix remaining include guards and correct file names ...

unit tests: fixing include file paths, remove quotes from include directives, fix remaining include guards and correct file names ...

corsika/detail inclusion

corsika/detail changes

corsika::secondary_namespaces supressed in favor of detail

more include guards, relative file path, etc ...

nested class promotion to corsika::detail

Inteface to Pythia

one more relative path...

eliminating files...

dependencies managment...

...

dependencies refactory

adding corsika/modules and catch2

build scripts for UrQMD

make modules compile

cmake

first working vesion of new fwk

need to generate some header files

build scripts for dependencies

sibyll works now

proper file endings in many places
---
 CMakeLists.txt                                |   279 +-
 COAST/CMakeLists.txt                          |    66 -
 COAST/COASTProcess.cc                         |    43 -
 COAST/COASTProcess.h                          |    41 -
 COAST/COASTStack.h                            |   187 -
 COAST/COASTUserLib.cc                         |   107 -
 COAST/ParticleConversion.cc                   |    35 -
 COAST/ParticleConversion.h                    |   209 -
 COAST/README.md                               |    65 -
 CONTRIBUTING.md                               |    30 +-
 Documentation/CMakeLists.txt                  |     3 -
 Documentation/Doxygen/CMakeLists.txt          |    33 -
 Documentation/Examples/stack_example.cc       |    59 -
 Environment/CMakeLists.txt                    |   116 -
 Environment/Environment.h                     |    61 -
 Environment/FlatExponential.h                 |    66 -
 Environment/HomogeneousMedium.h               |    60 -
 Environment/LinearApproximationIntegrator.h   |    50 -
 Environment/NuclearComposition.h              |   148 -
 Environment/SlidingPlanarExponential.h        |    72 -
 Environment/VolumeTreeNode.h                  |   134 -
 FIXME.md                                      |  5129 ++++
 Framework/CMakeLists.txt                      |    18 -
 Framework/Cascade/CMakeLists.txt              |    55 -
 Framework/Cascade/Cascade.dox                 |     8 -
 Framework/Cascade/Cascade.h                   |   395 -
 Framework/Cascade/testCascade.h               |    45 -
 Framework/Geometry/BaseTrajectory.h           |    59 -
 Framework/Geometry/BaseVector.h               |    34 -
 Framework/Geometry/CMakeLists.txt             |    78 -
 Framework/Geometry/CoordinateSystem.h         |   129 -
 Framework/Geometry/FourVector.h               |   214 -
 Framework/Geometry/Helix.h                    |    76 -
 Framework/Geometry/Line.h                     |    64 -
 Framework/Geometry/Point.h                    |    74 -
 Framework/Geometry/QuantityVector.h           |   138 -
 Framework/Geometry/Sphere.h                   |    36 -
 Framework/Geometry/Trajectory.h               |   261 -
 Framework/Geometry/Vector.h                   |   181 -
 Framework/Logging/CMakeLists.txt              |    51 -
 Framework/Particles/CMakeLists.txt            |    93 -
 Framework/Particles/particles.dox             |    15 -
 Framework/ProcessSequence/CMakeLists.txt      |    82 -
 Framework/ProcessSequence/ProcessSequence.h   |   396 -
 Framework/Random/CMakeLists.txt               |    53 -
 Framework/Random/RNGManager.cc                |    64 -
 Framework/StackInterface/CMakeLists.txt       |    51 -
 Framework/StackInterface/Stack.dox            |    20 -
 Framework/Testing/CMakeLists.txt              |    52 -
 Framework/Units/CMakeLists.txt                |    23 -
 Framework/Utilities/CMakeLists.txt            |   118 -
 Framework/Utilities/COMBoost.h                |    99 -
 Processes/CMakeLists.txt                      |    51 -
 Processes/EnergyLoss/CMakeLists.txt           |    63 -
 Processes/EnergyLoss/EnergyLoss.cc            |   279 -
 Processes/EnergyLoss/Properties8.dat          |  2907 ---
 Processes/EnergyLoss/ReadData.py              |    73 -
 Processes/EnergyLoss/SummaryPropTable.dat     |   138 -
 Processes/HadronicElasticModel/CMakeLists.txt |    61 -
 .../HadronicElasticModel.cc                   |   194 -
 Processes/NullModel/CMakeLists.txt            |    60 -
 Processes/ObservationPlane/CMakeLists.txt     |    44 -
 Processes/ParticleCut/CMakeLists.txt          |    66 -
 Processes/QGSJetII/CMakeLists.txt             |   107 -
 Processes/Sibyll/CMakeLists.txt               |   111 -
 Processes/Sibyll/Interaction.h                |    70 -
 Processes/StackInspector/CMakeLists.txt       |    61 -
 .../StackInspector/testStackInspector.cc      |    49 -
 Processes/SwitchProcess/CMakeLists.txt        |    40 -
 Processes/TrackWriter/CMakeLists.txt          |    61 -
 Processes/TrackingLine/CMakeLists.txt         |    37 -
 .../TrackingLine/testTrackingLineStack.h      |    39 -
 Processes/UrQMD/CMakeLists.txt                |    96 -
 Setup/CMakeLists.txt                          |    39 -
 Setup/SetupEnvironment.h                      |    79 -
 Setup/SetupStack.h                            |   173 -
 Stack/CMakeLists.txt                          |     5 -
 Stack/DummyStack/CMakeLists.txt               |    37 -
 Stack/NuclearStackExtension/CMakeLists.txt    |    42 -
 .../testNuclearStackExtension.cc              |   258 -
 Stack/SuperStupidStack/CMakeLists.txt         |    39 -
 .../SuperStupidStack/testSuperStupidStack.cc  |    63 -
 ThirdParty/.gitignore                         |     1 -
 ThirdParty/CMakeLists.txt                     |   292 -
 ThirdParty/ThirdParty.dox                     |    70 -
 ThirdParty/eigen-eigen-b3f3d4950030.tar.bz2   |   Bin 1663467 -> 0 bytes
 ThirdParty/lcov/.version                      |     3 -
 ThirdParty/lcov/CHANGES                       |  3454 ---
 ThirdParty/lcov/CONTRIBUTING                  |    93 -
 ThirdParty/lcov/COPYING                       |   339 -
 ThirdParty/lcov/Makefile                      |   122 -
 ThirdParty/lcov/README                        |   135 -
 ThirdParty/lcov/bin/copy_dates.sh             |    36 -
 ThirdParty/lcov/bin/gendesc                   |   226 -
 ThirdParty/lcov/bin/genhtml                   |  5974 -----
 ThirdParty/lcov/bin/geninfo                   |  4014 ---
 ThirdParty/lcov/bin/genpng                    |   389 -
 ThirdParty/lcov/bin/get_changes.sh            |    13 -
 ThirdParty/lcov/bin/get_version.sh            |    34 -
 ThirdParty/lcov/bin/install.sh                |    76 -
 ThirdParty/lcov/bin/lcov                      |  4329 ----
 ThirdParty/lcov/bin/updateversion.pl          |   194 -
 ThirdParty/lcov/example/Makefile              |    98 -
 ThirdParty/lcov/example/README                |     6 -
 ThirdParty/lcov/example/descriptions.txt      |    10 -
 ThirdParty/lcov/example/example.c             |    60 -
 ThirdParty/lcov/example/gauss.h               |     6 -
 ThirdParty/lcov/example/iterate.h             |     6 -
 ThirdParty/lcov/example/methods/gauss.c       |    48 -
 ThirdParty/lcov/example/methods/iterate.c     |    45 -
 ThirdParty/lcov/lcovrc                        |   169 -
 ThirdParty/lcov/man/gendesc.1                 |    78 -
 ThirdParty/lcov/man/genhtml.1                 |   600 -
 ThirdParty/lcov/man/geninfo.1                 |   578 -
 ThirdParty/lcov/man/genpng.1                  |   101 -
 ThirdParty/lcov/man/lcov.1                    |   930 -
 ThirdParty/lcov/man/lcovrc.5                  |   913 -
 ThirdParty/lcov/rpm/lcov.spec                 |    59 -
 ThirdParty/lcov/test/Makefile                 |    27 -
 ThirdParty/lcov/test/bin/common               |   103 -
 ThirdParty/lcov/test/bin/mkinfo               |   952 -
 ThirdParty/lcov/test/bin/norminfo             |   243 -
 ThirdParty/lcov/test/bin/test_run             |    99 -
 ThirdParty/lcov/test/bin/test_skip            |    19 -
 ThirdParty/lcov/test/bin/testsuite_exit       |    71 -
 ThirdParty/lcov/test/bin/testsuite_init       |    28 -
 ThirdParty/lcov/test/common.mak               |    50 -
 ThirdParty/lcov/test/genhtml_output/Makefile  |    31 -
 .../lcov/test/genhtml_output/genhtml_test     |    36 -
 ThirdParty/lcov/test/lcov_add_files/Makefile  |    47 -
 ThirdParty/lcov/test/lcov_add_files/add_test  |    46 -
 ThirdParty/lcov/test/lcov_diff/Makefile       |     9 -
 ThirdParty/lcov/test/lcov_diff/diff_test      |    35 -
 ThirdParty/lcov/test/lcov_diff/new/Makefile   |    17 -
 ThirdParty/lcov/test/lcov_diff/new/prog.c     |    41 -
 ThirdParty/lcov/test/lcov_diff/old/Makefile   |    17 -
 ThirdParty/lcov/test/lcov_diff/old/prog.c     |    22 -
 ThirdParty/lcov/test/lcov_misc/Makefile       |     5 -
 ThirdParty/lcov/test/lcov_summary/Makefile    |    41 -
 .../lcov/test/lcov_summary/check_counts       |    70 -
 ThirdParty/lcov/test/lcovrc                   |     4 -
 ThirdParty/lcov/test/profiles/large           |    51 -
 ThirdParty/lcov/test/profiles/medium          |    51 -
 ThirdParty/lcov/test/profiles/small           |    51 -
 Tools/CMakeLists.txt                          |     6 -
 {CMakeModules => cmake}/CodeCoverage          |     0
 {CMakeModules => cmake}/CodeCoverage.cmake    |     0
 .../CorsikaUtilities.cmake                    |     0
 cmake/FindCORSIKA.cmake                       |     6 +
 cmake/FindCORSIKA8.cmake                      |     9 +
 cmake/FindCatch2.cmake                        |     8 +
 cmake/FindCorsika8.cmake                      |    63 +
 cmake/FindEigen3.cmake                        |   107 +
 cmake/FindPhysUnits.cmake                     |     8 +
 {CMakeModules => cmake}/FindPythia8.cmake     |     0
 corsika/corsika.hpp                           |     0
 corsika/detail/framework/core/Cascade.inl     |   262 +
 .../detail/framework/geometry/BaseVector.inl  |    26 +
 .../framework/geometry/CoordinateSystem.inl   |   152 +
 .../detail/framework/geometry/FourVector.inl  |   189 +
 corsika/detail/framework/geometry/Helix.inl   |    51 +
 corsika/detail/framework/geometry/Line.inl    |    54 +
 corsika/detail/framework/geometry/Plane.inl   |    42 +
 corsika/detail/framework/geometry/Point.inl   |    82 +
 .../framework/geometry/QuantityVector.inl     |   152 +
 corsika/detail/framework/geometry/Sphere.inl  |    36 +
 .../detail/framework/geometry/Trajectory.inl  |    61 +
 corsika/detail/framework/geometry/Vector.inl  |   195 +
 .../detail/framework/random/RNGManager.inl    |    59 +
 .../framework/sequence/ProcessSequence.inl    |   258 +
 .../detail/framework/stack/CombinedStack.inl  |   119 +
 .../detail/framework/stack/SecondaryView.inl  |    80 +
 corsika/detail/framework/utility/COMBoost.inl |   126 +
 .../framework/utility/CorsikaFenvFallback.inl |    20 +
 .../framework/utility/CorsikaFenvOSX.inl      |     2 +-
 corsika/detail/media/BaseExponential.inl      |    63 +
 corsika/detail/media/Environment.inl          |    39 +
 corsika/detail/media/FlatExponential.inl      |    41 +
 .../LayeredSphericalAtmosphereBuilder.inl     |    87 +
 .../media/LinearApproximationIntegrator.inl   |    57 +
 .../detail/media/SlidingPlanarExponential.inl |    38 +
 corsika/detail/media/Universe.inl             |    31 +
 corsika/detail/media/VolumeTreeNode.inl       |    92 +
 corsika/detail/modules/sibyll/Decay.inl       |   163 +
 corsika/detail/modules/sibyll/Interaction.inl |   365 +
 .../modules/sibyll/NuclearInteraction.inl     |   600 +
 .../modules/sibyll/ParticleConversion.inl     |    26 +
 corsika/framework/CMakeLists.txt              |    21 +
 corsika/framework/core/CMakeLists.txt         |    18 +
 corsika/framework/core/Cascade.hpp            |   125 +
 .../framework/core}/NuclearData.xml           |     0
 .../framework/core}/ParticleClassNames.xml    |     0
 corsika/framework/core/ParticleData.xml       |  9721 ++++++++
 .../framework/core/ParticleProperties.hpp     |    65 +-
 .../framework/core/PhysicalConstants.hpp      |     1 +
 .../framework/core/PhysicalUnits.hpp          |     3 +-
 .../core/detail}/ParticleProperties.cc        |     0
 corsika/framework/core/pdxml_reader.py        |   516 +
 corsika/framework/geometry/BaseVector.hpp     |    49 +
 .../framework/geometry/CoordinateSystem.hpp   |    90 +
 corsika/framework/geometry/FourVector.hpp     |   207 +
 corsika/framework/geometry/Helix.hpp          |    66 +
 corsika/framework/geometry/Line.hpp           |    56 +
 .../framework/geometry/Plane.hpp              |    30 +-
 corsika/framework/geometry/Point.hpp          |    66 +
 corsika/framework/geometry/QuantityVector.hpp |   100 +
 .../geometry/RootCoordinateSystem.hpp         |    24 +-
 corsika/framework/geometry/Sphere.hpp         |    36 +
 corsika/framework/geometry/Trajectory.hpp     |   111 +
 corsika/framework/geometry/Vector.hpp         |   117 +
 .../framework/geometry/Volume.hpp             |     7 +-
 .../geometry/detail}/CoordinateSystem.cc      |     0
 corsika/framework/logging/BufferedSink.h      |    80 +
 corsika/framework/logging/Logger.h            |    90 +
 corsika/framework/logging/MessageOff.h        |    30 +
 corsika/framework/logging/MessageOn.h         |    70 +
 corsika/framework/logging/NoSink.h            |    26 +
 corsika/framework/logging/Sink.h              |    47 +
 .../random/ExponentialDistribution.hpp        |    11 +-
 .../framework/random/RNGManager.hpp           |    24 +-
 .../random/UniformRealDistribution.hpp        |    11 +-
 .../framework/sequence/BaseProcess.hpp        |    12 +-
 .../sequence/BoundaryCrossingProcess.hpp      |    18 +-
 .../framework/sequence/ContinuousProcess.hpp  |    14 +-
 .../framework/sequence/DecayProcess.hpp       |    11 +-
 .../framework/sequence/InteractionProcess.hpp |    16 +-
 .../framework/sequence/ProcessReturn.hpp      |    19 +-
 .../framework/sequence/ProcessSequence.hpp    |   175 +
 .../framework/sequence/ProcessSignature.hpp   |     1 +
 .../framework/sequence/SecondariesProcess.hpp |    14 +-
 .../framework/sequence/StackProcess.hpp       |    13 +-
 .../framework/stack/CombinedStack.hpp         |    95 +-
 .../framework/stack/ParticleBase.hpp          |     6 +-
 .../framework/stack/SecondaryView.hpp         |   110 +-
 .../framework/stack/Stack.hpp                 |    51 +-
 .../stack/StackIteratorInterface.hpp          |    34 +-
 .../framework/utility/Bit.hpp                 |     5 +-
 corsika/framework/utility/COMBoost.hpp        |    52 +
 .../framework/utility/CorsikaFenv.hpp         |     0
 .../framework/utility/MetaProgramming.hpp     |    15 +-
 .../framework/utility/Singleton.hpp           |     7 +-
 .../framework/utility/detail}/COMBoost.cc     |     0
 corsika/framework/utility/detail/COMBoost.inl |   125 +
 .../utility/detail}/CorsikaFenvDefault.cc     |     0
 .../utility/detail/CorsikaFenvFallback.inl    |     2 +-
 .../framework/utility/sgn.hpp                 |     5 +-
 .../media/BaseExponential.hpp                 |    78 +-
 .../media/DensityFunction.hpp                 |    21 +-
 corsika/media/Environment.hpp                 |    60 +
 corsika/media/FlatExponential.hpp             |    51 +
 corsika/media/HomogeneousMedium.hpp           |    70 +
 .../media/IMediumModel.hpp                    |    26 +-
 .../media/InhomogeneousMedium.hpp             |    58 +-
 .../LayeredSphericalAtmosphereBuilder.hpp     |   103 +-
 .../media/LinearApproximationIntegrator.hpp   |    38 +
 .../media/NameModel.hpp                       |     2 +-
 corsika/media/NuclearComposition.hpp          |   145 +
 corsika/media/SlidingPlanarExponential.hpp    |    62 +
 corsika/media/Universe.hpp                    |    26 +
 corsika/media/VolumeTreeNode.hpp              |    98 +
 .../modules}/Sibyll/Decay.cc                  |    23 +-
 .../modules}/Sibyll/Interaction.cc            |    28 +-
 .../modules}/Sibyll/NuclearInteraction.cc     |   116 +-
 .../modules}/Sibyll/ParticleConversion.cc     |     4 +-
 .../modules}/Sibyll/code_generator.py         |     4 +-
 .../modules}/Sibyll/sibyll_codes.dat          |     0
 .../modules}/Sibyll/testSibyll.cc             |    85 +-
 corsika/modules/UrQMD/UrQMD.cc                |   385 +
 corsika/modules/UrQMD/UrQMD.h                 |   148 +
 .../modules}/UrQMD/testUrQMD.cc               |   100 +-
 .../modules}/UrQMD/urqmdInterface.F           |     0
 corsika/modules/sibyll/CMakeLists.txt         |    22 +
 corsika/modules/sibyll/Decay.hpp              |    86 +
 corsika/modules/sibyll/Interaction.hpp        |    92 +
 .../modules/sibyll/NuclearInteraction.hpp     |    35 +-
 corsika/modules/sibyll/ParticleConversion.hpp |    70 +
 corsika/modules/sibyll/Random.hpp             |    22 +
 corsika/modules/sibyll/SibStack.hpp           |   147 +
 corsika/modules/sibyll/code_generator.py      |   136 +
 corsika/modules/sibyll/sibyll_codes.dat       |   132 +
 .../process/EnergyLoss.hpp                    |    33 +-
 .../process/HadronicElasticModel.hpp          |    25 +-
 .../process/ObservationPlane.hpp              |    29 +-
 .../process/ParticleCut.hpp                   |    24 +-
 corsika/process/Pythia/Decay.hpp              |    58 +
 .../process/Pythia/Interaction.hpp            |    38 +-
 corsika/process/Pythia/Random.hpp             |    30 +
 corsika/process/QGSJetII/Interaction.hpp      |    63 +
 .../process/QGSJetII/ParticleConversion.hpp   |    88 +
 .../QGSJetII/QGSJetIIFragmentsStack.hpp       |    76 +
 corsika/process/QGSJetII/QGSJetIIStack.hpp    |   129 +
 .../process}/QGSJetII/qgsjet-II-04.h          |     0
 .../process/Sibyll/Decay.hpp                  |    30 +-
 corsika/process/Sibyll/Interaction.hpp        |    93 +
 corsika/process/Sibyll/NuclearInteraction.hpp |    79 +
 .../process}/Sibyll/ParticleConversion.h      |    26 +-
 .../process/Sibyll/SibStack.hpp               |    40 +-
 .../process/StackInspector.hpp                |    15 +-
 .../process/SwitchProcess.hpp                 |    13 +-
 .../process/TrackWriter.hpp                   |    13 +-
 corsika/process/detail/EnergyLoss.cc          |   303 +
 .../process/detail/HadronicElasticModel.cc    |   122 +
 .../process/detail}/ObservationPlane.cc       |    10 +-
 .../process/detail}/ParticleCut.cc            |    68 +-
 .../process/detail}/Pythia/Decay.cc           |    23 +-
 .../process/detail}/Pythia/Interaction.cc     |    36 +-
 .../process/detail}/Pythia/Random.cc          |     4 +-
 .../process/detail}/QGSJetII/Interaction.cc   |    60 +-
 .../detail}/QGSJetII/ParticleConversion.cc    |     4 +-
 .../process/detail}/QGSJetII/qgsjet-II-04.cc  |     6 +-
 .../process/detail}/StackInspector.cc         |    18 +-
 .../process/detail}/TrackWriter.cc            |    19 +-
 corsika/setup/SetupEnvironment.hpp            |    19 +
 .../setup/SetupLogger.hpp                     |    10 +-
 corsika/setup/SetupStack.hpp                  |   204 +
 .../setup/SetupTrajectory.hpp                 |    28 +-
 .../DummyStack => corsika/stack}/DummyStack.h |    11 +-
 .../stack}/NuclearStackExtension.h            |   108 +-
 .../stack}/SuperStupidStack.h                 |   100 +-
 dependencies/CMakeLists.txt                   |    32 +
 .../Pythia/CMakeLists.txt                     |     2 +-
 dependencies/Pythia/Decay.cc                  |   262 +
 {Processes => dependencies}/Pythia/Decay.h    |    39 +-
 dependencies/Pythia/Interaction.cc            |   389 +
 dependencies/Pythia/Interaction.h             |    66 +
 dependencies/Pythia/Random.cc                 |    15 +
 {Processes => dependencies}/Pythia/Random.h   |     2 +-
 dependencies/Pythia/testPythia8.cc            |   185 +
 dependencies/QGSJetII/CMakeLists.txt          |    21 +
 dependencies/QGSJetII/Interaction.cc          |   403 +
 .../QGSJetII/Interaction.h                    |    27 +-
 dependencies/QGSJetII/ParticleConversion.cc   |    12 +
 .../QGSJetII/ParticleConversion.h             |    31 +-
 .../QGSJetII/QGSJetIIFragmentsStack.h         |    10 +-
 .../QGSJetII/QGSJetIIStack.h                  |    20 +-
 dependencies/QGSJetII/code_generator.py       |   203 +
 dependencies/QGSJetII/qgsjet-II-04-codes.dat  |    44 +
 dependencies/QGSJetII/qgsjet-II-04.cc         |    33 +
 .../QGSJetII/qgsjet-II-04.f                   |     0
 dependencies/QGSJetII/qgsjet-II-04.h          |   100 +
 dependencies/QGSJetII/testQGSJetII.cc         |   186 +
 dependencies/UrQMD/CMakeLists.txt             |    51 +
 {Processes => dependencies}/UrQMD/Copyright   |     0
 {Processes => dependencies}/UrQMD/README      |     0
 {Processes => dependencies}/UrQMD/UrQMD.cc    |   128 +-
 {Processes => dependencies}/UrQMD/UrQMD.h     |    31 +-
 {Processes => dependencies}/UrQMD/addpart.f   |     0
 {Processes => dependencies}/UrQMD/angdis.f    |     0
 {Processes => dependencies}/UrQMD/anndec.f    |     0
 {Processes => dependencies}/UrQMD/blockres.f  |     0
 {Processes => dependencies}/UrQMD/boxinc.f    |     0
 {Processes => dependencies}/UrQMD/boxprg.f    |     0
 {Processes => dependencies}/UrQMD/cascinit.f  |     0
 {Processes => dependencies}/UrQMD/colltab.f   |     0
 {Processes => dependencies}/UrQMD/coload.f    |     0
 {Processes => dependencies}/UrQMD/comnorm.f   |     0
 {Processes => dependencies}/UrQMD/comres.f    |     0
 {Processes => dependencies}/UrQMD/coms.f      |     0
 {Processes => dependencies}/UrQMD/comstr.f    |     0
 {Processes => dependencies}/UrQMD/comwid.f    |     0
 {Processes => dependencies}/UrQMD/dectim.f    |     0
 {Processes => dependencies}/UrQMD/delpart.f   |     0
 {Processes => dependencies}/UrQMD/detbal.f    |     0
 {Processes => dependencies}/UrQMD/dwidth.f    |     0
 {Processes => dependencies}/UrQMD/error.f     |     0
 {Processes => dependencies}/UrQMD/freezeout.f |     0
 {Processes => dependencies}/UrQMD/getmass.f   |     0
 {Processes => dependencies}/UrQMD/getspin.f   |     0
 {Processes => dependencies}/UrQMD/init.f      |     0
 {Processes => dependencies}/UrQMD/inputs.f    |     0
 {Processes => dependencies}/UrQMD/iso.f       |     0
 {Processes => dependencies}/UrQMD/ityp2pdg.f  |     0
 {Processes => dependencies}/UrQMD/jdecay2.f   |     0
 {Processes => dependencies}/UrQMD/make22.f    |     0
 {Processes => dependencies}/UrQMD/newpart.f   |     0
 {Processes => dependencies}/UrQMD/numrec.f    |     0
 {Processes => dependencies}/UrQMD/options.f   |     0
 {Processes => dependencies}/UrQMD/outcom.f    |     0
 {Processes => dependencies}/UrQMD/output.f    |     0
 {Processes => dependencies}/UrQMD/paulibl.f   |     0
 {Processes => dependencies}/UrQMD/proppot.f   |     0
 {Processes => dependencies}/UrQMD/saveinfo.f  |     0
 {Processes => dependencies}/UrQMD/scatter.f   |     0
 {Processes => dependencies}/UrQMD/siglookup.f |     0
 {Processes => dependencies}/UrQMD/string.f    |     0
 {Processes => dependencies}/UrQMD/tabinit.f   |     0
 dependencies/UrQMD/testUrQMD.cc               |   222 +
 {Processes => dependencies}/UrQMD/urqmd.f     |     0
 dependencies/UrQMD/urqmdInterface.F           |   447 +
 dependencies/UrQMD/urqmd_xs.cc                |    39 +
 {Processes => dependencies}/UrQMD/whichres.f  |     0
 dependencies/sibyll/CMakeLists.txt            |    47 +
 .../Sibyll => dependencies/sibyll}/gasdev.f   |     0
 .../Sibyll => dependencies/sibyll}/nuclib.f   |     0
 .../sibyll/nuclib.hpp                         |     0
 .../Sibyll => dependencies/sibyll}/rndm_dbl.f |     0
 dependencies/sibyll/sibyll2.3d.cpp            |    19 +
 dependencies/sibyll/sibyll2.3d.f              | 20471 ++++++++++++++++
 dependencies/sibyll/sibyll2.3d.hpp            |   120 +
 .../Sibyll => dependencies/sibyll}/signuc.f   |     0
 do-copyright.py                               |     4 +-
 .../Doxygen => documentation}/Doxyfile.in     |     2 +-
 .../Examples => examples}/CMakeLists.txt      |     0
 .../Examples => examples}/boundary_example.cc |    51 +-
 .../Examples => examples}/cascade_example.cc  |    49 +-
 .../cascade_proton_example.cc                 |    49 +-
 .../geometry_example.cpp                      |    12 +-
 .../helix_example.cpp                         |    12 +-
 examples/stack_example.cpp                    |    55 +
 .../staticsequence_example.cpp                |    10 +-
 .../Examples => examples}/stopping_power.cc   |    23 +-
 .../Examples => examples}/vertical_EAS.cc     |    85 +-
 .../catch2}/catch2/catch.hpp                  |  4739 +++-
 .../catch2/catch2/catch_reporter_automake.hpp |    62 +
 .../catch2/catch_reporter_sonarqube.hpp       |   181 +
 .../catch2/catch2/catch_reporter_tap.hpp      |   254 +
 .../catch2/catch2/catch_reporter_teamcity.hpp |   219 +
 .../phys_units}/phys/units/io.hpp             |     0
 .../phys_units}/phys/units/io_output.hpp      |     0
 .../phys_units}/phys/units/io_output_eng.hpp  |     0
 .../phys_units}/phys/units/io_symbols.hpp     |     0
 .../phys_units}/phys/units/other_units.hpp    |     0
 .../phys/units/physical_constants.hpp         |     0
 .../phys_units}/phys/units/quantity.hpp       |     5 -
 .../phys_units}/phys/units/quantity_io.hpp    |     0
 .../phys/units/quantity_io_ampere.hpp         |     0
 .../phys/units/quantity_io_becquerel.hpp      |     0
 .../phys/units/quantity_io_candela.hpp        |     0
 .../phys/units/quantity_io_celsius.hpp        |     0
 .../phys/units/quantity_io_coulomb.hpp        |     0
 .../phys/units/quantity_io_dimensionless.hpp  |     0
 .../phys/units/quantity_io_engineering.hpp    |     0
 .../phys/units/quantity_io_farad.hpp          |     0
 .../phys/units/quantity_io_gray.hpp           |     0
 .../phys/units/quantity_io_henry.hpp          |     0
 .../phys/units/quantity_io_hertz.hpp          |     0
 .../phys/units/quantity_io_joule.hpp          |     0
 .../phys/units/quantity_io_kelvin.hpp         |     0
 .../phys/units/quantity_io_kilogram.hpp       |     0
 .../phys/units/quantity_io_lumen.hpp          |     0
 .../phys/units/quantity_io_lux.hpp            |     0
 .../phys/units/quantity_io_meter.hpp          |     0
 .../phys/units/quantity_io_mole.hpp           |     0
 .../phys/units/quantity_io_newton.hpp         |     0
 .../phys/units/quantity_io_ohm.hpp            |     0
 .../phys/units/quantity_io_pascal.hpp         |     0
 .../phys/units/quantity_io_radian.hpp         |     0
 .../phys/units/quantity_io_second.hpp         |     0
 .../phys/units/quantity_io_siemens.hpp        |     0
 .../phys/units/quantity_io_sievert.hpp        |     0
 .../phys/units/quantity_io_speed.hpp          |     0
 .../phys/units/quantity_io_steradian.hpp      |     0
 .../phys/units/quantity_io_symbols.hpp        |     0
 .../phys/units/quantity_io_tesla.hpp          |     0
 .../phys/units/quantity_io_volt.hpp           |     0
 .../phys/units/quantity_io_watt.hpp           |     0
 .../phys/units/quantity_io_weber.hpp          |     0
 {Main => src/Main}/CMakeLists.txt             |     0
 Main/shower.cc => src/Main/shower.cpp         |     0
 tests/framework/CMakeLists.txt                |    38 +
 .../framework/TestMain.cpp                    |     0
 .../framework/testCOMBoost.cpp                |    14 +-
 .../framework/testCascade.cpp                 |    69 +-
 tests/framework/testCascade.h                 |    40 +
 .../framework/testCombinedStack.cpp           |    29 +-
 .../framework/testCorsikaFenv.cpp             |    19 +-
 .../framework/testFourVector.cpp              |    15 +-
 .../framework/testGeometry.cpp                |    27 +-
 .../framework/testLogging.cpp                 |     2 +-
 .../framework/testParticles.cpp               |     6 +-
 .../framework/testProcessSequence.cpp         |   122 +-
 .../framework/testRandom.cpp                  |    53 +-
 .../framework/testSecondaryView.cpp           |    13 +-
 .../framework/testStackInterface.cpp          |    12 +-
 .../framework}/testTestStack.h                |    11 +-
 .../framework/testUnits.cpp                   |     2 +-
 tests/media/CMakeLists.txt                    |    26 +
 tests/media/TestMain.cpp                      |    13 +
 .../media/testEnvironment.cpp                 |    52 +-
 tests/modules/CMakeLists.txt                  |    26 +
 tests/modules/TestMain.cpp                    |    13 +
 tests/modules/testSibyll.cpp                  |   191 +
 .../TrackingLine/testTrackingLineStack.h      |    34 +
 .../processes}/testNullModel.cc               |    23 +-
 .../processes}/testObservationPlane.cc        |    40 +-
 .../processes}/testParticleCut.cc             |    68 +-
 .../processes}/testQGSJetII.cc                |    90 +-
 tests/stack/CMakeLists.txt                    |    28 +
 tests/stack/TestMain.cpp                      |    13 +
 tests/stack/testNuclearStackExtension.cpp     |   262 +
 tests/stack/testSuperStupidStack.cpp          |    68 +
 {Tools => tools}/plot_crossings.sh            |     0
 {Tools => tools}/plot_tracks.sh               |     0
 493 files changed, 54183 insertions(+), 38610 deletions(-)
 delete mode 100644 COAST/CMakeLists.txt
 delete mode 100644 COAST/COASTProcess.cc
 delete mode 100644 COAST/COASTProcess.h
 delete mode 100644 COAST/COASTStack.h
 delete mode 100644 COAST/COASTUserLib.cc
 delete mode 100644 COAST/ParticleConversion.cc
 delete mode 100644 COAST/ParticleConversion.h
 delete mode 100644 COAST/README.md
 delete mode 100644 Documentation/CMakeLists.txt
 delete mode 100644 Documentation/Doxygen/CMakeLists.txt
 delete mode 100644 Documentation/Examples/stack_example.cc
 delete mode 100644 Environment/CMakeLists.txt
 delete mode 100644 Environment/Environment.h
 delete mode 100644 Environment/FlatExponential.h
 delete mode 100644 Environment/HomogeneousMedium.h
 delete mode 100644 Environment/LinearApproximationIntegrator.h
 delete mode 100644 Environment/NuclearComposition.h
 delete mode 100644 Environment/SlidingPlanarExponential.h
 delete mode 100644 Environment/VolumeTreeNode.h
 create mode 100644 FIXME.md
 delete mode 100644 Framework/CMakeLists.txt
 delete mode 100644 Framework/Cascade/CMakeLists.txt
 delete mode 100644 Framework/Cascade/Cascade.dox
 delete mode 100644 Framework/Cascade/Cascade.h
 delete mode 100644 Framework/Cascade/testCascade.h
 delete mode 100644 Framework/Geometry/BaseTrajectory.h
 delete mode 100644 Framework/Geometry/BaseVector.h
 delete mode 100644 Framework/Geometry/CMakeLists.txt
 delete mode 100644 Framework/Geometry/CoordinateSystem.h
 delete mode 100644 Framework/Geometry/FourVector.h
 delete mode 100644 Framework/Geometry/Helix.h
 delete mode 100644 Framework/Geometry/Line.h
 delete mode 100644 Framework/Geometry/Point.h
 delete mode 100644 Framework/Geometry/QuantityVector.h
 delete mode 100644 Framework/Geometry/Sphere.h
 delete mode 100644 Framework/Geometry/Trajectory.h
 delete mode 100644 Framework/Geometry/Vector.h
 delete mode 100644 Framework/Logging/CMakeLists.txt
 delete mode 100644 Framework/Particles/CMakeLists.txt
 delete mode 100644 Framework/Particles/particles.dox
 delete mode 100644 Framework/ProcessSequence/CMakeLists.txt
 delete mode 100644 Framework/ProcessSequence/ProcessSequence.h
 delete mode 100644 Framework/Random/CMakeLists.txt
 delete mode 100644 Framework/Random/RNGManager.cc
 delete mode 100644 Framework/StackInterface/CMakeLists.txt
 delete mode 100644 Framework/StackInterface/Stack.dox
 delete mode 100644 Framework/Testing/CMakeLists.txt
 delete mode 100644 Framework/Units/CMakeLists.txt
 delete mode 100644 Framework/Utilities/CMakeLists.txt
 delete mode 100644 Framework/Utilities/COMBoost.h
 delete mode 100644 Processes/CMakeLists.txt
 delete mode 100644 Processes/EnergyLoss/CMakeLists.txt
 delete mode 100644 Processes/EnergyLoss/EnergyLoss.cc
 delete mode 100644 Processes/EnergyLoss/Properties8.dat
 delete mode 100644 Processes/EnergyLoss/ReadData.py
 delete mode 100644 Processes/EnergyLoss/SummaryPropTable.dat
 delete mode 100644 Processes/HadronicElasticModel/CMakeLists.txt
 delete mode 100644 Processes/HadronicElasticModel/HadronicElasticModel.cc
 delete mode 100644 Processes/NullModel/CMakeLists.txt
 delete mode 100644 Processes/ObservationPlane/CMakeLists.txt
 delete mode 100644 Processes/ParticleCut/CMakeLists.txt
 delete mode 100644 Processes/QGSJetII/CMakeLists.txt
 delete mode 100644 Processes/Sibyll/CMakeLists.txt
 delete mode 100644 Processes/Sibyll/Interaction.h
 delete mode 100644 Processes/StackInspector/CMakeLists.txt
 delete mode 100644 Processes/StackInspector/testStackInspector.cc
 delete mode 100644 Processes/SwitchProcess/CMakeLists.txt
 delete mode 100644 Processes/TrackWriter/CMakeLists.txt
 delete mode 100644 Processes/TrackingLine/CMakeLists.txt
 delete mode 100644 Processes/TrackingLine/testTrackingLineStack.h
 delete mode 100644 Processes/UrQMD/CMakeLists.txt
 delete mode 100644 Setup/CMakeLists.txt
 delete mode 100644 Setup/SetupEnvironment.h
 delete mode 100644 Setup/SetupStack.h
 delete mode 100644 Stack/CMakeLists.txt
 delete mode 100644 Stack/DummyStack/CMakeLists.txt
 delete mode 100644 Stack/NuclearStackExtension/CMakeLists.txt
 delete mode 100644 Stack/NuclearStackExtension/testNuclearStackExtension.cc
 delete mode 100644 Stack/SuperStupidStack/CMakeLists.txt
 delete mode 100644 Stack/SuperStupidStack/testSuperStupidStack.cc
 delete mode 100644 ThirdParty/.gitignore
 delete mode 100644 ThirdParty/CMakeLists.txt
 delete mode 100644 ThirdParty/ThirdParty.dox
 delete mode 100644 ThirdParty/eigen-eigen-b3f3d4950030.tar.bz2
 delete mode 100644 ThirdParty/lcov/.version
 delete mode 100644 ThirdParty/lcov/CHANGES
 delete mode 100644 ThirdParty/lcov/CONTRIBUTING
 delete mode 100644 ThirdParty/lcov/COPYING
 delete mode 100644 ThirdParty/lcov/Makefile
 delete mode 100644 ThirdParty/lcov/README
 delete mode 100755 ThirdParty/lcov/bin/copy_dates.sh
 delete mode 100755 ThirdParty/lcov/bin/gendesc
 delete mode 100755 ThirdParty/lcov/bin/genhtml
 delete mode 100755 ThirdParty/lcov/bin/geninfo
 delete mode 100755 ThirdParty/lcov/bin/genpng
 delete mode 100755 ThirdParty/lcov/bin/get_changes.sh
 delete mode 100755 ThirdParty/lcov/bin/get_version.sh
 delete mode 100755 ThirdParty/lcov/bin/install.sh
 delete mode 100755 ThirdParty/lcov/bin/lcov
 delete mode 100755 ThirdParty/lcov/bin/updateversion.pl
 delete mode 100644 ThirdParty/lcov/example/Makefile
 delete mode 100644 ThirdParty/lcov/example/README
 delete mode 100644 ThirdParty/lcov/example/descriptions.txt
 delete mode 100644 ThirdParty/lcov/example/example.c
 delete mode 100644 ThirdParty/lcov/example/gauss.h
 delete mode 100644 ThirdParty/lcov/example/iterate.h
 delete mode 100644 ThirdParty/lcov/example/methods/gauss.c
 delete mode 100644 ThirdParty/lcov/example/methods/iterate.c
 delete mode 100644 ThirdParty/lcov/lcovrc
 delete mode 100644 ThirdParty/lcov/man/gendesc.1
 delete mode 100644 ThirdParty/lcov/man/genhtml.1
 delete mode 100644 ThirdParty/lcov/man/geninfo.1
 delete mode 100644 ThirdParty/lcov/man/genpng.1
 delete mode 100644 ThirdParty/lcov/man/lcov.1
 delete mode 100644 ThirdParty/lcov/man/lcovrc.5
 delete mode 100644 ThirdParty/lcov/rpm/lcov.spec
 delete mode 100644 ThirdParty/lcov/test/Makefile
 delete mode 100644 ThirdParty/lcov/test/bin/common
 delete mode 100755 ThirdParty/lcov/test/bin/mkinfo
 delete mode 100755 ThirdParty/lcov/test/bin/norminfo
 delete mode 100755 ThirdParty/lcov/test/bin/test_run
 delete mode 100755 ThirdParty/lcov/test/bin/test_skip
 delete mode 100755 ThirdParty/lcov/test/bin/testsuite_exit
 delete mode 100755 ThirdParty/lcov/test/bin/testsuite_init
 delete mode 100644 ThirdParty/lcov/test/common.mak
 delete mode 100644 ThirdParty/lcov/test/genhtml_output/Makefile
 delete mode 100755 ThirdParty/lcov/test/genhtml_output/genhtml_test
 delete mode 100644 ThirdParty/lcov/test/lcov_add_files/Makefile
 delete mode 100755 ThirdParty/lcov/test/lcov_add_files/add_test
 delete mode 100644 ThirdParty/lcov/test/lcov_diff/Makefile
 delete mode 100755 ThirdParty/lcov/test/lcov_diff/diff_test
 delete mode 100644 ThirdParty/lcov/test/lcov_diff/new/Makefile
 delete mode 100644 ThirdParty/lcov/test/lcov_diff/new/prog.c
 delete mode 100644 ThirdParty/lcov/test/lcov_diff/old/Makefile
 delete mode 100644 ThirdParty/lcov/test/lcov_diff/old/prog.c
 delete mode 100644 ThirdParty/lcov/test/lcov_misc/Makefile
 delete mode 100644 ThirdParty/lcov/test/lcov_summary/Makefile
 delete mode 100755 ThirdParty/lcov/test/lcov_summary/check_counts
 delete mode 100644 ThirdParty/lcov/test/lcovrc
 delete mode 100644 ThirdParty/lcov/test/profiles/large
 delete mode 100644 ThirdParty/lcov/test/profiles/medium
 delete mode 100644 ThirdParty/lcov/test/profiles/small
 delete mode 100644 Tools/CMakeLists.txt
 rename {CMakeModules => cmake}/CodeCoverage (100%)
 rename {CMakeModules => cmake}/CodeCoverage.cmake (100%)
 rename {CMakeModules => cmake}/CorsikaUtilities.cmake (100%)
 create mode 100644 cmake/FindCORSIKA.cmake
 create mode 100644 cmake/FindCORSIKA8.cmake
 create mode 100644 cmake/FindCatch2.cmake
 create mode 100644 cmake/FindCorsika8.cmake
 create mode 100644 cmake/FindEigen3.cmake
 create mode 100644 cmake/FindPhysUnits.cmake
 rename {CMakeModules => cmake}/FindPythia8.cmake (100%)
 create mode 100644 corsika/corsika.hpp
 create mode 100644 corsika/detail/framework/core/Cascade.inl
 create mode 100644 corsika/detail/framework/geometry/BaseVector.inl
 create mode 100644 corsika/detail/framework/geometry/CoordinateSystem.inl
 create mode 100644 corsika/detail/framework/geometry/FourVector.inl
 create mode 100644 corsika/detail/framework/geometry/Helix.inl
 create mode 100644 corsika/detail/framework/geometry/Line.inl
 create mode 100644 corsika/detail/framework/geometry/Plane.inl
 create mode 100644 corsika/detail/framework/geometry/Point.inl
 create mode 100644 corsika/detail/framework/geometry/QuantityVector.inl
 create mode 100644 corsika/detail/framework/geometry/Sphere.inl
 create mode 100644 corsika/detail/framework/geometry/Trajectory.inl
 create mode 100644 corsika/detail/framework/geometry/Vector.inl
 create mode 100644 corsika/detail/framework/random/RNGManager.inl
 create mode 100644 corsika/detail/framework/sequence/ProcessSequence.inl
 create mode 100644 corsika/detail/framework/stack/CombinedStack.inl
 create mode 100644 corsika/detail/framework/stack/SecondaryView.inl
 create mode 100644 corsika/detail/framework/utility/COMBoost.inl
 create mode 100644 corsika/detail/framework/utility/CorsikaFenvFallback.inl
 rename Framework/Utilities/CorsikaFenvOSX.cc => corsika/detail/framework/utility/CorsikaFenvOSX.inl (96%)
 create mode 100644 corsika/detail/media/BaseExponential.inl
 create mode 100644 corsika/detail/media/Environment.inl
 create mode 100644 corsika/detail/media/FlatExponential.inl
 create mode 100644 corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl
 create mode 100644 corsika/detail/media/LinearApproximationIntegrator.inl
 create mode 100644 corsika/detail/media/SlidingPlanarExponential.inl
 create mode 100644 corsika/detail/media/Universe.inl
 create mode 100644 corsika/detail/media/VolumeTreeNode.inl
 create mode 100644 corsika/detail/modules/sibyll/Decay.inl
 create mode 100644 corsika/detail/modules/sibyll/Interaction.inl
 create mode 100644 corsika/detail/modules/sibyll/NuclearInteraction.inl
 create mode 100644 corsika/detail/modules/sibyll/ParticleConversion.inl
 create mode 100644 corsika/framework/CMakeLists.txt
 create mode 100644 corsika/framework/core/CMakeLists.txt
 create mode 100644 corsika/framework/core/Cascade.hpp
 rename {Framework/Particles => corsika/framework/core}/NuclearData.xml (100%)
 rename {Framework/Particles => corsika/framework/core}/ParticleClassNames.xml (100%)
 create mode 100644 corsika/framework/core/ParticleData.xml
 rename Framework/Particles/ParticleProperties.h => corsika/framework/core/ParticleProperties.hpp (63%)
 rename Framework/Units/PhysicalConstants.h => corsika/framework/core/PhysicalConstants.hpp (99%)
 rename Framework/Units/PhysicalUnits.h => corsika/framework/core/PhysicalUnits.hpp (98%)
 rename {Framework/Particles => corsika/framework/core/detail}/ParticleProperties.cc (100%)
 create mode 100755 corsika/framework/core/pdxml_reader.py
 create mode 100644 corsika/framework/geometry/BaseVector.hpp
 create mode 100644 corsika/framework/geometry/CoordinateSystem.hpp
 create mode 100644 corsika/framework/geometry/FourVector.hpp
 create mode 100644 corsika/framework/geometry/Helix.hpp
 create mode 100644 corsika/framework/geometry/Line.hpp
 rename Framework/Geometry/Plane.h => corsika/framework/geometry/Plane.hpp (55%)
 create mode 100644 corsika/framework/geometry/Point.hpp
 create mode 100644 corsika/framework/geometry/QuantityVector.hpp
 rename Framework/Geometry/RootCoordinateSystem.h => corsika/framework/geometry/RootCoordinateSystem.hpp (50%)
 create mode 100644 corsika/framework/geometry/Sphere.hpp
 create mode 100644 corsika/framework/geometry/Trajectory.hpp
 create mode 100644 corsika/framework/geometry/Vector.hpp
 rename Framework/Geometry/Volume.h => corsika/framework/geometry/Volume.hpp (81%)
 rename {Framework/Geometry => corsika/framework/geometry/detail}/CoordinateSystem.cc (100%)
 create mode 100644 corsika/framework/logging/BufferedSink.h
 create mode 100644 corsika/framework/logging/Logger.h
 create mode 100644 corsika/framework/logging/MessageOff.h
 create mode 100644 corsika/framework/logging/MessageOn.h
 create mode 100644 corsika/framework/logging/NoSink.h
 create mode 100644 corsika/framework/logging/Sink.h
 rename Framework/Random/ExponentialDistribution.h => corsika/framework/random/ExponentialDistribution.hpp (69%)
 rename Framework/Random/RNGManager.h => corsika/framework/random/RNGManager.hpp (76%)
 rename Framework/Random/UniformRealDistribution.h => corsika/framework/random/UniformRealDistribution.hpp (73%)
 rename Framework/ProcessSequence/BaseProcess.h => corsika/framework/sequence/BaseProcess.hpp (78%)
 rename Framework/ProcessSequence/BoundaryCrossingProcess.h => corsika/framework/sequence/BoundaryCrossingProcess.hpp (61%)
 rename Framework/ProcessSequence/ContinuousProcess.h => corsika/framework/sequence/ContinuousProcess.hpp (74%)
 rename Framework/ProcessSequence/DecayProcess.h => corsika/framework/sequence/DecayProcess.hpp (84%)
 rename Framework/ProcessSequence/InteractionProcess.h => corsika/framework/sequence/InteractionProcess.hpp (73%)
 rename Framework/ProcessSequence/ProcessReturn.h => corsika/framework/sequence/ProcessReturn.hpp (69%)
 create mode 100644 corsika/framework/sequence/ProcessSequence.hpp
 rename Framework/ProcessSequence/ProcessSignature.h => corsika/framework/sequence/ProcessSignature.hpp (99%)
 rename Framework/ProcessSequence/SecondariesProcess.h => corsika/framework/sequence/SecondariesProcess.hpp (66%)
 rename Framework/ProcessSequence/StackProcess.h => corsika/framework/sequence/StackProcess.hpp (76%)
 rename Framework/StackInterface/CombinedStack.h => corsika/framework/stack/CombinedStack.hpp (59%)
 rename Framework/StackInterface/ParticleBase.h => corsika/framework/stack/ParticleBase.hpp (98%)
 rename Framework/StackInterface/SecondaryView.h => corsika/framework/stack/SecondaryView.hpp (79%)
 rename Framework/StackInterface/Stack.h => corsika/framework/stack/Stack.hpp (92%)
 rename Framework/StackInterface/StackIteratorInterface.h => corsika/framework/stack/StackIteratorInterface.hpp (92%)
 rename Framework/Utilities/Bit.h => corsika/framework/utility/Bit.hpp (97%)
 create mode 100644 corsika/framework/utility/COMBoost.hpp
 rename Framework/Utilities/CorsikaFenv.h => corsika/framework/utility/CorsikaFenv.hpp (100%)
 rename Framework/Utilities/MetaProgramming.h => corsika/framework/utility/MetaProgramming.hpp (77%)
 rename Framework/Utilities/Singleton.h => corsika/framework/utility/Singleton.hpp (93%)
 rename {Framework/Utilities => corsika/framework/utility/detail}/COMBoost.cc (100%)
 create mode 100644 corsika/framework/utility/detail/COMBoost.inl
 rename {Framework/Utilities => corsika/framework/utility/detail}/CorsikaFenvDefault.cc (100%)
 rename Framework/Utilities/CorsikaFenvFallback.cc => corsika/framework/utility/detail/CorsikaFenvFallback.inl (89%)
 rename Framework/Utilities/sgn.h => corsika/framework/utility/sgn.hpp (88%)
 rename Environment/BaseExponential.h => corsika/media/BaseExponential.hpp (52%)
 rename Environment/DensityFunction.h => corsika/media/DensityFunction.hpp (55%)
 create mode 100644 corsika/media/Environment.hpp
 create mode 100644 corsika/media/FlatExponential.hpp
 create mode 100644 corsika/media/HomogeneousMedium.hpp
 rename Environment/IMediumModel.h => corsika/media/IMediumModel.hpp (58%)
 rename Environment/InhomogeneousMedium.h => corsika/media/InhomogeneousMedium.hpp (50%)
 rename Environment/LayeredSphericalAtmosphereBuilder.h => corsika/media/LayeredSphericalAtmosphereBuilder.hpp (56%)
 create mode 100644 corsika/media/LinearApproximationIntegrator.hpp
 rename Environment/NameModel.h => corsika/media/NameModel.hpp (93%)
 create mode 100644 corsika/media/NuclearComposition.hpp
 create mode 100644 corsika/media/SlidingPlanarExponential.hpp
 create mode 100644 corsika/media/Universe.hpp
 create mode 100644 corsika/media/VolumeTreeNode.hpp
 rename {Processes => corsika/modules}/Sibyll/Decay.cc (92%)
 rename {Processes => corsika/modules}/Sibyll/Interaction.cc (95%)
 rename {Processes => corsika/modules}/Sibyll/NuclearInteraction.cc (86%)
 rename {Processes => corsika/modules}/Sibyll/ParticleConversion.cc (89%)
 rename {Processes => corsika/modules}/Sibyll/code_generator.py (96%)
 rename {Processes => corsika/modules}/Sibyll/sibyll_codes.dat (100%)
 rename {Processes => corsika/modules}/Sibyll/testSibyll.cc (76%)
 create mode 100644 corsika/modules/UrQMD/UrQMD.cc
 create mode 100644 corsika/modules/UrQMD/UrQMD.h
 rename {Processes => corsika/modules}/UrQMD/testUrQMD.cc (62%)
 rename {Processes => corsika/modules}/UrQMD/urqmdInterface.F (100%)
 create mode 100644 corsika/modules/sibyll/CMakeLists.txt
 create mode 100644 corsika/modules/sibyll/Decay.hpp
 create mode 100644 corsika/modules/sibyll/Interaction.hpp
 rename Processes/Sibyll/NuclearInteraction.h => corsika/modules/sibyll/NuclearInteraction.hpp (68%)
 create mode 100644 corsika/modules/sibyll/ParticleConversion.hpp
 create mode 100644 corsika/modules/sibyll/Random.hpp
 create mode 100644 corsika/modules/sibyll/SibStack.hpp
 create mode 100755 corsika/modules/sibyll/code_generator.py
 create mode 100644 corsika/modules/sibyll/sibyll_codes.dat
 rename Processes/EnergyLoss/EnergyLoss.h => corsika/process/EnergyLoss.hpp (73%)
 rename Processes/HadronicElasticModel/HadronicElasticModel.h => corsika/process/HadronicElasticModel.hpp (74%)
 rename Processes/ObservationPlane/ObservationPlane.h => corsika/process/ObservationPlane.hpp (63%)
 rename Processes/ParticleCut/ParticleCut.h => corsika/process/ParticleCut.hpp (82%)
 create mode 100644 corsika/process/Pythia/Decay.hpp
 rename Processes/Pythia/Interaction.h => corsika/process/Pythia/Interaction.hpp (58%)
 create mode 100644 corsika/process/Pythia/Random.hpp
 create mode 100644 corsika/process/QGSJetII/Interaction.hpp
 create mode 100644 corsika/process/QGSJetII/ParticleConversion.hpp
 create mode 100644 corsika/process/QGSJetII/QGSJetIIFragmentsStack.hpp
 create mode 100644 corsika/process/QGSJetII/QGSJetIIStack.hpp
 rename {Processes => corsika/process}/QGSJetII/qgsjet-II-04.h (100%)
 rename Processes/Sibyll/Decay.h => corsika/process/Sibyll/Decay.hpp (76%)
 create mode 100644 corsika/process/Sibyll/Interaction.hpp
 create mode 100644 corsika/process/Sibyll/NuclearInteraction.hpp
 rename {Processes => corsika/process}/Sibyll/ParticleConversion.h (58%)
 rename Processes/Sibyll/SibStack.h => corsika/process/Sibyll/SibStack.hpp (78%)
 rename Processes/StackInspector/StackInspector.h => corsika/process/StackInspector.hpp (75%)
 rename Processes/SwitchProcess/SwitchProcess.h => corsika/process/SwitchProcess.hpp (92%)
 rename Processes/TrackWriter/TrackWriter.h => corsika/process/TrackWriter.hpp (68%)
 create mode 100644 corsika/process/detail/EnergyLoss.cc
 create mode 100644 corsika/process/detail/HadronicElasticModel.cc
 rename {Processes/ObservationPlane => corsika/process/detail}/ObservationPlane.cc (95%)
 rename {Processes/ParticleCut => corsika/process/detail}/ParticleCut.cc (71%)
 rename {Processes => corsika/process/detail}/Pythia/Decay.cc (93%)
 rename {Processes => corsika/process/detail}/Pythia/Interaction.cc (94%)
 rename {Processes => corsika/process/detail}/Pythia/Random.cc (81%)
 rename {Processes => corsika/process/detail}/QGSJetII/Interaction.cc (90%)
 rename {Processes => corsika/process/detail}/QGSJetII/ParticleConversion.cc (76%)
 rename {Processes => corsika/process/detail}/QGSJetII/qgsjet-II-04.cc (83%)
 rename {Processes/StackInspector => corsika/process/detail}/StackInspector.cc (87%)
 rename {Processes/TrackWriter => corsika/process/detail}/TrackWriter.cc (82%)
 create mode 100644 corsika/setup/SetupEnvironment.hpp
 rename Framework/Utilities/try_feenableexcept.cc => corsika/setup/SetupLogger.hpp (74%)
 create mode 100644 corsika/setup/SetupStack.hpp
 rename Setup/SetupTrajectory.h => corsika/setup/SetupTrajectory.hpp (78%)
 rename {Stack/DummyStack => corsika/stack}/DummyStack.h (90%)
 rename {Stack/NuclearStackExtension => corsika/stack}/NuclearStackExtension.h (77%)
 rename {Stack/SuperStupidStack => corsika/stack}/SuperStupidStack.h (64%)
 create mode 100644 dependencies/CMakeLists.txt
 rename {Processes => dependencies}/Pythia/CMakeLists.txt (97%)
 create mode 100644 dependencies/Pythia/Decay.cc
 rename {Processes => dependencies}/Pythia/Decay.h (58%)
 create mode 100644 dependencies/Pythia/Interaction.cc
 create mode 100644 dependencies/Pythia/Interaction.h
 create mode 100644 dependencies/Pythia/Random.cc
 rename {Processes => dependencies}/Pythia/Random.h (92%)
 create mode 100644 dependencies/Pythia/testPythia8.cc
 create mode 100644 dependencies/QGSJetII/CMakeLists.txt
 create mode 100644 dependencies/QGSJetII/Interaction.cc
 rename {Processes => dependencies}/QGSJetII/Interaction.h (61%)
 create mode 100644 dependencies/QGSJetII/ParticleConversion.cc
 rename {Processes => dependencies}/QGSJetII/ParticleConversion.h (67%)
 rename {Processes => dependencies}/QGSJetII/QGSJetIIFragmentsStack.h (90%)
 rename {Processes => dependencies}/QGSJetII/QGSJetIIStack.h (86%)
 create mode 100755 dependencies/QGSJetII/code_generator.py
 create mode 100644 dependencies/QGSJetII/qgsjet-II-04-codes.dat
 create mode 100644 dependencies/QGSJetII/qgsjet-II-04.cc
 rename {Processes => dependencies}/QGSJetII/qgsjet-II-04.f (100%)
 create mode 100644 dependencies/QGSJetII/qgsjet-II-04.h
 create mode 100644 dependencies/QGSJetII/testQGSJetII.cc
 create mode 100644 dependencies/UrQMD/CMakeLists.txt
 rename {Processes => dependencies}/UrQMD/Copyright (100%)
 rename {Processes => dependencies}/UrQMD/README (100%)
 rename {Processes => dependencies}/UrQMD/UrQMD.cc (78%)
 rename {Processes => dependencies}/UrQMD/UrQMD.h (83%)
 rename {Processes => dependencies}/UrQMD/addpart.f (100%)
 rename {Processes => dependencies}/UrQMD/angdis.f (100%)
 rename {Processes => dependencies}/UrQMD/anndec.f (100%)
 rename {Processes => dependencies}/UrQMD/blockres.f (100%)
 rename {Processes => dependencies}/UrQMD/boxinc.f (100%)
 rename {Processes => dependencies}/UrQMD/boxprg.f (100%)
 rename {Processes => dependencies}/UrQMD/cascinit.f (100%)
 rename {Processes => dependencies}/UrQMD/colltab.f (100%)
 rename {Processes => dependencies}/UrQMD/coload.f (100%)
 rename {Processes => dependencies}/UrQMD/comnorm.f (100%)
 rename {Processes => dependencies}/UrQMD/comres.f (100%)
 rename {Processes => dependencies}/UrQMD/coms.f (100%)
 rename {Processes => dependencies}/UrQMD/comstr.f (100%)
 rename {Processes => dependencies}/UrQMD/comwid.f (100%)
 rename {Processes => dependencies}/UrQMD/dectim.f (100%)
 rename {Processes => dependencies}/UrQMD/delpart.f (100%)
 rename {Processes => dependencies}/UrQMD/detbal.f (100%)
 rename {Processes => dependencies}/UrQMD/dwidth.f (100%)
 rename {Processes => dependencies}/UrQMD/error.f (100%)
 rename {Processes => dependencies}/UrQMD/freezeout.f (100%)
 rename {Processes => dependencies}/UrQMD/getmass.f (100%)
 rename {Processes => dependencies}/UrQMD/getspin.f (100%)
 rename {Processes => dependencies}/UrQMD/init.f (100%)
 rename {Processes => dependencies}/UrQMD/inputs.f (100%)
 rename {Processes => dependencies}/UrQMD/iso.f (100%)
 rename {Processes => dependencies}/UrQMD/ityp2pdg.f (100%)
 rename {Processes => dependencies}/UrQMD/jdecay2.f (100%)
 rename {Processes => dependencies}/UrQMD/make22.f (100%)
 rename {Processes => dependencies}/UrQMD/newpart.f (100%)
 rename {Processes => dependencies}/UrQMD/numrec.f (100%)
 rename {Processes => dependencies}/UrQMD/options.f (100%)
 rename {Processes => dependencies}/UrQMD/outcom.f (100%)
 rename {Processes => dependencies}/UrQMD/output.f (100%)
 rename {Processes => dependencies}/UrQMD/paulibl.f (100%)
 rename {Processes => dependencies}/UrQMD/proppot.f (100%)
 rename {Processes => dependencies}/UrQMD/saveinfo.f (100%)
 rename {Processes => dependencies}/UrQMD/scatter.f (100%)
 rename {Processes => dependencies}/UrQMD/siglookup.f (100%)
 rename {Processes => dependencies}/UrQMD/string.f (100%)
 rename {Processes => dependencies}/UrQMD/tabinit.f (100%)
 create mode 100644 dependencies/UrQMD/testUrQMD.cc
 rename {Processes => dependencies}/UrQMD/urqmd.f (100%)
 create mode 100644 dependencies/UrQMD/urqmdInterface.F
 create mode 100644 dependencies/UrQMD/urqmd_xs.cc
 rename {Processes => dependencies}/UrQMD/whichres.f (100%)
 create mode 100644 dependencies/sibyll/CMakeLists.txt
 rename {Processes/Sibyll => dependencies/sibyll}/gasdev.f (100%)
 rename {Processes/Sibyll => dependencies/sibyll}/nuclib.f (100%)
 rename Processes/Sibyll/nuclib.h => dependencies/sibyll/nuclib.hpp (100%)
 rename {Processes/Sibyll => dependencies/sibyll}/rndm_dbl.f (100%)
 create mode 100644 dependencies/sibyll/sibyll2.3d.cpp
 create mode 100644 dependencies/sibyll/sibyll2.3d.f
 create mode 100644 dependencies/sibyll/sibyll2.3d.hpp
 rename {Processes/Sibyll => dependencies/sibyll}/signuc.f (100%)
 rename {Documentation/Doxygen => documentation}/Doxyfile.in (96%)
 rename {Documentation/Examples => examples}/CMakeLists.txt (100%)
 rename {Documentation/Examples => examples}/boundary_example.cc (81%)
 rename {Documentation/Examples => examples}/cascade_example.cc (82%)
 rename {Documentation/Examples => examples}/cascade_proton_example.cc (80%)
 rename Documentation/Examples/geometry_example.cc => examples/geometry_example.cpp (90%)
 rename Documentation/Examples/helix_example.cc => examples/helix_example.cpp (83%)
 create mode 100644 examples/stack_example.cpp
 rename Documentation/Examples/staticsequence_example.cc => examples/staticsequence_example.cpp (90%)
 rename {Documentation/Examples => examples}/stopping_power.cc (81%)
 rename {Documentation/Examples => examples}/vertical_EAS.cc (81%)
 rename {ThirdParty => externals/catch2}/catch2/catch.hpp (78%)
 create mode 100644 externals/catch2/catch2/catch_reporter_automake.hpp
 create mode 100644 externals/catch2/catch2/catch_reporter_sonarqube.hpp
 create mode 100644 externals/catch2/catch2/catch_reporter_tap.hpp
 create mode 100644 externals/catch2/catch2/catch_reporter_teamcity.hpp
 rename {ThirdParty => externals/phys_units}/phys/units/io.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/io_output.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/io_output_eng.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/io_symbols.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/other_units.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/physical_constants.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity.hpp (99%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_ampere.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_becquerel.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_candela.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_celsius.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_coulomb.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_dimensionless.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_engineering.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_farad.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_gray.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_henry.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_hertz.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_joule.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_kelvin.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_kilogram.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_lumen.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_lux.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_meter.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_mole.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_newton.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_ohm.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_pascal.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_radian.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_second.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_siemens.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_sievert.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_speed.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_steradian.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_symbols.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_tesla.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_volt.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_watt.hpp (100%)
 rename {ThirdParty => externals/phys_units}/phys/units/quantity_io_weber.hpp (100%)
 rename {Main => src/Main}/CMakeLists.txt (100%)
 rename Main/shower.cc => src/Main/shower.cpp (100%)
 create mode 100644 tests/framework/CMakeLists.txt
 rename Framework/Testing/TestMain.cc => tests/framework/TestMain.cpp (100%)
 rename Framework/Utilities/testCOMBoost.cc => tests/framework/testCOMBoost.cpp (96%)
 rename Framework/Cascade/testCascade.cc => tests/framework/testCascade.cpp (68%)
 create mode 100644 tests/framework/testCascade.h
 rename Framework/StackInterface/testCombinedStack.cc => tests/framework/testCombinedStack.cpp (92%)
 rename Framework/Utilities/testCorsikaFenv.cc => tests/framework/testCorsikaFenv.cpp (52%)
 rename Framework/Geometry/testFourVector.cc => tests/framework/testFourVector.cpp (93%)
 rename Framework/Geometry/testGeometry.cc => tests/framework/testGeometry.cpp (93%)
 rename Framework/Logging/testLogging.cc => tests/framework/testLogging.cpp (98%)
 rename Framework/Particles/testParticles.cc => tests/framework/testParticles.cpp (97%)
 rename Framework/ProcessSequence/testProcessSequence.cc => tests/framework/testProcessSequence.cpp (72%)
 rename Framework/Random/testRandom.cc => tests/framework/testRandom.cpp (57%)
 rename Framework/StackInterface/testSecondaryView.cc => tests/framework/testSecondaryView.cpp (95%)
 rename Framework/StackInterface/testStackInterface.cc => tests/framework/testStackInterface.cpp (94%)
 rename {Framework/StackInterface => tests/framework}/testTestStack.h (89%)
 rename Framework/Units/testUnits.cc => tests/framework/testUnits.cpp (98%)
 create mode 100644 tests/media/CMakeLists.txt
 create mode 100644 tests/media/TestMain.cpp
 rename Environment/testEnvironment.cc => tests/media/testEnvironment.cpp (91%)
 create mode 100644 tests/modules/CMakeLists.txt
 create mode 100644 tests/modules/TestMain.cpp
 create mode 100644 tests/modules/testSibyll.cpp
 create mode 100644 tests/processes/TrackingLine/testTrackingLineStack.h
 rename {Processes/NullModel => tests/processes}/testNullModel.cc (64%)
 rename {Processes/ObservationPlane => tests/processes}/testObservationPlane.cc (70%)
 rename {Processes/ParticleCut => tests/processes}/testParticleCut.cc (75%)
 rename {Processes/QGSJetII => tests/processes}/testQGSJetII.cc (63%)
 create mode 100644 tests/stack/CMakeLists.txt
 create mode 100644 tests/stack/TestMain.cpp
 create mode 100644 tests/stack/testNuclearStackExtension.cpp
 create mode 100644 tests/stack/testSuperStupidStack.cpp
 rename {Tools => tools}/plot_crossings.sh (100%)
 rename {Tools => tools}/plot_tracks.sh (100%)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e24a55b95..c06fdca0a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,171 +1,146 @@
 cmake_minimum_required (VERSION 3.9)
 # we would need 3.16 to have CMP0097 for external subproject submodule (non) support
 
-# prevent in-source builds and give warning message
-if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") 
-  message (FATAL_ERROR "In-source builds are disabled.
-    Please create a build-dir and use `cmake <source-dir>` inside it.
-    NOTE: cmake will now create CMakeCache.txt and CMakeFiles/*.
-          You must delete them, or cmake will refuse to work.")
-endif ()
-
-project (
-  corsika
-  VERSION 8.0.0
-  DESCRIPTION "CORSIKA C++ project"
-  LANGUAGES CXX
-  )
-
-include (FeatureSummary)
-
-# as long as there still are modules using it:
-enable_language (Fortran)
-
-# TEMPORARY: this should be removed, the sanitizers should be always enabled
-option (WITH_CORSIKA_SANITIZERS_ENABLED "temporary way to globally disable sanitizers until the currently failing tests are fixed" OFF)
-add_feature_info (CORSIKA_SANITIZERS_ENABLED WITH_CORSIKA_SANITIZERS_ENABLED "Switch to run c++ sanitzers on CORSIKA objects and code.")
-
-option (WITH_COAST "Flag to switch on/off COAST (reverse) interface" OFF)
-add_feature_info (COAST WITH_COAST "The COAST interface, so that you can write C8 processes to run inside C7.")
-
-# HISTORY option selection
-option (WITH_HISTORY "Flag to switch on/off HISTORY" ON)
-add_feature_info (HISTORY WITH_HISTORY "The Foo feature provides very cool stuffdddd.")
-
-# check for python
-set (Python_ADDITIONAL_VERSIONS 3)
-find_package (PythonInterp 3 REQUIRED)
-
-# ignore many irrelevant Up-to-date messages during install
-set (CMAKE_INSTALL_MESSAGE LAZY)
-
-# directory for local cmake modules
-set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules)
-include (CorsikaUtilities) # a few cmake function
-
+#+++++++++++++++++++++++++++++
+# project name
+#
+project( CORSIKA8_Modules_Tests_Examples )
+#
+#
+#+++++++++++++++++++++++++++++
+# warn user if system is not UNIX
+#
+if(NOT UNIX)
+  message(FATAL_ERROR "| CORSIKA8 > This is an unsupported system.")
+endif()
+#
+#+++++++++++++++++++++++++++++
+# cmake path dir
+#
+SET(CORSIKA8_CMAKE_DIR "${PROJECT_SOURCE_DIR}/cmake")
+SET(CMAKE_MODULE_PATH  "${CORSIKA8_CMAKE_DIR}" ${CMAKE_MODULE_PATH})
+SET(CMAKE_VERBOSE_MAKEFILE  ON)
+#
+#+++++++++++++++++++++++++++++
+# check if compiler is C++17 compliant
+#
+include(CheckCXXCompilerFlag)
+CHECK_CXX_COMPILER_FLAG("--std=c++17" COMPILER_SUPPORTS_CXX17)
+if(NOT COMPILER_SUPPORTS_CXX17)
+ message(FATAL "| CORSIKA8 > The compiler ${CMAKE_CXX_COMPILER} has no C++17 support. Please use a different C++ compiler.")
+endif()
+
+# set CXX compile flags and options and warning settings
 set (CMAKE_CXX_STANDARD 17)
 set (CMAKE_CXX_EXTENSIONS OFF)
-enable_testing ()
-set (CTEST_OUTPUT_ON_FAILURE 1)
-list (APPEND CMAKE_CTEST_ARGUMENTS "--output-on-failure")
-
-# Set the possible values of build type for cmake-gui and command line check
-set (ALLOWED_BUILD_TYPES Debug Release MinSizeRel RelWithDebInfo Coverage)
-set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${ALLOWED_BUILD_TYPES})
-
-# Set a default build type if none was specified
-# by default: "Debug", if local ".git" directory is found, otherwise "Release"
-set (DEFAULT_BUILD_TYPE "Release")
-if (EXISTS "${CMAKE_SOURCE_DIR}/.git")
-  set (DEFAULT_BUILD_TYPE "Debug")
-endif ()
-
-if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
-  message (STATUS "Setting build type to '${DEFAULT_BUILD_TYPE}' as no other was specified.")
-  set (CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE
-      STRING "Choose the type of build." FORCE)
-else (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
-  # Ignore capitalization when build type is selected manually and check for valid setting
-  string (TOLOWER ${CMAKE_BUILD_TYPE} SELECTED_LOWER)
-  string (TOLOWER "${ALLOWED_BUILD_TYPES}" BUILD_TYPES_LOWER)
-  if (NOT SELECTED_LOWER IN_LIST BUILD_TYPES_LOWER)
-    message (FATAL_ERROR "Unknown build type: ${CMAKE_BUILD_TYPE} [allowed: ${ALLOWED_BUILD_TYPES}]")
-  endif ()
-  message (STATUS "Build type is: ${CMAKE_BUILD_TYPE}")
-endif (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
 
 # enable warnings and disallow non-standard language
 # configure the various build types here, too
 # FYI: optimizer flags: -O2 would not trade speed for size, neither O2/3 use fast-math
-# debug: O0, relwithdebinfo: 02, release: O3, minsizerel: Os (all defaults), coverage -> O0
+# debug: O0, relwithdebinfo: 02, release: O3, minsizerel: Os (all defaults)
 set (CMAKE_CXX_FLAGS "-Wall -pedantic -Wextra -Wno-ignored-qualifiers")
 set (CMAKE_Fortran_FLAGS "-std=legacy -Wfunction-elimination")
 
-# setup coverage build type
-set (CMAKE_CXX_FLAGS_COVERAGE "-g --coverage")
-set (CMAKE_EXE_LINKER_FLAGS_COVERAGE "--coverage")
-set (CMAKE_SHARED_LINKER_FLAGS_COVERAGE "--coverage")
-
 # clang produces a lot of unecessary warnings without this:
 add_compile_options ("$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wno-nonportable-include-path>")
 
-# set a flag to inform code that we are in debug mode
-set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
-
-# COAST - interface, this requires CORSIKA7 to be installed first
-# COAST will allow you to program code in CORSIKA8 and execute it inside CORSIKA7
-if (WITH_COAST)
-  message (STATUS "Compiling CORSIKA8 for the use with COAST/corsika7.")
-  add_compile_options ("-fPIC")
-endif ()
-
-# targets and settings needed to generate coverage reports
-if (CMAKE_BUILD_TYPE STREQUAL Coverage)
-  find_package (Perl REQUIRED)
-
-  # compile coverage under -O2 to remove unused functions
-  #  add_compile_options ("-O2")
-  # compile coverage under -O0 to avoid any optimization, function elimation etc.
-  add_compile_options ("-O0")
-  
-  set (GCOV gcov CACHE STRING "gcov executable" FORCE)
-  set (LCOV_BIN_DIR "${PROJECT_SOURCE_DIR}/ThirdParty/lcov/bin")
-  # collect coverage data
-  add_custom_command (
-    OUTPUT raw-coverage.info
-    COMMAND ${CMAKE_COMMAND} -E echo "Note: you need to run ctest at least once to generate the coverage data"
-    COMMAND ${LCOV_BIN_DIR}/lcov --gcov-tool=${GCOV} --directory . --capture --output-file raw-coverage.info
-    )
-  # remove uninteresting entries
-  add_custom_command (
-    OUTPUT coverage.info
-    COMMAND ${LCOV_BIN_DIR}/lcov -q --remove raw-coverage.info "*/usr/*" --output-file coverage2.info
-    COMMAND ${LCOV_BIN_DIR}/lcov --remove coverage2.info "*/ThirdParty/*" --output-file coverage.info
-    COMMAND ${CMAKE_COMMAND} -E remove coverage2.info
-    DEPENDS raw-coverage.info
-    )
-  # generate html report
-  add_custom_command (
-    OUTPUT coverage-report
-    COMMAND ${LCOV_BIN_DIR}/genhtml --demangle-cpp coverage.info -o coverage-report
-    DEPENDS coverage.info
-    )
-  add_custom_target (coverage DEPENDS coverage-report)
-endif ()
-
-# include this test only if NOT run on gitlab-ci, since there we have a dedicated job for it:
-if (NOT DEFINED ENV{CI})
-  # add call to ./do-copyright.py to run as unit-test-case
-  add_test (NAME copyright_notices COMMAND ./do-copyright.py WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
-endif (NOT DEFINED ENV{CI})
-  
-if (DEFINED ENV{CORSIKA_DATA})
-  message ("Found  corsika-data in $ENV{CORSIKA_DATA}")
-  set (CORSIKA_DATA $ENV{CORSIKA_DATA})
-  add_subdirectory ($ENV{CORSIKA_DATA} corsika_data)
-else ()
-  message ("CORSIKA_DATA not defined: NEED to download AirShowerPhysics/corsika-data via git submodule")
-  message ("cmake will fail if you did not do this already.")
-  set (CORSIKA_DATA ${PROJECT_SOURCE_DIR}/Data)
-  add_subdirectory (Data)
-endif ()
-
-# include potential ThirdParty code provided with CORSIKA
-add_subdirectory (ThirdParty)
-
-# order of subdirectories
-add_subdirectory (Framework)
-add_subdirectory (Environment)
-add_subdirectory (Stack)
-add_subdirectory (Setup)
-add_subdirectory (Processes)
-add_subdirectory (Documentation)
-add_subdirectory (Main)
-add_subdirectory (Tools)
-if (WITH_COAST)
-  add_subdirectory (COAST)
-endif ()
+# ctest config
+enable_testing ()
+set (CTEST_OUTPUT_ON_FAILURE 1)
 
 
+#+++++++++++++++++++++++++++++
+# get CORSIKA8
+#
+find_package(CORSIKA8 REQUIRED)
+include_directories(${CORSIKA8_INCLUDE_DIR})
+# those are needed, since some headers (namely GeneratedParticleProperties.inc) are produced by python script from ParticleData.xml
+add_subdirectory(corsika/framework) 
+add_subdirectory(corsika/modules/sibyll) 
+#
+#+++++++++++++++++++++++++++++
+# get Eigen3 
+#
+find_package( Eigen3 REQUIRED )
+include_directories(${EIGEN3_INCLUDE_DIR})
+
+#+++++++++++++++++++++++++++++
+# get catch2 
+#
+find_package( Catch2 REQUIRED )
+
+#+++++++++++++++++++++++++++++
+# use spdlog
+#
+add_subdirectory(externals/spdlog)
+add_dependencies(CORSIKA8 spdlog::spdlog)
+
+#+++++++++++++++++++++++++++++
+# get phys_units
+#
+find_package( PhysUnits REQUIRED )
+
+#+++++++++++++++++++++++++++++
+# get Pythia
+#
+find_package( Pythia8 REQUIRED )
+if(Pythia_FOUND)
+include_directories(${Pythia_INCLUDE_DIR})
+endif(Pythia_FOUND)
+#
+#+++++++++++++++++++++++++++++
+# get UrQMD
+#
+#find_package( UrQMD REQUIRED )
+if(UrQMD_FOUND)
+include_directories(${UrQMD_INCLUDE_DIR})
+endif(UrQMD_FOUND)
+#
+#+++++++++++++++++++++++++++++
+# get Sybill
+#
+# find_package( Sibyll REQUIRED )
+add_subdirectory (dependencies/sibyll)
+if(Sibyll_FOUND)
+include_directories(${Sibyll_INCLUDE_DIR})
+endif(Sibyll_FOUND)
+#
+#+++++++++++++++++++++++++++++
+# get QGSJETII
+#
+#find_package( QGSJETII REQUIRED )
+if(QGSJETII_FOUND)
+include_directories(${QGSJETII_INCLUDE_DIR})
+endif(QGSJETII_FOUND)
+#
+#
+#+++++++++++++++++++++++++++++
+# =~~~~~~~~~~~~~~~~~~~~~~~~~=
+#  = Add of subdirectories =
+# =~~~~~~~~~~~~~~~~~~~~~~~~~=
+#+++++++++++++++++++++++++++++
+#
+# modules
+# 
+#add_subdirectory (dependencies/Pythia)
+#add_subdirectory (dependencies/Sibyll)
+#add_subdirectory (dependencies/QGSJetII)
+#add_subdirectory (dependencies/UrQMD)
+#
+#+++++++++++++++++++++++++++++++
+# tests
+# 
+add_subdirectory (tests/framework)
+add_subdirectory (tests/media)
+add_subdirectory (tests/stack)
+add_subdirectory (tests/modules)
+#
+#+++++++++++++++++++++++++++++++
+# examples
+# 
+#add_subdirectory (examples)
+#
+#+++++++++++++++++++++++++++++++
+#
 # final summary output
 feature_summary (WHAT ALL)
diff --git a/COAST/CMakeLists.txt b/COAST/CMakeLists.txt
deleted file mode 100644
index dc09ce62d..000000000
--- a/COAST/CMakeLists.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-set (
-  COAST_HEADERS
-  COASTProcess.h
-  COASTStack.h
-  ParticleConversion.h
-  )
-
-set (
-  COAST_SOURCES
-  COASTUserLib.cc
-  COASTProcess.cc
-  ParticleConversion.cc
-  )
-
-set (
-  COAST_NAMESPACE
-  corsika/coast
-  )
-
-add_library (COAST SHARED ${COAST_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (COAST ${COAST_NAMESPACE} ${COAST_HEADERS})
-
-set_target_properties (
-  COAST
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-#  PUBLIC_HEADER "${MODEL_HEADERS}"
-  )
-
-target_link_libraries (
-  COAST
-  PUBLIC
-  CORSIKAgeometry
-  CORSIKAunits
-  CORSIKAparticles
-  CORSIKAgeometry
-  CORSIKAsetup
-  # SuperStupidStack
-  )
-
-target_include_directories (
-  COAST
-  PUBLIC
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-target_include_directories (
-  COAST
-  SYSTEM
-  PUBLIC
-  $ENV{COAST_DIR}/include
-  )
-
-install (
-  TARGETS COAST
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-  PUBLIC_HEADER DESTINATION include/${COAST_NAMESPACE}
-  )
-
-#install (
-#  FILES ${COAST_HEADERS} 
-#  DESTINATION include/${COAST_NAMESPACE}
-#  )
diff --git a/COAST/COASTProcess.cc b/COAST/COASTProcess.cc
deleted file mode 100644
index 827d2f0fa..000000000
--- a/COAST/COASTProcess.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#include <corsika/coast/COASTProcess.h>
-#include <corsika/coast/COASTStack.h>
-
-#include <iostream>
-
-using namespace std;
-
-namespace corsika::coast {
-
-  /**
-     the init function is called during the start of corsika.
-   */
-  void COASTProcess::Init() {
-    cout << "************* Greetings from CORSIKA8 *****************" << endl;
-  }
-
-  /**
-     the docontinous function is called for each tracking step in
-     corsika. Take care: you cannot modify the particle, the track or
-     the stack from here (docontinuous) inside corisika7. In corsika8
-     you will be able to do that.
-   */
-  corsika::process::EProcessReturn COASTProcess::DoContinuous(const Particle& p,
-                                                              const Track& t,
-                                                              const Stack&) {
-    using namespace corsika::units::si;
-    auto const start = t.GetPosition(0).GetCoordinates();
-    auto const delta = t.GetPosition(1).GetCoordinates() - start;
-    auto const name = corsika::particles::GetName(p.GetPID());
-    cout << "CORSIKA8: particle=" << name << ", pos=" << start
-         << " track-l=" << delta.norm() << ", track-t=" << t.GetDuration() << endl;
-    return corsika::process::EProcessReturn::eOk;
-  }
-
-} // namespace corsika::coast
diff --git a/COAST/COASTProcess.h b/COAST/COASTProcess.h
deleted file mode 100644
index 2886d13c4..000000000
--- a/COAST/COASTProcess.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/process/ContinuousProcess.h>
-#include <corsika/setup/SetupTrajectory.h>
-#include <corsika/units/PhysicalUnits.h>
-
-#include <corsika/coast/COASTStack.h>
-
-#include <limits>
-
-typedef corsika::coast::COASTStack Stack;
-typedef corsika::coast::COASTStack::ParticleType Particle;
-typedef corsika::geometry::Trajectory<corsika::geometry::Line> Track;
-
-namespace corsika::coast {
-
-  class COASTProcess : public corsika::process::ContinuousProcess<COASTProcess> {
-
-  public:
-    void Init();
-
-    corsika::process::EProcessReturn DoContinuous(const Particle&, const Track&,
-                                                  const Stack&);
-
-    corsika::units::si::LengthType MaxStepLength(Particle&, Track&) {
-      return corsika::units::si::meter * std::numeric_limits<double>::infinity();
-    }
-
-  private:
-  };
-
-} // namespace corsika::coast
diff --git a/COAST/COASTStack.h b/COAST/COASTStack.h
deleted file mode 100644
index 72e0594a7..000000000
--- a/COAST/COASTStack.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/coast/ParticleConversion.h>
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/stack/ParticleBase.h>
-#include <corsika/stack/Stack.h>
-#include <corsika/units/PhysicalUnits.h>
-
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h> // remove
-#include <corsika/geometry/Vector.h>
-
-#include <crs/CParticle.h>
-#include <crs/CorsikaTypes.h>
-
-#include <algorithm>
-#include <vector>
-
-namespace corsika::coast {
-
-  typedef corsika::geometry::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
-
-  /**
-   * Example of a particle object on the stack.
-   */
-
-  template <typename StackIteratorInterface>
-  class ParticleInterface : public corsika::stack::ParticleBase<StackIteratorInterface> {
-
-    using corsika::stack::ParticleBase<StackIteratorInterface>::GetStackData;
-    using corsika::stack::ParticleBase<StackIteratorInterface>::GetIndex;
-
-  public:
-    corsika::particles::Code GetPID() const { return GetStackData().GetPID(GetIndex()); }
-
-    corsika::units::si::HEPEnergyType GetEnergy() const {
-      return GetStackData().GetEnergy(GetIndex());
-    }
-
-    MomentumVector GetMomentum(const corsika::geometry::CoordinateSystem& cs) const {
-      using namespace corsika::units::si;
-      const HEPEnergyType mass = corsika::particles::GetMass(GetPID());
-      const auto P = sqrt((GetEnergy() - mass) * (GetEnergy() + mass));
-      const auto p = GetStackData().GetDirection(cs);
-      return p * P;
-    }
-
-    corsika::geometry::Point GetPosition(
-        const corsika::geometry::CoordinateSystem& cs) const {
-      return GetStackData().GetPosition(cs, GetIndex());
-    }
-
-    corsika::geometry::Vector<corsika::units::si::speed_d> GetVelocity(
-        const corsika::geometry::CoordinateSystem& cs) const {
-      return GetStackData().GetVelocity(cs, GetIndex());
-    }
-
-    corsika::units::si::TimeType GetTime() const {
-      return GetStackData().GetTime(GetIndex());
-    }
-
-    corsika::geometry::Vector<corsika::units::si::dimensionless_d> GetDirection(
-        const corsika::geometry::CoordinateSystem& cs) const {
-      return GetStackData().GetDirection(cs);
-    }
-
-    corsika::units::si::TimeType GetTimeInterval() const {
-      return GetStackData().GetTimeInterval();
-    }
-  };
-
-  /**
-   *
-   * Memory implementation of the most simple (stupid) particle stack object.
-   */
-
-  class COASTStackImpl {
-
-    const crs::CParticle* fParticle1 = 0;
-    const crs::CParticle* fParticle2 = 0;
-
-  public:
-    COASTStackImpl(const crs::CParticle* v1, const crs::CParticle* v2) {
-      fParticle1 = v1;
-      fParticle2 = v2;
-    }
-
-    void Init() {}
-    void Clear() {}
-
-    // there is one particle only
-    int GetSize() const { return 1; }
-    int GetCapacity() const { return 1; }
-
-    // you cannot modify the particle:
-    // there are no Set... function defined
-
-    // readout particle data, there is just one particle!
-    /*
-      double x;
-      double y;
-      double z;
-      double depth;
-      double time;
-      double energy;
-      double weight;
-      int    particleId;
-      int    hadronicGeneration;
-    */
-    corsika::particles::Code GetPID(const int) const {
-      return ConvertFromCoast(static_cast<CoastCode>(fParticle1->particleId));
-    }
-    corsika::units::si::HEPEnergyType GetEnergy(const int) const {
-      using namespace corsika::units::si;
-      return fParticle1->energy * 1_GeV;
-    }
-    corsika::geometry::Vector<corsika::units::si::dimensionless_d> GetDirection(
-        const corsika::geometry::CoordinateSystem& cs) const {
-      using namespace corsika::units::si;
-      corsika::geometry::Point p1(
-          cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->z * 1_cm});
-      corsika::geometry::Point p2(
-          cs, {fParticle2->x * 1_cm, fParticle2->y * 1_cm, fParticle2->z * 1_cm});
-      const corsika::geometry::Vector D = p2 - p1;
-      const auto magD = D.norm();
-      const corsika::geometry::Vector dir = D / magD;
-      return dir;
-    }
-    corsika::geometry::Vector<corsika::units::si::speed_d> GetVelocity(
-        const corsika::geometry::CoordinateSystem& cs, const int) const {
-      using namespace corsika::units::si;
-      corsika::geometry::Vector<corsika::units::si::dimensionless_d> dir =
-          GetDirection(cs);
-      corsika::geometry::Point p1(
-          cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->z * 1_cm});
-      corsika::geometry::Point p2(
-          cs, {fParticle2->x * 1_cm, fParticle2->y * 1_cm, fParticle2->z * 1_cm});
-      const corsika::geometry::Vector D = p2 - p1;
-      const LengthType magD = D.norm();
-      const TimeType deltaT = GetTimeInterval();
-      return dir * magD / deltaT;
-    }
-    corsika::geometry::Point GetPosition(const corsika::geometry::CoordinateSystem& cs,
-                                         const int) const {
-      using namespace corsika::units::si;
-      return corsika::geometry::Point(
-          cs, {fParticle1->x * 1_cm, fParticle1->y * 1_cm, fParticle1->z * 1_cm});
-    }
-    corsika::units::si::TimeType GetTime(const int) const {
-      using namespace corsika::units::si;
-      return fParticle1->time * 1_s;
-    }
-
-    corsika::units::si::TimeType GetTimeInterval() const {
-      using namespace corsika::units::si;
-      return (fParticle2->time - fParticle1->time) * 1_s;
-    }
-
-    /**
-     *   We do not allow copying!
-     */
-    void Copy(const int, const int) {}
-
-    /**
-     *   We do not allow swapping particles, there is just one...
-     */
-    void Swap(const int, const int) {}
-
-    // size cannot be increased, do nothing
-    void IncrementSize() {}
-
-    // size cannot be decremented, do nothing
-    void DecrementSize() {}
-
-  }; // end class COASTStackImpl
-
-  typedef corsika::stack::Stack<COASTStackImpl, ParticleInterface> COASTStack;
-
-} // namespace corsika::coast
diff --git a/COAST/COASTUserLib.cc b/COAST/COASTUserLib.cc
deleted file mode 100644
index d5b8b0b7c..000000000
--- a/COAST/COASTUserLib.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#include <interface/CorsikaInterface.h>
-
-#include <corsika/coast/COASTProcess.h>
-#include <corsika/coast/COASTStack.h>
-#include <corsika/geometry/CoordinateSystem.h>
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/Trajectory.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/units/PhysicalUnits.h>
-
-#include <crs/CInteraction.h>
-#include <crs/CParticle.h>
-#include <crs/CorsikaTypes.h>
-#include <crs/TSubBlock.h>
-
-#include <iostream>
-#include <sstream>
-
-using namespace std;
-using namespace corsika;
-using namespace corsika::units::si;
-
-corsika::coast::COASTProcess gCorsikaProcess;
-
-/*
-  Data is one CORSIKA data-block constining of 21 SubBlocks.
-  A SubBlock can be:
-  - thinned mode:     39 (Particles) * 8 (ENTRIES) * 4 (BYTES)
-  - not-thinned mode: 39 (Particles) * 7 (ENTRIES) * 4 (BYTES)
-*/
-extern "C" void wrida_([[maybe_unused]] const CREAL* Data) {
-  // crs::CParticleFortranPtr p;
-  // const bool isF = prminfo_(p);
-}
-
-extern "C" void inida_([[maybe_unused]] const char* filename,
-                       [[maybe_unused]] const int& thinning,
-                       [[maybe_unused]] const int& /*curved*/,
-                       [[maybe_unused]] const int& /*slant*/,
-                       [[maybe_unused]] const int& /*stackinput*/,
-                       [[maybe_unused]] const int& /*preshower*/,
-                       [[maybe_unused]] int str_length) {
-  gCorsikaProcess.Init();
-}
-
-extern "C" void cloda_() {
-  // crs::CParticleFortranPtr pptr;
-  // const bool isF = prminfo_(pptr);
-  // gCorsikaProcess.Close();
-}
-
-void interaction_([[maybe_unused]] const crs::CInteraction& interaction) {
-  /*
-    all interactions in the shower are available in this function !
-    the information availabel in the CInteraction class are:
-    double x;
-    double y;
-    double z;
-    double etot;      // lab energy
-    double sigma;     // cross-section of process
-    double kela;      // elasticity
-    int    projId;    // projectile
-    int    targetId;  // target
-    double time;
-  */
-}
-
-extern "C" void track_([[maybe_unused]] const crs::CParticle& pre,
-                       [[maybe_unused]] const crs::CParticle& post) {
-  /*
-    all particles in the shower are available in this function !
-    The pre and post objecte are the two endpoints for one single track
-    in the shower, where the information available in CParticle is:
-    double x;
-    double y;
-    double z;
-    double depth;
-    double time;
-    double energy;
-    double weight;
-    int    particleId;
-    int    hadronicGeneration;
-  */
-  coast::COASTStack stack(&pre, &post);
-  const auto particle = stack.GetNextParticle();
-  const geometry::CoordinateSystem& rootCS =
-      geometry::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
-  geometry::Line const line(particle.GetPosition(rootCS), particle.GetVelocity(rootCS));
-  const TimeType time = particle.GetTimeInterval();
-  const geometry::Trajectory<geometry::Line> track(line, time);
-  gCorsikaProcess.DoContinuous(particle, track, stack);
-}
-
-extern "C" void tabularizedatmosphere_([[maybe_unused]] const int& nPoints,
-                                       [[maybe_unused]] const double* height,
-                                       [[maybe_unused]] const double* refractiveIndex) {
-  // for special use only but should be defined because it is delcared in CORSIKA.F
-}
diff --git a/COAST/ParticleConversion.cc b/COAST/ParticleConversion.cc
deleted file mode 100644
index de8ca909f..000000000
--- a/COAST/ParticleConversion.cc
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#include <corsika/coast/ParticleConversion.h>
-#include <corsika/particles/ParticleProperties.h>
-
-#include <exception>
-#include <iostream>
-#include <sstream>
-
-using namespace std;
-
-namespace corsika::coast {
-
-  /**
-     Convert particle code, and check if it does exists. Throw exeption, if not!
-   */
-
-  corsika::particles::Code ConvertFromCoast(CoastCode pCode) {
-    if (coast2corsika.count(pCode) == 0) {
-      ostringstream err;
-      err << "corsika::coast::ConvertFromCoast CoastCode does not exists="
-          << static_cast<CoastCodeIntType>(pCode) << endl;
-      cout << err.str() << endl;
-      throw std::runtime_error(err.str());
-    }
-    return coast2corsika.find(pCode)->second;
-  }
-
-} // namespace corsika::coast
diff --git a/COAST/ParticleConversion.h b/COAST/ParticleConversion.h
deleted file mode 100644
index 68613783b..000000000
--- a/COAST/ParticleConversion.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/particles/ParticleProperties.h>
-
-#include <map>
-
-namespace corsika::coast {
-
-  /**
-     Here we define the original CORSIKA particle codes, see corsika manual
-   */
-  enum class CoastCode : int16_t {
-    Gamma = 1,
-    Positron = 2,
-    Electron = 3,
-    MuonBar = 5,
-    Muon = 6,
-    Pi0 = 7,
-    PiP = 8,
-    PiM = 9,
-    Klong = 10,
-    KP = 11,
-    KM = 12,
-    Neutron = 13,
-    Proton = 14,
-    ProtonBar = 15,
-    Kshort = 16,
-    Eta = 17,
-    Lambda = 18,
-    SigmaPlus = 19,
-    Sigma0 = 20,
-    SigmaMinus = 21,
-    Xi0 = 22,
-    XiMinus = 23,
-    OmegaMinus = 24,
-    NeutronBar = 25,
-    LambdaBar = 26,
-    SigmaMinusBar = 27,
-    Sigma0Bar = 28,
-    SigmaPlusBar = 29,
-    Xi0Bar = 30,
-    XiPlusBar = 31,
-    OmegaPlusBar = 32,
-
-    EtaPrime = 48,
-    Phi = 49,
-    omega = 50,
-    Rho0 = 51,
-    RhoPlus = 52,
-    RhoMinus = 53,
-    DeltaPlusPlus = 54,
-    DeltaPlus = 55,
-    Delta0 = 56,
-    DeltaMinus = 57,
-    DeltaMinusMinusBar = 58,
-    DeltaMinusBar = 59,
-    Delta0Bar = 60,
-    DeltaPlusBar = 61,
-    KStar0 = 62,
-    KStarPlus = 63,
-    KStarMinus = 64,
-    KStar0Bar = 65,
-
-    NeutrinoE = 66,
-    NeutrinoEBar = 67,
-    NeutrinoMu = 68,
-    NeutrinoMuBar = 69,
-
-    Code71 = 71,
-    Code72 = 72,
-    Code73 = 73,
-    Code74 = 74,
-    Code75 = 75,
-    Code76 = 76,
-
-    Code85 = 85,
-    Code86 = 86,
-
-    Code95 = 95,
-    Code96 = 96,
-
-    ProtonNucleus = 101,
-    Deuterium = 201,
-    Tritium = 301,
-    He3 = 302,
-    Helium = 402,
-    Lithium = 603,
-    Beryllium = 904,
-    Boron = 1005,
-    Carbon = 1206,
-    Carbon13 = 1306,
-    Nitrogen = 1407,
-    Oxygen = 1608,
-    Fluor = 1809,
-    Neon21 = 2110,
-    Neon = 2210,
-    Argon = 1838,
-    Iron = 5628,
-    Xenon = 12854,
-    Radon = 13888,
-  };
-
-  using CoastCodeIntType = std::underlying_type<CoastCode>::type;
-
-  /**
-     Here we convert CORSIKA7 to CORSIKA8 codes
-   */
-
-  const std::map<corsika::coast::CoastCode, corsika::particles::Code> coast2corsika = {
-      {CoastCode::Gamma, corsika::particles::Code::Gamma},
-      {CoastCode::Positron, corsika::particles::Code::Positron},
-      {CoastCode::Electron, corsika::particles::Code::Electron},
-      //{CoastCode::    ,corsika::particles::Code::Unknown}, // 4
-      {CoastCode::MuonBar, corsika::particles::Code::MuPlus},
-      {CoastCode::Muon, corsika::particles::Code::MuMinus},
-      {CoastCode::Pi0, corsika::particles::Code::Pi0},
-      {CoastCode::PiP, corsika::particles::Code::PiPlus},
-      {CoastCode::PiM, corsika::particles::Code::PiMinus},
-      {CoastCode::Klong, corsika::particles::Code::K0Long}, // 10
-      {CoastCode::KP, corsika::particles::Code::KPlus},
-      {CoastCode::KM, corsika::particles::Code::KMinus},
-      {CoastCode::Neutron, corsika::particles::Code::Neutron},
-      {CoastCode::Proton, corsika::particles::Code::Proton}, // 14
-      {CoastCode::ProtonBar, corsika::particles::Code::AntiProton},
-      {CoastCode::Kshort, corsika::particles::Code::K0Short},
-      {CoastCode::Eta, corsika::particles::Code::Eta}, // 17
-      {CoastCode::Lambda, corsika::particles::Code::Lambda0},
-      {CoastCode::SigmaPlus, corsika::particles::Code::SigmaPlus},
-      {CoastCode::Sigma0, corsika::particles::Code::Sigma0}, // 20
-      {CoastCode::SigmaMinus, corsika::particles::Code::SigmaMinus},
-      {CoastCode::Xi0, corsika::particles::Code::Xi0},
-      {CoastCode::XiMinus, corsika::particles::Code::XiMinus},
-      {CoastCode::OmegaMinus, corsika::particles::Code::OmegaMinus},
-      {CoastCode::NeutronBar, corsika::particles::Code::AntiNeutron}, // 25
-      {CoastCode::LambdaBar, corsika::particles::Code::Lambda0Bar},
-      {CoastCode::SigmaMinusBar, corsika::particles::Code::SigmaMinusBar},
-      {CoastCode::Sigma0Bar, corsika::particles::Code::Sigma0Bar},
-      {CoastCode::SigmaPlusBar, corsika::particles::Code::SigmaPlusBar},
-      {CoastCode::Xi0Bar, corsika::particles::Code::Xi0Bar},
-      {CoastCode::XiPlusBar, corsika::particles::Code::XiPlusBar},
-      {CoastCode::OmegaPlusBar, corsika::particles::Code::OmegaPlusBar}, // 32
-      //{CoastCode::    ,corsika::particles::Code::Unknown}, // eta-prime
-      //{CoastCode::    ,corsika::particles::Code::Unknown}, // PHI
-      //{CoastCode::    ,corsika::particles::Code::Unknown}, // omega
-      {CoastCode::Rho0, corsika::particles::Code::Rho0}, // 51
-      {CoastCode::RhoPlus, corsika::particles::Code::RhoPlus},
-      {CoastCode::RhoMinus, corsika::particles::Code::RhoMinus},
-      {CoastCode::DeltaPlusPlus, corsika::particles::Code::DeltaPlusPlus},
-      {CoastCode::DeltaPlus, corsika::particles::Code::DeltaPlus},
-      {CoastCode::Delta0, corsika::particles::Code::Delta0}, // 56
-      //{CoastCode::    ,corsika::particles::Code::Unknown}, // DeltaMinus},
-      {CoastCode::DeltaMinusMinusBar, corsika::particles::Code::DeltaMinusMinusBar},
-      {CoastCode::DeltaMinusBar, corsika::particles::Code::DeltaMinusBar},
-      {CoastCode::Delta0Bar, corsika::particles::Code::Delta0Bar},
-      //{CoastCode::    ,corsika::particles::Code::Unknown}, // DeltaPlusBar
-      {CoastCode::KStar0, corsika::particles::Code::KStar0}, // 62
-      {CoastCode::KStarPlus, corsika::particles::Code::KStarPlus},
-      {CoastCode::KStarMinus, corsika::particles::Code::KStarMinus},
-      {CoastCode::KStar0Bar, corsika::particles::Code::KStar0Bar},
-      {CoastCode::NeutrinoE, corsika::particles::Code::NuE},
-      {CoastCode::NeutrinoEBar, corsika::particles::Code::NuEBar},
-      {CoastCode::NeutrinoMu, corsika::particles::Code::NuMu},
-      {CoastCode::NeutrinoMuBar, corsika::particles::Code::NuMuBar}, // 69
-      {CoastCode::Code71, corsika::particles::Code::Unknown},
-      {CoastCode::Code72, corsika::particles::Code::Unknown},
-      {CoastCode::Code73, corsika::particles::Code::Unknown},
-      {CoastCode::Code74, corsika::particles::Code::Unknown},
-      {CoastCode::Code75, corsika::particles::Code::Unknown},
-      {CoastCode::Code76, corsika::particles::Code::Unknown},
-      {CoastCode::Code85, corsika::particles::Code::Unknown},
-      {CoastCode::Code86, corsika::particles::Code::Unknown},
-      {CoastCode::Code95, corsika::particles::Code::Unknown},
-      {CoastCode::Code96, corsika::particles::Code::Unknown},
-
-      {CoastCode::ProtonNucleus, corsika::particles::Code::Proton}, // 101
-      {CoastCode::Deuterium, corsika::particles::Code::Deuterium},
-      {CoastCode::Tritium, corsika::particles::Code::Tritium},
-      {CoastCode::He3, corsika::particles::Code::Helium3},
-      {CoastCode::Helium, corsika::particles::Code::Helium}, // 402
-      //{CoastCode::Lithium, corsika::particles::Code::Lithium},
-      //{CoastCode::Beryllium, corsika::particles::Code::Beryllium},
-      //{CoastCode::Boron, corsika::particles::Code::Boron},
-      //{CoastCode::Carbon, corsika::particles::Code::Carbon},
-      //{CoastCode::Carbon13, corsika::particles::Code::Carbon13},
-      //{CoastCode::Nitrogen, corsika::particles::Code::Nitrogen},
-      //{CoastCode::Fluor, corsika::particles::Code::Fluor},
-      //{CoastCode::Oxygen, corsika::particles::Code::Oxygen},
-      //{CoastCode::Neon21, corsika::particles::Code::Neon21},
-      //{CoastCode::Neon, corsika::particles::Code::Neon},
-      //{CoastCode::Argon, corsika::particles::Code::Argon},
-      //{CoastCode::Xenon, corsika::particles::Code::Xenon},
-      //{CoastCode::Radon, corsika::particles::Code::Radon},
-      {CoastCode::Iron, corsika::particles::Code::Iron}, // 5628
-
-      //{CoastCode::, corsika::particles::Code::},
-
-  };
-
-  corsika::particles::Code ConvertFromCoast(CoastCode pCode);
-
-} // namespace corsika::coast
diff --git a/COAST/README.md b/COAST/README.md
deleted file mode 100644
index 96e62845b..000000000
--- a/COAST/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# COAST interface {#COAST}
-
-With the COAST interface of CORSIKA 8 you can write a CORSIKA 8
-"process" class and link it to CORSIKA 7. This can be very powerful to
-benchmark new CORSIKA 8 physics code in the context of "old" CORSIKA 7
-simulations. 
-
-This is based on corsika7/trunk/coast/CoastOptions/example with an
-additional interface to CORSIKA 8. See code in namespace corsika::coast for all details.
-
-We provide a step-by-step example for a "COAST user library" using CORSIKA 8
-technology. It explains the steps, how to use the COAST_USER_LIB
-option of CORSIKA together with CORSIKA8/COAST
-
-
-Step 1:
--------
-
-Configure CORSIKA8 with 'cmake -DWITH_COAST=1' and other options you
-prefer. You have to define COAST_DIR environment variable to the
-location of your existing CORSIKA7 installation. Check that 'ls
-$COAST_DIR/include/interface' contains the file
-'CorsikaInterface.h'. If this is not the case, this is not a valid or
-proper installation of CORSIKA. First compile CORSIKA, e.g. with
-ROOTOUT option, or CoReas to get COAST installed!
-
-
-Step 2:
--------
-
-Compile CORSIKA8, edit COAST/COASTProcess.cc to modify/add your
-physics module. 
-
-There should be a libCOAST.so as a result! This is what you need.
-
-
-Step 3:
--------
-
-Create COAST_USER_LIB environment variable to point at your current
-directory, where now the 'libCOAST.so' library is located.
-Add the path in $COAST_USER_LIB to your LD_LIBRARY_PATH environment
-variable.
-
-
-Step 4:
--------
-
-Go back to your CORSIKA directory and re-start 'coconut'. The option
-COAST_USER_LIB will now be visible. Please select it, copile CORSIKA
-and start the executable. In the generated console output you will the
-statements from your COAST library during Init and Close of the
-simulation.  
-Add any kind of code now working on the CParticle or
-CInteraction class to start using the full power of COAST.
-
-Note: the default COASTProcess just prints out tons of ASCII. This is
-not very useful, don't run a full MC with this...
-
-
-Step 5:
--------
-
-enjoy...
-
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 000470412..e2e3262aa 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -81,20 +81,24 @@ While `clang-format` does the structural formatting, we still need to agree on n
     - *Everything* is part of one of those namespaces:
        - ```corsika::framework```, ```corsika::physics```, or ```corsika::process```
     - All classes and objects are encapsulated into suited sub-namespaces,
-      thus ```corsika::framework::geometry```, ```corsika::physics::process```, ```corsika::physics::units```, etc.
+      thus corsika, corsikaes, corsika::units, etc.
     - Namespace names do not use capital letters.  
-  - Every header file is located in the source tree in ```include/corsika/[namespace]```, which also means that in almost all cases each header file
-    can only provide definitions for a _single_ namespace. It is one
-    main purpose of namespaces to structure the location of header
-    files.
-  - Each header file uses an include protection ```#pragma once```
-    immediately below the copyright statement.
-  - Header files should always be included with `<..>`, thus,
-    `#include <corsika/geometry/Point.h>` since the build system
-    will always provide the correct include directives (and files
-    anyway cannot be found in file-system paths, which generally do
-    not follow the namespace naming conventions outlined
-    here).
+    - Every header file is copied during build and install into
+      "include/corsika/[namespace]" which also means, each header file
+      can only provide definitions for a _single_ namespace. It is one
+      main purpose of namespaces to structure the location of header
+      files.
+    - Each header file uses an include protection that includes at
+      least the namespace name, and header file name, thus, `#ifndef
+      __include_geometry_Point_h__` or `#ifndef __geometry_Point_h__`,
+      or similar are acceptable.
+    - Header files should always be included with `<..>`, thus,
+      `#include <corsika/framework/geometry/Point.hpp>` since the build system
+      will always provide the correct include directives (and files
+      anyway cannot be found in file-system paths, which generally do
+      not follow the namespace naming conventions outlined
+      here).
+
   - Header files are named after the main class (or object) they
     define. This also means each header file name starts with a
     capital letter.
diff --git a/Documentation/CMakeLists.txt b/Documentation/CMakeLists.txt
deleted file mode 100644
index ffab73c84..000000000
--- a/Documentation/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-add_subdirectory (Doxygen)
-add_subdirectory (Examples)
-
diff --git a/Documentation/Doxygen/CMakeLists.txt b/Documentation/Doxygen/CMakeLists.txt
deleted file mode 100644
index b3511f84d..000000000
--- a/Documentation/Doxygen/CMakeLists.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-find_package (Doxygen OPTIONAL_COMPONENTS dot mscgen dia)
-
-if (DOXYGEN_FOUND)
-  if (NOT DOXYGEN_DOT_EXECUTABLE)
-    message (FATAL_ERROR "Found doxygen but not 'dot' command, please install graphviz or set DOXYGEN_DOT_EXECUTABLE")
-  endif()
-
-  set (DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
-  set (DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
-  set (DOXYGEN_GENERATE_HTML YES)
-  set (DOXYGEN_GENERATE_MAN YES)
-  configure_file (${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
-  message ("Start doxygen with \"make doxygen\"")
-  
-  # note the option ALL which allows to build the docs together with the application
-  add_custom_target (doxygen # ALL
-    COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
-    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-    COMMENT "Generating API documentation with Doxygen"
-    VERBATIM)
-
-  add_custom_command(TARGET doxygen POST_BUILD
-    COMMAND cd ${CMAKE_CURRENT_BINARY_DIR}/latex; pdflatex refman.tex
-    )
-  
-  install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc OPTIONAL)
-  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/latex/refman.pdf DESTINATION share/doc OPTIONAL)
-         
-else (DOXYGEN_FOUND)
-  
-  message ("Doxygen need to be installed to generate the doxygen documentation")
-  
-endif (DOXYGEN_FOUND)
diff --git a/Documentation/Examples/stack_example.cc b/Documentation/Examples/stack_example.cc
deleted file mode 100644
index cc638dbe8..000000000
--- a/Documentation/Examples/stack_example.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/stack/super_stupid/SuperStupidStack.h>
-
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-
-#include <cassert>
-#include <iomanip>
-#include <iostream>
-
-using namespace corsika;
-using namespace corsika::units::si;
-using namespace corsika::stack;
-using namespace corsika::geometry;
-using namespace std;
-
-void fill(corsika::stack::super_stupid::SuperStupidStack& s) {
-  const geometry::CoordinateSystem& rootCS =
-      geometry::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
-  for (int i = 0; i < 11; ++i) {
-    s.AddParticle(
-        std::tuple<particles::Code, units::si::HEPEnergyType,
-                   corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{
-            particles::Code::Electron, 1.5_GeV * i,
-            corsika::stack::MomentumVector(rootCS, {0_GeV, 0_GeV, 1_GeV}),
-            geometry::Point(rootCS, 0_m, 0_m, 0_m), 0_ns});
-  }
-}
-
-void read(corsika::stack::super_stupid::SuperStupidStack& s) {
-  assert(s.getEntries() == 11); // stack has 11 particles
-
-  HEPEnergyType total_energy;
-  int i = 0;
-  for (auto& p : s) {
-    total_energy += p.GetEnergy();
-    // particles are electrons with 1.5 GeV energy times i
-    assert(p.GetPID() == particles::Code::Electron);
-    assert(p.GetEnergy() == 1.5_GeV * (i++));
-  }
-}
-
-int main() {
-
-  std::cout << "stack_example" << std::endl;
-
-  corsika::stack::super_stupid::SuperStupidStack s;
-  fill(s);
-  read(s);
-  return 0;
-}
diff --git a/Environment/CMakeLists.txt b/Environment/CMakeLists.txt
deleted file mode 100644
index 3231ab4a8..000000000
--- a/Environment/CMakeLists.txt
+++ /dev/null
@@ -1,116 +0,0 @@
-add_custom_command (
-  OUTPUT  ${PROJECT_BINARY_DIR}/Environment/GeneratedMediaProperties.inc
-  COMMAND ${PROJECT_SOURCE_DIR}/Environment/readProperties.py 
-          ${PROJECT_SOURCE_DIR}/Environment/properties8.dat
-  DEPENDS readProperties.py
-          properties8.dat
-  WORKING_DIRECTORY
-          ${PROJECT_BINARY_DIR}/Environment
-  COMMENT "Read NIST properties8 data file and produce C++ source code GeneratedMediaProperties.inc"
-  VERBATIM
-  )
-
-
-set (
-  ENVIRONMENT_SOURCES
-  ShowerAxis.cc
-)
-
-set (
-  ENVIRONMENT_HEADERS
-  VolumeTreeNode.h
-  IEmpty.hpp
-  IMediumModel.h
-  NuclearComposition.h
-  HomogeneousMedium.h
-  InhomogeneousMedium.h
-  HomogeneousMedium.h
-  LinearApproximationIntegrator.h
-  DensityFunction.h
-  Environment.h
-  NameModel.h
-  BaseExponential.h
-  FlatExponential.h
-  SlidingPlanarExponential.h
-  LayeredSphericalAtmosphereBuilder.h
-  ShowerAxis.h
-  IMagneticFieldModel.h
-  UniformMagneticField.h
-  NoMagneticField.h
-  IRefractiveIndexModel.h
-  UniformRefractiveIndex.h
-  IMediumPropertyModel.h
-  MediumProperties.h
-  MediumPropertyModel.h
-  ${PROJECT_BINARY_DIR}/Environment/GeneratedMediaProperties.inc # this one is auto-generated
-  )
-
-set (
-  ENVIRONMENT_NAMESPACE
-  corsika/environment
-  )
-
-add_library (CORSIKAenvironment STATIC ${ENVIRONMENT_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAenvironment ${ENVIRONMENT_NAMESPACE} ${ENVIRONMENT_HEADERS})
-
-set_target_properties (
-  CORSIKAenvironment
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-  PUBLIC_HEADER "${ENVIRONMENT_HEADERS}"
-  )
-
-# ....................................................
-# since GeneratedMediaProperties.inc is an automatically produced file in the build directory,
-# create a symbolic link into the source tree, so that it can be found and edited more easily
-# this is not needed for the build to succeed! .......
-add_custom_command (
-  OUTPUT  ${CMAKE_CURRENT_SOURCE_DIR}/GeneratedParticleProperties.inc
-  COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_BINARY_DIR}/include/corsika/environment/GeneratedMediaProperties.inc ${CMAKE_CURRENT_SOURCE_DIR}/GeneratedMediaProperties.inc
-  COMMENT "Generate link in source-dir: ${CMAKE_CURRENT_SOURCE_DIR}/GeneratedMediaProperties.inc"
-  )
-add_custom_target (SourceDirLinkMedia DEPENDS ${PROJECT_BINARY_DIR}/Environment/GeneratedMediaProperties.inc)
-add_dependencies (CORSIKAenvironment SourceDirLinkMedia)
-# .....................................................
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  CORSIKAenvironment
-  CORSIKAgeometry
-  CORSIKAparticles
-  CORSIKAunits
-  CORSIKAlogging
-  )
-
-target_include_directories (
-  CORSIKAenvironment
-  PUBLIC
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include>
-  )
-
-install (
-  TARGETS CORSIKAenvironment
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-  PUBLIC_HEADER DESTINATION include/${ENVIRONMENT_NAMESPACE}
-  )
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST(testEnvironment)
-target_link_libraries (
-  testEnvironment
-  CORSIKAsetup
-  CORSIKAenvironment
-  CORSIKAtesting
-  )
-
-CORSIKA_ADD_TEST(testShowerAxis)
-target_link_libraries (
-  testShowerAxis
-  CORSIKAsetup
-  CORSIKAenvironment
-  CORSIKAtesting
-  )
diff --git a/Environment/Environment.h b/Environment/Environment.h
deleted file mode 100644
index 1f807de45..000000000
--- a/Environment/Environment.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/environment/VolumeTreeNode.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Sphere.h>
-#include <limits>
-
-namespace corsika::environment {
-  struct Universe : public corsika::geometry::Sphere {
-    Universe(corsika::geometry::CoordinateSystem const& pCS)
-        : corsika::geometry::Sphere(
-              corsika::geometry::Point{pCS, 0 * corsika::units::si::meter,
-                                       0 * corsika::units::si::meter,
-                                       0 * corsika::units::si::meter},
-              corsika::units::si::meter * std::numeric_limits<double>::infinity()) {}
-
-    bool Contains(corsika::geometry::Point const&) const override { return true; }
-  };
-
-  template <typename IEnvironmentModel>
-  class Environment {
-  public:
-    using BaseNodeType = VolumeTreeNode<IEnvironmentModel>;
-
-    Environment()
-        : fCoordinateSystem{corsika::geometry::RootCoordinateSystem::GetInstance()
-                                .GetRootCoordinateSystem()}
-        , fUniverse(std::make_unique<BaseNodeType>(
-              std::make_unique<Universe>(fCoordinateSystem))) {}
-
-    auto& GetUniverse() { return fUniverse; }
-    auto const& GetUniverse() const { return fUniverse; }
-
-    auto const& GetCoordinateSystem() const { return fCoordinateSystem; }
-
-    // factory method for creation of VolumeTreeNodes
-    template <class TVolumeType, typename... TVolumeArgs>
-    static auto CreateNode(TVolumeArgs&&... args) {
-      static_assert(std::is_base_of_v<corsika::geometry::Volume, TVolumeType>,
-                    "unusable type provided, needs to be derived from "
-                    "\"corsika::geometry::Volume\"");
-
-      return std::make_unique<BaseNodeType>(
-          std::make_unique<TVolumeType>(std::forward<TVolumeArgs>(args)...));
-    }
-
-  private:
-    corsika::geometry::CoordinateSystem const& fCoordinateSystem;
-    typename BaseNodeType::VTNUPtr fUniverse;
-  };
-
-} // namespace corsika::environment
diff --git a/Environment/FlatExponential.h b/Environment/FlatExponential.h
deleted file mode 100644
index 8aeafbce4..000000000
--- a/Environment/FlatExponential.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/environment/BaseExponential.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/units/PhysicalUnits.h>
-
-#include <corsika/setup/SetupTrajectory.h>
-
-namespace corsika::environment {
-
-  //clang-format off
-  /**
-   * flat exponential density distribution with
-   * \f[
-   *  \varrho(r) = \varrho_0 \exp\left( \frac{1}{\lambda} (r - p) \cdot
-   *    \vec{a} \right).
-   * \f]
-   * \f$ \vec{a} \f$ denotes the axis and should be normalized to avoid degeneracy
-   * with the scale parameter \f$ \lambda \f$.
-   */
-  //clang-format on
-  template <class T>
-  class FlatExponential : public BaseExponential<FlatExponential<T>>, public T {
-    geometry::Vector<units::si::dimensionless_d> const fAxis;
-    NuclearComposition const fNuclComp;
-
-    using Base = BaseExponential<FlatExponential<T>>;
-
-  public:
-    FlatExponential(geometry::Point const& vP0,
-                    geometry::Vector<units::si::dimensionless_d> const& vAxis,
-                    units::si::MassDensityType vRho, units::si::LengthType vLambda,
-                    NuclearComposition vNuclComp)
-        : Base(vP0, vRho, vLambda)
-        , fAxis(vAxis)
-        , fNuclComp(vNuclComp) {}
-
-    units::si::MassDensityType GetMassDensity(geometry::Point const& vP) const override {
-      return Base::fRho0 * exp(Base::fInvLambda * (vP - Base::fP0).dot(fAxis));
-    }
-
-    NuclearComposition const& GetNuclearComposition() const override { return fNuclComp; }
-
-    units::si::GrammageType IntegratedGrammage(setup::Trajectory const& vLine,
-                                               units::si::LengthType vTo) const override {
-      return Base::IntegratedGrammage(vLine, vTo, fAxis);
-    }
-
-    units::si::LengthType ArclengthFromGrammage(
-        setup::Trajectory const& vLine,
-        units::si::GrammageType vGrammage) const override {
-      return Base::ArclengthFromGrammage(vLine, vGrammage, fAxis);
-    }
-  };
-} // namespace corsika::environment
diff --git a/Environment/HomogeneousMedium.h b/Environment/HomogeneousMedium.h
deleted file mode 100644
index f39cc7061..000000000
--- a/Environment/HomogeneousMedium.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/Trajectory.h>
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/random/RNGManager.h>
-#include <corsika/units/PhysicalUnits.h>
-
-#include <corsika/setup/SetupTrajectory.h>
-
-#include <cassert>
-
-/**
- * a homogeneous medium
- */
-
-namespace corsika::environment {
-
-  template <class T>
-  class HomogeneousMedium : public T {
-    corsika::units::si::MassDensityType const fDensity;
-    NuclearComposition const fNuclComp;
-
-  public:
-    HomogeneousMedium(corsika::units::si::MassDensityType pDensity,
-                      NuclearComposition pNuclComp)
-        : fDensity(pDensity)
-        , fNuclComp(pNuclComp) {}
-
-    corsika::units::si::MassDensityType GetMassDensity(
-        corsika::geometry::Point const&) const override {
-      return fDensity;
-    }
-    NuclearComposition const& GetNuclearComposition() const override { return fNuclComp; }
-
-    corsika::units::si::GrammageType IntegratedGrammage(
-        corsika::setup::Trajectory const&,
-        corsika::units::si::LengthType pTo) const override {
-      using namespace corsika::units::si;
-      return pTo * fDensity;
-    }
-
-    corsika::units::si::LengthType ArclengthFromGrammage(
-        corsika::setup::Trajectory const&,
-        corsika::units::si::GrammageType pGrammage) const override {
-      return pGrammage / fDensity;
-    }
-  };
-
-} // namespace corsika::environment
diff --git a/Environment/LinearApproximationIntegrator.h b/Environment/LinearApproximationIntegrator.h
deleted file mode 100644
index 3a6c37ccb..000000000
--- a/Environment/LinearApproximationIntegrator.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <limits>
-
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/setup/SetupTrajectory.h>
-
-namespace corsika::environment {
-  template <class TDerived>
-  class LinearApproximationIntegrator {
-    auto const& GetImplementation() const { return *static_cast<TDerived const*>(this); }
-
-  public:
-    auto IntegrateGrammage(corsika::setup::Trajectory const& line,
-                           corsika::units::si::LengthType length) const {
-      auto const c0 = GetImplementation().EvaluateAt(line.GetPosition(0));
-      auto const c1 = GetImplementation().fRho.FirstDerivative(line.GetPosition(0),
-                                                               line.GetDirection(0));
-      return (c0 + 0.5 * c1 * length) * length;
-    }
-
-    auto ArclengthFromGrammage(corsika::setup::Trajectory const& line,
-                               corsika::units::si::GrammageType grammage) const {
-      auto const c0 = GetImplementation().fRho(line.GetPosition(0));
-      auto const c1 = GetImplementation().fRho.FirstDerivative(line.GetPosition(0),
-                                                               line.GetDirection(0));
-
-      return (1 - 0.5 * grammage * c1 / (c0 * c0)) * grammage / c0;
-    }
-
-    auto MaximumLength(corsika::setup::Trajectory const& line,
-                       [[maybe_unused]] double relError) const {
-      using namespace corsika::units::si;
-      [[maybe_unused]] auto const c1 = GetImplementation().fRho.SecondDerivative(
-          line.GetPosition(0), line.GetDirection(0));
-
-      // todo: provide a real, working implementation
-      return 1_m * std::numeric_limits<double>::infinity();
-    }
-  };
-} // namespace corsika::environment
diff --git a/Environment/NuclearComposition.h b/Environment/NuclearComposition.h
deleted file mode 100644
index 42b1beca0..000000000
--- a/Environment/NuclearComposition.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/units/PhysicalUnits.h>
-
-#include <cassert>
-#include <functional>
-#include <numeric>
-#include <random>
-#include <stdexcept>
-#include <vector>
-
-namespace corsika::environment {
-  class NuclearComposition {
-    std::vector<float> const fNumberFractions; //!< relative fractions of number density
-    std::vector<corsika::particles::Code> const
-        fComponents; //!< particle codes of consitutents
-
-    double const fAvgMassNumber;
-
-    std::size_t hash_;
-
-    template <class AConstIterator, class BConstIterator>
-    class WeightProviderIterator {
-      AConstIterator fAIter;
-      BConstIterator fBIter;
-
-    public:
-      using value_type = double;
-      using iterator_category = std::input_iterator_tag;
-      using pointer = value_type*;
-      using reference = value_type&;
-      using difference_type = ptrdiff_t;
-
-      WeightProviderIterator(AConstIterator a, BConstIterator b)
-          : fAIter(a)
-          , fBIter(b) {}
-
-      value_type operator*() const { return ((*fAIter) * (*fBIter)).magnitude(); }
-
-      WeightProviderIterator& operator++() { // prefix ++
-        ++fAIter;
-        ++fBIter;
-        return *this;
-      }
-
-      auto operator==(WeightProviderIterator other) { return fAIter == other.fAIter; }
-
-      auto operator!=(WeightProviderIterator other) { return !(*this == other); }
-    };
-
-  public:
-    NuclearComposition(std::vector<corsika::particles::Code> pComponents,
-                       std::vector<float> pFractions)
-        : fNumberFractions(pFractions)
-        , fComponents(pComponents)
-        , fAvgMassNumber(std::inner_product(
-              pComponents.cbegin(), pComponents.cend(), pFractions.cbegin(), 0.,
-              std::plus<double>(), [](auto const compID, auto const fraction) -> double {
-                if (particles::IsNucleus(compID)) {
-                  return particles::GetNucleusA(compID) * fraction;
-                } else {
-                  return particles::GetMass(compID) /
-                         units::si::ConvertSIToHEP(units::constants::u) * fraction;
-                }
-              })) {
-      assert(pComponents.size() == pFractions.size());
-      auto const sumFractions =
-          std::accumulate(pFractions.cbegin(), pFractions.cend(), 0.f);
-
-      if (!(0.999f < sumFractions && sumFractions < 1.001f)) {
-        throw std::runtime_error("element fractions do not add up to 1");
-      }
-      updateHash();
-    }
-
-    template <typename TFunction>
-    auto WeightedSum(TFunction func) const {
-      using ResultQuantity = decltype(func(*fComponents.cbegin()));
-
-      auto const prod = [&](auto const compID, auto const fraction) {
-        return func(compID) * fraction;
-      };
-
-      if constexpr (phys::units::is_quantity_v<ResultQuantity>) {
-        return std::inner_product(
-            fComponents.cbegin(), fComponents.cend(), fNumberFractions.cbegin(),
-            ResultQuantity::zero(), // .zero() is defined for quantity types only
-            std::plus<ResultQuantity>(), prod);
-      } else {
-        return std::inner_product(
-            fComponents.cbegin(), fComponents.cend(), fNumberFractions.cbegin(),
-            ResultQuantity(0), // in other cases we have to use a bare 0
-            std::plus<ResultQuantity>(), prod);
-      }
-    }
-
-    auto size() const { return fNumberFractions.size(); }
-
-    auto const& GetFractions() const { return fNumberFractions; }
-    auto const& GetComponents() const { return fComponents; }
-    auto const GetAverageMassNumber() const { return fAvgMassNumber; }
-
-    template <class TRNG>
-    corsika::particles::Code SampleTarget(
-        std::vector<corsika::units::si::CrossSectionType> const& sigma,
-        TRNG& randomStream) const {
-      using namespace corsika::units::si;
-
-      assert(sigma.size() == fNumberFractions.size());
-
-      std::discrete_distribution channelDist(
-          WeightProviderIterator<decltype(fNumberFractions.begin()),
-                                 decltype(sigma.begin())>(fNumberFractions.begin(),
-                                                          sigma.begin()),
-          WeightProviderIterator<decltype(fNumberFractions.begin()),
-                                 decltype(sigma.end())>(fNumberFractions.end(),
-                                                        sigma.end()));
-
-      auto const iChannel = channelDist(randomStream);
-      return fComponents[iChannel];
-    }
-
-    // Note: when this class ever modifies its internal data, the hash
-    // must be updated, too!
-    size_t hash() const { return hash_; }
-
-  private:
-    void updateHash() {
-      std::vector<std::size_t> hashes;
-      for (float ifrac : GetFractions()) hashes.push_back(std::hash<float>{}(ifrac));
-      for (corsika::particles::Code icode : GetComponents())
-        hashes.push_back(std::hash<int>{}(static_cast<int>(icode)));
-      std::size_t h = std::hash<double>{}(GetAverageMassNumber());
-      for (std::size_t ih : hashes) h = h ^ (ih << 1);
-      hash_ = h;
-    }
-  };
-
-} // namespace corsika::environment
diff --git a/Environment/SlidingPlanarExponential.h b/Environment/SlidingPlanarExponential.h
deleted file mode 100644
index aae3ccef1..000000000
--- a/Environment/SlidingPlanarExponential.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/environment/FlatExponential.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/Trajectory.h>
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/random/RNGManager.h>
-#include <corsika/units/PhysicalUnits.h>
-
-namespace corsika::environment {
-
-  // clang-format off
-  /**
-   * The SlidingPlanarExponential models mass density as
-   * \f[
-   *   \varrho(r) = \varrho_0 \exp\left( \frac{|p_0 - r|}{\lambda} \right).
-   * \f]
-   * For grammage/length conversion, the density distribution is approximated as
-   * locally flat at the starting point \f$ r_0 \f$ of the trajectory with the axis pointing
-   * from \f$ p_0 \f$ to \f$ r_0 \f$.
-   */
-   //clang-format on
-   
-  template <class T>
-  class SlidingPlanarExponential : public BaseExponential<SlidingPlanarExponential<T>>,
-                                   public T {
-    NuclearComposition const nuclComp_;
-    units::si::LengthType const referenceHeight_;
-
-    using Base = BaseExponential<SlidingPlanarExponential<T>>;
-
-  public:
-    SlidingPlanarExponential(geometry::Point const& p0, units::si::MassDensityType rho0,
-                             units::si::LengthType lambda, NuclearComposition nuclComp, units::si::LengthType referenceHeight = units::si::LengthType::zero())
-        : Base(p0, rho0, lambda)
-        , nuclComp_(nuclComp),
-        referenceHeight_(referenceHeight) {}
-
-    units::si::MassDensityType GetMassDensity(
-        geometry::Point const& p) const override {
-      auto const height = (p - Base::fP0).norm() - referenceHeight_;
-      return Base::fRho0 * exp(Base::fInvLambda * height);
-    }
-
-    NuclearComposition const& GetNuclearComposition() const override { return nuclComp_; }
-
-    units::si::GrammageType IntegratedGrammage(
-        setup::Trajectory const& line,
-        units::si::LengthType l) const override {
-      auto const axis = (line.GetLine().GetR0() - Base::fP0).normalized();
-      return Base::IntegratedGrammage(line, l, axis);
-    }
-
-    units::si::LengthType ArclengthFromGrammage(
-        setup::Trajectory const& line,
-        units::si::GrammageType grammage) const override {
-      auto const axis = (line.GetLine().GetR0() - Base::fP0).normalized();
-      return Base::ArclengthFromGrammage(line, grammage, axis);
-    }
-  };
-
-} // namespace corsika::environment
diff --git a/Environment/VolumeTreeNode.h b/Environment/VolumeTreeNode.h
deleted file mode 100644
index ad3306810..000000000
--- a/Environment/VolumeTreeNode.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/environment/IEmpty.hpp>
-#include <corsika/geometry/Volume.h>
-#include <memory>
-#include <vector>
-
-namespace corsika::environment {
-
-  template <typename TModelProperties = IEmpty>
-  class VolumeTreeNode {
-  public:
-    using IModelProperties = TModelProperties;
-    using VTN_type = VolumeTreeNode<IModelProperties>;
-    using VTNUPtr = std::unique_ptr<VolumeTreeNode<IModelProperties>>;
-    using IMPSharedPtr = std::shared_ptr<IModelProperties>;
-    using VolUPtr = std::unique_ptr<corsika::geometry::Volume>;
-
-    VolumeTreeNode(VolUPtr pVolume = nullptr)
-        : fGeoVolume(std::move(pVolume)) {}
-
-    //! convenience function equivalent to Volume::Contains
-    bool Contains(corsika::geometry::Point const& p) const {
-      return fGeoVolume->Contains(p);
-    }
-
-    VolumeTreeNode<IModelProperties> const* Excludes(
-        corsika::geometry::Point const& p) const {
-      auto exclContainsIter =
-          std::find_if(fExcludedNodes.cbegin(), fExcludedNodes.cend(),
-                       [&](auto const& s) { return bool(s->Contains(p)); });
-
-      return exclContainsIter != fExcludedNodes.cend() ? *exclContainsIter : nullptr;
-    }
-
-    /** returns a pointer to the sub-VolumeTreeNode which is "responsible" for the given
-     * \class Point \p p, or nullptr iff \p p is not contained in this volume.
-     */
-    VolumeTreeNode<IModelProperties> const* GetContainingNode(
-        corsika::geometry::Point const& p) const {
-      if (!Contains(p)) { return nullptr; }
-
-      if (auto const childContainsIter =
-              std::find_if(fChildNodes.cbegin(), fChildNodes.cend(),
-                           [&](auto const& s) { return bool(s->Contains(p)); });
-          childContainsIter == fChildNodes.cend()) // not contained in any of the children
-      {
-        if (auto const exclContainsIter = Excludes(p)) // contained in any excluded nodes
-        {
-          return exclContainsIter->GetContainingNode(p);
-        } else {
-          return this;
-        }
-      } else {
-        return (*childContainsIter)->GetContainingNode(p);
-      }
-    }
-
-    /**
-     * Traverses the VolumeTree pre- or post-order and calls the functor  \p func for each
-     * node. \p func takes a reference to VolumeTreeNode as argument. The return value \p
-     * func is ignored.
-     */
-    template <typename TCallable, bool preorder = true>
-    void walk(TCallable func) {
-      if constexpr (preorder) { func(*this); }
-
-      std::for_each(fChildNodes.begin(), fChildNodes.end(),
-                    [&](auto& v) { v->walk(func); });
-
-      if constexpr (!preorder) { func(*this); };
-    }
-
-    void AddChild(VTNUPtr pChild) {
-      pChild->fParentNode = this;
-      fChildNodes.push_back(std::move(pChild));
-      // It is a bad idea to return an iterator to the inserted element
-      // because it might get invalidated when the vector needs to grow
-      // later and the caller won't notice.
-    }
-
-    void ExcludeOverlapWith(VTNUPtr const& pNode) {
-      fExcludedNodes.push_back(pNode.get());
-    }
-
-    const VTN_type* GetParent() const { return fParentNode; };
-
-    auto const& GetChildNodes() const { return fChildNodes; }
-
-    auto const& GetExcludedNodes() const { return fExcludedNodes; }
-
-    auto const& GetVolume() const { return *fGeoVolume; }
-
-    auto const& GetModelProperties() const { return *fModelProperties; }
-
-    bool HasModelProperties() const { return fModelProperties.get() != nullptr; }
-
-    template <typename ModelProperties, typename... Args>
-    auto SetModelProperties(Args&&... args) {
-      static_assert(std::is_base_of_v<IModelProperties, ModelProperties>,
-                    "unusable model properties type provided");
-
-      fModelProperties = std::make_shared<ModelProperties>(std::forward<Args>(args)...);
-      return fModelProperties;
-    }
-
-    void SetModelProperties(IMPSharedPtr ptr) { fModelProperties = ptr; }
-
-    /*
-    template <class MediumType, typename... Args>
-    static auto CreateMedium(Args&&... args) {
-      static_assert(std::is_base_of_v<, MediumType>,
-                    "unusable type provided, needs to be derived from \"IMediumModel\"");
-
-      return std::make_shared<MediumType>(std::forward<Args>(args)...);
-    }
-    */
-  private:
-    std::vector<VTNUPtr> fChildNodes;
-    std::vector<VolumeTreeNode<IModelProperties> const*> fExcludedNodes;
-    VolumeTreeNode<IModelProperties> const* fParentNode = nullptr;
-    VolUPtr fGeoVolume;
-    IMPSharedPtr fModelProperties;
-  };
-
-} // namespace corsika::environment
diff --git a/FIXME.md b/FIXME.md
new file mode 100644
index 000000000..9a5acb220
--- /dev/null
+++ b/FIXME.md
@@ -0,0 +1,5129 @@
+#All files:
+
+1. In all files do `#define guards` -> `#pragma once` to get faster compile times
+2. Redefine the folder structure:
+
+
+```
+#include <corsika/coast/...>
+#include <hydra/...>
+
+corsika
+|-- cmake
+|   |-- CodeCoverage
+|   |-- CodeCoverage.cmake
+|   |-- CorsikaUtilities.cmake
+|   `-- FindPythia8.cmake
+|-- coast
+|   |-- COASTProcess.h
+|   |-- COASTStack.h
+|   `-- ParticleConversion.h
+|-- docs
+|-- |doxygen
+|   `-- Doxyfile.in
+|-- testing  
+| 
+|-- examples
+|   |-- boundary_example.cc
+|   |-- cascade_example.cc
+|   |-- cascade_proton_example.cc
+|   |-- CMakeLists.txt
+|   |-- geometry_example.cc
+|   |-- helix_example.cc
+|   |-- logger_example.cc
+|   |-- stack_example.cc
+|   |-- staticsequence_example.cc
+|   |-- stopping_power.cc
+|   `-- vertical_EAS.cc
+|-- environment
+|   |-- BaseExponential.h
+|   |-- DensityFunction.h
+|   |-- Environment.h
+|   |-- FlatExponential.h
+|   |-- HomogeneousMedium.h
+|   |-- IMediumModel.hpp
+|   |-- InhomogeneousMedium.h
+|   |-- LayeredSphericalAtmosphereBuilder.h
+|   |-- LinearApproximationIntegrator.h
+|   |-- NameModel.h
+|   |-- NuclearComposition.h
+|   |-- SlidingPlanarExponential.h
+|   `-- VolumeTreeNode.hpp
+|-- framework
+|   |-- cascade
+|   |   |-- Cascade.h
+|   |-- geometry
+|   |   |-- BaseTrajectory.h
+|   |   |-- BaseVector.h
+|   |   |-- CMakeLists.txt
+|   |   |-- CoordinateSystem.h
+|   |   |-- FourVector.h
+|   |   |-- Helix.h
+|   |   |-- Line.h
+|   |   |-- Plane.h
+|   |   |-- Point.h
+|   |   |-- QuantityVector.h
+|   |   |-- RootCoordinateSystem.h
+|   |   |-- Sphere.h
+|   |   |-- Trajectory.h
+|   |   |-- Vector.h
+|   |   `-- Volume.h
+|   |-- logging
+|   |   |-- BufferedSink.h
+|   |   |-- Logger.h
+|   |   |-- MessageOff.h
+|   |   |-- MessageOn.h
+|   |   |-- NoSink.h
+|   |   `-- Sink.h
+|   |-- Particles
+|   |   `-- ParticleProperties.h
+|   |-- ProcessSequence
+|   |   |-- BaseProcess.h
+|   |   |-- BoundaryCrossingProcess.h
+|   |   |-- ContinuousProcess.h
+|   |   |-- DecayProcess.h
+|   |   |-- InteractionProcess.h
+|   |   |-- ProcessReturn.h
+|   |   |-- ProcessSequence.h
+|   |   |-- ProcessSignature.h
+|   |   |-- SecondariesProcess.h
+|   |   `-- StackProcess.h
+|   |-- Random
+|   |   |-- CMakeLists.txt
+|   |   |-- ExponentialDistribution.h
+|   |   |-- RNGManager.h
+|   |   `-- UniformRealDistribution.h
+|   |-- StackInterface
+|   |   |-- CMakeLists.txt
+|   |   |-- CombinedStack.h
+|   |   |-- comp
+|   |   |-- ParticleBase.h
+|   |   |-- SecondaryView.h
+|   |   |-- Stack.dox
+|   |   |-- Stack.h
+|   |   `-- StackIteratorInterface.h
+|   |-- Testing
+|   |   |-- test{...}.cc
+|   |-- Units
+|   |   |-- CMakeLists.txt
+|   |   |-- PhysicalConstants.h
+|   |   |-- PhysicalUnits.h
+|   |   `-- testUnits.cc
+|   |-- Utilities
+|   |   |-- Bit.h
+|   |   |-- CMakeLists.txt
+|   |   |-- COMBoost.cc
+|   |   |-- COMBoost.h
+|   |   |-- CorsikaFenvDefault.cc
+|   |   |-- CorsikaFenvFallback.cc
+|   |   |-- CorsikaFenv.h
+|   |   |-- CorsikaFenvOSX.cc
+|   |   |-- MetaProgramming.h
+|   |   |-- sgn.h
+|   |   |-- Singleton.h
+|   |   |-- testCOMBoost.cc
+|   |   |-- testCorsikaFenv.cc
+|   |   `-- try_feenableexcept.cc
+|   `-- CMakeLists.txt
+|-- Main
+|   |-- CMakeLists.txt
+|   `-- shower.cc
+|-- nuc
+|   |-- DataSet04.dat
+|   |-- ExpDatabase_Fortran77_v04.tar.gz
+|   |-- input04.f
+|   |-- main04.f
+|   `-- Makefile_ifc
+|-- Processes
+|   |-- EnergyLoss
+|   |   |-- CMakeLists.txt
+|   |   |-- EnergyLoss.cc
+|   |   |-- EnergyLoss.h
+|   |   |-- Properties8.dat
+|   |   |-- ReadData.py
+|   |   `-- SummaryPropTable.dat
+|   |-- HadronicElasticModel
+|   |   |-- CMakeLists.txt
+|   |   |-- HadronicElasticModel.cc
+|   |   `-- HadronicElasticModel.h
+|   |-- NullModel
+|   |   |-- CMakeLists.txt
+|   |   |-- NullModel.cc
+|   |   |-- NullModel.h
+|   |   `-- testNullModel.cc
+|   |-- ObservationPlane
+|   |   |-- CMakeLists.txt
+|   |   |-- ObservationPlane.cc
+|   |   |-- ObservationPlane.h
+|   |   `-- testObservationPlane.cc
+|   |-- ParticleCut
+|   |   |-- CMakeLists.txt
+|   |   |-- ParticleCut.cc
+|   |   |-- ParticleCut.h
+|   |   `-- testParticleCut.cc
+|   |-- Pythia
+|   |   |-- CMakeLists.txt
+|   |   |-- Decay.cc
+|   |   |-- Decay.h
+|   |   |-- Interaction.cc
+|   |   |-- Interaction.h
+|   |   |-- Random.cc
+|   |   |-- Random.h
+|   |   `-- testPythia.cc
+|   |-- QGSJetII
+|   |   |-- CMakeLists.txt
+|   |   |-- code_generator.py
+|   |   |-- Interaction.cc
+|   |   |-- Interaction.h
+|   |   |-- ParticleConversion.cc
+|   |   |-- ParticleConversion.h
+|   |   |-- qgsjet-II-04.cc
+|   |   |-- qgsjet-II-04-codes.dat
+|   |   |-- qgsjet-II-04.f
+|   |   |-- qgsjet-II-04.h
+|   |   |-- QGSJetIIFragmentsStack.h
+|   |   |-- QGSJetIIStack.h
+|   |   `-- testQGSJetII.cc
+|   |-- Sibyll
+|   |   |-- CMakeLists.txt
+|   |   |-- code_generator.py
+|   |   |-- Decay.cc
+|   |   |-- Decay.h
+|   |   |-- gasdev.f
+|   |   |-- Interaction.cc
+|   |   |-- Interaction.h
+|   |   |-- NuclearInteraction.cc
+|   |   |-- NuclearInteraction.h
+|   |   |-- nuclib.f
+|   |   |-- nuclib.h
+|   |   |-- ParticleConversion.cc
+|   |   |-- ParticleConversion.h
+|   |   |-- rndm_dbl.f
+|   |   |-- SibStack.h
+|   |   |-- sibyll2.3c.cc
+|   |   |-- sibyll2.3c.f
+|   |   |-- sibyll2.3c.h
+|   |   |-- sibyll_codes.dat
+|   |   |-- signuc.f
+|   |   `-- testSibyll.cc
+|   |-- StackInspector
+|   |   |-- CMakeLists.txt
+|   |   |-- StackInspector.cc
+|   |   |-- StackInspector.h
+|   |   `-- testStackInspector.cc
+|   |-- SwitchProcess
+|   |   |-- CMakeLists.txt
+|   |   |-- SwitchProcess.h
+|   |   `-- testSwitchProcess.cc
+|   |-- TrackingLine
+|   |   |-- CMakeLists.txt
+|   |   |-- testTrackingLine.cc
+|   |   |-- testTrackingLineStack.h
+|   |   |-- TrackingLine.cc
+|   |   `-- TrackingLine.h
+|   |-- TrackWriter
+|   |   |-- CMakeLists.txt
+|   |   |-- TrackWriter.cc
+|   |   `-- TrackWriter.h
+|   |-- UrQMD
+|   |   |-- addpart.f
+|   |   |-- angdis.f
+|   |   |-- anndec.f
+|   |   |-- blockres.f
+|   |   |-- boxinc.f
+|   |   |-- boxprg.f
+|   |   |-- cascinit.f
+|   |   |-- CMakeLists.txt
+|   |   |-- colltab.f
+|   |   |-- coload.f
+|   |   |-- comnorm.f
+|   |   |-- comres.f
+|   |   |-- coms.f
+|   |   |-- comstr.f
+|   |   |-- comwid.f
+|   |   |-- Copyright
+|   |   |-- dectim.f
+|   |   |-- delpart.f
+|   |   |-- detbal.f
+|   |   |-- dwidth.f
+|   |   |-- error.f
+|   |   |-- freezeout.f
+|   |   |-- getmass.f
+|   |   |-- getspin.f
+|   |   |-- init.f
+|   |   |-- inputs.f
+|   |   |-- iso.f
+|   |   |-- ityp2pdg.f
+|   |   |-- jdecay2.f
+|   |   |-- make22.f
+|   |   |-- newpart.f
+|   |   |-- numrec.f
+|   |   |-- options.f
+|   |   |-- outcom.f
+|   |   |-- output.f
+|   |   |-- paulibl.f
+|   |   |-- proppot.f
+|   |   |-- README
+|   |   |-- saveinfo.f
+|   |   |-- scatter.f
+|   |   |-- siglookup.f
+|   |   |-- string.f
+|   |   |-- tabinit.f
+|   |   |-- testUrQMD.cc
+|   |   |-- UrQMD.cc
+|   |   |-- urqmd.f
+|   |   |-- UrQMD.h
+|   |   |-- urqmdInterface.F
+|   |   `-- whichres.f
+|   `-- CMakeLists.txt
+|-- Setup
+|   |-- CMakeLists.txt
+|   |-- SetupEnvironment.h
+|   |-- SetupLogger.h
+|   |-- SetupStack.h
+|   `-- SetupTrajectory.h
+|-- Stack
+|   |-- DummyStack
+|   |   |-- CMakeLists.txt
+|   |   `-- DummyStack.h
+|   |-- NuclearStackExtension
+|   |   |-- CMakeLists.txt
+|   |   |-- NuclearStackExtension.h
+|   |   `-- testNuclearStackExtension.cc
+|   |-- SuperStupidStack
+|   |   |-- CMakeLists.txt
+|   |   |-- SuperStupidStack.h
+|   |   `-- testSuperStupidStack.cc
+|   `-- CMakeLists.txt
+|-- ThirdParty
+|   |-- boost
+|   |   |-- algorithm
+|   |   |   |-- cxx11
+|   |   |   |   `-- all_of.hpp
+|   |   |   |-- string
+|   |   |   |   |-- detail
+|   |   |   |   |   |-- case_conv.hpp
+|   |   |   |   |   |-- classification.hpp
+|   |   |   |   |   |-- finder.hpp
+|   |   |   |   |   |-- find_format_all.hpp
+|   |   |   |   |   |-- find_format.hpp
+|   |   |   |   |   |-- find_format_store.hpp
+|   |   |   |   |   |-- find_iterator.hpp
+|   |   |   |   |   |-- formatter.hpp
+|   |   |   |   |   |-- predicate.hpp
+|   |   |   |   |   |-- replace_storage.hpp
+|   |   |   |   |   |-- sequence.hpp
+|   |   |   |   |   |-- trim.hpp
+|   |   |   |   |   `-- util.hpp
+|   |   |   |   |-- std
+|   |   |   |   |   |-- list_traits.hpp
+|   |   |   |   |   |-- slist_traits.hpp
+|   |   |   |   |   `-- string_traits.hpp
+|   |   |   |   |-- case_conv.hpp
+|   |   |   |   |-- classification.hpp
+|   |   |   |   |-- compare.hpp
+|   |   |   |   |-- concept.hpp
+|   |   |   |   |-- config.hpp
+|   |   |   |   |-- constants.hpp
+|   |   |   |   |-- erase.hpp
+|   |   |   |   |-- finder.hpp
+|   |   |   |   |-- find_format.hpp
+|   |   |   |   |-- find.hpp
+|   |   |   |   |-- find_iterator.hpp
+|   |   |   |   |-- formatter.hpp
+|   |   |   |   |-- iter_find.hpp
+|   |   |   |   |-- join.hpp
+|   |   |   |   |-- predicate_facade.hpp
+|   |   |   |   |-- predicate.hpp
+|   |   |   |   |-- replace.hpp
+|   |   |   |   |-- sequence_traits.hpp
+|   |   |   |   |-- split.hpp
+|   |   |   |   |-- std_containers_traits.hpp
+|   |   |   |   |-- trim.hpp
+|   |   |   |   `-- yes_no_type.hpp
+|   |   |   `-- string.hpp
+|   |   |-- assign
+|   |   |   |-- assignment_exception.hpp
+|   |   |   `-- list_of.hpp
+|   |   |-- bind
+|   |   |   |-- apply.hpp
+|   |   |   |-- arg.hpp
+|   |   |   |-- bind_cc.hpp
+|   |   |   |-- bind.hpp
+|   |   |   |-- bind_mf2_cc.hpp
+|   |   |   |-- bind_mf_cc.hpp
+|   |   |   |-- bind_template.hpp
+|   |   |   |-- mem_fn_cc.hpp
+|   |   |   |-- mem_fn.hpp
+|   |   |   |-- mem_fn_template.hpp
+|   |   |   |-- mem_fn_vw.hpp
+|   |   |   |-- placeholders.hpp
+|   |   |   `-- storage.hpp
+|   |   |-- chrono
+|   |   |   |-- detail
+|   |   |   |   |-- inlined
+|   |   |   |   |   |-- mac
+|   |   |   |   |   |   |-- chrono.hpp
+|   |   |   |   |   |   |-- process_cpu_clocks.hpp
+|   |   |   |   |   |   `-- thread_clock.hpp
+|   |   |   |   |   |-- posix
+|   |   |   |   |   |   |-- chrono.hpp
+|   |   |   |   |   |   |-- process_cpu_clocks.hpp
+|   |   |   |   |   |   `-- thread_clock.hpp
+|   |   |   |   |   |-- win
+|   |   |   |   |   |   |-- chrono.hpp
+|   |   |   |   |   |   |-- process_cpu_clocks.hpp
+|   |   |   |   |   |   `-- thread_clock.hpp
+|   |   |   |   |   |-- chrono.hpp
+|   |   |   |   |   |-- process_cpu_clocks.hpp
+|   |   |   |   |   `-- thread_clock.hpp
+|   |   |   |   |-- is_evenly_divisible_by.hpp
+|   |   |   |   |-- static_assert.hpp
+|   |   |   |   `-- system.hpp
+|   |   |   |-- chrono.hpp
+|   |   |   |-- clock_string.hpp
+|   |   |   |-- config.hpp
+|   |   |   |-- duration.hpp
+|   |   |   |-- process_cpu_clocks.hpp
+|   |   |   |-- system_clocks.hpp
+|   |   |   |-- thread_clock.hpp
+|   |   |   `-- time_point.hpp
+|   |   |-- concept
+|   |   |   |-- detail
+|   |   |   |   |-- backward_compatibility.hpp
+|   |   |   |   |-- borland.hpp
+|   |   |   |   |-- concept_def.hpp
+|   |   |   |   |-- concept_undef.hpp
+|   |   |   |   |-- general.hpp
+|   |   |   |   |-- has_constraints.hpp
+|   |   |   |   `-- msvc.hpp
+|   |   |   |-- assert.hpp
+|   |   |   `-- usage.hpp
+|   |   |-- config
+|   |   |   |-- abi
+|   |   |   |   |-- borland_prefix.hpp
+|   |   |   |   |-- borland_suffix.hpp
+|   |   |   |   |-- msvc_prefix.hpp
+|   |   |   |   `-- msvc_suffix.hpp
+|   |   |   |-- compiler
+|   |   |   |   |-- borland.hpp
+|   |   |   |   |-- clang.hpp
+|   |   |   |   |-- codegear.hpp
+|   |   |   |   |-- comeau.hpp
+|   |   |   |   |-- common_edg.hpp
+|   |   |   |   |-- compaq_cxx.hpp
+|   |   |   |   |-- cray.hpp
+|   |   |   |   |-- diab.hpp
+|   |   |   |   |-- digitalmars.hpp
+|   |   |   |   |-- gcc.hpp
+|   |   |   |   |-- gcc_xml.hpp
+|   |   |   |   |-- greenhills.hpp
+|   |   |   |   |-- hp_acc.hpp
+|   |   |   |   |-- intel.hpp
+|   |   |   |   |-- kai.hpp
+|   |   |   |   |-- metrowerks.hpp
+|   |   |   |   |-- mpw.hpp
+|   |   |   |   |-- nvcc.hpp
+|   |   |   |   |-- pathscale.hpp
+|   |   |   |   |-- pgi.hpp
+|   |   |   |   |-- sgi_mipspro.hpp
+|   |   |   |   |-- sunpro_cc.hpp
+|   |   |   |   |-- vacpp.hpp
+|   |   |   |   |-- visualc.hpp
+|   |   |   |   |-- xlcpp.hpp
+|   |   |   |   `-- xlcpp_zos.hpp
+|   |   |   |-- detail
+|   |   |   |   |-- posix_features.hpp
+|   |   |   |   |-- select_compiler_config.hpp
+|   |   |   |   |-- select_platform_config.hpp
+|   |   |   |   |-- select_stdlib_config.hpp
+|   |   |   |   `-- suffix.hpp
+|   |   |   |-- no_tr1
+|   |   |   |   |-- cmath.hpp
+|   |   |   |   |-- complex.hpp
+|   |   |   |   |-- functional.hpp
+|   |   |   |   |-- memory.hpp
+|   |   |   |   `-- utility.hpp
+|   |   |   |-- platform
+|   |   |   |   |-- aix.hpp
+|   |   |   |   |-- amigaos.hpp
+|   |   |   |   |-- beos.hpp
+|   |   |   |   |-- bsd.hpp
+|   |   |   |   |-- cloudabi.hpp
+|   |   |   |   |-- cray.hpp
+|   |   |   |   |-- cygwin.hpp
+|   |   |   |   |-- haiku.hpp
+|   |   |   |   |-- hpux.hpp
+|   |   |   |   |-- irix.hpp
+|   |   |   |   |-- linux.hpp
+|   |   |   |   |-- macos.hpp
+|   |   |   |   |-- qnxnto.hpp
+|   |   |   |   |-- solaris.hpp
+|   |   |   |   |-- symbian.hpp
+|   |   |   |   |-- vms.hpp
+|   |   |   |   |-- vxworks.hpp
+|   |   |   |   |-- win32.hpp
+|   |   |   |   `-- zos.hpp
+|   |   |   |-- stdlib
+|   |   |   |   |-- dinkumware.hpp
+|   |   |   |   |-- libcomo.hpp
+|   |   |   |   |-- libcpp.hpp
+|   |   |   |   |-- libstdcpp3.hpp
+|   |   |   |   |-- modena.hpp
+|   |   |   |   |-- msl.hpp
+|   |   |   |   |-- roguewave.hpp
+|   |   |   |   |-- sgi.hpp
+|   |   |   |   |-- stlport.hpp
+|   |   |   |   |-- vacpp.hpp
+|   |   |   |   `-- xlcpp_zos.hpp
+|   |   |   |-- abi_prefix.hpp
+|   |   |   |-- abi_suffix.hpp
+|   |   |   |-- auto_link.hpp
+|   |   |   |-- header_deprecated.hpp
+|   |   |   |-- helper_macros.hpp
+|   |   |   |-- pragma_message.hpp
+|   |   |   |-- requires_threads.hpp
+|   |   |   |-- user.hpp
+|   |   |   |-- warning_disable.hpp
+|   |   |   `-- workaround.hpp
+|   |   |-- container
+|   |   |   |-- detail
+|   |   |   |   |-- addressof.hpp
+|   |   |   |   |-- algorithm.hpp
+|   |   |   |   |-- allocation_type.hpp
+|   |   |   |   |-- allocator_version_traits.hpp
+|   |   |   |   |-- alloc_helpers.hpp
+|   |   |   |   |-- compare_functors.hpp
+|   |   |   |   |-- config_begin.hpp
+|   |   |   |   |-- config_end.hpp
+|   |   |   |   |-- construct_in_place.hpp
+|   |   |   |   |-- destroyers.hpp
+|   |   |   |   |-- iterator.hpp
+|   |   |   |   |-- iterators.hpp
+|   |   |   |   |-- mpl.hpp
+|   |   |   |   |-- multiallocation_chain.hpp
+|   |   |   |   |-- node_alloc_holder.hpp
+|   |   |   |   |-- placement_new.hpp
+|   |   |   |   |-- std_fwd.hpp
+|   |   |   |   |-- transform_iterator.hpp
+|   |   |   |   |-- type_traits.hpp
+|   |   |   |   |-- value_functors.hpp
+|   |   |   |   |-- value_init.hpp
+|   |   |   |   |-- variadic_templates_tools.hpp
+|   |   |   |   |-- version_type.hpp
+|   |   |   |   `-- workaround.hpp
+|   |   |   |-- allocator_traits.hpp
+|   |   |   |-- container_fwd.hpp
+|   |   |   |-- new_allocator.hpp
+|   |   |   |-- slist.hpp
+|   |   |   `-- throw_exception.hpp
+|   |   |-- container_hash
+|   |   |   |-- detail
+|   |   |   |   |-- float_functions.hpp
+|   |   |   |   |-- hash_float.hpp
+|   |   |   |   `-- limits.hpp
+|   |   |   |-- extensions.hpp
+|   |   |   |-- hash_fwd.hpp
+|   |   |   `-- hash.hpp
+|   |   |-- core
+|   |   |   |-- addressof.hpp
+|   |   |   |-- checked_delete.hpp
+|   |   |   |-- demangle.hpp
+|   |   |   |-- empty_value.hpp
+|   |   |   |-- enable_if.hpp
+|   |   |   |-- exchange.hpp
+|   |   |   |-- explicit_operator_bool.hpp
+|   |   |   |-- ignore_unused.hpp
+|   |   |   |-- is_same.hpp
+|   |   |   |-- lightweight_test.hpp
+|   |   |   |-- lightweight_test_trait.hpp
+|   |   |   |-- no_exceptions_support.hpp
+|   |   |   |-- noncopyable.hpp
+|   |   |   |-- null_deleter.hpp
+|   |   |   |-- pointer_traits.hpp
+|   |   |   |-- quick_exit.hpp
+|   |   |   |-- ref.hpp
+|   |   |   |-- scoped_enum.hpp
+|   |   |   |-- swap.hpp
+|   |   |   |-- typeinfo.hpp
+|   |   |   |-- uncaught_exceptions.hpp
+|   |   |   |-- underlying_type.hpp
+|   |   |   `-- use_default.hpp
+|   |   |-- detail
+|   |   |   |-- winapi
+|   |   |   |   |-- detail
+|   |   |   |   |   `-- deprecated_namespace.hpp
+|   |   |   |   |-- get_current_process.hpp
+|   |   |   |   |-- get_current_thread.hpp
+|   |   |   |   |-- get_last_error.hpp
+|   |   |   |   |-- get_process_times.hpp
+|   |   |   |   `-- get_thread_times.hpp
+|   |   |   |-- basic_pointerbuf.hpp
+|   |   |   |-- bitmask.hpp
+|   |   |   |-- call_traits.hpp
+|   |   |   |-- container_fwd.hpp
+|   |   |   |-- fenv.hpp
+|   |   |   |-- indirect_traits.hpp
+|   |   |   |-- is_incrementable.hpp
+|   |   |   |-- iterator.hpp
+|   |   |   |-- lcast_precision.hpp
+|   |   |   |-- lightweight_test.hpp
+|   |   |   |-- numeric_traits.hpp
+|   |   |   |-- reference_content.hpp
+|   |   |   |-- select_type.hpp
+|   |   |   |-- sp_typeinfo.hpp
+|   |   |   |-- templated_streams.hpp
+|   |   |   |-- utf8_codecvt_facet.hpp
+|   |   |   |-- utf8_codecvt_facet.ipp
+|   |   |   `-- workaround.hpp
+|   |   |-- exception
+|   |   |   |-- detail
+|   |   |   |   |-- error_info_impl.hpp
+|   |   |   |   |-- is_output_streamable.hpp
+|   |   |   |   |-- object_hex_dump.hpp
+|   |   |   |   |-- shared_ptr.hpp
+|   |   |   |   `-- type_info.hpp
+|   |   |   |-- current_exception_cast.hpp
+|   |   |   |-- diagnostic_information.hpp
+|   |   |   |-- exception.hpp
+|   |   |   |-- get_error_info.hpp
+|   |   |   |-- info.hpp
+|   |   |   |-- to_string.hpp
+|   |   |   `-- to_string_stub.hpp
+|   |   |-- filesystem
+|   |   |   |-- detail
+|   |   |   |   `-- utf8_codecvt_facet.hpp
+|   |   |   |-- config.hpp
+|   |   |   |-- convenience.hpp
+|   |   |   |-- fstream.hpp
+|   |   |   |-- operations.hpp
+|   |   |   |-- path.hpp
+|   |   |   |-- path_traits.hpp
+|   |   |   `-- string_file.hpp
+|   |   |-- format
+|   |   |   |-- detail
+|   |   |   |   |-- compat_workarounds.hpp
+|   |   |   |   |-- config_macros.hpp
+|   |   |   |   |-- msvc_disambiguater.hpp
+|   |   |   |   |-- unset_macros.hpp
+|   |   |   |   |-- workarounds_gcc-2_95.hpp
+|   |   |   |   `-- workarounds_stlport.hpp
+|   |   |   |-- alt_sstream.hpp
+|   |   |   |-- alt_sstream_impl.hpp
+|   |   |   |-- exceptions.hpp
+|   |   |   |-- feed_args.hpp
+|   |   |   |-- format_class.hpp
+|   |   |   |-- format_fwd.hpp
+|   |   |   |-- format_implementation.hpp
+|   |   |   |-- free_funcs.hpp
+|   |   |   |-- group.hpp
+|   |   |   |-- internals_fwd.hpp
+|   |   |   |-- internals.hpp
+|   |   |   `-- parsing.hpp
+|   |   |-- function
+|   |   |   |-- detail
+|   |   |   |   |-- function_iterate.hpp
+|   |   |   |   |-- gen_maybe_include.pl
+|   |   |   |   |-- maybe_include.hpp
+|   |   |   |   `-- prologue.hpp
+|   |   |   |-- function0.hpp
+|   |   |   |-- function10.hpp
+|   |   |   |-- function1.hpp
+|   |   |   |-- function2.hpp
+|   |   |   |-- function3.hpp
+|   |   |   |-- function4.hpp
+|   |   |   |-- function5.hpp
+|   |   |   |-- function6.hpp
+|   |   |   |-- function7.hpp
+|   |   |   |-- function8.hpp
+|   |   |   |-- function9.hpp
+|   |   |   |-- function_base.hpp
+|   |   |   |-- function_fwd.hpp
+|   |   |   `-- function_template.hpp
+|   |   |-- functional
+|   |   |   `-- hash_fwd.hpp
+|   |   |-- function_types
+|   |   |   |-- config
+|   |   |   |   |-- cc_names.hpp
+|   |   |   |   |-- compiler.hpp
+|   |   |   |   `-- config.hpp
+|   |   |   |-- detail
+|   |   |   |   |-- classifier_impl
+|   |   |   |   |   |-- arity10_0.hpp
+|   |   |   |   |   |-- arity10_1.hpp
+|   |   |   |   |   |-- arity20_0.hpp
+|   |   |   |   |   |-- arity20_1.hpp
+|   |   |   |   |   |-- arity30_0.hpp
+|   |   |   |   |   |-- arity30_1.hpp
+|   |   |   |   |   |-- arity40_0.hpp
+|   |   |   |   |   |-- arity40_1.hpp
+|   |   |   |   |   |-- arity50_0.hpp
+|   |   |   |   |   |-- arity50_1.hpp
+|   |   |   |   |   `-- master.hpp
+|   |   |   |   |-- components_impl
+|   |   |   |   |   |-- arity10_0.hpp
+|   |   |   |   |   |-- arity10_1.hpp
+|   |   |   |   |   |-- arity20_0.hpp
+|   |   |   |   |   |-- arity20_1.hpp
+|   |   |   |   |   |-- arity30_0.hpp
+|   |   |   |   |   |-- arity30_1.hpp
+|   |   |   |   |   |-- arity40_0.hpp
+|   |   |   |   |   |-- arity40_1.hpp
+|   |   |   |   |   |-- arity50_0.hpp
+|   |   |   |   |   |-- arity50_1.hpp
+|   |   |   |   |   `-- master.hpp
+|   |   |   |   |-- encoding
+|   |   |   |   |   |-- aliases_def.hpp
+|   |   |   |   |   |-- aliases_undef.hpp
+|   |   |   |   |   |-- def.hpp
+|   |   |   |   |   `-- undef.hpp
+|   |   |   |   |-- pp_cc_loop
+|   |   |   |   |   |-- master.hpp
+|   |   |   |   |   `-- preprocessed.hpp
+|   |   |   |   |-- pp_retag_default_cc
+|   |   |   |   |   |-- master.hpp
+|   |   |   |   |   `-- preprocessed.hpp
+|   |   |   |   |-- pp_tags
+|   |   |   |   |   |-- cc_tag.hpp
+|   |   |   |   |   |-- master.hpp
+|   |   |   |   |   `-- preprocessed.hpp
+|   |   |   |   |-- pp_variate_loop
+|   |   |   |   |   |-- master.hpp
+|   |   |   |   |   `-- preprocessed.hpp
+|   |   |   |   |-- synthesize_impl
+|   |   |   |   |   |-- arity10_0.hpp
+|   |   |   |   |   |-- arity10_1.hpp
+|   |   |   |   |   |-- arity20_0.hpp
+|   |   |   |   |   |-- arity20_1.hpp
+|   |   |   |   |   |-- arity30_0.hpp
+|   |   |   |   |   |-- arity30_1.hpp
+|   |   |   |   |   |-- arity40_0.hpp
+|   |   |   |   |   |-- arity40_1.hpp
+|   |   |   |   |   |-- arity50_0.hpp
+|   |   |   |   |   |-- arity50_1.hpp
+|   |   |   |   |   `-- master.hpp
+|   |   |   |   |-- classifier.hpp
+|   |   |   |   |-- class_transform.hpp
+|   |   |   |   |-- components_as_mpl_sequence.hpp
+|   |   |   |   |-- cv_traits.hpp
+|   |   |   |   |-- pp_arity_loop.hpp
+|   |   |   |   |-- pp_loop.hpp
+|   |   |   |   |-- retag_default_cc.hpp
+|   |   |   |   |-- synthesize.hpp
+|   |   |   |   `-- to_sequence.hpp
+|   |   |   |-- components.hpp
+|   |   |   |-- is_callable_builtin.hpp
+|   |   |   |-- is_function_pointer.hpp
+|   |   |   |-- property_tags.hpp
+|   |   |   `-- result_type.hpp
+|   |   |-- fusion
+|   |   |   |-- adapted
+|   |   |   |   |-- boost_tuple
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- at_impl.hpp
+|   |   |   |   |   |   |-- begin_impl.hpp
+|   |   |   |   |   |   |-- build_cons.hpp
+|   |   |   |   |   |   |-- category_of_impl.hpp
+|   |   |   |   |   |   |-- convert_impl.hpp
+|   |   |   |   |   |   |-- end_impl.hpp
+|   |   |   |   |   |   |-- is_sequence_impl.hpp
+|   |   |   |   |   |   |-- is_view_impl.hpp
+|   |   |   |   |   |   |-- size_impl.hpp
+|   |   |   |   |   |   `-- value_at_impl.hpp
+|   |   |   |   |   |-- mpl
+|   |   |   |   |   |   `-- clear.hpp
+|   |   |   |   |   |-- boost_tuple_iterator.hpp
+|   |   |   |   |   `-- tag_of.hpp
+|   |   |   |   |-- mpl
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- at_impl.hpp
+|   |   |   |   |   |   |-- begin_impl.hpp
+|   |   |   |   |   |   |-- category_of_impl.hpp
+|   |   |   |   |   |   |-- empty_impl.hpp
+|   |   |   |   |   |   |-- end_impl.hpp
+|   |   |   |   |   |   |-- has_key_impl.hpp
+|   |   |   |   |   |   |-- is_sequence_impl.hpp
+|   |   |   |   |   |   |-- is_view_impl.hpp
+|   |   |   |   |   |   |-- size_impl.hpp
+|   |   |   |   |   |   `-- value_at_impl.hpp
+|   |   |   |   |   `-- mpl_iterator.hpp
+|   |   |   |   |-- std_tuple
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- at_impl.hpp
+|   |   |   |   |   |   |-- begin_impl.hpp
+|   |   |   |   |   |   |-- build_std_tuple.hpp
+|   |   |   |   |   |   |-- category_of_impl.hpp
+|   |   |   |   |   |   |-- convert_impl.hpp
+|   |   |   |   |   |   |-- end_impl.hpp
+|   |   |   |   |   |   |-- is_sequence_impl.hpp
+|   |   |   |   |   |   |-- is_view_impl.hpp
+|   |   |   |   |   |   |-- size_impl.hpp
+|   |   |   |   |   |   `-- value_at_impl.hpp
+|   |   |   |   |   |-- mpl
+|   |   |   |   |   |   `-- clear.hpp
+|   |   |   |   |   |-- std_tuple_iterator.hpp
+|   |   |   |   |   `-- tag_of.hpp
+|   |   |   |   |-- struct
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- preprocessor
+|   |   |   |   |   |   |   `-- is_seq.hpp
+|   |   |   |   |   |   |-- adapt_auto.hpp
+|   |   |   |   |   |   |-- adapt_base_attr_filler.hpp
+|   |   |   |   |   |   |-- adapt_base.hpp
+|   |   |   |   |   |   |-- adapt_is_tpl.hpp
+|   |   |   |   |   |   |-- at_impl.hpp
+|   |   |   |   |   |   |-- begin_impl.hpp
+|   |   |   |   |   |   |-- category_of_impl.hpp
+|   |   |   |   |   |   |-- deref_impl.hpp
+|   |   |   |   |   |   |-- end_impl.hpp
+|   |   |   |   |   |   |-- extension.hpp
+|   |   |   |   |   |   |-- is_sequence_impl.hpp
+|   |   |   |   |   |   |-- is_view_impl.hpp
+|   |   |   |   |   |   |-- size_impl.hpp
+|   |   |   |   |   |   |-- value_at_impl.hpp
+|   |   |   |   |   |   `-- value_of_impl.hpp
+|   |   |   |   |   `-- adapt_struct.hpp
+|   |   |   |   |-- boost_tuple.hpp
+|   |   |   |   |-- mpl.hpp
+|   |   |   |   |-- std_pair.hpp
+|   |   |   |   `-- std_tuple.hpp
+|   |   |   |-- algorithm
+|   |   |   |   |-- iteration
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- preprocessed
+|   |   |   |   |   |   |   `-- fold.hpp
+|   |   |   |   |   |   |-- fold.hpp
+|   |   |   |   |   |   |-- for_each.hpp
+|   |   |   |   |   |   |-- segmented_fold.hpp
+|   |   |   |   |   |   `-- segmented_for_each.hpp
+|   |   |   |   |   |-- fold_fwd.hpp
+|   |   |   |   |   |-- fold.hpp
+|   |   |   |   |   |-- for_each_fwd.hpp
+|   |   |   |   |   `-- for_each.hpp
+|   |   |   |   |-- query
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- find_if.hpp
+|   |   |   |   |   |   `-- segmented_find.hpp
+|   |   |   |   |   |-- find_fwd.hpp
+|   |   |   |   |   |-- find.hpp
+|   |   |   |   |   `-- find_if_fwd.hpp
+|   |   |   |   `-- transformation
+|   |   |   |       |-- erase.hpp
+|   |   |   |       |-- erase_key.hpp
+|   |   |   |       |-- insert.hpp
+|   |   |   |       |-- insert_range.hpp
+|   |   |   |       |-- pop_back.hpp
+|   |   |   |       |-- pop_front.hpp
+|   |   |   |       |-- push_back.hpp
+|   |   |   |       |-- push_front.hpp
+|   |   |   |       `-- transform.hpp
+|   |   |   |-- container
+|   |   |   |   |-- deque
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- cpp03
+|   |   |   |   |   |   |   |-- preprocessed
+|   |   |   |   |   |   |   |   |-- as_deque10.hpp
+|   |   |   |   |   |   |   |   |-- as_deque20.hpp
+|   |   |   |   |   |   |   |   |-- as_deque30.hpp
+|   |   |   |   |   |   |   |   |-- as_deque40.hpp
+|   |   |   |   |   |   |   |   |-- as_deque50.hpp
+|   |   |   |   |   |   |   |   |-- as_deque.hpp
+|   |   |   |   |   |   |   |   |-- deque10_fwd.hpp
+|   |   |   |   |   |   |   |   |-- deque10.hpp
+|   |   |   |   |   |   |   |   |-- deque20_fwd.hpp
+|   |   |   |   |   |   |   |   |-- deque20.hpp
+|   |   |   |   |   |   |   |   |-- deque30_fwd.hpp
+|   |   |   |   |   |   |   |   |-- deque30.hpp
+|   |   |   |   |   |   |   |   |-- deque40_fwd.hpp
+|   |   |   |   |   |   |   |   |-- deque40.hpp
+|   |   |   |   |   |   |   |   |-- deque50_fwd.hpp
+|   |   |   |   |   |   |   |   |-- deque50.hpp
+|   |   |   |   |   |   |   |   |-- deque_fwd.hpp
+|   |   |   |   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |   |   |   |-- deque_initial_size10.hpp
+|   |   |   |   |   |   |   |   |-- deque_initial_size20.hpp
+|   |   |   |   |   |   |   |   |-- deque_initial_size30.hpp
+|   |   |   |   |   |   |   |   |-- deque_initial_size40.hpp
+|   |   |   |   |   |   |   |   |-- deque_initial_size50.hpp
+|   |   |   |   |   |   |   |   |-- deque_initial_size.hpp
+|   |   |   |   |   |   |   |   |-- deque_keyed_values10.hpp
+|   |   |   |   |   |   |   |   |-- deque_keyed_values20.hpp
+|   |   |   |   |   |   |   |   |-- deque_keyed_values30.hpp
+|   |   |   |   |   |   |   |   |-- deque_keyed_values40.hpp
+|   |   |   |   |   |   |   |   |-- deque_keyed_values50.hpp
+|   |   |   |   |   |   |   |   `-- deque_keyed_values.hpp
+|   |   |   |   |   |   |   |-- as_deque.hpp
+|   |   |   |   |   |   |   |-- build_deque.hpp
+|   |   |   |   |   |   |   |-- deque_forward_ctor.hpp
+|   |   |   |   |   |   |   |-- deque_fwd.hpp
+|   |   |   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |   |   |-- deque_initial_size.hpp
+|   |   |   |   |   |   |   |-- deque_keyed_values_call.hpp
+|   |   |   |   |   |   |   |-- deque_keyed_values.hpp
+|   |   |   |   |   |   |   `-- limits.hpp
+|   |   |   |   |   |   |-- at_impl.hpp
+|   |   |   |   |   |   |-- begin_impl.hpp
+|   |   |   |   |   |   |-- build_deque.hpp
+|   |   |   |   |   |   |-- convert_impl.hpp
+|   |   |   |   |   |   |-- deque_keyed_values.hpp
+|   |   |   |   |   |   |-- end_impl.hpp
+|   |   |   |   |   |   |-- is_sequence_impl.hpp
+|   |   |   |   |   |   |-- keyed_element.hpp
+|   |   |   |   |   |   `-- value_at_impl.hpp
+|   |   |   |   |   |-- back_extended_deque.hpp
+|   |   |   |   |   |-- convert.hpp
+|   |   |   |   |   |-- deque_fwd.hpp
+|   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |-- deque_iterator.hpp
+|   |   |   |   |   `-- front_extended_deque.hpp
+|   |   |   |   |-- generation
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- preprocessed
+|   |   |   |   |   |   |   |-- make_deque10.hpp
+|   |   |   |   |   |   |   |-- make_deque20.hpp
+|   |   |   |   |   |   |   |-- make_deque30.hpp
+|   |   |   |   |   |   |   |-- make_deque40.hpp
+|   |   |   |   |   |   |   |-- make_deque50.hpp
+|   |   |   |   |   |   |   |-- make_deque.hpp
+|   |   |   |   |   |   |   |-- make_list10.hpp
+|   |   |   |   |   |   |   |-- make_list20.hpp
+|   |   |   |   |   |   |   |-- make_list30.hpp
+|   |   |   |   |   |   |   |-- make_list40.hpp
+|   |   |   |   |   |   |   |-- make_list50.hpp
+|   |   |   |   |   |   |   |-- make_list.hpp
+|   |   |   |   |   |   |   |-- make_vector10.hpp
+|   |   |   |   |   |   |   |-- make_vector20.hpp
+|   |   |   |   |   |   |   |-- make_vector30.hpp
+|   |   |   |   |   |   |   |-- make_vector40.hpp
+|   |   |   |   |   |   |   |-- make_vector50.hpp
+|   |   |   |   |   |   |   `-- make_vector.hpp
+|   |   |   |   |   |   |-- pp_make_deque.hpp
+|   |   |   |   |   |   |-- pp_make_list.hpp
+|   |   |   |   |   |   `-- pp_make_vector.hpp
+|   |   |   |   |   |-- make_deque.hpp
+|   |   |   |   |   |-- make_list.hpp
+|   |   |   |   |   `-- make_vector.hpp
+|   |   |   |   |-- list
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- cpp03
+|   |   |   |   |   |   |   |-- preprocessed
+|   |   |   |   |   |   |   |   |-- list10_fwd.hpp
+|   |   |   |   |   |   |   |   |-- list10.hpp
+|   |   |   |   |   |   |   |   |-- list20_fwd.hpp
+|   |   |   |   |   |   |   |   |-- list20.hpp
+|   |   |   |   |   |   |   |   |-- list30_fwd.hpp
+|   |   |   |   |   |   |   |   |-- list30.hpp
+|   |   |   |   |   |   |   |   |-- list40_fwd.hpp
+|   |   |   |   |   |   |   |   |-- list40.hpp
+|   |   |   |   |   |   |   |   |-- list50_fwd.hpp
+|   |   |   |   |   |   |   |   |-- list50.hpp
+|   |   |   |   |   |   |   |   |-- list_fwd.hpp
+|   |   |   |   |   |   |   |   |-- list.hpp
+|   |   |   |   |   |   |   |   |-- list_to_cons10.hpp
+|   |   |   |   |   |   |   |   |-- list_to_cons20.hpp
+|   |   |   |   |   |   |   |   |-- list_to_cons30.hpp
+|   |   |   |   |   |   |   |   |-- list_to_cons40.hpp
+|   |   |   |   |   |   |   |   |-- list_to_cons50.hpp
+|   |   |   |   |   |   |   |   `-- list_to_cons.hpp
+|   |   |   |   |   |   |   |-- limits.hpp
+|   |   |   |   |   |   |   |-- list_forward_ctor.hpp
+|   |   |   |   |   |   |   |-- list_fwd.hpp
+|   |   |   |   |   |   |   |-- list.hpp
+|   |   |   |   |   |   |   |-- list_to_cons_call.hpp
+|   |   |   |   |   |   |   `-- list_to_cons.hpp
+|   |   |   |   |   |   |-- at_impl.hpp
+|   |   |   |   |   |   |-- begin_impl.hpp
+|   |   |   |   |   |   |-- build_cons.hpp
+|   |   |   |   |   |   |-- convert_impl.hpp
+|   |   |   |   |   |   |-- deref_impl.hpp
+|   |   |   |   |   |   |-- empty_impl.hpp
+|   |   |   |   |   |   |-- end_impl.hpp
+|   |   |   |   |   |   |-- equal_to_impl.hpp
+|   |   |   |   |   |   |-- list_to_cons.hpp
+|   |   |   |   |   |   |-- next_impl.hpp
+|   |   |   |   |   |   |-- reverse_cons.hpp
+|   |   |   |   |   |   |-- value_at_impl.hpp
+|   |   |   |   |   |   `-- value_of_impl.hpp
+|   |   |   |   |   |-- cons_fwd.hpp
+|   |   |   |   |   |-- cons.hpp
+|   |   |   |   |   |-- cons_iterator.hpp
+|   |   |   |   |   |-- convert.hpp
+|   |   |   |   |   |-- list_fwd.hpp
+|   |   |   |   |   |-- list.hpp
+|   |   |   |   |   `-- nil.hpp
+|   |   |   |   |-- map
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   `-- cpp03
+|   |   |   |   |   |       |-- preprocessed
+|   |   |   |   |   |       |   |-- map10_fwd.hpp
+|   |   |   |   |   |       |   |-- map20_fwd.hpp
+|   |   |   |   |   |       |   |-- map30_fwd.hpp
+|   |   |   |   |   |       |   |-- map40_fwd.hpp
+|   |   |   |   |   |       |   |-- map50_fwd.hpp
+|   |   |   |   |   |       |   `-- map_fwd.hpp
+|   |   |   |   |   |       |-- limits.hpp
+|   |   |   |   |   |       `-- map_fwd.hpp
+|   |   |   |   |   `-- map_fwd.hpp
+|   |   |   |   |-- set
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   `-- cpp03
+|   |   |   |   |   |       |-- preprocessed
+|   |   |   |   |   |       |   |-- set10_fwd.hpp
+|   |   |   |   |   |       |   |-- set20_fwd.hpp
+|   |   |   |   |   |       |   |-- set30_fwd.hpp
+|   |   |   |   |   |       |   |-- set40_fwd.hpp
+|   |   |   |   |   |       |   |-- set50_fwd.hpp
+|   |   |   |   |   |       |   `-- set_fwd.hpp
+|   |   |   |   |   |       |-- limits.hpp
+|   |   |   |   |   |       `-- set_fwd.hpp
+|   |   |   |   |   `-- set_fwd.hpp
+|   |   |   |   |-- vector
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- cpp03
+|   |   |   |   |   |   |   |-- preprocessed
+|   |   |   |   |   |   |   |   |-- as_vector10.hpp
+|   |   |   |   |   |   |   |   |-- as_vector20.hpp
+|   |   |   |   |   |   |   |   |-- as_vector30.hpp
+|   |   |   |   |   |   |   |   |-- as_vector40.hpp
+|   |   |   |   |   |   |   |   |-- as_vector50.hpp
+|   |   |   |   |   |   |   |   |-- as_vector.hpp
+|   |   |   |   |   |   |   |   |-- vector10_fwd.hpp
+|   |   |   |   |   |   |   |   |-- vector10.hpp
+|   |   |   |   |   |   |   |   |-- vector20_fwd.hpp
+|   |   |   |   |   |   |   |   |-- vector20.hpp
+|   |   |   |   |   |   |   |   |-- vector30_fwd.hpp
+|   |   |   |   |   |   |   |   |-- vector30.hpp
+|   |   |   |   |   |   |   |   |-- vector40_fwd.hpp
+|   |   |   |   |   |   |   |   |-- vector40.hpp
+|   |   |   |   |   |   |   |   |-- vector50_fwd.hpp
+|   |   |   |   |   |   |   |   |-- vector50.hpp
+|   |   |   |   |   |   |   |   |-- vector_chooser10.hpp
+|   |   |   |   |   |   |   |   |-- vector_chooser20.hpp
+|   |   |   |   |   |   |   |   |-- vector_chooser30.hpp
+|   |   |   |   |   |   |   |   |-- vector_chooser40.hpp
+|   |   |   |   |   |   |   |   |-- vector_chooser50.hpp
+|   |   |   |   |   |   |   |   |-- vector_chooser.hpp
+|   |   |   |   |   |   |   |   |-- vector_fwd.hpp
+|   |   |   |   |   |   |   |   |-- vector.hpp
+|   |   |   |   |   |   |   |   |-- vvector10_fwd.hpp
+|   |   |   |   |   |   |   |   |-- vvector10.hpp
+|   |   |   |   |   |   |   |   |-- vvector20_fwd.hpp
+|   |   |   |   |   |   |   |   |-- vvector20.hpp
+|   |   |   |   |   |   |   |   |-- vvector30_fwd.hpp
+|   |   |   |   |   |   |   |   |-- vvector30.hpp
+|   |   |   |   |   |   |   |   |-- vvector40_fwd.hpp
+|   |   |   |   |   |   |   |   |-- vvector40.hpp
+|   |   |   |   |   |   |   |   |-- vvector50_fwd.hpp
+|   |   |   |   |   |   |   |   `-- vvector50.hpp
+|   |   |   |   |   |   |   |-- as_vector.hpp
+|   |   |   |   |   |   |   |-- limits.hpp
+|   |   |   |   |   |   |   |-- value_at_impl.hpp
+|   |   |   |   |   |   |   |-- vector10_fwd.hpp
+|   |   |   |   |   |   |   |-- vector10.hpp
+|   |   |   |   |   |   |   |-- vector20_fwd.hpp
+|   |   |   |   |   |   |   |-- vector20.hpp
+|   |   |   |   |   |   |   |-- vector30_fwd.hpp
+|   |   |   |   |   |   |   |-- vector30.hpp
+|   |   |   |   |   |   |   |-- vector40_fwd.hpp
+|   |   |   |   |   |   |   |-- vector40.hpp
+|   |   |   |   |   |   |   |-- vector50_fwd.hpp
+|   |   |   |   |   |   |   |-- vector50.hpp
+|   |   |   |   |   |   |   |-- vector_forward_ctor.hpp
+|   |   |   |   |   |   |   |-- vector_fwd.hpp
+|   |   |   |   |   |   |   |-- vector.hpp
+|   |   |   |   |   |   |   |-- vector_n_chooser.hpp
+|   |   |   |   |   |   |   `-- vector_n.hpp
+|   |   |   |   |   |   |-- advance_impl.hpp
+|   |   |   |   |   |   |-- as_vector.hpp
+|   |   |   |   |   |   |-- at_impl.hpp
+|   |   |   |   |   |   |-- begin_impl.hpp
+|   |   |   |   |   |   |-- config.hpp
+|   |   |   |   |   |   |-- convert_impl.hpp
+|   |   |   |   |   |   |-- deref_impl.hpp
+|   |   |   |   |   |   |-- distance_impl.hpp
+|   |   |   |   |   |   |-- end_impl.hpp
+|   |   |   |   |   |   |-- equal_to_impl.hpp
+|   |   |   |   |   |   |-- next_impl.hpp
+|   |   |   |   |   |   |-- prior_impl.hpp
+|   |   |   |   |   |   |-- value_at_impl.hpp
+|   |   |   |   |   |   `-- value_of_impl.hpp
+|   |   |   |   |   |-- convert.hpp
+|   |   |   |   |   |-- vector10.hpp
+|   |   |   |   |   |-- vector_fwd.hpp
+|   |   |   |   |   |-- vector.hpp
+|   |   |   |   |   `-- vector_iterator.hpp
+|   |   |   |   |-- deque.hpp
+|   |   |   |   |-- list.hpp
+|   |   |   |   `-- vector.hpp
+|   |   |   |-- include
+|   |   |   |   |-- at.hpp
+|   |   |   |   |-- deque.hpp
+|   |   |   |   |-- list.hpp
+|   |   |   |   |-- make_deque.hpp
+|   |   |   |   |-- make_list.hpp
+|   |   |   |   |-- make_vector.hpp
+|   |   |   |   `-- vector.hpp
+|   |   |   |-- iterator
+|   |   |   |   |-- detail
+|   |   |   |   |   |-- adapt_deref_traits.hpp
+|   |   |   |   |   |-- adapt_value_traits.hpp
+|   |   |   |   |   |-- advance.hpp
+|   |   |   |   |   |-- distance.hpp
+|   |   |   |   |   |-- segmented_equal_to.hpp
+|   |   |   |   |   |-- segmented_iterator.hpp
+|   |   |   |   |   |-- segmented_next_impl.hpp
+|   |   |   |   |   `-- segment_sequence.hpp
+|   |   |   |   |-- mpl
+|   |   |   |   |   |-- convert_iterator.hpp
+|   |   |   |   |   `-- fusion_iterator.hpp
+|   |   |   |   |-- advance.hpp
+|   |   |   |   |-- basic_iterator.hpp
+|   |   |   |   |-- deref_data.hpp
+|   |   |   |   |-- deref.hpp
+|   |   |   |   |-- distance.hpp
+|   |   |   |   |-- equal_to.hpp
+|   |   |   |   |-- iterator_adapter.hpp
+|   |   |   |   |-- iterator_facade.hpp
+|   |   |   |   |-- key_of.hpp
+|   |   |   |   |-- mpl.hpp
+|   |   |   |   |-- next.hpp
+|   |   |   |   |-- prior.hpp
+|   |   |   |   |-- segmented_iterator.hpp
+|   |   |   |   |-- value_of_data.hpp
+|   |   |   |   `-- value_of.hpp
+|   |   |   |-- mpl
+|   |   |   |   |-- detail
+|   |   |   |   |   `-- clear.hpp
+|   |   |   |   |-- at.hpp
+|   |   |   |   |-- back.hpp
+|   |   |   |   |-- begin.hpp
+|   |   |   |   |-- clear.hpp
+|   |   |   |   |-- empty.hpp
+|   |   |   |   |-- end.hpp
+|   |   |   |   |-- erase.hpp
+|   |   |   |   |-- erase_key.hpp
+|   |   |   |   |-- front.hpp
+|   |   |   |   |-- has_key.hpp
+|   |   |   |   |-- insert.hpp
+|   |   |   |   |-- insert_range.hpp
+|   |   |   |   |-- pop_back.hpp
+|   |   |   |   |-- pop_front.hpp
+|   |   |   |   |-- push_back.hpp
+|   |   |   |   |-- push_front.hpp
+|   |   |   |   `-- size.hpp
+|   |   |   |-- sequence
+|   |   |   |   |-- comparison
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   `-- equal_to.hpp
+|   |   |   |   |   |-- enable_comparison.hpp
+|   |   |   |   |   `-- equal_to.hpp
+|   |   |   |   |-- intrinsic
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- segmented_begin.hpp
+|   |   |   |   |   |   |-- segmented_begin_impl.hpp
+|   |   |   |   |   |   |-- segmented_end.hpp
+|   |   |   |   |   |   |-- segmented_end_impl.hpp
+|   |   |   |   |   |   `-- segmented_size.hpp
+|   |   |   |   |   |-- at_c.hpp
+|   |   |   |   |   |-- at.hpp
+|   |   |   |   |   |-- begin.hpp
+|   |   |   |   |   |-- empty.hpp
+|   |   |   |   |   |-- end.hpp
+|   |   |   |   |   |-- has_key.hpp
+|   |   |   |   |   |-- segments.hpp
+|   |   |   |   |   |-- size.hpp
+|   |   |   |   |   `-- value_at.hpp
+|   |   |   |   |-- convert.hpp
+|   |   |   |   `-- intrinsic_fwd.hpp
+|   |   |   |-- support
+|   |   |   |   |-- detail
+|   |   |   |   |   |-- access.hpp
+|   |   |   |   |   |-- and.hpp
+|   |   |   |   |   |-- as_fusion_element.hpp
+|   |   |   |   |   |-- enabler.hpp
+|   |   |   |   |   |-- index_sequence.hpp
+|   |   |   |   |   |-- is_mpl_sequence.hpp
+|   |   |   |   |   |-- is_native_fusion_sequence.hpp
+|   |   |   |   |   |-- mpl_iterator_category.hpp
+|   |   |   |   |   |-- pp_round.hpp
+|   |   |   |   |   `-- segmented_fold_until_impl.hpp
+|   |   |   |   |-- as_const.hpp
+|   |   |   |   |-- category_of.hpp
+|   |   |   |   |-- config.hpp
+|   |   |   |   |-- is_iterator.hpp
+|   |   |   |   |-- is_segmented.hpp
+|   |   |   |   |-- is_sequence.hpp
+|   |   |   |   |-- is_view.hpp
+|   |   |   |   |-- iterator_base.hpp
+|   |   |   |   |-- segmented_fold_until.hpp
+|   |   |   |   |-- sequence_base.hpp
+|   |   |   |   |-- tag_of_fwd.hpp
+|   |   |   |   |-- tag_of.hpp
+|   |   |   |   `-- void.hpp
+|   |   |   |-- view
+|   |   |   |   |-- detail
+|   |   |   |   |   `-- strictest_traversal.hpp
+|   |   |   |   |-- iterator_range
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- at_impl.hpp
+|   |   |   |   |   |   |-- begin_impl.hpp
+|   |   |   |   |   |   |-- end_impl.hpp
+|   |   |   |   |   |   |-- is_segmented_impl.hpp
+|   |   |   |   |   |   |-- segmented_iterator_range.hpp
+|   |   |   |   |   |   |-- segments_impl.hpp
+|   |   |   |   |   |   |-- size_impl.hpp
+|   |   |   |   |   |   `-- value_at_impl.hpp
+|   |   |   |   |   `-- iterator_range.hpp
+|   |   |   |   |-- joint_view
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- begin_impl.hpp
+|   |   |   |   |   |   |-- deref_data_impl.hpp
+|   |   |   |   |   |   |-- deref_impl.hpp
+|   |   |   |   |   |   |-- end_impl.hpp
+|   |   |   |   |   |   |-- key_of_impl.hpp
+|   |   |   |   |   |   |-- next_impl.hpp
+|   |   |   |   |   |   |-- value_of_data_impl.hpp
+|   |   |   |   |   |   `-- value_of_impl.hpp
+|   |   |   |   |   |-- joint_view_fwd.hpp
+|   |   |   |   |   |-- joint_view.hpp
+|   |   |   |   |   `-- joint_view_iterator.hpp
+|   |   |   |   |-- single_view
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- advance_impl.hpp
+|   |   |   |   |   |   |-- at_impl.hpp
+|   |   |   |   |   |   |-- begin_impl.hpp
+|   |   |   |   |   |   |-- deref_impl.hpp
+|   |   |   |   |   |   |-- distance_impl.hpp
+|   |   |   |   |   |   |-- end_impl.hpp
+|   |   |   |   |   |   |-- equal_to_impl.hpp
+|   |   |   |   |   |   |-- next_impl.hpp
+|   |   |   |   |   |   |-- prior_impl.hpp
+|   |   |   |   |   |   |-- size_impl.hpp
+|   |   |   |   |   |   |-- value_at_impl.hpp
+|   |   |   |   |   |   `-- value_of_impl.hpp
+|   |   |   |   |   |-- single_view.hpp
+|   |   |   |   |   `-- single_view_iterator.hpp
+|   |   |   |   |-- transform_view
+|   |   |   |   |   |-- detail
+|   |   |   |   |   |   |-- advance_impl.hpp
+|   |   |   |   |   |   |-- at_impl.hpp
+|   |   |   |   |   |   |-- begin_impl.hpp
+|   |   |   |   |   |   |-- deref_impl.hpp
+|   |   |   |   |   |   |-- distance_impl.hpp
+|   |   |   |   |   |   |-- end_impl.hpp
+|   |   |   |   |   |   |-- equal_to_impl.hpp
+|   |   |   |   |   |   |-- next_impl.hpp
+|   |   |   |   |   |   |-- prior_impl.hpp
+|   |   |   |   |   |   |-- value_at_impl.hpp
+|   |   |   |   |   |   `-- value_of_impl.hpp
+|   |   |   |   |   |-- transform_view_fwd.hpp
+|   |   |   |   |   |-- transform_view.hpp
+|   |   |   |   |   `-- transform_view_iterator.hpp
+|   |   |   |   `-- iterator_range.hpp
+|   |   |   `-- mpl.hpp
+|   |   |-- integer
+|   |   |   |-- common_factor_rt.hpp
+|   |   |   `-- static_log2.hpp
+|   |   |-- intrusive
+|   |   |   |-- detail
+|   |   |   |   |-- algorithm.hpp
+|   |   |   |   |-- algo_type.hpp
+|   |   |   |   |-- array_initializer.hpp
+|   |   |   |   |-- assert.hpp
+|   |   |   |   |-- common_slist_algorithms.hpp
+|   |   |   |   |-- config_begin.hpp
+|   |   |   |   |-- config_end.hpp
+|   |   |   |   |-- default_header_holder.hpp
+|   |   |   |   |-- ebo_functor_holder.hpp
+|   |   |   |   |-- equal_to_value.hpp
+|   |   |   |   |-- exception_disposer.hpp
+|   |   |   |   |-- function_detector.hpp
+|   |   |   |   |-- generic_hook.hpp
+|   |   |   |   |-- get_value_traits.hpp
+|   |   |   |   |-- has_member_function_callable_with.hpp
+|   |   |   |   |-- hook_traits.hpp
+|   |   |   |   |-- iiterator.hpp
+|   |   |   |   |-- is_stateful_value_traits.hpp
+|   |   |   |   |-- iterator.hpp
+|   |   |   |   |-- key_nodeptr_comp.hpp
+|   |   |   |   |-- minimal_less_equal_header.hpp
+|   |   |   |   |-- minimal_pair_header.hpp
+|   |   |   |   |-- mpl.hpp
+|   |   |   |   |-- node_holder.hpp
+|   |   |   |   |-- parent_from_member.hpp
+|   |   |   |   |-- reverse_iterator.hpp
+|   |   |   |   |-- simple_disposers.hpp
+|   |   |   |   |-- size_holder.hpp
+|   |   |   |   |-- slist_iterator.hpp
+|   |   |   |   |-- slist_node.hpp
+|   |   |   |   |-- std_fwd.hpp
+|   |   |   |   |-- tree_value_compare.hpp
+|   |   |   |   |-- uncast.hpp
+|   |   |   |   `-- workaround.hpp
+|   |   |   |-- circular_slist_algorithms.hpp
+|   |   |   |-- intrusive_fwd.hpp
+|   |   |   |-- linear_slist_algorithms.hpp
+|   |   |   |-- link_mode.hpp
+|   |   |   |-- options.hpp
+|   |   |   |-- pack_options.hpp
+|   |   |   |-- pointer_rebind.hpp
+|   |   |   |-- pointer_traits.hpp
+|   |   |   |-- slist_hook.hpp
+|   |   |   `-- slist.hpp
+|   |   |-- io
+|   |   |   |-- detail
+|   |   |   |   `-- quoted_manip.hpp
+|   |   |   `-- ios_state.hpp
+|   |   |-- iterator
+|   |   |   |-- detail
+|   |   |   |   |-- any_conversion_eater.hpp
+|   |   |   |   |-- config_def.hpp
+|   |   |   |   |-- config_undef.hpp
+|   |   |   |   |-- enable_if.hpp
+|   |   |   |   |-- facade_iterator_category.hpp
+|   |   |   |   `-- minimum_category.hpp
+|   |   |   |-- advance.hpp
+|   |   |   |-- counting_iterator.hpp
+|   |   |   |-- distance.hpp
+|   |   |   |-- filter_iterator.hpp
+|   |   |   |-- function_input_iterator.hpp
+|   |   |   |-- function_output_iterator.hpp
+|   |   |   |-- indirect_iterator.hpp
+|   |   |   |-- interoperable.hpp
+|   |   |   |-- is_lvalue_iterator.hpp
+|   |   |   |-- is_readable_iterator.hpp
+|   |   |   |-- iterator_adaptor.hpp
+|   |   |   |-- iterator_archetypes.hpp
+|   |   |   |-- iterator_categories.hpp
+|   |   |   |-- iterator_concepts.hpp
+|   |   |   |-- iterator_facade.hpp
+|   |   |   |-- iterator_traits.hpp
+|   |   |   |-- minimum_category.hpp
+|   |   |   |-- new_iterator_tests.hpp
+|   |   |   |-- permutation_iterator.hpp
+|   |   |   |-- reverse_iterator.hpp
+|   |   |   |-- transform_iterator.hpp
+|   |   |   `-- zip_iterator.hpp
+|   |   |-- lexical_cast
+|   |   |   |-- detail
+|   |   |   |   |-- converter_lexical.hpp
+|   |   |   |   |-- converter_lexical_streams.hpp
+|   |   |   |   |-- converter_numeric.hpp
+|   |   |   |   |-- inf_nan.hpp
+|   |   |   |   |-- is_character.hpp
+|   |   |   |   |-- lcast_char_constants.hpp
+|   |   |   |   |-- lcast_unsigned_converters.hpp
+|   |   |   |   `-- widest_char.hpp
+|   |   |   |-- bad_lexical_cast.hpp
+|   |   |   `-- try_lexical_convert.hpp
+|   |   |-- math
+|   |   |   |-- policies
+|   |   |   |   `-- policy.hpp
+|   |   |   |-- special_functions
+|   |   |   |   |-- detail
+|   |   |   |   |   |-- fp_traits.hpp
+|   |   |   |   |   `-- round_fwd.hpp
+|   |   |   |   |-- fpclassify.hpp
+|   |   |   |   |-- math_fwd.hpp
+|   |   |   |   `-- sign.hpp
+|   |   |   `-- tools
+|   |   |       |-- config.hpp
+|   |   |       |-- promotion.hpp
+|   |   |       |-- real_cast.hpp
+|   |   |       `-- user.hpp
+|   |   |-- move
+|   |   |   |-- detail
+|   |   |   |   |-- config_begin.hpp
+|   |   |   |   |-- config_end.hpp
+|   |   |   |   |-- fwd_macros.hpp
+|   |   |   |   |-- iterator_to_raw_pointer.hpp
+|   |   |   |   |-- iterator_traits.hpp
+|   |   |   |   |-- meta_utils_core.hpp
+|   |   |   |   |-- meta_utils.hpp
+|   |   |   |   |-- move_helpers.hpp
+|   |   |   |   |-- pointer_element.hpp
+|   |   |   |   |-- std_ns_begin.hpp
+|   |   |   |   |-- std_ns_end.hpp
+|   |   |   |   |-- to_raw_pointer.hpp
+|   |   |   |   |-- type_traits.hpp
+|   |   |   |   `-- workaround.hpp
+|   |   |   |-- adl_move_swap.hpp
+|   |   |   |-- core.hpp
+|   |   |   |-- iterator.hpp
+|   |   |   |-- traits.hpp
+|   |   |   |-- utility_core.hpp
+|   |   |   `-- utility.hpp
+|   |   |-- mp11
+|   |   |   |-- detail
+|   |   |   |   |-- config.hpp
+|   |   |   |   |-- mp_append.hpp
+|   |   |   |   |-- mp_copy_if.hpp
+|   |   |   |   |-- mp_count.hpp
+|   |   |   |   |-- mp_fold.hpp
+|   |   |   |   |-- mp_is_list.hpp
+|   |   |   |   |-- mp_list.hpp
+|   |   |   |   |-- mp_map_find.hpp
+|   |   |   |   |-- mp_min_element.hpp
+|   |   |   |   |-- mp_plus.hpp
+|   |   |   |   |-- mp_remove_if.hpp
+|   |   |   |   |-- mp_void.hpp
+|   |   |   |   `-- mp_with_index.hpp
+|   |   |   |-- algorithm.hpp
+|   |   |   |-- bind.hpp
+|   |   |   |-- function.hpp
+|   |   |   |-- integer_sequence.hpp
+|   |   |   |-- integral.hpp
+|   |   |   |-- list.hpp
+|   |   |   |-- map.hpp
+|   |   |   |-- mpl.hpp
+|   |   |   |-- set.hpp
+|   |   |   |-- tuple.hpp
+|   |   |   |-- utility.hpp
+|   |   |   `-- version.hpp
+|   |   |-- mpl
+|   |   |   |-- aux_
+|   |   |   |   |-- config
+|   |   |   |   |   |-- adl.hpp
+|   |   |   |   |   |-- arrays.hpp
+|   |   |   |   |   |-- bcc.hpp
+|   |   |   |   |   |-- bind.hpp
+|   |   |   |   |   |-- compiler.hpp
+|   |   |   |   |   |-- ctps.hpp
+|   |   |   |   |   |-- dependent_nttp.hpp
+|   |   |   |   |   |-- dmc_ambiguous_ctps.hpp
+|   |   |   |   |   |-- dtp.hpp
+|   |   |   |   |   |-- eti.hpp
+|   |   |   |   |   |-- forwarding.hpp
+|   |   |   |   |   |-- gcc.hpp
+|   |   |   |   |   |-- gpu.hpp
+|   |   |   |   |   |-- has_apply.hpp
+|   |   |   |   |   |-- has_xxx.hpp
+|   |   |   |   |   |-- integral.hpp
+|   |   |   |   |   |-- intel.hpp
+|   |   |   |   |   |-- lambda.hpp
+|   |   |   |   |   |-- msvc.hpp
+|   |   |   |   |   |-- msvc_typename.hpp
+|   |   |   |   |   |-- nttp.hpp
+|   |   |   |   |   |-- overload_resolution.hpp
+|   |   |   |   |   |-- pp_counter.hpp
+|   |   |   |   |   |-- preprocessor.hpp
+|   |   |   |   |   |-- static_constant.hpp
+|   |   |   |   |   |-- ttp.hpp
+|   |   |   |   |   |-- typeof.hpp
+|   |   |   |   |   |-- use_preprocessed.hpp
+|   |   |   |   |   `-- workaround.hpp
+|   |   |   |   |-- preprocessed
+|   |   |   |   |   |-- bcc
+|   |   |   |   |   |   |-- advance_backward.hpp
+|   |   |   |   |   |   |-- advance_forward.hpp
+|   |   |   |   |   |   |-- and.hpp
+|   |   |   |   |   |   |-- apply_fwd.hpp
+|   |   |   |   |   |   |-- apply.hpp
+|   |   |   |   |   |   |-- apply_wrap.hpp
+|   |   |   |   |   |   |-- arg.hpp
+|   |   |   |   |   |   |-- basic_bind.hpp
+|   |   |   |   |   |   |-- bind_fwd.hpp
+|   |   |   |   |   |   |-- bind.hpp
+|   |   |   |   |   |   |-- bitand.hpp
+|   |   |   |   |   |   |-- bitor.hpp
+|   |   |   |   |   |   |-- bitxor.hpp
+|   |   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |   |-- divides.hpp
+|   |   |   |   |   |   |-- equal_to.hpp
+|   |   |   |   |   |   |-- fold_impl.hpp
+|   |   |   |   |   |   |-- full_lambda.hpp
+|   |   |   |   |   |   |-- greater_equal.hpp
+|   |   |   |   |   |   |-- greater.hpp
+|   |   |   |   |   |   |-- inherit.hpp
+|   |   |   |   |   |   |-- iter_fold_if_impl.hpp
+|   |   |   |   |   |   |-- iter_fold_impl.hpp
+|   |   |   |   |   |   |-- lambda_no_ctps.hpp
+|   |   |   |   |   |   |-- less_equal.hpp
+|   |   |   |   |   |   |-- less.hpp
+|   |   |   |   |   |   |-- list_c.hpp
+|   |   |   |   |   |   |-- list.hpp
+|   |   |   |   |   |   |-- map.hpp
+|   |   |   |   |   |   |-- minus.hpp
+|   |   |   |   |   |   |-- modulus.hpp
+|   |   |   |   |   |   |-- not_equal_to.hpp
+|   |   |   |   |   |   |-- or.hpp
+|   |   |   |   |   |   |-- placeholders.hpp
+|   |   |   |   |   |   |-- plus.hpp
+|   |   |   |   |   |   |-- quote.hpp
+|   |   |   |   |   |   |-- reverse_fold_impl.hpp
+|   |   |   |   |   |   |-- reverse_iter_fold_impl.hpp
+|   |   |   |   |   |   |-- set_c.hpp
+|   |   |   |   |   |   |-- set.hpp
+|   |   |   |   |   |   |-- shift_left.hpp
+|   |   |   |   |   |   |-- shift_right.hpp
+|   |   |   |   |   |   |-- template_arity.hpp
+|   |   |   |   |   |   |-- times.hpp
+|   |   |   |   |   |   |-- unpack_args.hpp
+|   |   |   |   |   |   |-- vector_c.hpp
+|   |   |   |   |   |   `-- vector.hpp
+|   |   |   |   |   |-- bcc551
+|   |   |   |   |   |   |-- advance_backward.hpp
+|   |   |   |   |   |   |-- advance_forward.hpp
+|   |   |   |   |   |   |-- and.hpp
+|   |   |   |   |   |   |-- apply_fwd.hpp
+|   |   |   |   |   |   |-- apply.hpp
+|   |   |   |   |   |   |-- apply_wrap.hpp
+|   |   |   |   |   |   |-- arg.hpp
+|   |   |   |   |   |   |-- basic_bind.hpp
+|   |   |   |   |   |   |-- bind_fwd.hpp
+|   |   |   |   |   |   |-- bind.hpp
+|   |   |   |   |   |   |-- bitand.hpp
+|   |   |   |   |   |   |-- bitor.hpp
+|   |   |   |   |   |   |-- bitxor.hpp
+|   |   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |   |-- divides.hpp
+|   |   |   |   |   |   |-- equal_to.hpp
+|   |   |   |   |   |   |-- fold_impl.hpp
+|   |   |   |   |   |   |-- full_lambda.hpp
+|   |   |   |   |   |   |-- greater_equal.hpp
+|   |   |   |   |   |   |-- greater.hpp
+|   |   |   |   |   |   |-- inherit.hpp
+|   |   |   |   |   |   |-- iter_fold_if_impl.hpp
+|   |   |   |   |   |   |-- iter_fold_impl.hpp
+|   |   |   |   |   |   |-- lambda_no_ctps.hpp
+|   |   |   |   |   |   |-- less_equal.hpp
+|   |   |   |   |   |   |-- less.hpp
+|   |   |   |   |   |   |-- list_c.hpp
+|   |   |   |   |   |   |-- list.hpp
+|   |   |   |   |   |   |-- map.hpp
+|   |   |   |   |   |   |-- minus.hpp
+|   |   |   |   |   |   |-- modulus.hpp
+|   |   |   |   |   |   |-- not_equal_to.hpp
+|   |   |   |   |   |   |-- or.hpp
+|   |   |   |   |   |   |-- placeholders.hpp
+|   |   |   |   |   |   |-- plus.hpp
+|   |   |   |   |   |   |-- quote.hpp
+|   |   |   |   |   |   |-- reverse_fold_impl.hpp
+|   |   |   |   |   |   |-- reverse_iter_fold_impl.hpp
+|   |   |   |   |   |   |-- set_c.hpp
+|   |   |   |   |   |   |-- set.hpp
+|   |   |   |   |   |   |-- shift_left.hpp
+|   |   |   |   |   |   |-- shift_right.hpp
+|   |   |   |   |   |   |-- template_arity.hpp
+|   |   |   |   |   |   |-- times.hpp
+|   |   |   |   |   |   |-- unpack_args.hpp
+|   |   |   |   |   |   |-- vector_c.hpp
+|   |   |   |   |   |   `-- vector.hpp
+|   |   |   |   |   |-- bcc_pre590
+|   |   |   |   |   |   |-- advance_backward.hpp
+|   |   |   |   |   |   |-- advance_forward.hpp
+|   |   |   |   |   |   |-- and.hpp
+|   |   |   |   |   |   |-- apply_fwd.hpp
+|   |   |   |   |   |   |-- apply.hpp
+|   |   |   |   |   |   |-- apply_wrap.hpp
+|   |   |   |   |   |   |-- arg.hpp
+|   |   |   |   |   |   |-- basic_bind.hpp
+|   |   |   |   |   |   |-- bind_fwd.hpp
+|   |   |   |   |   |   |-- bind.hpp
+|   |   |   |   |   |   |-- bitand.hpp
+|   |   |   |   |   |   |-- bitor.hpp
+|   |   |   |   |   |   |-- bitxor.hpp
+|   |   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |   |-- divides.hpp
+|   |   |   |   |   |   |-- equal_to.hpp
+|   |   |   |   |   |   |-- fold_impl.hpp
+|   |   |   |   |   |   |-- full_lambda.hpp
+|   |   |   |   |   |   |-- greater_equal.hpp
+|   |   |   |   |   |   |-- greater.hpp
+|   |   |   |   |   |   |-- inherit.hpp
+|   |   |   |   |   |   |-- iter_fold_if_impl.hpp
+|   |   |   |   |   |   |-- iter_fold_impl.hpp
+|   |   |   |   |   |   |-- lambda_no_ctps.hpp
+|   |   |   |   |   |   |-- less_equal.hpp
+|   |   |   |   |   |   |-- less.hpp
+|   |   |   |   |   |   |-- list_c.hpp
+|   |   |   |   |   |   |-- list.hpp
+|   |   |   |   |   |   |-- map.hpp
+|   |   |   |   |   |   |-- minus.hpp
+|   |   |   |   |   |   |-- modulus.hpp
+|   |   |   |   |   |   |-- not_equal_to.hpp
+|   |   |   |   |   |   |-- or.hpp
+|   |   |   |   |   |   |-- placeholders.hpp
+|   |   |   |   |   |   |-- plus.hpp
+|   |   |   |   |   |   |-- quote.hpp
+|   |   |   |   |   |   |-- reverse_fold_impl.hpp
+|   |   |   |   |   |   |-- reverse_iter_fold_impl.hpp
+|   |   |   |   |   |   |-- set_c.hpp
+|   |   |   |   |   |   |-- set.hpp
+|   |   |   |   |   |   |-- shift_left.hpp
+|   |   |   |   |   |   |-- shift_right.hpp
+|   |   |   |   |   |   |-- template_arity.hpp
+|   |   |   |   |   |   |-- times.hpp
+|   |   |   |   |   |   |-- unpack_args.hpp
+|   |   |   |   |   |   |-- vector_c.hpp
+|   |   |   |   |   |   `-- vector.hpp
+|   |   |   |   |   |-- dmc
+|   |   |   |   |   |   |-- advance_backward.hpp
+|   |   |   |   |   |   |-- advance_forward.hpp
+|   |   |   |   |   |   |-- and.hpp
+|   |   |   |   |   |   |-- apply_fwd.hpp
+|   |   |   |   |   |   |-- apply.hpp
+|   |   |   |   |   |   |-- apply_wrap.hpp
+|   |   |   |   |   |   |-- arg.hpp
+|   |   |   |   |   |   |-- basic_bind.hpp
+|   |   |   |   |   |   |-- bind_fwd.hpp
+|   |   |   |   |   |   |-- bind.hpp
+|   |   |   |   |   |   |-- bitand.hpp
+|   |   |   |   |   |   |-- bitor.hpp
+|   |   |   |   |   |   |-- bitxor.hpp
+|   |   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |   |-- divides.hpp
+|   |   |   |   |   |   |-- equal_to.hpp
+|   |   |   |   |   |   |-- fold_impl.hpp
+|   |   |   |   |   |   |-- full_lambda.hpp
+|   |   |   |   |   |   |-- greater_equal.hpp
+|   |   |   |   |   |   |-- greater.hpp
+|   |   |   |   |   |   |-- inherit.hpp
+|   |   |   |   |   |   |-- iter_fold_if_impl.hpp
+|   |   |   |   |   |   |-- iter_fold_impl.hpp
+|   |   |   |   |   |   |-- lambda_no_ctps.hpp
+|   |   |   |   |   |   |-- less_equal.hpp
+|   |   |   |   |   |   |-- less.hpp
+|   |   |   |   |   |   |-- list_c.hpp
+|   |   |   |   |   |   |-- list.hpp
+|   |   |   |   |   |   |-- map.hpp
+|   |   |   |   |   |   |-- minus.hpp
+|   |   |   |   |   |   |-- modulus.hpp
+|   |   |   |   |   |   |-- not_equal_to.hpp
+|   |   |   |   |   |   |-- or.hpp
+|   |   |   |   |   |   |-- placeholders.hpp
+|   |   |   |   |   |   |-- plus.hpp
+|   |   |   |   |   |   |-- quote.hpp
+|   |   |   |   |   |   |-- reverse_fold_impl.hpp
+|   |   |   |   |   |   |-- reverse_iter_fold_impl.hpp
+|   |   |   |   |   |   |-- set_c.hpp
+|   |   |   |   |   |   |-- set.hpp
+|   |   |   |   |   |   |-- shift_left.hpp
+|   |   |   |   |   |   |-- shift_right.hpp
+|   |   |   |   |   |   |-- template_arity.hpp
+|   |   |   |   |   |   |-- times.hpp
+|   |   |   |   |   |   |-- unpack_args.hpp
+|   |   |   |   |   |   |-- vector_c.hpp
+|   |   |   |   |   |   `-- vector.hpp
+|   |   |   |   |   |-- gcc
+|   |   |   |   |   |   |-- advance_backward.hpp
+|   |   |   |   |   |   |-- advance_forward.hpp
+|   |   |   |   |   |   |-- and.hpp
+|   |   |   |   |   |   |-- apply_fwd.hpp
+|   |   |   |   |   |   |-- apply.hpp
+|   |   |   |   |   |   |-- apply_wrap.hpp
+|   |   |   |   |   |   |-- arg.hpp
+|   |   |   |   |   |   |-- basic_bind.hpp
+|   |   |   |   |   |   |-- bind_fwd.hpp
+|   |   |   |   |   |   |-- bind.hpp
+|   |   |   |   |   |   |-- bitand.hpp
+|   |   |   |   |   |   |-- bitor.hpp
+|   |   |   |   |   |   |-- bitxor.hpp
+|   |   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |   |-- divides.hpp
+|   |   |   |   |   |   |-- equal_to.hpp
+|   |   |   |   |   |   |-- fold_impl.hpp
+|   |   |   |   |   |   |-- full_lambda.hpp
+|   |   |   |   |   |   |-- greater_equal.hpp
+|   |   |   |   |   |   |-- greater.hpp
+|   |   |   |   |   |   |-- inherit.hpp
+|   |   |   |   |   |   |-- iter_fold_if_impl.hpp
+|   |   |   |   |   |   |-- iter_fold_impl.hpp
+|   |   |   |   |   |   |-- lambda_no_ctps.hpp
+|   |   |   |   |   |   |-- less_equal.hpp
+|   |   |   |   |   |   |-- less.hpp
+|   |   |   |   |   |   |-- list_c.hpp
+|   |   |   |   |   |   |-- list.hpp
+|   |   |   |   |   |   |-- map.hpp
+|   |   |   |   |   |   |-- minus.hpp
+|   |   |   |   |   |   |-- modulus.hpp
+|   |   |   |   |   |   |-- not_equal_to.hpp
+|   |   |   |   |   |   |-- or.hpp
+|   |   |   |   |   |   |-- placeholders.hpp
+|   |   |   |   |   |   |-- plus.hpp
+|   |   |   |   |   |   |-- quote.hpp
+|   |   |   |   |   |   |-- reverse_fold_impl.hpp
+|   |   |   |   |   |   |-- reverse_iter_fold_impl.hpp
+|   |   |   |   |   |   |-- set_c.hpp
+|   |   |   |   |   |   |-- set.hpp
+|   |   |   |   |   |   |-- shift_left.hpp
+|   |   |   |   |   |   |-- shift_right.hpp
+|   |   |   |   |   |   |-- template_arity.hpp
+|   |   |   |   |   |   |-- times.hpp
+|   |   |   |   |   |   |-- unpack_args.hpp
+|   |   |   |   |   |   |-- vector_c.hpp
+|   |   |   |   |   |   `-- vector.hpp
+|   |   |   |   |   |-- msvc60
+|   |   |   |   |   |   |-- advance_backward.hpp
+|   |   |   |   |   |   |-- advance_forward.hpp
+|   |   |   |   |   |   |-- and.hpp
+|   |   |   |   |   |   |-- apply_fwd.hpp
+|   |   |   |   |   |   |-- apply.hpp
+|   |   |   |   |   |   |-- apply_wrap.hpp
+|   |   |   |   |   |   |-- arg.hpp
+|   |   |   |   |   |   |-- basic_bind.hpp
+|   |   |   |   |   |   |-- bind_fwd.hpp
+|   |   |   |   |   |   |-- bind.hpp
+|   |   |   |   |   |   |-- bitand.hpp
+|   |   |   |   |   |   |-- bitor.hpp
+|   |   |   |   |   |   |-- bitxor.hpp
+|   |   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |   |-- divides.hpp
+|   |   |   |   |   |   |-- equal_to.hpp
+|   |   |   |   |   |   |-- fold_impl.hpp
+|   |   |   |   |   |   |-- full_lambda.hpp
+|   |   |   |   |   |   |-- greater_equal.hpp
+|   |   |   |   |   |   |-- greater.hpp
+|   |   |   |   |   |   |-- inherit.hpp
+|   |   |   |   |   |   |-- iter_fold_if_impl.hpp
+|   |   |   |   |   |   |-- iter_fold_impl.hpp
+|   |   |   |   |   |   |-- lambda_no_ctps.hpp
+|   |   |   |   |   |   |-- less_equal.hpp
+|   |   |   |   |   |   |-- less.hpp
+|   |   |   |   |   |   |-- list_c.hpp
+|   |   |   |   |   |   |-- list.hpp
+|   |   |   |   |   |   |-- map.hpp
+|   |   |   |   |   |   |-- minus.hpp
+|   |   |   |   |   |   |-- modulus.hpp
+|   |   |   |   |   |   |-- not_equal_to.hpp
+|   |   |   |   |   |   |-- or.hpp
+|   |   |   |   |   |   |-- placeholders.hpp
+|   |   |   |   |   |   |-- plus.hpp
+|   |   |   |   |   |   |-- quote.hpp
+|   |   |   |   |   |   |-- reverse_fold_impl.hpp
+|   |   |   |   |   |   |-- reverse_iter_fold_impl.hpp
+|   |   |   |   |   |   |-- set_c.hpp
+|   |   |   |   |   |   |-- set.hpp
+|   |   |   |   |   |   |-- shift_left.hpp
+|   |   |   |   |   |   |-- shift_right.hpp
+|   |   |   |   |   |   |-- template_arity.hpp
+|   |   |   |   |   |   |-- times.hpp
+|   |   |   |   |   |   |-- unpack_args.hpp
+|   |   |   |   |   |   |-- vector_c.hpp
+|   |   |   |   |   |   `-- vector.hpp
+|   |   |   |   |   |-- msvc70
+|   |   |   |   |   |   |-- advance_backward.hpp
+|   |   |   |   |   |   |-- advance_forward.hpp
+|   |   |   |   |   |   |-- and.hpp
+|   |   |   |   |   |   |-- apply_fwd.hpp
+|   |   |   |   |   |   |-- apply.hpp
+|   |   |   |   |   |   |-- apply_wrap.hpp
+|   |   |   |   |   |   |-- arg.hpp
+|   |   |   |   |   |   |-- basic_bind.hpp
+|   |   |   |   |   |   |-- bind_fwd.hpp
+|   |   |   |   |   |   |-- bind.hpp
+|   |   |   |   |   |   |-- bitand.hpp
+|   |   |   |   |   |   |-- bitor.hpp
+|   |   |   |   |   |   |-- bitxor.hpp
+|   |   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |   |-- divides.hpp
+|   |   |   |   |   |   |-- equal_to.hpp
+|   |   |   |   |   |   |-- fold_impl.hpp
+|   |   |   |   |   |   |-- full_lambda.hpp
+|   |   |   |   |   |   |-- greater_equal.hpp
+|   |   |   |   |   |   |-- greater.hpp
+|   |   |   |   |   |   |-- inherit.hpp
+|   |   |   |   |   |   |-- iter_fold_if_impl.hpp
+|   |   |   |   |   |   |-- iter_fold_impl.hpp
+|   |   |   |   |   |   |-- lambda_no_ctps.hpp
+|   |   |   |   |   |   |-- less_equal.hpp
+|   |   |   |   |   |   |-- less.hpp
+|   |   |   |   |   |   |-- list_c.hpp
+|   |   |   |   |   |   |-- list.hpp
+|   |   |   |   |   |   |-- map.hpp
+|   |   |   |   |   |   |-- minus.hpp
+|   |   |   |   |   |   |-- modulus.hpp
+|   |   |   |   |   |   |-- not_equal_to.hpp
+|   |   |   |   |   |   |-- or.hpp
+|   |   |   |   |   |   |-- placeholders.hpp
+|   |   |   |   |   |   |-- plus.hpp
+|   |   |   |   |   |   |-- quote.hpp
+|   |   |   |   |   |   |-- reverse_fold_impl.hpp
+|   |   |   |   |   |   |-- reverse_iter_fold_impl.hpp
+|   |   |   |   |   |   |-- set_c.hpp
+|   |   |   |   |   |   |-- set.hpp
+|   |   |   |   |   |   |-- shift_left.hpp
+|   |   |   |   |   |   |-- shift_right.hpp
+|   |   |   |   |   |   |-- template_arity.hpp
+|   |   |   |   |   |   |-- times.hpp
+|   |   |   |   |   |   |-- unpack_args.hpp
+|   |   |   |   |   |   |-- vector_c.hpp
+|   |   |   |   |   |   `-- vector.hpp
+|   |   |   |   |   |-- mwcw
+|   |   |   |   |   |   |-- advance_backward.hpp
+|   |   |   |   |   |   |-- advance_forward.hpp
+|   |   |   |   |   |   |-- and.hpp
+|   |   |   |   |   |   |-- apply_fwd.hpp
+|   |   |   |   |   |   |-- apply.hpp
+|   |   |   |   |   |   |-- apply_wrap.hpp
+|   |   |   |   |   |   |-- arg.hpp
+|   |   |   |   |   |   |-- basic_bind.hpp
+|   |   |   |   |   |   |-- bind_fwd.hpp
+|   |   |   |   |   |   |-- bind.hpp
+|   |   |   |   |   |   |-- bitand.hpp
+|   |   |   |   |   |   |-- bitor.hpp
+|   |   |   |   |   |   |-- bitxor.hpp
+|   |   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |   |-- divides.hpp
+|   |   |   |   |   |   |-- equal_to.hpp
+|   |   |   |   |   |   |-- fold_impl.hpp
+|   |   |   |   |   |   |-- full_lambda.hpp
+|   |   |   |   |   |   |-- greater_equal.hpp
+|   |   |   |   |   |   |-- greater.hpp
+|   |   |   |   |   |   |-- inherit.hpp
+|   |   |   |   |   |   |-- iter_fold_if_impl.hpp
+|   |   |   |   |   |   |-- iter_fold_impl.hpp
+|   |   |   |   |   |   |-- lambda_no_ctps.hpp
+|   |   |   |   |   |   |-- less_equal.hpp
+|   |   |   |   |   |   |-- less.hpp
+|   |   |   |   |   |   |-- list_c.hpp
+|   |   |   |   |   |   |-- list.hpp
+|   |   |   |   |   |   |-- map.hpp
+|   |   |   |   |   |   |-- minus.hpp
+|   |   |   |   |   |   |-- modulus.hpp
+|   |   |   |   |   |   |-- not_equal_to.hpp
+|   |   |   |   |   |   |-- or.hpp
+|   |   |   |   |   |   |-- placeholders.hpp
+|   |   |   |   |   |   |-- plus.hpp
+|   |   |   |   |   |   |-- quote.hpp
+|   |   |   |   |   |   |-- reverse_fold_impl.hpp
+|   |   |   |   |   |   |-- reverse_iter_fold_impl.hpp
+|   |   |   |   |   |   |-- set_c.hpp
+|   |   |   |   |   |   |-- set.hpp
+|   |   |   |   |   |   |-- shift_left.hpp
+|   |   |   |   |   |   |-- shift_right.hpp
+|   |   |   |   |   |   |-- template_arity.hpp
+|   |   |   |   |   |   |-- times.hpp
+|   |   |   |   |   |   |-- unpack_args.hpp
+|   |   |   |   |   |   |-- vector_c.hpp
+|   |   |   |   |   |   `-- vector.hpp
+|   |   |   |   |   |-- no_ctps
+|   |   |   |   |   |   |-- advance_backward.hpp
+|   |   |   |   |   |   |-- advance_forward.hpp
+|   |   |   |   |   |   |-- and.hpp
+|   |   |   |   |   |   |-- apply_fwd.hpp
+|   |   |   |   |   |   |-- apply.hpp
+|   |   |   |   |   |   |-- apply_wrap.hpp
+|   |   |   |   |   |   |-- arg.hpp
+|   |   |   |   |   |   |-- basic_bind.hpp
+|   |   |   |   |   |   |-- bind_fwd.hpp
+|   |   |   |   |   |   |-- bind.hpp
+|   |   |   |   |   |   |-- bitand.hpp
+|   |   |   |   |   |   |-- bitor.hpp
+|   |   |   |   |   |   |-- bitxor.hpp
+|   |   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |   |-- divides.hpp
+|   |   |   |   |   |   |-- equal_to.hpp
+|   |   |   |   |   |   |-- fold_impl.hpp
+|   |   |   |   |   |   |-- full_lambda.hpp
+|   |   |   |   |   |   |-- greater_equal.hpp
+|   |   |   |   |   |   |-- greater.hpp
+|   |   |   |   |   |   |-- inherit.hpp
+|   |   |   |   |   |   |-- iter_fold_if_impl.hpp
+|   |   |   |   |   |   |-- iter_fold_impl.hpp
+|   |   |   |   |   |   |-- lambda_no_ctps.hpp
+|   |   |   |   |   |   |-- less_equal.hpp
+|   |   |   |   |   |   |-- less.hpp
+|   |   |   |   |   |   |-- list_c.hpp
+|   |   |   |   |   |   |-- list.hpp
+|   |   |   |   |   |   |-- map.hpp
+|   |   |   |   |   |   |-- minus.hpp
+|   |   |   |   |   |   |-- modulus.hpp
+|   |   |   |   |   |   |-- not_equal_to.hpp
+|   |   |   |   |   |   |-- or.hpp
+|   |   |   |   |   |   |-- placeholders.hpp
+|   |   |   |   |   |   |-- plus.hpp
+|   |   |   |   |   |   |-- quote.hpp
+|   |   |   |   |   |   |-- reverse_fold_impl.hpp
+|   |   |   |   |   |   |-- reverse_iter_fold_impl.hpp
+|   |   |   |   |   |   |-- set_c.hpp
+|   |   |   |   |   |   |-- set.hpp
+|   |   |   |   |   |   |-- shift_left.hpp
+|   |   |   |   |   |   |-- shift_right.hpp
+|   |   |   |   |   |   |-- template_arity.hpp
+|   |   |   |   |   |   |-- times.hpp
+|   |   |   |   |   |   |-- unpack_args.hpp
+|   |   |   |   |   |   |-- vector_c.hpp
+|   |   |   |   |   |   `-- vector.hpp
+|   |   |   |   |   |-- no_ttp
+|   |   |   |   |   |   |-- advance_backward.hpp
+|   |   |   |   |   |   |-- advance_forward.hpp
+|   |   |   |   |   |   |-- and.hpp
+|   |   |   |   |   |   |-- apply_fwd.hpp
+|   |   |   |   |   |   |-- apply.hpp
+|   |   |   |   |   |   |-- apply_wrap.hpp
+|   |   |   |   |   |   |-- arg.hpp
+|   |   |   |   |   |   |-- basic_bind.hpp
+|   |   |   |   |   |   |-- bind_fwd.hpp
+|   |   |   |   |   |   |-- bind.hpp
+|   |   |   |   |   |   |-- bitand.hpp
+|   |   |   |   |   |   |-- bitor.hpp
+|   |   |   |   |   |   |-- bitxor.hpp
+|   |   |   |   |   |   |-- deque.hpp
+|   |   |   |   |   |   |-- divides.hpp
+|   |   |   |   |   |   |-- equal_to.hpp
+|   |   |   |   |   |   |-- fold_impl.hpp
+|   |   |   |   |   |   |-- full_lambda.hpp
+|   |   |   |   |   |   |-- greater_equal.hpp
+|   |   |   |   |   |   |-- greater.hpp
+|   |   |   |   |   |   |-- inherit.hpp
+|   |   |   |   |   |   |-- iter_fold_if_impl.hpp
+|   |   |   |   |   |   |-- iter_fold_impl.hpp
+|   |   |   |   |   |   |-- lambda_no_ctps.hpp
+|   |   |   |   |   |   |-- less_equal.hpp
+|   |   |   |   |   |   |-- less.hpp
+|   |   |   |   |   |   |-- list_c.hpp
+|   |   |   |   |   |   |-- list.hpp
+|   |   |   |   |   |   |-- map.hpp
+|   |   |   |   |   |   |-- minus.hpp
+|   |   |   |   |   |   |-- modulus.hpp
+|   |   |   |   |   |   |-- not_equal_to.hpp
+|   |   |   |   |   |   |-- or.hpp
+|   |   |   |   |   |   |-- placeholders.hpp
+|   |   |   |   |   |   |-- plus.hpp
+|   |   |   |   |   |   |-- quote.hpp
+|   |   |   |   |   |   |-- reverse_fold_impl.hpp
+|   |   |   |   |   |   |-- reverse_iter_fold_impl.hpp
+|   |   |   |   |   |   |-- set_c.hpp
+|   |   |   |   |   |   |-- set.hpp
+|   |   |   |   |   |   |-- shift_left.hpp
+|   |   |   |   |   |   |-- shift_right.hpp
+|   |   |   |   |   |   |-- template_arity.hpp
+|   |   |   |   |   |   |-- times.hpp
+|   |   |   |   |   |   |-- unpack_args.hpp
+|   |   |   |   |   |   |-- vector_c.hpp
+|   |   |   |   |   |   `-- vector.hpp
+|   |   |   |   |   `-- plain
+|   |   |   |   |       |-- advance_backward.hpp
+|   |   |   |   |       |-- advance_forward.hpp
+|   |   |   |   |       |-- and.hpp
+|   |   |   |   |       |-- apply_fwd.hpp
+|   |   |   |   |       |-- apply.hpp
+|   |   |   |   |       |-- apply_wrap.hpp
+|   |   |   |   |       |-- arg.hpp
+|   |   |   |   |       |-- basic_bind.hpp
+|   |   |   |   |       |-- bind_fwd.hpp
+|   |   |   |   |       |-- bind.hpp
+|   |   |   |   |       |-- bitand.hpp
+|   |   |   |   |       |-- bitor.hpp
+|   |   |   |   |       |-- bitxor.hpp
+|   |   |   |   |       |-- deque.hpp
+|   |   |   |   |       |-- divides.hpp
+|   |   |   |   |       |-- equal_to.hpp
+|   |   |   |   |       |-- fold_impl.hpp
+|   |   |   |   |       |-- full_lambda.hpp
+|   |   |   |   |       |-- greater_equal.hpp
+|   |   |   |   |       |-- greater.hpp
+|   |   |   |   |       |-- inherit.hpp
+|   |   |   |   |       |-- iter_fold_if_impl.hpp
+|   |   |   |   |       |-- iter_fold_impl.hpp
+|   |   |   |   |       |-- lambda_no_ctps.hpp
+|   |   |   |   |       |-- less_equal.hpp
+|   |   |   |   |       |-- less.hpp
+|   |   |   |   |       |-- list_c.hpp
+|   |   |   |   |       |-- list.hpp
+|   |   |   |   |       |-- map.hpp
+|   |   |   |   |       |-- minus.hpp
+|   |   |   |   |       |-- modulus.hpp
+|   |   |   |   |       |-- not_equal_to.hpp
+|   |   |   |   |       |-- or.hpp
+|   |   |   |   |       |-- placeholders.hpp
+|   |   |   |   |       |-- plus.hpp
+|   |   |   |   |       |-- quote.hpp
+|   |   |   |   |       |-- reverse_fold_impl.hpp
+|   |   |   |   |       |-- reverse_iter_fold_impl.hpp
+|   |   |   |   |       |-- set_c.hpp
+|   |   |   |   |       |-- set.hpp
+|   |   |   |   |       |-- shift_left.hpp
+|   |   |   |   |       |-- shift_right.hpp
+|   |   |   |   |       |-- template_arity.hpp
+|   |   |   |   |       |-- times.hpp
+|   |   |   |   |       |-- unpack_args.hpp
+|   |   |   |   |       |-- vector_c.hpp
+|   |   |   |   |       `-- vector.hpp
+|   |   |   |   |-- preprocessor
+|   |   |   |   |   |-- add.hpp
+|   |   |   |   |   |-- default_params.hpp
+|   |   |   |   |   |-- def_params_tail.hpp
+|   |   |   |   |   |-- enum.hpp
+|   |   |   |   |   |-- ext_params.hpp
+|   |   |   |   |   |-- filter_params.hpp
+|   |   |   |   |   |-- is_seq.hpp
+|   |   |   |   |   |-- params.hpp
+|   |   |   |   |   |-- partial_spec_params.hpp
+|   |   |   |   |   |-- range.hpp
+|   |   |   |   |   |-- repeat.hpp
+|   |   |   |   |   |-- sub.hpp
+|   |   |   |   |   |-- token_equal.hpp
+|   |   |   |   |   `-- tuple.hpp
+|   |   |   |   |-- adl_barrier.hpp
+|   |   |   |   |-- advance_backward.hpp
+|   |   |   |   |-- advance_forward.hpp
+|   |   |   |   |-- arg_typedef.hpp
+|   |   |   |   |-- arithmetic_op.hpp
+|   |   |   |   |-- arity.hpp
+|   |   |   |   |-- arity_spec.hpp
+|   |   |   |   |-- at_impl.hpp
+|   |   |   |   |-- back_impl.hpp
+|   |   |   |   |-- begin_end_impl.hpp
+|   |   |   |   |-- clear_impl.hpp
+|   |   |   |   |-- common_name_wknd.hpp
+|   |   |   |   |-- comparison_op.hpp
+|   |   |   |   |-- contains_impl.hpp
+|   |   |   |   |-- count_args.hpp
+|   |   |   |   |-- empty_impl.hpp
+|   |   |   |   |-- erase_impl.hpp
+|   |   |   |   |-- erase_key_impl.hpp
+|   |   |   |   |-- find_if_pred.hpp
+|   |   |   |   |-- fold_impl_body.hpp
+|   |   |   |   |-- fold_impl.hpp
+|   |   |   |   |-- front_impl.hpp
+|   |   |   |   |-- full_lambda.hpp
+|   |   |   |   |-- has_apply.hpp
+|   |   |   |   |-- has_begin.hpp
+|   |   |   |   |-- has_key_impl.hpp
+|   |   |   |   |-- has_rebind.hpp
+|   |   |   |   |-- has_size.hpp
+|   |   |   |   |-- has_tag.hpp
+|   |   |   |   |-- has_type.hpp
+|   |   |   |   |-- include_preprocessed.hpp
+|   |   |   |   |-- inserter_algorithm.hpp
+|   |   |   |   |-- insert_impl.hpp
+|   |   |   |   |-- insert_range_impl.hpp
+|   |   |   |   |-- integral_wrapper.hpp
+|   |   |   |   |-- is_msvc_eti_arg.hpp
+|   |   |   |   |-- iter_apply.hpp
+|   |   |   |   |-- iter_fold_if_impl.hpp
+|   |   |   |   |-- iter_fold_impl.hpp
+|   |   |   |   |-- iter_push_front.hpp
+|   |   |   |   |-- joint_iter.hpp
+|   |   |   |   |-- lambda_arity_param.hpp
+|   |   |   |   |-- lambda_no_ctps.hpp
+|   |   |   |   |-- lambda_spec.hpp
+|   |   |   |   |-- lambda_support.hpp
+|   |   |   |   |-- largest_int.hpp
+|   |   |   |   |-- logical_op.hpp
+|   |   |   |   |-- msvc_dtw.hpp
+|   |   |   |   |-- msvc_eti_base.hpp
+|   |   |   |   |-- msvc_is_class.hpp
+|   |   |   |   |-- msvc_never_true.hpp
+|   |   |   |   |-- msvc_type.hpp
+|   |   |   |   |-- na_assert.hpp
+|   |   |   |   |-- na_fwd.hpp
+|   |   |   |   |-- na.hpp
+|   |   |   |   |-- na_spec.hpp
+|   |   |   |   |-- nested_type_wknd.hpp
+|   |   |   |   |-- nttp_decl.hpp
+|   |   |   |   |-- numeric_cast_utils.hpp
+|   |   |   |   |-- numeric_op.hpp
+|   |   |   |   |-- O1_size_impl.hpp
+|   |   |   |   |-- pop_back_impl.hpp
+|   |   |   |   |-- pop_front_impl.hpp
+|   |   |   |   |-- push_back_impl.hpp
+|   |   |   |   |-- push_front_impl.hpp
+|   |   |   |   |-- reverse_fold_impl_body.hpp
+|   |   |   |   |-- reverse_fold_impl.hpp
+|   |   |   |   |-- sequence_wrapper.hpp
+|   |   |   |   |-- size_impl.hpp
+|   |   |   |   |-- static_cast.hpp
+|   |   |   |   |-- template_arity_fwd.hpp
+|   |   |   |   |-- template_arity.hpp
+|   |   |   |   |-- traits_lambda_spec.hpp
+|   |   |   |   |-- type_wrapper.hpp
+|   |   |   |   |-- unwrap.hpp
+|   |   |   |   |-- value_wknd.hpp
+|   |   |   |   `-- yes_no.hpp
+|   |   |   |-- limits
+|   |   |   |   |-- arity.hpp
+|   |   |   |   |-- list.hpp
+|   |   |   |   |-- unrolling.hpp
+|   |   |   |   `-- vector.hpp
+|   |   |   |-- list
+|   |   |   |   |-- aux_
+|   |   |   |   |   |-- preprocessed
+|   |   |   |   |   |   `-- plain
+|   |   |   |   |   |       |-- list10_c.hpp
+|   |   |   |   |   |       |-- list10.hpp
+|   |   |   |   |   |       |-- list20_c.hpp
+|   |   |   |   |   |       |-- list20.hpp
+|   |   |   |   |   |       |-- list30_c.hpp
+|   |   |   |   |   |       |-- list30.hpp
+|   |   |   |   |   |       |-- list40_c.hpp
+|   |   |   |   |   |       |-- list40.hpp
+|   |   |   |   |   |       |-- list50_c.hpp
+|   |   |   |   |   |       `-- list50.hpp
+|   |   |   |   |   |-- begin_end.hpp
+|   |   |   |   |   |-- clear.hpp
+|   |   |   |   |   |-- empty.hpp
+|   |   |   |   |   |-- front.hpp
+|   |   |   |   |   |-- include_preprocessed.hpp
+|   |   |   |   |   |-- item.hpp
+|   |   |   |   |   |-- iterator.hpp
+|   |   |   |   |   |-- numbered_c.hpp
+|   |   |   |   |   |-- numbered.hpp
+|   |   |   |   |   |-- O1_size.hpp
+|   |   |   |   |   |-- pop_front.hpp
+|   |   |   |   |   |-- push_back.hpp
+|   |   |   |   |   |-- push_front.hpp
+|   |   |   |   |   |-- size.hpp
+|   |   |   |   |   `-- tag.hpp
+|   |   |   |   |-- list0_c.hpp
+|   |   |   |   |-- list0.hpp
+|   |   |   |   |-- list10_c.hpp
+|   |   |   |   |-- list10.hpp
+|   |   |   |   |-- list20_c.hpp
+|   |   |   |   |-- list20.hpp
+|   |   |   |   |-- list30_c.hpp
+|   |   |   |   |-- list30.hpp
+|   |   |   |   |-- list40_c.hpp
+|   |   |   |   |-- list40.hpp
+|   |   |   |   |-- list50_c.hpp
+|   |   |   |   `-- list50.hpp
+|   |   |   |-- vector
+|   |   |   |   |-- aux_
+|   |   |   |   |   |-- preprocessed
+|   |   |   |   |   |   |-- no_ctps
+|   |   |   |   |   |   |   |-- vector10_c.hpp
+|   |   |   |   |   |   |   |-- vector10.hpp
+|   |   |   |   |   |   |   |-- vector20_c.hpp
+|   |   |   |   |   |   |   |-- vector20.hpp
+|   |   |   |   |   |   |   |-- vector30_c.hpp
+|   |   |   |   |   |   |   |-- vector30.hpp
+|   |   |   |   |   |   |   |-- vector40_c.hpp
+|   |   |   |   |   |   |   |-- vector40.hpp
+|   |   |   |   |   |   |   |-- vector50_c.hpp
+|   |   |   |   |   |   |   `-- vector50.hpp
+|   |   |   |   |   |   |-- plain
+|   |   |   |   |   |   |   |-- vector10_c.hpp
+|   |   |   |   |   |   |   |-- vector10.hpp
+|   |   |   |   |   |   |   |-- vector20_c.hpp
+|   |   |   |   |   |   |   |-- vector20.hpp
+|   |   |   |   |   |   |   |-- vector30_c.hpp
+|   |   |   |   |   |   |   |-- vector30.hpp
+|   |   |   |   |   |   |   |-- vector40_c.hpp
+|   |   |   |   |   |   |   |-- vector40.hpp
+|   |   |   |   |   |   |   |-- vector50_c.hpp
+|   |   |   |   |   |   |   `-- vector50.hpp
+|   |   |   |   |   |   `-- typeof_based
+|   |   |   |   |   |       |-- vector10_c.hpp
+|   |   |   |   |   |       |-- vector10.hpp
+|   |   |   |   |   |       |-- vector20_c.hpp
+|   |   |   |   |   |       |-- vector20.hpp
+|   |   |   |   |   |       |-- vector30_c.hpp
+|   |   |   |   |   |       |-- vector30.hpp
+|   |   |   |   |   |       |-- vector40_c.hpp
+|   |   |   |   |   |       |-- vector40.hpp
+|   |   |   |   |   |       |-- vector50_c.hpp
+|   |   |   |   |   |       `-- vector50.hpp
+|   |   |   |   |   |-- at.hpp
+|   |   |   |   |   |-- back.hpp
+|   |   |   |   |   |-- begin_end.hpp
+|   |   |   |   |   |-- clear.hpp
+|   |   |   |   |   |-- empty.hpp
+|   |   |   |   |   |-- front.hpp
+|   |   |   |   |   |-- include_preprocessed.hpp
+|   |   |   |   |   |-- item.hpp
+|   |   |   |   |   |-- iterator.hpp
+|   |   |   |   |   |-- numbered_c.hpp
+|   |   |   |   |   |-- numbered.hpp
+|   |   |   |   |   |-- O1_size.hpp
+|   |   |   |   |   |-- pop_back.hpp
+|   |   |   |   |   |-- pop_front.hpp
+|   |   |   |   |   |-- push_back.hpp
+|   |   |   |   |   |-- push_front.hpp
+|   |   |   |   |   |-- size.hpp
+|   |   |   |   |   |-- tag.hpp
+|   |   |   |   |   `-- vector0.hpp
+|   |   |   |   |-- vector0_c.hpp
+|   |   |   |   |-- vector0.hpp
+|   |   |   |   |-- vector10_c.hpp
+|   |   |   |   |-- vector10.hpp
+|   |   |   |   |-- vector20_c.hpp
+|   |   |   |   |-- vector20.hpp
+|   |   |   |   |-- vector30_c.hpp
+|   |   |   |   |-- vector30.hpp
+|   |   |   |   |-- vector40_c.hpp
+|   |   |   |   |-- vector40.hpp
+|   |   |   |   |-- vector50_c.hpp
+|   |   |   |   `-- vector50.hpp
+|   |   |   |-- advance_fwd.hpp
+|   |   |   |-- advance.hpp
+|   |   |   |-- always.hpp
+|   |   |   |-- and.hpp
+|   |   |   |-- apply_fwd.hpp
+|   |   |   |-- apply.hpp
+|   |   |   |-- apply_wrap.hpp
+|   |   |   |-- arg_fwd.hpp
+|   |   |   |-- arg.hpp
+|   |   |   |-- assert.hpp
+|   |   |   |-- at_fwd.hpp
+|   |   |   |-- at.hpp
+|   |   |   |-- back_fwd.hpp
+|   |   |   |-- back.hpp
+|   |   |   |-- back_inserter.hpp
+|   |   |   |-- begin_end_fwd.hpp
+|   |   |   |-- begin_end.hpp
+|   |   |   |-- begin.hpp
+|   |   |   |-- bind_fwd.hpp
+|   |   |   |-- bind.hpp
+|   |   |   |-- bitand.hpp
+|   |   |   |-- bitxor.hpp
+|   |   |   |-- bool_fwd.hpp
+|   |   |   |-- bool.hpp
+|   |   |   |-- clear_fwd.hpp
+|   |   |   |-- clear.hpp
+|   |   |   |-- comparison.hpp
+|   |   |   |-- contains_fwd.hpp
+|   |   |   |-- contains.hpp
+|   |   |   |-- copy.hpp
+|   |   |   |-- deref.hpp
+|   |   |   |-- distance_fwd.hpp
+|   |   |   |-- distance.hpp
+|   |   |   |-- empty_base.hpp
+|   |   |   |-- empty_fwd.hpp
+|   |   |   |-- empty.hpp
+|   |   |   |-- end.hpp
+|   |   |   |-- equal_to.hpp
+|   |   |   |-- erase_fwd.hpp
+|   |   |   |-- erase.hpp
+|   |   |   |-- erase_key_fwd.hpp
+|   |   |   |-- erase_key.hpp
+|   |   |   |-- eval_if.hpp
+|   |   |   |-- find.hpp
+|   |   |   |-- find_if.hpp
+|   |   |   |-- fold.hpp
+|   |   |   |-- for_each.hpp
+|   |   |   |-- front_fwd.hpp
+|   |   |   |-- front.hpp
+|   |   |   |-- front_inserter.hpp
+|   |   |   |-- greater_equal.hpp
+|   |   |   |-- greater.hpp
+|   |   |   |-- has_key_fwd.hpp
+|   |   |   |-- has_key.hpp
+|   |   |   |-- has_xxx.hpp
+|   |   |   |-- identity.hpp
+|   |   |   |-- if.hpp
+|   |   |   |-- inherit.hpp
+|   |   |   |-- inserter.hpp
+|   |   |   |-- insert_fwd.hpp
+|   |   |   |-- insert.hpp
+|   |   |   |-- insert_range_fwd.hpp
+|   |   |   |-- insert_range.hpp
+|   |   |   |-- integral_c_fwd.hpp
+|   |   |   |-- integral_c.hpp
+|   |   |   |-- integral_c_tag.hpp
+|   |   |   |-- int_fwd.hpp
+|   |   |   |-- int.hpp
+|   |   |   |-- is_placeholder.hpp
+|   |   |   |-- is_sequence.hpp
+|   |   |   |-- iterator_category.hpp
+|   |   |   |-- iterator_range.hpp
+|   |   |   |-- iterator_tags.hpp
+|   |   |   |-- iter_fold.hpp
+|   |   |   |-- iter_fold_if.hpp
+|   |   |   |-- joint_view.hpp
+|   |   |   |-- lambda_fwd.hpp
+|   |   |   |-- lambda.hpp
+|   |   |   |-- less_equal.hpp
+|   |   |   |-- less.hpp
+|   |   |   |-- list.hpp
+|   |   |   |-- logical.hpp
+|   |   |   |-- long_fwd.hpp
+|   |   |   |-- long.hpp
+|   |   |   |-- min_max.hpp
+|   |   |   |-- minus.hpp
+|   |   |   |-- multiplies.hpp
+|   |   |   |-- negate.hpp
+|   |   |   |-- next.hpp
+|   |   |   |-- next_prior.hpp
+|   |   |   |-- not_equal_to.hpp
+|   |   |   |-- not.hpp
+|   |   |   |-- numeric_cast.hpp
+|   |   |   |-- O1_size_fwd.hpp
+|   |   |   |-- O1_size.hpp
+|   |   |   |-- or.hpp
+|   |   |   |-- pair.hpp
+|   |   |   |-- pair_view.hpp
+|   |   |   |-- placeholders.hpp
+|   |   |   |-- plus.hpp
+|   |   |   |-- pop_back_fwd.hpp
+|   |   |   |-- pop_back.hpp
+|   |   |   |-- pop_front_fwd.hpp
+|   |   |   |-- pop_front.hpp
+|   |   |   |-- prior.hpp
+|   |   |   |-- protect.hpp
+|   |   |   |-- push_back_fwd.hpp
+|   |   |   |-- push_back.hpp
+|   |   |   |-- push_front_fwd.hpp
+|   |   |   |-- push_front.hpp
+|   |   |   |-- quote.hpp
+|   |   |   |-- remove.hpp
+|   |   |   |-- remove_if.hpp
+|   |   |   |-- reverse_fold.hpp
+|   |   |   |-- reverse.hpp
+|   |   |   |-- same_as.hpp
+|   |   |   |-- sequence_tag_fwd.hpp
+|   |   |   |-- sequence_tag.hpp
+|   |   |   |-- size_fwd.hpp
+|   |   |   |-- size.hpp
+|   |   |   |-- size_t_fwd.hpp
+|   |   |   |-- size_t.hpp
+|   |   |   |-- tag.hpp
+|   |   |   |-- times.hpp
+|   |   |   |-- transform.hpp
+|   |   |   |-- vector.hpp
+|   |   |   |-- void_fwd.hpp
+|   |   |   `-- void.hpp
+|   |   |-- numeric
+|   |   |   `-- conversion
+|   |   |       |-- detail
+|   |   |       |   |-- preprocessed
+|   |   |       |   |   |-- numeric_cast_traits_common.hpp
+|   |   |       |   |   `-- numeric_cast_traits_long_long.hpp
+|   |   |       |   |-- bounds.hpp
+|   |   |       |   |-- conversion_traits.hpp
+|   |   |       |   |-- converter.hpp
+|   |   |       |   |-- int_float_mixture.hpp
+|   |   |       |   |-- is_subranged.hpp
+|   |   |       |   |-- meta.hpp
+|   |   |       |   |-- numeric_cast_traits.hpp
+|   |   |       |   |-- old_numeric_cast.hpp
+|   |   |       |   |-- sign_mixture.hpp
+|   |   |       |   `-- udt_builtin_mixture.hpp
+|   |   |       |-- bounds.hpp
+|   |   |       |-- cast.hpp
+|   |   |       |-- conversion_traits.hpp
+|   |   |       |-- converter.hpp
+|   |   |       |-- converter_policies.hpp
+|   |   |       |-- int_float_mixture_enum.hpp
+|   |   |       |-- numeric_cast_traits.hpp
+|   |   |       |-- sign_mixture_enum.hpp
+|   |   |       `-- udt_builtin_mixture_enum.hpp
+|   |   |-- optional
+|   |   |   |-- detail
+|   |   |   |   |-- experimental_traits.hpp
+|   |   |   |   |-- old_optional_implementation.hpp
+|   |   |   |   |-- optional_aligned_storage.hpp
+|   |   |   |   |-- optional_config.hpp
+|   |   |   |   |-- optional_factory_support.hpp
+|   |   |   |   |-- optional_reference_spec.hpp
+|   |   |   |   |-- optional_relops.hpp
+|   |   |   |   |-- optional_swap.hpp
+|   |   |   |   `-- optional_trivially_copyable_base.hpp
+|   |   |   |-- bad_optional_access.hpp
+|   |   |   |-- optional_fwd.hpp
+|   |   |   |-- optional.hpp
+|   |   |   `-- optional_io.hpp
+|   |   |-- pending
+|   |   |   `-- iterator_tests.hpp
+|   |   |-- predef
+|   |   |   |-- architecture
+|   |   |   |   |-- x86
+|   |   |   |   |   |-- 32.h
+|   |   |   |   |   `-- 64.h
+|   |   |   |   |-- alpha.h
+|   |   |   |   |-- arm.h
+|   |   |   |   |-- blackfin.h
+|   |   |   |   |-- convex.h
+|   |   |   |   |-- ia64.h
+|   |   |   |   |-- m68k.h
+|   |   |   |   |-- mips.h
+|   |   |   |   |-- parisc.h
+|   |   |   |   |-- ppc.h
+|   |   |   |   |-- ptx.h
+|   |   |   |   |-- pyramid.h
+|   |   |   |   |-- rs6k.h
+|   |   |   |   |-- sparc.h
+|   |   |   |   |-- superh.h
+|   |   |   |   |-- sys370.h
+|   |   |   |   |-- sys390.h
+|   |   |   |   |-- x86.h
+|   |   |   |   `-- z.h
+|   |   |   |-- compiler
+|   |   |   |   |-- borland.h
+|   |   |   |   |-- clang.h
+|   |   |   |   |-- comeau.h
+|   |   |   |   |-- compaq.h
+|   |   |   |   |-- diab.h
+|   |   |   |   |-- digitalmars.h
+|   |   |   |   |-- dignus.h
+|   |   |   |   |-- edg.h
+|   |   |   |   |-- ekopath.h
+|   |   |   |   |-- gcc.h
+|   |   |   |   |-- gcc_xml.h
+|   |   |   |   |-- greenhills.h
+|   |   |   |   |-- hp_acc.h
+|   |   |   |   |-- iar.h
+|   |   |   |   |-- ibm.h
+|   |   |   |   |-- intel.h
+|   |   |   |   |-- kai.h
+|   |   |   |   |-- llvm.h
+|   |   |   |   |-- metaware.h
+|   |   |   |   |-- metrowerks.h
+|   |   |   |   |-- microtec.h
+|   |   |   |   |-- mpw.h
+|   |   |   |   |-- nvcc.h
+|   |   |   |   |-- palm.h
+|   |   |   |   |-- pgi.h
+|   |   |   |   |-- sgi_mipspro.h
+|   |   |   |   |-- sunpro.h
+|   |   |   |   |-- tendra.h
+|   |   |   |   |-- visualc.h
+|   |   |   |   `-- watcom.h
+|   |   |   |-- detail
+|   |   |   |   |-- _cassert.h
+|   |   |   |   |-- comp_detected.h
+|   |   |   |   |-- _exception.h
+|   |   |   |   |-- os_detected.h
+|   |   |   |   |-- platform_detected.h
+|   |   |   |   `-- test.h
+|   |   |   |-- hardware
+|   |   |   |   |-- simd
+|   |   |   |   |   |-- arm
+|   |   |   |   |   |   `-- versions.h
+|   |   |   |   |   |-- ppc
+|   |   |   |   |   |   `-- versions.h
+|   |   |   |   |   |-- x86
+|   |   |   |   |   |   `-- versions.h
+|   |   |   |   |   |-- x86_amd
+|   |   |   |   |   |   `-- versions.h
+|   |   |   |   |   |-- arm.h
+|   |   |   |   |   |-- ppc.h
+|   |   |   |   |   |-- x86_amd.h
+|   |   |   |   |   `-- x86.h
+|   |   |   |   `-- simd.h
+|   |   |   |-- language
+|   |   |   |   |-- cuda.h
+|   |   |   |   |-- objc.h
+|   |   |   |   |-- stdc.h
+|   |   |   |   `-- stdcpp.h
+|   |   |   |-- library
+|   |   |   |   |-- c
+|   |   |   |   |   |-- cloudabi.h
+|   |   |   |   |   |-- gnu.h
+|   |   |   |   |   |-- _prefix.h
+|   |   |   |   |   |-- uc.h
+|   |   |   |   |   |-- vms.h
+|   |   |   |   |   `-- zos.h
+|   |   |   |   |-- std
+|   |   |   |   |   |-- cxx.h
+|   |   |   |   |   |-- dinkumware.h
+|   |   |   |   |   |-- libcomo.h
+|   |   |   |   |   |-- modena.h
+|   |   |   |   |   |-- msl.h
+|   |   |   |   |   |-- _prefix.h
+|   |   |   |   |   |-- roguewave.h
+|   |   |   |   |   |-- sgi.h
+|   |   |   |   |   |-- stdcpp3.h
+|   |   |   |   |   |-- stlport.h
+|   |   |   |   |   `-- vacpp.h
+|   |   |   |   |-- c.h
+|   |   |   |   `-- std.h
+|   |   |   |-- os
+|   |   |   |   |-- bsd
+|   |   |   |   |   |-- bsdi.h
+|   |   |   |   |   |-- dragonfly.h
+|   |   |   |   |   |-- free.h
+|   |   |   |   |   |-- net.h
+|   |   |   |   |   `-- open.h
+|   |   |   |   |-- aix.h
+|   |   |   |   |-- amigaos.h
+|   |   |   |   |-- android.h
+|   |   |   |   |-- beos.h
+|   |   |   |   |-- bsd.h
+|   |   |   |   |-- cygwin.h
+|   |   |   |   |-- haiku.h
+|   |   |   |   |-- hpux.h
+|   |   |   |   |-- ios.h
+|   |   |   |   |-- irix.h
+|   |   |   |   |-- linux.h
+|   |   |   |   |-- macos.h
+|   |   |   |   |-- os400.h
+|   |   |   |   |-- qnxnto.h
+|   |   |   |   |-- solaris.h
+|   |   |   |   |-- unix.h
+|   |   |   |   |-- vms.h
+|   |   |   |   `-- windows.h
+|   |   |   |-- other
+|   |   |   |   `-- endian.h
+|   |   |   |-- platform
+|   |   |   |   |-- android.h
+|   |   |   |   |-- cloudabi.h
+|   |   |   |   |-- ios.h
+|   |   |   |   |-- mingw32.h
+|   |   |   |   |-- mingw64.h
+|   |   |   |   |-- mingw.h
+|   |   |   |   |-- windows_desktop.h
+|   |   |   |   |-- windows_phone.h
+|   |   |   |   |-- windows_runtime.h
+|   |   |   |   |-- windows_server.h
+|   |   |   |   |-- windows_store.h
+|   |   |   |   |-- windows_system.h
+|   |   |   |   `-- windows_uwp.h
+|   |   |   |-- architecture.h
+|   |   |   |-- compiler.h
+|   |   |   |-- hardware.h
+|   |   |   |-- language.h
+|   |   |   |-- library.h
+|   |   |   |-- make.h
+|   |   |   |-- os.h
+|   |   |   |-- other.h
+|   |   |   |-- platform.h
+|   |   |   |-- version.h
+|   |   |   `-- version_number.h
+|   |   |-- preprocessor
+|   |   |   |-- arithmetic
+|   |   |   |   |-- detail
+|   |   |   |   |   `-- div_base.hpp
+|   |   |   |   |-- add.hpp
+|   |   |   |   |-- dec.hpp
+|   |   |   |   |-- inc.hpp
+|   |   |   |   |-- mod.hpp
+|   |   |   |   `-- sub.hpp
+|   |   |   |-- array
+|   |   |   |   |-- data.hpp
+|   |   |   |   |-- elem.hpp
+|   |   |   |   `-- size.hpp
+|   |   |   |-- comparison
+|   |   |   |   |-- equal.hpp
+|   |   |   |   |-- less_equal.hpp
+|   |   |   |   |-- less.hpp
+|   |   |   |   `-- not_equal.hpp
+|   |   |   |-- config
+|   |   |   |   `-- config.hpp
+|   |   |   |-- control
+|   |   |   |   |-- detail
+|   |   |   |   |   |-- dmc
+|   |   |   |   |   |   `-- while.hpp
+|   |   |   |   |   |-- edg
+|   |   |   |   |   |   `-- while.hpp
+|   |   |   |   |   |-- msvc
+|   |   |   |   |   |   `-- while.hpp
+|   |   |   |   |   `-- while.hpp
+|   |   |   |   |-- deduce_d.hpp
+|   |   |   |   |-- expr_if.hpp
+|   |   |   |   |-- expr_iif.hpp
+|   |   |   |   |-- if.hpp
+|   |   |   |   |-- iif.hpp
+|   |   |   |   `-- while.hpp
+|   |   |   |-- debug
+|   |   |   |   `-- error.hpp
+|   |   |   |-- detail
+|   |   |   |   |-- dmc
+|   |   |   |   |   `-- auto_rec.hpp
+|   |   |   |   |-- auto_rec.hpp
+|   |   |   |   |-- check.hpp
+|   |   |   |   |-- is_binary.hpp
+|   |   |   |   |-- is_unary.hpp
+|   |   |   |   `-- split.hpp
+|   |   |   |-- facilities
+|   |   |   |   |-- detail
+|   |   |   |   |   `-- is_empty.hpp
+|   |   |   |   |-- empty.hpp
+|   |   |   |   |-- expand.hpp
+|   |   |   |   |-- identity.hpp
+|   |   |   |   |-- intercept.hpp
+|   |   |   |   |-- is_1.hpp
+|   |   |   |   |-- is_empty.hpp
+|   |   |   |   |-- is_empty_variadic.hpp
+|   |   |   |   `-- overload.hpp
+|   |   |   |-- iteration
+|   |   |   |   |-- detail
+|   |   |   |   |   |-- bounds
+|   |   |   |   |   |   |-- lower1.hpp
+|   |   |   |   |   |   |-- lower2.hpp
+|   |   |   |   |   |   |-- lower3.hpp
+|   |   |   |   |   |   |-- lower4.hpp
+|   |   |   |   |   |   |-- lower5.hpp
+|   |   |   |   |   |   |-- upper1.hpp
+|   |   |   |   |   |   |-- upper2.hpp
+|   |   |   |   |   |   |-- upper3.hpp
+|   |   |   |   |   |   |-- upper4.hpp
+|   |   |   |   |   |   `-- upper5.hpp
+|   |   |   |   |   |-- iter
+|   |   |   |   |   |   |-- forward1.hpp
+|   |   |   |   |   |   |-- forward2.hpp
+|   |   |   |   |   |   |-- forward3.hpp
+|   |   |   |   |   |   |-- forward4.hpp
+|   |   |   |   |   |   |-- forward5.hpp
+|   |   |   |   |   |   |-- reverse1.hpp
+|   |   |   |   |   |   |-- reverse2.hpp
+|   |   |   |   |   |   |-- reverse3.hpp
+|   |   |   |   |   |   |-- reverse4.hpp
+|   |   |   |   |   |   `-- reverse5.hpp
+|   |   |   |   |   |-- finish.hpp
+|   |   |   |   |   |-- local.hpp
+|   |   |   |   |   |-- rlocal.hpp
+|   |   |   |   |   |-- self.hpp
+|   |   |   |   |   `-- start.hpp
+|   |   |   |   |-- iterate.hpp
+|   |   |   |   |-- local.hpp
+|   |   |   |   `-- self.hpp
+|   |   |   |-- list
+|   |   |   |   |-- detail
+|   |   |   |   |   |-- dmc
+|   |   |   |   |   |   `-- fold_left.hpp
+|   |   |   |   |   |-- edg
+|   |   |   |   |   |   |-- fold_left.hpp
+|   |   |   |   |   |   `-- fold_right.hpp
+|   |   |   |   |   |-- fold_left.hpp
+|   |   |   |   |   `-- fold_right.hpp
+|   |   |   |   |-- adt.hpp
+|   |   |   |   |-- fold_left.hpp
+|   |   |   |   |-- fold_right.hpp
+|   |   |   |   |-- for_each_i.hpp
+|   |   |   |   `-- reverse.hpp
+|   |   |   |-- logical
+|   |   |   |   |-- and.hpp
+|   |   |   |   |-- bitand.hpp
+|   |   |   |   |-- bitor.hpp
+|   |   |   |   |-- bool.hpp
+|   |   |   |   |-- compl.hpp
+|   |   |   |   |-- not.hpp
+|   |   |   |   `-- or.hpp
+|   |   |   |-- punctuation
+|   |   |   |   |-- detail
+|   |   |   |   |   `-- is_begin_parens.hpp
+|   |   |   |   |-- comma.hpp
+|   |   |   |   |-- comma_if.hpp
+|   |   |   |   |-- is_begin_parens.hpp
+|   |   |   |   `-- paren.hpp
+|   |   |   |-- repetition
+|   |   |   |   |-- detail
+|   |   |   |   |   |-- dmc
+|   |   |   |   |   |   `-- for.hpp
+|   |   |   |   |   |-- edg
+|   |   |   |   |   |   `-- for.hpp
+|   |   |   |   |   |-- msvc
+|   |   |   |   |   |   `-- for.hpp
+|   |   |   |   |   `-- for.hpp
+|   |   |   |   |-- enum_binary_params.hpp
+|   |   |   |   |-- enum.hpp
+|   |   |   |   |-- enum_params.hpp
+|   |   |   |   |-- enum_params_with_a_default.hpp
+|   |   |   |   |-- enum_shifted.hpp
+|   |   |   |   |-- enum_shifted_params.hpp
+|   |   |   |   |-- enum_trailing.hpp
+|   |   |   |   |-- enum_trailing_params.hpp
+|   |   |   |   |-- for.hpp
+|   |   |   |   |-- repeat_from_to.hpp
+|   |   |   |   `-- repeat.hpp
+|   |   |   |-- seq
+|   |   |   |   |-- detail
+|   |   |   |   |   |-- is_empty.hpp
+|   |   |   |   |   `-- split.hpp
+|   |   |   |   |-- cat.hpp
+|   |   |   |   |-- elem.hpp
+|   |   |   |   |-- enum.hpp
+|   |   |   |   |-- first_n.hpp
+|   |   |   |   |-- fold_left.hpp
+|   |   |   |   |-- for_each.hpp
+|   |   |   |   |-- for_each_i.hpp
+|   |   |   |   |-- push_front.hpp
+|   |   |   |   |-- rest_n.hpp
+|   |   |   |   |-- seq.hpp
+|   |   |   |   |-- size.hpp
+|   |   |   |   |-- subseq.hpp
+|   |   |   |   |-- to_tuple.hpp
+|   |   |   |   `-- transform.hpp
+|   |   |   |-- slot
+|   |   |   |   |-- detail
+|   |   |   |   |   |-- counter.hpp
+|   |   |   |   |   |-- def.hpp
+|   |   |   |   |   |-- shared.hpp
+|   |   |   |   |   |-- slot1.hpp
+|   |   |   |   |   |-- slot2.hpp
+|   |   |   |   |   |-- slot3.hpp
+|   |   |   |   |   |-- slot4.hpp
+|   |   |   |   |   `-- slot5.hpp
+|   |   |   |   `-- slot.hpp
+|   |   |   |-- tuple
+|   |   |   |   |-- detail
+|   |   |   |   |   `-- is_single_return.hpp
+|   |   |   |   |-- eat.hpp
+|   |   |   |   |-- elem.hpp
+|   |   |   |   |-- rem.hpp
+|   |   |   |   |-- size.hpp
+|   |   |   |   |-- to_list.hpp
+|   |   |   |   `-- to_seq.hpp
+|   |   |   |-- variadic
+|   |   |   |   |-- elem.hpp
+|   |   |   |   |-- size.hpp
+|   |   |   |   `-- to_seq.hpp
+|   |   |   |-- cat.hpp
+|   |   |   |-- comma_if.hpp
+|   |   |   |-- dec.hpp
+|   |   |   |-- empty.hpp
+|   |   |   |-- enum.hpp
+|   |   |   |-- enum_params.hpp
+|   |   |   |-- enum_params_with_a_default.hpp
+|   |   |   |-- enum_shifted_params.hpp
+|   |   |   |-- expr_if.hpp
+|   |   |   |-- identity.hpp
+|   |   |   |-- if.hpp
+|   |   |   |-- inc.hpp
+|   |   |   |-- iterate.hpp
+|   |   |   |-- repeat_from_to.hpp
+|   |   |   |-- repeat.hpp
+|   |   |   `-- stringize.hpp
+|   |   |-- program_options
+|   |   |   |-- detail
+|   |   |   |   |-- cmdline.hpp
+|   |   |   |   |-- config_file.hpp
+|   |   |   |   |-- convert.hpp
+|   |   |   |   |-- parsers.hpp
+|   |   |   |   |-- utf8_codecvt_facet.hpp
+|   |   |   |   `-- value_semantic.hpp
+|   |   |   |-- cmdline.hpp
+|   |   |   |-- config.hpp
+|   |   |   |-- environment_iterator.hpp
+|   |   |   |-- eof_iterator.hpp
+|   |   |   |-- errors.hpp
+|   |   |   |-- option.hpp
+|   |   |   |-- options_description.hpp
+|   |   |   |-- parsers.hpp
+|   |   |   |-- positional_options.hpp
+|   |   |   |-- value_semantic.hpp
+|   |   |   |-- variables_map.hpp
+|   |   |   `-- version.hpp
+|   |   |-- range
+|   |   |   |-- algorithm
+|   |   |   |   `-- equal.hpp
+|   |   |   |-- detail
+|   |   |   |   |-- as_literal.hpp
+|   |   |   |   |-- begin.hpp
+|   |   |   |   |-- common.hpp
+|   |   |   |   |-- detail_str.hpp
+|   |   |   |   |-- end.hpp
+|   |   |   |   |-- extract_optional_type.hpp
+|   |   |   |   |-- has_member_size.hpp
+|   |   |   |   |-- implementation_help.hpp
+|   |   |   |   |-- misc_concept.hpp
+|   |   |   |   |-- msvc_has_iterator_workaround.hpp
+|   |   |   |   |-- remove_extent.hpp
+|   |   |   |   |-- safe_bool.hpp
+|   |   |   |   |-- sfinae.hpp
+|   |   |   |   |-- size_type.hpp
+|   |   |   |   |-- str_types.hpp
+|   |   |   |   `-- value_type.hpp
+|   |   |   |-- as_literal.hpp
+|   |   |   |-- begin.hpp
+|   |   |   |-- concepts.hpp
+|   |   |   |-- config.hpp
+|   |   |   |-- const_iterator.hpp
+|   |   |   |-- difference_type.hpp
+|   |   |   |-- distance.hpp
+|   |   |   |-- empty.hpp
+|   |   |   |-- end.hpp
+|   |   |   |-- functions.hpp
+|   |   |   |-- has_range_iterator.hpp
+|   |   |   |-- iterator.hpp
+|   |   |   |-- iterator_range_core.hpp
+|   |   |   |-- iterator_range.hpp
+|   |   |   |-- iterator_range_io.hpp
+|   |   |   |-- mutable_iterator.hpp
+|   |   |   |-- range_fwd.hpp
+|   |   |   |-- rbegin.hpp
+|   |   |   |-- rend.hpp
+|   |   |   |-- reverse_iterator.hpp
+|   |   |   |-- size.hpp
+|   |   |   |-- size_type.hpp
+|   |   |   `-- value_type.hpp
+|   |   |-- ratio
+|   |   |   |-- detail
+|   |   |   |   |-- mpl
+|   |   |   |   |   |-- abs.hpp
+|   |   |   |   |   |-- gcd.hpp
+|   |   |   |   |   |-- lcm.hpp
+|   |   |   |   |   `-- sign.hpp
+|   |   |   |   `-- overflow_helpers.hpp
+|   |   |   |-- mpl
+|   |   |   |   `-- rational_c_tag.hpp
+|   |   |   |-- config.hpp
+|   |   |   |-- ratio_fwd.hpp
+|   |   |   `-- ratio.hpp
+|   |   |-- smart_ptr
+|   |   |   |-- detail
+|   |   |   |   |-- atomic_count_gcc.hpp
+|   |   |   |   |-- atomic_count_gcc_x86.hpp
+|   |   |   |   |-- atomic_count.hpp
+|   |   |   |   |-- atomic_count_nt.hpp
+|   |   |   |   |-- atomic_count_pt.hpp
+|   |   |   |   |-- atomic_count_spin.hpp
+|   |   |   |   |-- atomic_count_std_atomic.hpp
+|   |   |   |   |-- atomic_count_sync.hpp
+|   |   |   |   |-- atomic_count_win32.hpp
+|   |   |   |   |-- lightweight_mutex.hpp
+|   |   |   |   |-- local_counted_base.hpp
+|   |   |   |   |-- local_sp_deleter.hpp
+|   |   |   |   |-- lwm_nop.hpp
+|   |   |   |   |-- lwm_pthreads.hpp
+|   |   |   |   |-- lwm_win32_cs.hpp
+|   |   |   |   |-- operator_bool.hpp
+|   |   |   |   |-- quick_allocator.hpp
+|   |   |   |   |-- shared_count.hpp
+|   |   |   |   |-- sp_convertible.hpp
+|   |   |   |   |-- sp_counted_base_acc_ia64.hpp
+|   |   |   |   |-- sp_counted_base_aix.hpp
+|   |   |   |   |-- sp_counted_base_clang.hpp
+|   |   |   |   |-- sp_counted_base_cw_ppc.hpp
+|   |   |   |   |-- sp_counted_base_gcc_ia64.hpp
+|   |   |   |   |-- sp_counted_base_gcc_mips.hpp
+|   |   |   |   |-- sp_counted_base_gcc_ppc.hpp
+|   |   |   |   |-- sp_counted_base_gcc_sparc.hpp
+|   |   |   |   |-- sp_counted_base_gcc_x86.hpp
+|   |   |   |   |-- sp_counted_base.hpp
+|   |   |   |   |-- sp_counted_base_nt.hpp
+|   |   |   |   |-- sp_counted_base_pt.hpp
+|   |   |   |   |-- sp_counted_base_snc_ps3.hpp
+|   |   |   |   |-- sp_counted_base_spin.hpp
+|   |   |   |   |-- sp_counted_base_std_atomic.hpp
+|   |   |   |   |-- sp_counted_base_sync.hpp
+|   |   |   |   |-- sp_counted_base_vacpp_ppc.hpp
+|   |   |   |   |-- sp_counted_base_w32.hpp
+|   |   |   |   |-- sp_counted_impl.hpp
+|   |   |   |   |-- sp_disable_deprecated.hpp
+|   |   |   |   |-- sp_forward.hpp
+|   |   |   |   |-- sp_has_sync.hpp
+|   |   |   |   |-- spinlock_gcc_arm.hpp
+|   |   |   |   |-- spinlock.hpp
+|   |   |   |   |-- spinlock_nt.hpp
+|   |   |   |   |-- spinlock_pool.hpp
+|   |   |   |   |-- spinlock_pt.hpp
+|   |   |   |   |-- spinlock_std_atomic.hpp
+|   |   |   |   |-- spinlock_sync.hpp
+|   |   |   |   |-- spinlock_w32.hpp
+|   |   |   |   |-- sp_interlocked.hpp
+|   |   |   |   |-- sp_noexcept.hpp
+|   |   |   |   |-- sp_nullptr_t.hpp
+|   |   |   |   `-- yield_k.hpp
+|   |   |   |-- allocate_shared_array.hpp
+|   |   |   |-- bad_weak_ptr.hpp
+|   |   |   |-- intrusive_ptr.hpp
+|   |   |   |-- intrusive_ref_counter.hpp
+|   |   |   |-- make_shared_array.hpp
+|   |   |   |-- make_shared.hpp
+|   |   |   |-- make_shared_object.hpp
+|   |   |   |-- scoped_array.hpp
+|   |   |   |-- scoped_ptr.hpp
+|   |   |   `-- shared_ptr.hpp
+|   |   |-- system
+|   |   |   |-- detail
+|   |   |   |   |-- config.hpp
+|   |   |   |   |-- generic_category.hpp
+|   |   |   |   |-- std_interoperability.hpp
+|   |   |   |   |-- system_category_posix.hpp
+|   |   |   |   `-- system_category_win32.hpp
+|   |   |   |-- api_config.hpp
+|   |   |   |-- config.hpp
+|   |   |   |-- error_code.hpp
+|   |   |   `-- system_error.hpp
+|   |   |-- test
+|   |   |   |-- detail
+|   |   |   |   |-- config.hpp
+|   |   |   |   |-- enable_warnings.hpp
+|   |   |   |   |-- fwd_decl.hpp
+|   |   |   |   |-- global_typedef.hpp
+|   |   |   |   |-- log_level.hpp
+|   |   |   |   |-- pp_variadic.hpp
+|   |   |   |   |-- suppress_warnings.hpp
+|   |   |   |   `-- throw_exception.hpp
+|   |   |   |-- impl
+|   |   |   |   |-- compiler_log_formatter.ipp
+|   |   |   |   |-- cpp_main.ipp
+|   |   |   |   |-- debug.ipp
+|   |   |   |   |-- decorator.ipp
+|   |   |   |   |-- execution_monitor.ipp
+|   |   |   |   |-- framework.ipp
+|   |   |   |   |-- junit_log_formatter.ipp
+|   |   |   |   |-- plain_report_formatter.ipp
+|   |   |   |   |-- progress_monitor.ipp
+|   |   |   |   |-- results_collector.ipp
+|   |   |   |   |-- results_reporter.ipp
+|   |   |   |   |-- test_framework_init_observer.ipp
+|   |   |   |   |-- test_main.ipp
+|   |   |   |   |-- test_tools.ipp
+|   |   |   |   |-- test_tree.ipp
+|   |   |   |   |-- unit_test_log.ipp
+|   |   |   |   |-- unit_test_main.ipp
+|   |   |   |   |-- unit_test_monitor.ipp
+|   |   |   |   |-- unit_test_parameters.ipp
+|   |   |   |   |-- xml_log_formatter.ipp
+|   |   |   |   `-- xml_report_formatter.ipp
+|   |   |   |-- output
+|   |   |   |   |-- compiler_log_formatter.hpp
+|   |   |   |   |-- junit_log_formatter.hpp
+|   |   |   |   |-- plain_report_formatter.hpp
+|   |   |   |   |-- xml_log_formatter.hpp
+|   |   |   |   `-- xml_report_formatter.hpp
+|   |   |   |-- tools
+|   |   |   |   |-- detail
+|   |   |   |   |   |-- bitwise_manip.hpp
+|   |   |   |   |   |-- expression_holder.hpp
+|   |   |   |   |   |-- fwd.hpp
+|   |   |   |   |   |-- indirections.hpp
+|   |   |   |   |   |-- it_pair.hpp
+|   |   |   |   |   |-- lexicographic_manip.hpp
+|   |   |   |   |   |-- per_element_manip.hpp
+|   |   |   |   |   |-- print_helper.hpp
+|   |   |   |   |   `-- tolerance_manip.hpp
+|   |   |   |   |-- old
+|   |   |   |   |   |-- impl.hpp
+|   |   |   |   |   `-- interface.hpp
+|   |   |   |   |-- assertion.hpp
+|   |   |   |   |-- assertion_result.hpp
+|   |   |   |   |-- collection_comparison_op.hpp
+|   |   |   |   |-- context.hpp
+|   |   |   |   |-- cstring_comparison_op.hpp
+|   |   |   |   |-- floating_point_comparison.hpp
+|   |   |   |   |-- fpc_op.hpp
+|   |   |   |   |-- fpc_tolerance.hpp
+|   |   |   |   |-- interface.hpp
+|   |   |   |   `-- output_test_stream.hpp
+|   |   |   |-- tree
+|   |   |   |   |-- auto_registration.hpp
+|   |   |   |   |-- decorator.hpp
+|   |   |   |   |-- fixture.hpp
+|   |   |   |   |-- global_fixture.hpp
+|   |   |   |   |-- observer.hpp
+|   |   |   |   |-- test_case_counter.hpp
+|   |   |   |   |-- test_case_template.hpp
+|   |   |   |   |-- test_unit.hpp
+|   |   |   |   |-- traverse.hpp
+|   |   |   |   `-- visitor.hpp
+|   |   |   |-- utils
+|   |   |   |   |-- basic_cstring
+|   |   |   |   |   |-- basic_cstring_fwd.hpp
+|   |   |   |   |   |-- basic_cstring.hpp
+|   |   |   |   |   |-- bcs_char_traits.hpp
+|   |   |   |   |   |-- compare.hpp
+|   |   |   |   |   `-- io.hpp
+|   |   |   |   |-- iterator
+|   |   |   |   |   |-- input_iterator_facade.hpp
+|   |   |   |   |   `-- token_iterator.hpp
+|   |   |   |   |-- runtime
+|   |   |   |   |   |-- cla
+|   |   |   |   |   |   |-- argv_traverser.hpp
+|   |   |   |   |   |   `-- parser.hpp
+|   |   |   |   |   |-- env
+|   |   |   |   |   |   `-- fetch.hpp
+|   |   |   |   |   |-- argument_factory.hpp
+|   |   |   |   |   |-- argument.hpp
+|   |   |   |   |   |-- errors.hpp
+|   |   |   |   |   |-- finalize.hpp
+|   |   |   |   |   |-- fwd.hpp
+|   |   |   |   |   |-- modifier.hpp
+|   |   |   |   |   `-- parameter.hpp
+|   |   |   |   |-- algorithm.hpp
+|   |   |   |   |-- assign_op.hpp
+|   |   |   |   |-- class_properties.hpp
+|   |   |   |   |-- custom_manip.hpp
+|   |   |   |   |-- foreach.hpp
+|   |   |   |   |-- is_cstring.hpp
+|   |   |   |   |-- is_forward_iterable.hpp
+|   |   |   |   |-- lazy_ostream.hpp
+|   |   |   |   |-- named_params.hpp
+|   |   |   |   |-- rtti.hpp
+|   |   |   |   |-- setcolor.hpp
+|   |   |   |   |-- string_cast.hpp
+|   |   |   |   |-- timer.hpp
+|   |   |   |   |-- wrap_stringstream.hpp
+|   |   |   |   `-- xml_printer.hpp
+|   |   |   |-- debug_config.hpp
+|   |   |   |-- debug.hpp
+|   |   |   |-- execution_monitor.hpp
+|   |   |   |-- framework.hpp
+|   |   |   |-- minimal.hpp
+|   |   |   |-- progress_monitor.hpp
+|   |   |   |-- results_collector.hpp
+|   |   |   |-- results_reporter.hpp
+|   |   |   |-- test_framework_init_observer.hpp
+|   |   |   |-- test_tools.hpp
+|   |   |   |-- unit_test_log_formatter.hpp
+|   |   |   |-- unit_test_log.hpp
+|   |   |   |-- unit_test_monitor.hpp
+|   |   |   |-- unit_test_parameters.hpp
+|   |   |   `-- unit_test_suite.hpp
+|   |   |-- timer
+|   |   |   |-- config.hpp
+|   |   |   `-- timer.hpp
+|   |   |-- tuple
+|   |   |   |-- detail
+|   |   |   |   `-- tuple_basic.hpp
+|   |   |   `-- tuple.hpp
+|   |   |-- type_index
+|   |   |   |-- detail
+|   |   |   |   |-- compile_time_type_info.hpp
+|   |   |   |   |-- ctti_register_class.hpp
+|   |   |   |   `-- stl_register_class.hpp
+|   |   |   |-- ctti_type_index.hpp
+|   |   |   |-- stl_type_index.hpp
+|   |   |   `-- type_index_facade.hpp
+|   |   |-- typeof
+|   |   |   |-- dmc
+|   |   |   |   `-- typeof_impl.hpp
+|   |   |   |-- msvc
+|   |   |   |   `-- typeof_impl.hpp
+|   |   |   |-- constant.hpp
+|   |   |   |-- decltype.hpp
+|   |   |   |-- encode_decode.hpp
+|   |   |   |-- encode_decode_params.hpp
+|   |   |   |-- integral_template_param.hpp
+|   |   |   |-- int_encoding.hpp
+|   |   |   |-- message.hpp
+|   |   |   |-- modifiers.hpp
+|   |   |   |-- native.hpp
+|   |   |   |-- pointers_data_members.hpp
+|   |   |   |-- register_functions.hpp
+|   |   |   |-- register_functions_iterate.hpp
+|   |   |   |-- register_fundamental.hpp
+|   |   |   |-- register_mem_functions.hpp
+|   |   |   |-- template_encoding.hpp
+|   |   |   |-- template_template_param.hpp
+|   |   |   |-- type_encoding.hpp
+|   |   |   |-- typeof.hpp
+|   |   |   |-- typeof_impl.hpp
+|   |   |   |-- type_template_param.hpp
+|   |   |   |-- unsupported.hpp
+|   |   |   |-- vector100.hpp
+|   |   |   |-- vector150.hpp
+|   |   |   |-- vector200.hpp
+|   |   |   |-- vector50.hpp
+|   |   |   `-- vector.hpp
+|   |   |-- type_traits
+|   |   |   |-- detail
+|   |   |   |   |-- bool_trait_undef.hpp
+|   |   |   |   |-- common_arithmetic_type.hpp
+|   |   |   |   |-- common_type_impl.hpp
+|   |   |   |   |-- composite_member_pointer_type.hpp
+|   |   |   |   |-- composite_pointer_type.hpp
+|   |   |   |   |-- config.hpp
+|   |   |   |   |-- has_binary_operator.hpp
+|   |   |   |   |-- has_postfix_operator.hpp
+|   |   |   |   |-- has_prefix_operator.hpp
+|   |   |   |   |-- is_function_cxx_03.hpp
+|   |   |   |   |-- is_function_cxx_11.hpp
+|   |   |   |   |-- is_function_msvc10_fix.hpp
+|   |   |   |   |-- is_function_ptr_helper.hpp
+|   |   |   |   |-- is_function_ptr_tester.hpp
+|   |   |   |   |-- is_likely_lambda.hpp
+|   |   |   |   |-- is_member_function_pointer_cxx_03.hpp
+|   |   |   |   |-- is_member_function_pointer_cxx_11.hpp
+|   |   |   |   |-- is_mem_fun_pointer_impl.hpp
+|   |   |   |   |-- is_mem_fun_pointer_tester.hpp
+|   |   |   |   |-- is_rvalue_reference_msvc10_fix.hpp
+|   |   |   |   |-- mp_defer.hpp
+|   |   |   |   `-- yes_no_type.hpp
+|   |   |   |-- add_const.hpp
+|   |   |   |-- add_cv.hpp
+|   |   |   |-- add_lvalue_reference.hpp
+|   |   |   |-- add_pointer.hpp
+|   |   |   |-- add_reference.hpp
+|   |   |   |-- add_rvalue_reference.hpp
+|   |   |   |-- add_volatile.hpp
+|   |   |   |-- aligned_storage.hpp
+|   |   |   |-- alignment_of.hpp
+|   |   |   |-- common_type.hpp
+|   |   |   |-- composite_traits.hpp
+|   |   |   |-- conditional.hpp
+|   |   |   |-- conversion_traits.hpp
+|   |   |   |-- copy_cv.hpp
+|   |   |   |-- copy_cv_ref.hpp
+|   |   |   |-- copy_reference.hpp
+|   |   |   |-- cv_traits.hpp
+|   |   |   |-- decay.hpp
+|   |   |   |-- declval.hpp
+|   |   |   |-- enable_if.hpp
+|   |   |   |-- extent.hpp
+|   |   |   |-- floating_point_promotion.hpp
+|   |   |   |-- function_traits.hpp
+|   |   |   |-- has_bit_and_assign.hpp
+|   |   |   |-- has_bit_and.hpp
+|   |   |   |-- has_bit_or_assign.hpp
+|   |   |   |-- has_bit_or.hpp
+|   |   |   |-- has_bit_xor_assign.hpp
+|   |   |   |-- has_bit_xor.hpp
+|   |   |   |-- has_complement.hpp
+|   |   |   |-- has_dereference.hpp
+|   |   |   |-- has_divides_assign.hpp
+|   |   |   |-- has_divides.hpp
+|   |   |   |-- has_equal_to.hpp
+|   |   |   |-- has_greater_equal.hpp
+|   |   |   |-- has_greater.hpp
+|   |   |   |-- has_left_shift_assign.hpp
+|   |   |   |-- has_left_shift.hpp
+|   |   |   |-- has_less_equal.hpp
+|   |   |   |-- has_less.hpp
+|   |   |   |-- has_logical_and.hpp
+|   |   |   |-- has_logical_not.hpp
+|   |   |   |-- has_logical_or.hpp
+|   |   |   |-- has_minus_assign.hpp
+|   |   |   |-- has_minus.hpp
+|   |   |   |-- has_modulus_assign.hpp
+|   |   |   |-- has_modulus.hpp
+|   |   |   |-- has_multiplies_assign.hpp
+|   |   |   |-- has_multiplies.hpp
+|   |   |   |-- has_negate.hpp
+|   |   |   |-- has_new_operator.hpp
+|   |   |   |-- has_not_equal_to.hpp
+|   |   |   |-- has_nothrow_assign.hpp
+|   |   |   |-- has_nothrow_constructor.hpp
+|   |   |   |-- has_nothrow_copy.hpp
+|   |   |   |-- has_nothrow_destructor.hpp
+|   |   |   |-- has_plus_assign.hpp
+|   |   |   |-- has_plus.hpp
+|   |   |   |-- has_post_decrement.hpp
+|   |   |   |-- has_post_increment.hpp
+|   |   |   |-- has_pre_decrement.hpp
+|   |   |   |-- has_pre_increment.hpp
+|   |   |   |-- has_right_shift_assign.hpp
+|   |   |   |-- has_right_shift.hpp
+|   |   |   |-- has_trivial_assign.hpp
+|   |   |   |-- has_trivial_constructor.hpp
+|   |   |   |-- has_trivial_copy.hpp
+|   |   |   |-- has_trivial_destructor.hpp
+|   |   |   |-- has_trivial_move_assign.hpp
+|   |   |   |-- has_trivial_move_constructor.hpp
+|   |   |   |-- has_unary_minus.hpp
+|   |   |   |-- has_unary_plus.hpp
+|   |   |   |-- has_virtual_destructor.hpp
+|   |   |   |-- integral_constant.hpp
+|   |   |   |-- integral_promotion.hpp
+|   |   |   |-- intrinsics.hpp
+|   |   |   |-- is_abstract.hpp
+|   |   |   |-- is_arithmetic.hpp
+|   |   |   |-- is_array.hpp
+|   |   |   |-- is_assignable.hpp
+|   |   |   |-- is_base_and_derived.hpp
+|   |   |   |-- is_base_of.hpp
+|   |   |   |-- is_bounded_array.hpp
+|   |   |   |-- is_class.hpp
+|   |   |   |-- is_complete.hpp
+|   |   |   |-- is_complex.hpp
+|   |   |   |-- is_compound.hpp
+|   |   |   |-- is_const.hpp
+|   |   |   |-- is_constructible.hpp
+|   |   |   |-- is_convertible.hpp
+|   |   |   |-- is_copy_assignable.hpp
+|   |   |   |-- is_copy_constructible.hpp
+|   |   |   |-- is_default_constructible.hpp
+|   |   |   |-- is_destructible.hpp
+|   |   |   |-- is_empty.hpp
+|   |   |   |-- is_enum.hpp
+|   |   |   |-- is_final.hpp
+|   |   |   |-- is_float.hpp
+|   |   |   |-- is_floating_point.hpp
+|   |   |   |-- is_function.hpp
+|   |   |   |-- is_fundamental.hpp
+|   |   |   |-- is_integral.hpp
+|   |   |   |-- is_list_constructible.hpp
+|   |   |   |-- is_lvalue_reference.hpp
+|   |   |   |-- is_member_function_pointer.hpp
+|   |   |   |-- is_member_object_pointer.hpp
+|   |   |   |-- is_member_pointer.hpp
+|   |   |   |-- is_noncopyable.hpp
+|   |   |   |-- is_nothrow_move_assignable.hpp
+|   |   |   |-- is_nothrow_move_constructible.hpp
+|   |   |   |-- is_nothrow_swappable.hpp
+|   |   |   |-- is_object.hpp
+|   |   |   |-- is_pod.hpp
+|   |   |   |-- is_pointer.hpp
+|   |   |   |-- is_polymorphic.hpp
+|   |   |   |-- is_reference.hpp
+|   |   |   |-- is_rvalue_reference.hpp
+|   |   |   |-- is_same.hpp
+|   |   |   |-- is_scalar.hpp
+|   |   |   |-- is_signed.hpp
+|   |   |   |-- is_stateless.hpp
+|   |   |   |-- is_unbounded_array.hpp
+|   |   |   |-- is_union.hpp
+|   |   |   |-- is_unsigned.hpp
+|   |   |   |-- is_virtual_base_of.hpp
+|   |   |   |-- is_void.hpp
+|   |   |   |-- is_volatile.hpp
+|   |   |   |-- make_signed.hpp
+|   |   |   |-- make_unsigned.hpp
+|   |   |   |-- make_void.hpp
+|   |   |   |-- promote.hpp
+|   |   |   |-- rank.hpp
+|   |   |   |-- remove_all_extents.hpp
+|   |   |   |-- remove_bounds.hpp
+|   |   |   |-- remove_const.hpp
+|   |   |   |-- remove_cv.hpp
+|   |   |   |-- remove_cv_ref.hpp
+|   |   |   |-- remove_extent.hpp
+|   |   |   |-- remove_pointer.hpp
+|   |   |   |-- remove_reference.hpp
+|   |   |   |-- remove_volatile.hpp
+|   |   |   |-- same_traits.hpp
+|   |   |   |-- type_identity.hpp
+|   |   |   `-- type_with_alignment.hpp
+|   |   |-- utility
+|   |   |   |-- detail
+|   |   |   |   |-- in_place_factory_prefix.hpp
+|   |   |   |   |-- in_place_factory_suffix.hpp
+|   |   |   |   `-- result_of_iterate.hpp
+|   |   |   |-- addressof.hpp
+|   |   |   |-- base_from_member.hpp
+|   |   |   |-- binary.hpp
+|   |   |   |-- compare_pointees.hpp
+|   |   |   |-- declval.hpp
+|   |   |   |-- enable_if.hpp
+|   |   |   |-- explicit_operator_bool.hpp
+|   |   |   |-- identity_type.hpp
+|   |   |   |-- in_place_factory.hpp
+|   |   |   |-- result_of.hpp
+|   |   |   |-- swap.hpp
+|   |   |   |-- typed_in_place_factory.hpp
+|   |   |   `-- value_init.hpp
+|   |   |-- winapi
+|   |   |   |-- basic_types.hpp
+|   |   |   |-- character_code_conversion.hpp
+|   |   |   |-- config.hpp
+|   |   |   |-- dll.hpp
+|   |   |   |-- error_codes.hpp
+|   |   |   |-- error_handling.hpp
+|   |   |   |-- get_current_process.hpp
+|   |   |   |-- get_current_thread.hpp
+|   |   |   |-- get_last_error.hpp
+|   |   |   |-- get_process_times.hpp
+|   |   |   |-- get_thread_times.hpp
+|   |   |   |-- local_memory.hpp
+|   |   |   |-- time.hpp
+|   |   |   `-- timers.hpp
+|   |   |-- aligned_storage.hpp
+|   |   |-- any.hpp
+|   |   |-- array.hpp
+|   |   |-- assert.hpp
+|   |   |-- bind.hpp
+|   |   |-- blank_fwd.hpp
+|   |   |-- blank.hpp
+|   |   |-- call_traits.hpp
+|   |   |-- cast.hpp
+|   |   |-- cerrno.hpp
+|   |   |-- checked_delete.hpp
+|   |   |-- concept_archetype.hpp
+|   |   |-- concept_check.hpp
+|   |   |-- config.hpp
+|   |   |-- cstdint.hpp
+|   |   |-- cstdlib.hpp
+|   |   |-- current_function.hpp
+|   |   |-- filesystem.hpp
+|   |   |-- format.hpp
+|   |   |-- function_equal.hpp
+|   |   |-- function.hpp
+|   |   |-- function_output_iterator.hpp
+|   |   |-- generator_iterator.hpp
+|   |   |-- get_pointer.hpp
+|   |   |-- implicit_cast.hpp
+|   |   |-- indirect_reference.hpp
+|   |   |-- integer_fwd.hpp
+|   |   |-- integer.hpp
+|   |   |-- integer_traits.hpp
+|   |   |-- io_fwd.hpp
+|   |   |-- is_placeholder.hpp
+|   |   |-- iterator_adaptors.hpp
+|   |   |-- iterator.hpp
+|   |   |-- lexical_cast.hpp
+|   |   |-- limits.hpp
+|   |   |-- make_shared.hpp
+|   |   |-- mem_fn.hpp
+|   |   |-- mp11.hpp
+|   |   |-- next_prior.hpp
+|   |   |-- noncopyable.hpp
+|   |   |-- none.hpp
+|   |   |-- none_t.hpp
+|   |   |-- non_type.hpp
+|   |   |-- operators.hpp
+|   |   |-- optional.hpp
+|   |   |-- pointee.hpp
+|   |   |-- polymorphic_cast.hpp
+|   |   |-- predef.h
+|   |   |-- program_options.hpp
+|   |   |-- rational.hpp
+|   |   |-- ref.hpp
+|   |   |-- scoped_array.hpp
+|   |   |-- scoped_ptr.hpp
+|   |   |-- shared_container_iterator.hpp
+|   |   |-- shared_ptr.hpp
+|   |   |-- static_assert.hpp
+|   |   |-- swap.hpp
+|   |   |-- throw_exception.hpp
+|   |   |-- timer.hpp
+|   |   |-- token_functions.hpp
+|   |   |-- token_iterator.hpp
+|   |   |-- tokenizer.hpp
+|   |   |-- type.hpp
+|   |   |-- type_index.hpp
+|   |   |-- type_traits.hpp
+|   |   |-- utility.hpp
+|   |   |-- version.hpp
+|   |   `-- visit_each.hpp
+|   |-- catch2
+|   |   `-- catch.hpp
+|   |-- eigen-eigen-b3f3d4950030
+|   |   |-- bench
+|   |   |   |-- btl
+|   |   |   |   |-- actions
+|   |   |   |   |   |-- action_aat_product.hh
+|   |   |   |   |   |-- action_ata_product.hh
+|   |   |   |   |   |-- action_atv_product.hh
+|   |   |   |   |   |-- action_axpby.hh
+|   |   |   |   |   |-- action_axpy.hh
+|   |   |   |   |   |-- action_cholesky.hh
+|   |   |   |   |   |-- action_ger.hh
+|   |   |   |   |   |-- action_hessenberg.hh
+|   |   |   |   |   |-- action_lu_decomp.hh
+|   |   |   |   |   |-- action_lu_solve.hh
+|   |   |   |   |   |-- action_matrix_matrix_product_bis.hh
+|   |   |   |   |   |-- action_matrix_matrix_product.hh
+|   |   |   |   |   |-- action_matrix_vector_product.hh
+|   |   |   |   |   |-- action_partial_lu.hh
+|   |   |   |   |   |-- action_rot.hh
+|   |   |   |   |   |-- action_symv.hh
+|   |   |   |   |   |-- action_syr2.hh
+|   |   |   |   |   |-- action_trisolve.hh
+|   |   |   |   |   |-- action_trisolve_matrix.hh
+|   |   |   |   |   |-- action_trmm.hh
+|   |   |   |   |   `-- basic_actions.hh
+|   |   |   |   |-- cmake
+|   |   |   |   |   |-- FindACML.cmake
+|   |   |   |   |   |-- FindATLAS.cmake
+|   |   |   |   |   |-- FindBLAZE.cmake
+|   |   |   |   |   |-- FindBlitz.cmake
+|   |   |   |   |   |-- FindCBLAS.cmake
+|   |   |   |   |   |-- FindGMM.cmake
+|   |   |   |   |   |-- FindMKL.cmake
+|   |   |   |   |   |-- FindMTL4.cmake
+|   |   |   |   |   |-- FindOPENBLAS.cmake
+|   |   |   |   |   |-- FindPackageHandleStandardArgs.cmake
+|   |   |   |   |   |-- FindTvmet.cmake
+|   |   |   |   |   `-- MacroOptionalAddSubdirectory.cmake
+|   |   |   |   |-- data
+|   |   |   |   |   |-- action_settings.txt
+|   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |-- gnuplot_common_settings.hh
+|   |   |   |   |   |-- go_mean
+|   |   |   |   |   |-- mean.cxx
+|   |   |   |   |   |-- mk_gnuplot_script.sh
+|   |   |   |   |   |-- mk_mean_script.sh
+|   |   |   |   |   |-- mk_new_gnuplot.sh
+|   |   |   |   |   |-- perlib_plot_settings.txt
+|   |   |   |   |   |-- regularize.cxx
+|   |   |   |   |   |-- smooth_all.sh
+|   |   |   |   |   `-- smooth.cxx
+|   |   |   |   |-- generic_bench
+|   |   |   |   |   |-- init
+|   |   |   |   |   |   |-- init_function.hh
+|   |   |   |   |   |   |-- init_matrix.hh
+|   |   |   |   |   |   `-- init_vector.hh
+|   |   |   |   |   |-- static
+|   |   |   |   |   |   |-- bench_static.hh
+|   |   |   |   |   |   |-- intel_bench_fixed_size.hh
+|   |   |   |   |   |   `-- static_size_generator.hh
+|   |   |   |   |   |-- timers
+|   |   |   |   |   |   |-- mixed_perf_analyzer.hh
+|   |   |   |   |   |   |-- portable_perf_analyzer.hh
+|   |   |   |   |   |   |-- portable_perf_analyzer_old.hh
+|   |   |   |   |   |   |-- portable_timer.hh
+|   |   |   |   |   |   |-- STL_perf_analyzer.hh
+|   |   |   |   |   |   |-- STL_timer.hh
+|   |   |   |   |   |   |-- x86_perf_analyzer.hh
+|   |   |   |   |   |   `-- x86_timer.hh
+|   |   |   |   |   |-- utils
+|   |   |   |   |   |   |-- size_lin_log.hh
+|   |   |   |   |   |   |-- size_log.hh
+|   |   |   |   |   |   |-- utilities.h
+|   |   |   |   |   |   `-- xy_file.hh
+|   |   |   |   |   |-- bench.hh
+|   |   |   |   |   |-- bench_parameter.hh
+|   |   |   |   |   `-- btl.hh
+|   |   |   |   |-- libs
+|   |   |   |   |   |-- BLAS
+|   |   |   |   |   |   |-- blas.h
+|   |   |   |   |   |   |-- blas_interface.hh
+|   |   |   |   |   |   |-- blas_interface_impl.hh
+|   |   |   |   |   |   |-- c_interface_base.h
+|   |   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |   `-- main.cpp
+|   |   |   |   |   |-- blaze
+|   |   |   |   |   |   |-- blaze_interface.hh
+|   |   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |   `-- main.cpp
+|   |   |   |   |   |-- blitz
+|   |   |   |   |   |   |-- blitz_interface.hh
+|   |   |   |   |   |   |-- blitz_LU_solve_interface.hh
+|   |   |   |   |   |   |-- btl_blitz.cpp
+|   |   |   |   |   |   |-- btl_tiny_blitz.cpp
+|   |   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |   `-- tiny_blitz_interface.hh
+|   |   |   |   |   |-- eigen2
+|   |   |   |   |   |   |-- btl_tiny_eigen2.cpp
+|   |   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |   |-- eigen2_interface.hh
+|   |   |   |   |   |   |-- main_adv.cpp
+|   |   |   |   |   |   |-- main_linear.cpp
+|   |   |   |   |   |   |-- main_matmat.cpp
+|   |   |   |   |   |   `-- main_vecmat.cpp
+|   |   |   |   |   |-- eigen3
+|   |   |   |   |   |   |-- btl_tiny_eigen3.cpp
+|   |   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |   |-- eigen3_interface.hh
+|   |   |   |   |   |   |-- main_adv.cpp
+|   |   |   |   |   |   |-- main_linear.cpp
+|   |   |   |   |   |   |-- main_matmat.cpp
+|   |   |   |   |   |   `-- main_vecmat.cpp
+|   |   |   |   |   |-- gmm
+|   |   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |   |-- gmm_interface.hh
+|   |   |   |   |   |   |-- gmm_LU_solve_interface.hh
+|   |   |   |   |   |   `-- main.cpp
+|   |   |   |   |   |-- mtl4
+|   |   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |   |-- main.cpp
+|   |   |   |   |   |   |-- mtl4_interface.hh
+|   |   |   |   |   |   `-- mtl4_LU_solve_interface.hh
+|   |   |   |   |   |-- STL
+|   |   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |   |-- main.cpp
+|   |   |   |   |   |   `-- STL_interface.hh
+|   |   |   |   |   |-- tensors
+|   |   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |   |-- main_linear.cpp
+|   |   |   |   |   |   |-- main_matmat.cpp
+|   |   |   |   |   |   |-- main_vecmat.cpp
+|   |   |   |   |   |   `-- tensor_interface.hh
+|   |   |   |   |   |-- tvmet
+|   |   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |   |-- main.cpp
+|   |   |   |   |   |   `-- tvmet_interface.hh
+|   |   |   |   |   `-- ublas
+|   |   |   |   |       |-- CMakeLists.txt
+|   |   |   |   |       |-- main.cpp
+|   |   |   |   |       `-- ublas_interface.hh
+|   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |-- COPYING
+|   |   |   |   `-- README
+|   |   |   |-- perf_monitoring
+|   |   |   |   `-- gemm
+|   |   |   |       |-- changesets.txt
+|   |   |   |       |-- gemm.cpp
+|   |   |   |       |-- gemm_settings.txt
+|   |   |   |       |-- lazy_gemm.cpp
+|   |   |   |       |-- lazy_gemm_settings.txt
+|   |   |   |       |-- make_plot.sh
+|   |   |   |       `-- run.sh
+|   |   |   |-- spbench
+|   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |-- spbench.dtd
+|   |   |   |   |-- spbenchsolver.cpp
+|   |   |   |   |-- spbenchsolver.h
+|   |   |   |   |-- spbenchstyle.h
+|   |   |   |   |-- sp_solver.cpp
+|   |   |   |   `-- test_sparseLU.cpp
+|   |   |   |-- tensors
+|   |   |   |   |-- benchmark.h
+|   |   |   |   |-- benchmark_main.cc
+|   |   |   |   |-- contraction_benchmarks_cpu.cc
+|   |   |   |   |-- README
+|   |   |   |   |-- tensor_benchmarks_cpu.cc
+|   |   |   |   |-- tensor_benchmarks_fp16_gpu.cu
+|   |   |   |   |-- tensor_benchmarks_gpu.cu
+|   |   |   |   |-- tensor_benchmarks.h
+|   |   |   |   `-- tensor_benchmarks_sycl.cc
+|   |   |   |-- analyze-blocking-sizes.cpp
+|   |   |   |-- basicbench.cxxlist
+|   |   |   |-- basicbenchmark.cpp
+|   |   |   |-- basicbenchmark.h
+|   |   |   |-- benchBlasGemm.cpp
+|   |   |   |-- benchCholesky.cpp
+|   |   |   |-- benchEigenSolver.cpp
+|   |   |   |-- benchFFT.cpp
+|   |   |   |-- bench_gemm.cpp
+|   |   |   |-- benchGeometry.cpp
+|   |   |   |-- benchmark-blocking-sizes.cpp
+|   |   |   |-- benchmark.cpp
+|   |   |   |-- benchmarkSlice.cpp
+|   |   |   |-- benchmark_suite
+|   |   |   |-- benchmarkX.cpp
+|   |   |   |-- benchmarkXcwise.cpp
+|   |   |   |-- bench_multi_compilers.sh
+|   |   |   |-- bench_norm.cpp
+|   |   |   |-- bench_reverse.cpp
+|   |   |   |-- BenchSparseUtil.h
+|   |   |   |-- bench_sum.cpp
+|   |   |   |-- BenchTimer.h
+|   |   |   |-- bench_unrolling
+|   |   |   |-- BenchUtil.h
+|   |   |   |-- benchVecAdd.cpp
+|   |   |   |-- check_cache_queries.cpp
+|   |   |   |-- dense_solvers.cpp
+|   |   |   |-- eig33.cpp
+|   |   |   |-- geometry.cpp
+|   |   |   |-- product_threshold.cpp
+|   |   |   |-- quatmul.cpp
+|   |   |   |-- quat_slerp.cpp
+|   |   |   |-- README.txt
+|   |   |   |-- sparse_cholesky.cpp
+|   |   |   |-- sparse_dense_product.cpp
+|   |   |   |-- sparse_lu.cpp
+|   |   |   |-- sparse_product.cpp
+|   |   |   |-- sparse_randomsetter.cpp
+|   |   |   |-- sparse_setter.cpp
+|   |   |   |-- sparse_transpose.cpp
+|   |   |   |-- sparse_trisolver.cpp
+|   |   |   |-- spmv.cpp
+|   |   |   `-- vdw_new.cpp
+|   |   |-- blas
+|   |   |   |-- f2c
+|   |   |   |   |-- chbmv.c
+|   |   |   |   |-- chpmv.c
+|   |   |   |   |-- complexdots.c
+|   |   |   |   |-- ctbmv.c
+|   |   |   |   |-- datatypes.h
+|   |   |   |   |-- d_cnjg.c
+|   |   |   |   |-- drotm.c
+|   |   |   |   |-- drotmg.c
+|   |   |   |   |-- dsbmv.c
+|   |   |   |   |-- dspmv.c
+|   |   |   |   |-- dtbmv.c
+|   |   |   |   |-- lsame.c
+|   |   |   |   |-- r_cnjg.c
+|   |   |   |   |-- srotm.c
+|   |   |   |   |-- srotmg.c
+|   |   |   |   |-- ssbmv.c
+|   |   |   |   |-- sspmv.c
+|   |   |   |   |-- stbmv.c
+|   |   |   |   |-- zhbmv.c
+|   |   |   |   |-- zhpmv.c
+|   |   |   |   `-- ztbmv.c
+|   |   |   |-- fortran
+|   |   |   |   `-- complexdots.f
+|   |   |   |-- testing
+|   |   |   |   |-- cblat1.f
+|   |   |   |   |-- cblat2.dat
+|   |   |   |   |-- cblat2.f
+|   |   |   |   |-- cblat3.dat
+|   |   |   |   |-- cblat3.f
+|   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |-- dblat1.f
+|   |   |   |   |-- dblat2.dat
+|   |   |   |   |-- dblat2.f
+|   |   |   |   |-- dblat3.dat
+|   |   |   |   |-- dblat3.f
+|   |   |   |   |-- runblastest.sh
+|   |   |   |   |-- sblat1.f
+|   |   |   |   |-- sblat2.dat
+|   |   |   |   |-- sblat2.f
+|   |   |   |   |-- sblat3.dat
+|   |   |   |   |-- sblat3.f
+|   |   |   |   |-- zblat1.f
+|   |   |   |   |-- zblat2.dat
+|   |   |   |   |-- zblat2.f
+|   |   |   |   |-- zblat3.dat
+|   |   |   |   `-- zblat3.f
+|   |   |   |-- BandTriangularSolver.h
+|   |   |   |-- CMakeLists.txt
+|   |   |   |-- common.h
+|   |   |   |-- complex_double.cpp
+|   |   |   |-- complex_single.cpp
+|   |   |   |-- double.cpp
+|   |   |   |-- GeneralRank1Update.h
+|   |   |   |-- level1_cplx_impl.h
+|   |   |   |-- level1_impl.h
+|   |   |   |-- level1_real_impl.h
+|   |   |   |-- level2_cplx_impl.h
+|   |   |   |-- level2_impl.h
+|   |   |   |-- level2_real_impl.h
+|   |   |   |-- level3_impl.h
+|   |   |   |-- PackedSelfadjointProduct.h
+|   |   |   |-- PackedTriangularMatrixVector.h
+|   |   |   |-- PackedTriangularSolverVector.h
+|   |   |   |-- Rank2Update.h
+|   |   |   |-- README.txt
+|   |   |   |-- single.cpp
+|   |   |   `-- xerbla.cpp
+|   |   |-- cmake
+|   |   |   |-- Eigen3Config.cmake.in
+|   |   |   |-- Eigen3ConfigLegacy.cmake.in
+|   |   |   |-- EigenConfigureTesting.cmake
+|   |   |   |-- EigenDetermineOSVersion.cmake
+|   |   |   |-- EigenDetermineVSServicePack.cmake
+|   |   |   |-- EigenTesting.cmake
+|   |   |   |-- EigenUninstall.cmake
+|   |   |   |-- FindAdolc.cmake
+|   |   |   |-- FindBLAS.cmake
+|   |   |   |-- FindBLASEXT.cmake
+|   |   |   |-- FindCholmod.cmake
+|   |   |   |-- FindComputeCpp.cmake
+|   |   |   |-- FindEigen2.cmake
+|   |   |   |-- FindEigen3.cmake
+|   |   |   |-- FindFFTW.cmake
+|   |   |   |-- FindGLEW.cmake
+|   |   |   |-- FindGMP.cmake
+|   |   |   |-- FindGoogleHash.cmake
+|   |   |   |-- FindGSL.cmake
+|   |   |   |-- FindHWLOC.cmake
+|   |   |   |-- FindLAPACK.cmake
+|   |   |   |-- FindMetis.cmake
+|   |   |   |-- FindMPFR.cmake
+|   |   |   |-- FindPastix.cmake
+|   |   |   |-- FindPTSCOTCH.cmake
+|   |   |   |-- FindScotch.cmake
+|   |   |   |-- FindSPQR.cmake
+|   |   |   |-- FindStandardMathLibrary.cmake
+|   |   |   |-- FindSuperLU.cmake
+|   |   |   |-- FindUmfpack.cmake
+|   |   |   |-- language_support.cmake
+|   |   |   |-- RegexUtils.cmake
+|   |   |   `-- UseEigen3.cmake
+|   |   |-- debug
+|   |   |   |-- gdb
+|   |   |   |   |-- __init__.py
+|   |   |   |   `-- printers.py
+|   |   |   `-- msvc
+|   |   |       |-- eigen_autoexp_part.dat
+|   |   |       `-- eigen.natvis
+|   |   |-- demos
+|   |   |   |-- mandelbrot
+|   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |-- mandelbrot.cpp
+|   |   |   |   |-- mandelbrot.h
+|   |   |   |   `-- README
+|   |   |   |-- mix_eigen_and_c
+|   |   |   |   |-- binary_library.cpp
+|   |   |   |   |-- binary_library.h
+|   |   |   |   |-- example.c
+|   |   |   |   `-- README
+|   |   |   |-- opengl
+|   |   |   |   |-- camera.cpp
+|   |   |   |   |-- camera.h
+|   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |-- gpuhelper.cpp
+|   |   |   |   |-- gpuhelper.h
+|   |   |   |   |-- icosphere.cpp
+|   |   |   |   |-- icosphere.h
+|   |   |   |   |-- quaternion_demo.cpp
+|   |   |   |   |-- quaternion_demo.h
+|   |   |   |   |-- README
+|   |   |   |   |-- trackball.cpp
+|   |   |   |   `-- trackball.h
+|   |   |   `-- CMakeLists.txt
+|   |   |-- doc
+|   |   |   |-- examples
+|   |   |   |   |-- class_Block.cpp
+|   |   |   |   |-- class_CwiseBinaryOp.cpp
+|   |   |   |   |-- class_CwiseUnaryOp.cpp
+|   |   |   |   |-- class_CwiseUnaryOp_ptrfun.cpp
+|   |   |   |   |-- class_FixedBlock.cpp
+|   |   |   |   |-- class_FixedVectorBlock.cpp
+|   |   |   |   |-- class_VectorBlock.cpp
+|   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |-- CustomizingEigen_Inheritance.cpp
+|   |   |   |   |-- Cwise_erfc.cpp
+|   |   |   |   |-- Cwise_erf.cpp
+|   |   |   |   |-- Cwise_lgamma.cpp
+|   |   |   |   |-- DenseBase_middleCols_int.cpp
+|   |   |   |   |-- DenseBase_middleRows_int.cpp
+|   |   |   |   |-- DenseBase_template_int_middleCols.cpp
+|   |   |   |   |-- DenseBase_template_int_middleRows.cpp
+|   |   |   |   |-- function_taking_eigenbase.cpp
+|   |   |   |   |-- function_taking_ref.cpp
+|   |   |   |   |-- make_circulant2.cpp
+|   |   |   |   |-- make_circulant.cpp
+|   |   |   |   |-- make_circulant.cpp.entry
+|   |   |   |   |-- make_circulant.cpp.evaluator
+|   |   |   |   |-- make_circulant.cpp.expression
+|   |   |   |   |-- make_circulant.cpp.main
+|   |   |   |   |-- make_circulant.cpp.preamble
+|   |   |   |   |-- make_circulant.cpp.traits
+|   |   |   |   |-- matrixfree_cg.cpp
+|   |   |   |   |-- nullary_indexing.cpp
+|   |   |   |   |-- QuickStart_example2_dynamic.cpp
+|   |   |   |   |-- QuickStart_example2_fixed.cpp
+|   |   |   |   |-- QuickStart_example.cpp
+|   |   |   |   |-- TemplateKeyword_flexible.cpp
+|   |   |   |   |-- TemplateKeyword_simple.cpp
+|   |   |   |   |-- tut_arithmetic_add_sub.cpp
+|   |   |   |   |-- tut_arithmetic_dot_cross.cpp
+|   |   |   |   |-- tut_arithmetic_matrix_mul.cpp
+|   |   |   |   |-- tut_arithmetic_redux_basic.cpp
+|   |   |   |   |-- tut_arithmetic_scalar_mul_div.cpp
+|   |   |   |   |-- tut_matrix_coefficient_accessors.cpp
+|   |   |   |   |-- tut_matrix_resize.cpp
+|   |   |   |   |-- tut_matrix_resize_fixed_size.cpp
+|   |   |   |   |-- Tutorial_ArrayClass_accessors.cpp
+|   |   |   |   |-- Tutorial_ArrayClass_addition.cpp
+|   |   |   |   |-- Tutorial_ArrayClass_cwise_other.cpp
+|   |   |   |   |-- Tutorial_ArrayClass_interop.cpp
+|   |   |   |   |-- Tutorial_ArrayClass_interop_matrix.cpp
+|   |   |   |   |-- Tutorial_ArrayClass_mult.cpp
+|   |   |   |   |-- Tutorial_BlockOperations_block_assignment.cpp
+|   |   |   |   |-- Tutorial_BlockOperations_colrow.cpp
+|   |   |   |   |-- Tutorial_BlockOperations_corner.cpp
+|   |   |   |   |-- Tutorial_BlockOperations_print_block.cpp
+|   |   |   |   |-- Tutorial_BlockOperations_vector.cpp
+|   |   |   |   |-- TutorialInplaceLU.cpp
+|   |   |   |   |-- TutorialLinAlgComputeTwice.cpp
+|   |   |   |   |-- TutorialLinAlgExComputeSolveError.cpp
+|   |   |   |   |-- TutorialLinAlgExSolveColPivHouseholderQR.cpp
+|   |   |   |   |-- TutorialLinAlgExSolveLDLT.cpp
+|   |   |   |   |-- TutorialLinAlgInverseDeterminant.cpp
+|   |   |   |   |-- TutorialLinAlgRankRevealing.cpp
+|   |   |   |   |-- TutorialLinAlgSelfAdjointEigenSolver.cpp
+|   |   |   |   |-- TutorialLinAlgSetThreshold.cpp
+|   |   |   |   |-- TutorialLinAlgSVDSolve.cpp
+|   |   |   |   |-- Tutorial_PartialLU_solve.cpp
+|   |   |   |   |-- Tutorial_ReductionsVisitorsBroadcasting_broadcast_1nn.cpp
+|   |   |   |   |-- Tutorial_ReductionsVisitorsBroadcasting_broadcast_simple.cpp
+|   |   |   |   |-- Tutorial_ReductionsVisitorsBroadcasting_broadcast_simple_rowwise.cpp
+|   |   |   |   |-- Tutorial_ReductionsVisitorsBroadcasting_colwise.cpp
+|   |   |   |   |-- Tutorial_ReductionsVisitorsBroadcasting_maxnorm.cpp
+|   |   |   |   |-- Tutorial_ReductionsVisitorsBroadcasting_reductions_bool.cpp
+|   |   |   |   |-- Tutorial_ReductionsVisitorsBroadcasting_reductions_norm.cpp
+|   |   |   |   |-- Tutorial_ReductionsVisitorsBroadcasting_reductions_operatornorm.cpp
+|   |   |   |   |-- Tutorial_ReductionsVisitorsBroadcasting_rowwise.cpp
+|   |   |   |   |-- Tutorial_ReductionsVisitorsBroadcasting_visitors.cpp
+|   |   |   |   |-- Tutorial_simple_example_dynamic_size.cpp
+|   |   |   |   `-- Tutorial_simple_example_fixed_size.cpp
+|   |   |   |-- snippets
+|   |   |   |   |-- AngleAxis_mimic_euler.cpp
+|   |   |   |   |-- BiCGSTAB_simple.cpp
+|   |   |   |   |-- BiCGSTAB_step_by_step.cpp
+|   |   |   |   |-- class_FullPivLU.cpp
+|   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |-- ColPivHouseholderQR_solve.cpp
+|   |   |   |   |-- compile_snippet.cpp.in
+|   |   |   |   |-- ComplexEigenSolver_compute.cpp
+|   |   |   |   |-- ComplexEigenSolver_eigenvalues.cpp
+|   |   |   |   |-- ComplexEigenSolver_eigenvectors.cpp
+|   |   |   |   |-- ComplexSchur_compute.cpp
+|   |   |   |   |-- ComplexSchur_matrixT.cpp
+|   |   |   |   |-- ComplexSchur_matrixU.cpp
+|   |   |   |   |-- Cwise_abs2.cpp
+|   |   |   |   |-- Cwise_abs.cpp
+|   |   |   |   |-- Cwise_acos.cpp
+|   |   |   |   |-- Cwise_arg.cpp
+|   |   |   |   |-- Cwise_array_power_array.cpp
+|   |   |   |   |-- Cwise_asin.cpp
+|   |   |   |   |-- Cwise_atan.cpp
+|   |   |   |   |-- Cwise_boolean_and.cpp
+|   |   |   |   |-- Cwise_boolean_not.cpp
+|   |   |   |   |-- Cwise_boolean_or.cpp
+|   |   |   |   |-- Cwise_boolean_xor.cpp
+|   |   |   |   |-- Cwise_ceil.cpp
+|   |   |   |   |-- Cwise_cos.cpp
+|   |   |   |   |-- Cwise_cosh.cpp
+|   |   |   |   |-- Cwise_cube.cpp
+|   |   |   |   |-- Cwise_equal_equal.cpp
+|   |   |   |   |-- Cwise_exp.cpp
+|   |   |   |   |-- Cwise_floor.cpp
+|   |   |   |   |-- Cwise_greater.cpp
+|   |   |   |   |-- Cwise_greater_equal.cpp
+|   |   |   |   |-- Cwise_inverse.cpp
+|   |   |   |   |-- Cwise_isFinite.cpp
+|   |   |   |   |-- Cwise_isInf.cpp
+|   |   |   |   |-- Cwise_isNaN.cpp
+|   |   |   |   |-- Cwise_less.cpp
+|   |   |   |   |-- Cwise_less_equal.cpp
+|   |   |   |   |-- Cwise_log10.cpp
+|   |   |   |   |-- Cwise_log.cpp
+|   |   |   |   |-- Cwise_max.cpp
+|   |   |   |   |-- Cwise_min.cpp
+|   |   |   |   |-- Cwise_minus.cpp
+|   |   |   |   |-- Cwise_minus_equal.cpp
+|   |   |   |   |-- Cwise_not_equal.cpp
+|   |   |   |   |-- Cwise_plus.cpp
+|   |   |   |   |-- Cwise_plus_equal.cpp
+|   |   |   |   |-- Cwise_pow.cpp
+|   |   |   |   |-- Cwise_product.cpp
+|   |   |   |   |-- Cwise_quotient.cpp
+|   |   |   |   |-- Cwise_round.cpp
+|   |   |   |   |-- Cwise_scalar_power_array.cpp
+|   |   |   |   |-- Cwise_sign.cpp
+|   |   |   |   |-- Cwise_sin.cpp
+|   |   |   |   |-- Cwise_sinh.cpp
+|   |   |   |   |-- Cwise_slash_equal.cpp
+|   |   |   |   |-- Cwise_sqrt.cpp
+|   |   |   |   |-- Cwise_square.cpp
+|   |   |   |   |-- Cwise_tan.cpp
+|   |   |   |   |-- Cwise_tanh.cpp
+|   |   |   |   |-- Cwise_times_equal.cpp
+|   |   |   |   |-- DenseBase_LinSpaced.cpp
+|   |   |   |   |-- DenseBase_LinSpacedInt.cpp
+|   |   |   |   |-- DenseBase_LinSpaced_seq.cpp
+|   |   |   |   |-- DenseBase_setLinSpaced.cpp
+|   |   |   |   |-- DirectionWise_hnormalized.cpp
+|   |   |   |   |-- DirectionWise_replicate.cpp
+|   |   |   |   |-- DirectionWise_replicate_int.cpp
+|   |   |   |   |-- EigenSolver_compute.cpp
+|   |   |   |   |-- EigenSolver_EigenSolver_MatrixType.cpp
+|   |   |   |   |-- EigenSolver_eigenvalues.cpp
+|   |   |   |   |-- EigenSolver_eigenvectors.cpp
+|   |   |   |   |-- EigenSolver_pseudoEigenvectors.cpp
+|   |   |   |   |-- FullPivHouseholderQR_solve.cpp
+|   |   |   |   |-- FullPivLU_image.cpp
+|   |   |   |   |-- FullPivLU_kernel.cpp
+|   |   |   |   |-- FullPivLU_solve.cpp
+|   |   |   |   |-- GeneralizedEigenSolver.cpp
+|   |   |   |   |-- HessenbergDecomposition_compute.cpp
+|   |   |   |   |-- HessenbergDecomposition_matrixH.cpp
+|   |   |   |   |-- HessenbergDecomposition_packedMatrix.cpp
+|   |   |   |   |-- HouseholderQR_householderQ.cpp
+|   |   |   |   |-- HouseholderQR_solve.cpp
+|   |   |   |   |-- HouseholderSequence_HouseholderSequence.cpp
+|   |   |   |   |-- IOFormat.cpp
+|   |   |   |   |-- Jacobi_makeGivens.cpp
+|   |   |   |   |-- Jacobi_makeJacobi.cpp
+|   |   |   |   |-- JacobiSVD_basic.cpp
+|   |   |   |   |-- LeastSquaresNormalEquations.cpp
+|   |   |   |   |-- LeastSquaresQR.cpp
+|   |   |   |   |-- LLT_example.cpp
+|   |   |   |   |-- LLT_solve.cpp
+|   |   |   |   |-- Map_general_stride.cpp
+|   |   |   |   |-- Map_inner_stride.cpp
+|   |   |   |   |-- Map_outer_stride.cpp
+|   |   |   |   |-- Map_placement_new.cpp
+|   |   |   |   |-- Map_simple.cpp
+|   |   |   |   |-- MatrixBase_adjoint.cpp
+|   |   |   |   |-- MatrixBase_all.cpp
+|   |   |   |   |-- MatrixBase_applyOnTheLeft.cpp
+|   |   |   |   |-- MatrixBase_applyOnTheRight.cpp
+|   |   |   |   |-- MatrixBase_array_const.cpp
+|   |   |   |   |-- MatrixBase_array.cpp
+|   |   |   |   |-- MatrixBase_asDiagonal.cpp
+|   |   |   |   |-- MatrixBase_block_int_int.cpp
+|   |   |   |   |-- MatrixBase_block_int_int_int_int.cpp
+|   |   |   |   |-- MatrixBase_bottomLeftCorner_int_int.cpp
+|   |   |   |   |-- MatrixBase_bottomRightCorner_int_int.cpp
+|   |   |   |   |-- MatrixBase_bottomRows_int.cpp
+|   |   |   |   |-- MatrixBase_cast.cpp
+|   |   |   |   |-- MatrixBase_col.cpp
+|   |   |   |   |-- MatrixBase_colwise.cpp
+|   |   |   |   |-- MatrixBase_computeInverseAndDetWithCheck.cpp
+|   |   |   |   |-- MatrixBase_computeInverseWithCheck.cpp
+|   |   |   |   |-- MatrixBase_cwiseAbs2.cpp
+|   |   |   |   |-- MatrixBase_cwiseAbs.cpp
+|   |   |   |   |-- MatrixBase_cwiseEqual.cpp
+|   |   |   |   |-- MatrixBase_cwiseInverse.cpp
+|   |   |   |   |-- MatrixBase_cwiseMax.cpp
+|   |   |   |   |-- MatrixBase_cwiseMin.cpp
+|   |   |   |   |-- MatrixBase_cwiseNotEqual.cpp
+|   |   |   |   |-- MatrixBase_cwiseProduct.cpp
+|   |   |   |   |-- MatrixBase_cwiseQuotient.cpp
+|   |   |   |   |-- MatrixBase_cwiseSign.cpp
+|   |   |   |   |-- MatrixBase_cwiseSqrt.cpp
+|   |   |   |   |-- MatrixBase_diagonal.cpp
+|   |   |   |   |-- MatrixBase_diagonal_int.cpp
+|   |   |   |   |-- MatrixBase_diagonal_template_int.cpp
+|   |   |   |   |-- MatrixBase_eigenvalues.cpp
+|   |   |   |   |-- MatrixBase_end_int.cpp
+|   |   |   |   |-- MatrixBase_eval.cpp
+|   |   |   |   |-- MatrixBase_fixedBlock_int_int.cpp
+|   |   |   |   |-- MatrixBase_hnormalized.cpp
+|   |   |   |   |-- MatrixBase_homogeneous.cpp
+|   |   |   |   |-- MatrixBase_identity.cpp
+|   |   |   |   |-- MatrixBase_identity_int_int.cpp
+|   |   |   |   |-- MatrixBase_inverse.cpp
+|   |   |   |   |-- MatrixBase_isDiagonal.cpp
+|   |   |   |   |-- MatrixBase_isIdentity.cpp
+|   |   |   |   |-- MatrixBase_isOnes.cpp
+|   |   |   |   |-- MatrixBase_isOrthogonal.cpp
+|   |   |   |   |-- MatrixBase_isUnitary.cpp
+|   |   |   |   |-- MatrixBase_isZero.cpp
+|   |   |   |   |-- MatrixBase_leftCols_int.cpp
+|   |   |   |   |-- MatrixBase_noalias.cpp
+|   |   |   |   |-- MatrixBase_ones.cpp
+|   |   |   |   |-- MatrixBase_ones_int.cpp
+|   |   |   |   |-- MatrixBase_ones_int_int.cpp
+|   |   |   |   |-- MatrixBase_operatorNorm.cpp
+|   |   |   |   |-- MatrixBase_prod.cpp
+|   |   |   |   |-- MatrixBase_random.cpp
+|   |   |   |   |-- MatrixBase_random_int.cpp
+|   |   |   |   |-- MatrixBase_random_int_int.cpp
+|   |   |   |   |-- MatrixBase_replicate.cpp
+|   |   |   |   |-- MatrixBase_replicate_int_int.cpp
+|   |   |   |   |-- MatrixBase_reverse.cpp
+|   |   |   |   |-- MatrixBase_rightCols_int.cpp
+|   |   |   |   |-- MatrixBase_row.cpp
+|   |   |   |   |-- MatrixBase_rowwise.cpp
+|   |   |   |   |-- MatrixBase_segment_int_int.cpp
+|   |   |   |   |-- MatrixBase_select.cpp
+|   |   |   |   |-- MatrixBase_selfadjointView.cpp
+|   |   |   |   |-- MatrixBase_set.cpp
+|   |   |   |   |-- MatrixBase_setIdentity.cpp
+|   |   |   |   |-- MatrixBase_setOnes.cpp
+|   |   |   |   |-- MatrixBase_setRandom.cpp
+|   |   |   |   |-- MatrixBase_setZero.cpp
+|   |   |   |   |-- MatrixBase_start_int.cpp
+|   |   |   |   |-- MatrixBase_template_int_bottomRows.cpp
+|   |   |   |   |-- MatrixBase_template_int_end.cpp
+|   |   |   |   |-- MatrixBase_template_int_int_block_int_int_int_int.cpp
+|   |   |   |   |-- MatrixBase_template_int_int_bottomLeftCorner.cpp
+|   |   |   |   |-- MatrixBase_template_int_int_bottomLeftCorner_int_int.cpp
+|   |   |   |   |-- MatrixBase_template_int_int_bottomRightCorner.cpp
+|   |   |   |   |-- MatrixBase_template_int_int_bottomRightCorner_int_int.cpp
+|   |   |   |   |-- MatrixBase_template_int_int_topLeftCorner.cpp
+|   |   |   |   |-- MatrixBase_template_int_int_topLeftCorner_int_int.cpp
+|   |   |   |   |-- MatrixBase_template_int_int_topRightCorner.cpp
+|   |   |   |   |-- MatrixBase_template_int_int_topRightCorner_int_int.cpp
+|   |   |   |   |-- MatrixBase_template_int_leftCols.cpp
+|   |   |   |   |-- MatrixBase_template_int_rightCols.cpp
+|   |   |   |   |-- MatrixBase_template_int_segment.cpp
+|   |   |   |   |-- MatrixBase_template_int_start.cpp
+|   |   |   |   |-- MatrixBase_template_int_topRows.cpp
+|   |   |   |   |-- MatrixBase_topLeftCorner_int_int.cpp
+|   |   |   |   |-- MatrixBase_topRightCorner_int_int.cpp
+|   |   |   |   |-- MatrixBase_topRows_int.cpp
+|   |   |   |   |-- MatrixBase_transpose.cpp
+|   |   |   |   |-- MatrixBase_triangularView.cpp
+|   |   |   |   |-- MatrixBase_zero.cpp
+|   |   |   |   |-- MatrixBase_zero_int.cpp
+|   |   |   |   |-- MatrixBase_zero_int_int.cpp
+|   |   |   |   |-- Matrix_Map_stride.cpp
+|   |   |   |   |-- Matrix_resize_int.cpp
+|   |   |   |   |-- Matrix_resize_int_int.cpp
+|   |   |   |   |-- Matrix_resize_int_NoChange.cpp
+|   |   |   |   |-- Matrix_resize_NoChange_int.cpp
+|   |   |   |   |-- Matrix_setConstant_int.cpp
+|   |   |   |   |-- Matrix_setConstant_int_int.cpp
+|   |   |   |   |-- Matrix_setIdentity_int_int.cpp
+|   |   |   |   |-- Matrix_setOnes_int.cpp
+|   |   |   |   |-- Matrix_setOnes_int_int.cpp
+|   |   |   |   |-- Matrix_setRandom_int.cpp
+|   |   |   |   |-- Matrix_setRandom_int_int.cpp
+|   |   |   |   |-- Matrix_setZero_int.cpp
+|   |   |   |   |-- Matrix_setZero_int_int.cpp
+|   |   |   |   |-- PartialPivLU_solve.cpp
+|   |   |   |   |-- PartialRedux_count.cpp
+|   |   |   |   |-- PartialRedux_maxCoeff.cpp
+|   |   |   |   |-- PartialRedux_minCoeff.cpp
+|   |   |   |   |-- PartialRedux_norm.cpp
+|   |   |   |   |-- PartialRedux_prod.cpp
+|   |   |   |   |-- PartialRedux_squaredNorm.cpp
+|   |   |   |   |-- PartialRedux_sum.cpp
+|   |   |   |   |-- RealQZ_compute.cpp
+|   |   |   |   |-- RealSchur_compute.cpp
+|   |   |   |   |-- RealSchur_RealSchur_MatrixType.cpp
+|   |   |   |   |-- SelfAdjointEigenSolver_compute_MatrixType2.cpp
+|   |   |   |   |-- SelfAdjointEigenSolver_compute_MatrixType.cpp
+|   |   |   |   |-- SelfAdjointEigenSolver_eigenvalues.cpp
+|   |   |   |   |-- SelfAdjointEigenSolver_eigenvectors.cpp
+|   |   |   |   |-- SelfAdjointEigenSolver_operatorInverseSqrt.cpp
+|   |   |   |   |-- SelfAdjointEigenSolver_operatorSqrt.cpp
+|   |   |   |   |-- SelfAdjointEigenSolver_SelfAdjointEigenSolver.cpp
+|   |   |   |   |-- SelfAdjointEigenSolver_SelfAdjointEigenSolver_MatrixType2.cpp
+|   |   |   |   |-- SelfAdjointEigenSolver_SelfAdjointEigenSolver_MatrixType.cpp
+|   |   |   |   |-- SelfAdjointView_eigenvalues.cpp
+|   |   |   |   |-- SelfAdjointView_operatorNorm.cpp
+|   |   |   |   |-- SparseMatrix_coeffs.cpp
+|   |   |   |   |-- TopicAliasing_block_correct.cpp
+|   |   |   |   |-- TopicAliasing_block.cpp
+|   |   |   |   |-- TopicAliasing_cwise.cpp
+|   |   |   |   |-- TopicAliasing_mult1.cpp
+|   |   |   |   |-- TopicAliasing_mult2.cpp
+|   |   |   |   |-- TopicAliasing_mult3.cpp
+|   |   |   |   |-- TopicAliasing_mult4.cpp
+|   |   |   |   |-- TopicAliasing_mult5.cpp
+|   |   |   |   |-- TopicStorageOrders_example.cpp
+|   |   |   |   |-- Triangular_solve.cpp
+|   |   |   |   |-- Tridiagonalization_compute.cpp
+|   |   |   |   |-- Tridiagonalization_decomposeInPlace.cpp
+|   |   |   |   |-- Tridiagonalization_diagonal.cpp
+|   |   |   |   |-- Tridiagonalization_householderCoefficients.cpp
+|   |   |   |   |-- Tridiagonalization_packedMatrix.cpp
+|   |   |   |   |-- Tridiagonalization_Tridiagonalization_MatrixType.cpp
+|   |   |   |   |-- tut_arithmetic_redux_minmax.cpp
+|   |   |   |   |-- tut_arithmetic_transpose_aliasing.cpp
+|   |   |   |   |-- tut_arithmetic_transpose_conjugate.cpp
+|   |   |   |   |-- tut_arithmetic_transpose_inplace.cpp
+|   |   |   |   |-- tut_matrix_assignment_resizing.cpp
+|   |   |   |   |-- Tutorial_AdvancedInitialization_Block.cpp
+|   |   |   |   |-- Tutorial_AdvancedInitialization_CommaTemporary.cpp
+|   |   |   |   |-- Tutorial_AdvancedInitialization_Join.cpp
+|   |   |   |   |-- Tutorial_AdvancedInitialization_LinSpaced.cpp
+|   |   |   |   |-- Tutorial_AdvancedInitialization_ThreeWays.cpp
+|   |   |   |   |-- Tutorial_AdvancedInitialization_Zero.cpp
+|   |   |   |   |-- Tutorial_commainit_01b.cpp
+|   |   |   |   |-- Tutorial_commainit_01.cpp
+|   |   |   |   |-- Tutorial_commainit_02.cpp
+|   |   |   |   |-- Tutorial_Map_rowmajor.cpp
+|   |   |   |   |-- Tutorial_Map_using.cpp
+|   |   |   |   |-- Tutorial_ReshapeMat2Mat.cpp
+|   |   |   |   |-- Tutorial_ReshapeMat2Vec.cpp
+|   |   |   |   |-- Tutorial_SlicingCol.cpp
+|   |   |   |   |-- Tutorial_SlicingVec.cpp
+|   |   |   |   |-- Tutorial_solve_matrix_inverse.cpp
+|   |   |   |   |-- Tutorial_solve_multiple_rhs.cpp
+|   |   |   |   |-- Tutorial_solve_reuse_decomposition.cpp
+|   |   |   |   |-- Tutorial_solve_singular.cpp
+|   |   |   |   |-- Tutorial_solve_triangular.cpp
+|   |   |   |   |-- Tutorial_solve_triangular_inplace.cpp
+|   |   |   |   |-- VectorwiseOp_homogeneous.cpp
+|   |   |   |   `-- Vectorwise_reverse.cpp
+|   |   |   |-- special_examples
+|   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |-- random_cpp11.cpp
+|   |   |   |   |-- Tutorial_sparse_example.cpp
+|   |   |   |   `-- Tutorial_sparse_example_details.cpp
+|   |   |   |-- A05_PortingFrom2To3.dox
+|   |   |   |-- AsciiQuickReference.txt
+|   |   |   |-- B01_Experimental.dox
+|   |   |   |-- ClassHierarchy.dox
+|   |   |   |-- CMakeLists.txt
+|   |   |   |-- CoeffwiseMathFunctionsTable.dox
+|   |   |   |-- CustomizingEigen_CustomScalar.dox
+|   |   |   |-- CustomizingEigen_InheritingMatrix.dox
+|   |   |   |-- CustomizingEigen_NullaryExpr.dox
+|   |   |   |-- CustomizingEigen_Plugins.dox
+|   |   |   |-- DenseDecompositionBenchmark.dox
+|   |   |   |-- Doxyfile.in
+|   |   |   |-- eigendoxy.css
+|   |   |   |-- eigendoxy_footer.html.in
+|   |   |   |-- eigendoxy_header.html.in
+|   |   |   |-- eigendoxy_layout.xml.in
+|   |   |   |-- eigendoxy_tabs.css
+|   |   |   |-- eigen_navtree_hacks.js
+|   |   |   |-- Eigen_Silly_Professor_64x64.png
+|   |   |   |-- FixedSizeVectorizable.dox
+|   |   |   |-- ftv2node.png
+|   |   |   |-- ftv2pnode.png
+|   |   |   |-- FunctionsTakingEigenTypes.dox
+|   |   |   |-- HiPerformance.dox
+|   |   |   |-- InplaceDecomposition.dox
+|   |   |   |-- InsideEigenExample.dox
+|   |   |   |-- LeastSquares.dox
+|   |   |   |-- Manual.dox
+|   |   |   |-- MatrixfreeSolverExample.dox
+|   |   |   |-- NewExpressionType.dox
+|   |   |   |-- Overview.dox
+|   |   |   |-- PassingByValue.dox
+|   |   |   |-- Pitfalls.dox
+|   |   |   |-- PreprocessorDirectives.dox
+|   |   |   |-- QuickReference.dox
+|   |   |   |-- QuickStartGuide.dox
+|   |   |   |-- SparseLinearSystems.dox
+|   |   |   |-- SparseQuickReference.dox
+|   |   |   |-- StlContainers.dox
+|   |   |   |-- StorageOrders.dox
+|   |   |   |-- StructHavingEigenMembers.dox
+|   |   |   |-- TemplateKeyword.dox
+|   |   |   |-- TopicAliasing.dox
+|   |   |   |-- TopicAssertions.dox
+|   |   |   |-- TopicCMakeGuide.dox
+|   |   |   |-- TopicEigenExpressionTemplates.dox
+|   |   |   |-- TopicLazyEvaluation.dox
+|   |   |   |-- TopicLinearAlgebraDecompositions.dox
+|   |   |   |-- TopicMultithreading.dox
+|   |   |   |-- TopicResizing.dox
+|   |   |   |-- TopicScalarTypes.dox
+|   |   |   |-- TopicVectorization.dox
+|   |   |   |-- TutorialAdvancedInitialization.dox
+|   |   |   |-- TutorialArrayClass.dox
+|   |   |   |-- TutorialBlockOperations.dox
+|   |   |   |-- tutorial.cpp
+|   |   |   |-- TutorialGeometry.dox
+|   |   |   |-- TutorialLinearAlgebra.dox
+|   |   |   |-- TutorialMapClass.dox
+|   |   |   |-- TutorialMatrixArithmetic.dox
+|   |   |   |-- TutorialMatrixClass.dox
+|   |   |   |-- TutorialReductionsVisitorsBroadcasting.dox
+|   |   |   |-- TutorialReshapeSlicing.dox
+|   |   |   |-- TutorialSparse.dox
+|   |   |   |-- TutorialSparse_example_details.dox
+|   |   |   |-- UnalignedArrayAssert.dox
+|   |   |   |-- UsingBlasLapackBackends.dox
+|   |   |   |-- UsingIntelMKL.dox
+|   |   |   |-- UsingNVCC.dox
+|   |   |   `-- WrongStackAlignment.dox
+|   |   |-- Eigen
+|   |   |   |-- src
+|   |   |   |   |-- Cholesky
+|   |   |   |   |   |-- LDLT.h
+|   |   |   |   |   |-- LLT.h
+|   |   |   |   |   `-- LLT_LAPACKE.h
+|   |   |   |   |-- CholmodSupport
+|   |   |   |   |   `-- CholmodSupport.h
+|   |   |   |   |-- Core
+|   |   |   |   |   |-- arch
+|   |   |   |   |   |   |-- AltiVec
+|   |   |   |   |   |   |   |-- Complex.h
+|   |   |   |   |   |   |   |-- MathFunctions.h
+|   |   |   |   |   |   |   `-- PacketMath.h
+|   |   |   |   |   |   |-- AVX
+|   |   |   |   |   |   |   |-- Complex.h
+|   |   |   |   |   |   |   |-- MathFunctions.h
+|   |   |   |   |   |   |   |-- PacketMath.h
+|   |   |   |   |   |   |   `-- TypeCasting.h
+|   |   |   |   |   |   |-- AVX512
+|   |   |   |   |   |   |   |-- MathFunctions.h
+|   |   |   |   |   |   |   `-- PacketMath.h
+|   |   |   |   |   |   |-- CUDA
+|   |   |   |   |   |   |   |-- Complex.h
+|   |   |   |   |   |   |   |-- Half.h
+|   |   |   |   |   |   |   |-- MathFunctions.h
+|   |   |   |   |   |   |   |-- PacketMath.h
+|   |   |   |   |   |   |   |-- PacketMathHalf.h
+|   |   |   |   |   |   |   `-- TypeCasting.h
+|   |   |   |   |   |   |-- Default
+|   |   |   |   |   |   |   |-- ConjHelper.h
+|   |   |   |   |   |   |   `-- Settings.h
+|   |   |   |   |   |   |-- NEON
+|   |   |   |   |   |   |   |-- Complex.h
+|   |   |   |   |   |   |   |-- MathFunctions.h
+|   |   |   |   |   |   |   `-- PacketMath.h
+|   |   |   |   |   |   |-- SSE
+|   |   |   |   |   |   |   |-- Complex.h
+|   |   |   |   |   |   |   |-- MathFunctions.h
+|   |   |   |   |   |   |   |-- PacketMath.h
+|   |   |   |   |   |   |   `-- TypeCasting.h
+|   |   |   |   |   |   `-- ZVector
+|   |   |   |   |   |       |-- Complex.h
+|   |   |   |   |   |       |-- MathFunctions.h
+|   |   |   |   |   |       `-- PacketMath.h
+|   |   |   |   |   |-- functors
+|   |   |   |   |   |   |-- AssignmentFunctors.h
+|   |   |   |   |   |   |-- BinaryFunctors.h
+|   |   |   |   |   |   |-- NullaryFunctors.h
+|   |   |   |   |   |   |-- StlFunctors.h
+|   |   |   |   |   |   |-- TernaryFunctors.h
+|   |   |   |   |   |   `-- UnaryFunctors.h
+|   |   |   |   |   |-- products
+|   |   |   |   |   |   |-- GeneralBlockPanelKernel.h
+|   |   |   |   |   |   |-- GeneralMatrixMatrix_BLAS.h
+|   |   |   |   |   |   |-- GeneralMatrixMatrix.h
+|   |   |   |   |   |   |-- GeneralMatrixMatrixTriangular_BLAS.h
+|   |   |   |   |   |   |-- GeneralMatrixMatrixTriangular.h
+|   |   |   |   |   |   |-- GeneralMatrixVector_BLAS.h
+|   |   |   |   |   |   |-- GeneralMatrixVector.h
+|   |   |   |   |   |   |-- Parallelizer.h
+|   |   |   |   |   |   |-- SelfadjointMatrixMatrix_BLAS.h
+|   |   |   |   |   |   |-- SelfadjointMatrixMatrix.h
+|   |   |   |   |   |   |-- SelfadjointMatrixVector_BLAS.h
+|   |   |   |   |   |   |-- SelfadjointMatrixVector.h
+|   |   |   |   |   |   |-- SelfadjointProduct.h
+|   |   |   |   |   |   |-- SelfadjointRank2Update.h
+|   |   |   |   |   |   |-- TriangularMatrixMatrix_BLAS.h
+|   |   |   |   |   |   |-- TriangularMatrixMatrix.h
+|   |   |   |   |   |   |-- TriangularMatrixVector_BLAS.h
+|   |   |   |   |   |   |-- TriangularMatrixVector.h
+|   |   |   |   |   |   |-- TriangularSolverMatrix_BLAS.h
+|   |   |   |   |   |   |-- TriangularSolverMatrix.h
+|   |   |   |   |   |   `-- TriangularSolverVector.h
+|   |   |   |   |   |-- util
+|   |   |   |   |   |   |-- BlasUtil.h
+|   |   |   |   |   |   |-- Constants.h
+|   |   |   |   |   |   |-- DisableStupidWarnings.h
+|   |   |   |   |   |   |-- ForwardDeclarations.h
+|   |   |   |   |   |   |-- Macros.h
+|   |   |   |   |   |   |-- Memory.h
+|   |   |   |   |   |   |-- Meta.h
+|   |   |   |   |   |   |-- MKL_support.h
+|   |   |   |   |   |   |-- NonMPL2.h
+|   |   |   |   |   |   |-- ReenableStupidWarnings.h
+|   |   |   |   |   |   |-- StaticAssert.h
+|   |   |   |   |   |   `-- XprHelper.h
+|   |   |   |   |   |-- ArrayBase.h
+|   |   |   |   |   |-- Array.h
+|   |   |   |   |   |-- ArrayWrapper.h
+|   |   |   |   |   |-- AssignEvaluator.h
+|   |   |   |   |   |-- Assign.h
+|   |   |   |   |   |-- Assign_MKL.h
+|   |   |   |   |   |-- BandMatrix.h
+|   |   |   |   |   |-- Block.h
+|   |   |   |   |   |-- BooleanRedux.h
+|   |   |   |   |   |-- CommaInitializer.h
+|   |   |   |   |   |-- ConditionEstimator.h
+|   |   |   |   |   |-- CoreEvaluators.h
+|   |   |   |   |   |-- CoreIterators.h
+|   |   |   |   |   |-- CwiseBinaryOp.h
+|   |   |   |   |   |-- CwiseNullaryOp.h
+|   |   |   |   |   |-- CwiseTernaryOp.h
+|   |   |   |   |   |-- CwiseUnaryOp.h
+|   |   |   |   |   |-- CwiseUnaryView.h
+|   |   |   |   |   |-- DenseBase.h
+|   |   |   |   |   |-- DenseCoeffsBase.h
+|   |   |   |   |   |-- DenseStorage.h
+|   |   |   |   |   |-- Diagonal.h
+|   |   |   |   |   |-- DiagonalMatrix.h
+|   |   |   |   |   |-- DiagonalProduct.h
+|   |   |   |   |   |-- Dot.h
+|   |   |   |   |   |-- EigenBase.h
+|   |   |   |   |   |-- ForceAlignedAccess.h
+|   |   |   |   |   |-- Fuzzy.h
+|   |   |   |   |   |-- GeneralProduct.h
+|   |   |   |   |   |-- GenericPacketMath.h
+|   |   |   |   |   |-- GlobalFunctions.h
+|   |   |   |   |   |-- Inverse.h
+|   |   |   |   |   |-- IO.h
+|   |   |   |   |   |-- MapBase.h
+|   |   |   |   |   |-- Map.h
+|   |   |   |   |   |-- MathFunctions.h
+|   |   |   |   |   |-- MathFunctionsImpl.h
+|   |   |   |   |   |-- MatrixBase.h
+|   |   |   |   |   |-- Matrix.h
+|   |   |   |   |   |-- NestByValue.h
+|   |   |   |   |   |-- NoAlias.h
+|   |   |   |   |   |-- NumTraits.h
+|   |   |   |   |   |-- PermutationMatrix.h
+|   |   |   |   |   |-- PlainObjectBase.h
+|   |   |   |   |   |-- ProductEvaluators.h
+|   |   |   |   |   |-- Product.h
+|   |   |   |   |   |-- Random.h
+|   |   |   |   |   |-- Redux.h
+|   |   |   |   |   |-- Ref.h
+|   |   |   |   |   |-- Replicate.h
+|   |   |   |   |   |-- ReturnByValue.h
+|   |   |   |   |   |-- Reverse.h
+|   |   |   |   |   |-- Select.h
+|   |   |   |   |   |-- SelfAdjointView.h
+|   |   |   |   |   |-- SelfCwiseBinaryOp.h
+|   |   |   |   |   |-- Solve.h
+|   |   |   |   |   |-- SolverBase.h
+|   |   |   |   |   |-- SolveTriangular.h
+|   |   |   |   |   |-- StableNorm.h
+|   |   |   |   |   |-- Stride.h
+|   |   |   |   |   |-- Swap.h
+|   |   |   |   |   |-- Transpose.h
+|   |   |   |   |   |-- Transpositions.h
+|   |   |   |   |   |-- TriangularMatrix.h
+|   |   |   |   |   |-- VectorBlock.h
+|   |   |   |   |   |-- VectorwiseOp.h
+|   |   |   |   |   `-- Visitor.h
+|   |   |   |   |-- Eigenvalues
+|   |   |   |   |   |-- ComplexEigenSolver.h
+|   |   |   |   |   |-- ComplexSchur.h
+|   |   |   |   |   |-- ComplexSchur_LAPACKE.h
+|   |   |   |   |   |-- EigenSolver.h
+|   |   |   |   |   |-- GeneralizedEigenSolver.h
+|   |   |   |   |   |-- GeneralizedSelfAdjointEigenSolver.h
+|   |   |   |   |   |-- HessenbergDecomposition.h
+|   |   |   |   |   |-- MatrixBaseEigenvalues.h
+|   |   |   |   |   |-- RealQZ.h
+|   |   |   |   |   |-- RealSchur.h
+|   |   |   |   |   |-- RealSchur_LAPACKE.h
+|   |   |   |   |   |-- SelfAdjointEigenSolver.h
+|   |   |   |   |   |-- SelfAdjointEigenSolver_LAPACKE.h
+|   |   |   |   |   `-- Tridiagonalization.h
+|   |   |   |   |-- Geometry
+|   |   |   |   |   |-- arch
+|   |   |   |   |   |   `-- Geometry_SSE.h
+|   |   |   |   |   |-- AlignedBox.h
+|   |   |   |   |   |-- AngleAxis.h
+|   |   |   |   |   |-- EulerAngles.h
+|   |   |   |   |   |-- Homogeneous.h
+|   |   |   |   |   |-- Hyperplane.h
+|   |   |   |   |   |-- OrthoMethods.h
+|   |   |   |   |   |-- ParametrizedLine.h
+|   |   |   |   |   |-- Quaternion.h
+|   |   |   |   |   |-- Rotation2D.h
+|   |   |   |   |   |-- RotationBase.h
+|   |   |   |   |   |-- Scaling.h
+|   |   |   |   |   |-- Transform.h
+|   |   |   |   |   |-- Translation.h
+|   |   |   |   |   `-- Umeyama.h
+|   |   |   |   |-- Householder
+|   |   |   |   |   |-- BlockHouseholder.h
+|   |   |   |   |   |-- Householder.h
+|   |   |   |   |   `-- HouseholderSequence.h
+|   |   |   |   |-- IterativeLinearSolvers
+|   |   |   |   |   |-- BasicPreconditioners.h
+|   |   |   |   |   |-- BiCGSTAB.h
+|   |   |   |   |   |-- ConjugateGradient.h
+|   |   |   |   |   |-- IncompleteCholesky.h
+|   |   |   |   |   |-- IncompleteLUT.h
+|   |   |   |   |   |-- IterativeSolverBase.h
+|   |   |   |   |   |-- LeastSquareConjugateGradient.h
+|   |   |   |   |   `-- SolveWithGuess.h
+|   |   |   |   |-- Jacobi
+|   |   |   |   |   `-- Jacobi.h
+|   |   |   |   |-- LU
+|   |   |   |   |   |-- arch
+|   |   |   |   |   |   `-- Inverse_SSE.h
+|   |   |   |   |   |-- Determinant.h
+|   |   |   |   |   |-- FullPivLU.h
+|   |   |   |   |   |-- InverseImpl.h
+|   |   |   |   |   |-- PartialPivLU.h
+|   |   |   |   |   `-- PartialPivLU_LAPACKE.h
+|   |   |   |   |-- MetisSupport
+|   |   |   |   |   `-- MetisSupport.h
+|   |   |   |   |-- misc
+|   |   |   |   |   |-- blas.h
+|   |   |   |   |   |-- Image.h
+|   |   |   |   |   |-- Kernel.h
+|   |   |   |   |   |-- lapacke.h
+|   |   |   |   |   |-- lapacke_mangling.h
+|   |   |   |   |   |-- lapack.h
+|   |   |   |   |   `-- RealSvd2x2.h
+|   |   |   |   |-- OrderingMethods
+|   |   |   |   |   |-- Amd.h
+|   |   |   |   |   |-- Eigen_Colamd.h
+|   |   |   |   |   `-- Ordering.h
+|   |   |   |   |-- PardisoSupport
+|   |   |   |   |   `-- PardisoSupport.h
+|   |   |   |   |-- PaStiXSupport
+|   |   |   |   |   `-- PaStiXSupport.h
+|   |   |   |   |-- plugins
+|   |   |   |   |   |-- ArrayCwiseBinaryOps.h
+|   |   |   |   |   |-- ArrayCwiseUnaryOps.h
+|   |   |   |   |   |-- BlockMethods.h
+|   |   |   |   |   |-- CommonCwiseBinaryOps.h
+|   |   |   |   |   |-- CommonCwiseUnaryOps.h
+|   |   |   |   |   |-- MatrixCwiseBinaryOps.h
+|   |   |   |   |   `-- MatrixCwiseUnaryOps.h
+|   |   |   |   |-- QR
+|   |   |   |   |   |-- ColPivHouseholderQR.h
+|   |   |   |   |   |-- ColPivHouseholderQR_LAPACKE.h
+|   |   |   |   |   |-- CompleteOrthogonalDecomposition.h
+|   |   |   |   |   |-- FullPivHouseholderQR.h
+|   |   |   |   |   |-- HouseholderQR.h
+|   |   |   |   |   `-- HouseholderQR_LAPACKE.h
+|   |   |   |   |-- SparseCholesky
+|   |   |   |   |   |-- SimplicialCholesky.h
+|   |   |   |   |   `-- SimplicialCholesky_impl.h
+|   |   |   |   |-- SparseCore
+|   |   |   |   |   |-- AmbiVector.h
+|   |   |   |   |   |-- CompressedStorage.h
+|   |   |   |   |   |-- ConservativeSparseSparseProduct.h
+|   |   |   |   |   |-- MappedSparseMatrix.h
+|   |   |   |   |   |-- SparseAssign.h
+|   |   |   |   |   |-- SparseBlock.h
+|   |   |   |   |   |-- SparseColEtree.h
+|   |   |   |   |   |-- SparseCompressedBase.h
+|   |   |   |   |   |-- SparseCwiseBinaryOp.h
+|   |   |   |   |   |-- SparseCwiseUnaryOp.h
+|   |   |   |   |   |-- SparseDenseProduct.h
+|   |   |   |   |   |-- SparseDiagonalProduct.h
+|   |   |   |   |   |-- SparseDot.h
+|   |   |   |   |   |-- SparseFuzzy.h
+|   |   |   |   |   |-- SparseMap.h
+|   |   |   |   |   |-- SparseMatrixBase.h
+|   |   |   |   |   |-- SparseMatrix.h
+|   |   |   |   |   |-- SparsePermutation.h
+|   |   |   |   |   |-- SparseProduct.h
+|   |   |   |   |   |-- SparseRedux.h
+|   |   |   |   |   |-- SparseRef.h
+|   |   |   |   |   |-- SparseSelfAdjointView.h
+|   |   |   |   |   |-- SparseSolverBase.h
+|   |   |   |   |   |-- SparseSparseProductWithPruning.h
+|   |   |   |   |   |-- SparseTranspose.h
+|   |   |   |   |   |-- SparseTriangularView.h
+|   |   |   |   |   |-- SparseUtil.h
+|   |   |   |   |   |-- SparseVector.h
+|   |   |   |   |   |-- SparseView.h
+|   |   |   |   |   `-- TriangularSolver.h
+|   |   |   |   |-- SparseLU
+|   |   |   |   |   |-- SparseLU_column_bmod.h
+|   |   |   |   |   |-- SparseLU_column_dfs.h
+|   |   |   |   |   |-- SparseLU_copy_to_ucol.h
+|   |   |   |   |   |-- SparseLU_gemm_kernel.h
+|   |   |   |   |   |-- SparseLU.h
+|   |   |   |   |   |-- SparseLU_heap_relax_snode.h
+|   |   |   |   |   |-- SparseLUImpl.h
+|   |   |   |   |   |-- SparseLU_kernel_bmod.h
+|   |   |   |   |   |-- SparseLU_Memory.h
+|   |   |   |   |   |-- SparseLU_panel_bmod.h
+|   |   |   |   |   |-- SparseLU_panel_dfs.h
+|   |   |   |   |   |-- SparseLU_pivotL.h
+|   |   |   |   |   |-- SparseLU_pruneL.h
+|   |   |   |   |   |-- SparseLU_relax_snode.h
+|   |   |   |   |   |-- SparseLU_Structs.h
+|   |   |   |   |   |-- SparseLU_SupernodalMatrix.h
+|   |   |   |   |   `-- SparseLU_Utils.h
+|   |   |   |   |-- SparseQR
+|   |   |   |   |   `-- SparseQR.h
+|   |   |   |   |-- SPQRSupport
+|   |   |   |   |   `-- SuiteSparseQRSupport.h
+|   |   |   |   |-- StlSupport
+|   |   |   |   |   |-- details.h
+|   |   |   |   |   |-- StdDeque.h
+|   |   |   |   |   |-- StdList.h
+|   |   |   |   |   `-- StdVector.h
+|   |   |   |   |-- SuperLUSupport
+|   |   |   |   |   `-- SuperLUSupport.h
+|   |   |   |   |-- SVD
+|   |   |   |   |   |-- BDCSVD.h
+|   |   |   |   |   |-- JacobiSVD.h
+|   |   |   |   |   |-- JacobiSVD_LAPACKE.h
+|   |   |   |   |   |-- SVDBase.h
+|   |   |   |   |   `-- UpperBidiagonalization.h
+|   |   |   |   `-- UmfPackSupport
+|   |   |   |       `-- UmfPackSupport.h
+|   |   |   |-- Cholesky
+|   |   |   |-- CholmodSupport
+|   |   |   |-- CMakeLists.txt
+|   |   |   |-- Core
+|   |   |   |-- Dense
+|   |   |   |-- Eigen
+|   |   |   |-- Eigenvalues
+|   |   |   |-- Geometry
+|   |   |   |-- Householder
+|   |   |   |-- IterativeLinearSolvers
+|   |   |   |-- Jacobi
+|   |   |   |-- LU
+|   |   |   |-- MetisSupport
+|   |   |   |-- OrderingMethods
+|   |   |   |-- PardisoSupport
+|   |   |   |-- PaStiXSupport
+|   |   |   |-- QR
+|   |   |   |-- QtAlignedMalloc
+|   |   |   |-- Sparse
+|   |   |   |-- SparseCholesky
+|   |   |   |-- SparseCore
+|   |   |   |-- SparseLU
+|   |   |   |-- SparseQR
+|   |   |   |-- SPQRSupport
+|   |   |   |-- StdDeque
+|   |   |   |-- StdList
+|   |   |   |-- StdVector
+|   |   |   |-- SuperLUSupport
+|   |   |   |-- SVD
+|   |   |   `-- UmfPackSupport
+|   |   |-- failtest
+|   |   |   |-- bdcsvd_int.cpp
+|   |   |   |-- block_nonconst_ctor_on_const_xpr_0.cpp
+|   |   |   |-- block_nonconst_ctor_on_const_xpr_1.cpp
+|   |   |   |-- block_nonconst_ctor_on_const_xpr_2.cpp
+|   |   |   |-- block_on_const_type_actually_const_0.cpp
+|   |   |   |-- block_on_const_type_actually_const_1.cpp
+|   |   |   |-- CMakeLists.txt
+|   |   |   |-- colpivqr_int.cpp
+|   |   |   |-- const_qualified_block_method_retval_0.cpp
+|   |   |   |-- const_qualified_block_method_retval_1.cpp
+|   |   |   |-- const_qualified_diagonal_method_retval.cpp
+|   |   |   |-- const_qualified_transpose_method_retval.cpp
+|   |   |   |-- cwiseunaryview_nonconst_ctor_on_const_xpr.cpp
+|   |   |   |-- cwiseunaryview_on_const_type_actually_const.cpp
+|   |   |   |-- diagonal_nonconst_ctor_on_const_xpr.cpp
+|   |   |   |-- diagonal_on_const_type_actually_const.cpp
+|   |   |   |-- eigensolver_cplx.cpp
+|   |   |   |-- eigensolver_int.cpp
+|   |   |   |-- failtest_sanity_check.cpp
+|   |   |   |-- fullpivlu_int.cpp
+|   |   |   |-- fullpivqr_int.cpp
+|   |   |   |-- jacobisvd_int.cpp
+|   |   |   |-- ldlt_int.cpp
+|   |   |   |-- llt_int.cpp
+|   |   |   |-- map_nonconst_ctor_on_const_ptr_0.cpp
+|   |   |   |-- map_nonconst_ctor_on_const_ptr_1.cpp
+|   |   |   |-- map_nonconst_ctor_on_const_ptr_2.cpp
+|   |   |   |-- map_nonconst_ctor_on_const_ptr_3.cpp
+|   |   |   |-- map_nonconst_ctor_on_const_ptr_4.cpp
+|   |   |   |-- map_on_const_type_actually_const_0.cpp
+|   |   |   |-- map_on_const_type_actually_const_1.cpp
+|   |   |   |-- partialpivlu_int.cpp
+|   |   |   |-- qr_int.cpp
+|   |   |   |-- ref_1.cpp
+|   |   |   |-- ref_2.cpp
+|   |   |   |-- ref_3.cpp
+|   |   |   |-- ref_4.cpp
+|   |   |   |-- ref_5.cpp
+|   |   |   |-- selfadjointview_nonconst_ctor_on_const_xpr.cpp
+|   |   |   |-- selfadjointview_on_const_type_actually_const.cpp
+|   |   |   |-- sparse_ref_1.cpp
+|   |   |   |-- sparse_ref_2.cpp
+|   |   |   |-- sparse_ref_3.cpp
+|   |   |   |-- sparse_ref_4.cpp
+|   |   |   |-- sparse_ref_5.cpp
+|   |   |   |-- sparse_storage_mismatch.cpp
+|   |   |   |-- swap_1.cpp
+|   |   |   |-- swap_2.cpp
+|   |   |   |-- ternary_1.cpp
+|   |   |   |-- ternary_2.cpp
+|   |   |   |-- transpose_nonconst_ctor_on_const_xpr.cpp
+|   |   |   |-- transpose_on_const_type_actually_const.cpp
+|   |   |   |-- triangularview_nonconst_ctor_on_const_xpr.cpp
+|   |   |   `-- triangularview_on_const_type_actually_const.cpp
+|   |   |-- lapack
+|   |   |   |-- cholesky.cpp
+|   |   |   |-- clacgv.f
+|   |   |   |-- cladiv.f
+|   |   |   |-- clarfb.f
+|   |   |   |-- clarf.f
+|   |   |   |-- clarfg.f
+|   |   |   |-- clarft.f
+|   |   |   |-- CMakeLists.txt
+|   |   |   |-- complex_double.cpp
+|   |   |   |-- complex_single.cpp
+|   |   |   |-- dladiv.f
+|   |   |   |-- dlamch.f
+|   |   |   |-- dlapy2.f
+|   |   |   |-- dlapy3.f
+|   |   |   |-- dlarfb.f
+|   |   |   |-- dlarf.f
+|   |   |   |-- dlarfg.f
+|   |   |   |-- dlarft.f
+|   |   |   |-- double.cpp
+|   |   |   |-- dsecnd_NONE.f
+|   |   |   |-- eigenvalues.cpp
+|   |   |   |-- ilaclc.f
+|   |   |   |-- ilaclr.f
+|   |   |   |-- iladlc.f
+|   |   |   |-- iladlr.f
+|   |   |   |-- ilaslc.f
+|   |   |   |-- ilaslr.f
+|   |   |   |-- ilazlc.f
+|   |   |   |-- ilazlr.f
+|   |   |   |-- lapack_common.h
+|   |   |   |-- lu.cpp
+|   |   |   |-- second_NONE.f
+|   |   |   |-- single.cpp
+|   |   |   |-- sladiv.f
+|   |   |   |-- slamch.f
+|   |   |   |-- slapy2.f
+|   |   |   |-- slapy3.f
+|   |   |   |-- slarfb.f
+|   |   |   |-- slarf.f
+|   |   |   |-- slarfg.f
+|   |   |   |-- slarft.f
+|   |   |   |-- svd.cpp
+|   |   |   |-- zlacgv.f
+|   |   |   |-- zladiv.f
+|   |   |   |-- zlarfb.f
+|   |   |   |-- zlarf.f
+|   |   |   |-- zlarfg.f
+|   |   |   `-- zlarft.f
+|   |   |-- scripts
+|   |   |   |-- buildtests.in
+|   |   |   |-- cdashtesting.cmake.in
+|   |   |   |-- check.in
+|   |   |   |-- CMakeLists.txt
+|   |   |   |-- debug.in
+|   |   |   |-- eigen_gen_credits.cpp
+|   |   |   |-- eigen_gen_docs
+|   |   |   |-- release.in
+|   |   |   `-- relicense.py
+|   |   |-- test
+|   |   |   |-- adjoint.cpp
+|   |   |   |-- array.cpp
+|   |   |   |-- array_for_matrix.cpp
+|   |   |   |-- array_of_string.cpp
+|   |   |   |-- array_replicate.cpp
+|   |   |   |-- array_reverse.cpp
+|   |   |   |-- bandmatrix.cpp
+|   |   |   |-- basicstuff.cpp
+|   |   |   |-- bdcsvd.cpp
+|   |   |   |-- bicgstab.cpp
+|   |   |   |-- block.cpp
+|   |   |   |-- boostmultiprec.cpp
+|   |   |   |-- bug1213.cpp
+|   |   |   |-- bug1213.h
+|   |   |   |-- bug1213_main.cpp
+|   |   |   |-- cholesky.cpp
+|   |   |   |-- cholmod_support.cpp
+|   |   |   |-- CMakeLists.txt
+|   |   |   |-- commainitializer.cpp
+|   |   |   |-- conjugate_gradient.cpp
+|   |   |   |-- conservative_resize.cpp
+|   |   |   |-- constructor.cpp
+|   |   |   |-- corners.cpp
+|   |   |   |-- ctorleak.cpp
+|   |   |   |-- cuda_basic.cu
+|   |   |   |-- cuda_common.h
+|   |   |   |-- denseLM.cpp
+|   |   |   |-- dense_storage.cpp
+|   |   |   |-- determinant.cpp
+|   |   |   |-- diagonal.cpp
+|   |   |   |-- diagonalmatrices.cpp
+|   |   |   |-- dontalign.cpp
+|   |   |   |-- dynalloc.cpp
+|   |   |   |-- eigen2support.cpp
+|   |   |   |-- eigensolver_complex.cpp
+|   |   |   |-- eigensolver_generalized_real.cpp
+|   |   |   |-- eigensolver_generic.cpp
+|   |   |   |-- eigensolver_selfadjoint.cpp
+|   |   |   |-- evaluator_common.h
+|   |   |   |-- evaluators.cpp
+|   |   |   |-- exceptions.cpp
+|   |   |   |-- fastmath.cpp
+|   |   |   |-- first_aligned.cpp
+|   |   |   |-- geo_alignedbox.cpp
+|   |   |   |-- geo_eulerangles.cpp
+|   |   |   |-- geo_homogeneous.cpp
+|   |   |   |-- geo_hyperplane.cpp
+|   |   |   |-- geo_orthomethods.cpp
+|   |   |   |-- geo_parametrizedline.cpp
+|   |   |   |-- geo_quaternion.cpp
+|   |   |   |-- geo_transformations.cpp
+|   |   |   |-- half_float.cpp
+|   |   |   |-- hessenberg.cpp
+|   |   |   |-- householder.cpp
+|   |   |   |-- incomplete_cholesky.cpp
+|   |   |   |-- inplace_decomposition.cpp
+|   |   |   |-- integer_types.cpp
+|   |   |   |-- inverse.cpp
+|   |   |   |-- is_same_dense.cpp
+|   |   |   |-- jacobi.cpp
+|   |   |   |-- jacobisvd.cpp
+|   |   |   |-- linearstructure.cpp
+|   |   |   |-- lscg.cpp
+|   |   |   |-- lu.cpp
+|   |   |   |-- main.h
+|   |   |   |-- mapped_matrix.cpp
+|   |   |   |-- mapstaticmethods.cpp
+|   |   |   |-- mapstride.cpp
+|   |   |   |-- meta.cpp
+|   |   |   |-- metis_support.cpp
+|   |   |   |-- miscmatrices.cpp
+|   |   |   |-- mixingtypes.cpp
+|   |   |   |-- mpl2only.cpp
+|   |   |   |-- nesting_ops.cpp
+|   |   |   |-- nomalloc.cpp
+|   |   |   |-- nullary.cpp
+|   |   |   |-- numext.cpp
+|   |   |   |-- packetmath.cpp
+|   |   |   |-- pardiso_support.cpp
+|   |   |   |-- pastix_support.cpp
+|   |   |   |-- permutationmatrices.cpp
+|   |   |   |-- prec_inverse_4x4.cpp
+|   |   |   |-- product_extra.cpp
+|   |   |   |-- product.h
+|   |   |   |-- product_large.cpp
+|   |   |   |-- product_mmtr.cpp
+|   |   |   |-- product_notemporary.cpp
+|   |   |   |-- product_selfadjoint.cpp
+|   |   |   |-- product_small.cpp
+|   |   |   |-- product_symm.cpp
+|   |   |   |-- product_syrk.cpp
+|   |   |   |-- product_trmm.cpp
+|   |   |   |-- product_trmv.cpp
+|   |   |   |-- product_trsolve.cpp
+|   |   |   |-- qr_colpivoting.cpp
+|   |   |   |-- qr.cpp
+|   |   |   |-- qr_fullpivoting.cpp
+|   |   |   |-- qtvector.cpp
+|   |   |   |-- rand.cpp
+|   |   |   |-- real_qz.cpp
+|   |   |   |-- redux.cpp
+|   |   |   |-- ref.cpp
+|   |   |   |-- resize.cpp
+|   |   |   |-- rvalue_types.cpp
+|   |   |   |-- schur_complex.cpp
+|   |   |   |-- schur_real.cpp
+|   |   |   |-- selfadjoint.cpp
+|   |   |   |-- simplicial_cholesky.cpp
+|   |   |   |-- sizeof.cpp
+|   |   |   |-- sizeoverflow.cpp
+|   |   |   |-- smallvectors.cpp
+|   |   |   |-- sparse_basic.cpp
+|   |   |   |-- sparse_block.cpp
+|   |   |   |-- sparse.h
+|   |   |   |-- sparseLM.cpp
+|   |   |   |-- sparselu.cpp
+|   |   |   |-- sparse_permutations.cpp
+|   |   |   |-- sparse_product.cpp
+|   |   |   |-- sparseqr.cpp
+|   |   |   |-- sparse_ref.cpp
+|   |   |   |-- sparse_solver.h
+|   |   |   |-- sparse_solvers.cpp
+|   |   |   |-- sparse_vector.cpp
+|   |   |   |-- special_numbers.cpp
+|   |   |   |-- spqr_support.cpp
+|   |   |   |-- stable_norm.cpp
+|   |   |   |-- stddeque.cpp
+|   |   |   |-- stddeque_overload.cpp
+|   |   |   |-- stdlist.cpp
+|   |   |   |-- stdlist_overload.cpp
+|   |   |   |-- stdvector.cpp
+|   |   |   |-- stdvector_overload.cpp
+|   |   |   |-- superlu_support.cpp
+|   |   |   |-- svd_common.h
+|   |   |   |-- svd_fill.h
+|   |   |   |-- swap.cpp
+|   |   |   |-- triangular.cpp
+|   |   |   |-- umeyama.cpp
+|   |   |   |-- umfpack_support.cpp
+|   |   |   |-- unalignedassert.cpp
+|   |   |   |-- unalignedcount.cpp
+|   |   |   |-- upperbidiagonalization.cpp
+|   |   |   |-- vectorization_logic.cpp
+|   |   |   |-- vectorwiseop.cpp
+|   |   |   |-- visitor.cpp
+|   |   |   `-- zerosized.cpp
+|   |   |-- unsupported
+|   |   |   |-- bench
+|   |   |   |   `-- bench_svd.cpp
+|   |   |   |-- doc
+|   |   |   |   |-- examples
+|   |   |   |   |   |-- BVH_Example.cpp
+|   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |-- EulerAngles.cpp
+|   |   |   |   |   |-- FFT.cpp
+|   |   |   |   |   |-- MatrixExponential.cpp
+|   |   |   |   |   |-- MatrixFunction.cpp
+|   |   |   |   |   |-- MatrixLogarithm.cpp
+|   |   |   |   |   |-- MatrixPower.cpp
+|   |   |   |   |   |-- MatrixPower_optimal.cpp
+|   |   |   |   |   |-- MatrixSine.cpp
+|   |   |   |   |   |-- MatrixSinh.cpp
+|   |   |   |   |   |-- MatrixSquareRoot.cpp
+|   |   |   |   |   |-- PolynomialSolver1.cpp
+|   |   |   |   |   `-- PolynomialUtils1.cpp
+|   |   |   |   |-- snippets
+|   |   |   |   |   `-- CMakeLists.txt
+|   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |-- eigendoxy_layout.xml.in
+|   |   |   |   `-- Overview.dox
+|   |   |   |-- Eigen
+|   |   |   |   |-- CXX11
+|   |   |   |   |   |-- src
+|   |   |   |   |   |   |-- Tensor
+|   |   |   |   |   |   |   |-- README.md
+|   |   |   |   |   |   |   |-- TensorArgMax.h
+|   |   |   |   |   |   |   |-- TensorAssign.h
+|   |   |   |   |   |   |   |-- TensorBase.h
+|   |   |   |   |   |   |   |-- TensorBroadcasting.h
+|   |   |   |   |   |   |   |-- TensorChipping.h
+|   |   |   |   |   |   |   |-- TensorConcatenation.h
+|   |   |   |   |   |   |   |-- TensorContractionBlocking.h
+|   |   |   |   |   |   |   |-- TensorContractionCuda.h
+|   |   |   |   |   |   |   |-- TensorContraction.h
+|   |   |   |   |   |   |   |-- TensorContractionMapper.h
+|   |   |   |   |   |   |   |-- TensorContractionThreadPool.h
+|   |   |   |   |   |   |   |-- TensorConversion.h
+|   |   |   |   |   |   |   |-- TensorConvolution.h
+|   |   |   |   |   |   |   |-- TensorCostModel.h
+|   |   |   |   |   |   |   |-- TensorCustomOp.h
+|   |   |   |   |   |   |   |-- TensorDeviceCuda.h
+|   |   |   |   |   |   |   |-- TensorDeviceDefault.h
+|   |   |   |   |   |   |   |-- TensorDevice.h
+|   |   |   |   |   |   |   |-- TensorDeviceSycl.h
+|   |   |   |   |   |   |   |-- TensorDeviceThreadPool.h
+|   |   |   |   |   |   |   |-- TensorDimensionList.h
+|   |   |   |   |   |   |   |-- TensorDimensions.h
+|   |   |   |   |   |   |   |-- TensorEvalTo.h
+|   |   |   |   |   |   |   |-- TensorEvaluator.h
+|   |   |   |   |   |   |   |-- TensorExecutor.h
+|   |   |   |   |   |   |   |-- TensorExpr.h
+|   |   |   |   |   |   |   |-- TensorFFT.h
+|   |   |   |   |   |   |   |-- TensorFixedSize.h
+|   |   |   |   |   |   |   |-- TensorForcedEval.h
+|   |   |   |   |   |   |   |-- TensorForwardDeclarations.h
+|   |   |   |   |   |   |   |-- TensorFunctors.h
+|   |   |   |   |   |   |   |-- TensorGenerator.h
+|   |   |   |   |   |   |   |-- TensorGlobalFunctions.h
+|   |   |   |   |   |   |   |-- Tensor.h
+|   |   |   |   |   |   |   |-- TensorImagePatch.h
+|   |   |   |   |   |   |   |-- TensorIndexList.h
+|   |   |   |   |   |   |   |-- TensorInflation.h
+|   |   |   |   |   |   |   |-- TensorInitializer.h
+|   |   |   |   |   |   |   |-- TensorIntDiv.h
+|   |   |   |   |   |   |   |-- TensorIO.h
+|   |   |   |   |   |   |   |-- TensorLayoutSwap.h
+|   |   |   |   |   |   |   |-- TensorMacros.h
+|   |   |   |   |   |   |   |-- TensorMap.h
+|   |   |   |   |   |   |   |-- TensorMeta.h
+|   |   |   |   |   |   |   |-- TensorMorphing.h
+|   |   |   |   |   |   |   |-- TensorPadding.h
+|   |   |   |   |   |   |   |-- TensorPatch.h
+|   |   |   |   |   |   |   |-- TensorRandom.h
+|   |   |   |   |   |   |   |-- TensorReductionCuda.h
+|   |   |   |   |   |   |   |-- TensorReduction.h
+|   |   |   |   |   |   |   |-- TensorReductionSycl.h
+|   |   |   |   |   |   |   |-- TensorRef.h
+|   |   |   |   |   |   |   |-- TensorReverse.h
+|   |   |   |   |   |   |   |-- TensorScan.h
+|   |   |   |   |   |   |   |-- TensorShuffling.h
+|   |   |   |   |   |   |   |-- TensorStorage.h
+|   |   |   |   |   |   |   |-- TensorStriding.h
+|   |   |   |   |   |   |   |-- TensorSyclConvertToDeviceExpression.h
+|   |   |   |   |   |   |   |-- TensorSyclExprConstructor.h
+|   |   |   |   |   |   |   |-- TensorSyclExtractAccessor.h
+|   |   |   |   |   |   |   |-- TensorSyclExtractFunctors.h
+|   |   |   |   |   |   |   |-- TensorSycl.h
+|   |   |   |   |   |   |   |-- TensorSyclLeafCount.h
+|   |   |   |   |   |   |   |-- TensorSyclPlaceHolderExpr.h
+|   |   |   |   |   |   |   |-- TensorSyclRun.h
+|   |   |   |   |   |   |   |-- TensorSyclTuple.h
+|   |   |   |   |   |   |   |-- TensorTraits.h
+|   |   |   |   |   |   |   |-- TensorUInt128.h
+|   |   |   |   |   |   |   `-- TensorVolumePatch.h
+|   |   |   |   |   |   |-- TensorSymmetry
+|   |   |   |   |   |   |   |-- util
+|   |   |   |   |   |   |   |   `-- TemplateGroupTheory.h
+|   |   |   |   |   |   |   |-- DynamicSymmetry.h
+|   |   |   |   |   |   |   |-- StaticSymmetry.h
+|   |   |   |   |   |   |   `-- Symmetry.h
+|   |   |   |   |   |   |-- ThreadPool
+|   |   |   |   |   |   |   |-- EventCount.h
+|   |   |   |   |   |   |   |-- NonBlockingThreadPool.h
+|   |   |   |   |   |   |   |-- RunQueue.h
+|   |   |   |   |   |   |   |-- SimpleThreadPool.h
+|   |   |   |   |   |   |   |-- ThreadEnvironment.h
+|   |   |   |   |   |   |   |-- ThreadLocal.h
+|   |   |   |   |   |   |   |-- ThreadPoolInterface.h
+|   |   |   |   |   |   |   `-- ThreadYield.h
+|   |   |   |   |   |   `-- util
+|   |   |   |   |   |       |-- CXX11Meta.h
+|   |   |   |   |   |       |-- CXX11Workarounds.h
+|   |   |   |   |   |       |-- EmulateArray.h
+|   |   |   |   |   |       |-- EmulateCXX11Meta.h
+|   |   |   |   |   |       `-- MaxSizeVector.h
+|   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |-- Tensor
+|   |   |   |   |   |-- TensorSymmetry
+|   |   |   |   |   `-- ThreadPool
+|   |   |   |   |-- src
+|   |   |   |   |   |-- AutoDiff
+|   |   |   |   |   |   |-- AutoDiffJacobian.h
+|   |   |   |   |   |   |-- AutoDiffScalar.h
+|   |   |   |   |   |   `-- AutoDiffVector.h
+|   |   |   |   |   |-- BVH
+|   |   |   |   |   |   |-- BVAlgorithms.h
+|   |   |   |   |   |   `-- KdBVH.h
+|   |   |   |   |   |-- Eigenvalues
+|   |   |   |   |   |   `-- ArpackSelfAdjointEigenSolver.h
+|   |   |   |   |   |-- EulerAngles
+|   |   |   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |   |   |-- EulerAngles.h
+|   |   |   |   |   |   `-- EulerSystem.h
+|   |   |   |   |   |-- FFT
+|   |   |   |   |   |   |-- ei_fftw_impl.h
+|   |   |   |   |   |   `-- ei_kissfft_impl.h
+|   |   |   |   |   |-- IterativeSolvers
+|   |   |   |   |   |   |-- ConstrainedConjGrad.h
+|   |   |   |   |   |   |-- DGMRES.h
+|   |   |   |   |   |   |-- GMRES.h
+|   |   |   |   |   |   |-- IncompleteLU.h
+|   |   |   |   |   |   |-- IterationController.h
+|   |   |   |   |   |   |-- MINRES.h
+|   |   |   |   |   |   `-- Scaling.h
+|   |   |   |   |   |-- KroneckerProduct
+|   |   |   |   |   |   `-- KroneckerTensorProduct.h
+|   |   |   |   |   |-- LevenbergMarquardt
+|   |   |   |   |   |   |-- CopyrightMINPACK.txt
+|   |   |   |   |   |   |-- LevenbergMarquardt.h
+|   |   |   |   |   |   |-- LMcovar.h
+|   |   |   |   |   |   |-- LMonestep.h
+|   |   |   |   |   |   |-- LMpar.h
+|   |   |   |   |   |   `-- LMqrsolv.h
+|   |   |   |   |   |-- MatrixFunctions
+|   |   |   |   |   |   |-- MatrixExponential.h
+|   |   |   |   |   |   |-- MatrixFunction.h
+|   |   |   |   |   |   |-- MatrixLogarithm.h
+|   |   |   |   |   |   |-- MatrixPower.h
+|   |   |   |   |   |   |-- MatrixSquareRoot.h
+|   |   |   |   |   |   `-- StemFunction.h
+|   |   |   |   |   |-- MoreVectorization
+|   |   |   |   |   |   `-- MathFunctions.h
+|   |   |   |   |   |-- NonLinearOptimization
+|   |   |   |   |   |   |-- chkder.h
+|   |   |   |   |   |   |-- covar.h
+|   |   |   |   |   |   |-- dogleg.h
+|   |   |   |   |   |   |-- fdjac1.h
+|   |   |   |   |   |   |-- HybridNonLinearSolver.h
+|   |   |   |   |   |   |-- LevenbergMarquardt.h
+|   |   |   |   |   |   |-- lmpar.h
+|   |   |   |   |   |   |-- qrsolv.h
+|   |   |   |   |   |   |-- r1mpyq.h
+|   |   |   |   |   |   |-- r1updt.h
+|   |   |   |   |   |   `-- rwupdt.h
+|   |   |   |   |   |-- NumericalDiff
+|   |   |   |   |   |   `-- NumericalDiff.h
+|   |   |   |   |   |-- Polynomials
+|   |   |   |   |   |   |-- Companion.h
+|   |   |   |   |   |   |-- PolynomialSolver.h
+|   |   |   |   |   |   `-- PolynomialUtils.h
+|   |   |   |   |   |-- Skyline
+|   |   |   |   |   |   |-- SkylineInplaceLU.h
+|   |   |   |   |   |   |-- SkylineMatrixBase.h
+|   |   |   |   |   |   |-- SkylineMatrix.h
+|   |   |   |   |   |   |-- SkylineProduct.h
+|   |   |   |   |   |   |-- SkylineStorage.h
+|   |   |   |   |   |   `-- SkylineUtil.h
+|   |   |   |   |   |-- SparseExtra
+|   |   |   |   |   |   |-- BlockOfDynamicSparseMatrix.h
+|   |   |   |   |   |   |-- BlockSparseMatrix.h
+|   |   |   |   |   |   |-- DynamicSparseMatrix.h
+|   |   |   |   |   |   |-- MarketIO.h
+|   |   |   |   |   |   |-- MatrixMarketIterator.h
+|   |   |   |   |   |   `-- RandomSetter.h
+|   |   |   |   |   |-- SpecialFunctions
+|   |   |   |   |   |   |-- arch
+|   |   |   |   |   |   |   `-- CUDA
+|   |   |   |   |   |   |       `-- CudaSpecialFunctions.h
+|   |   |   |   |   |   |-- SpecialFunctionsArrayAPI.h
+|   |   |   |   |   |   |-- SpecialFunctionsFunctors.h
+|   |   |   |   |   |   |-- SpecialFunctionsHalf.h
+|   |   |   |   |   |   |-- SpecialFunctionsImpl.h
+|   |   |   |   |   |   `-- SpecialFunctionsPacketMath.h
+|   |   |   |   |   `-- Splines
+|   |   |   |   |       |-- SplineFitting.h
+|   |   |   |   |       |-- SplineFwd.h
+|   |   |   |   |       `-- Spline.h
+|   |   |   |   |-- AdolcForward
+|   |   |   |   |-- AlignedVector3
+|   |   |   |   |-- ArpackSupport
+|   |   |   |   |-- AutoDiff
+|   |   |   |   |-- BVH
+|   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |-- EulerAngles
+|   |   |   |   |-- FFT
+|   |   |   |   |-- IterativeSolvers
+|   |   |   |   |-- KroneckerProduct
+|   |   |   |   |-- LevenbergMarquardt
+|   |   |   |   |-- MatrixFunctions
+|   |   |   |   |-- MoreVectorization
+|   |   |   |   |-- MPRealSupport
+|   |   |   |   |-- NonLinearOptimization
+|   |   |   |   |-- NumericalDiff
+|   |   |   |   |-- OpenGLSupport
+|   |   |   |   |-- Polynomials
+|   |   |   |   |-- Skyline
+|   |   |   |   |-- SparseExtra
+|   |   |   |   |-- SpecialFunctions
+|   |   |   |   `-- Splines
+|   |   |   |-- test
+|   |   |   |   |-- mpreal
+|   |   |   |   |   `-- mpreal.h
+|   |   |   |   |-- alignedvector3.cpp
+|   |   |   |   |-- autodiff.cpp
+|   |   |   |   |-- autodiff_scalar.cpp
+|   |   |   |   |-- BVH.cpp
+|   |   |   |   |-- CMakeLists.txt
+|   |   |   |   |-- cxx11_eventcount.cpp
+|   |   |   |   |-- cxx11_meta.cpp
+|   |   |   |   |-- cxx11_non_blocking_thread_pool.cpp
+|   |   |   |   |-- cxx11_runqueue.cpp
+|   |   |   |   |-- cxx11_tensor_argmax.cpp
+|   |   |   |   |-- cxx11_tensor_argmax_cuda.cu
+|   |   |   |   |-- cxx11_tensor_assign.cpp
+|   |   |   |   |-- cxx11_tensor_broadcasting.cpp
+|   |   |   |   |-- cxx11_tensor_broadcast_sycl.cpp
+|   |   |   |   |-- cxx11_tensor_cast_float16_cuda.cu
+|   |   |   |   |-- cxx11_tensor_casts.cpp
+|   |   |   |   |-- cxx11_tensor_chipping.cpp
+|   |   |   |   |-- cxx11_tensor_comparisons.cpp
+|   |   |   |   |-- cxx11_tensor_complex_cuda.cu
+|   |   |   |   |-- cxx11_tensor_complex_cwise_ops_cuda.cu
+|   |   |   |   |-- cxx11_tensor_concatenation.cpp
+|   |   |   |   |-- cxx11_tensor_const.cpp
+|   |   |   |   |-- cxx11_tensor_contract_cuda.cu
+|   |   |   |   |-- cxx11_tensor_contraction.cpp
+|   |   |   |   |-- cxx11_tensor_convolution.cpp
+|   |   |   |   |-- cxx11_tensor_cuda.cu
+|   |   |   |   |-- cxx11_tensor_custom_index.cpp
+|   |   |   |   |-- cxx11_tensor_custom_op.cpp
+|   |   |   |   |-- cxx11_tensor_device.cu
+|   |   |   |   |-- cxx11_tensor_device_sycl.cpp
+|   |   |   |   |-- cxx11_tensor_dimension.cpp
+|   |   |   |   |-- cxx11_tensor_empty.cpp
+|   |   |   |   |-- cxx11_tensor_expr.cpp
+|   |   |   |   |-- cxx11_tensor_fft.cpp
+|   |   |   |   |-- cxx11_tensor_fixed_size.cpp
+|   |   |   |   |-- cxx11_tensor_forced_eval.cpp
+|   |   |   |   |-- cxx11_tensor_forced_eval_sycl.cpp
+|   |   |   |   |-- cxx11_tensor_generator.cpp
+|   |   |   |   |-- cxx11_tensor_ifft.cpp
+|   |   |   |   |-- cxx11_tensor_image_patch.cpp
+|   |   |   |   |-- cxx11_tensor_index_list.cpp
+|   |   |   |   |-- cxx11_tensor_inflation.cpp
+|   |   |   |   |-- cxx11_tensor_intdiv.cpp
+|   |   |   |   |-- cxx11_tensor_io.cpp
+|   |   |   |   |-- cxx11_tensor_layout_swap.cpp
+|   |   |   |   |-- cxx11_tensor_lvalue.cpp
+|   |   |   |   |-- cxx11_tensor_map.cpp
+|   |   |   |   |-- cxx11_tensor_math.cpp
+|   |   |   |   |-- cxx11_tensor_mixed_indices.cpp
+|   |   |   |   |-- cxx11_tensor_morphing.cpp
+|   |   |   |   |-- cxx11_tensor_notification.cpp
+|   |   |   |   |-- cxx11_tensor_of_complex.cpp
+|   |   |   |   |-- cxx11_tensor_of_const_values.cpp
+|   |   |   |   |-- cxx11_tensor_of_float16_cuda.cu
+|   |   |   |   |-- cxx11_tensor_of_strings.cpp
+|   |   |   |   |-- cxx11_tensor_padding.cpp
+|   |   |   |   |-- cxx11_tensor_patch.cpp
+|   |   |   |   |-- cxx11_tensor_random.cpp
+|   |   |   |   |-- cxx11_tensor_random_cuda.cu
+|   |   |   |   |-- cxx11_tensor_reduction.cpp
+|   |   |   |   |-- cxx11_tensor_reduction_cuda.cu
+|   |   |   |   |-- cxx11_tensor_reduction_sycl.cpp
+|   |   |   |   |-- cxx11_tensor_ref.cpp
+|   |   |   |   |-- cxx11_tensor_reverse.cpp
+|   |   |   |   |-- cxx11_tensor_roundings.cpp
+|   |   |   |   |-- cxx11_tensor_scan.cpp
+|   |   |   |   |-- cxx11_tensor_scan_cuda.cu
+|   |   |   |   |-- cxx11_tensor_shuffling.cpp
+|   |   |   |   |-- cxx11_tensor_simple.cpp
+|   |   |   |   |-- cxx11_tensor_striding.cpp
+|   |   |   |   |-- cxx11_tensor_sugar.cpp
+|   |   |   |   |-- cxx11_tensor_sycl.cpp
+|   |   |   |   |-- cxx11_tensor_symmetry.cpp
+|   |   |   |   |-- cxx11_tensor_thread_pool.cpp
+|   |   |   |   |-- cxx11_tensor_uint128.cpp
+|   |   |   |   |-- cxx11_tensor_volume_patch.cpp
+|   |   |   |   |-- dgmres.cpp
+|   |   |   |   |-- EulerAngles.cpp
+|   |   |   |   |-- FFT.cpp
+|   |   |   |   |-- FFTW.cpp
+|   |   |   |   |-- forward_adolc.cpp
+|   |   |   |   |-- gmres.cpp
+|   |   |   |   |-- kronecker_product.cpp
+|   |   |   |   |-- levenberg_marquardt.cpp
+|   |   |   |   |-- matrix_exponential.cpp
+|   |   |   |   |-- matrix_function.cpp
+|   |   |   |   |-- matrix_functions.h
+|   |   |   |   |-- matrix_power.cpp
+|   |   |   |   |-- matrix_square_root.cpp
+|   |   |   |   |-- minres.cpp
+|   |   |   |   |-- mpreal_support.cpp
+|   |   |   |   |-- NonLinearOptimization.cpp
+|   |   |   |   |-- NumericalDiff.cpp
+|   |   |   |   |-- openglsupport.cpp
+|   |   |   |   |-- polynomialsolver.cpp
+|   |   |   |   |-- polynomialutils.cpp
+|   |   |   |   |-- sparse_extra.cpp
+|   |   |   |   |-- special_functions.cpp
+|   |   |   |   `-- splines.cpp
+|   |   |   |-- CMakeLists.txt
+|   |   |   `-- README.txt
+|   |   |-- CMakeLists.txt
+|   |   |-- COPYING.BSD
+|   |   |-- COPYING.GPL
+|   |   |-- COPYING.LGPL
+|   |   |-- COPYING.MINPACK
+|   |   |-- COPYING.MPL2
+|   |   |-- COPYING.README
+|   |   |-- CTestConfig.cmake
+|   |   |-- CTestCustom.cmake.in
+|   |   |-- eigen3.pc.in
+|   |   |-- INSTALL
+|   |   |-- README.md
+|   |   `-- signature_of_eigen3_matrix_library
+|   |-- lcov
+|   |   |-- bin
+|   |   |   |-- copy_dates.sh
+|   |   |   |-- gendesc
+|   |   |   |-- genhtml
+|   |   |   |-- geninfo
+|   |   |   |-- genpng
+|   |   |   |-- get_changes.sh
+|   |   |   |-- get_version.sh
+|   |   |   |-- install.sh
+|   |   |   |-- lcov
+|   |   |   `-- updateversion.pl
+|   |   |-- example
+|   |   |   |-- methods
+|   |   |   |   |-- gauss.c
+|   |   |   |   `-- iterate.c
+|   |   |   |-- descriptions.txt
+|   |   |   |-- example.c
+|   |   |   |-- gauss.h
+|   |   |   |-- iterate.h
+|   |   |   |-- Makefile
+|   |   |   `-- README
+|   |   |-- man
+|   |   |   |-- gendesc.1
+|   |   |   |-- genhtml.1
+|   |   |   |-- geninfo.1
+|   |   |   |-- genpng.1
+|   |   |   |-- lcov.1
+|   |   |   `-- lcovrc.5
+|   |   |-- rpm
+|   |   |   `-- lcov.spec
+|   |   |-- test
+|   |   |   |-- bin
+|   |   |   |   |-- common
+|   |   |   |   |-- mkinfo
+|   |   |   |   |-- norminfo
+|   |   |   |   |-- test_run
+|   |   |   |   |-- test_skip
+|   |   |   |   |-- testsuite_exit
+|   |   |   |   `-- testsuite_init
+|   |   |   |-- genhtml_output
+|   |   |   |   |-- genhtml_test
+|   |   |   |   `-- Makefile
+|   |   |   |-- lcov_add_files
+|   |   |   |   |-- add_test
+|   |   |   |   `-- Makefile
+|   |   |   |-- lcov_diff
+|   |   |   |   |-- new
+|   |   |   |   |   |-- Makefile
+|   |   |   |   |   `-- prog.c
+|   |   |   |   |-- old
+|   |   |   |   |   |-- Makefile
+|   |   |   |   |   `-- prog.c
+|   |   |   |   |-- diff_test
+|   |   |   |   `-- Makefile
+|   |   |   |-- lcov_misc
+|   |   |   |   `-- Makefile
+|   |   |   |-- lcov_summary
+|   |   |   |   |-- check_counts
+|   |   |   |   `-- Makefile
+|   |   |   |-- profiles
+|   |   |   |   |-- large
+|   |   |   |   |-- medium
+|   |   |   |   `-- small
+|   |   |   |-- common.mak
+|   |   |   |-- lcovrc
+|   |   |   `-- Makefile
+|   |   |-- CHANGES
+|   |   |-- CONTRIBUTING
+|   |   |-- COPYING
+|   |   |-- lcovrc
+|   |   |-- Makefile
+|   |   `-- README
+|   |-- phys
+|   |   `-- units
+|   |       |-- io.hpp
+|   |       |-- io_output_eng.hpp
+|   |       |-- io_output.hpp
+|   |       |-- io_symbols.hpp
+|   |       |-- other_units.hpp
+|   |       |-- physical_constants.hpp
+|   |       |-- quantity.hpp
+|   |       |-- quantity_io_ampere.hpp
+|   |       |-- quantity_io_becquerel.hpp
+|   |       |-- quantity_io_candela.hpp
+|   |       |-- quantity_io_celsius.hpp
+|   |       |-- quantity_io_coulomb.hpp
+|   |       |-- quantity_io_dimensionless.hpp
+|   |       |-- quantity_io_engineering.hpp
+|   |       |-- quantity_io_farad.hpp
+|   |       |-- quantity_io_gray.hpp
+|   |       |-- quantity_io_henry.hpp
+|   |       |-- quantity_io_hertz.hpp
+|   |       |-- quantity_io.hpp
+|   |       |-- quantity_io_joule.hpp
+|   |       |-- quantity_io_kelvin.hpp
+|   |       |-- quantity_io_kilogram.hpp
+|   |       |-- quantity_io_lumen.hpp
+|   |       |-- quantity_io_lux.hpp
+|   |       |-- quantity_io_meter.hpp
+|   |       |-- quantity_io_mole.hpp
+|   |       |-- quantity_io_newton.hpp
+|   |       |-- quantity_io_ohm.hpp
+|   |       |-- quantity_io_pascal.hpp
+|   |       |-- quantity_io_radian.hpp
+|   |       |-- quantity_io_second.hpp
+|   |       |-- quantity_io_siemens.hpp
+|   |       |-- quantity_io_sievert.hpp
+|   |       |-- quantity_io_speed.hpp
+|   |       |-- quantity_io_steradian.hpp
+|   |       |-- quantity_io_symbols.hpp
+|   |       |-- quantity_io_tesla.hpp
+|   |       |-- quantity_io_volt.hpp
+|   |       |-- quantity_io_watt.hpp
+|   |       `-- quantity_io_weber.hpp
+|   |-- CMakeLists.txt
+|   |-- eigen-eigen-b3f3d4950030.tar.bz2
+|   |-- pythia8235.tar.bz2
+|   `-- ThirdParty.dox
+|-- Tools
+|   |-- CMakeLists.txt
+|   |-- plot_crossings.sh
+|   `-- plot_tracks.sh
+|-- AUTHORS
+|-- CHANGELOG
+|-- CMakeLists.txt
+|-- COLLABORATION_AGREEMENT.md
+|-- CONTRIBUTING.md
+|-- corsika.dox
+|-- do-clang-format.py
+|-- do-copyright.py
+|-- FIXME.md
+|-- LICENSE
+|-- MCNET_GUIDELINES
+|-- README.md
+`-- SCIENTIFIC_AUTHORS
+```
diff --git a/Framework/CMakeLists.txt b/Framework/CMakeLists.txt
deleted file mode 100644
index 4e7baba25..000000000
--- a/Framework/CMakeLists.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-add_subdirectory (Analytics)
-add_subdirectory (Cascade)
-add_subdirectory (Geometry)
-add_subdirectory (Logging)
-add_subdirectory (Particles)
-add_subdirectory (ProcessSequence)
-add_subdirectory (Random)
-add_subdirectory (StackInterface)
-add_subdirectory (Testing)
-add_subdirectory (Utilities)
-add_subdirectory (Units)
-
-
-
-
-
-
-
diff --git a/Framework/Cascade/CMakeLists.txt b/Framework/Cascade/CMakeLists.txt
deleted file mode 100644
index 2a1209973..000000000
--- a/Framework/Cascade/CMakeLists.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-# namespace of library -> location of header files
-set (
-  CORSIKAcascade_NAMESPACE
-  corsika/cascade
-  )
-
-# header files of this library
-set (
-  CORSIKAcascade_HEADERS
-  Cascade.h
-  testCascade.h
-  )
-
-add_library (CORSIKAcascade INTERFACE)
-
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAcascade ${CORSIKAcascade_NAMESPACE} ${CORSIKAcascade_HEADERS})
-
-target_link_libraries(
-  CORSIKAcascade
-  INTERFACE
-  CORSIKAsetup
-  CORSIKArandom
-  CORSIKAstackinterface
-  CORSIKAparticles
-  CORSIKAgeometry
-  CORSIKAenvironment
-  CORSIKAprocesssequence
-  CORSIKAunits
-  CORSIKAlogging
-  )
-
-# include directive for upstream code
-target_include_directories (
-  CORSIKAcascade
-  INTERFACE
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/>
-  )
-
-# install library
-install (
-  FILES ${CORSIKAcascade_HEADERS}
-  DESTINATION include/${CORSIKAcascade_NAMESPACE}
-  )
-
-# ----------------
-# code unit testing
-CORSIKA_ADD_TEST(testCascade)
-target_link_libraries (
-  testCascade
-  CORSIKAcascade
-  ProcessStackInspector
-  ProcessTrackingLine
-  CORSIKAtesting
-  )
diff --git a/Framework/Cascade/Cascade.dox b/Framework/Cascade/Cascade.dox
deleted file mode 100644
index 7ea74e9c5..000000000
--- a/Framework/Cascade/Cascade.dox
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
-
-
-  Here are have to explain the corsika::cascade::Cascade class and its
-  functionality.
-  
-
-*/
\ No newline at end of file
diff --git a/Framework/Cascade/Cascade.h b/Framework/Cascade/Cascade.h
deleted file mode 100644
index bc29bb620..000000000
--- a/Framework/Cascade/Cascade.h
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/environment/Environment.h>
-#include <corsika/logging/Logging.h>
-#include <corsika/process/ProcessReturn.h>
-#include <corsika/random/ExponentialDistribution.h>
-#include <corsika/random/RNGManager.h>
-#include <corsika/random/UniformRealDistribution.h>
-#include <corsika/stack/SecondaryView.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <corsika/stack/history/EventType.hpp>
-#include <corsika/stack/history/HistorySecondaryProducer.hpp>
-
-/*  see Issue 161, we need to include SetupStack only because we need
-    to globally define StackView. This is clearly not nice and should
-    be changed, when possible. It might be that StackView needs to be
-    templated in Cascade, but this would be even worse... so we don't
-    do that until it is really needed.
- */
-#include <corsika/setup/SetupStack.h>
-
-#include <cassert>
-#include <cmath>
-#include <limits>
-
-#include <boost/type_index.hpp>
-using boost::typeindex::type_id_with_cvr;
-
-#include <fstream>
-
-/**
- * The cascade namespace assembles all objects needed to simulate full particles cascades.
- */
-
-namespace corsika::cascade {
-
-  /**
-   * \class Cascade
-   *
-   * The Cascade class is constructed from template arguments making
-   * it very versatile. Via the template arguments physics models are
-   * plugged into the cascade simulation.
-   *
-   * <b>TTracking</b> must be a class according to the
-   * TrackingInterface providing the functions:
-   * <code>auto GetTrack(Particle const& p)</auto>,
-   * with the return type <code>geometry::Trajectory<corsika::geometry::Line>
-   * </code>
-   *
-   * <b>TProcessList</b> must be a ProcessSequence.   *
-   * <b>Stack</b> is the storage object for particle data, i.e. with
-   * Particle class type <code>Stack::ParticleType</code>
-   *
-   *
-   */
-
-  template <typename TTracking, typename TProcessList, typename TStack,
-            /*
-              TStackView is needed as explicit template parameter because
-              of issue 161 and the
-              inability of clang to understand "stack::MakeView" so far.
-             */
-            typename TStackView = corsika::setup::StackView>
-  class Cascade {
-    using Particle = typename TStack::ParticleType;
-    using VolumeTreeNode =
-        std::remove_pointer_t<decltype(((Particle*)nullptr)->GetNode())>;
-    using MediumInterface = typename VolumeTreeNode::IModelProperties;
-
-    // we only want fully configured objects
-    Cascade() = delete;
-
-  public:
-    /**
-     * Cascade class cannot be default constructed, but needs a valid
-     * list of physics processes for configuration at construct time.
-     */
-    Cascade(corsika::environment::Environment<MediumInterface> const& env, TTracking& tr,
-            TProcessList& pl, TStack& stack)
-        : environment_(env)
-        , tracking_(tr)
-        , process_sequence_(pl)
-        , stack_(stack)
-        , count_(0) {
-      C8LOG_INFO(c8_ascii_);
-      if constexpr (TStackView::has_event) {
-        C8LOG_INFO(" - With full cascade HISTORY.");
-      }
-    }
-
-    ~Cascade(){};
-
-    /**
-     * The Run function is the main simulation loop, which processes
-     * particles from the Stack until the Stack is empty.
-     */
-    void Run() {
-      setNodes();
-
-      while (!stack_.IsEmpty()) {
-        while (!stack_.IsEmpty()) {
-          C8LOG_TRACE("Stack: {}", stack_.as_string());
-          count_++;
-          auto pNext = stack_.GetNextParticle();
-          C8LOG_DEBUG(
-              "============== next particle : count={}, pid={} "
-              ", stack entries={}"
-              ", stack deleted={}",
-              count_, pNext.GetPID(), stack_.getEntries(), stack_.getDeleted());
-          Step(pNext);
-          process_sequence_.DoStack(stack_);
-        }
-        // do cascade equations, which can put new particles on Stack,
-        // thus, the double loop
-        // DoCascadeEquations();
-      }
-    }
-
-    /**
-     * Force an interaction of the top particle of the stack at its current position.
-     * Note that SetNodes() or an equivalent procedure needs to be called first if you
-     * want to call forceInteraction() for the primary interaction.
-     */
-    void forceInteraction() {
-      C8LOG_DEBUG("forced interaction!");
-      setNodes();
-      auto vParticle = stack_.GetNextParticle();
-      TStackView secondaries(vParticle);
-      interaction(secondaries);
-      process_sequence_.DoSecondaries(secondaries);
-      vParticle.Delete(); // primary particle has interacted and is gone
-    }
-
-  private:
-    /**
-     * The Step function is executed for each particle from the
-     * stack. It will calcualte geometric transport of the particles,
-     * and apply continuous and stochastic processes to it, which may
-     * lead to energy losses, scattering, absorption, decays and the
-     * production of secondary particles.
-     *
-     * New particles produced in one step are subject to further
-     * processing, e.g. thinning, etc.
-     */
-    void Step(Particle& vParticle) {
-      using namespace corsika;
-      using namespace corsika::units::si;
-
-      // determine combined total interaction length (inverse)
-      InverseGrammageType const total_inv_lambda =
-          process_sequence_.GetInverseInteractionLength(vParticle);
-
-      // sample random exponential step length in grammage
-      corsika::random::ExponentialDistribution expDist(1 / total_inv_lambda);
-      GrammageType const next_interact = expDist(rng_);
-
-      C8LOG_DEBUG(
-          "total_lambda={} g/cm2, "
-          ", next_interact={} g/cm2",
-          double((1. / total_inv_lambda) / 1_g * 1_cm * 1_cm),
-          double(next_interact / 1_g * 1_cm * 1_cm));
-
-      auto const* currentLogicalNode = vParticle.GetNode();
-
-      // assert that particle stays outside void Universe if it has no
-      // model properties set
-      assert((currentLogicalNode != &*environment_.GetUniverse() ||
-              environment_.GetUniverse()->HasModelProperties()) &&
-             "FATAL: The environment model has no valid properties set!");
-
-      // determine combined total inverse decay time
-      InverseTimeType const total_inv_lifetime =
-          process_sequence_.GetInverseLifetime(vParticle);
-
-      // sample random exponential decay time
-      corsika::random::ExponentialDistribution expDistDecay(1 / total_inv_lifetime);
-      TimeType const next_decay = expDistDecay(rng_);
-      C8LOG_DEBUG(
-          "total_lifetime={} s"
-          ", next_decay={} s",
-          (1 / total_inv_lifetime) / 1_s, next_decay / 1_s);
-
-      // convert next_decay from time to length [m]
-      LengthType const distance_decay = next_decay * vParticle.GetMomentum().norm() /
-                                        vParticle.GetEnergy() * units::constants::c;
-
-      // determine geometric tracking
-      auto [step, nextVol] = tracking_.GetTrack(vParticle);
-      auto geomMaxLength = step.GetLength(1);
-
-      // convert next_step from grammage to length
-      LengthType const distance_interact =
-          currentLogicalNode->GetModelProperties().ArclengthFromGrammage(step,
-                                                                         next_interact);
-
-      // determine the maximum geometric step length
-      LengthType const continuous_max_dist = process_sequence_.MaxStepLength(vParticle, step);
-
-      // take minimum of geometry, interaction, decay for next step
-      auto min_distance =
-          std::min({distance_interact, distance_decay, continuous_max_dist, geomMaxLength});
-
-      C8LOG_DEBUG(
-          "transport particle by : {} m "
-          "Medium transition after: {} m "
-          "Decay after: {} m "
-          "Interaction after: {} m "
-          "Continuous limit: {} m ",
-          min_distance / 1_m, geomMaxLength / 1_m, distance_decay / 1_m,
-          distance_interact / 1_m, continuous_max_dist / 1_m);
-
-      // here the particle is actually moved along the trajectory to new position:
-      step.SetLength(min_distance);
-      vParticle.SetPosition(step.GetPosition(1));
-      vParticle.SetMomentum(step.GetDirection(1) * vParticle.GetMomentum().norm());
-      vParticle.SetTime(vParticle.GetTime() + step.GetDuration());
-      std::cout << "New Position: " << vParticle.GetPosition().GetCoordinates()
-                << std::endl;
-
-      // apply all continuous processes on particle + track
-      process::EProcessReturn status = process_sequence_.DoContinuous(vParticle, step);
-
-      if (status == process::EProcessReturn::eParticleAbsorbed) {
-        C8LOG_DEBUG("Cascade: delete absorbed particle PID={} E={} GeV",
-                    vParticle.GetPID(), vParticle.GetEnergy() / 1_GeV);
-        if (!vParticle.isDeleted()) vParticle.Delete();
-        return;
-      }
-
-      C8LOG_DEBUG("sth. happening before geometric limit ? {}",
-                  ((min_distance < geomMaxLength) ? "yes" : "no"));
-
-      if (min_distance < geomMaxLength) { // interaction to happen within geometric limit
-
-        // check whether decay or interaction limits this step the
-        // outcome of decay or interaction MAY be a) new particles in
-        // secondaries, b) the projectile particle deleted (or
-        // changed)
-
-        TStackView secondaries(vParticle);
-
-        if (min_distance < continuous_max_dist) {
-          /*
-            Create SecondaryView object on Stack. The data container
-            remains untouched and identical, and 'projectil' is identical
-            to 'vParticle' above this line. However,
-            projectil.AddSecondaries populate the SecondaryView, which can
-            then be used afterwards for further processing. Thus: it is
-            important to use projectle/view (and not vParticle) for Interaction,
-            and Decay!
-          */
-
-          [[maybe_unused]] auto projectile = secondaries.GetProjectile();
-
-          if (distance_interact < distance_decay) {
-            interaction(secondaries);
-          } else {
-            decay(secondaries);
-            // make sure particle actually did decay if it should have done so
-            if (secondaries.getSize() == 1 &&
-                projectile.GetPID() == secondaries.GetNextParticle().GetPID())
-              throw std::runtime_error(
-                  fmt::format("Cascade: {} decayed into itself!",
-                              particles::GetName(projectile.GetPID())));
-          }
-
-          process_sequence_.DoSecondaries(secondaries);
-          vParticle.Delete();
-
-        } else { // step-length limitation within volume
-          C8LOG_DEBUG("step-length limitation");
-          // no extra physics happens here. just proceed to next step.
-        }
-
-        [[maybe_unused]] auto const assertion = [&] {
-          auto const* numericalNodeAfterStep =
-              environment_.GetUniverse()->GetContainingNode(vParticle.GetPosition());
-          C8LOG_TRACE("Geometry check: numericalNodeAfterStep={} currentLogicalNode={}",
-                      fmt::ptr(numericalNodeAfterStep), fmt::ptr(currentLogicalNode));
-          return numericalNodeAfterStep == currentLogicalNode;
-        };
-        assert(assertion()); // numerical and logical nodes should
-                             // match, we did not cross any volume
-                             // boundary
-
-      } else { // boundary crossing, step is limited by volume boundary
-
-	if (nextVol != currentLogicalNode) {
-	
-	  C8LOG_DEBUG("volume boundary crossing to {}", fmt::ptr(nextVol));
-
-	  if (nextVol == environment_.GetUniverse().get()) {
-	    C8LOG_DEBUG("particle left physics world, is now in unknown space -> delete");
-	    vParticle.Delete();
-	  }
-	  vParticle.SetNode(nextVol);
-	  /*
-	    DoBoundary may delete the particle (or not)
-	    
-	    caveat: any changes to vParticle, or even the production
-	    of new secondaries is currently not passed to ParticleCut,
-	    thus, particles outside the desired phase space may be produced.
-	    
-	    todo: this must be fixed.
-	  */
-	  process_sequence_.DoBoundaryCrossing(vParticle, *currentLogicalNode, *nextVol);
-	}
-      }
-    }
-
-    process::EProcessReturn decay(TStackView& view) {
-      C8LOG_DEBUG("decay");
-      units::si::InverseTimeType const actual_decay_time =
-          process_sequence_.GetInverseLifetime(view.parent());
-
-      random::UniformRealDistribution<units::si::InverseTimeType> uniDist(
-          actual_decay_time);
-      const auto sample_process = uniDist(rng_);
-      auto const returnCode = process_sequence_.SelectDecay(view, sample_process);
-      if (returnCode != process::EProcessReturn::eDecayed) {
-        C8LOG_WARN("Particle did not decay!");
-      }
-      SetEventType(view, history::EventType::Decay);
-      return returnCode;
-    }
-
-    process::EProcessReturn interaction(TStackView& view) {
-      C8LOG_DEBUG("collide");
-
-      units::si::InverseGrammageType const current_inv_length =
-          process_sequence_.GetInverseInteractionLength(view.parent());
-
-      random::UniformRealDistribution<units::si::InverseGrammageType> uniDist(
-          current_inv_length);
-      const auto sample_process = uniDist(rng_);
-      auto const returnCode = process_sequence_.SelectInteraction(view, sample_process);
-      if (returnCode != process::EProcessReturn::eInteracted) {
-        C8LOG_WARN("Particle did not interact!");
-      }
-      SetEventType(view, history::EventType::Interaction);
-      return returnCode;
-    }
-
-    /**
-     * set the nodes for all particles on the stack according to their numerical
-     * position
-     */
-    void setNodes() {
-      std::for_each(stack_.begin(), stack_.end(), [&](auto& p) {
-        auto const* numericalNode =
-            environment_.GetUniverse()->GetContainingNode(p.GetPosition());
-        p.SetNode(numericalNode);
-      });
-    }
-
-    void SetEventType(TStackView& view, [[maybe_unused]] history::EventType eventType) {
-      if constexpr (TStackView::has_event) {
-        for (auto&& sec : view) { sec.GetEvent()->setEventType(eventType); }
-      }
-    }
-
-    // but this here temporarily. Should go into dedicated file later:
-    const char* c8_ascii_ =
-        R"V0G0N(
-  ,ad8888ba,     ,ad8888ba,    88888888ba    ad88888ba   88  88      a8P          db              ad88888ba   
- d8"'    `"8b   d8"'    `"8b   88      "8b  d8"     "8b  88  88    ,88'          d88b            d8"     "8b  
-d8'            d8'        `8b  88      ,8P  Y8,          88  88  ,88"           d8'`8b           Y8a     a8P  
-88             88          88  88aaaaaa8P'  `Y8aaaaa,    88  88,d88'           d8'  `8b           "Y8aaa8P"   
-88             88          88  88""""88'      `"""""8b,  88  8888"88,         d8YaaaaY8b          ,d8"""8b,   
-Y8,            Y8,        ,8P  88    `8b            `8b  88  88P   Y8b       d8""""""""8b        d8"     "8b  
- Y8a.    .a8P   Y8a.    .a8P   88     `8b   Y8a     a8P  88  88     "88,    d8'        `8b       Y8a     a8P  
-  `"Y8888Y"'     `"Y8888Y"'    88      `8b   "Y88888P"   88  88       Y8b  d8'          `8b       "Y88888P"
-	)V0G0N";
-
-  private:
-    // Data members
-    corsika::environment::Environment<MediumInterface> const& environment_;
-    TTracking& tracking_;
-    TProcessList& process_sequence_;
-    TStack& stack_;
-    corsika::random::RNG& rng_ =
-        corsika::random::RNGManager::GetInstance().GetRandomStream("cascade");
-    unsigned int count_ = 0;
-
-  }; // end class Cascade
-
-} // namespace corsika::cascade
diff --git a/Framework/Cascade/testCascade.h b/Framework/Cascade/testCascade.h
deleted file mode 100644
index e05744143..000000000
--- a/Framework/Cascade/testCascade.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/IEmpty.hpp>
-
-#include <corsika/stack/CombinedStack.h>
-#include <corsika/stack/SecondaryView.h>
-#include <corsika/stack/node/GeometryNodeStackExtension.h>
-#include <corsika/stack/nuclear_extension/NuclearStackExtension.h>
-
-using TestEnvironmentInterface = corsika::environment::IEmpty;
-using TestEnvironmentType = corsika::environment::Environment<TestEnvironmentInterface>;
-
-template <typename T>
-using SetupGeometryDataInterface =
-    corsika::stack::node::GeometryDataInterface<T, TestEnvironmentType>;
-
-// combine particle data stack with geometry information for tracking
-template <typename StackIter>
-using StackWithGeometryInterface = corsika::stack::CombinedParticleInterface<
-    corsika::stack::nuclear_extension::ParticleDataStack::MPIType,
-    SetupGeometryDataInterface, StackIter>;
-
-using TestCascadeStack = corsika::stack::CombinedStack<
-    typename corsika::stack::nuclear_extension::ParticleDataStack::StackImpl,
-    corsika::stack::node::GeometryData<TestEnvironmentType>, StackWithGeometryInterface>;
-
-/*
-  See also Issue 161
-*/
-#if defined(__clang__)
-using TestCascadeStackView =
-    corsika::stack::SecondaryView<typename TestCascadeStack::StackImpl,
-                                  StackWithGeometryInterface>;
-#elif defined(__GNUC__) || defined(__GNUG__)
-using TestCascadeStackView = corsika::stack::MakeView<TestCascadeStack>::type;
-#endif
diff --git a/Framework/Geometry/BaseTrajectory.h b/Framework/Geometry/BaseTrajectory.h
deleted file mode 100644
index 6d61e2eeb..000000000
--- a/Framework/Geometry/BaseTrajectory.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <string>
-
-namespace corsika::geometry {
-
-  /*!
-   * Interface / base class for trajectories.
-   */
-  class BaseTrajectory {
-
-    BaseTrajectory() = delete;
-
-  public:
-    BaseTrajectory(corsika::units::si::TimeType start, corsika::units::si::TimeType end)
-        : fTStart(start)
-        , fTEnd(end) {}
-
-    //!< for \f$ t = 0 \f$, the starting Point shall be returned.
-    virtual Point GetPosition(corsika::units::si::TimeType) const = 0;
-
-    //!< the Point is return from u=0 (start) to u=1 (end)
-    virtual Point GetPosition(double u) const = 0;
-
-    /*!
-     * returns the length between two points of the trajectory
-     * parameterized by \arg t1 and \arg t2. Requires \arg t2 > \arg t1.
-     */
-
-    virtual corsika::units::si::TimeType TimeFromArclength(
-        corsika::units::si::LengthType) const = 0;
-
-    virtual LengthType ArcLength(corsika::units::si::TimeType t1,
-                                 corsika::units::si::TimeType t2) const = 0;
-
-    virtual corsika::units::si::TimeType GetDuration(
-        corsika::units::si::TimeType t1, corsika::units::si::TimeType t2) const {
-      return t2 - t1;
-    }
-
-    virtual Point GetEndpoint() const { return GetPosition(fTEnd); }
-    virtual Point GetStartpoint() const { return GetPosition(fTStart); }
-
-  protected:
-    corsika::units::si::TimeType const fTStart, fTEnd;
-  };
-
-} // namespace corsika::geometry
diff --git a/Framework/Geometry/BaseVector.h b/Framework/Geometry/BaseVector.h
deleted file mode 100644
index f66ee84e2..000000000
--- a/Framework/Geometry/BaseVector.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/geometry/CoordinateSystem.h>
-#include <corsika/geometry/QuantityVector.h>
-
-namespace corsika::geometry {
-
-  /*!
-   * Common base class for Vector and Point. Currently it does basically nothing.
-   */
-
-  template <typename dim>
-  class BaseVector {
-  protected:
-    QuantityVector<dim> qVector;
-    CoordinateSystem const* cs;
-
-  public:
-    BaseVector(CoordinateSystem const& pCS, QuantityVector<dim> pQVector)
-        : qVector(pQVector)
-        , cs(&pCS) {}
-
-    auto const& GetCoordinateSystem() const { return *cs; }
-  };
-
-} // namespace corsika::geometry
diff --git a/Framework/Geometry/CMakeLists.txt b/Framework/Geometry/CMakeLists.txt
deleted file mode 100644
index d302289b0..000000000
--- a/Framework/Geometry/CMakeLists.txt
+++ /dev/null
@@ -1,78 +0,0 @@
-set (
-  GEOMETRY_SOURCES
-  CoordinateSystem.cc
-  )
-
-set (
-  GEOMETRY_HEADERS
-  Vector.h
-  Point.h
-  Line.h
-  Sphere.h
-  Plane.h
-  Volume.h
-  CoordinateSystem.h
-  RootCoordinateSystem.h
-  Helix.h
-  BaseVector.h
-  QuantityVector.h
-  Trajectory.h
-  FourVector.h
-  Intersections.hpp
-  )
-
-set (
-  GEOMETRY_NAMESPACE
-  corsika/geometry
-  )
-
-add_library (CORSIKAgeometry STATIC ${GEOMETRY_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAgeometry ${GEOMETRY_NAMESPACE} ${GEOMETRY_HEADERS})
-
-set_target_properties (
-  CORSIKAgeometry
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-  PUBLIC_HEADER "${GEOMETRY_HEADERS}"
-  )
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  CORSIKAgeometry
-  CORSIKAunits
-  CORSIKAutilities
-  C8::ext::eigen3
-  )
-
-target_include_directories (
-  CORSIKAgeometry
-  INTERFACE
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  TARGETS CORSIKAgeometry
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-  PUBLIC_HEADER DESTINATION include/${GEOMETRY_NAMESPACE}
-  )
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST(testGeometry)
-target_link_libraries (
-  testGeometry
-  CORSIKAgeometry
-  CORSIKAunits
-  CORSIKAtesting
-  )
-
-CORSIKA_ADD_TEST(testFourVector)
-target_link_libraries (
-  testFourVector
-  CORSIKAgeometry
-  CORSIKAunits
-  CORSIKAtesting
-  )
diff --git a/Framework/Geometry/CoordinateSystem.h b/Framework/Geometry/CoordinateSystem.h
deleted file mode 100644
index bc9ecd9a2..000000000
--- a/Framework/Geometry/CoordinateSystem.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/geometry/QuantityVector.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <corsika/utl/sgn.h>
-#include <Eigen/Dense>
-#include <stdexcept>
-
-typedef Eigen::Transform<double, 3, Eigen::Affine> EigenTransform;
-typedef Eigen::Translation<double, 3> EigenTranslation;
-
-namespace corsika::geometry {
-
-  class RootCoordinateSystem;
-  template <typename T>
-  class Vector;
-
-  using corsika::units::si::length_d;
-
-  class CoordinateSystem {
-    CoordinateSystem const* reference = nullptr;
-    EigenTransform transf;
-
-    CoordinateSystem()
-        : // for creating the root CS
-        transf(EigenTransform::Identity()) {}
-
-  protected:
-    static auto CreateCS() { return CoordinateSystem(); }
-    friend corsika::geometry::RootCoordinateSystem; /// this is the only class that can
-                                                    /// create ONE unique root CS
-
-  public:
-    static EigenTransform GetTransformation(CoordinateSystem const& c1,
-                                            CoordinateSystem const& c2);
-
-    CoordinateSystem(CoordinateSystem const& reference, EigenTransform const& transf)
-        : reference(&reference)
-        , transf(transf) {}
-
-    auto& operator=(const CoordinateSystem& pCS) {
-      reference = pCS.reference;
-      transf = pCS.transf;
-      return *this;
-    }
-
-    auto translate(QuantityVector<length_d> vector) const {
-      EigenTransform const translation{EigenTranslation(vector.eVector)};
-
-      return CoordinateSystem(*this, translation);
-    }
-
-    /**
-     * creates a new CS in which vVec points in direction of the new z-axis
-     */
-    template <typename TDim>
-    auto RotateToZ(Vector<TDim> vVec) const {
-      auto const a = vVec.normalized().GetComponents(*this).eVector;
-      auto const a1 = a(0), a2 = a(1);
-
-      auto const s = utl::sgn(a(2));
-      auto const c = 1 / (1 + s * a(2));
-
-      Eigen::Matrix3d A, B;
-
-      if (s > 0) {
-        A << 1, 0, a1,                      // comment to prevent clang-format
-            0, 1, a2,                       // .
-            -a1, -a2, 1;                    // .
-        B << -a1 * a1 * c, -a1 * a2 * c, 0, // .
-            -a1 * a2 * c, -a2 * a2 * c, 0,  // .
-            0, 0, -(a1 * a1 + a2 * a2) * c; // .
-
-      } else {
-        A << 1, 0, a1,                      // .
-            0, -1, a2,                      // .
-            a1, -a2, -1;                    // .
-        B << -a1 * a1 * c, +a1 * a2 * c, 0, // .
-            -a1 * a2 * c, +a2 * a2 * c, 0,  // .
-            0, 0, (a1 * a1 + a2 * a2) * c;  // .
-      }
-
-      return CoordinateSystem(*this, EigenTransform(A + B));
-    }
-
-    template <typename TDim>
-    auto rotate(QuantityVector<TDim> axis, double angle) const {
-      if (axis.eVector.isZero()) {
-        throw std::runtime_error("null-vector given as axis parameter");
-      }
-
-      EigenTransform const rotation{Eigen::AngleAxisd(angle, axis.eVector.normalized())};
-
-      return CoordinateSystem(*this, rotation);
-    }
-
-    template <typename TDim>
-    auto translateAndRotate(QuantityVector<phys::units::length_d> translation,
-                            QuantityVector<TDim> axis, double angle) {
-      if (axis.eVector.isZero()) {
-        throw std::runtime_error("null-vector given as axis parameter");
-      }
-
-      EigenTransform const transf{Eigen::AngleAxisd(angle, axis.eVector.normalized()) *
-                                  EigenTranslation(translation.eVector)};
-
-      return CoordinateSystem(*this, transf);
-    }
-
-    auto const* GetReference() const { return reference; }
-
-    auto const& GetTransform() const { return transf; }
-
-    bool operator==(CoordinateSystem const& cs) const {
-      return reference == cs.reference && transf.matrix() == cs.transf.matrix();
-    }
-
-    bool operator!=(CoordinateSystem const& cs) const { return !(cs == *this); }
-  };
-
-} // namespace corsika::geometry
diff --git a/Framework/Geometry/FourVector.h b/Framework/Geometry/FourVector.h
deleted file mode 100644
index 2ea2b28d4..000000000
--- a/Framework/Geometry/FourVector.h
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/geometry/Vector.h>
-#include <corsika/units/PhysicalUnits.h>
-
-#include <iostream>
-
-namespace corsika::geometry {
-
-  /**
-     FourVector supports "full" units, e.g. E in [GeV/c] and p in [GeV],
-     or also t in [s] and r in [m], etc.
-
-     However, for HEP applications it is also possible to use E and p
-     both in [GeV].
-
-     The FourVector can return NormSqr and Norm, whereas Norm is
-     sqrt(abs(NormSqr)). The physical units are always calculated and
-     returned properly.
-
-     FourVector can also return if it is TimeLike, SpaceLike or PhotonLike.
-
-     When a FourVector is initialized with a lvalue reference, this is
-     also used for the internal storage, which should lead to complete
-     disappearance of the FourVector class during optimization.
-   */
-
-  template <typename TimeType, typename SpaceVecType>
-  class FourVector {
-
-  public:
-    using SpaceType = typename std::decay<SpaceVecType>::type::Quantity;
-
-    //! check the types and the physical units here:
-    static_assert(
-        std::is_same<typename std::decay<TimeType>::type, SpaceType>::value ||
-            std::is_same<typename std::decay<TimeType>::type,
-                         decltype(std::declval<SpaceType>() / corsika::units::si::meter *
-                                  corsika::units::si::second)>::value,
-        "Units of time-like and space-like coordinates must either be idential "
-        "(e.g. GeV) or [E/c]=[p]");
-
-  public:
-    FourVector(const TimeType& eT, const SpaceVecType& eS)
-        : fTimeLike(eT)
-        , fSpaceLike(eS) {}
-
-    TimeType GetTimeLikeComponent() const { return fTimeLike; }
-    SpaceVecType& GetSpaceLikeComponents() { return fSpaceLike; }
-    const SpaceVecType& GetSpaceLikeComponents() const { return fSpaceLike; }
-
-    auto GetNormSqr() const { return GetTimeSquared() - fSpaceLike.squaredNorm(); }
-
-    SpaceType GetNorm() const { return sqrt(abs(GetNormSqr())); }
-
-    bool IsTimelike() const {
-      return GetTimeSquared() < fSpaceLike.squaredNorm();
-    } //! Norm2 < 0
-
-    bool IsSpacelike() const {
-      return GetTimeSquared() > fSpaceLike.squaredNorm();
-    } //! Norm2 > 0
-
-    /* this is not numerically stable
-    bool IsPhotonlike() const {
-      return GetTimeSquared() == fSpaceLike.squaredNorm();
-    } //! Norm2 == 0
-    */
-
-    FourVector& operator+=(const FourVector& b) {
-      fTimeLike += b.fTimeLike;
-      fSpaceLike += b.fSpaceLike;
-      return *this;
-    }
-
-    FourVector& operator-=(const FourVector& b) {
-      fTimeLike -= b.fTimeLike;
-      fSpaceLike -= b.fSpaceLike;
-      return *this;
-    }
-
-    FourVector& operator*=(const double b) {
-      fTimeLike *= b;
-      fSpaceLike *= b;
-      return *this;
-    }
-
-    FourVector& operator/=(const double b) {
-      fTimeLike /= b;
-      fSpaceLike.GetComponents() /= b; // TODO: WHY IS THIS??????
-      return *this;
-    }
-
-    FourVector& operator/(const double b) {
-      *this /= b;
-      return *this;
-    }
-
-    /**
-       Note that the product between two 4-vectors assumes that you use
-       the same "c" convention for both. Only the LHS vector is checked
-       for this. You cannot mix different conventions due to
-       unit-checking.
-     */
-    SpaceType operator*(const FourVector& b) {
-      if constexpr (std::is_same<typename std::decay<TimeType>::type,
-                                 decltype(std::declval<SpaceType>() /
-                                          corsika::units::si::meter *
-                                          corsika::units::si::second)>::value)
-        return fTimeLike * b.fTimeLike *
-                   (corsika::units::constants::c * corsika::units::constants::c) -
-               fSpaceLike.norm();
-      else
-        return fTimeLike * fTimeLike - fSpaceLike.norm();
-    }
-
-  private:
-    /**
-       This function is automatically compiled to use of ignore the
-       extra factor of "c" for the time-like quantity
-     */
-    auto GetTimeSquared() const {
-      if constexpr (std::is_same<typename std::decay<TimeType>::type,
-                                 decltype(std::declval<SpaceType>() /
-                                          corsika::units::si::meter *
-                                          corsika::units::si::second)>::value)
-        return fTimeLike * fTimeLike *
-               (corsika::units::constants::c * corsika::units::constants::c);
-      else
-        return fTimeLike * fTimeLike;
-    }
-
-  protected:
-    //! the data members
-    TimeType fTimeLike;
-    SpaceVecType fSpaceLike;
-
-    //! the friends: math operators
-    template <typename T, typename U>
-    friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type>
-    operator+(const FourVector<T, U>&, const FourVector<T, U>&);
-
-    template <typename T, typename U>
-    friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type>
-    operator-(const FourVector<T, U>&, const FourVector<T, U>&);
-
-    template <typename T, typename U>
-    friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type>
-    operator*(const FourVector<T, U>&, const double);
-
-    template <typename T, typename U>
-    friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type>
-    operator/(const FourVector<T, U>&, const double);
-  };
-
-  /**
-      The math operator+
-   */
-  template <typename TimeType, typename SpaceVecType>
-  inline FourVector<typename std::decay<TimeType>::type,
-                    typename std::decay<SpaceVecType>::type>
-  operator+(const FourVector<TimeType, SpaceVecType>& a,
-            const FourVector<TimeType, SpaceVecType>& b) {
-    return FourVector<typename std::decay<TimeType>::type,
-                      typename std::decay<SpaceVecType>::type>(
-        a.fTimeLike + b.fTimeLike, a.fSpaceLike + b.fSpaceLike);
-  }
-
-  /**
-     The math operator-
-  */
-  template <typename TimeType, typename SpaceVecType>
-  inline FourVector<typename std::decay<TimeType>::type,
-                    typename std::decay<SpaceVecType>::type>
-  operator-(const FourVector<TimeType, SpaceVecType>& a,
-            const FourVector<TimeType, SpaceVecType>& b) {
-    return FourVector<typename std::decay<TimeType>::type,
-                      typename std::decay<SpaceVecType>::type>(
-        a.fTimeLike - b.fTimeLike, a.fSpaceLike - b.fSpaceLike);
-  }
-
-  /**
-     The math operator*
-  */
-  template <typename TimeType, typename SpaceVecType>
-  inline FourVector<typename std::decay<TimeType>::type,
-                    typename std::decay<SpaceVecType>::type>
-  operator*(const FourVector<TimeType, SpaceVecType>& a, const double b) {
-    return FourVector<typename std::decay<TimeType>::type,
-                      typename std::decay<SpaceVecType>::type>(a.fTimeLike * b,
-                                                               a.fSpaceLike * b);
-  }
-
-  /**
-      The math operator/
-   */
-  template <typename TimeType, typename SpaceVecType>
-  inline FourVector<typename std::decay<TimeType>::type,
-                    typename std::decay<SpaceVecType>::type>
-  operator/(const FourVector<TimeType, SpaceVecType>& a, const double b) {
-    return FourVector<typename std::decay<TimeType>::type,
-                      typename std::decay<SpaceVecType>::type>(a.fTimeLike / b,
-                                                               a.fSpaceLike / b);
-  }
-
-} // namespace corsika::geometry
diff --git a/Framework/Geometry/Helix.h b/Framework/Geometry/Helix.h
deleted file mode 100644
index 5deaa0822..000000000
--- a/Framework/Geometry/Helix.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <cmath>
-
-namespace corsika::geometry {
-  /*!
-   * A Helix is defined by the cyclotron frequency \f$ \omega_c \f$, the initial
-   * Point r0 and
-   * the velocity vectors \f$ \vec{v}_{\parallel} \f$ and \f$ \vec{v}_{\perp} \f$
-   * denoting the projections of the initial velocity \f$ \vec{v}_0 \f$ parallel
-   * and perpendicular to the axis \f$ \vec{B} \f$, respectively, i.e.
-   * \f{align*}{
-        \vec{v}_{\parallel} &= \frac{\vec{v}_0 \cdot \vec{B}}{\vec{B}^2} \vec{B} \\
-        \vec{v}_{\perp} &= \vec{v}_0 - \vec{v}_{\parallel}
-     \f}
-   */
-
-  class Helix {
-
-    using VelocityVec = Vector<corsika::units::si::SpeedType::dimension_type>;
-
-    Point const r0;
-    corsika::units::si::FrequencyType const omegaC;
-    VelocityVec const vPar;
-    VelocityVec const vPerp, uPerp;
-
-    corsika::units::si::LengthType const radius;
-
-  public:
-    Helix(Point const& pR0, corsika::units::si::FrequencyType pOmegaC,
-          VelocityVec const& pvPar, VelocityVec const& pvPerp)
-        : r0(pR0)
-        , omegaC(pOmegaC)
-        , vPar(pvPar)
-        , vPerp(pvPerp)
-        , uPerp(vPerp.cross(vPar.normalized()))
-        , radius(pvPar.norm() / abs(pOmegaC)) {}
-
-    Point GetPosition(corsika::units::si::TimeType t) const {
-      return r0 + vPar * t +
-             (vPerp * (cos(omegaC * t) - 1) + uPerp * sin(omegaC * t)) / omegaC;
-    }
-
-    VelocityVec GetVelocity(corsika::units::si::TimeType t) const {
-      return vPar + (vPerp * (cos(omegaC * t) - 1) + uPerp * sin(omegaC * t));
-    }
-
-    Point PositionFromArclength(corsika::units::si::LengthType l) const {
-      return GetPosition(TimeFromArclength(l));
-    }
-
-    auto GetRadius() const { return radius; }
-
-    corsika::units::si::LengthType ArcLength(corsika::units::si::TimeType t1,
-                                             corsika::units::si::TimeType t2) const {
-      return (vPar + vPerp).norm() * (t2 - t1);
-    }
-
-    corsika::units::si::TimeType TimeFromArclength(
-        corsika::units::si::LengthType l) const {
-      return l / (vPar + vPerp).norm();
-    }
-  };
-
-} // namespace corsika::geometry
diff --git a/Framework/Geometry/Line.h b/Framework/Geometry/Line.h
deleted file mode 100644
index f54b02dbd..000000000
--- a/Framework/Geometry/Line.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/units/PhysicalUnits.h>
-
-namespace corsika::geometry {
-
-  /**
-   * \class Line
-   *
-   * A Line describes a movement in three dimensional space. It
-   * consists of a Point `$\vec{p_0}$` and and a speed-Vector
-   * `$\vec{v}$`, so that it can return GetPosition as
-   * `$\vec{p_0}*\vec{v}*t$` for any value of time `$t$`.
-   *
-   **/
-
-  class Line {
-
-    using VelocityVec = Vector<corsika::units::si::SpeedType::dimension_type>;
-
-    Point const r0;
-    VelocityVec const v0;
-
-  public:
-    Line() = delete;
-    Line(const Line&) = default;
-    Line(Line&&) = default;
-    Line& operator=(const Line&) = delete;
-    Line(Point const& pR0, VelocityVec const& pV0)
-        : r0(pR0)
-        , v0(pV0) {}
-
-    Point GetPosition(corsika::units::si::TimeType t) const { return r0 + v0 * t; }
-    VelocityVec GetVelocity(corsika::units::si::TimeType) const { return v0; }
-
-    Point PositionFromArclength(corsika::units::si::LengthType l) const {
-      return r0 + v0.normalized() * l;
-    }
-
-    LengthType ArcLength(corsika::units::si::TimeType t1,
-                         corsika::units::si::TimeType t2) const {
-      return v0.norm() * (t2 - t1);
-    }
-
-    corsika::units::si::TimeType TimeFromArclength(
-        corsika::units::si::LengthType t) const {
-      return t / v0.norm();
-    }
-
-    auto GetR0() const { return r0; }
-    auto GetV0() const { return v0; }
-  };
-
-} // namespace corsika::geometry
diff --git a/Framework/Geometry/Point.h b/Framework/Geometry/Point.h
deleted file mode 100644
index 20e46032c..000000000
--- a/Framework/Geometry/Point.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/geometry/BaseVector.h>
-#include <corsika/geometry/QuantityVector.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/units/PhysicalUnits.h>
-
-namespace corsika::geometry {
-
-  using corsika::units::si::length_d;
-  using corsika::units::si::LengthType;
-
-  /*!
-   * A Point represents a point in position space. It is defined by its
-   * coordinates with respect to some CoordinateSystem.
-   */
-  class Point : public BaseVector<length_d> {
-  public:
-    Point(CoordinateSystem const& pCS, QuantityVector<length_d> pQVector)
-        : BaseVector<length_d>(pCS, pQVector) {}
-
-    Point(CoordinateSystem const& cs, LengthType x, LengthType y, LengthType z)
-        : BaseVector<length_d>(cs, {x, y, z}) {}
-
-    // TODO: this should be private or protected, we don NOT want to expose numbers
-    // without reference to outside:
-    auto GetCoordinates() const { return BaseVector<length_d>::qVector; }
-    auto GetX() const { return BaseVector<length_d>::qVector.GetX(); }
-    auto GetY() const { return BaseVector<length_d>::qVector.GetY(); }
-    auto GetZ() const { return BaseVector<length_d>::qVector.GetZ(); }
-
-    /// this always returns a QuantityVector as triple
-    auto GetCoordinates(CoordinateSystem const& pCS) const {
-      if (&pCS == BaseVector<length_d>::cs) {
-        return BaseVector<length_d>::qVector;
-      } else {
-        return QuantityVector<length_d>(
-            CoordinateSystem::GetTransformation(*BaseVector<length_d>::cs, pCS) *
-            BaseVector<length_d>::qVector.eVector);
-      }
-    }
-
-    /*!
-     * transforms the Point into another CoordinateSystem by changing its
-     * coordinates interally
-     */
-    void rebase(CoordinateSystem const& pCS) {
-      BaseVector<length_d>::qVector = GetCoordinates(pCS);
-      BaseVector<length_d>::cs = &pCS;
-    }
-
-    Point operator+(Vector<length_d> const& pVec) const {
-      return Point(*BaseVector<length_d>::cs,
-                   GetCoordinates() + pVec.GetComponents(*BaseVector<length_d>::cs));
-    }
-
-    /*!
-     * returns the distance Vector between two points
-     */
-    Vector<length_d> operator-(Point const& pB) const {
-      auto& cs = *BaseVector<length_d>::cs;
-      return Vector<length_d>(cs, GetCoordinates() - pB.GetCoordinates(cs));
-    }
-  };
-
-} // namespace corsika::geometry
diff --git a/Framework/Geometry/QuantityVector.h b/Framework/Geometry/QuantityVector.h
deleted file mode 100644
index b45138bf7..000000000
--- a/Framework/Geometry/QuantityVector.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/units/PhysicalUnits.h>
-
-#include <Eigen/Dense>
-
-#include <iostream>
-#include <utility>
-
-namespace corsika::geometry {
-
-  /*!
-   * A QuantityVector is a three-component container based on Eigen::Vector3d
-   * with a phys::units::si::dimension. Arithmethic operators are defined that
-   * propagate the dimensions by dimensional analysis.
-   */
-
-  template <typename dim>
-  class QuantityVector {
-  public:
-    using Quantity = phys::units::quantity<dim, double>; //< the phys::units::quantity
-                                                         // corresponding to the dimension
-
-  public:
-    Eigen::Vector3d eVector; //!< the actual container where the raw numbers are stored
-
-    typedef dim dimension; //!< should be a phys::units::dimension
-
-    QuantityVector(Quantity a, Quantity b, Quantity c)
-        : eVector{a.magnitude(), b.magnitude(), c.magnitude()} {}
-
-    QuantityVector(double a, double b, double c)
-        : eVector{a, b, c} {
-      static_assert(
-          std::is_same_v<dim, phys::units::dimensionless_d>,
-          "initialization of dimensionful QuantityVector with pure numbers not allowed!");
-    }
-
-    QuantityVector(Eigen::Vector3d pBareVector)
-        : eVector(pBareVector) {}
-
-    auto operator[](size_t index) const {
-      return Quantity(phys::units::detail::magnitude_tag, eVector[index]);
-    }
-
-    auto GetX() const { return (*this)[0]; }
-
-    auto GetY() const { return (*this)[1]; }
-
-    auto GetZ() const { return (*this)[2]; }
-
-    auto norm() const {
-      return Quantity(phys::units::detail::magnitude_tag, eVector.norm());
-    }
-
-    auto squaredNorm() const {
-      using QuantitySquared =
-          decltype(std::declval<Quantity>() * std::declval<Quantity>());
-      return QuantitySquared(phys::units::detail::magnitude_tag, eVector.squaredNorm());
-    }
-
-    auto operator+(QuantityVector<dim> const& pQVec) const {
-      return QuantityVector<dim>(eVector + pQVec.eVector);
-    }
-
-    auto operator-(QuantityVector<dim> const& pQVec) const {
-      return QuantityVector<dim>(eVector - pQVec.eVector);
-    }
-
-    template <typename ScalarDim>
-    auto operator*(phys::units::quantity<ScalarDim, double> const p) const {
-      using ResQuantity = phys::units::detail::Product<ScalarDim, dim, double, double>;
-
-      if constexpr (std::is_same<ResQuantity, double>::value) // result dimensionless, not
-                                                              // a "Quantity" anymore
-      {
-        return QuantityVector<phys::units::dimensionless_d>(eVector * p.magnitude());
-      } else {
-        return QuantityVector<typename ResQuantity::dimension_type>(eVector *
-                                                                    p.magnitude());
-      }
-    }
-
-    template <typename ScalarDim>
-    auto operator/(phys::units::quantity<ScalarDim, double> const p) const {
-      return (*this) * (1 / p);
-    }
-
-    auto operator*(double const p) const { return QuantityVector<dim>(eVector * p); }
-
-    auto operator/(double const p) const { return QuantityVector<dim>(eVector / p); }
-
-    auto& operator/=(double const p) {
-      eVector /= p;
-      return *this;
-    }
-
-    auto& operator*=(double const p) {
-      eVector *= p;
-      return *this;
-    }
-
-    auto& operator+=(QuantityVector<dim> const& pQVec) {
-      eVector += pQVec.eVector;
-      return *this;
-    }
-
-    auto& operator-=(QuantityVector<dim> const& pQVec) {
-      eVector -= pQVec.eVector;
-      return *this;
-    }
-
-    auto& operator-() const { return QuantityVector<dim>(-eVector); }
-
-    auto normalized() const { return QuantityVector<dim>(eVector.normalized()); }
-
-    auto operator==(QuantityVector<dim> const& p) const { return eVector == p.eVector; }
-  };
-
-  template <typename dim>
-  auto& operator<<(std::ostream& os, corsika::geometry::QuantityVector<dim> qv) {
-    using Quantity = phys::units::quantity<dim, double>;
-
-    os << '(' << qv.eVector(0) << ' ' << qv.eVector(1) << ' ' << qv.eVector(2) << ") "
-       << phys::units::to_unit_symbol<dim, double>(
-              Quantity(phys::units::detail::magnitude_tag, 1));
-    return os;
-  }
-
-} // namespace corsika::geometry
diff --git a/Framework/Geometry/Sphere.h b/Framework/Geometry/Sphere.h
deleted file mode 100644
index a2a77efec..000000000
--- a/Framework/Geometry/Sphere.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/Volume.h>
-#include <corsika/geometry/Line.h>
-#include <corsika/units/PhysicalUnits.h>
-
-namespace corsika::geometry {
-
-  class Sphere : public Volume {
-    Point const fCenter;
-    LengthType const fRadius;
-
-  public:
-    Sphere(Point const& pCenter, LengthType const pRadius)
-        : fCenter(pCenter)
-        , fRadius(pRadius) {}
-
-    //! returns true if the Point p is within the sphere
-    bool Contains(Point const& p) const override {
-      return fRadius * fRadius > (fCenter - p).squaredNorm();
-    }
-
-    const Point& GetCenter() const { return fCenter; }
-    LengthType GetRadius() const { return fRadius; }
-  };
-
-} // namespace corsika::geometry
diff --git a/Framework/Geometry/Trajectory.h b/Framework/Geometry/Trajectory.h
deleted file mode 100644
index 1580a0db3..000000000
--- a/Framework/Geometry/Trajectory.h
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/units/PhysicalUnits.h>
-
-namespace corsika::geometry {
-
-  /**
-   * \class LineTrajectory
-   *
-   * A Trajectory is a description of a momvement of an object in
-   * three-dimensional space that describes the trajectory (connection
-   * between two Points in space), as well as the direction of motion
-   * at any given point.
-   *
-   * A Trajectory has a start `0` and an end `1`, where
-   * e.g. GetPosition(0) returns the start point and GetDirection(1)
-   * the direction of motion at the end. Values outside 0...1 are not
-   * defined.
-   *
-   * A Trajectory has a length in [m], GetLength, a duration in [s], GetDuration.
-   *
-   * Note: so far it is assumed that the speed (d|vec{r}|/dt) between
-   * start and end does not change and is constant for the entire
-   * Trajectory.
-   *
-   **/
-
-  class LineTrajectory {
-
-    using VelocityVec = Vector<corsika::units::si::SpeedType::dimension_type>;
-
-  public:
-    LineTrajectory() = delete;
-    LineTrajectory(const LineTrajectory&) = default;
-    LineTrajectory(LineTrajectory&&) = default;
-    LineTrajectory& operator=(const LineTrajectory&) = delete;
-
-    /**
-     * \param theLine The geometric \sa Line object that represents a straight-line
-     * connection 
-     *
-     * \param timeLength The time duration to traverse the straight trajectory
-     * in units of \sa TimeType
-     */
-    LineTrajectory(Line const& theLine, corsika::units::si::TimeType timeLength)
-        : line_(theLine)
-        , timeLength_(timeLength)
-        , timeStep_(timeLength)
-        , initialVelocity_(theLine.GetVelocity(corsika::units::si::TimeType::zero()))
-        , finalVelocity_(theLine.GetVelocity(timeLength)) {}
-
-    /**
-     * \param theLine The geometric \sa Line object that represents a straight-line
-     * connection 
-     * 
-     * \param timeLength The time duration to traverse the straight trajectory
-     * in units of \sa TimeType 
-     * 
-     * \param timeStep Time duration to folow eventually curved
-     * trajectory in units of \sa TimesType 
-     * 
-     * \param initialV Initial velocity vector at
-     * start of trajectory \param finalV Final velocity vector at start of trajectory
-     */
-    LineTrajectory(
-        Line const& theLine,
-        corsika::units::si::TimeType timeLength, // length of theLine (straight)
-        corsika::units::si::TimeType timeStep,   // length of bend step (curved)
-        const VelocityVec& initialV, const VelocityVec& finalV)
-        : line_(theLine)
-        , timeLength_(timeLength)
-        , timeStep_(timeStep)
-        , initialVelocity_(initialV)
-        , finalVelocity_(finalV) {}
-
-    const Line& GetLine() const { return line_; }
-    Point GetPosition(double u) const { return line_.GetPosition(timeLength_ * u); }
-    VelocityVec GetVelocity(double u) const {
-      return initialVelocity_ * (1 - u) + finalVelocity_ * u;
-    }
-    Vector<corsika::units::si::dimensionless_d> GetDirection(double u) const {
-      return GetVelocity(u).normalized();
-    }
-
-    ///! duration along potentially bend trajectory
-    corsika::units::si::TimeType GetDuration(double u = 1) const { return u * timeStep_; }
-
-    ///! total length along potentially bend trajectory
-    corsika::units::si::LengthType GetLength(double u = 1) const {
-      using namespace corsika::units::si;
-      if (timeLength_ == 0_s) return 0_m;
-      if (timeStep_ ==
-          std::numeric_limits<corsika::units::si::TimeType::value_type>::infinity() * 1_s)
-        return std::numeric_limits<
-                   corsika::units::si::LengthType::value_type>::infinity() *
-               1_m;
-      return GetDistance(u) * timeStep_ / timeLength_;
-    }
-
-    ///! set new duration along potentially bend trajectory.
-    void SetLength(corsika::units::si::LengthType limit) {
-      SetDuration(line_.TimeFromArclength(limit));
-    }
-
-    ///! set new duration along potentially bend trajectory.
-    //   Scale other properties by "limit/timeLength_"
-    void SetDuration(corsika::units::si::TimeType limit) {
-      using namespace corsika::units::si;
-      if (timeStep_ == 0_s) {
-        timeLength_ = 0_s;
-        SetFinalVelocity(GetVelocity(0));
-        timeStep_ = limit;
-      } else {
-        // for infinite steps there can't be a difference between
-        // curved and straight trajectory, this is fundamentally
-        // undefined: assume they are the same (which, i.e. is always correct for a
-        // straight line trajectory).
-        //
-        // Final note: only straight-line trajectories should have
-        // infinite steps! Everything else is ill-defined.
-        if (timeStep_ == std::numeric_limits<
-                             corsika::units::si::TimeType::value_type>::infinity() *
-                             1_s ||
-            timeLength_ == std::numeric_limits<
-                               corsika::units::si::TimeType::value_type>::infinity() *
-                               1_s) {
-          timeLength_ = limit;
-          timeStep_ = limit;
-          // ...and don't touch velocity
-        } else {
-          const double scale = limit / timeStep_;
-          timeLength_ *= scale;
-          SetFinalVelocity(GetVelocity(scale));
-          timeStep_ = limit;
-        }
-      }
-    }
-
-  protected:
-    ///! total length along straight trajectory
-    corsika::units::si::LengthType GetDistance(double u) const {
-      assert(u <= 1);
-      assert(u >= 0);
-      return line_.ArcLength(0 * corsika::units::si::second, u * timeLength_);
-    }
-
-    void SetFinalVelocity(const VelocityVec& v) { finalVelocity_ = v; }
-
-  private:
-    Line line_;
-    corsika::units::si::TimeType
-        timeLength_; ///! length of straight step (shortest connecting line)
-    corsika::units::si::TimeType timeStep_; ///! length of bend step (curved)
-    VelocityVec initialVelocity_;
-    VelocityVec finalVelocity_;
-  };
-
-  /**
-   * \class LeapFrogTrajectory
-   *
-   *
-   **/
-
-  class LeapFrogTrajectory {
-
-    using VelocityVec = Vector<corsika::units::si::SpeedType::dimension_type>;
-    typedef corsika::geometry::Vector<corsika::units::si::magnetic_flux_density_d>
-        MagneticFieldVector;
-
-  public:
-    LeapFrogTrajectory() = delete;
-    LeapFrogTrajectory(const LeapFrogTrajectory&) = default;
-    LeapFrogTrajectory(LeapFrogTrajectory&&) = default;
-    LeapFrogTrajectory& operator=(const LeapFrogTrajectory&) = delete;
-    LeapFrogTrajectory(const Point& pos, const VelocityVec& initialVelocity,
-                       MagneticFieldVector Bfield,
-                       const decltype(square(corsika::units::si::meter) /
-                                      (square(corsika::units::si::second) *
-                                       corsika::units::si::volt)) k,
-                       corsika::units::si::TimeType timeStep) // leap-from total length
-        : initialPosition_(pos)
-        , initialVelocity_(initialVelocity)
-        , initialDirection_(initialVelocity.normalized())
-        , magneticfield_(Bfield)
-        , k_(k)
-        , timeStep_(timeStep) {}
-
-    const Line GetLine() const {
-      using namespace corsika::units::si;
-      auto D = GetPosition(1) - GetPosition(0);
-      auto d = D.norm();
-      auto v = initialVelocity_;
-      if (d>1_um) { // if trajectory is ultra-short, we do not
-		    // re-calculate velocity, just use initial
-		    // value. Otherwise, this is numerically unstable
-	v = D/d * GetVelocity(0).norm();
-      }
-      return Line(GetPosition(0), v);
-    }
-    Point GetPosition(double u) const {
-      Point position = initialPosition_ + initialVelocity_ * timeStep_ * u / 2;
-      VelocityVec velocity =
-          initialVelocity_ + initialVelocity_.cross(magneticfield_) * timeStep_ * u * k_;
-      return position + velocity * timeStep_ * u / 2;
-    }
-    VelocityVec GetVelocity(double u) const {
-      return initialVelocity_ +
-             initialVelocity_.cross(magneticfield_) * timeStep_ * u * k_;
-    }
-
-    Vector<corsika::units::si::dimensionless_d> GetDirection(double u) const {
-      return GetVelocity(u).normalized();
-    }
-
-    ///! duration along potentially bend trajectory
-    corsika::units::si::TimeType GetDuration(double u = 1) const {
-      return u * timeStep_ *
-             (double(GetVelocity(u).norm() / initialVelocity_.norm()) + 1.0) / 2;
-    }
-
-    ///! total length along potentially bend trajectory
-    corsika::units::si::LengthType GetLength(double u = 1) const {
-      using namespace corsika::units::si;
-      return timeStep_ * initialVelocity_.norm() * u;
-    }
-
-    ///! set new duration along potentially bend trajectory.
-    void SetLength(corsika::units::si::LengthType limit) {
-      using namespace corsika::units::si;
-      if (initialVelocity_.norm() == 0_m / 1_s) SetDuration(0_s);
-      SetDuration(limit / initialVelocity_.norm());
-    }
-
-    ///! set new duration along potentially bend trajectory.
-    //   Scale other properties by "limit/timeLength_"
-    void SetDuration(corsika::units::si::TimeType limit) {
-      using namespace corsika::units::si;
-      timeStep_ = limit;
-    }
-
-  private:
-    Point initialPosition_;
-    VelocityVec initialVelocity_;
-    geometry::Vector<corsika::units::si::dimensionless_d> initialDirection_;
-    MagneticFieldVector magneticfield_;
-    decltype(square(corsika::units::si::meter) /
-             (square(corsika::units::si::second) * corsika::units::si::volt)) k_;
-    corsika::units::si::TimeType timeStep_;
-  };
-
-} // namespace corsika::geometry
diff --git a/Framework/Geometry/Vector.h b/Framework/Geometry/Vector.h
deleted file mode 100644
index 8be8fcfef..000000000
--- a/Framework/Geometry/Vector.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/geometry/BaseVector.h>
-#include <corsika/geometry/QuantityVector.h>
-
-#include <corsika/units/PhysicalUnits.h>
-
-/*!
- * A Vector represents a 3-vector in Euclidean space. It is defined by components
- * given in a specific CoordinateSystem. It has a physical dimension ("unit")
- * as part of its type, so you cannot mix up e.g. electric with magnetic fields
- * (but you could calculate their cross-product to get an energy flux vector).
- *
- * When transforming coordinate systems, a Vector is subject to the rotational
- * part only and invariant under translations.
- */
-
-namespace corsika::geometry {
-
-  template <typename dim>
-  class Vector : public BaseVector<dim> {
-  public:
-    using Quantity = phys::units::quantity<dim, double>;
-
-  public:
-    Vector(CoordinateSystem const& pCS, QuantityVector<dim> pQVector)
-        : BaseVector<dim>(pCS, pQVector) {}
-
-    Vector(CoordinateSystem const& cs, Quantity x, Quantity y, Quantity z)
-        : BaseVector<dim>(cs, QuantityVector<dim>(x, y, z)) {}
-
-    /*!
-     * returns a QuantityVector with the components given in the "home"
-     * CoordinateSystem of the Vector
-     */
-    auto GetComponents() const { return BaseVector<dim>::qVector; }
-
-    /*!
-     * returns a QuantityVector with the components given in an arbitrary
-     * CoordinateSystem
-     */
-    auto GetComponents(CoordinateSystem const& pCS) const {
-      if (&pCS == BaseVector<dim>::cs) {
-        return BaseVector<dim>::qVector;
-      } else {
-        return QuantityVector<dim>(
-            CoordinateSystem::GetTransformation(*BaseVector<dim>::cs, pCS).linear() *
-            BaseVector<dim>::qVector.eVector);
-      }
-    }
-
-    /*!
-     * transforms the Vector into another CoordinateSystem by changing
-     * its components internally
-     */
-    void rebase(CoordinateSystem const& pCS) {
-      BaseVector<dim>::qVector = GetComponents(pCS);
-      BaseVector<dim>::cs = &pCS;
-    }
-
-    /*!
-     * returns the norm/length of the Vector. Before using this method,
-     * think about whether squaredNorm() might be cheaper for your computation.
-     */
-    auto norm() const { return BaseVector<dim>::qVector.norm(); }
-    auto GetNorm() const { return BaseVector<dim>::qVector.norm(); }
-
-    /*!
-     * returns the squared norm of the Vector. Before using this method,
-     * think about whether norm() might be cheaper for your computation.
-     */
-    auto squaredNorm() const { return BaseVector<dim>::qVector.squaredNorm(); }
-    auto GetSquaredNorm() const { return BaseVector<dim>::qVector.squaredNorm(); }
-
-    /*!
-     * returns a Vector \f$ \vec{v}_{\parallel} \f$ which is the parallel projection
-     * of this vector \f$ \vec{v}_1 \f$ along another Vector \f$ \vec{v}_2 \f$ given by
-     *   \f[
-     *     \vec{v}_{\parallel} = \frac{\vec{v}_1 \cdot \vec{v}_2}{\vec{v}_2^2} \vec{v}_2
-     *   \f]
-     */
-    template <typename dim2>
-    auto parallelProjectionOnto(Vector<dim2> const& pVec,
-                                CoordinateSystem const& pCS) const {
-      auto const ourCompVec = GetComponents(pCS);
-      auto const otherCompVec = pVec.GetComponents(pCS);
-      auto const& a = ourCompVec.eVector;
-      auto const& b = otherCompVec.eVector;
-
-      return Vector<dim>(pCS, QuantityVector<dim>(b * ((a.dot(b)) / b.squaredNorm())));
-    }
-
-    template <typename dim2>
-    auto parallelProjectionOnto(Vector<dim2> const& pVec) const {
-      return parallelProjectionOnto<dim2>(pVec, *BaseVector<dim>::cs);
-    }
-
-    auto operator+(Vector<dim> const& pVec) const {
-      auto const components =
-          GetComponents(*BaseVector<dim>::cs) + pVec.GetComponents(*BaseVector<dim>::cs);
-      return Vector<dim>(*BaseVector<dim>::cs, components);
-    }
-
-    auto operator-(Vector<dim> const& pVec) const {
-      auto const components = GetComponents() - pVec.GetComponents(*BaseVector<dim>::cs);
-      return Vector<dim>(*BaseVector<dim>::cs, components);
-    }
-
-    auto& operator*=(double const p) {
-      BaseVector<dim>::qVector *= p;
-      return *this;
-    }
-
-    template <typename ScalarDim>
-    auto operator*(phys::units::quantity<ScalarDim, double> const p) const {
-      using ProdDim = phys::units::detail::product_d<dim, ScalarDim>;
-
-      return Vector<ProdDim>(*BaseVector<dim>::cs, BaseVector<dim>::qVector * p);
-    }
-
-    template <typename ScalarDim>
-    auto operator/(phys::units::quantity<ScalarDim, double> const p) const {
-      return (*this) * (1 / p);
-    }
-
-    auto operator*(double const p) const {
-      return Vector<dim>(*BaseVector<dim>::cs, BaseVector<dim>::qVector * p);
-    }
-
-    auto operator/(double const p) const {
-      return Vector<dim>(*BaseVector<dim>::cs, BaseVector<dim>::qVector / p);
-    }
-
-    auto& operator+=(Vector<dim> const& pVec) {
-      BaseVector<dim>::qVector += pVec.GetComponents(*BaseVector<dim>::cs);
-      return *this;
-    }
-
-    auto& operator-=(Vector<dim> const& pVec) {
-      BaseVector<dim>::qVector -= pVec.GetComponents(*BaseVector<dim>::cs);
-      return *this;
-    }
-
-    auto& operator-() const {
-      return Vector<dim>(*BaseVector<dim>::cs, -BaseVector<dim>::qVector);
-    }
-
-    auto normalized() const { return (*this) * (1 / norm()); }
-
-    template <typename dim2>
-    auto cross(Vector<dim2> pV) const {
-      auto const c1 = GetComponents().eVector;
-      auto const c2 = pV.GetComponents(*BaseVector<dim>::cs).eVector;
-      auto const bareResult = c1.cross(c2);
-
-      using ProdDim = phys::units::detail::product_d<dim, dim2>;
-      return Vector<ProdDim>(*BaseVector<dim>::cs, bareResult);
-    }
-
-    template <typename dim2>
-    auto dot(Vector<dim2> pV) const {
-      auto const c1 = GetComponents().eVector;
-      auto const c2 = pV.GetComponents(*BaseVector<dim>::cs).eVector;
-      auto const bareResult = c1.dot(c2);
-
-      using ProdDim = phys::units::detail::product_d<dim, dim2>;
-
-      return phys::units::quantity<ProdDim, double>(phys::units::detail::magnitude_tag,
-                                                    bareResult);
-    }
-  };
-
-} // namespace corsika::geometry
diff --git a/Framework/Logging/CMakeLists.txt b/Framework/Logging/CMakeLists.txt
deleted file mode 100644
index 8aa0abe3c..000000000
--- a/Framework/Logging/CMakeLists.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-# create the library
-add_library (CORSIKAlogging INTERFACE)
-
-# namespace of library -> location of header files
-set (
-  CORSIKAlogging_NAMESPACE
-  corsika/logging
-  )
-
-# header files of this library
-set (
-  CORSIKAlogging_HEADERS
-  Logging.h
-  )
-
-# copy the headers into the namespace
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAlogging
-  ${CORSIKAlogging_NAMESPACE}
-  ${CORSIKAlogging_HEADERS}
-  )
-
-# include directive for upstream code
-target_include_directories (
-  CORSIKAlogging
-  INTERFACE
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/>
-  )
-
-# and link against spdlog
-target_link_libraries(
-  CORSIKAlogging
-  INTERFACE
-  spdlog::spdlog
-)
-
-# install library
-install (
-  FILES ${CORSIKAlogging_HEADERS}
-  DESTINATION include/${CORSIKAlogging_NAMESPACE}
-  )
-
-# ----------------
-# code unit testing
-
-CORSIKA_ADD_TEST (testLogging)
-target_link_libraries (
- testLogging
- CORSIKAlogging
- CORSIKAtesting
- )
diff --git a/Framework/Particles/CMakeLists.txt b/Framework/Particles/CMakeLists.txt
deleted file mode 100644
index 96d89ebeb..000000000
--- a/Framework/Particles/CMakeLists.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-add_custom_command (
-  OUTPUT  ${PROJECT_BINARY_DIR}/Framework/Particles/GeneratedParticleProperties.inc
-          ${PROJECT_BINARY_DIR}/Framework/Particles/particle_db.pkl
-  COMMAND ${PROJECT_SOURCE_DIR}/Framework/Particles/pdxml_reader.py 
-          ${PROJECT_SOURCE_DIR}/Framework/Particles/ParticleData.xml
-          ${PROJECT_SOURCE_DIR}/Framework/Particles/NuclearData.xml
-          ${PROJECT_SOURCE_DIR}/Framework/Particles/ParticleClassNames.xml
-  DEPENDS pdxml_reader.py
-          ParticleData.xml
-          NuclearData.xml
-          ParticleClassNames.xml
-  WORKING_DIRECTORY
-          ${PROJECT_BINARY_DIR}/Framework/Particles/
-  COMMENT "Read PYTHIA8 particle data and produce C++ source code GeneratedParticleProperties.inc"
-  VERBATIM
-  )
-
-set (
-  PARTICLE_SOURCES
-  ParticleProperties.cc
-  )
-
-# all public header files of library, includes automatic generated file(s)
-set (
-  PARTICLE_HEADERS
-  ParticleProperties.h
-  ${PROJECT_BINARY_DIR}/Framework/Particles/GeneratedParticleProperties.inc # this one is auto-generated
-  )
-
-set (
-  PARTICLE_NAMESPACE
-  corsika/particles
-  )
-
-add_library (CORSIKAparticles STATIC ${PARTICLE_SOURCES})
-
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAparticles ${PARTICLE_NAMESPACE} ${PARTICLE_HEADERS})
-
-# ....................................................
-# since GeneratedParticleProperties.inc is an automatically produced file in the build directory,
-# create a symbolic link into the source tree, so that it can be found and edited more easily
-# this is not needed for the build to succeed! .......
-add_custom_command (
-  OUTPUT  ${CMAKE_CURRENT_SOURCE_DIR}/GeneratedParticleProperties.inc
-  COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_BINARY_DIR}/include/corsika/particles/GeneratedParticleProperties.inc ${CMAKE_CURRENT_SOURCE_DIR}/GeneratedParticleProperties.inc
-  COMMENT "Generate link in source-dir: ${CMAKE_CURRENT_SOURCE_DIR}/GeneratedParticleProperties.inc"
-  )
-add_custom_target (SourceDirLink DEPENDS ${PROJECT_BINARY_DIR}/Framework/Particles/GeneratedParticleProperties.inc)
-add_dependencies (CORSIKAparticles SourceDirLink)
-# .....................................................
-
-target_link_libraries (
-  CORSIKAparticles
-  PUBLIC
-  CORSIKAunits
-  CORSIKAlogging
-  )
-
-set_target_properties (
-  CORSIKAparticles
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-  PUBLIC_HEADER "${PARTICLE_HEADERS}"
-  )
-
-target_include_directories (
-  CORSIKAparticles
-  PUBLIC
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include>
-  )
-
-install (
-  FILES
-  ${PARTICLE_HEADERS}
-  DESTINATION
-  include/${PARTICLE_NAMESPACE}
-  )
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST(testParticles
-  SOURCES
-    testParticles.cc
-    ${PROJECT_BINARY_DIR}/Framework/Particles/GeneratedParticleProperties.inc
-)
-target_link_libraries (
-  testParticles
-  CORSIKAparticles
-  CORSIKAunits
-  CORSIKAtesting
-  )
diff --git a/Framework/Particles/particles.dox b/Framework/Particles/particles.dox
deleted file mode 100644
index 22a36c59f..000000000
--- a/Framework/Particles/particles.dox
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
-@page Particles Particle properties
-
-The properties of all particles are saved in static and flat
-arrays. There is a enum corsika::particles::Code to identify each
-particles, and each individual particles has its own static class,
-which can be used to retrieve its physical properties. 
-
-
-
-See namespace corsika::particles for all classes.
-
-
-
-*/
\ No newline at end of file
diff --git a/Framework/ProcessSequence/CMakeLists.txt b/Framework/ProcessSequence/CMakeLists.txt
deleted file mode 100644
index 7a7554893..000000000
--- a/Framework/ProcessSequence/CMakeLists.txt
+++ /dev/null
@@ -1,82 +0,0 @@
-add_library (CORSIKAprocesssequence INTERFACE)
-
-#namespace of library->location of header files
-set (
-  CORSIKAprocesssequence_NAMESPACE
-  corsika/process
-  )
-
-#header files of this library
-set (
-  CORSIKAprocesssequence_HEADERS
-  BaseProcess.h
-  BoundaryCrossingProcess.h
-  ContinuousProcess.h
-  SecondariesProcess.h
-  InteractionProcess.h
-  StackProcess.h
-  DecayProcess.h
-  ProcessSequence.h
-  SwitchProcessSequence.h
-  ProcessReturn.h
-  ProcessTraits.h
-  NullModel.h
-  )
-
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAprocesssequence ${CORSIKAprocesssequence_NAMESPACE} ${CORSIKAprocesssequence_HEADERS})
-
-#include directive for upstream code
-target_link_libraries (
-  CORSIKAprocesssequence
-  INTERFACE
-  CORSIKAsetup
-  CORSIKAlogging
-  )
-
-target_include_directories (
-  CORSIKAprocesssequence
-  INTERFACE
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/>
-  )
-
-#install library
-install (
-  FILES ${CORSIKAprocesssequence_HEADERS}
-  DESTINATION include/${CORSIKAprocesssequence_NAMESPACE}
-  )
-  
-target_link_libraries (
-  CORSIKAprocesssequence
-  INTERFACE
-  CORSIKAenvironment
-)
-
-#-- -- -- -- -- -- -- --
-#code unit testing
-CORSIKA_ADD_TEST (testProcessSequence)
-target_link_libraries (
-  testProcessSequence
-  CORSIKAgeometry
-  CORSIKAprocesssequence
-  CORSIKAtesting
-  )
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST (testNullModel)
-target_link_libraries (
-  testNullModel
-  CORSIKAsetup
-  CORSIKAgeometry
-  CORSIKAunits
-  CORSIKAtesting
-  )
-
-# # CORSIKA_ADD_TEST (testSwitchProcessSequence)
-# # target_link_libraries (
-# #   testSwitchProcessSequence
-# #   CORSIKAgeometry
-# #   CORSIKAprocesssequence
-# #   CORSIKAtesting
-# #   )
diff --git a/Framework/ProcessSequence/ProcessSequence.h b/Framework/ProcessSequence/ProcessSequence.h
deleted file mode 100644
index 02a3d062e..000000000
--- a/Framework/ProcessSequence/ProcessSequence.h
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/process/BaseProcess.h>
-#include <corsika/process/ProcessTraits.h>
-#include <corsika/process/BoundaryCrossingProcess.h>
-#include <corsika/process/ContinuousProcess.h>
-#include <corsika/process/DecayProcess.h>
-#include <corsika/process/InteractionProcess.h>
-#include <corsika/process/ProcessReturn.h>
-#include <corsika/process/SecondariesProcess.h>
-#include <corsika/process/StackProcess.h>
-#include <corsika/process/NullModel.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <corsika/logging/Logging.h>
-
-#include <cmath>
-#include <limits>
-
-namespace corsika::process {
-
-  /**
-     \class ProcessSequence
-
-     A compile time static list of processes. The compiler will
-     generate a new type based on template logic containing all the
-     elements provided by the user.
-
-     TProcess1 and TProcess2 must both be derived from BaseProcess,
-     and are both references if possible (lvalue), otherwise (rvalue)
-     they are just classes. This allows us to handle both, rvalue as
-     well as lvalue Processes in the ProcessSequence.
-
-     \comment Using CRTP pattern,
-     https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern
-   */
-  template <typename TProcess1, typename TProcess2 = NullModel>
-  class ProcessSequence : public BaseProcess<ProcessSequence<TProcess1, TProcess2>> {
-
-    using TProcess1type = typename std::decay_t<TProcess1>;
-    using TProcess2type = typename std::decay_t<TProcess2>;
-
-    static bool constexpr t1ProcSeq = is_process_sequence_v<TProcess1type>;
-    static bool constexpr t2ProcSeq = is_process_sequence_v<TProcess2type>;
-
-    static bool constexpr t1SwitchProcSeq = is_switch_process_sequence_v<TProcess1type>;
-    static bool constexpr t2SwitchProcSeq = is_switch_process_sequence_v<TProcess2type>;
-
-    // make sure only BaseProcess types TProcess1/2 are passed
-    static_assert(std::is_base_of_v<BaseProcess<TProcess1type>, TProcess1type>,
-                  "can only use process derived from BaseProcess in "
-                  "ProcessSequence, for Process 1");
-    static_assert(std::is_base_of_v<BaseProcess<TProcess2type>, TProcess2type>,
-                  "can only use process derived from BaseProcess in "
-                  "ProcessSequence, for Process 2");
-
-    TProcess1 A_; // this is a reference, if possible
-    TProcess2 B_; // this is a reference, if possible
-
-  public:
-    ProcessSequence(TProcess1 in_A, TProcess2 in_B)
-        : A_(in_A)
-        , B_(in_B) {}
-
-    template <typename TParticle, typename TVTNType>
-    EProcessReturn DoBoundaryCrossing(TParticle& particle, TVTNType const& from,
-                                      TVTNType const& to) {
-      EProcessReturn ret = EProcessReturn::eOk;
-
-      if constexpr (std::is_base_of_v<BoundaryCrossingProcess<TProcess1type>,
-                                      TProcess1type> ||
-                    t1ProcSeq) {
-        ret |= A_.DoBoundaryCrossing(particle, from, to);
-      }
-
-      if constexpr (std::is_base_of_v<BoundaryCrossingProcess<TProcess2type>,
-                                      TProcess2type> ||
-                    t2ProcSeq) {
-        ret |= B_.DoBoundaryCrossing(particle, from, to);
-      }
-
-      return ret;
-    }
-
-    template <typename TParticle, typename TTrack>
-    inline EProcessReturn DoContinuous(TParticle& particle, TTrack& vT) {
-      EProcessReturn ret = EProcessReturn::eOk;
-      if constexpr (std::is_base_of_v<ContinuousProcess<TProcess1type>, TProcess1type> ||
-                    t1ProcSeq) {
-        ret |= A_.DoContinuous(particle, vT);
-      }
-      if constexpr (std::is_base_of_v<ContinuousProcess<TProcess2type>, TProcess2type> ||
-                    t2ProcSeq) {
-        if (!isAbsorbed(ret)) { ret |= B_.DoContinuous(particle, vT); }
-      }
-      return ret;
-    }
-
-    template <typename TSecondaries>
-    inline void DoSecondaries(TSecondaries& vS) {
-      if constexpr (std::is_base_of_v<SecondariesProcess<TProcess1type>, TProcess1type> ||
-                    t1ProcSeq) {
-        A_.DoSecondaries(vS);
-      }
-      if constexpr (std::is_base_of_v<SecondariesProcess<TProcess2type>, TProcess2type> ||
-                    t2ProcSeq) {
-        B_.DoSecondaries(vS);
-      }
-    }
-
-    /**
-       The processes of type StackProcess do have an internal counter,
-       so they can be exectuted only each N steps. Often these are
-       "maintenacne processes" that do not need to run after each
-       single step of the simulations. In the CheckStep function it is
-       tested if either A_ or B_ are StackProcess and if they are due
-       for execution.
-     */
-    inline bool CheckStep() {
-      bool ret = false;
-      if constexpr (std::is_base_of_v<StackProcess<TProcess1type>, TProcess1type> ||
-                    (t1ProcSeq && !t1SwitchProcSeq)) {
-        ret |= A_.CheckStep();
-      }
-      if constexpr (std::is_base_of_v<StackProcess<TProcess2type>, TProcess2type> ||
-                    (t2ProcSeq && !t2SwitchProcSeq)) {
-        ret |= B_.CheckStep();
-      }
-      return ret;
-    }
-
-    /**
-       Execute the StackProcess-es in the ProcessSequence
-     */
-    template <typename TStack>
-    inline void DoStack(TStack& stack) {
-      if constexpr (std::is_base_of_v<StackProcess<TProcess1type>, TProcess1type> ||
-                    (t1ProcSeq && !t1SwitchProcSeq)) {
-        if (A_.CheckStep()) { A_.DoStack(stack); }
-      }
-      if constexpr (std::is_base_of_v<StackProcess<TProcess2type>, TProcess2type> ||
-                    (t2ProcSeq && !t2SwitchProcSeq)) {
-        if (B_.CheckStep()) { B_.DoStack(stack); }
-      }
-    }
-
-    template <typename TParticle, typename TTrack>
-    inline corsika::units::si::LengthType MaxStepLength(TParticle& particle,
-                                                        TTrack& vTrack) {
-      corsika::units::si::LengthType
-          max_length = // if no other process in the sequence implements it
-          std::numeric_limits<double>::infinity() * corsika::units::si::meter;
-
-      if constexpr (std::is_base_of_v<ContinuousProcess<TProcess1type>, TProcess1type> ||
-                    t1ProcSeq) {
-        corsika::units::si::LengthType const len = A_.MaxStepLength(particle, vTrack);
-        max_length = std::min(max_length, len);
-      }
-      if constexpr (std::is_base_of_v<ContinuousProcess<TProcess2type>, TProcess2type> ||
-                    t2ProcSeq) {
-        corsika::units::si::LengthType const len = B_.MaxStepLength(particle, vTrack);
-        max_length = std::min(max_length, len);
-      }
-      return max_length;
-    }
-
-    template <typename TParticle>
-    inline corsika::units::si::GrammageType GetInteractionLength(TParticle&& particle) {
-      return 1. / GetInverseInteractionLength(particle);
-    }
-
-    template <typename TParticle>
-    inline corsika::units::si::InverseGrammageType GetInverseInteractionLength(
-        TParticle&& particle) {
-      using namespace corsika::units::si;
-
-      InverseGrammageType tot = 0 * meter * meter / gram; // default value
-
-      if constexpr (std::is_base_of_v<InteractionProcess<TProcess1type>, TProcess1type> ||
-                    t1ProcSeq) {
-        tot += A_.GetInverseInteractionLength(particle);
-      }
-      if constexpr (std::is_base_of_v<InteractionProcess<TProcess2type>, TProcess2type> ||
-                    t2ProcSeq) {
-        tot += B_.GetInverseInteractionLength(particle);
-      }
-      return tot;
-    }
-
-    template <typename TSecondaryView>
-    inline EProcessReturn SelectInteraction(
-        TSecondaryView& view,
-        [[maybe_unused]] corsika::units::si::InverseGrammageType lambda_inv_select,
-        [[maybe_unused]] corsika::units::si::InverseGrammageType lambda_inv_sum =
-            corsika::units::si::InverseGrammageType::zero()) {
-
-      // TODO: add check for lambda_inv_select>lambda_inv_tot
-
-      if constexpr (t1ProcSeq) {
-        // if A is a process sequence --> check inside
-        const EProcessReturn ret =
-            A_.SelectInteraction(view, lambda_inv_select, lambda_inv_sum);
-        // if A_ did succeed, stop routine. Not checking other static branch B_.
-        if (ret != EProcessReturn::eOk) { return ret; }
-      } else if constexpr (std::is_base_of_v<InteractionProcess<TProcess1type>,
-                                             TProcess1type>) {
-        // if this is not a ContinuousProcess --> evaluate probability
-        const auto particle = view.parent();
-        lambda_inv_sum += A_.GetInverseInteractionLength(particle);
-        // check if we should execute THIS process and then EXIT
-        if (lambda_inv_select <= lambda_inv_sum) {
-          A_.DoInteraction(view);
-          return EProcessReturn::eInteracted;
-        }
-      } // end branch A_
-
-      if constexpr (t2ProcSeq) {
-        // if B_ is a process sequence --> check inside
-        return B_.SelectInteraction(view, lambda_inv_select, lambda_inv_sum);
-      } else if constexpr (std::is_base_of_v<InteractionProcess<TProcess2type>,
-                                             TProcess2type>) {
-        // if this is not a ContinuousProcess --> evaluate probability
-        lambda_inv_sum += B_.GetInverseInteractionLength(view.parent());
-        // check if we should execute THIS process and then EXIT
-        if (lambda_inv_select <= lambda_inv_sum) {
-          B_.DoInteraction(view);
-          return EProcessReturn::eInteracted;
-        }
-      } // end branch B_
-      return EProcessReturn::eOk;
-    }
-
-    template <typename TParticle>
-    inline corsika::units::si::TimeType GetLifetime(TParticle& particle) {
-      return 1. / GetInverseLifetime(particle);
-    }
-
-    template <typename TParticle>
-    inline corsika::units::si::InverseTimeType GetInverseLifetime(TParticle&& particle) {
-      using namespace corsika::units::si;
-
-      corsika::units::si::InverseTimeType tot = 0 / second; // default value
-
-      if constexpr (std::is_base_of_v<DecayProcess<TProcess1type>, TProcess1type> ||
-                    t1ProcSeq) {
-        tot += A_.GetInverseLifetime(particle);
-      }
-      if constexpr (std::is_base_of_v<DecayProcess<TProcess2type>, TProcess2type> ||
-                    t2ProcSeq) {
-        tot += B_.GetInverseLifetime(particle);
-      }
-      return tot;
-    }
-
-    // select decay process
-    template <typename TSecondaryView>
-    inline EProcessReturn SelectDecay(
-        TSecondaryView& view,
-        [[maybe_unused]] corsika::units::si::InverseTimeType decay_inv_select,
-        [[maybe_unused]] corsika::units::si::InverseTimeType decay_inv_sum =
-            corsika::units::si::InverseTimeType::zero()) {
-
-      // TODO: add check for decay_inv_select>decay_inv_tot
-
-      if constexpr (t1ProcSeq) {
-        // if A_ is a process sequence --> check inside
-        const EProcessReturn ret = A_.SelectDecay(view, decay_inv_select, decay_inv_sum);
-        // if A_ did succeed, stop routine here (not checking other static branch B_)
-        if (ret != EProcessReturn::eOk) { return ret; }
-      } else if constexpr (std::is_base_of_v<DecayProcess<TProcess1type>,
-                                             TProcess1type>) {
-        // if this is not a ContinuousProcess --> evaluate probability
-        decay_inv_sum += A_.GetInverseLifetime(view.parent());
-        // check if we should execute THIS process and then EXIT
-        if (decay_inv_select <= decay_inv_sum) { // more pedagogical: rndm_select <
-                                                 // decay_inv_sum / decay_inv_tot
-          A_.DoDecay(view);
-          return EProcessReturn::eDecayed;
-        }
-      } // end branch A_
-
-      if constexpr (t2ProcSeq) {
-        // if B_ is a process sequence --> check inside
-        return B_.SelectDecay(view, decay_inv_select, decay_inv_sum);
-      } else if constexpr (std::is_base_of_v<DecayProcess<TProcess2type>,
-                                             TProcess2type>) {
-        // if this is not a ContinuousProcess --> evaluate probability
-        decay_inv_sum += B_.GetInverseLifetime(view.parent());
-        // check if we should execute THIS process and then EXIT
-        if (decay_inv_select <= decay_inv_sum) {
-          B_.DoDecay(view);
-          return EProcessReturn::eDecayed;
-        }
-      } // end branch B_
-      return EProcessReturn::eOk;
-    }
-  };
-
-  /**
-   * \function sequence
-   *
-   * to construct ProcessSequences in a flexible and dynamic way the
-   * `sequence` factory functions are provided
-   *
-   * Any objects of type
-   *  - BaseProcess,
-   *  - ContinuousProcess, and
-   *  - Interaction/DecayProcess,
-   *  - StackProcess,
-   *  - SecondariesProcess
-   * can be assembled into a ProcessSequence, all
-   * combinatorics are allowed.
-
-   * The sequence function checks that all its arguments are all of
-   * types derived from BaseProcess. Also the ProcessSequence itself
-   * is derived from type BaseProcess
-   **/
-
-  template <typename... TProcesses, typename TProcess1>
-  inline typename std::enable_if_t<
-      std::is_base_of_v<BaseProcess<typename std::decay_t<TProcess1>>,
-                        typename std::decay_t<TProcess1>>,
-      ProcessSequence<TProcess1, decltype(sequence(std::declval<TProcesses>()...))>>
-  sequence(TProcess1&& vA, TProcesses&&... vBs) {
-    return ProcessSequence<TProcess1, decltype(sequence(std::declval<TProcesses>()...))>(
-        vA, sequence(std::forward<TProcesses>(vBs)...));
-  }
-
-  template <typename TProcess1, typename TProcess2>
-  inline typename std::enable_if_t<
-      std::is_base_of_v<BaseProcess<typename std::decay_t<TProcess1>>,
-                        typename std::decay_t<TProcess1>> &&
-          std::is_base_of_v<BaseProcess<typename std::decay_t<TProcess2>>,
-                            typename std::decay_t<TProcess2>>,
-      ProcessSequence<TProcess1, TProcess2>>
-  sequence(TProcess1&& vA, TProcess2&& vB) {
-    return ProcessSequence<TProcess1, TProcess2>(vA, vB);
-  }
-
-  /**
-   * also allow a single Process in ProcessSequence, accompany by
-   * `NullModel`
-   **/
-  template <typename TProcess>
-  inline typename std::enable_if_t<
-      std::is_base_of_v<BaseProcess<typename std::decay_t<TProcess>>,
-                        typename std::decay_t<TProcess>>,
-      ProcessSequence<TProcess, NullModel>>
-  sequence(TProcess&& vA) {
-    return ProcessSequence<TProcess, NullModel>(vA, NullModel());
-  }
-
-  /**
-   * traits marker to identify objectas ProcessSequence
-   **/
-  template <typename TProcess1, typename TProcess2>
-  struct is_process_sequence<ProcessSequence<TProcess1, TProcess2>> : std::true_type {
-    // only switch on for BaseProcesses
-    template <typename std::enable_if_t<
-        std::is_base_of_v<BaseProcess<typename std::decay_t<TProcess1>>,
-                          typename std::decay_t<TProcess1>> &&
-            std::is_base_of_v<BaseProcess<typename std::decay_t<TProcess2>>,
-                              typename std::decay_t<TProcess2>>,
-        int>>
-    is_process_sequence() {}
-  };
-
-  /**
-   * traits marker to identify objects containing any StackProcesses
-   **/
-  namespace detail {
-    // need helper alias to achieve this:
-    template <typename TProcess1, typename TProcess2,
-              typename = typename std::enable_if_t<
-                  contains_stack_process_v<TProcess1> ||
-                      std::is_base_of_v<StackProcess<typename std::decay_t<TProcess1>>,
-                                        typename std::decay_t<TProcess1>> ||
-                      contains_stack_process_v<TProcess2> ||
-                      std::is_base_of_v<StackProcess<typename std::decay_t<TProcess2>>,
-                                        typename std::decay_t<TProcess2>>,
-                  int>>
-    using enable_if_stack = ProcessSequence<TProcess1, TProcess2>;
-  } // namespace detail
-
-  template <typename TProcess1, typename TProcess2>
-  struct contains_stack_process<detail::enable_if_stack<TProcess1, TProcess2>>
-      : std::true_type {};
-
-} // namespace corsika::process
diff --git a/Framework/Random/CMakeLists.txt b/Framework/Random/CMakeLists.txt
deleted file mode 100644
index f909f77f1..000000000
--- a/Framework/Random/CMakeLists.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-set (
-  CORSIKArandom_SOURCES
-  RNGManager.cc
-  )
-
-set (
-  CORSIKArandom_HEADERS
-  RNGManager.h
-  UniformRealDistribution.h
-  ExponentialDistribution.h
-  )
-
-set (
-  CORSIKArandom_NAMESPACE
-  corsika/random
-  )
-
-add_library (CORSIKArandom STATIC ${CORSIKArandom_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKArandom ${CORSIKArandom_NAMESPACE} ${CORSIKArandom_HEADERS})
-
-target_link_libraries (
-  CORSIKArandom
-  CORSIKAutilities
-  CORSIKAlogging
-  )
-
-target_include_directories (
-  CORSIKArandom
-  PUBLIC
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/>
-  )
-
-# target dependencies on other libraries (also the header onlys)
-# none
-
-install (
-  TARGETS CORSIKArandom
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-  PUBLIC_HEADER DESTINATION include/${CORSIKArandom_NAMESPACE}
-  )
-
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST(testRandom)
-target_link_libraries (
-  testRandom
-  CORSIKArandom
-  CORSIKAtesting
-  CORSIKAunits
-  )
diff --git a/Framework/Random/RNGManager.cc b/Framework/Random/RNGManager.cc
deleted file mode 100644
index 8bbcf15dd..000000000
--- a/Framework/Random/RNGManager.cc
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#include <corsika/random/RNGManager.h>
-#include <corsika/logging/Logging.h>
-
-#include <sstream>
-
-void corsika::random::RNGManager::RegisterRandomStream(std::string const& pStreamName) {
-  corsika::random::RNG rng;
-
-  if (auto const& it = seeds.find(pStreamName); it != seeds.end()) {
-    rng.seed(it->second);
-  }
-
-  rngs[pStreamName] = std::move(rng);
-}
-
-corsika::random::RNG& corsika::random::RNGManager::GetRandomStream(
-    std::string const& pStreamName) {
-  if (IsRegistered(pStreamName)) {
-    return rngs.at(pStreamName);
-  } else { // this stream name is not in the map
-    throw std::runtime_error("'" + pStreamName + "' is not a registered stream.");
-  }
-}
-
-bool corsika::random::RNGManager::IsRegistered(std::string const& pStreamName) const {
-  return rngs.count(pStreamName) > 0;
-}
-
-std::stringstream corsika::random::RNGManager::dumpState() const {
-  std::stringstream buffer;
-  for (auto const& [streamName, rng] : rngs) {
-    buffer << '"' << streamName << "\" = \"" << rng << '"' << std::endl;
-  }
-
-  return buffer;
-}
-
-void corsika::random::RNGManager::SeedAll(uint64_t vSeed) {
-  for (auto& entry : rngs) {
-    auto seed = vSeed++;
-    C8LOG_TRACE("Random seed stream {} seed {}", entry.first, seed);
-    entry.second.seed(seed);
-  }
-}
-
-void corsika::random::RNGManager::SeedAll() {
-  std::random_device rd;
-  std::seed_seq sseq{rd(), rd(), rd(), rd(), rd(), rd()};
-  for (auto& entry : rngs) {
-    std::vector<std::uint32_t> seeds(1);
-    sseq.generate(seeds.begin(), seeds.end());
-    std::uint32_t seed = seeds[0];
-    C8LOG_TRACE("Random seed stream {} seed {}", entry.first, seed);
-    entry.second.seed(seed);
-  }
-}
diff --git a/Framework/StackInterface/CMakeLists.txt b/Framework/StackInterface/CMakeLists.txt
deleted file mode 100644
index 956f1873b..000000000
--- a/Framework/StackInterface/CMakeLists.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-set (
-  CORSIKAstackinterface_HEADERS
-  ParticleBase.h
-  StackIteratorInterface.h
-  Stack.h
-  SecondaryView.h
-  CombinedStack.h
-  )
-
-set (
-  CORSIKAstackinterface_NAMESPACE
-  corsika/stack
-  )
-
-add_library (
-  CORSIKAstackinterface
-  INTERFACE
-  )
-
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (
-  CORSIKAstackinterface ${CORSIKAstackinterface_NAMESPACE} ${CORSIKAstackinterface_HEADERS}
-  )
-
-target_link_libraries (
-  CORSIKAstackinterface
-  INTERFACE
-  CORSIKAlogging
-  CORSIKAsetup  
-  )
-
-target_include_directories (
-  CORSIKAstackinterface
-  INTERFACE
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include>
-  )
-
-install (
-  FILES ${CORSIKAstackinterface_HEADERS}
-  DESTINATION include/${CORSIKAstackinterface_NAMESPACE}
-  )
-
-#code testing
-CORSIKA_ADD_TEST(testStackInterface)
-target_link_libraries (testStackInterface CORSIKAstackinterface CORSIKAtesting)
-
-CORSIKA_ADD_TEST(testSecondaryView)
-target_link_libraries (testSecondaryView CORSIKAstackinterface CORSIKAtesting)
-
-CORSIKA_ADD_TEST(testCombinedStack)
-target_link_libraries (testCombinedStack CORSIKAstackinterface CORSIKAtesting)
diff --git a/Framework/StackInterface/Stack.dox b/Framework/StackInterface/Stack.dox
deleted file mode 100644
index 8ac29c628..000000000
--- a/Framework/StackInterface/Stack.dox
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
-  @page Stack Description of particle stacks
-
-  In the CORSIKA 8 framework particle data is always stored in
-  particle stacks. A particle is, thus, always a reference (iterator)
-  to an entry on a stack, e.g.
-
-  \verbatim
-  ModelStack stack;
-  stack.begin(); // returns an iterator: StackIterator, ConstStackIterator
-
-  *stack.begin(); // return a reference to ParticleInterfaceType, which is the class provided by the user to read/write particle properties
-  
-  \endverbatim
-
-  All functionality and algorithms for stack data access is located in the namespace corsika::stack
-
-  The minimal example of how to use this is shown in stack_example.cc  
-
-*/
\ No newline at end of file
diff --git a/Framework/Testing/CMakeLists.txt b/Framework/Testing/CMakeLists.txt
deleted file mode 100644
index 0c616e186..000000000
--- a/Framework/Testing/CMakeLists.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-set (
-  TESTING_SOURCES
-  TestMain.cc
-  )
-
-set (
-  TESTING_HEADERS
-  )
-
-set (
-  TESTING_NAMESPACE
-  corsika/testing
-  )
-
-add_library (CORSIKAtesting STATIC ${TESTING_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAtesting ${TESTING_NAMESPACE} ${TESTING_HEADERS})
-
-set_target_properties (
-  CORSIKAtesting
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-  PUBLIC_HEADER "${TESTING_HEADERS}"
-  )
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  CORSIKAtesting
-  CORSIKAthirdparty
-  )
-
-# target_include_directories (
-#  CORSIKAtesting
-#  SYSTEM
-#  PUBLIC    ${CATCH2_INCLUDE_DIR}
-#  INTERFACE ${CATCH2_INCLUDE_DIR}
-#  )
-
-target_include_directories (
-  CORSIKAtesting
-  INTERFACE
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  TARGETS CORSIKAtesting
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-  PUBLIC_HEADER DESTINATION include/${TESTING_NAMESPACE}
-  )
-
diff --git a/Framework/Units/CMakeLists.txt b/Framework/Units/CMakeLists.txt
deleted file mode 100644
index 8386ae026..000000000
--- a/Framework/Units/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-add_library (CORSIKAunits INTERFACE)
-
-set (CORSIKAunits_NAMESPACE corsika/units)
-set (
-  CORSIKAunits_HEADERS
-  PhysicalUnits.h
-  PhysicalConstants.h
-  )
-
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAunits ${CORSIKAunits_NAMESPACE} ${CORSIKAunits_HEADERS})
-
-target_include_directories (CORSIKAunits
-  INTERFACE
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/ThirdParty>
-  $<INSTALL_INTERFACE:include>
-  )
-
-install (FILES ${CORSIKAunits_HEADERS} DESTINATION include/${CORSIKAunits_NAMESPACE})
-
-# code testing
-CORSIKA_ADD_TEST (testUnits)
-target_link_libraries (testUnits CORSIKAunits CORSIKAtesting)
diff --git a/Framework/Utilities/CMakeLists.txt b/Framework/Utilities/CMakeLists.txt
deleted file mode 100644
index 3373c0171..000000000
--- a/Framework/Utilities/CMakeLists.txt
+++ /dev/null
@@ -1,118 +0,0 @@
-#
-# cfenv feature test - select implementation to use
-#
-try_compile (HAS_FEENABLEEXCEPT "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/try_feenableexcept.cc")
-if (HAS_FEENABLEEXCEPT)
-  set (CORSIKA_FENV "CorsikaFenvDefault.cc")
-  set_property(DIRECTORY ${CMAKE_HOME_DIRECTORY} APPEND PROPERTY COMPILE_DEFINITIONS "HAS_FEENABLEEXCEPT")
-else ()
-  if (APPLE)
-    set (CORSIKA_FENV "CorsikaFenvOSX.cc")
-  else()
-    set (CORSIKA_FENV "CorsikaFenvFallback.cc")
-  endif()
-endif ()
-
-#
-# library setup
-#
-set (
-  UTILITIES_SOURCES  
-  COMBoost.cc
-  CorsikaData.cc
-  quartic.cpp
-  ${CORSIKA_FENV})
-
-set (
-  UTILITIES_HEADERS
-  CorsikaData.h
-  COMBoost.h
-  Bit.h
-  Singleton.h
-  sgn.h
-  CorsikaFenv.h
-  MetaProgramming.h
-  quartic.h
-  )
-
-set (
-  UTILITIES_DEPENDS
-  CORSIKAgeometry
-  CORSIKAunits
-  CORSIKAlogging
-  C8::ext::boost # so far only for MetaProgramming
-  C8::ext::eigen3 # for COMboost
-  )
-
-if (TARGET cnpy)
-  LIST (APPEND
-    UTILITIES_HEADERS
-    SaveBoostHistogram.hpp
-    )
-  LIST (APPEND
-    UTILITIES_DEPENDS
-    cnpy # for SaveBoostHistogram
-    )
-endif (TARGET cnpy)
-  
-set (
-  UTILITIES_NAMESPACE
-  corsika/utl
-  )
-
-add_library (CORSIKAutilities STATIC ${UTILITIES_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAutilities ${UTILITIES_NAMESPACE} ${UTILITIES_HEADERS})
-
-set_target_properties (
-  CORSIKAutilities
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-  PUBLIC_HEADER "${UTILITIES_HEADERS}"
-  )
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  CORSIKAutilities
-  ${UTILITIES_DEPENDS}
-  )
-
-target_include_directories (
-  CORSIKAutilities
-  PUBLIC
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  TARGETS CORSIKAutilities
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-  PUBLIC_HEADER DESTINATION include/${UTILITIES_NAMESPACE}
-  )
-
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST(testCOMBoost)
-target_link_libraries (
-  testCOMBoost
-  CORSIKAutilities
-  CORSIKAtesting
-  )
-
-CORSIKA_ADD_TEST(testCorsikaFenv)
-target_link_libraries (
-  testCorsikaFenv
-  CORSIKAutilities
-  CORSIKAtesting
-)
-
-if (TARGET cnpy)
-  CORSIKA_ADD_TEST(testSaveBoostHistogram)
-  target_link_libraries (
-    testSaveBoostHistogram
-    CORSIKAutilities
-    CORSIKAtesting
-    )
-endif (TARGET cnpy)
diff --git a/Framework/Utilities/COMBoost.h b/Framework/Utilities/COMBoost.h
deleted file mode 100644
index 73b7c9300..000000000
--- a/Framework/Utilities/COMBoost.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/geometry/CoordinateSystem.h>
-#include <corsika/geometry/FourVector.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <corsika/logging/Logging.h>
-
-#include <Eigen/Dense>
-
-namespace corsika::utl {
-
-  /**
-     This utility class handles Lorentz boost between different
-     referenence frames, using FourVectors.
-   */
-
-  class COMBoost {
-    Eigen::Matrix2d boost_, inverseBoost_;
-    corsika::geometry::CoordinateSystem const &originalCS_, rotatedCS_;
-
-    void setBoost(double coshEta, double sinhEta);
-
-  public:
-    //! construct a COMBoost given four-vector of projectile and mass of target
-    COMBoost(
-        const corsika::geometry::FourVector<
-            corsika::units::si::HEPEnergyType,
-            corsika::geometry::Vector<corsika::units::si::hepmomentum_d>>& Pprojectile,
-        const corsika::units::si::HEPEnergyType massTarget);
-
-    //! construct a COMBoost to boost into the rest frame given a 3-momentum and mass
-    COMBoost(geometry::Vector<units::si::hepmomentum_d> const& momentum,
-             units::si::HEPEnergyType mass);
-
-    //! transforms a 4-momentum from lab frame to the center-of-mass frame
-    template <typename FourVector>
-    FourVector toCoM(const FourVector& p) const {
-      using namespace corsika::units::si;
-      auto pComponents = p.GetSpaceLikeComponents().GetComponents(rotatedCS_);
-      Eigen::Vector3d eVecRotated = pComponents.eVector;
-      Eigen::Vector2d lab;
-
-      lab << (p.GetTimeLikeComponent() * (1 / 1_GeV)),
-          (eVecRotated(2) * (1 / 1_GeV).magnitude());
-
-      auto const boostedZ = boost_ * lab;
-      auto const E_CoM = boostedZ(0) * 1_GeV;
-
-      eVecRotated(2) = boostedZ(1) * (1_GeV).magnitude();
-
-      return FourVector(
-          E_CoM, corsika::geometry::Vector<hepmomentum_d>(rotatedCS_, eVecRotated));
-    }
-
-    //! transforms a 4-momentum from the center-of-mass frame back to lab frame
-    template <typename FourVector>
-    FourVector fromCoM(const FourVector& p) const {
-      using namespace corsika::units::si;
-      auto pCM = p.GetSpaceLikeComponents().GetComponents(rotatedCS_);
-      auto const Ecm = p.GetTimeLikeComponent();
-
-      Eigen::Vector2d com;
-      com << (Ecm * (1 / 1_GeV)), (pCM.eVector(2) * (1 / 1_GeV).magnitude());
-
-      C8LOG_TRACE(
-          "COMBoost::fromCoM Ecm={} GeV"
-          " pcm={} GeV (norm = {} GeV), invariant mass={} GeV",
-          Ecm / 1_GeV, pCM / 1_GeV, pCM.norm() / 1_GeV, p.GetNorm() / 1_GeV);
-
-      auto const boostedZ = inverseBoost_ * com;
-      auto const E_lab = boostedZ(0) * 1_GeV;
-
-      pCM.eVector(2) = boostedZ(1) * (1_GeV).magnitude();
-
-      geometry::Vector<typename decltype(pCM)::dimension> pLab{rotatedCS_, pCM};
-      pLab.rebase(originalCS_);
-
-      FourVector f(E_lab, pLab);
-
-      C8LOG_TRACE("COMBoost::fromCoM --> Elab={} GeV",
-                  " plab={} GeV (norm={} GeV) "
-                  " GeV), invariant mass = {}",
-                  E_lab / 1_GeV, f.GetNorm() / 1_GeV, pLab.GetComponents(),
-                  pLab.norm() / 1_GeV);
-
-      return f;
-    }
-
-    geometry::CoordinateSystem const& GetRotatedCS() const;
-  };
-} // namespace corsika::utl
diff --git a/Processes/CMakeLists.txt b/Processes/CMakeLists.txt
deleted file mode 100644
index 63e66a331..000000000
--- a/Processes/CMakeLists.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-# general
-add_subdirectory (AnalyticProcessors)
-add_subdirectory (ExampleProcessors)
-
-# tracking
-add_subdirectory (Tracking)
-add_subdirectory (TrackingLine)
-add_subdirectory (TrackingLeapFrogStraight)
-add_subdirectory (TrackingLeapFrogCurved)
-# hadron interaction models
-add_subdirectory (Sibyll)
-add_subdirectory (QGSJetII)
-if (Pythia8_FOUND)
-  add_subdirectory (Pythia)
-endif (Pythia8_FOUND)
-if (CONEX_FOUND)
-  add_subdirectory (CONEXSourceCut)
-endif (CONEX_FOUND)
-add_subdirectory (HadronicElasticModel)
-add_subdirectory (UrQMD)
-add_subdirectory (Proposal)
-
-# continuous physics
-add_subdirectory (EnergyLoss)
-add_subdirectory (LongitudinalProfile)
-add_subdirectory (TrackWriter)
-add_subdirectory (ObservationPlane)
-# stack processes
-add_subdirectory (StackInspector)
-# secondaries process
-# cuts, thinning, etc.
-add_subdirectory (ParticleCut)
-add_subdirectory (OnShellCheck)
-# meta-processes
-add_subdirectory (InteractionCounter)
-
-
-##########################################
-# add_custom_target(CORSIKAprocesses)
-add_library (CORSIKAprocesses INTERFACE)
-add_dependencies (CORSIKAprocesses ProcessSibyll)
-add_dependencies (CORSIKAprocesses ProcessProposal)
-if (Pythia8_FOUND)
-  add_dependencies (CORSIKAprocesses ProcessPythia8)
-endif (Pythia8_FOUND)
-add_dependencies (CORSIKAprocesses ProcessStackInspector)
-add_dependencies (CORSIKAprocesses ProcessTrackingLine)
-add_dependencies (CORSIKAprocesses ProcessEnergyLoss)
-add_dependencies (CORSIKAprocesses ProcessUrQMD)
-add_dependencies (CORSIKAprocesses ProcessParticleCut)
-add_dependencies (CORSIKAprocesses ProcessOnShellCheck)
diff --git a/Processes/EnergyLoss/CMakeLists.txt b/Processes/EnergyLoss/CMakeLists.txt
deleted file mode 100644
index 3df3978d5..000000000
--- a/Processes/EnergyLoss/CMakeLists.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-set (
-  MODEL_SOURCES
-  EnergyLoss.cc
-  )
-
-set (
-  MODEL_HEADERS
-  EnergyLoss.h
-  )
-
-set (
-  MODEL_NAMESPACE
-  corsika/process/energy_loss
-  )
-
-add_library (ProcessEnergyLoss STATIC ${MODEL_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (ProcessEnergyLoss ${MODEL_NAMESPACE} ${MODEL_HEADERS})
-
-set_target_properties (
-  ProcessEnergyLoss
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-#  PUBLIC_HEADER "${MODEL_HEADERS}"
-  )
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  ProcessEnergyLoss
-  CORSIKAunits
-  CORSIKAparticles
-  CORSIKAgeometry
-  CORSIKAenvironment
-  CORSIKAsetup
-  CORSIKAlogging
-  )
-
-target_include_directories (
-  ProcessEnergyLoss 
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  TARGETS ProcessEnergyLoss
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-#  PUBLIC_HEADER DESTINATION include/${MODEL_NAMESPACE}
-  )
-
-
-# --------------------
-# code unit testing
-#CORSIKA_ADD_TEST (testNullModel testNullModel.cc)
-#target_link_libraries (
-#  testNullModel  ProcessNullModel
-#  CORSIKAsetup
-#  CORSIKAgeometry
-#  CORSIKAunits
-#  CORSIKAthirdparty # for catch2
-#  )
-
diff --git a/Processes/EnergyLoss/EnergyLoss.cc b/Processes/EnergyLoss/EnergyLoss.cc
deleted file mode 100644
index 66c8a76e2..000000000
--- a/Processes/EnergyLoss/EnergyLoss.cc
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#include <corsika/process/energy_loss/EnergyLoss.h>
-
-#include <corsika/particles/ParticleProperties.h>
-
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
-
-#include <corsika/logging/Logging.h>
-
-#include <corsika/geometry/Line.h>
-
-#include <cmath>
-#include <fstream>
-#include <iostream>
-#include <limits>
-#include <numeric>
-
-using namespace std;
-
-using namespace corsika;
-using namespace corsika::units::si;
-using SetupParticle = corsika::setup::Stack::ParticleType;
-using SetupTrack = corsika::setup::Trajectory;
-
-using namespace corsika::process::energy_loss;
-
-EnergyLoss::EnergyLoss(environment::ShowerAxis const& shower_axis,
-                       corsika::units::si::HEPEnergyType emCut)
-    : shower_axis_(shower_axis)
-    , emCut_(emCut)
-    , profile_(int(shower_axis.maximumX() / dX_) + 1) {}
-
-auto elab2plab = [](HEPEnergyType Elab, HEPMassType m) {
-  return sqrt((Elab - m) * (Elab + m));
-};
-
-/**
- *   PDG2018, passage of particles through matter
- *
- * Note, that \f$I_{\mathrm{eff}}\f$ of composite media a determined from \f$ \ln I =
- * \sum_i a_i \ln(I_i) \f$ where \f$ a_i \f$ is the fraction of the electron population
- * (\f$\sim Z_i\f$) of the \f$i\f$-th element. This can also be used for shell
- * corrections or density effects.
- *
- * The \f$I_{\mathrm{eff}}\f$ of compounds is not better than a few percent, if not
- * measured explicitly.
- *
- * For shell correction, see Sec 6 of https://www.nap.edu/read/20066/chapter/8#115
- *
- */
-HEPEnergyType EnergyLoss::BetheBloch(SetupParticle const& p, GrammageType const dX) {
-
-  // all these are material constants and have to come through Environment
-  // right now: values for nitrogen_D
-  // 7 nitrogen_gas 82.0 0.49976 D E 0.0011653 0.0 1.7378 4.1323 0.15349 3.2125 10.54
-  auto Ieff = 82.0_eV;
-  [[maybe_unused]] auto Zmat = 7;
-  auto ZoverA = 0.49976_mol / 1_g;
-  const double x0 = 1.7378;
-  const double x1 = 4.1323;
-  const double Cbar = 10.54;
-  const double delta0 = 0.0;
-  const double aa = 0.15349;
-  const double sk = 3.2125;
-  // end of material constants
-
-  // this is the Bethe-Bloch coefficiet 4pi N_A r_e^2 m_e c^2
-  auto constexpr K = 0.307075_MeV / 1_mol * square(1_cm);
-  HEPEnergyType const E = p.GetEnergy();
-  HEPMassType const m = p.GetMass();
-  double const gamma = E / m;
-  int const Z = p.GetChargeNumber();
-  int const Z2 = Z * Z;
-  HEPMassType constexpr me = particles::Electron::GetMass();
-  auto const m2 = m * m;
-  auto constexpr me2 = me * me;
-  double const gamma2 = gamma * gamma;
-
-  double const beta2 = (gamma2 - 1) / gamma2; // 1-1/gamma2    (1-1/gamma)*(1+1/gamma);
-                                              // (gamma_2-1)/gamma_2 = (1-1/gamma2);
-  double constexpr c2 = 1;                    // HEP convention here c=c2=1
-  C8LOG_DEBUG("BetheBloch beta2={}, gamma2={}", beta2, gamma2);
-  [[maybe_unused]] double const eta2 = beta2 / (1 - beta2);
-  HEPMassType const Wmax =
-      2 * me * c2 * beta2 * gamma2 / (1 + 2 * gamma * me / m + me2 / m2);
-  // approx, but <<1%    HEPMassType const Wmax = 2*me*c2*beta2*gamma2;      for HEAVY
-  // PARTICLES Wmax ~ 2me v2 for non-relativistic particles
-  C8LOG_DEBUG("BetheBloch Wmax={}", Wmax);
-
-  // Sternheimer parameterization, density corrections towards high energies
-  // NOTE/TODO: when Cbar is 0 it needs to be approximated from parameterization ->
-  // MISSING
-  C8LOG_DEBUG("BetheBloch p.GetMomentum().GetNorm()/m{}=", p.GetMomentum().GetNorm() / m);
-  double const x = log10(p.GetMomentum().GetNorm() / m);
-  double delta = 0;
-  if (x >= x1) {
-    delta = 2 * (log(10)) * x - Cbar;
-  } else if (x < x1 && x >= x0) {
-    delta = 2 * (log(10)) * x - Cbar + aa * pow((x1 - x), sk);
-  } else if (x < x0) { // and IF conductor (otherwise, this is 0)
-    delta = delta0 * pow(100, 2 * (x - x0));
-  }
-  C8LOG_DEBUG("BetheBloch delta={}", delta);
-
-  // with further low energies correction, accurary ~1% down to beta~0.05 (1MeV for p)
-
-  // shell correction, <~100MeV
-  // need more clarity about formulas and units
-  const double Cadj = 0;
-  /*
-  // https://www.nap.edu/read/20066/chapter/8#104
-  HEPEnergyType Iadj = 12_eV * Z + 7_eV;  // Iadj<163eV
-  if (Iadj>=163_eV)
-    Iadj = 9.76_eV * Z + 58.8_eV * pow(Z, -0.19);  // Iadj>=163eV
-  double const Cadj = (0.422377/eta2 + 0.0304043/(eta2*eta2) -
-  0.00038106/(eta2*eta2*eta2)) * 1e-6 * Iadj*Iadj + (3.858019/eta2 -
-  0.1667989/(eta2*eta2) + 0.00157955/(eta2*eta2*eta2)) * 1e-9 * Iadj*Iadj*Iadj;
-  */
-
-  // Barkas correction O(Z3) higher-order Born approximation
-  // see Appl. Phys. 85 (1999) 1249
-  // double A = 1;
-  // if (p.GetPID() == particles::Code::Nucleus) A = p.GetNuclearA();
-  // double const Erel = (p.GetEnergy()-p.GetMass()) / A / 1_keV;
-  // double const Llow = 0.01 * Erel;
-  // double const Lhigh = 1.5/pow(Erel, 0.4) + 45000./Zmat * pow(Erel, 1.6);
-  // double const barkas = Z * Llow*Lhigh/(Llow+Lhigh); // RU, I think the Z was
-  // missing...
-  double const barkas = 1; // does not work yet
-
-  // Bloch correction for O(Z4) higher-order Born approximation
-  // see Appl. Phys. 85 (1999) 1249
-  const double alpha = 1. / 137.035999173;
-  double const y2 = Z * Z * alpha * alpha / beta2;
-  double const bloch = -y2 * (1.202 - y2 * (1.042 - 0.855 * y2 + 0.343 * y2 * y2));
-
-  double const aux = 2 * me * c2 * beta2 * gamma2 * Wmax / (Ieff * Ieff);
-  return -K * Z2 * ZoverA / beta2 *
-         (0.5 * log(aux) - beta2 - Cadj / Z - delta / 2 + barkas + bloch) * dX;
-}
-
-// radiation losses according to PDG 2018, ch. 33 ref. [5]
-HEPEnergyType EnergyLoss::RadiationLosses(SetupParticle const& vP,
-                                          GrammageType const vDX) {
-  // simple-minded hard-coded value for b(E) inspired by data from
-  // http://pdg.lbl.gov/2018/AtomicNuclearProperties/ for N and O.
-  auto constexpr b = 3.0 * 1e-6 * square(1_cm) / 1_g;
-  return -vP.GetEnergy() * b * vDX;
-}
-
-HEPEnergyType EnergyLoss::TotalEnergyLoss(SetupParticle const& vP,
-                                          GrammageType const vDX) {
-  return BetheBloch(vP, vDX) + RadiationLosses(vP, vDX);
-}
-
-process::EProcessReturn EnergyLoss::DoContinuous(SetupParticle& p, SetupTrack const& t) {
-  if (p.GetChargeNumber() == 0) return process::EProcessReturn::eOk;
-
-  GrammageType const dX =
-      p.GetNode()->GetModelProperties().IntegratedGrammage(t, t.GetLength());
-  C8LOG_DEBUG("EnergyLoss pid={}, z={}, dX={} g/cm2", p.GetPID(), p.GetChargeNumber(),
-              dX / 1_g * square(1_cm));
-  HEPEnergyType dE = TotalEnergyLoss(p, dX);
-  auto E = p.GetEnergy();
-  [[maybe_unused]] const auto Ekin = E - p.GetMass();
-  auto Enew = E + dE;
-  C8LOG_DEBUG("EnergyLoss  dE={} MeV, E={} GeV, Ekin={} GeV, Enew={} GeV", dE / 1_MeV,
-              E / 1_GeV, Ekin / 1_GeV, Enew / 1_GeV);
-  p.SetEnergy(Enew);
-  MomentumUpdate(p, Enew);
-  FillProfile(t, dE);
-  return process::EProcessReturn::eOk;
-}
-
-LengthType EnergyLoss::MaxStepLength(SetupParticle const& vParticle,
-                                     SetupTrack const& vTrack) const {
-  if (vParticle.GetChargeNumber() == 0) {
-    return units::si::meter * std::numeric_limits<double>::infinity();
-  }
-
-  auto constexpr dX = 1_g / square(1_cm);
-  auto const dEdX = -TotalEnergyLoss(vParticle, dX) / dX; // dE > 0
-  //~ auto const Ekin = vParticle.GetEnergy() - vParticle.GetMass();
-
-  // in any case: never go below 0.99*emCut_ This needs to be
-  // slightly smaller than emCut_ since, either this Step is limited
-  // by energy_lim, then the particle is stopped in a very short
-  // range (before doing anythin else) and is then removed
-  // instantly. The exact position where it reaches emCut is not
-  // important, the important fact is that its E_kin is zero
-  // afterwards.
-  //
-  const auto energy = vParticle.GetEnergy();
-  auto energy_lim = std::max(0.9 * energy, 0.99 * emCut_);
-
-  auto const maxGrammage = (energy - energy_lim) / dEdX;
-
-  return vParticle.GetNode()->GetModelProperties().ArclengthFromGrammage(vTrack,
-                                                                         maxGrammage);
-}
-
-void EnergyLoss::MomentumUpdate(corsika::setup::Stack::ParticleType& vP,
-                                corsika::units::si::HEPEnergyType Enew) {
-  HEPMomentumType Pnew = elab2plab(Enew, vP.GetMass());
-  auto pnew = vP.GetMomentum();
-  vP.SetMomentum(pnew * Pnew / pnew.GetNorm());
-}
-
-void EnergyLoss::FillProfile(SetupTrack const& vTrack, const HEPEnergyType dE) {
-
-  GrammageType const grammageStart = shower_axis_.projectedX(vTrack.GetPosition(0));
-  GrammageType const grammageEnd = shower_axis_.projectedX(vTrack.GetPosition(1));
-  const auto deltaX = grammageEnd - grammageStart;
-
-  int binStart = grammageStart / dX_;
-  if (binStart < 0) return;
-  int binEnd = grammageEnd / dX_;
-  if (binEnd > int(profile_.size() - 1)) return;
-  if (deltaX < dX_threshold_) return;
-
-  C8LOG_DEBUG("energy deposit of -dE={} between {} and {}", -dE, grammageStart,
-              grammageEnd);
-
-  auto energyCount = HEPEnergyType::zero();
-
-  auto fill = [&](const int bin, const double weight) {
-    auto const increment = -dE * weight;
-    profile_[bin] += increment;
-    energyCount += increment;
-
-    C8LOG_DEBUG("filling bin {} with weight {} : {} ", bin, weight, increment);
-  };
-
-  // fill longitudinal profile
-  if (binStart == binEnd) {
-    fill(binStart, 1);
-  } else {
-    fill(binStart, ((1 + binStart) * dX_ - grammageStart) / deltaX);
-    fill(binEnd, (grammageEnd - binEnd * dX_) / deltaX);
-    for (int bin = binStart + 1; bin < binEnd; ++bin) { fill(bin, 1); }
-  }
-
-  C8LOG_DEBUG("total energy added to histogram: {} ", energyCount);
-}
-
-void EnergyLoss::PrintProfile() const {
-  std::ofstream file("EnergyLossProfile.dat");
-  file << "# EnergyLoss profile" << std::endl
-       << "# lower X bin edge [g/cm2]  dE/dX [GeV/g/cm2]" << endl;
-  double const deltaX = dX_ / 1_g * square(1_cm);
-  for (size_t i = 0; i < profile_.size(); ++i) {
-    file << std::scientific << std::setw(15) << i * deltaX << std::setw(15)
-         << profile_.at(i) / (deltaX * 1_GeV) << endl;
-  }
-}
-
-HEPEnergyType EnergyLoss::GetTotal() const {
-  return std::accumulate(profile_.cbegin(), profile_.cend(), HEPEnergyType::zero());
-}
-
-void EnergyLoss::showResults() const {
-  using namespace corsika::units::si; // required for operator::_MeV
-  std::cout << " ******************************" << std::endl
-            << " PROCESS::ContinuousProcess: " << std::endl;
-  std::cout << " energy lost dE (GeV)      :  " << energy_lost_ / 1_GeV << std::endl;
-}
-
-void EnergyLoss::reset() {
-  using namespace corsika::units::si; // required for operator::_MeV
-  energy_lost_ = 0_GeV;
-}
diff --git a/Processes/EnergyLoss/Properties8.dat b/Processes/EnergyLoss/Properties8.dat
deleted file mode 100644
index 377c3df77..000000000
--- a/Processes/EnergyLoss/Properties8.dat
+++ /dev/null
@@ -1,2907 +0,0 @@
-# RU Mo 18. Feb 14:07:40 CET 2019
-# Data table obtained from: http://pdg.lbl.gov/2018/AtomicNuclearProperties/properties8.dat
-# see also: http://pdg.lbl.gov/2018/AtomicNuclearProperties/expert.html
-   1 Hydro  3   1.0080000000   7  0.99212 8.3748E-05 8.3755E-05 D  1  1  4 E
-H   hydrogen_gas
-hydrogen gas (H%2#)
-      19.2   9.5835   1.8639   3.2718  0.14092   5.7273     0.00
-         1  1.000000  1.000000
-Boiling point                   -252.87       20.267 K
-Melting point                   -259.34       13.82 K
-Index of ref (n-1)*E6           132.0         http://www.kayelaby.npl.co.uk/
-Note: The mass of atomic <SUP>1</SUP>H is 1.007 276 522 6 (13) u (mass of the proton less binding energy of 13.61 eV = 1.461E-09 u).
-----------------------------------------------------------------------------
-   2 Heliu  6   4.0026020000   2  0.49967 1.6632E-04 1.6632E-04 G  1  1  2 E
-He   helium_gas_He
-helium gas (He)
-      41.8  11.1393   2.2017   3.6122  0.13443   5.8347     0.00
-         2  1.000000  1.000000
-Boiling point                   -268.93
-Index of ref (n-1)*E6            35.0         http://www.kayelaby.npl.co.uk/
-----------------------------------------------------------------------------
-   3 Lithi  2   6.9400000000   2  0.43221 5.3400E-01 5.3400E-01 S  1  1  2 E
-Li   lithium_Li
-lithium (Li)
-      40.0   3.1221   0.1304   1.6397  0.95136   2.4993     0.14
-         3  1.000000  1.000000
-melting point               180.5
-boiling point               1342.
-----------------------------------------------------------------------------
-   4 Beryl  7   9.0121831000   5  0.44384 1.8480E+00 1.8480E+00 S  1  1  2 E
-Be   beryllium_Be
-beryllium (Be)
-      63.7   2.7847   0.0592   1.6922  0.80392   2.4339     0.14
-         4  1.000000  1.000000
-melting point               1287.
-boiling point               2471.
-----------------------------------------------------------------------------
-   5 Boron  2  10.8100000000   7  0.46249 2.3700E+00 2.3700E+00 S  1  1  0 E
-B   boron_B
-boron (B)
-      76.0   2.8477   0.0305   1.9688  0.56224   2.4512     0.14
-         5  1.000000  1.000000
-----------------------------------------------------------------------------
-   6 Carbo  4  12.0107000000   8  0.49955 2.0000E+00 2.0000E+00 S  1  1  0 E
-C   carbon_amorphous_C
-carbon (amorphous) (C)
-      78.0   2.9925  -0.0351   2.4860  0.20240   3.0036     0.10
-         6  1.000000  1.000000
-----------------------------------------------------------------------------
-   7 Nitro  3  14.0070000000   2  0.49976 1.1653E-03 1.1653E-03 D  1  1  3 E
-N   nitrogen_gas
-nitrogen gas (N%2#)
-      82.0  10.5400   1.7378   4.1323  0.15349   3.2125     0.00
-         7  1.000000  1.000000
-Melting point (C)               -210.00
-Boiling point (C)               -195.86
-Index of ref (n-1)*E6           298.0         http://www.kayelaby.npl.co.uk/
-----------------------------------------------------------------------------
-   8 Oxyge  3  15.9990000000   3  0.50002 1.3315E-03 1.3315E-03 D  1  1  3 E
-O   oxygen_gas
-oxygen gas (O%2#)
-      95.0  10.7004   1.7541   4.3213  0.11778   3.2913     0.00
-         8  1.000000  1.000000
-Melting point (C)               -218.79
-Boiling point (C)               -182.95
-Index of ref (n-1)*E6           271.0         http://www.kayelaby.npl.co.uk/
-----------------------------------------------------------------------------
-   9 Fluor  9  18.9984031630   6  0.47372 1.5803E-03 1.5803E-03 D  1  1  3 E
-F   fluorine_gas
-fluorine gas (F%2#)
-     115.0  10.9653   1.8433   4.4096  0.11083   3.2962     0.00
-         9  1.000000  1.000000
-Melting point                   -219.62
-Boiling point                   -188.12
-Index ref (n-1)                 195.
-----------------------------------------------------------------------------
-  10 Neon   4  20.1797000000   6  0.49555 8.3851E-04 8.3851E-04 G  1  1  3 E
-Ne   neon_gas_Ne
-neon gas (Ne)
-     137.0  11.9041   2.0735   4.6421  0.08064   3.5771     0.00
-        10  1.000000  1.000000
-Boiling point                -246.08
-Melting point                -248.59
-Index ref                    67.1
-----------------------------------------------------------------------------
-  11 Sodiu  8  22.9897692800   2  0.47847 9.7100E-01 9.7100E-01 S  1  1  0 E
-Na   sodium_Na
-sodium (Na)
-     149.0   5.0526   0.2880   3.1962  0.07772   3.6452     0.08
-        11  1.000000  1.000000
-----------------------------------------------------------------------------
-  12 Magne  3  24.3050000000   6  0.49373 1.7400E+00 1.7400E+00 S  1  1  0 E
-Mg   magnesium_Mg
-magnesium (Mg)
-     156.0   4.5297   0.1499   3.0668  0.08163   3.6166     0.08
-        12  1.000000  1.000000
-----------------------------------------------------------------------------
-  13 Alumi  7  26.9815385000   7  0.48181 2.6989E+00 2.6989E+00 S  1  1  2 E
-Al   aluminum_Al
-aluminum (Al)
-     166.0   4.2395   0.1708   3.0127  0.08024   3.6345     0.12
-        13  1.000000  1.000000
-melti                           660.32          Aluminum
-boili                           2519.           Aluminum
-----------------------------------------------------------------------------
-  14 Silic  4  28.0855000000   3  0.49848 2.3300E+00 2.3290E+00 S  1  1  3 E
-Si   silicon_Si
-silicon (Si)
-     173.0   4.4351   0.2014   2.8715  0.14921   3.2546     0.14
-        14  1.000000  1.000000
-Index of ref                    3.95
-Melting point                  1414.
-Boiling point                  3265.
-----------------------------------------------------------------------------
-  15 Phosp  9  30.9737619980   5  0.48428 2.2000E+00 2.2000E+00 S  1  1  0 E
-P   phosphorus_P
-phosphorus (P)
-     173.0   4.5214   0.1696   2.7815  0.23610   2.9158     0.14
-        15  1.000000  1.000000
-----------------------------------------------------------------------------
-  16 Sulfu  3  32.0650000000   5  0.49899 2.0000E+00 2.0000E+00 S  1  1  0 E
-S   sulfur_S
-sulfur (S)
-     180.0   4.6659   0.1580   2.7159  0.33992   2.6456     0.14
-        16  1.000000  1.000000
-----------------------------------------------------------------------------
-  17 Chlor  3  35.4530000000   2  0.47951 2.9947E-03 2.9800E-03 D  1  1  3 E
-Cl   chlorine_gas
-chlorine gas (Cl%2#)
-     174.0  11.1421   1.5555   4.2994  0.19849   2.9702     0.00
-        17  1.000000  1.000000
-Melting point             -101.5
-Boiling point             -34.04
-Index of ref (n-1)*E6           773.0         http://www.kayelaby.npl.co.uk/
-----------------------------------------------------------------------------
-  18 Argon  3  39.9480000000   1  0.45059 1.6620E-03 1.6620E-03 G  1  1  3 E
-Ar   argon_gas_Ar
-argon gas (Ar)
-     188.0  11.9480   1.7635   4.4855  0.19714   2.9618     0.00
-        18  1.000000  1.000000
-Boiling point               -185.89
-Melting point               -189.3442
-Index of ref (n-1)*E6           281.0         http://www.kayelaby.npl.co.uk/
-----------------------------------------------------------------------------
-  19 Potas  4  39.0983000000   1  0.48595 8.6200E-01 8.6200E-01 S  1  1  0 E
-K   potassium_K
-potassium (K)
-     190.0   5.6423   0.3851   3.1724  0.19827   2.9233     0.10
-        19  1.000000  1.000000
-----------------------------------------------------------------------------
-  20 Calci  3  40.0780000000   4  0.49903 1.5500E+00 1.5500E+00 S  1  1  0 E
-Ca   calcium_Ca
-calcium (Ca)
-     191.0   5.0396   0.3228   3.1191  0.15643   3.0745     0.14
-        20  1.000000  1.000000
-----------------------------------------------------------------------------
-  21 Scand  6  44.9559080000   5  0.46712 2.9890E+00 2.9890E+00 S  1  1  0 E
-Sc   scandium_Sc
-scandium (Sc)
-     216.0   4.6949   0.1640   3.0593  0.15754   3.0517     0.10
-        21  1.000000  1.000000
-----------------------------------------------------------------------------
-  22 Titan  3  47.8670000000   1  0.45961 4.5400E+00 4.5400E+00 S  1  1  2 E
-Ti   titanium_Ti
-titanium (Ti)
-     233.0   4.4450   0.0957   3.0386  0.15662   3.0302     0.12
-        22  1.000000  1.000000
-melti                           1668.           Titanium
-boili                           3287.           Titanium
-----------------------------------------------------------------------------
-  23 Vanad  4  50.9415000000   1  0.45150 6.1100E+00 6.1100E+00 S  1  1  0 E
-V   vanadium_V
-vanadium (V)
-     245.0   4.2659   0.0691   3.0322  0.15436   3.0163     0.14
-        23  1.000000  1.000000
-----------------------------------------------------------------------------
-  24 Chrom  4  51.9961000000   6  0.46157 7.1800E+00 7.1800E+00 S  1  1  0 E
-Cr   chromium_Cr
-chromium (Cr)
-     257.0   4.1781   0.0340   3.0451  0.15419   2.9896     0.14
-        24  1.000000  1.000000
-----------------------------------------------------------------------------
-  25 Manga  6  54.9380440000   3  0.45506 7.4400E+00 7.4400E+00 S  1  1  0 E
-Mn   manganese_Mn
-manganese (Mn)
-     272.0   4.2702   0.0447   3.1074  0.14973   2.9796     0.14
-        25  1.000000  1.000000
-----------------------------------------------------------------------------
-  26 Iron   3  55.8450000000   2  0.46557 7.8740E+00 7.8740E+00 S  1  1  2 E
-Fe   iron_Fe
-iron (Fe)
-     286.0   4.2911  -0.0012   3.1531  0.14680   2.9632     0.12
-        26  1.000000  1.000000
-Melting point C                1538.
-Boiling point C                2861.
-----------------------------------------------------------------------------
-  27 Cobal  6  58.9331940000   4  0.45815 8.9000E+00 8.9000E+00 S  1  1  0 E
-Co   cobalt_Co
-cobalt (Co)
-     297.0   4.2601  -0.0187   3.1790  0.14474   2.9502     0.12
-        27  1.000000  1.000000
-----------------------------------------------------------------------------
-  28 Nicke  4  58.6934000000   4  0.47706 8.9020E+00 8.9020E+00 S  1  1  0 E
-Ni   nickel_Ni
-nickel (Ni)
-     311.0   4.3115  -0.0566   3.1851  0.16496   2.8430     0.10
-        28  1.000000  1.000000
-----------------------------------------------------------------------------
-  29 Coppe  3  63.5460000000   3  0.45636 8.9600E+00 8.9600E+00 S  1  1  2 E
-Cu   copper_Cu
-copper (Cu)
-     322.0   4.4190  -0.0254   3.2792  0.14339   2.9044     0.08
-        29  1.000000  1.000000
-melti                           1084.62         Copper
-boili                           2562.           Copper
-----------------------------------------------------------------------------
-  30 Zinc   2  65.3800000000   2  0.45886 7.1330E+00 7.1330E+00 S  1  1  0 E
-Zn   zinc_Zn
-zinc (Zn)
-     330.0   4.6906   0.0049   3.3668  0.14714   2.8652     0.08
-        30  1.000000  1.000000
-----------------------------------------------------------------------------
-  31 Galli  3  69.7230000000   1  0.44462 5.9040E+00 5.9040E+00 S  1  1  0 E
-Ga   gallium_Ga
-gallium (Ga)
-     334.0   4.9353   0.2267   3.5434  0.09440   3.1314     0.14
-        31  1.000000  1.000000
-----------------------------------------------------------------------------
-  32 Germa  3  72.6300000000   1  0.44053 5.3230E+00 5.3230E+00 S  1  1  2 E
-Ge   germanium_Ge
-germanium (Ge)
-     350.0   5.1411   0.3376   3.6096  0.07188   3.3306     0.14
-        32  1.000000  1.000000
-melti                           938.25          Germanium
-boili                           2833.           Germanium
-----------------------------------------------------------------------------
-  33 Arsen  6  74.9215950000   6  0.44046 5.7300E+00 5.7300E+00 S  1  1  0 E
-As   arsenic_As
-arsenic (As)
-     347.0   5.0510   0.1767   3.5702  0.06633   3.4176     0.08
-        33  1.000000  1.000000
-----------------------------------------------------------------------------
-  34 Selen  3  78.9710000000   8  0.43060 4.5000E+00 4.5000E+00 S  1  1  0 E
-Se   selenium_Se
-selenium (Se)
-     348.0   5.3210   0.2258   3.6264  0.06568   3.4317     0.10
-        34  1.000000  1.000000
-----------------------------------------------------------------------------
-  35 Bromi  3  79.9040000000   1  0.43803 7.0722E-03 7.0722E-03 D  1  1  2 E
-Br   bromine_gas
-bromine gas (Br%2#)
-     343.0  11.7307   1.5262   4.9899  0.06335   3.4670     0.00
-        35  1.000000  1.000000
-melting point              -7.2
-boiling point              58.78
-----------------------------------------------------------------------------
-  36 Krypt  3  83.7980000000   2  0.42960 3.4783E-03 3.4856E-03 G  1  1  2 E
-Kr   krypton_gas_Kr
-krypton gas (Kr)
-     352.0  12.5115   1.7158   5.0748  0.07446   3.4051     0.00
-        36  1.000000  1.000000
-melting point              -157.36
-boiling point              -153.22
-----------------------------------------------------------------------------
-  37 Rubid  4  85.4678000000   3  0.43291 1.5320E+00 1.5320E+00 S  1  1  0 E
-Rb   rubidium_Rb
-rubidium (Rb)
-     363.0   6.4776   0.5737   3.7995  0.07261   3.4177     0.14
-        37  1.000000  1.000000
-----------------------------------------------------------------------------
-  38 Stron  2  87.6200000000   1  0.43369 2.5400E+00 2.5400E+00 S  1  1  0 E
-Sr   strontium_Sr
-strontium (Sr)
-     366.0   5.9867   0.4585   3.6778  0.07165   3.4435     0.14
-        38  1.000000  1.000000
-----------------------------------------------------------------------------
-  39 Yttri  5  88.9058400000   2  0.43867 4.4690E+00 4.4690E+00 S  1  1  0 E
-Y   yttrium_Y
-yttrium (Y)
-     379.0   5.4801   0.3608   3.5542  0.07138   3.4585     0.14
-        39  1.000000  1.000000
-----------------------------------------------------------------------------
-  40 Zirco  3  91.2240000000   2  0.43848 6.5060E+00 6.5060E+00 S  1  1  0 E
-Zr   zirconium_Zr
-zirconium (Zr)
-     393.0   5.1774   0.2957   3.4890  0.07177   3.4533     0.14
-        40  1.000000  1.000000
-----------------------------------------------------------------------------
-  41 Niobi  5  92.9063700000   2  0.44130 8.5700E+00 8.5700E+00 S  1  1  0 E
-Nb   niobium_Nb
-niobium (Nb)
-     417.0   5.0141   0.1785   3.2201  0.13883   3.0930     0.14
-        41  1.000000  1.000000
-----------------------------------------------------------------------------
-  42 Molyb  2  95.9500000000   1  0.43768 1.0220E+01 1.0220E+01 S  1  1  0 E
-Mo   molybdenum_Mo
-molybdenum (Mo)
-     424.0   4.8793   0.2267   3.2784  0.10525   3.2549     0.14
-        42  1.000000  1.000000
-----------------------------------------------------------------------------
-  43 Techn  5  97.9072200000   3  0.43919 1.1500E+01 1.1500E+01 S  1  1  3 R
-Tc   technetium_Tc
-technetium (Tc)
-     428.0   4.7769   0.0949   3.1253  0.16572   2.9738     0.14
-        43  1.000000  1.000000
-melting                    2157.
-boiling                    4265.
-Note: Since there are no stable isotopes, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-----------------------------------------------------------------------------
-  44 Ruthe  2 101.0700000000   2  0.43534 1.2410E+01 1.2410E+01 S  1  1  0 E
-Ru   ruthenium_Ru
-ruthenium (Ru)
-     441.0   4.7694   0.0599   3.0834  0.19342   2.8707     0.14
-        44  1.000000  1.000000
-----------------------------------------------------------------------------
-  45 Rhodi  5 102.9055000000   2  0.43729 1.2410E+01 1.2410E+01 S  1  1  0 E
-Rh   rhodium_Rh
-rhodium (Rh)
-     449.0   4.8008   0.0576   3.1069  0.19205   2.8633     0.14
-        45  1.000000  1.000000
-----------------------------------------------------------------------------
-  46 Palla  2 106.4200000000   1  0.43225 1.2020E+01 1.2020E+01 S  1  1  0 E
-Pd   palladium_Pd
-palladium (Pd)
-     470.0   4.9358   0.0563   3.0555  0.24178   2.7239     0.14
-        46  1.000000  1.000000
-----------------------------------------------------------------------------
-  47 Silve  4 107.8682000000   2  0.43572 1.0500E+01 1.0500E+01 S  1  1  0 E
-Ag   silver_Ag
-silver (Ag)
-     470.0   5.0630   0.0657   3.1074  0.24585   2.6899     0.14
-        47  1.000000  1.000000
-----------------------------------------------------------------------------
-  48 Cadmi  3 112.4140000000   4  0.42700 8.6500E+00 8.6500E+00 S  1  1  0 E
-Cd   cadmium_Cd
-cadmium (Cd)
-     469.0   5.2727   0.1281   3.1667  0.24609   2.6772     0.14
-        48  1.000000  1.000000
-----------------------------------------------------------------------------
-  49 Indiu  3 114.8180000000   3  0.42676 7.3100E+00 7.3100E+00 S  1  1  0 E
-In   indium_In
-indium (In)
-     488.0   5.5211   0.2406   3.2032  0.23879   2.7144     0.14
-        49  1.000000  1.000000
-----------------------------------------------------------------------------
-  50 Tin    3 118.7100000000   7  0.42119 7.3100E+00 7.3100E+00 S  1  1  2 E
-Sn   tin_Sn
-tin (Sn)
-     488.0   5.5340   0.2879   3.2959  0.18689   2.8576     0.14
-        50  1.000000  1.000000
-melti                        231.93             Tin
-boili                        2602.              Tin
-----------------------------------------------------------------------------
-  51 Antim  3 121.7600000000   1  0.41886 6.6910E+00 6.6910E+00 S  1  1  0 E
-Sb   antimony_Sb
-antimony (Sb)
-     487.0   5.6241   0.3189   3.3489  0.16652   2.9319     0.14
-        51  1.000000  1.000000
-----------------------------------------------------------------------------
-  52 Tellu  2 127.6000000000   3  0.40752 6.2400E+00 6.2400E+00 S  1  1  0 E
-Te   tellurium_Te
-tellurium (Te)
-     485.0   5.7131   0.3296   3.4418  0.13815   3.0354     0.14
-        52  1.000000  1.000000
-----------------------------------------------------------------------------
-  53 Iodin  5 126.9044700000   3  0.41764 4.9300E+00 4.9300E+00 S  1  1  2 E
-I   iodine_I
-iodine (I)
-     491.0   5.9488   0.0549   3.2596  0.23766   2.7276     0.00
-        53  1.000000  1.000000
-melting point                113.7
-boiling point                184.4
-----------------------------------------------------------------------------
-  54 Xenon  3 131.2930000000   6  0.41129 5.4854E-03 5.4830E-03 G  1  1  3 E
-Xe   xenon_gas_Xe
-xenon gas (Xe)
-     482.0  12.7281   1.5630   4.7371  0.23314   2.7414     0.00
-        54  1.000000  1.000000
-Index ref                 701.
-Melting point             -111.75
-Boiling point             -108.0
-----------------------------------------------------------------------------
-  55 Caesi  8 132.9054519600   6  0.41383 1.8730E+00 1.8730E+00 S  1  1  0 E
-Cs   caesium_Cs
-caesium (Cs)
-     488.0   6.9135   0.5473   3.5914  0.18233   2.8866     0.14
-        55  1.000000  1.000000
-----------------------------------------------------------------------------
-  56 Bariu  3 137.3270000000   7  0.40779 3.5000E+00 3.5000E+00 S  1  1  0 E
-Ba   barium_Ba
-barium (Ba)
-     491.0   6.3153   0.4190   3.4547  0.18268   2.8906     0.14
-        56  1.000000  1.000000
-----------------------------------------------------------------------------
-  57 Lanth  5 138.9054700000   7  0.41035 6.1540E+00 6.1450E+00 S  1  1  0 E
-La   lanthanum_La
-lanthanum (La)
-     501.0   5.7850   0.3161   3.3293  0.18591   2.8828     0.14
-        57  1.000000  1.000000
-----------------------------------------------------------------------------
-  58 Ceriu  3 140.1160000000   1  0.41394 6.6570E+00 6.7700E+00 S  1  1  0 E
-Ce   cerium_Ce
-cerium (Ce)
-     523.0   5.7837   0.2713   3.3432  0.18885   2.8592     0.14
-        58  1.000000  1.000000
-----------------------------------------------------------------------------
-  59 Prase  5 140.9076600000   2  0.41871 6.7100E+00 6.7730E+00 S  1  1  0 E
-Pr   praseodymium_Pr
-praseodymium (Pr)
-     535.0   5.8096   0.2333   3.2773  0.23265   2.7331     0.14
-        59  1.000000  1.000000
-----------------------------------------------------------------------------
-  60 Neody  3 144.2420000000   3  0.41597 6.9000E+00 7.0080E+00 S  1  1  0 E
-Nd   neodymium_Nd
-neodymium (Nd)
-     546.0   5.8290   0.1984   3.3063  0.23530   2.7050     0.14
-        60  1.000000  1.000000
-----------------------------------------------------------------------------
-  61 Prome  5 144.9127500000   3  0.42094 7.2200E+00 7.2640E+00 S  1  1  1 R
-Pm   promethium_Pm
-promethium (Pm)
-     560.0   5.8224   0.1627   3.3199  0.24280   2.6674     0.14
-        61  1.000000  1.000000
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-----------------------------------------------------------------------------
-  62 Samar  2 150.3600000000   2  0.41234 7.4600E+00 7.5200E+00 S  1  1  0 E
-Sm   samarium_Sm
-samarium (Sm)
-     574.0   5.8597   0.1520   3.3460  0.24698   2.6403     0.14
-        62  1.000000  1.000000
-----------------------------------------------------------------------------
-  63 Europ  3 151.9640000000   1  0.41457 5.2430E+00 5.2440E+00 S  1  1  0 E
-Eu   europium_Eu
-europium (Eu)
-     580.0   6.2278   0.1888   3.4633  0.24448   2.6245     0.14
-        63  1.000000  1.000000
-----------------------------------------------------------------------------
-  64 Gadol  2 157.2500000000   3  0.40700 7.9004E+00 7.9010E+00 S  1  1  0 E
-Gd   gadolinium_Gd
-gadolinium (Gd)
-     591.0   5.8738   0.1058   3.3932  0.25109   2.5977     0.14
-        64  1.000000  1.000000
-----------------------------------------------------------------------------
-  65 Terbi  5 158.9253500000   2  0.40900 8.2290E+00 8.2300E+00 S  1  1  0 E
-Tb   terbium_Tb
-terbium (Tb)
-     614.0   5.9045   0.0947   3.4224  0.24453   2.6056     0.14
-        65  1.000000  1.000000
-----------------------------------------------------------------------------
-  66 Dyspr  3 162.5000000000   1  0.40615 8.5500E+00 8.5510E+00 S  1  1  0 E
-Dy   dysprosium_Dy
-dysprosium (Dy)
-     628.0   5.9183   0.0822   3.4474  0.24665   2.5849     0.14
-        66  1.000000  1.000000
-----------------------------------------------------------------------------
-  67 Holmi  5 164.9303300000   2  0.40623 8.7950E+00 8.7950E+00 S  1  1  0 E
-Ho   holmium_Ho
-holmium (Ho)
-     650.0   5.9587   0.0761   3.4782  0.24638   2.5726     0.14
-        67  1.000000  1.000000
-----------------------------------------------------------------------------
-  68 Erbiu  3 167.2590000000   3  0.40656 9.0660E+00 9.0260E+00 S  1  1  0 E
-Er   erbium_Er
-erbium (Er)
-     658.0   5.9521   0.0648   3.4922  0.24823   2.5573     0.14
-        68  1.000000  1.000000
-----------------------------------------------------------------------------
-  69 Thuli  5 168.9342200000   2  0.40844 9.3210E+00 9.3210E+00 S  1  1  0 E
-Tm   thulium_Tm
-thulium (Tm)
-     674.0   5.9677   0.0812   3.5085  0.24889   2.5469     0.14
-        69  1.000000  1.000000
-----------------------------------------------------------------------------
-  70 Ytter  3 173.0540000000   5  0.40450 6.7300E+00 6.9030E+00 S  1  1  0 E
-Yb   ytterbium_Yb
-ytterbium (Yb)
-     684.0   6.3325   0.1199   3.6246  0.25295   2.5141     0.14
-        70  1.000000  1.000000
-----------------------------------------------------------------------------
-  71 Lutet  4 174.9668000000   1  0.40579 9.8400E+00 9.8410E+00 S  1  1  0 E
-Lu   lutetium_Lu
-lutetium (Lu)
-     694.0   5.9785   0.1560   3.5218  0.24033   2.5643     0.14
-        71  1.000000  1.000000
-----------------------------------------------------------------------------
-  72 Hafni  2 178.4900000000   2  0.40338 1.3310E+01 1.3310E+01 S  1  1  0 E
-Hf   hafnium_Hf
-hafnium (Hf)
-     705.0   5.7139   0.1965   3.4337  0.22918   2.6155     0.14
-        72  1.000000  1.000000
-----------------------------------------------------------------------------
-  73 Tanta  5 180.9478800000   2  0.40343 1.6654E+01 1.6654E+01 S  1  1  0 E
-Ta   tantalum_Ta
-tantalum (Ta)
-     718.0   5.5262   0.2117   3.4805  0.17798   2.7623     0.14
-        73  1.000000  1.000000
-----------------------------------------------------------------------------
-  74 Tungs  2 183.8400000000   1  0.40252 1.9300E+01 1.9300E+01 S  1  1  2 E
-W   tungsten_W
-tungsten (W)
-     727.0   5.4059   0.2167   3.4960  0.15509   2.8447     0.14
-        74  1.000000  1.000000
-melti                           3422.           Tungsten
-boili                           5555.           Tungsten
-----------------------------------------------------------------------------
-  75 Rheni  3 186.2070000000   1  0.40278 2.1020E+01 2.1020E+01 S  1  1  0 E
-Re   rhenium_Re
-rhenium (Re)
-     736.0   5.3445   0.0559   3.4845  0.15184   2.8627     0.08
-        75  1.000000  1.000000
-----------------------------------------------------------------------------
-  76 Osmiu  2 190.2300000000   3  0.39952 2.2570E+01 2.2570E+01 S  1  1  0 E
-Os   osmium_Os
-osmium (Os)
-     746.0   5.3083   0.0891   3.5414  0.12751   2.9608     0.10
-        76  1.000000  1.000000
-----------------------------------------------------------------------------
-  77 Iridi  3 192.2170000000   3  0.40059 2.2420E+01 2.2420E+01 S  1  1  0 E
-Ir   iridium_Ir
-iridium (Ir)
-     757.0   5.3418   0.0819   3.5480  0.12690   2.9658     0.10
-        77  1.000000  1.000000
-----------------------------------------------------------------------------
-  78 Plati  3 195.0840000000   9  0.39983 2.1450E+01 2.1450E+01 S  1  1  2 E
-Pt   platinum_Pt
-platinum (Pt)
-     790.0   5.4732   0.1484   3.6212  0.11128   3.0417     0.12
-        78  1.000000  1.000000
-melti                           1768.4          Platinum
-boili                           3825.           Platinum
-----------------------------------------------------------------------------
-  79 Gold   6 196.9665690000   5  0.40108 1.9320E+01 1.9320E+01 S  1  1  2 E
-Au   gold_Au
-gold (Au)
-     790.0   5.5747   0.2021   3.6979  0.09756   3.1101     0.14
-        79  1.000000  1.000000
-melti                           1064.18         Gold
-boili                           2856.           Gold
-----------------------------------------------------------------------------
-  80 Mercu  3 200.5920000000   2  0.39882 1.3546E+01 1.3546E+01 L  1  1  0 E
-Hg   mercury_Hg
-mercury (Hg)
-     800.0   5.9605   0.2756   3.7275  0.11014   3.0519     0.14
-        80  1.000000  1.000000
-----------------------------------------------------------------------------
-  81 Thall  2 204.3800000000   2  0.39631 1.1720E+01 1.1720E+01 S  1  1  0 E
-Tl   thallium_Tl
-thallium (Tl)
-     810.0   6.1365   0.3491   3.8044  0.09455   3.1450     0.14
-        81  1.000000  1.000000
-----------------------------------------------------------------------------
-  82 Lead   1 207.2000000000   1  0.39575 1.1350E+01 1.1350E+01 S  1  1  2 E
-Pb   lead_Pb
-lead (Pb)
-     823.0   6.2018   0.3776   3.8073  0.09359   3.1608     0.14
-        82  1.000000  1.000000
-melti                           327.46          Lead
-boili                           1749.           Lead
-----------------------------------------------------------------------------
-  83 Bismu  5 208.9804000000   1  0.39717 9.7470E+00 9.7470E+00 S  1  1  0 E
-Bi   bismuth_Bi
-bismuth (Bi)
-     823.0   6.3505   0.4152   3.8248  0.09410   3.1671     0.14
-        83  1.000000  1.000000
-----------------------------------------------------------------------------
-  84 Polon  5 208.9824300000   2  0.40195 9.3200E+00 9.3200E+00 S  1  1  1 R
-Po   polonium_Po
-polonium (Po)
-     830.0   6.4003   0.4267   3.8293  0.09282   3.1830     0.14
-        84  1.000000  1.000000
-Note: Since there are no stable isotopes, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-----------------------------------------------------------------------------
-  85 H-liq  3   1.0080000000   7  0.99212 6.0000E-02 7.0800E-02 L  1  1  3 E
-H   liquid_hydrogen
-liquid hydrogen (H%2#)
-      21.8   3.2632   0.4759   1.9215  0.13483   5.6249     0.00
-         1  1.000000  1.000000
-Melting point                   -259.34          Rubber Bible
-Boiling point                   -252.87          Rubber Bible
-Index of ref                    1.112
-----------------------------------------------------------------------------
-  86 Radon  5 222.0175800000   2  0.38736 9.0662E-03 9.0662E-03 G  1  1  3 R
-Rn   radon_Rn
-radon (Rn)
-     794.0  13.2839   1.5368   4.9889  0.20798   2.7409     0.00
-        86  1.000000  1.000000
-Melting point                   -71.
-Boiling point                   -61.7
-Note: Since there are no stable isotopes, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-----------------------------------------------------------------------------
-  87 C (gr  4  12.0107000000   8  0.49955 1.7000E+00 2.2100E+00 S  1  1  2 E
-C   carbon_graphite_C
-carbon (graphite) (C)
-      78.0   3.1550   0.0480   2.5387  0.20762   2.9532     0.14
-         6  1.000000  1.000000
-Sublimation point            3825.0
-Note: Density may vary 2.09 to 2.23
-----------------------------------------------------------------------------
-  88 Radiu  5 226.0254100000   2  0.38934 5.0000E+00 5.0000E+00 S  1  1  1 R
-Ra   radium_Ra
-radium (Ra)
-     826.0   7.0452   0.5991   3.9428  0.08804   3.2454     0.14
-        88  1.000000  1.000000
-Note: Since there are no stable isotopes, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-----------------------------------------------------------------------------
-  89 Actin  5 227.0277500000   2  0.39202 1.0070E+01 1.0070E+01 S  1  1  1 R
-Ac   actinium_Ac
-actinium (Ac)
-     841.0   6.3742   0.4559   3.7966  0.08567   3.2683     0.14
-        89  1.000000  1.000000
-Note: Since there are no stable isotopes, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-----------------------------------------------------------------------------
-  90 Thori  4 232.0377000000   4  0.38787 1.1720E+01 1.1720E+01 S  1  1  3 R
-Th   thorium_Th
-thorium (Th)
-     847.0   6.2473   0.4202   3.7681  0.08655   3.2610     0.14
-        90  1.000000  1.000000
-melting                    1135.
-boiling                    4131.
-Note: There is a well-defined terrestrial aboundance for thorium even though it is radioactive.
-----------------------------------------------------------------------------
-  91 Prota  5 231.0358800000   2  0.39388 1.5370E+01 1.5370E+01 S  1  1  2 R
-Pa   protactinium_Pa
-protactinium (Pa)
-     878.0   6.0327   0.3144   3.5079  0.14770   2.9845     0.14
-        91  1.000000  1.000000
-melting                    1572.
-Note: There is a well-defined terrestrial aboundance for protactinium even though it is radioactive.
-----------------------------------------------------------------------------
-  92 Urani  5 238.0289100000   3  0.38651 1.8950E+01 1.8950E+01 S  1  1  3 R
-U   uranium_U
-uranium (U)
-     890.0   5.8694   0.2260   3.3721  0.19677   2.8171     0.14
-        92  1.000000  1.000000
-melti                           1135.           Uranium
-boili                           4131.           Uranium
-Note: There is a well-defined terrestrial aboundance for uranium even though it is radioactive.
-----------------------------------------------------------------------------
-  93 Neptu  5 237.0481700000   2  0.39233 2.0250E+01 2.0250E+01 S  1  1  1 R
-Np   neptunium_Np
-neptunium (Np)
-     902.0   5.8149   0.1869   3.3690  0.19741   2.8082     0.14
-        93  1.000000  1.000000
-Note: Since there are no stable isotopes, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-----------------------------------------------------------------------------
-  94 Pluto  5 244.0642000000   4  0.38514 1.9840E+01 1.9840E+01 S  1  1  1 R
-Pu   plutonium_Pu
-plutonium (Pu)
-     921.0   5.8748   0.1557   3.3981  0.20419   2.7679     0.14
-        94  1.000000  1.000000
-Note: Since there are no stable isotopes, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-----------------------------------------------------------------------------
-  95 Ameri  5 243.0613800000   2  0.39085 1.3670E+01 1.3670E+01 S  1  1  1 R
-Am   americium_Am
-americium (Am)
-     934.0   6.2813   0.2274   3.5021  0.20308   2.7615     0.14
-        95  1.000000  1.000000
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-----------------------------------------------------------------------------
-  96 Curiu  5 247.0703500000   3  0.38855 1.3510E+01 1.3510E+01 S  1  1  2 R
-Cm   curium_Cm
-curium (Cm)
-     939.0   6.3097   0.2484   3.5160  0.20257   2.7579     0.14
-        96  1.000000  1.000000
-Melting               1345.
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-----------------------------------------------------------------------------
-  97 Berke  5 247.0703100000   4  0.39260 0.9860E+00 0.9860E+01 S  1  1  2 R
-Bk   berkelium_Bk
-berkelium (Bk)
-     952.0   6.2912   0.5509   3.0000  0.25556   3.0000     0.00
-        97  1.000000  1.000000
-Melting point              986.
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-----------------------------------------------------------------------------
-  98 Carbo  4  12.0107000000   8  0.49955 2.2650E+00 2.2650E+00 S  1  1  0 R
-C   carbon_compact_C
-carbon (compact) (C)
-      78.0   2.8680  -0.0178   2.3415  0.26142   2.8697     0.12
-         6  1.000000  1.000000
-----------------------------------------------------------------------------
-  99 A-150  5  -1.0000000000      0.54903 1.1270E+00 1.1270E+00 S  6  1  0 B
-     a-150_tissue-equivalent_plastic
-A-150 tissue-equivalent plastic
-      65.1   3.1100   0.1329   2.6234  0.10783   3.4442     0.00
-         1  1.000000  0.101327
-         6  0.642279  0.775501
-         7  0.024897  0.035057
-         8  0.032527  0.052316
-         9  0.009122  0.017422
-        20  0.004561  0.018378
-----------------------------------------------------------------------------
- 100 Aceto  5  -1.0000000000      0.55097 7.8990E-01 7.8990E-01 L  3  6  1 O
-     acetone
-acetone (CH%3#COCH%3#)
-      64.2   3.4341   0.2197   2.6928  0.11100   3.4047     0.00
-         1  6.000000  0.104122
-         6  3.000201  0.620405
-         8  1.000043  0.275473
-Index of ref                 1.36
-----------------------------------------------------------------------------
- 101 Acety  5  -1.0000000000      0.53768 1.0967E-03 1.0967E-03 G  2  2  0 O
-     acetylene_CHCH
-acetylene (CHCH)
-      58.2   9.8419   1.6017   4.0074  0.12167   3.4277     0.00
-         1  2.000000  0.077418
-         6  2.000135  0.922582
-----------------------------------------------------------------------------
- 102 Adeni  5  -1.0000000000      0.51903 1.3500E+00 1.3500E+00 S  3  5  0 O
-     adenine
-adenine (C%5#H%5#N%5#)
-      71.4   3.1724   0.1295   2.4219  0.20908   3.0271     0.00
-         1  5.000000  0.037294
-         6  5.000354  0.444430
-         7  5.000218  0.518275
-----------------------------------------------------------------------------
- 103 Adip-  5  -1.0000000000      0.55947 9.2000E-01 9.2000E-01 S 13  1  0 B
-     adipose_tissue_ICRP
-adipose tissue (ICRP)
-      63.2   3.2367   0.1827   2.6530  0.10278   3.4817     0.00
-         1  1.000000  0.119477
-         6  0.447595  0.637240
-         7  0.004800  0.007970
-         8  0.122506  0.232333
-        11  0.000183  0.000500
-        12  0.000007  0.000020
-        15  0.000044  0.000160
-        16  0.000192  0.000730
-        17  0.000283  0.001190
-        19  0.000069  0.000320
-        20  0.000004  0.000020
-        26  0.000003  0.000020
-        30  0.000003  0.000020
-----------------------------------------------------------------------------
- 104 Air    5  -1.0000000000      0.49919 1.2048E-03 1.2048E-03 G  4  0  2 M
-     air_dry_1_atm
-air (dry, 1 atm)
-      85.7  10.5961   1.7418   4.2759  0.10914   3.3994     0.00
-         6  0.000124  0.000124
-         7  0.755267  0.755267
-         8  0.231871  0.231781
-        18  0.012827  0.012827
-Boiling point              -194.35
-Index of ref               288.6             http://emtoolbox.nist.gov/
-----------------------------------------------------------------------------
- 105 Alani  5  -1.0000000000      0.53976 1.4200E+00 1.4200E+00 S  4  7  0 O
-     alanine
-alanine (C%3#H%7#NO%2#)
-      71.9   3.0965   0.1354   2.6336  0.11484   3.3526     0.00
-         1  7.000000  0.079190
-         6  3.000178  0.404439
-         7  1.000032  0.157213
-         8  2.000071  0.359159
-----------------------------------------------------------------------------
- 106 Al2O3  5  -1.0000000000      0.49038 3.9700E+00 3.9700E+00 S  2  3  3 I
-     aluminum_oxide_sapphire
-aluminum oxide (sapphire, Al%2#O%3#)
-     145.2   3.5682   0.0402   2.8665  0.08500   3.5458     0.00
-         8  3.000000  0.470749
-        13  2.000002  0.529251
-Index of refraction           1.77
-Melting point                 2054.
-Boiling point                 3000.              approximate
-----------------------------------------------------------------------------
- 107 Amber  5  -1.0000000000      0.55179 1.1000E+00 1.1000E+00 S  3 16  0 O
-     amber
-amber (C%10#H%16#O)
-      63.2   3.0701   0.1335   2.5610  0.11934   3.4098     0.00
-         1 16.000000  0.105930
-         6 10.000679  0.788973
-         8  1.000042  0.105096
-----------------------------------------------------------------------------
- 108 Ammon  5  -1.0000000000      0.59719 8.2602E-04 8.2602E-04 G  2  3  1 I
-     ammonia
-ammonia (NH%3#)
-      53.7   9.8763   1.6822   4.1158  0.08315   3.6464     0.00
-         1  3.000000  0.177547
-         7  1.000038  0.822453
-Index of ref (n-1)*E6           376.0         http://www.kayelaby.npl.co.uk/
-----------------------------------------------------------------------------
- 109 Anili  5  -1.0000000000      0.53699 1.0235E+00 1.0235E+00 L  3  7  0 O
-     aniline
-aniline (C%6#H%5#NH%2#)
-      66.2   3.2622   0.1618   2.5805  0.13134   3.3434     0.00
-         1  7.000000  0.075759
-         6  6.000400  0.773838
-         7  1.000041  0.150403
-----------------------------------------------------------------------------
- 110 Anthr  5  -1.0000000000      0.52740 1.2830E+00 1.2830E+00 S  2 10  0 O
-     anthracene
-anthracene (C%14#H%10#)
-      69.5   3.1514   0.1146   2.5213  0.14677   3.2831     0.00
-         1 10.000000  0.056550
-         6 14.000793  0.943450
-----------------------------------------------------------------------------
- 111 B-100  5  -1.0000000000      0.52740 1.4500E+00 1.4500E+00 S  6  1  0 B
-     b-100_Bone-equivalent_plastic
-b-100 Bone-equivalent plastic
-      85.9   3.4528   0.1252   3.0420  0.05268   3.7365     0.00
-         1  1.000000  0.065471
-         6  0.688251  0.536945
-         7  0.023631  0.021500
-         8  0.030873  0.032085
-         9  0.135660  0.167411
-        20  0.067833  0.176589
-----------------------------------------------------------------------------
- 112 Bakel  5  -1.0000000000      0.52792 1.2500E+00 1.2500E+00 S  3 38  0 P
-     bakelite
-bakelite [(C%43#H%38#O%7#)%n#]
-      72.4   3.2582   0.1471   2.6055  0.12713   3.3470     0.00
-         1 38.000000  0.057441
-         6 43.003166  0.774591
-         8  7.000340  0.167968
-----------------------------------------------------------------------------
- 113 Ba-F2  5  -1.0000000000      0.42207 4.8900E+00 4.8930E+00 S  2  2  3 I
-     barium_fluoride
-barium fluoride (BaF%2#)
-     375.9   5.4122  -0.0098   3.3871  0.15991   2.8867     0.00
-         9  2.000000  0.216720
-        56  1.000021  0.783280
-Melting point (C)                1368.
-Boiling point (C)                2260.
-Index of ref                     1.4744       CRC2006 10-246
-----------------------------------------------------------------------------
- 114 Ba-SO  5  -1.0000000000      0.44561 4.5000E+00 4.5000E+00 S  3  4  0 I
-     barium_sulfate
-barium sulfate BaSO%4#
-     285.7   4.8923  -0.0128   3.4069  0.11747   3.0427     0.00
-         8  4.000000  0.274212
-        16  0.999811  0.137368
-        56  1.000020  0.588420
-----------------------------------------------------------------------------
- 115 Benze  5  -1.0000000000      0.53769 8.7865E-01 8.7865E-01 L  2  6  0 O
-     benzene
-benzene C%6#H%6#
-      63.4   3.3269   0.1710   2.5091  0.16519   3.2174     0.00
-         1  6.000000  0.077418
-         6  6.000406  0.922582
-----------------------------------------------------------------------------
- 116 Be-O   5  -1.0000000000      0.47979 3.0100E+00 3.0100E+00 S  2  1  0 I
-     beryllium_oxide_BeO
-beryllium oxide (BeO)
-      93.2   2.9801   0.0241   2.5846  0.10755   3.4927     0.00
-         4  1.000000  0.360320
-         8  1.000002  0.639680
-----------------------------------------------------------------------------
- 117 BGO    5  -1.0000000000      0.42065 7.1300E+00 7.1300E+00 S  3 12  3 I
-     bismuth_germanate_BGO
-bismuth germanate (BGO) [(Bi%2#O%3#)%2#(GeO%2#)%3#]
-     534.1   5.7409   0.0456   3.7816  0.09569   3.0781     0.00
-         8 12.000000  0.154126
-        32  2.999188  0.174820
-        83  4.000009  0.671054
-Melting point                   1044.                 CRC2006
-Index of refraction            2.15
-Note: Evalite structure; less common is Bi{12}GeO{20}
-----------------------------------------------------------------------------
- 118 Blood  5  -1.0000000000      0.54995 1.0600E+00 1.0600E+00 L 14  1  0 B
-     blood_ICRP
-blood (ICRP)
-      75.2   3.4581   0.2239   2.8017  0.08492   3.5406     0.00
-         1  1.000000  0.101866
-         6  0.082399  0.100020
-         7  0.020939  0.029640
-         8  0.469656  0.759414
-        11  0.000796  0.001850
-        12  0.000016  0.000040
-        14  0.000011  0.000030
-        15  0.000112  0.000350
-        16  0.000571  0.001850
-        17  0.000776  0.002780
-        19  0.000413  0.001630
-        20  0.000015  0.000060
-        26  0.000082  0.000460
-        30  0.000002  0.000010
-----------------------------------------------------------------------------
- 119 Bonec  5  -1.0000000000      0.53010 1.8500E+00 1.8500E+00 S  8  1  0 B
-     compact_bone_ICRU
-compact bone (ICRU)
-      91.9   3.3390   0.0944   3.0201  0.05822   3.6419     0.00
-         1  1.000000  0.063984
-         6  0.364619  0.278000
-         7  0.030366  0.027000
-         8  0.403702  0.410016
-        12  0.001296  0.002000
-        15  0.035601  0.070000
-        16  0.000983  0.002000
-        20  0.057780  0.147000
-----------------------------------------------------------------------------
- 120 Bonec  5  -1.0000000000      0.52130 1.8500E+00 1.8500E+00 S  9  1  0 B
-     cortical_bone_ICRP
-cortical bone (ICRP)
-     106.4   3.6488   0.1161   3.0919  0.06198   3.5919     0.00
-         1  1.000000  0.047234
-         6  0.256430  0.144330
-         7  0.063972  0.041990
-         8  0.594983  0.446096
-        12  0.001932  0.002200
-        15  0.072319  0.104970
-        16  0.002096  0.003150
-        20  0.111776  0.209930
-        30  0.000033  0.000100
-----------------------------------------------------------------------------
- 121 B4-C   5  -1.0000000000      0.47059 2.5200E+00 2.5200E+00 S  2  4  0 I
-     boron_carbide
-boron carbide (B%4#C)
-      84.7   2.9859   0.0093   2.1006  0.37087   2.8076     0.00
-         5  4.000000  0.782610
-         6  1.000119  0.217390
-----------------------------------------------------------------------------
- 122 B2-O3  5  -1.0000000000      0.49839 1.8120E+00 1.8120E+00 S  2  2  0 I
-     boron_oxide
-boron oxide (B%2#O%3#)
-      99.6   3.6027   0.1843   2.7379  0.11548   3.3832     0.00
-         5  2.000000  0.310551
-         8  3.000277  0.689449
-----------------------------------------------------------------------------
- 123 Brain  5  -1.0000000000      0.55423 1.0300E+00 1.0300E+00 S 13  1  0 B
-     brain_ICRP
-brain (ICRP)
-      73.3   3.4279   0.2206   2.8021  0.08255   3.5585     0.00
-         1  1.000000  0.110667
-         6  0.095108  0.125420
-         7  0.008635  0.013280
-         8  0.419958  0.737723
-        11  0.000729  0.001840
-        12  0.000056  0.000150
-        15  0.001041  0.003540
-        16  0.000503  0.001770
-        17  0.000606  0.002360
-        19  0.000722  0.003100
-        20  0.000020  0.000090
-        26  0.000008  0.000050
-        30  0.000001  0.000010
-----------------------------------------------------------------------------
- 124 Butan  5  -1.0000000000      0.59497 2.4934E-03 2.4890E-03 G  2 10  2 O
-     butane
-butane (C%4#H%10#)
-      48.3   8.5633   1.3788   3.7524  0.10852   3.4884     0.00
-         1 10.000000  0.173408
-         6  4.000262  0.826592
-Boiling point                -0.5
-Melting point                -138.2
-----------------------------------------------------------------------------
- 125 Butyl  5  -1.0000000000      0.56663 8.0980E-01 8.0980E-01 L  3 10  0 O
-     n-butyl_alcohol
-n-butyl alcohol (C%4#H%9#OH)
-      59.9   3.2425   0.1937   2.6439  0.10081   3.5139     0.00
-         1 10.000000  0.135978
-         6  4.000252  0.648171
-         8  1.000038  0.215851
-----------------------------------------------------------------------------
- 126 C-552  5  -1.0000000000      0.49969 1.7600E+00 1.7600E+00 S  5  1  0 B
-     C-552_air-equivalent_plastic
-C-552 air-equivalent plastic
-      86.8   3.3338   0.1510   2.7083  0.10492   3.4344     0.00
-         1  1.000000  0.024680
-         6  1.705640  0.501610
-         8  0.011556  0.004527
-         9  1.000047  0.465209
-        14  0.005777  0.003973
-----------------------------------------------------------------------------
- 127 Cd-Te  5  -1.0000000000      0.41665 6.2000E+00 6.2000E+00 S  2  1  0 I
-     cadmium_telluride_CdTe
-cadmium telluride (CdTe)
-     539.3   5.9096   0.0438   3.2836  0.24840   2.6665     0.00
-        48  1.000000  0.468355
-        52  1.000011  0.531645
-----------------------------------------------------------------------------
- 128 Cd-W-  5  -1.0000000000      0.42747 7.9000E+00 7.9000E+00 S  3  4  0 I
-     cadmium_tungstate
-cadmium tungstate (CdWO%4#)
-     468.3   5.3594   0.0123   3.5941  0.12861   2.9150     0.00
-         8  4.000000  0.177644
-        48  0.999992  0.312027
-        74  1.000054  0.510329
-----------------------------------------------------------------------------
- 129 Ca-C-  5  -1.0000000000      0.49955 2.8000E+00 2.8000E+00 S  3  1  0 I
-     calcium_carbonate
-calcium carbonate (CaCO%3#)
-     136.4   3.7738   0.0492   3.0549  0.08301   3.4120     0.00
-         6  1.000000  0.120003
-         8  2.999923  0.479554
-        20  1.000025  0.400443
-----------------------------------------------------------------------------
- 130 Ca-F2  5  -1.0000000000      0.49670 3.1800E+00 3.1800E+00 S  2  2  1 I
-     calcium_fluoride
-calcium fluoride (CaF%2#)
-     166.0   4.0653   0.0676   3.1683  0.06942   3.5263     0.00
-         9  2.000000  0.486659
-        20  1.000051  0.513341
-Index of ref               1.434
-----------------------------------------------------------------------------
- 131 Ca-O   5  -1.0000000000      0.49929 3.3000E+00 3.3000E+00 S  2  1  0 I
-     calcium_oxide_CaO
-calcium oxide (CaO)
-     176.1   4.1209  -0.0172   3.0171  0.12128   3.1936     0.00
-         8  1.000000  0.285299
-        20  1.000050  0.714701
-----------------------------------------------------------------------------
- 132 Ca-S-  5  -1.0000000000      0.49950 2.9600E+00 2.9600E+00 S  3  4  0 I
-     calcium_sulfate
-calcium sulfate (CaSO%4#)
-     152.3   3.9388   0.0587   3.1229  0.07708   3.4495     0.00
-         8  4.000000  0.470095
-        16  0.999813  0.235497
-        20  1.000050  0.294408
-----------------------------------------------------------------------------
- 133 Ca-W-  5  -1.0000000000      0.43761 6.0620E+00 6.0620E+00 S  3  4  0 I
-     calcium_tungstate
-calcium tungstate (CaWO%4#)
-     395.0   5.2603   0.0323   3.8932  0.06210   3.2649     0.00
-         8  4.000000  0.222270
-        20  1.000051  0.139202
-        74  1.000054  0.638529
-----------------------------------------------------------------------------
- 134 C-O2   5  -1.0000000000      0.49989 1.8421E-03 1.8421E-03 G  2  2  2 I
-     carbon_dioxide_gas
-carbon dioxide gas (CO%2#)
-      85.0  10.1537   1.6294   4.1825  0.11768   3.3227     0.00
-         6  2.000000  0.272916
-         8  3.999910  0.727084
-Index of ref (n-1)*E6           449.0         http://www.kayelaby.npl.co.uk/
-Sublimation point             -78.4            194.7 K
-----------------------------------------------------------------------------
- 135 C-Cl4  5  -1.0000000000      0.49107 1.5940E+00 1.5940E+00 L  2  1  0 O
-     carbon_tetrachloride
-carbon tetrachloride (CCl%4#)
-     166.3   4.7712   0.1773   2.9165  0.19018   3.0116     0.00
-         6  1.000000  0.078083
-        17  3.999948  0.921917
-----------------------------------------------------------------------------
- 136 Cello  5  -1.0000000000      0.53040 1.4200E+00 1.4200E+00 S  3 10  0 P
-     cellulose
-cellulose [(C%6#H%10#O%5#)%n#]
-      77.6   3.2647   0.1580   2.6778  0.11151   3.3810     0.00
-         1 10.000000  0.062162
-         6  6.000342  0.444462
-         8  5.000161  0.493376
-----------------------------------------------------------------------------
- 137 Cella  5  -1.0000000000      0.53279 1.2000E+00 1.2000E+00 S  3 22  0 P
-     cellulose_acetate_butyrate
-cellulose acetate butyrate [(C%15#H%22#O%8#)%n#]
-      74.6   3.3497   0.1794   2.6809  0.11444   3.3738     0.00
-         1 22.000000  0.067125
-         6 15.001071  0.545403
-         8  8.000363  0.387472
-----------------------------------------------------------------------------
- 138 Celln  5  -1.0000000000      0.51424 1.4900E+00 1.4900E+00 S  4  7  0 P
-     cellulose_nitrate
-cellulose nitrate [(C%12#H%14#O%4#(ONO%2#)%6#)%n#]
-      87.0   3.4762   0.1897   2.7253  0.11813   3.3237     0.00
-         1  7.000000  0.029216
-         6  5.454903  0.271296
-         7  2.090979  0.121276
-         8  8.727611  0.578212
-----------------------------------------------------------------------------
- 139 Cersu  5  -1.0000000000      0.55279 1.0300E+00 1.0300E+00 L  5  1  0 B
-     ceric_sulfate_dosimeter_solution
-ceric sulfate dosimeter solution
-      76.7   3.5212   0.2363   2.8769  0.07666   3.5607     0.00
-         1  1.000000  0.107596
-         7  0.000535  0.000800
-         8  0.512308  0.874976
-        16  0.004273  0.014627
-        58  0.000134  0.002001
-----------------------------------------------------------------------------
- 140 Cs-F   5  -1.0000000000      0.42132 4.1150E+00 4.1150E+00 S  2  1  0 I
-     cesium_fluoride_CsF
-cesium fluoride (CsF)
-     440.7   5.9046   0.0084   3.3374  0.22052   2.7280     0.00
-         9  1.000000  0.125069
-        55  0.999996  0.874931
-----------------------------------------------------------------------------
- 141 Cs-I   5  -1.0000000000      0.41569 4.5100E+00 4.5100E+00 S  2  1  3 I
-     cesium_iodide_CsI
-cesium iodide (CsI)
-     553.1   6.2807   0.0395   3.3353  0.25381   2.6657     0.00
-        53  1.000000  0.488451
-        55  1.000001  0.511549
-melti                           621.            Caesium iodide
-boili                           1280.           Caesium iodide
-Index                       1.7873            CRC2006 10-147
-----------------------------------------------------------------------------
- 142 Chlor  5  -1.0000000000      0.51529 1.1058E+00 1.1058E+00 L  3  5  0 O
-     chlorobenzene
-chlorobenzene C%6#H%5#Cl
-      89.1   3.8201   0.1714   2.9272  0.09856   3.3797     0.00
-         1  5.000000  0.044772
-         6  6.000428  0.640254
-        17  1.000054  0.314974
-----------------------------------------------------------------------------
- 143 Chlor  5  -1.0000000000      0.48585 1.4832E+00 1.4832E+00 L  3  1  0 O
-     chloroform
-chloroform (CHCl%3#)
-     156.0   4.7055   0.1786   2.9581  0.16959   3.0627     0.00
-         1  1.000000  0.008443
-         6  1.000054  0.100613
-        17  3.000123  0.890944
-----------------------------------------------------------------------------
- 144 Concr  5  -1.0000000000      0.50274 2.3000E+00 2.3000E+00 S 10  1  2 M
-     shielding_concrete
-shielding concrete
-     135.2   3.9464   0.1301   3.0466  0.07515   3.5467     0.00
-         1  1.000000  0.010000
-         6  0.008392  0.001000
-         8  3.333301  0.529107
-        11  0.070149  0.016000
-        12  0.008294  0.002000
-        13  0.126534  0.033872
-        14  1.209510  0.337021
-        19  0.033514  0.013000
-        20  0.110658  0.044000
-        26  0.025268  0.014000
-Note: Standard shielding blocks, typical composition O%2# 0.52, Si 0.325, Ca 0.06, Na 0.015, Fe 0.02, Al 0.04
-      plus reinforcing iron bars, from CERN-LRL-RHEL Shielding exp., UCRA-17841.
-----------------------------------------------------------------------------
- 145 Cyclo  5  -1.0000000000      0.57034 7.7900E-01 7.7900E-01 L  2 12  0 O
-     cyclohexane
-cyclohexane (C%6#H%12#)
-      56.4   3.1544   0.1728   2.5549  0.12035   3.4278     0.00
-         1 12.000000  0.143711
-         6  6.000369  0.856289
-----------------------------------------------------------------------------
- 146 Dichl  5  -1.0000000000      0.50339 1.3048E+00 1.3048E+00 L  3  4  0 O
-     12-dichlorobenzene
-1,2-dichlorobenzene (C%6#H%4#Cl%2#)
-     106.5   4.0348   0.1587   2.8276  0.16010   3.0836     0.00
-         1  4.000000  0.027425
-         6  6.000428  0.490233
-        17  2.000110  0.482342
-----------------------------------------------------------------------------
- 147 Dichl  5  -1.0000000000      0.51744 1.2199E+00 1.2199E+00 L  4  8  0 O
-     dichlorodiethyl_ether
-dichlorodiethyl ether C%4#Cl%2#H%8#O
-     103.3   4.0135   0.1773   3.1586  0.06799   3.5250     0.00
-         1  8.000000  0.056381
-         6  4.000257  0.335942
-         8  1.000040  0.111874
-        17  2.000096  0.495802
-----------------------------------------------------------------------------
- 148 Dichl  5  -1.0000000000      0.50526 1.2351E+00 1.2351E+00 L  3  4  0 O
-     12-dichloroethane
-1,2-dichloroethane C%2#H%4#C%12#
-     111.9   4.1849   0.1375   2.9529  0.13383   3.1675     0.00
-         1  4.000000  0.040740
-         6  2.000126  0.242746
-        17  2.000090  0.716515
-----------------------------------------------------------------------------
- 149 Dieth  5  -1.0000000000      0.56663 7.1378E-01 7.1378E-01 L  3 10  0 O
-     diethyl_ether
-diethyl ether [(CH%3#CH%2#)%2#O]
-      60.0   3.3721   0.2231   2.6745  0.10550   3.4586     0.00
-         1 10.000000  0.135978
-         6  4.000252  0.648171
-         8  1.000038  0.215851
-----------------------------------------------------------------------------
- 150 Dimet  5  -1.0000000000      0.54724 9.4870E-01 9.4870E-01 S  4  7  0 O
-     mn-dimethyl_formamide
-mn-dimethyl formamide (C%3#H%6#NOH)
-      66.6   3.3311   0.1977   2.6686  0.11470   3.3710     0.00
-         1  7.000000  0.096523
-         6  3.000196  0.492965
-         7  1.000039  0.191625
-         8  1.000042  0.218887
-----------------------------------------------------------------------------
- 151 Dimet  5  -1.0000000000      0.53757 1.1014E+00 1.1014E+00 S  4  6  0 O
-     dimethyl_sulfoxide
-dimethyl sulfoxide (CH%3#)%2#SO
-      98.6   3.9844   0.2021   3.1263  0.06619   3.5708     0.00
-         1  6.000000  0.077403
-         6  2.000130  0.307467
-         8  1.000037  0.204782
-        16  0.999852  0.410348
-----------------------------------------------------------------------------
- 152 Ethan  5  -1.0000000000      0.59861 1.2532E-03 1.2630E-03 G  2  6  4 O
-     ethane
-ethane (C%2#H%6#)
-      45.4   9.1043   1.5107   3.8743  0.09627   3.6095     0.00
-         1  6.000000  0.201115
-         6  2.000126  0.798885
-Boiling point            -88.6
-Triple point             -89.88
-Melting point            -182.79
-Note: Density of liquid at - 88.6 C is 0.5645
-----------------------------------------------------------------------------
- 153 Ethan  5  -1.0000000000      0.56437 7.8930E-01 7.8930E-01 L  3  6  3 O
-     ethanol
-ethanol (C%2#H%5#OH)
-      62.9   3.3699   0.2218   2.7052  0.09878   3.4834     0.00
-         1  6.000000  0.131269
-         6  2.000130  0.521438
-         8  1.000040  0.347294
-Index of refraction           1.36
-Melting point                 -114.14
-Boiling point                 78.29
-----------------------------------------------------------------------------
- 154 Ethyl  5  -1.0000000000      0.54405 1.1300E+00 1.1300E+00 S  3 22  0 P
-     ethyl_cellulose
-ethyl cellulose ([C%12#H%22#O5)%n#]
-      69.3   3.2415   0.1683   2.6527  0.11077   3.4098     0.00
-         1 22.000000  0.090027
-         6 12.000718  0.585182
-         8  5.000172  0.324791
-----------------------------------------------------------------------------
- 155 Ethyl  5  -1.0000000000      0.57034 1.1750E-03 1.1750E-03 G  2  4  0 O
-     ethylene
-ethylene (C%2#H%4#)
-      50.7   9.4380   1.5528   3.9327  0.10636   3.5387     0.00
-         1  4.000000  0.143711
-         6  2.000123  0.856289
-----------------------------------------------------------------------------
- 156 Eye-l  5  -1.0000000000      0.54977 1.1000E+00 1.1000E+00 S  4  1  0 B
-     eye_lens_ICRP
-eye lens (ICRP)
-      73.3   3.3720   0.2070   2.7446  0.09690   3.4550     0.00
-         1  1.000000  0.099269
-         6  0.163759  0.193710
-         7  0.038616  0.053270
-         8  0.414887  0.653751
-----------------------------------------------------------------------------
- 157 Fe2-O  5  -1.0000000000      0.47592 5.2000E+00 5.2000E+00 S  2  3  0 I
-     ferric_oxide
-ferric oxide (Fe%2#O%3#)
-     227.3   4.2245  -0.0074   3.2573  0.10478   3.1313     0.00
-         8  3.000000  0.300567
-        26  2.000071  0.699433
-----------------------------------------------------------------------------
- 158 Fe-B   5  -1.0000000000      0.46507 7.1500E+00 7.1500E+00 S  2  1  0 I
-     ferroboride_FeB
-ferroboride (FeB)
-     261.0   4.2057  -0.0988   3.1749  0.12911   3.0240     0.00
-         5  1.000000  0.162174
-        26  1.000125  0.837826
-----------------------------------------------------------------------------
- 159 Fe-O   5  -1.0000000000      0.47323 5.7000E+00 5.7000E+00 S  2  1  0 I
-     ferrous_oxide_FeO
-ferrous oxide (FeO)
-     248.6   4.3175  -0.0279   3.2002  0.12959   3.0168     0.00
-         8  1.000000  0.222689
-        26  1.000036  0.777311
-----------------------------------------------------------------------------
- 160 Fe-su  5  -1.0000000000      0.55329 1.0240E+00 1.0240E+00 L  7  1  0 B
-     ferrous_sulfate_dosimeter_solution
-ferrous sulfate dosimeter solution
-      76.4   3.5183   0.2378   2.8254  0.08759   3.4923     0.00
-         1  1.000000  0.108259
-         7  0.000018  0.000027
-         8  0.511300  0.878636
-        11  0.000009  0.000022
-        16  0.003765  0.012968
-        17  0.000009  0.000034
-        26  0.000009  0.000054
-----------------------------------------------------------------------------
- 161 Freon  5  -1.0000000000      0.47969 1.1200E+00 1.1200E+00 G  3  1  0 O
-     Freon-12
-Freon-12 (CF%2#Cl%2#)
-     143.0   4.8251   0.3035   3.2659  0.07978   3.4626     0.00
-         6  1.000000  0.099335
-         9  1.999954  0.314247
-        17  1.999972  0.586418
-----------------------------------------------------------------------------
- 162 Freon  5  -1.0000000000      0.44901 1.8000E+00 1.8000E+00 G  3  1  0 O
-     Freon-12B2
-Freon-12B2 (CF%2#Br%2#)
-     284.9   5.7976   0.3406   3.7956  0.05144   3.5565     0.00
-         6  1.000000  0.057245
-         9  1.999966  0.181096
-        35  1.999967  0.761659
-----------------------------------------------------------------------------
- 163 Freon  5  -1.0000000000      0.47966 9.5000E-01 9.5000E-01 G  3  1  0 O
-     Freon-13
-Freon-13 (CF%3#Cl)
-     126.6   4.7483   0.3659   3.2337  0.07238   3.5551     0.00
-         6  1.000000  0.114983
-         9  2.999918  0.545622
-        17  0.999982  0.339396
-----------------------------------------------------------------------------
- 164 Freon  5  -1.0000000000      0.45665 1.5000E+00 1.5000E+00 G  3  1  0 O
-     Freon-13b1
-Freon-13b1 (CF%3#Br)
-     210.5   5.3555   0.3522   3.7554  0.03925   3.7194     0.00
-         6  1.000000  0.080659
-         9  2.999939  0.382749
-        35  0.999980  0.536592
-----------------------------------------------------------------------------
- 165 Freon  5  -1.0000000000      0.43997 1.8000E+00 1.8000E+00 G  3  1  0 O
-     Freon-13i1
-Freon-13i1 (CF%3#I)
-     293.5   5.8774   0.2847   3.7280  0.09112   3.1658     0.00
-         6  1.000000  0.061309
-         9  2.999898  0.290924
-        53  0.999968  0.647767
-----------------------------------------------------------------------------
- 166 Gd2-O  5  -1.0000000000      0.42266 7.4400E+00 7.4400E+00 S  3  2  0 I
-     gadolinium_oxysulfide
-gadolinium oxysulfide (Gd%2#O%2#S)
-     493.3   5.5347  -0.1774   3.4045  0.22161   2.6300     0.00
-         8  2.000000  0.084528
-        16  0.999817  0.084690
-        64  1.999998  0.830782
-----------------------------------------------------------------------------
- 167 Ga-As  5  -1.0000000000      0.44247 5.3100E+00 5.3100E+00 S  2  1  0 I
-     gallium_arsenide_GaAs
-gallium arsenide (GaAs)
-     384.9   5.3299   0.1764   3.6420  0.07152   3.3356     0.00
-        31  1.000000  0.482019
-        33  1.000043  0.517981
-----------------------------------------------------------------------------
- 168 Photo  5  -1.0000000000      0.53973 1.2914E+00 1.2914E+00 S  5  1  0 M
-     gel_in_photographic_emulsion
-gel in photographic emulsion
-      74.8   3.2687   0.1709   2.7058  0.10102   3.4418     0.00
-         1  1.000000  0.081180
-         6  0.430104  0.416060
-         7  0.098607  0.111240
-         8  0.295390  0.380640
-        16  0.004213  0.010880
-----------------------------------------------------------------------------
- 169 Pyrex  5  -1.0000000000      0.49707 2.2300E+00 2.2300E+00 S  6  1  0 M
-     borosilicate_glass_Pyrex_Corning_7740
-borosilicate glass (Pyrex Corning 7740)
-     134.0   3.9708   0.1479   2.9933  0.08270   3.5224     0.00
-         5  1.000000  0.040061
-         8  9.100880  0.539564
-        11  0.330918  0.028191
-        13  0.116461  0.011644
-        14  3.624571  0.377220
-        19  0.022922  0.003321
-----------------------------------------------------------------------------
- 170 Lead   5  -1.0000000000      0.42101 6.2200E+00 6.2200E+00 S  5  1  0 M
-     lead_glass
-lead glass
-     526.4   5.8476   0.0614   3.8146  0.09544   3.0740     0.00
-         8  1.000000  0.156453
-        14  0.294445  0.080866
-        22  0.017288  0.008092
-        33  0.003618  0.002651
-        82  0.371118  0.751938
-----------------------------------------------------------------------------
- 171 Glass  5  -1.0000000000      0.49731 2.4000E+00 2.4000E+00 S  4  1  0 M
-     plate_glass
-plate glass
-     145.4   4.0602   0.1237   3.0649  0.07678   3.5381     0.00
-         8  1.000000  0.459800
-        11  0.145969  0.096441
-        14  0.416971  0.336553
-        20  0.093077  0.107205
-----------------------------------------------------------------------------
- 172 Gluco  5  -1.0000000000      0.53499 1.5400E+00 1.5400E+00 S  3 14  0 O
-     glucose_dextrose_monohydrate
-glucose (dextrose monohydrate) (C%6#H%12#O%6#.H%2#O))
-      77.2   3.1649   0.1411   2.6700  0.10783   3.3946     0.00
-         1 14.000000  0.071204
-         6  6.000342  0.363652
-         8  7.000253  0.565144
-----------------------------------------------------------------------------
- 173 Gluta  5  -1.0000000000      0.53371 1.4600E+00 1.4600E+00 S  4 10  0 O
-     glutamine
-glutamine (C%5#H%10#N%2#O%3#)
-      73.3   3.1167   0.1347   2.6301  0.11931   3.3254     0.00
-         1 10.000000  0.068965
-         6  5.000360  0.410926
-         7  2.000082  0.191681
-         8  3.000137  0.328427
-----------------------------------------------------------------------------
- 174 Glyce  5  -1.0000000000      0.54292 1.2613E+00 1.2613E+00 L  3  8  0 O
-     glycerol
-glycerol (C%3#H%5#(OH)%3#)
-      72.6   3.2267   0.1653   2.6862  0.10168   3.4481     0.00
-         1  8.000000  0.087554
-         6  3.000185  0.391262
-         8  3.000108  0.521185
-----------------------------------------------------------------------------
- 175 Guani  5  -1.0000000000      0.51612 1.5800E+00 1.5800E+00 S  4  5  0 O
-     guanine
-guanine (C%5#H%5#N%5#O)
-      75.0   3.1171   0.1163   2.4296  0.20530   3.0186     0.00
-         1  5.000000  0.033346
-         6  5.000329  0.397380
-         7  5.000189  0.463407
-         8  1.000041  0.105867
-----------------------------------------------------------------------------
- 176 Gypsu  5  -1.0000000000      0.51113 2.3200E+00 2.3200E+00 S  4  4  0 I
-     gypsum_plaster_of_Paris
-gypsum (plaster of Paris, CaSO%4#$\cdot$H%2#O)
-     129.7   3.8382   0.0995   3.1206  0.06949   3.5134     0.00
-         1  4.000000  0.023416
-         8  6.000387  0.557572
-        16  0.999889  0.186215
-        20  1.000123  0.232797
-----------------------------------------------------------------------------
- 177 Hepta  5  -1.0000000000      0.57992 6.8376E-01 6.8376E-01 L  2 16  0 O
-     n-heptane
-n-heptane (C%7#H%16#)
-      54.4   3.1978   0.1928   2.5706  0.11255   3.4885     0.00
-         1 16.000000  0.160937
-         6  7.000435  0.839063
-----------------------------------------------------------------------------
- 178 Hexan  5  -1.0000000000      0.59020 6.6030E-01 6.6030E-01 L  2 14  0 O
-     n-hexane
-n-hexane C%6#H%14#
-      54.0   3.2156   0.1984   2.5757  0.11085   3.5027     0.00
-         1 14.000000  0.163741
-         6  6.000366  0.836259
-----------------------------------------------------------------------------
- 179 Kapto  5  -1.0000000000      0.51264 1.4200E+00 1.4200E+00 S  4 10  0 P
-     polyimide_film
-polyimide film [(C%22#H%10#N%2#O%5#)%n#]
-      79.6   3.3497   0.1509   2.5631  0.15972   3.1921     0.00
-         1 10.000000  0.026362
-         6 22.001366  0.691133
-         7  2.000071  0.073270
-         8  5.000195  0.209235
-----------------------------------------------------------------------------
- 180 La-O-  5  -1.0000000000      0.42599 6.2800E+00 6.2800E+00 S  3  1  0 I
-     lanthanum_oxybromide_LaOBr
-lanthanum oxybromide (LaOBr)
-     439.7   5.4666  -0.0350   3.3288  0.17830   2.8457     0.00
-         8  1.000000  0.068138
-        35  1.000000  0.340294
-        57  0.999999  0.591568
-----------------------------------------------------------------------------
- 181 La2-O  5  -1.0000000000      0.42706 5.8600E+00 5.8600E+00 S  3  2  0 I
-     lanthanum_oxysulfide
-lanthanum oxysulfide La%2#O%2#S
-     421.2   5.4470  -0.0906   3.2664  0.21501   2.7298     0.00
-         8  2.000000  0.093600
-        16  0.999802  0.093778
-        57  1.999986  0.812622
-----------------------------------------------------------------------------
- 182 Pb-O   5  -1.0000000000      0.40323 9.5300E+00 9.5300E+00 S  2  1  0 I
-     lead_oxide_PbO
-lead oxide (PbO)
-     766.7   6.2162   0.0356   3.5456  0.19645   2.7299     0.00
-         8  1.000000  0.071682
-        82  1.000001  0.928318
-----------------------------------------------------------------------------
- 183 Li-N-  5  -1.0000000000      0.52257 1.1780E+00 1.1780E+00 S  3  2  0 I
-     lithium_amide
-lithium amide (LiNH%2#)
-      55.5   2.7961   0.0198   2.5152  0.08740   3.7534     0.00
-         1  2.000000  0.087783
-         3  1.000036  0.302262
-         7  1.000035  0.609955
-----------------------------------------------------------------------------
- 184 LI2-C  5  -1.0000000000      0.49720 2.1100E+00 2.1100E+00 S  3  2  0 I
-     lithium_carbonate
-lithium carbonate (Li%2#C-O%3#)
-      87.9   3.2029   0.0551   2.6598  0.09936   3.5417     0.00
-         3  2.000000  0.187871
-         6  1.000025  0.162550
-         8  2.999995  0.649579
-----------------------------------------------------------------------------
- 185 Li-F   5  -1.0000000000      0.46262 2.6350E+00 2.6350E+00 S  2  1  3 I
-     lithium_fluoride_LiF
-lithium fluoride (LiF)
-      94.0   3.1667   0.0171   2.7049  0.07593   3.7478     0.00
-         3  1.000000  0.267585
-         9  1.000001  0.732415
-melti                           848.2           Lithium flouride
-boili                           1673.           Lithium flouride
-Index of ref                1.392               old RPP value
-----------------------------------------------------------------------------
- 186 Li-H   5  -1.0000000000      0.50321 8.2000E-01 8.2000E-01 S  2  1  1 I
-     lithium_hydride_LiH
-lithium hydride (LiH)
-      36.5   2.3580  -0.0988   1.4515  0.90567   2.5849     0.00
-         1  1.000000  0.126797
-         3  1.000043  0.873203
-Melting point                692
-----------------------------------------------------------------------------
- 187 Li-I   5  -1.0000000000      0.41939 3.4940E+00 3.4940E+00 S  2  1  0 I
-     lithium_iodide_LiI
-lithium iodide (LiI)
-     485.1   6.2671   0.0892   3.3702  0.23274   2.7146     0.00
-         3  1.000000  0.051858
-        53  1.000006  0.948142
-----------------------------------------------------------------------------
- 188 Li2-O  5  -1.0000000000      0.46952 2.0130E+00 2.0130E+00 S  2  2  0 I
-     lithium_oxide
-lithium oxide Li%2#O
-      73.6   2.9340  -0.0511   2.5874  0.08035   3.7878     0.00
-         3  2.000000  0.464570
-         8  1.000000  0.535430
-----------------------------------------------------------------------------
- 189 Li2-B  5  -1.0000000000      0.48487 2.4400E+00 2.4400E+00 S  3  2  0 I
-     lithium_tetraborate
-lithium tetraborate Li%2#B%4#O%7#
-      94.6   3.2093   0.0737   2.6502  0.11075   3.4389     0.00
-         3  2.000000  0.082085
-         5  3.999624  0.255680
-         8  6.999978  0.662235
-----------------------------------------------------------------------------
- 190 Lung   5  -1.0000000000      0.54965 1.0500E+00 1.0500E+00 S 13  1  0 B
-     lung_ICRP
-lung (ICRP)
-      75.3   3.4708   0.2261   2.8001  0.08588   3.5353     0.00
-         1  1.000000  0.101278
-         6  0.084775  0.102310
-         7  0.020357  0.028650
-         8  0.470926  0.757072
-        11  0.000797  0.001840
-        12  0.000299  0.000730
-        15  0.000257  0.000800
-        16  0.000698  0.002250
-        17  0.000747  0.002660
-        19  0.000494  0.001940
-        20  0.000022  0.000090
-        26  0.000066  0.000370
-        30  0.000002  0.000010
-----------------------------------------------------------------------------
- 191 M3-wa  5  -1.0000000000      0.55512 1.0500E+00 1.0500E+00 S  5  1  0 B
-     M3_WAX
-M3 WAX
-      67.9   3.2540   0.1523   2.7529  0.07864   3.6412     0.00
-         1  1.000000  0.114318
-         6  0.481436  0.655823
-         8  0.050800  0.092183
-        12  0.048898  0.134792
-        20  0.000634  0.002883
-----------------------------------------------------------------------------
- 192 Mg-C-  5  -1.0000000000      0.49814 2.9580E+00 2.9580E+00 S  3  1  0 I
-     magnesium_carbonate
-magnesium carbonate MgCO%3#
-     118.0   3.4319   0.0860   2.7997  0.09219   3.5003     0.00
-         6  1.000000  0.142455
-         8  2.999932  0.569278
-        12  0.999977  0.288267
-----------------------------------------------------------------------------
- 193 Mg-F2  5  -1.0000000000      0.48153 3.0000E+00 3.0000E+00 S  2  2  0 I
-     magnesium_fluoride
-magnesium fluoride MgF%2#
-     134.3   3.7105   0.1369   2.8630  0.07934   3.6485     0.00
-         9  2.000000  0.609883
-        12  1.000000  0.390117
-----------------------------------------------------------------------------
- 194 Mg-O   5  -1.0000000000      0.49622 3.5800E+00 3.5800E+00 S  2  1  0 I
-     magnesium_oxide_MgO
-magnesium oxide MgO
-     143.8   3.6404   0.0575   2.8580  0.08313   3.5968     0.00
-         8  1.000000  0.396964
-        12  1.000000  0.603036
-----------------------------------------------------------------------------
- 195 Mg-B4  5  -1.0000000000      0.49014 2.5300E+00 2.5300E+00 S  3  4  0 I
-     magnesium_tetraborate
-magnesium tetraborate MgB%4#O%7#
-     108.3   3.4328   0.1147   2.7635  0.09703   3.4893     0.00
-         5  4.000000  0.240837
-         8  7.000634  0.623790
-        12  1.000090  0.135373
-----------------------------------------------------------------------------
- 196 Hg-I2  5  -1.0000000000      0.40933 6.3600E+00 6.3600E+00 S  2  2  0 I
-     mercuric_iodide
-mercuric iodide HgI%2#
-     684.5   6.3787   0.1040   3.4728  0.21513   2.7264     0.00
-        53  2.000000  0.558560
-        80  0.999999  0.441440
-----------------------------------------------------------------------------
- 197 Metha  5  -1.0000000000      0.62334 6.6715E-04 6.6715E-04 G  2  4  3 O
-     methane
-methane (CH%4#)
-      41.7   9.5243   1.6263   3.9716  0.09253   3.6257     0.00
-         1  4.000000  0.251306
-         6  1.000064  0.748694
-Boiling point                  -161.48
-Melting point                    -182.47
-Index of ref (n-1)*E6           444.0         http://www.kayelaby.npl.co.uk/
-----------------------------------------------------------------------------
- 198 Metha  5  -1.0000000000      0.56176 7.9140E-01 7.9140E-01 L  3  4  0 O
-     methanol
-methanol (CH%3#OH)
-      67.6   3.5160   0.2529   2.7639  0.08970   3.5477     0.00
-         1  4.000000  0.125822
-         6  1.000068  0.374852
-         8  1.000043  0.499326
-----------------------------------------------------------------------------
- 199 mix-D  5  -1.0000000000      0.56479 9.9000E-01 9.9000E-01 S  5  1  0 B
-     mix_D_wax
-mix D wax
-      60.9   3.0780   0.1371   2.7145  0.07490   3.6823     0.00
-         1  1.000000  0.134040
-         6  0.487068  0.777960
-         8  0.016459  0.035020
-        12  0.011941  0.038594
-        22  0.002260  0.014386
-----------------------------------------------------------------------------
- 200 MS20   5  -1.0000000000      0.53886 1.0000E+00 1.0000E+00 S  6  1  0 B
-     ms20_tissue_substitute
-ms20 tissue substitute
-      75.1   3.5341   0.1997   2.8033  0.08294   3.6061     0.00
-         1  1.000000  0.081192
-         6  0.603046  0.583442
-         7  0.015774  0.017798
-         8  0.144617  0.186381
-        12  0.066547  0.130287
-        17  0.000315  0.000900
-----------------------------------------------------------------------------
- 201 Skelm  5  -1.0000000000      0.54938 1.0400E+00 1.0400E+00 S 13  1  0 B
-     skeletal_muscle_ICRP
-skeletal muscle (ICRP)
-      75.3   3.4809   0.2282   2.7999  0.08636   3.5330     0.00
-         1  1.000000  0.100637
-         6  0.089918  0.107830
-         7  0.019793  0.027680
-         8  0.472487  0.754773
-        11  0.000327  0.000750
-        12  0.000078  0.000190
-        15  0.000582  0.001800
-        16  0.000753  0.002410
-        17  0.000223  0.000790
-        19  0.000774  0.003020
-        20  0.000007  0.000030
-        26  0.000007  0.000040
-        30  0.000008  0.000050
-----------------------------------------------------------------------------
- 202 Strim  5  -1.0000000000      0.55005 1.0400E+00 1.0400E+00 S  9  1  0 B
-     striated_muscle_ICRU
-striated muscle (ICRU)
-      74.7   3.4636   0.2249   2.8032  0.08507   3.5383     0.00
-         1  1.000000  0.101997
-         6  0.101201  0.123000
-         7  0.024693  0.035000
-         8  0.450270  0.729003
-        11  0.000344  0.000800
-        12  0.000081  0.000200
-        15  0.000638  0.002000
-        16  0.001541  0.005000
-        19  0.001264  0.005000
-----------------------------------------------------------------------------
- 203 Eqvmu  5  -1.0000000000      0.54828 1.1100E+00 1.1100E+00 L  4  1  0 B
-     muscle-equivalent_liquid_with_sucrose
-muscle-equivalent liquid with sucrose
-      74.3   3.3910   0.2098   2.7550  0.09481   3.4699     0.00
-         1  1.000000  0.098234
-         6  0.133452  0.156214
-         7  0.025970  0.035451
-         8  0.455395  0.710100
-----------------------------------------------------------------------------
- 204 Eqvmu  5  -1.0000000000      0.55014 1.0700E+00 1.0700E+00 L  4  1  0 B
-     muscle-equivalent_liquid_without_sucrose
-muscle-equivalent liquid without sucrose
-      74.2   3.4216   0.2187   2.7680  0.09143   3.4982     0.00
-         1  1.000000  0.101969
-         6  0.098807  0.120058
-         7  0.025018  0.035451
-         8  0.458746  0.742522
-----------------------------------------------------------------------------
- 205 Napht  5  -1.0000000000      0.53053 1.1450E+00 1.1450E+00 S  2  8  0 O
-     naphtalene
-naphtalene (C%10#H%8#)
-      68.4   3.2274   0.1374   2.5429  0.14766   3.2654     0.00
-         1  8.000000  0.062909
-         6 10.000584  0.937091
-----------------------------------------------------------------------------
- 206 Nitro  5  -1.0000000000      0.51986 1.1987E+00 1.1987E+00 L  4  5  0 O
-     nitrobenzene
-nitrobenzene (C%6#H%5#NO%2#)
-      75.8   3.4073   0.1777   2.6630  0.12727   3.3091     0.00
-         1  5.000000  0.040935
-         6  6.000329  0.585374
-         7  1.000028  0.113773
-         8  2.000058  0.259918
-----------------------------------------------------------------------------
- 207 N2-O   5  -1.0000000000      0.49985 1.8309E-03 1.8309E-03 G  2  2  0 I
-     nitrous_oxide
-nitrous oxide (N%2#O)
-      84.9  10.1575   1.6477   4.1565  0.11992   3.3318     0.00
-         7  2.000000  0.636483
-         8  1.000003  0.363517
-----------------------------------------------------------------------------
- 208 Elvam  5  -1.0000000000      0.55063 1.0800E+00 1.0800E+00 S  4  1  0 P
-     Nylon_du_Pont_Elvamide_8062M
-Nylon du Pont Elvamide 8062M
-      64.3   3.1250   0.1503   2.6004  0.11513   3.4044     0.00
-         1  1.000000  0.103509
-         6  0.525704  0.648415
-         7  0.069199  0.099536
-         8  0.090405  0.148539
-----------------------------------------------------------------------------
- 209 Nylon  5  -1.0000000000      0.54790 1.1400E+00 1.1800E+00 S  4 11  0 P
-     Nylon_type_6_6-6
-Nylon (type 6, 6/6) [(CH(CH%2#)%5#NO)%n#]
-      63.9   3.0634   0.1336   2.5834  0.11818   3.3826     0.00
-         1 11.000000  0.097976
-         6  6.000405  0.636856
-         7  1.000040  0.123779
-         8  1.000045  0.141389
-----------------------------------------------------------------------------
- 210 Nylon  5  -1.0000000000      0.55236 1.1400E+00 1.1400E+00 S  4 15  0 P
-     Nylon_type_6-10
-Nylon type 6/10 [(CH(CH%2#)%7#NO)%n#]
-      63.2   3.0333   0.1304   2.5681  0.11852   3.3912     0.00
-         1 15.000000  0.107062
-         6  8.000514  0.680449
-         7  1.000039  0.099189
-         8  1.000039  0.113300
-----------------------------------------------------------------------------
- 211 Rilsa  5  -1.0000000000      0.55649 1.4250E+00 1.4250E+00 S  4 21  0 P
-     Nylon_type_11_Rilsan
-Nylon type 11 Rilsan ([C%11#H%21#ON)%n#], [(CH(CH%2#)%10#NO)%n#])
-      61.6   2.7514   0.0678   2.4281  0.14868   3.2576     0.00
-         1 21.000000  0.115476
-         6 11.000696  0.720819
-         7  1.000035  0.076417
-         8  1.000042  0.087289
-----------------------------------------------------------------------------
- 212 Octan  5  -1.0000000000      0.57778 7.0260E-01 7.0260E-01 L  2 18  2 O
-     octane
-octane (C%8#H%18#)
-      54.7   3.1834   0.1882   2.5664  0.11387   3.4776     0.00
-         1 18.000000  0.158821
-         6  8.000541  0.841179
-Boiling point                 125.6
-Melting point                -58.7
-----------------------------------------------------------------------------
- 213 Paraf  5  -1.0000000000      0.57275 9.3000E-01 9.3000E-01 S  2 52  0 O
-     paraffin
-paraffin (CH%3#(CH%2#)%n\approx23#CH%3#)
-      55.9   2.9551   0.1289   2.5084  0.12087   3.4288     0.00
-         1 52.000000  0.148605
-         6 25.001575  0.851395
-----------------------------------------------------------------------------
- 214 Penta  5  -1.0000000000      0.58212 6.2620E-01 6.2620E-01 L  2 12  1 O
-     n-pentane
-n-pentane (C%5#H%12#)
-      53.6   3.2504   0.2086   2.5855  0.10809   3.5265     0.00
-         1 12.000000  0.167635
-         6  5.000308  0.832365
-Index of ref (n-1)*E6          1711.0         http://www.kayelaby.npl.co.uk/
-----------------------------------------------------------------------------
- 215 Photo  5  -1.0000000000      0.45453 3.8150E+00 3.8150E+00 S  8  1  0 M
-     photographic_emulsion
-photographic emulsion
-     331.0   5.3319   0.1009   3.4866  0.12399   3.0094     0.00
-         1  1.000000  0.014100
-         6  0.430082  0.072261
-         7  0.098602  0.019320
-         8  0.295338  0.066101
-        16  0.004213  0.001890
-        35  0.312321  0.349103
-        47  0.314193  0.474105
-        53  0.001757  0.003120
-----------------------------------------------------------------------------
- 216 Plast  5  -1.0000000000      0.54141 1.0320E+00 1.0320E+00 S  2 10  1 P
-     polyvinyltoluene
-polyvinyltoluene [(2-CH%3#C%6#H%4#CHCH%2#)%n#]
-      64.7   3.1997   0.1464   2.4855  0.16101   3.2393     0.00
-         1 10.000000  0.085000
-         6  9.033760  0.915000
-Index of refraction           1.58
-----------------------------------------------------------------------------
- 217 Pu-O2  5  -1.0000000000      0.40583 1.1460E+01 1.1460E+01 S  2  2  0 I
-     plutonium_dioxide
-plutonium dioxide (PuO%2#)
-     746.5   5.9719  -0.2311   3.5554  0.20594   2.6522     0.00
-         8  2.000000  0.118055
-        94  0.979460  0.881945
-----------------------------------------------------------------------------
- 218 Pacry  5  -1.0000000000      0.52767 1.1700E+00 1.1700E+00 S  3  3  0 P
-     polyacrylonitrile
-polyacrylonitrile [(C%3#H%3#N)%n#]
-      69.6   3.2459   0.1504   2.5159  0.16275   3.1975     0.00
-         1  3.000000  0.056983
-         6  3.000184  0.679056
-         7  1.000034  0.263962
-----------------------------------------------------------------------------
- 219 Lexan  5  -1.0000000000      0.52697 1.2000E+00 1.2000E+00 S  3 14  0 P
-     polycarbonate_Lexan
-polycarbonate (Lexan, [OC%6#H%4#C(CH%3#)%2#C%6#H%4#OCO)%n#])
-      73.1   3.3201   0.1606   2.6225  0.12860   3.3288     0.00
-         1 14.000000  0.055491
-         6 16.001127  0.755751
-         8  3.000142  0.188758
-----------------------------------------------------------------------------
- 220 Pchlo  5  -1.0000000000      0.52518 1.3000E+00 1.3000E+00 S  3 18  0 P
-     polychlorostyrene
-polychlorostyrene [(C%17#H%18#C%l2#)%n#]
-      81.7   3.4659   0.1238   2.9241  0.07530   3.5441     0.00
-         1 18.000000  0.061869
-         6 17.001129  0.696325
-        17  2.000101  0.241806
-----------------------------------------------------------------------------
- 221 Polye  5  -1.0000000000      0.57034 9.4000E-01 8.9000E-01 S  2  2  0 P
-     polyethylene
-polyethylene [(CH%2#CH%2#)%n#]
-      57.4   3.0016   0.1370   2.5177  0.12108   3.4292     0.00
-         1  2.000000  0.143711
-         6  1.000062  0.856289
-----------------------------------------------------------------------------
- 222 Poly   5  -1.0000000000      0.52037 1.4000E+00 1.4000E+00 S  3  4  0 P
-     polyethylene_terephthalate_Mylar
-polyethylene terephthalate (Mylar) [(C%10#H%8#O%4#)%n#]
-      78.7   3.3262   0.1562   2.6507  0.12679   3.3076     0.00
-         1  4.000000  0.041959
-         6  5.000266  0.625017
-         8  2.000059  0.333025
-----------------------------------------------------------------------------
- 223 Acryl  5  -1.0000000000      0.53937 1.1900E+00 1.1900E+00 S  3  8  1 P
-     polymethylmethacrylate_acrylic
-polymethylmethacrylate (acrylic, [(CH%2#C(CH%3#)(COOCH%3#))%n#]
-      74.0   3.3297   0.1824   2.6681  0.11433   3.3836     0.00
-         1  8.000000  0.080538
-         6  5.000308  0.599848
-         8  2.000073  0.319614
-Index of refraction        1.49
-----------------------------------------------------------------------------
- 224 Polyo  5  -1.0000000000      0.53287 1.4250E+00 1.4250E+00 S  3  2  0 P
-     polyoxymethylene
-polyoxymethylene [(CH%2#O)%n#]
-      77.4   3.2514   0.1584   2.6838  0.10808   3.4002     0.00
-         1  2.000000  0.067135
-         6  1.000059  0.400017
-         8  1.000035  0.532848
-----------------------------------------------------------------------------
- 225 Polyp  5  -1.0000000000      0.55998 9.4000E-01 9.0500E-01 S  2  3  2 P
-     polypropylene
-polypropylene [(CH(CH%3#)CH%2#)%n#]
-      57.4   3.0016   0.1370   2.5177  0.12108   3.4292     0.00
-         1  2.000000  0.143711
-         6  1.000062  0.856289
-Note: Chem formula wrong in Sternheimer. <i>I</i> and density effect constants
-      for polyethylene, scaled with density, were used for these calculations.
-----------------------------------------------------------------------------
- 226 Polys  5  -1.0000000000      0.53768 1.0600E+00 1.0600E+00 S  2  8  1 P
-     polystyrene
-polystyrene [(C%6#H%5#CHCH%2#)%n#]
-      68.7   3.2999   0.1647   2.5031  0.16454   3.2224     0.00
-         1  8.000000  0.077418
-         6  8.000541  0.922582
-Index of ref               1.59
-----------------------------------------------------------------------------
- 227 Teflo  5  -1.0000000000      0.47992 2.2000E+00 2.2000E+00 S  2  1  0 P
-     polytetrafluoroethylene_Teflon
-polytetrafluoroethylene (Teflon, [(CF%2#CF%2#)%n#])
-      99.1   3.4161   0.1648   2.7404  0.10606   3.4046     0.00
-         6  1.000000  0.240183
-         9  1.999945  0.759817
-----------------------------------------------------------------------------
- 228 KEL-F  5  -1.0000000000      0.48081 2.1000E+00 2.1000E+00 S  3  2  0 P
-     polytrifluorochloroethylene
-polytrifluorochloroethylene [(C%2#F%3#Cl)%n#]
-     120.7   3.8551   0.1714   3.0265  0.07727   3.5085     0.00
-         6  2.000000  0.206250
-         9  2.999925  0.489354
-        17  0.999983  0.304395
-----------------------------------------------------------------------------
- 229 Pviny  5  -1.0000000000      0.53432 1.1900E+00 1.1900E+00 S  3  6  0 P
-     polyvinylacetate
-polyvinylacetate [(CH%2#CHOCOCH%3#)%n#]
-      73.7   3.3309   0.1769   2.6747  0.11442   3.3762     0.00
-         1  6.000000  0.070245
-         6  4.000256  0.558066
-         8  2.000076  0.371689
-----------------------------------------------------------------------------
- 230 Pviny  5  -1.0000000000      0.54480 1.3000E+00 1.3000E+00 S  3  4  0 P
-     polyvinyl_alcohol
-polyvinyl alcohol [(C%2#H3-O-H)%n#]
-      69.7   3.1115   0.1401   2.6315  0.11178   3.3893     0.00
-         1  4.000000  0.091517
-         6  2.000131  0.545298
-         8  1.000039  0.363185
-----------------------------------------------------------------------------
- 231 Pviny  5  -1.0000000000      0.54537 1.1200E+00 1.1200E+00 S  3 13  0 P
-     polyvinyl_butyral
-polyvinyl butyral [(C%8#H%13#0%2#)%n#]
-      67.2   3.1865   0.1555   2.6186  0.11544   3.3983     0.00
-         1 13.000000  0.092802
-         6  8.000543  0.680561
-         8  2.000082  0.226637
-----------------------------------------------------------------------------
- 232 PVC    5  -1.0000000000      0.51201 1.3000E+00 1.3000E+00 S  3  3  0 P
-     polyvinylchloride_PVC
-polyvinylchloride (PVC) [(CH%2#CHCl)%n#]
-     108.2   4.0532   0.1559   2.9415  0.12438   3.2104     0.00
-         1  3.000000  0.048380
-         6  2.000138  0.384360
-        17  1.000053  0.567260
-----------------------------------------------------------------------------
- 233 Saran  5  -1.0000000000      0.49513 1.7000E+00 1.7000E+00 S  3  2  0 P
-     polyvinylidene_chloride_Saran
-polyvinylidene chloride (Saran) [(C%2#H%2#Cl%2#)%n#]
-     134.3   4.2506   0.1314   2.9009  0.15466   3.1020     0.00
-         1  2.000000  0.020793
-         6  2.000176  0.247793
-        17  2.000142  0.731413
-----------------------------------------------------------------------------
- 234 Pvnyd  5  -1.0000000000      0.49973 1.7600E+00 1.7600E+00 S  3  2  0 P
-     polyvinylidene_fluoride
-polyvinylidene fluoride [(CH%2#CHF%2#)%n#]
-      88.8   3.3793   0.1717   2.7375  0.10316   3.4200     0.00
-         1  2.000000  0.031480
-         6  2.000121  0.375141
-         9  2.000069  0.593379
-----------------------------------------------------------------------------
- 235 Pvnyl  5  -1.0000000000      0.53984 1.2500E+00 1.2500E+00 S  4  9  0 P
-     polyvinyl_pyrrolidone
-polyvinyl pyrrolidone [(C%6#H%9#NO)%n#]
-      67.7   3.1017   0.1324   2.5867  0.12504   3.3326     0.00
-         1  9.000000  0.081616
-         6  6.000414  0.648407
-         7  1.000042  0.126024
-         8  1.000044  0.143953
-----------------------------------------------------------------------------
- 236 K-I    5  -1.0000000000      0.43373 3.1300E+00 3.1300E+00 S  2  1  0 I
-     potassium_iodide_KI
-potassium iodide (KI)
-     431.9   6.1088   0.1044   3.3442  0.22053   2.7558     0.00
-        19  1.000000  0.235528
-        53  1.000000  0.764472
-----------------------------------------------------------------------------
- 237 K2-O   5  -1.0000000000      0.48834 2.3200E+00 2.3200E+00 S  2  1  0 I
-     potassium_oxide
-potassium oxide (K%2#O)
-     189.9   4.6463   0.0480   3.0110  0.16789   3.0121     0.00
-         8  1.000000  0.169852
-        19  2.000003  0.830148
-----------------------------------------------------------------------------
- 238 Propa  5  -1.0000000000      0.58962 1.8794E-03 1.8680E-03 G  2  8  2 O
-     propane
-propane (C%3#H%8#)
-      47.1   8.7878   1.4326   3.7998  0.09916   3.5920     0.00
-         1  8.000000  0.182855
-         6  3.000189  0.817145
-Boiling point                -42.1
-Melting point                -187.63
-----------------------------------------------------------------------------
- 239 Propa  5  -1.0000000000      0.58962 4.3000E-01 4.9300E-01 L  2  8  2 O
-     liquid_propane
-liquid propane (C%3#H%8#)
-      52.0   3.5529   0.2861   2.6568  0.10329   3.5620     0.00
-         1  8.000000  0.182855
-         6  3.000189  0.817145
-Boiling point                -42.1
-Melting point                -187.63
-----------------------------------------------------------------------------
- 240 n-pro  5  -1.0000000000      0.56577 8.0350E-01 8.0350E-01 L  3  8  0 O
-     n-propyl_alcohol
-n-propyl alcohol (C%3#H%7#OH)
-      61.1   3.2915   0.2046   2.6681  0.09644   3.5415     0.00
-         1  8.000000  0.134173
-         6  3.000193  0.599595
-         8  1.000037  0.266232
-----------------------------------------------------------------------------
- 241 Pyrid  5  -1.0000000000      0.53096 9.8190E-01 9.8190E-01 L  3  5  0 O
-     pyridine
-pyridine (C%5#H%5#N)
-      66.2   3.3148   0.1670   2.5245  0.16399   3.1977     0.00
-         1  5.000000  0.063710
-         6  5.000285  0.759217
-         7  1.000028  0.177073
-----------------------------------------------------------------------------
- 242 Rubbe  5  -1.0000000000      0.57034 9.2000E-01 9.2000E-01 S  2  8  0 O
-     rubber_butyl
-rubber butyl ([C%4#H8)%n#]
-      56.5   2.9915   0.1347   2.5154  0.12108   3.4296     0.00
-         1  8.000000  0.143711
-         6  4.000246  0.856289
-----------------------------------------------------------------------------
- 243 Rubbe  5  -1.0000000000      0.55785 9.2000E-01 9.2000E-01 S  2  8  0 O
-     rubber_natural
-rubber natural [(C%5#H8)%n#]
-      59.8   3.1272   0.1512   2.4815  0.15058   3.2879     0.00
-         1  8.000000  0.118371
-         6  5.000309  0.881629
-----------------------------------------------------------------------------
- 244 Rubbe  5  -1.0000000000      0.51956 1.2300E+00 1.2300E+00 S  3  5  0 O
-     rubber_neoprene
-rubber neoprene [(C%4#H%5#Cl)%n#]
-      93.0   3.7911   0.1501   2.9461  0.09763   3.3632     0.00
-         1  5.000000  0.056920
-         6  4.000259  0.542646
-        17  1.000049  0.400434
-----------------------------------------------------------------------------
- 245 Si-O2  5  -1.0000000000      0.49930 2.3200E+00 2.2000E+00 S  2  2  3 I
-     silicon_dioxide_fused_quartz
-silicon dioxide (fused quartz) (SiO%2#)
-     139.2   4.0029   0.1385   3.0025  0.08408   3.5064     0.00
-         8  2.000000  0.532565
-        14  1.000000  0.467435
-Melting point                   1713.
-Boiling point                   2950.
-Index of refraction             1.458
-----------------------------------------------------------------------------
- 246 Ag-Br  5  -1.0000000000      0.43670 6.4730E+00 6.4730E+00 S  2  1  0 I
-     silver_bromide_AgBr
-silver bromide (AgBr)
-     486.6   5.6139   0.0352   3.2109  0.24582   2.6820     0.00
-        35  1.000000  0.425537
-        47  1.000000  0.574463
-----------------------------------------------------------------------------
- 247 Ag-Cl  5  -1.0000000000      0.44655 5.5600E+00 5.5600E+00 S  2  1  0 I
-     silver_chloride_AgCl
-silver chloride (AgCl)
-     398.4   5.3437  -0.0139   3.2022  0.22968   2.7041     0.00
-        17  1.000000  0.247368
-        47  0.999989  0.752632
-----------------------------------------------------------------------------
- 248 Ag-ha  5  -1.0000000000      0.43663 6.4700E+00 6.4700E+00 S  3  1  0 M
-     ag_halides_in_phot_emulsion
-ag halides in phot emulsion
-     487.1   5.6166   0.0353   3.2117  0.24593   2.6814     0.00
-        35  1.000000  0.422895
-        47  1.004995  0.573748
-        53  0.004998  0.003357
-----------------------------------------------------------------------------
- 249 Ag-I   5  -1.0000000000      0.42594 6.0100E+00 6.0100E+00 S  2  1  0 I
-     silver_iodide_AgI
-silver iodide (AgI)
-     543.5   5.9342   0.0148   3.2908  0.25059   2.6572     0.00
-        47  1.000000  0.459458
-        53  1.000000  0.540542
-----------------------------------------------------------------------------
- 250 Skin   5  -1.0000000000      0.54932 1.1000E+00 1.1000E+00 S 13  1  0 B
-     skin_ICRP
-skin (ICRP)
-      72.7   3.3546   0.2019   2.7526  0.09459   3.4643     0.00
-         1  1.000000  0.100588
-         6  0.190428  0.228250
-         7  0.033209  0.046420
-         8  0.387683  0.619002
-        11  0.000031  0.000070
-        12  0.000025  0.000060
-        15  0.000107  0.000330
-        16  0.000497  0.001590
-        17  0.000755  0.002670
-        19  0.000218  0.000850
-        20  0.000038  0.000150
-        26  0.000002  0.000010
-        30  0.000002  0.000010
-----------------------------------------------------------------------------
- 251 Na2-C  5  -1.0000000000      0.49062 2.5320E+00 2.5320E+00 S  3  1  0 I
-     sodium_carbonate
-sodium carbonate (Na%2#CO%3#)
-     125.0   3.7178   0.1287   2.8591  0.08715   3.5638     0.00
-         6  1.000000  0.113323
-         8  2.999933  0.452861
-        11  1.999955  0.433815
-----------------------------------------------------------------------------
- 252 Na-I   5  -1.0000000000      0.42697 3.6670E+00 3.6670E+00 S  2  1  3 I
-     sodium_iodide_NaI
-sodium iodide (NaI)
-     452.0   6.0572   0.1203   3.5920  0.12516   3.0398     0.00
-        11  1.000000  0.153373
-        53  1.000002  0.846627
-Melting point               660.
-Boiling point              1304.
-Index of ref                1.775
-----------------------------------------------------------------------------
- 253 Na2-O  5  -1.0000000000      0.48404 2.2700E+00 2.2700E+00 S  2  1  0 I
-     sodium_monoxide
-sodium monoxide (Na%2#O)
-     148.8   4.1892   0.1652   2.9793  0.07501   3.6943     0.00
-         8  1.000000  0.258143
-        11  1.999995  0.741857
-----------------------------------------------------------------------------
- 254 Na-N-  5  -1.0000000000      0.49415 2.2610E+00 2.2610E+00 S  3  1  0 I
-     sodium_nitrate
-sodium nitrate (NaNO%3#)
-     114.6   3.6502   0.1534   2.8221  0.09391   3.5097     0.00
-         7  1.000000  0.164795
-         8  3.000009  0.564720
-        11  1.000004  0.270485
-----------------------------------------------------------------------------
- 255 Stilb  5  -1.0000000000      0.53260 9.7070E-01 9.7070E-01 S  2 12  0 O
-     stilbene
-stilbene (C%6#H%5#)CHCH(C%6#H%5#)
-      67.7   3.3680   0.1734   2.5142  0.16659   3.2168     0.00
-         1 12.000000  0.067101
-         6 14.000813  0.932899
-----------------------------------------------------------------------------
- 256 Sucro  5  -1.0000000000      0.53170 1.5805E+00 1.5805E+00 S  3 22  0 O
-     sucrose
-sucrose (C%12#H%22#O%11#)
-      77.5   3.1526   0.1341   2.6558  0.11301   3.3630     0.00
-         1 22.000000  0.064779
-         6 12.000771  0.421070
-         8 11.000442  0.514151
-----------------------------------------------------------------------------
- 257 Terph  5  -1.0000000000      0.52148 1.2340E+00 1.2340E+00 S  2 10  0 O
-     terphenyl
-terphenyl (C%18#H%10#)
-      71.7   3.2639   0.1322   2.5429  0.14964   3.2685     0.00
-         1 10.000000  0.044543
-         6 18.001057  0.955457
-----------------------------------------------------------------------------
- 258 Teste  5  -1.0000000000      0.55108 1.0400E+00 1.0400E+00 S 13  1  0 B
-     testes_ICRP
-testes (ICRP)
-      75.0   3.4698   0.2274   2.7988  0.08533   3.5428     0.00
-         1  1.000000  0.104166
-         6  0.074336  0.092270
-         7  0.013775  0.019940
-         8  0.468038  0.773884
-        11  0.000951  0.002260
-        12  0.000044  0.000110
-        15  0.000391  0.001250
-        16  0.000441  0.001460
-        17  0.000666  0.002440
-        19  0.000515  0.002080
-        20  0.000024  0.000100
-        26  0.000003  0.000020
-        30  0.000003  0.000020
-----------------------------------------------------------------------------
- 259 C2-Cl  5  -1.0000000000      0.48241 1.6250E+00 1.6250E+00 L  2  2  0 O
-     tetrachloroethylene
-tetrachloroethylene (C%2#C%l4#)
-     159.2   4.6619   0.1713   2.9083  0.18595   3.0156     0.00
-         6  2.000000  0.144856
-        17  3.999924  0.855144
-----------------------------------------------------------------------------
- 260 Tl-Cl  5  -1.0000000000      0.40861 7.0040E+00 7.0040E+00 S  2  1  0 I
-     thallium_chloride_TlCl
-thallium chloride (TlCl)
-     690.3   6.3009   0.0705   3.5716  0.18599   2.7690     0.00
-        17  1.000000  0.147822
-        81  0.999999  0.852187
-----------------------------------------------------------------------------
- 261 Soft   5  -1.0000000000      0.55121 1.0000E+00 1.0000E+00 S 13  1  0 B
-     soft_tissue_ICRP
-soft tissue (ICRP)
-      72.3   3.4354   0.2211   2.7799  0.08926   3.5110     0.00
-         1  1.000000  0.104472
-         6  0.186513  0.232190
-         7  0.017138  0.024880
-         8  0.380046  0.630238
-        11  0.000474  0.001130
-        12  0.000052  0.000130
-        15  0.000414  0.001330
-        16  0.000599  0.001990
-        17  0.000365  0.001340
-        19  0.000491  0.001990
-        20  0.000055  0.000230
-        26  0.000009  0.000050
-        30  0.000004  0.000030
-----------------------------------------------------------------------------
- 262 Tissu  5  -1.0000000000      0.54975 1.0000E+00 1.0000E+00 S  4  1  0 B
-     soft_tissue_ICRU_four-component
-soft tissue (ICRU four-component)
-      74.9   3.5087   0.2377   2.7908  0.09629   3.4371     0.00
-         1  1.000000  0.101172
-         6  0.092072  0.111000
-         7  0.018493  0.026000
-         8  0.474381  0.761828
-----------------------------------------------------------------------------
- 263 TE-ga  5  -1.0000000000      0.54993 1.0641E-03 1.0641E-03 G  4  1  0 B
-     tissue-equivalent_gas_Methane_based
-tissue-equivalent gas (Methane based)
-      61.2   9.9500   1.6442   4.1399  0.09946   3.4708     0.00
-         1  1.000000  0.101869
-         6  0.375802  0.456179
-         7  0.024846  0.035172
-         8  0.251564  0.406780
-----------------------------------------------------------------------------
- 264 TE-ga  5  -1.0000000000      0.55027 1.8263E-03 1.8263E-03 G  4  1  0 B
-     tissue-equivalent_gas_Propane_based
-tissue-equivalent gas (Propane based)
-      59.5   9.3529   1.5139   3.9916  0.09802   3.5159     0.00
-         1  1.000000  0.102672
-         6  0.465030  0.568940
-         7  0.024546  0.035022
-         8  0.180007  0.293366
-----------------------------------------------------------------------------
- 265 Ti-O2  5  -1.0000000000      0.47572 4.2600E+00 4.2600E+00 S  2  2  0 I
-     titanium_dioxide
-titanium dioxide (TiO%2#)
-     179.5   3.9522  -0.0119   3.1647  0.08569   3.3267     0.00
-         8  2.000000  0.400592
-        22  1.000271  0.599408
-----------------------------------------------------------------------------
- 266 Tolue  5  -1.0000000000      0.54265 8.6690E-01 8.6690E-01 L  2  8  0 O
-     toluene
-toluene (C%6#H%5#CH%3#)
-      62.5   3.3026   0.1722   2.5728  0.13284   3.3558     0.00
-         1  8.000000  0.087510
-         6  7.000463  0.912490
-----------------------------------------------------------------------------
- 267 C2-H-  5  -1.0000000000      0.48710 1.4600E+00 1.4600E+00 L  3  1  0 O
-     trichloroethylene
-trichloroethylene (C%2#HCl%3#)
-     148.1   4.6148   0.1803   2.9140  0.18272   3.0137     0.00
-         1  1.000000  0.007671
-         6  2.000158  0.182831
-        17  3.000193  0.809498
-----------------------------------------------------------------------------
- 268 Triet  5  -1.0000000000      0.53800 1.0700E+00 1.0700E+00 S  4 15  0 O
-     triethyl_phosphate
-triethyl phosphate C%6#H%15#PO%4#
-      81.2   3.6242   0.2054   2.9428  0.06922   3.6302     0.00
-         1 15.000000  0.082998
-         6  6.000356  0.395628
-         8  4.000136  0.351334
-        15  1.000036  0.170040
-----------------------------------------------------------------------------
- 269 W-F6   5  -1.0000000000      0.42976 2.4000E+00 2.4000E+00 S  2  6  0 I
-     tungsten_hexafluoride
-tungsten hexafluoride (WF%6#)
-     354.4   5.9881   0.3020   4.2602  0.03658   3.5134     0.00
-         9  6.000000  0.382723
-        74  1.000055  0.617277
-----------------------------------------------------------------------------
- 270 U-C2   5  -1.0000000000      0.39687 1.1280E+01 1.1280E+01 S  2  2  0 I
-     uranium_dicarbide
-uranium dicarbide (UC%2#)
-     752.0   6.0247  -0.2191   3.5208  0.21120   2.6577     0.00
-         6  2.000000  0.091669
-        92  0.999978  0.908331
-----------------------------------------------------------------------------
- 271 U-C    5  -1.0000000000      0.39194 1.3630E+01 1.3630E+01 S  2  1  0 I
-     uranium_monocarbide_UC
-uranium monocarbide (UC)
-     862.0   6.1210  -0.2524   3.4941  0.22972   2.6169     0.00
-         6  1.000000  0.048036
-        92  0.999982  0.951964
-----------------------------------------------------------------------------
- 272 U-O2   5  -1.0000000000      0.39996 1.0960E+01 1.0960E+01 S  2  2  0 I
-     uranium_oxide
-uranium oxide (UO%2#)
-     720.6   5.9605  -0.1938   3.5292  0.20463   2.6711     0.00
-         8  2.000000  0.118502
-        92  0.999999  0.881498
-----------------------------------------------------------------------------
- 273 Urea   5  -1.0000000000      0.53284 1.3230E+00 1.3230E+00 S  4  4  0 O
-     urea
-urea (CO(NH%2#)%2#)
-      72.8   3.2032   0.1603   2.6525  0.11609   3.3461     0.00
-         1  4.000000  0.067131
-         6  1.000072  0.199999
-         7  2.000083  0.466459
-         8  1.000046  0.266411
-----------------------------------------------------------------------------
- 274 Valin  5  -1.0000000000      0.54632 1.2300E+00 1.2300E+00 S  4 11  0 O
-     valine
-valine (C%5#H%11#NOi%2#)
-      67.7   3.1059   0.1441   2.6227  0.11386   3.3774     0.00
-         1 11.000000  0.094641
-         6  5.000305  0.512645
-         7  1.000035  0.119565
-         8  2.000072  0.273150
-----------------------------------------------------------------------------
- 275 Viton  5  -1.0000000000      0.48585 1.8000E+00 1.8000E+00 S  3  2  0 P
-     viton_fluoroelastomer
-viton fluoroelastomer [(C%5#H%2#F8)%n#]
-      98.6   3.5943   0.2106   2.7874  0.09965   3.4556     0.00
-         1  2.000000  0.009417
-         6  5.000366  0.280555
-         9  8.000378  0.710028
-----------------------------------------------------------------------------
- 276 Water  5  -1.0000000000      0.55509 1.0000E+00 1.0000E+00 L  2  2  3 I
-     water_liquid
-water (liquid) (H%2#O)
-      79.7   3.5017   0.2400   2.8004  0.09116   3.4773     0.00
-         1  2.000000  0.111894
-         8  1.000044  0.888106
-Index of refraction         1.333
-Melting point                0.0
-Boiling point               99.964             CRC2006 4-98
-----------------------------------------------------------------------------
- 277 Water  5  -1.0000000000      0.55509 7.5618E-04 7.5618E-04 G  2  2  0 I
-     water_vapor
-water (vapor) (H%2#O)
-      71.6  10.5962   1.7952   4.3437  0.08101   3.5901     0.00
-         1  2.000000  0.111894
-         8  1.000044  0.888106
-----------------------------------------------------------------------------
- 278 Xylen  5  -1.0000000000      0.54631 8.7000E-01 8.7000E-01 L  2 10  0 O
-     xylene
-xylene (C%8#H%10#)
-      61.8   3.2698   0.1695   2.5675  0.13216   3.3564     0.00
-         1 10.000000  0.094935
-         6  8.000548  0.905065
-----------------------------------------------------------------------------
- 279 Heavy  5  -1.0000000000      0.40594 1.9300E+01 1.9300E+01 S  3  1  1 M
-     heavymet_in_ATLAS_calorimeter
-heavymet in ATLAS calorimeter
-     727.0   5.4059   0.2167   3.4960  0.15509   2.8447     0.14
-        28  1.000000  0.035000
-        29  0.395844  0.015000
-        74  8.665723  0.950000
-Note: Tungsten properties except for average Z/A used in calculations
-----------------------------------------------------------------------------
- 280 Heavy  5  -1.0000000000      0.40915 1.9300E+01 1.9300E+01 S  3  1  1 M
-     heavymet_in_Rochester_gamma_stop
-heavymet as Rochester gamma stop
-     727.0   5.4059   0.2167   3.4960  0.15509   2.8447     0.14
-        28  1.000000  0.060000
-        29  0.615758  0.040000
-        74  4.788952  0.900000
-Note: Tungsten properties except for average Z/A used in calculations
-----------------------------------------------------------------------------
- 281 Std-R  0  11.0000000000   9  0.50000 2.6500E+00 2.6500E+00 S  2  1  1 M
-     standard_rock
-standard rock
-     136.4   3.7738   0.0492   3.0549  0.08301   3.4120     0.00
-        11  1.000000  1.000000
-        12  0.000000  0.000000
-Note:  <A HREF="../standardrock.html">Explanation of "Standard Rock."
-----------------------------------------------------------------------------
- 282 Hydro  3   1.0080000000   7  0.99212 6.0000E-02 7.0800E-02 L  1  1  1 E
-H    nonsense           
-    Liquid hydrogen (H%2#)
-      21.8   2.8438   0.2000   2.0000  0.32969   3.0000     0.00
-         1  1.000000  1.000000
-Note: This looks like nonsense.  ind = 85 is correct!
-----------------------------------------------------------------------------
- 283 Heliu  6   4.0026020000   2  0.49967 1.2490E-01 1.2490E-01 L  1  1  2 E
-He   liquid_helium
-liquid helium (He)
-      41.8   4.5180   0.4729   2.0000  0.65713   3.0000     0.00
-         2  1.000000  1.000000
-Boiling point                   -268.93
-Index of ref                    1.024
-----------------------------------------------------------------------------
- 284 Nitro  3  14.0070000000   2  0.49976 8.0700E-01 8.0700E-01 L  1  1  4 E
-N   liquid_nitrogen
-liquid nitrogen (N%2#)
-      82.0   3.9996   0.3039   2.0000  0.53289   3.0000     0.00
-         7  1.000000  1.000000
-Melting point                   -210.00
-Boiling point                   -195.86
-Index of ref                    1.19876              CRC2006 4-148
-Note: Index of refraction at boiling point, 1 atm.
-----------------------------------------------------------------------------
- 285 Oxyge  3  15.9990000000   3  0.50002 1.1410E+00 1.1410E+00 L  1  1  4 E
-O   liquid_oxygen
-liquid oxygen (O%2#)
-      95.0   3.9471   0.2868   2.0000  0.52231   3.0000     0.00
-         8  1.000000  1.000000
-Melting point (C)               -218.79
-Boiling point (C)               -182.95
-Index of ref                    1.2243
-Note: Index of refraction at boiling point, 1 atm.
-----------------------------------------------------------------------------
- 286 Fluor  9  18.9984031630   6  0.47372 1.5070E+00 1.5070E+00 L  1  1  2 E
-F   liquid_fluorine
-liquid fluorine (F%2#)
-     115.0   4.1050   0.2000   3.0000  0.14504   3.0000     0.00
-         9  1.000000  1.000000
-Melting point                   -219.62
-Boiling point                   -188.12
-----------------------------------------------------------------------------
- 287 Neon   4  20.1797000000   6  0.49555 1.2040E+00 1.2040E+00 L  1  1  3 E
-Ne   liquid_neon
-liquid neon (Ne)
-     137.0   4.6345   0.2000   3.0000  0.16916   3.0000     0.00
-        10  1.000000  1.000000
-Boiling point                -246.08
-Melting point                -248.59
-Index of ref                  1.092
-----------------------------------------------------------------------------
- 288 Chlor  3  35.4530000000   2  0.47951 1.5740E+00 1.5740E+00 L  1  1  2 E
-Cl   liquid_chlorine
-liquid chlorine (Cl%2#)
-     174.0   4.8776   0.2000   3.0000  0.18024   3.0000     0.00
-        17  1.000000  1.000000
-Melting point             -101.5
-Boiling point             -34.04
-----------------------------------------------------------------------------
- 289 Argon  3  39.9480000000   1  0.45059 1.3960E+00 1.3960E+00 L  1  1  3 E
-Ar   liquid_argon
-liquid argon (Ar)
-     188.0   5.2146   0.2000   3.0000  0.19559   3.0000     0.00
-        18  1.000000  1.000000
-Boiling point              -185.85
-Melting point                -189.36
-Index of ref                1.233
-----------------------------------------------------------------------------
- 290 Bromi  3  79.9040000000   1  0.43803 3.1028E+00 3.1028E+00 L  1  1  2 E
-Br   liquid_bromine
-bromine liquid (Br%2#)
-     357.0   0.0000   0.0000   0.0000  0.0000   0.0000     0.00
-        35  1.000000  1.000000
-melting point              -7.2
-boiling point              58.78
-----------------------------------------------------------------------------
- 291 Krypt  3  83.7980000000   2  0.42960 2.4180E+00 2.4180E+00 L  1  1  4 E
-Kr   liquid_krypton_Kr
-liquid krypton (Kr)
-     352.0   5.9674   0.4454   3.0000  0.23491   3.0000     0.00
-        36  1.000000  1.000000
-melting point              -157.36
-boiling point              -153.22
-Index refraction          1.3032                 CRC2006 4-148
-Note: Index of refraction at boiling point, 1 atm.
-----------------------------------------------------------------------------
- 292 Xenon  3 131.2930000000   6  0.41129 2.9530E+00 2.9530E+00 L  1  1  4 E
-Xe   liquid_xenon_Xe
-liquid xenon (Xe)
-     482.0   6.4396   0.5993   3.0000  0.26595   3.0000     0.00
-        54  1.000000  1.000000
-Melting point             -111.75
-Boiling point             -108.0
-Index refraction          1.3918                 CRC2006 4-148
-Note: Index of refraction at boiling point, 1 atm.
-----------------------------------------------------------------------------
- 293 C-O2   5  -1.0000000000      0.49989 1.5630E+00 1.5630E+00 S  2  2  1 I
-     solid_carbon_dioxide_dry_ice
-solid carbon dioxide (dry ice, CO%2#)
-      85.0   3.4513   0.2000   2.0000  0.43387   3.0000     0.00
-         6  2.000000  0.272916
-         8  4.000010  0.727084
-Note: Sublimation point  194.7 K =  -78.4 C
-----------------------------------------------------------------------------
- 294 Hydro  5   1.0079400000   7  0.99212 6.0000E-02 6.0000E-02 L  1  1  0 E
-H   bubble_chamber_H_liquid
-Hydrogen BC liquid DEG calc to check code
-      21.8   3.0093   0.2000   2.0000  0.35807   3.0000     0.00
-         1  1.000000  1.000000
-----------------------------------------------------------------------------
- 295 Water  5  -1.0000000000      0.55509 1.0000E+00 1.0000E+00 L  2  2  0 I
-     water_as_calc_from_steam_to_check_code
-water as calc from steam to check code
-      71.6   3.5017   0.2000   2.0000  0.44251   3.0000     0.00
-         1  2.000000  0.111894
-         8  1.000044  0.888106
-----------------------------------------------------------------------------
- 296 Aerog  5  -1.0000000000      0.50093 2.0000E-01 2.0000E-01 S  3  2  1 M
-     silica_aerogel
-silica aerogel for rho = 0.2 (0.03 H%2#O, 0.97 SiO%2#)
-     139.2   6.4507   0.6029   3.0000  0.26675   3.0000     0.00
-         8  2.000000  0.543192
-        14  1.000000  0.453451
-         1  2.000000  0.003357
-Note: See A. R. Buzykaev et al, NIM A433 396 (1999)
-----------------------------------------------------------------------------
- 297 Carbo  4  12.0107000000   8  0.49955 2.2650E+00 3.5200E+00 S  1  1  2 E
-C   carbon_gem_diamond
-carbon (gem diamond)
-      78.0   2.8680  -0.0178   2.3415  0.26142   2.8697     0.12
-         6  1.000000  1.000000
-Note: variety of melting points found, e.g. 4400 C, 3675 C
-Index of ref (n-1)*E6           2.419
-----------------------------------------------------------------------------
- 298 Deute  9   2.014101764   13  0.49650 1.8000E-04 1.6770E-04 D  1  1  3 E
-D   deuterium_gas
-deuterium gas (D%2#)
-      19.2   9.5835   1.8639   3.2718  0.14092   5.7273     0.00
-         1  1.000000  1.000000
-Boiling point (C)                -249.5       (mass from Phys. Rev. A 47, 3433 - 3436 (1993))
-Triple point                   -254.461       CRC2006
-Index of ref (n-1)*E6           138.0
-----------------------------------------------------------------------------
- 299 D-liq  9   2.014101764   13  0.49650 1.4320E-01 1.6380E-01 L  1  1  3 E
-D   liquid_deuterium
-liquid deuterium (D%2#)
-      21.8   3.2632   0.4759   1.9215  0.13483   5.6249     0.00
-         1  1.000000  1.000000
-Boiling point                    -249.5
-Triple point                   -254.461       CRC2006
-Index of ref                    1.112
-----------------------------------------------------------------------------
- 300 Salt   5  -1.0000000000      0.47910 2.1650E+00 2.1700E+00 S  2  2  3 I
-     sodium_chloride_NaCl
-sodium chloride (NaCl)
-     175.3   4.4250   0.2000   3.0000  0.15962   3.0000     0.00
-        11  1.000000  0.393375
-        17  1.000000  0.606626
-Melting point  (C)                 802.018     CRC2008  15-11
-Boiling point  (C)                 1465.
-Index of refraction            1.544
-----------------------------------------------------------------------------
- 301 PbWO4  5  -1.0000000000      0.41315 8.3900E+00 8.3000E+00 S  3  1  2 I
-     lead_tungstate
-lead tungstate (PbWO%4#)
-     600.7   5.8420   0.4045   3.0000  0.22758   3.0000     0.00
-        82  1.000000  0.455347
-        74  1.000000  0.404011
-         8  4.000000  0.140462
-Melting point               1123.
-Index of refraction         2.20
-----------------------------------------------------------------------------
- 302 Calif  5 251.0795900000   3  0.39031 1.5100E+00 1.5100E+01 S  1  1  3 R
-Cf   californium_Cf
-californium (Cf)
-     966.0   6.3262   0.5623   3.0000  0.25796   3.0000     0.00
-        98  1.000000  1.000000
-melting                      900.
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: I<SUB><I>eff</I></SUB> = 966 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 303 Einst  4 252.0830000000   4  0.39273 0.0000E+00 1.4000E+01 S  1  1  3 R
-Es   einsteinium_Es
-einsteinium (Es)
-     980.0   6.3488   0.5697   3.0000  0.25952   3.0000     0.00
-        99  1.000000  1.000000
-melting                       860.
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 980 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 304 Fermi  5 257.0951000000   5  0.38896 0.0000E+00 1.4000E+01 S  1  1  3 R
-Fm   fermium_Fm
-fermium (Fm)
-     994.0   6.3868   0.5821   3.0000  0.26219   3.0000     0.00
-       100  1.000000  1.000000
-Melting:            1527.
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 994 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 305 Mende  5 258.0984300000   3  0.39132 0.0000E+00 1.4000E+01 S  1  1  3 R
-Md   mendelevium_Md
-mendelevium (Md)
-    1007.0   6.4068   0.5886   3.0000  0.26360   3.0000     0.00
-       101  1.000000  1.000000
-Melting                 827.
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1007 eV assumed in calculating critical energies and <I><I>dE/dx</I></I>.
-----------------------------------------------------------------------------
- 306 Nobel  4 259.1010000000   7  0.39367 0.0000E+00 1.4000E+01 S  1  1  2 R
-No   nobelium_No
-nobelium (No)
-    1020.0   6.4264   0.5950   3.0000  0.26500   3.0000     0.00
-       102  1.000000  1.000000
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1020 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 307 Lawre  5 262.1096100000   2  0.39296 0.0000E+00 1.4000E+01 S  1  1  2 R
-Lr   lawrencium_Lr
-lawrencium (Lr)
-    1034.0   6.4555   0.6045   3.0000  0.26710   3.0000     0.00
-       103  1.000000  1.000000
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = Z*10.0 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 308 Ruthe  5 267.1217900000   4  0.38934 0.0000E+00 1.4000E+01 S  1  1  2 R
-Rf   rutherfordium_Rf
-rutherfordium (Rf)
-    1047.0   6.4898   0.6157   3.0000  0.26960   3.0000     0.00
-       104  1.000000  1.000000
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1047 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 309 Dubni  5 268.1256700000   4  0.39161 0.0000E+00 1.4000E+01 S  1  1  2 R
-Db   dubnium_Db
-dubnium (Db)
-    1061.0   6.5105   0.6224   3.0000  0.27114   3.0000     0.00
-       105  1.000000  1.000000
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1061 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 310 Seabo  5 269.1286300000   5  0.39095 0.0000E+00 1.4000E+01 S  1  1  2 R
-Sg   seaborgium_Sg
-seaborgium (Sg)
-    1074.0   6.5365   0.6309   3.0000  0.27308   3.0000     0.00
-       106  1.000000  1.000000
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1074 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 311 Bohri  5 270.1333600000   4  0.39610 0.0000E+00 1.4000E+01 S  1  1  2 R
-Bh   bohrium_Bh
-bohrium (Bh)
-    1087.0   6.5549   0.6369   3.0000  0.27447   3.0000     0.00
-       107  1.000000  1.000000
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1087 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 312 Hassi  5 269.1337500000  13  0.40129 0.0000E+00 1.4000E+01 S  1  1  2 R
-Hs   hassium_Hs
-hassium (Hs)
-    1102.0   6.5913   0.6488   3.0000  0.27724   3.0000     0.00
-       108  1.000000  1.000000
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1102 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 313 Meitn  4 278.1563000000   7  0.39471 0.0000E+00 1.4000E+01 S  1  1  2 R
-Mt   meitnerium_Mt
-meitnerium (Mt)
-    1115.0   6.6019   0.6522   3.0000  0.27805   3.0000     0.00
-       109  1.000000  1.000000
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1115 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 314 Darms  4 281.1645000000   6  0.39123 0.0000E+00 1.4000E+01 S  1  1  2 R
-Ds   darmstadtium_Ds
-darmstadtium (Ds)
-    1129.0   6.6357   0.6632   3.0000  0.28068   3.0000     0.00
-       110  1.000000  1.000000
-Note: Since there is no stable isotope, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1129 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 315 Roent  4 282.1691200000   7  0.39620 0.0000E+00 1.4000E+01 S  1  1  2 R
-Rg   roentgenium_Rg
-roentgenium (Rg)
-    1143.0   6.6477   0.6672   3.0000  0.28162   3.0000     0.00
-       111  1.000000  1.000000
-Note: Since there are no stable isotopes, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1143 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 316 Coper  5 285.17712        5  0.39274 0.0000E+00 1.4000E+01 S  1  1  2 R
-Cn   copernicium_Cn
-copernicium (Cn)
-    1156.0   6.6791   0.6774   3.0000  0.28410   3.0000     0.00
-       112  1.000000  1.000000
-Note: Since there are no stable isotopes, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = Z*10.0 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 317 nihon  5 286.1822100000   6  0.39764 0.0000E+00 1.4000E+01 S  1  1  1 R
-Nh   nihonium_Nh   
-nihonium (Nh)
-    1171.0   6.6925   0.6818   3.0000  0.28517   3.0000     0.00
-       113  1.000000  1.000000
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1171 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 318 flero  5 289.1904200000   5  0.39421 0.0000E+00 1.4000E+01 S  1  1  1 R
-Fl   flerovium_Fl
-flerovium (Fl)
-    1185.0   6.7249   0.6923   3.0000  0.28779   3.0000     0.00
-       114  1.000000  1.000000
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1185 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 319 mosco  5 289.1936300000   6  0.39904 0.0000E+00 1.4000E+01 S  1  1  1 R
-Mc   moscovium_Mc  
-moscovium (Mc)  
-    1199.0   6.7363   0.6960   3.0000  0.28871   3.0000     0.00
-       115  1.000000  1.000000
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1199 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 320 liver  4 293.2045000000   6  0.39563 0.0000E+00 1.4000E+01 S  1  1  1 R
-Lv   livermorium_Lv
-livermorium (Lv)
-    1213.0   6.7571   0.7028   3.0000  0.29041   3.0000     0.00
-       116  1.000000  1.000000
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1213 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 321 tenne  4 294.2105100000   7  0.39796 0.0000E+00 1.4000E+01 S  1  1  1 R
-Ts   tennessine_Ts 
-tennessine (Ts)
-    1227.0   6.7800   0.7103   3.0000  0.29231   3.0000     0.00
-       117  1.000000  1.000000
-Note: Density 14.0 g/cm<SUP>3</SUP> and I<SUB><I>eff</I></SUB> = 1227 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 322 ogane  5 294.2139220000   8  0.40107 1.2000E-02 1.2000E-02 G  1  1  2 R
-Og   oganesson_Og  
-oganesson (Og)   
-    1242.0  13.8662   2.0204  -1.9972 -0.07035   3.0000     0.00
-       118  1.000000  1.000000
-Note: Density is that of an ideal monatomic gas.
-Note: I<SUB><I>eff</I></SUB> = 1242 eV assumed in calculating critical energies and <I>dE/dx</I>.
-----------------------------------------------------------------------------
- 323 Astat  5 209.9871500000   6  0.40479 0.0000E+00 5.0000E+00 S  1  1  3 R
-At   astatine_At
-astatine (At)
-     825.0   7.0039   0.7833   3.0000  0.31184   3.0000     0.00
-        85  1.000000  1.000000
-Melting :                     302.
-Note: Since there are no stable isotopes, [atomic mass] is that of the longest-lived isotope (8.1 hr).
-Note: Density 5.0 g/cm<SUP>3</SUP> assumed.
-----------------------------------------------------------------------------
- 324 Franc  5 223.0197400000   2  0.39010 1.8700E+00 1.8700E+00 S  1  1  4 R
-Fr   francium_Fr
-francium (Fr)
-     827.0   8.0292   1.1175   3.0000  0.43214   3.0000     0.00
-        87  1.000000  1.000000
-Melting                     27.
-Boiling                    677.
-Note: Francium is less stable than any other element lighter than nobelium, element 102.
-Note: Since there are no stable isotopes, [atomic mass] is that of the longest-lived isotope known as of Jun 2017.
-----------------------------------------------------------------------------
- 325 Ice    5  -1.0000000000      0.55509 1.0000E+00 0.9180E+00 L  2  2  3 I
-     water_ice
-water (ice) (H%2#O)
-      79.7   3.5017   0.2400   2.8004  0.09116   3.4773     0.00
-         1  2.000000  0.111894
-         8  1.000044  0.888106
-Index of refraction         1.309
-Melting point                0.0
-Boiling point               99.964             CRC2006 4-98
-----------------------------------------------------------------------------
- 326 CF4    5  -1.0000000000      0.47721 3.78E-3    3.78E-3    G  2  1  4 O
-     carbon_tetrafluoride
-carbon tetrafluoride (CF%4#)
-     115.0   0.0      0.        .0000  0.         .0000     0.00
-         6  1.000000  0.136548
-         9  4.000000  0.86345
-Melting :                     -183.6
-boiling                       -127.8
-Note: Physical properties such as gas density are not well vetted
-Note: Ieff supplied by Hans Bichsel
-----------------------------------------------------------------------------
- 327 LaBr3  5  -1.0000000000      0.42787 5.2900e+00 5.2900e+00 S  2  1  1 I
-     lanthanum_bromide
-lanthanum bromide (LaBr%3#)
-     454.5   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        57  1.000000  0.366875
-        35  3.000000  0.633124
-Note: Ieff calculated using the ICRU37 algorithm given in Table 5.1
-----------------------------------------------------------------------------
- 328 YBr3   5  -1.0000000000      0.43820 5.2900e+00 5.2900e+00 S  2  1  1 I
-     yttrium_bromide
-yttrium bromide (YBr%3#)
-     410.0   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        39  1.000000  0.270545
-        35  3.000000  0.729455
-Note: Ieff calculated using the ICRU37 algorithm given in Table 5.1
-----------------------------------------------------------------------------
- 329 BSO    5  -1.0000000000      0.42260 9.2000e+00 7.1200e+00 S  3 12  3 I
-     bismuth_silicate_BSO
-bismuth silicate (BSO) [(Bi%2#O%3#)%2#(SiO%2#)%3#]
-     519.2   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-         8 12.000000  0.172629
-        14  3.000000  0.075759
-        83  4.000000  0.751613
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-Note: Evalite structure; less common is Bi{12}SiO{20}
-Note: Check density. Probably wrong
-----------------------------------------------------------------------------
- 330 PbF2   5  -1.0000000000      0.40784 7.7700e+00 7.7700e+00 S  2  1  1 I
-     lead_fluoride
-lead fluoride (PbF%2#)
-     635.4   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        82  1.000000  0.845035
-         9  2.000000  0.154965
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-----------------------------------------------------------------------------
- 331 LaF3   5  -1.0000000000      0.42879 5.9000e+00 5.9000e+00 S  2  1  1 I
-     lanthanum_fluoride
-lanthanum fluoride (LaF%3#)
-     336.3   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        57  1.000000  0.709061
-         9  3.000000  0.290939
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-----------------------------------------------------------------------------
- 332 CeF3   5  -1.0000000000      0.43123 6.1600e+00 6.1600e+00 S  2  1  1 I
-     cerium_fluoride
-cerium fluoride (CeF%3#)
-     348.4   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        58  1.000000  0.710847
-         9  3.000000  0.289153
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-----------------------------------------------------------------------------
- 333 LuF3   5  -1.0000000000      0.42248 8.3000e+00 8.3000e+00 S  2  1  1 I
-     lutetium_fluoride
-lutetium fluoride (LuF%3#)
-     458.7   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        71  1.000000  0.754291
-         9  3.000000  0.245709
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-----------------------------------------------------------------------------
- 334 LaCl3  5  -1.0000000000      0.44034 3.8600e+00 3.8600e+00 S  2  1  1 I
-     lanthanum_chloride
-lanthanum chloride (LaCl%3#)
-     329.5   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        57  1.000000  0.566350
-        17  3.000000  0.433650
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-----------------------------------------------------------------------------
- 335 LuAlO  5  -1.0000000000      0.43209 8.3000e+00 8.3000e+00 S  3  1  1 I
-     lutetium_aluminum_oxide_1
-lutetium aluminum oxide (1) (LuAlO%3#)
-     423.2   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        71  1.000000  0.700017
-        13  1.000000  0.107949
-         8  3.000000  0.192034
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-----------------------------------------------------------------------------
- 336 LuAlO  5  -1.0000000000      0.43907 6.7300e+00 6.7300e+00 S  3  3  1 I
-     lutetium_aluminum_oxide_2
-lutetium aluminum oxide (2) (Lu%3#Al%5#O%12#)
-     365.9   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        71  3.000000  0.616224
-        13  5.000000  0.158379
-         8 12.000000  0.225396
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-----------------------------------------------------------------------------
- 337 LuSiO  5  -1.0000000000      0.42793 7.4000e+00 7.4000e+00 S  3  2  1 I
-     lutetium_silicon_oxide
-lutetium silicon oxide (Lu%2#SiO%5#)
-     472.0   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        71  2.000000  0.764020
-        14  1.000000  0.061320
-         8  5.000000  0.174660
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-----------------------------------------------------------------------------
- 338 YAlO-1 5  -1.0000000000      0.46374 5.5000e+00 5.5000e+00 S  3  1  1 I
-     yttrium_aluminum_oxide_1
-yttrium aluminum oxide (1) (YAlO%3#)
-     239.3   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        39  1.000000  0.542487
-        13  1.000000  0.164636
-         8  3.000000  0.292876
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-----------------------------------------------------------------------------
- 339 YAlO-2 5  -1.0000000000      0.46831 4.5600e+00 4.5600e+00 S  3  3  1 I
-     yttrium_aluminum_oxide_2
-yttrium aluminum oxide (2) (Y%3#Al%5#O%12#)
-     218.0   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        39  3.000000  0.449308
-        13  5.000000  0.227263
-         8 12.000000  0.323428
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-----------------------------------------------------------------------------
- 340 YSiO   5  -1.0000000000      0.46171 4.5400e+00 4.5400e+00 S  3  2  1 I
-     yttrium_silicon_oxide
-yttrium silicon oxide (Y%2#SiO%5#)
-     258.1   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        39  2.000000  0.621949
-        14  1.000000  0.098237
-         8  5.000000  0.279813
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-----------------------------------------------------------------------------
- 341 GdSiO  5  -1.0000000000      0.43069 6.7100e+00 6.7100e+00 S  3  2  1 I
-     gadolinium_silicate
-gadolinium silicate (Gd%2#SiO%5#)
-     405.4   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        64  2.000000  0.744233
-        14  1.000000  0.066462
-         8  5.000000  0.189305
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
-----------------------------------------------------------------------------
- 342 baksa  5  -1.0000000000      0.49228 2.7400e+00 2.7400e+00 S  2  0  1 I
-      baksan_rock
-baksan rock
-     175.6   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        11  0.100000  0.095103
-        12  0.900000  0.904897
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
----------------------------------------------------------------------------
- 343 bakst  5  -1.0000000000      0.49228 2.7400e+00 2.6500e+00 S  2  0  1 I
-      baksan_rock_st
-baksan rock, std rock density
-     175.6   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        11  0.100000  0.095103
-        12  0.900000  0.904897
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
----------------------------------------------------------------------------
- 344 MtBla  5  -1.0000000000      0.48003 2.6000e+00 2.6000e+00 S  2  0  1 I
-      MtBlanc_rock
-Mt Blanc rock
-     159.2   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-         6  0.132000  0.073601
-        11  0.868000  0.926399
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
----------------------------------------------------------------------------
- 345 MtBst  5  -1.0000000000      0.48003 2.6000e+00 2.6500e+00 S  2  0  1 I
-      MtBlanc_rock_sd
-Mt Blanc rock, std rock density
-     159.2   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-         6  0.132000  0.073601
-        11  0.868000  0.926399
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
----------------------------------------------------------------------------
- 346 KGFst  5  -1.0000000000      0.48605 3.0200e+00 2.6500e+00 S  2  0  1 I
-      KGF_rock_st
-Kolar Gold Fields rock, std rock density
-     183.4   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        12  0.380000  0.355713
-        13  0.620000  0.644287
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
----------------------------------------------------------------------------
- 347   KGF  5  -1.0000000000      0.48605 3.0200e+00 3.0200e+00 S  2  0  1 I
-      KGF_rock
-Kolar Gold Fields rock
-     183.4   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        12  0.380000  0.355713
-        13  0.620000  0.644287
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
----------------------------------------------------------------------------
- 348    UD  5  -1.0000000000      0.49602 2.7000e+00 2.7000e+00 S 11  0  1 I
-      UD_rock
-UD rock for doug
-     145.4   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        14  0.245239  0.334025
-        22  0.001368  0.003176
-        13  0.056485  0.073911
-        26  0.009477  0.025666
-        25  0.000148  0.000394
-        12  0.004120  0.004856
-        20  0.009895  0.019232
-        11  0.041643  0.046428
-        19  0.001606  0.003045
-        15  0.000592  0.000889
-         8  0.629426  0.488377
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
----------------------------------------------------------------------------
- 349   LMP  5  -1.0000000000      0.49641 2.7000e+00 2.7000e+00 S 11  0  1 I
-      LMP_rock
-LMP rock for Doug
-     145.9   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        14  0.248086  0.335584
-        22  0.001242  0.002863
-        13  0.066504  0.086423
-        26  0.008725  0.023467
-        25  0.000146  0.000386
-        12  0.010053  0.011768
-        20  0.007152  0.013805
-        11  0.002935  0.003250
-        19  0.015537  0.029258
-        15  0.000437  0.000652
-         8  0.639181  0.492543
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
----------------------------------------------------------------------------
- 350    UM  5  -1.0000000000      0.49407 2.7000e+00 2.7000e+00 S 11  0  1 I
-      UM_rock
-UM rock for Doug
-     152.7   0.0000   0.0000   0.0000  0.00000   0.0000     0.00
-        14  0.184026  0.238952
-        22  0.002244  0.004966
-        13  0.069046  0.086130
-        26  0.030831  0.079602
-        25  0.000822  0.002088
-        12  0.042435  0.047684
-        20  0.031499  0.058365
-        11  0.025503  0.027107
-        19  0.000642  0.001160
-        15  0.000791  0.001133
-         8  0.612161  0.452813
-Note: Ieff calculated using the ICRU37 Table 5.1 algorithm for liquids and solids
----------------------------------------------------------------------------
diff --git a/Processes/EnergyLoss/ReadData.py b/Processes/EnergyLoss/ReadData.py
deleted file mode 100644
index 377f3992d..000000000
--- a/Processes/EnergyLoss/ReadData.py
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/python
-
-import os
-import sys
-import string
-
-
-data = open("Properties8.dat", "r")
-
-nEl = 0
-nOpt = 0
-count = 0 # the data comes with flexible row-blocks, need to count
-for line in data.readlines():
-    line = line.rstrip()
-    if line == "" or line[0] == "#":
-        continue
-
-#    print str(count) + " " + line
-    
-    if count == 0:
-        index = int(line[0:4].strip()) # sternheimers index
-        name = line[5:11].strip() # tag
-        sig = int(line[11:14].strip()) # significant figures of atomic mass if element
-        weight = float(line[16:27].strip()) # atomic weight, if element
-        weight_error = int((line[31:32].strip() or "0"))# error in last place
-        ZoverA = float(line[34:42].strip()) # Z/A
-        rho = float(line[42:52].strip())          # Sternheimers density
-        rho_corr = float(line[52:63].strip())# Corrected density
-        state = line[64].strip() # Solid Liquid Gas Diatomicgas
-        nEl = int(line[66:69].strip()) # number of elements
-        nAtom = int(line[70:72].strip()) # atoms of el. 1
-        nOpt = int(line[73:74].strip()) # number of optional lines
-        type = line[75] # type: Element, Radiactive element, Inorganic compound, Organic compound, Polymer, Mixture, Biological
-
-    elif count == 1:
-        short = line[0:4].strip() # if element
-        long = line[4:100].strip()
-                   
-    elif count == 2:
-        desc = line # description and formula
-                   
-    elif count == 3:
-        Ieff = float(line[0:10].strip()) # ieff
-        Cbar = float(line[11:19].strip()) # cbar
-        x0 = float(line[21:28].strip()) # x0
-        x1 = float(line[30:37].strip()) # x1
-        aa = float(line[39:46].strip()) # a / aa
-        sk = float(line[48:55].strip()) # k / sk
-        delta0 = float(line[59:].strip()) # delta0  / dlt0
-                   
-    elif count == 4 and count < 4+nEl:
-        elZ = int(line[0:11].strip()) # Z
-        # num frac.
-        # weigh frac.
-        pass
-                   
-    elif count>=4+nEl and count<=4+nEl+nOpt:
-        # print "opt : " + str(count) + " " + str(4+nEl+nOpt) + " " + line
-        # property A25
-        # value F20
-        # if 1:5 is "Note:" following lines are extra comments
-        if (count == 4+nEl+nOpt):
-            count = -1
-
-            print str(elZ) + " " + long + " " + str(Ieff) + " " + str(ZoverA) + " " + state + " " + type + " " + str(rho_corr) + " " + str(delta0) + " " + str(x0)  + " " + str(x1)  + " " + str(aa)  + " " + str(sk) + " " + str(Cbar)
-
-            
-    count += 1
-
-                  
-if (count != 0):
-    print ("Error " + str(count))
-                
diff --git a/Processes/EnergyLoss/SummaryPropTable.dat b/Processes/EnergyLoss/SummaryPropTable.dat
deleted file mode 100644
index 2ebc9d2e6..000000000
--- a/Processes/EnergyLoss/SummaryPropTable.dat
+++ /dev/null
@@ -1,138 +0,0 @@
-# RU Mo 18. Feb 14:07:40 CET 2019
-# Data table obtained from http://pdg.lbl.gov/2018/AtomicNuclearProperties/summary_prop_table.dat
-# see also http://pdg.lbl.gov/2018/AtomicNuclearProperties/expert.html
-#  Z      A      density  dEmin    Xo       lam_I    lam_pi_I  E_c (elec)  E_c (pstrn) state
-   1   1.00794      0.00  4.103   63.04     52.01     80.26    344.80    338.33      D
-   1   1.00794      0.07  4.034   63.04     52.01     80.26    278.02    271.50      L
-   1   2.01410      0.00  2.053  125.98     71.78    110.12    345.50    339.03      D
-   1   2.01410      0.17  2.019  125.98     71.78    110.12    278.02    271.50      L
-   2   4.00260      0.00  1.937   94.32     71.00    103.61    257.13    252.23      G
-   2   4.00260      0.12  1.936   94.32     71.00    103.61    208.25    203.34      L
-   3   6.94100      0.53  1.639   82.78     71.34    103.26    149.06    145.33      S
-   4   9.01218      1.85  1.595   65.19     77.80    109.90    113.70    110.68      S
-   5  10.81100      2.37  1.623   52.69     83.32    115.54     93.95     91.41      S
-   6  12.01070      2.00  1.749   42.70     85.81    117.79     82.08     79.85      S
-   6  12.01070      2.21  1.742   42.70     85.81    117.79     81.74     79.51      S
-   6  12.01070      2.27  1.745   42.70     85.81    117.79     81.67     79.44      S
-   6  12.01070      3.52  1.725   42.70     85.81    117.79     80.17     77.94      S
-   7  14.00670      0.00  1.825   37.99     89.68    121.69     91.73     89.71      D
-   7  14.00670      0.81  1.813   37.99     89.68    121.69     75.47     73.49      L
-   8  15.99940      0.00  1.801   34.24     90.17    121.91     81.45     79.62      D
-   8  15.99940      1.14  1.788   34.24     90.17    121.91     66.82     65.04      L
-   9  18.99840      0.00  1.676   32.93     97.42    127.24     73.15     71.48      D
-   9  18.99840      1.51  1.634   32.93     97.42    127.24     59.81     58.17      L
-  10  20.17970      0.00  1.724   28.93     98.99    128.66     67.02     65.47      G
-  10  20.17970      1.20  1.695   28.93     98.99    128.66     55.10     53.59      L
-  11  22.98977      0.97  1.639   27.74    102.55    132.22     51.38     49.99      S
-  12  24.30500      1.74  1.674   25.03    104.12    133.65     46.55     45.25      S
-  13  26.98154      2.70  1.615   24.01    107.16    136.67     42.70     41.48      S
-  14  28.08550      2.33  1.664   21.82    108.35    137.74     40.19     39.05      S
-  15  30.97376      2.20  1.613   21.21    111.36    140.72     37.92     36.84      S
-  16  32.06500      2.00  1.652   19.50    112.44    141.70     35.85     34.83      S
-  17  35.45300      0.00  1.630   19.28    115.70    144.94     40.05     39.04      D
-  17  35.45300      1.57  1.608   19.28    115.70    144.94     34.32     33.35      L
-  18  39.94800      0.00  1.519   19.55    119.73    148.99     38.03     37.06      G
-  18  39.94800      1.40  1.508   19.55    119.73    148.99     32.84     31.91      L
-  19  39.09830      0.86  1.623   17.32    118.98    148.08     31.62     30.72      S
-  20  40.07800      1.55  1.655   16.14    119.83    148.83     29.56     28.71      S
-  21  44.95591      2.99  1.522   16.55    123.90    152.91     27.61     26.79      S
-  22  47.86700      4.54  1.477   16.16    126.20    155.17     26.01     25.23      S
-  23  50.94150      6.11  1.436   15.84    128.54    157.46     24.67     23.91      S
-  24  51.99610      7.18  1.456   14.94    129.31    158.16     23.52     22.79      S
-  25  54.93804      7.44  1.428   14.64    131.44    160.24     22.59     21.89      S
-  26  55.84500      7.87  1.451   13.84    132.08    160.80     21.68     21.00      S
-  27  58.93319      8.90  1.419   13.62    134.23    162.90     20.82     20.16      S
-  28  58.69340      8.90  1.468   12.68    134.06    162.64     20.05     19.41      S
-  29  63.54600      8.96  1.403   12.86    137.30    165.87     19.42     18.79      S
-  30  65.38000      7.13  1.411   12.43    138.49    166.99     18.93     18.33      S
-  31  69.72300      5.90  1.379   12.47    141.22    169.69     18.57     17.98      S
-  32  72.64000      5.32  1.370   12.25    143.00    171.42     18.16     17.58      S
-  33  74.92159      5.73  1.370   11.94    144.36    172.73     17.65     17.09      S
-  34  78.97100      4.50  1.343   11.91    146.71    175.04     17.34     16.79      S
-  35  79.90400      0.01  1.388   11.42    147.24    175.51     19.16     18.60      D
-  35  79.90400      3.10  1.380   11.42    147.24    175.51     17.28     16.75      L
-  36  83.79800      0.00  1.357   11.37    149.42    177.65     18.61     18.06      G
-  36  83.79800      2.42  1.357   11.37    149.42    177.65     17.03     16.51      L
-  37  85.46780      1.53  1.356   11.03    150.34    178.51     16.61     16.10      S
-  38  87.62000      2.54  1.353   10.76    151.50    179.62     15.97     15.47      S
-  39  88.90584      4.47  1.359   10.41    152.18    180.26     15.30     14.81      S
-  40  91.22400      6.51  1.349   10.20    153.41    181.44     14.74     14.27      S
-  41  92.90637      8.57  1.343    9.92    154.28    182.26     14.23     13.77      S
-  42  95.95000     10.22  1.329    9.80    155.84    183.78     13.85     13.39      S
-  43  97.90722     11.50  1.325    9.58    156.83    184.72     13.46     13.01      S
-  44 101.07000     12.41  1.307    9.48    158.40    186.25     13.12     12.68      S
-  45 102.90550     12.41  1.310    9.27    159.30    187.11     12.84     12.41      S
-  46 106.42000     12.02  1.289    9.20    161.00    188.76     12.57     12.15      S
-  47 107.86820     10.50  1.299    8.97    161.68    189.41     12.36     11.94      S
-  48 112.41400      8.65  1.277    9.00    163.81    191.49     12.21     11.80      S
-  49 114.81800      7.31  1.278    8.85    164.91    192.55     12.06     11.65      S
-  50 118.71000      7.31  1.263    8.82    166.67    194.27     11.86     11.46      S
-  51 121.76000      6.69  1.259    8.73    168.02    195.58     11.70     11.31      S
-  52 127.60000      6.24  1.227    8.83    170.56    198.08     11.54     11.16      S
-  53 126.90447      4.93  1.263    8.48    170.25    197.74     11.42     11.04      S
-  54 131.29300      0.01  1.255    8.48    172.12    199.56     12.30     11.91      G
-  54 131.29300      2.95  1.255    8.48    172.12    199.56     11.66     11.28      L
-  55 132.90545      1.87  1.254    8.31    172.79    200.20     11.34     10.97      S
-  56 137.32700      3.50  1.231    8.31    174.62    201.98     10.98     10.62      S
-  57 138.90547      6.14  1.231    8.14    175.26    202.59     10.63     10.27      S
-  58 140.11600      6.77  1.234    7.96    175.75    203.04     10.40     10.04      S
-  59 140.90766      6.77  1.243    7.76    176.07    203.32     10.21      9.86      S
-  60 144.24200      7.01  1.231    7.71    177.40    204.62     10.02      9.68      S
-  61 144.91275      7.26  1.240    7.51    177.66    204.85      9.83      9.49      S
-  62 150.36000      7.52  1.210    7.57    179.79    206.95      9.66      9.32      S
-  63 151.96400      5.24  1.219    7.44    180.41    207.53      9.59      9.26      S
-  64 157.25000      7.90  1.188    7.48    182.42    209.50      9.34      9.01      S
-  65 158.92535      8.23  1.188    7.36    183.05    210.10      9.17      8.85      S
-  66 162.50000      8.55  1.175    7.32    184.38    211.39      9.02      8.70      S
-  67 164.93033      8.80  1.170    7.23    185.27    212.25      8.86      8.55      S
-  68 167.25900      9.03  1.168    7.14    186.12    213.07      8.73      8.42      S
-  69 168.93422      9.32  1.170    7.03    186.72    213.64      8.59      8.28      S
-  70 173.05400      6.90  1.159    7.02    188.19    215.08      8.52      8.22      S
-  71 174.96680      9.84  1.160    6.92    188.87    215.72      8.36      8.06      S
-  72 178.49000     13.31  1.152    6.89    190.10    216.93      8.22      7.93      S
-  73 180.94788     16.65  1.149    6.82    190.96    217.75      8.09      7.79      S
-  74 183.84000     19.30  1.145    6.76    191.95    218.71      7.97      7.68      S
-  75 186.20700     21.02  1.143    6.69    192.75    219.49      7.85      7.57      S
-  76 190.23000     22.57  1.132    6.68    194.11    220.81      7.75      7.47      S
-  77 192.21700     22.42  1.134    6.59    194.77    221.45      7.67      7.39      S
-  78 195.08400     21.45  1.128    6.54    195.72    222.37      7.59      7.31      S
-  79 196.96657     19.32  1.134    6.46    196.34    222.96      7.53      7.26      S
-  80 200.59000     13.55  1.130    6.44    197.52    224.11      7.53      7.26      L
-  81 204.38330     11.72  1.125    6.42    198.75    225.30      7.50      7.23      S
-  82 207.20000     11.35  1.122    6.37    199.64    226.17      7.43      7.16      S
-  83 208.98040      9.75  1.128    6.29    200.21    226.71      7.39      7.13      S
-  84 208.98243      9.32  1.141    6.16    200.21    226.69      7.33      7.06      S
-  85 209.98715      5.00  1.160    6.07    200.52    226.98      7.60      7.33      S
-  86 222.01758      0.01  1.116    6.28    204.25    230.66      7.71      7.43      G
-  87 223.01974      1.87  1.118    6.19    204.56    230.94      7.59      7.32      S
-  88 226.02541      5.00  1.111    6.15    205.47    231.83      7.19      6.94      S
-  89 227.02775     10.07  1.112    6.06    205.77    232.11      7.00      6.75      S
-  90 232.03770     11.72  1.098    6.07    207.26    233.57      6.91      6.66      S
-  91 231.03588     15.37  1.107    5.93    206.96    233.25      6.77      6.52      S
-  92 238.02891     18.95  1.081    6.00    209.02    235.28      6.65      6.41      S
-  93 237.04817     20.25  1.095    5.87    208.73    234.97      6.57      6.33      S
-  94 244.06420     19.84  1.071    5.93    210.77    236.98      6.49      6.25      S
-  95 243.06138     13.67  1.089    5.80    210.48    236.67      6.50      6.25      S
-  96 247.07035     13.51  1.082    5.79    211.63    237.79      6.44      6.20      S
-  97 247.07031     14.00  1.106    5.69    211.63    237.77      6.59      6.35      S
-  98 251.07959     14.00  1.097    5.68    212.77    238.88      6.53      6.29      S
-  99 252.08300     14.00  1.102    5.61    213.05    239.15      6.47      6.24      S
- 100 257.09510     14.00  1.090    5.62    214.45    240.52      6.42      6.19      S
- 101 258.09843     14.00  1.095    5.55    214.73    240.78      6.37      6.13      S
- 102 259.10100     14.00  1.099    5.48    215.00    241.04      6.31      6.08      S
- 103 262.11000     14.00  1.096    5.45    215.83    241.84      6.26      6.03      S
- 104 267.12200     14.00  1.084    5.47    217.20    243.19      6.21      5.98      S
- 105 268.12500     14.00  1.088    5.40    217.48    243.44      6.16      5.93      S
- 106 271.13300     14.00  1.085    5.38    218.29    244.23      6.11      5.89      S
- 107 270.13400     14.00  1.097    5.27    218.02    243.95      6.06      5.84      S
- 108 269.13410     14.00  1.110    5.17    217.75    243.66      6.01      5.79      S
- 109 276.15100     14.00  1.090    5.23    219.63    245.51      5.97      5.75      S
- 110 281.16200     14.00  1.079    5.24    220.96    246.82      5.92      5.71      S
- 111 280.16400     14.00  1.091    5.14    220.69    246.54      5.88      5.66      S
- 112 285.00000     14.00  1.080    5.16    221.96    247.78      5.83      5.61      S
- 113 284.17800     14.00  1.091    5.07    221.75    247.55      5.79      5.57      S
- 114 289.18700     14.00  1.080    5.08    223.05    248.83      5.75      5.53      S
- 115 288.19200     14.00  1.092    4.99    222.79    248.56      5.71      5.49      S
- 116 293.20000     14.00  1.081    5.00    224.08    249.83      5.67      5.45      S
- 117 294.00000     14.00  1.086    4.95    224.29    250.01      5.62      5.41      S
- 118 294.21500      0.01  1.092    4.88    224.34    250.05      5.67      5.45      G
diff --git a/Processes/HadronicElasticModel/CMakeLists.txt b/Processes/HadronicElasticModel/CMakeLists.txt
deleted file mode 100644
index 55d774ec4..000000000
--- a/Processes/HadronicElasticModel/CMakeLists.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-set (
-  MODEL_SOURCES
-  HadronicElasticModel.cc
-  )
-
-set (
-  MODEL_HEADERS
-  HadronicElasticModel.h
-  )
-
-set (
-  MODEL_NAMESPACE
-  corsika/process/hadronic_elastic_model
-  )
-
-add_library (ProcessHadronicElasticModel STATIC ${MODEL_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (ProcessHadronicElasticModel ${MODEL_NAMESPACE} ${MODEL_HEADERS})
-
-set_target_properties (
-  ProcessHadronicElasticModel
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-#  PUBLIC_HEADER "${MODEL_HEADERS}"
-  )
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  ProcessHadronicElasticModel
-  CORSIKAunits
-  CORSIKAgeometry
-  CORSIKAsetup
-  CORSIKAutilities
-  )
-
-target_include_directories (
-  ProcessHadronicElasticModel 
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  TARGETS ProcessHadronicElasticModel
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-#  PUBLIC_HEADER DESTINATION include/${MODEL_NAMESPACE}
-  )
-
-
-# --------------------
-# code unit testing
-# CORSIKA_ADD_TEST (testProcessHadronicElasticModel)
-# target_link_libraries (
-  # testProcessHadronicElasticModel
-  # ProcessHadronicElasticModel
-  # CORSIKAsetup
-  # CORSIKAgeometry
-  # CORSIKAunits
-  # CORSIKAthirdparty # for catch2
-  # )
diff --git a/Processes/HadronicElasticModel/HadronicElasticModel.cc b/Processes/HadronicElasticModel/HadronicElasticModel.cc
deleted file mode 100644
index cdc01d9a9..000000000
--- a/Processes/HadronicElasticModel/HadronicElasticModel.cc
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/geometry/FourVector.h>
-#include <corsika/process/hadronic_elastic_model/HadronicElasticModel.h>
-#include <corsika/random/ExponentialDistribution.h>
-#include <corsika/utl/COMBoost.h>
-
-#include <corsika/setup/SetupStack.h>
-
-#include <iomanip>
-#include <iostream>
-
-using SetupParticle = corsika::setup::Stack::ParticleType;
-using SetupView = corsika::setup::StackView;
-
-using namespace corsika::process::HadronicElasticModel;
-using namespace corsika;
-
-HadronicElasticInteraction::HadronicElasticInteraction(units::si::CrossSectionType x,
-                                                       units::si::CrossSectionType y)
-    : fX(x)
-    , fY(y) {}
-
-template <>
-units::si::GrammageType HadronicElasticInteraction::GetInteractionLength(
-    SetupParticle const& p) {
-  using namespace units::si;
-  if (p.GetPID() == particles::Code::Proton) {
-    auto const* currentNode = p.GetNode();
-    auto const& mediumComposition =
-        currentNode->GetModelProperties().GetNuclearComposition();
-
-    auto const& components = mediumComposition.GetComponents();
-    auto const& fractions = mediumComposition.GetFractions();
-
-    auto const projectileMomentum = p.GetMomentum();
-    auto const projectileMomentumSquaredNorm = projectileMomentum.squaredNorm();
-    auto const projectileEnergy = p.GetEnergy();
-
-    auto const avgCrossSection = [&]() {
-      CrossSectionType avgCrossSection = 0_b;
-
-      for (size_t i = 0; i < fractions.size(); ++i) {
-        auto const targetMass = particles::GetMass(components[i]);
-        auto const s = units::static_pow<2>(projectileEnergy + targetMass) -
-                       projectileMomentumSquaredNorm;
-        avgCrossSection += CrossSection(s) * fractions[i];
-      }
-
-      std::cout << "avgCrossSection: " << avgCrossSection / 1_mb << " mb" << std::endl;
-
-      return avgCrossSection;
-    }();
-
-    auto const avgTargetMassNumber = mediumComposition.GetAverageMassNumber();
-
-    GrammageType const interactionLength =
-        avgTargetMassNumber * units::constants::u / avgCrossSection;
-
-    return interactionLength;
-  } else {
-    return std::numeric_limits<double>::infinity() * 1_g / (1_cm * 1_cm);
-  }
-}
-
-template <>
-process::EProcessReturn HadronicElasticInteraction::DoInteraction(SetupView& view) {
-  using namespace units::si;
-  using namespace units::constants;
-
-  auto p = view.GetProjectile();
-  if (p.GetPID() != particles::Code::Proton) { return process::EProcessReturn::eOk; }
-
-  const auto* currentNode = p.GetNode();
-  const auto& composition = currentNode->GetModelProperties().GetNuclearComposition();
-  const auto& components = composition.GetComponents();
-
-  std::vector<units::si::CrossSectionType> cross_section_of_components(
-      composition.GetComponents().size());
-
-  auto const projectileMomentum = p.GetMomentum();
-  auto const projectileMomentumSquaredNorm = projectileMomentum.squaredNorm();
-  auto const projectileEnergy = p.GetEnergy();
-
-  for (size_t i = 0; i < components.size(); ++i) {
-    auto const targetMass = particles::GetMass(components[i]);
-    auto const s = units::static_pow<2>(projectileEnergy + targetMass) -
-                   projectileMomentumSquaredNorm;
-    cross_section_of_components[i] = CrossSection(s);
-  }
-
-  const auto targetCode = composition.SampleTarget(cross_section_of_components, fRNG);
-
-  auto const targetMass = particles::GetMass(targetCode);
-
-  std::uniform_real_distribution phiDist(0., 2 * M_PI);
-
-  geometry::FourVector const projectileLab(projectileEnergy, projectileMomentum);
-  geometry::FourVector const targetLab(
-      targetMass, geometry::Vector<units::si::hepmomentum_d>(
-                      projectileMomentum.GetCoordinateSystem(), {0_eV, 0_eV, 0_eV}));
-  utl::COMBoost const boost(projectileLab, targetMass);
-
-  auto const projectileCoM = boost.toCoM(projectileLab);
-  auto const targetCoM = boost.toCoM(targetLab);
-
-  auto const pProjectileCoMSqNorm = projectileCoM.GetSpaceLikeComponents().squaredNorm();
-  auto const pProjectileCoMNorm = sqrt(pProjectileCoMSqNorm);
-
-  auto const eProjectileCoM = projectileCoM.GetTimeLikeComponent();
-  auto const eTargetCoM = targetCoM.GetTimeLikeComponent();
-
-  auto const sqrtS = eProjectileCoM + eTargetCoM;
-  auto const s = units::static_pow<2>(sqrtS);
-
-  auto const B = this->B(s);
-  std::cout << B << std::endl;
-
-  random::ExponentialDistribution tDist(1 / B);
-  auto const absT = [&]() {
-    decltype(tDist(fRNG)) absT;
-    auto const maxT = 4 * pProjectileCoMSqNorm;
-
-    do {
-      // |t| cannot become arbitrarily large, max. given by GER eq. (4.16), so we just
-      // throw again until we have an acceptable value.
-      absT = tDist(fRNG);
-    } while (absT >= maxT);
-
-    return absT;
-  }();
-
-  std::cout << "HadronicElasticInteraction: s = " << s * invGeVsq
-            << " GeV²; absT = " << absT * invGeVsq
-            << " GeV² (max./GeV² = " << 4 * invGeVsq * projectileMomentumSquaredNorm
-            << ')' << std::endl;
-
-  auto const theta = 2 * asin(sqrt(absT / (4 * pProjectileCoMSqNorm)));
-  auto const phi = phiDist(fRNG);
-
-  auto const projectileScatteredLab =
-      boost.fromCoM(geometry::FourVector<HEPEnergyType, geometry::Vector<hepmomentum_d>>(
-          eProjectileCoM,
-          geometry::Vector<hepmomentum_d>(projectileMomentum.GetCoordinateSystem(),
-                                          {pProjectileCoMNorm * sin(theta) * cos(phi),
-                                           pProjectileCoMNorm * sin(theta) * sin(phi),
-                                           pProjectileCoMNorm * cos(theta)})));
-
-  view.AddSecondary(
-      std::tuple<particles::Code, units::si::HEPEnergyType,
-                 corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{
-          p.GetPID(),
-          sqrt(projectileScatteredLab.GetSpaceLikeComponents().squaredNorm() +
-               units::static_pow<2>(particles::GetMass(p.GetPID()))),
-          projectileScatteredLab.GetSpaceLikeComponents(), p.GetPosition(), p.GetTime()});
-
-  return process::EProcessReturn::eOk;
-}
-
-HadronicElasticInteraction::inveV2 HadronicElasticInteraction::B(eV2 s) const {
-  using namespace units::constants;
-  auto constexpr b_p = 2.3;
-  auto const result =
-      (2 * b_p + 2 * b_p + 4 * pow(s * invGeVsq, gfEpsilon) - 4.2) * invGeVsq;
-  std::cout << "B(" << s << ") = " << result / invGeVsq << " GeV¯²" << std::endl;
-  return result;
-}
-
-units::si::CrossSectionType HadronicElasticInteraction::CrossSection(
-    SquaredHEPEnergyType s) const {
-  using namespace units::si;
-  using namespace units::constants;
-  // assuming every target behaves like a proton, fX and fY are universal
-  CrossSectionType const sigmaTotal =
-      fX * pow(s * invGeVsq, gfEpsilon) + fY * pow(s * invGeVsq, -gfEta);
-
-  // according to Schuler & Sjöstrand, PRD 49, 2257 (1994)
-  // (we ignore rho because rho^2 is just ~2 %)
-  auto const sigmaElastic =
-      units::static_pow<2>(sigmaTotal) /
-      (16 * M_PI * ConvertHEPToSI<CrossSectionType::dimension_type>(B(s)));
-
-  std::cout << "HEM sigmaTot = " << sigmaTotal / 1_mb << " mb" << std::endl;
-  std::cout << "HEM sigmaElastic = " << sigmaElastic / 1_mb << " mb" << std::endl;
-  return sigmaElastic;
-}
diff --git a/Processes/NullModel/CMakeLists.txt b/Processes/NullModel/CMakeLists.txt
deleted file mode 100644
index 07e653a7c..000000000
--- a/Processes/NullModel/CMakeLists.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-set (
-  MODEL_SOURCES
-  NullModel.cc
-  )
-
-set (
-  MODEL_HEADERS
-  NullModel.h
-  )
-
-set (
-  MODEL_NAMESPACE
-  corsika/process/null_model
-  )
-
-add_library (ProcessNullModel STATIC ${MODEL_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (ProcessNullModel ${MODEL_NAMESPACE} ${MODEL_HEADERS})
-
-set_target_properties (
-  ProcessNullModel
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-#  PUBLIC_HEADER "${MODEL_HEADERS}"
-  )
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  ProcessNullModel
-  CORSIKAunits
-  CORSIKAgeometry
-  CORSIKAsetup
-  )
-
-target_include_directories (
-  ProcessNullModel 
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  TARGETS ProcessNullModel
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-#  PUBLIC_HEADER DESTINATION include/${MODEL_NAMESPACE}
-  )
-
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST (testNullModel)
-target_link_libraries (
-  testNullModel
-  ProcessNullModel
-  CORSIKAsetup
-  CORSIKAgeometry
-  CORSIKAunits
-  CORSIKAtesting
-  )
diff --git a/Processes/ObservationPlane/CMakeLists.txt b/Processes/ObservationPlane/CMakeLists.txt
deleted file mode 100644
index 800c5dbd6..000000000
--- a/Processes/ObservationPlane/CMakeLists.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-set (
-  MODEL_HEADERS
-  ObservationPlane.h
-  )
-
-set (
-  MODEL_SOURCES
-  ObservationPlane.cc
-  )
-
-set (
-  MODEL_NAMESPACE
-  corsika/process/observation_plane
-  )
-
-add_library (ProcessObservationPlane STATIC ${MODEL_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (ProcessObservationPlane ${MODEL_NAMESPACE} ${MODEL_HEADERS})
-
-#target dependencies on other libraries(also the header onlys)
-target_link_libraries (
-  ProcessObservationPlane
-  CORSIKAgeometry
-  CORSIKAprocesssequence
-  CORSIKAlogging
-  )
-
-target_include_directories (
-  ProcessObservationPlane 
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (FILES ${MODEL_HEADERS} DESTINATION include/${MODEL_NAMESPACE})
-
-#-- -- -- -- -- -- -- -- -- --
-#code unit testing
-CORSIKA_ADD_TEST(testObservationPlane)
-target_link_libraries (
-  testObservationPlane
-  ProcessObservationPlane
-  CORSIKAstackinterface
-  CORSIKAthirdparty # for catch2
-)
diff --git a/Processes/ParticleCut/CMakeLists.txt b/Processes/ParticleCut/CMakeLists.txt
deleted file mode 100644
index db1ee34c6..000000000
--- a/Processes/ParticleCut/CMakeLists.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-set (
-  MODEL_SOURCES
-  ParticleCut.cc
-)
-
-set (
-  MODEL_HEADERS
-  ParticleCut.h
-  )
-
-set (
-  MODEL_NAMESPACE
-  corsika/process/particle_cut
-  )
-
-add_library (ProcessParticleCut STATIC ${MODEL_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (ProcessParticleCut ${MODEL_NAMESPACE} ${MODEL_HEADERS})
-
-set_target_properties (
-  ProcessParticleCut
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-  )
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  ProcessParticleCut
-  CORSIKAunits
-  CORSIKAparticles
-  CORSIKAprocesssequence
-  CORSIKAsetup
-  CORSIKAlogging
-  )
-
-target_include_directories (
-  ProcessParticleCut 
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  TARGETS ProcessParticleCut
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-  )
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST(testParticleCut SOURCES
-  testParticleCut.cc
-  ${MODEL_HEADERS}
-)
-
-target_link_libraries (
-  testParticleCut
-  ProcessParticleCut
-  CORSIKAunits
-  CORSIKAstackinterface
-  CORSIKAprocesssequence
-  CORSIKAsetup
-  CORSIKAgeometry
-  CORSIKAenvironment
-  CORSIKAtesting
-  )
diff --git a/Processes/QGSJetII/CMakeLists.txt b/Processes/QGSJetII/CMakeLists.txt
deleted file mode 100644
index 77d43794c..000000000
--- a/Processes/QGSJetII/CMakeLists.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-if (NOT DEFINED ENV{CORSIKA_DATA})
-  message (WARNING "WARNING: QGSJetII will not work without corsika-data. Set CORSIKA_DATA path!")
-endif ()
-
-add_custom_command (
-  OUTPUT  ${PROJECT_BINARY_DIR}/Processes/QGSJetII/Generated.inc
-  COMMAND ${PROJECT_SOURCE_DIR}/Processes/QGSJetII/code_generator.py 
-          ${PROJECT_BINARY_DIR}/Framework/Particles/particle_db.pkl
-          ${PROJECT_SOURCE_DIR}/Processes/QGSJetII/qgsjet-II-04-codes.dat
-  DEPENDS code_generator.py
-          qgsjet-II-04-codes.dat
-          CORSIKAparticles
-  WORKING_DIRECTORY
-          ${PROJECT_BINARY_DIR}/Processes/QGSJetII/
-  COMMENT "Generate conversion tables for particle codes QGSJetII <-> CORSIKA"
-  VERBATIM
-  )
-  
-set (
-  MODEL_SOURCES
-  ParticleConversion.cc
-  Interaction.cc
-  qgsjet-II-04.f
-  qgsjet-II-04.cc
-  )
-
-set (
-  MODEL_HEADERS
-  ParticleConversion.h
-  qgsjet-II-04.h
-  QGSJetIIStack.h
-  QGSJetIIFragmentsStack.h
-  Interaction.h
-  ${PROJECT_BINARY_DIR}/Processes/QGSJetII/Generated.inc
-  )
-
-set (
-  MODEL_NAMESPACE
-  corsika/process/qgsjetII
-  )
-
-add_library (ProcessQGSJetII STATIC ${MODEL_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (ProcessQGSJetII ${MODEL_NAMESPACE} ${MODEL_HEADERS})
-
-# ....................................................
-# since Generated.inc is an automatically produced file in the build directory,
-# create a symbolic link into the source tree, so that it can be found and edited more easily
-# this is not needed for the build to succeed! .......
-add_custom_command (
-  OUTPUT  ${CMAKE_CURRENT_SOURCE_DIR}/Generated.inc
-  COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_BINARY_DIR}/include/corsika/process/qgsjetII/Generated.inc ${CMAKE_CURRENT_SOURCE_DIR}/Generated.inc
-  COMMENT "Generate link in source-dir: ${CMAKE_CURRENT_SOURCE_DIR}/Generated.inc"
-  )
-add_custom_target (SourceDirLinkQgsII DEPENDS ${PROJECT_BINARY_DIR}/Processes/QGSJetII/Generated.inc)
-add_dependencies (ProcessQGSJetII SourceDirLinkQgsII)
-# .....................................................
-
-
-
-set_target_properties (
-  ProcessQGSJetII
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-  )
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  ProcessQGSJetII
-  CORSIKAprocesssequence
-  CORSIKAparticles
-  CORSIKAutilities
-  CORSIKAunits
-  CORSIKAthirdparty
-  CORSIKAgeometry
-  CORSIKAenvironment
-  CORSIKAsetup
-  CORSIKArandom
-  CorsikaData
-  )
-
-target_include_directories (
-  ProcessQGSJetII 
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  TARGETS ProcessQGSJetII
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-  )
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST(testQGSJetII
-  SOURCES
-  testQGSJetII.cc
-  ${MODEL_HEADERS}
-)
-
-target_link_libraries (
-  testQGSJetII
-  ProcessQGSJetII
-  CORSIKAtesting
-  stdc++fs)
diff --git a/Processes/Sibyll/CMakeLists.txt b/Processes/Sibyll/CMakeLists.txt
deleted file mode 100644
index 856135c78..000000000
--- a/Processes/Sibyll/CMakeLists.txt
+++ /dev/null
@@ -1,111 +0,0 @@
-add_custom_command (
-  OUTPUT  ${PROJECT_BINARY_DIR}/Processes/Sibyll/Generated.inc
-  COMMAND ${PROJECT_SOURCE_DIR}/Processes/Sibyll/code_generator.py 
-          ${PROJECT_BINARY_DIR}/Framework/Particles/particle_db.pkl
-          ${PROJECT_SOURCE_DIR}/Processes/Sibyll/sibyll_codes.dat
-  DEPENDS code_generator.py
-          sibyll_codes.dat          
-          CORSIKAparticles
-  WORKING_DIRECTORY
-          ${PROJECT_BINARY_DIR}/Processes/Sibyll/
-  COMMENT "Generate conversion tables for particle codes SIBYLL <-> CORSIKA"
-  VERBATIM
-  )
-  
-set (
-  MODEL_SOURCES
-  ParticleConversion.cc
-  Interaction.cc
-  Decay.cc
-  NuclearInteraction.cc
-  sibyll2.3d.f
-  nuclib.f
-  signuc.f
-  sibyll2.3d.cc
-  gasdev.f
-  )
-
-set (
-  MODEL_HEADERS
-  ParticleConversion.h
-  sibyll2.3d.h
-  nuclib.h
-  SibStack.h
-  Decay.h
-  Interaction.h
-  NuclearInteraction.h
-  ${PROJECT_BINARY_DIR}/Processes/Sibyll/Generated.inc
-  )
-
-set (
-  MODEL_NAMESPACE
-  corsika/process/sibyll
-  )
-
-add_library (ProcessSibyll STATIC ${MODEL_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (ProcessSibyll ${MODEL_NAMESPACE} ${MODEL_HEADERS})
-
-# ....................................................
-# since Generated.inc is an automatically produced file in the build directory,
-# create a symbolic link into the source tree, so that it can be found and edited more easily
-# this is not needed for the build to succeed! .......
-add_custom_command (
-  OUTPUT  ${CMAKE_CURRENT_SOURCE_DIR}/Generated.inc
-  COMMAND ${CMAKE_COMMAND} -E create_symlink ${PROJECT_BINARY_DIR}/include/corsika/process/sibyll/Generated.inc ${CMAKE_CURRENT_SOURCE_DIR}/Generated.inc
-  COMMENT "Generate link in source-dir: ${CMAKE_CURRENT_SOURCE_DIR}/Generated.inc"
-  )
-add_custom_target (SourceDirLinkSib DEPENDS ${PROJECT_BINARY_DIR}/Processes/Sibyll/Generated.inc)
-add_dependencies (ProcessSibyll SourceDirLinkSib)
-# .....................................................
-
-
-
-set_target_properties (
-  ProcessSibyll
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-  )
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  ProcessSibyll
-  CORSIKAprocesssequence
-  CORSIKAparticles
-  CORSIKAutilities
-  CORSIKAunits
-  CORSIKAthirdparty
-  CORSIKAgeometry
-  CORSIKAenvironment
-  CORSIKAsetup
-  CORSIKArandom
-  CORSIKAlogging
-  )
-
-target_include_directories (
-  ProcessSibyll 
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  TARGETS ProcessSibyll
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-  )
-
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST(testSibyll
-  SOURCES
-  testSibyll.cc
-  ${MODEL_HEADERS}
-)
-
-target_link_libraries (
-  testSibyll
-  ProcessSibyll
-  CORSIKAtesting
-  )
diff --git a/Processes/Sibyll/Interaction.h b/Processes/Sibyll/Interaction.h
deleted file mode 100644
index 52a43309d..000000000
--- a/Processes/Sibyll/Interaction.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/process/InteractionProcess.h>
-#include <corsika/random/RNGManager.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <tuple>
-
-namespace corsika::process::sibyll {
-
-  class Interaction : public corsika::process::InteractionProcess<Interaction> {
-
-    int count_ = 0;
-    int nucCount_ = 0;
-    static bool initialized_; ///! flag to assure init is done only once
-    bool sibyll_listing_;
-
-  public:
-    Interaction(const bool sibyll_printout_on = false);
-    ~Interaction();
-
-    void SetAllStable();
-
-    static bool WasInitialized() { return initialized_; }
-    bool IsValidCoMEnergy(corsika::units::si::HEPEnergyType ecm) const {
-      return (minEnergyCoM_ <= ecm) && (ecm <= maxEnergyCoM_);
-    }
-    int GetMaxTargetMassNumber() const { return maxTargetMassNumber_; }
-    corsika::units::si::HEPEnergyType GetMinEnergyCoM() const { return minEnergyCoM_; }
-    corsika::units::si::HEPEnergyType GetMaxEnergyCoM() const { return maxEnergyCoM_; }
-    bool IsValidTarget(corsika::particles::Code TargetId) const {
-      return (corsika::particles::GetNucleusA(TargetId) < maxTargetMassNumber_) &&
-             corsika::particles::IsNucleus(TargetId);
-    }
-
-    std::tuple<corsika::units::si::CrossSectionType, corsika::units::si::CrossSectionType>
-    GetCrossSection(const corsika::particles::Code, const corsika::particles::Code,
-                    const corsika::units::si::HEPEnergyType) const;
-
-    template <typename TParticle>
-    corsika::units::si::GrammageType GetInteractionLength(const TParticle&) const;
-
-    /**
-       In this function SIBYLL is called to produce one event. The
-       event is copied (and boosted) into the shower lab frame.
-     */
-
-    template <typename TSecondaryView>
-    corsika::process::EProcessReturn DoInteraction(TSecondaryView&);
-
-  private:
-    corsika::random::RNG& RNG_ =
-        corsika::random::RNGManager::GetInstance().GetRandomStream("sibyll");
-
-    const corsika::units::si::HEPEnergyType minEnergyCoM_ =
-        10. * 1e9 * corsika::units::si::electronvolt;
-    const corsika::units::si::HEPEnergyType maxEnergyCoM_ =
-        1.e6 * 1e9 * corsika::units::si::electronvolt;
-    const int maxTargetMassNumber_ = 18;
-  };
-
-} // namespace corsika::process::sibyll
diff --git a/Processes/StackInspector/CMakeLists.txt b/Processes/StackInspector/CMakeLists.txt
deleted file mode 100644
index 7ada9c0e5..000000000
--- a/Processes/StackInspector/CMakeLists.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-set (
-  MODEL_SOURCES
-  StackInspector.cc
-  )
-
-set (
-  MODEL_HEADERS
-  StackInspector.h
-  )
-
-set (
-  MODEL_NAMESPACE
-  corsika/process/stack_inspector
-  )
-
-add_library (ProcessStackInspector STATIC ${MODEL_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (ProcessStackInspector ${MODEL_NAMESPACE} ${MODEL_HEADERS})
-
-set_target_properties (
-  ProcessStackInspector
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-#  PUBLIC_HEADER "${MODEL_HEADERS}"
-  )
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  ProcessStackInspector
-  CORSIKAcascade
-  CORSIKAunits
-  CORSIKAgeometry
-  CORSIKAsetup
-  CORSIKAlogging
-  )
-
-target_include_directories (
-  ProcessStackInspector 
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  TARGETS ProcessStackInspector
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-#  PUBLIC_HEADER DESTINATION include/${MODEL_NAMESPACE}
-  )
-
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST (testStackInspector)
-target_link_libraries (
-  testStackInspector
-  ProcessStackInspector
-  CORSIKAgeometry
-  CORSIKAunits
-  CORSIKAtesting
-  )
diff --git a/Processes/StackInspector/testStackInspector.cc b/Processes/StackInspector/testStackInspector.cc
deleted file mode 100644
index 3d4cdec2c..000000000
--- a/Processes/StackInspector/testStackInspector.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#include <catch2/catch.hpp>
-
-#include <corsika/process/stack_inspector/StackInspector.h>
-
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
-
-#include <corsika/units/PhysicalUnits.h>
-
-#include <corsika/cascade/testCascade.h>
-
-using namespace corsika::units::si;
-using namespace corsika::process::stack_inspector;
-using namespace corsika;
-using namespace corsika::geometry;
-
-TEST_CASE("StackInspector", "[processes]") {
-
-  auto const& rootCS =
-      geometry::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
-  geometry::Point const origin(rootCS, {0_m, 0_m, 0_m});
-  geometry::Vector<units::si::SpeedType::dimension_type> v(rootCS, 0_m / second,
-                                                           0_m / second, 1_m / second);
-  geometry::Line line(origin, v);
-  geometry::LineTrajectory track(line, 10_s);
-
-  TestCascadeStack stack;
-  stack.Clear();
-  HEPEnergyType E0 = 100_GeV;
-  stack.AddParticle(
-      std::make_tuple(particles::Code::Electron, E0,
-                      corsika::stack::MomentumVector(rootCS, {0_GeV, 0_GeV, -1_GeV}),
-                      Point(rootCS, {0_m, 0_m, 10_km}), 0_ns));
-
-  SECTION("interface") {
-
-    StackInspector<TestCascadeStack> model(1, true, E0);
-    model.DoStack(stack);
-  }
-}
diff --git a/Processes/SwitchProcess/CMakeLists.txt b/Processes/SwitchProcess/CMakeLists.txt
deleted file mode 100644
index 352eac7c8..000000000
--- a/Processes/SwitchProcess/CMakeLists.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-set (
-  MODEL_HEADERS
-  SwitchProcess.h
-  )
-
-set (
-  MODEL_NAMESPACE
-  corsika/process/switch_process
-  )
-
-add_library (ProcessSwitch INTERFACE)
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (ProcessSwitch ${MODEL_NAMESPACE} ${MODEL_HEADERS})
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  ProcessSwitch
-  INTERFACE
-  CORSIKAunits
-  CORSIKAprocesssequence
-  )
-
-target_include_directories (
-  ProcessSwitch 
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (FILES ${MODEL_HEADERS} DESTINATION include/${MODEL_NAMESPACE})
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST(testSwitchProcess)
-target_link_libraries (
-  testSwitchProcess
-  ProcessSwitch
-  CORSIKAstackinterface
-  CORSIKAtesting
-)
-
diff --git a/Processes/TrackWriter/CMakeLists.txt b/Processes/TrackWriter/CMakeLists.txt
deleted file mode 100644
index 4c7a19556..000000000
--- a/Processes/TrackWriter/CMakeLists.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-set (
-  MODEL_SOURCES
-  TrackWriter.cc
-  )
-
-set (
-  MODEL_HEADERS
-  TrackWriter.h
-  )
-
-set (
-  MODEL_NAMESPACE
-  corsika/process/track_writer
-  )
-
-add_library (ProcessTrackWriter STATIC ${MODEL_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (ProcessTrackWriter ${MODEL_NAMESPACE} ${MODEL_HEADERS})
-
-set_target_properties (
-  ProcessTrackWriter
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-#  PUBLIC_HEADER "${MODEL_HEADERS}"
-  )
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  ProcessTrackWriter
-  CORSIKAunits
-  CORSIKAparticles
-  CORSIKAgeometry
-  CORSIKAsetup
-  )
-
-target_include_directories (
-  ProcessTrackWriter 
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  TARGETS ProcessTrackWriter
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-#  PUBLIC_HEADER DESTINATION include/${MODEL_NAMESPACE}
-  )
-
-
-# --------------------
-# code unit testing
-# CORSIKA_ADD_TEST(testNullModel)
-#target_link_libraries (
-#  testNullModel  ProcessNullModel
-#  CORSIKAsetup
-#  CORSIKAgeometry
-#  CORSIKAunits
-#  CORSIKAthirdparty # for catch2
-#  )
-
diff --git a/Processes/TrackingLine/CMakeLists.txt b/Processes/TrackingLine/CMakeLists.txt
deleted file mode 100644
index 75dcaec7e..000000000
--- a/Processes/TrackingLine/CMakeLists.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-set (
-  MODEL_HEADERS
-  Tracking.h
-  )
-
-set (
-  MODEL_NAMESPACE
-  corsika/process/tracking_line
-  )
-
-add_library (ProcessTrackingLine INTERFACE)
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (ProcessTrackingLine ${MODEL_NAMESPACE} ${MODEL_HEADERS})
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  ProcessTrackingLine
-  INTERFACE
-  ProcessTrackingIntersects
-  CORSIKAsetup
-  CORSIKAutilities
-  CORSIKAenvironment
-  CORSIKAunits
-  CORSIKAenvironment
-  CORSIKAgeometry
-  CORSIKAlogging
-  )
-
-target_include_directories (
-  ProcessTrackingLine 
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (FILES ${MODEL_HEADERS} DESTINATION include/${MODEL_NAMESPACE})
-
-# Note: all Tracking Algorithms are tested in testTracking
diff --git a/Processes/TrackingLine/testTrackingLineStack.h b/Processes/TrackingLine/testTrackingLineStack.h
deleted file mode 100644
index 5c714048a..000000000
--- a/Processes/TrackingLine/testTrackingLineStack.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/environment/Environment.h>
-
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/Vector.h>
-
-#include <corsika/particles/ParticleProperties.h>
-
-#include <corsika/stack/CombinedStack.h>
-#include <corsika/stack/node/GeometryNodeStackExtension.h>
-#include <corsika/stack/nuclear_extension/NuclearStackExtension.h>
-
-#include <corsika/units/PhysicalUnits.h>
-
-using TestEnvironmentType =
-    corsika::environment::Environment<corsika::environment::Empty>;
-
-template <typename T>
-using SetupGeometryDataInterface =
-    corsika::stack::node::GeometryDataInterface<T, TestEnvironmentType>;
-
-// combine particle data stack with geometry information for tracking
-template <typename StackIter>
-using StackWithGeometryInterface = corsika::stack::CombinedParticleInterface<
-    corsika::stack::nuclear_extension::ParticleDataStack::MPIType,
-    SetupGeometryDataInterface, StackIter>;
-
-using TestTrackingLineStack = corsika::stack::CombinedStack<
-    typename corsika::stack::nuclear_extension::ParticleDataStack::StackImpl,
-    corsika::stack::node::GeometryData<TestEnvironmentType>, StackWithGeometryInterface>;
diff --git a/Processes/UrQMD/CMakeLists.txt b/Processes/UrQMD/CMakeLists.txt
deleted file mode 100644
index 0fbdb064c..000000000
--- a/Processes/UrQMD/CMakeLists.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-set (
-  MODEL_SOURCES
-  UrQMD.cc
-  urqmdInterface.F
-  addpart.f
-  angdis.f
-  anndec.f
-  blockres.f
-  boxprg.f
-  cascinit.f
-  coload.f
-  dectim.f
-  delpart.f
-  detbal.f
-  dwidth.f
-  error.f
-  getmass.f
-  getspin.f
-  init.f
-  iso.f
-  ityp2pdg.f
-  jdecay2.f
-  make22.f
-  numrec.f
-  output.f
-  paulibl.f
-  proppot.f
-  saveinfo.f
-  scatter.f
-  siglookup.f
-  string.f
-  tabinit.f
-  urqmd.f
-  whichres.f
-)
-
-set (
-  MODEL_HEADERS
-  UrQMD.h
-  )
-
-set (
-  MODEL_NAMESPACE
-  corsika/process/urqmd
-  )
-
-add_library (ProcessUrQMD STATIC ${MODEL_SOURCES})
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (ProcessUrQMD ${MODEL_NAMESPACE} ${MODEL_HEADERS})
-
-set_target_properties (
-  ProcessUrQMD
-  PROPERTIES
-  VERSION ${PROJECT_VERSION}
-  SOVERSION 1
-  )
-
-# target dependencies on other libraries (also the header onlys)
-target_link_libraries (
-  ProcessUrQMD
-  CORSIKAprocesssequence
-  CORSIKAparticles
-  CORSIKAunits
-  CORSIKAgeometry
-  CORSIKArandom
-  CORSIKAsetup
-  CORSIKAthirdparty
-  )
-
-target_include_directories (
-  ProcessUrQMD 
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  TARGETS ProcessUrQMD
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-  )
-
-
-# --------------------
-# code unit testing
-CORSIKA_ADD_TEST(testUrQMD SOURCES testUrQMD.cc ${MODEL_HEADERS})
-target_link_libraries (
-  testUrQMD
-  ProcessUrQMD
-  CORSIKAtesting
-  )
-
-add_executable(urqmd_xs urqmd_xs.cc)
-target_link_libraries(urqmd_xs
-	ProcessUrQMD
-	CORSIKAparticles
-)
diff --git a/Setup/CMakeLists.txt b/Setup/CMakeLists.txt
deleted file mode 100644
index 94b1fc731..000000000
--- a/Setup/CMakeLists.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-set (
-  SETUP_HEADERS
-  SetupStack.h
-  SetupEnvironment.h
-  SetupTrajectory.h
-  )
-
-set (
-  SETUP_NAMESPACE
-  corsika/setup
-  )
-
-add_library (CORSIKAsetup INTERFACE)
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (CORSIKAsetup ${SETUP_NAMESPACE} ${SETUP_HEADERS})
-
-target_link_libraries (
-  CORSIKAsetup
-  INTERFACE
-  CORSIKAgeometry
-  NuclearStackExtension
-  GeometryNodeStackExtension
-  CORSIKAhistory
-  )
-
-if (WITH_HISTORY)
-  target_compile_definitions (CORSIKAsetup INTERFACE "WITH_HISTORY")
-endif (WITH_HISTORY)
-
-target_include_directories (
-  CORSIKAsetup
-  INTERFACE 
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include/include>
-  )
-
-install (
-  FILES ${SETUP_HEADERS} 
-  DESTINATION include/${SETUP_NAMESPACE}
-  )
diff --git a/Setup/SetupEnvironment.h b/Setup/SetupEnvironment.h
deleted file mode 100644
index 87f0c8e30..000000000
--- a/Setup/SetupEnvironment.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/IMagneticFieldModel.h>
-#include <corsika/environment/IMediumModel.h>
-#include <corsika/environment/IMediumPropertyModel.h>
-#include <corsika/environment/IRefractiveIndexModel.h>
-#include <corsika/environment/IMagneticFieldModel.h>
-
-namespace corsika::setup {
-
-  /**
-     Definition of the default environemnt model interface. Each model
-     interface provides properties of the environment in a position
-     bdependent way.
-   */
-
-  using EnvironmentInterface = environment::IMediumPropertyModel<
-      environment::IMagneticFieldModel<environment::IMediumModel>>;
-  using Environment = environment::Environment<EnvironmentInterface>;
-
-} // end namespace corsika::setup
-
-#include <corsika/environment/HomogeneousMedium.h>
-#include <corsika/environment/InhomogeneousMedium.h>
-#include <corsika/environment/MediumPropertyModel.h>
-#include <corsika/environment/UniformMagneticField.h>
-
-/**
- * standard environment for unit testing. This can be moved to
- * "test" directory, when available.
- */
-namespace corsika::setup::testing {
-
-  inline auto setupEnvironment(particles::Code vTargetCode,
-                               const corsika::units::si::MagneticFluxType BfieldZ =
-                                   corsika::units::si::MagneticFluxType::zero()) {
-
-    using namespace corsika::units::si;
-    using namespace corsika;
-
-    auto env = std::make_unique<setup::Environment>();
-    auto& universe = *(env->GetUniverse());
-    const geometry::CoordinateSystem& cs = env->GetCoordinateSystem();
-
-    /**
-     * our world is a sphere at 0,0,0 with R=infty
-     */
-    auto world = setup::Environment::CreateNode<geometry::Sphere>(
-        geometry::Point{cs, 0_m, 0_m, 0_m}, 100_km);
-
-    /**
-     * construct suited environment medium model:
-     */
-    using MyHomogeneousModel =
-        environment::MediumPropertyModel<environment::UniformMagneticField<
-            environment::HomogeneousMedium<setup::EnvironmentInterface>>>;
-
-    world->SetModelProperties<MyHomogeneousModel>(
-        environment::Medium::AirDry1Atm, geometry::Vector(cs, 0_T, 0_T, BfieldZ),
-        1_kg / (1_m * 1_m * 1_m),
-        environment::NuclearComposition(std::vector<particles::Code>{vTargetCode},
-                                        std::vector<float>{1.}));
-
-    auto* nodePtr = world.get();
-    universe.AddChild(std::move(world));
-
-    return std::make_tuple(std::move(env), &cs, nodePtr);
-  }
-
-} // namespace corsika::setup::testing
diff --git a/Setup/SetupStack.h b/Setup/SetupStack.h
deleted file mode 100644
index f06aaf760..000000000
--- a/Setup/SetupStack.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#pragma once
-
-#include <corsika/stack/CombinedStack.h>
-#include <corsika/stack/node/GeometryNodeStackExtension.h>
-#include <corsika/stack/nuclear_extension/NuclearStackExtension.h>
-#include <corsika/stack/history/HistorySecondaryProducer.hpp>
-#include <corsika/stack/history/HistoryStackExtension.hpp>
-
-#include <corsika/setup/SetupEnvironment.h>
-
-namespace corsika::setup {
-
-  namespace detail {
-
-    // ------------------------------------------
-    // add geometry node tracking data to stack:
-
-    // the GeometryNode stack needs to know the type of geometry-nodes from the
-    // environment:
-    template <typename TStackIter>
-    using SetupGeometryDataInterface = typename stack::node::MakeGeometryDataInterface<
-        TStackIter, corsika::setup::Environment>::type;
-
-    // combine particle data stack with geometry information for tracking
-    template <typename TStackIter>
-    using StackWithGeometryInterface = corsika::stack::CombinedParticleInterface<
-        stack::nuclear_extension::ParticleDataStack::MPIType, SetupGeometryDataInterface,
-        TStackIter>;
-
-    using StackWithGeometry = corsika::stack::CombinedStack<
-        typename corsika::stack::nuclear_extension::ParticleDataStack::StackImpl,
-        corsika::stack::node::GeometryData<setup::Environment>,
-        StackWithGeometryInterface>;
-
-    // ------------------------------------------
-    // Add [optional] history data to stack, too:
-
-    // combine dummy stack with geometry information for tracking
-    template <typename TStackIter>
-    using StackWithHistoryInterface = corsika::stack::CombinedParticleInterface<
-        StackWithGeometry::MPIType, history::HistoryEventDataInterface, TStackIter>;
-
-    using StackWithHistory =
-        corsika::stack::CombinedStack<typename StackWithGeometry::StackImpl,
-                                      history::HistoryEventData,
-                                      StackWithHistoryInterface>;
-
-  } // namespace detail
-
-  // ---------------------------------------
-  // this is the FINAL stack we use in C8:
-
-#ifdef WITH_HISTORY
-
-  /*
-   * the version with history
-   */
-  using Stack = detail::StackWithHistory;
-  template <typename T1, template <typename> typename M2>
-  using StackViewProducer = corsika::history::HistorySecondaryProducer<T1, M2>;
-
-  namespace detail {
-    /*
-      See Issue 161
-
-      unfortunately clang does not support this in the same way (yet) as
-      gcc, so we have to distinguish here. If clang cataches up, we
-      could remove the clang branch here and also in
-      corsika::Cascade. The gcc code is much more generic and
-      universal. If we could do the gcc version, we won't had to define
-      StackView globally, we could do it with MakeView whereever it is
-      actually needed. Keep an eye on this!
-    */
-#if defined(__clang__)
-    using TheStackView = corsika::stack::SecondaryView<
-        typename corsika::setup::Stack::StackImpl,
-        // CHECK with CLANG: corsika::setup::Stack::MPIType>;
-        corsika::setup::detail::StackWithHistoryInterface, StackViewProducer>;
-#elif defined(__GNUC__) || defined(__GNUG__)
-    using TheStackView =
-        corsika::stack::MakeView<corsika::setup::Stack, StackViewProducer>::type;
-#endif
-  } // namespace detail
-
-#else // WITH_HISTORY
-
-  /*
-   * the version without history
-   */
-  using Stack = detail::StackWithGeometry;
-  template <typename T1, template <typename> typename M2>
-  using StackViewProducer = corsika::stack::DefaultSecondaryProducer<T1, M2>;
-
-  namespace detail {
-    /*
-      See Issue 161
-
-      unfortunately clang does not support this in the same way (yet) as
-      gcc, so we have to distinguish here. If clang cataches up, we
-      could remove the clang branch here and also in
-      corsika::Cascade. The gcc code is much more generic and
-      universal. If we could do the gcc version, we won't had to define
-      StackView globally, we could do it with MakeView whereever it is
-      actually needed. Keep an eye on this!
-    */
-#if defined(__clang__)
-    using TheStackView =
-        corsika::stack::SecondaryView<typename corsika::setup::Stack::StackImpl,
-                                      // CHECK with CLANG:
-                                      // corsika::setup::Stack::MPIType>;
-                                      corsika::setup::detail::StackWithGeometryInterface>;
-#elif defined(__GNUC__) || defined(__GNUG__)
-    using TheStackView = corsika::stack::MakeView<corsika::setup::Stack>::type;
-#endif
-  } // namespace detail
-
-#endif
-
-  // ---------------------------------------
-  // this is the FINAL stackitertor (particle type) we use in C8:
-
-  using StackView = detail::TheStackView;
-
-} // namespace corsika::setup
-
-/**
- * standard stack setup for unit tests. This can be moved to "test"
- * directory, when available.
- */
-
-namespace corsika::setup::testing {
-
-  inline auto setupStack(particles::Code vProjectileType, int vA, int vZ,
-                         units::si::HEPEnergyType vMomentum,
-                         const setup::Environment::BaseNodeType* vNodePtr,
-                         geometry::CoordinateSystem const& cs) {
-
-    using namespace corsika;
-    using namespace corsika::units::si;
-
-    auto stack = std::make_unique<setup::Stack>();
-
-    geometry::Point const origin(cs, {0_m, 0_m, 0_m});
-    corsika::stack::MomentumVector const pLab(cs, {vMomentum, 0_GeV, 0_GeV});
-
-    if (vProjectileType == particles::Code::Nucleus) {
-      auto constexpr mN = corsika::units::constants::nucleonMass;
-      HEPEnergyType const E0 = sqrt(units::static_pow<2>(mN * vA) + pLab.squaredNorm());
-      auto particle = stack->AddParticle(
-          std::make_tuple(particles::Code::Nucleus, E0, pLab, origin, 0_ns, vA, vZ));
-      particle.SetNode(vNodePtr);
-      return std::make_tuple(std::move(stack),
-                             std::make_unique<setup::StackView>(particle));
-    } else { // not a nucleus
-      HEPEnergyType const E0 = sqrt(
-          units::static_pow<2>(particles::GetMass(vProjectileType)) + pLab.squaredNorm());
-      auto particle =
-          stack->AddParticle(std::make_tuple(vProjectileType, E0, pLab, origin, 0_ns));
-      particle.SetNode(vNodePtr);
-      return std::make_tuple(std::move(stack),
-                             std::make_unique<setup::StackView>(particle));
-    }
-  }
-
-} // namespace corsika::setup::testing
diff --git a/Stack/CMakeLists.txt b/Stack/CMakeLists.txt
deleted file mode 100644
index ae5ee2aca..000000000
--- a/Stack/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-add_subdirectory (DummyStack)
-add_subdirectory (SuperStupidStack)
-add_subdirectory (NuclearStackExtension)
-add_subdirectory (GeometryNodeStackExtension)
-add_subdirectory (History)
diff --git a/Stack/DummyStack/CMakeLists.txt b/Stack/DummyStack/CMakeLists.txt
deleted file mode 100644
index b7e09a9e4..000000000
--- a/Stack/DummyStack/CMakeLists.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-set (DummyStack_HEADERS DummyStack.h)
-set (DummyStack_NAMESPACE corsika/stack/dummy)
-
-add_library (DummyStack INTERFACE)
-
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (DummyStack ${DummyStack_NAMESPACE} ${DummyStack_HEADERS})
-
-target_link_libraries (
-  DummyStack
-  INTERFACE
-  CORSIKAstackinterface
-  CORSIKAunits
-  CORSIKAparticles
-  )
-
-target_include_directories (
-  DummyStack
-  INTERFACE
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include>
-  )
-
-install (
-  FILES
-  ${DummyStack_HEADERS}
-  DESTINATION
-  include/${DummyStack_NAMESPACE}
-  )
-
-# ----------------
-# code unit testing
- CORSIKA_ADD_TEST(testDummyStack)
- target_link_libraries (
-   testDummyStack
-   DummyStack
-   CORSIKAtesting
-   )
diff --git a/Stack/NuclearStackExtension/CMakeLists.txt b/Stack/NuclearStackExtension/CMakeLists.txt
deleted file mode 100644
index 3e3c5e735..000000000
--- a/Stack/NuclearStackExtension/CMakeLists.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-set (NuclearStackExtension_HEADERS NuclearStackExtension.h)
-set (NuclearStackExtension_NAMESPACE corsika/stack/nuclear_extension)
-
-add_library (NuclearStackExtension INTERFACE)
-
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (NuclearStackExtension ${NuclearStackExtension_NAMESPACE} ${NuclearStackExtension_HEADERS})
-
-target_link_libraries (
-  NuclearStackExtension
-  INTERFACE
-  CORSIKAstackinterface
-  CORSIKAunits
-  CORSIKAparticles
-  CORSIKAgeometry
-  SuperStupidStack
-  )
-
-target_include_directories (
-  NuclearStackExtension
-  INTERFACE
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include>
-  )
-
-install (
-  FILES
-  ${NuclearStackExtension_HEADERS}
-  DESTINATION
-  include/${NuclearStackExtension_NAMESPACE}
-  )
-
-# ----------------
-# code unit testing
-CORSIKA_ADD_TEST(testNuclearStackExtension)
-target_link_libraries (
-  testNuclearStackExtension
-  NuclearStackExtension
-  CORSIKAparticles
-  CORSIKAgeometry
-  CORSIKAunits
-  CORSIKAtesting
-  )
diff --git a/Stack/NuclearStackExtension/testNuclearStackExtension.cc b/Stack/NuclearStackExtension/testNuclearStackExtension.cc
deleted file mode 100644
index 72017c91a..000000000
--- a/Stack/NuclearStackExtension/testNuclearStackExtension.cc
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/stack/nuclear_extension/NuclearStackExtension.h>
-#include <corsika/units/PhysicalUnits.h>
-
-using namespace corsika;
-using namespace corsika::stack::nuclear_extension;
-using namespace corsika::geometry;
-using namespace corsika::units::si;
-
-#include <catch2/catch.hpp>
-
-#include <iostream>
-using namespace std;
-
-TEST_CASE("NuclearStackExtension", "[stack]") {
-
-  geometry::CoordinateSystem& dummyCS =
-      geometry::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
-
-  SECTION("write non nucleus") {
-    NuclearStackExtension<corsika::stack::super_stupid::SuperStupidStack,
-                          ExtendedParticleInterfaceType>
-        s;
-    s.AddParticle(
-        std::make_tuple(particles::Code::Electron, 1.5_GeV,
-                        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-                        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s));
-    CHECK(s.getEntries() == 1);
-  }
-
-  SECTION("write nucleus") {
-    NuclearStackExtension<corsika::stack::super_stupid::SuperStupidStack,
-                          ExtendedParticleInterfaceType>
-        s;
-    s.AddParticle(std::make_tuple(
-        particles::Code::Nucleus, 1.5_GeV,
-        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 10, 10));
-    CHECK(s.getEntries() == 1);
-  }
-
-  SECTION("write invalid nucleus") {
-    ParticleDataStack s;
-    CHECK_THROWS(s.AddParticle(
-        std::make_tuple(particles::Code::Nucleus, 1.5_GeV,
-                        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-                        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 0, 0)));
-  }
-
-  SECTION("read non nucleus") {
-    ParticleDataStack s;
-    s.AddParticle(
-        std::make_tuple(particles::Code::Electron, 1.5_GeV,
-                        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-                        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s));
-    const auto pout = s.GetNextParticle();
-    CHECK(pout.GetPID() == particles::Code::Electron);
-    CHECK(pout.GetEnergy() == 1.5_GeV);
-    CHECK(pout.GetTime() == 100_s);
-  }
-
-  SECTION("read nucleus") {
-    ParticleDataStack s;
-    s.AddParticle(
-        std::make_tuple(particles::Code::Nucleus, 1.5_GeV,
-                        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-                        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 10, 9));
-    const auto pout = s.GetNextParticle();
-    CHECK(pout.GetPID() == particles::Code::Nucleus);
-    CHECK(pout.GetEnergy() == 1.5_GeV);
-    CHECK(pout.GetTime() == 100_s);
-    CHECK(pout.GetNuclearA() == 10);
-    CHECK(pout.GetNuclearZ() == 9);
-  }
-
-  SECTION("read invalid nucleus") {
-    ParticleDataStack s;
-    s.AddParticle(
-        std::make_tuple(particles::Code::Electron, 1.5_GeV,
-                        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-                        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s));
-    const auto pout = s.GetNextParticle();
-    CHECK_THROWS(pout.GetNuclearA());
-    CHECK_THROWS(pout.GetNuclearZ());
-  }
-
-  SECTION("stack fill and cleanup") {
-
-    ParticleDataStack s;
-    // add 99 particles, each 10th particle is a nucleus with A=i and Z=A/2!
-    for (int i = 0; i < 99; ++i) {
-      if ((i + 1) % 10 == 0) {
-        s.AddParticle(std::make_tuple(
-            particles::Code::Nucleus, 1.5_GeV,
-            corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-            Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, i, i / 2));
-      } else {
-        s.AddParticle(std::make_tuple(
-            particles::Code::Electron, 1.5_GeV,
-            corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-            Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s));
-      }
-    }
-
-    CHECK(s.getEntries() == 99);
-    for (int i = 0; i < 99; ++i) s.GetNextParticle().Delete();
-    CHECK(s.getEntries() == 0);
-  }
-
-  SECTION("stack operations") {
-
-    ParticleDataStack s;
-    // add 99 particles, each 10th particle is a nucleus with A=i and Z=A/2!
-    // i=9, 19, 29, etc. are nuclei
-    for (int i = 0; i < 99; ++i) {
-      if ((i + 1) % 10 == 0) {
-        s.AddParticle(std::make_tuple(
-            particles::Code::Nucleus, i * 15_GeV,
-            corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-            Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, i, i / 2));
-      } else {
-        s.AddParticle(std::make_tuple(
-            particles::Code::Electron, i * 1.5_GeV,
-            corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-            Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s));
-      }
-    }
-
-    // copy
-    {
-      s.Copy(s.begin() + 9, s.begin() + 10); // nuclei to non-nuclei
-      const auto& p9 = s.cbegin() + 9;
-      const auto& p10 = s.cbegin() + 10;
-
-      CHECK(p9.GetPID() == particles::Code::Nucleus);
-      CHECK(p9.GetEnergy() == 9 * 15_GeV);
-      CHECK(p9.GetTime() == 100_s);
-      CHECK(p9.GetNuclearA() == 9);
-      CHECK(p9.GetNuclearZ() == 9 / 2);
-
-      CHECK(p10.GetPID() == particles::Code::Nucleus);
-      CHECK(p10.GetEnergy() == 9 * 15_GeV);
-      CHECK(p10.GetTime() == 100_s);
-      CHECK(p10.GetNuclearA() == 9);
-      CHECK(p10.GetNuclearZ() == 9 / 2);
-    }
-
-    // copy
-    {
-      s.Copy(s.begin() + 93, s.begin() + 9); // non-nuclei to nuclei
-      const auto& p93 = s.cbegin() + 93;
-      const auto& p9 = s.cbegin() + 9;
-
-      CHECK(p9.GetPID() == particles::Code::Electron);
-      CHECK(p9.GetEnergy() == 93 * 1.5_GeV);
-      CHECK(p9.GetTime() == 100_s);
-
-      CHECK(p93.GetPID() == particles::Code::Electron);
-      CHECK(p93.GetEnergy() == 93 * 1.5_GeV);
-      CHECK(p93.GetTime() == 100_s);
-    }
-
-    // copy
-    {
-      s.Copy(s.begin() + 89, s.begin() + 79); // nuclei to nuclei
-      const auto& p89 = s.cbegin() + 89;
-      const auto& p79 = s.cbegin() + 79;
-
-      CHECK(p89.GetPID() == particles::Code::Nucleus);
-      CHECK(p89.GetEnergy() == 89 * 15_GeV);
-      CHECK(p89.GetTime() == 100_s);
-
-      CHECK(p79.GetPID() == particles::Code::Nucleus);
-      CHECK(p79.GetEnergy() == 89 * 15_GeV);
-      CHECK(p79.GetTime() == 100_s);
-    }
-
-    // swap
-    {
-      s.Swap(s.begin() + 11, s.begin() + 10);
-      const auto& p11 = s.cbegin() + 11; // now: nucleus
-      const auto& p10 = s.cbegin() + 10; // now: electron
-
-      CHECK(p11.GetPID() == particles::Code::Nucleus);
-      CHECK(p11.GetEnergy() == 9 * 15_GeV);
-      CHECK(p11.GetTime() == 100_s);
-      CHECK(p11.GetNuclearA() == 9);
-      CHECK(p11.GetNuclearZ() == 9 / 2);
-
-      CHECK(p10.GetPID() == particles::Code::Electron);
-      CHECK(p10.GetEnergy() == 11 * 1.5_GeV);
-      CHECK(p10.GetTime() == 100_s);
-    }
-
-    // swap two nuclei
-    {
-      s.Swap(s.begin() + 29, s.begin() + 59);
-      const auto& p29 = s.cbegin() + 29;
-      const auto& p59 = s.cbegin() + 59;
-
-      CHECK(p29.GetPID() == particles::Code::Nucleus);
-      CHECK(p29.GetEnergy() == 59 * 15_GeV);
-      CHECK(p29.GetTime() == 100_s);
-      CHECK(p29.GetNuclearA() == 59);
-      CHECK(p29.GetNuclearZ() == 59 / 2);
-
-      CHECK(p59.GetPID() == particles::Code::Nucleus);
-      CHECK(p59.GetEnergy() == 29 * 15_GeV);
-      CHECK(p59.GetTime() == 100_s);
-      CHECK(p59.GetNuclearA() == 29);
-      CHECK(p59.GetNuclearZ() == 29 / 2);
-    }
-
-    for (int i = 0; i < 99; ++i) s.last().Delete();
-    CHECK(s.getEntries() == 0);
-  }
-
-  SECTION("not allowed") {
-    NuclearStackExtension<corsika::stack::super_stupid::SuperStupidStack,
-                          ExtendedParticleInterfaceType>
-        s;
-
-    // not valid:
-    CHECK_THROWS(s.AddParticle(std::make_tuple(
-        particles::Code::Oxygen, 1.5_GeV,
-        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 16, 8)));
-
-    // valid
-    auto particle = s.AddParticle(
-        std::make_tuple(particles::Code::Nucleus, 1.5_GeV,
-                        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-                        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 10, 9));
-
-    // not valid
-    CHECK_THROWS(particle.AddSecondary(std::make_tuple(
-        particles::Code::Oxygen, 1.5_GeV,
-        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 16, 8)));
-
-    // add a another nucleus, so there are two now
-    s.AddParticle(
-        std::make_tuple(particles::Code::Nucleus, 1.5_GeV,
-                        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-                        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 10, 9));
-
-    // not valid, since end() is not a valid entry
-    CHECK_THROWS(s.Swap(s.begin(), s.end()));
-  }
-}
diff --git a/Stack/SuperStupidStack/CMakeLists.txt b/Stack/SuperStupidStack/CMakeLists.txt
deleted file mode 100644
index 55b88c69c..000000000
--- a/Stack/SuperStupidStack/CMakeLists.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-set (SuperStupidStack_HEADERS SuperStupidStack.h)
-set (SuperStupidStack_NAMESPACE corsika/stack/super_stupid)
-
-add_library (SuperStupidStack INTERFACE)
-
-CORSIKA_COPY_HEADERS_TO_NAMESPACE (SuperStupidStack ${SuperStupidStack_NAMESPACE} ${SuperStupidStack_HEADERS})
-
-target_link_libraries (
-  SuperStupidStack
-  INTERFACE
-  CORSIKAstackinterface
-  CORSIKAunits
-  CORSIKAparticles
-  CORSIKAgeometry
-  CORSIKAlogging
-  )
-
-target_include_directories (
-  SuperStupidStack
-  INTERFACE
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
-  $<INSTALL_INTERFACE:include>
-  )
-
-install (
-  FILES
-  ${SuperStupidStack_HEADERS}
-  DESTINATION
-  include/${SuperStupidStack_NAMESPACE}
-  )
-
-# ----------------
-# code unit testing
-CORSIKA_ADD_TEST(testSuperStupidStack)
-target_link_libraries (
-  testSuperStupidStack
-  SuperStupidStack
-  CORSIKAtesting
-  )
diff --git a/Stack/SuperStupidStack/testSuperStupidStack.cc b/Stack/SuperStupidStack/testSuperStupidStack.cc
deleted file mode 100644
index a9f4fadc9..000000000
--- a/Stack/SuperStupidStack/testSuperStupidStack.cc
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
- *
- * This software is distributed under the terms of the GNU General Public
- * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
- * the license.
- */
-
-#define protected public // to also test the internal state of objects
-
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/stack/super_stupid/SuperStupidStack.h>
-#include <corsika/units/PhysicalUnits.h>
-
-using namespace corsika::geometry;
-using namespace corsika::units::si;
-
-#include <catch2/catch.hpp>
-
-using namespace corsika;
-using namespace corsika::stack::super_stupid;
-
-using namespace std;
-
-TEST_CASE("SuperStupidStack", "[stack]") {
-
-  geometry::CoordinateSystem& dummyCS =
-      geometry::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
-
-  SECTION("read+write") {
-
-    SuperStupidStack s;
-    s.AddParticle(
-        std::make_tuple(particles::Code::Electron, 1.5_GeV,
-                        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-                        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s));
-
-    // read
-    CHECK(s.getEntries() == 1);
-    CHECK(s.getSize() == 1);
-    auto pout = s.GetNextParticle();
-    CHECK(pout.GetPID() == particles::Code::Electron);
-    CHECK(pout.GetEnergy() == 1.5_GeV);
-    CHECK(pout.GetTime() == 100_s);
-  }
-
-  SECTION("write+delete") {
-
-    SuperStupidStack s;
-    for (int i = 0; i < 99; ++i)
-      s.AddParticle(
-          std::make_tuple(particles::Code::Electron, 1.5_GeV,
-                          corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
-                          Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s));
-
-    CHECK(s.getSize() == 99);
-
-    for (int i = 0; i < 99; ++i) s.GetNextParticle().Delete();
-
-    CHECK(s.getEntries() == 0);
-    CHECK(s.getSize() == 1);
-  }
-}
diff --git a/ThirdParty/.gitignore b/ThirdParty/.gitignore
deleted file mode 100644
index 0d7fe2795..000000000
--- a/ThirdParty/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-eigen-eigen-b3f3d4950030/
diff --git a/ThirdParty/CMakeLists.txt b/ThirdParty/CMakeLists.txt
deleted file mode 100644
index b1553b849..000000000
--- a/ThirdParty/CMakeLists.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-add_subdirectory (spdlog) # this is a git submodule 
-
-add_library (CORSIKAthirdparty INTERFACE)
-
-target_include_directories (CORSIKAthirdparty SYSTEM
-  INTERFACE
-  $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/ThirdParty>
-  $<INSTALL_INTERFACE:include/ThirdParty>
-  )
-
-install (DIRECTORY phys DESTINATION include/ThirdParty/)
-install (DIRECTORY catch2 DESTINATION include/ThirdParty/)
-
-include(ExternalProject)
-
-# eventually add AUTO here, too:
-set (ThirdPartyChoiceValues "C8;SYSTEM" CACHE STRING
-    "List of possible values for the ThirdParty package choice")
-mark_as_advanced (ThirdPartyChoiceValues)
-
-
-##############################################################################
-# check for boost: either use C8 or system-level installation
-
-message ("***** Configuring boost version")
-
-set (USE_BOOST_C8 "C8" CACHE STRING
-    "Selection of boost package. Can be \'C8\' or \'SYSTEM\'. Default: \'C8\'.")
-set_property (CACHE USE_BOOST_C8 PROPERTY STRINGS ${ThirdPartyChoiceValues} )
-if (NOT (${USE_BOOST_C8} IN_LIST ThirdPartyChoiceValues))
-  message (SEND_ERROR "Illegal USE_BOOST_C8=\"${USE_BOOST_C8}\" can only be one of: ${ThirdPartyChoiceValues}")
-endif (NOT (${USE_BOOST_C8} IN_LIST ThirdPartyChoiceValues))
-message (STATUS "USE_BOOST_C8='${USE_BOOST_C8}'")
-
-add_library (C8::ext::boost INTERFACE IMPORTED GLOBAL)
-if ("x_${USE_BOOST_C8}" STREQUAL "x_SYSTEM")
-  find_package (Boost REQUIRED COMPONENTS mp11 iterator core format interval optional type_index histogram multi_array)
-
-  message (STATUS "Using system-level boost version ${Boost_VERSION} at ${Boost_INCLUDE_DIR}")
-  set_target_properties (
-    C8::ext::boost PROPERTIES
-    INTERFACE_LINK_LIBRARIES Boost::headers
-    )
-  set (Boost_FOUND 1 PARENT_SCOPE)
-  
-else ()
-
-  set (_C8_Boost_VERSION "107400")
-  message (STATUS "Building ThirdParty/boost using boost-${_C8_Boost_VERSION}.tar.bz2")
-  ExternalProject_Add (boost
-    URL ${CMAKE_CURRENT_SOURCE_DIR}/boost-${_C8_Boost_VERSION}.tar.bz2
-    URL_MD5 d55f45e662d101985353136b321ec624
-    SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/boost/install/boost 
-    INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/boost/install/boost 
-    CONFIGURE_COMMAND ""
-    BUILD_COMMAND ""
-    INSTALL_COMMAND ""
-    BUILD_IN_SOURCE ON
-    EXCLUDE_FROM_ALL FALSE
-    )
-  set (HAVE_Boost 1 CACHE BOOL "presence of boost, via external-project-add in ThirdParty folder")
-  set (Boost_FOUND 1 PARENT_SCOPE)
-  ExternalProject_Get_Property (boost INSTALL_DIR)
-  set (Boost_VERSION ${_C8_Boost_VERSION} CACHE STRING "Version of Boost")
-  set (Boost_PREFIX ${INSTALL_DIR}/..)
-  set (Boost_INCLUDE_DIR  ${Boost_PREFIX})
-  set (Boost_LIBRARY_DIR ${Boost_PREFIX})
-  add_dependencies (C8::ext::boost boost)
-  
-  # create include directory at config time
-  file (MAKE_DIRECTORY ${Boost_INCLUDE_DIR})
-  
-  set (Boost_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/externals/boost)
-  install (DIRECTORY ${Boost_PREFIX}/ DESTINATION ${Boost_INSTALL_DIR})
-  
-  message (STATUS "Use ThirdParty boost include dir ${Boost_INCLUDE_DIR}")
-  set_target_properties (
-    C8::ext::boost PROPERTIES
-    INTERFACE_INCLUDE_DIRECTORIES
-      $<BUILD_INTERFACE:${Boost_INCLUDE_DIR}>
-    )
- 
-endif ()
-
-
-##############################################################################
-# check for Eigen3: either use ThirdParty/eigen3 or system-level installation
-
-message ("***** Configuring eigen3 version")
-
-set (USE_EIGEN3_C8 "C8" CACHE STRING
-    "Selection of eigen3 package. Can be \'C8\' or \'SYSTEM\'. Default: \'C8\'.")
-set_property (CACHE USE_EIGEN3_C8 PROPERTY STRINGS ${ThirdPartyChoiceValues})
-if (NOT (${USE_EIGEN3_C8} IN_LIST ThirdPartyChoiceValues))
-  message (SEND_ERROR "Illegal USE_EIGEN3_C8=\"${USE_EIGEN3_C8}\" can only be one of: ${ThirdPartyChoiceValues}")
-endif (NOT (${USE_EIGEN3_C8} IN_LIST ThirdPartyChoiceValues))
-message (STATUS "USE_EIGEN3_C8='${USE_EIGEN3_C8}'")
-
-add_library (C8::ext::eigen3 INTERFACE IMPORTED GLOBAL)
-if ("x_${USE_EIGEN3_C8}" STREQUAL "x_SYSTEM")
-  
-  if (WITH_EIGEN3)
-    list (APPEND CMAKE_MODULE_PATH "${WITH_EIGEN3}/cmake")
-  endif (WITH_EIGEN3)
-  find_package (Eigen3 REQUIRED NO_MODULE)
-  message (STATUS "Using system-level eigen3 version ${Eigen3_VERSION} at ${Eigen3_INCLUDE_DIR}")
-  set_target_properties (
-    C8::ext::eigen3 PROPERTIES
-    INTERFACE_LINK_LIBRARIES Eigen3::Eigen
-  )
-set (Eigen3_FOUND 1 PARENT_SCOPE)
-
-else ()
-
-  set (_C8_Eigen3_VERSION "eigen-eigen-b3f3d4950030")
-
-  message (STATUS "Building ThirdParty/eigen3 using ${_C8_Eigen3_VERSION}.tar.bz2")
-  ExternalProject_Add (eigen3
-    URL ${CMAKE_CURRENT_SOURCE_DIR}/${_C8_Eigen3_VERSION}.tar.bz2
-    URL_MD5 e83549a79d1b721da0f8899ab34edf95
-    SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/eigen3/install/eigen
-    INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/eigen3/install/eigen
-    CONFIGURE_COMMAND ""
-    BUILD_COMMAND ""
-    INSTALL_COMMAND ""
-    BUILD_IN_SOURCE ON
-    EXCLUDE_FROM_ALL FALSE
-    )
-  set (Eigen3_FOUND 1 PARENT_SCOPE)
-  ExternalProject_Get_Property (eigen3 INSTALL_DIR)
-  set (Eigen3_PREFIX ${INSTALL_DIR}/..)
-  set (Eigen3_INCLUDE_DIR  ${Eigen3_PREFIX}/eigen)
-  add_dependencies (C8::ext::eigen3 eigen3)
-
-  # create include directory at config time
-  file (MAKE_DIRECTORY ${Eigen3_INCLUDE_DIR})
-  
-  set (Eigen3_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/externals/eigen3)
-  install (DIRECTORY ${Eigen3_PREFIX}/ DESTINATION ${Eigen3_INSTALL_DIR})
-  
-  message (STATUS "Use ThirdParty eigen3 include dir ${Eigen3_INCLUDE_DIR}")
-  set_target_properties (
-    C8::ext::eigen3 PROPERTIES
-    INTERFACE_INCLUDE_DIRECTORIES
-      $<BUILD_INTERFACE:${Eigen3_INCLUDE_DIR}>
-    )
- 
-endif ()
-
-
-##############################################################################
-# check for Pythia8: either use C8 or system-level installation
-
-message ("***** Configuring Pythia8 version")
-
-set (USE_PYTHIA8_C8 "C8" CACHE STRING
-    "Selection of pythia8 package. Can be \'C8\' or \'SYSTEM\'. Default: \'C8\'.")
-set_property (CACHE USE_PYTHIA8_C8 PROPERTY STRINGS ${ThirdPartyChoiceValues})
-if (NOT (${USE_PYTHIA8_C8} IN_LIST ThirdPartyChoiceValues))
-  message (SEND_ERROR "Illegal USE_PYTHIA8_C8=\"${USE_PYTHIA8_C8}\" can only be one of: ${ThirdPartyChoiceValues}")
-endif (NOT (${USE_PYTHIA8_C8} IN_LIST ThirdPartyChoiceValues))
-message (STATUS "USE_PYTHIA8_C8='${USE_PYTHIA8_C8}'")
-
-add_library (C8::ext::pythia8 STATIC IMPORTED GLOBAL)
-if ("x_${USE_PYTHIA8_C8}" STREQUAL "x_SYSTEM")
-  
-  find_package (Pythia8 REQUIRED) 
-  message (STATUS "Using system-level Pythia8 version ${Pythia8_VERSION} at ${Pythia8_INCLUDE_DIR}")
-  set_target_properties (
-    C8::ext::pythia8 PROPERTIES
-    IMPORTED_LOCATION ${Pythia8_LIBRARY}
-    IMPORTED_LINK_INTERFACE_LIBRARIES dl
-    INTERFACE_INCLUDE_DIRECTORIES ${Pythia8_INCLUDE_DIR}
-    )
-  set (Pythia8_FOUND 1 PARENT_SCOPE)
-
-else ()
-
-  set (_C8_Pythia8_VERSION "8235")
-  message (STATUS "Building ThirdParty/pythia8 using pythia${_C8_Pythia8_VERSION}-stripped.tar.bz2")
-  message (STATUS "This will take a bit.....")
-  ExternalProject_Add (pythia8
-    URL ${CMAKE_CURRENT_SOURCE_DIR}/pythia${_C8_Pythia8_VERSION}-stripped.tar.bz2
-    URL_MD5 83132880c0594b808bd7fd37fb642606
-    SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/pythia8/source
-    INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/pythia8/install
-    CONFIGURE_COMMAND ./configure --cxx-common=-Wno-deprecated-copy --prefix=${CMAKE_CURRENT_BINARY_DIR}/pythia8/install
-    BUILD_IN_SOURCE ON
-    EXCLUDE_FROM_ALL TRUE
-    )
-  set (Pythia8_FOUND 1 PARENT_SCOPE)
-  ExternalProject_Get_Property (pythia8 INSTALL_DIR)
-  set (Pythia8_VERSION ${_C8_Pythia8_VERSION} CACHE STRING "Version of Pythia8")
-  set (Pythia8_PREFIX ${INSTALL_DIR})
-  set (Pythia8_INCLUDE_DIR  ${Pythia8_PREFIX}/include)
-  set (Pythia8_LIBRARY ${Pythia8_PREFIX}/lib/libpythia8.a)
-  add_dependencies (C8::ext::pythia8 pythia8)
-
-  # create include directory at config time
-  file (MAKE_DIRECTORY ${Pythia8_INCLUDE_DIR})
-
-  set (Pythia8_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/externals/pythia8)
-  install (DIRECTORY ${INSTALL_DIR}/ DESTINATION ${Pythia8_INSTALL_DIR})
-  
-  set_target_properties (
-    C8::ext::pythia8 PROPERTIES
-    IMPORTED_LOCATION ${Pythia8_LIBRARY}
-    IMPORTED_LINK_INTERFACE_LIBRARIES dl
-    INTERFACE_INCLUDE_DIRECTORIES
-      $<BUILD_INTERFACE:${Pythia8_INCLUDE_DIR}>
-    )
-
-endif ()
-
-
-
-##############################################################################
-# check for CxRoot/CONEX: either use ThirdParty/cxroot or system-level installation
-
-message ("***** Configuring CxRoot/CONEX version")
-
-set (USE_CONEX_C8 "C8" CACHE STRING
-    "Selection of conex package. Can be \'C8\' or \'SYSTEM\'. Default: \'C8\'.")
-set_property (CACHE USE_CONEX_C8 PROPERTY STRINGS ${ThirdPartyChoiceValues})
-if (NOT (${USE_CONEX_C8} IN_LIST ThirdPartyChoiceValues))
-  message (SEND_ERROR "Illegal USE_CONEX_C8=\"${USE_CONEX_C8}\" can only be one of: ${ThirdPartyChoiceValues}")
-endif (NOT (${USE_CONEX_C8} IN_LIST ThirdPartyChoiceValues))
-message (STATUS "USE_CONEX_C8='${USE_CONEX_C8}'")
-
-add_library (C8::ext::conex STATIC IMPORTED GLOBAL)
-if ("x_${USE_CONEX_C8}" STREQUAL "x_SYSTEM")
-  
-  find_package (CONEX REQUIRED) 
-  message (STATUS "Using system-level CONEX version at ${CONEX_INCLUDE_DIR}")
-  set (CONEX_FOUND 1 PARENT_SCOPE)
-
-else ()
-  
-  message (STATUS "Building conex obtained via git and compiled")
-  message (STATUS "This will take a bit.....")
-  if (${CMAKE_VERSION} VERSION_LESS "3.16.0")
-    message (WARNING "You need cmake >= 3.16 to support proper external git submodules. Right now, it will be more inefficient than necessary.")
-  else (${CMAKE_VERSION} VERSION_LESS "3.16.0")
-    cmake_policy (SET CMP0097 NEW) # avoid cloning of git submodules
-  endif (${CMAKE_VERSION} VERSION_LESS "3.16.0")
-  ExternalProject_Add (cxroot
-    GIT_REPOSITORY https://gitlab.ikp.kit.edu/AirShowerPhysics/cxroot.git
-    GIT_SUBMODULES ""
-    GIT_TAG origin/master
-    GIT_SHALLOW 5
-    GIT_PROGRESS 1
-    SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/cxroot/source
-    INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/cxroot/source
-    CONFIGURE_COMMAND ""
-    BUILD_COMMAND make CX_NO_ROOT=1 CORSIKA_8=1 CORSIKA_DATA=${CORSIKA_DATA} all
-    INSTALL_COMMAND ""
-    BUILD_IN_SOURCE ON
-    EXCLUDE_FROM_ALL TRUE
-    )
-  set (CONEX_FOUND 1 PARENT_SCOPE)
-  ExternalProject_Get_Property (cxroot INSTALL_DIR)
-  get_filename_component(INSTALL_DIR_ABS ${INSTALL_DIR} ABSOLUTE)
-  set (CONEX_PREFIX ${INSTALL_DIR_ABS})
-  set (CONEX_INCLUDE_DIR  ${CONEX_PREFIX}/src)
-  set (CONEX_INCLUDE_DIR  ${CONEX_PREFIX}/src PARENT_SCOPE)
-  add_dependencies (C8::ext::conex cxroot)
-
-  # create include directory at config time
-  file (MAKE_DIRECTORY ${CONEX_INCLUDE_DIR})
-    
-endif ()
-
-set_target_properties (
-  C8::ext::conex PROPERTIES
-  IMPORTED_LOCATION ${CONEX_PREFIX}/lib/${CMAKE_SYSTEM_NAME}/libCONEXsibyll.a
-  IMPORTED_NO_SONAME 1
-  SKIP_BUILD_RPATH FALSE
-  IMPORTED_LINK_INTERFACE_LIBRARIES bz2
-  INTERFACE_INCLUDE_DIRECTORIES
-  $<BUILD_INTERFACE:${CONEX_INCLUDE_DIR}>    
-  )
-
-
-# libz needed for cnpy, used for SaveHistograms
-find_package (ZLIB QUIET)
-
-if (ZLIB_FOUND)
-  message (STATUS "Found ZLIB. Build cnpy for SaveHistograms")  
-  add_subdirectory (cnpy)
-else (ZLIB_FOUND)
-  message (WARNING "Did not find ZLIB. Cannot build cnpy for SaveHistograms")  
-endif (ZLIB_FOUND)
diff --git a/ThirdParty/ThirdParty.dox b/ThirdParty/ThirdParty.dox
deleted file mode 100644
index a271a23fa..000000000
--- a/ThirdParty/ThirdParty.dox
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
-@page ThirdParty Third party software
-@tableofcontents
-
-In the directory ThirdParty we provide simple dependencies. This
-minimizes the need to install additional software for the user. Note
-the individual copyrights and licences here!
-
-
-@section PhysUnits
-
-The PhysUnits library is an external dependency included here just for
-convenience:
-
-Original source code from:
-https://github.com/martinmoene/PhysUnits-CT-Cpp11#references
-
-Licence: BSL-1.0
-(https://github.com/martinmoene/PhysUnits-CT-Cpp11/blob/master/LICENSE_1_0.txt)
-
-References: https://github.com/martinmoene/PhysUnits-CT-Cpp11#references
-
-
-@section catch2
- 
-The catch2 unit testing library is from:
-https://github.com/catchorg/Catch2
-
-Licence: BSL-1.0
-(https://github.com/martinmoene/PhysUnits-CT-Cpp11/blob/master/LICENSE_1_0.txt)
-
-References: https://github.com/catchorg/Catch2
-
-@section eigen3
- 
-eigen3 ....
-
-@section bitset2
-
-see https://github.com/ClaasBontus/bitset2, this package was obtained
-from a Boost Software License 1.0.
-
-@section Boost
-
-A subset of header-only Boost libraries. Boost is from:
-https://www.boost.org
-
-License: BSL-1.0
-(https://www.boost.org/LICENSE_1_0.txt)
-
-The subset was generated with the bcp tool:
-https://www.boost.org/doc/libs/1_73_0/tools/bcp/doc/html/index.html
-
-Instructions on how to update Boost with this tool:
-
-Download the latest tarball from www.boost.org.
-Unpack source code somewhere, go to into the folder.
-Run these commands:
-
-    ./bootstrap && ./b2 tools/bcp
-    ./dist/bin/bcp histogram multiarray math ./dist
-    mv ./dist/boost <CORSIKA-path>/ThirdParty/boost
-
-@section Pythia8
-
-There is a tar file provided with a default version of Pythia8. Some
-files have been removed from this with respect to the original
-distribution to save space.
-
-*/
diff --git a/ThirdParty/eigen-eigen-b3f3d4950030.tar.bz2 b/ThirdParty/eigen-eigen-b3f3d4950030.tar.bz2
deleted file mode 100644
index f7571b34f31468787f82a953029475b9896796a4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1663467
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
z%0A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%0AnphEm^+Zl&$5=`BxebDz3KXVC5_q!+Fl
zC6ufwJQIYy5~r2UGjC!p7RTJjTO*nn4`d?wYQGq4WVoJec+vUbboPg2=8<#2t?n){
zx!t1!cb;~#D4pvf9g&6D>^dKTd?|ZF9Pp5nB+=`H;_GT4xDNWvXR1;Z7Q8R()k1>C
zZ@(`ccU^%?(X9pgVEFF!+L>wF18COL8Rp8mMn0dqIDUEIUP}127N_F}x9X$HPI!3d
zU6Osh_2nF5bgrlGeUj+oa~2RpL9LOgA83zYkF-%uy&Cx3C=F+iM$OY|JHVvRWLr`;
z?Qrz-+XZLCpu@LIdN}mzy1fLVxsse8EB51*le3q|>8xPB3+~q$Q^^W18R1gtbV~IM
zwBYK|i~P=QQAm%X#~ueigBun(I}he@*)m(Ki06KvM@uw#WRt<r-S2b7U|89>rbp<5
zYqMW;g6p~R;wbcEj@@|hI+<LMROD{s&}CC+oXo;wK3?Iq9z60z9LBzX>4KPQ$nc_N
zea$wDA5RIx-P}J9NKffJ_^ZqY)<sckRrJ^ByHrIM#q{>>?^J|{QjJqiP<$GMJr6sa
zJQR^fOT7u{2K=<0y;Q7eD7+D5)+j7w-xQwck5OogliSQx;=44bxowuD*hX-My`;2R
z#K}myMW9mAbs+}DaX+i}#O;kfl{=3>i?ed_=OAcBT@%qb)#7qi&jl!nsy%tGDqq|8
z|8(H^dU#^Khc-F=G-s!*8OY}9U&dETtq8tIe?;()fT4cwfZWKx3e{`#NX2OH39z93
zUT)L-W|YQ<R4KSTuZ10&DXqh4tVTrvpkde37Et2}qh;gFKEe><23QcBhT#E>N&}G)
zgfzG~=z#vr!GNJLexHfCAW&Jc6+{Q;AYaegCbo~5o&%=u$3qOSI20(}1dM|+@jT6C
z#m3tG59TZk{a>?sJ{;?xMb0nZiAJImaNK8th@h!usXUgosxGLb2T3bKuVjw|*ecex
zj>Ql_ufiE(qs?`aVg~+Kg<#7ZotdLEWhETKI?VAMJ8v0UH#`<(TlVSD$y?_>96@^G
zVUdZguK0}rzt?=r;@;m9A@|$uPz4a8qd+VANAZn1{S=mkKQ4uN79N*q&emc8ca;w7
z@GfFL=#yxL;Z)4T3<8e~R+u!#)cjme(YdWAzp%ky1^eS|<elLj6RCa2NU8)ZhSZ3Y
zKX-orC~uBs%->=1uyrU(N)Y+`Oc!&WKCYlJPmA&Xo?Z{*52^fMrXk8uLWEGdzo7_n
z56D8~2lzsw;R1n@V;V#I-9r;9aRd5?kUWkkn@guym{k-r4M|KAQB2WA6dyct5nVPr
zv~MOHF$4@q`9B8D0g1<+70i*uB!eR$pA-1=9T~mE>gS+8^5cOCOiKa&&b$Mv2)N?*
zeBDOMbwHb#;ga(Kavpj(2-$*T0X!5*ws+293GIlI+gULvOekv*pB?9$*Kn?8Y=bzv
ziw^EW5X>Bapq5f3xTB2n=o@qg6E>tXj0~uz5sWUESzQdYLAlEfoID&=4tODQV7vsw
z0xl_~Hv|J9C?NrEN$O8R+=n<EX18*L7O@&m0OJ=!Ku|*|5lp(IB2ehVf8RIzJ_0O;
zn3&sy777L-LR&~yuIk}P$w#da_-&&E!hTHsWjTl?^B(t{mJE~T4d%hDctM&<Ibk&U
z0_PAM1a#ZOqZlW4Lk%S)NknY8H^6bmNM<EI{nwri-RMp_JUB{P2x$l<ph_Zi4xoye
zqN0i_Ss^G7q=D@A!;3)X5+4!-#8Y0vdEuh*pfQIj9!un>kw{d*win}gTy!(7Tgx<H
z^is;!Rip-~0AM`>yN^81CV-ZfnjfU%pJ9BsnggSt>BnR|JR$-h!a=HNf<d09`PS(U
zCB)_njl^th44roah|(t5HZej~gAu+9lp>`%4Jk>WaS6n`s**Zg0g#eARyfqmKKAEX
zMiblMhl2BBn8ZeKKt?_|=pdOY?Xp;YC0B~8tR(&5A9xZG1Vb<cMhQ#hNjL^RZ%dFm
zZ7X63T2@IxD5J>Sphcn9(?ZIK!$BvA+KGyxVh#piNY3XHBOg<TRkZ;k)G5j!qF@-%
z#-6PNNn=H|Ejhuc)DZ-c6Gst{;|aWNw-Z2MTP$Sh*wLyYCc0-fpDcHObd9(8KyMto
zjcM5;jJl(!xO2@CB_e;iI|vN~FG0DeyGAq;Q6X%{CJeycSpw5TcFDi=$WYUw2Z<zX
zOkqI&UB559oT2$;dz}H~eL8mVXp7!cq9sy?d{KtPpn7CV9Qa;&yhb2hjHbPpP3iRS
z%K_|q=OLryUn7^Hpt*#G@-&fwRAt6tLkt=tEIqV&R4{lkr$(#PCK=vi*njdd6eUm=
zPFW&9+~a$lkXMX~r&A5CtcTss4>E2`t|J8GbdTe|t9W_c4P!%?*koLCDKj~erWL0e
zc|XhF?M<(mQ>3IHz)JlUvG>1GB0f5<s=zSN2ShJ4kl6yXf)L0PAwUpFfP_>jv*iD7
z2m8Gr{0I1Zy#M>Uhth%86;wq`%)mfGKz9(#$3P*SvH5m8oddw1IAAOOgGR^J3hOTr
zbQ)j|vlLS@5K~eeA<3YqDQ1TAE`mMdfZGGb0mcyNIHE!rA&NWdhiw!i5`8vALl7iE
zMN~*cRRvX17R<~zmI$O`h#C*%kTD|A(K8T8OCdBR1VF!+vp0|vq>Dfa#t{mM^2q<(
z5dNF+2T}b-j1YN`@hU(u6Afe|p;`n+?fohZt04EU$GUclHx$Hb29g>Nu<H8ys9*3Y
z#tfE-l1DfzatH7{lx$OV5N63J3>csY{_(~S#zE-(-{TLiHz#zTj3EbiffPnD?UA_w
zV&m?IiM;XH!-mXK#Rh0kpw%OqC*}sfq{;n*GB!a2NBR7(Ld~9{-;M8aWP;HjS3e)p
zxy~2i5PtrWzGW35!TP`P*Ch%5feaUbB3qyF7TN3AVm4MN&Y79UM1NEgP%t0!|36ZI
zqXE%KOqj&bSFme+5WSXoE|0EHvuKChNX#go1)yMwl4*K*|B@p!5d*Lh_yYtZ{G#$u
z9XI+3&#cNecn|svvfrI%*CKP2{KlW`Kgy$hA_i~ykblS_nE#SxH8>Ir!U6bXUtF6Y
zun`Zt;re(eKhO8zSL@^X*@G`zQ+k+0hC4GOSpP&x_@N<uZ4VngW8L2JiQ_?yM_%#R
z8|a7oPb5z&Q;0Z}$qYCQ4}AWY>|leacV8c`;p=ENe<A00($$FWPnqf8eHxQ^BK_{i
zOdmpx=qVBjn>8$rOls#MD_HkS=sBH}%hyIrlk9tWLmHY&iy>3m0MN$P%1!1|I7y%{
z3I(OOG@!DeQ-u<FrK_#a`5bG`3DW<b1JNy9!%eY`pMEFGh_j>zRQM@&)I}By4E4lt
zpRbNq`0aFR3<w~C2q2GO2E_TLSM|WBUpU+(Bk7gPEPY4r`gr$!UsY$bv}1faufees
ze-=R<uHONsKNDOm4KE$H5^x&r@ya)`d<pWA2UPo^oM?mtFl~rpvfu`x9k?`DhOCN_
zG}@Ikh|?-6Ha#V5mUIlu2tufOM>v>b71-!B)dl@MI>KuLUcc(BjmlJOt5pq|e*eEX
z)+2KgRcNxmd6IZ$tn{c$hHIOd8fzPwb<VC*R)5X8CI5T%#oq8=N)g-aV`Cr`L>shV
zV><PX=!tRlm;TV+v+!JK{=KI)ID)d5N;$s{U~G4J@mdIJp|P08VCrhcF;lJN$)1~Z
zg_EaAOeh^t%VlIHTL_jw4uzSNIk$%O`2T%3o^3e8mOXA98%CD~t`Z#79z>EhWKcB$
zC-1e(LdsXmokTc#cKqR7Tag>F$$Z60m`GWJo$8unvJEwoSxA6n5ko3mLlrNEq`E$f
z@Ac4a%quUX@2$G=oEc1mVrE@`--33HUzGofB6oU_jJ&=oCL^?y6%fiO$Kugy&^3$H
zp2qbBAF8rq1d8*c<F>Rhzi}xowFuFD-*bb-&W1D=ujz!f@YuT*z8p)?=7jRjo!YRt
zs9mid%wskTgAWL_G~kuKeJ3e<JIa&z9K#FE3BIeyaaC=&vo<`kk(hs19eNv#OILv#
z>Hk_jDmUra$I~+=l3%cAePY+t{=+h#)YNSR$s}_G#BEgciNq5ICKHgha~+u6@6yZ4
z6Cf24;y^LKq;q*tkcLH1FwPvj1IQ39i$74rWJs~mNe#FOKv(*xY7rqZj?^2sUG-j=
zL53JR10b;)1~A=L?=m79T16tZ1_PZtT-%;qv7OnT{7p6BHlW^lH3r5pl+lq9G4TVk
z5P{#c+o`P>$;!Bkyx)yK>{M)eq0#2qsyjHh#j&pC$_Nor+!~6|`3~Bt(18MjZ1aPS
zsGd+_EW8oFc|Rl~4b3uJA#0p<8<`y87+J7=L9q`kys#SN##+nI@*{e(y$0?s#)B*o
zxx0KJ9X7DG1qDHoBhjEBphE~9I}6lE_sd-Hfo6^o9RlNa_6@^pYG`GPb&cx~A&>No
zA1i!4nl=x;^)_e6KZ_8_vD$ne;a;fTQ)tkG1OuO`9)dAskPsd~<M1$G<FY*rO7YJ`
zNbD*VjBmX4uqJXIcBnz7BY~R}fz_vROj(1I0jr}(4<GapX0erDVDke5QWLP><iQ-N
zoDwk-Dj^R3OWNWlpuxyGOLQ8_`Q2!E6V$=YfiPW0|JpdrZ_f`?MbiR9XnjNXoK9o>
z$u_~yQwOl8#xh_JklTpb*{$aIf`Gx<JcFR|HU?mPW-X}Mn+=i%W3TA3$T=`}3;xr<
zZ)k=r2Fh*+FN+R(%$cOfH?x9yz`TGl-;v9}JXoFnNkY-eU3&V5LCl62S}+f!u9wkq
z`1+@Xbh!g=bVNQq5O^SHGE-+nhS*zKVeL8>vZ>^9L87TCgT#970^Ili;6a~(leosX
zUR}O!J~r$vYY{aWXyE{cvW^oY=oC|R?%N9u3N#p~$s36>g6WP%p3Q#GW#z%WSn)0E
zV3P-=%$*9OwhjBc;LXW2iJXa#NRR~0u$qx*Zg@$QI0N17=Y1HFQ728nXF2EO?kgQb
zdHLn5c35|?D2<F~RBL~!=nbhb!c8vUMtdW1PSG0Ylz_QOcR|LDex|^4-SQ4VyuZ-F
zbekR;hO1)0%|5}wv+4+rFoQ%nh<nM5WzE^5BVZ<WY89XQWK+XJ1lbxRZTUl!501>e
z7wfl^{4YLNyxhi({EM9O<$}C=cjvlF03dCLsKJ3CLU;cm#R+>uG7kX7`<Qc3bU>Gy
zl)k-P{<Ca&jDfr{qBe05Op<(yz?EUMIx>+kLJpSE`9H+5(ebs62SRK!j0l2hjmTQ0
z<QFq(eKkBRQ{hA>T9KpG&6h_BN;d5Aq;n;#kE32WH7i&qbmzsUsa9X??7EsNV*j?g
zWJMXUnZ#dizW72A@=sj#@sCf&BsJ{E0rII2ySeGycf+{*huA#52H}X^i;f8c)PUH=
zPU4$*YBelt>gU5=lc_lsP~xOY+h`<|M>r@jeCdrrUY}Ac4YzG34N(k)#Dl0z-k&DE
zt9*FTo0zfkS9c3dLlF7{UbCf26b^=7(IE&&*jynWg~8Ex&gJYtMx(M7h&x=h9R7H1
zE<51WXjyCE<fQ(B19<%Tz~pF{)GOFfdtnVp{Z-h~eAj{%gzS9Y1bRH*>S#BU6UTs$
z5$mdipS}%5)68>?kD&1=1cJ?RkUo4k8L_qXXwhqrI4F(&u+OX(Wo`9l(P*9KvCGD2
zvyn4|cnjthxK*0|M|jq_2^?L9empnec5#XI8k=81_U`PE-5v2ELdKj8!ZSCXmb<a4
z)-IW|>EhF!#RTjc?bptMKKuIH&K{YK!2#fkwQ(9zJ;r35I<?S@{i0xIA*~x)Y1D%l
zFpwmJ&&kAt@Pzdm=lW00Zu{wW1$r``CRG9WR;oS2^J^HQh1EU$@vz0<Oz`Qx#E0oS
z2k|v&lxU-!{)}*@>yE@;_w0&nV`!q6$*s1j_EbnQE_d~>)?eOgK4Wd~ev@-eP^zn5
zCk^|JybW$kLy<V+5V`Bby3=&QGzgISS>|wpKOf^H$wVENiK=jp02>N+gM%iG+a@PF
z?9;d$GXblQLtOlcn{)=KB@B5NGq248<&<9cPD~}2>oa~|yJ8%i4hLg7DF{di?^wG$
z%r;<zpg21-z;<??&s;Xg(@6CFb}qrnhpUOZ-yP_bFZ1wYgBkcyhQp^}7T+I^_{fZL
zlumn~PhW71Xrxjhf3VYfZrB6+1l|cVRviQNmuaE%X@`?cw}+QKj{0GX%abG+T#sq7
zoQrT8ux{{8h>#%*ynr$R%=L8^!)eK0?{Gv+H)}gw>>xB|5)ksCbafrh-n1VgxdCzw
zN!VMFuw-D!!?1hAFjvZZV~m*UR!!)pDh?yFi(>(>CC_w12-cP72w!(_e%Q7A5a+8R
zVBMWP3|9<Hn&6f?@ury1Yk1v#C9eUFb8INsG*eryVKceLdinFYXW^81jiZ@R-Xi7*
z?s14h38&L6_&aQpHA8S|&Ky!?#9PVy?H0t(QG{UdgfJX+eH`BClrkiBW!<vuc^_Tm
zK@7NTVpc@W$?yC_qD(M^kEC4>nT@yOVB6$PCA<^)zuho{F|~Tu{$rv-!Sd^#9T6KN
zXf&y5V4KeXhedf>y%FcDmV<E{qk&@Lwsh|1o38B~(Nj&)BlfHBY52q;6RjSQ-16RG
zpQ)*;1<HaP6EfofkXW`4{~2?;Hn`PJ(K1rHj8uHt#;(7K<iDx&KQ!d&zCPl;`tZ$t
zTU_?^iQ?4JA;sQt+K9@s?s*|MHLXk11c*kLSUPcgV$>m33+@j}AZi`uCywHfwl7*%
zP*DlNgSWLmWvQ=i%z;HmTa-+V5>Dh1Trh-*$1}_k#PDhtR?o1fVJBHHgOlmuuU{J)
zG}cg9LhQcmdcq+Fn(CfI<?4b%px(yBqa1=qeiahN#NVR_+9eg}SwTnMOv(C)TQxAw
zcUvxpxvYa55w=tbgyjs=S4O2zhiMB6-8mLl*e$8oLkEhL{r;wUGG`-t)P$em&)|br
zT+4MzEeu>d=F_aWL9cz-VM~0_ZShzb)S-r{=Ndf~OKq>)Qh$d<qAMDq@Lqf}X<D$S
zmVWOz{l8|hvJY878~x=bsmOXBv4);dJW@fTVFD$qGCxe2*?vfn2X_Y?;$V=6IEawN
zg9EMdZqjc4QkPZT+t=_l812OL8_)f05Ii0Ge|F4GM%WEnHmO??iAvIyc5w!XAR!3T
z7l4vcPw?(?h+@))!y>^CkzTvq%0=LrP_s1+dm*uwuid%`6c!hzNhD`;5x!Ytl!$|6
zJl_7`J4SmKeMisr9FJEvaErVe<VTIF#pUb97<K})d9t4h-oT)YF$smDSjSFWjjD$*
z7HgK{rgDpJ+lCB<4i71=-Nz`$aS?DF_ieV@3rFeNqjiadh@~+Iy+>HZbg}ftFNloA
zPKBvl^rgo}+ijlyxz`2N8JatjiyR{Res3UmMUTG5h(SXXl1OYa!HjJ|*)Hqm+V?+;
z_5~I^akl7>*Y1$O##&!^pi?k8!({e^qcf@M>G@9(=#NOrqM9&+YwyG?4B%kEnk5o3
ziK&p4+o(ahW5E)5qre$Ti4r9FLl9(fDo`QNq!^SiamWx7mS74<>&&D>0$6n!LsJ6;
z#L!;)2f?-_0}!~lynz7vCn8~8FK-my<MCxtS}jAP#l?I`c0v({-eBG8?)xkgyoiz_
zB8mow4-NST9}s$ur@;TJdS7FcArT-o0m$$`k*N)k(`?6Jm(5A(``6z0qua!CHNbEv
zffTT%+DR$|*C+Td@@UmsKVQMq+G#VcHvS;&44FAqNK*QHdW|QOd6hco&<~dR2rgb|
z9%k>+$B}+-?Qlsln~F3hCcelrm5bnf2wSee&l7Jc8*N_R=8kw>ARCr;76J*`iP0!*
zFtVP=l{SZ?p~@-j4&lv<<wE8LeF5F~Jz<<5Nu7(p)CPhPft}hy`c5#EwvK}$+$^(U
zgkdVER9?`$n>QRYJ{OaarVYZDV_9U$lNuW22Kq76fo2Ib9mD8QMjG7iCNT&=1jTOG
z*MZe}O=U@RZ@04=nFh!?3dR!6oTd1RZ8-=qCCTw<@jCpnaP%}akH20&a|TGQT@t|s
zhdKvuIMuJdXQsa^5OYK>;n|gJ(zrT?=%5)yvA!5=ryse`fas#~njtI4+Mx$fcqDYL
z{bq<jCe%Iz9Px9mM@%~quydn;<G1GS9v<`I;fb$z=3iDSYn(}gB0Tlv=H`|vH3|lW
z@PT?_rGsMiM@_5PNgno85#n_mHHNfp1k`X11VSOsL_=X<yrGHmF#{J!LJ(*gl4LEZ
z#lb*>Mi5qQ_0W1YBq|rIFcgbfBI;9^iG_!Bs{H|k2Is{54|xN(<`u6>`z#?EO8PkJ
zD@ZfJ)4Pa%e-A`Zh&K1#I!f@csSAvR2b_Bs$DV-N`UjCV^-66It=N=Rc+Nm;G&&03
zwZRTMi3ub=C}fpJ`;=uQ;uE3VeIr8a`}%cFuA9ubK7G+G51$zo9MSabKijeIHx;$W
z!*<5@a1#<oWVm8D5I5rKThOY-A`iAzfMz*TxODp6!U2J<YfR#iA;AuFZ#FFtD`5cG
z0@<6BU&gV4&ORp>$WMb)-1qSJ97W|B4<q=h^EY3j1lniJ$<KvYM-I^kKYVeWe21{=
z_uO5Oc7jm#cB1eO0bE0r8)FyhAHV&?QVEcO{z#;I*fk-hOq3}RA`?;r`(UP!H30R`
ziya}fANB0y9~<%?Kiti15(|ObyV+hlPj8~~6zj8J_@s~RKhF05G(jYJKeU%gr}(pR
zIUwNCiL(RlBUy2|vI-E1Zm3I-15Z9g^TQ}cg7BTt%CIoC*xw3}t~8u*6$6sG5UDkl
z@x4_E@wFRPrbe_(oJkF*Bthc@vT>pF7%>#iN{FcAL^fUHR~k2&d2<Ag^UwQ#*W6gs
zV03#`8wXPa5geU7)UI~|EHaU;((HAx*Jb|AX?s_0ID>Yiam;mXJ6tu=GG<0!`_WPA
zL0>N3><;23>WHamJWd&-JuiXJyCyhcXXg*8dRTw&XAd|a`D;~OFTKx8Z_gjdd_PbW
zIC+7SDs(%OUoZQQ^<P)~=PjW3yX6ll{~?B^4~4`sW@7%G{~f*$#>ehHR>t0VO1^B2
z@+Q(hnqC|`(c#QTlz@Afext=rF}%NI519e%-opU~H!rDE$0XUax8dnx$*30WR^yI+
z1er=G%HTF5T!tuJ@f*F2;H^9hFu*~Ik-K<ww+&63cT66I%({_vh>&#nq>T{nUoiUQ
zXA2oNAK5(&3(-t{j71#xUzG~s0}^A>t<5S$DYe7tDXfOzeBH<8YyTj8`RK-cRPJdv
z{&+2O$Cx-{ZMcb1wUx2ox2)OA|F0A=7_s<mz~5uC5BmB#`Qm*Iv?(5Z8U%JZ(od94
zVdFm4q})EpJ5u**fqwvoWFgp@0uv!J1&bL=9H?0h(inzlh6esoBBV8u^$F0NaJB3l
z-0<P&cX_c>#l*$&C2WJWH15Ww;EfuKaB?lij#J0&p~vt6*d)Q6fM$fDdxxJ+D-5LF
z3>3cYwV3x05azhpjYUm=+5LF;S)6sMs_FiH^y)fgV>ChRriD7IjAh7QNXdh4mS{%_
zk&G7J81o}eRcK3BzU;Nd_tdNu$6jtSp3=39UXgwABmCxGrX@;IN>$|gi>!IRT~)Dr
zll@7xWC@(XvZJP=L&#^^<}hhVB*yxZD97DVcg#y9X8{?FUJ3$>!X=T{tVvEFBM8(V
zmerhZ-gC}5otvTt73{@&UCZ+E*3~l(^>%bvI*0d>@9>Ow>AKx2mF%!o#c;?EM+8`P
z>rw<Bkz1aZiwLLt$j61_jLHc^#(P!g@L#|C^e^3Z)A<sHpTp!W8tmT<x(|-pX)g{p
z)>~%J#n%UYP}b^5RE`GO6Us#CC|Jo3DI_TlD)5TiV;?OVCZ|lSX9Q5xZw_2b%dBG`
zKB@BSY@2QL_}(-5(C0?AjmkP&^txDb@<~K`%zv9Vi@3o}HiW&npQb?#`t1^WUNzCx
z3{pO*+9RYdp7lKwZH4fP@>bB49$KN`o_R|>)+J6kOujFj?as3`!g#ssl_izeUPITF
z-TCI!zSgzTNs}xktw5Y{#*(|u10=~P+7DulXoa}Vr#fGcM_r_<Yg}-18*Hv7`f8(I
zny;U!9oI~Dm0}M2Mf{}ut|{eJa@k6|wdZyE#wx)7+3-7mhxa74*JgV4kt2pu=sZ7`
zF`t5jJ9{yXF6jI-nF!M%_4}9^y?UZk7Eit}WL~jdyKT+Yzbw!1SXu6PK)-$o+MuG;
ztgh;Tiwp7Kpsbku_|f&*N6m@1f!n-7URjrkiOLZ2$H4LpYniF#)dsV(>##n#J0qVR
zy@A7{Z#^?yBDgr04|$vWqb;0qv8?YoFi!Y!J=NAE#S&B-Qrr4B_w?5r#{0kEy5plS
zacth-<<_phMtu-Ae|iME9QhlX+(xE)DPq1e&{qn(#p(5$<Yh?(^18Pr=shMdzZ-uq
zp3HFE!A@~?6BoBj12(8?Uj{q0oum28H7%w$;Cd%({i>8OxQT!ej>o_MQ4tWFb;MQ2
z8`h|SSTe$1O7_;58e_}W?bVj39eg5A$5}99?ZHPfj_O=<5l&v(&D#3w(hYlW^<Nc-
zf2I}0X-!AY<`+6J$2CmeNugNRb^TB<rW|XBi2t{<fyb9K505&ECXdn6ijL(non(a+
z<nbRQb;w6B=M)rCEg^=LIi_YQOQJJ<!%YC^<{S0(yC0wR{ulxIK~y5l|1Zba(4dpk
z1(-z;L5MD-7x?!1js0L9Hfq2Xo6)77yQ%wahZw?glR?`>Wb?bvk5~F5{**Uy*U&KM
z-RAf<k-jckBK%W2VD>~krpbQK5(XjaUKJZg^~MoF{J+?LOc?*V1UDZC>zjS}z<@T$
zl1Z`;@;_4;mo+1*{#YQpAN9id-*KP2;c;sO&M57HnREOiig`nK-*5(6B`#zxtBxkf
z8ZLudN^ltc{*GwqG1aQU^CClzh&%@x1O3~ZGTZc3B}$oqyoO>7lC>n1mbI-WrOQz&
z6GjDtMzuqsg*;)l)LQG@Z8Auz&PVT<yGqX6QqUP3ZLHe^ZF7ddx^rkPpjaT-wINi-
z$3-ipLu_E%8yll02qi94EN$5k-s|_AkJvrDcqmiAps?P0Hz3?@Ls{7;9U4NlDRwsr
z{rtw0?aR>cw!4?FTUz5Yc15l&Iyz$WT(evIcN~f%A6ARh>EIj)>`TDsE)<n%N*X!o
z_U6kt6ChH}JomJxe}Q*hBO~i(wWjX^uyP!E5IH6aIQz&X4ugeF!RF@+IKnL^ssM6O
zONRyVBqlQ(Jkl7`!-njcva`YQtc~r;wNaah+j#orR#T4*D+hNeDVK`bJ5*BFQ|aUA
zW(2kMo$GA`FG?E*D2St1<s`#Evx|3okY!YQD(z+3l+9$BoJo%ExpMp)xZ|XZ{RexW
zE`&BF<mB}lO#p%ts&aEP$|C7_(a_KMX*rt<W>CnPh3#AtY=G*0b-$Hu@b~W5(`AG*
z=J&#PKPN|29=AvsDB2)XzRrEIWSF94Wup_kz(g_FcBsS^tUU)280nOba&Ae3V7ax=
zbT>$-97Y>ewshRyPDVfU-+4Bp<OD}#kggV@Y>~x*nj@I=VHblUY&$elM7J<}dL9<g
zg{-=)e_y!6UkqM7&A)tSwHLNy>BL?m5;}#5shg61+tpvoA5U+ha^1@p+uZ(4v@pmo
zjxLt_$2hllCjyMPe1A10NMfU5iwSf~&Azl%JMnHZj%j|!DBC%R<OO~(?g@-^yZIgk
z2gH1yeb1H-Qhm-jD(V9UNGCx<Mchx)L~uNRhz=!Dc@8HNeuNlLga&l6B3Pj9$K(m$
z)w0*mY+}w}i84;dlSiPuY`PZ*0|y>$uAeWFOU2Ye4(i@%>D`$4%=a_q{W}Sy`O#=k
zN5OJvjzEp%lwXtYC9iB3WSB}JxbKIh@FYf^9!Qa9cZ%}8@Ho593vHTaJHf9w;6S;i
zsDzz4w|pDF7bShu;ZrpcUC$Kyl1VuoJsxj|`nV^eThq_X_r5N}h9SCqXW7J=eTqP?
z_r;zzf@34q%_N)0N3)3yj>Kj&RceY*eI(bZqH@#_Xl#^6lGv$OGGc(3pr5I^g{%_c
z*-9dgZ51h46><!wMV=7wg2Gp1)1A9iZNFpMf-}0}U4xftQc{)iEd~ybzQjtQh>i|A
ztYFNNM}S`#L)m}4c`qG47ykA8J;%dIWU}8{BV`6iAvUzm%<J&DG2}-_i)@sOwO%Ek
zkaNqE%EcUk7(mcONZk(lMU6A)fM&!5nX<MJOEU+8&Mf$gy&0eiA|%x**>K_E@cmX1
z1YLXe;77h-VWZV3<zkStiGc?#VONm|MVe<LBhM4O-q-6*6BHNCLcHe(haRp>TTet4
zT{LYx%?9D=a{)#B)hH4>qT9t5<hxRz7)VR1Fow41OwRzuK<SC>_<B(jG<pM2MWl-7
z!M(plDj5#db1^XD5woy%stZ!)QFazpT8SkEzj62fSf}hC<+XtS7uNXn(a-Yke#hB4
z%eE)YY~uXu_H;UJ<MkM-583`K5d_o>g2bZ801+gh6sRBS`J?cY1LT9DO(-}Z5DGy8
zB?%=(a-d@Z5<<F7PzX}36r@0?(*LFqH7lxug_(&2m;x#Rf}tV^k)S9Mi4}=NCZY5m
zPc7MrxSOB%q5ib~JN_2~Mj8ynP9<FqxA?tQ;Nsod3AjiwR-rIN7AGO0Dlr%h5W++z
zibRcqA%bYm(L)z^4=EtVL!mPT1EC5NNNyY%AV-nr02w4qxlE-{OccZuM9{@cK~4;b
zh#ElBOiY&AlN(Dl1sW*YBPN4Jw5>XEXlYr>zprolpZWLShQHnN^51!Ph^{z)cm0ou
zKKcv${Eldg(gM8onjxep4Ze07St^7m2KPjlq!}aAaUL5)84bqhGYT30CvaII?DJ3O
zJHlJH4x4`ZXymYWG5=K^mZ&9U#$m|>7Rj4z08lZZfl*3Qg(5`KK6VJ>Tf6b|&hk=;
zj4D~Vo1*77J(?QtTgvAd)#P}Vmw~-n=9O}#5fST6QN&x&vLP(sb0aLL30sCq1xaoz
z5=y#)Q|Fp-p;MbNiIpk5=8U>?cb;<=LQWnT=7A>~fVMX}cyiI09FvICytZN##v)#5
zzQ_Wm!I-jt^i1jD*x~8sX5n?~l{n0ku(nHTBH1{ALH~(?mvIe4P#Ad3^x=3W4I55r
zazY31u#nx;gx#}pv}aBXAtpo(yM<mZIisysnYd|!9g~0dySzJ7P)v~(hchFF%C<t7
zCUyR7)<`pi!!YU+nS0JLQzgERCLkzzsD2JR@yW2fp7q3k$k+Uru3IT{rhd;HE(p;;
zs-%KQ(w8FnEqf-`IJE&IhEp43>gX#)6^C?Ng9RtnD>I3baBJ_|{?5IB^H)3Z|G_<5
zn2!eefxEPXmdxGrBq4;Ier%HiIeK)rf6$thUkEq(KVRqnqvri6FU!FCKKuFK={SB2
z{afF@XW%@_`3NKag&}|C|2yMH^=}91WY_bEQ~woj_#pvSCAH#}B)_}<S=`SUPAJ}h
zj|k<H$Mzse|Isjit?ehhKM(Ui<&JZARFRhKsR+yr)gnAZ1xJVImlLD?A^Pb!f!@dW
zG1$gj1j`Gce`yT(M2@#c!;HaFO2Q%h59&7HT{-z}aZ|_qe_VfoYgK{<Q9rMt*cqv6
ze_GkB8&3PU;nN&9jN2$aU)_$h(Ei8C88E;q9)7IJ%Z5XofH)=}km0fgmh1tmpkBj=
z`@@H=h69Q0KFj*^=JVFXM1O<*p1(KthBQBhbLhv8m?8S50tBMNn326D{L%ifnMi-I
zcvadiggNWgXh{BiSChB@6Z+2x;^_U>|7ggn8X_2%2MiNvCLC`srgiQ4YHR2o{=zG<
zMC%-J%U@)9g7QrTS`?;2KSzw1*RRHxSE_r-9&Ue=Ye@g8SDsc+h7@GP1CmOZDa$8c
zCS`Zu8^fNM{L#}}K4p?%+<A*h<*|vQIC9b)D5?q#&$nZ*VCKnDe@<u9=8e`=4e6z*
z5M`z2&`7~Z#fdy3m#SCkX7t*s)+zh`PUuE|2Yrpd&xB^O1r!tmBpPD@zgGnKK`sB+
zaQO`|x_*y#>%6NXHfZ^~KxNb2n%64>Hfp7|I=tzI_}ZA(VZn7b6_I1t7KAl8>7YBO
z5b3qG`ShLo5S>kzLIZRkbCV~-oBWZGZCkYtAJ&IKBsttP$QmGj;GKcG5C{GS;xGrj
ztjGIKJu&fbHF#CTBQ^v(0R*KVy#`dlG59{6n^SEEq;STDJ_&P$nWE`f?+v72MC=5E
z`<yE#bBB*jV2oH6^PG9|iw2bKb&IhXF7xppFO;_AO}5|aLvwu`P+r79^?m-|WP&5|
z>ehW<1{^b91qddT$D9_xkCdt580<{L3^)8f=}lkp{~i4YkNSVJ`oHx5#y|0Y^#3{A
z{~z$f`Tsxi|J?euKmMQkZ2zVk3_sBgU-kdZ<rnmS<<9)2t7Wj|t{gk*r$6(0d2iL%
z@4qj@`bYC{zz5=nlmPrlfg*-mmw(~D&ZvQ$eY;vWyigC_vizUXqWsreuPOkxk@{L$
zWW8~_TD%#QZ1aR^f*TNJCXm4~40DRkkML)7kPgy7RLCr6c-CVO+C<F$ofn&fS9nCx
zE?J9sqx0mDoJ)ZVW+4-VAB1n3@B4-Ob=51u5yfovXY?>V(0IZ6<xkc`LjI5AKSq@4
z&U;}E5)hFoDJuk|OG5+SkMVEA_VCB_<A&SY^Ia5@Rd4-=>KKa_P5On12bGxsIrng5
zYjO2!*VOAl!>g6_*+BT_goqtTX0ZqOX{NxJDWnrHeC7=wDYpm9QS;ty-M`1<#|;0<
z&QOvXx47A;p{j>ByE8HBDfzViymx-z5*Fn~H6TnkX#5Y{X@Iuy{$JY@4<MP%W&f=7
zPG@D%|EykwX7N?^7f6bV52nJj|B5WNtr6MtUH{LDdJS1$vs?;7kS0H?`8#z-j<TC?
z;RjQD^FoQt+LH@u@Lhk^YS~Nj)-l!(_9QruyeC!ege4O(^E&5KyRpmPcjdL$QXBAv
z^@B)dCvDwZHVQ$QXyq=GG1ASs{9oU{P}fKyj$wH)e<94;?%lbQ9_JKHP*L<<cwB=U
zmq>q(0^vaHsq~pGRJkq*W=^q7iiw71h`US`PVRazu`!{@mjhoer`dW54xb#jXGNk>
zKAob~Ky-{*yDa(On`|PWmJVh?wx{em+E&N(Ga8Cx$q^8UsTkVDMVAL<@0rRlPMk82
z&903~E*IAIEM*Kbq6lgekdo@sclI1Lu+h1aML|S3&@>ruCweY-W*@qvIB^qbl3Ws^
z2%YRA>>Lf36Yr!+L(5j%<`ikd#tL&(;3R6MWkJV+hyC#B3+T+6XY_1tOp-ycGB-Zp
zu#v?Vb^JY=q9n--Gb36JQ*qVm304ZkfR|vOH<1U{-!Ehtq1Q$Z=(7f-$Cu1Gs@L@Q
z$T9+UG0}>!CY);28Vw?34rHq~`KA|#OZI<%mAkRqlXDT6hD{9s?1Ne{rU$d`!TKYP
zLWU@V9-Jq;;%~8ZQ=<t{3@j-qXQEHeW>gK0wo@bK#G;W)aP?k_V~wQpSIkPE<9OGy
zX|?XV@ylXM=3w!Zq<kmJU1n-3W#O7;W5wNei!~A~J9wBz0YCPCbQESher~CZ5T<$N
z!&m1g3(EaqoA5Au*giY{k#~Qaw2G2%XhaDyUCbV_1Ikinh&8*DZ>HI6mdVfMwx-O`
zV>ZZU`0J0<wz)wdP}q0`U6)Q|?cTZ9c2qh4r;g@4|3nRlCPP8khshH7<_3Ac$EEP0
zT{Kq?zSbBHop)EfcP!Xm>$@ut#yROBpYOhYXRF>4{^-MfUis@?lPze_jz;(Y%5K6;
zHZpU;G(Vyx;~u#IXy%9(hRleV%eD;F|9o{3wxmVUR!~uU6mkQ7qDeImjvs;o%Cq|Y
z2MN8CK>UM$@IuMHWd9T5k~l}*H~3VA^&!uOaDe}CpuAk*q(FCEt|0{xe6SrEFQ7+g
zsbIzO^BSY1IF^{nE+fdUI0VD<+TYjLJ&!M<b&czYVMPTjQj}2CRWbx>Vf*IA#0Hug
zF(W1Q9Fg{1K4Wm$d|({=&*%Cf@y{vuB;eTn(7u4f0$DJANw;HC)z2)42*uby>W3uP
ziJR$TpW@A|BG-Ea;gVoN+ITct_S=&HXLF4YtKsx|`<JzN!4QcbJhY4mUDpV3*K=F`
zzg&%&dHK8RJv|xI5)_BxcgKcEJtvE}8wlYWt_maYF)8ze?Q2v{nWV@1aCE>Ol9O!M
zBe6h>X+tD_GIp=wmpvVHX4_AB==$!+&SIl{89;&A2;t{VoJV3u#NeXtoztDX*H_^J
zv17ng7&PbYnr3F~RnDyH_l^gAUUczQWHo9Upy-DUCdN2CvG2+`NisfEPwH-2tyPCm
zSScfrZtrjXW`?QU$aZ8V6DCLnm!HR<ujD@-ub3sFr$)>}9{)G4bi3d}U|e0DglMf-
z3|dLU7%?xKN0s*EQah|WT;sROiWAbb-P1|3876NNvSz9WtvJr_K)qCg(2F_>IVCT;
zFga-aJ>HQ@FvDN1YFNg2a`nY%(NK|}P6oJ}o7sdKC|beJ&db<FeVcdMcbzaKlt5<U
zHpXWG!W~|ighou5w86lDd3vpSAfE_zkf~JKr$=xHpUr}J4=^Qt@m?lQIYv|jEqk3-
za5=)m__%ytF7-JdtJEfzk{?zniHJgdI2(2F2<Tz9RXWNhC?YyIkTtbx0m#rgUIEhM
zh4?dq-B%gYdh#8Co0|hNlU?s)dAiBP_2uKskZZT({9i}DcE^5q`}n7sibaZ=3JRn+
z?~ba92n5`p1i77+R_7A^8fm@^Fc4^rMej%2g6A^%zJtoG=LA84)pZGO!(AXajUUCV
z>qklZ-NyjPaTURaH?m~!MfIINxDD^R;Ih<<zIVwG!STj~2SA5R<dZbh)Hp(}ZAhiN
z&QO4-_^lJDMOxZ_r1IMlqcyCBW0?&2a&39m#&ly&4FG#uQZyBgVcqVJU8^4k@fUY*
z#ewwsr*c;z{Pj?P_cDY?Tfd;RFr0ioF2A?arL28VJ^sw^&0*V-fe|GUce8`C5*@)X
z=fh7#11U`x<41%_dy;RI;qgVGztT(GJP^uA_du&2@OBV^473PXfWqgDy**cXGEqxJ
zf%OoF^0%5^-?Lxpd+*`-fcy&#-%rHHGv;dP^LBv%@EN{r-~ErS0T?`9IgQBEo*q=V
zjK;o(SxxwQQS0_^j3E5I2}&@F`vBs&ySJjl{o-u}de^N-mN(w1zu+n9*=E7dR@uRk
z7;h;n-Iy1)5c-q$m;Bf3*XtplNQJt4U8mq;nVMCUCO;_z69l5<9h4k6U&E&C<<wR=
z5N-a^`h4zoR-q2n*RosA1gwrc-A;rDI(5^IJrKtHn_StYoiD3I^~J9+k%cMQ*#ME6
zXCD~uBbI{$0$JCxGFHuet!y^XYh=S}X?Jglf+E8K)6#W(FpMO|)Zc`6bg8ur-_XW5
z9DTTZJ&wa2&#p6(%|kXA3tV9AFc}fqM#o(L=JeO$^~arW(FhJ={WCJ<-1UuoW~_cw
z7~1rN1Y++}lGQXq{X*KqISwSgJEi9Go`bdP7l8<P$sM?Np(}K<_d7V4NIY0r-qB_>
z9Nfcr2R`f2de+DyKV#zo`9tV>AM~OJ*Y)jveos!P?L-97gr@V8Gi+vVJ$v_dc0Yum
z00{6CcXD<pki9=0^`3I;Agbo?*Y3>=8F^5{Ye+}^zTL`-B;y<tnM@qM%jl!U#hBfz
z#@C-u4BzQ4@6c&OV#uB33S+JsX2gQGwq?QeDuqNafg523uGXF;2o&8JtE*NDB=Mzj
z_E0P6aotB$q+NV&dqPJG4k70Qy13AlQ_QKI9)JLeh|(kt%D(26jHXQX&i&`VYi2IA
zEY8}?)uRMBMvO2JFykPp)Ufh9Q879@yYM#}uHSW<41^TGeMrcBPKiebiBIiF*gSZC
z9#cB=iiCBiCl@wq^`JeDU^1FZu>Jbh{2Th{o;PLZ+Jpv79T!J}P0YZ+{?VX~vA;7r
z?}AqEbi{zHVzrlwtE4(6AXvG@yA~!gMEb!$%~rFV&HrX$GA%n}8!Pd7B?cG@4+#*`
z3sCrpzV^#pM@8^TTWGdJ=yWeUv{bcJsZ+<!K}_9<@pN@WAmx1>dQh%s!eRRH&3HcB
z9ykcS_j#-q^&!3^_5ZuV51X3(OrifY!4gSH2=$qiwLC<x?}BEu>ETYEc;Xo0w?{re
z0Nt1TK3d~;?@jDGtTK;s%1kgE7a}Jcrzn!{)k<^D;v{2~2kp+Rb`2qn`GUlZ;{(g<
z)zL9sYiHZnR*dJatbA&*@^mkp)fq1*%RA>q@8a$+x_rEisO^n|SZ>c4G$fvDIgrmw
zt&*+Euc2%3ek@-?)0@K7?ap89Vg04lKf&(K?=!@0;Vp%G;QPAYUv;kI#m_}-R0g!D
z=3;d0n~De^5HU76cjxHm(|%U@U_P1Z%O?wHf7`VfLf3qMnTGV!+oy?gi6Bwv%Y(?4
zWuV9DRfM2*_^&&j>iSTpZyq?{*~P7Qo><`*pnDN!Aks%Ii=dO|V^nO6E;~^OP=fEu
zaB&phpoQc}W>i(gxldbx2j2ijd!Yd)S1-<{QH75)EjKp&<^FaTB|sD!>({Sbhj-<9
zFhqWpkK~|W4Eqo)yJy+?g}-a<7l)Z}L%|4hFsPDm@Usct&uOH_lO%hsPKY)p7XG@;
zS(hW%_H(v*=Q46b{%+I6UoQ;4V|g!XV>!MOsxW3Ckmz)eOTXi&$&s+!j6NN(`mm(4
za$~qn0I7Au(vZk>Bcewebm=nxz29detLW#i^qrh;^ZD2p=)Y<ZZr|;d<tjhh2!Awp
ze%$zPOn)bn^;L1;eFQZ9zvlDk7rl^=_G8C}dB5$${E`0+^SV#{GwGkxBmbrY=bVA`
z^1es$CERdPr3eAp>y&@f28by8(&vVAf3VLy=0Fd2y8nk<i<YCv?7(_`|1$Wpj6N^Z
z^Zb$dWUEj8v)GldKj-k%7nSn;9=z!J;|khWTI=5I3RdNn+5yNzFF=>0{ri%pU!}i6
zlarnX<%O_YX+-z~?dg#B{r6yR0Win>RK#{5Zj=oU;ru>Vn!7W~pf~t`spU@D#J#;=
z%mxR^nC1LEv8$xa31;riy^LA}RsuF}@fnih0Ap#W`{hntk1!i4hFazYlHlKR<bOvA
z!N|O!%51X}9$^2kKd*QdL)1qbS&Pp}g@06YG_V94^UDqP0XWIC*A={4{H?MQ`uXD=
zF2h_viAhC>@=+2|?(4gxScY1|3T|z-=XTSAq>l`#X*vdSMglxB2ZGUIPNgMrDNgwG
zVFOT3STpr)iPunAG^L~R?G0KY_Qyey;{)+7L}8|NSb@tKQE$!gx@vZyVW&c88%^9W
zOtK!$9Zj}uV499gB-&$_i=7}e+%v*#2~y~V64Hh_95&S>pW-l4zeAzVJMKXkCP~v;
zY)z(!P;M^p19kr=*vOTFN6%EbH)FCaBh?336Sjn<v>7gjRhf_o_iYdI^*ML4;K7wX
zQ38DJpbwO>l#VNm{B6;V5S?d7>#*V0n~lN9;0#Y7Q1FnlVYX!GaOvK}z?tIv+rncr
z`3@eGBr^JfLt6Z~C5@o8BNGbN)_^D&o?JVyV98X86o5)F1O<S>0T@KsAD89#<6Mo<
zjv>TTF$vt>Fyu2#hjd_e*mZO{T7W7^3jwiB%c6ryn+@nkKJ)&wwRTJ7NIj##yklW0
z*uTB^X2=ez5!VcGsZ2ZsT=VtEN)fTMnieOVJ?8uE*!H-blmme)nTld6eX;;WK)S!6
z^3jwlpTMYcgj3)GPzSUwr2*<dCxi-y_lZCVF9=aNZ;F7QwD#bLhq?q0`J_Z1Kk+|3
z{F=k6UfZ498$+CE{}IPFiAatZ%ST#P-*#c*IyLz*3ff=Wz|6{Cj6WHY4r1zK8`k7M
z(Y#=M8D<GS=W9QSoG)jWJh7z=w@Xhg^=-ewf#N=-?o7^155$Me@4w}I-dD0)G&AI>
zeT%h3#0>7`dU$U}U!VH-)hFEEPq*cKHM<d2N0Ad&U+ddxXXpP-9q)nc*Lk+<O~0n+
zV^U+q->nnc<2oA@$y|$(4Ec0KjTzQW%VY+MWP}}u%M3Vb9$Kc2+&)>8!Xq%HI)TCR
zJ((<C%||n%iopL<H@Lw+>@`7d8DkD#38kmA{jAb*{C^3pS#7<l3ueuCWtI$#%o2E(
zYGOA_F_t&O>26NviQ{Fghw3mZIt?$&$qSA@M)WL=w1^KJ$bJk#Z472wHms9s<nuv-
zZRpg7ni!%CR*DM$%AOV-^Mke?q_*VPg$*&H#uC-u>Ld=WWrDX7bLF=D1lm_>vR&^~
z<R+y&@|#Bd_s9jdPPs`pZ0v<jUaTOn$IkT16Nz}?VFVDH*$?_C*Z4fmo1wNZ-mXyc
zA@2I}GsMD_46CkaCWxHISh>V|s^@JEmehKhgLZ#RLG5bo&ozo>HxA*v$LEG?v;LW#
z5+!Q14RK*Al!c^9X?zaq1HZX8q(<c;akQO{b$BC07qGm^3H`2l#CwhBzVcFkV~sOs
z5(8^Y-bU?lvJhY<y%hgzhHD##yz4bVk#mD#@{Yy0b~g*-t-3Uf#8wKL_7aHZ2tPBI
z#2Hi9Fr}t39)<`dhdV=SU3R4qSA6bKO?{pUDRX}Vv@S?UEJd5)OmF7`FK7|}Gd^~d
z`|d@SVcf0cj_``_9*uWTQS%vxsq^O=^wX-DBgxN)$9}MEk2x{|{8NVb^g;`?Lpn1_
zHOMgdFZ4$_I3$w@LQaOeOeAHN#eY?|GBcwGFbie|T1Nbw(4R~pV_^ei2MLPt$C?`?
za1iT|(S2%L;CdiCr*QP=GGRS^U9qCf$M<X<q&@hP=8SU)#4F{LD~cH*3M<9pNMd$)
zLcwS(VQhr@x*A<qauME$Mn1Taw&oNcM@;f`wGxr`&Abb=ip2UqKhvD1abnL+uXOy@
znwmIvX1ZbWOQ6?>uYvDDuXa4{yYWC|CfNk$<>HEB=W-hB9~WQx+E}8=yos(my5MIk
zpxTk}Cebw04Y3g0<$?a*8)2Bc6MC;7h>*Hb<s_Wt*TL-*zUMq}aOofAv_m!EyMYZf
zNf7is%1TengL+dxQ?yZK-k8*<zc_UDyAGIaR+%}$166G#MIn3!duPY=VcF?$dNlW9
z`T9OHM|HlOh?`Po81g2Eo={6-+`3km4lznq58<{F8*fe!)VdI!cF%`zzq>x)4y>{@
zNytsiDCto!P)(<i&S+~UNF=&af}9S$ZgnHfaK05r9j?YgZjSiOjMHSFHQOO<Nx>3k
z^P=^5nu2?^!V7vbO@$pM4d`qOmN1mu;*PXI2NdZbhU;#K8=yM?kZic#^@z@cirs%0
zH8zjIG7>{cGk*f_IR?E2R>E?D-LcKWD2l6AunkMffWHUDUQE|H$ZlxA2Vt0s8-JD%
zvTX1%g@w6#jg{jT;Fw94L!M;f7(ld`<;kIEI#VPD#2Yrfb-CqC>W7V>5?A@U9t_11
z#Tj)wT`iE)x|u}56+@$Se7)NwGjJ1Vu1=Y}+yWiGf+5!#AV<qcCgB&fTx@!=Zj5U%
zkemcTgmxnYT!p&V(WNxbp4ndlk}S3%i&@0E(ds6AdBDEsB#R()*QlbH6x;ST{0F;5
zvpIR*xx4b~lJFj%R3SO)V`5E3g201@4$cmPdib>2Oa$db@Yxyxg$Tn<pKlnJ+GwVZ
ze?h7JLdR)P(%hk3qc|hQo^)?0w(<7MXrOIB!xB$ehW!{<oOSX0v_v<(owpN~eyc%_
z<>+^9$`0)jlWq{{EUf84eh)@EsZVhycW)gd?_4*-ywV;x%883X5J17DfzzRk(vooB
z5EijcEMd}}2J}PP50}OfPc{+tm+EUJyyc|;N@{mx$jKQ2Oc+Ad$-N`j>&lc~pf#!{
z*wJk%CsM7+f(&%tQnuVs;j_Xdaz?}$58>TXu2#wv<(=RL%5(8HI(;%t3eIFDi8Ygm
z60!?GcX7mb$^q6UlEntKL>Kl|QEY}NV&(K|yKr=^+StSgzu^m~7&e-zhmH^l-2R*%
zLSsbO{1<tn16;a%<RsTBu1@Ev5lz)>po$=(^{}J}sVHx589n#a(aK65)(E%Epqe|^
zI@U+W!V{95sX{)FKYyg{NdSR{H-5(7PpYI%_8ZB;_^RnrNH3o9fG6>IIqmS}2_Ptx
zE+DRP;!+Z3TNi)B`=d-NPgSsiU$}LyowvxlRmo&x^1TiW%1k7{=1KvXz}0jOw$4U;
z+><0Ad_*DOf+`8WDND;SmcHi?Ohx<Q8M}$lIFDrKhq+6sc%rC6YdNIi!K6q0yPg1q
zwc_YaW2|{|cZwY*K_}ja^}Lfy1??8}q-Q31jymV{(&{<5of4D1Q=Y0hC5mVHF)twy
zACZJJcp-|9LP>74PZh>tQyAJ~8p`8a-OWsogCxslW&7q$*4b`W+iGDGLDArz^et3@
z{$D-tk}878s&2SDH^hx>kY-?S&p@WBkp7RK>-Y9U=#k_R;>VrW_3K`}d8Z70#0X2q
zldPbwXF+H|;<{VmO~D?_ylyYHA3aNR=2d)MS}x7ACy{_qi%n5M6G9TB`E!97vPZdh
z4A4FX3%@{oC$KxpjT5LR&_rW2=w9*1OvFPUA%+r#y!^7h-PQ*Gbg&{EFU~>1WF96x
z?5B|2U`g0Cb{J9SF&0S2J46B>Nl1`<V$Bmb+6D`G{&^5R#U}6_8<0nteG22~Q}}r4
zWPL^!HMn{VEN!_u;8Gj)#yK9tO9KiS<TFDU#U&QxTjy=Pbp0pHl6>>~6E!WCsMecP
z?$)D3T=f{=GS`e#yS8N6tT|1U@AJ1riPO*3&tf~S#Gz@U2jVO;_i9eCMeQQnh%Y*j
z%gsoM=Ue>!ul<Z#46Zq)k6&TcbIjper;C7=E-S>}n@{w_8vCcN8IZqs$tkR}%5+H^
zcbGo2GkBX61{yeA*kbuaaFx(^*><yEDbwkg=Eqrfx#|#BM>OgeFmx0uZ&b|30mNGJ
z-ndmU@FBVuNz`8$K?ybkr#^^sRMhScVae6Fpxx=b_S%5y8EyjIg&gJ-we!>+H(~eV
zz4T8*g95PPx_)kx!@iw5SZW&o2etj5$&Gz_s;az98eH!|^qrI%XgoSV_4ddbxVDef
z*1VuD;9F-AwRL@{YA?$l2B-`_+9UC=hX%YN6+=z7wV4(eW`VLnnghVyc=PCe&3lf#
zay&**j7*&SY~GC<CIlK6b`7>euk;KZ$V`)cqa%4VY#HS4|JB8d>PLyV%+(yrh(?kS
zV@w?|93=rl6feIUNvl53$oZUULHQ*ZWfSlg!zTL>G(Qzd$TjV(`VHEl%O|NeW{hZ1
zLZXOYsOpf9>KMF+l3N&i{@;)MG`*dAO8go3?2kz(8%BO?6h3Gd)vOcA(6Bs)j3(5~
z!(sOf8Bl+PmdQGp98eMrXPT5*PhbFks@6Ifvj|@g%d$HLnj0~fp}>=J{4<_imBn4-
zg3WIvtu7FolIf1%Q~2$HFwHe9NK*r-9w3H@ZeVTV2z(U-VD844t!&38%O?j|NIQdI
z(cs%ZHzwocfgB7sCO1O~n>A%Vd#a#(w}r+RmnK8FvLT0PdW)q)S5w}#_VMB))M1s(
z<P=01(As3^oov=RI))~Amfz()MeDjMo=1^b(Whu5z<|ml3$oBbK>-pD)?6yEzCPl9
zrXQ!_NsO9!+Kbec1hCdAS%pnCW_ed`Be}D5c$-hW>y*@zdLHv-T(=$14I*ID&{9Mv
z1A%(6Akt*lsfc=lc409>ct;6fjZI>~(q58Xi4Ooz3@E|MN0edhH>WT#z``OY<~=xy
z2hH-pu_`<X2$DU7BV?LJ3>Fv)RyILAF2lX#<M3m@q~U&ThQ-4M{K1mZ&9%tE0W86}
zuJPF5@0${@9C0z386}AnJMfqwmC+8QGPsAcif$DLd=o3L0_*__*T5v?CW9F^G&EQ+
zG4pamtq#HGzF!l;$9rK8BD$4YbqAvZ7-PMHo__dI!j&yLo#6H?h4+`1<{`i`F(@Cu
z8j~0p@deyk848&WUsHLgDoWW9LWRbQwgVUfee`ZBt<?}{qtgn;7)>_aM4qIm9S$~y
z$o4ilxgb08M>|V31*4d*WFp`*F}ojQZC!sM9TpN?b!~^6UUnGQlt>Us*!KsgieFXs
zhs<nt`YG$-9~)l1=X=;~f(Qzj2HIoX-7-@di0d)a&=I0vsGNejj2Mz3N+Ax!%+X4h
z7ZDw@=pa6}4VpMR;x=9ChD>>Tszc~9s!Hj*I7D<jdF=D1`hmjhcV@3YEDtj<<G~U3
zK7LwzK2dGah%_@(K+;}Bglu0}hvXT_-$$ENA#WZf{~2fQ>;!pqJx&6RKMo}n%HVL1
zORo{o)%5O#*`rK_a&)OtA(JkcmfNt<EQHbY0||#?EJ_zGf$TOt8Vm_IIDwL$ND&NR
z=^0>%QOCiKJ;I*IkLd0<A|`ed^(hGZ2t=obGM>Sp;sJCL6a_#r140kX1EQu{4Z=Xm
zn34%%1|<VQ9Z(vCxx{+U3?Z>4Xo)b{$;rvDTsaQdEZ=5)8Jpv$8uGY^monYb3O?EY
zfMWh;kMu}sW9oqWp(y^iR6lH6IJ%ts3^fkGdQY*^a3R|;7LXni;R=2E-6RKaVF8`G
zZ#R=64om)-1Hw@`C1Mg`qx^r-*l6h){WzK3Ye~y69-x^BDucCv$sp)p!BNT%;OC3P
z#M}vp^Kg0@#pzjyWV;C-N}LHPHbKEAP3eeag%2zUWUO?ALx5TU`-uAxF^nK|t0O3f
zurUdsq4^Thg>;}|Uzj)2K9m!&xEc^Xq^a-877*A-5o7>r29@YY0l7}ZgA(s1pxQ+C
z*$K~%FDU|KiIDJ(@e6_ugyQ*tdR+<NGyJAF0kjL2@~hTJokR)BsHiCP`rrW2A3a5m
zGGK@o>mhxx@pC3%HYbz`*RhCGw28D0Z7&#Ci5Q9>Aq^-{6ev&$>j+Z7NNJO(lr#~%
z>!f3EfvjO76$|gfh^1&3?}U7mPh?LxLDYvyPIcVXT)`L{c3@e8ePF~GAWtNvP`ehv
z;`XIJ#E%^?as)$jxZ)7xx)L14(*(oE@05OX+WhJ99+O6m5&Qg{p3}%Zl>k*DLQLHr
zS0ov)jd6hJ>wtMZBuO;S2KB&fQ7XHjNOa-@*5Tu~73ZXmwipjxs%j5ktO3}Q1N#UO
z*uzBF5S(h=S?0I%E|`BpU^dCY(`phJLQJ)t{4c(9IR3xG;QC=7$e@K6>XctdJN@tZ
zq(k^t>V8Y9XK{5YN>GF)0?O&R{_TBww|x7Zf*+~D+w*txiS&0(y3~4}a3Ob8hVDW^
zB2tuckVsx(3O}j+u!u-nK=ik{u0X)Y)ZWHH#6j*tI6lNleexd({z4%eP<_C@5LA^v
zo)4-k;d1Xuz;w{U8%~sj<{^V@w2yD-p+y!+0?KBc452xeO9y1Ls7N@p75QNKf0yGr
z<PwPfL-~k2d^~iN8Yv<DFnz=a>EGAiWJwa9RrF#TLC1U#4d2ur&-@@iw*G0YS@0pn
zkBTpk1f_ysvIX8u{!2uOw;g`BLMI9jd1L&M6P4=&1oT{WpEt*k2zv%QQ}h#@=e}|k
zf(5@2gH=+DacEQNozY_vGXgni|5HVch~JRuwG2r?t>uejuPox!3txps#@nzf-ujo)
z(UT>0@VHEp84MIW9DuG=IU<-djk|b~5-*{4`XqY)ugwZH^eW6*nIuO3jL9h083u%|
zEGO@16emjlGLmneuG}5w=cmut_Hy~-Z}nTkV0$||Ad@pX8Js{P%8dr!QFpy5gC=SC
z7_)hI_iR*>fBUn6;q1mHp_b0(!S-M+jj^NQ9t7xP7~#WXVO5v|601u@h0U4f;3@Qd
zM@yFrbaRlT$mcdv!%rNIiHx7}Gy5;3#C)8<zOlg&MMflz8o#;Oq~cACg-uZ<58{n?
zb@^`Dyyh>jZ$a1@0p#O_Z)KKMKDZ{C(U91kG6qX+VC16F3Q_)kV#-jz<n`v!TEWT0
z9=FnDa%cR0ovg)#&a+WGT}`j#j0jEM3@vW(5GGaZ8Sd@YX`-uTrEbjgz<ZW0hXrio
zP?p#123A%B2Vt*|@#kfyu=J~SIy%-$uf5F#Q8C{U<je-1(%H~~!Lo98(M4s&!)&O~
zHiz{xj}}zGZ=+J0q4+3=Tf)Gw47i9{k~k?^TgI>`%Ofl|&gDSd;?OX&%5LMVv#-tF
z-j|{26s2@)*iI5=iCBIa>G<RyWodBkBL;SJ58Tp*G7v%!0mU5iIrkzh8$J<mEd`x_
z2o5pcanE^L8rhGf$VzXd_|-pHPt-S=b$?$z%IdUu$G(rZ_l{*(!!1#SHqEag4KyFc
z@_|S@tvGpn)1~+Bz-;u}i)y8g+PbB8`VE8L_&4p{UioSvong+fJ!X!uiG|^Edl|sX
zP824{gAIQC8{AO-IOdCgM^MzbZ+!6lC=GSQg7i1qP5J2mxmq<`@OqlcR^Uj0gy?oo
z{ds>^vMkmGk)f0$nEL$p5-C+v6{=;R$13nxOU271$)P~(We<NB@cc}%0diysxVyXy
z@+4{bW+Xy)6hZ|($Hp{E8U0KyENoz?Kw^Cn*R0}kGAU4BLz{Y|Bw;5nhJ*qHNbhPw
zX^g~mlonVOi{`8bj~VG%%l40cyImI=mykeQTxm*7>3?<L*Kc;cH4_WqDVV5@j%q5y
zL}Y>#al={5kV+_$!i?)Uy`peJnU^%kV&G>n9(Ei4lOnQj66-S&F(t-c(Y=KXF)^Bk
z%ho5I+&1}8Vo8oG+#AF29QNm^&s@r5>UbP>tEvu4yHUXtz9sqRa!3Qfey4IWG}m}i
z9qLlc-I41{XYa<2b);c1PdJ7N+3#nZOQJA2w>M{4+#7ut5y}3BCdN0B#@?fEJYrHi
z;5)N96yo+~lRbw$eYy=8jW&)m?ArKQS)?W(V<1PYP&onNG}%Av^?@HJxv(e&kPgG9
z7~HQxni{g*LDNOky9=q!;?%l&HMcm-M5hUoa>K%(xwezWALfMb&ASVX%;hxwjnxAf
z=LRpF2?pCt;U{opN8K-X;6hh>3(nS#O4B~V8^#gp8%Av!4C$RWaVBatg&s(7z2%KC
z$_))FR!|Zj3W+(DOiy5iCT|FvJ4bgvy?9>|(3(Xt7Xt$dtWxeJGGbYS@yY%J@{o7-
zdp0>zB3H(a_Cn~JQbaR7KFy4gHhF!jF!tNXf>OrN1-fLr8ZFzQpD6yHE(Z6d)3TAK
z9o;R%pwee@it~4yT|Emp(YRm?+H~0@viD&&b(&npP6G_-biY5Rq%^jqz_Ojw2vvD&
z=}4eAplPt}96xGwi;iOhYqgmq>tdDfY*e7IGn+Tba6m|IW|g!Sj2psQvo5wO)Fx~&
zZIpZ;UfK>p@@Rr^M<eO*_?{K{A89*_$9sr}Do;YlUNdURVDLp1m>>K!gGZb%<6`X3
z4tLzmh=k2Fp(!ym+3Un!hCWN}vU|t1B0b{4I{A2>*_`9D==^l5Yz;%1{#W9DIq#n?
zBmy2e;*TO6S5|#QBG4ii3T0D|sgN*qHIjU4l&{OG!B9ocswTupz!>t<kEV>6_(m7Q
z#DeL(X%2=$Ac!WG{LR#3142|V_(kH-L0%c3;ntdKD1xTqTP+!0{G@Y$%)6g42MahJ
z6D62o-R3wYvzP6hE&6OxP5jV^4ylVnB-xO(k-W@+oEp@IY#_JeGp6d)yjqcn<{~J=
z8YQ!~bA)HneSR|ez6|F!o?a(-Zslt-4jCOEPG&pLS-aJbRUP;5KTbI}R7ttKZi;Aw
zw1m$QM0-WfGHZ;<wp1BQ(Du{#KgwidV$ST`JmDLTN;fu%8fa_{!1F)e%_>_f$9Xul
z8^0{~j7~e$N@vjbxW*C3sLJ0soq)-5E9cv`*5(ZILA;!7Q6~{DVr2JoGvZ~0zn&Eo
zceZ;;H+lo@Om869D*(o<U&G16^?iEFx3eC=^F$-DGz7=To_YRU;C{=W_LnQQf#LOG
z>EaK>KQ|0J<?@koVAgGko7{ljyxY#6*t0j2mT+LQEPywl;O@tgJP(b3nDE>FGotb?
zJS+nr<re^o8JV}BX8$r7h8+OFbe@yC3~p}Yc>(}_Et{T_BQ*8a0o32`>`0UKSbZ<a
z2r=`C)lY7G-iFwpwrOY%@;{Cr`us5Y|8y`w>gpa}M+1=|sZ1c|LVk*lqE$8|10XSw
z|4*knh7&RNitr9dVfZzWeLE<B$RGIjyS1=U@*vwG=_Q?V!--EyWQ+`?%q0<r&Eg-!
zPtvo$kQo<t6x~2VN(YrPqDgX>&oahn{s=MD!-7!^v`-NFe@FCt{|EH(_8s}#CvS(8
z|1^gJL$pBr<NZS~Vc;8^gg!I<<{hK>koZ&kSNc``5+HL%N)!JVh#V01a?*@0>cG%|
z#^@NA{OtYS0@y*27LnwGcWPjeP#cgmq$pcMpb{8{dys#b9>rdatU!yWbPY0xA>hBY
z4g*Yf4Twn2B#F^T2cYga>Idxv!A2U!hOvY8Hlsg<$Nq<hudW#k!IL)8zB)%rTNFL-
zsh8iB_jCz7h3mF`f<5u}l83<$>M%pa!17@71UqUD-~-ObUK>N>50H}v)LyP9x#)(3
zHSu}m=q5X%st6^jLm77m`hpO};(^I19gyl#^kS>zLInRPX^=1vJSIGxK;#&zJ0_4r
z*7(3Q>G6t3iwGR)3<XK{I(bqfUPxja2oD6Xzq|$#P>^uEzySFC=m-@h>J4U@S47*n
z1_U1u6fZy%ggxe&*}}c-0G;S`=3oq&ztAQBgdQa3uWvf61>pMcrC+=sk`J3Oasq-X
zAPyg|VBwjWqkBk6^DIUF!Uvc{XfOy1Z-~MtR}3t$uy&8tKp<bcQ}eUbC(-+wBZ!VL
zN+0woNRv$ciKv4pR20%^$4Lq6?J$b0G5hfTDgKy)V={oqAjQCrCL}W*j}F(N`S^>!
zejp$DL!*WtxBGB;%-RS)DWeajzuoH{h?IG;^{BX%7$8j(5>eZ;{=)?26pxdy6hDOh
zLF2$FrO-XTEIojQUX%6a$5L=tMBj!(tEGrNr%c?0(;e`>`+rm`<rRluF<g3>bOeEm
zpOEDy4V<`uzL*UshH!oLP+MQIWY|B8>JGR^RQSk|OwG9@mH?ptfo0R?-LcRbIwG-#
znp7GAj@TYF*wMOk$XMucGb6-R69!x?B@|^6V~q0e>jU`DALGw}U*EDG?E1k^)j+Qa
zYw(5~0pkfL<Im5Y>}))UJ{ZXj#s^a9fXDC+;`4qj{w|zU(aYU`Cm<zhaw-uFSRe@Z
zGk<D@<=PMRvs2v!z{$T)>HRdp3k3D@|1o$ZgwDY2)_Am-&__Y|uwa~?Da?XHf)Is@
zKCdV0O(zftiXftss4*TK#{>Oj3&bHJ7zkn$hUx%w1^yX&7`lHtX><Febozzl621f8
zRG#nCx(hivA~Fj}vJw{}2q6enC!!<RrUi6i`nrSsvU)py-W!(<v+!^+u%%56gJJF}
zU*)8(JH=4E9%zI#Pdm1{zO9`y7bq#fPm@M~$P-Hd@W@PJm;LTT4&QndGP#7>ORZye
zb?p)Lax`cmHwp;Dp0vsl5hRdtlSwdA(G3+R!Rd~{AjZJZK|vIe1x%hsnUYwaI5VA)
z8MYjcuXOI*1N<AwC*_Ur8+Ak;5|~fW)A<xSzZ*O9Snu@szn>lthAFQtYk1;hEyTsP
zLyM!j3?06sulIyK0K>ol8N@maK6mTjVGPO!37J5_Gc3WAGtb2Kk1)@5kiAQGm?GNF
z;{Rh0<4LNXxHmlRa1NS3*lz56)vvR>>vnZ6Q7>YHbO3|QvUGhcBnAVq@IJ@5eY7_X
z@gSIj$vx-7{n7gWqXS0&;%O1r*l#W0<^I|H#zGjzgZy|h&lYlY-uJzX-BnXoF}ytr
zO)q5;>_Ty<#4Pa7-FB`!#0{|^OOh(6g}(grSa=c$X|xe{M3}JY{79)0vh1Fy<p3)|
zzfw-Z0OgpZ$XXNr;y~>V^qL=|{60^Y<)!A1$BSMY!M1}oBW5r_C&>A6ljRT3-{wbL
zPdj3gw$Xf2pTf!>#0nc{%<?Gp>miHM*nZF7kn<+a05k+3fMfo3F~6hOgb%e2!}CXs
zQ$QR_C#osg4#ofyo<akXUal$84ytS}L1aBRbG&Hw;Snx=O(^n^yjTQ%yFh8s8bVT0
zf)Ic{{m?(r5NrbgE03z5R)EZ4Fj0XIt-~g3!yvE_heW<?pFSj#c!$*toIv@>j>LA4
zy)giJMqWc4P(Jn*RM-G^ro_itwli<BtwExBe&3_+1EEiGCt-WO?*KnX$?|_XaX(c4
zSt@$ia3EO)`cI{)b*|s9ALee#swXv(1A$~@6#avD)*0_eYx@LFZjd~FF)&Ny+o(<-
zyLCSxW)dHa)<Y(t{x}X{Fm;wPpVVRepUh^;NML9Rlfd=&SBay34B-<)==u%Ccg>!S
z|7ilFB>|X=x9uw6E1WHG=*O`dSQgIpl}O5CU2sTKLg+NxXF`7m_4XaYcW)S%>uAuV
zh6nbrcQj3#8dFMB%*PL-ZK3Q8Fb>rQdjd9s0}s*h+6Oxv1oQ-eGt2#)1EaZ=zrBAc
zA*nkq(tp|Fw$M@1J0W~Zd!zdjln^Ez7E}Sy=u0wERK-E(2a^mQ0rz%jc2)Z@e*nkc
zU++`QP05S`AD*Q9N98ZcBg4dvt&RvX97}}85J8}ksvv<jAMd$Bv%#fgg$(jVcorW9
zWgZ?aXz-3L*TSgmI=nTKGF$=-LPi$o-s%f<RmsOXK*dM`kf+oe;9nA0^dZS>(wJfW
z#5~Kg6@Ez{5QOzWi@`<?NEc+Gzqs)4vDRQ(+O`h64$KGsSlR<rO#xmR0mq-<kI>40
zx&8C_1=rMpp-V*m5TZZO%<IqLkq0piuuMV_=!Aq1LUGUEHjl3}g#|fppW@DQnv9{u
zLl5Sh^sUT??W)$ca*>`A*#wD?5x&Z3=VOv=Oyt=INq^6`PxWNRArOxf^U2rwN327=
z#DT;yFQ|>5&H7I(&&Y=tolE)~^t=$o6PmCFAupljAwvl|(kKDY4ytN>@0OkprwU@b
zQDFx}5+u-Ui9)dfg<Ayv{m`@pw2&Uubl3|)vTKlHHbImoC9N|7Eo399fWUy{NccR!
zbBCqxMZ-zB=D=vE69BMauIfZeXiut$7F$ue4X<H*QT(i584gsuEKD2&<do7wKP037
zfe-$OHE$me*@w(Y^2fS+U@M4UFZcdF2i<Lxc67%&AUdGfpA!IlaEISv-5+v)iGcDt
zCQ0jT8-rI*I%<3^wu+N%I<A|J<ptwIZj3aE5<8bn4RUhVg62bmC(7csdp2U6S}{GF
zNUBt?0Go5GrrL<dnjByiVA4!r4c+3RE<|L>iCJLCa4`d5G3w6{LnS2)lu{H`68!40
zYox@3Fr_d+9!U3U2#N}Ig_)e~H1p&4!;X!JSRSF859or0nT4!`Ks1{K%#aANqgtIo
z>%+exBRfO+=j7;lj4=`s0}T-o5)exS(a=AWq5nYe>hClk1tv|Q;SnB?nFpB^-oBYd
zR)c15L6mW<;0{I9rf=V3gux7$NipSltu+9doxjC>|F^zt-1!%?IJAB|*vs#(#0L-&
zVd!roe$&JtvpAZG9Rw#Y7;->K4N(y6#s;>s3N8>yhG8aRoB~9QvJ!x^ELk{Y07@i<
zLsT+WoRWiEim=*138{IN;OJ?2*_qzt4y(@=%!>@~!W-5dAf`_Cxv@F22fYkn%mW%|
z+_)%Z27nLx@_4ok4-~+Df)0Yq)!3iXYxMrFdx5QMhSA#uajbDueg|OF{GU-KJ3Y+(
z#=49SI&?rAk{HJD$HFI=+4MRC)de9WQA8e5z%nev$S4obA{=&-ctG%k&-nymJkAnQ
z$^CE3eLo}$em~#i<Td?musU-H>9qT4)9rk=29K;kv>>z@K?NY;1^(m|w$cs|Wd`1)
zi^Q5jH4cNKoXe&l=Vyk41DMFPaM5O+Tuo$g8&ETPui`P~<Z!VFm6;+B2nmA7<4*4+
z9?%`+whfk11+YW!XH?K3JCgn?4?PjZ41x1PK+BGG#?6p{rPOH52&<Y$q9ZWnD1Oho
z?)$aXn8Nk;C}^CEu+ExUi0%Z3UyNOz@ci!R{+<oRa1<{w!Eq6ig3=Iw-ztM(-Tw3w
zK5-P3pxFZvp$-tTFM)}B(C0%w0Qx=1dTr&7boU5LV_+c{2(l7T3ZGCWttcp&*-#i^
z)B-~OkjDf_9%kTfhUj|4*T-+_wW7>4bsHcb41iMo*b^Wo8bUwA13^JSK|oMY6a@i5
zP!tpe0Y3-T@tbgFKChw09#DBSDKM0&1SzFDUVwss&LYE*d*m?vVxAI2aLh<S3ryLZ
zPNE>t<S`L6kq(0i0O<{k(iAB}VzOy58Z?D50fQI>*>;kL5=`o-f*e4Q5)?rJONy5e
z(zYW5<jllkdj<ke@8fXnklZgxp)~=MxK@w}f#N=uQu-TK3J4FHs+ZEGI&}ewGbrih
zkNRbJlJt<;rRtaFj*)0-285ub`=AX9{rHj#5aWMb0rp4+(j2N3JZzum>4Dub^|TR)
z8QF6UBZ36gB8G9mLS*lR=>yD_CQ9K@Qc%Q|sHqsA?}$P?Brm}uhS;8JlK26TO2MFm
zzzjYI)ItZP$Id6DJxFl)hhil?;P)ZLdLhGMbbLZx9U;y692ep}@C;X}UPwu#E%!sQ
zKCOfXz{G&h5juc~uY~gWp**@yYr6f>ZJ_K2e(uSNc$f7`bVHIHHmlteGKSSaD@vDc
zQ$V_)$bwRp`IZBLPU3AiVn%#}5aI5I2XIY3N~Gxnrq1aOl*aukRE}jZ8*u~rbIfo<
zu{Q?}`>ccq$#s_rUt$t7s(H6t9AMfI=?OQ6>NKJ3@&04&4*?CJ!D<9S=9oYu?gkry
z=v#N&WeH;dd8<q^jgUYISO&+M_9PxiG$8;T4;$jddXuzyByvLq@F}y=>h&6l4gwuo
zO^J)L>K>lGIhsj7Ytqt3yH<nEurx-4&3-cgPQwE$%*vr}>=1wrx^M+yO}&OhDW*f3
zhcN4TM*I6Jl6x!a9g_gG3kca0M$4UnY#VHJ*a$~p_NbI##3Z^dRi-eMi!l}nrbrHL
zmSL3!8#<R><EgAojqUi9_=8vHUrK(3-~c~Fq6G)ch!XJK3PAlA;S)bBr1zdJ`ft>F
z^*=o~WOwUYV-|mnq&qSd2p@EQQ}A5H5pHEv#&K@Tm?cZP(p~MC#^JbbJDY~3w;ExX
zN)%ySD5fKP`I>8zW__%N=5As|;}`f9A>CLu#fuifpYez2<T>(l7fJP}+8B=H><iZc
z%7O%90NL0!A{_)H$PeABBCzZIkt9(G_6C7_;pZ+ec5&*hZ71UX&nvBV=b{hNNDbpm
zEeU{3{g~`&JHT{clE8NVX@o{XX(Qj}u^4VAU}EwwJwZ|UgYlsNhukrKpObu(_qO8w
zEAxmL{@@A38I_d$?tb;=`@(iB^J|I8BXeb42id{xL%j?D{9r<x0B`^>K77+CPU3ek
z;EAw2(m4odL;&ESFFh;YA%nRdV1H>NAMb(q`(DpGZV>el9}y=HsLR}B$E^O@8Z%-e
z$$UE-JCcXOad74zMudOH!mpF=e^=YL{O3}?0%-Q1lK}faC_MSwpz*a);cjy3wWWuU
zmMBUc1J4+9RJi?_sqwQn*2(dE#1`OL0(<;2lQJY3BEuR=1Qh~b==c5vd}YBK0h1xG
zqi{3<;#~>xx$>dFPvSHO_zviMT`7u+D?2C32NXJ>9-E?mf#i;r{acSPIU(DsAV!58
z1s=(yKQ4rJ2W2|-Pv2G^8vr5toe1|y+MN!~3JmTBD&~<NbQGSu{VDnr1M@NPl~8-v
z=Oxh;8nqgO-E2n6z>R(Gf$!-LjRr;qkYAah37HN>2ao^^4$^*@(76IN@X~1@3`1ri
z`Y)P8iP)9|p)LsuP(u016$FuC^Pp%p5Ejo51c2)KlMF+@=Fn^50}#Y^s5v5=4EU@q
z#Cgyo-UAUU`Vc^n8}2_2V4(-o5dFkFw)O{TXwna{4>#%}E9nH-Q;WsOSObg&0ZhnX
z60o1+WAdG5K2x-A?AB=agF*E}NN9!smJvTV$@Bzn6XMPgS97*65*_w)tf^rQ41VZ{
z$}=IBm3zR50iZ2~3=sRv{*GaQccA~zu^)EGgZ0ew$)oUQqtDK;K9lGM*i+Hep*oO2
zJs$-P8T-tg4(mVF{-<U<qNod!f^H0htn)?+L_!cq8}*8SQ-Md|;vdTJ1IQl|kH#nR
zC&-7$ihRcb9gu_+uyDe}9S-R?Xzqo%gDw8TAYj;Bj>IHk5Cg&e<FQTxr$9h4dmRS=
zdgUPMadauzeP@UyBG+IYXm_E#2jvb>wnoGVDBnB)`XI1qH|&Fyw^wysL%Z(@$q7+K
zdwPL2kOM+MK%=1rI{@nq(G8cl>Q2XBjSM>~Z~LCOA><z6eMd?$?oOukx=$(cQAlA1
zeFPAK5&f(PK^&nZx-O_Ukj^r7=O{eTc?>|xNa~G_TIneap4viB_HYMjDzACSa8EeP
z+{nmc1>>+fz}f2Vak+g(Wjw<I`i^{$I3R+AAb}#1e-d3SQ&duDXt89aODrDII+M~K
zsRPaVkTC56z_td8bs_0O9te7PC#2?&E}|&@W&ywh$})|g8KDh5yRF$DL#ucJ@I%`n
z>_f~DXbZzPJTPoEW`JW7%K>5#p>m9jKn8ILxFJ5Uz?1VbIglU-(ozO<4oByV2`B1)
zugB%gV2mV+BLm_K^#Wmteb_}k`9RIES`Z;U_e_v!ex1zt^@qqta4w;z=K%_TU&7wD
zU__smh8Q794~ljoLY)uI)9eT57$?NXA;?Y&w@l&8wsp3mB#H_E(T5#QHN{a?Z0KkW
z5}f4COUS1eb!m*SrgXyW;0_B*Cz!~cbSQZTK1%fPkagU@ZIwDe(k+5@n=Wl3)GDGA
zX<d*cpq6zsm~SRX1K6SmH-#%maV3(tz$kLnFt(6g!DO2j4k>hdU?3pKUi5aLI6s_&
zLwA@**J_B0q7_R?L@?=ppx#M&d6pdDnG0GO1~xcEl1a-^Nvk)KNHI<1yGeruSL3(H
zA2Wf!xX1Q+>!&!tet7`t0U`WOJTZrmh=P!i40#XYSRe1t7L)6A8RW4j3zNhMVdWvf
zG7JI6g&7G_*)%&j>m|pUQhVn=F&v+JjC?QX{r}d3dl6{i%?UeHSN#}1Ad|KTGbHYM
zyj(Le<@>e@_>gbjy(ie=J~DCe?lTODtO4X*RXH7*oq>t!@?1Ou+#a(G1gWnH#GsAd
z0lBObSd<<X^Nfjh19xzLpn0B)_lpK12nd**HI6^b*Y1aN-$fM>Ni`Qvw&T}_bh3Q+
zW5Dlr?hOMC7?cDGOazNle6Tki&KL9_;i_`&;3fxp&!rFN{@Uyg2nURn&Kxk-$X>AZ
zDw*<u3F*EYQ25f=5wTfM!jbJD?)V@1Pr7a+_>etE%5wZ5PRxn$f!kPm+NfwN=gdas
zf(PRJ_&9y?_7T+ZHVOX71>l{iOflg&tP~(g2*BYVS@_WsI073z-eP_!#6EOYEZn8{
za}<t!?#(aV^uXJcwQawTU_@c%+=Kquud7A~mMkU*Z=Q+BJDTMq?_g)A`p0niF+<`W
zLDdXH5InLu_Pk;9^v>=eoVth}v=<OR1OQ~P5QU)IyAA(Wf1wU4Xq;1!ZUnFe_ogBv
zwhaS-VyEFlnC={%Jdofn3nYigq6=V<DogyoBHYlCuzad=0hIuMLjGcf+#qWAOO=Hw
z1g2mC#smi6t^Hl*QWqNm$xdtDjtXfER1<=1A@KsPe9h)?=b2G?q8dd!*aMy5Dc3A#
zkg+K{_4;{=b}~9gp~qaKG?E-0IA=$gyudZF(vBx1azW@2G{48v`Y;FYhM>=rG#>#W
zso2{P^aAr!#;<e4>tL!L<mJe5*#PcNKt3lW^-y6MlaZL1E1v}FA4+n2mjN<F_qZA4
z+1(>>4%7uS8bmLlprE8JY^np?G<o?!_XIzF4E4T5{z*ZI{(^S3tW3&cX*7MH`lLxf
z&#OSg`+qpf$)$%UQWH`fL_VVcda(E*hogoF#wC!$20Eys&(CEogvL=U{$Yw5++n$m
z_o17jj?<=2;oK`W#vY*{d78h1q8(BDe}fn-%MpO2WA%ff6efd)VE>K=)b}G`q7B1%
z#E_CULpibbzm>)Q6N+HGVL(Wf50rTWCSlu#sUd&C`G@ZvkHy6PxhE11LC!J_1D9lZ
zk5C3}00)Hs0xX#Rq}?DE)wtd{FUY3uxMV@FM9H|4NBWMY1LE}X%*6LR0_pv67r=;{
zKLiJ0Pija=gh0KCMT_{0S~L7txlQJ#Hfv!Hpe73=Kd*DZ*3A_J2^5L3k+0|Y!X9+N
ziXXwF>H7sgXXK-4_Dt%2&Xk;hrR6x%l*;}4rK*UDOIOXzw#vg<WEgcmSPUWf)i4A&
zeu*++5)*ty#zW2cFa-`T=XUJT`DHwp>w-X~B}zgxhR+cDNAn?fHb8XjLKNBN9q4zu
z6g1<v9^~^2z@6DUsRC{&(J8{Dq0qLnNHGyH5fL&Je|yvoM~Lz<`y(hZ@B_M=*7B?(
zBUBdJtVBksAG!L!&GPyjAD8^I&9a?HFIo%vd-b;z<N@8uLR6ec1Ypo@H@D2656D{~
zu^}`?3Ev|eXTTu~Du{@x$f~RLGs8ToM8Ocmo}z6H?`cHA5K%(sL)rcl?2>6Iksu<e
zp=nAXlpvIb2&jSxl!looh>(b?D57MhilQo_k|vO<peTS(Zvpz`K5;&r!p|{|jX+qR
zf&4*<^RQJvCX7xn{z#+acvNQY?S{-d8X@kSL{52ZJB}gpS_k#1NQg)JWNaxA!Q}bo
z8Uy?6u9EDAp_8B450CoxOJuBXs=<UbhouSZ|5C~92f$+IxBa84X|UG0N_!i+A(PL{
zq_k?w8Vp}aKA1R~x^;@U@i6D6NAUYBHM@(;Xq5gM>gmV#^nU5MoJ}5~)9ad3rJ$Oo
z75>O<J}gYQNtHYllNflRfdP<=1UzPNT$9Xh?>VD@jRyoh?-^g~iG?Uc-V}Kh5me+W
zwE5sT!1fa{jhXuk>O8pCP+vqpgW*^jlZfLi7%^9*1AXW|K$#ia+rmddF)*j)8l0Qf
z20@79+SD@*Mw=mEWX4dT`rMl|4T-WJD5S{6f`}pNz#ah~v@Zyx6ZXiDQ5=YTYDs<E
zQ%t>l!xzBQu+Z}Q)MOoDHb0j(5=$MoB?YSqDrIo(sSUqIJDfWWbpB2BCzd%#ewY%F
z>iF1>tnY|E3?AFYOzDnz;i@{t3<A56;>6lZ!lQLjRSI6?0NH>-d|<Rz)(OQ`5g)f=
z;mf=^13`9?&X_26Ao4MzcBiCT)p&KUcFlRXZxDnO5C)~Hsl%jg7(?|Kx8i<GAW9Rp
zUc=TWuME?&686ppW=mn<3B~Ad!60FW8rWQLqZA}CVA~*NyJZQ`!CBD#e>FG#49E9w
zO!v|@sTmf3q?;Fm7oCZ}sx7?$ZN}Zh!$*F&6uSh85U1^dC~q9BAlFC~Od%Q?0A-K_
z9@2q0Es~0Dwg?T=Vw7Bl7(|7l!XTiiF3qMN4}B2k4JNcyV=Rp%gf=t%O+XGL?0sV=
z?EI(Se*hLg&~pe;iTE>I)t7LsatQ%41%anOb9gn^Z#<ZNfCf`&fS@9H@xqYqvN=H-
zf97}C*|8|2^v-~~CO@EK!<t{@P@gG@)PC|jIkcm{uWm`&^#}+Xn1n+Jn7*FDLsOu7
z{+*z7M}T+<)dH=00G<GJLuh7rcXj(v#X3Eo<$dUB4prWEs=NXnOd$+VB(ji<rwD}%
zDEH?;h{v3s0iFe1s(s)eQ<^zJq$x8HDG;C*;{>a&!dB2|14<IP`at2*ry<Tm7Ydvh
zP7wGqavm^;i@Sl?Its24jsTIFbQX{04DJH->>)p9#O$YJOg4E3=3an@J(S&*f<tCe
zq()eB!i&HuC?U)$0&trF<dpD0rvoSlKxBtFGK`WjC-T4!<AMYOa3E+PLkP-BBbhD?
zikuLLaRb2Y6+2ahQ)1X4cs62nbG}@E2iPYA@ZJUbJ@d{=>(ZYX9|&k4s(%LHUq;bH
zaMrbIVkn8jsv8&*hMG-Kb-)st`97HtZ;>!a4RE#B0G)*O&c7Zh*BsBU$Mk=^@WO~Z
zAq{9g@E#CIe?ISbRafj=Oso1o>Bpxxhzva5N6VA$MyIpwa2FR)&}_8TV4g@H`Jg#@
zu?_Yzxy2eRBVoBa;2yby!@%>hJ!hqY1Aw9YiMOm^`R3oG{SD*pg9Ap)7?0WQL+N@W
z_fXTgkfFn%a$ev%gRlfRq1+*$AH4E=5!p^qAL<jf0PO2JJ)KOUr41kwa#YjxIs+ce
zK?7ZeguHcN87e-hCkW4PArRzt29-^Vh!V~Oqu2z4Mv52%(IgCmW+RFp&*8DT0{c`w
zDTs3r{7wXi`OxvmcYuZ$_=BK8MFx<Be{-v-Iuz3Dpr(O-5)uatx_waih8r054Tny$
z5k<a-9D#F_^?sh7LvXV0*g>v4RfhBu|Gx47@CV$4hfqLwyMT4Fp~yo91BwyjAbikR
z4*>I_-tLEw(+WERosQ^E$Z1|f$?o*PoH~cn>jFqwAH<6CK1cY``A7G@m#iWziuwRU
zypB;Qe}umy_rv^)u?35Y7Gw8*J;{y!?z2Q3cbIsSU>LA%o39i1>3R*2^K>C#$z<%5
z_|1p-L3BTfj<4yDAuv>gkSiYk=o9o^MwE!g`w;j(*MY)bKCC#L9!7&eR)~iIA>I`J
zkLvHJk(>9gwIH!@u&fzrHj@#2h76AeaW9%Uc&`I!(F6yDd4M1&C~a+?0(;2LCSWLE
zKfHb6@zIqTfKM@z5;tRkJg~Vb@%tvOPm73Q8wYuS{k+qJ98d4rUr<8<I$vPoIVbae
zQwPpMZu!}NGlQVpLWd~>0vv6zR>c?G9-0m#nc`ko3=RKX{!L^d!&1XT1%qhM0i}dm
z4otz90|-Fc7!5RI;MS-(gN}jy#!<)=(*i%)J?`!0A8?v1pd)a4&qSvOd|TMuVK2-d
zAb{{diPf;Y0tPV*PH(;1pMX#kbx{0)fcFLHCOmkth&mqQBX@B9Y2cs-?v#(gNCYMb
z{0+GRSj37+ast{d2kU4|(hMs>)Cxus!sUq{u_eF-rDzWzIv7EK5g0pAr>YnvgrtY#
z(jBA49&QI}7>0+fBg}QZ76+mo1TIlAkU|eEOhQjZecT_S_*F;pU7+v&;T%J_KbJyb
zA~N`9?*3Ba!bvHe!7>9NkQk&InkYCMETM>F6XWW(*Yy@hE&k0MW4b%vxil0#my0v?
zg|O93bUJ-HEN+pbtP`Oo1UM2IQl~g6nTVfLEBaWNe`;*dUP=95<lue>0L(?kApy*w
zjT$3O`!^g!j{frxG5D7#A0#><<98qQc6e{+-991h1wV8AoG%i&=_(-RnG4Lo#(;p1
zvSh-ZeZj=nnsz-V0qKrTi2X^w&kuoe)Z(Q{Y;1IhA&!(KDKs@er2c;Cp3t<o&`KNs
zPrjKAbi^D$bs8J$6lc^%N<SZlVezeN3)v^V2tTT>n0vpH@6LvxS?&=IIJqXY^AxaR
zTTefnz5egKk!{%&y|DFjLzrb2j0ppx0A=@xeKH}U;>WKJQ<IWrVX<t6*i3CFiEb_O
zNO&9WWe3OST9R}_x<pQvc8qaDo++``b_dw*xQ*QJbuJ5n;=QCsjVYoM;9;Oo1_QQN
z-7gYaJLkkoo2^w<5wu`fMi4}Uu^p{L5)aM(ED-d)htb@BL{apKtP0$+h%_Pi@eEOr
z+Cv0B`VfX~q^1oa`+=1MeSn~G22dh$h6y^r7UyfG)5uB>^qNvE<j!UYAtU&|i3jcj
zkQ~_X((O*Vb}9D=Z-;2QTns`{cP0i<JpX9CfjTMqR3rJ5P9i^<4sR)5n+Ni4q5Jw&
z=d4$Vb=;A-J|pI@!LdDvBgl-u5ezUtj5ZJWO@XvT=q$^;y8v||Bby|S1mbLh80cq1
zfXm*mB<oZ=K;j}D;lbuD1`v4oB$zQYA9scXQodIxJ%DV1M2q=Ql#zpm1dqreo*zdz
zNvUB*2WWWbWZRWi$O(|hLonnvc_BO@wnJmakjDWi9Hv7uV(bLx>X4kL)g<r<CX%!p
zSj4%VC1#VaJUoKrhr}_Tu2&Ty335Q|#NhO<@wo^SA|NIj7w3A<nEOw9bp7o#iSg?x
zbq)u}KT(zKH!w|vK1?*0*kDyQQEL97vk`HdMkzE`ZT#C)67Vp=H)Veu{>t?gd&aQS
zhYonZY_Gu`k-(dlQ8D$xzrik%m<C?=vB5Z>c+_YOdrS`FY)`sMhtiw*e8Qq}*gTO#
z`N{7s(mP1%N=QD-jBf+U4U@!#Xo3PE&~#o8@tbr)bDZ)72GQh*h+rd#zfYIP51kVe
z?9^4Z5*}(Dg{>whli<r)HUpis_KcCaCL-*&k?fu>=^|P2=B={Bp~sIi2=|QX_WnM#
z7jt5NA)|={MF;jCBoG*$qsKh7J{c%1hw1Jrh@mJWL{6xy9`U?f{50?KuUQNfu#+Zn
zODu9t(vWg6W24a&f`O*#g+v2Xl|f9pUR0ZQVsNYmk5WPM));VtG#}dhW&e)Lu*mL4
z4A=X-EKLDK`Hk2h?R}rsfOwPrgf1OY6%u!u?+gu1GMkOW`kkpE`M;C<2T;u@(HBtb
z8iPZP5KzPBmvaF%x%D6DNRRuwNo}?rszR>g__j~<jZ7cq2yh3n_h*3)m^J}A-XQFg
z^!H>4CL}QGBsrv+C$T;LTG69DUv@HKPne+fB~S9%8Y3)laxxS8G#l(}h7d}3M;r%V
z)O#~j6i{<BjMN-)#$+VN4lnKTO9LV&v(o4GH$M%nW_q)e8jL#XIRX*{gPJDMKd6~>
z0B|DJcrYNq+F*1+!SD`6p=$&@Z3;cM*KfNNmzqAfRyo0AzB5bbI821m5XDtVI5DX`
z*kLgmnT#j=y5s(I%%J?3b-(FPwEi#A{9yv>4$=GN^F@R7FnslbR7o;H_WjO4Uz^)|
z1|OkS6#A<)V6H?R;F#%^J3bjPVXQDa4#(_ZLO{|X1PDK^22I2rOdo|FOwcgv1RgKC
zLuP6wCu~g70Z2YSYdm`^P5T7aTSvj$la{bO<WNTtx_@1HceJG2)yfRO^JgBkA29u$
z6XookbbI>&hst6!5duU+jkL!oB;#k4QQ^C2ee@&m&#ijqx2-m@TN=38W<M4h_8UuM
zYNn7g6JY*8->rthwXlAaGh{Ig5>pV59*+UErK1q!zS^ih$wP*G(7{3Wq0eB4s%|Qd
z6MzhObHM@GNDsq+GKb_-<qyprP}|#D$Pblu*$(JPzCv*flxi_+s*?tiOP{5=h?rl8
zh*bk<17l;d>ZC!S@lNU-k0DeP6rE>08(bU46Nw}UBD7*B#H<pdiW*65wP{P2t+Xhu
zJwqZ1En?K(TOX}aRjoa0)F`@WRqfJJdyl?-&-e4~ob$WSeP7rA!f8Q<mfODcB2qyW
z;BCYvQOEMx@t5&4RS6&}k6@q<VkC!ddbcP-Jb>3#vN9D+BWc0>186Ntt2{4CWGNZR
zbaC)vw6HS9aCUX>AF_`q7z}Z$mK>~b*N~iJ-O+h{Jak}t`3`f!d(L>Ac1B+PrXmEI
z>a+K=nLPzCj{Y)WZ4Z0jHPIlmcJFh*H%y><&QFie@mah8sjc?7Y33v{jsS&nsM2)`
z*+6|t9#(aTGd3m6s+C~y;%8|a(v_cRe{K738>5>G+YSd}`z>Yjm-~Kj=>P07m|65Q
zFiJAwHadglChFGS|Db()Qj7Buy9D@wt}j@;Z}f;YxcR?(PVhxJ!zjnGCzUy)3TO2{
zg`C22G6bx2*=1hWWuG0)-Hp*6r+wy%k6R!>CNKk>i;l`4l{XNdyZrqsjA9(^tc~fJ
zR4yH|bdKn=tPX^v4*TL#T9BiO)D!kr%}MDluX8HCf!yy|sJgx>rC5uyvs)qOMy7CY
z^dDg}Q{?%ErHg%YI1qjOXHXPG7Fef5q`ob?yMI|dwy@#)2OFK^w%%v|3Io*Nyzle2
zNAF%txY{he2>k7M`MPDQ#Z{iKk~2@8%$fPSGD-%l9?C@AnrW?lrbZ<Q^~J%RGo(K1
z_r(2$ie!20u9Hg+!JeN#bCt8#e-j~4+6FA&Blv-_Rj@|kgpNI08_y=I!yX0&j@s<i
zO<GzlN-oTwhz1eeQWV{zWb;(Mwebww`GxUm%qFw0Qs+6MB;9@g$-?R$l#YJ*RP6lU
z#qYsXT8{P55@=ND?Zha!|958RW1+y0W6cDFa?EG0j2LN4U^bgmRj1X6wHplSJ_Dzh
zYZ(rvJ|66>BC1A<WoobkW5MiL1a95QXMe7qKkvLz8l$0N+NqXN+Zf9ZNl;Y2HE<aM
zXnvO7<_;C?j(Npi`<Rbj$)nkn#)Cv>WOP8mN~~Tbe}z(Q`R``MPXeF6ooGg?{&B8h
z^!v^3*V{!Gae*84SUasQSd?*tOr)fp=<Z9NYJguT!T!l#&fJDsdA+LYU+~H^o()ax
z0V>VLj$+$yOnMk>Ir820)|Tv8Za%8Ferk5AT=K5D%=SN%MnNFn``gjlw$X9^aN%bH
zmmV)_u)AB@O;bSRje%u^RmxQdHy&$)-`{p<05fO~`Pk=VZaeVz*H5XYb!VS;+!cK)
z!&D?gjmwCBT2PVv6b{&7**Vtc-r<X0*+|acH$vrnK-nOI_<l8QQCsE&dwOYrw;W2F
z1FyM${*xI%xwc{%kAx9o-x>lqAb@~8ub1VE0UaC;mD&EPy|Ij<^^X$n(Ney*>wN+$
zBr#s+6`{pbO<g+Q9S`C{R&XLWrT&hMX=iAc-`<R4)-%7SW-BY@^{L@_!AOXs=gdzq
znBDUo3(Wehd)=rvD+)o5H5cND>y`2_Ni=Go$&hHiah_P)&@w0d=BQZnnj9~PX~j9c
zCqhTxWn$uDT;x8RHMZlu|A*Osj?(yPH`B)*7WX%AYCi`JNq<qbR9fX)p#WBe5#7-4
zp<Z%7eJvG<Z@;#fzuLIz3~pxQ&Z+#N-;r3MdEe|^$s_U*Wrt-UDo2E0_xX!Xt=hkL
z4*kb8?B>j``^dXOgnzsk<Tvnqk0#J(^f^|NCr>i-+o;%g*q3XZun8YY#7&3V_!9vx
zxXwbNl3L!hT4uuU*Bl9>wAfX4!QUse2bGO9QEu!D{+mhNeEl&Gh!9MPx=sa6Kewh3
zkTOX4vN(tiE2=q#EiVZoj<uRu!HevB^dq+2V_<6F#fCLo&dAAAd(IQj>>aVK{POiV
z0l2ZjPj^E2@9RfPW9O<!Dso-5RDC`R9r7()y5-;dJEzjp_Ys^ad&<x6`RzZM)?OuC
zB_HYv-?4-+lu?A#QV3et1?^x+ycl7(!E+EcqSAZh4XlBSC-c<blPuf*cV+7%i#Tu1
z1pxEN82klLUuG9x*Oqqgj2oxlXb12C$~RJfYb#dJ`yN~uasC)d8sUau+8>~1?O44H
zQ#3%86aB<u%C&N@`&yT~dDcXN3og}YKC^PNqV$Bo(C!yLPEnfH0P5<7@yY@myde8f
zy9R$<-xpk-C%87kA-}d?0uw*$bx{PiRJ=@v`)()7Ip#bUXgyvdWHWF$SY7eMEvEL2
zxmeS~4Tf9R2204!B?F&T34NmsS=Q4#Q3Dsv<z8>_=CIG!iQYTEUBv&=a8n%dNO$w1
z&R}^aOlN#9&VLpq1#OIs{VpWM|C@O8!z?0i{!hhg^#MR|HU9h9KjwuCPTS#4nmAyB
zR}b)kC+a(%5$Wz(%EHeNN0XnitxOm`%5J1a3Z>b!9ZKrBxqa#*{PDT%LX(xu62f~@
ziW)Ify;0SX$h5w*#G9uc@409tbblNCsEpK~sMO~+c$C2pm^xisfcXQkMv&oRR>%(F
z=rcy?R{dAQGWQ*x$wN`8#zT!DqLSGofrmt$pDq%_?zg7hL_{?AohibIfuK(zEzCuk
zZsf{*LWCQld*_KREaR%cwb*K3*6lOuyC!^;oup1A8dF$OGXD*mYEq)QM@(+fxAsx?
z1g~<J=p2NQ1LrT_|8I8r#|-cnm{99c#i0pk_?MK13fe3o7VJpiOWX_om=xU{XbHsD
zvKeJ5)yXQAQ5~%K2mpOq*8gxQV^0V(b%OE3g3na)3G9erarMb{K|1PUiks06mfW=)
zfZfgSRoeGQIculR9*YpCVIqJbQ7#}d_V1hE&gatw;VA!iBHy484i}lI&Wll}1@eQD
z!Fw!;m6y63?A5mkz@sJiP18@|LlNWVgFxs!w1}FzsG**$He%oxwWsYduF1UZ>BT`(
zcCcj=es*q>Z^v8k0&uhM!E2ykP4GHQ;t9mTNX9wpGa?^h%7*9Cm6u_(Cwl12<>B_z
zesQX4sXV<Xfz+Nw@YQn3TG?2yC77Rw->8>@+Bli0%wF{s6q&tWQJeQ%c6$jj{~N^p
zk#zKGn6VfvUTEgCIp%IM4pSn!K<`YiMqQKsYm5JQL?wOFSN-ue+0Ux%h_e2o)7&yl
zR?6)3DRj1f-%S8J42itE3A?1ZfDi2+B`yL(Z&i{sp`3k<_OQ&1L+T3wTMYqyn>!Q;
z@f&7*Wnxcjth2O=kE-xm4zV0wKM_b*z>H76l?T54C{BAszi2J~dHh-KKMq>`p~X$c
zB%uv#Hv51`(-;8C)?d{~Pd}f^!yQ_HmHw2#XHHcM;}FjtzijnUph5Muf=q_{U{o!u
zgWBgztZvm@=s_98vlBHe8m=~Xy{8dn)JYIz{#tm|6e4N($3US!wn+KR7iay(PIm^I
z!`YFnk&mJnap<r7EdOMjEg@4yf3d4Lj<A#T@vmh9E{A1N4N|~Pcy5s_9W7lDzg<y~
z_3SS0!xStUII9x+>_zjwt6iG^z4Z28*4{KDQk@Oq_0I>PW8GrU=S4pV^xfqDk;zs|
z=u&)R^Hi?ivxEyq`4^{}xa?YmiZ)W_>TG0lsWz#n8V1g1n6`+Y^%YkP)bK2K>c_^o
z=kSQBCkUymc)C|qjya`G$Qp)_$Lg7(DL#SPfs%vp(E8wBC_w238;41J!(_BViJBQ(
z0+VZF_G>7Pj1mncDoR{tb7bzs|FR4WWa3%0KI7SJ#>S-@c&m*1idXlc_+rs_U8`Ur
zin_!sb`Upw$wB4AQ<ig@(P!(6#SDV8@{a8A$y|4&uFKux>ZN?XUxm?|Z&cD)ZRMh9
z5~oZvj6a}5S>YTCw(9HiU3}d0_e3#83NTZIN@8sP1-xz-azh|yymxY~JV6Ak57CkG
z>FIMXqbGgL-c?Yad_8bgQOY=AzOQ!G|2E>4QPNlI%f2niS4-;OM1Ovzq+^sszNH`{
z*rIQfLaB%KSS>=J=!B64NlyQla(%iSAG!b^EEH}~rRwo^k{Zs;@TXB%Wcx{;Jxc!Z
z6@5L*J!2kaY^iMxecD#1f#1AmPXD~iisk*S95X*!z^#X(9x7*bW~sW*{;Zl<VrdPK
zCK#D0a~d&+!a#Rpy7arN`d&;rN`0O78J94RTqLFy>L@RX>2mojU&|3x4q-kHAJ}8e
z=CMxaR~!?7rJxPcLx39jVAB38%ZY<+RW82w>R;ZR3kJ$+^pk2UAMN1?Kb>YtgYR>V
z<)wdo%rM1!b3391{6_ye-7ApZX5V!M(~>3YgYSh?)OQCK?`L`DF<+)A+bkiB4ue55
z@wPOwDHTmYKx_rkzpA+Wa`UlVYxDo?LR*(>1Q_RGI)Ct^`|>mSg)Gpcnv)`Lu|tFF
z@UGnim!5YT93W20-cpiQiP`T>t502XocI5WISO!i!S=heok)rfY}vIO>L6uPjU^=V
zJDMD=RUTTrWa*Y9%`>4-$3$|y4}J1v3Cb_n;9V~)4Bm_U5~gM1t@tXpg(7*SBmBC<
z$d5Y?zf6nOkGFm>k%&Q<oU(0T!t!sRkDnSDzT0kf1O;%zK#ddNzpye&#7h<y7VZa9
z?(-ziAd?4LttDzOk_b^GbOSS_&N6=U)OK%HUYdI$)S5Uet);s`4S{}!2nTRZ2OdX@
zwDWYyH$}8H-TJ}0W3OFA4mTlBYFwADOAO;4`Aprc4#D9WVEEgBxtRB_O<`f(Cc^Y(
zcbA!9CAq<y5$?9LOu%jRzmhQu!?63u^;J&-&**aBp0#0I0bTB5rm+-=Fw#f!vP`ok
z7k{}@9h0<bVo{eB31c3c7cX6Qx*uYhpb7W)H0s;XyEdMe0JtV${mm)ax9!s>lDDUD
zs9}VJFt!9bF5z^sfT|Hzqcnf8_bi5snS~vAc7KHHFq(7oxUJw|P|=EJ7q{PiC{myU
zoW&@LsB(C6FuJGcrOF-Ig}c-QPeJ^#ALng;E+8trW_35t$~<6Pn88R`5i0U3P-Kzt
ze({j}ha5kDy#81xzS{kh*r~zWwV08h&?%9O{qNmdTN2|tZ_dcJxZ)$7Le~N*H-EIR
z1KLq0Hxcje0RNa&3gQ2lzZ9|)BM9x&wM$c+bdugnnB@O@yK?T7tF~5XxLNZv+~0WU
z`jNO;-B}E_5W>?3ERi8<!;2rME+3vb7V96inCPa8B?x4B-25yDZxjQOp)Qi?ulmQ$
zXO_Q){?(){i@f`lp_=bQ;5chOMSR+ijy(yI@??E|@I$8%?p|$4%@nEBXfqf*LFj+g
znZnd7a3D?(1rT$2PB`*hxlA(8V`p<KGLb!QN50hU5A$Gh%fO_3wCW*=GYv`EKC#}t
za#G$Z?0@)r-LAaV+vVjLOJvS)Lt;?0<g$y1_D4)G)5$u|&ilmPZ@&^j%Gr;_-WweC
zN3P~6wPVLM41tHSCyy13eyD<Fks^F+Njc~eGqAoKhR4P#ZxfK)tjxVD!qyKs65v*j
zuwv2<@`<D*NIatTsI0Z^3MhzRpuVNs^{umwFi520o#VO!w4>ujX&mVukPYOp8pA`B
zZgLdy=37s_aaAGY-tMt$r1IyVYlUm=Ix&?idMo$x#Q1St-fuiK#?Cgtrq4?ZM~U8P
z%x;g2<xu?Fd<fBN-K2cdoBZQ_f^Nftuq9`61BMq0vSgK%y^W+beWLPT4(1yBz-hW~
zqNVfBddK_kA7~swcff4B#wRt^%|vAlQPI@v#-)GX;2nYZvIQn_`_&jzeED0M^3zV>
zC>NIk5c!yZlutiI<7vd+VJK2pIjN`W%4wxS`eWe9*B(?f%(x6qhiQnLB^|<X+?8k)
zfzVBgoI6K(5C<(vj?{jp9e+M}ePH@;HI3QeE$lX~T`*Peu!Q>nW2ybQv%-@|6`554
zodx|vWt{d|Y+b>^#!7U#^{he+xt{CRs!1i5CS`_{*!*oI(ZNUSZHLna$5v%4577&p
zsy7|@&EvR06oB-h(=VR|KFH<O#H)P8KmQH%Pp|6z+mdufjc7rCAl8jf{251B{(V#y
z8g9G({^#jf<d*#>qDk%P+QCJV0=N@Dn1qaO(cXqIWh7=>**(0AIUarB#GaMo67rGx
z0_OCHm7~2EME_gS(RR{yp#AM`8k`zug+vNae<u0<edDd%Xuq4K#ZGn@SAqP06+N37
z`;x@=zU?RbH?1l4vD-&eFps8a+Xgn48nbV(eCv9n9*bhVH`V6B7jw<@d-YmyEzV#^
z-S^Mo^*655B`_zTj|~y#GVf8DbkZnSYO(8-+&$Bc4{VOfVp4aQ_LY8SvN>(#-Xng&
z@-fc#<^MrPM(&AxIrSQzkNg;%xE*PHO6s(9{uqwAH+Dj3@92uqF8H-|CA<CS!O6>Y
zr^;-Plk0-=7pPlzeEh9Od{1FMeX&>9)|o$FE8g>4c1D^WFJO&8WosWU-Hh1CW<<5U
zY^x7&e3NZ<<}^mR->^Gd#mX~kqvjC4r_mNDK^sz){Fx2yU>BJ|nw~0tI7%E{zE5j_
z$PQIf2i^XDy78d@OW)k99RehYX8dm;d+PkVsKV`h?a1}PhN2aZibss^{?}9s8psKd
zm>swmggQARJi(8P*;zF_10{B4s;vmjwUTh+oZ;fZeme(Gi{z?)JuT1U^eB#?U3~N%
zQ2)l&zS=>}gME5sS;KUdPH*orzGrvT)wlQMNA-{PPUh#|k8UR_=ey+<r1akh_X`Ny
z_B<S2J5v&J>BX6==tSQU;oE`3z1%)LzeWBFy**Nx3?a2Mj^~~Uf28fAzva0L3d6=C
zpY8an1K+A3ZeKB3H!tlSc;CEH++lV?#vA`hp*8^WZDLk+I7qR|LQD@>_*Hb#=L^wH
z@+3{<{sXzC{<VUh1VG<N4U<MWaT0Ff5Bf1lcle+azI&Uq25wGn=6;oQ=EUco2{e0*
ziBmpUU3B@;MFKf8*y{t|=tF0>FmBEY;qxtJ-%wv+w;C{FZfBcKDQKo1hqkEKrw@&S
zr(wvQyIn)#FpEMR3s$m&!h7UF!0d%@h)>P-0mkLJj3cd2t3TNL)_ycca_-H=QQtUU
zyCP_<_z<NRX6={It6=Jz7o>lV7b<h$r29f|`rzX*?#?sWUz6?qgM+!xFD7KjzchRJ
z{DWrZS7)J{zeK#AK1+}cqL6m_qmc4X8ot_3YdP!~RB-~du=5dNLJ6#aay`Hw$?q*m
z1a1&<Fx7T^yj%H#g94;Rv13!URj^D5aQH=svia{o=3B19ZgWgr*JyRRG8bOM65%3|
zl^V{5c7TZ5g!#qUiy1@&aiUk9Oh3P}@>)@rWO=ub4KD7nyh<_0n_pRYagHObYo=}2
z)z<sb_5M!5qD!dhGM#3QWG65MeZ>fi5ijyIOX|H@?`qCHBJj;;Gu5l&DGQn)OFW!q
z9%lx)D0}b~8&rg>1d(rG1L4>ZY`qni`wc1Bj0I71X*Z`3iP%ytzaKO6`9Wv`z5I}B
z{qd;ne1h$DP_%J*+Wz}C%-I#^G2Tr=;nUamc)bK1aB9KD0+#_NsczoIA>5|%E!0_2
zCh6WM#v7^tzlegD1>Yao<M==PJYJ6N%6!kIhN#f&Q1u9p$=HWP-zupg14-BIrPjW;
zt!Z9o55N4@^3RUe5+6pynb`*1+n1vgSc6@EOuJ2M@N0?vMDLbpZ{kbp%^&8{Ce}-V
zw1jUyTd6oqmNYFNw_n~s1jP|TL3t$M%XLQK0e%KR3VYDgB(N&A&LPE%dDS6f%594h
zkmjT}G#LzX@A6Z)O+ZWr9Xe^e@k<T}lu$R9FN=FxtNk_D+L1#kk^Fljq+=`PqnC3@
z)<5+>``y<wRO$Ip!C;Ig-<DK}lc=cZ#TngtVKMosjnHu4^7aY6$$*Z%0Iu~5da!cF
zhUf;zO~(3bOhyn?rcyE?83V<*7i<{_6x3gMl^mz}fN2-TnW@j5%S<4H@rN|6BG5-E
zq3>U!zHdz%^LhqUODMBL?~!bo9+YXsU1c8io!}<)0{7l?;G;@Z$W`J#H~Rtg=r^SN
zMn-2+`p7=<*e?kgLNnGc0DUkv=rU~mZ<|2~GZV3Q+HZB-PG~Z9j50QOXYb|a?tB0*
z(r{$E{v~tWqgFZ5Ybp9^h4<1+kn@FaUqhh4n!5Ap6Ey)GL@?>2%yig{8#Vsh4cypW
zdmR$%Rtc!O|K<5`Z{f7h`_qYfgXM2Hm_0a~TiaxVg2gtxeq*X_?Q<2fU?H{n4d;Kw
z-k!*q2`vr)FvP!&b-HwNojGIi)@G{sh0ZfUQ}+Y25Bk(f&42oX>BtDiM}rj_OJy=K
z+9>5v2PVcu${_#P(}Fg;;_lQdb8-rU>8E1;AWJI|eOGL30mgdSI;Z@<M_gc*A;X{1
z<-&36ywsmtl{i8Rbac)#AWAySE$s<X6ej9k46V|BDJSd8bgJ_r{wUeTA*B$j!bdl0
z(^69ibwLlE<rmY8Dq4)z<U~(ve*vbLm;d^;YMt^GYC~n>B6<Ek2pv8ut|TG+bt9PG
zS&Vsd5>0^^6E*Q5GOuIA(O<g>pC6lef)E(V4{dxqCwv#}GehLcGIZb0>=P^$M!Tzs
zG_TE@qsxNL9GerlbOh~lxdUqsbzJ{|&<}<n{MU!3qhKsxvZCkPrk3-bjJ)ZkLpM&N
zjxg|q@`hhqk3sT|*pIiXyK|W(BkM&}QO86lBcn{s@DisD()&2~J>OHkHBQigsvF;>
zgAl%M1vnbE@tiZU)m2kY@{Z(7Zu$cdce?oIK@kglgt$j)S2+Vai1-`av0#%e@by2X
zbIe$xOtv>M9wY2t;-fiiHoLyRzjY$HWb;+5_pj{eKjW(+J^hbd=M@^eWNdBa{6$R_
z7Cl6LeNBU`cz)0(Zs&;hO0!ipZuwP{zL(0>>!^OFyG}Nv5Aw_R<78h%sZ`{I&tI$Y
z6p4nwoNyl8)mhVV2izatXO7Ev?xkF@JkxJx*fWYVkKMl*v=Y(xfRKzgw>Ls<q7v=z
zU$d{W*C~Fcp+dEju}U5l*xwH&%V`-L7rzxm<R1Ov9^@@f<Yqg($`Q``!Hw-PUX=Yu
zpFVw_$2k;tCHtWetxw8NW^dbuH&KvX2T5HZMg=zCdMnxF_<~)|Jr*+-l;_y)?kiaj
z^KI`B>b!1I#f%wJ^%9T5r?j&(HV$w;F}EQ<_!NrU7?0t4T~Bn47XEP%)fj#$;=*~_
zn3H@FVe!atNqoWTUm7T_Y~BU+qKRDs)#o+SbX`m*bX~x_<zsNs%bx~g>2hyZv{oeT
zp5IEyFg*uis4b{D7@{WGWNv-%%Tk{SA3ij$3la`V*SXSgFE3xjWbR&4GQN`sbhDmQ
zHd9@qDP^Kj!@7HhyW8BnIV7E}YG!<2Pw&iIwMt4Q)}JGKB@Ms{L}|ayS1T0ma&Z-N
zb6(WOYm08JL<9{h<JFe$cVV~(sp(fm%-TCf7w-TSYC<6uqAXEG9AQUBN>VAa4ZkZm
z^m%5US`a%s+hci#qm5pg1Exbq{EouA*3sH^ob+B7jj)qyFQq#S;f1&CN3ch;w|)?}
zxuUH#5Xw%W{lm&;WkFgM1BS=eU;GfdM?c+j?`O`({`J`TTaqxNDx7chIrekmp$;Wg
z94)-veqO{-rcU$H;kExVXeimF*?zP0Mp8K(1b#g@=&y|0@$<D`BD3iCo#=-k)@LiY
zu_S?Sz3<8;!+%bORIh0PPLIlu4Wzg8EA~=D26wjPoh0Y6GyBKflNnjJHS7WQss|Qd
zhDfskdC#{aZVCIVUl^IIE;h~lPpSxsW_r&a%<z7#`Q~LJ-4fUbsdEIm^`~u-qC~`g
zWOxqoVlkJVEL`F`7(R@<+sK^Z;@I?A*VdiZG0ZW?1$RksrpFZr-DeyuWsV5t$d@%`
zy>u9*WKljKjq+2i#HIV0k@KK@^1gS&RWX8!d=8(AyIMhjg%NN5(6?79;Zx;OJ#|je
zJ{|j>-E+R}G(f)zu8@k-7|!6o*_ED$lo~NgyyRbAG7ITyn-UBEtTnPjjWU5KkT5JL
zGR%3z+s!#({dpCWXCQ*Rz`#-N_gfb>j^9jnAWV#)gQqs<pH$0R9E8=7gvN@c-E!r2
zPm|#K+lHs)%dJihtrr>JALE4M3rBciZjs;mqcZ!2z3R=|<UPGQZzktpWYWKLQXAN7
zb2VOf?d-!u+@Vjhf*-PWnb&Zxhj>+LiKT!XwD5w&4vER5+M71%`ltgYNaRa#&1gw7
zS4&J%fKT_u9QB6<#WdV9KE8rDJCFMJdFJ#I3h=z-&rvqCS``n*IUByiw(gh^zE8*!
zex8HS{_9MDjB$Skk7!a-zZC!n5Em;@!u!3sl}ePs%NwXDyHk9Tr9T2uY(264sM9NQ
zda#}$^i_%=Q=g--Y4Agcld^`RR{V(6@<adZ_Crxr9n?7BwK+yi1bz!xkHtSPCGwp`
z2CJbdo1(glxTc1r<d1LfAMij8*=sntmbTj1i<VZXn%H2WxSEqkC)f3}02i7ekV@K%
zS4%aV=SX$vFCUsV?@R^uJRB-OyB|!%raXq6YfPh#^u)rL0InLVgn})uPr%cf|N8ze
zD>clJP_0EDvt@LcVeEXWW1tIX96r?_Kf*BG*jBv|1uaIh^}o+zzL@W+EGc2kDiyvP
z0zc(GyY`yV6KeY7kJCGuGB*M0ePzX)IA18;PavrzX#bbqqNQltIa(O_ecs7FtNqtB
zCi$V)FgonP*8rWbu)8q@bFZ_JP_On^*X+*^cKN(z^xGMI$zjhkaAMwKPR1n>pe%W;
z1;xpHF@g%}1*0O}_m{SVujTq$Y<JBJbwoQ-3o?SVze7`&cY?|P{r1lZwVmJi45z_{
zSyFFfMjs^+ShFiwQ0mXp4O%(Eg?&XW2fnKfMBE|%QqKC6oGk{?9R<d03*DK~L<vh=
z8Hwbjw%9tJG4IH<)B|&w?)&xy*S+Gi6bWS~ZBl~V(}yh9lYZnuXSol<L#8k>=+s5S
ze7i-NyOM(+nIMSRc?$IMu}iDQXDU^cK=)v^lE5an@7tUj(K(0YpK%{7oIQI@j^<YH
z_wzSBeBu|2_{qwU&*&-oj+>CEVF@^HwLt)WMockA)It_3su<hTwM&X9fL$T?t{okJ
zn6baMNzjXwJGk`x1el?3$}}>M`0kIH3F6W&;TPq%b4p?`&=9QQn8;I|#h<6I-e))B
zJcU*!cua7IbGEXYOX2TRxRsbh#!gp7X0#JQfA()bA8OEVH)`2BpDXoL=EglZHW|)9
zh*>7VM~j4p1hi#*%&PZhThi})Iz50WWKF5W=0!&%^<Pa5+3mqKdB5zKfREeArR`8I
ze0HkrTQn&)zA_uM4t<u!)P1molGx*gNeOC8*FeQ$M<Nc;8JvxrSelxS#N)wtiOp1G
zVaWCK;{}3%T$>MZBJ(_v*Tt$QkCvl$4Z<qFY(#!47?otktnp|Mo!eE*6{)Z9#vx4L
zbV0nvD3}e+f|bCqbK0#0@vi?=3*f-*uS%4&J$i83g)5mOgKacfVK}sq#IedMfc$2j
zR9p%sX}5g4x87BT<U|;0XWml7RNbU!*Qn8N>(B%|>nO=%?cRLmuL=xp`yj}q%(SZ(
zl+X~^N{udJOItlB389NHtc7&}lnX``qp&<MrKKyJzayXgeECA3dw!Ij;P{{ei}cYK
zEo<dWk9Z6i6BWIl^ca-{_q-uAH}sb@G^=1Zvf<%$A}yNnIGtDbBDb#Ed8(z0C>1Nm
z(ByHbH1wBr)|Y#(m6vlrlLOu39vhv@=g-e*&q8+BGLpMwWIC(-M(J{nnyn@XkE?E~
z&3}c=)h_C@AqsI;IMc1hvtLxRxt-Eb|7bMOc+5}LUezAl@b#fF=Wk5Y(eR~I)ndOz
zDG3lkwk!#5T4LwfSj$^wsu)`iS8*uvEq-&uo&(tZ`l;P{2Unq5A+hL?;dl4EipDP`
ztWZqO_VF8vTjnAa=U|`jrcH=BRP@zV^U2x@3*XK&BE*yvoxK%jqn&KXVd|n;9<K?|
zIyV*kC=jejKp4FSf{k7bB;31>ies7QCM_tatD7L<GaQKVgi&!PXaGQnq5R)laCi5j
z5!cmRPjI(|X;gvO)5ifZs=Rl7Or8kEcGO8PPdgm7c329EHh)YCoOq&E81;`n@rEfn
zKMib#;KYUHzXfptp}FAD5w__D!irtK;pxQIUfb_XUjiR&%i&>NO>NqM{{@~5N7F;v
zm?EcQ3OrT2yK7IK`B#LU^S&o=v~|*3+Uai8{roUBcJ!anu58*@$<8a8x|bvi*Kqq>
zF&yK@R9m~km{<TkwVMlwDc{*FGOa6vJ^pk~)VN(1S*F{~QfEWy2#>hfl3|o;(K;aq
z9|-@CfOKV(@&tE^^znjpcaDn_L>W<=o=pCL>xlG%stDWiFSg?WhJ5EEj&pSIy&wAD
zB5Na@AxPH7l1E$MS><*koR&1l&H2F4m35j$P{r7w$wNExlR>2m0U0in<D0@qSWTB&
z;3!R&Z+XvW#4rct>T+(wctK=uW*;jQo$=RK!|>yY8ii80F4VHfgV+l!d<LoISqDRX
zMds?`@~7~H#!;8SRrv0B<pH=7LaLV4B08hm*IO#wycEyr>A&2KKUzL2*)Y@96$yh_
z|C!<tGDeF5EwF~V72+lsB3S2FDqO~S*MdPcsWu`oS=d?FGaYu_BxfI*k5#@Suu6;w
zHwP`tbCHWIfikGzG995#e5VwDWYv73G+yrAVGv&or~pK8Vt#No&gGmY=ehFqaP7+|
zgJ}eHzc+U7tcXc|7iVw2d{E$yy}KiArPue3(j`a%LyB$BXLFejXRI#8oYP5;>fz#?
z5G~xF(eZ#pY4str?7e{lt_s(75P>8(T6bza8mgTU#3@odH+n7okcA`U5J0nY=bkNI
zKBO~YoQO6h#t;U|FRFWy*+M&1DLDks&=}T2{IWIVDCaEmzLQJ1<bWhy`Qt<4b@6#J
zy$~<f#PlXWMPCECpPV3QT|y}Y$ne1)jjAUO3AW14UhN6$yB{&Kqs5}dHR*U41=`~{
z1eI!is2v$4w7L7q^HjLeE3wD>oPMoVIzNApU&;`ctF54y!u*+{RxDXC+`yCX?N{cR
zZmavamj%xF6$<AZ?dAhYu(_ZNKh+5xyhR}#p+o#+6zwurk4kU&v`53E8EMj1wuORP
z(X#LFgJ22B{1C+7NB+Wz^0mJJ-FU`&Vx$d!M!KPpXelQGLU6fSfhaI9;$^Y=K+0rQ
zP_EKJwi_9y!19W~%HTL(85_K_I+Di}5D{w~Yhh?nX~_iRo%JX3>)MQnVicqEl!+ii
zCX^MB6oo}I*{0Hs_?YaTFgcu2_!>4(;9;st28#9x*LySh$Nm}Zj=Zyc68dQ6(l2-Q
z`9q88+y^`FS_cSHsSrXk5e#$YquXLwSk$FC9n8Nax4R{e^?9P-aw1xM7@9+GC?}k{
z2~Q%87SoVuDrWKT1aJYtu~jj**T>f%nb*%L^gx_2Eq7Y^g$_FzG>N=T%{)Ue36mR_
zULF#~AJZT?$VkJe<rUDgCWiHJbxo(F#9BK$l605roPg>uOjOB8z|ItQgLi?Pv6RA&
zL=BgK-eTuslcDn;62X!z1<mi|^WLHN42pS_0={D)ZiB{O?Ou3HN!h||CSBw+avhH!
zw86mnV(?@N<BqJCfmfxnO;906_6qJ%m28~WF=omXu2|>Iua8xq)eM?@REBBZiMg+I
z_h}Kmy8phH9&gX&*|WV2k=JUCaUxbYof?!Bo`OJyLch?KFnFL=igSEvrlxBaq&58R
z?*<gFLoKCt@?m#$DXVTN#_~LCyy#;?0-_d&>qfkzTpfblA3RL1a=3lWDA_IjH44KU
zd<>a2z|V(6hj|dCRup5WGo-1Wm=bBxr-<uF%~ze=HoP!f0YMNqrQ^1lL}b>*^$Drm
z)X`Ip<JrJw0TPHc80l-J<|Jsd{fDC<;OAtpM`F#;Jytef#<7u;#=mlqRi^n#=YUbe
zjRt~)uOB~f{^T7wSmF-W>!(iu2e~8}91Hk@bmt&Vzuqm95!IW$@|%_M1k&dSQ%ag6
zBeumxs*G^*odD(RSI;ImZtyU;Ay>GKk$}JivJ3h1Q;|s=X;8**5xUm<#lPJ0oBzJK
zw&|YYl=7|2>8G!s+ht8>Wy*g)Zr#xmQ3IAEM1<-+;D(2|MHP)%wBN#|8{@z(xUszk
zBA%Ap9vvS$WwM$>r;=KJpYiM#rNAZ$<e%hcZ{JQ!e$^Z|hTb!{bVSGtYUE-WabTg4
z&?5!z{}AIc{xm~%_U4`TzCW5Z^zZks#?xQnRNPq3cXB&~T=0D8NCO0@o|%|9U-&NW
z^{ZEB<TU&~CoJxIs-+gRj2tAgLV>d(9^*vAi;o;gkZzVzO2hP`I%I2%bCdgpsCX*h
zM5`C3rI$M=d#p3gec^f9S6`0=4I@*t&?({bI$l(P$KNI9z2ak@Fk5BJ3V(FW9u|~*
zMN?Z2OwYS|um6SA>~`$Ei;k~tt8}s+%vmR~K3AAiLegM%alNraDfj#eo0_`5JY*^p
zHFlV_GxYSP-p#gJVaLx5&;*G}bsUYQDL!t>&p4p<?Hf&sG4peebC?3m)UEFr$nnLF
zO^&#p7cN)7P=}xR_yzKLAl`UX4`J+jj;PF4t|Ox-y7Uml7ZqZ)WxQn<+&)2L4h*Dj
zrOD|tCajS;y#mb2f;pS_ld~W3!dXcqGMq;VJq_cba!@M@7h)XA@%7md6wDA6y}tf~
zw?nlKrI7AZBL0tUlSSRg8j6`^w)Mmro*h&-sc|=6L!z7-)L{xTJh~t=TPc)?1(z^<
zTv->yp2OQdP$KsuJ&e1nI=rKxuTaVuUpH8jL(EWkVpo$PAxf5c2_FsIc`7jmM=Jk^
zkAZdT_5+Q13W+QTu!+Th&3S7*E+(D|<rt}M8Ny{<gvp?8pG~(BaipH-vL%ZZqg{7|
z2W-e}Axn(9Y-E^v9#%qB(vALDXsx4zt1AS8>tvB6Lqrj{5(7LZ+Gh%QS0GE$QM3Sp
z`vAJ-k&I!<*aKiGJ?d9d9|tN^W#uD6<#GG>Ik<{2=54w)2zS}8PI781prt+B5n7Ms
z9Q2R+9fv58B2vyJs2XH<2RF`^(=WnEW3;TWwOL$^4Zyv-kZ4#b3-0bT1~QcZ?%F7%
z-zpgl?u!Ug6wlK75bQk=9481}!LBDIzGD#X?c>g5WhlJ_?$6!IE*3#Sqn?zTx{2m#
znSK0-MnsW=Ezpv`Joyse^*6=m@9&WethA$zzoQqJE$$uLo$T$lAFXR$<^9E9=g?zM
zYVUs>qlr}3J+G+Iezkx4uR(?9*6F8nfj(V;K1Cx3741|BuVj@w2_12P)bfVTc8get
z0+?E@j`pJ@$6$bG!Nth&tp39gykSQf$NgyizbOcyV@t&J1&Z{kJ2q!q0p`oT?+AFs
zbAHOS;(mgW&WNaOU<<MO%TB!<<jwj)C#U_kz*Wc87P0`t6Ol*cj20f3IxdXo1r9L_
z9Y18(+}s6gXyA!F2i*pLe$vCEqrT>=!ixm-E~05$NGXvabQ2?>h92R5NDyDNcKqyX
z22iKVC)0;_4>%jU%V(fYYmMzbEHKyYe3#Yb#NUHnjO>w9H+6h#hut2jRhJ`7YtD(K
zL~LaDlZ_cE3_ZRMINGL?!<!np(|0zkX?yRl?Q<zx;E=?@FpHZwcb2RC+~Wefd!0ye
zI*afEC2jvs&DzrCBraPwacNU)6HiF7L%l1tVT5WN9iMLV`zp+rRgce|+gLd&w}`7^
z#B+{mf{_7%!IKu_^kFPMmYOgmhBN;C!s%n^!9Ip8GWXZMQ|m*<pZg{}wctZSryg2_
zA=@==&Ka>CI4(KTuZ!)pqKD1V8>^e%F5DMAA-|~8*)v`n<Zwf0ingkjj6(Ois%Jai
zkwd+HUpgAT?q}>yk(R#5@qJeJxu9EOSScoW)*Aj)cHvrfTHeD1?R%$!7o(xFh{}s>
zpMxY=1*S+YefzFvtYFfKIbCa7#uItKxRno!*0c&5a(J{JEe4BxcDuylU8;x)%iu=f
zvQG5jkW>>XxJ0$Pw8zx>C`;vu*(c_XpCb*dLRhQxe?!*0r=A@Y+f;#b=MEz$&x$DS
zEXXh2lh^2O_#3L~-dnWZH(-YfjqbpTm^`Z)v}>A>X#alW;$5z984$QvK`t!_0{-*S
z!E}?yxEj(15-Eo&bJVjkN<E}S2@X%s649``C)}i12MXiOJHNp1`6+*<yx4jWuew;U
zw71USbRj2xhR!1kg4ABZh3KRX4UZAx=6#SM5qYbwn6BF~bd>Yn+&(2=JDf$mX)%<>
zGc$XM(_yj&uKA{i98HNPR#~{7|I|`cL)<;ldh5Gr3<o|}xuN`BE@%T+Ci>>i{bflb
ziy6yBW_fp<dP}<605WD&ZTZ}Dc7ej$Xf+6uyV#ZVB>?@q0duR~uEGvGfqOF7cs|xp
z?<Go_7rTE}n@eL7TA*d9Q=ORV*@@Wt_r}w!y}znAIv5B*?rL@#7aki_*Dmi!R_umF
z$H77ko@8V_p$goSpKSKM?5tVBGab-feiYiS)9(CE@FML6ecB>V=#6H<YP}hB;yehI
z`0&f60}FEa;HCZ$m_ag#*O#2Hy4jX8cK>TLiG4_l2T3=yLiqiDOR^nt=v07#Lr>k+
zrw6pyGz_q6_*$lc<&#3gu?n6dD=TK06$`Rffz6PeOG*Ji5rY>RB9j0z9}ujmOr=uT
zzM@)j87YS7;Ytj~SXYJs_-JUsd_|T8$Ynyewb5MCaTPf$l~ZbL12P*g?~6WuF4}?>
zH8g_hquEvfj4$o^J~rCc>$EqfIB<&hnRa)iD8!L+NzlityLR9F^ZA4N-v$n-h5myG
zw8qDdt(nY6q|3;zm}G9eLp%I6D{dJJBOOh#{7#?y1+m#9mJj-BAdO+qV{-K+Y)jgF
znHeB4CgyqP2Z9ue26B4=FWUT){y^uTHhtVLIKEmprl;NGd#c$gviMQCE!i2{h19t$
zH2~(pxX2>yVC{qa)(SjWBZ;JLYzjh2GNbpgoVnonO6QWVcTP2Mq7LF3`SQQNwABQx
z!J4`T+tm=Q94S$LI#b3W*Qpq}CTaZyQlbq#7eSVaNdt^)<a8W{x5i(&VmZW_o5fb6
zfT1Nbvb52YzNyOYz4NPsXR8hz{n?m&`D5M*y@{_*qy73}6Otn*4Ck~UP@47hZ#NBT
zZt6ngX0g;8-$#DlkHv)|!h7B3-l=u0Dgh>J)Qvxh^PB-%+C&=(v`R_fLpSu`JPIN1
zVTS%b-_qMkl#9Gcmm&&WE7IsmyU7+|&?eBJQ<y+uRz1I}ihdtgO6jtcfj)ro^z0Lx
z415QlL5?aA#{zTbVv;_i90Q7VKWGA9G-y#RLbYa3)hRN;6t4?e9{b(c<x9nk&Wm60
z@=UG&reFKlIZ*q(rsZYCk*tEkWPzJCpUl;#AP+BAQO4m#g)p;@4-Fu5p_GQR$<fKK
z>NS023zicr$;H%z<C&-)P>sgZ{~rB9Yqnu2?7E6ZMelqH_0etxoxwXZ(*_pjWgg=T
zO+r>!`=@X*Mx52P(q7oUua@<|zQck}=Ia0#u1O9EM;RmPTXzdVE?cIgw(qT@H$*uN
zNK66JdGbUuJg$gtWgqgx9kdg7Yf2)2JMl}n2DfEdUb*~S>M178hc1(&=fHEL{n&pt
zD5{&K#?@NG*PqQ)uCy<-FHx;EPctOf_M6{pW%GQt(v&V2QW}#88)<s(sni~6JHCf6
z*C7WGF1`q#h^G14MLha}ZT-zYKlgU7^Z}>x$!g&5SNcp{G8>HVMkH4ek3}4%1A`l+
zWL90)ss|-aP-w9>qA{$P<3=f(-Osi&-E(!i1gk4rK{rXUrh?Qw&Dx6O@n&CWis(B6
zas;Bs(|h);bA!v>g8AH`E5gatd4jA0l1HwCNmB=XpUE00ww%ZVnU77*N1R<wJ`2s#
zNEWi>p_tILUKy2VCP*M25NrYK@g?TX(?dv+{R_qK<l&q17KN^rC=Vb0Gon-<b~dwH
z`5Js4ko#@?1K-f!gTT-g(uq%nHj-v!%Z!x9q9R3{sE<=O%UDi6YUlpty~%Hzo3BPK
zdMZaC!|$ysYe7Nt-+9(mi-uWLgowSlH0bKdjJ_FV!rgl7$hAQT^;U->MdtXU)7GWD
zZAzkyQaX6ph*o1<4w?$x*bB;5NjL(6x8qYF)W*Sn0Frc?n&4D9V!dA2i{!r?Mpc)9
z{kT7Rs3M5@D25hwFH{e94_WC!p%rm-7|cxBR^VS$UXobog`VTbJtaj3Rw#)9Be;?=
zk$_Naqi9qKu`=7JSf0#*Fdt3v0|XSQy}~^~$04Smy5+OqNXmJzjZw#A=K*;htg@1d
z(O641|A;47YR}`HugcC}Ewvt{W>XJUz{+F3p;DHc;U*i#p+#r5@MI(zq?KWv&kY?r
zeCT7&)S>>XW#Z({)pq`(IFXR#g$18!FgRAO|4P7FW6pbfSZFjNSz1`!yzWd1E|nB-
z(&-g4+Z4k@>p~TEobae}FWFC?4GYj2HzNX-{&egny|PYK8;<wp88ZyhRy_-qqDS~&
z<sb|3BuM39pz0dU+G{fh-3@Y@f8X$u3c1=7-gKW>(}1`QZI>%tv6Dgr8G2AmP^_^R
zgiA5Ng~L?#hu{8YKwWW{rNVjHQhjR&52ouzP`vxdQX%Y#l)=;=sjWImf-as}8bOAW
z73d?(=oe^1yk#li8BnQ#>GNppH)n|`TOLuJ$APMGlBhAq9N#X8(nx(mpT|Jzir=;C
zqV&f|TXq6}_Zcju$kQ331oxCKU}^6r0~l7Q$Celd`CJA-36|k%b+=64{fQAbcomhZ
zajUlA<5;A!O9pW1o{=8Qi)06Ku-Xy>hj7~Rutu!p1_n3(G}X_eMsZ}K(`Ngut_ZuD
zBl!UilszXb&hXwynR1zcLirhGRTbaD$4cjRXwj64>lRdgbe54FA2tXRfmP?NifOP#
ze(|#SU^^`P#!uCxj-kh_f2%Z4iT<+ag23}eezB6~`MJ(y7K}m9h{ZK&GHh&g4F8*z
z>ZrtTQCfJNP=I2HqEbr>KsdlnlulAwMMaT}6JJRT46!tZ9z$D@4J-Dc^o*of)&y7=
zkeiJn5@Ty;OTeO%v8mucl(?vs+49AE8wCe%bVd>D!)9cX$P*ULX63&UQ^nI=N^1K_
zaO*7fh<V2ukjQ<fD_|4<>W2e>@94DaGM}X!O;$t%)tnqKq+?fJ0fAfZICqCoNdhRW
zx&F&^uC6NXxEGGU=*_+jFXoLJ-uvIPDy!I?9jM5(z<%WtZ8Y$C!{ItmGybDLL0Do0
z<r|IuYsIeDNyv~k4;mP$7Y(!HIR5*oUJXi<d}ku=XK+Mt=ZhCs)fR7^@O>I`KR0uh
zkX-LeR<$4}|MPyqey6g{Mfot8r5-nNR`_nu*{h0bT!%fEatiQ^!+VE5&q+Iv_q;nM
zfj>9flySLLCDCgp*U~=4DXV-fMQ<b7l0onIJ=9g@4SE&(N<6AEtpdj^I+CNGd+zgC
z;VE6+H(T9p$myEv#Wa{PA~RN2RW`h>AqX?D$R+`^jCfh2qhZwZ%}I+hJ3+~_C+@;8
zijq#tdz(48_kd|C9OXWC{qjF?0%fSq*$e)NEbZy?qE%=i_@@XCo3p1_aND<JS>>_o
z78weGTwU4t;Xin@C$RYsN6P$G@9InwH?whQI#v``iNp+lum8he{@|DCElGQXS4#rN
zFi#<<a7>FRA+A;TMkj3M=iHfsKF>?4_3lRdl7Z^;3OWrbRXpue<4mN7B1BNAZ*}dU
z+~;Y7TR2N;K#9pR?XcHj7>0afjA{H<oU32;+%^ka;1EY49+du7!(S-cewchUxyrZf
zzDf05*g>SldgXUljk|#lZjGN+ApK%bRlN3^7Dh{NZIJ5wngnvc^9CcvaQUiYet~J0
z8F*jy3`@$yAVQIr{)$~V_;G4(RUC_WAk@pr(nhFQF8Lp%3)>BQ!^rGm3hf#CDHL+i
zjLEHQiOu91K?x-YgO<eW4U&+fHwm(oG2NO!-El#@-<fcoska|4Al4L4p68Lj&5n;~
zUS3;$dF$#g3&|~E8~l5dhYm!NT6^_l9weOS+TMc2j5NsWOD!Q!tfY@<ns(|gt1ARt
z9e<Zp(ya*(PlYGLU<PRmMxa04(1O?q3{OMs6|F*n0l*lOuDBdPcvCE@fOLDx!QUOI
zu-%?mqs+xBnEV`aCWMf7W-Bglt=wIGCHdFNY|h6h<s4`w)MmcGL$ct_O@yXw_BTd$
z^#ci}HJPBc(CCs_DPGN@-v=T5P;a(%3X=%GiOlq!nm_(_RbOUD3(6SggmEhb^d?J`
z2CkhWHyU~m;3R)RXzvpLsu2`9R|PniMKt_pFJ9vJxVGa(O6mbQWH4}5(d|h9Wrv?h
zCO7x|YXl8=4134|5+iqNNG_1rIAAOx22BUk)2=!ZEu$?d*f?E`D^rqHjI`{X<BT<h
zCrk`#Mi#cBwCE|5p$b^lfbctLw4ghj{r>7uH#}C+aKGIMq;t~vFF(@bU#r*x(Sg&g
zXaAS-GPG@b7u=ugz&W)Q*kYZ;$!k~JEv_Ij4^?z+m@;J|y;@1lW<%0rjge__?suQY
zWF<-SV`MU_#0bd<ez3Hjs3m3sTu`cOs>vb+A%#rXckKtAD>(5w(z9i761jf7b2Krm
zhgp^IAfp2_&;IML;B^h8SeeKr(681yr_#{0Ec%5~RzH3r-DG@{L`i9(W-2!5X0^SK
z=hw(uZ+881q?W<N_*$zAC=Hw9(H=R8w|K`~qKdT$d<O9K)fQ^c&#~6c<U^Hl$$c~T
z+fU8?h*@=%ssr|p|0KDj>2f>)Npu!>XrO6Oc@@EPn~AG0L{I3_$tbOc(*L|T_wXCN
zNzI?TFEc${vm-F3&bABxGf1cFt!Zw)QGTr*F3juHsU?{4XFK<GCbX3Ub~uv|@vQR2
zG_JWhCMkgfe-XYRLvLAsTHP6v0AXx*LgR>*K9^N>9=$~q&!iS+gW>OV*CbNG^xo?}
z3(^aLH-r|3-%c7C7Mvy(&!mQRaX*j`Pz!^*wqK_Ucvhl|o~2kt7{>D359(dbWjl^U
zO&e;xWLGb8clcCGsLiKq-&**@)zGt%KW4B@23To?<!%6V-a7+wp_1s>7mFf322UYz
z-P`~RwO<>LXez+n3b)Xob8vR0rWK8-4k>Hl=|{~-aG_Y^=OtCOgCg5lzCq@!p}plC
zZ~3#2$*cl~;g{6$8>GDUXqRTikSVOA*GqC--X`$EZ`u^hMgeBXT@b8*;Ib0c+-a?Z
zyr)X0?4}aQ(zrn;M!yjY2FIwJ57-h=<<u3|;O%HvZ}K(Q7S?U4p#?}jx;{80MoO6N
z4Fx<P8@|}P+)E5u2rCd7GXQ8JHq)?irQy=i8Bp^Ng`eEJr~k?FD}}7ZgPCv~%oiG5
zmKFl%-)ERYLY*UyzW2uu-U*lf&m}?XeoWVeOI)+5v0;z)UOc2G5FRbLdkhwDK;OHe
z3l63%cX^>LCL_=Od&&n~%E&4O1jWmX)uAm%3pCji+LZ?|tRB0%lmcVXB-rv3L{nU~
zt%eW_OVi2*O+Ni2Vn*zPk4F&n)qkanT}+S+Z$R$=ScszFqr6!oR=?k~ig+_rj}Fr0
zyioWHS9)s5%I$np9l~a!3Obrim#Qxv5No!^I;q#kc9fOOY%fP~H(g75mR97jdfP;r
z<d@Mbp!YwP&O4f||NrAckf@Om#7-heP-1VA2x4zVwY67EQA+8E2ogobs@>S5>SI+W
zwMUCu)f#QBsw!<2ZPD>{e&=`ZIrrRu?%((IdOyeG)swh7iS^aH$5?pzQQQwYHj#Jm
z?4rwH737J?iJU5dD$`56E8SW-9wC=YWxK};>_u@{l3<c=O*$?kCMW#q$C`}oEp_t{
zHHnKtcMj4OJG7%_`8(AJ_nSg1<^8A6r^J}{<Wvq^h<IMmzlYM#P`9mcvV94@T=cKM
zwT-+n#eb7u*!rr?lbHyQI{Uc(!XcxU)1N#13!vZ@-p-N;b8gvyj^!t19!1xDd^>{u
zWNQPuemovn&F*>VQx^jq#m`G5Lo_c{fO9j7bM5s)5_?v@g-`XKaVEf_RpA<bSJ@RZ
z{y7(Ydha^5b0S-*BQhqS)m-~Q==1CsN`3&<hj+Zf{V;bpCHAM1G+>+(LxEUGcsb|r
zJBWD?=my$2lK4%bie<&|KzKqe^JW2R{lh6}-kApv)wS4Sd@2i0Jejggw|wD%5K?tr
zo$rmExu0>~A8xB}%uG}HJ=FHJH*TBc`<!XZ8)$R=?%Vm^5-qeKp>z>*DXcSl#J}W>
zlG%`ayWpi(EhvXvA_t<q?^&($wcT;NrxSjQpFhx&;*a_dt%BnZb<XTMWpP?;ar>R9
zgZ>p2BB^vhAE6kO-9{w96FHxRz_I5-VS0!_2RR?+94~D`l&OpG8hEoX!W*_tc8wMU
z^LXOLvI7K?Ez^CjPPQa3SKY?41>59uw_4%(8em_TQG{qgLJH`_Cl)3_3^Gn(SQ&0*
zdy?PS0dh)MR?b3XPYg5rq*xAtz>d?@&gYC?Bi1CjIk|-;$l)Jr+Li<ORJM`9b7!_7
z*sHwg1hps}$X;bHivgboSiLrFtgcB^-eroP)l)BJ%k9O-@RalfI25Eytdrz?yd^=y
z)=miRfK|F+`m86&)v5M0`$~LUy**sxsdwC7%v1lsa^>{gTs~hr+s*E3LY){k3G*_7
zE%;Q5J3?jY_Z@}1E0!Cj)x4b2-jIcUDXM$!CQ>3ow>aAt-<2kgp5KiZeHf6#Km=3n
z#m*qUL`dsh=cNSm$d3A36Vv=H-^iB~iQ7D2sOpABjYGu2q~m-fpZn-Kuv&^emX8|0
zzYL%I9-G&0Br;xY(3;};OH?v(;=SSS#McGgfR$j#^b9^GHJn<L9BfC!Xi0poZ~HQP
z_E(GVW2;ZVvlZ!tSF4hi=kISf`iW=AQI#4vD_pDz6MWHngK9Q?CyV*CbGEPP=w+;Z
z25K&qDO7guG&~l5r^%Cf4HFg{O#jPhIVmBre<2nhnf%KC>q{!{sc3ZM?HJil3lf*^
zWdhnm@5nit;iYn`CZdBhID%r|%jun&%_zvL^Bt*4-|aeY=wU-Vqj1{wA*!<RON2()
z;HlX0$fn`@nZGUT#@`6F+wDeYFSlnuADoFgq5PVMSx)z==~nzO5ar6+X&+Pb&1Y1*
z-mAR8K;T_4Nk#|K-Iv*db^Agac!UxwTL>EOA94NhdojR;Ce$cvn4T$!Q}6E`w0j(L
z?~WT}=&W6Fl&})6I#(G+BcJ7=LYyoI$hH|V0dlu7>RD;QHw){$cm-?BVKGuk1{(r;
zZ#1SOIpOd}am#qFL8MA25*a@5Om|@36VA1+%j9{(^o)0IXEG~oMY_AYQ%=|_d0$W{
z{bIQxMkR{k9(ZTUt+=hbFTE`fe_BLKy6HT*R_u2A-PP$qOxZn%JRQ;>kcE5&e#Iuq
z8u4s;1DOovH%tZ#gwyN8lNZH@v?GZhaIeGtlTWB~D^X?|Z*jsEXcrBtpaCqF&r;ZZ
z^Tonf5hq)DaXq#60~KZcL_+t<1t(hmdX5E05~PD6F)<N7a@`}7`4XlQdP+&!$UpvS
z-`2Qm6?yDv$SuA77FSXzGOi}QQ?vNpZ-`Cor~9YQ{#Mo=sPfjeh?C*CB`yON!sd`?
zDfcYYN4|0mBzYuJd*-JLxD2fHc?I}3Ld~Gh%o2JmbexrSpiAR<?g`1b&dmr-!FLm&
zo_jSv&Io2tiEQEL5nMFcI&>04^z?NjtyoC%MK7O8Ag*AsYH^~Nfjs5(dC=9?&xf@=
z-!U5f1~HJW{{4LL*r#@|uVO=sj$J#vp|a8KaGg=gShzO2D*Kr|vs0502x#BjFXoqt
z%lOFPz0BjfIO_8vf-=ol<kA<IKiWP%DiSJ^V>clu79thHuB{AgGM^25NS;Ml7>I>n
zqcwq%X?m48M$*~UeC<*a^wA2>(a7_aV)XJJI|Hqm5NtpOm|#7MJS!b2ATqon+V~__
z)7lyegh-6q^NySY#a(%q)EMD)uN~2l*!Iu{q=c3=3Y@s;-=PsLzGdZ_5kS!D=+Az9
z`Xff0H4ee|km9D>FI0aL$ZYu<J;_)*9hNfDNwNF{9<mLXIp0cwl|WJk5BEMAd==pi
z8_R^8yX^XqP?9}-dwy8cRy15R<D#mR`DHWfc`ptf5Z_Oi3p@U6tr}wtbDeBnNGY_2
zNjX}LUjMJSa+`lQXSHkO-Kww5d4u<AP4Wo=T?fL8lP9n2)XJkoLAIp`{U0AWgPOyv
zYu!1g!{bC&U~LbJGD|hg9j2;8s0J;2?_A4UBsuIr-=b>7Qd<Bg+!gbj$HM#ZYi~77
zdrd91Gcztla7A~2JY|5%3?N6^Wqpi(0ug&vnqKIzA6?Gy<cbL7ci+|ELBhUI@m1@Z
zWpIYV+Qv0ji5YYq%f=nZj8;k>73c4vyXn(@F4rfcser7m!7>A@RMtxhweb7;-FCUz
z6#j*pR8n5aR8a^6A}>t6%^oXC;oJJMsW5gk=yqzBd0hWaM{D9KrxU)WVr4EOVQgoI
za=#cIk#6O$LtK%k%m!{tJpWppT_CA78=H3b6TGvd9JJZfad<wo&KdlTsF%zWkJox2
zCPf}FLKPH`WOLz|2hkdGjVlg={;8nMn(48A&5#l=w=)tAh6NsxsePx7rmg)4V-o`7
zR-872Ywz#$ek?7>=J~2OJ9#oDnAc{Q*T03ZplD020IaEB(i)<%#z6+PnO~|gcL{R;
z0YhVMXVg}|6cH7KO6;(PeP&J7nJEt`1&k3!4^O(Yfn^bPDV@VCPx7pCf0k(Yj(x9g
zYxQ}DPiv@670-Cqqf>yvO958hLW>+tAG<2{mMAY0_D-*d?!LMA<29{RDe3N#Z|S?g
zF_^Fnl@~)z_x)qm1CYEAn{qFAXnBgEKB-;S+--|2QoOG-Xc!eX9)K3}l`<4%T8p}+
zu1bO>S%is+JAzzyH~p3}lekL&3pK`7@&ttWb0q)O?=&5WE#JK-Szzme%7<s^sn;Tm
zevKD3yI=F)8L<?43EzF3!^-j9#Cf5oPO6L{-otyAU$Hx8a!F06XlgVYkH@B@@~!`F
zsCA;usmXFJhE4b7VEr7g^pe4Ewp!0g3a+IN#txi))$y=8L+snz%QIZobM-qbJHy|<
z(!^GTR{Q$Pw%%Ol3r`)L%4v99#8pdIuE^nU{OnLCRG8z+?J5}kwba}oS*s>xLYtb9
zmc*`iT0ua5V;b590M)3#6LyR6I(p6wQ*~pgjADG0!<%`?kSy8CiJ*4n8Ak%n=tSeK
z+x>Nm8P%=eisQAYzYX}}-HSfGOK1+gSw4>pDTKM2L)8Nf5Xd(H)aK`5DuF2BnlqQ=
z#b%NRLAs3r$Hmks7aX)d^enu6QuwGNbCH9+Gh0OJrYWbnw1fs_!O`qRdUN6|R!F%f
zpn%8GNefU=MB+7N<%^i`jTOP3-c)>0C!J9+(<qD-0&2>KL;O2PVl(T+>gOJ8gQ&X%
zGr^QWZ$J2G9_k{L{R2hJ!#(S{tl3=-xjpmCxUZ_p>QVfli0;VS(bGXU<W@=5E01uq
zZYfi>;BB@-Ihvn4?E*Yox#q%oXZdkzVVQ@|O{rDpa)|x{pr`aswQqsuv|AzD3&b_=
z7pL39Aj-bd2%WS~u^l_3IoYq)4=+X!E*f;m+NL)oK1mRuZpivleMS1ReI~*To~GEo
zwo!^6mn#+H73;kzDZcW2IZ}2(gQ11+9(cv4>BX+66Yo*e=TpG}NRPEbX7?~vn5ic`
zi-UW8=#(J=4a=-vIXJ(6z0x!JF}t3}*VltQ`fD0)PuIvP40Y+>kC$s*0d&sSvvWS|
z<tpGEnW)6R%Ba}@(Q=jVJ;x+f9nUN2dV_;7&?WCa;^PD?%tk)D4nd%VShiG5rApZT
z$Dv}u!+Gk7?!2wCfk-+#Gb0SHSQk&I8+!{^uyzpR@aGg^!m14+Tse1ONmJp&1Sn_r
z3vwiloLqVD-gk++%B@A2zhAXZga<IP)rk-nR261Z3&>3H))wyxZQ+eBuTOWpYdui?
z99RdX?o`_aI%)u--Cl?=7a+}QQR0(hUsYdYYLFvOocPIQMLfP)s+47{u9TK4K@p0w
z2?0iDoDXx8?`WER0~Z=&hDrh+9+1q(A;4aQFPclGDvN)3yxuoPL3X4+b6Jhwyk0(g
zvc;c~)6OC7(bUpnonH~gF(47dSwE3H(hZU8rQ1^Z(N9fB%qQ}bygF_9`%qL_4#+2L
zmzJtL6y|c8zBEdB<L$jE5kEH{JfgdFiJz=?2Id7h(Z4}YyBq|V@Ez?K4X8QL3@+uB
zJLx~zLAw|2ePQxyhgQ~iyV0q|?LD6gUN|*0$$P`zpkM!C$t5ZE(ZJlL2aLP)if0o7
zO>2+`Q2K^!m8VVcAfoSt7FoA2KH-+g>r>Mio4&A{<r**rEjd~-?|WLStgyjqwmBhk
z$bDM7O}}o=HG2M(t$)#ch2*B!`7??ZQLl260lac3*$XRBv)$g+*i4=kwl03=lLUu9
zcWuaT9o^ef2h3(PM{S`X*@@i{#v##hz;N}-^{m-Jj6uy)z1rr(i^!yyQqQybrTUZT
z{n%W2yMF3R9+*q6UY}^-b6nNc`-wxc3-?{lwd`DL`#eJMI8`|N$Il8pVV|%qr;`ds
z8+D|;ufn5oP$#C66(<aUzxTriv3Xm!4*{6qO4*xE%hH$YymeARfy+C<TITH9mAP!V
z{C!du-?2y2?GtT|@+Q6~&J<TH;`AuDRkGE#z^__LUA*@($=XJDNR=4-GE!zOVPfy<
z>SIC=_vmBEyeJVqah0Mz?Zck;nQM|&X73&SZr7$|y0?<K+>=hC&aU!Js69gPnvd3L
zx7QaW#pi{mwu`Z0w-V!Ng>NRiH10oe5u_EAS5X0qR)fizm5GlAuRve^7cfNv3Q~Gv
z@WE5+{EF-;wB})78$<>4>ELi%#63O2CcdOZsySNOyiqe`OI*{uw~{x-r~!N-F-zkl
z<^(w=Hy>{v8ISllJi+nIG@k;ZaWnV@D*#!DQTjV$<onVgIY5^Aswm01_pFD(;9JSG
zYyFznt}d*iHh!>QHWlQ5x3l^m{KEVReMP5<daJX>Tzw7($)8{9Mr+x^F7npY)ym(z
zuqR`C%kaGr!6okZddWGLx1)Ysd^N#x4b=1%wK_!L=v;;8iC_sts2Fv0%(q%_l0NZ0
zoioQVTP=n1;n_(*-Nz_;8G6WA(=ENVO?dI<<DejCzS|b&3c%%5{!sLy)Y`Ay$qO>j
zS3G+Hr+T{lu6_`}(4@8H4>{6)*b@vQe(r4;`2>5QYl9mF3a<QQrx+%Gb2fDG-Y9kA
zoX$87XmdMFXm()v6hqj=@CE28Ckv;PV0Llh$pB!nsFY(cE^Bf?hDafoKL&~?a6!Lt
z-{)t2WN#NK$nS;Zc6&uJgUt}zt<)*C(H<OzNmOA$`tq|jAi-bYbm6K;P*h+)AnB5i
zq}xp(<+LLH@K)}aO?J?gJbocRM;6|Rs|tkXypP<ur}e24Frnv+Rq1Z!ESF%&Qs&EW
zQkk~m!ijI4G&81jbeCW!FcbL4oOCCYcVmVM4$gkXjB7z*^_mQCc?B<bv=wk_(R_1C
z2XtmM)wSyO*}*{F<(|v6FTK0Y1Tw8mO<%>=1{j>@8{!BH31oqRJ(}8{_cLwTb7Ox>
z88+qVnBMj+fKu{rv~p{%v-$@#zzNS`JWiM^3u){=OgSuuh%m14q6jGigrEQr#^D&r
zM{E^%JB|fq^TCr=-kqj+7gQ?!p*cwA^x!e3{+F{Rfn=^)b~YKc($2G(9Z6F*lNKkt
zrx%d9zizhtD4!w4rg3~TO#J8g&*05sd17%7N_zdw`0YW%9Ap&^S&nro?h%;T5U}fR
z<{s;_aJb<w9lrlKPrA-w5%yC+ougepn~ys}cOZt(<|I}y%ZdRdlSw2dZyHGhM<!-H
zOwFR<ch4gYq$lcp$}6yfe}b<V7^Y-t^()WZ<SA^dg4n#*5%oz2Yw<~y5OW{HtjTaR
ze=dd{EpMuW5(-;(nmq#f{Bh^1zt80(X{EWxZOSdi7s*x_q$#R8n(ct+T{_p$g*I{Q
zq3}61B~O-{TCy}@$*s%2zSw%6TrY?tmP)#hI0;j9xak5CEPqJzA#oy(w`MDsavnCx
zY)lAS1eN4Zp^9cm-ty23Y8G(rJN)%d8rdD@AHQzk4cYqKQ=mc$9D7z;EtIQTIV+&3
z)CW0RYsQ@uc!0<-e^BErXB#rR%rTu{JH*JNv`c<{P&VA%8VP!(myPXy<JWS@!eYXQ
zqcjo@s}@sJ-{BmUQc4p6tz@3hyzDCzOyW~pk!|lIHDCCUvMn@SKBbu33sMlaN(VBF
z$h4)HxDqe#B_AkgAg{NAEkz~A{hfZr+ig0j#P3=my!+y_2a@QUr@L;&4j<@!^!o9l
z@@BF-AGa{|;oarxz~6R#NRGB3aLc_6hE8b{h`K2WatjFw(O<)+!oAd2C*DpnmFLV`
z`|f_*s_WF~^NIN+g5C!5=*mAAUJuOif7lX5h4gx<Sv-gea!i87(t{F^-wwUfD9x=j
z@~6T}wy;|(2rSR<_G-VNrfO*;5hTafujHlKh8px-*VUjaUqK3v?~_7<Fb{)KN(4-P
z8-Io9kFRX5ror%E2rX>rLTdNdG^l_YNPV|I#G{et#Y?xC2lJ{O3sVgdx1o>jo_Jt0
zh!~JCY-wRyT9rZEjVwzv^geZ5Ci1vIL`od}+14DK<S+?U`WLzvPCO8y2*0N_00Z#w
z1Zkn@a?aDaV~$D%X1td&LzFeOQMN6NQaj`Hac|u0w39$copwbi_8CXJW#a9OCCxls
z{R<MynxjkosNDP{=h8wW=ky$Pt~^#0moHOJvi|!=Xe4emq&G)G!s$%73g44c=Ql(2
zB~c1z1<waBD3zMM;~~5BDETHmyvK_lV3%>{D8HU?C9c0ijaNv*&rFtnF#qs9ERQOy
zeZ3^;^-J%o)T<vyp!!0OcazZIWe}I8qb3-4QqjoCQR697+62>i-z<uu(j6_&jJ{0T
zXY1C##dZ>|*@%Gjz}mU%o;sZ%$ogth?LhFXsi;~~($r;T#>R7LMH`|)F6hG}enCDq
z8uN+OC8^#{25->WG!vf(R4U}hGCg3kr|K#A89+_AI;$mH(-F?DSY=;(%UZVfWu*<S
zzspeaTlxJfsl&D>+U5q%eG$7<@r&b%t2!G!O$hP+LHDk}Bscd&#C{ogo#E5qghrNg
z5#6|$uzaDZ{#SemUZ`gF{0sE3a`82Kyb~8$<V04U6p@%nmP4Q}0iv;}lWaY_G|1A?
zHh#3qp$f=pCZ{O}z`sz!c|SIX!gG%{*i#3eYn;lC%rnn&otvT8KLwEGKuFh=ZsP!h
z$&rwhbKl6jU%DcVNp<Wr3Ra{bO`NBY>=VF0X|IFUm+G{7Qa$Oc%gs_Da#xx3(Vvd|
z@EMDB6dgFC3;k{0)fE^4vELB=e(l`EFO&7(Ca-=={;~ga&E)5e_y1B4Z#?+-U|{9?
zjl-+YZm<2l`1{|lzjt<TEDU}Br}O=W!iO9Gz5iv>`S0iM)n`wB-?{Pq-{->{fBzj9
z+Wb>E_;>rDi}%l+w(W#}|1SMi{c_zz_6Q?Wa#G1#t0MIEZ|59*Bo}f@5+}}&!1aWj
z*Z6b2l7j+1RIKJcVhNeDKdt=ZNWznZ2u|?llE7^H;l$!R(*j9~Awr8wt@poQdFMX<
zix60I-rq1@vY!$Nf7yZm$1eE$&brztuGesQQu9X1+y+RTg2Bi{b3^F_{q^MTN7ldf
zufJbasQp7%``KK5!x#S-L_GcMO#iusMU8n==bJv|=U?mTIED%-%`C>elR&BDKYF*T
zOA2@J(TnIA&&-snaKP+Y8uR>fx7ZTcOrf2<e-(I6{BeSV2{`bZ6B&VTF%t&!^6Z&7
z?NM0Q;ib&)*CP}B78pz1_s@N|#ah+g%#}8{XIEDj+|<lV`PIYP6R5kGZn6^2vxBFE
z2-S!Z?*$q0Mex5o41!BOp$21k<@y4-Z&<$u{F4uUcIJq@d^z;RDt1QzNe{}E-C6NZ
zfzc-r|Ll9rO3K#35wCy8zD!&0XaC69xDOmY8LG~SI+cI@UE<#rLYmR^Q;ah{BJJ<H
z-ZaLa*3>L%)+g~Ny}`qAr54V%kGvhSWPUy!R<O8Ipk;<U<pYDHqhFfrdsE$<Y%jd&
zdi3S!@T<dCYFcqu_*!1(V(9wg9L+`Dw=ZJ#I;L{8+iBRsrXjlJ)RlD<R+FSGxG@Py
z+518@{E5szXKHQ(66e^|t`hNg(CMmou>-$klWvZDZ&g?N-?WsY<u5pkZxVQ_@l*@x
zhR`34&u;fw&*+)kTw+5XZ*@7^6?~hs63g9NdJV0KL_liygA|Ik`*T=B@0D`~D0f>w
zwHz4;eUl6qv`;$vHqG(p>vHHN?BCO)FPcB^`6$$(4FwV|l*BDw_jkk{*hC~YIN09N
zi|4L4>Mkko`XGBj=-buzd3%m$$jVf_qnVZ^v8;0L#f@HwoFy-$1)HGNKM240{p;q%
zbpV~Cr2yU>v&cr$`frUIDEsRP_J#YJXl6D?dDRG;U_9QQ-6`csq0vDB7{#5s%-arg
zGPCPSwtcgW$I_kPkq#1tDem+4yG)D+xu!)2EgPO(+3sEZSbUE#rDaoqucwq_dpx3X
zD#v7ixZN-FiePkJIf`S9o|5Fp)k0ztET-AS91yyB#(S$A`*NE1RFWBz^L+(_0x!5+
zA$`!{zUSmiC0YDY@~29+R84)X&L(cpGgcIC3V2-Reu>%JtMNYnskOyt+I`MOUZ$pd
zq!xA^w{o>sHy}h@z92L)Z_W5N{W_p3m?;n?Fz77?b2JNy=7Yg7V|Wusfa%4-hTg=q
z($vUz^oM2A!S#i8#FzFXNt=M5tiOE4@^Trd=b2{ElZuzGoW5;nc!RBgrdlfC)yeib
zOEEXnu77{W^-yKwZmD~%zwEC*hNch{3p+-&SwwYike|X1v_mDgFmrbRdY69?)OxDy
zgsuqsBF<;?KpY7?k`@oNvj0;&ubS>wgg_@{gmASqJU?g_&wa8j?WHorbu`kW4_HeB
z*d2aKUlncMH;v70SW7BKc(s|)Bx-WQm!{=|^35(5>$SdHU5t#b(I~$=eIE$zdt@3G
z;Pe4OZDHujdh}O2H@bak(xJ*;wFiE+4^Wk)>cYpA7asH()v5J=WC~!dG*n`-=Do{Q
zrl6zK{fN;mr3#b-`DKdDSXdH4Ny?9vXib*HO9huk5TGYpGCGEwn4J(mPfJ^FHMT(k
z7fMqy*Vl9<VQXHy?M*em>aHX4r9@fW@@sWDQEqUL;%FvS%F;Bc(B;tyCavbuaHvvJ
ze?>)up#H@nm7+zTC{7`6hw}5+SWfbq6|HThY2ddv4Nm6RNYE`aBWKPoNQVax>&B_`
zHSSzm@(tSvk_$1#=^N->mTjf_op{93c{~%7n~-HNlyR)cmww4^`r(Kl+;j}9$!67?
zpV#!L$hFSEYM8;}tS{6<M#ZO~@i3v|-QETo{DM!7`s(?^a$T~YR&vaFZ3QoWaV(do
zY6|?jx&SWl+igj>WFW2t+R`zdKbNPfI47n(9?yEH)iF^U=d`UtD2M!fK~16cP@Fwj
zt9Kdqec4HP@g)5-d_ZE9Ff?Km2Mp7zLG4Fe&Ml(!b9frV!)*;5Y6?(l-I-a@s1SCs
ztk`jEE6Cb+RItt$c}dU*Ep&2HmP;ZysqorQ0bamF%wmARO=BT7SAw0s#>=+mErt<+
zlI+mO_OX$)rH0VqR1BPmBz;m4EXLJckiU~@!)^oORyby`1Ax72S%u>AA1<@#<YY{t
z<;A?0Wl*)_REeM?A$3Au4}1!*XbQvWc|YKBNKy0R?t0#+uFc1vpQO%yO;{jnh){Z0
zESp`mcY=3-Bdpvp3oHk%7EDyU>CLUj)y}OJU&Wq!lxS1#Ln$B(l_;c)C5~rV$cgN4
zUiJO@Jf^NFw|g%u7{pAe*msoT&V$tc^xmwk;F^*HImM?@jHQDJXZp3TJr;yB!E9hh
zvK&y_x;ccul5a_l3wl^+HZnlA2HF6)0ItTpqKly6hTk$j$#{wwk)SAu{C2hEY7cfj
zmxB)YYV7}IUpnSGrJ!4&+Y>JHvxj2c_4^i*{l{6;|M+YC-fd5laOY%?2|4U2?9(vD
zZk9?x*<u(lx)O2Y0s@aSvd$_@L%|CmmJCND1}e-yOSYz8A^p?`=$qR2BDw-mKj!97
z>&Kei`)`ISkca!>Ayz7=<GRfCaP)6SOScSq?&I@S9q$M0N*!Pk@ykT*dfiXzq3jY|
z#=1SoA-XzFr#bw`me<RY58fWdJy9Z4`kVS0RVu#nmdt=329TULL*d`H5JBe31Yk6!
zgIRL1GdkBdLHz50&a7=aPsTI<=oxP4;-q~}Kw8}Ev%k_k7Ftfq+DqAva|RxK?tFc*
zB|P%FK&!CC_A*p9b5zWsnHv7w{Cfvzosv$_Pk+^n5D&eCd*pzMTxe2EP0YK$T~)><
zgtPrS+43~lUqW#-s8VAQi6E;JE|z(Jx98x#=7DVSQ5TBjk&OtHbCgSe`7c%Q5?v-`
z%KE}Ai);3s+F9sgn`gM#vYC&!(rA0q6H5h3%5YMqyCsC0`^&6Jdr)4-bMvy4@t9xR
z5J%Tdap)k|kivQEuwy)NLh#alVIcd3!Nuy3iIEpx>r1!zg-VOWRrGDdT+#Ny^`p+y
zeS-#%m&2O)cEp-qP5aFPD%=XuS+vLA0Fa+8U%GcXKHuFuX8tjA%=>*nHXV*&d5yBI
zHvN#)?`pY1Lhw-&5d9oPZeZo$Hy-9UB7WOr;*0g>6XY!%w|kMR?PGrSn$ceTWug(}
zGP|K386v5SW<F5m9m1Uwgeh?_GQvF3m`%yxNZp!{LM?&YPl$mx<<gHfMgBg7#2q1_
zIqO!MMnuA{FID(&GrYGSU-GCacSN?VXAp`3A)KyUgK%=M>zADVIEn)6T{0IwSH?fb
z7L3yo&}&hLR?$N<OQYfG@6Ou|-Sn8JV($Gq|22;1hryXW1D+fVLf?C>k)^GL%k~sI
znhMT>^$PRq2>V=;yva}s4pvkFqeGB%aZ5GTEAKZChb;`ZOMmbed|`AQ5@Z~1f{fex
z6K-AoYUu7Uu>zT+sk_g-;D$8*u`4-Z%MT2%=WOiu_3F9T-HadQU^~ry=fA;mkZC&}
zUT!Vo7lJW=PN)7b^=@Ta1{64#KA&S2TD4F1kqdL@Ix2P8{qKLrFQv@fDLuiMJ(%XP
z1OxB}=&J@jr`qhX<#HTpV7jwSGe>e%3YRTNCd-&$$ni8P5I{E$*qxE_@>7!|RS_K_
z{lIJT$b5S5R)Ii@#r><TG02WJn=b5+vN~1SzFVlw<PEZx9Z&H7mn*$lTd?mG{oR+x
zh~yI(yzGn(9$31tgM2sbBD)nDP&#pui^QX#?uf>t*|5SaE;OcrjLMg5z<9DB%feJJ
zhD@oUG+?sv^G%ihVm%X6f&596Z~tzGIks*H>!M%XeaaRIAh@QZ|4F~!8!cZ0PC~i&
zLu~=`sWy_%-Pih)L4&swe0Dz$<b7Q!L(Cc08`L)9&SGL9N8JR9rC*A=pbtU~&06sx
zop>p5x%1Xt?u)gdNDRFKTEGKk_aTDFG!%f8?Gk*D3>*QqpmJb{0n(Tn(AI@$Q_t><
zf$*|hlR!);FO%IxPLY;$0u2;K+w|duP*pupbt`Ucgg0kymI_sMOc4Jm-w?NkH^I2z
zZCs?iaCBd@kFBf6DJDpW%(o++gmvfdSMO-|Q!}&HMOSdWFCU_NQq1iq2*XnU65f=T
zba(CSasMgv8?8v~_**<0sKiJg;7W!I&9`^GLROrM7qLU274f{u4m0wS5e{lG9}dGF
z9@zi-_v|(i;ji_+U@p7ZPZn*s=JLk0z7g#0fpUfvAZt=6Q}3eoXhO0OKEM<M(OhK`
z*)G_9%AFh{4zx@i(Vn-X99!NUScJx84y)iuCnxu2V9NaykQ0JT%@0uoZa<rHtOKcl
zUP7AH>gA_%BU&+W_7)b&`+tna1R4?+YpnvB(iy|eH&$<{BGI4X&AG!`I_wJl*A@6v
z+BJJ&#<x_C*5Vu#l@0ugTwWi>U$A?CNJf&yHSZDb%d30;h$m7|caC&T*F{+uV|h$x
z6DRsLWhc^>eN%~L-`2n@>c`l)YY(8WRFV~M3$wYU3$`a?G~4;u%!kGC+Ui^ZeJ6N}
zoOv}`Ia@?%Q=MNp2IM5u5{+dp$EK!4N1=m^ey<?7SGrig)0Ge8Qz0V&(g0~{RB)8^
z0^-nW)t`(MY&|ZUx6F_(F=tDrvvWXuvz5bsBp|zsjgbNIau_0!7(mJQr6TAJ)T)Xa
zOEjZeqr)Z;NoUPHcLYj!*Pznasq!aPs7M|7uv8}h$Y{S=F3M&wG2hN#&;JFX(o&tv
zLr#5}v?o*f*WUP$zvepAh`CF5ka?O2$(4rOa3jT2djRWwK9NdTLDv$go6HhoG2VNj
z$?C>|^=*rx-eYXI%X{xfS!K;+ZGi0yoXM-MHG5UXXm7mH8K?~h1n^eO`Q9~rcvH{A
zXp4;{{_HQcj*)X;WI&sL3Jblp{r+QEchX+zfO;i$FA2dk0o?0<O)5=y^SxFJsQ(mX
z&%yq4fgDAe)J)-Q+53Q!wtu@!e7Yz6c`gJ0Hob;3>6%{xW7d{`ii^IXrp^Za*Kf8L
zytjxu$Y8AoAI46pcDAlL(0kZ=vu(msWzW)R_^4rsjQ6m(C?o3z!VoXP`9jYy)0Wsy
zee&;OIWMf77npq9QUgR}O9=TYewQY9j~h@I6CL__lgg!6>wj7){r(o)^O;>}k}ve8
z26iSj-&d%PpT%iKMqp^HC<k=_oM3xg27WOqx9IE%pIHLRKISubmr%@a_%D~yPPze@
zM;bRv3AmC1`P^omm~~@0_1LSiWaISd-#LNG3rMhx!!3_BVd))!E?ceXd%wh6->B!-
zxk;((K~o>JozuMrGS|hN{qt`Gzz3K@x)^jWjgQK|4T8+Oq?O4SM{;2vtChfdio;0g
zQN;>x7iV1ev-D@{CLcfkhufzK&1Kye>?Igqd{<3XW!gkWP1c{ZI(G?6D{mjRN9Fj#
zt=S&ostg;CUG@$<(s8S75LRh#&qp>s5DCnZDgzxpx_WpHD!Wa%w#qLRC|cQGlSC63
zj@0?L`Yeijf{6V0o=1{=vz_^LLOQ4vk^>-8r0?dUVQo81rcDb}&`~gl#EB<xnqf$s
zPIwa84A|qW1|q5}bNGBu9o_hn!H~ROXu8zSxoCJvpi|+g>OED>To&ii>oJ}KOODqH
zKCf-c3534=+PW;i2%|ip<r;Fh4SxE|kQnb{_uXh=1tX4$+~Gus63&4V00J7eLW)fL
z6F(XH=sPE7$)NuR8|C>ru+y-FD%)z)U?=8G)qNb<k)Jn(ojN!vsHx7xXOozCK~1tF
z7GetNS5s4Xa)~Qsb{v69mA>G34PesuB=N88$H+mtq>4c9sq&*r*l~ymvGN3NGYSC`
z3;6g!SQL9=4tw^pkuzXV@GM&zf|^al-X82G6v3Gs7xZT4s80z?&OpeYZ$U+p?4kh&
zlac~G1G~tf0(tsn8cC_GCj4@U>GZ?v)~#_r0_xP%_19(`4z3IYUB*hyqE1rYxqp+x
z+jvW>zK~8aGO?HldM*|iagO4%iRVwE5{X-XQoZ`x_ZZvM3s8WD!^g=7yF>_Wn;<#K
zz29ATE3S$s0V*0JfH^ZH`DNG4_e7l`7j8|V2?8_vU?YIkWUeG^iy_Xd-bRm6NDifh
zG}1DFv4!GHVoALyj@(daglG9<N$`3%8t0di>P%J?K>OYH#XxarIZ{T=8!gBIRg_+O
zp>3eX^Ku@%dk_QD#@y_-!dN#w)=%mFo+w3J2CC<gx+nP5pa=&rj5y(R5~VCy7nu5u
zU9wX(sXabra?{hsRAYcJ$tL5Ev^vX8)lY+bXFeyIQO|j#B@RfBw_9+08v5_w#aiIp
z3eTK;AfSW8eVkiQB7YSJ_U!|x2BsIvHcHuuze%O19zNUpGxW#)@W#gbw!>?dZ&z1;
zYQ8D%(gm*-<~E2DlaY{#p<;rqrW6;^@JWtMpRg@&RsTV%W`DJ2a53~CimPT-wt=Dj
zvNa?)7;eC);+v&d)j^mTsXQG9f>SC5KkJW#&d;EE#udK^_|?NP7xAqY{}ty>2p!?B
zZVT?AEq0n80r5pDaA`{$N@cCYvtjR68#qHOf<rtdX^&UJMGb45v1BZJjs{6_glJ2S
z7&@5SQ6{*tnv%Dw3{6M>iOWtgc6ngz(gHFMy8iwZ)c<?I;7fwo+iRs|Dl;;>DsQVU
z<3|+|2?8DGn7;_XWYu#YISr8tlzBi9ysP;H=xoN^ot(M-;xj38^5ADT`4fIMq<;K+
zp;iIJvT{UmR$~QViKX_Mz#Re3b9Ia39^PC+wpf>X2*d9rPeBouhn&VqcZ4HBxrk&r
znpJQSvzp~;1?!%72(5Qv09lGOD<ZwZn}Pze1kLG1a)rm!lVEZ+5hF*e@j#=pL&__P
z*r^~l?|e>_xMMkwCk*SJSj~e4CHh){+8_F3j^z`#L@c=wT}@1+`$DqC%d35P*iiu>
zgs)3gm7BL<g&C%t&Q8Hrk(q*s&@8MKoPxmyV+E;*io7Z-K?I8x9Ew6SLcsYH9>5u4
zD!UvuQn-d<WkzSAFjmlLfGOPt<BRbWcMZsDsHzq$5{FbImb0pD01+^dCof9SbbY_>
zdgB$q(T4}OpL5?fJBD$bOD&#^XRJw^QD|i=I28UQa$tpY%{(AZ0s97{sI<EUuhY`f
zs3bVH)P`>jpZA=|wc$I>C00~7^ZO^8!ge<(6Ikw}H}Icwi#{sKNnKLI`sekF&W6Bv
z2{BGv!}w3C=4}4bx7yD5JdR}EZRAcWva-T%6$4~=Clg3Nt*uBfS4b--j|0GRVB@`2
zl;a9ubpO(%J*KZrs#gDJm8Q~js0Pfdfeo8&=|g2TP>?Kau6!C%(VH#HJ-LF;QuHn_
zf-4GAi{yEbC_ya9N3pINk>*s-%B5g}u?2+;9u^(MgRF*tK!&=kA1M?`#1o;XM%V@Z
zNsAzuJ)CVLaV>Kt@9K<M&qfK6%(493Mvb!A0^*i!w(F~f#DC$|&}YezXpWW5?&#Cq
z9c@Wz#;(K(L|#1PoXq0FQ(4#^vVlQPp*3)G^^@?BY$q7+bD81mbdO(2JM19mGvpj-
zn@xfLqa2)u;#;7L4)f{s8jyBOep5uD>S#!?H$AlyHJYTWCN!km56^qx7+pZ`c(o8~
zMH;mRFOneb1#`M;1>VbpDiB=@1&%7aXs{Z0NnH6-mk>5<*=~EdnG*?Y1VTL`bFw~B
z5!o5RAiiQ97YG3e340g9XlOJSPiqOS2yMuz&3FtC)uCSMcePy(ExC|KVBjoL8u)~T
z!y5`JP>Lu<+B|=IaM4yIRd=PK?BpPySD5uluLxMK98#IX%0Zam>O#u11OOp|maZgc
zHKF6%un!aFknCETmM#0RITC0I#5n_$AvW#!;}p0nR81KQO9dwZvj{*ZOC+BVn&4=w
z%uC8upK?({(=?#GY7mGGuqqD<b#cIF(@4s41YVpg$@TbCYu;?vs7uaT4#MgrS6~&u
zO#OMDgXK%jMks{TZ<Ar`S{<#S*#m@SNgg=1tyFN#m;GxahnoP{yRZ{V#_tvDO6vmW
z_rJ169aUuyW(>5xP5j}1cIKbS(9hn38{8)^{sA-TD;`362R5r*?T(B0eS^2k#^F~Z
zo;^O;Jo4Y@o=Z{8h<^ev(2j2jYkoO5ACi0Nd3DpB9nJDsS2jL!S7hnGQb&Je;y=zG
z!e>tr9f8n;ifbDk4?@}>`knvRP#@!XxOhXfrrNbqxc<kZuOkG#`x*69-p9l1*^pGp
zb>*_bniAv)pGk_GwLMz(Esndh4au6%Fp6kr8)PGoqcZ*HR-<;ZCBoP4_&epSj2r%S
z(T%%(>F|0RcNKKjy#)7dI=N9D&gY$n;gSd5=@2+-bh?cX+IV`3cQQ$-WjE$W-ZV%~
zp*&fk9WpzHGERD_#B@)|XYvh;-ah4a{?aYn=GG_Lg!!-TZRm|UhQs?m8i_r_H9mc#
zV;|KF41Y})%Cn=b<}6;t{X60K{phreG*5OrcMcdVm~*2)+2pWr3L4_Evdu9m3~(c;
zgip_icWiI!In0g})xqf@>_+nUEA}t{HW3A0xntQs{p;Gdgc&3Hv*g?Xp-x=i^asNs
zdpxPpDs&ZG$F41{aQi3JsQc43WRyUjNfTrXdgW3-_iuBS4-$zYWU+{KWQJ=BD9cjJ
zMNCYw0qu!$%c@3rQ-}z6M}$D?VaCpHsiu%8;-nQGJDM)qT+xHaDnFYYgA%sP3UNTo
z#T3|WgsUUCO{#!Zt7*r1sU;KC+uwp0mjBL9R{~*e?vUT#^{)`(9L{kmga`U0kwZ8h
zaedi}QffB$NBFE6z;k{V)9qD3E9R>LTRn?_Fc4RevsMnz8v$T-Dql%=`_h8YqkCaG
zq+zEM)sR86kiOTUi63v#x4?HaWIW;^s{@k9(J@uSc@9gF-au}43&?Dk`G-3$J4GL#
ziOiPyMtN3pCe3`g*7R}E<H607ps=yduOA2zCQhVkjs=;LzZ;-GiymhD%U>qg{sqbY
z8q~fq9yO5~T5=Sd=-cJqZSnNxFYo7x`?N)Y^0wAs8?qo0z_7mXx$Ewy?rz*#sb<|S
zdx#~qu2R9pJ@4etZzg>bti#UAy?QRYyB&N|&0<h8I8rfJc;81o1g{CNr#dn=3^>gH
z&bciiwiA`yDo}vBcp97J-qK$OvIikQ&FtH!xGS*TAh)E43>;LZ&Iq|&uAOt8mqsLL
zS`;c@PnM1PJ1(dImule3gubDEM6QXounY*LJGLAx{MyoE3J3kS5SI&1DkOeuXaOsP
zrb(ktjj`Ps4UJy~{to)w@`p3^v*vH}>%5q8$5mGJ%nN?*^ssd63u}MUac9;-dS<`z
zuC%X~*E+n_ef7}OZFZ`+#z=pEHE!+2ZQL|_a!GEjI4aV&BP}F1y7dujS|Za+zp&{<
z=QDn4V(qMyeg$pT+uV*5?0|QeV^cOmliD>^rvt8#CfSATK2NCGkh~;3e>PWyzZwwC
z4Y*mj5GwZIQJceSF8DOCC6TW6LM2jnq-LW)9_ON46B;tq`H-&VC}JIwqEk{!GV@#@
z+>1#onUsb^ZxRmC_Eu#NAbXFWk4l~A&d8Uf8X>ug^nllf5l+Lc`Tnxwu%j>6-gEwx
zSp$l`S<FSJg_Tb|r{Gy6BD;E>;qr(eKF<><MhQXs$ceFKd%Lq$Arifd8hAi7npFr2
z%@fLY3~);oQK<X-xb(&98>s&Z^<!^;GklJOEV#DAL8hfkL;P386gdw2#o*!;-QOnC
zrnGY_>2<$MUVqR;JF;ivU`XZODn2=Mc0~^eiLPdcSZRP@vI<WQSV!9Ndj|rs)a!Qt
zErX2f)GBhe`$R4GI?1sUcrV+FUsewPn7@m&xbgVZyYY+=UqBY!)?II+6*TSLQe&G0
zxmx*i`ip&sk?o1ADr*vNGl?qgHEmkuNKwclm7_yC(UF+4%J$S~<!|$^Unc1$A!kz?
zgGYnTdtMMY>`(m;QkEAy0`gZU5R~`Zf8K$|=9+#@r)a=`9;f^*TSG*+t{vO~jaKto
ze+^hE57s<Svbw5%r4hM|q`Mc3aZa!dN`9U99FWt+6|yD%CMF~s8zp`5DMI}Gm(@VL
zxhD^)Ie#ODmw*!%bV87Exd`-g-b9ST`I#63BoXcOvk3CWqVwA?)~{2`a(r2z^FB9q
z8yuU<j%zAm%O}Pte=%-1-1&t}t!tLjf1;}*cdiaU(F*sMS=y7I!dBJ|yfen|sPEa+
zKPFj)0>2x*F$s^J{(39IVj6y@gAg@6d#B(48F%Y*_am@C0e_x8+Zw`)&QyB3G9~%k
zIAXfebK-|}Q$(W3tocL9jE?IQbNDlyHCQS)rcS=#jf8u9xu75|7v=T=G?68ed4i{?
zPa5Ude{F+kv>R!k&Ykq5LAS_001$hgxBt`VIZIf({p5ksJJqg}*Izas|609bV~(Hy
zce%X!{})$RPXRrpoqRj!Ym-JWvh-Q|^(elx4&S%>zM6A$U&?7zS;N?|Y1|r-{jtXU
z)Xv3|LcWqi+%H$?{ONpq@zXgjW5{{uc}+T=Co63ez<Vb*J=Uiu`d&KQcL%|gq|BFP
zerd=}_3Po?5X_-S#dT#}X1=D&2<=0U-sso$H-(KjG1nu8728L;D~6QpFUKwJdO-a1
zrdo@;#0I1%hyB=Ql`7Gz)?!+ES_UX^#e`o8FCA!@3h=pQo)-;5eMd-lo>t+Xl<pHv
z^)jX(Fxj)Dmd3d1xfxM3;Ull#YEO>!gQ6Gj&#USnAMvzSEzYO=hCN982zmFf!o~&v
zW8;pc^v=Hb2istp)#sf~&UD*b;YHh-{>sA>-kZruB|%?gQ9K)bZBO@A)1$-EN-q!c
z+q#Lgv~@OuQ^Q0~g_fqgQ>qrtSgB2up4+I5+wM4c4<^`CeFI<Xd_ObhSM{xI(qc3}
z&+25hM$=R5roNBZikN6SSeEN-8)Iw7%j#sq(oH+CbbzI%X*PdSzT0cBG{hO7U)!E7
z`(^v{T^d*Kz2vdDm0a@P)_>zm)p~H&`Kw;BWf>Q`zfIvHe#GshtEse~23NXjybdn?
zevnfuamps(zP;(oYeo6E?Uh{VWXdD!dx;ENA4?rynyDHZBbMP(zM=dGxCyWUzU};6
z-yg+=1Ij}P5{oM-FNhLOB@b;?8oj<g@*T?u?6b)!f#6|eLyKHhG<VyA<w7HAhO2Ql
zeS&r&Uf`~YaM^aACig4wwwP)A&u=5b%gtSOEe)naKO2BYYd3Q92D{zIllj>6U8^m#
zjNc4hFqx-KkCL2i9iXjMLp5WrYHSWKfnqaO=F!>7r-Nk=O@?k1%a~44b_nkroOgVF
z8SRdS=q4r6xxZ5$rXnvVE|2_JI-&ygv%x!es-~QN*N6dij-)>x{e*Opxl;yw!F6_s
ztG8q!!Te5Hc?|Z;S0l50o!(5UM}m(9%m1z{=YH;|z8ky8KgHqL5U}{rA;tHJ@>zQk
zWTe6wDMSx=%KevxRnZ&+H|n3v@z8#@Ym~o}1M}<lM!N+}*C*GaUH0Y*p&Qx8;Xd8Q
ze`|RyKjGX&xj~q(NNU7rnB+<yD0T;7Kh|wle6<Jv(A31e_bU9XA*nuvUZ7`@(9qhz
z%b(12DD~sf9rbZOGrkJ@@8n_S$6psijBS4<8Y1eO{|p~C-lo%PsG{Cz)bAd_WI2Q~
z&J<D+d%(LzGvR-ODF0_H{6(DxyqM6W(<%jPN}|Ts<fOd&wzB$$dk4+;h9&U+JuFte
zXW;?=wByienn8z<_<$Vm*IK~Nn{3<G_$%r5&3=`*)O%tAbV2DsA=+21!4dP{h6tOm
z3cnd?UY&kvzg-wG{y1##jiVY&b1HrIZPC;PyZF1nU+tz(#ea^n?;wA=?L*#MU9+-k
zM_j{AO%$r2+8u4ID=3%__WP^}c_Mqn1(6&%voN3XSK3j<{(b=%F0^K5DAr1>-uLyd
zGeZuQ*46#|bJbH0Q#~r#3s6P{J=N4v9;662XBL_YYQhk~6Cs5zbyTD>p+zNmst8t2
zhtwbf;XLAL-udWqgb#6W9#=3k7eT<$h_mx`tl(fZG1jbEMFzMkt$?<`3CJii&+$x7
z%dTlCmnVV}>6*C!A&9TlY5z&qD6f#96Y#XRZ-lF9b#xH}o;%0Oas_l)_{o7`_+&Xb
z->FZU1xzWlAS_tKCxBIvl|A(+ivgyd(j+lCq39_$1)G6D1Ra$~1Lq>xr~r>NEcrqe
zxvlyIFbl@Vjw2?f0Ne{wi6K)QW|-Ut2NKN;_?(0$LAY+)l5XM|cuqO?<Av82#>vTk
z*XmE=9#Sy%0b8#OYd}R{B~c3%{Q8}qkwD~6FgCH8^`mSRwB@fYFlEzEw`#$fAuM@O
zjtEoAe)j(G{uN@`IZuHF#1wDUEsJ`4<@EcU*hBEBBj2r;<B09^j=_|1PxeOsxrsY&
zlGKBoUYD~M`q1Knxme5_Zm@w8U7RTEr(7K9nd^y!7YL&0C`Sgp&`AzVQAE<*YTnFb
zumRJXZKhyq^6B&=Blf7#tXz@}=Lt^j=NrO)wweB)+!0hlNKH*BBiYxv7zict&fs!f
zSWvbM_I`(yh&3lHuXznvo0#?7hZjalw9KHU*}s-oYGJTpoylT}iSxD;wG&p!a)R9D
zd`RP5U2(e>63dkJRAE)8TWYB8-*^0GiPG+wP{{pz{##xOuXZ|uF{n2jqqhnX)rEV#
zVjYIJ7VRF|``>ATz>|+Gt=bdDUsRoV|6MWw&>JjassCgC3<Q6*w8!7jz(k<GS0wwR
zb64VHOJaOJ#L0QWBo@=o){zx(eg6ypjl7bs*5g5~ET}nAbv5L@EC0lu2q1W1p^Z7A
zWt?A7hF-Bk=9pPBXS!uMbpYc#lCgV{Zl3h>d{8%rsaSYH0p2_NP4nPgpEkQy9%uXZ
zVXpt!VbUI|5!~oq;AzJBUt+Uu@{{Tpz$g2Aq&T-|Ptz9096vHm#ceSj$2Aa>C}bR^
z@=;D7{Nv=xwHw{e#82*hMmx%;3U}8ntBSdRhiJbOhc-6O?`|n1PG}1Ftl<T&yRZoU
zV)mt``%n<sVW|@Uhx{@OWs^Slq~+_L%YJtv;i=-<q<RsDDO8YD;Uu4|DJQE~Kgc=D
zoB_oHe{$^p6f1S|KYGY@d_tWIOwjg<Ua*^>N`hdP-e%=cMuFJvKa(abJLljS@}d3N
zQx2PwKa-=oDG?qXh`Wy+=posutn+~)!zUS6|J~~Ujr_U$b0p2y-QoxT2W*O^ea4dQ
zEJ}Ssh_1aLlv=#{vBbFBnR}MMyO*&j;N4Z-2@gth%f0JfU+)V$K;qw;>A0|6%0HF*
z*P4y%+lXj?_gu>tedN*VYan^Dhh#d5s3h*tIPmn~X(GfGkI<|G>9cX%AclyKBL!w$
z<xYx~I=J`Hv&C6OaQ2LjZhuylH<)w`G-dpmpj3d$<x%7!1ib>}4GOLR`xn>{4~|QY
zt|aqQ3~9UlO{H@>Q3sXd{Fm*rG&2W5@)}8|!`2#jeg1lHlsL$V9gFfuR*Pk$DT#~}
z7|NUqCZ-|kdEC(mrhM@6Q8o_|C7*{S*JOhNFqmpqHIqpr!-*&hJYYW2souipHO<uz
z*i25zSL6^Ss|s=o!IDtD*^p(20=YZNt%2<++)~S+8<zIa=YM*g7c@Bqa*N_H@xyGG
zAF9(F6$$Bj`Tt|+Jp7^l<2Zf`cjn=6_T4$$Njf8Y+`^rVvx=sbD2gal>Tu3ToINtn
znU$=JQrUZJC?zW)l~pu<KmWt`@%TO-@6Yr3e4RTY+E|51C_Wiv+jO!+wy?F?FnL{F
z-=JW1tn7`&`y=4I03X%AG$*UzziMkqcOEn|MGij^I#c$$ac*k149(ewQ#qRzVjoBU
z<)+2z$d2{fN<uos|0tUVi;KVCNNGM>KOFZ3m85;!NET#m22PgMO~Zr;-1_-Qt4^}S
z_*hVaDu|BZi<apI`2$U!c)q-1(WjjdYYMoP;JqOV-U30cy<x&fmY$U&PmOeWnICda
z%bthInuxwN;m9Phega+0nJ%{aM?SBPSt%Yh5P4+vShi<$J9__56Khs>rp1R|`AUB5
zEml$4dSfm+_tf|KuTAFqF>Gz-<;wHCC7U;E%Tp%X&pG&kS0dt?-yqjL_uQ5yL($*k
z7J83IjH*4h3g{7T;cPNzH~tn)#Vo9w_}k&}E6=umNWM#vEQ#t^rFKg<{L+$~2^k0o
z)^Kdq^)EG%Oy$D+jFct?l?RR|YIp>dtOrUttn}R0W8IgH5?6{Jai;6Hl;8KCtAH1s
z96NQtQ0cSR=YkE)FCxcYu(v)^UXcGhxSX80YGfPL)TDplKUdO$eOgWp&$<o#TOe+i
zD=U2A^w!y?yK{aj@#s69tLg)xE`3OS{Rbi$u~d=}ztdwal#St(s4-^jjK_t1vxiNs
zuk$?*OGeBGEM2*b1pR#cA@P!pBG&z8C4r7a;lPbidoC02?@2K_8S{vO;Rq>X;^`EJ
z1`ij5r`BP9doMSLTYE*SNzZnf^VV-o1x9M$rE11sPfmtj@I8N~xgsvRT}1*T3&TBW
z{7l4`Hi4gy<O*I%c+$Fk-}Ol(YJ<bX9Q_9xHF7S80?cl2{WunN>MgRnNhw=?$C%oL
z=(k1Dblvt3roSk)Ybj+$A=ab$t$HUn36C!&jMP~TYa2(w<6y(_yPQAn36uWyG=Kgt
z2R3u=dc9Ixv-*!lF6X@cYgsuk5gFJkDTOY|JhHOpkxL!}&BjKnoX_i}X>0Q(`FeWl
z^iJ~x0(kI~-dBY&dY;0DnW9?MYrO(Q4>ey3&F~ZMg1)bf=%{IXsN>?t<5*^QLYP(O
z6-W0zO5eqG$KAym)lHY4-ryODs{`cxDIrJ3RPLQ7=&QG@@r@;SDN-5uv*S72^%1ql
z0H?kViw|b_NZO>|G50}Yn2YkKfaTfJv9B}^+@>B8hw0r7!%yx&t}5`><5FKk=2CQ?
zeI?J2n`;LWPT-ry5ros$UCXXFITf`<!G{J`J{?PTob>Y(!Rh(DynwXfiCzQN3+nA)
zKMPRZiv!v_H>??*^J#8DUbz)VEU%2BLO`Beg0=xVT^%1MW}0miCGLmk!$>sM`VQkq
z&z8Zcz+=_AM?FW+iu3J!exJWtTIe4U^$u&Cn|lSZX>hr+I<?emGfeBCO;T=Ri?23?
z|D1^w`4wtckgxTq;Cs!aG>=B&1!MxMGnVBs6MFvr`Ctg#ld6ew9Hv{1N)m0XcPtNE
zh|sAA_bBf;9{Tb|^8-+i#YY&oI>vqY{KvTb62XexDBJdT2$6$}KjgqNP4Cb3J^SGV
z)D@BIzJAFV2Rr4+CLXcuG`9lv#Q11G0Mv3&CnM<QtIk+DW*OSj<Kjs@nPcleQ!uxu
zcONNLgh1#y`+!08F{_vZck1*N8szsUn{DQT^1E>~+aTj0>F=xzy@%Nf<x%?6wlb|s
z$bVYw11;Bk1>~>7S*)Pyem2$z1#ai?V1hI!C^_njqa2{j6AbMymB6W$h<@!uTn~=l
zPxDuMa_NLv+*Ll=j#0KiXMp${$h9Yc@ymuSiP)5(9ChYGR0}aH^9|pegwX3351o|b
zeLdo%&veIakX<H|bYevgwNQ@K!ZVaVTg*m%i`~8ajrk2Y>1da{WUQQT@ZJARyv)~Y
zg`Jnu2CY~LK4_PC@iJ&?2@jfD1(QQ0kX_hO_*|G3BMV-96dDQ`mjlug5&S+RXuN+k
z+XKpBlzZYz063nUcp0Rm*ePQ_vB^d;a2gpdf{YBbEG^B~5ynsQV6tEy8K|=t^3e4U
z7WA*a5tAso<StkOjgtZ@4cL1WPK(`JWB+G5JlvhMSEUfn16&bP+KK{w)l2@N2C9Cp
zDg86#x>)EA_+&eh)U6BeC-p<#+pDU75lb??Wuc4<4c;9PcEscS)l>&0t8KCNp5Kdx
zl_*x8hDE4xiDyn%q0{km`~VLRkBiKQE#z-`cLaDp|3nqUg<Uqz^glMcTLfNBNfv4A
zlM4wYZSn_}uem}kqy|HWWb>%-^t$(*=a<5vGW5aot?9z-V7Vg>`xwV1qXQj7argmE
zrBk+KNWq%4W`cdta1u4DN6Jxr%Dp<Nw=4HuzSYkWd+u~*!X)KvHM96lP9W>evluRH
zJorFgo4WLrWgJP?z=PYJyOC*13TCe}&&SlP^gZR0KHi`(7u3g2*D1i2`+4E!@;%P(
zmnn>ZHw^*zhBp#-?AU2Z(79-^ZWr+C_{z%mkLxbyUcL<gZWzqQ5lx>R4n}e4gzp00
zuYSyzL0Z-wRgZb8o&Y6JXC`)Nz^Ck3p0JTKL+g?c2U$gl&X8{k2Vx9M-sZjlz9=2G
zZ;7^X7mp?*Dx+BhN?gg)Uqw$GS0BS!liiGg|6T^1n)|UQcDrxYWDgLOEsu+_Dy1$|
zVU=zEX=?p<(LsAG7n=>#o0}9j`FG{@1g-A%y+>C@8L{u7(xCj!4(oU4_CcbIRQ8}o
z(d+fD!OOX*v|=nAbsgXly}fQ61VWTf8zA5`<t7$7%i^TvUtPX;4ywXMzeL-q;z9_P
z5<l3MFTB4;6&DTT==|~ciqL?*LU=lGX2Z4$%WoXgCs)dUKy-!I&k5|g2OG_|<{*Fk
zW*EN|?JT`@ea=kmK_6FW4Iud{B6j!br-?G)XVPAmOtvsQHpDk2y`)K1rfWRHHwzmN
zXM0%1<|eW-(s<Ht?v`FKObOaw&^N6rk51-5y{*S?bOGO}yrhH=(4srcZT|fMY~pOE
zREr&F_|vM*HY%N0Y;IC!b0mL!w&ov(CaRsRw<k+Qf(L%xPoIleZqDV?qd3X2D<ZOY
z#tQv2@M>nZXTj3ehH=W|%eMAgE_)95z;BdoZv?NK*(ko%n&4Cc>{l%bnf|V}5`6pz
zf0@MnNDD$m2T5lL0)NL}_!dfdk%IJbwUo5A8oEAP8d6WNeiwC?lB^kZuTh;ZBUYB!
zw0NxTX@B`PXe&xs9dN%K_`^z6rvz}#W93MhPVuk7WMniXN|4Oqp@+wF`Zt7(!d7Mh
zh8^VbIHJHy{&l!#Vq^!vbn9l(<ts{=kfmGJoZ+YW0AWrEmt~YPokqR4!D@v8C};p}
z-~Yo(qR`sHh!>gwLVH$tz#oAN3q(^x;9ACg>&h;Ma#1qiCTcV4#d+Dj;V?Ik;74!o
zNLN+BIS+3g6{~}l2&I0VmNI19pkJ@DW7VA4@ifQiGQ5qI$FbJ~%jPR{C7)A>j1Ij<
zK5^iJ(zR=M$md4{OcgFGsuy0IGs^(ZpG9F*z2G>+4{Z(qQ;eTurnvhRPx1na)e`vF
zNT$s{s564t>B_?k)Zk5v!(&RuqmE+BM79<*=|?WW=`_A8gUAN{T&cfjKgsZl#NdE+
zrNn!QT%}0{>GQ82)YA_Dp>a%FKA*{wXaU6orIk!Z<^g_=rPibmZhUMiUl7Vh@DyJp
zU8Lc?9PJ&lpilBLjLoxrH>Hh6%ICXr=z(vE8Dflyyb65By(iD5a?pC^4~C7CXQpoV
z357^Dt@&2pIqH7&A@=8S=2;zWRB^5nC|c)zM|p5bQ-6n*0LWRm<=o(E|ETI}9Kl{y
z;5Na!OeE)W)-=J)DxmwiO!D4>s05DkwTqF@i;gz=0HoN2eQ(ZInt4=K4y~<P$+wtn
z$^XhX>V-&+R__EWZGrOsz8SYviqZV&g*CEMmA(P|5BG+2Z()vq(B3Y$4lZ)XmgZGa
zSo0*t`KoQX=%1*%xF9@7gX)DD=&*TWXV;|WZqU|j%`zfC%f4Gry9h$a=2lsh8fU$O
zaDxpCtP-D8XR0ox!tCyutk>zWX~Yd`7GECFbK0jon@#>CLv5&#7@izY<=?~e3wwH;
zhwC7x(;n;&KDNv0!Eg+7dki1Z!7dyY8B09<5IGQAvFKm*6H~3GeyX-Xug<YJrh+H)
zsX^{n?I0ef;{QqL)j_19NpB**q3DvZ>7|tqf??<xt$v*&o?VZd`4ddGlJDjQ6deXv
zy;$WO_dt5dtik(g1o4oDaF%xQaC`4wph5AmP@n+z;u6LO#bT`0K9(&Oo<LkWo_%52
z19@e&P;N&7Bc0sE{V8KB`P{<bx$PF3%nr)fnZ;cf8Gly%LZ(Gwu8P0-{(;9LoFBn`
z1yipNyPe<8KO&c3>A&Q`DNqH0ABxY@!8SJ|PJy%!-3VS>(7Jm6p_cf1`<bwkH_^}~
zz$?)-y@!X1`p$fkd8ojVPp=uZE2b(N=9DBezY})9&whCD%j$1Ta!{K`u0xAo^*wx(
z*o>gt5^D5D`DMcZ!gs?FI~`%WVRuRU;=k@K0lt#T5QhT0{ks<W%d_9vZ6_b+I!igZ
z;+Lw_@XMkli`(J+S;!A;I^+9=Ki84#Cm^2^FS#P66GcVtImw$Jz-Ntc=*Z$X<;#BT
zm))n@r;~K0cZP$^Q^o1sz`ky+-^`BO=ca_$F+=WNe*;g*dxgFfR~!|S!d2&T75Y$t
z(OHIudPn{KDRi$KS?yIW8Y?)!#hF+G{|g|+x5Qkvuj+3`2E0TRs}h<<44W%F?IsMS
zy^KlRYtKXXNKFU5<TStPE<Fn|^><89fj3Y3ObK3aw-N(mchrUD-|5iRM2fRh4&y=N
z^0GEte&e<8J4a&g91)q2_42!*<^riGVBUWjd6iTCTuW2wox@a;oLI&)(V*wLC*OYR
z(k0b%u@$48n!|~LZtOS9{TT7Elee8;Bk$^4AAeOGPskyqizb~*wKviiI;dI5cgVi$
z9N$W)-V6KyyLfJ?H(=r^!PAGh8zFiB`KSM8Uv;jz#TODxL(FP}qw`O&!df}@V~a)Y
zt6_YME7?_xAD#cGwJ#f0es-*(zmtA**i8M?dW6*P7-fr-@}A#*bc~UDy%z8aHTQ$I
zpR~07j(Sy)E5<)iqe9KS`0l*!qKA87!$gEpmAZh~eVc>FI=+2re5~fI*ROQO#mesC
zkcMrPkHYv5<;?Uu9MYtgRV@R0E{QY}FgokVNb(H%Pofk=Al??ZUwQgC!)>bN5q0H*
zshE;t$(tRnGEBlxT{rp<^G~lH@y7Xb{`TzWd}}n~7-=iV!_!k6k)xw{^H!I@j;O_n
zQR$SJ7{wTnj>?g19hG9tLM$CpW+SvEcrzFTJ3Dg`o8`iozivyQOgO!wmbSi(yjG&Z
zAOCZXrm}sldu^1FVsZvp%`rW+wzZ(R(HqE3+ua;uUAZo778IubEIi|z$%CQtq8soI
z$-fGU0=6$KZ}5G_Y%jLQW3-H7NkyWMb~Uv?Ur4szn+h&)qi+fL#NNQy4`MNgO=pd-
zDCuyF?0e2?Ocd}>2@~DiC$xEeEy*^x_f|1_!b){?=#K2nUZ&rFgu*jMht7j8d(k8^
zL^aTRba=^%O%e}>XGP0?6C3xBR1~NFeiT2cu2gHRrA;VIt%!kUP!P2@hcyamacEjZ
zgPi}%jIB>z+$Q0R#Vs=;mWYp~q9Ez%%nA6!@8MQ15H)$@iGbvUj%k2(j^D&7;6KyL
zN_RCmNLCDT&=4iaJJHdpCUz;c<wm>Dro$P;Jk4}Dy}<zMaZCT!5z{|}kHw{iQ@XT&
z%i7A`qu?KHztmGc<c~+y38Vqc0Or<<P$x@hV$L6SMkdI#Gw9dUeZy_CGVuGuFupRg
zf;wsNvaGRyQuF-_`<>zp?mjWJa{GvP;L@(d9mE=nq$eljV<Eb>q$iSu5BMT$;<pIR
z)&D&=zYR;3U=mX<8_`gya#BTxKkp;EyjaE(N(Efig+tO~H?RKT8zk|z94CjNfE9aS
zU(W5mgfj{Y-ASRf(SmZPyiiXI5LeO+5?ezv6#0{}5>S~Gk4?eo^9d!G;sj99+4ql~
zn-F@I7Y^)(qx&YJ?8Xt1E0&zOxk-s=0e~2rxF$p_X^mE&J7!cxA|HJzOa)hKSiBgE
zG@+WbYf#nI^G`p)Zq5}@YZhAz+FeMGt%Ejg0a!>ola(T_qArN`Hq}Yjj!#;>VU>Cf
z<ZJMD`IGke-Ru3!AFXr-3}VYzSVJ}Nd%zjx<~Z(8fj@t0E-JmN>{v;dzxT*WxnF_x
zl*wh*-}wuk;w5%#REbBy(*XZ;V;A&NYayKwlf*;e`HdkNt<?qAOW}A2aYk$S3PA-D
z_lR%j9e10b{x~{Ot$5;h+gW8*kpncuy_${R$9%STOwZ{uOBdawj>45UMtS1Y=_gDb
z8MGDR4FyC(d3TE|#5+VUv}?%be7!~b+58&=B8zlTm8~Ck&2?Od>8$T;tS$G;wDkV<
zqcUz&mE&@Z{|J+vym2q;m0JczAmRUwe7EsFQ-;>;3)_^AxnFc$iqED4aHa5v`Za9j
zCc=B{E`%PNL-OkOqBks`hAO>NP)5YMoB5n(KdQlogogkp?ddO^e>FhDjn1rPAdyCB
z?T0Zf+@s(AK9C;yftmuoP&2JNNX>Mfmj^Y08$aUD{oJ57y$@Bfgg`=syGPx^`V74s
zjbnmzvrsB;+6KZ9+WeYaeyS5fdFJr0W-n!)Kkb0i($28xkV8E6ddGk9{&#|0RO`Kh
zzCrzRR*iFg3zk*<*$nuODm&Pkt5Tz-^X+<@;iuEOO4gwy`B5<~xAh3;A<<<~!^1q0
zdO6<6lG4CyrE?{rS@<IQ#JtH_uRlkyg;pQb#Y5reI=41=a$7C_y%joG&d&xrXcb6l
zd6lQ0wo481sMt2-AH-+d?Wy}+$&Nj^-qCtiTQN^qdroU0P&9*YIBGqfi&2OXmj3d7
zvu9;mg?wL3d>_}>jTBXmL}_o!Cl&FZ<3t>ZEYmW#A3jZ4d)FtBD*!u!4_6#D)*bGS
z==TbKP!?dw)EkruZGS1%$5^wQ!6x{`XtjN|F+h6D7vdScqAs5d@hs%2cQcLd=moSI
zT*)BgYQ;>y>Gmk*RCBBDOWlKL_HJ)_vW_XR^!TX`%rRt8G13dnMh8u>zMO?;4oGYn
zYQ{Q4iXRT+!fG}ON5J!<oM}{VLCgDg39?h4%(K8dlFC=be9?x`f`xoky^@4UGN&>)
z2OtSi>*kj|=me<{bg3^3R1*l@_iN{M@CU@(3tyc+USJnJtldHJJ9yINee6ZwH(hm-
z$p@*@=|Dq$AdeiFkhZBcr&_7OOCsYI1sSKhJ&PO1TMBfJ2FBS7mgk;Ro5FEt<hm-R
zjTy;x-iNLl`zZj?Rm}a#QuchCDk4s*VDuP4wAJY4(?VfsVZj4c_Sen<YYppP;Ny?G
zU!G6CqStwcGZn(rAK($_aqkO&Q<ENXpPRGGx)h|dd<9FIoXs}gw0(`U*$tvor9R1P
z|JXVc68E%_m_+mGP?dOu<{9@aHuKs&##-Q-kw+<x>mX;@=x6zf`!&~j!fB`}T{03D
z9?fa8<41)qi19*W^-9Jk^Q`V@v5WR$7;O->TRiF5s~dB5i$Hl_1*=|7VA?*7$)7MI
z5z)3$=AD+oXJ9|ne5w6BK1Md0c1#e;4*3q3P)q-@;F_PhmDQfg?W6>Fgygv%3^0bH
zhjXE}p2W`LFPQ1jJ|C0$mibB9XR3z#@v+i#6&+TS6!^0}-OLYGzx!{V<(wX~UV7%^
zy<9JhkT_n9y&z0cY*bVf9XKb*I6?@`K*)=lfBzViB5tIqjK5iX@YLxQ;z7^=puvco
zui#$wUUap@3PM}L&qIIq#(zL6eQt~O3C<CvytQ$PL+S>&%+Dj@o{yFMx-&jqnr@tK
z5_WaMDi=z;q5HD$bJCQ;=}y>yH$+Q8?=~G)OY=9rw_^Jqhxz5^nC&(iu9f2((?eWR
z;J0&Qi!^}&zll|K^Meba6%x;*<WFddQ>~sIgB)(S;cqWUpH^6)X6Pl72}E0JEuvx~
zT&Dtz(-q`{rMgS@c<7@0nFDc^2-q~mDT850<FK6i^(Gq$92%qq=q>gx;WX+clxs}m
zC|gYY_jy2hNA&KXNvMb(KuY_Na2j3DHi(>`GV8G^O*6QzsVD$jkiQz(9a_S?YlHiR
zI&)5ZQ@+~drLIknOC~LKD>W7r&C-{#N*9K~<pAAI7bMuJylR&LV1fuFKCRe`%PP@{
z7S)!j%m8$sHT<W9C-{-{AH>%#;DVO~p^apsh@jMgUs%B3Tx6;ObCl^e?bLKDmT`hp
zz69?76g8>m4#TE`WK8bM4t$RW(P<t#(;9MnrV<XY$kRi|uY(igw|864oy5JiYY0C5
z0H_o=BPLYSC%kXcA~m#Ysd_uXH%EX;&SQCoE^2@nS=02aJWy=(>2!*e0f)^8cOg2J
z&r_~bz!52;n}H=7hlcpHU9sRGHXtXe(<#y5-kWjbWi7#Nbj8hUp4zIxVZmK+qrVk*
z=KkJ&S+?a|`Vgzo=@h%n2v=horduim#KMjQWT-_s#cvxXW4Dv%z3?j{xSI(CZpXO!
z#Ur)f3sXFZ%isavmYlyaVC9BQn%xz&ZN2Bn)E!lk;(VWJHghwC;2T6}xS9)2%9vzi
zUHqaZR--bzJCYC#Q82Xa`g$rTJT|`MA=v--Al6bGRp&%`ROsQ5tUt>m@AKc5Jn=F_
z8L<R_ViIxEZb<HN#Bl`eqES47OT?Y{gEu^#W;%xu%bug_&?~NqLZnUgOhI&1|6_&E
zL6?Gu%M)0shFcm5=>t=X0hijjy@G^9F?dxa;2q9Y146ZQLO8PAK)B6%A%cuN8TqEi
zzOErJ4#LXR@>^`th~kkmC>8Wdu3K!L8uv3i^t^2T(n|#s?NB-W(Lf^QKK=M%OBYsR
zPTCwfs@IZ7RB70NCIkCoW(Y&S+-%g<W?V$LDOV+Uelx(K_@vQd5Q_ju#t0wfBsTb{
zC1$9RU|zDhzUX4+^mPB9YBC8FGYETj^0X4hJtr?3<{quVPXy7z*YYu%<-IniIevPR
zYL(^E{8=1SD#4J>?`dcW9Xn%8((tKR!zN_QUwW``j$k2f(>KRI;@%0K)4z$E%!|*u
zPBBDYYrLuQS^Myzw*jA$itzIm$wTsvda?WECvqkNksw57_~E>qw`qRN)N!s)CYZ=;
zH<o}>h_OOk5IhvXFDL8h=a}G%A&oES6&u0;x|%ea;q9AlYezF;|EkGRu}9tR0)YKd
zy|EZ^Sd^fPniTY1X4&pjNAn<XbM@td(%W;p1>it7YWDrG?J2Rh_OTf?*pW9g5TnVB
z{ySi@#?2q{`p>o>TX}z_hVWAig<BARQmJXSsX(kv!v5xFJ!@Ei!TO-x^^SU~lbQ7f
zb2x`W(6P7033dG%kVeS~=FmNL6cW_@esUI|aY49E10{c3hzkE5HF)90pQyMl0Zalc
zM?tbisMWV!Vwb2GX=#(hA31^o@dW;pzeh3wK{_e@-)~w@{5+&<8mN5lzbesFw3OT?
z-0H$WPzNbuD0lfRlJuWk_bW^gMnbrVH&0SAIM3hPqeY79gS){$Rq9Nn+04<dYI3h@
zIF=o486_u>RRPqmp}OlN&fTHVuJOXJ0unCU>-=y3X1b`in$G=(*^PIJ`)A5udNK^g
zrCrY{JWwmN+L@TAK&f;n9}wW(fOa4hbC@Kl2T(>MDYIueIN#GO${N^9rU`X%9H8k#
zO7?gsB$Cl>AP9f$=cwjH0%pBZ`yR4XcsldQQwPybf53oSKOd$@Wku<ol*+mq^Gj-Y
zbdk?^leqx-<eNa9!&C<zFpWx}#9P~B#JMQgFcNDmOcT|w?~d+J;q{&0r3~R=;F5eQ
z*c&4n%Q&VPJxBqsd%$^sNarbT+!S)yUt11}GL*OJ6)q>@ad3YIkKyI25hW+(D+T?m
zqC$FbSZ*e?U~-jPjS&(!Z-|L&0;KYAkOFDqTfxb|V;8;aeMD~iWDW4Miany4DvBf0
zBf3;c0c!VDui^~A>cBy7uTtbOx{f;m<9!wy&&#E;)5z<F(WCyPsFSh@2Z}pfOEtZ4
zIALsHr8~|Gjib{xgg5dlT6Bspb4ltbH$5-W)PD8*W?fXtvv!qq0>o!xO=vt#a4GVJ
zFU<!d4a_SMDG?J!cdO=@WRQ4xSK`cjll<s7OOz;cP>E$q;}I<c^V91kYF<>u?8P##
z5Br01GW<gym60=M1Q{!*AXYe*&<;Fo?Z(Z@>$N8RW>#2~<Kc%ry+0PBgYP?VXy9CB
zYfV2RUlll2pyH)#;<JdHFtmib#|A<9EZ4mfgA=>008Ptn5t~K)J=3w@BLQr&xDg57
z92eakSxHp<%@T?^#pMowkwKCLF{LrlG#`;RxU!D`0BhE7h_6*I{&RfKtYVh<XGIOX
zU3;tkzpvkXZ;makB)vV;Cf9_O`mxjzh1`aTG)N_g9s+bx1G|s$Dr)SG8+IsQr8)ol
z;a?6~+{@qA3RKF;OHoN7#1Z#<Y`i09AfY=f_nC~a&p4^i`nC?=C4viRuaWjgbRU6{
z3W`3(LQgF7u_wZ?pj}6b4P$y(TOQ_7h2Pfkz^g<{!&>?!1V;}b5=Or@G@}E>c*eN{
z559JFu=hq=2e_LZrh2}e+^FKx1ZBf7LiNm+gF~q=3Wy=-Pg<0>D}JUX{F`;;#$s8N
z&l*)^{zZkUi=6V$n2`eQp1Lktj0l-eGufE>Ao;0rpr_Sno%gdZBZ2XXc3^D@HcUKP
z`bfZ-HA13e%!Qp3@gRz|es%#yl7YH>I{7tTpO*wOZS!J>d1wlNjE&RcYMH$2KLkiv
zzJwRXj1Dku9;7NrKVhl2&IVk@9rQ(%TCKD<`o%q#*lYyWbKuIO0C!Ln;7aiK$|7Br
z$M{xe&8=J!z!e?ld4RpLNJ%L4_H4}jy>PUj?l&aA8Qe(Wxwm3`h3tO?^i+!~zIK6m
z&PME3F_)hukL<<)FO7PW5wTc5j3mmWU<@Ga3Vh4I%)(Zp*lJbuOcXgj{%@Q)0kJQk
zK{T-UFty|k*a3(Hp|(*RfF(E*UWj9pGU2X}BwHdJ|J={KKTERsdvti2tMv~!R8;2t
zJtWRyf<JO`L%dX|uS+aE-oc=vH~yLHWEfNFw1k3~diw9?Q_l^Vv4En+rme!a+XA&>
zOI8>`JRq&yqfFq>0_jC(qK&cm9JqC*Sm{#>eaz>4;XmX?3<5I2e_98?h|yO6z{>Qc
z8`B3{Q_hm}WxQ&VBdkp7x`SU4dKZBq6#{eWiGXkwTsUA|SBY{lX<GX@dq)>!wF4E4
z=qtAFP;RsOg3(LRK^1I-jKw^aTquruBiS2%=cPG;@$J8({}}IZ7#cKBWKM^<KaU6*
zqDk6{05yd)duV*Bs+xk-O7(Gbik>R<wuCrd6BOa-pjU?C3<ysg&}h%l=|u1#pl%*k
zur>{HH%}vuK9Y>PhLU_^#v9i?%i{W2)nC$X>$^Qyeg+;7BA*pidH`$}%~s{2jA<U}
zgL^!@yPF$AU8&}mqINv)+D~mb>j=adq@y0p`2OyX7Ig}hN^;@T97O1`qQQ6_ClpBn
z;!N%kK{&!dwqPO&3&Tl7b3~vxlAtqcoJu1R=|qGx%@%>BF`_wLM0f{nczg(==h8?5
z!!X(!V7-0qhfhk=(pkceVM!HthKr4Jja66qiDK`;cQO?*M3SEEfA+&Y07O!4Xz-|O
z2@Xs|rsD7#u_9@?s?<!I416o2#3aV)4h9Gmd}hyC5qH3Xn*?Bh2&mj?^p%eRS-lvk
zvRgBwOq?nR`=t`prQ@22ik}xeZ#mlcDSP?e>|0r~L;@<K#EXiNMKL~Uh~bD!WswMp
zIT#n{6id}hQ}02|wIehXu@GHv03Pr@Zq8+Tq@yyEi?#tI5OFXZ7SF)(laaYdbcQrQ
z6`M+qH!*#IHqnfIDJ=2<YKVUMsa9BI3IR$MYG{2+dl-<>&EFt8{d&gGBt7FRs73pQ
zSw)41wyJV3Z9by;y`zaLmK7y|z@(8poLHo&CE!Nd0A^g6MEd#1xTO-eR}8m5`2<S@
z4v@--P>w3d@p=MS0_`KX{~44VW!aE4GBAE>C9E_ez70_CYVIgZk*UJ!XBsA!VAyC?
zKmJT7Z^6xV%EaIIF$*`0PXA(7$RqUP;D0Mp9k|qvLg?$S-&}QnxKkn28RCuS@Q$ea
zv^251U)2Wi40V;d>&9}*rx|hBUnf<zTZ=1reLoJD9+LbsC2>nXd#Y+rUqlWkVlkUu
z9u4!ALslnNYb2J#3<#)ROrgh>AF!nh)b+^x)`|~bhM;NV&wVO%Sa|Rk^-R(BKQCAy
z9cZWGd*a2Lk3gULoaF7QD|+%USZY+dw<NHRj&kzE$TWY~+RSnHcaEo5P1>Ho`c`0<
zQ4wMwF^&CxwX=|pr=g9!9CDv6x6qmILprSO%vy=jR8*Y;7E_8$@%N_u&Do(ZZZBOb
z%C{7-(oTopwKR8o{0id)J%?0W-7ef{V*RjR)9sRvn(bBT|7HD*KaE)VuOjkreId;_
zKVVs^|J|}Ds8L<PyM8$>-!iI`9@QEa;RDK<bv7ox_2E)A`BtYyb6dOc*J9f*kDipg
z=Ogtu?ES=Nr2ZshRTBKyMJ2LrF^%;w$Nb(_q)<ZSRa$7I;i|o?41De@`@4K;Bq1m*
zQxTxYBrE!LW_ZB=)dTuP*!n?sQ2V#VDw6S1Tqh<hZt+ucX!wS=i8xAp9<cm``fM<Y
zFD72I0UsSL=r~y&9!(IG;3p-JodDRCU_gfgGjuR<7(I+yt&rh76}}8lz<^<w`CN8|
zK0y7}Ic8s#!&<gEhvAYh{#r3-+Mp+{EUAx2v=Lha>Ha_Ra|Nvw1(BUWWDmECF(vzP
z!)`ePhwuK9yFhT<v7(8n_rT51VJ8)R;bXnN2{7#XvIP;n77V%h=%=UYdF5+zp!h5g
z37@YH;zDqT*JyhjfwD>p0bso{^`eSFM$;pKrRQA4Ng{eK7d>ouWCe-2Nq+rA=Od(a
zJ{!P3%>~TqWVR#ju^BMmb_FUC<X51R1HXd*Xyw7mG2e_v7GHmV{`zJnB37>|4Ykw?
zp=nheJqxB3gLmhMx}4uF#y2+RZcc_>oYPP*?w^~t5w2%7(tK6Jzbv{;{AMMyzO5X3
zBquYAy2|`_Cj48t@SYu<jZa8m#SOjl$H46VnwE4y?$)$?iUF{hrLd855Htc(2Z9et
zynBKwQ$(Ft4pJPg->Im};bmUT4o4~s4L&h1WT)soPvS(RG3P}kpnhOsQ?kH18l!AF
zD;`?4JCI+qkz_fl*Jj=IRt)zqq6~K&URL53#p7b!kQo^emj8`kX=3l#dJJ7Y{@$wg
z@>rTca@_cVJu&j{&2RSO8TT#uFy4O;EgAu$A;ox6P3iRCA_=23+AwghW+tfWPNc7x
z_Q?(7+fAH*y63AMs%^rrR&sNqbJR3)3d#bsX&(UnVW}%hihCu$oCl4}k+RF+k#yS^
z<>0t$O6UY1{6C9b2}|fBC`qdy7t!iU`CQHE4G|W;X|aFUn()OtHr@_|TnH?J8PpQ)
z7nNjr+8m_Xh<C>2cY~0i+ArU}B>je;35u=T0xp_u5Y$2np=!A_&W5=M<uSwq3-Xln
zbLD(kVQ53oC=Ff<e4QJ!%QLv|S6_N-+5B4doA#4t3>(w#4zXKHH$*A#q0S>oHo(V<
zs{(DX-MRr*`j@i{ph)<H?Jc2l^Z$n8HwH|XW@U98qP%WYm|BKMjJa|huN?W^uw;g~
z`^OsH?J}SZo0fnJL@UJ2z`o5LV-`bHXOXuxGN>xMr#$4AuHj00tW}Le<0^+ATlf*L
ztAB7*@*t3aM`~TC7eFYpCHvC}j&!nn2HQ^>5S2&dS|&K?8};%uh<F6-W|8|{?UQNo
zX^3tN7mFe54BB|opLV2dFwTs#in!M+ika6f`1Z;)(=DVo%*;#HvS*%WXZR-I4W};~
z{c9h;{AToBrzpordpF3*=xaa$17x-Flzq2a$53qsulxIyJkBqpSSn|ymaTgT->}YA
z0>(E82@Vv?EqJ`5_!Crff(rPj`!~Zuw5^WJhO<D}1(LO;&5A70)~l|PVv7^Nza}hf
z_Qhs2I>LYc=ffL|1uo>;yog$mbjC(hNve2R+Hl`VO5BXQY#uRD<C!A4Y%kKQ#tI0H
zI{Q}y8${1$I~)1x654-1d0uh$tw)iljbDq|gy<Y9EIh~1sMH-LkNln>gk%i(p2Jh<
zYCHotS^lti*2g>GPe@vDUu5)`1nQC#Az#-j5Pd~njAl6hD-@0d?4qGRUhocL#d!x~
z@T4}(m`hxw+9$_f4~JU5{-tsA?NJxb)b%(B|4sd8aDvD7eV|}EU;Luozb^v(o$_6(
z_Syr~kH>!I7EgN5_132h1Wv`a0yU4c)9i$%>96r+1rM<)sB(w@$V-$z*1vU|&S<ZG
zDvq4rn@6jHn5q86V5v2bb2Hpv;VOH4{x|25wr1yHa52C@RdEje#57qY?XGeP#Nc1P
zWS;OAJ<YUX5N+;|A~~K9*i#uBh`a&V<H@NNi*C1CzZ8_GitEwv@ak>=tOTMLKS?Gh
z9ww4h;BXoVBxIA3m{A<>gkbJN@zJRaZg+gt`j(h$_xGyeYBfAI%L#%}W)hwl74;G%
zUm8~@<~I8;?D+aBT{wRKDXHe<SiCU?`cUf2soFLrhp6ZGdD}e;0+h)hI~%#c&YvIx
z2Y1u|@YN3SgSJ9&x+X+L2tr`Dhh~=Wqg-@@lvOvz3SHI=#0YuRo8mu*uk(OoC*#m`
z)t5?tJ_1zVAA2;O{k(2n6&x?~TXvO-t>K!!c1eyu6}_}qOtX2i)z=(S-!*W@k@i!R
zG>_`WDU03g<v)^p`+>S?c|<HkRh5w;E@yU(s;%h?n->=*E@cuf&Fzs8wrMw4Z~EyX
zA30H^D)hLLNzroEK=Hpq-W&PK3@f>)vfSGO)U-Ud3F8OLl&Dm#s00{cI^6=PJ$5;E
zvOzjEsl&2*&y>DwZ(Xdq(Ge~O&6YyHxJ?WH7!Kb%wrTx@{8K{o<LTFJBe0UI=w)E3
zo6xm+VCC!8y)*spp0ah%VwNJ&36|Y_e0;*nmRNgUj7^Ls>YtZw207L)89L7ge0y!E
z`PhDX&&>OiSx!p%-l}$;w6LErR+AM)E9Xy;&=8cs5J>DyGNbj-t~SaJGEOH5?rB`+
z@Y_o<Z#Ms9nRd`&5Xb{djZPalE4uTkMF(IPFqg2x7j+}*=LVqHUC8Orc*e^cKZZgP
z(c+!k_dZ^X2K|DB2VQ;!{J7##6!)p?)9$m!GVAH9LZgzOczJ#jzxT{vK0S2rL!)UM
z1{$UGQ?U{1F{qgY6H9q0a74NGwa9t!a?_D0{4U?O?kfP&Az*Q}6<N&c(DiTxp9CbG
z?}C&F#-MpvS66hiw<|bQ=FNsawey7GY{U*@gSi$6`19@ku{itl2~*4f^$x}NZgN6Y
z(D#^KU$+_U!^iJTq_w9Cr`0nY#R4EvIt`F$C;kQyi|@n0Dc#3IhsuDg7}pnyrJL7n
zT*eZcv2aSfYW#a+!mN*TgCo}SepKnUIrqGI4cPkTs`EsNJ)~sC$z^Mvr7C=kLl(Fg
zvHVBz-_)ZRKjAc3j$qDbT_`b+#)yJS_BA#XE0C5`uhKCP7xi}gi-q+emV!|avRS*M
za5y!>w>GJi@buY_#xjdZ^Jlsx^Q;pu<zC!snD0VuUweA3_?>z7t0MC6Ncpxx;A4px
zNK9$T;tRyY0eQ%rJ9NKX;3Oc^<lr;oQM2_pj$9-RN)_dQ;cA7qhz_Ebm>#{NbY|;)
z-%#t9KgX(aGdAQ18j+6u=iLQG;%l|Q35NGP7L#m#ofyfIpWfy5BB+d`!@_x|aO_C_
zt9r_ZPQK~)7m+(CPby~o@<t$7p_jaMf&%%GK-<ruy2`GD#_4Q6x**8vT1sDX%x#qC
zEwMKb#PNYn-n9)vzAl8QE{AtDhmVEj_JDWVRNQ`+;N9ks*5+MG8_d}^NnA;OH>@x!
zIH__R8Q@pDFI&TNIPns9YW?(l6&@KW-s#EnIchwkdErUR2fKK5yh@|z3-q296oyJz
ze(A)9sutt<mKNC&wkr}bwP7V~CXV9X+b1)ekM#OX=LI244F^!fZ}&rGo*Z5-+kN*O
zGMn=Qe7c)><re>T-j+zH*DI`$J}rH(_CmWrxGgz2f6=h}f@sr&M)ujp=^l6stGKZ%
zKs-JHiOVewO&7lr9v%ar27Mah?&lB0(Zz#USyE$_Xs)_5-G}Sa97f@{hk3>8F=S#A
z538z}_)QqjobP_4HmJEsvww-^bWwY;+NuJ5Mr#UISCZUHFA1MD%JM0m(&n>UJ|U+t
z*V{|dQ)9-=eucKZ@5-tQs#LLhu$<9eFJ-joS;|M=p9_u`<l&%03qfsmM-C=QKt%Or
zwRytQy~0=f<RS1cNyaf6jBi!mbts=4JDnRj-C-9Ch1J{!nq)i0RV&E}pe!}Vto`a8
z6N}cbD-DpQpvzTc@7f>KIVWNBG214vpzd#t(KVj}Sd2WT{X7$SN5xJQRaI9md}A}M
zYz~{O<8LVJTOv3<mxe{5U|yWA9nJLIgmD?Z;9BKw%BMhbgOE~M536v%gV#<M>J0*t
z#i*BZPBW9~_zpkmrfk%*j67OHzI=%H{{CT6OmaFFt(hq23MLBpepOQ1Pdn*&#BYxt
zU`N9w_Q$VUINemb%0qC3O2^KknK(3(kUGH?HS2Zmx?_6dSk1a#czXxGx>N(kR<(>h
zX2-s&^+DUWtJw#lA&1of!aHxeB@9n@y1hB3R=&`o`5n6h-Zj$q3H`)Nf+z^sbc^@|
zraeM5>xslqUDUlch0y}9-5=I{@+@0qvb42bO<3FaZu;eWd=&nfxk{g$vmQ0l1XI1>
z99R12Id8>F`us@_Q4{)<Mw*nr8X1z{ZVHx%1oBCnd-Mcs9`YOia3#gTuupNMAveVB
zca5Yv|B6_pw*oJE36o&^(Ve8qc&q7&VDw`t6j-~k%`BF2;VK#dZomBLtuJ$S#mZ$7
zu)M5(#nHfj%EhtUU??Pu6KAD(^%AL3qC7WRWVew&HPC&$?wOE<g4M{|C;6danlc_C
z12Y~@slO!5kOR*jakh3xRfvlF$~*0($B1wasvD6SFQ5TSv1RUD4H~aAn9x5D&N(LG
zlkrPESY#3|(4B8MEr@)vXtjOT7%Yu8iuq8y49)(`kIKsXt5k8)|3Hlvn|qaV)N?p+
zJm>c}vyBizx){sMv9aw*ogPi8)imGM-ZobX^3ED?COASH5<s^%*)pCyf!)}sTeFgj
z5#17f8eaPHP(|I%XO9HBLxeG3hA~dZY}|sJTq2o&YlLkltk2J2Z6hOAYX<gCxP7Z3
zn0fj#wFqNjSwGqgB<9(Av8sGmQ932UKIJO|loKcE>|$RS+9}JtY(PVF*5CEigX2ok
z!?~b1@^rV-R!^FOt)n)z2Rjm&g!J-KgL3d5c{C=Mhk-?oFCyyk@X*b*K*+iPQt{DA
zexX}e_%?K0ED-{4rm<z%8~(Zqaq0>)z{-IRL*FE)BQ0v^IxXk`B^f%WUVT+Wn95VF
zP006AgyG?7c8+@Z0Jt~QqF~mvk|ZbzctZBGHu~UV&`}CG+v(9|vtFXc&VxsFq(M4C
zULu*dk<{PMOwYhkoXmbWTTK6vxVPJkv7q*S2AzY2FmIUx80BoQ1dvK9OTB%#(@_|a
zj;e4qyK_(!rK4sGg*>ks8v4x=-Q4lP>#3s!^F*_WtKIi)&U&m4zw78lLD#*}W_L<v
z^yZN2QrL#zg3PfnvEU2Ek6%ONqpuN0FRNM#dZ~LU_uo3#qz@ZI9~dy_v(r41%=iWN
z`i75#I&pNA4kbjVfQTC?nrNKi8QSEyFt0;RC0R^@_}eV~)%S38V+oR$a<J~N=0Ei>
zS}<bfv^;_jOcS_0WZY)`Ekt>Bm0$~Z)OpIhLKMs&7kmBc>1iE_=<`*UUL`OpDl?vj
z0;#2CWJ%=7N}*wS5;VFj866Fe$EacU%sG)81&`<T2&uV169jyP7WD?FH7NiP`RK4r
z7VTRBFOQTFM3mzSJHMy809+u{27(KD5-3jGcWgE5HEOw&wxAAxQ>q?AkKr_Mz=jCv
z>`@`}(2y=f+eG`?+MY!rIuV7ZCqEQ#4J)oog}9Ke_XW>i@eTbDG&@^jZ6t+Ihtkte
zG_u$Ut~e6dyCyB8^5+Z2^c-NFSF~zj^m8|vR;uNt7)8kt5!-@<4*Sudub69FH?G4-
zjgqH-imUKJA!HyPmy`tVTGHaY5z-WRF~s_H!dl_#m)380yZ_eGj1xK(Q4#TG&9w$$
zN_hN#@}9=qo{G~~N19#qO%%RYo3NdU>wec{;++%hrxSR^lZt$1@*d-6K;lzl39XnX
z&iBMU2v@@c1qy@BN<`AT(~4(Qg<h;+0`mMPLwKnKA(|I57Xnrmt1PtcC2~}DT};<X
zN@S)}uC;<BHW7m^zYix@iH_?5KfJr<Oi?d8v^m-=?(2x7{B%WEql%%aObxe8O-i>C
z7iZabR*7kyGFp<5aP#@2=8&&85<FK)YOSaJzQJXFkrDlpEhzWvckS0BL%_{CQgce}
z>&`!iO8hjeVX~^PEJ~Et@*(mY_XJ9#@tiY#vWo~U>9L~(fnnI6q$2d{15JjlwI=m*
zTlU9?7AACQ@L$HAzdfGUMM_+i@WRzJ7WaJ4>BUN*m<j2%p%YQu1=8&#0B-X%JGECb
z53soVCo7CHjU$J7L@e7^Y$*TvH~VSBd7$vnGT}!>xxMbdwte*F?&nbE?m>7GVNIA~
zu_7gjI{XC7LF1@uelPuSFP)C;J(X0oD~?r8(~&D>c&nwqJCE53?f6}ra4|^8hG+rg
zhy()xS`;r!bUR(?pfR_wMqpKCFs?9%WNrpd>D2HDHc2|ZHi*&52fLq$hYQplU8q>d
zdFG-Eyeuw24*r1*i9huDhHmw@%?gu|=<~R>rH*|_$v)2JP1`{OI?vb+y(6Bum>w0K
zPnxeaA(e=x{u`QB7wOPru}UN=<UGo=uZXq$i<&dn*bC4qU<hmvdL5~i-I=L(ggaf3
zG_e$y{Oj$@TJ(A1cjD*wuVRN(QJK4bX-M0vD_UK3i8jHSLvvS;la_7SeJ80VExaYB
zif=y24ye<O5LHDTOq%dWB|MR}zaxU85^P?Kys|F$e30h=_)xlB693Rukm{F6MppT|
z`O}Zfflz`jJpPPF#U_ek4RyAjH*8|oqx>ZIUOq#B%{s)+Iy0S_+Qj;rl9N#}-uD`e
zt?vw*AE|kL6LfvaV(Z$AU6#23<|8d>5Xt=&+}$H{^Jnjeib4xd^HK?8ukn|HL_~_x
zkJ~2=>!bX0e=R6l@jvNcdz)^~24G1}wAowPi=9$CNu(_wGniiK+s>uUBPPv%;>NY1
zR3HE@Q1z2|<{CKODkc=G3WPUu>EaMe30G$X5a$SG2qpefZc|H@@!)#p`Bvhykkoi`
zO7A5anhV%)c(}a+an6qs?$HCa_dctoh96jW=+<tzlD}yUb&4rkBPmA-%Rp2+OfMcP
z)%l^414NHFF7`(hynQ{}?Gk4WL-Js^>mo=*5f6^-l<@S>7wT^(+bu<aNIU8^AZRK?
zAi5a*%UH>s1i9ga!(FT%kCW|4OGvZi^ix_`L9r#$hT{k-n^=+{$ETOb=18+_P^q+3
zsve+<gN(Y0NAfWJ2ncS$B4>*VUx9!;9n1J#Q{f3ta4A)3$PGZGOd?Cv@faq-W(6Xw
zd;?({D@2h1eaHP}s9)j4Nfrv8x8j0W=gFR^a&~SS8cHimb+Z&Ca(*Q#SjjR90D;%6
z1T&sOfqNgF5~AJdG!fRR4$~ubJ(SVZ#no<5hyobu;1qq;tUmoWhsW{kHv1X5a-d>(
zx`@i&eaXIFMtZU7J*T1qTcEV3Fwz9VtLE22mk$(vdIj85aXeFMb9<)Uo)*UqHVYZk
zog1FOI4cSK(qN3_&o5~6PrD~{<c|WA{yf8v#HN=Ddu~4YdGN=|82vGd5K-mKD?4od
z`YyYBrbSMU+`Jo2{i%nP1%Ea>M!UIx=9*MIPRo)I2Z$t4z~BBo)^Po3qqX!#OXc9t
zv7zK2>L?HAfu9?Tp$uyQpLef+8pjRdev6R>kPvf6vD}U`4euKHQ1uj0zk1ZC1f0>a
z(Bd5bhB%vHp3IxU`QBh{>r1aYs;#n6717S(5{!&)G)-HVKhP<SSnJf^J%F`uz`p4F
z*vE_09+z7`Zzp2*HoA(kpCHO3R+phrZK;`(j4AZ!$Zdc$+0!9S1Ii^o(`^-Apyk;>
zj5|rF4hc<L2-8ozOLReQ=j$OIuHS5W0r|{Oj(y3^mEjHX1pOWa!b=XOuishf*KLWg
z659|p_NA2U@-a3W`TMTQ`U_cQ__=ndrN+l5;<%V-R#MN8gF3lm_rPrUN2;Msim`s@
zoDHhjQ3Xv6&TVT>CJt+1*d)5C;nIFC1TAP$FEE=tj!jkPDrux;P9Z6BM|0@$eVuD?
z*K5G$9u}1@jz;6*oH~tmns8}Zhq<arvg;DfO8S<>)`dFGZGwH{V}mS$RpnhB_93l_
zCfj97%Rz|K-y5MPDpi`Xar}0_LJ1Le>QV>m`6dT)E=wkq1Y!9HJH;oEC0Mcz-Cs#V
ztol3LQAA)#p{FpS%iy?*MgKRiK3$=$BsVp7khlMT5+V64(|%>x>YW-5;Yi&fiK9z3
z4N+O{hECq`DnKs_Zp80czEf2{GT&#Jt}%9sD4tracXT%IK<xiq%C=H0F4(QehGp|(
zb!J~ac*MP|-4TCx)?Pz-HOKu@w9f3}0{*pFK+J1ZJKtN`5o><4+Q)J)G>f8Vcfwx@
z=}VM)_<Zk)IX4m#r`$dh1@GM~I^zD;JE20eJC`*)6s|%PQx+2mr^$twA-+}%3I(P{
z-l_Z0=zlHsD)pgM*!4@jrQAXF0Q}LofzktmpPJt8jCOL{?DKNmbFiL-m@&iJZ?Xpz
z6Q2s-X=#&v=;YyoF<!OyC=Nz{?HRa#?c}@f8_oRJB9iqf-}JSbL>{KyW|<wjuVPyo
zBR;57YbSC$C0Q>5JRD<kG&N7SxNLR$zRFF}-yWTJvId)12Ulxs`=qM|nq}N#Z0jEz
z&@O4##srja*k%5ft6W!Y82_Ta)8Sve=m_n2c=onaCzGl>9O%?q-1GNWva2D=rQ7Pw
zcJH8+l#P~XDoo4VN){FmUr3<uWNz%n_D|aSothTR@$rjK-b;oEoctPRs&HvlsFC@$
z=@>v<8d-2O+!J<7Q86AW^pb1;LK8i*X6XJ=qP<Y=bkv8aJUilD2mDq2=iKoXRM7r=
zUlYo9<0OQ4TMK$lE;?%DOudmC>Q39o3+Ej!PrW%rFz$vRVY9pMjb41c`0h>9TO_Q*
zHhlZ6Q;1`Mme*T#mk&0fMtaQ!^+7LLj(11WpUp<gPnBOtbHAo=>Va&AG$OP!MkxBy
z`1@HQ4KY56L4PEQ6{D&7KUwGf&F0(3aUzHa5~E@##HNi=H7kkOd$nk*v7<F>)NCVy
z*fEP5u}8JFTD02QyH-`Hy(v{nTV3Biet+(B?tkDq=eo{)zpwY_^}5pXd9x;7rXSVA
zipN72B>m;=WUYP7;A-f7*qHri2N%1u`xr%WUPcuD1AILdZYPt9nlVtze4FJC4djvR
zIXC~FH`&N*ootXumW3LhxB8`BZ1~_7lb+-5N{gQoJ3v|kreB!YkHDJLS@Ut%=<zq^
z5J}&^R7x3rF~19K;4v!J@SNAloKS!Dc|8y+B>dd#k&1s*X@CA+sNayQsY;ww--dG6
zB8}~IZ2ECos8(_(v(AhDpAoV0d7;$2%1hCHiGt=GK|oo&=Mba?+AC>xA!b-o_nbh^
z8D|zcw2`ewX3Te2)y|P+G0#D`KV|``twB`%@7ft$sx#P!F%iWI2deYA@6PK>POm?H
zzXekrG#`nP5?q7wjiMURxe*<sGDN%cZM1o)TBh;+SEFT1;nCaGN|yFlMH<qsd2$)2
zsg}*kr7m>H7+rET%61-6^*oP%Je>om8j_)s%QT`-RdX93Rh5IZG-kIe-+7O6nvQf`
zyEc`VfUa`yptluXUL!YxJ`$b_WD3OUR9r30*9Op;S`u8J#Jz0?o4n5yk=D3yL%qw+
zb0DeW&SZ*A<vhP}KR}yTp}DRz;8)7xH`l`m;&pcf@`*rsE1R=#JZB-|Ys({$JHV}d
z*-jAdR>VU^dQ_t&v~kFjJ-?9MiE5}+e2yu=fDez#0cR-Sjr<=#8e;W}dOVlqL&_I-
zefovR-U{qjswJ3eZH_!7Q3w5<TUl<49>~6AyzMd|nG4LO*Ay-uoQNoNC@4L|DssD1
z!klu=ADCsx3Or2x)7WUJ>|m*}k+Y$?23wold}nBqb?<7duVTVNUL$otL1o?Hr9x%Z
zQ%75Ya#dQkGV5a*g`)sMz|?api@JCTNJQRBAw74Nd^S@Ts~@aNR$m@mj>7Ro@V2+5
zH8j+C#9g>l9kiH$)d<-svT6wOcd%gc>1J{~ciU%Y(5BgT6J0^<QR9K;4k@f`PEOK_
z1!r<owJ=`*bv|bZsU_x~`jz;TVG9Sm&|5y^=OV|2G6Df3>Kv`em!(;<&Z!p_3}f4~
z3TcNetGt^06?gdaTm^)UT?71XL*|oh*CoZvhR8hTW$<??R}|+^xoFp=y-<j7fQPW5
z=DR-syh$Ol47H;kRHJ=hnozhR-Xb`>G%Dfuu|2t@H81k5L1bizL1DOk%6LQANCSMa
zb7qXWEiLV4g1b*w?dPugj55^g21>xk`kHg{SmEC6N9FZvq3P!fg^$aH#J_Ldbtv13
zWgHI&i>3-y>Cm4G_0RdFo<Li7EEe~3H|CC{R=RGZop_95$j@;CS6KuS;;-S<>{*K^
zW?KibLaxScLQd|29!@>b4Szz=NW_c}3bK`;^0DPt+wyfuY<_!fUV;{9Z2=h`<{N@T
zWsM|0@#DxkR2u!f#B8AcI^7>eqb~XPLCgZ9k8OPvmJu$jR5Lo^R|-Bh`VL~XibR}#
zWM$kaEF4SEQS22q-Az&qY-wG8d_=oR2o+Qge0DQkNl}R+?w-4+`OvDHJu=tG=wa#l
zYR>HFNa_3JR-l`uWe3II>Z5Pf#r=<x+wb=w$|c~>OOe}Gn<f2*jz_5`bSZ;dRn$yz
zWL-^KujlrYfbYwZ!y7Ml+z@{1w?238IDMS4e=9kk`XnZm9Rio5*4B6m`bwMUy6|*g
zFgUo%x?_wRZCVjkRm#w7Wp&)OSS^}(p>J!3IJh`VM%7vu=bDOn#a~((T(5lnuO?FO
zJ^#bUT+G6HRH{sD?n=pZmMBQ(?%<gcas@-YjeURqRQ~SjTXVXGFdNBiZYHHAMX=dW
z?uB!dIw;>R%o;b=KVKvhY!}1w9^U1!B_Tq!a%jIj^2T+vaFtC-3AKBNo7xa^JyrG6
z5GX!oNN7ChtZYxt^&goDaG#AzzxJ^S8%sp=bAn^z>GtDq-wnQw4D7(`v|bj#-|3Ko
ze7~cT9f<f1eF;Av+nUCpl`m`G0x<_#+L>FVB=ppNbB32qJPBpb7X8`bxSyMenQ3O8
ziCoIjvlS^a^-sSXr485RvQ%3(+^8B?Ukq!Wig`RNamAoe9DhZYBXKAbq|nR5zRZMt
z`|h?1c7L8p>XktRRHml~d+S4n@`p|7#qHPe@y*(VXDiON_7^$0MJPi_HJBUS>i*P2
z@(WH6Df+u9A(h_3jHCkgTR^{3*zIZidh2Ja_d1Zp{Ph=aK4LcoPFR{r%Ncr1_R=Y+
z;rS4TWzVs2)pWRFiSo^UjXkDo@o4WQ=Eh9Q^<YI@DOLRV%!-ZJIZS=#@8#1F00BUn
zhCnRPXDob-YQ~Y76LBL$OFYQ+xCjN7iq2jpB2I(3GRr{EM`05jnU#FrJVZwRedXf-
z#uw;pROei*pckk7T#gei*#Ai&3(qrCeYT`QC}uKGNzsV+$Z2@EAO8KlkpYcJO}fRR
zRBFP@&3$lG&~iaQxv~AR>4|IU;0cC_dv>}aV7=a@FB%(J#38ys8kzTbHX$=p*M#{x
z1g`F8Rxm3GhK5L#L5`YN4zM@Um?~L}fkH?nTd}NI>5QZVKXtt%HrZJ$jUalO8oe-4
z{3PtPHm6koVHoGugbPeAjE$XxBmYW_Vx40PEvyZG7`Rq$`b-Vyn%$t2ejfPtiPMro
zmBz8jEo#l~w&v$MqhD$t(-!2_$fz>5%rtj*{G#nupr_|TRxIqACatqF*Wxyx3S)8}
zDwAXBpe-<#Q!P%gFYcUM@kg}7{(HSqyLSL;R@I-Wq)o5$zO<-%$;$oC6w2vc9g76I
z#w%c6m!La2JNY=PU&$Izq;I3j8df^dtlZI@U+_y^?KMv?C`QSLg`{jkUX6G5PV`uZ
z<V-HyC_1YAtrDLnqW(%%B))+S<H9+FM99eaD;0}~1YJ-#dK}Qv*!oD6#nn4noTiu(
zZSnQ^7&aLy(?zWHyzAZ7)g^06?03XHm=oivb<6Q!RbD+4IAkYFAM{<F-+1kkuOmCO
zk^I9X`6tP5$ci%L<Ay+^XQdV=pBwy0se6{Wj!wFAt=cwSC$;F<un6hO?Erwg_}_zp
zoNB6q&$H(gh~KL_^wNSUtUG^R@n=qZ$sJ&qYsv2SGGy5kFFQ2vZSwjaFT2^^l(TjU
ztb*@hM`pl&mY%-$f*{pxgpIo6{ZJq#ZScpwU9G9c@V>N;CAn0(kGbG6+`ecxpQZME
ztkU5xHI+`NlbZ|6r>jDFK5o7<ho*{N(VvIFnytdW6@$;o$<@l_jmD(h)8S-|e!gG-
zL@mRjSJYQlp-GQn@Ou5m=`(oD^Iy;2$(Q-8#574EmgK{wlkJ*>kc9~~Jj$^IF*J_R
z9>{Rb$kPVEyJcj<MlzlR+yKhs9xHKhaf6DHGE(_+%gVe{EVtrt{xh4VX@x82$HBB5
zrxoOzs63`R9m%ka<?w#(;V{^k*+?R2;Ka<&2E??+gsRA-B{)_5BrUxhAfY?0RN;e1
z`GX^kH3UQLhiQF2E>##ktN1RNOo3*NtmXIPAI9sq*N@&DOZyEOg~dg@PfH4czPGY^
zk1(1v)92wc*0;B{GwXc}?Sh^WsbDZuB*qSCmjk3(88h>q#c8Q$eW3C4pN~X(bMfG#
zHlz3$#h9>~9mcgp&3D)Q8uXyuYc<~b_f!%M*qhS%?7286FrAZ(+(0OV8v=dFk3kuR
z%qpoTvOPIk;f6thG<{36yhQSf8ml`P7K7Ny4jKuLCAbcjef{AUlL=^cZ?UT2hGJ6Q
z;>*!FdT0ot^RG@Xk#iwjF1v>3?CXfT0!pJXE9!xJn5x@EJE8CB78>*U?Bfk)Gewsn
zEx{Q@Th|k$T>=jC%L=@;3)I<rF00q1ika+(n}@|@(}lC>R5GuuCI+1?p%os>Mk0rz
zG>+mF6`JOGUo{cB@@(5OcH&o8C-x)W<w^4}e_4YAWw7k~oTMnmF7pp>PnVK{BSoec
zndl-W2jMy#l0)<s4#Y$fC(kuWS}6`E$=L~w)`?&apmsvap?v~)?m|}oqlQtp2S?@?
z(jUmqE?gR|-ANp9zb7E((+z8a3L3|rc~!cZ{*o+{hSJwV(E`2q9B&BYweVI@X9W&c
z=1({~ztJAWnD4hw@86lL-Tj%W6j{3H>-cT%s&8$-m}fR89u;K)?7sV(e>-E9twD>b
zOsf+77WBi4sIMPIx!fn=UUI$s^9d}@J@FA<31KBsTy}E&saAs1rz;mES?ci)*Ms+H
zQ%p@VGTCtG7e%@P6s%~uf~A9BM2~8ml9Uc%S8`_b1<V4jelSR#WA-)xJc?|RkyWg7
zkI#5`mrVNtmKOll>v^OLNb_FMo^}gT{qxh`V)j|>d;f6p4}rI6=uriIH@Jg$$C|Ch
zd^2=m63s(h2L;5f2lV*xPR%|!s_im^cDw|bnFxLjWcOiG8w;YsM`AB1Z#*Nec2!$E
zB){byz24ti&#OMoI1<ub1)xE2iNb&c)^h>YrQsg~n}ok=%d<+pq^ZC38OC~0y^DO+
zz7*N^x4%yu4jQTCLuUo#%Vt-orB>^oqnGMat*IDA7N0ERhS1FE;iBGQ6AXc$u^ld%
zlgWb{EoTDe5tYLX8HLtpq%Qu^c(i6UEa{GxC4)M+igbZwgiR-W4(S{dsr)<p8%I1I
zTPV5=L&{E9sy+}rd_t|X9evobp3EPtuX(b29G=cq(w`(J$fagW@}IX)DN`sZO=QcI
z)YE-X1?JT({~*ys@%Th8G0SmE6BThfV*BWg4`v~m;n{%WcW}k$2g3LRRgC~<Y<{BN
zTpW)dF+n6HpbH7AHfCX@&6X&3hCl=>1K}G}vFaafr+K^!f^6f7lPXI;fEmXbgG7F^
z^j~(+l}19i_*f~50H8=a4?zE$<BIHIjLC*e@n{N!>m$!h@jsK>sAr1TzAPKq>NiSy
z2)TL4SKY09#eJ{2xyEjS<ofIPhi=S!uct25k0G^6KS;5URnJRH@=))5_+Xh!+vObh
zvfY!wm**huug#<iz8iCskAiacb2(TBC&-IhJzUo@X8mB$8y<6`4v;*TFZasIScv2=
zeV|Jg%l;L$Ha5pL!2A6JvnxC+Fs=WQ7dfHX(5da$p^kQQxt;fjR0o1=_I>d|`Affm
zfD9v>YM|r7xLc@lf?BL3*vAte0z6aQCAsN0Y($Fv^Pdf)bx2#w*E7g2?hDE7M?GX)
zDGTof(@uR8vZn^NoDi1csmPWXyNXIE8|Lm9zeLx$KOZ0eTWxp|OT8fDd*$e*RF#M9
zx@M}_-I9t=hdQs&c-N{j)vm>9_(&dauc<+Ivh!L74}Xp#dwb6l^)S$lL8}j=-l{3L
zj5k7fY6Ak@#NI9hTJxTAmzdtWo{94k&sO!>VSY|;Ng!n2{j0w9QkxL-PiXt}mWA8T
ze=m6cY>vcsRLY4nIoK$q$f|OyruAs7ZLHRhcS$Twux==5m2#)AodOt+8byDg7QVAl
zSXh~F+Q|+S99ZAp*t=JRX6D1kS@juNMfN6?q~BpFK`}zPs=qlKf4M~M>TlMD%yE=n
z2d-dQ32+9Rj{jPW;|6+qy61Wn23DB79lz_%1=Dur?qa|1Sb>^&nI6hM!#!lHkH>Q7
zGOhzTwc6C7)qd%4L5*`jiS(ZV&_0j9ulkX5SHDC#XImgxc4B8(K81T|aBrlrYRBl7
z{TcdnR)&A#aq>gb_cXNcvO32p*Tk1YCox&LzT_v#Gv8q6>1~y%AB@(#Y?-cPJUtc9
z+XBRjy?h{ao~5#?43s#Lryy{Z+1#wL+TM$i4~By3M9SPv@&sLf$TSfw(JM!wsn%m$
zt!BsIG8NWeJAv;Zs3uoXNxL{9SFcm}&}a%PZ46G>&vs;kMdt&tf_xjVZ%XGdsBdWz
zNZb-=O0r)m;^os-MRPrwJ9ag_+qUW(V-}nwmKE3npaWXRA+D&3LI~Pn;6)cLQhF@^
zwifbc4!`C8T6w)O<wZh>uTx&zOZ^-d21nzR^V4OEY}fQNLL}E2Q?46nUsUS{JrGbE
zEm~RF^p;L!5L%IH_$cCFCh$ydajTA)O;eANt4?HpQFj)n8@_$9-o+K$fVQMwH^N5^
z)#vuR&rALGf1MTl{*{p-laf~_q^CoND_xtRBL1gJDtkqC7GpLS9WRSj7PB~A1LPfp
z0{d~NBY8?^eaSH7sw|B0z*fpQu5^?merO1jokc=>8fgKBg_9iXI#<oLWd9QH_^Jcd
z*1i(31;Cm0d=r6^!sP}o*jA?wLX~GmJkYrSO@|)fxh}`P)ppq{K6Z?s^k7TWy}CH?
z(Pu4s41Z6{psbLpqbc~o@8SH?n{&wDh^SI-5ZM4{EhfPOo0RJny}Bx2!n9S?r|TDf
z?d9M%WBdr&CNY;Zd=SuBA-ljjObdbY4R(e`ua7AmQ$A5v@~dh(g8*}1^U9~ky9U>Z
znuvR8lEqJzU#&zSDpe_uC=6oO!>R;P`NSUq%4=MT<JYhPqjSdQrcOVL3ZuPWh`O@o
zU04aw;C3~6HJffF+$Mdw(r&$)*2nuZKqoDBj^3%&NBjCEb|Usor*eL#QQ1wBi3^?7
z8lRb4hpaIw{{2hr&%(-xwbDi8QKJ!-H`@xMB(L;3s7nG!vF6&p)xac)N;08IkqtoS
z7)a~Lwc{jEZKb!XeInbhKxM3ixtxua4ZzN%5iE$m7<-T5mYYl($F~gMW%txh#Ko%j
zYuB;#rh`Q|#eG%TmWMA=FDBt3hoE^y`0_dm^9L%w_N%Y66YsXcKmYErt~B(<_Z~Gh
zC8w)nHvO{r*Y_WQnXH@ik^GWniJZyzUJXfknt=0dZyaVIe3s{!h&Q5Ep_qPyYXr6E
zRMx;B^BT2M?xv$W7g-UrcSS9$l;gQhU;PtyhlTKCcH=#Z4X>$yJ^ApjIh?sg{S7L!
ztc&FTey**xPX+ySiTiV63Z32WSJOPom-SH#uDk(G;e^jfY3#HyisKI=f_I<tSH4kh
z_u|;3sKzOPq8hrMhblj{{l)H?mfvx*Y%kD{tslx35@BFob=Wh4KP8%PKjyC`ZAbMc
zs9xBR7ENIHRPdW{yw*r*y1SJk6&W#Oqm^6Uxba6?I_6z%c@QY=kxgu=mC7S;fjFtn
zUf+&lZMT9C(ux)4*6Eyu+4DPjt*9lp@Vf_cEB6mCkG76U5Yvoztig?89n%@i*=K4h
z7g1*JxIQGy<o6|}=LQ{az?4vlE2YoYBvca=>cfI=+gLVray(~aQFg<wJb;zjc-B#7
zRAbJ6w4VqwzW6-R>_M=Vi>i=C9cCzWhRC<Hf!WdM-|83tEZl{Y8dSD0@rAwN2ow&0
zqFsdbu!h%%L$ydu^*pEH8;nD%cZI)JKq$4kQqze>r5kdUq~L5G`>}7KeTGDyz@$7L
zNXAWt;_RmHacDd_IGLLm8_QcxMpcqBB-gBZEgyVp2a4I9wDZRT1#pC-3P`qQ8EwLe
zG>3HJaWnN(I=RHmwt~WffKNA6ehdrSg%o%T%H+8sA@h~uzUs~JyEj0LPDCSLCPS86
zenR4jO>VY9^&#tUCp9*gOhz@R+6*S?+eP6$EKt$(s+#$Mb&GxY<wAkUXKPpb%h`f0
zuA0?rsE1wOyCX9+YPz^*ys}Dr9=>SdoLjDacTA-=+jt_?*0fwoSlzvMBwp<a_Nt&$
zYF|9l=zx=Q#BE_uxPMbx)dQ}GTVFX0Z*aGkF~{c(qvdRRH-={uOBKr*yisWn=Nj9)
z+B+V`eeN2F@?ckjdgB^xf@Df5#7wB<T|M6^x#Z}wH1T|;>%p&51(@rkwAGZZzA!%q
zRV9b&Z{rnQ)GEJ`A$Het^1w|p2mIu&t#>2&<2v<Y>!iH`;iWB;sY|X!scz@a!z*KF
zXa3r_6Fa`#kS{Ch96&5~&R?q+xgeCo;0?I(qGh@XADq_qF&I9iI#!rp!d~xRuP&|}
zEPiNkl}*_O*C~R$4WugP{mMh;GnJdqy}QJMh*$l_hgQ!IuSTbhbKlsS&dx%5SxA>7
zw}B=vo@9-nrZMY^o5lrkZ8Wtn6>4e|s{0zTk<U|DK5_P8Y3_ir#fy={F>MkuV_*3(
z+Oiabu}hJSEgXj{u5;tinrSwVLKgwzR;mia=<K04(|VNRm!d72Lx{^8!5ykZwoQ}q
zg1ZbfsNu<1vQKRB?QAxza#a>Jq43}{S;T<z%f&~9)>+zXLJ)TOVbghhr}6_}K92I7
zCuU^_wlXZZ9z^$3xt$vlI#|Qd;=bmV*(j*scjWt4wOy1=Yuj5z-ZSGY(0tvP_A*;T
zhS6gD-k;<Yb_q*Ep*!a;T|YX1l2ikAct^<VF7yp5L_MY-ew?^6cl%l&@miBIStBr8
zy`py-;(cA{a&Km;jR7#@`SBBbD%u7ul5$=PDL}}7eJAK4Ul;gH4#RkzRRNW(s0(tE
zYJ`7?@+E)NQjy%9lUqAiEF}=zy-_^2<CD{SzAedj51mYSs-!J@<<l`zeBWf3Pws8w
znZRA1&od;sbE`TE=g>V}EI3`?tiGq|cH2|F<bC1sY;n8|Q^0LMn#nsQRts8tKO1Xc
z_2jqIj*GF-y$-?}Mbi7qm$W`(SB`wd3em(aL}pX48yl10i@C}eHkzwSDz8{gkWNgz
z-nN+NR<+htc8pedUBCftlfHK)|3HLAPVyl!)ftrK>TUh%tH(^!MH}o==)Bwl-b->Z
zzQ{F@RZo-EwV%m$F4seT5;SMMS<3D+5K4*r;Bg^%ui_^2!fm|Br=}I9kcW*dcBoRx
zLBc}LqYppT;{-HJ&`baQ_eX}m{gI1u?=ruj;|^h7TdIaI*&&r2UnCw6yXGr#r<0Wh
zUM1m)duuSEcTp)fYxf;XQI8?p!lt<1oovJCM+u2KZXFkLx*!=G<0>+yOc=bMr2>s0
zj8|(-9?p;3WW*RVZJB}1Eg#a5@oHP=SbMiE#ublv_4z_qq9=$;qsnArGrDk6-&zaz
z$+&keW-4FG)zcaY#KT!l1dY$DTgef#yFEAd@|f;dx8C9?5L{UTBuz}eSYmo6APGH`
z@<hg7Q1X2j5IPzRzuqPrBXh^6shYlCsy;0n(s9mTL1FBgUiLeUeQj@U^gFOc&DWx(
zA@^^S@2KeK{pat<xoUocMPGHh!*Xe^G{K48_RaO+*O2WTv#5i>iKzbmmeT2muex$x
zT-Ax%4E3^gW15}5#pzn!NPOS(4Eo#Qv%z}m8~L9h&-a3)kR8GDFh;Li@MCTil~qrR
z`-KTW&`3ksuR^@EitkKyxR?%cdqiQHMmWv;%5kD@9GYbd<dAV3a1~%qeu#&@ak<Ga
z3tTz>U71!TtVDz)urNhfv3D~S^8_lCu6^q^@zV5gv3$7jm(u=dNLCKBK<)MoWpz>K
z_dwc@S;hKW9%{T0I7T1V$|Q=*bnULa;P;`*z0LZSzogOiE6)9s*Wy29e3K`5_#I2k
z_LM<}-e+~(UrOQ0YtFN;($5g?JI)L&vKL$|kh&mjA>r%$JZS8%hk|E=T}9F*%eCND
z-q_|YWBySW@_uZEhSCIDDc(b=;S;VMB=n6sS0;y8*hU#Q6ur6rHT6&7J&`cvldVFD
z=PVqkUh`{NWrE@ksT#R!jI9#^t;;PB5#<KbB75Ik2=}#hqS@Sf@TWJ%hITGRGyUj!
zC8|AfNt|rTeMmTp5AE%8@pM6~!L~#%C9AuH?vs8zeE212CXEr`Zdk|+kKUoL6a9rw
zUf6Z%JuffxBdU<bYRKNAmk?jyXX8IdO-Hr__)E_aR!5!RYj_^NyN8w+<Gbkel;WHG
zEc<#dx5+uv*`+(yEKbf@&#p|U>^y#(#i#RIOBwNGgAi3kXR|S!D@-^UWY{ZqS?Y>8
ziJj5I_QR(sF|OWKQt^^fe!uT?7}7=mvJ6!;y=)GFssve>gh(VRWX3clUbub5S-xvh
zUBi^a5DyWphiK#$E<oGkJjgu|XH=I*hF}8zmPix*{`sb;eL!63x}+JeH6DiS4Ocw$
z<Pny5J+9J;!y2-8;F3w4+qdf4L_G^MNOKLc=)j3kEaOfg%bZ*UtD^qp33UN+263h`
zx{I9j)wqe?psDuYeO9Zy3;y^Nq^!(E0IdO3No&EmlP?x>4hxDhcOcrap1ca4@o@mS
zgB%hXwrWlt%0qT{Gvi}r6@O&nnY=k(+QmgNptGqkPJ7PsXB-JvY`Ah>2&d_Z2R=zS
zlggx_M}xPvv;%=ZX<aj~xg4dyVD-~!Y4YlD=Y*^Y*$gR>1_ER>cLRy#Y}8?p0){Z5
zU4!R7=b@M_1tG1&?i%BU@>q268{r%h6M;AH)zS{4)j2gm61)^>Df1ALhaFUrfh4u4
zJ8>gm4kNwOxC~Oo)CuQ*yjI-44<Ms?ovUI2V$xiA3I^BVrE9oXXIH}-!GDR~^TNwz
zcQO!ZWStMnrpj1Jl0C@)5&;F4LLlQno`wOtEUh8sk8XN$b`+w2y6APxU+#qeFeK~r
zY+`-%9vU!cSw_7bJ^x@diCb?}FYQx$={Ewa9pIZ$%%}y;@SEn@z;R5KJDf<Z#Ze+Z
z)Jp_gbWnC1%8wW%jJWRUO3{+g#P>KWmh5@PCUtP)tow9^jK{N*hfnjP=<1{{(nXgX
znW-z1&tgpQ6O4#%W-P+QO$w0WsFcFXs8WWa)<Zh`Q#jfalutnr0Z_)N*~|IuzG1EM
zcswU3y*6q#7DGc87bi+#D2piV#YOtEMqcJ73FF(`A>&C8Ur!f3zHKQn2GIC#R``Sp
zGdtvF`D{#S2fSnq7Ale-B@x%N)o;`SW6=cQ5Q-%M1VA_xrQlNy7Vi{Tb$Y2Irrc!=
zOe8(vpu=GScN=a&hFL-}**!x4RJ&_KbUfmPgJ_v{OfV^F<H(W`vvN&>#>2T^J}8T*
zW@K7lxy!f~PC6#n80L_H4VlZ1d~6a73PBYiZ06m-Dkgt8!dunmVY0BGPhKIqAN9;5
zzeed#6Za7XQz1|Yb<m}CumCvb8m*S}G~@qHU8y(h(ND_v48ux=Qsmi_uw0-^5BWOG
zr*3jyt9zoODBQALbvpr5d)^8#&{3Tr3i^3I<8*VE3qL~Q=tA(gn`g`!Uk!7la1KK>
zf;-uh6G~@G0`sCVaBfKE>l6vbU;{{Y+JA_WC5)GYHzJ>zf->sL`7MEGN4AK<nV)V`
zwrapADb6_pG9O}8K%L_OwGZN_2t3M^n3OC9(@FwbfOn|OQ2}HFq?}jIGqrG6o75`=
z!Y^{iltOSX?1D4oR(rCi<V(TO3UP*I8QqsF)oCwAwDTlq<$pjA4Wl4>T7U8nP>8&Q
z65GSCc#1j7^~Bg>%j@##(z^ujcK1Q5sTCY;BbA>>D+lGtO|{KSPwi-L{<0{!>>oDJ
zODNybk*o0dNuV0J)4@0gq%kftkFA0P_VN}kU12=bZi@uF$I5iXdNZsrBoU(lf!0?&
zJ2@jm9UTV(KU$#F8CNIEoyvGjbgHd;p3Zo4CUWOBW+WzU3R723J9ZAxvQ!OMo0mBF
zg+x`0CoSJgmeziXed}PgxA;%j%j@<x#)j|V#rtA~y6~HQuR02~jiJ(vIfT!mH~;f<
zlRakLNrCDD6E|MLWhlK{Jav1VD~U|~YLMDmB5nyu%T7_|Rlwq&sL68L?(nKcn>tWi
z)Qt(gW-sK@sgo+&u1bxEp=%0Qs?0|P!>NRC;wRpKiF2`+j77TG!Z=WpU&V6*uwtm%
zQ<N1)9S{tKzON+4W9=sxSijOhC-gU6a<Q49N`S0U%@GSw%vvOQ>Dtf1Zy)Gx1>%{q
z?>4IulYvZqeYszsr2Oo>tPIm%@xS)u4AXZZ2`8aqs*LXJ#42Y1?B!7U$hX<zImaLd
z8@jsy!zpYi5kcvU2Bn{8HN-nS*@kxW%mi+^bY8ZC=Yw3&M#l816r*f_ftBp028vQC
zCMpG<N{HI1AKB{h#vzC@syE#(C=2_)`x5wH3~jG!9wjI=X}Dsv1G}I*#EE5ZAI8BM
zT@bM=*@}_x)!7K053+fq!z)6#Kum~36leQk1A1WoO|GF)*c&Gst8i8tG_#<y0>IsQ
z#@2owbMnp<h}K8j&+{^f?&9JS@tU4&C`obVJD2kqPec$N)RX@}dfBRx<`(Dj;#E$4
z&Slaa2#%eh0vyc~k1L5&S8|iB(Apc#{ljKiOQgBHM{1D1Id(CmX81Fn0{8mTD@B5V
zcYw|xxjV0f=8HO8HMnvVBog<(Ki)3-x%4zPSv}v7ai}G;PLQ)N{SKR|cfhnqoF<Pg
zds%AAV=Ll2<HST;I;WO@%LXb&ogHhezXsR4<1zYYTU94_3|pz{J>z_>QZ_UufuJDC
z$8ZDhYHau}JWN#4VP?okAEHk?*!Vu_?4W3G^ChKyTVMY9g`zL%r0OU?7tPC`UlOQt
z&nKq4;Vm$q)&cQAj8(97-_(&e==oboS0%Skc^3PqX12Kq>WVn|#b>y4k_m4)=NR?)
z#&LkCofcstdy>~2ro_xrbY)a9uFuT48hWL>OR=IBY)YskeEh5eRtzjYI7n-NF-lt&
zhG92Yl1E!m#}+!D77`KyphTj%m5=9Z^wxQKcf)xVKBZ8c5*Z9TC5Jo5sWbEfF|v>t
zJ@m$zwF(UDO5v<Mhp0;jJx5Q=eZ|QSM8UtxI;|;(4+=+14|2-YpeV9Iv_o8A)b+TH
z+d~^=T2aU@>Q`#`8T(%8`RU5~w42^q7ih4Fm(^sA+Xz6&bF?5R#)e+J!8Wl1)wDPF
zCcIk#2R5jbE~q61RKtK@b3r4iM3sh(*+DCoTpnn4=9Dp(qPMdY#l_VSBz;BNDOA?b
zYfNI~=4GK)WY2W=v<<iD(>2S8NXe48Q@DR4;9ZhC(_QqR-Ud6KZOed3vHOgd5SwOC
zwzGw#lh0doGxzuQyqbE|g!p|JZxlnz!`b4wM@hOy`cq|>N9f-6WNTujtX)2o%E$Hn
zmzdiqTJOte!(~ZQp||>l@sBZIgf5KXylbjV{!D~vnsKg+8)lktTdzb4Vzd}~mS-&^
zg73ni4gb!k6IkCcqimTJm=!uxRgosWgZ3ub6>mYtl1ALT3=^do8XquGt~XI1WzB$=
zXRv`_tPoc3nK{HK8V0R-Gng6BsZ2ls#)KOq-rFbx?Mhv(LwHc^5C9q)ho@%Za~OA6
zcPR4o3i~=)8JKCnF>J4=xpls^X8|CJxjOZY%G$ZNbw8GKvSwj_k%m|5m=??=2O^nH
zgk1&U;tZM64;~bY3v!WMJ<#lzX*ne;f?s@p#Q~VFm61v53xSS-ug5HN^{DZH@*ZZD
zugTyZ`zbYEADK-_2qHHI(=?dm1U0!>GNXGp@nPjfS#MK@3ZGU1xF_Oo2%Fmc#NQ=t
zC%brv?|ng+92TJLM7m)cqWkPxQ+;KX&sDw6{9bdFpfQF^#M5Q1^Byd2V9IhYVEgwx
zUrKFW&gEt2I@c-KsoCXEMP2D^C+tu4s?%fIYlvjc|6T#Hvwm<qYxj)-VXN*k1f6Q;
zY7!?QX%s=pV>_E7JO5b_he{o^Fkc^)%s<5+V~JL$$OGnMJVz`^7i!I2i$ZjXn*q>9
z6TMV!I5@;u`$(NST4<-FcGV_-@s@^onQQ~wyNRebtK%xVh0i<|d-d<vd}KTk=mZZ6
zlsn~7XUpo!RET_xv>&!IB^IvXIHrT1GO8$T_}<T!a2eIRRvL(T!=+^s@2faCG>?px
zqa6P}eWBAf1s&8ChWR)1&a=jT9R|Ovs?ZgQVT`H1ZdT^x+n^*3@020jef#+Pc;{ih
zzdA{>v|NIjPev+;?A{i$QR~a{ho33+vBqdIEZ4a4`rV5c{r*m)e|xB#wOBX;$ME)e
z)gQNT-?MR|1go)3ZI2OTTGOnI-Mz%FUxnY_g>B(mAtaYv9jMH}Yc><7i5^7-^F$4S
zj~sC(7^51_`)V!v(8*d}!{OTk&iLLn&d?BV&L&$(rZ}U{zN9xui$tE1*@<Czv6E7H
ztoSFNC4;<F07yv@LZay#;F>RT@=&@!?`0m$9o7yr`%lba4-Z@^KRO=W_MdS1#2vJM
zu{dVjKAvemH(9Dd=cCdsIfG2LaCh}0C8IxgRj;1V=*e>KIeqsnX_|bQ0xn)DEI2*&
zE3usQVwq42u*rpS!c94!7b+LN1Qdja;`)bu1T_CHu6;F|n2-loZzj%%hj0J~n4prI
zNA5<e(V>_^LA9H2U8F=7XeQnokpgKcy`NH>hzK$pSXSIwDVC=!uZ$r8Siwzn(c+|K
zaswDB2r_5C6e=-^EbMnsr}bOq3_k{(_(xImE->I(h?iw^mAVDW<H77y$l%Uc``%PJ
zjZqURC*qaNXHlcynGA)6k(L!I0FaZo>985qw0eEr=lW3$Xwc+r6I)6%o$4+>&zW-z
z?Az?mlP$P#>bSJM#37;lD_Xfjl_y+EkU}<gr^Y*wqy!9TWG5*F<wo%f+BYXlLv}am
z>fDLog^es3ew*tkN2*mNXpTwjnH2ZyJbo>2FiPA&{+wODS`atSm6VE+YFLUU`y8Yf
zc%6`}F<mevsA;&nBGU8y1cGz6EEKe7%g_vx!OKg<LPse^k({y-R{2DgGYnX^3V4^!
z%@KQ156T0JygI7GBGd6XwTwU?y(>V@%S#kbHo#fEh6f<8yGNnDl!YzX_^TM+e@90d
z@8U(aMfP_nAN~dLYu=rDeeH3v7JZV9^=ER#VcH~3Wb+c|X>VD9rE$ct;Dx2WepeUH
zmC=xuea@(=iLKbkFdlzc#;G|NUfjGk#@iwK4^x_bVVZ)Vzirq6CjQjL+%J33{_609
ztXA93TIHuZ#yodz9Kk{H1|Xq74n4C$K#DGgbh3T;qj!}S$aWqqK#kNNW&Qa6nxBks
zNe%f;Wok*vYeL{_Hi?jJ-aEL;w(^5|m*%SFVWO_Q;Zkd&i{a0A;Lko$T@@U{V5l-6
zKHi9J`kF`OT?2cj?~nw<H0Mr%I~gFJ1VUw2qS#1QWRMbT!xeh=46}|D|EJ$f+*l7A
z0qAcO|3~oz;NOjNP?7Uf-%ZJ=YC`F%I#+m8=gptVExI*`EgS|!mPC>O0H<86IHN3%
zg+TztLXu&0r!uoS5G0|JI0VK8NkV*si6Qt-*u1t+Wc)ZYzfBDp5v@nFTOgc1^hwKJ
zd_1g%<qDXWmMcyaoi$;2cKY44nR53tp*O);(a6NCySJhSD;@x|+{Z^z)3|;+UwD8!
zs7ZGK^XZjO$a%_%BLGZ<e`wufhHJ%0^hI!_KBF%BKFPoHq)b$+{#)U%w22dX==0cu
z{fZxN9+KH!eTZ&QE=oQwi<peEsrGqsGd3Pce-+R6B?Ms85(})cQUqccEFws(HN0H5
zvY)w#PL=}e5w+jpCC5}j%0$ul{P8_%mc{(Jm_ZvReJny>fmsq_gT*RJ8ly2VL>I6#
zrCwIKT^9hUNb>G!`Io@IoCall#o$ph!J8zNo2&D|qd+r<Aq%TVvym{y{l{VRx^xKv
z4;41bR)+dW@<uHueG>+LtqHQ?GGo|TW1HFw`EX`Mi-_RbVXOH1)6pY_?(*Qi+S{6#
zHls2Y5XsdpJsb89a37%G^jGOSP)wC`<#z+?W{&of)c`_=t66s+`v>;75H9&i<2fwP
z;~&{KIE)VQk={M_3HZg8|E+|%^S|=>X=*`|{R3t!V>5#q7wC`f4Pg1@m{OzM*gxJ-
z0NLso`=#cnRuI#%62*^*JDalt#E2DJeHfU|J8fm=5EDKw8iM>v7A&Kv?>RYpcHh6*
zz5=cj>d?PGjW;uETqx;HW6eHwM!+x;dJQE{?}mH-X@X~O%-xFPnhh}V&~w*ZIY=T_
zddpRT0c9+CG>JiYjh3BKBRP}Wz<BzYzJO|GYJ=;om*G5-+Rcm7<E&*oK4#FFRPU?a
zn!jGcE`OO6Bi*a%{(Z`a@i4;6+Wz}R6(yZ~3x-ARmEZH$Fn{?(IH#R$WX>@l-;0+p
z6Fd`-Xnu3$KmxnsccYnZ-6>|ZBPx(clBs|*WX5Q&R`N_D=65*6k(pp1kVQeA+{v;D
z{bO>2=T|07l9iE%__w<7cjtjL(88rH%hH&x1fpCDqhefz=yxy?byVj-4#$JLD^&TO
z(wB@~6JtFET#g)~8S6jvR<?i39P#(_6dwzGGWo~E<Mx-9(bk7&9_m!ty_|3kSYyf$
z^;i0S%e_&lLb9|IyVd-?`9FDw!Ncpi!hO?TS$#Hhq<*O$MzPT4v}LA}PTrI|P=1KS
zfb6f_h|52AuKC14BY;(wKJ?qz7y?Na#v;U8?cl_8B&cgRlmLCmrKxc7&pVWHprqSJ
zFS+X$+h++=g&K{o?VcCcN~iPvW-h#ZdDIe#ywEoUU=z&X{l3f5tE<QM-6;4Ho#>U=
z1owzD@Ss%n-%v<&c!WYl$KTJX5SolBO+O8#|JkP#ZQ`mN3UbQGWSn&`Gs0A&v=d0v
zgOnnrx^b%rF`gZDk*Y82u_m-nCYE_=nY|*|qyMtpPLc*6{`i$YWBH~!HI|%5MD`MQ
zhC?+ek}H|#or@+O82R-Rr`ALhSVO8if8AN>_`zlc<9ljo8cCY?iZn>2_J&&%k`)ph
zkdB574HS*e-w%%O=lvaEQC+zOP9#u4HV;OIF8|w$B^>%)JQot}6(s^u(u3F_ZYo>l
zGr10yqI0?hS=sdZ7$>E3XM431dQP7g*s00R(5F8RoB@AbZ3<XS&X5nZGTC?!r(PuN
z2z)10F@v617i+e1(4}phg`qS_ub-Ag_`f-ZGK)Rz9Rvtdm?|;RF?@rOK$8|iB|Epo
zr>?Q6zJEdq`YQ|(aEbk=GhAN4BS{vD+DA8-$5rn9Y4t8Jq@Hff<*Q3)oDgU|=6=OX
z2rYeACe<f<brnRHzROF&!q7JM+;*me?SeRQHhpD=2gyP`dicO`%xF0zT>a~}23xma
z&f2<6l*8m-R76qm&Lp>m1MP_a?4%4qwqiFT-?IRF|GQWrej(xtVV2q#OSSmH5?jt=
z${l>W{^Mc#xjQ$uEKyS+d#iKxy!RYTrhB?USU>(o*1*Q`To9M)7*m}<@gBUeXUQ6H
zd@!r*B5|6g361)&2%=(97X}!~M8U6lGW1`rUsxazAt60Q+!KiHstZ2R81;Mga71%<
zGWVhP6EmwpqJj5o`fKTQLHI#{K~iY0X4pBiSd*JVouskC6$?kMf!kAWe9PBa83+2v
z0)~{h!7)75-q@N<$y-Kt4Vg)>vF5KxC(LhJzvej}S5S@}n3k4a(L$lw1T5O^|A7p@
zcl9fc$Kun4?ZSvkOjeIfikT)zkuue@zD$@JKkgh>V6AtljwCCtWE!z%`zN5xo%E?j
z$J0Kq^__>z<*=Qb(#?F)SDi?qVW)>G_UT!spAL<?4k^EKeq$t2=<Bw??5zlASDlR-
z)-*=F8K8UZzrw@<j_d>LwdDUGiL&iG*_UWkToPvOo*swN<@?xzOxq5BydXe~<pd^5
zXeJpI)lsGSog@YiIf^&bRHNu6xq?G7&W`a`RyEf?6NJpyi&3(a%XF6%=}J-vclNbU
ze!$$P6QSYnEhjOpbpZ)rjqdUyyhFX=_r?}uGp+fZe?O=Fa~j2Ov-03y)oHtWs@_Yo
z+vXVfCc+i+mf_?MS~i$*jzk~|uX-y&Vt_RC6QnxAeTc$2t$Vg?G;)OPKoaC-o^OHz
zt88sHq(iUdc<;9WboW)3qzn;)$zfK0ZCr!UQT{m?n-f3LV4_}OLJy2#g6lRZgD8qC
z6K;SXfWd8%u8JIYBcuzN`wHlavEg&82n&iWbzM_5i|vwQe~>jdG_kZYKzr%Ohk%ci
zS&7nQ`b<#YOj^ec2N~L+*ArL0J*&_Ug<)Zme;N7-WT342uY@~1!Fs<b+);#$&q2t~
z&*t7!)Hp6`)e6&=5ESFCXNV3sUy7rdkQedBo12b5=kzyiAi1m0L|UcT{aT?)5QYB7
zhr!Z4Lu}n>2a*5Ic5F<xXdm<A*RG}<ievQc%dBk+YeTBfUAZ{u)CAN$_Q4x$g#TjU
zY(CBu>k1~6){vO>Erx|&%|uqFZGfSgBHL^ZM8<=3;%{lbSMC>t@icT3`vDX6s$C@w
z#=v>d#*JW28ZG2fUq^@G8s`N7$5Vt!$nb>J?vn!RX=Dxbi7!Q5v@uaW19R{J*DuRe
zd}gj5S1)AS`4+=sd7{Sn-@CsDjKA67|FVwecm$kgbvGHI1Hhr5p|@zVmgbCA6RK3*
z=jtX-2<L=YWlxtmmGev!M~6p+i2<CgoW|7NpkXs{W!U3oiqM>3XJCLO128E7yQ-+2
zDASg49ma0Zy-Ojxt842lJpWcJ{*Bd>F-7#V`pzh?#T{jkatIGdA7y6r*P!G^jnJ{V
zfCY_<mj&9x@)2$|%&5+Ir+Oo83xmeV3FKI#NKhn&!{pyqWazzEt)X`+|Gq7D9xYqP
zhejoruWbzd_rdNy-`7cQY>UOq9dE9NrT^*`C%(qvbWQbl6;zS@nfNzFv2dhSt$5I{
zvN5bikItZVaYD!31jojM9WeVz!6bd1eb5HKu(@25<Si>$MTwV50*T9slVnI7v^Cx2
zwZCJ=2dYBJi_+*g;cS-;7SHIZm&%Q)-~-N)@=wnTQ^7(obMR;bjM*9q?QN7*1&!#l
ze>H)_F%IN1YEl_58;k8T(p2E@`HX~KEfaAuU?EIwH#A`H-IA1!#Oju=%c0T2*oWxd
zone#Fmk;kmZP5RIk^L+f-an<=^gRqtDMR{izqtG`E*bsg$W%r5tV{n#X(+z0!_aa2
z$LAlx-&Y>{?}CGGOo(&ny<K#SEau-k$5ORY^b8b);w+Hue*K5yr+X=R!jQAx%V6s7
zk>&2?XK0Qte&($a<DFcON3Z_Idj&cnyyHVVuCEAqB!jZ^D_o6b0vk1_oi3)gA7q%C
zt%a?%i<(Q#n}E#K&Ig_kE49&6Im_toYn<D?&Tfcf4@c``nQ(%+FWdvFGhse@p{*&r
z7&Y(bZ!VW+-|v}G+mgtAgiMrnjX&fR;ES~fCyR>TrjE%gK&}hBep;mv&HT>Hm(G@E
zeDtt57li;lrx%lU@ok-l=j=0aEt&z}+pcK{Phg(ADqYNZb6t)lS*Q(Q)>T^2zuoHR
z?b1IMwf;QU1Kca#cLZmbd)WRY<wmnIEu3y!J|3s>Hq8M!A{aTzJLQPS^iIs4G>a&O
ziGA++5Cpm3ncoaMX}<fJ8z%hq^H1}nlJWs=5dm=Dx-{0fv5yaTOFJ>`av~r=uUzD+
z{ZL1j{uZNkK|!J4)Rir3`h<}?rqu3Q5xNWZl<_Q>(ro(;`PgR+#~}|C8(*f3^jt~%
zE|K+FmZfLiNn1*$#=t(LHtQ0Hke-$a2m1?p4bxI~L357*rTd2@-ZF*9%s$Vq>7w?a
z7Fw6jwC1l$ePv;&;Y}CW9`W65Z{`@Z@Azxc*ZWF8SXRq$tZ1bvNG2U^q_amk$KFBj
zBB3ERK%+BbW;XH$%fv+uMoOd6O&c4-A#D@7**V}wpx%EagmbSt#?f{WjgQ1+cmDpp
zPy<G4E|d2Q6QpH+Z>MnH5=*kGX5;$GmCGn6jv@mc1Y~W90c-o}K|rl#%P*wxttv!L
zW;`1ieD=Rj2RnkQa44#AQk9H*1(j?=Le^DKYh3e_jLKZk)qrZq;&yqi02$mlPh4I;
zg<8dip_)`N8dVUfCb$@KrJ(CMGFe>a%!le&g#_n94U(*Iw>)x5bu45-aseV99481b
zpw&Q2p``#C(TUe23CWUu=Go>u>(4texXM7OPRt0Z5j6>i5<lClV8#lYT)0DABF+TH
zo$ZPR17t{m+Ou?C9G9JlE06_|5e9ZJp8bC)9wcuCs)vCPQv;qHXxER@04G?na@Oo1
zMB5zmWGkgiUrr(0eO5DSEEIP-J#`Gsm=a0hhq-v6_X)OMuQ~jGUAmd^3w`g6<-n`N
zk^nfjSZ3)!_XQ(2&@T;p!=+(0#P23IIpbu3dq_D0$pLkMK{{iN+1wYV>_mrNg@zi<
zhXWTQ;>Q@G#pxZJ3^sTgbL7xXJA^RiU@@?wqE3blk;!i&UB(Li3FPP5(3IU*MK*|G
z0>5_csSgTlEkA`sHLk$B8qYt5TY2g0p3CY?pY1vxK5sH1J;}g=0U9ajgQ}--=g}>k
zomOZ)sFH%dau1}XjMs+uu}yZl5$mhWQjApt_UtusK8%xOG!Z?l{!vxdswZPiBs!pQ
z@tGu9A}q<n$&QSXHO?T=Y*2#wwYr0d;XyHP*smM#_6MOb2nhlz$owNEA9G><pUCQJ
zYtOHc66d9(S;x>j&nobrB(KK|0dmfW!8r^H?(Bb`ya^4_IM}fq*ZZlP*PsjQ6aB?F
z{2q6Ky5&+E?bV6>S8K?@`o8?@KYx+f<-0eFK4T{oZ=bF42I~?j4$Lcy8$qUQBNOLi
zng-rKN50<DzA)i`SQIl$OkC?#Spe5q)-fvU1xWJh+ucjvkT^$ht#l}@pjqmU7XXY1
z2KSm>{z;K1*ZyuST<-j$63>|_e);u<J&x&-ywI+%+!}d_|3M?^BG81Uw++zl^4&p^
z)y>~<z143^si=Rt%X7~fSZ2;Csdwo!@bakW^YNw;Dzqi=JHu#IuXvF0Y0qA0=?Fd>
zUtx{ZQ`?n;4@;i$5i^j-Qi(NHE8|W~RhcbmGQT{<8S=PE#4D2G7sVZ<6u2ke*iCIr
zq$=8dTV>K~j4i)z(>sZM*6N`}CiM;{ymxqT%_T_eja(6fC|QIx^KdQjG)qfqw=R)y
zuL-M;iDi>xw1~IaY<r-K{uXuY^<KBjA`$gy7^-ZDGGReg>V3a|>C5+@@L#VqTRMzM
zK$5`iy!#wC-GyAmy~}S4@NsjSy>(H!^z*M6@#kV%8c%Y*w3(^bAxZCY9y6RvZRT4<
zX8t=NA2pV-$2}CI(GjUy<y+>ob^gD<r=IlaJYN<UTzC8L;j!x0T&WaJLz+j3kxtK2
z{ja7%{TMSP_B4TMN>k4s<4c=1HnFm<ULcB-s3vy1(TO0;E>ronTL5xZez_h-%ab$^
zKW=&T5Gz)*dGepgGiYJr_4Ps3bbtxC8{iHHyVGTA+;RUd`3DGEt6ly#;j8l5uX%y*
zUqkL#6`-Ryp-AA~cOH(@<gavAhYP6{p!@YKtn&%`rVJ(j^62$hvh^c}w3`eTUjP2@
zIXj=a!C?Rw4m^I40SbdC75GKIp8NRZ<7vdEe!bk-?=b|orttjKO4xUo=qAZ!zgNOM
zbwu0U_dk}dyx#xu{_~HJ#dPP6S2Ka42kY<Do+>UTZJW%$wD4~Z7_p1Kl`;S7AoW0m
ze`5NR!!x5ti!a|F{1|`LI$k3BUGwJMNXNS`+P6PAe_i%_9Uh(%`ReQ5-nHodpSJn6
z2R-u(mO9eoq#v)wo9maOmwlE)MAn~cz2eZ=rHgqoeDQzrIlVagn1SKfm(V*EOs0FY
zR~3FQ`?ua=GD-r7_LItL)H=ZoU>hx#QD!ACmxIo4xXIV2k#VY`{-7Tt%Q~u>aK9g6
zIR`62W{a&M?{{AioqH6&=tNd(U~c4>mZ5+B+9t{EFtFJ187>EQlgSljIX3pjH^V=z
zMDP<XV#;dmESu%n3B#mdLDq}u<uw(1_CH#S8;EBTp}K4%F!0ypEP*Z)XE5)XWX;-0
zHIciLB9}JHja4Kv$YS;M^sNmC{BY!23|QtVJzA3iWW)@xq;r64F)@fb+y4PfK(oKS
z;k*wU8C7=5RFqK9uf2oE+I{D{zT=O!?{B{L4eoZk%^y?k!-PJu0bfVN1EN4ZJKO8;
zZA4wCzVA>_pd#pH)=x?rm9t1Bf|LPUvxoqYPyhg-M%f`$HoJgwNF8^*>DxT}J#-Si
zgAxHi0)m89QUZEv_r87f*3D3m6iL1H$qBDte8KHIWL0R=0)cA^2R5PT4FEX+(N#qX
zT47astF5@}uD1HzlP0ZTNEDzHppT)XMDJbie2;q#G8L^Sp7{HZ524}Z=hH*g*@*k@
zvD<gOrq4~hw>Dkc$F&-iP_^st0juILBq=JVxZP^6rtbR3zW1uz-M78&TdChbcQdFf
z?A?9u9$pbhXkiiwRYi2&eeZEVDWJrnqJ8u4Y;K$Gcc8u9rF!%1KHoFe`)6jh?$*BS
z1lPWMdF^`p-M81=>)Xq>w{y@?ef9@F&wbo|PoeVVq?!i4Z@nJJd%ez@*E`Dl&VBQx
zZ@k^Fdga7}j<R{0+uO_C@2(|vZ&KXVeeN6BItH(Adk=YvZLf8wqO=vuy;ae7y6;M-
zyjP0ZyG`85?)QCtv!}v0ocpuhdye&k+wHumJ*z<%Uc0Y$`umzuduV&8GIg~2wX>Vq
zy**>zKHq)rI(OCH%bnh{db>8AcU#6z=x<JM7Tmm2>$Z13`ythv?{`wu-Bs+>zL~+<
z+)LZu@bO0a<F$CuzMI&)+z-9?HxW;+_hILfK|R}{Fk@ApHg{(uyFT9SzAJ9F_fE~e
z?|Wz8W4iU;w$*y?Z+*R2y`L@xdG4C(UAFdmJ+{3#9`n-c$C&QkFz)M;EAGvPPTsd_
zkE6Jza$Clodz_u8WdOV~_Vc|5XkqK?@3uGB+-ghJ=%@y5>%A}>d6m7fQ^xz9-hJ!S
zZ*J`5O^UdOZU7n|Ciwewq^Jp1ZT8-$qi*i^n@@L}-de)!ZuMJ>FKzaCjy~Ug_r5#8
z1ps|jK8g=Vr5=DZ03LmS9)b4208>Y=XlnETHPN6p!RwEDjoifn&FHQ?Iqz>K+hA`1
z2d3<!Z(A)p4O}k{w|g4x?mT<Cx3Rmdt1eBx_zz!SJ9H7c0we1gl3#m#1FoyueEQqn
zv(fK+O|n8-rsx0zK;6YxM2DFeu3Za2DI4BncJ1s*xGn$<?s2=gM_bTRlo#IyeLlG(
z>ZV*=J>IyzoF0LLt9y#MF{q~A`T<>buOD~26TMxpc3uE!bkvZ$vGvr0)>~#MK7a!E
z&i4E6Y1o%~>QnEz&$%zRuHEctB8$7dGkd52cOE#{wcUHpI+5z^()#0-MSEx1_UFCs
zKJ(|<s+Xbb?YFmQ+q(CCx#_cO<8{5~J!IbDyURCahmTC;?pf|}bv31@cYQnS?&k^E
zT4dNOR-00tE54euxXC@evWk1y0O>beUE|*N)vYq#-74r?q0`#{=nVC5P34?=+gDw<
zSoN+10J8?D3KeCcZRzfB2UHXQ%|~ZVHLccXFj7=^LCAN5=sx=bqrh#xLPvYHd&7I&
z%hM)-+goj&9kOfH>;TmY00NA_tWd7nZK?o0+ANEwd%^0Xd+Y1(s@)p;_V;;vyAfSR
zyKO2C21-M>UVEo+c;0vb*4xeD^+hy!umhz%dTM|X1DAWolwI_F08kFThMnvIaqQEv
zyW3aW+3~h!1RV?A&O2W2-NxGYo12HYJ$hCx3ErixsP}u%Hf$5l?|a>uue={XeUPwF
z0Q5Zo4*TxAeNX@i-MA^&yP+QUz3JIzIPL0#+@{}m1MhO=x!V_JZCY{nC`eP)?whP&
z1gbgM>pRLBT~Abkyqy5u;De>h4`)v0tx;{SSsc=q`|o}2v+sMI$5&l5Jm;=}JHy-E
zFM0-nqVD5B#yh*ipcL%;i{D=WN<z#UeRmaL0L#Anj(AFG0%!pMAOZj&0Gc&0MwuFD
zOdwO*CXuF|spQ!y{)wd0000001c)I75FiB56Gnu>VhstVCPP6}@~5flevK*ZQ`GQK
z@lQz828aLv000D<DH0G(03#zvZ6<?FO_F*NdSIFq{Hgd<@kUIZOsACeM~SAI8flUP
z)C~rP$r&`+K?y{Ngd;*|(rTaSQ}#tYG^gq(=#$iXpQ#N2<uqg;sslmlVrb9->Hq)$
z0000&lA04hAOH!F0T>af<Ozgnsgu%RO{#4&RQxF$Q)NF<GgHy(ngGxM&;SG}5d;X(
z6g0@nssE|yjA}(cN`L7QPkK}Isp=k6(dwSn1AeMKK*(qT>Hq<zng9Sa0Q!IaBmPBJ
z#%NU1v|}H{h#1pR{ggo2h^nHGgh1Jvh-zd4-k_>%2m$gC1Bixi`wzrd*Y@R96Epj!
z+x{wyDv#r+j623gG0rh}m3Xrebn6XszRCQ_(+>t|B^g3kvQQj`B6-6FQ0atKDM22j
zRXNcCh%ba7A47ep<eZfg&rIeFTsfR#?ai|#-Yw!X@pWbshGv{*GU8r{LIK0v5<bi!
zkpcy15n4bf0T_an5~&43iWWo(1XHRML3DzRDwHUsN+_iWAxeOu0D%uuN`Q4ra0vks
zAQn+kLIgmLKwy(Ykd+rR5NQPyasZ?Iw}LP2fdzE}DZj@gNCho8NW>H~BuYsF5irb3
zG!y_tFY_PxAS?c>ApYob8Y-41mE8T||4;e9nf&S>wo-*HTVqO5T0aXh<CkU%x?O~}
zE-6p_HwGI@m_wX7a!zSpb2&>G)Zxl<^C-kMw%XB2Z%6kPfxtUq+_gycR%riMoj79k
z7RV?1)P*%wpZjRpj?eV`>*aBWfwAT$NMrxK*Pc1-)Giz9W;178D8+EK79YNvF(g`X
zvV{Snl=2;?AM6Xf$Lh2+oUtJi6bmqaRfrh>tt;}OI)2Ag2jQhyB8LBh<}5jEUak3W
zu_L!gh)fWsswsFFBF%CS>0<K#hkcDz2gqLzmC<4$5RYPimzDMNCw1<h4Jx9=6d<w(
zZ^3qFR;Oyy;b%j~il>6v!u%RtYyE0dS}|fGhbdH1K4+h^ZpzV6eIqNRA{d(!XyK4B
zULMJjv+n5zVz!N~1YX$Re{uHk%zLaFHAO@b3{(^nu=t#b<RMg0SR1ao=;_wf?P;Rz
zc4}=^nKBKR#juMO0tl>vtU(8=R0ewKj`rikqXgg-{KjNYE8e0`$kKKousS@76jAJS
z)25)&<R=ZZ@K|ajBv32<6#vScL`lypD-VZ=luv-g!vTxAbPl2lYXs33#HA(%F^R35
zqbTUaURje&Cnpo=X@xN?xM%~xqGi@dQ`wccX{5(4J{X{J11h4w(K&O<YFw9BEIeP>
zV(ty6vzIKlE;%VV?!VYe-^ar1tD+sn2s%r)F9&uuCfNzUt<;>7ckI2v=ZnLUY~1Oq
zZC;h;p0m3Szf#O6hP|v8c)U4bt#Qr2%VtUC^7!4apL-6N$b-f&@=Vql4Jcg3Sf$zb
zd*?o=h@1HjjgFs(K?}v9ANd#uCOc|ev!fo-UM{$(E|yBn{<+eA6@MBvN*S=tu}8|I
znt|nv$YqShAo1cGdD88ucC@JOym!KNY%2OD%TkZ6G0xkBI;-QH=_iw0-*jy4`)F^O
zg;TV>AWxF>ar9+Kvw6|2v`S5`JGFgxioUDgmtmDsa+W0LC{!Zjr+U2aUN1$^wZcpb
zAf~s;#`x()shp_GYiY~3os|V-!RF*8yfiAkIqZ1D{u}6mkC!I>2ga?mQ=kt!n&utw
zzb(BK=`^+$zKqSb+Dtg*s8t<$|Fb1AkG4LFDd~X&ZZ7J#Z+KI9WJp_6Frn4Lr*(-b
zrp_oJQr2E3#ie=K&M2Zk^CT*DMd*4j$M0~M?uT|{)U-V8rygpGo@jigy|C>wJkpJq
z%g4F%9It0eqc5!{)bQT9RZi>i>oj56FDG{G4Fu0TWc)T%cr9NPhY;vxo!+%a-FS|*
zsI+5fr%d%-nhd^aw5ii_RYZ&m&`IpR%yi&dlCNpEbu7n=FV>$k)wK@qS(OT3b-;g)
zoj$95-AnJ#FBv_W|H;jsGNAf|=_b|%kv^Shvl$xdT#DuvruZgl#l!wPJf-9kK!nE^
zb~zTW@pxRKo4fvUZtGqL{s;WO@rm==S%Yeip5LtVcsG%Ug*<nSAMpt_Yct7jj4C63
zVe}_PIjqGgZ>wBVtfi~s_d!HyZL3)g5tBrfr}Ys*%lIeR<_<7NjX{Z-SnsPtBo+hc
zmFkHfPa0`FnbP8y%KJHF$Z?SvjsdF)Z0(FnQkXUhryS=FNNM*ks)(z({x2u&hZ_ma
z*g_D2CK6zVuWYk<x%w0YtY_X9O|1GhOvp<loVPV{jeG2k7gD9plx-l;s#dFe;(u*~
zPd9tjO9~FBJ5KB+XB7JX=C&eZPWfwLVShzf)YfnL1z|(7777WyNP0W>@^Uk0kqAQA
zT((Zwx)f15Ik820oZep_ltpUgXzSf5YnMwXag^GsPT#5eaPXU2D_k?%!s8ZZZ$2Ia
zn1sG&R|YxWL;hyk$<hwzpUWyMlVcs|A*RK#K@V>dkX_qTDi?MJq%zTvH`0-A`hU-}
zYU!uUZj~~lTT9-g3j;ZlX>!vW0sbxyno{P?o@I3ja|uKe(OlXvXy&qF|M8-*|F&F$
zLt-R^!bW!77Bjn20^a`*mZ90X{~vavTedQ`^bQFjB%L`Y;RKV~CUj-d{93<Wq~q&>
zSBzSGa}AI_Vtw?aEPm*^gSw`q<*Pw~p^RAFs1&#B=<z&a*wrOd7!4Ec`Ttf$pweIW
z5_QJ*yljAO^V@>Dc*akCZsxU<!MTMskT5h2+`}M)I1hYk&0Ki1+}FPDH#P<5Py1{#
zzqt@(nN`vm*F6Wfld)pnt1|=Sntk3H<xa3fq-tOJp5LdZ^>jPLe4}}u-KVln9Lr8E
z;~nB}24&O>c!GT|qH~u@_kPT2nb&15pLDL9%kxyny}-={yezWU_vUNusj7SlH8pOz
zkXFQZFM-rbGWmBsY=+31_PbnFuz)9bN}e~xV5wQCJ%lrzk4qa%hADoW_r6lT9|xRz
zxGR2cUtW!jn3Jl#<X17o1gUv|;NJvDu*guaY7SY)qpPET#}xI$d`5mEfc;oqBr(~0
zjqyc}G%YQCj$0wZNjqAMAmmWh8$sq(!!0v};^WEEW9L0C&U1Eg0uy>N$V=aWbk)vM
zj|AHe-(+PqI|oTR&ZOb&6%8IWJh1m!3{S<FOiyz<c?LxRKtxbX5JAz?4OH*%bBiZ9
z-;W2h#s@THuQ5kW^9_SG8i;vPHc7QjF{38=eL7TdM0|JXRhhfHhpKNw^W;JZug4+|
zg4^6Old~mn{SOq=S+K(ibo<9OL?iy#oIo|=M_M3xaGb`qQyHBn*LyyPf3u7-52C71
z-84T<R2@GyeSc<enB<m357G9L0(`MGj1fMvVm;7Lm4$^vGU2r-h)?oCnLU<5HsRv0
zY?#i?d`FXQocyL048#9D%&sB>6V_x-vplu>>dR$(+-Kd^I%sd%Jj-k}R(g=-(L${$
zq6jk^TFPl%wikq=15DQPnO193-Db(?UVD!F?oy{waja;lil~UlC7}>2)|``Ub6S?w
zDQxDb^O!k#gwZIK1Mqx4zYVksmfvFdykv$;4j6QlV}F7mwOg`Df*FB$L@Vs$j3~~}
z!RlcW^}6jc@G{_ypzkXn!Rz5+!*&juOv8@d$Lb*2-y|Um@c}k{A506GsXb>FuV<fo
zUwbf>9b{yu2G~*bIOmDS#yxQx`N2-3QzwS_{NJ8G7+G1~t#ysDk*r{mg3d;%h-{rJ
z)WGtNHkVA9Gixqew>g9<YJVG#g+PqGy|}79Y{1YJj7W-W4M#N=!jRd_;3=K1XmyGk
zlwyf#P&oFU$bp7_yX_)+yj#3N?obz|C>G!KL#UVQnaq1RoF2W1Fq}A{?-AGKHT#Sy
zcp{k(t_Vn!7>IVvC?J%~{M^dKKw~mlP&JYWaK-57C}e&kQpWMVy4PNi9QV|z?d_8d
zH(ePEk)=d@<q*ngbioC9hZnY3B99%_hcseS#-Y+vkw9+>6GmZFGFZkE*}qE)6Q^Rl
z&8wDER22$Z6_*7TLt+PR$(9P{5P2uKdyiZ`ZC9e9_bwzoz{aChLU%9di76(~T)4xW
zMInM<(R#&-{pjC_**>?=vvYn;K?(*gW&yAn5P}+Bjt<~oQP2*del;)P8yHNBuH~a*
znvd0FLKB22a!Na9NoMXaY{ji=^OF*$FEti4>5wES2<yH!ahw`@>pPQ6t>>e*&Mp&C
zM%R6lgjjuC_!JQX&dnU!#w4Jks<mW~F_8E8;GQI=OSnoGA^e)k2)txIAbf$+Xr!W;
z6#0y_e0ttM?i!P@P*)_<1ogm_tH|6ZF!)Q!Q7u79EZo^7Ma%|(ufda_mvo9RRgm7b
zQ>d9LsfBvDy>>=MG6PDiLDe|`QczH>B?0z5;W+?AE`t`HylI4GLfS#CP$+;X1#3h0
zXVauNCP|P{K|#cOyzt`W=NBVDUW*|_S~N7oa$fyB^RW?8OI(K)6>}b3f-0CNVRB&v
zhli8LSNFl|*vUbY8?=cb1FveNa5*G~+k=y_hQ1#n2%0~kvZ4}yC{B-CB~k5tO0tgX
zB{McFPyC}O)7M(g#Yo53DReZ|r4v%UZj+y{!)#tKwQv=P)Z$|f7rpz95e&NtCBbZ$
zF<?{_`BJ7s@|>TGyE@J1#eMgQ^4h1;`FadZyCt|hS0j3M`cTk=4mKh&LHjv_rbn7*
zxu(S9An~0t`XPDcIick*q=eKaT3RfH=Fl5_gsb;^(X!%&JDKX2){&lmqwzWHJuH?!
z(`=VxCy`1pK<Sj9u?C%$G8k|f7(yEcZ_hY)38La40f(DUSK68hEvPypI*(HNio*Tl
zL8i>XBpRupI`bB)sfkMtC9lh9ntEM>XHhHpjY7j5UUd!F(dPg_n%6(!N0*-c{mFEj
zIQ36LII7ME?Z-E@-6O;54>iVY-#+CXdMo9gMOoI!JcF`q%ztxyQ7N|G@gL0ygnDdB
zz{>I=VtWgMqs(`X7^B`I`H}n}F6Z+7Z^%BHBZ&x2jpc}>i~3jTYwpe!(J{41@Yv2#
z1vRFv$y%FAS)O^HPvckLU6wR1#Lo2i``sKxyR6iFJSK4V%=px-cwJI^uy{3u2UA+8
zM4E)tcDvGLu?Xp<$NW4w=u-@wR^J!t)3ToRUgT?TaxX*uPqTB+BPEN)ZIi)9WBFY>
zJ;sQb9DfFBcHMfo%~`(JGk&y$LrE==bcih7=kgo&+FoeJ0+9FcFy@}@CZu$6aTV5P
zstH-@+*B1r%3n(>J*rIaohG2N!Xo&rA|wsoo1a`KXR6{XerfzXGD_(YkDTI>Qf}At
zGn&5~b;csp{`ggJ-F)IR^KNj$hp@%B{r$0cz(Sr#xb6JeF>j31)@yQ{oa>CB5!zAz
z7y~*84(PHMkT*i^=;>@YSM86S@`FP6sG2!K5KhJTyF-xjf~&z#e#oBQ{@5`|FYj7C
zU7!*d#uJKBNo+<?%|R?D1V3ydlw97_zVDq79uC9J^3;v(7;Tut|3G0-%ryxx$k7K@
z+&@a=^3i;<5^HxdLM6F#wMq8JGwqWYe+fEmndra6`}-xqz7X{gn8d`>X}Z>m6YDO4
zW(XsMXu5sAw*%|vYHAjcl%V5d6-h^Ph8q-Hb8=yVgk1L`KbJPJvO^?Zjff)IUH8DX
zNJua^IfqSkXpZollRs;okb|SdHbx(-QWb+H8n|@Vkp?D(8iNHCyn23&9&-iaBA|_<
zZrHP}_;VGkNtP9~M&C?bC~IbA9jQy_5>auYAU!o-2q2FJcTMSdV%yV1$v)q&tRmQ}
zhHo}Q%2L(`Kf@D5KQ57m99n^zik?oKSgq#%-?L)&O!^$XOca<l`Z5FK5GFMdCQTv^
zR&s$WN0JCBi0b?2yEklf>bqx(xoP%#?BjLoTHc54LpcSl$uD-uLLy`a*eF3XIlNjY
zK1<I%)ZDg=VnLz9Q)5_gt+S6c6gau#+<EH}CTHBpDkhfKK|f5%tIN~8;fyXQWp0sI
zq~P#gWxhelS2c&ttZ{a2FrmoWZlMy;v_ugB17|j%29m)IcIzh?sFPz*avVto?;(gN
zn5gf*em!&r9o7$s`u7aQ#J&`5^_O&iCeVX9dl)Nvf&794Yk*C*&jaytiQOyl-)5h*
z=$Q&%b(23Q^nYjM<nwDoYJia1C3WT`m?X7RO%AsvzLXEO?X(b|B+}`0{LyNVqtpqS
z=F$`jp;E3X54w{hsqe)90m`R4*+G8l+F(M6Qr_50=Ro3on2Mwkh^Vnv0y^LDwT67L
zN$zYxIYSYB+j)14&Yd=KK@dd593#mjy2)*T@`sa#BE(WDzZILWE%p0zqz^XScuby*
z@-YP%f*J^j<wPghI2!z>Rx(A9z+l(}deKwFbhn7?;gH*GaSl=9qc^s3L4P{i8}+Nf
z@A7&pX8YAD#I%os&VoE}-b$}DGswzOOdAey1d}+4q0@n9Q!Md<3`7jU`-znNVg@G4
zAnQH@^0EzP<rXQ`RA}r)v`<FuY>SQ4nrB)RoFgwx3`8m&m>G$m9Z6o}3dX2V)H`<n
zF;UVYfo<@0!0DojEMOu&ss&QL?tX9M!R+c<3Bg?N9+0!^^d7z4Rk<<A16gt&^5mk*
z3~bJje7u5Z*&2wVNIVbP9Oq!rML_|nfIb-@^3dSE&~Gsg83bc!pyVoQp8KFd<NVP+
zJITRwXEzSOIstX?`ll96Zn;H8+skNcxHO13u!kf=2paWxR`ggWnn$RjuZIms5*V;_
z$N@PBeotBQjMQ7HjIXkL^-(xJo_N&Zd>E~z_gXzu(YjO^`wKsLmsxG&DtHUa-##v~
z`cAj!c~&PWC??YAQAQ8ijq$vNC`K9+GR9ImEPi*YX8%GWQjiZE>l+ORV-><VhgPDd
zR+yJjhdKF>`Vn%yGI;^%5H-AAvc%HSnW~I><um-fb0j)S#T41Utk31EIkOD%ORVqq
zm+qmA9&~F3QQJ2kF%F`gqnh*?<A1hRa=&Yp<i}8c13{KHnP&&3D#R!>rU^KNlzl@X
z6bxz>0!;RbsD2otp`tmC2LC19Lyr2*m1(hz`-NXeg@w1oMxcP@uav`m`pl*_cWb+n
zyyj*irN4@<=Y?R3iBF%2!#__~Ul<o<y;`2c<||aZcN2o)-uUwm&iU)&*%m%tM-M6z
zpeSZ=3TbJLkkHtF!{`<s0h=Mn#v5*L<3%MEGS@kXf=Z-2$0--%GBt3JB(W2Y?uy!f
z;AISBrcm}O6COz4r4@ZLWTCXnanT3qTx8K>*ycyj6{DZEOZk6$lQ~ih&0wv%9lw?x
z>(k3>t*10l!l`>5gDFRxsBq!SJ-z0#cRgQuAwj6<r5%PaYJ2QTk{8F_cnmRFavn1b
zX+nj4Vu?8*IQRXSt>P`MHMrYJOzx4To*0~`$qCPUy&S-KO|VKlPzEsgazU&8`S1Q6
znr&saG|c8yp?_nteEcXy2qKV-5a~R{Vx9y(Rw_eVRvv~YD_&%l)-IPn#6cRqCck8x
z)!+7hUOR_&Htr0(#4k5(C*uy=mTXmxk?&VAiy1LwRsZAFUw@T7y<z$4545@l8nFXL
zM!k)Hcg6$6<}%Tyd8Qtnel;qMLxjG^3|Y~pW8oj+U&l9J-^?$7!`sKXxs{4pYMVn!
z@xKRVXU#fo*^uEwgf%Uipr;}zbY8JrY~4u0Angnd7R)5ZSDyGiulUm98L2v-+b$@Z
zOBd~bH_VQ3PDu6YX&qhe#T!w&m#n|!5-b;hxE-;8?*_Q`9h~9V)>^mWbKtbE$GXjk
zq4V!Imy$VW>j~?qD}EgRlVfRy7`56KsEk1h2!rHKv<)yo6_QoKr!eU1JUbuAZ;vcu
zX_lYQyzM(A_~2wDP2`)0``P^-!1dQ5e1Txan+L{EbhTuo6pp0^la52Aoq0|hho>EC
zl_j8KXz36nvv9mwLnA(^Qk^k2Zz3=q$BM4<28G?$m?>cp_td5nhr!`t`y4-7Z?cD)
zqTyz9l$u{7);3eIvbCj`OIjF6F6U#kc+9hj#?yxz?cY<gkAx*<-onwvv95t^(1&eL
z<9J0gt8LLnG5LFqg{}7UBg;>In!Vq$I^@wQO+U(nVfhMHAC+nNdOtqnt2%N%Eq^l3
zAs53d2-r3lY8uKp$Ja{sYc7~mLui+&wdoW~Lx19Z9)HUgJwfH5q8S^+HSl5KDQ6`<
zyc141#6~K=JNkY-Bii@hLdY{>V<W4%m57TbK9gK)Etke%I}dreE{G*D#$34|{}0lV
zJ0QE&;oA<cI!7l7CK6$ScSi91Ogh+;Ma7dLZs9S57~P8#1|^<oEcn8Z_{2XUv5eT0
zXAuqvZ^D1Lc&xCNgH3c!eoWc!YU{@7qMW#I?tU(Pd5U3M=0A>?!eQ>zG*0!k5%u9l
z)n}XW*ieRPp2td;JMvrzP6N!@3(4m;B|*q3^xY4iz#kzgq$n?YN>ZgE!aLjE9U&{w
z@L$F9yhWW~r%YO56becZAR_n|=wmsX6f`Z{AME?51SSg+xfrIsV2CE#M4j<yBfB~(
z{_6IVC1SCxR-`T*q1ncBt&Y%lCOjY{=yy$aZxkhSq>$Gj+Kk?+acW06G(^c5uPuJr
zc0M0&SN079Z4CoHh`Q!`Fw~{deuBROeFKiJH3GyVPA98;R{j`Ab*%v+F?x+|5vr3?
zPRx^+6A;+O*kc9>Yuj_2>ne=5ag0$Y{FPNf^m`_9@entr9T-mdoO!_<{jy6QwJ79h
zzLsS=Y+G-)`&SAnId~$#$|{7Lo63_#fuW`ct;=dr3?Wd$)DxsR!p=W|D}?N%$6l_X
z&QQl&bre+a?AazhBI(N~MP$K^6Z3ZP@P3w_pV0SCTDXD!6EmnKIq^d{9G@%tAEPPT
zO%c2i<nG4}U#PLt4!O9Q6IEX_iH0PUV26hV1icROTHKz__n8E?ISx@D)rNN>RioI}
zAvzr-DZB(k5!j{Hm~kVyO(tD1b8>ESrO|r3oLc*&X9tVr%G3{-7S=&#;`EG+Xo*Z@
zsdDmJK9Zad%Lw+qexAbz8QE6j6x{d=UAKxA$K=HAL?-mi5aI@fBW=96YsQL|$46Tx
zdd9Td+p@z&6(vji+F)gz!2XXcn7^fD&emNGZpjRgV7Nz<D$7nBrb8QXkK11U(Qep(
zR#(+9xri)(Mruek5iP%IK7ILpe4S4-P7IS>p;xOYD(fi2j6ZALFvFakDzyyE@Er=F
zWq)-xqt>{#CbY4jh*YA*WNQn$<4<oNGS;$c5IC5LCMD{KVdhK^_%od0G>*j>B1R(#
z;qkiGYblNijm~58{XSgbXX8UMx-)b7K#p<r?BPbiaMFfE-||2doF|-9i=3Tw93*Nt
z+XL-_s<(y^xI;;l82T)xS-tS0>MbBZ;R(lkl&Jd1wn(FqidNNw#x``l)4Z4y{C=;q
zoyhy)E)H98noYK<P$+!VzcEA9KC38ZaC@Q9hEyUCGny!d4(GAQxX(-WO7Um{bXn3@
zDyh>|%@IXpTo$wyGHU=+4Q5l2n)euirp`Dx;9rHHx!HlHPAp}keeXiy{c&xe&A>5|
z!AuvDC~*T95Qsw$ZQD$a1I3&`nA#_Uy<qi1K?Q;!cH$C2q(1xx(Wo+1f?7-B#NJEm
z88!*pe8D*ht7$11b6Pdy3{zDP8G(H11nz{&l@GR;UlxXMR;nC|^w?zwoUF3y9n?hi
zlbxm0L7w9fICgatK~M#41CoUiBUC{2L*YzurE4R9V@XmoP_2H36$s{V)ko5GO8bp{
zVA1Y1Q6YN4ifVfXB5I{#DWs(dX|~c?8AsDF{M~d-n+q~;@9K9gkXTS^5k2nIlo)@)
z>-|2j$Br%Nlh>{3zu~Eqj{gLG2;Av^gNE<@d7tMJPZkVN!n5%DNS49M>;0N~Bx9}C
zL{{FO`1Oh&<kb69Jr~P3l@||Io|xeRt!|#f-7@w1Sf%RO5=YIWknr|dA5DIPiE(1!
zzCR_KZQS(XdmNJ%B8Ay_tV8>d+-p<+mIp~dT0;=YJ=DY3!mu7hEh+ZMCDj!`_aXFq
ze`x0D-Y#(ddhUkpw|AY_+}zhh*DD@S$VuH=r#rb$#Wdz_l_=%YmNA{Z(~70fS^s6U
zwI6aNjvH8s&6q`xeJ|_EED|V6>RI@07>x-Nr0Bu21ZCZBx8uEM(S&>&%MV{LlZn)=
zp4A+?kG5aw;(vu|;1B9VBk?09JuFeSF;+dyCMd@SFqhLwv*dh{3&#DQK#s(HH7y5c
zt1)NM{)vCyq=dr$<_bqIWTvr=7@%x+8}l?GQ%$45*YizI&O}|$`5AuY-$QHU&m6OE
zZOf!+KKOIbJN}Fu%Rj}`!>_sr!h2hU!a^e_t@-COp1E_%>(82;B8KVvcfPP$rlJ6%
zW`iJRJYAjBf@s%<@|LMz;N}+MKlXmF{2}Zg!gB{wc6OoAVik}a=}H>IC?5)aZehrZ
z$1uFGQlarMfpsC0Qu~kx<CH)1!ai<7FOTKK=(Tg;1p_elqEmE`xZaw?)tyCSO-j$D
z`q4j3xnV7ey)a+LOg*Iwat#%_L(knwHVC8)Zk6f%viB-Q<@Dnw67Fu<s)OO<_HgIh
zvh4-tNNd}ew5>rBltH7z`SaTwx?g;1{$W>o(p-9J)%D+!JJJ$RVfr3(H}Kr5?#NdS
zhu{Dig?>N0yzXg6f?7Koidkc_B?BHqGc+vNkmWRjph!%{`^h;zvV1soC@rLKEEv$(
zF@_`>Xqsb!V1U0;nfLxD!XVKtaJ%cd#5^hq;^ZG~JNYAt?c8HPg$hwcH*1CmqBov9
zExWomx{=Bxzg9T%x318q;ek&uD**ag(7>2c43&_nya3+Q>yBcM`7RD5{Oq1UT=xT7
zWHekLZs&17G4Q7#8V_3*u#5R%yM-ShP$F}tv(r;N<wY0gN{XERoyTI%ByUsue@9+)
zxTB1a$V}|+WA(fOOuGab;MHS%jR9&;c-}X-Z?=VE2*@ZP9vF#ZID!U-%$|26qCR&9
zBIURPkNF&&QUjkeAjuPpbnTHZH6F7O=Q^`ISh*A}+10I28Ny-`AfP)udec``w)m~P
zhl2$S3{`_@V+NK}%aqly_8r3Ytf|+lpr?>>(%6W__+M~q;>x^U46KClg9~ItM{|-v
z^?+Q5^TE@&tLXEyEgsf414a;0>%@@dlp1UK88s0p`FLie3Mq+%re|_t7Zclvp@N__
z?flARnHtuVa>YmA5wLF9!KE@qMZgbo3y6=?;kZFW0UKgSf_!14@VNE^zc@~X9v{5B
zc-g={L+4a}J1Q#p6Xn)FCzWM;#|day6(a0rc5-HOliu86nITV<s-W@?XEeGzwG$Fz
zn*R3EQXkf~=z&fl_LU%R4bBpjg$R4MfOoc$-wu&eudm~;JBenYh_3OJS`}1B$h7gw
zWq0pvPl==B-nk;O2a8CT#WKU25Wv7xQ3o=jF^m!-q2D)LsE%~^d_4wZ`&||Mx(Cu6
zK&B;KD9`qCyoZbqfuYQfl*BHd?ef9MX*mP76M>-1$>f=Wv}wk35NkZ(S$U$wkx^Am
zxLI}dpInQgOLg)A%m!+&gniNW+e-R7>rh>@B|Ian|4*(RE_Hz)D27ygy;t}cCVEU)
z&8<c(+YwhAF!-?$$ILor#G}Ufz}Sz13llLlKNr5f5RowmL%&ER0BKz8RWZEP8XeY~
z<u*yZs?^Q<Fma%b*EJe25;S^Jh_?6jM0bx<{8cjXan^#arW|`{lAR7uPTe{TjwHN-
zc}~XcHJP;d^w1ci^f2wVr)F=&BSZ4*saR_aQu;Y*8AAjhhpmBC6@1g0-^F|9G%r=2
z|Hp>=KCgQ}B)YQq(J<B=L?&BZoT0p9u`4&J5dD6?4@W;9jop9Ca_r~F0qTY&XlbEd
zh~|Ln8m6hk2A^m+pE)3AU~rp&+O<^&d6JzIjP2H!#pa@s7_WAx$_XL#byuAC9T*dK
z*s&!#fO9jHbN#q3(a(kq#T9(&G#=q}1j7B%zejkRP2$K&&=kiNmD!!|7d@~+{rjJ2
z5{_B6@Tduyht^1zp@r+23^F1KpJ&YSnYq!g*w0pAgKVJiM<Mjq|0)D_7%p&;2meIO
zt#j+}ukkTYWG~1N9Pqj$m8m&MZt<Ah`BCP~%)pX^<vtP$2Z|s_C@QA=E=67QHJ-~g
zo0SupeUkiOLzbnaP4Xwn0iskt45QK(*EfE28de5aR)&TmLRlJvpF1@|ND3egli{?e
z93d18MMItx9i<vd1F{Zxw-kGP{!H*4-GxB$+@PA8qgtktmr0<S{u>{=j>Qt33uAr`
zI6wd&-;`C-j7q8bewYB?zn%PlA?0h1fIi7o|4LK<(JF%w3hDq8Aq4kHO1>nIlnC<y
zy`QKcQ91$ybpQlNs%#LVDb$bzh#v4SNB}$tP)=nO6z3&G6P4wje*3&Ve|J&+JOC4~
zm4+*XJrdwXl5#NR)$-fUpzd^!Y;jWzE%UX=m;5tSGkk68vcV8NjF5-8M@j;X0C@@U
zLlD&=T#Y3(??UK}64E|M1Rgf`s{m7f{-2jh0(44<?}0}kI6xivL4PM~Vk(E^g+ba?
z0+3MZBuIb+JFua>--5e9hQum?j}mcJ9=_gR<3cFquHrS%<bemf5V$nXVX3arlCsc+
z(U4E6>uErs6SG46Kp&})K+FT!l^1Y|FIfS}5CfN_(}!lxDKJoX&E{}0-K75GiGdQK
z#G#No>^n#SEHfiADp12J@gxArp$ZyA4ckS>LBGZRS_6aPVm(rMAvFuyQ+;q%Gqfi<
z9fiK;3BYKvrGAKd$<{>TIBGQ=icWE9y?$n$q&kGvI_8H0l!C&5!2I6qhJeF}c*+Hn
zw3rhRWd<?`#E_=pTz!;XuI*?TQfdc~mJov@yw=XsFnR|4XkBEI+Xx?8B7{75Oh57d
z#q1M+0TvJtJwrUJB7io5Larhr01LlA5RW-!=j_okhz}PG^B6-%1RfL07|}ls9G8H{
z(xic?0tM+V$zKXp!gJY4bz^H3Z(Fe8Y++VWiO($53jL3DfH>O_4#$0-ep1t8_T8Ka
zW;<hRIegy~5CH%%DzpR=QUpZ-OG?u~L{!31P?Qlgu_{DTR8$c$D-r=nL{iYwr65qO
zOH{;yO$@UEGEf9XQiTFjGARv9Q4utfOcaD3S&`GI38<u~Ct<`S$sO9K5aKAmACsKJ
z3=kxx5Q+Gh_;ZHH>ZE3l=D&a3v!X~Sd?_rYAF;A}4HC1P%NTVafucq_b3$sOrcp5-
zUspAQILjnuAOnmfLLb_IaXiID5r;DpX!20x0m!j|rT!8}LY#|W(@h{`8RUP6!>*3Z
z_v1~gyC#AW;HdSuVoF#b;d*{pMW2EALiB!Pzm37gLG>uRoorQ|{(UEI=cw;K`;){(
zcGSxe>twc<TEwN`{Atfrt0Vjtd1|3jdG#gUMz{~;>IEPb*TO*jjGhQl_3TI_k=SBM
z7dQTg6uLYk$B%XC&xMfGaF^P63|`N$!Qrj$rn8{KPP&U1zYpIC{|kA<Fgp$g8>L=2
zYeq-ILk|S>KU!Eo=f7uzD3*0kuYKG~^w@NozkEmll&nXZTWMXEgw6iQ22By}8?_K&
z3R*#u6o}ga<pI_bV*J3E9NV+%Ij~>0MCOu^UZV@Ayd503zO%UjiV^X-E(t!82x(E7
zP^3x~50rV6*p9>i@glV46Sxgq>VbgdCZI>+oRCgL;}Tp5P&uF&BbTRbJ?Tz}G@HzP
za&eG)WGFz;a<3&4xgCe_Dg(>Ul)xC0m@Ew*O)Ok}FGdIo=1<W*?1qYH{8)-_F_)GH
z{rBqLyzbt4xjvXTb&loZ1W0orBzjo@kZi=0V*O1etU|cXq0x5~(U?b;l?U#%C`6&h
z5w81sLV=-!;pg8+_5830m;_1%0+B+#5DVT#-0o1(bMd`2h>6541bKXE>$Pj1Z~^L(
zRN)Ar>3|H(7A_sWlksoe&YoU=ukw5b{VILV6d(uMd_!v-BBU3h>lBonBkF}FeTS<b
zBCO3TycM6@iGB>(EyniTzM$?+9<jQ6JxtITOdd!EHlPmwN(<9#<6`ia*<|y=+wLV}
zx8hjV96ElF6JK9lGYql^qrhWep^Jf|gqUu5Y5i9>;EN6ar8x3Y{0Ad#2xKl8xj{_B
zd5_8q7XU^IFb)pj$f{w6UzV}#amfwH^HG1IEbF{6m8Fu$zICL8U@w-}sVms<MzH9%
z3S$Zd10XDG3IXuv$b%eNk4d-AFF5Wya1y^6!Df6Wjn?ncubgmyN0G_Ek@6=LH5idl
z8+8;GFl;h-grC<iAHv8s{=St+5XvMV^A2Q#`Ii!FL7s5=IEV3gy3I3*u%A?)2|j`#
zR@?lode|13k7r3T$ZjBq2T0$%9TmZdN&%+O-9f!m^7-^wEivm-DQ}d9Txw6+f81hg
zq+xcs*tk1|qAtwLc)?)OE{9yfue|prkH!m=OoT_%_|}Yu5kWwGa8`L8GF?HaO`ii@
zjjv$_3>y<|sj>K;CaCZ-K(fPVCrormF1eJwO>S;Mq%TB4vOG6QdWfkIo7{lO2Ae~H
z`9<0x&9lWs3+un&&}~%0!uA%$vYcaEuq|S!FGb7Ja@GV<=^fZ~B#;m2j+{>+jt39V
z?gc-7V_Dtqu~gDl<DZufbDLf5G1T6&4ME;Swy69puNi$1v!%6WJUb=%=)OmmKe}VF
zK2}E_pFAPwj2U(Xoo829J8di*c=nlUIQ$71gEJA6Z4(FjB0Dov?32ryS>%%p_xT-q
z(Wa~S2<Ztgt$;QwFBR*}RhrbPgP67ptJXVP>1w2lzF>!fFcB<0Ap--z#DIi<?{wUI
z?~!Mk!B;M#41^Qthk`mEqi}31#&!obW0hcsb~h!j=HWX8iMJ$nyNA9S)sbD87gn}x
zkPa|VJqFPbYyyW}7?DLmUpgBT=+0dXVEB7NFatR;ncW6|TMia4v(@!j(O|r8?f%R$
zl^?m<5_=yQQ^#X<L`6>Dg*!vga=`ABt6Mh3z7+{hX9i(y^!*a~3z$Uqa`|{|lE8v1
z#g8IwwM6n}9iPj~-Bu&nr8y-R;N%E;t~kKo1}SWdRaFvG@lN_<`**BM?9lamy<r48
ziV(SREn#=xR?A0)OsdM-7v$&Yv+1?tq8PSm9oUIqQf4Hv_e1EEbZSs*F@fU9E*ub8
zINh}8SeXolvagv(NG{|zJPc_zVta1xR=lzIHb2Fbwvk>f(o1~HlQeO2(m0cXTcY}Q
zQ_=3#>I)r}C>MJh+2JFKBnwUt-La0M%$`V>x!{CFGB6B+5kK}5VsRTQ=x=lm4phRH
z*i03s;_l|%NS64kMy!L8>yEj5Awr*}!%6VDM0B=U17^@1lYBM~)J~Xy_ChI|)WCD(
zIMQz)rxwGHY46Aa<Zp{Ir)PY#M%;b5vwhPtEkJfAV6O{CJ}m=%k<H@^81_SX_57a?
zLFyB3EPojP&*zEM_yy6thC8En0Qml4GIG*CS@iOj@6~}0&!_R%Jf_{~ELtOC1LQ!&
zHos@X!9icO0h9?)i3p^mhEfOu3K*&>SxF&x4?yU9Ih2oxz9cML)5kb{&^u(;5EyU}
z{j+>z(mxXEw0j3gbr4_BdK)3eLK2D!Vj3w(l9S$t6^S>8iZC=3grPVN+(&^<kkWl*
zH6bYz6EHNigAg@ZJAYQh*5YzZIr_fs+Y`4z=I|SXViuC9rkG+OsIh1Qg#(hBnTe(f
zXb2>rAcB#Ypkhj*CWe}sWCDVQktha)DlZr*1w~k*B>g@8V{rp|AJxP@_eWTWlgy{g
zU4-I)N8$@K1wWcvJ$slJph$kf{818w><b8iRL%UwTs@q;p=&j+Iz8uq_xlL)3|fp*
z$89wASl^6-X(%5Y;B4B|g%}bjUkD4Ur^6T+k9XQeX^Tv5L)LTaCP{{v6=PG`i|nHO
zn+J)IsjB2I*yWZVi|g0bZ01a|DGdJw@NMrunD@u;Jh<fc{zSmev=#{w+~1Xs@cDM*
z>id4Xm%78{#yIEBw1sK&#|&OA8q+9}k@COENnlxL{h#zg-=XEh{->Y(<Ng2d&;FnK
zZ2iF<|Ka}s_x>N@{y*>if9&0Y-~Kv(;m7{|?#|16JG#G=j~=HRqLK7=_j2>@|DXJ;
z|A)TsADR4%zuWr1$GjKL2x5be@^tI<+n*lD?cFVXbv@Txnb+{I%}ICstL~(2oS>1S
zvHr!jZ$;<!q*wd$W-cJzxL(xMMP}_9U2~L;x=4{*l1W8dguhSKjm>2)Yg+8>I9ZI!
zS?BR9=>Gfb_HC&cN2~SWfKih=xX^xEApfNN{H9ngvJNf+a>G%=5*&F6(*AjnNt>_v
zI_L1yhU#x4vR@S1$BxEVV{`|9yx7!KHd(IcwMF9f;ii#_JDwY1W!1*X@s3vaRM_@q
zA`qTj>CUA}IYQWSlifRTP<-m-r=;XWkcCLgTICa5n&qDRVqIJDB(2JL*(xaGQ;g|H
zp;*08_DRpxHcPtesPQE5xZ^8!Cz^Y1l6|oK`E}XRSwC|h>wh>gF5Y&nJ7IT0+({(3
zU3HU#ys#8YiRoBMmRkEQTqPT&$=cnqP@UMnO5=-*9uG1y!rUP%wi+ya?5w24DCn-b
zS=EfM^4UvRkeGWvJQ&hMwBGbL<-wHY9MVyq{G0ohk;sCMP4Q;G;tl>k_I^5i|IhLq
zy}tjK{n+;A4j|g&IG9x5yBvV~eK@%%x=G?BJley2dF1&nFp*4kT<3H5VD7wZ`7V!&
z%3cJ%2bb<PFzducQycZyKQn;rRWI@+#?}TIX8^_@!vwa?Jr^`oe>$FOixa9L!jGLy
z7}G(Xt>pvV0wjKc^2H28n6@>Mk6axj6DYI-;eWHS$4=(C?oHfB{9UWh;<xoH3T>A1
z+32#Gj8O$19v<1q|6E6xoTvvXps(WQdEX}Wa~w6JvnIzY|A1v>!`wzI;#&o$OX8t-
ztz(<XH_!6x^N9tsvYz7_P>}kX{_$#<%uFQKJChm!fayQ8mWI&{4k3NLmKp<In|0u)
z)rNjCO?0AF<=t_(m1#{Ji;y7!#}0K#GFrow+GVR2#wEn(SuKe*k)XKaC3Ik68-C)7
z@c(@W{0u@;Fi85EK#%!alM>=kyB<G<M$dst@tXC1qsI-wduB!(Jgav3L++Q~cMfdS
z(^}e#rN!*X#o=c><2b_mvV<&h>9k`5j|^a#yr5YwW$^A={LMzmB(c8#b7ys;B$z!Z
z#6fz~Y>vc4i)3y!IywFC51u69_I*cf^F7s#Hm=kA$wFwwUVnNaXS#h`G3&9epTc!5
zJ>;5lZb}xBq1bYP*@Pd(=~pBWcrbs%u0B*U(+BTNn$%eW2|<g--;l+*<AjHFiEVb8
ziFz*Vy}hI-g!{ckPO`d_v8rpO%_NyN|D69xjE(X;&6yaJg-^cV@HuterM&$O@K_99
zF~fGq3_n+=JJO8jV|&;_4};u2zwJyOM33e^Y#xY5M8`qLwlLcc=bFaZJ4tfg%NV5H
za8#id+_`1%KF+L7S&dhDvdA$cG*>{L4K}c$1LoVeFYSYD*8Hf~t8P3;yHpM9UW7BF
z@iS(85}bWANDtK=m#RZ_8%{v|)A>n5lUJD44Kx%UTCdv=E=fU<Z-gIR%HxK2HK*H#
z<mGczWrWj6Aj5-^W(G38u*@Mp*vS(DC)It9Vgg^ZdyWLsUBQ^6n+*(wERhmK!+Twb
zsfHp5VrHo*pr7kTnC^8=G%@iRV)Yob=ZYFY3PE-!m(LEsE{Y!&CD0k=-Q=Z0@MZ_t
z!kl4k@rMMpQ9)5f2kQQuoFMMR2({c0bj_^t+&EADY%m{v-R<G0Z~Np#WSJ)OO@8>3
zET+Knr>tfw0YuC-o{K$x+WJY*vH@g$k$U*}J-pc~^Ty^XlR#~pe)ySb<O3C%AnHny
zK=--J1q25QQ}mj{OEBXf1)>0af-M+MD1<@?ZxaCee^-B+bvN{Hm(mIZrSAe{D<ler
zWKCxCr{d^6J2(`5-OmzkPu_CR@|D)>pMhj3_%DJ=uT2KtG41@3`LPC58cGHa!0Car
z*@p=*5d>cS=E940Wxd3~t0!Rb5YHK>b|8}o83^nQ<*yHC9k>?$m1kqjkD67)pEMGm
zK(AMyisX6+;@mMgAeKzn;en!w(W1<%!)@HlOI!R0r=!u_doc8D`(dLuRq{ehUf*(i
zaO+q{P0eZ6@HWT9dCPp>4>g9|#{Ti!kMWAIf4t%7Ur&QI<~j!cIKl)dVI~2f^`COM
zBs7~V*5utiP~E9?Zibh!`#L?xPprQ+(eu%cS2eK;ATp&kXF!3gmFoKMGc<!|r;BMb
zF1D;1<~m`qgPO4#MAkXPsCZ#$Wjqq%SZN&%3EVcW_(hd(c(8tsdHyqmJdqDme23TH
z`Oj;(q$V#-`N?za?MA<z@$4wrGMgbm$XwqqGGPR#DI8h=!J$?fm@5Tn-+1!0{Wdh^
zDt=F^@=w<VR-yJ{&2vD<^8-dF-*E$rGeI|6XVCoGss$-WYqf0%Rj?iP*dR4YbQmlW
zLw?vw8w_m#I3O&M<bwn?5fZ;-YS*?&{-Y!({gUpH5Dkkh%Z+W7P$a?=2hQ#`d#W(?
zF>hqqh?|TDYn9Ag+Vd}!`8U+KG5j;v<U~L4f63Ng;Z9}9)j=6~dNY?5UCLDwOFebD
zpCxkO-s`sa)X8tV<$~K0v-eD61P0Eq<6S7lF0ZCFI=+`nEXxY_LR@Rp>9SF^$X}ny
zh99CcqQ6b5>A5b{K&HhpM(2{jdfrf~0qU|WUnhU2@vJXX#o6C%31uyJ$RM(@@SQQX
zTmJp8Y-l7c`(3j`V1qR~(~yK<V+;sUWUiBKPg1sF{^m|&1aCD>vU}0HpA47Q`r!7w
zYq2xeF?l!-s&Z3zg%9;l*#|7i){l*#T9j50W8i{IY`XGomR?@cG%*ReIwY3nj|Ajl
z>YbT!Zo4eIW*s!QWEz>~iTZ4PO!F~lQp;LxF7jAfezJR%8s4~fW5jQw&E0j}b9S`8
z4;j;fZjKr>0nj@iIP4XN+)7d;EMV=ylS#q_J=0!{gI+sBu%{iqm>6z<7cq}?y!#w2
z`SW`B_?b3UrAuX99h_D?7$8a?rQ6Fof7GWYc08wHFGI++;)pdkVn%ByOTTt7CNgcF
z5V-{pMI#r8=$e8I_AM7&t`O+;TF^D}eo6N~_qgCYmJtwGn(0u)OhR?AJ^h@Y3TxVz
zoWeYY*wY&$)-jH2tDiy8%sOy!9Xy~Z^>L8QtXM*bg+YPBOv1+W=ZRv767TBXC3SYw
zL-D_*sD$;Pd4Vio2k0jD6sZbY0!$7GG9;M0I5D-a9kSu0arC=QHr?K2dTw#4zQYVP
z7SfHNnB)w7y08rZ>R{kZcpsIm@xYvh0lz7Eo*>54pTYqpbrF@S?VPWuaNlGaIPVr>
z4bw}6PP=!dTU8&tUg$K}n(DS1`Zl)*toH=VCp&=|=N?Lix<jz-5RJ3Cu&u`1Bwlz~
zFu9~imHW_sY%sShdoY!D*=6`l*Kde*2gdbnHh6kAo}H$1!RLOvCN!Yr1kDCh8x|mY
zwM(&@?sLVAk*qWmQdp#DwIRGuO@tsOXo;kAcF#?qJs;^!Z+lRgxVN?I0pPn;Xd7E-
zS{{PCTWd_gun<IT{r!m_BlQ^uyl~mqyJjH(KS030wyM{5gBhyx>^KmdrzNnYrmnb|
z8yvPUCu)q0Y<>|XzOO51277Q&lHsN$bIaexh45)%h>|$qdeVZ9hy}=z89=_Ty-#fJ
z=WH=HzE*5`w>}VtG==)VUl%&lcX(2fw=exm3?x0@?xL5Z{k^+C_ecHYPf@9<)N(Aa
zyMfw{o|E~-$4*yZ_jxi7DTcCe{LIF}rp=1N+>Sxk-7{|`0#EcD3vOO_9e4Xrzsuz(
zG7Io|XWs;FhwV1S<{kH<{^FT@;}wjMEyE-hi*cd6?>3)PPrpL^^f<#bNdY9xO_3P?
zom#%OZ4i4_jSOiqfX?{-a_rpr4_gT6m9T@+tKD<X)iIm@Y#d>r9?x_JX!!iA!8`-l
z1&n%G_dfA6!{^WnP1fVvN<bbaz5ba0=jTVE5ZBw0p9{SfSz*>q+J~vw>Oxt)5SepK
z<abfu50VF?(`2oln8~7JYw>26RtDy?+xye9B9jGQyX>b+?ytJ<)Q#8;lLlM7lFuJs
z8O0r+E5qM9d+mE&B&6>bc{`{^NN+>qb927euDa`OyF2YwRaJWHw)Wi-JC#*d5f}@*
zobq@bP}bk1$tMMe%S+uK0GDMwkH`-;ixMn{Q29xV5i%YJ-(MAdz*xi)ZC(NA+Ul-W
zUPs7xz^XkPJnxC5G2TIlCa{y9&uk?TPmaP#4%N~{yS-ZE`{;M3xf~e0Ys<%xBPW4`
zp(!a4Z?l(dD2mW4WM0+2Mb;C6nN64}T#3!?YY@%v=JK;w!t)ZXig3T%2tg!C34+W`
zm-83QxGh|>x2`i{?78gq2tqfj)9!GMu2CHmCa2E&nX^Mow$j_gKsA{6){rpP(h6gP
zsV8KRDEpnPB;>H}ei}hruq=jHXTsbS)@bI=!9XD%#d2GsV9c^u_zn@7dBz`J=Hh5J
z-e@K}SvEpD9X#!Gig&+C5)ot|3Im%vusSgrCgSk#@ZLiG3FU?q!#C>)%kEOZcY~>c
zM6&ST!{HI?l380Ch4)aIxO7CAuuYy_fl#>WvpB_6_R2llo8WwqH$YvqXmeX9wG3jJ
zj3iN-4K~}qf5h$MGSEwf+LyXSP4drD`!?eDS6xbIN2_G<cXw|+QjG5sS3ibvx#IZZ
z#UnAtdm&9o7VP!?FOe|rI|!K#7A(6GLz~lM2`YH{V?G({sCxM1+Snx6!Lc7|GRfK0
zaho~l=+Y91T*d5r96uNaAzSNP)9z88-c3CkyFE39^N!u^wtkgSS;Q0smMr%*%XKx3
zpd+dWC^gKWl0jBNaSFmlEvzJYh9(BemvW8dtv0k4<1kCM26pFpw)=b5jf6+y8yLXA
zc9D3l1&jJ_JR!%YJP5R{uL_r8Ds7!vqXwi6?Yw?Q!X&Jdy=*j$HCWqbvEU0&AnOSS
zU_gZ?MHc4Q<mAJ%%Frze@C-Td_N$vs$Xvhn+x<Hj=*8e_LW!8-BIM3?_wdB)JS?u7
zQ$1C#?>OIK#<IjDjtHEF&Fp!RQq1e=tOtHgw)N2puZ7unwXV78zS{<JaETRVRtYe<
z)Qyo|$>(P(o349nGTimWz3Z~ec6hY28u9IdNgn?VTWz^mIGHbty|`f*wT)w3BgzH{
z;lHSIRA-p-#aE^c0~2g%v5b>`dHV@Gd+7WMH=uG&%Kg6FBvE7wmhgSj_}5faf$Tm)
zddu=*_+F5D`m(Kr9$R0PVm~fqIKYgWCkjd{CfpDS(wuCAGuds*Wo^SCu9IVKR=-pf
z&IpL@C?T5sLEmBDV*((-!e>CEW`zSUFdqS|<^f=QZ~M|hDt{Dbzl~LUqC88PZ282?
z!*Zea+9li8v8(cSXrO4{y9B%rYorI4zs=tNN9#>O${Dgl9%+~u*6Xl+ygJL`t|zi5
z3f2ndY6xK9gA~jg(^}TK-(={XGE5E}+-UDQ`tPu?DXm^nB&vpw%<Ns4TWJzyQ!v>(
zwG(Gyo!g1)V`vv(pfR%3+O}p(-siS3x4v7t?kcgkw5c0&9^7nNtkGf{at?<e+Qa}%
zk65Neh>pR+EwMAObYwreiFa%GT&L#{H0lu%1eX+RwE5CEK*TyS`1QA!4g{MArwGBv
zociJ{T|v(|&SE}x-cH+f&VoIwhD!G^!tCzh4gK%iu+?0$>x&xpNd1gO*b+*#(J=G=
z21UJf_%nU2Vg5>b_hpF0VH}SOzF_f-OV;fBkDL(jA#)D#J=^%26PNSvwXi!im_~qF
zoZ$9B_HJ#&HskH`L=Di!Q|NzHTlq`z{z#j|1(dvh`|BMLWh})_tPVyEe$whpZSv-d
z!&b4nGSRIP7mJxDFnGXW&)9l>gP6)uiR_5cGt$WLR2M6D^S*I+9JY@F{%D3+`l#kP
zNR3jt7DmUyBjdL67h`4y^Aql+rVama!v5AH^y)AA^!9khHh&s_GJiUK$^Mmkgzlfn
zoc;^cce((7dUvsK#h46ra;6>e>FFhpWE1x<1PE1}Rj(?}5rtz)d3SA@^C@lXE82za
z_jV8l{*=ZoSupGw=td4e4;8*zc6o^T+M6fwo+pzpZO;`>Nf+elJRAn?E{Ahl7=EFc
zIWj8{ywtXz=kYeYvnvpiIoIOfGq%_-yMw-R`UMuIyX6Jki0ATnS8F&;j*u);5yXRp
zkL$J(jAIfz!SFrFpzAELOdHp3??PF1{VC2TtveqJcf1^Uow4IV_ZAd4JP2U+n1coo
zH+ur=_YE7UgtQpPMIo7zKW}JjZ1|5K_>LTmJM^L94iC);Z$kitGhZisn=-C{>SN*(
z80Im(`SX73qsD|mq!_ZH$H{7#+?aH2FsLC7U>Fz$l4gd3w8jt<2%-)%z`XC&5R9_%
z-4U<t&wVW0^Fi=dq}hN3-J)I31JNTN3AR>A+?J-#SA!6i$N6ZrdR}|*?wu+ap!K}1
zgW^;URZ&$%RR>o-8m8vAT)tm~?rwTKU5T=LQxmu`4m86NjQL5^J|_*RT}N2N^F^pT
zr*UICNv~sgJADKJ9@caYWY(}t2M<Ccg_T1yHm8u~eFX8XjKjI;Nj6eX6;e);i?@23
zF+k{C+?as8?6HoA93kV&$Or(FBqRt-G)ogPzD>rm@7$G>mGYj`P7o)pA7vqT=DZ68
z%i3n1_&)8=7(mx6WmX-R6)`Yv6Ll0z8zGZXZD_XDa){M`HYc&Ueo>wuQCuvXX&5=E
zfN&xEVjDtX9Z+<>{P>*zBauU*%aa;zXy}oFYfQ^t4({$m>L<W=7u&wG$)qT11q^7u
zh-xInwhYWcf+z6#Shccd=D?WcZEJgOLl@riD&v(wzp{3*mWeyMPR%6@LDKeGTeqAI
z)<-C$(M{|f+;;j{-ovqwoA~kXvC>2R402=Nvl&z4!t4HyBxkTezyqKX8kR8Gv+joq
zbsAn-35|8&fsk|f(o~U2G`^=OQ|GsTyrUi=_8p5TEFX+YlLJNHgHj!t9=@#yTsu!w
z1VRNOFl)4sC~1Fb2J$Ux5vGu=$Uts0v99iK5d<SWW^Q_7EDM$4nLS3x^?dzx{gQg{
zsoq$2>wix}pQ~N6;Q?p>VK9i)rS~stP%ey+z|w}09WoOOj}vkLiw2i&wr|$p;2{+D
z)+IdJw%cvC+iXu1*{VM&Lz?=!r+sy;w%ckHw}!a5HrCniT7WDgt+jl%*56=lt-K+&
zw%ciH+ij!gt{twn+g6s_ZMM<P*4u5Qw%cvC+iDH9Uk19CmfS}(S)7;fq?77SWH?>y
z?9tS5E@1$pr)0Dv*X#*{0YCuyg1~cSmRyi+52li;V`CE_@eP)^%sZ`_u_tC9Z955t
zE3c^;H*yV~%v;rf94>!&ugo{d*cD+W+4C`Zb&YBUWSb8bI5Tu2eB6q8E94MRM-<<i
zy~f)C*|u>vwZ+SG5c&=0pQoPX4|=N<@ar{+B<6)%+sEJ0x#<2O!Usm>3igBd=#^>P
z9U96vUhR(xPBxns>(7}5h71*~D{ICDZ_S<Bp)k7pA!=sqW6|vW-`c+fe~~xeH`JwL
z%T-HmX=e`2&&u|G58^&Dd>r_tR->etT0iUvZ5wK45)WjkzV6Qk0l5BymVEblVA5T#
zWig$CH?iKvO;*vT__=VH(cE<5<lXZPg4Y*zXW=M7^LteS5tBoYlv37FjWD;xN-(p^
zqe}pr8;Bgr5)>fh1qf-J-)mtxD>&+Y40-WPds&<N*!PaY!Hrp);Ko^R#?g<oVKMg6
znYG@ouGH)RH^o&{d*+z`R2Kf~fN!FL-KrZ!f8l^@{x<=pti%c&G3(pnU7QN3d&c-0
zpot-ne-mat1`HN~G1M6Z+z|lCoKc(^z(oK@Wyt?dc%9e|haWodx~zFRIA}2uqXmOI
zP(~so%Mk<@nBmBiMhue?poUx=0O2;EVC+0@A)f*%)R5BYgK%uLOG5*gl;SK!lr#_$
z;TTN86BOYZsDeyj(-sR2jCzcC>!4ASq#}}xORzq#&!dOjVbKes;sg@~FcQbRDWVSK
zL~WA^42X$oA|yYn3?i9YEf^R?a%;nsP7rt$G($)f4oRb)6WsEXMj^bre(eFfdEUE7
zj7mQe6nnGgE!dnbr9(kHWi;UY!PA33$jeDq%`W@KKMNZFYk=U84JRGaN857?79iSP
z*T$P=z}U|k-<!Ln?(Xjb5QC6q1E<|dp)I5trk$J?0}BFD6z9$R_k8}R?a#Al0#%^y
z?CzbCJUvjyZJDM3?fJPK@nf%7s|Uo}&kmZIG0{au`s*0N186I3wr9iXZ;o*$s=9`{
z?IUtY*ry|u**f0+CBD6*>>mH?7RK{_aVs3ChD;jqsCq=c6}HxUZIG|eDHck>#KaIc
zBeZZg24Qw9t+`>fMI!-zkEM^+$EAlDi&U-^HmNtUh>?eZPMGcpF(5lQyS3WEpqLf4
z)mYLUGpf7a<u1<RJyE~O%=(#28;)|s-wc_LF55;n-`&(4X#^*TFlvBx0EQFOqdW!}
z`e1qB-+0*V)_GSh=y>_py<SKvnH6Ams5(uOumCP+5%Gu`M@ngu{YfFm)&m}-#9=mg
za6GiN4LLANVIej~!)skei20dqkZ!jkarU=1hFSP_;Cx0ui1a4*`k1@ZEctfmLjR+q
zN;r&$W^Am}RoJ{Nr!>^g3x^=dB*?|b(*B9~PmIPMwC&k%72%TZ&xAoHjSwK{d+b3X
z2!AX`emprfh#15+v_t}*nAA%>Z6&bDuTT6R`7fSE+Yr_qFp<a_5#V<}PEyPm0Zsse
zsmMVphLKq&^XL(Wmc9UEypcwM>YO$KFqf@eIc5QR;!K2aQ{hKq0q7w)B*IupkO1(I
zDJZCwLs0kg$dj?;bHHiYrlw$-!5mO%Hp!I$dc#4lIzm4InDy~~@<+n(jue)CTQg?d
zDIu8z?+TR}nXB0;9y(zUhl?LuA5g~m`-UyCu@eID%wm8Wb!|i;#t~q69{cP%w<}ic
zSnM0J{862&tK}mLqU<DnknDws3rViLz?jo4bes$%G=KG^9$OMMVfPQ}{Zv{QegAJl
zOpRE-A0;s1V1+FIGcC05G-y#5RftFu3GnrL7WNO@9`-#9crfgI7<N7EQat`;qoLxz
z#*R_@(WGET$fQadDI6h)=S_G=rt-_?C)zt7%kCZj72xjgR6Rfxgb|N>@_s*$;2%5i
z>9gr$x!l8KpRZ2cDijKxnayt5+pPkgkE7)x&3Y1MX&0CE_+S{YBpl2)eba5i{nnz5
zVsif;$Af#MSHapJWuTd4CgqDWhE1az81Q1|W=!A9HAbQ7LECW>CSMU2eCW|MHYYcu
zyc1>&n`q;IqbGpJwDO-^*|h3C7(2VV?C)s6&3nNPoDk{THn4*i$(`qUUt8=bIk^=o
zVBal5)`?=kL#Ghw%Q7Xp(J(m36&p`8Bl9qW>;9NQv7=-efQ(8UgdwjDjnFlf`iva1
zx4PLI3s@mM#n7<7JK?X!Ug`b&D1tce+qvZtUBh!vM-vTfo5sp_z~}~q&@{KvpCLe!
zQh9h6%qD%wLcQqP@6*)RKk;Z^a~HLZa5PEof(j0m0uHVcXf4UgZ6AGcWXY2VNNt0C
z18y6wifrpQWe>rep}Tm{eDu@lk#`UCP{v&L?fhGfH`DAG%-Y%V_uWRm@8QI+&U?C_
zi|60D>_}(b=ZU*)87I}$$7*DuO24070CNlx(;m0OK}t1A#oYdc*i6fzu)M?riBT~n
z(fpAG6zNQuD{)s6W?0QnGohc%CkJABjod`xfRR#8`yvW(&i*?t`cSIW#B^b*vz5mP
zlmSE_3Y1=H=h2ZX*#m<VDG1Ug_XPSJgdo{chJa!WCMMz$3-<Rm>C<TI1`6?rRwni6
z`<)4_MTge(QM)_PWX;bP<ilJ$d9;i={J^P-MzDjNxM9?Cd9JG`y@3PCyxVCbjn;xz
z*p<IS2>RIjezrT9v$427DLcEnrrT|{t+&!2Xve4H-p%y2N?*@O+#|$DoVj&-wiaG7
zr|}G1WnC`3{Uv-Bhfs(3YVGg+wrquDQB6ZZ{V3}&yvwo|yVr|j`}XuT46$cq$+j#q
z6Nk<SVNUC};7b9geYenCX=)GD5-he#L6JFNcRiufPgkQUT4SSnJ95h`E+zoh)TU4_
zzR*b!6xDZ`$Ur8=07|z6pS5=6<`VRr3o4X!Bkv(x@J$R3Pf?F!_eQ7YI9qk1WUhB)
zB{MrZ_fmVwAzIxzB$f9ijRG?W8#X#`IfA0_s3ArlLU(F(to#k3tqItBD!JFGxZ+f%
z+imeiHJzt`Z30_HEr;0B(dCR$yo4`o$h|?iDC@B=Ezu*HZM#W$-Q*Z`0AV77d!nG}
z3mzFifnb(Eg+|duJ*?wQ2%^CZu2-ZEgg*tAUjnutMi|r2Jmc97o;dC|#)gjR(OE0P
zSj2YS_WZ2o^wSfCOT%l3v1Ay6xgkQ`ZG1~23mDag;`nd`B1|Tb7l>p;73?mh9*rLW
zYmRz7^Qa;PB+A6kg#)t6fJ+Yt3X@}ujLlt6#jC3fzXHnHF`^790S=tKO8J#kX(|rZ
zl_7UME+|!_VbTr6)Ge$z<7-mX+8~P}EtuovfMgB<7GYpknz(c>5y&wxXkf-|@?{w|
zB2D0kUpo!nvGR=uF$X$1!o;SB4{Y%p^a==xdIliyNY471)QlQ(QK^hDYa$J6$_w5q
ziy#~<RM}b|Pi~We=r%CrIe7K6+xzo)5U{Ur)!yzNGG1rHFp4?1oo|@O68^!6K6RcG
zPbPO3uLC7OPMP!Q!X<j3=z#ds@+Rc=d*Xa%$%)Q~o8(M~$Ub5(!L$e9jQ&;Fgw=hD
zR3Bh7_==4yR}RzRczuqcP#7oKd&}f_F{g@k58rl3r}sACsgiIJ=~1TzuW(LT@%~A3
zZ1VSL{0sbg&q~XxpqC05L_rYKgCs<eA9}$iDfm)$^P4jo?L#;)g9#$CaRPcEM8iM?
z0T>vPwwOF$6cnrpseUnu!5E~NA*PMUNSAv(Z5hV14k|kPKP6f%j(D~+Ac}#YAm9Q#
zM?cMBx`xgbrfvTQCpf*#>bK_$TgE|ody>?hZF2&5YR+7k9ahGH;qLo-SthVipS5|c
zQuT4ynA}Y_-M0o=$9_rNJfROrf>40);oY6QeWl2T23cRbF2gG}i#LYaV3PUvyrR$P
z80=%x#gaN?Ufoz9s}H|VZg;mFFd}yF<Tb+)nwMk4f|ZBGnDb|1B4IU$!L2)mxWKp+
z?0xeg*=AJ5+;-^d8(Y6@#j*uZnIspY380x`5o`?+8A^TO*)OHI-8J#ELzW&p7_fF7
zw**-gXpJD&av*-%*w!;wW>B;~EPPn~10HPEW8^~^on}X)msk8XY*7Tv;O||}x!=31
zpXfX}a`0mYMRk@MlppHv=udse{k*ks&A8$As%PUtx<|}CsRfJ@WZDdA9FRHG2|d1}
zmXDn7@8n%?S?-B&=<A3a(6JerorzoY-l-y5VOaUogmWvrwCeQnx*Z$qIyxVY6|neD
zXrdxG=z$cJbWG4Ovl`e;8H&J{9(a&sSEnR#(WWv(Dw>ovQ4ur{>E>k#6bxyILtFf*
z3X#D6MNI}3hQl!f%oyQ<CLKw$&D3uL;{Ag`RdvEUcRmlZCm6-CL;TGO7~Lpj4v0&C
zRO94TPH=`}0~2YvMI5vr+3t_4z+)J2A4^&BJ=5zmV?>x7ht==B180!TP@e9g40t53
zr&FE`%^J%lg&6u#MW0C+I1s^uO<4&SknH(-@2Pb|JYdDnMsg-6k?6|@DKqlhF7_iT
zvvcC>>)m1HFmI!jn=tt~gI+I7(ZKJ)tR1xY5=f4YcLu!UmN42bZ#H;V2IA2GOXSq^
zw$t-dva9BU8a90(!VA2posWNFHaM7sz7`A(d`DrM>Jx#1N~xju4rvKMxWLTu(g7aL
zF>wdbjnH_fWC9$%<iYuWB3-t%;j`6En=uUinajbyyGFpoM8c&UZnQCgBnTK9K@U22
z5)K+0-<}P7fjqBwf6W3syWW-$R2zg4^UqO;UIR!W;eZhL2v~$l5NTgXK&N#McY!?N
z(i;iyl80yY`#-bBoS%v3>*>Vrgly*T>&j}Ml<%ndf#4h!LWlRZ$Mc=R?H9!#A5Vr|
zvBQhUN(Y@h8|!~Xuy6y050D`p;I#xhJ3AqWXgT1~`A38f7?uJmVre1sxET#06a@tZ
z0aa8}Goi)?kT^M&z>^K`>YcIg>MWYW-#HlRs&8CaE8OTwaJ9@9C~X|S+gJf85QH9g
z5GJHxK4gYr_&J<lgDw1pwn$l3I3(xovpWV!GC+e=wh~HcXXY6$@=Ww^(r2KzC&Gg~
znvi@^)RV5agtxfGymtT#J8mtqC}FnIA&0GqxFEF6WZc>|ygs|^WgA)y0Wu<Og^gc?
zo7u(|`Hj;Kh2D8~n-r|5;WKfhsmH<;7D5WaEaDCVV1o9HXN-8pZxFWXKt_zYj4eu4
zaCCKDH>HoRO1s3eb+)(0aA~Ed&E}UTQ<xKd*GT1WWJp6g$T)?**@jIvAH=xi$+h9b
z-x|r!xeKEi>_X|(l_bJA35X6m6PO<_Sb;WLt&f{QQQ4R<!}D+Z^~}>hOm_W0)jl{0
zyO<g|Q5ACAlBx;wN5L!}p@e;5Dec(QHZwQli*rOJ&GH4juZ^Btt!AZ?$`$U6GU-uO
znlUk%pR?Dw419AP`oABmSBI&uG9K*P6_&1MqP(6}vaPjN@?KkBvf?&hNUM(AV^Yoz
zT`FV8T7X~x7I$j`4HXE(<&3Q*Ef2Y&v6DWfwkPCUR^2mP_SP_+L7=6KYcJDFFprfQ
z+R>?gN*6|{O<8=7GufGBDTK9aCO!_qqj2t-_2(8Y5)3ScxXKC|0u!=L`fB!_gIVAW
zwS@yJ({+x(n&+xa(7;dxEi%3aL18|KiAck0iCB;a#1C()j3Zf0vzx|AecDe6kEcje
zVD!R;C^~mCO#*&!lpJBxGP9Hd>PF%vDYh}3jPV_%&6vz^IPrYvhZtaPUm@84Wc{De
z!4s?Qb^M(+teg11s-BKLLlckmuOpcp>FS(+3(J|iR>EVAgFJaK=08Jknw%xo)VttG
z10&DUXX9sYSqpHqSX`HnWUgbK?+T*mWesiWXd%>x!c~owkGQ@aQ~ut+EMw^?_}!SE
zHpEcMzuP$OdYhxA*Gl>{(d|EEGU0ucx<>Eivqg?d&$dQzHF;iezIRFXk^UkbO3Y{@
zHAxnZ$G(r*C$p21v3qA72joqxceb;n!U>8`9wZFWy0~>3I;h0jSls+#J*-&{*BHjr
zeB%k#iQN+hbI&S5+WnVyY%sF^Y(LerB3FE!j1uvLTGuWr6nPn5qGN1rno<`hhsTKW
zztFq6p4TP@pJ*BNGNtvFOn#}RM)6cuV~DKA@^%SP_PVjJXTEr#p{Haz3xWwIh$=z<
zOS3(<Tt+KzwjbP$>)(wDZ{+>+2W`K&$w^yndjqsfLl{v1xgYUD@VG#e0yH*X5V3q&
z3EhdLzt6SxV{`j<XXPDK6^qy~{!IvImK}>?^1s+y5Mp($V{1pZyMGS?xxQe8_PbT1
z>k*H|ydjqlmwkP{q0DT>9FRwg?b4gQ`)6tr3J<(Rp1Oyux<tTsf5~2CYt5M)A1i4l
zsVF#NdXESjPnqq@uSPr!4o)`!eEq$u>$!{tTV7&4%);TFxq(P^JUFbq@P033sU7R=
z$^az+tb3<S=kA<!CQ>sivJ!*drR5k)>nHQavQzAPD;o{@$0Z}v=EAw7ur<k=Io1md
zo?0N;EDe7%M`jnCW%jop%a)@)^YE6|1jgT;*lLHGKON*pLO_wLxFkEcBt^4qTsHZw
z{kyqb;5qqY{I%wC`>ymPwYctS$2Vi9Go313%-<fnwn4BH1XB+2bmNGG!zpYnHG%fD
zInZ7th<vvT+tJqI4|;c{exDxkdeb@4hTi>l=V^%4JWbJy!m`~2^~Nd&swN0S9ri>`
z!&DH6fcsIYOlpc`K*gG@SM<*wd{%sJDdIQr!F3OUK$!@L{3-&f6}WN8coWaGimqXK
z<FSg4fVd7?RkrN-&+Iz#^U6z(5>e@>bZ2Cdd&6UPKC~<8w2V4<-(iez;8mRGyMv8%
zo0lhMrPuOTMoLkItYE{}W}r7YOlY1eNT6gOgCR@jKhR;M+SA${*J=ibBlw5`0TDJ2
z>Rz^`)LKfIw+sH0o^l_*5$fbVj$tV2<jGP(2GG+PL-<JvS#nS!STNm3=n?LZ83#vo
zfS*!FTf796dfTx6R??fT;l;JiL<6Zr>8d-xGeaC%?ne}E$?6*rK@NkTt5{}(nuV0$
z&F#U9{g;H7QVS6zAK&@d9JLWuW^Lf?8Y={3CNZUf0V8T{kbh3DAJcI536h#>0HUJE
zaNj78*c!vAY=f-mx2Z>wB;;X8GxR&xn6u%q{<C#b+y(>sm{LKSdb&_1!-!8Z!{Teh
z!h1@@#D2*TXb6D^gCljCLS2u~j-jshw5x#Q0;>*V_}eg7Q|cg0$xgc|`<Na<_=2%E
zSf3kPwqtL{YGH|B=`YmdGc*vO5reWxaB%8CS;w^R<t^~7%QekMR(uFf2tsad*m2xO
zGZNBwSOxv@p_YZ9dTER&NS!BKn4hN#zhrmZ-9di3zL8wV2$UR)_OFHt@aMm766p3A
zZmz)nQlHP{Ls#RHbKM9FOboOwxyMZnj|5*;hI!Sz2zYblnY$xP3J0@LR1AVRl`^hK
zJ!6d;kZq9esMc{N)V^&Svyd6L@IVl1yA1M#4YS!d*qt3>&6z;kXS##Kb$TBsf3t1|
z+!>GKMnek(!sPCrP7SWpsN2RGrUffW!GdGny-~N&?7OR10S1W(l=L+{2qwb+myN|H
zjLRdTXIL^oTgM)<X0SKlQ%W)Oj8q#2_cL+m7+0=mJ=g4J!cbKP%?8X|1SS=fXaND(
zcF=PsWO1;*4Txg}iJ^q)rkPO65*lE~LMBfWyo^nzj4tB_j|4(f*k^O%&I&8ZkPw8<
zra|YsL2)Zv-;B7=ZU(*BLs~XWPD&ExiLI8xa`2-EJJX!+X24wbCd6QhH?;ivJ0os4
zT`2He8>A~ZY-`-Se<{^rBJ9FTw9;HsY#<0YD56bCz@uEbycZm|r`ZEZIPN%d9nhsV
zi7Hn9>BZh_+~+?jw~bguZJEX(D`LLSUCVYVSGv-(RijzF;|{94xV9!JgI}9F5NXlc
z2_cf~KF2L&CNoU$5>D>T&7yi7aYU@1Sn#;PF#}qm!~n@V6I(&gBpE%;BONby)#$<e
z@$694&iGN<yHNSf^V~g{(gXsmjHE)@Ib`p(<dI|90qujk*lhY2Q3oSs9<s)yt;Oty
zLd7b`-utBfk&>R|Lr0Gpo11RrnU+hbZS|_W5r68q5TJ=5^!r{pyXyHOG4?}!uNK;U
z4`uQh=Lk8e6X8LPqYiutD+QKkoI5_xD!scsxw!Od2Xq87F{urVkMrS~dKHP<2P-p*
zdcqJW6!>3Ju$|&?#gVS<Zo;0|lXn#;G23O2A9~-OAo<jlCpL*;v5S0xDBT|(5nm__
zgF)iP+HDsd<jfeu&W!haq7%`dgU;wV;Ts`u)i;CAmtf7f+;6KK*PAj-*AK*rph1Ug
ztx<!;#47Bl?|U817#i~1#$bSJk^9<Emz#j`#9%ALHmR6Ple3gl!Y~>`8yJ?E1#S0P
zvt(Nq4Y{mYsKw|9wmbJ%N%MC*;DGF#Csc_Jc!Nsl)tvOpsrRWWBvlavK@muTgAxc6
z5rI`HX)P@+M3hg-cCuJy24fDvL1zxZ>gO^U58RnjyT>$y^rbi!*+aHWk%%Fs6Z3uD
zK)`f_^Kl)#f2)0w9!OFF34w+_{T+q~CT7eyblIu8-Q8L^@5PC6=}M4hG6W)E>=7a)
zJ}`MldfTRh&XRx2FJS(aKCGV5?lO);84YkTv16GUT2FbB68H#a-D|P0y7w!m1$r1n
zuYZZ2`#6Y4STG9VR$B%q=L2nv57WnahEHjNW(-7D5P~55315tf7Ua;~8ZlZ5+h^zN
zxws5J%HV~zi#t0pCI`yFBa21-Muy!iF*O^pA9EPZboLYE(kyrx$D<(`O<My9K7>sW
zQ!owrJ}}%k86})jfX;x6h<4BRz=H@wAq{0aOU>*<uv=NV_?iZ3qNUfuF_vz|DDoN%
z_EnbyZud+WbW0A_KN#*gKjVZ&-+3}R-yVV3b`IMntt=YKq-1@8x7z69ivlQO4+bGc
z3O&IpQ|W>wNf?qK<zPHRCJj8cLqL273B%Rk6CItR*Q{f{7(rtM$~8sK<RUVcqz%?p
zU=<^dvzdwkov(gqWV5TfnipW0BB9W@@-R0Nt_Q;{>+0*KsbcPYd%LF{-F7vAM&Af`
zp+{V5o5pt$Bj&Zb`f%5rd3p}3+^|_VyQU@7)FQBVM%ogB#DStLx{G?KZ0g+`EO&%D
zni+&WT%*BRu5?_O&-%m}A$zUb`nB4{@IL+z+@;>vt?*i$pzPZxee?Hcaa(Wi?Y{r%
z*PwRkM3_QnVg~r<yOJ*n&@-|yNQ5B>?SwKp*E*ZEVeK$75c(zoBSJg;iLkr1k7lpO
zC(F9t#tb_hLG+E$R_WTt{QenYn)4Ii&dUjk@x<H78Eu?|ZyXcu7F4zZ*k;J|M?6)Q
z<L&TXdn3s(Lw2T*Zgr&oo4A(eLk@XxSaulnv)iryakF<-Y&g!_nldpuv4z0b0GJy3
z5lxO0CNz4S!<R0aYZ!2xd|z@J8;4+;BlRcPf@&RSSgeWQk47x)*`2w=uW<8h7-uAz
zU||zyV_IKWRw;%?11-UczD9`NPr!p^c0QY949$=-7}t%a1u(V7Eg6}rMr?0H1l-_^
z+=p++WsXAQtgn{a%)Jrkp+DAJopDD!hEuO=Y-3FZv(pi~3pp_3qo8#EPZ8^-0{b~E
zUQFPD<ZaxiAdt__bUS%!^a%a+A`xLTGt1f`oZGPO3I~&d9Jc&Aqa3o#aE&}w{C6l_
zYj;4(Z5z&38@sIf>h*E)pRaTn)ud~6@Yd-wf)3Qr6;#`WK*lXFV$8tga6rBuJ9=er
z9BNdP2;c;nnB*aun>QMvSQ#|?1Tl&BUDRKJcc7^i3Q-4x-Hl<MnOix{ad);o@$lOp
z)yEq19~f|>GsMyF?NZ_;y+e-Q4E;A`+cP1vC=TB|-Di#Y0mU#k^fE=(SQiN;bNXYp
zJ^VRBjHe39k$TgT$Yv(oEeW3Li9J(@1JPK+*3hxm007LSJC(lLeuXy>A}55Fh)J%$
zO|5neeDo@Y#r1)qHGu{+W?hcvKG}fxvM9chOVXfwyRI!X)NRyBE%n#dosMqajhbsQ
z2H036I(3VhY9x|EctM9lEA=2Y$ZQRNl18B!%hgkk_>LBNK)ddJts!FY6H%W7cE;S>
zo;bV!u!b(~J81aA*$*Wfu;!z-Vmv)OIe6)Km28LhS8*E%=@$@pN<|b>AXKReWlEBj
z5Hvu0U5ntY6LhIj>Mh%GRaGV&8$5asEJrxtZRQVLJaqivrWwsMP&WOli5oDNRC&r$
zvu4|hA_zhwX;LgF6*Al*>B4#0WCcz}<HZs~7^Y??eDM5eV02(S5NJ9+?e&9g6Zlp(
zD+OT>F69ftwbKQYoxfM&#8d|F&Rh?eUYp`^@#%LayG6u&{OaaEO~=f65{sy7`>+V0
zJVndxlsC=%CV8$TSr8!=sS3@$N6=F%w2&*9fc~RHX35fqxPpDS)VnZMJG@h;!SEu2
zpFQSm$)E>k3Ir1djNGq+5bK}Z>+Xr&`nQuiZqnFueg6PDk6(LA3=NAWOeBVYEo=!|
zZ!kSm#%&fL@SI}1$vQf~KrjopMaar?MyO)2P&Yh9GJcI_V;wE$y`^xb*vF|wTJB1x
zogan#3xu=Xb5h>KJmw!A8qLx$6{{vf5+$!=^9>ckqh1=7FP6JBwfe4j^dkBT&!h(4
z*w~k*v?sg|)%&e3`7z*Uat0J!@9}uN;$K0i)>(k89m>kGC~zXB%Wq#ghLJz7hW}%}
zs{<zeZgNH0muvt!CbSOh5tInxtT13>`H(ckGUF4al;9@pBuDLEWL>I@=l1;Mi5mMz
z2Gqs!9PswWGq|LCBk$P3mQ&ysT3GlioW&G}Va7HRQ)qgQ2LOY9IS*z`<<P?D<W3gN
z00f7ZL7e(G@t=%5o<?`(3U^r{j!1_`J6<iFHV0bU@4-WDc7_GAepGs|dHCW<yONzV
zp9ngKFUkw=t!AH^trYJ55h-+OI7Ew-hT>-ar;1uL40238LyoiI!Rqx@KBZp%q-42>
zE+Rb~J@QL5(_<t}TCst9UCp3bpjm2~Hs5h%Pe;@1&zo;PdD*tzNEo=U8q3()ZsQ`z
z>I08NKS`-u(oNa<<r#Ck!p>$mP6cr+t)BZgz?lmsqL{v|Uso;!PRLw?msb)p5n&nS
zSup`Yz=4(Fen6c%FpIZlZX=c%9^4Fz=rxLPa0GybTxUUi&(mqY3H5xnZ-5>THFf4G
z-a4z=X3H+$$NHw%)aK*ei7Rm(jlCi3LS3Q`DL@{SHX1SnkHJ0ZoJdSYPl5HCx6~~r
zaeXRb02~qy17`>&B3VPw&DJv%LNnyd;1AAytB;GE`KiOGRCnCd>O>GLI4GGC5@$|_
zOh7>FmIlfkHf7Jgr5lt+CYEd$U1dp4rwB4k=cl^+8w@rBrcbNscFJ!-rLpACJl1r1
zZ}i5=BpVyH3=@q{Wq3wm(5==vE!WE{spTLjO3ZFFn;E;9gC7v1Joxdx`xU*LY>Id}
z7^LCPX$zBnC?UP=O~Q@P=N#s5L<@xYdslNtlP>;9>6;pc@H&j#-HSCMIiYjk!|0K}
zM{5ROpMfCUiL~v?=(Ooxc(orZVA;a3+MzI3(U|ME6A+EJm!sWx<>xY(8;BZ++KbWX
zN@lic-SqF6%+0>lYjtGhF#Po0Ak0SV_xRmY7?f+kX7d>gcu<&t3Z`y}hLa{6q+zNd
zUHuB%7R?O3dp+fqoa}c@;y24C?3+t0iS`Yn4YEU?p1)KE=tzVeCI@#Ty_tfC7n!vV
z#TloeO3j;6c8Lobl4#_J!25%%8QZIeX{NLu1!%Bc+k?Ar$4GTIisL6D^oAkgS4p$;
zhhOTSSkN#SFc>g4h%jX?hU|VYP*AKgVd#U)GhD}=+hCaid^1<~APt9N{wVMd5~QQ^
zrysnugEiCK)nnS#5~aoQD%<zt+}pi|Z8d#wJga`_&fh#`ADe+1YkW2Du%b6xH`~8`
z^S>u61ok@(rD4BEmoo>xIYs<rQE#_phWsr-K;8&KOEFZf2{6GGPkXDV?DsDh3_8Cy
ze-Zcnzfa@cT5$RKacOiH!TpK{(I|IBR>Clh8MlwK?3||uAqjK*vSM|4$WP{Ys}?b~
zf4>Ky5=oow`@IUo33k#Du{}|~4IRli&tu4rQnF0n8b2R5^8&~8`YrWEBJ70jqCXf!
zRZ3ycko|6u{2CzlnuccY9#EJ2a*5@L<O*-L0<o6=WTBMjfo?p^AscX{EZGJeuFK0K
z8#5A~@6M6=x2`KZ`Q85=+I)D%n8LFJqsmG&_xR#-?3{V(Rt@92G-XNM#ow=5!yn5q
zihqWGE8?RVmUf8RDtc<L%-J0x7Q7p>ad8iP6*+nR+z2_D2zl+uXj<(!0d_(qdu$=}
zjzPKfUkUAE+tU#JoNb0rMMfi^GYO%e1|Px?a;pU*T8es-p5g2DwVHzO7}*{vFW_2d
z>pqGN$`5As(1Dv_{OB&Dux(|vZiA6c9YX+=pA&2@HXn-@-JPoYux4LpUN~=9hQ#?Z
zEL7kpZ&ESj^H@@^5ZK5D%n#OmZ?q4LDNY0&nTFC*%ml%(V&1CY7Vvvb@NH1?-%5dK
zVB4Ey?rTtAg7WnAJ;y$ykYYa=K3Z`Sidd8{3h?etEo%!*T4)p)*yades$i-DMh0&~
zA2;fkEejgEAA;0yiHjLBcu_F{4Lj?CI>#HIYeo1~>i&AZ7R|976Or{l=Yi$k2zU4K
ztpjT?##D2hJ6Zyrf~1gnAlyu7;loDK%Sg1Of$6oR?*y5{c4m>!DeRvt*`7eW5q&Cs
zFMMPijC!#<^pSJ0MsJ@s)v0$^W0mNb1mu+yu8!ruW<~5sE01Hhm!V`$1VlVp;mOGy
zgNCS`rA$@t%Q7Ao@q$p%rbC3;=U5o7OBH%5izs1=pBV?k!xat=oSr%?baEdsIqZ`{
zP(q+2!f;A*W{I+p0MNVbmeSXe>b?wlbIuK%8qZQavV=bXkVR#^&OD`eHmUXP-NfCp
z=Hx6Q9Lfh%F?W$NjRB5OaOiqM&of=HYuHv;M*mR)V6Zn8;n}3i>>f>{4w$hH@1<~r
znXoD$9oYur^JzOFs4E7`8=>0dh##u)yWr>1u)nqI!7~_ajQlrA*_mShJaU;UCfm3q
zDG}|M7wX;}xQ0Ki{6*?Nn3wV&yy*^f8+G3tSamsmeF(?`o$oVg<!;!+j?5r?|0FP`
z^gJim9ii@t4|OzN-J^*}>V6@#@~-*>(YJy@tc)$!2;)e-a5wj<lt;@PUW3+aPR))<
z{)xk}QW<sxSB96%Nm*pODnXgLz7gYKxHU?;A~E^%^io&g9WiHQzVzSC)rr$)cSWf$
zgjn^mz~@M8vvek1*9O%yb@dk4je3+UdP_~mFhV?xPREFccV~3s5a>)hp#nlonE<V9
zO^?f_5HoBvvQT(+!V|uFM?X0=rYH&9LwOf6#~;5ME;}p$3<Eyrl&|G8%Ds3-fUmUm
zmcNcXX|fV!b5kkqL^!xURs6jqbi6mHT-oU;ke<RxIZ?cn9_PwHPppVc`}Xy5i!sB7
z3=cjsvz@$mm5f`{kn?8#$P7aJT3^D(l+krNuH)({nG?UP@hf*?%omr8E{h*mXJ_q<
z=Dg+9dvqxeZN803dEVE+K!vCkW9fvXUEg5<Zf8PA(FTD?v;cNPeC5wVO|s3Ot=%7$
z&cyeZ-2&|#5u}T-beBi<+t7F$P*G5r@z8~;5jT@**wa?W>blZ1NXTu#r0mx$r&x6a
zp&a>gXw(h%HN{s_uu)(dl5ekZn%$ASotDV^s5mlUKs!6Os0{?kl1yg91sUH8*IkF(
zv*EQU(>va`@kI!xtIiBeEXqT)M2sEf9a^y>bIYDLH;%Z{(~fjLlUpWd)Ut;jaGNp7
zGZ9t=1i(Ko7w)O=5%bP4(rAw^!mh0^@ph7aG~of$sFqJi?y@~X%9`}#@b81gp|m&b
zo_d300NDaJLJTy_l3ts(O~+?Vmm!l>yYpk<deu?ItKeIO%H{$N(IEyej5&K6bEH>0
zMG-=hNwNYdoXwlZwyq)$gG_B_!VaYTh(nenDs3p)t1{)mSc@=zUIiiE2#8~Eu)DT{
zpEW*UP{O<!yTU^5pPykXKpG}9Lr6Jg)yBr@)xRe;g^`t=ndouY+k_)<k`RO<x-j!_
zTDG$!%t?(Hp_B;G$3oKCFe$feBxo!Gk|54y9u7{oKHPZv<G*Zq9n$RlEik2ngz?}H
z*Jw+^rsUbjXxg^*k8o1L{izk4S_c^M*F?~=tz_wBiSI2qb&(|=1uaTI|7keHFo8@n
z=<ZHjU<77!_rSD}<U=Gm6R1%R$TvCO&!p*>jIR!tm%JL0!H<zxS3tA$FoxGV@+XfP
zg&{q*uLGfkTkb>&vv`2r^yxR73v1X2?s(naa)9Npm*2-OM(3f8jjjVBL$S=kGG<gj
z=j1}wtGBAw-`@MK&G^>@#(US7N?S9Mbj49aVA~ze)OA|+)4t46e!C-l(Q3H!w`RHZ
zVn{5jU1f^_sZDm}Zb+R3$6*XGYj|Gw<pe=MtsiVS_a|>AdHxZBu@^ys_<6S0v#TK3
z#e!yFLpif*8&jr;6AF<RMs_?~Hfu{1r#JDNfPR+we#XQAEt)#}Ats|w-$Gh|20i?x
z%Z(s6UN>d{97+y8T<a^|z|NrOh~1%b#PtO+!Zt;pw(E)V;B<+c-7x5wnYqMY$Pwqw
zfy6rTTb=d_yF_kXjE9Sx2y8N@EK@5lB*U==EHt^REA(g2aURIPqvheo(lgQ8W`Wh|
zL9k_N#LiYxx3Razlax<J-TSSyfkwqCzsV@#NvAaYS}wUzD9xmD(>aB6(lRL3dxLaF
zFksS$r9jsJx6<I_HH<oDaId|}XQl-}*m<G}F$98*$8GbcRj?h*tcK>?xI60`#0F&A
zOW-4wE<72yU^JAR%z5$K*lWTdjq{^;f-k1M6_|aQ;K9n7Ba=Nz>oa>kz6YbkIn6uV
z(+jrV>z|U8?7YQ0_wkLS>SMW&&t;c3GTrQ49zhNoaM;^zOHhpGShwsg3#Atsl1SOR
zX2MN?rry`h25GVrr8XC1qPQaB8&H~Qv8Em)7Cg&*$;<F*!Kv1IvtJX?m6rjM5Km#g
z^T$XQBY!N<<H9GZ8g0glfR8R;g_YZpWZ?BYF2xCuGP@cf?4NoSp?7tht1mrg9k4ip
z4_8}S(n2mKIRbL7BtYAn6ecr{qnZG&ZN`DU5ep9Rg9-D6g|DY};xeuj)7u?L6JUfh
zm^s{az7WwAL{`$Q#Bgmb74ivkO<B0gBM&GNn`s~?z1RrAL>M=_(oc&()<x$^&cbB;
zbqgM<leL{iAq~jQyVQg;V0#(gor{74Ni-OKt2dL;jj0-q55%nFMo&v2jZ(bne5TAZ
z;^Uprpf7(`DDR1s5)3!URD;A45*V8txdx%5-_<rub)g=3VU}i~GRc|=UJJ)^%Ok53
z@y^LnnU#TqlI!Vs86nChj5~5?CC1yL5oawE)wn}?Ws!+)Wap;CU`(=&8=^@pM?6aC
zyxZOZvKt&S^9JmJ!0p=<IL3{-_R*b;4Ya~Si4P-<XGQEkcNT7!0kSqY(D6)tP2<Lm
z17m06VM~nl)_pt)vb2p9<Il2cGg)id*;^5^L9$@eHxocYFtVT+df7a;;kP;5k@_M#
z2fC)2%ks|R(x7wbVLOSh9i?R)1VNfPDR{BG>^`QkWD;Lvzuk9Ol4cHjaU|bgopD3f
z&xCm(vnvG1G)4k5YKvQ%h!x4*I>kEG-XUe_V})HP#^<(qH@T8$IP<R;FO!{*uRc;9
zA>@cS@O$Psv^GsB_a+=PWntJ(&GL}}T^G}Yw3uUn^3pysZ`OoFzi5tZRIB;$z0-VC
zQQ0{dbw*XA^?5ll9yV@76h-0)lO1bzh@Wg5JRVOAZnaxq5}F0$#P%<RJzGHF*Wu_!
z&M%D{%VD(>Hub0R!_hw3T#KVW5d~PEgkeW`@#CZ((ko|I%dInyX5%meZe~op-JQF*
z6e31KB0!<%7ATpP_*(g&1JRO$-{oG2qYsYrKsxl0Bh()`F1(6%Xr^kJc22#Ogz_s<
zrh<H(jZ;=Lfa$)zAtApQRD2XF%yqh(=zKgiXzk%V25iHJhPt@Nu1*&wV3YcGjZ_$%
z`l&5cB)l1hjWRcd<1qRemNXqHV4CGbG@CyS_bR@))Pl$}*43LvJ;pjUk)Cd!#XFSn
zokh0|+bnL6d_1o$y-+^?wy>%tJ77Ja_of&wOb68$EaeA-9s+BSi5cfGrO+Hqrp3GV
zwE)(GOU_a-_LO331FC$SBuQWjM4=3meLI_o5UAl+D0V@baJO^X@T>x|IBwgmHc)))
zd&OGICv&5k3XN;?1f-R|i5^WZAk2frK;jOzMw^1vs1jQnLi-qAU+Fpfy}oz3uQ)9~
zoI`n%gfXNz7QD8HpgZAuh*@_Y%ljsX!cTM{Ko&JOyU7rP!-a|gFiX=?WbJ9UI>olJ
zU%M~O63mi4Q1{@+CZ6u%pHX9V+vVKemOPxpW20+z7NEx|#M8Prqb%-}Cj3UdbVlEF
zzXMV)X~{7mA{H0~kzvEJ#VRI%rVG&F4J)9LIaJu8u-$<Jw2eF8$>iILPhq!&_B)VG
z*p2CA_9DC#hBH#6{&h0{BPESLKS{KDK#g*c;zozk7lKEgF;~1&sOCh7%2q>-A1~We
z4imDsT{K&GcNfMc!9S~&xOIHS&B}Jd%Ln*s+TVjEtJr#U=Zf?LkvCTUKc}x*fnp8c
zq^YSM_%6tvqwZo|Ny1^+LaN2!!W(S-k+-K_;y!Z;H#Q^U_xK|#gb^yVZL~OGzHDu1
zU_+-@2w-eA46VX_8Uup7`5%-YQMm};4|nt5<uQDWwsaR>(=9QvwCUlotvUj4xsQDK
z8AceGrbMBkry=^y<9au#F+=AN))LnQ;)=1#N;bVwv^gaU<{cUZK!<wB29%{~3TU?N
zJKNI;`1-GGgJH|Ki*>muEVqOM&>6~Gh<bVkQd+LY^1ccipzuu=%{)g*20Y7QP3+_K
z^}-4~Q=Mc(t~Kv|O`U-TI`O(DyoPoG_Jv_(?qIad=F(3+^MLB#tEtv>nh$0<`wS?i
zQ82MXg344$k4SUc<7`zBYmMcMUdA2qv*I6vLa~usyQWl<dt8!{Q*uPX1`0PkJz4vG
zn$-(kA6o74g^`*tLsWud17WG2bN)vXDN{nd%NqqAZ^n`C=;YDC4PsXF)VMZcLlzuP
z2^B0&u(u~zCbi{+8Y%aYf$KLy*u4+*sHJP`&Ev+Yo9c-1B?c3EvWJwV0<nKW2_L{k
zJevEMHp|ArpMcTaDQO8h>zmzBHuHaHmM*WKauKj&hkUXY38|!;a1$h^o>UG;?Ky(*
zfc7Dgy7@DJ`I2RI)MR@#0yvH%ziSyRWr(b*y4abCl|6&*-t$pfEDSKQsfR|H*l;ia
zd&29?3ni2JWMNAD`Ia*yNCPb>R||%}57!u|!1{KN(S%f;a|m_TJS*hj^SyQ2d7SSP
zk7$gLjZ6t(K-6Vrt0XxKVMttZ4@s#p9Kt?car1~c%^>LASQa;FL5yQrN8Z$B=o!?1
zg`r_^-_fiC<%T5ifIUSM&wiUV;|6GQrugH-ExWh5ViOVbvAa_*7Y*6)`cy*okDwof
ze4rzc@kOo<=y5c}{0pH2&H)f6m#vT-LA#c9BZHLz%vqtVja$?QZza$+y<|m0h<63B
zVj^!^xgiHi1jt@v=s0-vrgLUPF!dROzD(hkV_prcq{>E?Gr{?f3m`%iV*?Pw!t%X(
z$^$bphh-;^oh35En?Bc+p$IHHFQ(d3=YPF(fJ9B&gC*W!ePgjsE*83HR}l!<sB2GP
znIg}C$7M)pumBB&V0fXBEu+RfcrMF&kj`R^HU9b1mQA^wt)oEXGcj2SHm&0TDL~f0
z>ZDMHBaq=lvF<_&jej+I#)a8ii*VtA;?+t_hC-v&HR%g?Cuq4V*;iGe%b6q`6sgjd
zJd>UIz<4y97n?y;!Nj@J8|+jxh{e<pk(9*a-5ditWjO@-xefLv>6rI=qlm=eF>*Z>
z;@rqxKA|!};ythv2#Jcq53-i62JgI~iLLhFjV(Awb#R2IBjYwv`P>PyE8Y=4Bm^d?
zk*F|{w$sIw<*e%wMDF0W{oYukv|frph66rDzYuI&D?YeHXdb3r$y4XH0oQwya1=$p
z*p4~ZHD!DM+nW`3D)GtYnB_^PXfX5A<u26&e8+(FP(z6u-NrB-o}yrkQpOStcX?7U
zqBs~qun`drwvvxaiSZd3)+22zW5V_Q^F=RsM2zVsYe+i7X`7Jn;Vlg3CbVok)Z^dn
z+rOAQtWhPB&q%7*t!uV5fkb*iHyse}AE=zXEsC;y0f>M&2=X(rC5)0$=MaX+HO5Ih
zUf9m;@^_d_(}~W^mdI*V4y3TJL@pW-QMp+)WJl!m_F6IZ{b3wEl-n%yErM3NmAvJw
z;oOZk@En5;O@qPxTDb(ebD?dStvJd)!cLf_T(x*}b41ECn0LUA$Ig4gE_M#P?>LD1
zd}IJO;Pb{D6<wo|+tls-Td5>>%nRG9!xHkczW%lbnzouxxw$eQt`Ah7z<Q$w4P^n2
z;PETnGJ!pFm)B3*o9rQF3)^C4_CyjxB<0P`kEq>2hC*fz9Z!X_v(rg#Hofff{42V(
zq~l{ub}Em*Pc*uqn?DEsA$^C#ah@$vg*2NV!%x5N?mLbBEEw97YquvaQhClZ8g0qF
zCx=w(n6|<Z8YB}1WpO&pe)(P+rj7#iUCg_!hue(3>eR17>wDc|3gf?OC~WyhvB_L1
z*rq}%&}}^(<6=iIMl<)mp5G}jZ47#dW7-t9(HpvnaeVfIlu^A6kdLt$A%eu#FM(H7
zeWH-y8`!!B*q|LqyPe;T9~ET%zqfnXMFExp_}p`3c5pM%iVNkN=w~sIj%m?;*Vz_O
zxLX=fYxV}hJ{D=ILJJ#g@PS18JS_9Wh%e#lGy@pJCp1Pf2l_2I2!gNXFM<P@o&*R6
z+)VXukD8Igduw33Ap#M)+D6u5mHJ(YHC&N_4vgE@M&u1@9X7*7*RoXy+_XokhZ*hb
z-Ai&|P{r7GTL%&)3<n)FpXq~+@L8sXmwB8{7yi!-pc{2zi_^Qchk>qqB!tjR(IH4h
zdmM5)!VL>%KH~n>%r}v@WHII1<PBfDUAi6p@q%F^U{KY_?1A<qF3TK*O^aa>p3NWg
zLiOOZz@c0qRo=+%p}k?WKqk6<l8#)w_qU<08TecP5OX2&5=>7+tiQx1Lw1=KN%A&g
z7bHSWjN&vtdjg%ho%quWLokbiFZEnh^=&kf3I)=~2!yb#`?zyXcA5~RHkf8UKE&tP
z;(F(zhS$UiITdRXRtC5}z(R);5Sb}yW5JV1)GU5e#MsT*XFo36W*&^6&P-`=;kabN
zVVhZ-Ant)9sUEPB2-#fmN`Y$)X`3Bd=r^=|t|d&7ZYg|I__%17j7}X9GN;j3lubW$
zKQRTI-Y8iV$jSsD;lC{GW1bx#+FVE=7Q$VtjP&DT#9wEwI?V|<?j~6qn+@8RMeHWp
zSUvVUhQhNlNzx&FE9E+V%6QOqigj<(*;c-k)C{!wU!*u{LJlO8?)5@3gFoblwo!u1
zA982S;-I0E$8(7^nMt=Z1iQ{1)@W?NOVkMh$!6@%x(5DDf^8R&nfo2v1HWa0wU{c`
z9qXD7jV5)t+}&Y;Rmn0r4e5am43ncc03p&a*ITXpEj+Mz-wb&tyWBkt9|CujhT(Mt
zw5AC?{TAWi5@KUpElD(J=j(b8ukPk1miM~)J;v7)Uiytp-5dF@hg}|@8Rlnpw3Vgk
z#|&!J!sct4u&qiQ?I&|<cd+h%l)aD-yP?pi-Q|h4(Y6NR!7@p=7wv?$M%F%=K(5YF
zIa-ad=I>33ig05l56fq;r95~z*>*kR6s!$fV?;QNt%W6@7mBGzf-=;P1UWG{5;~wj
zNu+ZWFHI)id=!&e#fD)=DxvFi`J8faqXIEuGXt=Z*RfE>Y-eT)iT9&poI$LYJmO@3
z5M~{$GcruUAZBA=wK!q2_F1q?k7}m*8_c`7>!YK51tH3d9j$9POBQ7<#7!aY6bu`m
zOpHs(GzrtDSexD|x)3i5HfOQnPwdq7HMX&kd^>HkOO?R3yrW>)ay8>J4#D{YvC8Fd
z!E_Mh2Pu}kJ`bG^&99})c5Ht(^KCYo2{WYqPAOXtNgem2rZc6FH#BY}ip;T<?J}?;
zpDb~V=VUFD%^j-yna<6g$Za#-4Yj*mNFE8BsRc7evp;8|J(w6iHRe>2BMz)BjWi~c
zI9>fRk6>c7j)JEMv<*xVBJONj365Hwe<lZ4Z>8B~t-?B8hRr(3k16p#HBwa&QkY(E
zs^l7Ie!3aM4?F@J2h@Bwk8+K)hM6r;k7~A4;7@3Q3az$1X^%rRM1z<gWw!0`-SlkQ
z#|}*U8q*;?(jQ1suTF)&PqO2-4#_teFs_VptODi2ZFQZ840Y+Qm)e`528JBOy`azx
zSTe|YJVk@REf_>d$q5aK#J+!PoHp!a*>G~j7c+d@1LoXd#e!g`4_rp9R>+vbMVgdi
zx|=?6_DfpDp{dq9l+!S57^sJ{e-y#E7Q#e}oHntL?7@tT3w_~hp~svcM9C>3`V(Wa
zW#O<*1i>i;(5(d&6BJalA0*_7LPwrB^P!lDLYfLeI!b8;rDjkvpolX;0b%K`$ENpm
z4l`6@SjJr_Hb@o8jpZ>E2^ooXijx9lAnbL(r!kLMW<&S-An^tW7}G$<XYp*86oatA
zr7UTu!6&QfUh~i^DSE@QQflL-r?9REYQ-N9J#Ly1SqEccF0t9DrP7h(nP)+o#y1VJ
zG`g|xr_OfDr%7iAl&cQKwtt=#@7wnuNXJ6_-6m@UaZMOee_vtu$HRKH1tQ?Oi@KF!
zWvPv0D7@20d}5*~slXlj!MHPYncN-PHAauyqtR|(YL91_R<>lm<NDuw`nIV}c!nT{
z>95H%WqnMaz1_NTyw*zOMI9*m9|8d-C&j1UvJo+yxj8gLSCS=rzf5IJb^vhCsL*Z=
ze_Qhl8JNcS+Bo5bLR%!QS!R}U!Gi+uNw7_M(FoAI^bj3Q2u4scDB0F!9E37~2xMfp
z+xj?er2ADV0wLSA80<p?=Cn^&cV;;w7j-9TMv&jt)IbU1=IC0nk@8+1r`aKT9w9N3
z2@PYp>z9waS#yuXZXs_am?~uNW1g%_A<etpn(|{?c@rk(h+rmQ)tL+lo~3(Wj(07P
zw7C6VgI5_`<DX&Q+ly?=M`k7`JRFeGBf4>mWem7)-B|Y&Gq;fQ&@@**T3F3`t+5tM
zYlX2jeejAgaMsUk3=86jG#24lNyoV8$?ZBJUk4+`y20y6njmQ7+W3DSR1)W|oo_bx
z>p*!Z5Ar7Y+8)m{sA&^BTTsWW5Sg=P^X+-AB4tlFLyKI;2HHPI90qpi&knTSh&s%8
z@}!|--LgF6B?a5cE<tpi^@mmzy<AvijA{{r4hfXsqy%E)KzzW-h*;EjTcOzu3$!pp
zd`>^WZMX7lCC1EYy~C7MjaViiArN8H5zor#!Z9J!X-(jp4nXz?mffNTH!cqOjUJ~s
z1cDGmKH|HiKvov`JVI~L_;eZB@;s%FWN86YIK`qnC;o{X?4I$GBJH6hw~^_o%-O|`
zu*-gRCD*r<BOTlK#ITFs()9>P-eOaa4wheMZ;IKc9v--`HX0bK^}^FQ$Qwp-rOp`i
ze3^7qU#9`uxXO~bwoR{0-AFG<lpVy$t>o;xHs=+Vd)XkGVb5WK=VUKa0}U2m2V)bs
z+dDxV(**gWXjrKp7jmSUJt1om8atYXxpi5BFcPLA52t(N^v*Gb4+U`st_9GrfDZn~
zgBuY9DEaFW-mcCOI>mU_wW%(&KYtg4F}agn5!>2Dkg@4fl|G#$kB!)=7~jJF`$i`H
z2EA2yg?NX{giV^1+balNtv%SZI=0EFzk5P4LOA!|o~&fXN}HB&Xb@I7{!`f>y7#dG
zCcwOKM^iYBjhf;Lh_S;)cP#H>l89$>?4ZAEa5+zX?G*`}UyjD;Qu&OP9aws?f@aCC
z4gP)&SDw(<j=7?@x(y3en(2(<n%a1gKcxG*+Ks`sli7}J+3kE;zAVYMG*7l{xWo8z
z(Doe`e3<jnK6V9Qr;`MStft!x;2e=0pM}z_?qTN5Y-BaL?roJ&73r?8E1d`kX$Wl6
z09gnav`Gm-GB9I6ZEytc#1kIE4mF38-dAA-YRVeyu1y_uZzDn@jJ9=Q4e4v^1PQ3h
z+w6;4CMH%;G*7X%kOE<}p@EvJJsTVp?4OA0GO$uxSVCYv!7wml!R#+;C9McQ7@OdW
z2A&V;+o>XrXFNLCX6N?UT#r855$zJr1Cnz(ckVs?3F<Q*T{-?wa;Wh5W#`=o<HiJp
zDi4gKX1kS__zGl}D#R2)@+NDOY~@<U>njBV6Ff5ODHeG-gEV07iYFa9=<W%LAcOUl
z+LZ@^_5LaP&=~ZAN4h1FnImbm#zJOgg-&}TvX`E<jBMPJ+3%CiQU|iJA>_U@^SSUz
zAFYYo>)JCjP@l!!lJ4hBqS*F+8p7mC_ty1j-E^K)fYI4Pey?dZIoZ9g%<jE40WUx4
zi%oZbarFH3CpPpgZ8y#TO3imksod6DZ#-!;+I$VKy6>{$BtPJtPF|{ZbIhkju8@Yq
z@hpKSiQ(v)tso|}5U4%SfeQr(co2+d;VC?4!8)AW*zrVG5^PaE!)MnrHJ_W=d~t!Q
z%LaKw#d*g!QY|lOQq<MG{HZn&-4C#XH@LlC!b28^Qw{hxQ+Klt&NQy|qGsyK(5^Nc
zFVnw<cF&gW!4@hA=ygDZPRsr~Z@%)wrMC2s6htH<TBy!`5Q<DLtY`D%WDo?eu<W(c
z!`OV7VY95^WN`8+jaw~yK#^j7?nOF<y20M$5O=rmE$Bq1Wrh`C(sQ+guWL*xoUJSi
zS|c_*T7UuDrgH`grtU)|G+MX3ZM117b^Fotw#<4BXcuh7YF+>y&tH2Fi&ivC{ElQA
zb{8d3$MI4jhh0abQ(jSoPM<#)yx40@f_)hY&wKcEopeNd^R_!~Pd%lmjq?Q6ejFTD
z0hv^Yj+8@NZwe|tOv4=zvfDWC{?820OV-a@2IbUI34%LkGTUvn$jlg}q)X*|+2wS|
zEAFQl{R(uP%PbQ<GBng9Qa?_()o&h#8c2ij(sIu+V2w=7;6;SgA2=K)8GDxnkp;}L
zDI7v&Fi9<VeC~EoG&^U*c<sLli5VC!rlTEoyU~z%j*fee(}g^2RY9@E?sCIj_c5DG
zVtDDlog&e)4g?lyF|@+tX^lYctAV$!a%yN9fMW&4s>TaSpX^a-s)1w9uyNjY-peHf
z>U*GmlZJRYc-xsbu;&@Vy`Fcw-z@FPu_1d7i05@p>rcIC=cDOZc`+OA&Bus>8K$}E
z92z3dge}dX-p*r0DI|Ggf|lEp#>y}`d8R^QQh1`KDc1SI+Ju~IiQZ*+8c~}mJubRv
zoD93(3Cd7Y17*^vd9&8`m9G3vnL0S|D|}vwLgf?B2!t1yy^`+hymXk%4JI_(2F#g{
zRR(Y@CiaBeaB(Yv&xOSCBr|bsEqGUDk}$BRaw82=$5TAs`z-Chj=01ZWD94Gci9~T
zKJuz|&#N4qQ|3Ah*BvjF!FqAa!^X>CiRG5b+ed<<Vz<W@dg8UmeO+y0JX+6$UBDT;
zSH3>%kBlFd=wO+xYKS(z!5fI{l?W2X0e){FNC$E0bH(a!vsE$Fi%P=7Y~CgUCc-a;
zN!m6s!|AAlZl*fSZh7wmO*ZPJ^-MQIIF)3YX+uYDU|iw?FQE2gOc^v_YYwY?9f@gZ
z6ZR7L9LJHFjnUwI4?-!8t0CysTk-WSo)&9m0yal>jwKo66Gy|tHeMrAY~H$0Z0Av&
zu5Ps?*L%iaLOONU4fBpt+`0E%+s|0<IlWnzaQnF4i5h@vBFfF`qD`QiDd#WBx|vT{
z?qh5lUbgdg>h5A|iIQ&oF3m+g7*c7qk9KCfJDsS}#}Ct;r>}13YrS4VxZ8=zeJka*
zXEI+ywy}lBu63Uf@H5v<TFaX3_ip+f>Wv-7@-sIGy{37)GUC?rKO-xg9eCWj*4#&0
zBP5d@vOh4iU2t{H8sRv8UP8|)V;%K8vx^~k&lt6{x7m}nNviF!*DmjDt#7E*(XCqt
zm`Wi!6p>?3WSpGL-OX*n+%KV7YbZo{{SF@NVS0(lS&tgCU?7cPBqbcQ4a94tm}*#W
zDPRfA`mPaS<DAcjj@c-9B-I(dAe3Q+b@9HBYU3@{I8erE#F61VUq?aF)b9Iv934_g
zZ^|;k3?7)q`V>|%JJG)EqB1H<SuCLQd$7%<{G0;Sa9xUo3n=<sVQ_MlO+X$PCe7i&
zzj<}5hQ(i!XFPMZtDxY-6l=blsaq_(p3f`&sz92`X$BUKM{MLrf@Xpm*y{j1Hc>Y2
zcak1WdTqw|s4?ZOiI~m}1xXCa>j-9zdg*YJ7slrDA@dRq+^nH@TqhGM;<SyqB=L7A
z2S#>PMf-M@Cy9+5W@eFW>%j)<7%h)yj|PtVaJ!5nrUmt)O(q?UF10>ZqIzFW{t5(d
zi+IJYAvxP=-KG{F1ngL0YuNC@WJ~-s*2(8@J|AzU1QG2CxhW8J+gTIwajc`W(c{m(
zn*Psee5hct-LstcoC0ie`s5xUh8kfUK{e)Rki<yf(%nh-ESH=1ax%ZIN+m2r+H>lO
z+KE{H1T}{Pm1U{ZuUcN_^Tqex?lN|8*fpr5oD)j;Q%(?r)TEF|f^bQd@Q1h{gEk58
ztG3uN#BXLDEKbjnpDPJV(u1fxpBEw39Z47CqF3=!x7xVpmt`z95fJ7gx1WOa_4N&}
z=HZ`ax2wrH-iNR9st?fwg!x1Ua6~^walu&fc?+a>$tCs843&rYsGc8P?rq3GvDfN9
z9Q7VDbk%Ng*9So|t}*%~gUN4UR0w#KE&nH^;~$zO57`yBY0VvTMf^hMGBB$M$3EQ?
zj7yIDb*mf1Vfbj{SU>dUWX7>nk>RysIi?mH*JYnQLN+4CS*EfP>eBsFS#`N_>HSL(
z)oY*X-)<Vx2?9tod;;Y;&p@A)h~&i_!gd}B>A*|`CFx7*WNiuT5XaaIYV5b9V8l&7
zK*a@dUYW)A&bOc;nE4QB9~w6Q5u17@GCU;1c*CAJ5=!TZz)KZR6IuK=&#zf^&z#2I
zULDtB%n`70;p^QMkrKt6cy5k}oa=nWZ}WWGz4+Sx?dS2%XW;1vxKM8TVSYQ>_uZup
zYg?G@nc&-}zTCm`2s{iu4Q4hLL1NzTkajJrv|0fD2RK4$A^|u`Rv;mnDJ4rT18)%<
zF#1|6)#~%^sd-TA0!!U<-t~gBnFH*ZjsboNS+vsUZVC~y<k55zxSy{#JF&JllnjI7
zG9NCS!(Ka51aSS|<?}VS(TVl%R$Xi!oB4Zbc+3fS)>Oc)CM4K_2w@;l28+@Zq)YaN
zTVWgL*-dBPp#wI`=Sde_$;YXK->)8)JWjh{E)-jc5%ix3!vf5Dr6M?Wbhe<W+K)*i
zz)!+|R?;DVLr6f-K-5Jj&?3Fx0`{O5&px$4kZV4W#xN5}p<g>Egwil82&Du<3+>Et
z&?I^ci{a;-C_|x#5W}ah0L0G&CIdko;0j~TrvY%zOVl_bd!F3?6zk3`fWSf7$gn_=
zDGW+CqbbPm#yIH3!d7jebu3AQI)onn^Buc8>3O<kk?E=2U)N)c#{bD@0%um^60PMq
zgj-#wV72Xp+i!IHFnz74F?gsZ?VKS9LJUmBKV|bL^dYcVP?Y1G7>J12W0=ntr!9}i
z7Cul@nnRv~%rJ#&NW#5ntg~RMW^6=DuBB%iMITgI*Ou=s(xrkS48B{55RCU>9;H9y
zaF%kEc$x{I6{!%9IX&A=9yq(&s*>DdoI5bsLGvnaONRqH<)v&d85vH<!J~g}+uqE7
zQ#b5VAlO(f(wIcE>ucM5g#6@P3&|oj*v#&)^+u)8ygb!k#M`|uw&4c@Jd-A065t@F
zK+*1S{2T_Hu=Av5p<66vCg7BvE`vu!)gk^LQLcsT=Hzu7jjUKwIRI?MU<&c9dG_7V
zAy;q72w{b=25atV@cTl{vi>~l>2oh-9x%jaX7vWIkBOUbGO#*~amDSi5eU7o99}7W
zE+HF{SU2_95sl6k9GqaJ!H0--N7R5klV_7Lkn07V^3q*|Ynicx1#FjY`19M{bW2I!
z6V^UbqF`~8z=@vuf^mJw-z867v%p2pi$<e~FfNHJXG<G4EXGS{^{LMtoJ%FlmcJt@
zoBGHkTRJ3b4o>wm`(^;c8-n0HPt%N4Bv!vfU!;p>N(qINocYDAnETZna@AnlTnT8N
z@78tp8`Ioq8#|gRpAi^oRNrPfj){Zyq?JjOmll{oYMUzb2_w`vy1xz%1X50hFh<E1
z56Ag~uU?UeD#}2<hJ>NCz;eb>5<6u~Ed4#b{4Y=0A3VRLFhQday@+{k*kz9Ym}G+|
zlYIi^v-Eg&M3(C-c8Fti{-K$gQG+q*?E2dc)VS}c)$VyxjpogdPnTKBme^EXRF|fl
z9cN+7%EL8ZY4MyJIKcJmT-BVuJhM4`OnrT8cuM)WV<<xhq#r3l6Qbj>jca5i?_W#j
z!&KHv$t_xUma~F@ew#Y7p3k1b9;W_jvA6DDT88iE5%Q(r<;lKCK7mWuwnmR@UQ$a>
z<RKdMh77Ke_*a+FR}ALeo!J*t$q!7KfyF&da0bjwAQWloKa>+B(XjWf{5n%*7plbQ
z&12~F&(mHgeh1YiI63b|7!uR0_<8;IUXNah@ZJ|!Ov%Ky<GpsZS)6>W@%g9Y>EUI>
zg@znsg+IxmItry$`7=Zz#G4iq0DViJJ6Wr+Ef2jr2kGpCKnj+W^ji`wGIKP6yh$jF
zyI6uHkKOi5!ZDB4Kcv+jh|%c$zek-r9s?GvllV#N@_g1)=BrAsI%_{sYhiaaDXWir
z#a&5KQh0i`k#EZj3C6_2o(=R#H?!*~-T&G0*R^_6E8i0oeCQjiY))7?s>XGJX~}le
zZF?wuAqzZ;M-iw^*kGijoMZF)`PprNG>yNnHa>OSqcuA@h)&nb%UM`cEP`_=nuu^f
z#plg_fmu%mM6E;k3DYS%&Bh^x@T3O_n`Tp|@0GC|J8olSXZ2F%z~kRI!-{o$-cH@d
zt}C6YLwoEYg<9f`Fm;+EVtGXvv>lt&hN@ztxd-FBXPzcoNd8^Bb-EdXH$F*(B`Ji8
zS`mn8c}o9efV|j-fILD+MiKxv$w?meWP%E4DFgFBZVi%{dYGxf0jU<0A}Ld_5)wY`
z_+<l`z#J2ks2P$|4o`uBMDyj94I@4`x0;9geRf;Hwt@l{<54{+x3)bBC__smAqTIB
z_Mh9&<MMZzM2zMFEPXW8dL?j>K@m?ijZldMNflI8RTWCxAYwK$OwyDzw5$;lH83<O
zYXORbLqk00z?!ks!sm(ES)v)4lkKoDTJb3hqaOx5i;PKD<R0%)LXJ3uC1=S{rH*Lq
zIFIQ2Z5!Yrxk>*V`(+XPI$$*CVFC%6yUg_<YNYS&>UxRRv?ed^x^tAbhtT!8lTDxq
zZysL6SC<eI5ul<dstO`yT4pH;8mJgyVku%kszsotm;|I$A|WO}S(wtS46`W_MMXt0
zKzd+PAWA}EXcB>#x&Mb|hu`chM>^Yo4|Z&{y08q5o+Y)1r&o%RjFk+b%U|n^ZJ}BY
z&1MKpa@zaIX6b_u3C6g;x_?L*{?;}bCHsWKFwy(v^f&lzkXn8FBGy2}?1&z$$GIg=
znAa|IZoTl)OiV}a%$T48ilU#bz#-rH*F`p<9tT}%FXAS}+?yl(5<lYpy_fCmt37Fw
zzbhx36ZNbo0iS=prjFMTr}~@=Am`uQlb^_&`&h5#f$>M>+WlTXZ!qQlJ3D+2F+h$*
z%*R@Y$qlK$U&5~0HJfmVdlNtOj!9&iIlDWvo}~9ELv(&<G5yKBM9pFtZE>w~0$)w9
zWbxP3a6Y52a@PJ?k<_=t$nd9#I}gce{TYx4nrY|IXJPnlDeYr&wM5fH3L6+a(onzj
zkjY2uBOwYFNQiy-6y$;&f`}3jp-O$o^5m`;yY!y}!MB9Z`3Lj|?g}tbgZV=CAV8ph
z+z1c!1oVm(N}&X<_7M7TaZO5@8lR7xD;GbAVFIcW9fhGFr#gB!zDNfGlX=8|7Zxw{
zhwe{nh9K;M;4y@5H)5Yjuz1r!`+t|er5-XH{L1-%m+@HQN-2N{V`D&>qwmqtJfEjb
zX)|0Ri{MPg&JUJE=UxHa9YdxM+l)Pw87BbhL<*5tx()o^fWGi_U{cyeL2392iBQF1
z^>qI#{io>o9Wevc=s7niXebC!yHp~15d`AKG$=pDPhhmAg(b5?4WwInYy#LeR72=@
zfed7s67UI7N;wpq?PR1MoYBP8oFid0lF_z5b25w<kdSUg45X*}1;nD+j4A6v{H-FN
ziSA6E4E}dy_W|gS%kOpprWk?}YJz5<NT?}JoSvaQ_C0vysC(>&hXYS2U<N2*Ijy?y
zVa4{Hb?9=Y7fj}B??Xx9$Ec=B9G0OE3vz=k2UrJTnTRP0WnKzI$~Tmk0;Un$f-z<!
zU2)3^zCwEVI!E8(*nOag=o&$?YmS}@jma0A6d3CQw9piO1Z58b@W(hg2T4hgzE8Xl
zau1pjPx-<jLQ;U6br&N=p9%b*&08<}OK%|#DOX92)jA}C0ID22HLn+Kx+uX7Hoi!@
zrbklH2SKI%5!rm%plLuz#4J$=VE&!w643&0ksnbYbZZJC|J}@pqK|W*Mu-{j$&!?(
z@P~{8s1kSPLO=JyWW7J5&B5V(zj+_G{Cyrj*>6SjVph(k{*okmJ2&~8_KqZU{>#|K
zI)V(H&sqF2=$%i>L&t`Ep3@EA!LT?&`*fgmy%2ZIfLL1(=9}2Ruhe{`d)L7EEP~{h
z-iQQeYnovXD$O6M`oE;Cg4B?E#3mUw#NSH$9N`Hp8t0M?la~S~@p_91{6DAdFnqK<
zdY!_ULw+lbFQZrRr*lq3MYdrTGFDkX>_42_^*j5-FCqbD9PRPsr?>XI#s1+jGDBJ0
zG~2-mfQVcBCUE`infOm3M$6#}ziG)Qn+}a-*vWt0h%#aJ<g)sV(jQ-xDIUP#m~oi>
zhVf3>5Y;+#sfP96ZG0jQ5SvAs)HJK!*2nUr`S{pZ_}L1UepuMJ*zDfA5KtP=ZHt~0
zv>+WU@}yNF*sNToSj)ti^FKD|jlP3B2D>QEvSM6qR58TP8djxZCn8#HtZlz2X?B<1
zYX9r6sHGX<g3YC=q>7ED<zcQf-yvz4gd-<-6=;=AK%VWgkTaJ3UuK%phwetlsS(<)
zB@)RS>lAfIw9khA*0x5^Xdz1m3}3i%(qo<ABP1F>*_{+KfLnUL8s{N{c1ErV0OgV8
zRtoFBvGDMFHV1`z&9_mxK9dKNdMwO9Kx93hHdQ4IQS47?gq~D1Qyh+*)_IfkJ^}T5
zo7il_=$_DH2Uop-%qa|1oHsBmqb1|j7t<U^UHE;oM4N2U7*mwsb*U&Ow{H~WZY55W
zeyHs)HGA#IyBc9kdR#%R9_5cL3dZ$<e3DiO-qg7IQa2gMn<-*SmPSAMw_aL?IZ<!b
zDPfYn!Z=?6H|RACh}kEwrV$_}OqLBXH4W8P0kqxb@o2<I=Z`3tOTWX4^Lz3i729QM
zx-Jw!4i;=EqJyb85sVm+jLT1Qv}LD*&VY%<n@hW67}U+x7BUAAWfb!fY?BYc#+}=(
zk-WTGB{oxffW3PzsC;qmBj^0}FWFe8WFd6LX;2cwx|ke?sO!qQdU|i*)UZ*93-@4A
z^Be(WeA{~)D+A^^>$Y-TjD-#qG!Igz*D&%@XlQXY>aXr3(+;kuAw{eK$R`<7pPZRS
zNEO60r-f>T7i&BR0T7f0L{XY#URQ*-#G41HUv(5cgKWOZdp^cFEmii&6^&qZ0GR;s
zrbh=zSzVMR@3=On3K?w@L^d~*-vqZOB^*VSadR{dhU1Jmx8E6>*u?4KvLlV)DU#AK
z#UYfNA_!<iL$t)+G0nm#vxrgTq2;fw^K>s%a%(YadGMy-G`7^XWIUZ9GAJ$tkG~aI
zWpEz7y5%*Sy*;d(-rH*!fl$DaIAlp?`$*fq8n;R6XVpOiFNyEH-y_oKXM#c^A;L0f
z*bcN1F{g}t{ZWINo!O(Bl9@)ZKua+dv27^^G)zAUBEa3+s^QF;%kXGCy!O>Iy3lrN
zQ>Qf)GocVc@?n7G++74jz%xX_P|6fCCK2Dl><ULb<z0>t#zXfxBw&`~Uq_rTI!J7=
zH-l?CqDTfX8MX{SbtPD>i0>N>8Ov9ukvgd|FloGb5LFvA!?^4aOt?E(3aSVm#64bK
z8}E$h(+*r%!1@CVztAWV0~L$5*23M7)eInkus1X&rA&+3NzpOT@LTQMSKzhT4{dHh
zQ9!W=K$1oh7#5DrUr%c?jBVGs6ssbo<Fq2p={X3(H#hH*Z&OC?z4@1zri*2|*OSQA
z1x*B0(-QkE;ArCKHZ7MZ#^iFd4!YboLge-&O*x)W<+aY;BP@qmV(2@VvLG|8m!3OO
zn?nifv8MhQ!fqozp}@LM{1y++4ID6M&1SIMd~&yS-Kz-iKAm|9>ct529wd)Fh~4Vy
zlcw`kf;M@bm}hmB5L&~{tII8Iz-4x$EM8ZPlyLV@ZK^t5Nl%KxbEdE~W4VVXXtBt<
zTubYG&oH5&V8lu}zP@i1o(_f}Cn_O1@6z|yGv^xZQ^~J4wc=pG5TiXNdKmFMj`&18
z8=J|8;@5ZABwiuezn?R4OcWPH?B#8YY;VLJaXrT!w|eo*&Ftx6OOca`K|}>wc#>0Y
z^Tf%<B-TZ-FuM&(8#!ZDy+t;f)SkDl*}~QH60<~1ExJVxMA0Wz1StXzOQq6XjX>vH
zq&2gn$Zvi7w-pDw^kMVkd-c6;F+^a*F((1oiKbQ!mvl{NZQxl<4&zG<S{NosLvtu-
zm(eUiz1>$w&A#^T^d2v&_k+veW3bWiJPw1}{k#zuC!Hm?sG6bdpYJG+4CurO;k3Vv
z-L}Ssf=nS;_mFgc>Rac#>n`&kTgn|!cz;1U#J<4AD_Y91Pb)==$|r8F-)HUzLE8w*
zIPRd8;8<xY6cq_NJ~X<~#$%ly36;R^Cbp28y~iYyNBAm1*XDoB7)I9~HYANUPuRWM
zJcsgK+@@k{#U93}(ol?%^q+KS*KVl)auAT1>o5OL?{6=8pQvA-%HzciZqYya>7=^b
zp*BXxI*2p!39}MC(K-F+8==(A-r1eM2gcE0LE9rpH<X#J;~A5XLGXzWU^vwyue$Px
z5)g#VV+hyVGAb95l)?E?+w!rnY>+bqvPE!9DPa~1AEVHv@}v1&?rTzpLqghxeo6py
z?d~y->g~xM&dLF7R_y<(ApWGmBw<dq0nB-pmWf4%v6;WX|HOPRVV#fQycYBrpJ{Q#
zL`eS2PZr|~xI{f@!z1a0=juKJ{FomDqlx>uJixmK%dR_M#M`l61iB8W{OkGq1@vD9
zkjq>DPM<e$+3Q{Y)7=+xpNU@Nz7A#X?RB5-KVkhQ_jx5uOpy^G7f)Zq-ukW2v!na7
zG;!vJN`Q$PJHY24Dw0|PSxfa1sz_=oiD@_I;pw+}J)JssKUvW{OMs5D?B;fZt5QrQ
z1U;>E=i0rs$MnZ{h@W{vJ7OsCcr(%Zm&91CvxBy=Aruru2<LKRPqZD5q{NPlsH*ee
z+ZYv(bZt}jv}CfUU+vq^A<X7Q_j`D=e;4|(z;F9gH}EzVu?!f!hl4jCY5BgtSG2OB
zZpK<1uq6G{i4U_c^^tF>d+5ZV6%QcmAYh9D4&rA7AjOeKbM>At;WjU+@(TiOvmKwU
z6_C_e48mqVh(p*F__RpEhGG1&`ctF-0W(MHZ_ZS%2cYQMk^|zxWGhM$Y+0Q2M7>PW
z6ZOMrM)xABbQUI~lQDY+=?vwJX|J*fOr5XYW|CYYWANU4;1aQm-KmX+cts?e&+BLp
z3Cx_fgr-!hc}L!k7zgaNihncbya&ZphA9AnGC;|hvm(~s-r$k@+lzBV<Q9d5IPlDI
zpddmFaweLN;w`JPf<Tk}xC5EEnqv77p7zFVc4xjFjE;CD4yFeP@4Z)U=5<N3i5KcU
z!Di2^<8!h7Ii99z<&lEl{S6|c9iHFB`64q8hKKlX>Dh?HWDPOA_l^xa93hxS0OxDH
zS7%7Dg+VZgr+x~`5ADV!$~^6U!p0Ij#S~h-*bRVuf@Uw^oxwVEg=2Fsg3;gApex``
z8ZC!wgf@EFCi;r7ktS?|#F=In;A(Ve5JLTgnj)Z@+~~w}zz1M05DHs%yomol<^GC>
zqDGH4YA|yCKjzaWkjvU5@!D}AD$)n#40gvNgy1_6gdqO9uINTFAMs91D)+`sDo5H-
ze3Zfteu@0O3f%}k0l&ziy@+fZ4auO@o))3?e<pl`f-9!uTl0m<lD+Adv@H!1Ru(>A
zDl}&=*wpUU#{MOrhkOYKpI9g}0`bwxnux~zl9^RG#hwfZ!N&NICdwHm-$0I-h=_=Y
zqADZt7{o-065x1)^-RFV$rvHEh(R~2_}tVY$o<y4CQw7;%{)l72$wl=BVq@kpuNHh
zL<jheIGw2d2s~^34;te)tRPUG9ve-<Jq9*-4#w8d!VqeM>SP)|aSYS+pw1+zpU0{)
zQ3Xs7Q-mh%d;zti`59I=(uK60<mlM%_sQD468lDi5+F4wP{8<0A`h<C-z)p1Ub>p1
zh|-_yq_an=L$e^Y8_|ko>{bx80T9C8t4R{sx<^=w3GNT;G7Mp=A_%DNe>iOYf0PfW
z`fdIlhRJ_VszElvvvR>C)z^;Lx4|2P#16sQ3nv_H15Gj-X`UMX7l|RGUs={o5BO+|
z4>e)=|I?`tX8v`m@c!O4{0qNAQPX}`T2<LVs-);n=9pAJohgJuHg`DSiq{L_zH*#g
zwOt2-Q4MEg(UPV3q+6C+1%uj^NHqM>-e&B?1k8G5cgK2>i%U7|Z@7$<g70@7XZ>2<
z_(FnUpxe(-;9_wgc&lt5!;3>@VJnJSKM03ec;%*%&KXD<2)E=zd*cv?AYRyp5+e^u
z160vFPO$3}MppGS*I(g&2e+LkkBke08e?(d);%$ncyZLp+|!_wm5^SRt~jSH6Ystq
z#WaZ#<;7%1_*4m?MTkC=AaTnJ0}q@+6HmG(6$fikbv9>=50kPomsdSW!f29CpyasT
zSWT&g!(;UqkYglxVa5?;39hgsStdyhBzkwvvC_Mtf&CW65S)zEtf=s0dyO&dsL)gb
zzl8ezSiqZH9EU-RH(|t(h7wE#glue8&t&s$TkYmnw%A08+H_})mQx~Uy!&x#FR@3n
z#KbPz_q8wQE)_CHWHfmaZuj!@igPhOJK+p&RA`?@cWPVA2SxZ?k)b{Fc)0wb5i|%(
zjBq?rrOhF6)492=Zo9!}k1fK5Y9zz>=>uw))R6GZ{`=d;_3AY~X2!0R#mdZdb9B$q
zCwk|C+{X9B5!tb_9)!{&@v*Wl^DB-br|^4uV_ZIN8XZY#&PG_v>-mhfbjpd$p8Max
zr~Y^x_xvjLL)+^vFoD3d-X~)#L43plm({LK;b=Tfl$7Eht(rGC;Fe_uSW`>$3EXkt
z^N@lUmrNO=b!>d&f*=@Z&uU>g1T2#e7Cspd#HXO^t@fT?hp<#~m=1>Uk!hI!1%VR;
zEkWUI?5$$PK-G)A7RNzhDIg$$*x=(s_{}tlMkBMl>EbZ1ue~1Uwe|AbpCY*aZ>Pdd
z)8C5JZxJ095h5`ZN>dS>3wIM|gcvecM#f-knZ>tuOlq_YFTw|noZB)_+K&xGT?0jg
zxn3t1LbQ4Y`>bwR+^>On+Nwp06&D3Ir0CQHJ@0KIIYyXI4SDX19w%d^Z0dI3zr^p;
zMVY@0V}$Jj*2&z)8cmLK9ErM-!%&=VZcY6-$E@iWhIx~KXsQ<D2G=bm0I8@39a-R%
zN2X9mPBcED$!90tWT4A#i%H?ZuJbVo4Us3t9a%NOcw^8Dt^&}wOrjCWF<zT~N*EBv
zN3Y9_LVJPPrY{=}U@0Z4hR)&iK-Qag<LhQNaA|Xelh@f9i*{&t#>i3(K|zQtQWSq&
zAaC${w)lJgIPdzf(#5^hIUF3K8mM%@XSH1cvg=$#L6DA0is22$W4Rbt2+7JhaVQhV
zEN_-aZ>A7Pd@>&}tnW{?c4nYt2SW&nSx(Nx@ZV{WOp`;^eZ$`MPHKH>5VmfhUR*`B
zGP3+03GAYjqXk6vTIaV`uq2zo*W!yYvT2LX8ezALgf){P{wEsk^>Q2}(-=3w91{aj
z3rw(RghVBCM^k>%&%fjC_kHr@E5J<O3(l?k2{FufZ(?J4NWyKY9k)FV+e;hXh;x13
zyX<TQXw5K>bB)*j-$&gLJuB>43exiPlv*w<0nWtOs1{O0P=P75cK7d!m@B?#e+({W
zyjP*c#W4<`W#*d5)v=7~0mD1;>-QHIe9K0IYS<3r#iM}NLgkx~V3D$LYT*bgYaF+W
z&BrkL5xx^)4aqggO4e~ZI9%s6aNv)Y*uy&*f(hrNz%ki<uSWHd@RhchNE|4T6Lx1u
zl5_01o-Bbeu!XGH#FOHBUFdyHuvQ19Gk1LhWk8Du$P1;<bh@B~McLWgUOMJw_%NnR
zfx|6}JV&XTO+PwY@bm9Khes&r)82isY*ZQfhkS30x(0VXL>fl~Up<Z32_ZmoL;Z2@
z9}i;p_e_OEtPHUvkdY709T&0(x|l9AF%chg;!I<-HSovN!e^kOR<6V(k!+&QaIe$Z
z^vZzL%mF5T1Vm?#<4N3(Su_E3F3z{a-qk}XD`|tkpqP!3qWf|5J0YEcwt=RXLLe56
zrUqcul|KG5XgeI6(XvZ(ulKHMgH8fSe|M{O>lrOUjlurrxjm-HJBz#p3)(H^Z!5&8
z6RaWix<wX}D@U^sks3MLG31W~^!f-L_T%!)C`AhUT^kRe|8m~HNPLC%ZVrauzmJcy
zbMQ1E+fI(nByfbF5Zpt2a`$(xdiB|ZpRnz5%)`8cKW_`U!OeLClJ4`a%xugMxo~*f
z#i0Sia(?bC>o>_C;cv?>Q{`{xp&hqrc(>-{At$2GVIL#n)u83uZrY?a$28LwgLjU^
zn1fzJ-@6Ptx~fLX&l8+Fk9`X;oZ`dhX*|HBIEaE9nLPiNQY>hebGFD|X~WyFyDBv}
zY<-2Yj~U@3qA9NnH8x`_$H0})fsR_xrMkd$)~35*NkOb>bcHY5()t>?ZS~@<qp)2o
zs7rJ$%;Iap6~*e!8u0h+$j+~E3%XxJJ;rZ_Ne=<;yZ*f~*|L)<4mv=OEpdd&WmB9b
zt=pxqu2)X5?{d3`V(2z#gd8?R&bm#~MbrIOR6Tg${)_GhIS$P>Ao`na+d!@9G;{TC
zIneOiW<$6%ckfze2Wf5TV;#{CQeaf5l}GO_BGfqZ!?M%eg>wu)%H2m?&4_<<hx<4i
zx~|#dyDr-&11`qztC4-p2<JwN$J@91j6ZGMp~(D{-=z(mMJuh3Gf^7tes_-alw$B8
zKt?WB+1xL>Z)Nt+7h<<<UkbHj-2)m#lg8J7npG52N8Ga`(9nr-m(8Z;?#pGncm8wP
zm~7dO{rX5CMW*5C9CPK@Z-J4-uB7JOISl7sx#_8$$k@jBwp(TEugvbb+~C!WnyG{E
zPeXwf#!)Q(^Jj(}cZ256C!r6{S2cpf%n@`6QdetXh14>`5%hb`m*EJMjihdC@*qkv
zp6{Jgd1=?CpBxOJMhC|j!j_p*zCSfMsnP8)XNa;;#|b``Oy6UmfgPO*5r(j-9z3DN
z7Rzlapduz?5AAwr_gxc|DfdI6Y+FPqq+=JC*w5UpLtDG>fzSS_wb5Yt*$uH4h4S?D
z8V4_%<o-%E4KU&L^C!V>{CRl&joo$rvg^CMv4zQV$@p^cjgkxvIc!pkzj0C&Ed9$I
z8{eLoe%-IJkGCM}=^*%ETLq!8jD4`<C)!=on*zIN6|%WBC7v4<F1X<0O)^}8^t5Nr
z67L$@v%f3CDYgn{P>j^`%2QTEmL>N>^{r8L<V2WANY*y9x+A?$0P=aqZZCx|z|+%T
zf68n%XyRe1i0;M;J{^90d-iSHA7^j=oc?cx|9862nxCDNKJKXb@IFok?*C`y{yyJN
z>-&a;ApyKJ`&%jaewP04%HPqo&%FG;vdlg&3v^J*kox{n<z|0nq4o`UTlsyTRu7fe
z!Uw-9N3Z2D#N#^0Dvx=2^8OP+JZW+7t!`8GH>o*+V6VE!Kw8eH1t52(Ri96z?YpPr
zvVS@s*Y_Qg+h;Cy53{ZQ<&N6Gnh&CIC$k7+9CgjkOIaC6HIqq>d&K$#BQMPn<V5>_
z%`ZHO{c$3T1R(~pKMQp1i)u$W3fFE(v@)M9hxKvjw5Zlu4SbjMO}ZYvYvfilHnG_P
zz(eiY6J~7_FW|AYER(yw%$oy#3$2TUvX9$jQnXT&u+i{xkb2w8WwW1DtSZNKk2Pt{
zLT_6UVIU+B5aPW-{YLjFpfx$8X(#h@yy|m4wm0zUU6uYr@0_)fAnUdUWS*09Jtf`d
z^sUwAav<h|JARZ&2K;x@HB8c;DFd$42~UAS#k6TQkm1)l&w^(|Bne%z!}4P&HzeVn
z)`3W+qHJ|`AgumRjlmF1gKA_Z>qJm>h-;+(#HVzZ1YfKzr&f=pd7Q4caf)g0LEq%}
zaYnsnPu)xEZRov<a>L8OtEIL&nxHK}aGwlIt@&G4w)`a<t-;9REJzV+Ak1SvyDT!R
z6)bLSkW0B7X-3+rB25R?8WOd6U!{IBC%<MS;ukxz<CFSV>=535#rZAXT{rA;!hW6G
z^47NX41MXL5=jB?&rfUW_@5)b;eFtJ2;@W9;}x=#Mo0)3^kk2lNpF}iL@8@#wdLja
z`!VmMSSM}EtfKjTnBzBc$R#L}O*!~MA}LYxK<hJcPRz8P7CCe?;dCShc^AgIPTo+#
zXR_KB7TOL`4ytB1n(?0}4$91K<(m|Ps7xK4d864rlb=nxV%ENmj`K&UrAM-)KPOrz
z*r2^;2C2J(DJiKsK&asv@q;vz8v~QEFtjEPIOmDRQI~_7t+5=iu*V3<%q<~SaqNHC
zACZ1m`oNt0Hr*Z13?PJVkLAi%YD$$}htWzqk!RbnoP&g2rgMG3urGVEXEC<4F0v2V
zgR5v(<yxIRb<m@*y9+EW!c*6+_O*v!0HU?_Yn}&3*~MwTW66*`@}ikTs#-JAM_V3*
z0rr#f-y1X}?{Qe~*#(PnRE11qj2173c)kOtd;64ddFQI*x%AZaQ7}#MbFZ=`F(?c;
zP)q>o>OA?#Et7nt*{x=(-!5B7jr08C$-7vz!=RD&%XC%*;{+(Ma)vIQ?l*=U>P`V$
zDh_@uMVqopOnEV%pV(#eUN&2r-2?IK!|kW&*!=xPhhc+wd2((t_!zO@v-s)JTE9~D
zpC-*$UxDeN9=oY8uQ`)y9>}lb!$;u&P!zPp@8V&%oIRxf5k4<R63_8_q#>vn62ti4
z!y9p2u&ag5!<KueawqZV+8$eQGrwI1M;FM0Af!AcIu#+dV)hWAP$#BT1AUTV#}jV6
zcxJV=smv5X5EUyLui2S4u6;{uHKdjwMdnnQ!XtN9@5Cm>`zz0?lSyUifwO}`cjLQ_
z?M(|<)WIPTv7};$4+zokht(<c=2e9pwA;jQh=bNepg2v(5@eGhYZl*j?fW-n)qgo-
z)A@GuN8i%GO=l|4i4ozKSEIn3NqO3NmD#?|9CG=4CyO~U>dHJD65`^GvdpmOE>&hO
z!!%ucSed+i_h;VnMa=m_bKb!nu$Nw$C|yYB(2~<kd*~CeyP-E6SQjcOdI-iA%ZX_V
zWQpMeUSVrZszvA{WnD}hX{I@X>P*BFFx+)Ks1Y|4@gVh0bLMxX@ds@2{nUda8fIUp
zB48Rfgl{!#$o&4U17+y@_#Ez66&m9bK%(Fl9lf2J4mHP7NwXdMEX=5eKL-=LTFyA*
zIOz}eLDT^{NCF23Xhqq9AVs4aGV|zDV6sEA3<!9PQ8bF$1XJ4Kc)c%;O|pY{-|8_u
zx4Rs3-k_7zu|!nThx9vSzTdVHKOAG{1T7P1ap%l@mS`F&A2{Pl0qot%4Hb>$OZa$C
z0Wlw~*!dB;5=hMH1I91HcfvY+Laon#PK(fl2_hTcixGaGTniW3CxKCWAs8ysI99Is
z<lrFH$84RAO54FUljGP!b2YLP7$&hX=)u&7W;*3}Y-Gr8iMwVoi~~F!v{tQixPcTL
z&gW)mD2rMS-jA|fe*y0?kJF8--Cty_Ca5R$h6#<%e=@-Ylk5i+_4wd5)*pt7C@dEY
zEFyMisnj9~YA6C?eb&K-?HqvvzD`9SmV>paoZ{yuP3f_fk{uJKi^N&oK72eg`gdW^
z9Q*?&Bj*0A`9F`mbbj=omh3mZxr1`aOQm>(X{r8RK8GfbOb)6dB^$K8vjzP3jZ#B<
zYn!(wvkdlcCzO5DAC=@U@f~>h!g)=6Wi{|Oa||M53}0&(9NbG``FD>Wgf1H9+3J+o
zX@<-rFcG{i2=2{Smc5#;8dN?y5N%`!KKE9+tH;fwbw)|?b0=n;gP50u<a3d_$v$$S
zs67uqw=~iQM&a`E!1aph?#@XWP(heT)@$ED7-<L7{ajC8@Jj<`2dS<YcVanW?6UP4
z_9kH-e_5|7GReMv*e3bxAIzi#(EQ(<@uAAM72cn;Ly!>bC!xMKq`qp%+z-UQJjB3D
zicE)KH*s*gj3Dq57b}c{h#bk^Z4H`aE)73a<~p~#JbtG%p89v^c=|XQS>F^yK@B#W
z6P~)wiwgylhN*)n&Z$h^9GJG!$PI4jBRkEnpNq*%Z%)HWbH;;Qr;%F2eXCIMKf?yS
zk=qJ$QZbEu@fV^t_??U*2V8UOi6*tRAb@2xq?q>MlQ9Nj$#Vo6Ml11+Er`*%*gj=U
z4{*I=_7CtmSwZG7KHiX)8ZKaje?jcEO;>y!F@=vsQY^1kV-634Y%m!hjHL`PE^~C1
zjTm<df*F`2+b{*Rx+vH%%@PC_m`H6twsRI;F|%Sa=Rqe)gs~P8{X;jqC+LL+4KsWh
zs_N1~hsV1<)8wxNDkMVt-ow)ZW=;Z3#ZiK)7;5KwudYlqQNdz?yVP@j-tUTn6KxYW
zp$C%Mim#~9xQ8vcNO*$}y~Zn7Et+6owYJA{4D^G+9lxSSq9{n-KQl2%Il!7PDG8GD
zcyy#wNACO})fGJ<>v(Z9y+C(%Uf)0N?899x1=2CO#pp;UHheHoNuhRm<jM;47=>wu
zsM=DD+@Tr6@y@=7wo-=}WFS5-@d}qRhSC|He^vDwuThyd%tmK5nyekIzT|nmt~j1P
ztxnH4smR$#7f@pH?E;~(r-MO}jKM!ttTbLZl6(jR*o(Brp{PiH5NccHOaMzjw7(3i
zE<lDaLs%>B#$TJp7OIgd&>Z}v4~N5(&O2FJhK9)97;%YNf$hiL4A-k)r;!pO-DCZx
zIscYA2s7s*%&enR@@;sjlC#$l?~dq3D2*OE;O!*xvXb;|uQ5?~F6C7fW~t#<D~(89
zWDYCOzaPhogIbZz6MV-LBR6!Vw&ApRd1HP4xy#7(D1Dq_;gT}oVey@x6h-0)@Q52x
z5O&r-#F~_PFXY)<!Yxho-18)=ol<ajcx+w+z*c&(vZ!0Be#dNY`IIre=vQ5{GM$F;
zLZ1w$Rp~@)X8f$3U|aY~RDX!{zX@9_yLa{D*kS71p_SJ>dP)?LG7ycD9#21`jAKfP
zni{!I{-OoqF7C#5lUDgy*5Bm@h0NReM#dNBUGRTuaGmgzcV7#5xujhJxwGT05`%F>
zCG~v}&W@WK7>3C?#Wdvkz||c`+Ye~D3y`F9rwh2>7WX?oSvF>o+c!s{!<RBS-z-Rz
z=<YOL>coN0>C1q7<(VRA!-K&PToe%ma8N`srLi6lcw>v2ei_5F$;wZ>Zz>Z+Won9u
zF-wA6Y2mhgd){|OUy?*cCS;q|w_lCi8;~i$jtm9y(%mmwH|6&`5|bR(?CM(Eqj+kh
z6P|UlaWTskWMr=uY_f+zS!LEaVdn`(+xR;Y$>jmv?%b!-c54bHyjHBmbw_xbz;*~v
zOCr)z`l~OxQ`^6Jlk=Iz^I23#rvqCe#&^ChN)h(D*7)L@%@a_4*O1_0grffF&dFh0
z;HLAk?7y1Lwl^DYsc|QJY|xXF-1qt`TWh5jdd__@hJK9uU!*BEFtFzfR^H3<%?eFQ
zzwXKDgFg4zkAzS3#y4b3-a4@kUoY3vjmwwc&pCAKo$<-K+~A?D_eaWEw~-cu35*eI
zaUHBh^JYdvWr)~s5bZhUlH-SO<+|${#*|HkbNK%uomE|uZr#v@B<z_ec|^`phkW9i
z8wby`uW?&G)rgy8r{1tEd~e{{eJW@oCZKN8I(S{T(@E@9p1|^WuD>_z6H@n@LPwIU
zJG0-ua_p+gCfN^S@flgNVXl)OKAXB14P1^fn4P0<*XN_IvC!KFxDX|BiVPxJTNQ^*
zx6)L*@2$#v3pQ~iF65}p)DTR~hi1E0i3S_kRB@c{g^7|e`)$|98eom-;d|_qTYgZ(
z@>%P*r=!U5oQpRj(6IG9pgZqhc5yy<`=P-=+V5K*jC}XJ{AU4n+Yc2I-hmF+wqFTd
zb{q)b7tmQ1Y^ia<N3WC4@}-1F-Ynum%G<t$b$trb>bZw?A#Xh&o!*)^FJEC@jF~)-
zuBxqfXyc~_Fk=ILxEmuX3zzBVP>W%G3x6c9TzG)>x794A(mU(R@d=KNo3FMcbNxL^
za+l6R&5um!g3l``P1{=von^;~^PXf+JFUOBCyR(f-QO4K88<ZXb4mAboP%;_qP;<=
zcM^=$kUP1wuRZm`*R$GZr-E<qob$E@S-g;op!zICH`kbKMg7nz(aedy8tCI_qZ>Td
z&-t02cb6Ra*E-rHlv5+0R2Y_lv>mUDDUI&bZc*``qiffKH;r+}A+83PVYJ|4hYBx^
zra68(ekRJ%yEaxK6jbC9yOhFkoP$@(Y}GK87RbT}iMa(2OxyP2YjY8w3+tE-^ZB;9
z*Bk0cf{4Do()C?9J)^a;OvnV!93Ak=6Uhb;kLFoAiSEp$0-_b>TW6;ddswhpm~wHg
zcC~8>v96zO?PcyWpIsfSc+TI0z0~Px?D5X)wA`zlpXQ5@&W{y~DYbWrqOO?%GIN8h
z<z<GC9rvt#yGjq)(#a{N;r%4eYB!G~;YgmZt0y-SnBQmWYvDu;Y{^aSOhdKDDOgn)
zSnV{EEs*Z~)R&TJQCGly7x6s&`1oOW!wfFpC2Y;R<8*C~*QGJkhS^Hn?kCdjspay$
zv@uz8Mn8kI!jQrCcIO+dCD~(0&ssu#mN9kZ+dWXRreOBY+_2Sd9`j<8)vVZ0SoLu=
zTQ-k8b<#;7(YNWg>C3wUoNR-eXDzpes#G@FW|1_}!o~ryLutVDZq6)7f-Q-JcI=~f
zHW*vE(P|V0x8RrJd6bmfi#f6br3Z8tcE%l~vj`d{g-2~08?}RQ6C6$1SLv`a!M{6=
z+Ro<?&L@Q|=dWw^VHR+98N%ZnH+ae5(vFb`U^mO%m_0-#d4A~$Xj9g_vB}>?F*_PJ
zmwqZqD<e1*fm60f;xQ~CrWVm7Y&jVK_Z{;%u3t4Cb!uA<?)2c<4dK9B4<>w9Tav$p
zs6nFCT6X(MKV>FffVA7T(_^(p5ix|ZLuZKI382h>Z*6ky(=eBl66(V^{M_{w+z=N1
z4}tW`LfJ4dZ#5mN9$Ra)mFUc){muCqiujCY+Yy`pPl5Ur(FqCt<M|UL0EiT&h^0pO
zfY1Wf0K@>C@&+hsM5s!ZGC~j&=ZN)r6A4JYmoTa8q7*I?TB-u2JRpdM7!boyKRtvy
zg8<_{yoHl_2L2SJhM2@sN4f$x3@;Ms0V_@5-Uz4>MF+;T1sl;}#2Dly2A-TYdej<1
z+8bCf7z_?rR8iOD3?^SX9BX~IUXD)pFCgi0zKnSu0<{`ZSSX%!{z;R;!vo5!#R`U8
zwqaA9s*xm*d%o2;gz97wBsfUPE*Q~*3#DS9WeCSkW0+H$lJ$Fv3#>1G2r=I;BfX;r
z3}gMe9C#?iVL>6mixBMKV%)=x+?qBq1n*osb$iad9!kAvj@cn&5l5<UM=_;3xZ+&(
zyL+6gLiLkJs}egIC>Nm8@VQqhNF?Otf#p<-p!LDXTNtVDR6Eh=ln2z5$3qY_6ht(l
z`kXM_3(;kOh1&+k86~0FfUJ<wQd3GvgpgGnQDImC$S`tZ<`@7(QZY(V9RosWP|_uc
zxswz`f7&fEAv6d1@?~fVW7a^%#+q6X^k7p(P0X8_bl%X?p1I_Gf2YnedJS1f14fq?
zwJmHO5bK*hkDLcO7;NHLi|!4Il=EO9l8p(LZe_>rY!U0xxwc{QF&xe`<fs!%r@ryt
z;dz9^<nq~$31woQ+!kawTVMlR0a8*AgJFo1>+zm<7(Hqn!MD`<-ncIANF)6Zo_0FL
zXWAQrePQDHE}5c;Jn_TF-UB5?4)s_Uf_EQ^Jsu&}Aop&v#xU#wYzlO6I2bu0A5@`H
zfSjB*UabSiuM-hO1LrREJ^OL^@Np}%nP7xqVkRVh;{36|`iF*Vh;8t5A1)UX_1bxI
zG)hVV#t!m|q8P|JLRmr}*Vc1sZz9>?VWOCmCkqZdbop^u@@V${569;I-{af!{*R_t
zRS>eVr7KH<;{iSc@#x77yk^j51Pn@3@5r>HSqxO6LJ(OF5&$Hz3*Znt_qbXNVG48*
zR$Mr6oPdN*45^UOd>`;JA&tq~U<b=Df);`CP7(p|+f6ITrf5up2_GE3X$O50#;iza
zB_-ylko6#AhN)s=w786&$Z?Kl%2w7u&|-FSL`3P#l}M5l5k$(xR8r|fMQG6pP*THw
zN!3E1uVln-pKK_4<PgapqDA`UJ~#)F3MWQj0ZK(oND0$TB!C{o%*<Sy@L%<xr8tv&
z*T6z+(T`t!$Fk4AyX8H6=v%Vr_maeok0#;lRL3Le>UK!^1i&;0=nc3Y)BVu>&HnH3
zhsnARAI2ZJO$X{AQiCT+{BRO`LHMCN+yB*y7=8G0yl;<yd~31$iRFB}b5NWX%7bwp
z%n!}<^g~Pg<@-p{&|ew*1ZkhvY+yKf{gojtx6Z2nZ-o8?MuYvogg3n+I7~!&gbV9T
z3I?;8k+5Sp%Wd=F_Yq)s;P-k?Kcl4Jle|rt4uJeNAoa?JP*o!Y1yf84?akHP(YQZR
z=EE608~SzVmpx~&+<&||jr;#bEB|B%=p|9o40SRAk^%J)3U7oHKmiCszobLba}Phy
zNLK*fqQ0M_h0XDp9#S9QufeK3{onxN4A0lYL(%hkaf}E=$>J|AsSqquf*pj(B}IaR
znu7{sm)W>H<QY{m^6CiAoF?JAXWt(>CX#6*_uSr=v^Ps{#=M^Of^iLQwni#WH6pme
z?SGLHR({)Q{U206BX5p)FOK!e-f@A99CUPG|IoVxA956asMnGG8{V~m@hK9}I(a|5
zW{t=W954eVVyUp3GD!vsP(vl3os~l>2a*W9M_~g|eA^oX17T+Ix|ugaa+*{&$7~Vc
z6hd5x*}iaoXsjfJ%BS}Mkpl89I11;1yNXhLh~JFurmZEWUGQy~FAQgPe8w0b+|9Sv
zw%*T{NNQFI8Q}`MC@|MgxTPrQ)G@sbG^R%R*yk%?=LcvpzSkylpHKzrLP((3y&>NA
zAVpNz$KqxU>n@SxIe+9FW-$!yJMx0WK+o=9ko#vzFWCY}_iT3wLhL|(8*RIwLP_A2
zgvINqR1FP4UctJXJ-R1JB|u1CKLKfb4tilEyoQbXnCbryOa+V|Ih59+L{Kz4(Tm5G
zW1GS<F~1>#cYJ<MgT>`>0i=c#xnpP_cA4?AtK<DfeYCji90xpNeZHb}EZne~*tnL(
zaRjvt|5L>?vU-Z*f(t4o53TN1FM2cX{UdFV0xrY-A0P9bIYqGSp{_W}@Yx9_vWyrF
zG4&8L)j9#NarRl(asLDYNd79w>^Hs3ru2Er`k<**dW~qXc_Vp;p{_mdO~^g-wtdbC
zbI;IjyeF4AWJL6;rz-T75e$2toFm~5F+UCY%EyuP#Dd4^R%-i&N#KZUbC3e<Z-?mp
zIKu+QD-Zhj5snaj-Ld{S;qHF9dBWCHLhB$()cw;Kz1n=;j5kot2_RO^J_O~lTK=P`
z__)SuZVwd359M<d3@ouDAB<E;k?Me|=bVq`j99mJZJbJ0{GwG7ZOHiCt%PjG_sLv5
zD5U%h6j5QgKcqNg62tGt>wl;Be{ZMT7(C7P2e9Bl$09h3Jv-C~mf|^M0O)-dTPprP
z>9;BLFN8N@w9CB4I`#}nKOYdN*nTq*Nd%hd^OFRf<t;pV5wj$1;r@ES><Qo!Wnvp8
z>HaRyf7gV6FCBr8w=MdwkcMnQqMJG~qs-s?*~+0IAx%7mO?dq_2P%`{V`-#<4T?A(
z=Y-e!)tY33zT1$OC=sdAR8EICZz5oPq=w+w^<+5N8BhEMB<*0{cDCb@{A36hZNmc$
z`(dSoTSd3z1=kZ@{}*?#48<YPl4tfgas|b%yOJc-WSeG`gfj6I_0+R(wTEhKY*PxZ
zU69TN%t(UVrZq{}{ch&a9&*fi9n3bMVaiQ@^Y4vLz}zpKhv0Y|r|?fC@SFMk!@tYt
z$ey>irYE~p?bW-LrI>7AwI9lcjn9(r14qFdj`j>t%@Kx`&E#$y@ID1%ElZCNnZvH7
zqyrMe1E_Jl{JX6%C{)NS6%TQ#!ifaWK!C|1JWuYCAj|fX)GRh^OM@A(^_N*-BklR~
zJIaQfg+l$rHhH<=k+eyx#Vhxmj-Hd}fQH;AhVaP1?knPmKKn5$j)yCvvQ2{_*OPKf
zF_Ht?OvvgdUU#=Jsm#E%;{ruPRwP;KV>T}rw7=S8$gB=U5F{1?1PEe#1ef#8yH8^U
zz#bjf&%bLIf&?KXm`FksYH*cKXK33jlQH>`hbC>uERLs#+;hep{Bf5}hNrp3V}b;#
z?#()oHLxYXG7VqTNhS~Sv8xG=6(z)G1k)291P3)S17R^VNx(nY!~otI5|m$CjJ<Lv
zi|1+a+a7(71F6TjFem7R*X8LC%iq~MKYq<LT$MTv>Af8(+?w41gycD+525pMbOYy_
z8;Vqg?81a)d@#>-`(8}z?}(2TmSMBJ8j~b-u?9X?Bk{KhcwuWzT4U554{5B1n1LnH
zk~Zx<X}^V@!0qbpv#cAPT@tlKQV5A*Axv~7w?|{PX5SBNaQ@r581q5N+1rx6GlFM8
z{<WaYA9oKnI2RafGAtjD3?pIVF3(fNy7w{P4~vzD)$3#F7~@$F{6ih4qcb#qg%fVe
z*UUT7w!*N7^{=1$KS&k@n0j01{LLYl{vG3UEM_8-VT?i>1@ra&9VB6hk}ACFm|hK4
zSj1`HI`6~O>E1_}e7u=}JkjD_fie;n1zEl0eHY!=f5dVA+$9XK_jYaDyEU}>?1oom
zdjq$i!Vow3e3H}X^1jcI%)$kh+-dD~PB>K_+VCgrmtHX}zZ226%VbN9<Ael;;x}j`
z0n_-2LQ2P&Z2O$vqFP?yj*jH8=A#T8ke9PQBpz@+F(TLd_jvu}&E1Ld#|s3~xSqP0
zdNViL(oME*CORh5wKL;{IJ7~bL47mj15yln8%5I#LTLjI6FXrQqr0Ki?i*eK<1PUd
zE@X!EH>fiR3%^B-bSu(^qR+e-e91*m3jrtW^_cgdgm<Gh3eyp+^YkBSnM$m%KFxQx
z3FI*m3^u8~UhYs73H^HBPiEY?1Og!wi0xKkua}*lUPXbM0a#QWjj7VlVZsm8j5>C_
z32+4m4%R)0N}_**p*$bpN`2Q+=V*{yL(X0V8eTMp;B44pslY@$(buzfcU`*Bm!o>0
z){IdwzoNLb9Gm4w)#8H)7pp9gD0b28xs?3lMh!LYdgRtl`!d^_R#h}(0u$ox25-B%
z#|J6mJDni}h(XEHiyk~-#Ts`V`EbfMcgI`mL~A$=-|6}-HSVdOGlzcv8#U-D>T-!B
z$dWu({=6&J^w1Ns&9mzF3c+>{5yb0722flS89`*A${nV_wPe`h=@HYcgXXF6ho6~b
zzRvO;ow_r4P!7EP(9m>&*btn9$5d`&5YwnF3jvV_vI4MO)Qj)z8dmW5yxE?koHh;q
zK>XPHuQeTznXb6K<MC5ea*vc@yJjI3KOPUDRB4&{;W=S2-NHHC`)A+<?YOz5Uf{>V
z8{qtVeDh_`f~FJLLFx%6lWTW3aRO!7Q$yip_L*VEFuxyp8$BtTeo+(-*K>;4c^o>l
z>b9$|jI;B^#~5Y#Fd|(dO#Q&rEw%747duL}9PAn!rjd2_5Zo=o$GBSg-WIW-cGx~5
zl7tPTCXUg!?9-watP_$yt9?!SxHOY{(VA?+@_nYU2lz}n*V3B~wbu(qsYnBD7X^YC
z#+wngSwnq&+)G6s+DCgK36cYnW-FRs3ATZFuP1W~;dr!nhyq3}dZUK>{wCy0mcf0a
zgKJloFd>3E?cb6_S(?-t_g?J=V%vQNwEc5n{OHky(gekh<JH*MZDfQvA1d`@M(s0s
z8<D*bXgJK*!N&aEu=W%<(1oy*`TNaV+m6&Ez0MNjdTLlUpGa3d{<YF+*=sFP2jg)O
zBK~Pp<}PyH=Z@%u@kBix)ioo@Z%UBM3&|n-V+cAbzR~iGD(cOro<qp@3sx_8K)^^m
z(yzuW_fU2`aE;!H#>P@%&4|7ECPYW}+bk~Asjq&?`cXPg%Kof*do}8v{ClZs8$x9b
zMDaOQL@+%;;B8%qR*=%oyE}dObseO6a7P|I!*PYHOMZEmgAz3zy^yN8U`~|YDsrLs
z?6<k(SzM8`OQyPY51yMRMg+j3A2$*5ZCL2eTLR201dOVe6Mn^WI$UJM=&a7B8-pRE
z$@SkDC>|j;6CgmwPf~FkbLF~fi$X_ovSybSmp9sDjS=$eZ;z!nS#&JhSDp~ynjym0
zJt=RXeDfvf;Vb>W9>$fJUhjW6T5YEHsR}cHAu#1{O%!_<Wcuh1NtPgb2S(DZ(stF-
zrDq_7Rahqe?Lg#^eGe_vb_GOXd8jN_64Bss$>}1q>M}>9e-G@V;5`GegTvIgUmLqG
z)jmhWcg^~=))>|_ab!5(1wLq#2r+-E`=dhlpR;Ze<8t2y?|6;19=m2XvwmmXK%VEx
zrUySiO~t^CqG5@GK)-VGJ8m8~4^1`T8c7pa93}iFh$J@$z0gdgpm!y_1_<gD?%-=j
zlSc92ID3R51QsRlJ!10-t06#p#U=uPrr07#wapGExwknN4A+BgF|^O)E9u^}-hLh9
z$F3wSw3Y*2bUMs1ri&YIueS1VjkCbYudA5seC-uOFZ17r&6KbbvZ~lgkE+b0CZ*=`
zx!vSYb`vHqR_XLQvpJpTWtgmnUfIWhY#<i5pj~<r@rOm==|9kiNP+PCexAF^6G>6K
zp35w<bABestm_d(1>d+27^D~d@L=jhM}1fKHu>+}zT<8kOjQm^+DfXb5Kaz~Rc}gT
zQT+ULHL?8bU{x~-lQD4D<ZXmO&an{{j0^MK;l>zYaM8c4^}S<J5o4%9pc(9*&66&<
zlUoaIzvjd1IKAyQv3gyzB!>)_qHJHczC>p!=}wHGUBqZ(8xt|$vSsu;a*}Ak%2Yl#
z!0v8dF?)O6J+9Amg9ovpX`V-74zNMWXFz-ANhv{=n`mf~UEz^5Xn^D=_HtviPLtL<
z=<FiMhvf&~#@2U~jM~S@m_YgugC!-mR&6N&aw7RhCBW>Nkn2!-`t3M&yaD=1&^qiO
z)2y}>&RDAR>h^YNcZ4!fr5q0$*P20@h99O)l^u#X!He3A!LM-vZ3e?kZ462w5CXs8
zz%3P=<Fu1w4x9~s&+^_n;-lRhG$y7fnxd>2EYRoEcRfdV#+^sKwJ>4~CUnl4_kDdC
zb$ue-GmX)vhX>gU8Jg&G`3cBrW*P>mHpnKf&A6715O2&v3_{}VnljOlhBM|?;}IDa
zzSD#btVaxt#`uK9bDtwYgnN7{_8x}46!YNCx?$p%lLyoZyt<vhuKk67)stnfg##r)
zI*nlhnL5K$ylp%eL9>CMfjN~Vd0D5}*Rs6(eRW36+OWPXW_inu<uNhFP6Qb;XqRgk
z#4XiC`AuI-jy#vfkE6zKqGNm*5fVf_9cN#H((x6|CR9EVyj0xt&4OPTF}bjCd|>|@
zDcx<Bk}BceLzahv1~hv3#z6WD5eOtc!V*@*gSjc=*z^09S?Ghq=6oH_!TrJ82~dkN
z(3F)i5|mV=h*A{L2vPVT5Xlk~r))6Sqy1PLTL3~_KF*K$(hCsW5e*}6VUX}Ye!FDX
z`AC5g0Gu#wy$uGd9v!~EidCTB)`R-d`VhaV|DZtu{^8>BrAPh?clmFCH(+y#lt(mp
z^eYEj={bCN4{WJgjvT!h<7dGhwF)M(itxscE91;l?Z+Jm8j1|jKfd=iV@!(;{+ZpX
zXy-f>pF^T&J=*(T0mkv<xRdfD*d~oC#|@Q)Q4;6uMo4DKGoOiYQY|CZ5%e~=zB>sh
zEWWrTt&EeqnK%2Hn)SGH@7et*|3HJY?aC8goE$wF#qR#jeHW`Sqebospi^+vJ}~l!
ziV_G3D(^sdzen)}v8~CB1i{>9cz2Yq;Z<8{^Y9k)9#m%k3;woXm8q;^ElRM!ZT!&w
zIcytBdeDRkFd@mHC2$WAd6YGA{re+c5F?b-lL5fe-1~9TymeqX1cQoiJc0zgeyPxn
zmH_(()zskL-$c?wTr4bYv~GcnPU*BPCI@C5)NXlyYp%Z%Z-#gZ%s<2v<J9ifU`d2o
zRxn2MhuS>SbDaF`<mV0{#__+I=wo3}v9aXCXA*YEEyIg)ZLcWNC~YJ&Q4Ql`SVDVY
zq!^HL7|F5QWAgu`*Qowvax#qu=+$qw4N1NuBs(!gi$8aCe?fif28R&s9jb&!o#T5N
zj~;Gu1qWH1$T1G*J6pSa8H*&WVvOCtb8yZxbE+Khp0i&&7coXHU`d&nL(3lj#ub-+
zDG&EzW2xUS+pqDjb|m|GTJv@l_xfy$py7;jN$-Rdvh*&_oxazzew&MoZ692VA}2@m
z<;Frds|l+bz;!x@gl)gDm9p}ILM;Z$A;8V3v~A^;jV}q$&emLq_4<x7uEV!O%;}6O
z2c~u=yx)leQnxxr*P{E#$`UAK5dM3QS)sV?$8x*^mnMCV!cG|`8SSYU5u6y~Hz*Ny
zKVG(J76(6tKfX7rlxxqfu6kX~r04i4FEf=giJnw=7+ZJW({Xhv-cau+QcH?4Fl${C
zjAHQ}&9Kj@%p*u5bbD_}87(G82PDy6QmugJJfr7-oxeVK>13mP74yGHMt+r`mYJ4s
zEFpafK>3X9Q=|n<M?ykWM@*^Xk~&rds5@D3Kc91(Z=U9HlJsx(RnpoVVb*W-)oU{m
znC8!~SyO|WL8z6MH_%PZN)e~MOpKoE+>@N)N}cy(uY_+!oNvAnt(nZZ6FQhJsKSz6
z(!+%F$}+cGBMEv5{nA8%C^$xPc>Mleb%;^ty|Zt9o!VcRr~*G)Nt$;0cYWL~p?9wG
z{c^%MXE_}wN<~OR#mym<rOt4dEMpv&?&$T*z8BeqQ`Xmbj7}IZUkGPU>dr=ftGzc{
z4(b^zu<iLxuWrwc(IRUME?DxXR?U?*TU1<wlftu5yYLwBw{BFWb-dj-u@rb5qwFj#
zlwtbDW@-@5_9jl&krlN4=i#uQZ^qdFvh3nVKJF}MBQzK3HZ1jw%-WtCx>qZwZX)<i
zu$u$BQ{4lSg7CJmbIsbO(fZ{=%G_BBXGm)i<cR0->Vs(WxVqNGVH*w~R2mq_7BL9;
zY^~d*;X$0Z-`#N*k#P#-kKtwZU(ocz+fpS1J_VnfY+xGm{nPEW_6YOm(z!xxYbb4Z
zk14|QMp~Si#F^7DG*C}&E%@_0WZ!dJvJ@WSA_ww_U?$2h!Chf|81<m4WB0N@I&a4J
zKcxFvvplnB1Z%!!EBe>g7+F#YCH=4|x-OcSPr(LaU0Y6|@SBiHA;bcU$U%<ND6h|X
zzw`P=Ht%Z=nTX@l`AtGTg}c;0^dr=mOo#m6C8S6Ben)0@Xqk%HL5LIjnI;UJx&vkV
zf6VRs-EnD@!3f3<JOkJK7rG6Ikb|^U#kH5p!L0X~xZO<_G7}je-xH0`{b|zX4(*p2
zp<G0lNYCHfuf=3{##YGUVZ0%<wJ^dvA*P4t&P-Vf0{NKa^ev1tlJNur?a_|7GVTzt
z(3@L*#Zm2z2Fxs&K?4Q9lu(WzR|!77IVdYZk+>8@9EHLrqB%RM>3wZCv$0yA!O??6
z?ez9~2%+-~@oIg@hwC{ln$=z?pJpO%+ulrQ&S0f!rh5LZk-+z3>65pT-5;s;?k<w@
zC!mBrvCcy6U^j(?p@a{#S5A${mJev4Lbjv(_OktpbEbNmWh}LeTEf6tqBEEX_c9hp
zsK3SQ`0cvaec_dM^UT*-w#>&1?;2#tw4~PGe#I#4Vztz?DO(|%k5yE8?-}Yv%YG4L
z>^}%Ay%JPh;iAuR;x>^XEM6eDmp>9=9K4_0%y-E-Tpavn1UR=#4e|LLeT~$dLQ4%*
zjrO2Wq14KBc1^I|S2@I%3x@cOaPGmz`*yw=WVW}m@zEQb3|%fzsh>z1AmzE6;5GwV
z!q$!<)DVnTX||AYDaehkCD94Pa`HcbTq29G%utzd5H>R~qK>V?ADk+V__2kmXVQdt
z{?F0BKf-5mj89&}&lzXdvb<1{_b?Mf*jYT%KI03pfp4dl$@$F4m*Z`VaPun+t+EOj
zJml{e?!q`<ZI%1&lljt^No8hVjq}g8^<R#wT=y1igATFu$LJfmnsYb_kTjp4RA%t|
z`IO)r{lj-vZ27yUGDLmFgd~?G#Nxyxz)1!roM-yVC!irce#j$a%d5~{O0e^r%@G>H
z+K)JI4Z;%|B#8XEhS?xgk_;pu^Z9xr`NZu@SyrD9l%jd}e+S&V#q+7{@Z%1YYYv$<
zS9`7(r?<zKWMglmivT+{=xiAd$}GbOItA_TWDN(<2|nl4n+=db$p!(k3|oX4cs3J=
zZDJwhI3Lr;z3%^$`A>1H3|-3|?r7I5d<z_G#yx|q(suv5|0qCWT}_S$69;pX{b8e7
znshy*I%TXFfv9u6Bs3%&EILhXlc|zPD{>)%gdFbU5^<#1=t5z00Z0pPxYTpt9|xTi
z(4pTXJ5lzEzF^yr(T|Gm9Y`I|7=VCho9q=r^I|CjOLW3)lzFFK4kY1iB&T(1@hL1J
zyJt?8?T5<h*5n;*O`I+Lo}7$>pRs|%)RHbbINSyyc>$Msi${G50%sIB@|W%@&*t^x
zJA(r64U#b;2({<hx)N!foLqn|qWf*)s3=a!{Lb;lw_03o!t6U-B(X`}H<4~OFzl0-
z+I?Juct}&u5N<w6F}ho9aE`xs+lNYo%!9nQ>F4xQ$g;y52$7od!P%^)urh=TN|xCg
z9j76=l_SYnd6rVc21!h6UjdUqXalqBb+Da*3?6Lu>l}0fbe-tTY1S68pSC^vGFn2T
z2^=M*){*I*Jpo!;L+g&Yu*E#&*p-5Wkt~Tx=OcRMD>bWvlaUO><V|gDY$V(7fQxr9
z)QdwRU9o0iJ#V>7Yke|$=(~@PVb&&1Np}CM{a1kaULb&`I`M=L1ko8cC6ozk9B;yI
znlkNtpzPCCJCS9W`<a=BTa^+xw+hn_M$BQ2)nkw$CF14EWR2m#*mvlCe7P*nIeOz*
zEb7P9;0XW1*a%G9zV`dXA`CX~t)J88`Xh)jz!=zT!YCgf#T*@^I?O%c4G$6n{}epz
z_&&T(Jo%_Q14FmBt)iRM3}9S1glfn{xpFh!9;f_>o&yKQRW+CYEaj54B+sFr#LwVA
zIbL2?YMJ)QJsvFx{CuzYKOG!AIF8hvuy1bT10ylpqUv+97pNeNU5KoK5YG?8vQ4v7
zt{3ei0Mx@{9+-WfWad_kU+GotXXY9BiYVkLENUo<Z8~rkH4FI~!vfj@nJZ@_AkJco
zSN5bMV=QfW63?_L*m%5)X+ssh%v(!LPt7o6)^dAb5cL<xpSBPo`~T}x?0;bWd>`b+
zzwsv1qyAa}Kc!Lvf%>2oepZ11=M)2y1$8hqs)vv=L{HR!HC!MN9MlLUC<0_475Z?*
zz@U*7q)gKy3_!5~G(r&~sRV|I?E?|_qy8d)(Ihwe51%j6n5Qn(RmRy-nU!;2=2%ud
zun`VvM)PdYt(=li#i#tA-RAE1mHj8f$BJg@R^pVx7eKvfvL0OgFIfKX`FLZ+>cnPZ
zfA8HBTu$=?yr`22%u^((#_?ap|C<w8S}C~xNLOF?y5BZqCX5~(_ITE{#8<-Ot=T_E
zNDukx`1a=QHrM^k>1~X3;s!?%N}oFBinc*{i64U`Y`kQ-GG{IMIjGwTC3o_1I&5%3
z8j*jFzww!hw^wTtTcr9cb+Y-`rs)X+f<P?M35ZYA^u-8eMi%p2KlQuy+~ye(zW!5P
zwZ3TSv;=RdbqBMh6}6rCioJA-Mt36>S#auxWB%#t=;`ayn%$Pl*nZxRnVlKX*Ytmf
z8)rL?po)~o5C0r{Gahk}MDC%XG}jC@UQDr#1l%iP0%yBXq%cBq<Xp&6q$pxoh^n~;
z=0KGVl*WevG?19sl$|Lsq)E<TDdB?}VrWclhhU-6rivy?m`SjLOb>A|6U3VP&&~2_
z|3CWI1Mt9Pd%$u7fUC}Pf&oDDu+oP~0ilNy=rBTJ2$1(7967+G=1?gmx;pQz+n9ES
zu5s0_LYmhzmWH0!8b#t2RmHUj1dy}y4p7_}8G^6nllZ^n;qbW#u2{PF+pBRgYg1k&
z+TinH#MYv!PLrpPD=>R6T)OmbQ==Ok(=zAm6xwsH86H($$9uI#yLJzWP91ZopWlc0
zAn$EK;+6^F+KKj=(!AnHB`Y0kThmO0$trV`$DzRK;~Ubcl>3i76zJI4#hoWPq9e~I
z9SWrz8O>;uH4e9y;xAl;kxzUeE?`Y@d2n9;wTmytaU+NvLmUmGnJgsUFQ?yOjoe|x
zIZK2qd(({iAI$9N?xz@vvBt-IILUPxsC5Hn5!JekKe65;o+fhJW^1KdV_*5O_#~9H
zD$pQzgKSaZ*GH^uJAefc^_0?%-o3cdz3M#_cQ?H7=|-OJ@|+pnoo*sx(^X*U@#}~3
znFu)c5<}C~xAsgQO+=2~(%IuwO)zln#U5Ci8Zf^0Z=0JY6gN78V5vk_9mN#Obq>=w
zYrmx!Y;-0#Fvde8##iIJJFHBbxbHL8|LW_He1h+7s2j%H0`xc@V@?Y2=H@wZr;Zrv
zk1nfhHnXcZ(n&8mFK-CLxlk$gO%EHzr~IvoqISy4jsLjs%5t`2Gc?JM7f#Ld{Cv^(
z49v^=qy1#PCS{=fM*q{XvV1YaZ{Mu`1Y5LM*g^ZaA_n~?`Xl#$$;RUk?-EOmAJJM5
z@f9kc`_UVWT|Bg6g~q?obDM~TVdlkQab8yz@Nw6Jesgsnv+@4WH*6AGU4$(SKbi)A
zx?Gy;iSzzg3;FD_CLgP=rNSARrXu0T(gs5oAK=}La+c1O{nuCh4u72z|Ahu%9Khn)
znX?hJx!J#;`?)Z{f5(1b=`{2+#$B)fQ3_27h6WnW-;d-GUT^pxx%`y%K1u(W=l+0Q
zVvtK36_^rn#{~9&QaX5X=C|%kpuzHg%rF7n12C9xPxk+mq5iX16=ih-Mn&cZ@*S9%
zuQWVbg%BQq=~?99IfwzYeXT}}8Z~96+7D6fIqZwg@#Q{I{-G~tGFwHOGcs^+j|kzS
zMo(^<!)(ZH$D@pE5gUBzW@`zf?g50Am;K}HmF)BywJ9ccN+8G#N8@2nNqG3Q)(1B^
z>UvXhP!~d;Xda|DC_})B6YhM*FDP=xPaoovftkM{jzQ^<Fe`=_o;OW*(ajSDF(0x?
z_LtifNH*JUBIJpV+Yk`TLo(9f##p5`HbfjtcPPM0H~+NxExtg^`kFL;NUqXTl&AM!
z+nLuPxFR43;B_9N9_F-s-=Rme+dW0Q5;uXS(Hp{$8Q}>S3&iJ*_nDc$cNsi}j#A)b
z6F|}I2v9aQ%Zv{z2!<y+9r_;?SDpqsY<^l?CLyk{eLiy&tC&^g*oYq7I%Gi};q{k|
zH6G}XAbCiN1_l{GvHyqne=qiH=lx&jfB4Bm|1a4p&R!IXx==rT#r8_)|CX44M^~c{
z_*3@F3vls=`akwsvfue&M!T@WH2zi@nLXq{g+u<pkoZf{?nQb%m_Ecn)(W4Kb@kt7
zXqOMeg;SYMdBg*;Pej)E*q*VZmKsR3Bo}qeLJ$?Jo!Jv54(s@x*^8xb7gnJHIqSfG
z<xAiv_Yw!*e+Ti(re&Xo`(RF(O{Dpwi3bSmkHss->x|>eM+<p8OYDH=1pF>i79?6k
zq7ckb!2&=bC8B7k58Gh#y}xRkc}tKd;twe6x9T!pnbe`F1L=FGUpRPe;t+u$0tCs^
z2l%mPPJ5R~bvh!Y85Ja(+jAuF&&x4h#82!^(e6L5!}(H=`tKnDKBoh&5L{;iR2Pp8
zLVCO*oss{VU6M{PVG+EIOapGV|EBRjK}CI2UlXUx1pk&^-}TF>B4x!mn0Q3}dhGsd
z3oJ^*0K1mj`X4S~v=PlYP4g@}NRVjHEeLd#U?JP6hW{vk+D=M$GB7&hgH8B;C7RVc
zdW&QFwdXGT!#rQo*$&Pib;;a{ZvOa?CW?N?YA?<WJcGe;m*9T+(dpHkTGF1F%u-)S
z)J~mDGYFK_<Y%^&eV<thRXchP8M7s%_xAS8I(G2bJ@e2%FfSghQGTpqMT3Z}2btlI
z@~|@Upl~%%vP3{rLnwqfP9$S9GNz?6dQ|qHzgGWm+miIi_cC=KD)gF+d3L>5Cxr!5
z84P+RB_=p%a7G+a6$kKe;WKR=Ax$JF1%13?(z}N5ahA~+Sb|BMQQdx&8?Yko{!h|M
z#vw%^r}K}q*s+}H!k8dphgs<mj|Fx6uj~t}b;5XXC($iUOQR04?6%uw(;Emh8?L3r
z<KTggQFNP^64;U5r>A~cU0y?5h(Po4^Yg49U(IMRV9u>scHEO!cXSe^N}yt(tf)1E
zoHOADqCyn9oPzylcD!5Jw~JWFwB&>C(MBw8^lHujNel2I2MEFgG$U3kx1W-(KS1Od
z6K6>@Bp06#Ro8sKNB2Ye?@p?rcULc-9l1^i^*3w0orsHQu`VTYa6Vvx|9?bStH_16
zp@Li}UoS{!sCmx9<$AU~tP}4Yn#=G>Jhi{&gH?h85q1ZsgA4>4g4t#jil~8&M}00X
zweZ#DTU8Z|#mwEiV`36&x}}n{{9i74wdrGh>ib>^`b@tGOEqU*vLPQ;!^!Ge!FmVS
z?B8odc7h67@bi$7B*Jc9KEGVA>icF}86(sEE`IA+rR$XqewT;$(fcJMER-A4pq>1`
zrH&O3(ZxFR52)njDS2wfiCZIRCt$d8-$+ZSESPg=(fNhgWP?K(P_&=OL4?HZATk}A
zcs74&2!E7Eq5K}iyDmT<?(~KqMN(&!!jxQ`LOwSMs?tVScF{FD&}Q`;hF|PI5A5q^
zN7})&fwNZl0&YsI2VHISFLLy}N(4vLP=-!yi^Telzem^{CczpwaqZXl@nnSVIb+Vq
zWA!~gas(yTX9x86D?LzAfbfENr-QsB>oof4Qi7rF%+R|Ff&ZrvX7>oa&dj#T_z)z=
zx!_BwN;>;0S>XnMR=lsec<!fUTgM)L%EmA~LC3r(NuvYQG>^{2Bpmv-1p~FVO((kM
zdk%?1vp(JX;qzy2%q6=UdZ!DnbF98EOC>quV?e)tC!)dDYK}WP6SN;mp6azTH}F~A
zB?!Y@_l&u2Ncvr8FK;T&G~rATG0)a_YVPmPq4p9)QXXT+k1Kp)(QTWv<G;FHIX9SC
zX`Y&Ow1~@OS|T0d@qSXMR$5_eCVU8!pD%L%OF0;TJ|as8aO&-RW@09{;y%vX5zl*W
z>FD^m-^O#exEsD-!gw}Q(<aicL`ySBu_#Rq4N_4RVe3Q=Z2Dl^+t1t4gJpO)a9_^P
z`F$Z4`R6iIE};HKa1=Cd|B!3$J5;P4GXrQ28LQ`hcl}!$Y;8TD=*XHKY6`i@TFjSL
zgakN0D9Fqzehl6+f*6k<x>4)<J|7BR9ewuq5{1m?Z9zmMue|j}hm$r;H-sC%$%cO6
ztbyW(cLe>7rx*EoMZ|<VGK%vmHCZZw_ZM#ei?H5o-Pc{`;EyQ7$ar|s<5u=6r({eZ
zeScTZ%yss#QJakoW$yUDL*zOj^09*}h%Y41sn)Z+n$OZX<Quhi8-aYp8R&Q)HMY()
z4NbN*o1Lw>itlU{o3F_rNhp_}`t0F=%}rT@6918ju)uJQqV@b86j6+2P1W7~9CbPN
z6G%X9x9EsM1AZa=4Cb(`NDNe*&*JTwvi_QhGkT;T9<HVbw~Rs`0M2a>Tk~$~X~qNq
ze^040Kgh!Y#fAgY!&qtQ({}gWB%s3qH-dqgwHL23yL`%>B*S+2ZICga;K9<E;|LHP
zVXf_gngi46?~YiZK!Guf-_a*vo_LqrJK|HNuFPt~bJLH9eDIX7-O9<FCuhpm!b30@
zb`|g6iQnrki>r-MQX93OtA72^fX|fDJw7XN1Q`h3b<e7ga3i$>0M|-AHLMgiK_{Ff
zqC!uddb*D|YEhV(9$RKuANZa{LIRCIb3CF}$Ury8wr{o#EMvcY8POs@Z;QcpL5j<!
z--XGlBj2{ycePibaq0-q7t13|NC!N(GL{=tP%ZpvwOC1srKv}SqQ_e>u6n~;4CYeW
zPD?wzq}sI<{a<wPQTdR7^Vank+9?PQmFPv!JM>mXSpu}jt}T4$4NY=PU2|gMik<im
z4O@L<4c42Eam{TVW0~Z2;muu1nXYqJZw+fOpl$Y|{EDQpPo|jEl4J!d+*W!QubvIA
z_llOcvoWOa2<wfV6YHz6af=2wfn9XUQesD0M_@`!FcXv;w)1zxuZX+vy?EpO;r!6v
zQG~FzW)MVB|Ig{xy=nCt)XGg!wi$Z%>HGFMs(<ow;#x2uqHWd@??~fB{z%oi?Adh9
z1u#O)O-VY8y+23X^zu2nbDHy=occF*`11t|r4DGnl?VF^WJ9{^Ewp{_1k_gl#u!6&
z%@OalaE=8dN&+EyaZ>yktpkuDrwwI2q~DxYA!3q+J@B2^+f(#Y>pJ>Q_AXx3hyO4A
z-{_95&riT##iPKH6K=WR`4T_#`!r}%{&gz#`MJM~anv%EKSP23u@C_;Kx9Dxf6#BE
zbci(n*-uw5#%*$H+;{(Gw||Mb!&#omKfZYW-Do>nLh;Z3#~z?0G`Fhfbbr{7$fAL|
z(@)4f&~$xrCu~Q9gA%v%z}$)xnp2yz1O3Ev%644N<H~Ej4eH7@qQxT$pG7RgZH@jy
z(qcrmktgQuq(%ZLa$v&D3NV9j;kX|^cfHla4y#%Ze@1+eFFXwj5v=@O(4UCb;!>3@
z+dp)DU8kdtUsOl!cc4)LmKJ+^u<oyQ*1;FJlZWDw{W;1=4Q>1<m-cw@e{g%)A`=*S
z>Jn1I6n+v>d3eJn=spnV0XY8x0l+X&<exg2CL*pz2qT0Pm?@iQjqW#>!%Q}XRQZ7{
z^m;?7S|3P%gv9mmMo56c;4}v^phnFo8y5KpY_#n#w5_iDOo*crK@CXw95CsKwy+jT
zCooFWOr`tDIcDQf1;QXSLuLmA0yc#{sX3tymP0caW1bBoqlt*%(1xTsN_K!d2MA#I
zIl<8>F+&lf4160j1@joB_>ehyDe(zG*ye%M>6GM_6zS37$j-+Q?mTUU;K>q9l==ur
zAzFJGFjOD6fVwk|22B&t^b!;@ajcWc7YE&kN^l?|Lk$<NwZ-F&bdSV%hbI7X-H#L`
zTn?=PylP@%$V^k|a2hk!m#-nb2EkN%0fEzoar<3X1qf{nY|0l1T7eRhU<DCeRX7}{
zfuu1IICv%$%#$QhnlzERL8kTrOo8@V^Rjw_ic-~_l*Uq2A~={$t3YNZH-Kr#fgBAl
zM&}ha5Y4RwBqHez=NNsceG%xIdi97hx`U_0f}N3-QH?d>CKJtgzI1#esphY9aCyuI
zHbL~RLZ+0=ZVrhcDWnH^^(Gq@h!^5%BMAeMn>8T8ng)b;?Tb{dNt6q6gya##p5ovS
z90%fuQC$}>N+4H#HY;{C8v~c?U!WjPNLT2E1I}T9q6U~(CFco5Lx}>R$HDZ_C>~In
z;}AjUNTPR@1MtHQCq4VE3BnH)CkX?A2wgo|RM7^tf(T*e#Z@^<uT=9$AiTnf{~3ds
ziLw%1JDgd>OPHuJ4&<RaXtoH8sWJLod(`ZR=pWZI6cvd7Y#dio8+SWewx*>>m_{5_
zk{dAp+nx8QO<M`UR{U()g>e{i)l4J4sQ)cs#Tdj`Zra_U9;rw6`h6T!v)IEY5PEp|
zEmEvjsdjpUA4Pwmkkmb1HMRR1z{I;SfF3^x@YvT%1lYW;5q`)BtVuk?=QHN`<_t6#
zXLcJkM@^?@cY^~lRQG2_h<mh`5B&`ad|?ftZ{fKU-xW0+%~whFuXnR1nP}6>a*AO?
zQg}fEvfk0!;=-nyMK;n@nzkUS6YU^5{*TS1<nM`{h{0$&$WTzy(0DlF9H0)lG84@K
zKzJnMQOh%$P=7_hiVfd2(8<p)t`7y|lZ;(42Fz^YBVWk}okA=zGQq~P#Sg+T*LJ^K
zOH`Q~5=#A)d3A~H`{Y>5W{2_X9ZY>V%)}9ifnV+HgAx(B+}j=(#kMQ1c0zX|6ijcI
zx^}=Q^Yhb;LygRsb6Jk9ldtK_nSg7+)qhn1Dg8_*?{jJbiMij`{V_SFY2ARqGKi94
zF%=}unBYbPLip{A9el?K(}vpCN=oB&JZDgvF67Q%TR%iDKdvo|v1YNgL4c<G;i&xj
zrah3yEi$z9)Y_^|(IZs%;*=S;gzpgAsE3rn;Dv=?;dC9GazCm$LfBE3ZqTvAmuT!=
zZKJsSOYP&Mm{yAQY2rXr*|SzQN!gPmX^iaw;8qMOB%GDfn;4;T2J=n%({qcpw<j63
zcW<bhv#qI{JJDj5640vbG9JG|`VD-of+SxvmVL3EM#1?YTUiUELh8h+yu=}{Vi^%0
zXN;xGB;y2zT0Bn-U!RT;Po!a>IpxAz)L>^LXv$Mj^-0p$Ajvv{?j74yLbcL)bzu6|
z%Tt#pjr=}+1I+>(6fk8;-Omn}rUT`T>=x{{v1-Ja-ljS%{j?7eaAer6j~Fob7hXGY
zP(fd!3stl`8%e#>kH4J*=$?7+%+H1MKIaV&3ZfPrS=wcvhRXxUD6s1wZwFsR2k$En
z8JPiziMSz47N78LaOXQ5(p9TOe+D<d&1qo2&#NMRbYfh2ELA*NzWW8<HNyCLC~Mg!
zs4&eK3^^od80n%0hD+a<%_ojdQN~VgI2>Kkj>MFFIf#1qX8S%|=sB~Vc1XErlUPsz
z@y14>-rA|zi!LT1!-g&$%oNPDLu~kS9=2DnGHv!or1n#SgD{g{vBIc3IVT##A5xMw
zEi!hOYq!d;qq4mRmQic%a$FyZ<Hyxc6x!L<VA*dg2Su8>w;rlq646Nwq8*Y_xOL{{
z^&rZygp-z2bOTj{7P>@Ys?^DaBr#Pzn;?0tP!&uSMC3eZ>~w41)Uh6##tv;8<GhU}
zS5z)r_|lN!o*ok@GG?U^z~pETjKbjp+83mt!7HH5F#K&QXv&@CKS-#VIdD2=Shib1
z=x-iOBnZu0vqB8T5PhG|0voV?C>tbN!ogy%vleA#Uv0fqh-hQew#EuycDEmcuC6lV
z+NKzLH-U6CK)X0I(3xbm(CM95u0JsdHFblRG#zNtE-GlCagH^JBqex;k{e=i8mc8X
zW@Y`4;DcM4$?|+w6nw2IJ<=`O?8_NJm&oJe`p>4>Sa#AdTHsG|+9n{nOm-%X=z<+>
zPH$&B<~e5BJ~HH^TYuwAz4~4>(Ii;17V#1hX$Ndm2I(846zPMSPUNq_Dar$~=r;C_
zt3(t`8K!Q?@`D;CGr{xQK+m#mvXUS^a`!=rG8&HOQUp1kv9<)^xfMnWIR8D;zRq>B
zxD|U9h_`Q+?h?y;#^Ku6&J{!fZA8&=S8Y=v1jMJt6HIGn>crihdt-g495_hit^bqB
zX|mV{wQg7m@%|7YhLiRft|&Yo54%$Pu#Wz@Q_nI7qg^l6DCp&DlenkGt`X_DaY%h$
zYNuik314KFv;!V={3d!vi69}OJbiUQuZU3nuiaz@@fvD3f(GAL?g=0d2C=<xQlX~T
zNQmpXEr$%t0l$tltVt#k0%%@yA!0~0w(o{=E{-r}!4@ozE+k_1cT2Lgl_eONEhM0&
z2$^9hxez$hN!^i|w+yW*{}+1O3(?NZc*Jxzw1+t4sc`JUws%T0S}Y_*+-*@zS$E|J
zwW1pAGQAu)k5iU=xq{iX!KWX_=1WA!qleeW@RN425m*Ra+1?*lR6|3oDM&M+BS?-|
zwkB&moS=Hw+=jcm$i;7Y7AEPVx6ZP~$*xPH*AIpv9FR!{+S>*om>|30_x3*g>!eKj
zTW*-o6w^(yeu?J+mrEgX7_k^8y&jeG_uNcq`fkbuM9saXuP}&P^5jY>XrGgTMgJvn
zMs_)UaKa~gVU8PP$~Y#4_ds)-#gNC>?WHG4h~#gBdYHW0Ib!h`mG$bRNaG|TJOZHZ
zW(a)Z2y3oF7HE+*X{e-$H(-66boOm?m`j(TjI(zT%<G)4!ZskHV#M7SUJlj@r^VwB
ztL&L9o;QhUj50yMu}T=)rqif~&+pj%^Z$45twu`(Y$(Ar&7fe5HLRP4JU;vSMGn(3
z9;Asy{ccJi*td`0uBb3kBQQXSQvz>83+qzOqq>6-3y>J1fhr-hPMK2MJ<%^!pC`RR
z24hSK{<)U()-l|T|1aSwRik$@Gwd3QE5;G^b~r@kW#(WMvN@@ewGuzIolFxHQbagw
z>`;yrrANQM+dx2IW)@3oz}$kHL^o)&#{f}4uD?6N1`WJDbfLDYDh@rhEDw%3`YO|4
z@I?-XKV>OcfwJN`ancMiX_2T>#rWRLS$sVBvtYBFm%>9m&tB7{yuUMinfkg)!w=Hb
zJw3+QOAS4nd5)4#e$%yWH86fQW2JMs@@jD#^pJ8y_`>3$LqeZe+zYco=H;z1aE<8Y
z^0{%u6=u*+%2M0kwDsjUW!}e4!M1I^B$E|Hg#}qJ%gMm$ovpLu(T97#1>3;#`1TVs
z^K*6_I3$%vYe|G1*ivq8@bt+fPK!OEd#}5`Zv0v`r^5F^xp-lqX=usWCK#ZqWng3@
z>!;y<N2lp>bqB&b;ojKU8iPJHCF?r#&a{i)e)#X@g7xDBA9L1?*YlBGh>ncQUwm3W
zTkyWLB8*-t-$TN*d2O*?Q9;LJMKzZB!pD3N-F?pJ&Q3$4mwDP&ZzI>EjR*T+A6<4p
zh^$KoFNZqxT1{rQJETDJPx-dO7|r8XC0dUCDn-*DT%$UIpHcX`e>QsZLO$jzYc6#I
zf4}nHpbllvcI}hLjx@X_RM^_@XAIi3nAZfK1tk!bkF?ldtG<6_a9iR&eUYp}^^z!9
z?D{z=N)=s?52`&$r58OAdUx&JZ09ZecgM9^vL3yj+43^3QEO=(BQ!$M&T@0PY@g;|
z3?%ZW2)9zltaA(#@xBvxIQh;I2gHUQBgc$bfTW!>HvT`FEy_bPp{`BEG<f{E|8;>f
z{9nNx$ESTDW5>fe-SXL`Nz~gI)iih80vOJ*S3h)a9+PDt*2m`^E1J7I{BV_UF5M@<
zNU;B#mrD6(<JDUWGJTM+fhSoCFg@OL+gFCOr%j%YR9qRW_&70&YAfyGqo&;)-b|*L
zl%6_@@|~#~XWRZe$bK*4gF`qh{!T@m^CrSB?HoA>>Rh|!NS5H?WadNESptMgTaFUH
zl?w#wRCeLDn&r_BhGQfNc48C^6SmmP>(Y4PL`_t-+v9%Xbo@4*<oh@&wewQ7uAHSz
zuxLYXPI3#Hd$3H)M{)u;p|Raew`{XM+kGwh|BIP-v5;Jt$r}-Z<1Kx$9uFL1c<tNP
z>B?OxYZLnJraX5{H^ZD8hmM~6F|x1Nek;r3O6&5S@{DbiFWU<gZ14R1w#!QQ;~Nod
zsm(`>cES>{EcUxkN=>{85zw||mEE-+b0T-4zat$vK=D{23gk%`+xhacL>Kzk!}rXW
z{SdtOId?(Tmda&~8zy)p+C_~FVexIHe+u)1cwVI6*N?+1L-<qTRdWGtB`pi&)(61A
zg8_e8qwVgwa>%$ldfnTyxtqq%>|dHrv$xt%*h!#fL|QE%I|MHsisdH8KY)Dv>^0qq
zaG9Bsxeg#m@wC4VG$H}BD-=jQtr;KX#>_Th3`sL+enF2g?B-;~6Jq6nITdS)H(XML
z+Kos$L>;j~i@O{dL_OO%!_ZXT8M$U}HF|C<)S(v$hgAv<CN=swK-z{RF*kg6M{`Os
zyp~}9^C(cLfyM6U2nUjCr`5`LxqY%)rNaW)H;9X9%n)qRmcAQCV-hce4hTFH&?R7j
zCfJ5gNMa?|bZ@%oQwyzteMm5S{hj8B)P2>dznnqk3b{N6LZwP-0)~0ICJqJ^$&v=+
zFoCt)eTSgY1+_El2{O>SjW+}lY%=u`B@rynE~plo`WRYirfDEI2#>lwm_|dczsPn*
zSvZ{z6Ff{ux4QscTg}m(!VQVM5e<r#`BZk;hsgzpD;YOsxPO#HAe9y*X-Y^y{sV6w
z%@+EL`;+Q7@1m*+LTGA;sfGrl>X!my9rgh%1S~=mAOu4&5VHiK11$0nIndknp2%Mh
z$!Ao1zKL9ZFDVYNv#2Lqp$GcJFcJTah)R8<P(Q#)7J*KlzN1G#d7$rY+nDRC!O8l_
z4$TSaXqUW1t{%UcJ#%<|x5Yj#=DAqRN5DU2L9UbFw{5Agdher|lSLQxZRl^JPNT_#
zBdi?|C@3RRSRG8FB?km<s0vJBLjw#HL}d;jcw-gBkJxZBl0NZELrnq>M*^fU3R|IK
z^-CKWHc3fZNGxe&t8igqlMtk6%RV_8KE`)G%Nw}S&ckUCk$7v*$i0V<5gXpzJBo5y
zcha4hh$9g<wAg}BU{J6k7}I(kltL&ZW5mc$So05tJLY!D^SRG%A|{HanxLSnYGkU2
z8y-*8e$#$aZ4Gb;=Zu&JFqj}WKOsG!+_vX^R7Luayzo^KRS{JV+Z?097{)h+EQYdm
zuL)e@2I1d}m5GDEyG3-0Yec~bU@mNAh1^ZJ8jM_36EQ55pmQm_O$@ZNP6T2hww!o!
zm}1+%zk!k(2kp3hOi2Q|LKi|4fPtQ}t%r~Y+zF|*mX(a<(8JZTIvxA?5IEfyE~7Mj
z+}=6h`Na51=0)MgFtRZ6YfiHqf($Ug^9?flB#VQAHnJ1JQbD%_gPild`R{;7gNImn
zi`otbUzuN`(3r%I;KGeEBM4A}fmw_hJr2=>aXP}7d{^8Vb=*u$QJ0ITL!fC+QYRK2
z2pdhd*P)505rwjGnmnCqHq5e!G-q4nAkfK8xN4bzH>oNJs0kdx9Q%(mL7_Z@*i<ZD
z#|`N^K;Z$5BRc4lu83S`H#SJYZi<$px`}2*X2?bal6yp$$GmqvR7J$VCkapTocW3J
z9z-3+Wq43^8f?K7QA2W^9gX}L(8i$!RE!4x@bleT@b#|VgMpyR2{ig%K10cTP<VU?
z4zR@Pc{>ip;;M>@Fx=WxBF!>nNww@TeRHTA#~Iff(pgfM1p<Mx0Xi_%q^KG;wco`Y
zBwu5y?Y{%y7G-@rAwYFw2W;jx??~Ox<z#egtH*%3#;m>(idL;^`8vQqJ5m$S*5$pC
zgAFVqxr6B>jVLw0aU+tp0?)-s27!wJ(nK*N9LjM<6A*C{B0#D{4}qO59QgA~nuC#&
zU=tu3lpD=4m~5L&K!J){nFwkr1U@aoIxru_*JGvK64eC363Iwa<qQxTCD(SMK==p@
zL=bd@ac|fdIWY*7k2>ez)0gyq)6pu#5+Ox@TtBu||Ag+4`DGr+T^pPO=U|DYTyr#u
zNw4ucl|zt)+bxoyz%*7uy&XxfzQ<^gNEs6)3>XaIY_=C_+Ni3eb~hoy6zJ0Jf%gEu
z62mGSVQD}pRwO9xAFAX#m>4xn7X|~{`#Nb&#}WK57Izzu7=O0_W?<?Uu=#I6a$^5f
z|J|6TXZ-YWEwRK-Aqw_FMv0D;aZFT<N!dOtVSMg8j7VQXN(~@EB_~1=%?z}VKm;+k
z5AG45fFvY03&bi=oRA|J8b<`AvqTd5bKdj~B)g!=RyR&6{d17l2B7TebGdfxX7I`q
zsSyrXr4Lz5?RRw&lO;e<GGQb*2y}HxI;rfsNrdmLo)GvXr=~>=cMjNEe%$vZL{+8h
zB6Va_a&;t$GErgxp?$&~gM<+jSCXBSIVwHHB=^rYnJ1A`u+mNDQg1p=vXnYbLSAE(
z%EWMiBjW)_dilwd!x5Gu*w`z?62Pzh4M+wC#sQ?npn;@1!kgyWX(&xVct!5T2mI2W
z55V9EVU3~#;$O5oxqAS8iA@HS8>UmS+*yClylZ5@$az0>29XUXB%&lf+%Xr$N*tZc
zRmirlGnfx>1Q(xdos;GoABlMiee$PHV?YmKVn+q+l@5?mnN0?YbcM$png}Q$4{!%$
zu0nil9FLu}j@VwpKA}z}=_V7h4hzN(kXEG0Pa+78U|(gZ5ZnR8VQ~rbF9ei0<A>J1
zS&%<tQ~jN!3k>LEhT(?(1BzixnVDPJfnGb`L_bgF!8*sRcw!jCPC#N_l)=;qR43N~
zl2Q;s*Ye@n;6w-3u9)|p&|};%84P>oO(H=YVi+NVa+31*SV~2vIoT55KtkoY7nN~`
z6ENHOl0gHC5G4?jS)gfX0tre6CM2Pdp=d~$fl390Je$f9M<fFL_2i#LL|gJ1hZ#E8
zmG0;D#4=nsaNcP4(k11rJ!F2NsX=YA*fGOq(fB#pZqvUMGXEH)0(%t_P-Ri)5O?e!
zBsu~6|J8mDt&r*BWM7tCdvkH9h=ldcYA<0vq`J0mH`FuT_3G6W@>+!aCD|QcSn~09
z*0(_2=w0qRyU(w{?|=+C3?l4*wzJYi@3Vqp#^6nb5_cr%5_>{U+0#769#{*kDVbG=
z<g`2to=9i5Li+59AfrR2tEf;ZbLT|7kqac>ZB{VV0v@6=n}dYRu(Z^L6n@i(djbIo
zlOw8TKT<P*H@iLrXX_NGr`l@C-DRQmzE+Ydq`Bkk51bQg?ab%0vD7GGwRi;G$Ps4%
zn4Y-diUV9sWrr>TKUR9=c~G?E#o8XIhBV(F(*nKHZ~3)OU}-#@%hE+6Ql$s^ZGozg
zh=THX_-s?jU@yvE_r_Ad#L!%CSq>4m<?4yc%{_m8FB@ftH_6RUX5$V)>WgdYWaomO
zDfG@tsF*j%a5z5U4^M-r>|zdK6bvU2w4^V^PII3h%y<y&idcfn;Q%Uwy#w%W1@I!`
zWP<ljI>Pb7la1E@H<}^hXbeP^5IY}J>Sm}+J!}lL8)Fi|zRnEch9S{YRV+<+RKnUP
z*ZvRB;6z$18o>6LmJPOuHW8TMM6ytQS+;^BO7!!m3OJ428O>#zmU<5eRCe}o?c+SV
zl((Ju@rji$TKvWk8MQz_n^2a8Do;2<qiYN+k@@~t9p%lzKC&oZp7$05Zg}VL;n4-U
z#5~nTv$cMk^KN-1AouWKs8J5hBYHRFeQq6GA2+Adyf3GQdHVCAp}OmBo?;QCqsaG1
z8rC6rZ0Iy^a!$~<<4}%{k(h%S%bp)QXO*M(WF&ei#Is!yJGwuc=&wWU2*5`Ob$gec
z_hwd%le1tzsf1txNh!>MksXfpq{0DAA!EEzW7=uSZ2n?}_w}jz;|9jZEIpEoCKMDi
zj#$jd$?&7`O3opT2ZmImV|WqH5J2qUbPY-y=J+;&Hr*TMWQFE*>OsZ_ydUoN8?Av-
zhL0{tT(i0hpoJ)%`%}C1m=DJ;|K6$zOvuSvh}-wlu8kISBX@EY1e9a4GQg2L5(Okt
zc+}Weu4LMW;&qUn4hVa97d_QsBV}vYohm9qhUzGe=D`A-@h5%^SkC8CN%u!Vnn$~Z
zfI2K(zR*b&U9FPw<JoGNHBw>uV8M=RyhrELWNeMFyte1AB;SoCgL{#as8sVXM3Dw2
zCk<+|*TgVUo>PPDsYgr>5vs(qF}oWsq$myHH+TqQb%q|B7eoa4Ta$7hjDa;p9CXo~
zL5~5aS6*-D=`=|2#ZHJHrz*0LIR{WeWM@X_t$K7v2SYHE7z5Yw#H61T77!Ntx-Sy1
z9GF^IqYVAW`6voTz{a1b6lfZHuc+9nc|YvWPK#p7crg}>n<`-zXtM<;h<+>bFEM@q
z!a_q}wYutPRY*|-Iq4G^o1ozWrB%#PV=2H&-%}Y$`s9LSVz7DHW9fvUEip;RC^94%
z11OO|WCSFlO^0`NWX3p9!0Qgg+S=~ER5i!q&Ja=;pElAzq8{t0PHZObWRgkQpPl$;
z5kDkw^Z-(M2qE$w0;}OD^BNx*np-$}k&sa232=!U2oq80Can`i9-{XzX32ywk7S7G
zvW0fY8T=Qq+cI<>nt50z2WjH(cGH(k_Rd3tBfz=Q^#o-!y1BSjKLt0>G<R8XCry)B
z;IE%}dBdi$^n*4igBd}4Fpy|sN~4H~P{7%$9jZi2>wg#8b!^JWewrwJMT{NO(FJqC
z*Z#cilMG)f-!vD9-;_F&gxq}w+&w%6v}jEnRBMKpzD|U~Og_QnnsSStMu;Zt&VAP)
zz|d-+S3W3)A<g7`ht-=uVoefixBoXyA2>JI<EFpiYgN=y!}z_)KLmm#cF_Brj2E2a
zoFunmF9=$BF@;b3x@zPo9qDuC_UZj3gAgkIIY8iV+sn{g=7B0B*BBnDF)GRq2!8@<
z8i;0zuFJ*dco0pzgRj0FwJlJM5md0lx7MAfSKA)2iWB<@Q_FP+`V3P)UqOUXpT%y`
zf1(%uck@;8g#o@yk`fvUmF5ZP>A)z-1%u4F`^gTdIMjZQW2NiA&pD9Zyr%{Szf5%o
z=kH6Yyi9J88Xz=hS25j*h8t7LLH52mx`KxOjC|zc59ByZKjZIzK4^E4yzeIr;E|R$
zOM%039ym?}#)o)>p@*2N4K0)rg9w)92BkvH4|q!~rjbudprlIRkT*1~F`@~8kdpw>
z*uQGO&Hk{(+$Zt>$P>H(y8ki!$+!<s`XCU$$cBSlqz`lY`4gg09s?dDp&oJE0TOhl
z`QM9~{l`<&2tlX#CdRssVd>(jz*9rc26mIf1myKPDk!EJU_mg75qiII$ags9UaX!b
z1KfH8)i$uF00&;mqk_JJ-R%31vyn6&Foy*HSf8-$T_+&e1lUFeM}r7=69DK#qzw2|
zh@E<W%@cqpNum@U$B>?2WY+9QnmUTmF&hwQ4Zuh8sZJRCyu-l&&?kvErh|*xl5_kO
zA?om8e{OUKaF#KH<p=c&ek0>s=`cQXQpP`a`f7R4^<TCp-Z3%E!~Z@Xg5npd{}0&t
z!$<qeN-XwA;F0-z_`12R#1j-S=W|Ann9-xf9D{Hs;B=wYC*HrY!Fz<E|4V4^NMs+Y
z#HZ#oFECFR6>%^Q(9gPE9fgFZ5e$w#;GCZb=Q5EE6%hoNk>?xsCJzKRJrEr|f!xrK
z*-{+`SR7y{;LrI+Fthr}!jEG^OGYBtHAr<X5(`N5u?-qc3Q`3cAlw>|iD;k-8cZNL
zehGV%?IHUl{@_{rFi-6d><9CIF7nj0rsWbtpl9@d6nMY;4YJvhXKKa#Doi1kn6$>v
z%5L7W@tZWg`8Jyeh_)S^WWo=hU8(Bnea4*4?6EJ54xgdX&Xn<%_Fmq(iyJs#$9->G
z_CxhQAN1>Ww`n_v-e=Z_)}Pa4pLDN~39KagN4{=31oS86NF0CSJKhfD3=D!TBjbP9
z<w86GC$X@NA_e?_glQ$fj07Qq1_M751spS{xBPzx_0Q<5mtVsxAkkpY?F{E1hDMmR
zFDiBzji7`ucQAyFN5y&0nb<jg;uZJ|hq5@==N`HZg{K^YAFiazaZK&`ERuPRdLd~f
zFWACyjUh}SM%jT8_zUO$!_lDU-H3V46@6Z^%J*f~Q50S56(4r&=ukc{hR<%WQ_>UK
zNWC9Yd19B4;ttQpjyIjH?9LuFppc+$nec(38b#z&M;sJIzmv}!Nti8yBx;Ah2f@d~
zohYJ+G@-Mo;22vAhYV_hd;DYhHawIu6-@;-MHD8z2=qSCgb@)o*ilx))_zqW9||58
zL1aPh3?0dkOa?R(AA#s&p^SY)KpGgv8WiN1ktrftL+(#*^P#99-@X$Q$i?2OB4()%
zxf5_;;B%NS_21JE?v8%ESAq`^#Cini4&?Lhc46pQ^%3>5f6ybq2T#~<mLP!f6Zu5!
z{qL}T!DRieSq*3<)Ssp)_RoXaooQ(VpSt9K#`YT2kuPw6SU_KxB#su<&+IFP%(JHP
z?U_jdLtCeag^Pcsl`ad*ZN#Y~LxnqvutV>K-3ji^=uN<>g80DYRtvG1rx+@kh>B#W
zR6!wJogi<g_UR9RA1BBHHZ)k@{DcGNj|LnVf2<-55A-qmS^2Mup?Iew*%A)O37~vO
z1jJ0rC`f?wPJzn0)=NeYyTgDyA~W{VEdRgr59U_J<6CT(XDW*gO@u+tn^I=UTsSUh
z<53!Z${>hH53<NoQxL$xNasi&iV=j;9A076(qCb26Rd^m*N;TeZecaNlNkmm2d)z~
zMGvsf;v59+Uekb{3K;d_eNzDR>#!4J0#GyQ&?iZ6hq(#W^DaXH`4qjNT=BlfL*XDk
zFJ^r(Pz0X|0Kt6bo*h_ltMNgv$YZ!WVVrgzvHB><Ha-xm=$!t+^nmt#KpW4rUg3mx
zlo0l#xOW?OD5^hW{XO!6mL`~;P+I^{>C;&Ja{!Dki30pP&z8;(j2A|Zqx%O62|agr
zP~BErN^q7NoHNxAzMSir*J8U{cYNH_OphfhcJ&jf(NyAQdHRX_Y*HhA0Dyu(@2Sch
zkqv_p<CFZiufeU=uwmP<@F5?YzY3qd(TKrn#5#|#Qu~`YZd~xjDT+}kM5lo#tdZQ+
zL9riY@D`xR42Y1_c08T@kmeo`^HB3Li38Dn;h;Y`9LH3HIS@Vnzu>o^+W%k@C+I^M
zp%?}*wF*Kdz+DaWgN}|K`3~$3_{N3f)9G4{Z1R!!2@o1dX5xEZdMNX2T|tZ#h^a<1
z;mFDwvFe5yMC*fW;@b6?7d!b6uzic6(8>9aftwT*pOg=Cd60NwBO*IR&SM0oVMvBa
z;95`0$5zOXA=hQuetl)p+8Q)4>Pkd42iO))24jJk;7j9Mfjg4)LB3AwCgzl(^g}BF
zPv1Vqdo$BRrXeB|KqKofjodv2dJ?_F4WehFfzB}!kVHgI8V;X#-q)z_;oEJS%@4i8
z!+~wpgZ@96hKeF07|tgQ{a36Y?SlZ1^*v^FgcBh%48dIa==A4^VBZ_l`Ezagxj!K1
z-S&KDeKP%t_9yGNEe8hMS@~1P=gNvQHv(}ICP^VbwgliGru`?@K}{gzm_ox)p0fdN
zD+H8uLGUD0W&`-&+%-Yp!3sc=WkixZne4m@h50lu@?DTmUX_v}*vBSvGA(MNLg|?|
zNQQ<RCLSllix<j1a)#5Cyc^1irJLmJhqyz6p#Z;sB&4N&uwqbrOs&tkt_4FSsSO)C
zTY-`N2%+6n-Jv38D(<E#hjq`$t)=d;I!F)BI|~}nj>lV^B&5=w=_^Huz=Qes4UuC>
zAht6oMufd+7=e1k6m{-@Iu~stjS!NRD3H(z;wb{3oJJP}fWUdk<l3svz?p!-`3c9P
zp@#_^2gd?Q(vmtk{}|98YxG)QaQF;;;WO+)0Mok^FazfaUg?3|(mWGzA0I8;(0g0r
zm!hy+Pb^Ych)5(EX!yavFfuWw1&7cWE|TcX+!RV-M0(ii_i<mPXt`986-<Q_%Cs2x
zAb|MeH4ZmFs9`j&$|wscxrY=1GSEy7yCF>w-(L34tZxDiK-j=RlB6<nr`I2}92#T5
z+q(i#Uj}**t{>e=PM}-BJp5@VI`T>&B4HW~HK<}!St;0CA|xk}o>;SiXq^NY@5VT^
zi9$@E(i9N~vL~32g27<YPX^FPx)up1LpY4I`K|i>YLp!EAJHE(H=|STGXo8j9vBUs
zAZU}BQZpcQoTeE~c*G$;0~L#;jCcefabln!Wsw7jnU4LS>|S&SYv~hlZNh@zNk(On
zM1ltiDzudVQvfly5S`v3+|VD(2_Yf;2~I2z6qIlg!C-qyLtm7Ph+xr}#1pueCwZK{
zam5dLQ{qYXU8*1H{g1u5K0o6VMpBeoF3`kj79=mJ6jDDjDp8maX@LO>QLph%UI1bE
z5P}w%lntX0T`%B6Kj<WMb#v?lIjAK5^M6_A%u_ce0oaU06TH}d&d9<3pm^#Hpkq(B
zHNWcs<%}VZGu7eH8w5xXG}-}%m`;G7tr@43LQ2R<aFVn&`GCQS5y~*Uw4nldhfu&g
zSwFTOhAbSt(nN{y@k2J7A>l*W2i{08?ek)LBk0}%f_#aF37L~Aqr=095y5&C1qA^q
z$<rtYuloP)(ozV1n7Pb&O7XCef`F=*;!3TvX;{I6E-w)c;g%yEG00jDgx$%>>Ttx{
z_}7qG)SYiwc~9VAq1+Q-3|G2uOVFNG@uxvPlwF|rB|emslWC9SKN`DU5^+AHa1thG
zC<GwcY>a`(FOXRYZi`1$Qd#>Ej)KZba+I(9@W7JNq!zdq;?aRmQW$$3kokJhccznL
z9wX2KJju`wp1JGPQ6l=$+-DG>7yqbAJq5}RhYJ9_l1aS5&-W$=7rfnxf*hSNJ|RD`
zIEd)$Lee~g05EALc$gsVpHfX(<UkyQN`Zu*0SL>+&#gT5&T#VB+eRCl=O<)4iHwu_
zMf`^E(8N!GND#a-8JB(`xD6wS&tc*^&aqJcIG{v5;Xv|W9)N?=UZzmVqu+z+hiYae
zC{7$d$K~C9f(PCGkY9~4AYbcK`T^iOr7QQL_lj{7_>$fIU5d9YXbs0c36L}SY30i=
z@6YU9XBbGAFyY;Y5^<Or+8MrSScRdTB^;FoKy2ur-Xc53e@wX-+5DbO!}b$$PF+lG
zk2?nWY?L|~<p*_8hwN#em-)Xi4kyk6Uljjo{{ZlxSSP@JBk%{|PsR{D%kml4y(xfj
z13~aqfPH|Fx(9LeuJJU0am~!0(|gC{$HC*lJ*dB^#0~L_2cRJKf_aEuWz*CcG*kM<
z8ak&Uypd>HXd+F9KQ`o?Gj_2Q`_+L1r>;zTE^o<z^Z@mNf%p-ZW~vWaaEzW1nGrB_
z;;>1Uf=mvR96O4SZ}LsKI5VMxY%m~=zL)n6<4@v*%WMM#+&Bth;@o)9{X^nU%m`^Q
zkP#1X-iFE?c%iVEiT7+eLz!pB@Es?wa=cXBNTc}!u#X}E?)PB)U<~ucOe}>MMQIQ|
z;X8??hfRBl7`!mto(b`?2L&Cxpb>!hjGy00X;Ae;l;nNLY?L*Se{!J`9_45;i1@Fe
zycie!U)u&cw31|l=L6<LKfodgpK=OTiYQH>GE}KjqKYZ-iCBE8P!<aUf{J1a3Pz|Y
zqKYZm#S{{FO^l@Xp--4EgXa0oW(QAD294TH&e{5OZo}MH#=ju=lLY-fM9{;b^&}@l
z_yh1f{c*B$D)Whma#b)B0n)sam$leadPJKc=Hju^9L?%Of=CF4gwD!oU*FtQ_oLuF
zzU1nsQSb!VpJ0XvctY?uRE~fi0wEbq8z2(L8=}Dt9QH@rW%D8<jUdX*g*IqFk-9$^
zGxU-!{eb=sbxv}Q_y-fTKdu6bn~?@h)+Y|~Tg1UL6~wYuG@lB1QXbWGA>Hr~XaUT@
zGsKq+JEv%$8OdJPv^*f?9<d`pwbdLCueBh;1=VR?Bt3v)7#u=WHwmCk?>MKQfUm?S
zb&qf&B7~FQLC}KyVBWs*`@cW-pH7Su`v0@vKa3~w4lwA0T4KPMCw;r~z8IUBFv1(G
zN~<C04VZ3h+J<Z(+|wh3fbC)wK}kTCz+r}t)Sk`9$Z0*>O#!Kl$tT#<{<CS2i7hq~
zWtuQ3i4-IysDlm%?0yTx@bv}^V6Q1^pY0|+M|FRuH>9BhX(`NrP%riz92uDos8+N%
z2AP-6@^+J+o-{ZD0wmy;#x$_$3oW+9sg<gx6tQJQNibZc++eIoBt-AJw9*G?LBgH!
zd9R}hTn%2CDi+T0S)Uo7w|H~N*T9e!9=D#&;pLGup{OVw<QnYZak}Q{g<`Bb;#%@F
zN^_*aIG#6CA~flnb;=uZn5;WETh_oQIfy#LoQ)2klVny})ms?#wkU<EB%5HO#K(Ne
z@_O^p+)ls6^}2v@h5T<HAvit~k2`Lt6^2w<0k-9dF_SQ*uin*@bH!rpxMD^|AVCmo
zIDvwirwn?!<kTr_;m-5wrR%Kk8^KB)A+6#T2PY<9F7|?u;1cv;ivS!#Zg3|VDT{qn
znK{aI0x=lRA?uCnW2vVhtz!-|4b90<EimxBR6XnL)evOx&t`A%GC$<7DW!hH+R4&Q
zs<--Jl~PF+2tRbh+yt>+Z%z}3XK_$vFzJgcp)DnnNN|PRX^-06*kt1T#5}kSamEn{
za;481%(zIG&oT#cF1i~G4Vy*%UA~h{Fu*v0b&iX)^kkYCxreENI7wc{BuW5=2eH{b
zL8LhaS(wSV6o3pNO^#y@IHzkTA@agE;eja?uvSIIriD%k|4e}LstN*XN(6}S5M;#?
zQvXz%C|}Ei4vlP<l1C9lLQ=HQP+_7bQ!s@(1bU;j(E3h}b)TM$c2Yz}TtnIhllr7i
z#EJd{yQDmRJOiMfi5_`fG$BV?D0g8Kx^Cx<2Xv&95SQLp!1rHZ#ZJikR1n|!HHvuY
z@0tTf71JrCg)xjL^Fnk8SB;}bA1ov1n$?L;J1}VF5w<;rtMGf%ADi#cMIuc;FIU;z
zEyU?W7>^T|Px`tmlHH_w3~SmzFId4QBy0E<x7;wqi0ZpxPWcZ%fUr}M1~0P+2*4Ak
z$S`e#d!6Nq4_o?GxVa?uYuuVyniz^AiHN)|Q1q!fGWDzlfYRy1CXviVkMe)MTY_}J
z^9C7}lKfLQ7yUz8Y1!hL!(GQ=-Zxvr@hgB2U<c9@q_m+;1p^RJlqt5ZeqNqbly(fy
zr~@)CrwC7xX&?*<c1yj1&WC~@#uvl5M?P;ZJcxj{BfT-oC5ko}%`pURPGB72U&@*e
z=lM(n-amkT<xCIVu@B_)#6G*|wAA}_8T!caA`ud`y%hQk_oV$p_P>M$s(!~BNOST5
zm}t<NHmOrd2U-{j*g%iR$I9nUwXDmA|F{hw?)hs22;>JKdH{y$2*g4dN)vE&7i@To
z@gyDS^PXQnq=-EfL)8#DB`iNu5A%x)@n`<=kA51qhw<Bu<a+e2`vdZ(^*B!xY%DBI
z)4%eHy5GHac!c5eC-MzNqXj7QjJ%IVhEh2$Q7Hcwvv6R?5_Hzn{2M4^o0;Mdp`$`c
zSHHobu#jRmqp^lQKqP+TXRstCL7;x-F`@+jh+ts7KHX^xKtkgPeqatM)B0X>M_S50
zv0-!){6}67%liDF{wbN<m3`WxUBpF_G|}m)!@jpT?K4VHMEQ>dKZD<Zd*U0l>KG<d
z&UXWF287rXw82m1Ox!0|>_A@^K&HqCgXn~DC%3n`ftj4WP-gAflzJ~oeJ<&^2p~NS
z?k3t?p?URQDHM+)kZvk~J0^{szW!>8Dk`ZeW~zv&s-S1Ez``gdstST4qJoMliyl+i
z&%gR~dU2X);rj%&vCE5AlZjLLVRtRg-?}QQNcy+(;IW9nH@(Bld$VvR1WZh`)-*#u
z>Bkj^&z26m`BO<9&mS}4@6wW%_EeD3E}=kV9%XzgohX~tJPJZ`PlNpPaF>Y~@O4#a
z4t+QrcAOoOCNP+FN9vpZ6iUhQLQ}?#(%;+k2O=gAe{eAF(l$mxp9~C$fsKwbECL3;
z@%+4vOh)ldR8-Xlfj*KGfyfDy;^dEv`HU0$8}NsMWlLd94})>d#4t7R;2sCidYeKA
zj*sK{5H%qvM2sg0z#$!jl7C46dW4)3vSGG&+4{rKC)P2HA>V-;<b%OT&?P;Ib;$-H
z9tj$Rf(-uC51-lcog6p@@Cjw&+t>{1JA%5>MHN2x(!o0b#;h;&3%~QkA!Yb6QOlUn
zpTRJaA}E*s5^#Wgy?6cw@_?r0coXN1#C?+k@mmUArHY{R8u00eT}S*a1n$4FEQ_~{
z9X+6LJ<LQe6p!v5gMkma4fXqf51;NM>v1#L{zjc6?}st+eB%6~eEs1QU}pRyi8N41
zeIv63im&x58`E>VIUE)*sC1q`i;^6k-eu%X8z9m>)Prd~&+>mTc%(g4_VXdN={TYX
z+A99jd9v{k=L9eeQ+^`j=s#h&-kvkSLiMxNc%%%pIye3#ez_572!x1OV1R&xh@z^f
znTaB*ilU+-l8A;RC8lC1qG+Njs)(jofR$D#qM3?_iE4^s3L+vRDw;44Ngo3E3=g9D
z&md(xCSb`P=CJl8I7Y>!h~B5gY6phxd_(l-^J@*cIP_jyraoJJ$&-GLtq<NGZ&?n7
zIH(6;#7q%k4$1-i0ORi=i1It7n8DyLFYg!eKiaWsoFAO1;823I0&pl$Kw$PV31e%~
zHn&g>1EALX8_m?ju#j5D^`8UjkUM+fHQ2WgB|mE)a7&av<LJldH$hKW@0r(9T}6U^
zxzDT;oJcFIp8mY)s4I$Oh75%H$3z;ma%eRQct?qmvw%!Zj|?$L6qN+g7v{-=8HN-3
z=8R`BYY?>P4rI(VR7D|JjU_M>B`^h$^bd&YG$)}X;)j2Nf3@~rj2q!~r2Hgu2hq;Z
zOKd>+K>KZOd;KU{Vr&}-f(wm|7)D2N5T;-!)!4HS3Unut6hS#Q4_K0BFnz8VC0&&K
zePn48Be0>;`NNUXtMDI!S9&s!Px;v45#E?>j06o6uOSW}Ts{FnP(B165}5GJU*(g4
zPQ$BOHL?88$p3Ua=tP`wb|)=J{bX@r1ML5~y$2*bgoEKEGAC(Gp-n6f(zzp&v^X$H
z4_3Js7h5<xDfnHElZY7mw}<4&;=8nr%u58T9jMcynkgZmDM)i=$2k42q<V~t45a}=
z_IgU5FHg#B1ku1F@gYA-V+j%*mGTD%-Wf0-2JjC*8YyI+#ZU|$Vj5@sj?7Uq1fh-$
zF&cTn1{k?pV1I-^%Dj5d@98#uU4Bg`_jjQ%^bz*0wCSh=@P@MV6Jezx0ug+e-Mk49
zBusJOq8OE7fZ&2?!CtGK<iygmB1mh1OgZ^)(5vqxpM-vRX$hs1=S&<^+4ku^_zk3=
zz)nB1{sueOQ7*Zs`v0Kg@`la_dlbj{gUgqisYk^y5d8bi^;GHekB2mMI4<)O1Q(px
zHcg&#sDcUWP7mWAKe=S?z^@}Af`bo0@o?BO0_+!@c$yxw)CWSnBl!U5KO4B*0VzT1
zqC@ajf$Xl8=wKjvlLrpD9W0$dESM(1G#C!_rj3K>y_9;OYUOwXpaIkiuObh~B^F>#
zAv<j-tP;SoLWfxZIu8RXsC=Fx1Kc4GM1Hw^#p96k{yaRs;9QpVn#Mk(tIpwK3`3yC
zvdJ%)I7iHSh^W|Yqi|#2G~w||c%<-zevdeuHNScB{iDbrb_!uY<mNE_fzK5N8TYF2
zuW~{EOpCe$_V{o%lDj{4E22N9#_`tH0BQvB!~W<)=Im&y{T}tZ;`lxE$94&}0W8GM
z%I*_Jzepw<59AmR)-M#?KJ@$>|AoOd$rE~TS4eMO3C;p;PH{aW@b7=*8h4O%Db7No
z><K8G5Ft?5dI{tFh;7^4P<tPkfO-du$Pmi)#WaR2kZ-DWKOTVEbO6Ejr<pG(q)FlC
zn-G!vz~l^nl@<W~ZqW4{OMr7Ju-siHg@8X`j|3^FzLInzJeN>em;`l3f4L%8l3-c-
z#Cno4j%5l^G@4fhcY++jga*GzsKF<U@-gmaVUgJ&?fYhljx&xBZe;=fiOq_GxJ2IX
zIIwZyPLfQu=-i(Y@%?hp=nEhUq^hc*K%gjj9biY({Ir__I)so&f2ZwdWBCavFGK?}
zO4PMTN=nyLoFPMEydFXt7fL>!!r1g+A%RW0Bj`OGUYSUuDE`3zOoo^vIAD|%K{jIG
zLij#tnD24}hK~$q_OLlB4gucTbJ8={`7t#S9mGg|+OgrV9@F73BAO(2BnuJ-0AvwE
zGBFBaF$@VfIr8}!dvxrNj6fT}C`|_B*9aM{Mh}b(6`~kC(3RpoPfoOt#}s(LvvIi7
z^vz%&`!R>Q7upn}KQIULI|I3x0(IpfN~#lhngk(HA==9x(j)CaHlL;P1Czx5GnG1f
zdWYWQzcT|f49g6V;%qwr!mr?j15&SGLY+pDFb__&8Uv*daeC8F3EA{RXbJlO>IvOm
zfI)yA6JwPnfS(Ju1lTbbz;6WJy<i>;0P}c3>DZvSv#p=+Ax~*9+7doBSn|hz)M23C
zfr@{TxW}a3yI3!}E%1IY&S^{T#c~3Gr10=CPtv>3w=Amh<j!orU`vEfvL7DuG<FRd
z4H|!pf0mR9Ae?m<$E50((u@(ji05)6NJw#!*axhJCot^&C%QDc{X*Cu;O9S+c?^z-
zP4Hkz=RF1MWUjFkH|#s~3Z3&;%sqx{!iCSys2&`YG?2*1^DCHi<?x_)wBZK9)bu)^
z9hhZ|vUk`{X)kz1!>e$w=|3egQBk|?>FcXUXAhQhG3Z~3D4e|0m)+c*h*1zxibJF>
z4=yD>3>vOCgYF{y^8{i{(NoJBLxi6z2|goP{7=Fe`5M*xAw>$Ag`|ooh=WEpDz!vL
zBL>w~sv^;r0yUy>X=tJxMhIYtiY6)<n^@6Vs){rb02n9<(M3e0#vtc8nB+@CGeHEj
zat$NVK>omh_gGzYMMVu4I_49sGq+=M8Y4av#wO?GkhaJ~Bm(7zLpsNc1|+PEu8jc%
z@t@)!JLD%rK!+s61r${zkIDA;(zbB?V51@QAjD>l=WgANj6Yc5;xNGcAs@bKo8Yll
z>SXE%3)UZE9(k1NzEhHJ*nfoZ7(7RCGlz&VpN%`lKkFwnW}f;7!67#*f=T-Xla-O^
z@Pg2VQUOT&@F!J5K^(@;4;8}%gWiGHhIJ9SO`yYELuoe+A^k20ga$c`#)$zhwGf5-
z&b?J5)+AUTpQ;dTEubU=;p9JP9zZbr1lZv6b_Zw)E)hY&NeY5N9pK7RBO*zpzi5mA
zVC^{*2ZUb~`*vU_@}FLxpU6|Na<FVLLFOcFlWn%jNn{$~0^mp&Q43O&)W2ddbuQvB
zn+(vLPOjC2Ttl2wMk@OfNMz80lOhuVvC?Q%Cqf)JhLF-oZBg+L2gN?n;0|0DC$%_~
zAqTW2BY^7~V{JPa36zsE7{i<n!IGsYhdn1eKC=%aL?0jn^AcygMQKaIUELI566B$F
zv89L&wHk?KxGt8T@iT*dedKpcS=LHQE|nSQao|9-h<@oGwha$S4~^8~DJqlC2zcY(
zj_P#3h|w5D3Sp-QaC`)U(1mDeq%k2I2O(M8Sr7C7wh{fq=nf=;h^Q;GFe|)3LCG{g
zaRU>i`2#)@?ScF!6s%YvgSU~O&OjZ~4ND2wj*o$Zu!rD4$qL6x#CR%Wh-8SIOacrb
zfG9kD?(ysO_U&h5^mZW8c6DFMVBdTev_{K!Tt+V(4{Le6s?=>HU5TxWB$mT);X)<g
z7yF$9JG5|0^DCl@6!<^^gLp_h2AIJFj64P+CJE%01xo~E4<uDHknf-{hq7W2^m?Ov
zlus0a&^gnY4|qcZ^Bgwq)_s}6N%9g)E^pAw?Unm1cP<c<bB8slYaHNk2Sb_y1{b^b
ziGnBlL3&ZR^*;mX$^!-<li9V`@R}a(sn!`~k4(K3hmj|RlFMO%iG+RzVr$=;d=bSq
zu7p0q5+apT33(sbWBswYUiv47i46UQ<4F(^%wyn|l)33Kii<DCOwR)e^@b>*#DT|d
zV5f$o4|~f~-DWq<uCz*Bzo@@p_l~Cw<ZYo3Yki1)@8b{Qod+>K#QQ6LnPHe#6%hx%
z!>S;7Oc0th`RNC%u`%WjJN+}{VL-#|OA9x!Jo@P8JvNi83I(vBtt-b*ae10cz};ep
z4oxu0ue6_Y=AW%UPx!x6@&4(EEBbKUn``dPeTn?K`Exqm$*_`dNAWA6E@aT3a!`?k
zTOt}P{b%pe<fRQUqQrjtjQ?31VPCHkr8A?f?yJE(zEhbab{_HL%EL0g@lUQn?2`2I
z4iPAl$Nbi*7K#xmrU)#cG>`{y*o*L}rcGn80n^zuBh33`{Ktl1fpO~c4YrLO7e-)3
z38j#bgkfbYqe-A*!YL3{29${z0>pTV0e1dB*CrMcTL|`uoi0_Y3K0SQ25=BSK%O;4
z5)&Zi6bU+#51XSN@J3lQpAS|piGmq|eSv|MFT4IYes0sG9_mTE#C7OHU;)R3#55m_
z+5md{(}6UdQe@;Y1asD?4Iv-tlic162xN@ETzn*RHhtq5$Mh53`4#1s&)3qyWG$}x
zB}@kgj~1;Ug_jM$75rgPMcZ&X_M!rZId)M(MwOZ-u8xDATpk2{#a!d3K<NH3*FpOa
zhqWBQt@Q-^el7z9{l5yR`wy+>hIY*?EIx4phmre`AEWffN>TqCL+pM-Y2g$>3KA#c
zLKLY{Akerz>`B2P`AJA{Y@9Cx_VhOq1t(a+%I}*+@6HA5I$u+rSsoKg?rf&q%L1EG
z22)CGi?t(4nhdim44TQ}bWZFTzB;17(BujkP*|oMAczS#Bq=9-Y=8{>$x42!N-0bb
ze<E3siGZJi4O0^j8UT_+w3;%Rr%8yG4V<$E$gtiBVOFv83~d(KE=E%b|AZmyDnUmA
z5bqDSzaCG&H3{ypx@rK#EJ+BkNL)scf#zskuOQ?^(=Zq@(JBG~;vW5#Ubc$ZSb~U<
z6$BIno$_Nu+}A}?f&?1>*^rSKMZ%Ubyg+B`VhT1<7FkMIV$1@I97UNSL2&n_38Fa3
zOp!5BK*3%{I2;a)9mcvZ`P_y!`ok6?AP6O--ZV4Lm$@m;%y#HI84g4P$m$Koj$2_9
z=~rm?C3Us}XGIf?{pkAtpA5`w!$1l79=i+c!Cb7I)E!8q&O>j96QL&_%T6SFt|=HF
z!q3-Wi4mz}X}#-c@DE|5tz)>|>$ES!y9MKICWtmjaGXdw2J&y)LDGJadrc?t?mIhN
zk|>|p_?3WRBFB%OebEttkNW*a`QLFd@NH5~wyJ*pygEVHX@7>q5hZ+?GHsnGxF8c*
za3oW+Jdzi&7U|^-#fn^z@W>x{S)&(%VN6XoVF-bPvgDQ=Sz=?A0_4pTwqcBvJP?H}
zErWG8#vD6s&BG*#o{E5hj9{}IVod~FX3toxbf1&Y$awI?G9ID=#pBdi=s1sda3lLa
zv-Nk`e~F`xH{_o5!9(&M9n{e&dvg>6$w%~ueK6Pcqz4l3eJ%mGIOXXdKE0WM7*N|3
z;i3;o;f;ca(|9$3zA7g~Vo(%GJQctZQecH3BVTqsa6Lo(J9_W~1|wgtK&P@?%nXjl
zu3$x4!;(bvsX2p~-MWp=;oW=Kfrrf@<>Pn@Fmen<Q4v*DR6})?P~X+3PX-TEtx@|U
zB0ZdCBNbIw__b43LZtgiAlk(CBiCL!QRopA#SsM&G@Ye6uz(Lx;q+!1NWL~b-;R`w
zd3V?pp2ivXGt3ad;?EfL9S+-V6T>7cYNr<xI{5L>or}+ot<`WREI+eaIF`}SM<{eb
z)hA4JL60oj!eXMTiPlkL?4^LK7joedkrfX{Q4QFjIvoi~QXX2f1V}WbXW3K}BP^<(
zAfj-=0~iT|2@m$ixbSE=2t7`Mfk4nx8irJefzm*KFeP)r<6@vaqd^K>e3$eP`F+=<
zJ@C8ElOQYw0k#Z5Nrq4MdRKv%dl5}bHnh<YSl}t3q2cFLvSll6WTClIu;g^@%l1$d
z$(eh*r^8^6i{4JAy33Ap(YwcdVc{MZ=d?r=xQwhmR5Y*sh!YU3A2A?!@D1WB{A4-c
zp}h&PK{QQDlte$j{>)V0xxtDlf+;3K9UoM^hf&=Q<Cw(p8*@3Mh&N43tl+}192MYD
z!b`|WcuB(JQ6dGfqA{>%9#|w#ke@~>G5c2KA7MtpEjYB|NC`~o(2w*VaU<H1$ul~9
zYX4Bk27|1GAckU?lrJK8PEiL$TWn^ur{Osmucm%vlyjL33mhEz<@xdx!QGQS`-#n&
zH|7oL+jDx&Sce*aK@LT~>z}!4C&@GWzuwZROS3jO)D!p-lWqAE@F(jNZQ^iAHce?G
zc$VDGaiZ^Y2A4{1u)yWSgwgcOScE;Mc{ay#CXS2KT~+$JoA&VR$bt<ENhA6243DfE
zf(WDg=U+=mJ0_YS<-$PfdlSqapSeDeNCfwgCj+q3W*|x6B=UyD<WJlh1lW>}9XT^#
z;GPQpwjiWzjR#Zm*pVOg|IHF)4^rJ4+oCB8kP`&+U7@7@v@VfFd%FqjO)#4dNiGs!
zYe+dTj3H@mB5e`~b_<k#(pR+j4~6ii<Fz=Qh)xO4ohW7k;E41%b)+64)(fQAKS-OO
z>HXV;@1wjJ0uv5T@FDj`E@4ItrorgkeNHFH^FAq_A>U37v`)vhGwAR<eRVuAdSAl_
z1mQ;=h>>B3VC@FE0k5;fFZM-`>KCAITOL5#7ux|qkqiH#1@+FLp$KRG@>Eag5N*nx
zP*`{*6(|5dZ-I;cGN$QQ^^f;`Pj#rIBt}LFmKY$n(hrPx0ThM($;{m+0wT;)_k+}N
zHYWl4f73gfei7aS{Q@F6AeqS2Wy#r8q;P*7{#bZsiH;v0)yT*2WIkTWK%$_L@s_rF
zo@qNWZ^f$42LPLmgEInA$my5Mpv#32J=-Uudq9LU%x}y-zE|%%74?YfcPj|w%Fw3A
z^KlIcz5T#IHeEzKF(vjN<}^)>Y(c?PZVd7^j5IW)NS)G559P59$bDF9DDLkd=b1Bz
zXRizKimA?^Al_k1B&ZSMF<S(WUVSuBhcb~V>@9?``CKv(+|)JxXq3^a0e^B~;kAd6
zfVBvLLRFv3pDyY(u24Hb37+ieQ2ZN#@JGU!2q}S(#{}O;*8+v?rXp(WU=O_5g<`>i
zfuXarB}os&hCyPTj_#5$mIjXeRHH0XaZcb{5<!8A0ib9aAjbt`kBPk>(+2~3wkmPQ
zV@mWcF$1>BRG=yWjR%1U3*PM%+S4~>umZI~IZt6ORO}kf4?;PTsHMp0cn<UFgW^Qw
zchQ%u0p9Z*V;eXU&j$-OtGUM(B<ZLg`dBP_dtI00=!dcp;X1`a#7%}*u!OP&#LP<a
zxr1{@10$uMu2099QgdMkew_f)cv_MpO9Y%K<ln#T(Wnj1ClF_qidSgJh^dlo3>!tD
z7^PX-ZFjO}oYSu>iz^wTChUTIZjWu6WY9xi4hbQ~nLXjS4WUAajtmg^3Q^<f6SfW9
zu~$itV~!#VJ#waFxVsV1t2a>tV4LvqAnl$9(<rntrLm6F+r9}!JusHMX4p~eaM@u8
zfgmlx9H^yZr4i^3iX`fmF+~Ml7F9!vrc3E8PbI<fFiesp=Jh@Pn&CsR$YI~3@iq@_
zyc~_-kfFs@6<Boe-mQ~dF1$<!)bu!pT8~CCIM(R|H6W(sW2T9HN=w1WlNcfG<>X4y
zpxA6T&?~qtC(?)p%O6>VCLADvBbbHa!it%)!>ZXLNIFFpT2K(B#W7Hs*7m?*l7ZwY
zOR9X0_<HY8er4!P1f3-ACfy`E08miH_Cn7C{hrU!DiR22BL|tWqJrB?{)kZ8n>H_Z
zv+g)^aXgsud7GU#j<wCD2_gh3OV|Gn2YWLBY#MQl3_$}_(t15SFmax7J(w{iG%&Ff
zbHyR<4xl38_V9UJ^gO)x*Hz$VL=r|GBvD~FO;^@FA~f(^L4c0s5SlugHdw(Xk%KuX
zi3HHw+E7_=S4aYr;xP(U(0zt*I;{~H2MlloA&$xfQ&rCxtBRN%-BDEpE?8o@oG=An
z0s)NqpOr7L5X64G4SYlURs38*4k;hjBFK=B6BR#+*<tdi{qN*XjSu;Rrv)Mh>kgsd
zqtyN8mtg2ea&8mq=}y&;3Tx-;MC(p)I+vLb?a+4<{q>dD-3#KhU_(X<MTpA&m3R=)
z!ny<Thl%e#!=(>A_--hNAd(3eKfVk_Ao}7>;zTFQ@D;fF-;fNi<si*)M$iWT0bItP
zetYaJyWr6e!47W5e$CmT%NJK*A`i?N-0(oh`#;8H$D82egdPMJ<uc)!qp%lqBjZQ@
z0&m=2&2fm)5B9PPYU884`;+5i_n#wXgIOP}`nC7qTQ=7jnZz#Szr@5_D9&Lb2qX33
zXZHjFOh1O89_4IFCgV-F0OA3P3YuG3S-De-MHE;&@xoZd1YJG}JWN>gi_F0>2$9)D
z?Y1#Rt!7!8J|n3U(o5)mU_cJE9p45~Y=p$FoK@s;*m9f*{fg)5EoEoioSdoJ^)E+b
z;l0`Qo??Q}#0dQ+nC7~3ZN`+pi;Zb8&*UCJ<`a?@Nkbk{==^*`{SIH51KyO3fIOr#
zgkUm6H!(1nj3FriJwU?0H6**)%k#kT&~7rE<ELi;OLysN1KlL(=otkoD88$M9bu9k
z0we|wh;@U73sON@#U1bBJrA!8mZk(@;sM;g@LqchgND@n`cwN1KA`6gggG`n{{r!P
zXEd%7l@srrH{U%_m+&3@V>v<hQY@}$)r$-iVTMXo*qduCq@x8AqRLXyDIx@fkOzQd
z!X<-w%@XKz=sIsuUszz@W7h9B?l~+tag$6J?dj9_M8#Z4e2Mgq1G(I;9`J<wqoDSo
z2>I0A0U~zvlo14mc)REG=9j2Byy0mR@$YW_0tueJ?FsdB!eB_G>eHb9EOaN2tmvlM
z^=)R4(h#IAQ8D$5Ab;7D?3y3_kFxvjVL1lxQJ{35w-pQ#!w%s0yr71V{1Q`7eU1e8
zI=RE*gQwYmm>oJN_{Tx)JqAPWg;i8M1JtaJABYDZdv+il0q9`BMTw0Cj+F!?sVe=m
zkEb?*P}C?rkec;x=fUje$~S=9n8b%*`ICVmC_?Oy7Fo%y?=)CDi-*BH=zwXaiM|iO
zUNk7>AbjF(H!zZEJV~#$HWc2w9<w$AZA_FM&0y#_rU{_**nCIt1U{kqgJC*T-uTOa
zaRol{IyyMc;ClfL&-;JtBAtiwal(cTfa0Fyh#!m|pT9wo;Ag|s;_KCzOnbxR2n{g3
zkHG7j+3!>O|6U%q?jb@6Q|p<Ne&Psb<IWz^rGpGJBlMC7Kgi?%u@z0-iwExZ{Vu(a
z`?9~IsR8yTkJ8fOx*Pth)KrxaANt4rj2RuqCOoQojo<_7r-Q;bZ2td!hB%LUY~ikJ
z-tuQA$Ttu1NWARCFJUY7hQMCG2VTp}PPBNqY1|in9zGvAvI);&DxYa6JVt{EJ8|iw
zc5ulbM;^9!L8Ke*G{!89Eie^76P2a+)V3+w@=mP5HsIb*Y~H#CFt#OB^DM%VGoxY2
ztzu=-gbHPOInr^Zl`D+Do1{w>l}YBl=__>$L;T16ga{CaDQBJ+ZrvSDEnn2_q({4T
z_e?qQV=0eA_3@15Y-lq)x}+R4s_MqjKXwIoq6U;^M<zqB99itvR>N@()4`6_>v8m8
zx{aDfvPQWoL4ytBP-)F;X|t{t8=VifHfdm_PU*q!)V765R=YM11R8^tovK1bV?F4k
zPi*SQ=W5$3yN=5?V{82OY$YkAFw6}EAwa?-xOkjwcjnh446h*@8?iP7PaxRFF`H``
zBL;C*7CJifK*5*8Az0<ZR<O>aNIn#iilZeP=uU~+RqT(db*y^&J339wKx}m$Z3oQM
zpXFqq-irtNkN!d5qkrB8@91yfe7wslv!MxuIkuB9Is~Gq155q5Pw*eD{^D^Ee^CMn
z{>T*%+({$=e&$erL@4#ZCPIhONO$B^JMypi$ecdiy6zv{==T0_y^lxqdz+3^s`@h|
zeSRIfLQ|-$!kaT9si5{nnHKoY*w6URL4JJ6r`?>{nSq8rM11BK!+Co8Gy4L?yZ!N-
z`=cvk@0$Amzxe-Cydod5Sh$O+EMhzlRmDD5ZI*wy_8Y3!iD-Y&hzTh51lc`h1dN^K
z!dPX*F0;p8%V5Z7ai3Ak`uL6;;;M^ivPcGeZw|b5!LR&V`|pf&AA=q`f8g3ui@HBG
zUIyLJhK@?;HIR{sH;sRP_~D=YKjVCh=_pw_QSJV^)-633rp=$^-ppHmdoZ(){B!<{
zUv-?wSs45{!6-jgnU<8|r|7{9&i^XWWgji4A&7;+qXgsA`(q5w+8C(qwmhoe8sO#G
zWNFh^7-eJVpQG0XY{9qo?0P9SxoQx9@~o>F&O@ImfB11LGIg8FSK7PNQYKx6k|gOo
zSuVze%)SWmiQVt`dZ*j)J4-Q>wD70tmTDBF>{c-2-(<3^*-^?OM;gKiSG+e({x%rS
z!ugy2S{MXFd6hW#TXPaP*%aNjkdf2McMlHwK=Tt5ow+#T!ke$YXLYK3C(5xZJxljd
z#tV2|rZ2RVTxb(KcNay`a3bEvpNc{4k5q{}fWyNionXd1s>V-jnWS{jGn~)2uBD!9
zQ2j*h3Kr2b9|aC7F34o@<HLpF(>@;Qe0I*(L%GyDWmGQ1n>cU|24`FvC?uKh1~~;Z
zO)W-9+FcrnlA>g$q-<`9i7E%84^f)<?$<chdkcw*(ip()+Vt2)O*BMFzmjc8)^|#r
z)Z-7C50*Aw%$7E@8uZC>Q4r63lHB_}@L=gB#Xd2L%dx*x2*Za|I3$ZvBa3E_cT9G_
zPWjt@BKWh<ZRPdrbAW4Go;!Ok*k7wr?Quo-o|jZUF+~nYvjkw0^qG#CF|4z$-RC&3
zt$o7(p?yGoe_!<fSLgpYcC?9ledhN53--GoyUT%(Yhn0z73;aLV#KnXFjY*~DdSqT
zt?G5Pt89?oP;m?Qec|f=FZNmgZ~lgGO_QA%;&i8keg9am^?h9jOXPn*{r%uc-0L6U
zDF0w2K%W2jL%hK7gU3eqfC;>vJO)hjkraOpLBJ6CP2v6_(hmh48_XOdiH}McI3A?a
zfv}(NKS1@oAMp+DF(*mP@kITmz<RfsKIf3oa|bsih^M3s1v;S%bK^vbWgskL-AGCg
zL^O$B0D{a1E9dybWF_Q{pdkzb1E8p-<g^CsAakY2g|l1;@<k?jZGCDhdb%;Rxe406
zkH??t+DfyN&TEQ#TV*YU)r>HBLiyWn7u`$jwzytW{kXlgm1nGzakX4BxO&>H^m@fP
z>pSgTCmc;qZ=FUQVpQQ+Nm+F8z3iS9wohB8@lR^9YWwb%1xxUT7}T8>-Fc@Z#LrI<
zvtxyv*dOr!s+C~t4=_Y|$-p8W!>6P~A|gS8lcnZf-v5*nK)t6@5XB@^!H+w{!^U_Y
zb*I=FxONUFwf4T=;B-8gD3~uZotV*Gfpqep0XyE9akZZlfISZ)DypiZY3!a{42yN@
z4l;6fSTtJFkg5eiuElP8%o?<WcmfByK;SZoF(5)n|2ddL%I{qLKU<XTf&4GK^s?#J
z;&(;7))-)VJ7DfJMA%x!nll~57@9zJ8+$aQ?F5HG>mb14r{o8o9mnb)4fHuYy*v-5
zN<J_P2+Bh&ULQDl)#iKSJv@$dQ*uTaW}Qt1>e{n2JK?Z62Xi8uz%=@IG!!Q!Kdop-
zQjla#5?b^LHay{d9@U`q^>qvlhD0^{#JtzA;1la%_1VC_!p;REUW<>gBnO_VR69se
zJv|Q;&<U_7NjsxLgX4LOFyd^6o)2r^6Z+38E(pl5v>#OZBnQw-HBmuL2`E7G^_NkS
zLPE4-LlA5vICccV#zF?`V42T&Y1`_(0N8jwK%QeX)$}I3Q9M>dvEUKv>+5h2bUwb$
zo+Nlf{X$_r&uQRZ)nAc)^w2BoQ*Z(DKpG!;3^$wHRoi%MpERu^(nJL-LJ&<V1qn#R
zl#v5S6h&eEbyZ(_=uV-rB!Is@5PB2^3840w7YT467=(Ubzz51b3Dk1TFsdj{K=C-J
zb*-+J58)AOBF$?EMjc1k`E3*M2cU$6j7$^)>C|A~fT?K|xeOf=YpT(njTgYwMhK^|
zDQqbPW914TVC9p~y}lm->wEo!*Cpt{W*h^tQVO%o5~@!-ap)z1k{C}1Wtn6=2Ecgu
z$t)2MZDqKMf%1}pCA8oz3zoMA2jFuF9zocC*KqZEqAH3a_3idis^2u)kkJu)a8VK;
zVbt~`#@H8w@COA>0st1!0<(~tL1@AQR)idXOJg032v9uc@W-L(0>lL<aX&&Egy0%L
z$_reU`W<Ds1Js5uCc&YKP`MAq_#B6DUgOu$*;PbQYr?(Eawe((4TriM6w-5npu=OV
zaUUoUezGf&;XZu#@|_<zn0?@yj1<z`HP0aK^a_1~D4dXsk^t7^0n!z4l_kqVa}6M=
zJFnF-@li{HSdB(?EJ3@@A;xBD3;{71PsH?s9v>dT@g4)_>^nRIvGhN=RS#rG<oxkh
z$T|=RQ~h#3qB_bXosM#a(D%Yf4FF)Z>JNkceRTXh_TI`lqzZe^F4H8;BoM^d*+@1h
z4?!o4qI|z!o&!plYh@BnpA(%TE7;$_nvalo5HJVX(FdZ6%;*B(I|LfQY}0srIb*gE
z+iYYcgr^Ba`X$`S&s?7B{(b80!907&#N=;oR_a!Bm~jpwFle{&><+F9c$37hgz9^m
zcpMP&EGFNiJc{#GRFUh&RQ;g9C!?qs_L9(mWLSPs4{<<_QSn=iH|mH{1i9L#Sk&4`
z`K1bBNFpgknNfMb;?nc@oyr|y>f#%FRQ5p-g;EqzO-P`9|L|2lvE)>&QAHs_ma#x7
zrC=fmsiBI%zk~?)2kK5@hZR$wyFB2(mJ@eS!lCUu+r2*KYg+M|&iN4&fs7vbaZ8EP
zoeRX+ALArn==|j`tFF0?oC!TXP{a$QdtxezD1^o{l3#V?h5o+diX=toVm=Eu_}D9v
z+Jx6F52^==#N`ntJ+uHJfa-`bHWD%%7++av0+32N`u#VcusvPYlsr%KW}Fa5EW{D4
z#LlrNF){-Z2l~ndGy@q!7|0pmGxLU!9f(Q<ImG1A5cNPN<JuR(G8_I7Be?hskD=pK
zZB9ey^$<_0a32PnsoWw+An$1<2`XVE(3psE4?+;vJ?kwp;PYWD8*MUSOjn(_nZ<-9
z%bKdJjS-!88uJ5>J^RCJ@sLF5kk1!C0R@;Vyh=HTM#1AYcLy?h!`ef!UG=OGPtqS3
z)*=FRV_}Jq&?ZO|U~Cc{Bq5-8Dd4q+J~(hAQ-nlPrX;7*9`*GHZqwKwE6nyXily5K
zsEKKFPeG!h9mDbaz8xxmKE01yuU^*2duZP2sw#@B;7-KHB-+9`7g-=ihJg$3Cy_xX
za$bGiI~Q<fdQK%btgj$E^_PQDK@m%_HIETdyqFIB;i7KGv3#Ew-1*7<2Zbt0Pw2qI
ztqvVd9FBz#Pj_+&-DC_7L<1v+yZBr@l1B(IQ=oBS+T`$|19tXAU}=yvlOciN_#cWx
zfD_1l1XPDmYvjdCNFY>xlxNp}uy7$e6Mo0(&jsRkRr&#ar=+gEN5W~Byu>_@KB!7X
zp8&|BO$e3iN1B9vrH3Kq@rY2n0^YT!XQJZtI3v3!%soh}z_NOQfk!B(6Ae6090~d%
z;C!wFEIkiD5=;XQeaysOBze-r>*5R&fuWT>WfwroZD4*#o?)}aM`D4g?sMy<P89B|
z`jG?Z(tbF{-JS2@zX4ZU-<BdC$jXY!hSzdzrh(?m$an+4ISx3wWYEA<Bdxd&lYtXA
zlpShL*`k1*L?~DcCemJIHO%=56TleMIxH{oLLWjCr$E31h*NA3##rD$K8fgVh9S_|
zc}O9|$Ql@iV1R<1pMnE}Arg^NiPIlw1A=yR9ukxjAZApg^5eoXVnvDrQCY;PM3OJL
zb=Z~^dl`w<#|5Y@!J<w?)+yV806%1M(Uv~KX6T$gb%U{<=P@yolqwYec>;?##GD^t
z30lGb7}>Ox6xI*$T?&IFN|y9TM1pq!3xwJQvj1{s192cXB0XZPDZ6yeD&R_w^=JN5
z{J-kbcFxW3Nx$-jArkx!pns=6U{2xiC)=6=KddlJ1l_nMtNBClqUleAj>7lRJD=!N
zzyaUVZJ-FxU&EnshPWGyT%3qEXv&f*BzEX&gpzeA(}CC)g2|MyGz1cw_tSSR@0?*%
z@ciM4+@eZqAexB(Lew({V-rLbFV}*GK`FE!bcTy)S7|n$5N!zVj_1j9>ogRRD1iZ_
zbQ=Z;qAC;;NRv&ChyeT&o@GLU2847#V3HEDdYt#y=Yo_9RG|B>(5cw#_<P^s;p4A?
zVVW$mSAeaNqCn0DLJ>cIuxS_)5eO4*jp%hDA_P8={!U|re93{6jsXeIe_Sa-qf12q
zGzgpW5cyOQ^CLlwr|^|OIJBiECc752;D<jtTa7go@(-iFf$WrgC%KAb2|~IgTu_A*
zyrhnBQ0cz`=R?pAfbX3Rqd+iJ7Q8_2Ka4|TXV8Ou5QJe<6d0qUr;jsG=t%_q$Pa1*
z<kz%Kg!Y1VdV3=<(yQALO26o&feaW26_r<IVczfWKV}qR>+DT37da;>51EPNj)&Z6
z9`_y*i?gLaYCr-)q%~s=7mj!TQ_e)sv!XzfqXGnFs3c0ms07#;e&t^H99Kh;JN<x4
zes6vg7c!t|4sb*aDanAQhGaqqS<rC&P^yQ<b^=5KL@5#6<zKZx30hcKk|l{?g;pRU
zL07;15|8wPb0TfgP&?-qqk$q|-W)h<EPftJ0o&`t?UA$#5$HUsNxux9pWQ+-)^CeY
zTih~bG)J`zhbbOrn7B%JX<&G0De^KHQG{<PEF7CoHl(GuimFR-pfH*=&>9*DjDu~q
zVTA@_eI|xB6UefR!BSlfOC_jwE;%q*S+}&sIi@W(#@QQeab*F~m`xL<4BusF*0F<(
zl}*-NEG(KTCj{@!$aHdrLk;t083gh=(-47JOj{5}iXb3OZG+M;-vD(^!qRqAeBkiz
z`VLH?&F2?DbC@|Roy~WRqOuXJOo$;wTADY;w0sbnN`ZhQtT?150#o0y%fr|Khs5gP
zLjm%yiidy)-iyljPLg1DUKJgkn07sp6)+8h)dGVly^#TgR09k^3P4g|8VrVmji)Cf
zhLnzqA|ud$!hN${IX@Zz`-{I1Sf-OAG>2R#^a-uWeHeyi(sW2cP6se@pd^_>mZYMB
znizYP1_%sIQUbx{?eg&6bCq#4I=^FwF%bz;jTog9twclL5^#Stu;nj9OG*ejJqUf%
zae=+*0#w>A)H>(`1^74#f;{?Yo`y0QU_;;h{tW&G-2wV+its;6j)`fE>HK<4tvtYY
zN2W;N2F*xSAs%*^r8zpZc{csSUM(6^63<B?UyPDBM8zu5ed0m+2=0|P_~JPv-!Yg(
zB6&m2$DusU3$hX!N6<kIP&!7$5O+ZYOC+I90F41qO0-geR0}{f145Lv5d=*%#E{A$
zP|G5e1SAC|13?gwq!AE7ED77BI#FJ*;y)NBBB7Ecv5A^Qz#oWr$>bp-Rd88LfFOwb
zPu~~-%mTClkl{fH!!Qyh7sg2G2>?hk2?Ia?ZGb;egAUQa6f@LoIW%MJxPl#15j<h_
zNDl7Asf2hxjEHVj<u}I_TyQzZl8_V;pe+)!r1I;dX2HZXo@vYYfFOTdd3`xERGyq;
zGCceaBt{W0EYu-%Zgr^e4^HE^i|_=hF)8Yl4<rbEuo)+usocB>M{tga69@;$VNQ@8
zXp|@r)TekkHd62N!?iSr@)6xY;HGzt=<z>F9!<y_0{aOXNf=N&+zt}Nya_TI@d3>t
z5YU9MM53P;@8l<O-X{cA;~??yFJavv+0`H)B^W_N@(+9Nl!J!_dua3sbbuOCLYR_;
zyl({@>&}C-H00a|P%Q%6z;B8OCI>?uLK|?4BY=;Co8xc8IEExhmXKmdBhX^LLu~Cc
z>erLYt*F+waX&<H4JsswGD>F@<N)|o2fz`o)!U`*;)p|z{$RjENC#`+dfYc4YGG(0
zw;Uf7yN6(d3<5Jj*gGdCxgwzwBmfb^U}*vZ6^I&w68D2jVpxU3K$M_NpukK>2?U}f
zkccVRP$|qJBuF3-zz3UDqKvW<!iT^SuL%88H$&uji2d^L1FNf);1@JJ`$!Oyj0BQA
zK2JSh(&){lC|9r?w8Xr>ttJE|RwSi4Y0^@iN#nF{6e1&S<S4N7Y3m}=1B2qL$R}UZ
z$$bc)9FLLMNCK1Y<=eJ$<G;wFK3O5A0Ax7^Jb(e<0zWCQx*$aP=fYJW_#h8BG1L<L
zCxGeZdPIJSLSaQJff_(SPj>J_-XKgWQw<0NL=j2(NHqwBArb-^69n+6Fr6?Pfh2+;
zi@baC-b?@t#XrG9PCJM=m`swmL^-8L1{sh8%h}z+vFw+53838=3_~FrG6ul^9GVUg
zAC!ZFa~mwG>$`$T9D`X)Y#Ks>hDc-r3=(PJFNQnRe>?r7&<-gCDEi;O1JNzMmRa$e
z8HK#3<1-c`bPfgCd9!d{N`%6X9^gFZfsZ)8U7_9wDi8tE5<yDP0>lFZ2nAF{G!s4%
zK;XPsE(9yII5cC3^@Rh>{O3UFbnzZ}BGK8o3%&*k@a#SA;|wS*DY9lNl1Ra__|++i
zpa>vneXy=9ATY2c0Ff=>AUAAhzWY~_pemS{h>3Hg84^6=2J^0bgagh+TEhdqU>e5_
z0x}7>k-%WyY^CH#Sx|%x`yM<xpI3t~tYTAsIp=QwSaR}t(vv}}x|fkj=;-ExAgEQA
zC<B?KTpyZ?u~}^E1%eJrbjrbi$SNR-1r$SA6=DRP4rDR#X^G=|Bsl<)Vjw9bWP!1Z
zFeXe$8U*C1Qmp|<IE&)}M48|;Ku-IxfCqbDaD5~{IwK%y5eR}{0cIC^96b<q8Vo_8
zYC8MO1vBgO5<;D+Hc6KeLzX{(jnxF(fQ3&|mCOf1cO`uD^vueD0MkJl9BOyWUF@K5
zB#9W2vZ}Y0022hnK{0LOa;EIN&z0%sInF?X=Jz0ZiZDhfFf@|}A<4uLs~XoRMrq~*
zk_2TMT8RXy1rX_*^Ndj4vhd;|%*#rqi|yxpJn%AO>5#{AO%^?H9(c;62NXTIG8+hJ
z!ZeK-tj#gvNF+{|qRaT$dP1E%lQ&Q2gTw^XP$I*wJ6?J4iR;G?rZGhpd3zt{)|<1_
zfnf3GF*4MJP}kk1j(o39Ck`ES?sx$+cR}x~#`TTn11Gl=8RxEJ%=TRY4d(+S!QOCB
zbCag<+3A$c`uo8O1i-*&HuB*PJWkN9v&mKuOz0<E(s>53SSKF)<^~G|kmy3%J`71x
zhq)7U!YXSx&Mh#v4#;UMnHV-FwZ#SxW-vp{E<hkf_((*dCXGMP3rcpP#yP1{)J%~l
zkrFkc;CgXPfWc+;QX|vBC>Stljr5&Sm34e@8`x?@!Rz1~73~QmiXChr)@4?JqCzMV
z7-1x;p@c{hkywR@24w=8B~f5dks<+#0N5|70E|r}LRBCz5RAwyNRcT+NF^xJ1j|5)
z3?U&PBq0(JH7x{Cgfb8mtturbl$0eCG_+Es3Q#2!r2|D!jZhLmP|{LRsL-s)trUO+
zBSBFUK@5actO^K3GQbkZGLs`H6Cn(Q%77sRQ3DbzM4>9ktb{_Gs6IXD_g?WqPz1EA
zB*`vm=tHr4;BXFJ_+p26Kz!gLb1U#Y!<|6x`PA=7VKECIhY`x@BG@`lF599da6Eee
z?cqH_cm&8iFo}eejUwQqBP0Z<#z_KF8DxNfaTFHHr$vYOBPF21mrcTln1O_X895O{
zcsB9zm(GMA@zxKg=?N<g9ZjIVRAuG0f&Aw(X3{O^u1*<LqLbUd!wld#`+K+geE82l
zW|WX^D@(<x6oy6t!wCNY)Aa<HRskPbksY#wi*taKDPfRxMu}_n%(J2WQUhWa&WI3o
zpDm8_d6*H+9E^SO+&&OtI>C&E>av|g*kXaSPeklLDIQ?`W+9xBHUuyYP!CQcMiaZx
zAUOT!<L?n_^N%fQ>BUaaghBlh3(hhJJGrD22fqS5KLHq#Dd&ZBhdLdB0E66+JDYH7
ze~J?cU8C43z;Xl*0u~!o9qX%<Ww@d+J9^g;etXfq!1Ol3yM)kk3`4%3mHje9Kot0<
z;T@e&#m9pH(8J=7_lRK#mJiS><jg7(82o;HrNzO7B3cL{VYL`>AY`$uXbohX$HW|i
zghtvT9e~JTa#+rS5!M+AT(D)r@ngXmP6!BlH`T>X$zH&EVHm<i!yF(wY-G`fw7C7I
z6#8!)v6~?bvEL{%2{6OGiq+CRoq^UT`_24CEy|wnnV`~SAJ)O)Ats3mNh7ltA&Sf@
zfO~eqZ4x9VJE89WzafwB6shWg)@T#Dp(dIj(xc!zJxBrE1s<LKK$qY*bAJXR(2RLU
zhzEy&%*;Ui$&Rgp5aB)tqxM^w5}UmLGLooq+he0qm}KPJ|Ji)IsN%71;SPfK*$6X%
zsJV(02GdQTYMP~ZWca91Km;*>0f9WK_?lWm4+_cP^WwauPY@{a;u=*(QW_At2u&L$
zgWHHPGXIwCCyl4kG-}fbi*e>!Nf}4AkbdSCvVGcy(_s;UNn{Xg<NbUnE?nb`nY217
z<p;vZ1~ZKW8tEMO*`2Z2L9@V_m&y|uKqVo9DJlEN9OWo7;#m(?I8P)y{ry1FbK3(6
z8U*@~=y9WQjG>Sndu_m8dD;3M**r2GusUckH7q4WBu;3&Q3pl5t@K{N5K;~0Z+1Bc
zVyLhzG(qgkudKx|#~s55bspxBaMl$TYXvL#4IdHfrZvZo*lK1lLBmbthV4zql_8Up
zTJg@swe{ib>|ZyPHpoxEgFq)^VC0=4*$|gUpu%Vh8&El7JakSdfCS|we0E@Yj{63m
z?wAx<V_<T6ZO_PZfy{YH4HCHqc^Djr9rU5Ih-47jx=FPs!eB@a^&$NMqx_%cps*S&
zNT`r<BZMRdjtcI#QOx14j1;pDI>i&lq&Xd(T`Ll-qC)gvP;fLn*EJFVejRc%ge4;p
zK~+mbnw>nV7p5Zhd;X_c!X<;b8bOeRB>R5YS`<*AX#s*%peYer0H9WZDFqRg4uNSV
zS{9o|fjT8PF>%jW5~;)!ieQ1-z?{%7pis#}3WsqXf_-n0=5zq_^n&368)r$z3TT+5
zLYKnO7?MIkauB3I5<%Sz=jS4bn`M6Q#d79`ox$Ths8D;^i4tiU7howem|6;c(iiUf
zLynq$)~TSXc0)lxP@lRg;Q+*l6YS!1y-bICnCCE<rV1E^M5T`BaK*F)7|(mo_BgIM
zg(PwYjV7oDAmo<J6oe80Q!+wUB*Ih%NQg;fwz3+?_7|L;ODP~rOF<@ZWc*Jt$7V3(
z*!eyO{g>aPe7Z-fC~JPWry&otzAvC15Oq;XcCrPfC;}in2oW*_9#uKikO(DY<hUkD
zF%X+?I(+;A?%mE&hoW=6Vh&4z?(G3U)El`_)!+=6Va8npV1+d-fTSEm;ogM-*<g_E
z#CsjVlqHR(yBmwc1H5avnD~&7q?j0(uc8TrrE7i2LOTjb=Aiz-%VP(Y(;f~Vk+ArA
zJi3C{yU5WVWd;=Vs3ITGS>^|R;9?+3`@N<gEvg18dp3JkM^F9fQ@}*}LGlO6A08I7
zST$nCbm%d(X_>9ru0%m4DZ#;^z~q1}fy8WV5=6v_j2IS47b74G0?0xHI2IhiG{Tnn
zM+7twg24|CMQGIF>LL1iJPsZF>U>~l`F{LFZGsJ1tr7aaj81k2pT=02c3&M<T32&v
z%WbyWhS}EJY()-ht#;a(l?sn0=Mh?!wt`lLVvXt5HnO!Pw19mH3nC~8GJdo27asn7
zay}5p4?}Od`?wwj1J5ZI;qsf4m$+l4@1mwY=W?N#sG2H<3S`?EO$!7B7TO414}RGD
z*JN_2^Y||P=Z}IV$qa&>Z~$^KE8U`^qM_{{IgfAdE#_u>2sbBl9kiPj>u})cB9j0_
zMO9GDvX)9L57F}YCOZV`ceFf>XA-J~QIWsOf`%fuXRVStoD_6_gGoNivkH=A_=ucX
zAsLDT;O0316i7jt3kSc^V24%@F-&GF>@hd5hDAR+gVuyOZRWfT1y|H{)YTCZy*)*D
zIjO_h$+@X=kvS?)Xz^l)2`|bMlkMF@$cR4tX67)M?$gB}lkW0{8QIhd^UO?+C!%}w
zEJYNKL~($k!A4Y%5AbJ|5BPtR>D!}it)Tg^&$(Wxd@`SurZK}nzj23eP1lJOQ6&LQ
z6;y>mG?7xk?DzE1)X}qKe>n#O>xNNYpB(0`q|i!u!}0`^cVL4ilX}dLpgpwSC|z_#
ziw}ATAxIU1FlX+qViO_>lpogoVnqG_%HSR-%u*`ha$w=r0l9KR@8V#NnF<3a!U>>1
zj!}<T2eUy`CrLczlsgH2zVTU}At|NCz=15pB<ttBWWJW@_!SQ?w4q9?7{flB-|APE
z*+i}K>%P7Je&;JtZ!j4x!458k0}}=kFg7N8RVg58n24k9J}*4lZ^1HSX>$S_?ubAr
zK5{2yA*e<oSP8OMq#!61IuH*f5ZfvCl_8K%1Lt42o0t3@Xd)4yIKjqpbpT|IAT`DW
z>uTF0{%+zJ50F7^3@{uqDE*iVfSh3rB_47U-5-c^KyC*C;HUxXaG(wp$%JGkFS&p{
zAVIwHm@^Cek*0<rUeCXbkIb|uyHO-SL`yN`8fj&|t(fK;7&@d23k|@fOd-PBeOpCS
zK!=>HJ*~P`sW=wldW6;}fbxi0Mgfpu9?>pmB8RvdF++QV#4&)0EB{8&6x7FI>8J+r
zhgQ&#r2Yi@m_K#oJmLtyX-%_j&54EOSe*<zLC5u&=yWkFMk2)Ee~FN~MTF^qTA%T~
z$8gwb@9BhDLuwdUVk}|z5>kGTTG(A8Pf2uh(qP!El<0`zoID}pC&>Yt2rm5bcq~eg
z)y-<r(B^nTK4)?erTp-r!G+>LQ0%K>ko4@qIm6VH!ZMUB5k(pQohl3Kr33t(e>~KP
z9+Z$Q0AL+7Ct0avfV7znKt<*S;@c`pIua7VOGngN&=ZgdBN3P=qbz6aV+!_hG?|C|
z65?N3=<qS-9LKzLPA~zPyy2MeHq9NSZ4arUBB~{&*!D0s5Pzu-;k}c~A3lylX%*}g
z(Lf;b=^{S<_?!DM_z%1;Q$->0WS5|4$To$DFBwfF2It~&GUy?X%;D#i4g^62!p|@n
z4J1lc4EjP5??|c117j}Xf_%oiy5m*t;p_R(HWclBs(B~};C!4yV<d<IWEl>pFvN`j
zKtA7fqtj!DTwJe4ivzrzL%p8ub+C__83(eX(muT^oy`wYK9>&YcJ9n*+Qj^(lY1$S
zQ2B|-DgN3_dc9|<MO6jg2!@zQzYHK4{BY;t0wULCJsrKS?|?V`0YDLPAxtEK36cf`
zsj9wYaM~4P8PUUwjcJIEWptrNX3j+-V<g7W3bLWBK}r<FJmZh@j_hMeB!m@1EL4(E
zqC!hCBrH%8q=d8yD8evO@GPLPNRm5Y6_L%m_ApShNfiRoNy@YnQHjuv5eBd!-p*Xw
zWR3mM!g&!7U^JdaiA#_~fyPV}#+;GG#xQZ*lO(4kj%JKO1pxq2q{I;@XmJTz4ok!#
zq(Cwd%%lWzFq0H0f`!^-Vq}u05h5{zsU)0AAYqCvv}m9K#4t=$t4IQ2S#SlClp+-(
zMOh-KqD$jC29PNjUaLv9s4%bh1tCDn2N(n1CKQA70KVW3V;s2J*$xnJf;<945{l8;
zm<bKRfOkM#HsQv0M<8wc-L%VLf`Uz*U}*V>*elT?kKW1r@#l3XsKjxaeQe&l8;Y-y
z;~c%)N6`4)iht&qL@*=b!?82rGW!@;mQnPjJM1ezveUEsJhN0c=KbuJ@-hX?z~pat
z=j=c$whokB68iL+I^sNgqrt0IA|UHnmeWbzcN_yu**I*fl3N|BTe+^xxk?eWtZwj2
z7{EL{oDP;@x3Bqb9fm0>Ar!&>m7+A1ZAO%ZY@yMNM=B|5jHINT3lqXaM*67a12@ya
z_Ig0zbwbfN$sd04IKtl3C}<5DQiUNyz{4|bJKO-~vQ+jQ8z6KfXx=Ka8jyuv^N$JQ
z7J!YTNFMo3p6Nz2%9wGs)3?e!f_VibZ3CdNXj9Jx>$^Ig^}FFz%@c}ql0otC@*}i&
z4veLeV+k0=ylf{YLefD5!F$MXk0A19WICbK9t1F0ZV|<NAa$xmAQTr%Wib$8M?e^O
z{(nbA=ys)H)l&@eEnhUTJt<-bkxLKk7J#09MGOH_R<xyrd!!5*JxqWG<@0c-Y@-5L
zTYIi8Ekm>s5aPD7T%ilqlDI>tHS*<W2>9C^v=I@WZSo7!dIB7V<EBD+=y8F@3^}%#
z@YbawFcY+5@C!K8&Xx*zXz5<yK*(=Ac-^z87(%Vn62zqZ^GPQkAmIG;+~!Z7wDgkU
zdKui!gP3@Sfo3F>FH|_fd9}|TledCyMyU!WO2NF-jbB_QC+E3$pvroa!66SMbSR<W
zgzOWD@Ss$sJudFld+JzdK^L=oIFTkK;0+dtA#URWK|L&ludeXLp03Y-fw@Tl{*^2$
zRt>?Fl&F792BZhP1jw7#05}kd;|?Y4;&TNcYM0>hahURP&MQI_BSM9|TWF?^d`xB9
zoWSzFTqj_<q7rnD!Pl%rMHFMV4yTPpMNveQEAi+93+_WKY)#5g_O0aUbyX9+QCU{W
zi)85Co(a}k`fwxQ_tf!vMwbzB&onu7D)K0Y(X`deSn-|dDpeNje9SklVqRwIpXkXT
z!r*mfZ6q2XhlCo0G%*qqP+TpeOF4k~t-<TC=wyfcU?lIlu+wPSa@-(2M*B)zi%=Y7
zo?R{9n~j+pIWYk>260B1${~p1tT0*zAd#lfl#EAFGD2X1gax$DR2)s%R*_XB)Q+Yf
z$K>B=#1Su8AdGpA8=Mrw4UA$<5*;AA^^Y2XyRfW+99|5(!fcW91j$ai(bk;cI7DH%
zfJ6~@Qq=*`*o+>|M@2wNEMufD>SE|{KKbZ_buxkeav(zJ6m>5Jp<qYy0HAU(+pi3+
zy9aazHZQphoFrIT<zA-_a|yMUg^W>HU2|^1*6)oc;Co`QU~hPqcqyEIRSX<}@JqwR
z5KXc!gjRz_519e$9&@gH2(goZyTf7F+IC|(JVkmvJ2lcXgP?q$BlJ{#kF(s@voK@Z
z@UWj^R5URQ^+@f=N&+S7y9_~iSp+^{LU=M6DbRK@L}2dz5Qh7P1Yvn$h6&;&go+J?
z;(~!0L1<em8j%~Eaxca&#pGj=BY;^C526J|;~?QE76u-(LWG)Lw~}mp^{0`EIRm4k
z5jO7;?8N_iQXpa!yM`gp*lU?Y{X98==OB0q?vz5GwTd)Y5r5TV+;rJEGI4^SfdijH
zGKB+)KsF;O*?4|f+Z`vYdBQ@0D5sc!NjLPMe3R)LKsGuLC-~(eXo5kBJ%Cp-0%VV%
z2+<2j5f&y2un`Hd45bYXvMwYjq+%+UlZqKrlXEsWylJ3m0#>S6grO!VfT*OQq$8Ph
zE{9AD11yOUfiwUT^nw`&2s<&sf<KIhsR<Mx929;}JqJ+c4t-S?CKQ3Fn}``n3L(0H
zj-k}zaM8<<PqX>Z;3p*;D@sa1M5Qzh0M!9OBqcdUs1P&)VI@V3VN*x~x<%-fIS{^2
zZ<j}0y=fdR*_xo>VgG7~5<S_N0)+j^931;}YD~N=yf=^IvZs}|)hxTnE;Cr7P%p!6
zRJNvJ2sM&+=dVrudpR`+M+4wpN+cqLJ#65GZKM>CK6V*~rSN{6LmumrJ^`V`$lGoc
zg6k=uLSKKM!GDd27R}GqN=Lv3r321Dz`+jKYH=V^JWF#4Fq}|`IT)oWVg%tX35Y|8
zU@{O223HOoxEcZhqF0E>Aax&zC_7ZhPMC0lCm5-QsiCHVDPW)>Xo1W$_-)1a8!#V%
zp8Ys<!Z~uJfToiU1F-f>-mj;LlnpDv<}QdIYA2*lr2n^eFnJK*;RT&hEWI%Fc#pcV
zEMp4%Z;vV#gwhYvnfqh(vDwTBBI`$pY5a!N!)C+`Q{yANAb;jax<X=)5^oJJREl^(
z1O{%WiZ(Z8;p&O)P68NwS(F*UJ~&Hs*}Qs2&$NGj2L(5t79GEj14PJ2;bM|n%w_ui
zjdVVI0&yVdiQZ!*pGl(-?VA&T6tt#*(w}hwguyBL8B^jOYbLkuhSt!uG3VP`be1W4
zndd4~C};v8+9E#(^oohVkp%ki*bxK?`M_T{ypDwq*Nt5czozH8hqyk&9JnKuElJUP
z$Ogm`4um2SLkYCyfg(g-6Mq;TPx5m=9ZIap2*j|%Ll6=&vqrtjyV31#l*!BpI>VR)
zpb0vOLz}vJ1Ara1BeYjRtd8bBuHpR%8drn@$RG?p8ojb7zv*<Z)WeN=eg}Nq*1M=Q
zACn*>`i&kYrmcx#EpiZGp7dUS`?Prh?>n`LpGKKb6hy=lOd@0ta53QV5P`#hq=GR{
z&5`_d_i`U_@)-!$Cu;=_kgwh`rFaxH4j+m0r@jZPhYRDUb<4m`gh4blk(kV%P%x-a
zz`*S64!Nx9G!)4TNI-}%NN$xJusRPI7>5XaP;ZpD3)&|zV6Vu729bG7l5cqU0Pg*d
zxA=X2Paf{P*VPB@NBIO)uz@vHKka!ad0MQw5QG=M-(>Di>WE^s*2ttb2%e%MSTu0a
zdK4_3B<6z;@!}D!DS}rg8=CDn-y{oX(ZfO;1NP}cwjCl6`oIdB4qD7|uNKn|ia3MW
zRNxb6JF!Se_|z%5SvXlOFhl4^W!ebLamJKTX6kPB(UsNlu?rNWh}I*G?8CmSA)#@#
z7%QFkU-X5474Bzl{Jx|Sh}KRs(a^fFT<qix@z~QxTMk+=&aanzv26wEt>!PBZN2Yg
zVqv}UG%7VUtn6>25JWT(*9}u{r$m@lUNl9x*KqXSmnm-dI%#jVOq46-XhC~F7&N5h
zNh59h0UO59bI)>thZqsC&DsUB8t&4|TnO4aZOJcXEuo;B=FXJQ5XIxG>EP_lovg6L
zGsW(c*5d^n({H682+f4fio7jg%owFKkpxg|!0TAaK@95?BxK}@pm}`Yi_D_O(fU0;
z3!6BIZneEH7onX9fMYqJ#4)*z)hd@VwQOY~&S5$xspRNYCAcOr0K02AGP}x$BNQ}^
zX>8;-Pp(Kd>GdpyoAUxPz-IhOB)0d(0u+;b(&0eXHIcMr8a62Dj<6kf%7#F=j*Tpx
zV+vA*yCJ>da91<uBqoM$L>*o(11Y|^lO0X@s_oe$eaz=7cI27Os?-y3c`fm{9#3R+
z$caWEhAxi#@8Y}JZ=(xp5EMAE!5y9`9$o@wpzGKS2-iX|7Lw9!E(DUYhTNGPCTSbQ
z+KG93RUO(uRV4@%+zN9dhLujW0Z5&IK;o$etVt^5u+zfU2!<6&T%|~f6@>>H=-pKg
z@`f@g9Cg!*Bxa2Q?$LA`XGViK#i5UAOmH^W5eTLvLrrG@AlZl-8)HeMHeWr9t=dU0
zcauBD6%HO4PLE74AOL=V1PGFF&@qx1ktC=)#j4=6D#4hyg2ASe0;-W}LSz%QRz{01
zfTYk&j6gPnX(mlQEHMU)FqH#939Q_p5g^nFVP8f{!Hx-ixQ<^K$45w%02ahF)!a#h
z*Cg0n0Ayk;$cbvo0)eem2;7Ve2@(z9-vl6B>i{bbT7;JVQnGinmh96II%h;6kp^VP
zDQV&>1yQJq<gsjEijn|Ei8W@mJZPk0m>EyG-)*Sxm<J3pNuzo(K*n;w<ZSc`JS7=r
zC{!TjqmNn|IP-L~7GFsqqAf&L)=wE&VMR-oNg+{L^dh(Ld6XQI|J>!-t?Rof^Wtnq
z^^&>|pws30<U9=M((SZj!<7>C-5AR;j|bZIRA#Y`(M&~?&t?sQ4Df&{=8(ha?j$U2
z9usC_>6s_6A=?IY$24T)V9nQuK_r>P-)`IzhCbaum7cwYC^4(GK&X2I7h$eY5;6*A
z{dKiAV*-{vrogp}z{4@9?C*vM2`v<>o$O@DxZ4v!gay|nq;AHIKrFNru^dE_GqMeI
zIIcFz?!dN3Fd2vzH3scrf;2S@xPvU+)WuBVrKT|BXC5w%pxR*pxYu@yJv)aS8|{UL
zDTsCS9MG+LCzvR5L)(~LdqnF!xV)y)25#l-%;pdZ7}IPQBZCA6gfqZt6}$orGio!s
z3OV1aWaDB9D>|dAhelv+i>U%jEpgMC7KR%zO`91@Zmm(#p>8gFb)g(FF2;LpyVzUh
zPgw1<uF$&cjGSX6=Ls81RZx{RV8n~xx>+eEZ;<MCw3PQd$T5oyn&jVN`4R^bI1O-Z
zB@adbsfdCJQ!Y2+khf_rUUC@}i+9{});L*kveYzmf~Tm^PVN$jfQ&);+ATDIvz#vu
zvgqsDuZ8D~4}5Y_SvvUOjY;bGf_7ROnb|O~FSjX3CMIQ93`Evo;kuFlW5YOg1Xcrl
zrv)z-xi;Q>CNaT=FD8c~&5)Yn;8KpOkRe=bb%(q|N~xVq8-RENW_QF%;5%t6QW7A;
zA`aLw=^DTrOE_fmVy}J)@Tx|qOJ-IRh0{6c9xT%yYq4DzlmkLrG^}l5MW>B0!6lS|
z1SJrX5!eKlbHUfSq=Q?g`iq+Mjq9DzbecB6afh7RP+dsg42OG~9=dnOhlW(`%bz9(
z86%v`tYiQ>70V8R9F<^RNa-sbw5fK>>#Hwdg6ZO`!%!J}9h~5YW-OzcSb1B(wmc$9
zX@(@#RIIduydbs#st7VMU;rz|lqyGq8UosbhM+_6)Ns+QBc$xn&QZ%04IT4tL_pF3
z^<jH-Ce#mP6Xx|Xg|{W9!GXj?G6q=<v4c?!Y1++1$WP1$f|!~U%wmocuDQTcK1doA
zXo`>)5sVkHDh~kj7#Qo7HJ9F@)<*I<7!6wK+D)F!!Pg>?*dEii3Jyk%c+ssr21IS3
zJR+*y<l=H?!*2oSpy3h12@dEO158VSbzrl#XU%~;J)$op4DbM9yF+3+ZwOdNSWJ#!
z>Bm{XpxQWM?S%=hBcm4XgJuRC0y}o-bjn;Z9wHFCF&nV#FzC{4Bw)qLMKIzcnL76d
z&fFrp1!4?GEfCj$$TSy|p=OHC3Y6lGh3JTlx;@xyB;dtpWy!wq9VtSUwaFzUJ#dI#
z8%81VF&t={MWsZ>=G;o7cReX0bZRr0rMzLjua0#baf3%jE~Aj|f){Ry6Tr1}{P9XS
zE;WD}^613)ZotZpy?lzPD8|r{phHGbbez!%(+E2glyQp$agYgNlA+*&7<B8gprG$v
zX9&bLlWmZ~8aK#Bw}fsRLPZTkr3x_$`@x6FaoaF0GovMe98!=wqF`+qVY@d+Iy)Wh
zE`j5&R&BJV4uy2*wtMxA)7A<N8ikv;Jz5~1y(@wsC}Ds`3lB_cp+*+x1Oigq?i^Gg
z!FwJftrftIGCGvw!!Fwm5OPmxi3r`!hr$g@-sL3mx>?^IycqDrmIl00#g!P17&!1C
zx9H9mN<^|YIwZM03dinYXKhQ@l#Fd=yyw4j9QHWgf*WYl5x-XmetuGlW!b)V$%S<Q
zq2+W_!*#4bE7gaPaR?VzY(~n?<cfHNqoKTkE3$;n@C!N7C9cK^eX%LAFk<n~tD!>^
z;i`CK0}yxP5*E@ehRt%qw@BDI=Fm!J(Gk3Ewklaj+E4)}W}h9<Jsez>+hRgmrlE!g
zLVIQ0_<}KxOkDVPG^n<BVme+sK@}GCj(m1E$_72S(c15Hn@PsT(Y8=UotGAB&ePJ@
zXr3Mx#;&4D8#qR<oR^OA-cHN2-!xoC9^(S{sYFo_K24yyi0?V*+(l|{9XHXrOJ;4u
z*K`K2c3&4gT$^LD&CUS_12tOktuT1PH`hVw1a;?Hw}^~hLlAYkRW;ta7&CL>GFa}R
zMMn5H5l-4gjXv;$!gLmOzMY4>C_*`fV;3)IIg~*1fem6fwp4&}_v??C+0r;W!>Ow?
zIq~viecG|p0wnQgdL)D@YiB#asqDbOz+yX6IOrsnY+aLR28s^k3oa`es+6GZfX13A
zxSggCHwQZT*OvZWs)uFLCvGKg)$%qm?E22x44YiVkdh;z%=Xr{=v3Qn9YUdQj(3F>
zJ-9D3jLdYX;cjbVYu{RDMxjJ4-+>FH@ROpUBR)L|owk~kF5?84c7&&32!<gM<WxwG
zAwcs6NFW!FUVJt;dEOUj+$tAC1EhHLl2T1GB(N!yK2oJPcN+uU(<sHzx4yB;oevyi
zq?IUNe+Rw!^lgo?kAA~G1gCRaop#xTMLd~%5WKYQICHtUb?zydA{zE!^>UnOs0bxd
zzFwMc78yE>J4T%exQ1YY3CRM^T*!5LmWM@8J;Q~zj5*F=>5oT+aM_27kisD)MdF?D
ziJB$}PcC949!s~9c@aFjvz|4>(Q-qviYOLNkX<P*O9v{41iGRD6v#D1lqbH#smTM8
zQc#CUGc<KGp1i5gnTdptBs-$X(|aNqL~L4cH?~cQFfgLPndXR%RK1}R5{M>lI_--o
z7?mLesd9*692AkQgtbwWptMgcgx2l`*p(OzE20{+ftQ501(JhvfO{BLYgk&{Qg3E#
zMpA&v&81@`(aa6u8N#M(4}~PW4ANn_M;R6hvR+6su9M~CO1DE=X4gPW4hjVgBFKSU
z1Sq^x;nPcz<Bkb48>gC8DJWr$jj)z-Ms0=_gezzzlF-^LU~ZaCMhhvjO1K%SWXOXA
zbAq24lrmaoNkJ-D@pX1XB4HEJkhWpLi*sSm3U{JW4(A0_hS-KM(TSWO>BRwV`QeTs
zh~q9bfXc*IM~-NT9&Ik2EFgFicAH3chn(oMsfJ;Imj`qVaPoO(20e?<IV}y#1uVl2
zF+s#e0%JQ`4$5}$D2K=}K}d3?Hss*>)hrZkqNxT3QVI>wW@wR(8AySxb38a=9ux+U
zhnbTk=zwI26wx&ek+B4hw~mgbjTZ{eEIJq~b8~T$!c7?APY(i!&}X7tf#HQ89EBnt
zb|M+LF)1|1rv#;wp$9Ek%mfeyjhK{e5Cs}62P=jeV1q+RWNjv72Lq-dL3t8OaG;Zp
zV@h?-3%r<g_)mIPPT^vl#D+><c@0hIFrQ3nfDM{U7+UKH!L!dhUD%_mg}czz11Yhv
zXtda{(QL&Fc`2ZKa82qQFk~Xy>%3bCW`XI&ZYg`95tPggAiEh=v#z=pP#<tYgtj}B
zJdVe%^yAh=j$wS^cdxBRjKIpMj3-;tdiWh6y@}v7WrBd421^WekpG<~f-gVu^`DhZ
zKE1sp+8Q-4DTe}sxTXcCZ@-Gg(jhQ~7N-#hY)P^!87>Tyi>EV!C3xR~r?rQP)-etk
z&P=`WRmeuzL6n}a9OsAAp))z(TCkbvk7qc>H;k9<n>f!-r$bE1kbQX)eX2vJ6W5e-
z&M+CFF6-oIjvDQrHus~7$dGF^4a(EdiUyhz{s$zPl0=DIw6`a)6;W8m)M7ZT2SnGO
z8_*T#;pN!B6EFi1kpR-o5+oADFi4{^jZm+$Q$Rx?At4O}$WclzPAV%Mj@X{u&V0IP
z>2o~{@26?J$%$#p#OFDtj4Bk@%IFNopNltfE*HF)d=2#MbTTuIYB*6MB$5eIA=e&8
zXS<+#Q?PnY8$Q>8&R<Q3RIR1+rI``+_sm<v4WgTE6z=1M){6JTNHQDOP1qD#!pTT>
z&M@I7vOu%}<~*GSnX$psac`|*TvRDcGl)gpCn8}ZWRs{3<Q<mdWUEHcEb=WR_PEhv
z9#P*|8|2Ig8Xj=j8Z`BM0n<JrN<!&F#GT_I9`fOpN7z7^oJsk3eI6<vB%dT;szA?$
z#7|K|6o*1R5Smdu!H5p<KB4tIUl<Qkh9Dq>@IaHffSw0k4v|p|PB45n9uRmj5ebmw
z1w8N^Kv10+4?!fs67pBb6H3zZT__!bku;|uqXYvG+|HIcf{+-Y`fU&v#Tmn}965)=
z5#$^t(o;!Xv2c~8I}3;y^9I==mAt@tvCd93ogn7R<#!bNB|IY%8WJOfbb!)PAfAPz
zj>>9MSeFf&2?`-u1?~)xJR#vBJ4qqZY?K^O!!%M9r6nL?JO+;E!-RXMP{27;i6C;&
zqsU`W@<KO<F!<5XfbeI?Nql4w(seu)9dZXNfB;uOsK0pzz{z3^Rpmhe&^YNI9>cXb
zN7!Hrd;wqtUBLJe&yaz$#eCj700(hHoz}o5*utbU2taR97-VD<VIXjjFMy|@b{&Sr
z79JEZrH%HJCnJFH6Cl0<3TT8r|F|S#(qR`N={yjCSezk?CKeEgFst=wf~tT|xd=!(
zm<tq$|7wnz{xN5wgfa*j0*uHg2}x;XC_#jQNUY%;TA&Wd<bX?Yfz%cu2$O!HzF<cH
z1sE8R*2}acX)aZ;g(y-9WDvFq00>DhfVK^a3^4VaOi+mg*#=XgHb<BvNz6i+8wtTQ
zL&Px7Nq~2ePPs<uIn{zsI|E?MWic=SwE4uGgyV@M+99$Z2i7!z(l4;MX=FMUK+*(=
zsXZ!d0U!2eA<zEfTu0>~UhswXL-!3t03T@#Y%U=n2#4Sw?!cS!J;&DcXHngfOp>`D
zj&V-KQl4-&9pVGtKn{i3PO?9xj5VUd0L9BjCW#5{!?oSYN5qHqlYhAIn@<(?3G#ZX
zc#@|AJRbB^&4WGC2MB#)h?)T*C4_}S79t2C0#K07@!pIOUb5Ajk?ear;lTvJ`?2%Q
zD|^f`+FQ*=m02OKm=D8?pb`mC@G>_b74RxAr`Ap!jjgc{q4A0LmBZ~HfIet~tJLTs
zSwbM$43#WEP{Bb9Aq0%YNW}qEB7{){!ca*;10e%21{qTs0LqaROQQ&E89^~3EFw#o
z1r83}cux=>1NWJ)Mj6qqY&sy`4gFqz`q;dqP9~W!reP$P%hh!Ad*p&dfQywI=4)un
zUaR^iO;dj&7FkVILAv%axCn&<66bwl$c&s5(#0)2!=dAHHIgjGA`G&j<_gnyZetWM
zl2JPxfKE2VEp9=U;tDDegyr=h;h@od#$%13!#WJzm&=w;92wm1BFR*uAljs=$X?v5
z+89T&46%lc%#7cu8Ds|ii0ml{(E#d=QYmck$Y8Q`xHm<zE-vRdaBn|bdi71nHb-2*
zRZCRP^~s7GX{kmKA@~$7PW5z9j<<b|Hon@BEp{OUk+~q(DjFWmSn|y^OAQOYD1J;r
zf^!n_gls}Yc4>50qrW^~CuNp~#wNh0l;#b(R}C)dG*jsD!yxSkY;UD0Yk0?a5Ol6o
z5pE-yE=|oF-3a@XrNUFOk+62&+j(i^lo<t`4C)<tbguP)T{>;ebbKR5-6v~6(9JVl
z1ElYL0HzeqA+?TTbk|EjafQ8L-EDKVB+dY|i_GyL<)Fcmb(p~lLj)sBKm<Z|2aqCg
zhG9%hEF1-3VJeX;5)mqhD*QB(mVu-!<`gh6HO_(sY*5z2m=})}ZD8z~8X+kUQS-1L
z9ws0qJR#6hd+`qXw<Lvt#``@c*{nhoF?MleX=Fw(VpbX!29nrffv|jUw;j|LE%I5(
z2{5AkSwYd1Ny22#Jf=`y(HO3}i5sE!#cVeQj+FrB(kaAIWfbMxioEH|lg|?a5G~!D
zd|xCdNKK985pldHC@#mL$ce}#!~hf`oWQU^34&OY5uhmrJO+u9C^1ZAMg$0Yg~OUk
zo}tHx$cJ4gGBSjZxdir!*gG$7c@CnU2VguyN#b1?j6=vDAle!__^L>%51WPBaP1?;
zuLSoEE~TMq?Auxq@^+YlV;Ck1wr#Z-EHo(2s~Z4}1Uyo?D7_*6F~K0~CosSY9=_Kd
zn3+ejaPd3k;&3QjqCmum-^|&Fzq}v`We1nkF9XzJ1PbK}MAHO<k(GcX1R#QCh@mJ@
zAhfw*C>l}%0H&CNlv0esN^GFV3dJJu#y~M(xs0baP(jpX0V!050wiffB<s`Y0Ei?c
zm6>KD3Q~d@SwcjBmx>)Fh#C-nF+d*@%RxYmD2~7o;-F2+=eJ&aR53jV^Th#yhHH|l
z^&hYzsfbvh2uYM8XaW(D=b{eCASfvbCW@$}B57Zem~7eEQ^_9P<Q<QcTL&-)G_^tm
zNb@QOJRo4Gb9nLt<bH@95D5=@Pt$#)`p|%X+xy?-{~!GS<o~<<AM^ib{U7!J*Z)_;
z{y)3-zEAJ}Z~l+-|FQjV|G(S+qwjsc-Tz1EfAasQ{m=M+)Bo@O-}C>g_<nEme>?uK
z`#-hq|4-QW|9AL*)%_pL|FivHt^Tj`fByfc?|<Fn{Xet)m>{d@FtwxiWMvS=qBc^M
zl?vJY-|w5|+=0=_DoDhD#O|9CvRN^sMkuqfDN$?`XqJd9SyJlRVYbE!kM?1q{U`u_
z@E^#p^{%%Fc+wB$K2MwQ2z{hqw|Qzucln?{<kPeKeH>`#Fy3O)9jy{>$Xe^2P!#v^
z80^}NF>KJFVgT%ri~pihIZBW8h5O%`1^(lR0C;Ymrvu6U-L&Clgz)S``++cCLaf9j
zLqMIO(DU%){?`FIL&P1?*4yy%JklOP{xVm-KlzXRX8<nfuYEwsHFpvElj3l2jBz>2
zer#RGNZzz$m4-GGff<<Z))bcw&cJt{;n(~;9xnDyM&d*5N`E)F{<jF95Xo#y9=0YB
zzdpuc+pQ)iEX*fh{IV$%<H#M}{Dy3EuP{OBQ`XHiB!1>Jl=Ch`q+SpQ_`<vJGugyF
zFoDr6#ORWc0)vtO|LUM6MOV23WJ4Ga{2>1ZLS)LE%wPU_eNphkya4Khzkp%VCps5&
zgs;K)#dz4Ey+a^)m>54XrA(T{w2Y2M#!spg?ifVkRfX6|7Q{DXC=3@8si=h62}WZS
zk!>Px7<DR!48k=GvbG43wWS(aRfjp)ZYw1?5IuMSfC4yPM+89sLIqs6G$>%KiUH84
zSM#7CuHP3VAA))R$TPM@KaAKS1d<3s1o`xObWeRR`%K9ipeT}kQsQ;&Igo~=2p9zY
zQ+pyHfj_u0XFt9l-YwM+eIsMw!bb<|O##A`6g>1SPJnOc&zL^M1Dx`y;%w$0h!>cE
zS^*7k*PKo&_L@#@<OXi?A1D5$^8ixJ6%enB%6a~73JK~6MD-r7tqJK6ANQfshrae9
z?S~{kwGfIZEKvCdlx!*KR5Aq1u&b5Kq?2r#0}z~fxIt{qIJzBKDy*O%>ks2ZINRd<
zZFNo)^M0M2;kMDCi0K9@C?-m$4{*jAgiu%r`Z8XNOGAu-w_1DKx1l(tM!ovBd1s4F
zNl95nqda4CE^~;x7=efI$HC-xf={G^sgi@o!g$;iL=3EiK?XqyN{F?Ff&g{|!pZ4`
z%f?eutk9(-f1D?7{GHRVoSh_|+<~=U4uW)(VxN*h@a-|!#K595!7)n)X@RNvu}R4=
zK_v`CtH4C=Zx5g5#R38R8gvGfrZO<h$d+PE`42DrfL@?{#GO(S3Fg2H6;`I3PAOHb
z8)3l{5`G2`C-DyC7xJ4Re6LZ;8UdsZhWtLsf9YLs^GWrgU&c)#n<Ja_mW*&Q_%RP4
zKLH{3Mc8^@pztTCIEwfKf{eD<35F2fCgt7Te>6zT3CGYmCEEg$`S5sM-y$WCY&aWJ
z3yvWoP0sZ=JQ+GT&?<PafTkvwLG5(|ILKz;xF83_6@h@jfNrXx5<?p>4A{ejVXH9=
zzv_5hI~eRH3aQ=`>UN@gMsh_<4jxB};_Im5#YDE5H^vQFNE(h_Sx|O^eeDK#<DHhd
z#4M(6JYtM<Hq$WkC)b*kWsyk6)SF=PFpL2Q8XYsd8(UX&__BaILAF#Bm7Qj^Yk^PK
z0y=3*6ev;f!E74@eEZ)s=n-S0LB%2GB(;iJse(<6;%hK1&7e-S#q*6y`dXfY3#rPu
zrLfCAIoAaZFiTBLq#H4tCIe>rG`BnKN-t3oWKb51p9trl9$!O)$nZ9`+CZZSUh(IN
zt(yZ%cS?hKF7zEZ0|6~ho!xb_5E0B7NvNyLKXZ%Dt#E~QSnMG{+$$<9p_o`w<VCj8
zJa-O`lD5%>z1fgD?6NMl*#+|M^F3HnCJ@mOsvN{dCgo!#ml-6m0wx(0M|q(dER!1T
zCMAUsCP=4kq|G=AA}acrp;Km9OxmO}iKw}X%DW<4q>eR-M<7`Qn3nXVp=q4z43&8$
zL+*#Eym2&lxHZpRXB-JYG#j?lX#m+Ip(qFp0kVaG=rU|bCIinY+t@JitcerGq9igN
z5}YaH!JKLo?I(`;q{PQ|SRnJvrp%`;$1g|*hH923n5H6#ps;eR{f-BSc0lDrT(TeQ
zi?!+?4-vHF2u@%=6Jr_8AW&5`Nf1mxL`2L)P*5~OBvD08RZ2{xk_8bFK`|tgNB~F@
zK2B6q2=xpG5=8^>IESPTE8sjuM>sAI$3Z%;NQkJ0f{B=Ef|!J9C>d&ED2SjUnQ1~|
ziXuiLrU;OvQ>?BK48BQ#ZCx_Ci%~^Fn6HP45gQ#!cZFlYlr)gMgW!(10!_Oh4toa%
z)x#N7ljTRliNYeW>QjU?Q6f+iD>Fin%>*Mvs4x(LAh81g1Smp;60n;gk5+}yod^dg
zPolyK$YvJIj%@*=Ne9>;SooA)2i0G!AUMqgJ4bz4A{idT<ie#S5JM0{G(bIk6OL2G
zbP!1rL<}nkp3YuQP>D!^3c0{>fddX~@FcQQD+;3s2~z+l{2-j>%#Q#z7zdq%0H7pT
z6gncNM8iYu;s9Y+lETsw)kP&lBLNW$ETF<PQicGiJ?_zx6wrtod|t#K=K>K(p+J}x
zDFBKI2oQinfD@=DmPjfBQjnk+Kq5+snV2OaB1lC#{BQl>n;>s|pLdKfeFV^+tJ+{=
zsSX2j;NiG~hb7h_f?M{$X^4wUoH)hCV5(+FFj*i&<Us#<fE6~Nq1wejR%8_o@PUe<
z+yfI80uVR&<beWQfE19WBSy!G27}TRCG=4Wp~Y<l9qUtDQF~V37%v49dn=E2lwjK?
z|8!HjYDK+cZ^fL1Whe^7$`mtBIYFE`OLb5aJcW>TSa~tZ$EEG7k^{}xI)+S~QOtxK
zR71Ymlb93;Gkesyj$FSE`}K9Z(&XT%yRD(|YMp0&@r3KIhkMb;*f*SkU81aP>(jUW
zSYQ`g%aO?79-bFub?HHd+QTDVB<AnFFR8*IS<WPkQzY>Sxm0e<RCL919H=z0oYxD3
zEMWsnZJ|n&$hNh4TO80$uC}1WOCH#T)V!qoNk=(ZH)grxMGR}eg>sUH0&HPy3La57
zCN9Nxq343T-$QOAp*llUR`H3!j1eTkRw=kZ;iU>Z6p)#xPsP{=k>|H`M0F43W#K5O
z&J;}G5Mh}B>r^_a2C698(h24cbB?{EDL1?M0}Te*p|MpKYZCpf1YUd|uKhVZvR=;)
zI@GozBPcTyaXiO@HTjQ0=>w=j<@$Ko3E5m`a2HdBB@_`<W;GSIjr1|#2ee?B1dnof
z!PHIngaZnxK!_<Cp`{`;XDg&pe?Lf(Gh`Hn1tPR45=Tg@-cF%30o_3m@i9}+x^(si
z5QQmVW+gjx8FCD~jv33?LH?g^Upy5w0*CDWfx|*bgUSWOj%+~A@m*oou1OwNU}su>
zlD*7VkPjdyDI+W*kV8J$5R4WH0sfF617c~EPlt;8`t%=I0)Qz>1qcw56!ZtCQ`Hmm
zVH_FRXlg*@=1`Ei077XvRXx1o3Hlewr3JF!gR2oU(Su<s)N9uektg3Dt;Cz!f|7c?
z`G$8ntRA(TVDh6a-JTTtD2kR2Bk9U2Vgqt?%F#nWF{K2N<HDg+M?;wC+h@OcGN^)F
z69isl+ZG9dAj7IEmd?SQqYVU%m|Iv_A%TV!#aPmz==d1OcpMyY81kY)AV))cRsjxG
zgg9QL2UkZYMcDY&AUFu`1IipuK!LKnvFB0H1FC40f*~jh0)j}8C1pbp9eDvU0rP~k
zDN0IQ#ew4uo<j3UnPwGPXUWv?M0mq>y=Qxw)m{x?8zlCOhX(l(5cv=YjUW_36jf0`
zG@wHx0F0?rg2Vwx5g;WA1cS02&6ocdZpgmmDg0fJZTLK3T2s16JFQ@sqjFe0N2v^~
zB~cQ<gq&%S%Dodsh8{8;lxTpHfJqRUDj1Mp?V1NhB4IDI>*f=uU8kB~9|Y_5o;W$V
zyYOc`kT(F8dEN+<1t~;HL=c{w#BTg5rZX@|z{n85PO(APkB^ISv~W(8eOFwF#Gwo#
zG@_*frj$esk_n^`144oXKnx6&XaGzC5u{oKQ3x65PU|53(CHvug8}Y6`G+C@fYGF&
zO=I2<ixLf0LXiUn5_q+Nu_>}kEYJRJY1Twx5+jnE6z)`c$evoq+N#22sO$`Y$<g=R
zbnXMRI@IwFRLWqIdc7Z~Ug-Pj@p(lbh@yAF|C6^D&PaH_1~i{+=JO^lsh;HEqsfU$
zHU+UE3ZH4BV&~xLAO@ZcU%1IwNOYopYy?mavP13+Av7dR2PAZ&Bp?zK1X4uGNht#q
zioqisv;?%P8VsQXBtlS#L?sH4njAq8no3ZDK!{wbK~Du(6OyMT;mpxQMA6)jONPQ_
z+XT=nB&H$BCZEe7aDpyJsKBt1alT1SERxV1B0wTN9&`?b$a}$!Vn@2ik>0oih8%Jf
zazWobJn8I^4^q(3q1b2$fj4lc6qAxR=M*^#trZZ_O6YW&4G0=`wNkADXxN;Kq$mQ}
z3EM(U!!1OENubfBN;I~^p$OQZ(u_hBjbcrp(G9aO;%MMY>RbSW1WO$|#72#Ri7E*;
z2;qN>2xVR;5)tD;Dn^2UmMEp9nQ5gADH(}|Ujt>~#O4vx0~j*8NCOeJLQ-0J0Br%V
zxFQ&dNSLTiM+R4i35*yF6Bb!xI3SusHiikvY23&>gef!z<`?KlJT5sL*3=GZHH}$L
zz$Z8n@jv>x`hwue|I84uv}p}PiDOOQU;V@&9x-LIY8R;r5ev{&l{fM~!I)M3-jDjJ
zvvuvi7dT;;<&N+?Q01eE7LY;aCrQN&6AtjcKC@s#0yc2!O+Wk_u^#}OUf2`cnVD`C
z&?;g9B7DBQN^5JcP9=r{@~*^8e<%M>ZlC=z!6;~2R)h%r@dN<Z=MF*Hp*rqq4FHM%
zaCZP-&btGVvjKPsVhN-Wf=LLJ%nQf6M_fSyp(RLy@BMf`a4!H3>|7K7OeG4O;(~1`
zk5~0XOF==Tc?fPKDMZ9mfyBi2;G!I(!74-tasb4G!yr@J0m)EG3to)y{M#BXN6(9`
zyLt48&;<um0m-c<=8%Yz3K)rHnur)mp`n5%AemVTB4r{esyvzE(qzyP6DF&u%c(Pr
zI1!$s1AKC*cCKw`Nl@-6B%M8oQ@B68pL6Hv=SVlE-eAn!MuL7%P_K3OL&l&!&%F64
zaEB%!BLOg$ngQ&9L(T-B!}JU9Ym6T{bLQ!qaK>*AQ;`dzaSJ%Wq05<Wni&crpTvgd
zPusT%^0Tu6Ok#p3fhG?|=n8%$06{9PEI_A{|5T#))IIt4ZNxgA7^V$a%3E<vHfm{u
zuC_*Uy%u6px)gD4MUJ|4tBzpSu_;41vM~{>X|)yH;da9Ujkj)fw_zuv#)FI9BA_Nh
zG#FyFSV@3O`+W`}xa^7(W{}ZR0|0k~^LWEaydme0RGku>fkUBt<`5MF%6+*E7>+OG
zr4KlKjJC=i!UPDN&sJ#iE7vrTtTQ!43_{0-E09o(q>I0lKO77Qo~4t4*u#GfX*ddL
zQvVxaM8uqhLq>y_AYqaw3aF}P0;ob|se*_K7#N`{kc0N^QB?qtk}!$y|LKsy9m4o_
z6Z9q+tdzV|<U`;jr0=$_fr)SAz{<U=*`xsR0l5+0IvTHn1HdWPq0uCLf}Uj%>yx-J
zlO`r(@D*ru6PdvVEJk327D+^Ow1BjyNKp4AI)UmkCQ9-^WFjRhQYk?b9b_><vx!!f
zwBu|ZV-Y8ylS6DqBPleO^w=QpK<5C9XpE_|IG68`fTIDJ><lXB{4)oO?d#-pAk!B!
z%3k8^5(ZvjfW~792SqqwNLda7$&~mZ3=BvVqf{Z`L_tgj8>r}EmNra4go5DVkTS4#
zK*P`FKylA4qy$I4%@;W!TKz4Eo(3H`pPNbi7{d_;*p5hRECzy-g>{%hq9!b3Y#JDs
z;gl606ad%E;KI50hp<rr?4kZ(koqEqV*N%LCjZy|zm{i*wDLTSX`stfo?ec_gL#EY
zuKBy58-wv@yfk~6z>lu+I`>ZlsSfmt&M>&bP{5)-6*}E8G67wVlp@n;X&Zoz0j8uS
z2b)3KDHxF>3HP_<Z?&m9Z`blu6O;|jz~^@>by-vS5_6o;qBCDCZuT~L4+sa<6mXr@
zA?|x|YgGfsG9xo0Jc@R8_kVajsyM)f6sLVb3?u>J=$lzDc_df@5vm19P=FJ^qlUmE
z-_yp{Kx@GVVCmD4R)J8`B?t^K1L}lNnX7#fO%wo-5DHR;z)VmBL(YK43M<sTZ(+ZO
z1VH@%w3#9!Yw56u$?;saoJ>L|=ylfo^eB{t3k0(zUi&MXEH89uk~-nGVI+7)ppqfw
zq?~O^7Yf-3$|Yq6MFj;EQC*T|?5NZ#!o*UFh@?bWJ=&TtBZRIQ76`CJmlzQgGD#Xx
zfT;puh~(KZ1YE!xNJo$rik1o1LQn~$*f6G+Sq3BN0|guj<XkL8Gis$6MU=f!xP^Nw
z*L>+miQTfW&^HN+dZEHj<F{<tSH4~A5B+fFv2*OWoXZI>kDaM>WIZXi8UjS|2T%*c
zXJogVz)$Kx+sm+B?7@-I^DLDFL@(<F4ro$08cY;i6dt5|rgyJLyVjxe@4fx{%x?Lw
z7Q9xCm2)vqkSD?#GEVq@f>-uJP=S+>s#4Olpm=nS0zq6NzaTWDvH+%p8c?Vz8c`@g
z3PB<%X%><p6sDGdVpJ#!Qi=qmss@!x6`?6YfJzb>N<e@lLWF1*q5z^LA`oZ_03x7T
zMJS*Gk&-E;X<|xfN}!}-LXwb)RHYJ@CWet_QL0KQXcZ(ONQ5aGX;gv)prwgYs1T|K
zg`y=OfEbaXr3yr#DH;-hpeR79f(aogXcl1_L7_&GphA*lC;^E=B|?AzrJ)LFqGd>c
zDWr%(fT0Lxk`Qfvn0fAwy-8fPPTe_(1H-RSOYfr(FC>s?{9FbdMa9V;8`ID`987$@
z`ClC;;)all2_=#U6#1n{KGF5%<pR<^?i1i?CR!>g37`9+W+sARh>A)nsP=j{_WCM-
za5%)NZs^615O8T6(1y*W*vfD}k^Wei@j%mMLv6MnKp6yP>@00hpT-YAh`AQFLIK1C
z!>|+3NUVZDJVUw#xf7H`<ne@Hf<b+_8-j<S5xhaAAdr<=i6kj0LKKDwgn>dp2xtO^
zDvAav35uv9k%*}Pi3&m}qFPD<pjeTZfT9UPl8PuuhK7}*CWHZp*QXCCcl789wUzec
z-TSsEC%<7T9w4W92p~~AhzekIHiGaK5{906Mp)q_gMyM8L+C$54US1YXPsI4k2|Ag
z&F_69r%ddrCvOGPddZ0ZVnrm7N=mGt5YS9i1dIg;sKB1_{Q-pjjI;A8Oc+j5@@v4&
zm=M4w1EW<fNJU2;JA+9O_6!geBNahOQv`4W0Wzc!N|`#N!VxEsnCA<ez;acHE^HYR
zK#4LOmxG8#0S-Lj!UiHKB?*yW7_dZ57iR&ECX9+KBM?|2F=)Y2B&<XvM^NZQQ4~c~
zQ&ABTL_}2(@wDx8w#u!_?1B^v0H^@4h{(c1gv`+}L<|%aMFh+d6wOS`(LCib2M#X`
zAsCT~1Ynfd#+icRU=ax_D25CUa?DUgK_ryP5=k_&)euBgRZ~nd!8HXzR#Slq6BA1>
z2ZKyZk(Yu`I9%k-GDQ?cO2Z&aDnl(HNdyvZF?1MRrY^Z@g;>Fn7<^EWA?}`D(f}FY
z3<v)g^~3-&W(G2BvPppgZOz%U&HH|Cl<JA(dGsHg`*R|iHjj_;9{&?^CeR~5c+2-X
z3?fz_i6R1`sP+54km}j>n#466@_M=q4pTwgA?dgFnbOo9LH9kHK4^CmFYVR_)dv1-
z!g{|+@g7N&cAW+$qwyrtQ!ldePDPnn2j2#y=Aq7KYFK&n6u08Pi2%$e1f8I46geCY
z12)3fyD7l<v?owOLS=cmH3hI%#jL}a5r++%!nPij156u7(7rryyg6%w2ppw^aRCS)
z=SDEbNoVO2n-%_29GZE2d;_!etoEeH_eh#~v>nZ=Y7%C8o<9SPp~R=1imbGveUT~f
zd#})Pj8yxkG|Mdtd?#*>u9G)Unmh5^tX~vwxJ_-29BiEw6+I@kr<aKwUko%y-G<^F
zW@Lt03Y<+?KbFcT(jo2#<9Rf)wl*-J?P;Z%v9W~*YMNPF8yHY>n@uvtG4Ki}x*9Kf
zMD`vz4{(Ns@`}DF1StXhD0#=1c=ZV*^qnWnC>_bDfq&Az^94v0pu|NZDzr=_K|~=U
z1R)V9q`(BqLIea70AA`Htq%~KNeGRA11dfPgC$5&BuyZV2(BltQ3K1xMZ=B1ezl{~
z=Tn|TfMMVR?D>}xnJ4=jCdMX2i8V;+ya6B4J_3w?lEzGznZb@MK>`BFMg+LH!VF;I
z;6Vj|C|jfq0$Fh>SugFwnrFU_7_b^Ha78h~I<qPSNP`?Mn^6N{xk326E5?ne=tTGL
zG;x6EWg{8ZDq?lGec79MHE?=&N(uuLr_ZNCmG!m8E<;Fe`=2rE3I@bGK_o3x;D*%R
zLzrq}SY{LoAb^Hps3wAdm5D&<L<4##aa0HeKK_evA-v-c=sHbyOV_aTNuW7t==Yq(
z`rp+@HWutFy(F8Q*2ph*5Cee#>N{X731TTq5hcSx14ukQrjhT`AwTMY;2`z~ST>Ud
zU}LvN`X=3hzbrKm=V7aq;4i2R<ApUnho%GG3^IH_J*a{*BR-B5tdj&M^TjxC5p=R3
zciFln1FSyuIyVP2qV6N{|6q2~9H23vBBqp-@Ew&@cJp&+@okxyW@FHYKook+A{;%t
z{Jv3qtS5Dri3k`2uvIr`K3BkO5<_rwtidt}Arp_J>F}`r!@1d^J!2{HC$8Ym$w}A(
zm`>;Q``7gkcA_GYV1Qz1h-ircW<l<X2W+YEeDemcsm*;kpQ|@c*yWb(6{0TwZiTK+
z|8uh(>$4PByi~pSj^6B@>C9GEyO?gSau0p(LxpPFUhziN7UYyg3vso^5sfo(9;jc~
z>x0MrYyZ2ta1cSNRyL8LV@YA=IX|8=hJb<|c`7^BKo4K?vEd+z8W1mtz*y4$jk+ly
zbz>$|rb?im)7Mliw55!l7_oZX3!%(m5d~CL<faZ5A#}Fe)h)8Rk5@5uI!yCk9GpyL
zO%AswOi_APJ#pt9$wqBxH6Vg6*0z|o%ADoAF9}lH%H0%eO~Kq@!PecDKH73=$i<Tb
zs9UI=@|g8~Kpvow>M%WshnRfkCze#w!uaquP#wZ=J3c+<h!ua>Ks?;Ry8(_`HSUk)
z5DuvY2t)}GNE8FiXb?Du_7WOC5>Z&Fwg3ztkbtION*dC%NRtaA1Fp>)7XbnQ_O3|$
zgDRQ@D2EcbAtfMyAOcYCJ$(M&_&d*{31GjIdnhv^9WT7U+1Pzjhtg4EloPr4j48oa
z3W|HCGMySvkJb=BMs#_85B2#*Nj5W#uQ{^V+#ioH*lUJ>IQ`(OnFKJ>9LKptIU&QG
z-KTeaqsaaXbdT7P_ongj2QNWi#gLGT%%uZLg9{=gN-ZeO3@Xa=0C7Y)I3|$roX3~Q
z2yGtZw^Z;ucYh*+_1F(=R0%OJ@(CsfM=*4f#1#cFX#1mgl+Ls6#U09-dk9_xnSvQ9
z7g5P^AT%rzjXF@$cXj3hUj9xhyk0;b-iOyR8bs`=Bn>8w1N?S_?v-}Pj4}^b4&VWY
zMoq^%{)O1Ri^F5UsQqc#1?Y#U>?A@4V0J{|%%_Nxn8VJ<&d3OD=@Wb(XsSRyJ(>>Y
zjK~9jeLO4_eO^R<BV@ds-#eLARaH^BUhEIy3%Ax+wmZ5Ky60Ev-GV$SFQI|VhwPG!
zCsU8GIG@QNc;Lq|1dKh+eo4z&Qfi^nvXAid3U(ImW{zQ`ct;Nu(-RPEV*BOED9twm
zM!|+_5K^T8P9!p72ne6oB4daoE=&2az=Mt(X>nMCe>v2fvFP*XlSIO7BnV3)gbFfC
zQpymLqC^+o^N0f^GD8}1Xy-JFTLrKRKB)j=*8qJ|9GIp;LA~0-4mk%YeQjg(O6ZQP
zFqM!*2x8Cj{hej{&OSedpdw%0CPg7jFb&MOA$Qp9Sg45-CjcOR4;wz}MDy!#xq4N!
zYK#bgYx&@Wa%x4nl*J44VUX}E7^F_M0>n8)`){Aq);jNDjiUGd0(iP_GHfdY!pi4w
ze4UBRz3>dQXsZpkI;`w@(ty}Tp060uyX?+@_Ah8_Ft*aWCbMzlTg?h{;6mh{cc+z6
zdM)3E+~`GOuBPs632HeyY}FZ}=IArvM;5MWV_6RT;&Ra(bk`>F$4o$OKKt<9qjvgi
z?Ca4aikf?HQ6uxjW$QUIVKkng#N5n;SgN{nCj@rZsqLWaprY#%c1gEaEH%;TZ6J{g
z6brH2fn+tqKz16}oyzE43S~#iRaV+=AZHZ}a|?0}rWT1AE>A6EJdR!QCGF2Wx;v5P
zT0=&~#U)8Yf5yNJ_f)88HVqI9WYLjjejrHL>W!l9h!{wbK}?j)0aU<vSH1{&!}7>`
z2~2GSC}8dTK9$e2>Nl#@zwTSpO>bX)793Z!nnVmeLz~Du;0L*49s~FiMTPrg#vK(D
zP!!NeNi#tO&Sl{xG*I=E3<K|EN>HSrw!{e$BoxzHdChDDOp>}NM@dPDz-(ATfWT!C
zo>~MHAKm@wr{AaEG8k#I08v$zFJXh)1SG!^A%SE7?360B1T18WvJkSQVGLPhQ_4Wt
z5QoUXhcbEM`3H&}B{zo*V-J(S2ZKs)20<x*md5?Uf%5qHFi|9&HUpXyltc|MO;Z_^
zqvvg<dLRxkd*ly120gznfO~;VOCP)>9)~Oo5)#W24s1bM2sT|MA{t!>iRwQ@@IsH0
zPuw&%3NY#q$RaDk8XJY=3;1YN=sC<d=EMVl-S9IeVEF-<5e3|Xz}%Rqz9og8COa-3
z`7U5EurQ38Kp#!1>Fa`QP$dNW5ha9WznUBnAJfl(2Rwm6*7<PH1BOEOxJhK42t$uK
zU=MF*m{x0K?C$!{b%tYXKXHjka~e~2VslH)K?ue9r9;6cwE^qPbUfLJwnRWSh7_za
zF^NHo%m(EB@^zHlM2C?h(!h}K??J#%!mo8#1X&M(0P{al`jy!Zc%@D-hk71IiEwbj
zF)(2^jeue7lguM*m3zz+(oi`Kk@b0keei!EMuSMvK#>Ah^~M7b{}#ehktst!K+zPW
z5`k2tNl8F7(GXP)AWTq!KvL2PDF{;XGXO**5X`hOMA0M-B1Da~2B>LhN=T9d0+5zs
zDi#)iB2cYqT7;3HVxRzqDFO(AB3edKq?m{UlcItlA(XCdB@)o3DM1heNCdzHkfKQd
z0Z~arijVU_lR{7dO2iQgM5PNuNKz|7NmK<4!a+eOr67wGN+(qQfHWbbeh@k6KLUm)
zKpG4*ud`JjS~$H*lKMo#0VVojYr+8X#ZN&U5Can6+>uw)&XMhUr1OuvcZ<4yN2O~K
zK7@ZDgbv_+-rl_@cRaJ(rp=Hezjb{7K{Pa>5YSL8u{8@Y$wWj|B8dbj7fOci$ch-2
z7K6!#Nf0uBw$6qMN+bY<QiWr=G*XpB&>>6^G{F#40VzbtQ4o<748tgaCv0IfNF=lo
z0|bQve3^to5D3T+lz}h<4FM382(&2$69lm+g>}J+OA?w8fhmS28HP$wpg@XX6e3ax
zX$mM%sU}GzLw+HO($FAbWT5Anbb9@Cb!av7;955j6t~vK&2h+e78Omvq`Q)P07h_*
z1(7_W@(`qvOO!iE`@#Dch+kShnHG^#@+aFJz7ON(>U`dm^%pwvA!xNH<&-*4aZTcO
zri2q;8js1lkKYJ>I<jdHse+`U#7_4cXTjv~0Y4a;;FvB7^Qb#84S3ONl?XwRFGpK~
z1cTng^qt({<y_toCu4`0-Ge8I9{Lauw|8v15+X{3=RQyxAOljh+e3=M964ZU81u+G
zL&!o0pjw6+2qc7{@qxxE4<QZ7#HoUZ8pO#>%DrH~`)7*04yG@H5!8+wG2U071paM=
z^$;4Hf5c&+enS%!cVYH;G<97q*tY~jHzpEpRXxu<IEmx(gNe8*ybxl6Cd+uADj6O)
zU&tIe`XknW!W<rBofKd6DoDRFj0WWbRP~)o3i*8fN*=J3Udcx!0NxNT6F@W#2tdk0
zqa*0b<rTq!>v~SV4jVp!^qL~40_6khkuo<SlBy6g0w3!Cz}g#6Y6r~hdJl8hyJDe@
zVd#1Vi8vb41dF2r?eX7#l5!L36;}@F;vS_=ek+pU0nTM*n1<M7jRUPZNQ_G9AIhSe
z0&PA-husP)JJ|maA^r~|L8`j)o*$rzsR}lOqz9;!C=jKF1R_KTltMxTdwz<Z3Cv1}
z_@EssB?2u4qbQ%z%zzviKp-VRK%_#DiA0#80+N!N6iI+W0EC%jg+x+Bm6Avd0|UDc
zasnzsl-5YtFzCS~%2EXhjirFAB!)mGjV1XH@%fBEMH<8xbD)MOXegi{ic$imVI(Oc
z0+ND=imGTR($g~)6bx+Ag#{*P#(TlwT<RB$ww8!q1fX3kVvtqXuwo#nX`&{gCS;nT
zU^X_WwuypvjgcrKD2arIqGp0d8s!o=D3r=$EduJ5bf9JoRZ}EYF%wZWF*H;Xz{C`U
z)X6kK0TEP@RM9L$AVkp<GD9*GEXqSEMHLZDRT7azL_q^1R7ljsQB*}mG{q53GSNXH
z0T9x}5<wMIGDJ~~>|xZgNfIp*$WT#1OyGln1GjMV5t%jXVdBEN6%2Gm&>lfCL?s2@
z20O<7pTYibqt^sckMYp@#~)P!!3b0LX)Hic^=y>nQgLDqkF1YWN`4RG!uf1}%7$);
zYx_`uh#(Kd2Ud{3c+B8|p@8U(5_N$6JVhp(ZW@MT`Fbs{o8C>0SMiy;%i*CCz-{bj
z>l!-+cdPL@Xkwt>Ky#*KiS<v@+~7C_>uHO8HH3Y59qnfg=F&5=y*aK330_@$&zDnq
z7xYO4j3KBR{ilp!p51&jVFvB^<wO%cvS+3b^}q>{+~2lJfslnWE=qy$vJk>=-PWc3
zQ9G}34*%TUn+HKJb~0%lInATE7LwKuMoW<>T^1E=;F!ck%y<+5?!LC5s;Dgeo8<Y=
zLKq<HcfFAA3Y~ReXboPEMs;73dn7xd^AZQVLI`4_A)tAlzfLBOV~z&9_?;wnF@!`k
zcZ3X00%+lb8ed#~ps!uQD9cgX_D}lnD+cBfOKcOLmrk5?Aja2k=E%y4_V0CDxI6N6
zX9$T*=P&W$`TYHzchZ1@lCU7@#AbtE4eknJqTqwHKTtv($KC9)kjn;M87~b53=<jo
zY3~Vfsgl>d?S4WxH#LnZ#GE<?9eM;<%4T9swrD7mYB;8x%;Y1V#qAD7sy&!;a*P?a
zPmGE(+HOh}1?8hRnDPn2@TmTGYHp93Wb&=Bx^Cfl^M~2v=s2AJ%2JwG$pJ_Vfz9if
zlL?s$KXRDY+#d(p;Mm3qnD|OP?8akDFbbPD*Gb8+{W`u}G92q!((zYV*?MJQc`@bV
zI32`PA|1l{yV}Dpux`u|wT+FiX|!Ud6sp7p1FXU;VZc2&7~POIgDHiQ)5}tEgqs^q
zDc6;h#Y(H-@x#YiTCu7d_t(3wuhiAJUnQbm&5aCZAwZvclEI<^h3h7@eYf=MWu5gC
zN+yH8uFi~{8$i+nldH51vy3>`Znns@vdk{sgr-|a76wVG+K)<e%H&-1c?sAylVG?u
zv|*>0H$Efa1fiDm0x^n4VT2nftmm`AhF2D7C$)y^-l`V=5_H3K^p?}?K7M{O3^<4k
z;0Y;^4VS`=>SkDCf)k4~TCnmO@_WG<EqceEE*;bdtl~N~0EPINupK<$yy?OGG1_n<
zGK>NT1~_~M@@vM1O1;P^Q@Y7R)NcR{;<Aa<f@9E}>}dGtsVPYa3QNa`oUe!-4<|t6
z<flP8#8jIE>UHWI@LV5x2~8{ODUfV@5(!AoM|gr9cMo&Th8LCSz^YTzPnp2f`~1V#
z(w#|I0!xAR{66*kr5^W%=El#Pk;LE+<$$SJ>*{TLJ_Ue;@9V%eQE4*|+cz-^bx3#5
zYk`a-_U=z8oFP8`21m${#e>hadCpRcr)&p93?4WRk%$HIduQLa1P=A(AleS`3A@XS
zsOf<Gkn0RNEkm4XF1*@jXbKrlS&9;wKrspSozuAC<SE$zs)PX95A|#3E2}|GW9mHo
zHpX+Ypu7<iN}`LN_o7W%z>ckhU=qNjnIypBB*QA8h^cLuLO?NDfLs>ocD9tVl*}uH
zSM5*(BKJF>pKOOABBPO~L8=OvI#U}sBZP!lEU=@tn50gU!D5msGwMk>z2kS+Q$>26
zw{iu@;g3n`6NGhGLxX~{B1!;VrBQ-{gR3dJmx2!jlG<?AP^NW`Zj!(XoNFdkR2i8z
z3NY=GDS{`YuH@kA79M6Ze01+ZH0q4nRwG)0@(W?P#GG<6cyn>o&|*^_=f(4_!muiL
z=wAeJ)OPWv1Dq@pS!x2vDO7QKgGsO%kvBN;B-W`;?#l3jAsiTc9UDo4_u^&rgmo9g
z4^y4o2jT{mJe5vC+y<E*v1oy?(*jux5hgUIkk}rjb9Eqkik#LZ4o6f0$^bhjrV!nv
z7jVX~WPyxG&m<z<Nd>al*`r$a&%_j+y@w>iZkX~`8AHTzJ(;9CZ8*>eFggZEmm`p!
zS9i}ka5N7-*&V^uLn#yLSJ}*ucDKHqx|oZjf-h#?T}Q-YFVagvm=Rc_1_r{XF;z0+
z98AJ8p4HG5%dgk>VF0sn8E{|$RLS85CNYV<Uoi_~oSI1Jdvpk&LJ*y0IwZ9S3p=>g
zv8)>z?`nJf6c1=><l{X#O)KtW5E}^vl;4s$dWY8UU(37?BX;~9g&~A|)5rw!5H^)4
z6rt6XNby{uiGl;5MkS&o%aW<i47hOY17wU*EXUt<gM^s*{f0x(c?D$YKGFCv9>fE{
zVL}u%i-5{Niv%*N5|S|}L?}xdh@z^hsfwzqX)3CyiioO+sv-!ADx#{YiYh9qLa3;!
zs%om#Q8E-!MKn!C5=lfwR8dJZQ$v|ZAXQ9BBb0DB83!aakr*Pvkue}iP!LfjmvHY9
zv4uz@lOXg+N6>fygXpOsuwY0Jq9gnpe`WyYeN2&I0i+~A2gFpxBlkfvvO%sMi8m&l
zp8Yy%Okt`Vba)=~NIq;G&p}s}Ay?C~rVtPui~C^$hCnG+mQnF1<3^BZ1ej<=JmBka
zsKC8`GI|hG_Wu_TNP4^{0eHm4QQvFgauaT`?)P9RX;4Wa3RaLvmM8JWluV?oOpGW=
z_J;%nqah$sC{PlDB`Opx2-2xQv<e|Gpd|z;0zd%>1Sk@LArFW>K{On1-_xu(2q<t*
ztbuw5Fbrg&@ChDGIhSO1ZqJ9yhqgJb`)7dxdq`4{LLo|5$Af|<LMkNrW;9{B4BTdv
z?)FAO0A;{(-bNxE`+9#jQ-posVs2KDZ;c2AQevT)G!P&fLL@d2jzE6NjhLNN$`jfr
z+&BRs*oO`Pp#YJ<gK8|<1)_$toMIu=`>D(T*NS<yn1k5}9Xqld_Ra*tR38!&F!I52
zz=fg~G^$jL6(DFWl!Oazu;!%5ctap&u&nU-6G-+QCWxefz6=Iy%S#N;VM7YAj4%(r
zDZB&DIpV?S4dQ~D7r3C9avvD;q5IS^X`o2v>|K+wlg!S!qPv3GDlwd{csdEfGh?Si
zt7xld6LMyg^Y{6L{4&0H41+o(Ic{cPib7-`4~vh*@3M6GJ-_~)l%Oc5jbYj;-ilI+
zi6t5L!OT*kF_RKglpotu2<~g=Gco-$1+XCcp-{#=I=3yj$~+iA+cgAqmkM*=?=?%!
z!$&d%r%PHgC@fE7YS9r`uij2;>$I`ZW1m*FwzJ*u{069vj5qa(=O4@-k0VG@dqI3^
zTJqkkJ-dZpr<Ks}A^5pGS4cBUzENe1^gUe&Z3EK;1GgZaV?0?>pmB2nNb<;mK}xtA
zlfI$F`}=`}skOC;gho%%V$p953+MQJO$Nv#22-1G@Qh<4mBwXB{Vy;Y0cFIJD+3%W
zr0|S%bi^yv12yLk3Mtbg;XFzU-a-agNP&q&4|)dVK|byEd$I)nE)jo0CdB!8fCr2^
zjl(iB6bN|t9a!OV1joPL2lAgk!f-)E-Y_c&C&beu;O3A#aLg$tJ{Cr=sMh49&|quk
ztS=>Zf%2vizlm(whSe}0DTe$=I0gJf4TykX(sE*=hg6?J;fiSZpMEBSBFWR7Ay~%2
z$(dZiNf9I!yOUg&h|5l8=P>ePa9bR-=*;L%%xL7|f)a@`Wg`%RNV5V^d;rPB?#H~x
zqDYTcd^#T~91(ei7nw#>d1y!#WIZd*5C#{9Xrv$|N&ABcZce1aB2ao_WQYKQP?#E|
zN(3}$a;y^00t`NM4g|r2BAQe`I>ML}$AihtsN5%<aP@aoIxrs?Df&HALcTQ<hxK=U
zO*@o8h?JH}FA^WEpn+NnRH6Z72o_;d5@nPLkRc{&A^;^qg*2ZFZ;RkDf)`!YI?qx<
z4<8I^p2}4#%{B32K4kgs2$SZ%>=?kyekXayh7P#KmLPNWo~MjIC**n16MHIh;`M}~
z(u#SM+g}G~KzIE%a}<)0#Gfw^IRKh62fZq2BvQ~>h_KLf91is1qyQyAvXv5m(8K_d
z0JRiL5Ks|82^115!ZikmOa(N8tg?p{7fKBPL?IywD1`{LA>raDSMT^?@zSJZL>Pyj
z^H^W7j<6uob=A>nwbz?c`$R2ak6}LHBluwym==^MI>->nA{tOug)^k-(ySzIY9Jus
ze4T|CH>G?q5X)df3TYwP3Mv|@leMu;A5;6@e=&_0bLvi1C&Hj_@VIW}r%BNXSw%Bi
zbal<|3m*T~^k_GH-c$7skLUL&fcnrGR0r6=E7Cw9`Jcwg@gd&;L^-`tUTiz&pHV66
zBL~j&4_4>WDeCp;Fbz%M#H%pYMbd)z!bMlM0PZO44oE12*VE&J!UOoEzD&+44N0NX
zgQ9Nl4WF=&%}Hke6#R-AQ{QQxV`Mim`bbGa9&kY;w50jUrU|-@xy?I9Q=D%^?|6;w
zGl;k;tnBt(dhec|9C#7&Md`?qQ9Ik9cy-~u7I=o<DR@zXX67#!mvc?%avn!E3~csa
zXmep-MFsexzlr>vFOSQ{Or5Gia1n?Tpz#Zi5)DPX0x{7_)R51P-@0{b2&E*ZLkvC`
z8yhf<Muvkea(J?_O$=h<Lh?ZsMJd9Pt|+20B@2C#lNXj43>F1jWy5x*?5a9bonoB6
z0Sv(KcR<wy{NufW;9|^Jl2I;@e?vimmM}65!6=0c7LOqBtb;l)spAe$Ja_{)x=gUN
z6%PidXFW{p$s(f`a1bzB;qpz+^~4TT$y2L$D(MJH=~7}+ni^m>5>+fC^(U_oJ4olM
z<(v&+&qnCx(9_wYx%ny&b0UMHfcb2w#E`fg+vKxE?|o%K%tnErgsf%}NRndcw0=iH
zfx}Eq0x}FU`zsSfsBN;rkBVHKAJvTR`B?EDqtOse#ANjp9%Qf2fJz30|DMwOZWBkQ
z7=<{>vH^M@5Z=d#2i6hOHv{QS)yF6yAp;8_^o1V2*4*LL(^CqPk4Nn6g}llUC^VV`
z>^;*)kk}@bSPh||2Z3Ni3Y?cTIq8HU2srPs#FGd^BjATWF8yI47DM?vyOS)lcsxOS
zRu+{e#pdfoZHOP}xlMWThM9s6xKj2mC&mmC2eru^Zb6DMMHN&}S5y=em!qMu$&SD;
zk9`(LK-=R+<www5gq;l~1A-~?#Q>%LFO^&*3FMQ;1En-EpXX6FMV*q>-l1hbCkf6d
zoYxi<E;PWph9HW_A?D9N7lQ=&NpXt?Vq7rO6s0zy#PP;CQl6n`>KhrNr%Jj>odD$M
zev$XWKukvFG<f7EsA>cw67<!vrp?yOl+(qW{|yt;$x09HjcN!ZX>r|{JU;Rrbjx^~
zvzJ@bPT!gMO)N++0~#oM$tWP+FdLbaJV0hGZ$hDq;FxX?d3~2)-Us5$eUx5#sL|SJ
z4G~M##~lK3=Ijtsh>&C~2@Y{L4g}FGxx=1&+ijVsgO<iL<ZTpgx>@S!!HM$+Y7Zx4
zXUOe`kR3;{qhXk+as;YrN0t}=^HNC9c3~q0z^r0uX*fq#-Aw_|+BZF`+DiBr2d$$(
z))a5ORTS!|^WsYB4fEa&A%;<jSwg2t&nwWJx3k!tR3TuRT`>TeWFo!QA%<vnXpFN>
z_+h~0(W4}?6ND)bKzuY3EV6eoGc($Q(XKq>(AFJ^P7j}B4t5wo@fu?pril;mHS!gg
zjYcv<+hDj%^5Y&T0)!^?ICi>{vT|}<7M3&z2zHYTu4Go5Rnn-YtCANL2=+5@m^M<)
z<aSA2&con3+_3m!;`8s&=3p8~JW^{9BiZ>S!5AB6LW(d@Wzo$_Fvk$>sXuz;wDQSJ
z5%bP#PryT^G<JO1?!i$wwU6b`g>uOKkn#LDnx)b@3z;;<_Kbb!x1Jp^751o&m=5=&
z`t$e)4oGm+dx?k-3)oy@RWHr5eD|Fc<i0Z0#~51I31#L`Ho(s0^+&^FiXk7@9XFW~
z4-4`x-6PLC9cH%LPx0aK3WH1g+}`iT_FNpq=Pb0(RJ=8bzR9H0N1SIb1&s^VJ-a%V
z$zkjoL~9pFJyC90L;50CnU^eQQNY;rWR-5HzP09LP(~pg^0G;WI`2-3?Qgc<O|clk
zMI1xlM>@+Vjdmc>8^f)+8*g|%WN7)k23wP?nB+<#PC!T;C{r-7eLym9@6l<y@(;hn
z)ilv&KZrm4Vg9$r7o5YyJLi0HHwjIUyj`WegsW*`_i16SMF@-#3}jI7O$|{%p`_SQ
zz3{tIAn^tnU`|Zp=|fr^S8-oZfviJ>?*=Ep^)MgyJdT6hc85v6c#pI3U}j=J6`pR8
z(@ayretYarAo(TtiQBX8)=Cb$MGvH&WTz-4&o#PkADVYJx|b0=*XGJ^?Mjf?_^xHr
z=3t|s(;;B>6q1xQ6wI{RBp8kL4XSH-kEj0(1iXwPnO?6c@emaX+Fo-VOhU2SfVL?o
z#i01<1Q=naZNG&5>lGr%DS}_5jgYwsA;3(d(Wy3w(occ#GrCwzJ-Z=cbs^tZrDHDS
zywiEOJ-9w+7|=+<K%FBe!PhpO(6oLnj89GRDgH2FurT}TjBGU$)ht6SKY+nbnd~|=
z4xTThi24)!`4UJLN!ihU@WkPK%yK^BN5J+~pbe!5@cP7|gxt9dA$7#~nndP0{$${s
zIx^LZDDz_`=XaG}4A?X3Ej|e{*p`<0aOR!am`_@zw};8b^wo>7+aK)*;ku$hj(=<^
zN5PcTBxDK(RM9*P{On*rSRP&MV{|71%=3^>Y)2NBA9%-KbDviVI8G}c%clW8_uIBI
zgT7%&Ool^H@rqIvpour7O$91xT#Pgy`^Mv?w{+vONFJ0xmzVLXe{Z}80pAI|`ah=+
z$a4lPPC}+gktHg={Ava0n1oZoDXCqcK%^WYSJ66>lnj-13L6vZQv(TMe+WT_7|D^q
zF&T;mkjffyGf5?O=QJdS(g&_8_7vpsv37E<WP>puxMMCcwlokzSmp=ohmJk^cn(}$
zgxdVSRs*sn?A9`$ugt%{+%J*YuMFLZKhu942k>o%jhUHY?rnyVH21BsVVi4)q94T^
zA(bmfR5QaSGH34GA(f<}L+&fdRZ)^FA#~_IfBuH=_wjjrj@SG7a{GMAvdeE&w6~0X
z)YA5XpVE;>-{)Qtt*G+643Q(H*X6Bur)3}^x7Yh##MPE6v>HN!(TxJ>w|S^7YuCH`
zJjiMPdb#k%D99*sbWbtUMN)43z5(^xn+7=LL4@+%F7H5%W!^ebYLWkQLnc$#;`z&y
zYPGg<iQN%?Cp=N21EfE_GgjjQ6sK0`E9BU8=^YdzX{7L}X{z)NpA@Z&tn31*J+AOu
zQ|KMFry$v(;J%KHXeCWFvrGz?JaYhZJ4}J<DJWPw|6>kNab&6(oA%@P;a?LkV%<&+
zE6zRl^YcJl|93F4Q!#S(t!N|S$Gn|^>nKf_jb8Dm36#^0(PvV`of~*Q?m(8UzPcEw
zS1YbDy_E%l9^+bG5f~K}6;ZQ77{AM<J0~fyi|2G7xJ#SJH-gDr3}ci8|8RLeo^Wri
z=~MlXi-2%vpFQE16{*X(dljJ4vN+_>GSIrF5(bH(i&S(vRH#5y53p22;xE1JQD~P}
zS5ar`pN@2I%-gxJeeJcvNsv~LdAA|tg6%;i(?6YXp?+Dwny($j^0HaQooaL{*Ld#N
zc-cd5ev$uNtEhKT+NPc5>r&L5@Dku>BH8y$v2Tm6Lu0wGt7SvUXXt0?E4`Q5^_uOZ
zYc}2J;qSXhw4g6P-)JB*1kdJiI6PZOPFihcEg=`x1PT<C9MF)v2d!h-3y+&ZQocr2
zv$U!+AR-#f90D^n4T0hC!R$grZV~Qc7~y)%q~0u?FQwJX0|YV_C4<gMi*2)UW5B<k
zY$t);!nOd*&Wv9TSol`I7**6sy(FR6wxqh>M<wS&x&7IeIR#0W+ido3Nquxvo}vkw
z@$Y04FV1~J@~@@F<aYK$s|Jys)2)^#VSeT(8v$!;*dj2nC{14k4PSbn{wY}T$7w=K
z{O2EsOf)E@gY{^QF_-<NCrvE9Opd9PON1N_Gk(lqDyjV3|DvxK-f{Z2x616ThR^ed
zn&254VVNa;ONt^!*<8PBv5?~kV(j`A+jwWoX84WMsnz+FM9SgPIOWAZ^BN&<AFSOy
zTsPsSs3O)0ZJqzqKN{|ulkIYX3w;?IOk!?UgE!J5e*U}^pk#h}2{!74@n0M-IABpH
zwH@^4)Q}tPgOtu0C5er)%a)kq8k^yjE7&blMwYzafzEHUi|y%&ZIh(s=CWWB;nqmK
zG4P~wi4BziDH%#wVu%(-I)|C(U6s@6{EtUT?%|ayN+>{_qLar@WGB7<WTAudxj&)R
zJQpg#^0&tn;%3?=g1tVh^o#uPYPBC#LrB?a>jn}Kr5n3ui)otqH-7*6X8!bP^Z1y}
zC?lb=TRvU!=AaF~%{4*$++ui{c}J=eSoT!co0Z_Ts`lIyY05%hTEEQR)e73~{poN(
z4R4-s8qyo!jER))KqlMezq@wjq%Sdpb#&PB-dmLqe|7%cU$Zj+8X)G32aH)4_i4K`
zIEU<S2|K6Q&0=nIQO)m>hNrE^NUw8Ea@nWgUMAA}#UDg&++?}LMYD*Jxs**_^0R~P
zx%jKtQ!ur`+{aO%5A{jPqV8nbZzGT6X*lIi!+pk~!feLnQEYZX%)X<Ac=4hYv~JIP
z%cc8)xTY!`s6+IM*gYNR=~udkLLbA$3Zw0cy><>2^EfxzC29D+LZ^4?Q_jd<{gBAe
zH{Bthtzw<5l$N5IE&DLuTD`0S{_w<6AJZu3(U^CNrwK%}!4m$o$FoDq0mqM?`D{@S
z(L9ivXs89^oN$kt)~;Qaq4yG-ONw4qM$pBQZGhT6_A7NxSxdNU7fmyqU{WqOM<X+o
z3}W=X6}%3g)Ed<kbnj%3{roxqb#IQLo~qmpe3bPEzdR?|ylKDISY_P&*ce^UYeyDX
zm@wY07D~<F?Vt~Hc{HIA;kcvK0}uq1^WtEqW18x+5{}j)9dD7uqSjga!3w~(5ApmL
z+z;;vfr27&^tH&IyJDGFQ@?o0>Z3z)`^sR-m*35Izq@YhKY=%cpJzn)?m1B+a?%e7
z{$d#x@ZfT{RA$+JIdSR9nKBfmPS-y(wJN9lq12`4*(b&%)Y8NhoQs5`F0g_vXxjG1
zJoHdXJOF-hmz6|oq2E15tiFRqBrN57_9vf-N+`ARIn}j_+5)1v1=+z@dxuBsDylvk
z{wGxa5EeJsl8@058qCp^7N(L6m2KQdhw&E4{;%3qy_d^|kOH*efxh4!bzoAa2%FG$
z`<UWUe+)kV`PO%v2ZYSJ!gkg;SC7N7=mre+QP*?cP^Qk8O_tdeHw^7pX?@+BzA|M|
zF0lUnZf!}p-3gwmvhI+g?tuowjwQ!0w>Kvr6Iy}U?i*?t@;5gl?bolg&3R-BOZ%KM
zg8ATpEv#v$jL9-H)Ps1H8NA$QbSaMC#Rgr*LAhs`u;iCW(l?;%8%Z5ZX6mV-$~9dC
ziL0(&b$#V5Rx)C}TMc<EU{CE?%^l+1TT&`(*;Q{v+t@P-h!e>f-(F8a90hVh(wvyo
za@#Zu><gvjH+YH%)=*B%{K~cUC3akgj^%fo31uK&)OhYgImrT1)z`5nr$QU}l-mG3
z^dN}X*3*+y*M%4=gtgG@S_I+tk>~<xZDNxSuEcFfzbF}cDDY|dh6*3NDoi=7h9mM$
zcY}5@R~s>hB@&=__o?F3&3}t2<fB47d~>PoBM2i^LWl8|c+(LIRg02<{4OJB`)Ajy
zQhs&H9S3ftT)AleS^B=Qg92%oe^Rd`;M_^4ZayNRa!7^MT)lc@x%XI&l>SS5+u9s|
z%Kc(kXpExYGu=XvhFMr0NLrb}VfZ2#_?ENN4`AY41Md-#2b-Qi==FBU8hkqy<Fyk)
zBsGh^6G`WFMhgv##qcKRKU%kg7ERe!HhDu`sM>GlUg@>gCdz7#J;P-E^X`8>=kZ@C
z<MZzl&#&ZXOpTel45&OB3l)R^Y85T-DbH)k2X<M`4F}1WSG8KTv6y*+%YIw!(f3v4
z3n9dWAj4K9(e|hYPsK!PLAfP2bT6wgBqZ<IW8_4C+Fr!>y0x{W1S@?dRsW?G^DSZp
zu;29Oupv8)bRl~~+8>vyg|hAhoNN;hm#{$+g>{flKwGGODzmAzXB<#K0+I-=lhpAh
z1|?NHpHK%uWs>d0=`hCLJ){&Vh*K}j@CH^&UrNt#h#~_d^-4(@+Dc==>PFy7ux%9r
zr3dibl_E!LIZjlLA=cK-1BK$#-8`v4gpQ4E#tpH(U@)~xN}mDLVR$eMZ3m^mKUTcQ
zs2<|bEqS4>wMhlkN*LZ;A^4TF{!4=3Okbt;u8w5eT&2-db>4;t(eOfN>vhP~xi{jL
z(|l`(!7|V+@jM#nED~t-T{GoKb&s04WLc?P2%_C@=szhvLYP^8ZAf&nuasK%dt0y#
zNd;=*a9;!J^071H-!Y@f8Rb<fm1-SW3`QEtU?F`C(Z3`t$LS6Wg}ya-<OLd5%hnl~
za@6oCqHw0m1A(rDM4<ODQB@4FWG#mo@IIvGb-mv`BJU3?z4zXCRdz=prQ>(<`N`uO
z0JdwAhxO#cBkv{;MY~QDj%Zwdme;FPZ2ZN>-z+i!60I%W6utN0CqKc5uY)o7+NKT`
z89v$-MZ5161}or%EQ155)!w)7&y(_9QP){4L^|4^AOsGb%wYCPpLl$^R#@o}?pH+b
zZR_lTeZj!bL#>naNz_e@P?ZWD1w}TXU?X69GQFC~Nw^G^sruf7`Ba{CXAlQ|Wv+o#
z`2AfhVU%en09?o=!3bp1P-YWCbX?=d4<)5bv`+Q|QG8^Y!kIU(yOG~!=lNH&lgP<a
zf^D3NIb~MeN-r~MthdViW0NfiJv*-y5dmm~<4D;!NG?~z8;}oT4!f*&Zzum)_8&r5
zpZ@mhi)sE<{6XQl*+yd}#Fb&PY`&g?5IFKd+7eDOL$pbOQeVV|Cb~>rPZ;0*)S_^o
zgdZSJF*@}YHBURUp;l~MLXBR_mtq1*j2zM<H842sRd#Tv-Mp6aG1V4k#A8;H|G^p%
zo{&y2vkF?bJLi&Q9C7wqS^UGk`UFVdf@09*&+-}Cn~xPoNfpVi-hYP?JCM>#-6^Hm
z>NcD6=C-7wBL8A~B;Jv7F7V<$V<SpYmK}Bpv0(_1#+6&n1Qu!9U_T;{i}Y293w=xJ
zTl&X>lc~wO>`(si*Q7G#ZjCkkPzmr8ZAFrPS~*FvSD(IJp}%D$wHDIn^6@KzfnwJ|
zCihjxrMGMQ_e7l0z;!<8LIanYc!%2(rM~dR5p9hmiaSL3zQo<z-Rq6kOo^rBx9>~N
zBz|Ox_G|i&C3PFBFky{me!FiO)#5LKjWO1Yl}V2fHqIfsK6fE};kNK6pxFp9Z4{3@
zhx1sgns&bRu7KUWO{^xT*6#k(V$i_5_QtUO#cp_Rn>I5WKHl#pFqXCtlL`$>-c)N$
zw$%u%w9%sDkQ4c*bI;?`OFxo?-#+?sw|1D^t9jc6f_=r#s1UPE=r{cQ%JXc4W=bu&
zU#SCbX~{;Ji$N;rVl71Bm8t?d!c`&~p;VueCKym|l5732Iy2*UvdBK-LxQT|E<n4+
zZv_w2z3>u_JXN@TVipZLcp;wFP0mH<xX`cT%^)^HH<IO7oo=h8^x8`2lBTahIYfrO
z{47U_Tu7^A$%b)owuj06na{@YA&VA%t1v^uQEa8IVouk1@D-Y){wKW%9|{<yzDHl*
zlagu&yol3t$zhF0D~1P~fMRR+Ud>002kOo|tqHY#>G)sl*0VnE8QtPz7v@5QQb2T4
zm(A-3PRTtWxFF#aKH`BAL77MzDq}BK#D9`ntBgSxEF=i)b1&OhTILp}x`GSYn+k?F
z_BZ}mK#v0ayO|T4B#FD2?dBS>+`o2R6tetMoJmrtwaoA1IMd^W8)EYGOHv>dtR7&U
zvT&;F7rX{UTu^m9ks~M6E<60z*dpiSfXy7{n=C07Pcc?>GDnU4NnaL4#c~ALi}l~M
zQJb4CuUPkf{j}a6|554q_Q$JAIfJCLfwV-tYcXW4pt3qY5Q;?$p)k2{5Xqp^>Sja8
zBG*ao{(t(|7^Li$YS&Bax*rpWf8k?V8fx}sZzPkfY<={8W-i>e>Bi@J*pb2U$6LOY
z8K!WgnA8xkYtar6T=ywCBgOj2!P(E3LJ-eCqMHn+6y*Y*I(k1&ewY4w(f@hugIV#B
zbJya{)P@u=I=M=s3PwtYTwkk>;%hn%!-%oea=*How|<hG!@?_UmK#CYvfTRK&vT<2
z-)oU`tQmLLZ*RUj2>#s*F%HG=G&8{M0ZPWVyeHeFSt&L4#ia3IVW!r!ni@@>)-wFY
zis}EO3EJkeaRGzz>kW-MDIET(xxv{!hiWq1Q+vGqh<n%Lij!Np_{?>)qh=>BoU#0<
zUwR=o>xzo2*rOux(1`x}RPM+GL{H^>r(!!X?&RHK^6SX;FM_JJlMV+gM2`VEQORPS
zS|s=+<!yz$ny;UP{)=nljkQ5MpLzAVW9-~uK*HmoG0pwnC1hEd1P49SEOVpt&4_6s
z>|#l6l~&LZ1CPq64ZkOe#t&L<)_9IbmkphG@Oy5e(c${BJ0}hsPI^3B@<A+|MqFjP
zO|QVEp^i4m;*r@CS^QQq<jmq)M0`d>_u9e(XN?aoFD_Q?DzR!C2sI_$2i$8K1NbYq
zpI8Dy+<V%^r~!XW(}vp-^9pW~Vy9JmemV=S5X5=ecrrjJ&sD7vWMgcO=o2<J1jMY7
z<oqNx(~O-CV#uweNd=+nLiX#k9d-LB;)z22a&v~=8w#1LzIr*Hj1r%v7P#yCC)kxT
z!0f`HkahpzQ&k%GTAkFOD6m`A{N=GQzXn{;t!j7W)nSz;R4+INj&(S6fSSvf_CbVy
z5U`J!-^W@ghz^@UyX2a#yV<Cu6`{3dYJMiT@NMaaI3k6Oz#;Y7^uGK`ce<weWv1p`
z1nzQ&7(oPNYIPX%FZ5IDVW2~<)<eFkTFTwZPpT@nPV~(kzVQ*e1UQ|zc0Ebu!t!5>
zykAe<{xTWNdw-u?n&jG$CaaLVe~D~?9g~qsp&IUeOK!5=*!umv-TvO|JHF53Vh-MQ
zM|OjpfIwRchmlF*+G&U(iiXxa&rMh=MLawo51k)Wv4`?q{G7G>Y`};-rR{jqHxY@-
zfd(CN2Bhis%^HOOTD>BI+#>`WJ_xRqRl*`Ib9{j$?i1`NcZiuHp{1KC7@~la5iP_X
z3W8|Z!T=h!O5tjecCHxMt^+{N!XoGmXHSu}7Z7}oTdtc{eXfi=*47V)YVan#Q={{z
zlSvODA3qwO`9&l#KV_<_qAYFBD#|3O5?ysDYjW#$R$!Qln`SEZFv)O~@01H0($nr^
z0PuXBVKC*fQ@2hV)WZ`%X=_6zBW#4Bcrf0H)DNZFQOD_hAp9N}#1XO=B1}kC$K<2f
zg05<&W|rq4=6>Q@r9C5Gn#vNRi7=ZL5mn=n@C5tZj{)OdBDZcRB^Ikxb-8E(dzY-b
z66x#<?GDXE2hN#U#)`O@nC)bX3|$WkMB=F&6oxsZL&?RFkz82QQ>>>OYC?uAO_L#`
z3=9R3#|Q+?X1CN4qK7AgxfEL)0u<40c&!s9^bl|lStYp5`c)fGRi>7s3BGu`6XUC>
z#9Tet;_J)zgY}l`glv1?z3}J)6`~TvMQPxEs{28rWFRS?hRit=^g*yF<j$m@&J)!a
z5q>RVtH2&YQeU{u^XQ*{dpK-;8*i-4|2}&N&C4ie8pA46d14SwwSaBT^H`{4T#8YT
zV~@*&lDq71O1a|Qn5%$vUG1_i#1ws!%VQw<m=f@83>p&f&TMcz`6;fzi-Q9}1azLa
zIxm++RR`$$S%A0x%eLNsE`UQ8OIA+Os3NVlETGN6PkhVrrBy^}L)(5UAIe?snVw{<
zry-@5_*<z8fTC+>6-D|^dV1(ZQFt<&I6ymz>&Lp+%3##crSLZ-gvGDTzGj*K{yIfX
z1xahC^?bwPfK|Xs5u+Y>y{g@oEfRlNKj&$w$|GB=|HLO*E>P1aS7=uqF4;VgIHVLw
zQWs5rJgU^Agoxul{Lcosc2Pw7{e*vVQ$S!f@aGhw>DpdTw+!umh=6;kb4_&qE8?R&
z<=i7{`;^&)x1N%(<8mypJ1idCRt%S#hV<8{%LsuKdZyZ=Qf9|g=%KtHDMub9wjU%5
z%`dkcPFVP2TaJy{NlBGPz_FF|)5PTDtrI(<c0I8v3gWWP2p3Lpu12y}B{NM-a5;Il
zCdKU0Zk`8OitaOq8T)JPpZzP{s5c^Ro8MAp%F75g9DcvgD$u~{15RrAS227#NtwtS
ze!37GX_%6Fm80Bg8m0V+&MFFQ{}doXWSp>9MZ?O64wy8@yV_Y%;To3PCQ1N=p2!PT
zJ0%4T_-XSWQ?Hd=dA;u>+bW(oV@v8&G$c;%KWDk!#W<b$3DV2a>{%FAHok4xoO3_I
zcc-trz#M|n!;hAC6Ks$q$JftCbKI+;a|X?cWzozq-XxN>5dn`G&t;dc`3q?Y5l|2T
zrK^w2F4#k}QPUzK?qgQT<SL>~8u2{X$#o$diw8R-qr1_Z!a6Y=80V4ykvlogtSYe_
zN=Jh0CezCLkXm%W5?G{BU7nNSPb~pyfG{e7qS`QQUjb35G6IRLy!56s5OHv(GU3g!
zN|)#5%1x@RNi(V^Oz+(RFd2Oprw-n$($fs&zOWoWS+Qc3Rrr0M1j2C?-?%6{OOi7g
zIic`4NH}a;DgV1<;^6DISCd~E>aHUuZjL!TZzw-&UL|m;yKngTo=89Zi`npe!w0{z
z$DEyr$ML&aO)qbMk63jV7uzC<eP)RO^CDO9CN1N*_nQUMYSUYvCn6gqqNB?*7zNSf
zao~L;>~<v@BzdQn{JT=b%cj=e>~78LmY#6S@i2QqQN$J9l0)N*%apvm7aUaVM1-2s
z#B#`33GI<+tr?7My9O@a@VW|pW5+u%`N<w`@}Ue8Cl~yX9(gHa#p0aCx4gm+WNfZK
z4pN*|(eD&vwS6-qgsd|>UNz!sGto)vRH_;Zb^f5$;5JG51h>aGW~tRe8Vu8daT<`g
zY*}SIW1LeWKqWFPf(eITSM;jgykD@0#6y)!yY`Qe0!K}9k{myMuPD;Z9KYKtFDv3E
z<}rEcE|C|xzax3$qdpRoY^GM`fDPRF(OWrj^x;zu@!9g{6CYoS|L!KJfO%)%=<Rv?
zBiYK+%;A)tQ(6Wj(hzj-`!C^74^2LK0V1;lwSM~J!q_}qlQpIn*yQ5nN&9u=&p&Lv
z*$?c`-<D&xH@zut{vosbt-5Z=*fA&!Pck#b(B-Wzw5RHD@0Pz63rk1*dAD&sd0P)~
zhH_SP0r+n?84oC-LaEiHG|?eQh4UaB?_sn(K%`a70KV6K3&iPkRcUjF=YH=8PBj~d
z8X#dq1~ko1Urk`b<qkc0kfoiAMn6z_O6{g{r{2M3QPrNv3%~0yr!Kvh%5BoZB@5Ic
zyMqGxcz!OmIQ_jmX1?jnphIxal9Ru@Ximzw>f?27UVYZ`dMx#C6642RMR1w*4pA{M
zP85^6rF$mvS;ou;{Z>_L#Kx=fn0vQOC74V8a@z*_<`z+Q8%HxWqmY!^Uj|a<IL%U9
zU-=&C4DIc7^q;!YH+==$BTQw#1>c+cS20oqvRcMxT#;xJWlqy%kpKC_mX#Eq|Aock
zUZOQipci<Fe&5OG<UTs&*5HK#qJ%_^fk!M+cn5iDfgT}(O#tPG(3uDr<pyi^N>b?<
z;!(5qUOT`t$^bL*=qlopt;+X=i|HFifs3swl^FtlSZIC~%MF`Du*C^N!l1Gcdn&2U
zEQD_+&Wn;lN61r^fzp4fZ(eL!38Yb}e1r&wX-8FeZf#b*Z!2QM$B{5^*Tq>1s3Ef8
z4^#R-XNt4RqC^UCcU?zl;3YyuM1)};7-kzthu{IuWf*3H&%24)*pg9wY9N|AzNOh-
ze%uJ3%aeuyE;Sj&iao$xf48}gE|P5i^yiYF?ES5`<395KQ~Midy`;3(YdMDJ(09hX
z3}0S}NapVDWKdbed*8gjtjg>g`3w1T!)N-8P@V75Do-`F5N6`Qg>bh!b~CPD9)BLp
z=~#RNoH84Bm!#hL>#}4of)8tzSihZJXE27+DKcJeCe9P?d${>cL>XVhoc1@e^3YgY
zn*7r%5A;hW*6BOeV7JfgJ)|)$NV{ZO;0Y=|;Nu$~xWFWRrl<(&VC*QJ%y7wQLC;K+
z)*GPb*u<fTQ8c$fp4ca16E1aVbWFajn8(-*G|&rr%0RR|{-<ms=4^28<Fe1Cycc)8
z-}y(7W~QXEgXG^&U!J*X)>40E;fPanmQEWl<IseOpK@Zt-F-o?HOC><TAT2})w0F3
z!6dy^zp*$8aL8xBBJJzSCsk{HpDfjqtEa+c1O<nhbcIMZ>eRFwYa&hu)}{dbc?zR;
z|9`k!X5VN(Mfx86ccl-urbyGWx{yX>$jeh>VW1X&jewI{-2uV@GnSC=zZP>nsyec<
zPfg^IQ$-@KKOwDt3xDwf<qI!5vA4$pmbHBi5z`M{10v*pM(*9L(NCNB65T5ie`|Gh
z<HdN)sCAU`^gE6ck3O^(>05L;UyH;!N5A=57Vx3gb`}V{Y12j0kyxm5E>GRx2f8#`
z^PEbI66viBO@rq+3!|{RcT=U-ulIFC5$Mjy0QJG)Efr#5e8rDuXU`7n%%t=tJ~UW6
zq@!<QgFFy7b~EbuWI2zelztCOZ9;*VttTbe@^b6-oo++%SWc|kZ`QwVPE#Iz(wepZ
zp5d2mmf4k`UrKIWm3;JjMtMLr-D39Z_Ba2D9si5X->1i7Hr%@YtS3n>2J%870s_``
zs~TKqUoeAF9=X?jw9)eIZhpaQD{J~i7Lyhp-&3w}i1>2<>SseYQr(ju3p)u;LWKi*
zXXx<s?CkNgFiMIiPzWZ$^u&|`zaUeA_<m0V19~@xp$67LfQOvOuu(dqQeVKprKl6}
zuo|2mhW~()D1Hr=e@;iU>;l)%vT9mH<4>30XC3~O<cvcL0}@LSlCd^p0R&jBrP7X;
zQFC~OKr$4P+!l!9aBa0Keh}obPE<mELm!7C4l~T4<Z^jb)Cg`g{|Z7_+7MIO$6rrY
z%AxVpr9zQ-hJTJM)Qts<wPtUes<lWJwv};Q#l(MW7egy=Lz=|C%iU!_kX|<JRw<To
zbw8^iJf0L}78(D>%IEog+J$8h_XZl5LC6`>5jEw#AtT@rcteVr6Mc7&&P~8rxqa4^
zWpC|_N$y{+AJmflYcTf4?|XIn&_~9W-m>4{(+OEBFYswOd5=b9;8)&U6T5WsSVOm}
z!RTP&)3K|FN!84)AMtaIP}~l|6hVeg+_H~a2sroX$CqvL+vIJo&rDKe-hvy*#AeZb
zq|+w*<|t=tu7h_^@98Vk^djN$??b9)lF~(Eq6KTtr`EUB&-gW!^QRt{1%BM|*?C$s
zknoJw1<l|8XGZkTY4!7(1diIL;P>~szMm0S<*L8j4!vc~v=sm1S|M-5GaApEawZ!7
z76(X3RJKe29)`#`YwJmH>vdMe{Eit+X^5V&5i(AE6``;LRpjG_BCiI^W+oekTA+B9
zaShd-ris&@h`c#oNI`*@EdsvhCoDs?*n@A&COio=wHKL4JaZpql5xUa^#<m>!gBvG
zt5PnG{r<FM-PJVm!^qU}9Vu&#388MTmg<&VmGgyuQ`{y$?sS6?9=7m-IEj4m_5yi|
zKOU)K8^sB@rIAn8g7T!^$PGjJ@d0%A4UqrdR0Hi)9l8R7YTw<0&>%sh{rs|NXMWu?
z8s7|}d?go7oESlUj(c6}y3eRZrSb#)a*rq%iQw^t^YaH+P7?8wYq(q<FE`ma-*phK
z!J&)26DqUdP3PmgPzEjgy}nbtxWP^s)NY}G40G+=UGS$fe*<GI>)1{9Onb?{96%Qa
z&%#VP0R~G8-q?tkX<sistoSFtgB0-Q!ESHxu~|%_iP@+B<W@e3oYZO%eKL9$V{~fa
z@;du7;^9@^%31z<Vw@$y;9ggw$Z4tCZdur>5CEgjW`m%Je823ZbP_eD8`iKpU)I|&
zE>fq)BE=v0maBTiJc&o}-KJhujuvuk5x+eA{W9=}&o~ry221U6{H28zor^#9yY*!C
zsejl1Wp0XQbYd@5P%H;7s#T^p$~}>+BBB6LFyu_{uLll08nKCKH~o+NX}geFJ-CJo
z<yK|ttL$DTI^RF)aiTm}#6>;gL;OcH$}H7=7!a2v!kr}2orLu7J_{u%WED$4fBO9&
zB+hI68b?jNu5YLZyB{Z(MiM<G$>SbipOHl}xpdCS@%Wwjf8fN=q_f9=4f;#`{f$<T
zH8r1*(hXmIjeToeWMb1cKC|T4tMp_sR3k(-twB43e!Tq}LQx}?UGV}_D@I+G2Nebx
zbnDpfuwhWZekUyFTb`&eeB7uMsdL6e?q;Oh;rk<D8DdQBpUdRO$Bl2<7`oi<TFA41
zX?JmN$RU2ow?5JWMIje*^Yvx=pVe0uu>Lqq8fl-s<Qwkho>!s6DP6{1Ak(6S%F&8*
zHftK8V>}pfhL}+<!3k^lzTST6#>WKFJ0ZN3Ud>P8fA=L(MmXXaE%N%zDcP72754B^
zKo%eSaIQ>>2a}6RADhbb@wZbGr>N<Ty?3x!(xiG4ItOB;Un(fk&fBY(Ss-+VW|Y0a
z#qDyYV#Tyr?LF^@qF2<Que&mHJb_(b1VfI)b<JQR;3yDS^Pl&SRCvgXaAT)YS%6;a
z=1jR+L{ab%#ST2d9w5U<ZJo=rug$yII@a(4gr#pNk|u1Zc_~CMJTFRqTG&QPT5ERN
zK`B`NY-C3O%_xiKM0<p*G%rl8)3PfZsjMg^O#}c!dAA3mJVyOs07PJSo#jjrFC{e4
z#z52^FJDW-?WANb`<3Ahz~Dr4R@kC0R2wX2M^`wQ!{g{4kD0ATvheL~vU)A|#v>M@
z1jFWg4b!iQz!kbP-{@4tj1Sxy)K8-@CuC;{x&7gk)?&k3l`$9ERK`p*(A3CdE(=^C
zJ7FD$t@|Ov9!G=|%|M}4-PYX*tvDemMk7=!0E??D^DO|!D|ScFXy1L*ItJaPeFB|G
zdBb}SdAEd%5X$^+fNWY2WCOpU9i;`@0veV~>LWdJBvOE=WE#D!45@>!pGA_2KmfKA
z+FIn_>f3Z_j3QRbH2#Gw$BVb(+f`&r3Ji&saaQ|`aaKTb^{h677By~Y!6>O9O;fe5
zdSPOHGKlS!_fEm~tNhPaCH0(Sa%;ZIHN5rXqsk>u;#%R1x4;D_p1&+bSUga%!CYMD
zRfmWW@|`d`Ezg3;xO*L`cSjJaAe|>oGocX-_sy~i(aRN$NQaui`$@&TwdJxN31Vv+
zN9O9n0UAGicXbQKjInn5#=E_9ZJ7}?jl&HX+uQPym1$E^US-lHWydT}p6i&%#=g9X
zAF?(S<O7Yw_cw+G;=k2dP6BJI-Qu(EpuSwxyrgUXD7+F<Cw$pnt5V!vTJh#+zMell
z7D{uu2k37r6oCb<kCQVGNQ6SN4PcTb@|O4XETc-ksuR7qNBKZo``Q@uaE6Qrn(P@t
z+yg%ERL|G~R|tz!+t|0&dJY{Ed?tOh6oZP8dwR;)IA_KlX<Iie6x$PpCQfDSbqYA9
z%}oB9Uh(7{dE#XsahM~DVM>n;URQMmtZb%-#EmW-XS=xx1>m28dzdnhXm;;yq|LoD
zmqlu6>fe>Cp9yLqeecZ&rJJFMOaFBx6rF?%<($56u9Q+Aut#Kp=25Sg4wOk1^t~u*
z5i{aPjx`(RRc-(k#PBVavpTea_}nz&$7QJri`~TMgMp)LTLj58BF<ps@nj~WmD>bq
zJ?)+KRx8V150S-tlC(ayTyA=5GI+hLCoMf|pQEb#bmDqVh;qxqXlyrFPn7Wo-<X>=
zAYz{|InY{JDb^@$uusym)OdEezqvfMyZ@L$TvW`#(vbU$Lt17^`qxrDM{zN14XXg*
z9P8G<vm;}heHdS(hOR0iwIvWX+nFwIuM~~+(krf_JnODw-yR=s?#0_9{OD4!vXr3d
z7JbdV+L2t^MN+`lhk$Cvjj6!Ez;RPVJ~2>cXjnT3!%y9Jb&n>hYt~IPz@?%2V|<Vu
zh8v$g5rsZ&W82{=>8SO`2A~WL$p~~it%8J876h0!?J}Ab=&N0ZPtO|O_#kMYtB9-M
z&*8|69g^8^$*gB#F6iG4J79VgX@G@cU9jDdNWe$8DsMl6y-cdmg#&tv0}!6U72x>r
zTb{R1nqU^eOW?kd07!w6XK|u4rN(#VBnW<{n)<;LUp$u3g0G*MfBC;>0Q<{?@+BJI
zLKnWmB@$gm6z`&J8}?ba$jv?nVX^4^Mizqw#zRGHav*rG5KM`R+c%mKs+&TuZ8_uH
zTC)QfqVnlX$X2KF(Ejz5lkdKlFF$?LZK-9qRIM+YkE<sn|9H(I#zn?VT{&3xeDl>}
z!TZxu$G`5^oM%YTm;@&~BPvYa9jk@wqfcKolF^g$$djQ6dumcI@AvXnh_JXG51Rfu
zPypmW3%tB>j{6N4Km1@0-q`0e_5A9#wBBq@X<7t((hiYdiWa+)F66UN8ETSq^TKCG
z=Sm658<NKe%*@;d<Pcr$24Y-ti@Vt01$(}<MB#sYIP!1}?S^~1%`Jmt3TngcRR_ls
zeB({se`={`U~)s~_I_g8jb1EFtw23B2pP(O(D)dFm>8&-!*eUzuj|0(?+@R2^4c;W
zAX&$=CDgDib-$L@5IJQsvh%XGGL%qSs&_z9W>Sk3dd#D(qfyK93jWfo_oq*+%nh%^
zt^~Hd6)FiEUyMvm<+jekmTrw#!CTVNCq#y5MC<6Trufv|(v)NN6W5iwih;&?j;I@?
zmzUE_tI?Do&%MoN5!vdd6i0tpZk~lrL@H~zR5A3^LUD#5usvuIQesF1ZRh6P5+bCN
zn-O@;#Gepo)%yl{P4+>wwUx=K%;Ke#sV$DwTL^+VM^a+QLGB{Xk~(MJ|E@>3wZ;qX
zi{=PfLrl!ig~|qf;g>azClurYJ6*3q52>v6f}Ms0J*^MY@<y@?a&x-Q%=yx~zf0!x
zuQ|Lg^BoKh?B{Y+<dF-xf0Ru2%Gzefv<q^O5thHTlTh8?n$Br`XX&A5#`K)krJ0wX
zIe8ihw^AE8d&C*cDGOszibv2)EXGu5x33bKta)UUG#~6=A*!bG*j0y=boE{UxKzY9
zmA0x9uUVU}Uyg?TKC*XT*c;R9;f<Xi7v=Nt!+J9T3-1M{qEdJaRy`!=ox_)^nd?8f
z`J!z_A%rBNM}ZV_CFOvhu$%r;Y}boSM2-!}y)2oJ@9Qm2c`z?Lx1VKsX0-VN&r(F~
z1(ncyn@fh;`gNU(&QQ@)SNNt2`B|BmpZDkDr+L#O9*|RXQ3KGIJ10kvJXkUMQ{T(*
zc8PrmI&|o@L}}iH^^l&<zH?z(rotdthtuOU<LBL-`ghuO|IPPpEsmWsPU$q%tqqN(
z{r(q<NR(R`)zXu`2L`#ift{mWppn1Lo|tQg)J#{Mt#ymL{H6QBQEZDkW|DiR^+cEw
zt%{2O@uUkZS?+T5351i75;<a;Ue)#1%#V3FjDprX_%!Itr>5#^UQ@0A=;m?rcB!8?
zC4D4|tSk%0FYptc+-7?6KKuN0n>LLOAlF9hd)Zqvk$85p=-rP(a+Ty}+;mUxh5M88
zc#nXqnQV_#8#{TM)r+_uUP?r$m({$q_hAUAr>HhxKa}fMA9))d$sg_8x=|h;%}0b*
zV<tOtU7{nXFR)I6JY)TQ1x1#=JejKrX;)BJmlruE(0};+L@T}TwhJ`3?Us?n@s=MK
zEe9a&rktqX@hA3b475yyPF9qMYFkjaFC0>ADOHF9lHuMxNFWeE(K9r>8bVx`l!ti;
zq`><cTpkQ2?d@s#^>+3!%ELPQfDc889#{n$0cth*<Bo^|evm(a7gXBUAV(5K-^Yu0
zi^cBJ-Rr~fT3$ZUL6aSl;{Q}@3+fuwXrxzk&OrBwslgI;L3z7-M$b5AVd^qWooYSK
z;&w?TztuZX*BvHW{x5p%GhV0#u$?mJ@*Vhn!9Q3l5GhMOIb{7&lvLAW^L3G%Kkl}N
z>7j+gH+<*IZ113XqQ<H2A2?Aa!oozyo+wNjpjxHtPj$_vk1JoJGhLK`Brjd=o^6>?
z8hf|T_39wyx|gVFjL9jbQ=p`T6cY2t-H5Lt-A1UVk9{1Z?mFw&63=%zXh&}uOEVZA
z`iavPTAdGHs4jvpo^aZR4y*B$`%UK{ps!MH4s5W72LYtkRJab{SHYi=Y#k~2D5Bf4
z$(<yXoVXCq`LtoNNuYH%)?H#Rs6$T;f$ZgIvj|weUu9%Vs57okxZX!23&@M8hu|St
z2q7yIK%%q!h8z4j)ZJiUX_y|85^@kA;1`kDwkReNWjVpo2T+?K$)8;1dH5<ZH@+Lr
z0|`Zh0Ctb_>b4oIWE=xzCxbzgmT>VPe}w6Tv@M~FKTdCJ5XK~r0sangSitO?f=Ncc
zFcds0jh7Z<;OXNnq&>K*nV4<VT1robDpmTv<IPyhxXZ7T`qHoTrd8kneW4QKGgrN4
z^Nua^r6QUW0X&@8nVsPKT3_qiP6%bba_DdT-@Hc|+=@JzU56NU&#>gTB;)wyQ)y>$
zyUOv!lg;~xF`8)UT0Htk75qn}X3%~LkiYV9_F;L!-+@ZAtQoi<kPyfIgiSp8*?5^_
zNxQM_8>fDgwfDbQuP@icv2;Jdetk`!*{D~QX+}2Y7s^agC?&CesqbpfsZ;<Ff`4y9
z%;uhh12Q1QoEF0=U$kEDQoA$%27zF9!*_QZc_&m<`c7<ispU$@1iJig8Y1ZX_{3j%
zvw*zom>-Hm8kLtsG;9!wevf}_KdKx(s5yJxw|&lM;17{1OjuhLT1ZM0SspGaiQ`_Q
zp0Wq5Tu{GoTx-}cGn%zN_IU;u%*qRMt8>B|Nk`AW?-zBCfBE5sW%UToYU(3i6BmUD
z)jr+xX5W9b2}R%6_$&Hd$7Mw9JCiSgGz*#OjRqRkfoM1enR{BbhLm06SipL;S>qqC
z(tqm9BBJNffx^KB?pY9oMz+sYeUn3w=d-A6Zy0302Mlt*sF?P7zt>P-s!nTgc@~&L
zi|8d(YG0nKc!dVqxuHCykWLiXSKKH<zqxIag7<I+XXfIIn7adj9BducACTgh$1lf2
zhVrv^jg&lR2AE=tNCrI8u7XfOnMf=}zoCbk(!u@l{$aWbNmw1FB4Q2jG>e`aSAD@H
zH@Qdd6=|DReZrL{`sjoiSsd#)jJV4hqTU5`hlZ%oK`dqlf^az_Gg=&|6j+r8UeLLM
z;Oj%X@USKXDM(^3N*!Zk$!+|VD$yh|4HD%lx`@S?jic1T_OLo0cNgf)JaWFBSM#a>
z@Zq1(kZTS|A*{;Q<J)bO%l)S>HQ9xTUZ1u(J4}$9JCo_<oC#3S3OF8Wr>A3kdp9dv
z?$-FwRY0`NJ8#o`rNBm`5VdbAV)2+>ggPbmn(E*O#`22@)yVhDOL6lNXMbI7wml{n
zGosatV~HP!M=bwVNaa-iEwV#BzTG`W4Y+u_;8~N#fX}zGvv;JWI`v0;pQ~Q+IBNA$
zvkoV5wdj0%e9zs!rHH(&>#AwQhVWR^ZA;YHKE?J^7dFw>`)`7y;yR7aJ{S+aRsL@2
zKOgDmZ;DxuKUCL(^RsWz)w#Dv7$uCfkjG_V9*?7ajVk72j}6S;6%ow9oXkr_;Xj|r
z=TvK+89y*EP~?zNzNa(zUdZ^<<Eg7XZ$J+Dv5I*W7lLoWHg|ki-x9ZjTxysL#a$1?
zvi>j=wh~s>yQ8kbgAKbfSI{Oz4y3=LWST-g&pYb!^AX`%Zq~QHJw3#})6wF*xu1C_
zfBfzLaSn*D0>M@)1v`B+vae#(N&=@fhIB+=dI`|eS!M}e{D$kuA3t{I-Z>#;gO_l(
z5t6q%=7Ow=G9CCfdNnO5N>R~rx}vVrsWn1RBN*;tvQ51o*EVDM!-Z4_1m=N?&~El`
zHL-V0y<Y7_(cq(Z!z*%KLSN=;$YAata_JZvJzyUx9F_1(!PqJ=HO*eVjr74(>Rvc%
z710!N8M}D+eTQJ7{7!hqy`8w5EosTw36kP3tstK~hMH4W)PDVm`nv2^<CtFjjF1+}
z)i}_;{?OW|KCM(sXgw_Dpn8kHz27?2MnX&bJi<4HhvV&a(|7JkhsjfM-G$Q=>RRem
z(hfH&xx};dLZxT0`eqM$SgFg>gB{=2n>qLV&{0$N!89=wrq6&tFH5+kfXBFr5UZnq
zh_e3nys@G^L$!jRYiamk3Z!s(UP8BdW3!*DXe4RHy1J!5@J5ggYoxRkan-UM1uZ2N
zT7&#1O^HqjI(}ll<81ht+jEx1@qeNe;m2?EvVOY8dA6JJbuTL)AU=Wk#5-+Z5bnD4
z7dfkP&loh1)1DI1rTrpV85%i8dp@>ZEQ|@@Mzuaq4PFMp$~P}UW`e)eNOSLe87YA?
zV?+|dou4<k;@<BY8Tq^ySr7?DC&DBN)6Jv)o4;-y#{%YCDvPgch>E&oD_5J%tUo@X
zJyu%AHE1b4!kv$k^1O;+9gnTeYT)R3q*Ot|<y<hiV`AzNQl?$|#MqPOVRHp>cbGVw
zUYye7yIP~A-Kb$b@8tVg(&2h8%R$SJOr$R~9#)lkH&&k4`7JO0zZzCO{4=@TMLdBE
zbBu1ciE_;EWf2|9psBxne`Q|JKR%pf5`X=9hucc4{NJs;ugk*Xdfa_zdy49VUc%iO
zZ>roEhGU*Ji#$<Td#$cpCIH+v>8Mg*b9e4kRJbO8iC^7=Yj7hx3Uzb4RmsOsV?q%A
zIhNEDBPB1`mO_Got(wN;dmJ}rr2}_dIzwHiYFZBu-pw8`3r%fn!sv))X|retXr-;a
zT|~-dSf-p9PE1YLG0CzcV*SHuSLwMYft0Oz1VU(NadTLeCR@&^Raot}MsLI)A6=+j
z+}g#>dy`8f-9}yr*x}1(@A$yXg<hqID8-pnc!q`6l93x(Xbof_utDPT_>0dhn50^s
z+B&wA>ES5XFo3GP9m4tSOl!+3H9UGOB;3(x--DQe=k<Zc$#x%VJQYWt2CW^t=11C_
zYbi8xr7Q79c2c1vml66gw7062c5EM5F+YQNFg+~y(>Jx8ESF*lEomgyKREnA5CVL&
zdhBQIT<cA_l8B?dZ>GD4UsbYS8XR%=?X&GRg5#zlOs-Rz+WsOxUI_803e>_!KVTBx
zO`A@jKM6_F3!!c~&a2G<9%z06HvZn;r`<MGJ8r2tb^^yye9f+`C@W@-{jH6xT=rYi
zH^+0@Tic-n&wIylt*(HtI}4ld1kX%A)pe>Vj{7@VE|qnW?`BXaI7`?QhjBwTdpQIm
zN^9aBf`6!ZoSpQv<@J5pA`!3ZC9{bK$_kJ0lENcm{ziILp5cQBdjg;8PpUtA+^W~P
zW2E^qe{Ymg3WXc{?yTFrAoR=d22JPaxiEb_iHQ=iQVoJI3Oy}xeh3K{^CGjrgKwYT
z4p$H{uzh{@-o&hA$2<KNLk~1$++F|It-fDLr*1T)7SYz?ZpW%MM~)I_i^wL2M%@@T
zDL9jYo%f}U(_q9(Ssa{BI#YY|Bs$r{E<;aBN}5yHDl8uQ?rXv+c>Rati5=+70IB~>
zOPCl96_*ma*TA8s%9Ong7u4(XtDiXB)g7UD^~tY(yZ1!zYQk)78HuS$I9~<vUz^2f
zh#FU43wX(v5-Mo)cbTeSS5)X~5e8h;!ZcEh&F5;ErBJb_YG~eAbo#@)Qt+|&p3I>m
zp<y~75uF#?dSVMP!PM*J=ZpG<4Dw1ZoqZ+r^6Q-8<njf+l1`8Dyi^V+IO_v!c86^e
zQkS5VW=3`_+9_22zEHOQ<ZAm4g`$@kzG9-YrnFOP)9Ej7?BkQVEo7XavjYQ*22=WM
zMEL)i=)sFt1`wkmr#0OmuwX`nu#Vp&O7$~ZfJDVo%z&H`?hyAtP!1$Wk-`v1R{Xbd
zh|4M4ZuzfJg#IES7aCOdJSx$;eXfwz5iMs0MGTuGGG&zChxVG)3@2>YnK*BCm(<5U
zN%J~L*7UxU<=rL-An<Q~EFLNPuPY!w^TmHrv7xNgi+*F;*pHdi*THHv_;m%w*vgb<
zQP0!i_N{8)F(|IygIrA8hz|O+5O7CA)=8azm2ov!Mu;EQq%-s)8r^r;Z0Ktl;%0`J
znqJjof>UsdZ~F-ib$a^GhxYt|%9M1nVfYKv=(OwVk9g*m%V{qDl@ZbkYUEG)$FpwL
zWWR)l_dC5x{}fxpT2Yv{yjE4KrG*)Zf0<}zTX^6$_dIOq=|knuK=fQ&?!^5`9d%~0
zF{a8*8R4Bv#m*uG;>WL@39#)F7=%4q`b7+_^n$sydq}2HZ)attcyIcSkDvF}ZfTRH
zGlfXX2^hs3&k&>Xk7oDn2O?Gs(NYk5uj~ID!d=o?19tv)*3ax8X@G$3O&0gZM5`H{
z&NzGLQ~np0CH{QdfPY(>7fW*euOp?Qf2w+oCxnBKV^9!ZFJm#8LJ_$$O22YSEASS_
zAqwEWlcSI&k2If31f(DGTjg}p?JVZQc2iwPCmo)mAP9J*DWp^w@1-n$Pizl6D-q>e
zQkkKRtL5V=AKE>z&RJH^_QhO)@9c4iT2VLdRTI(3f%z;e9>}x_>OCE-txpIf-?yTb
zl(Sy0s)^u=+-;w^%I$$~eQ7u+!g8|N+iDvOSt&YahZKJBCRSCM|LG-?S2I3=o!xhF
z_;%uOH&8>RZ0)9Dx-=S^if0*rPd%^|AdkY{!+Mgmg<TGpge`eomNm}x>)I3NnU3bx
zx32nipSXYZJbuq+g@?x7X36-{Rj-zC^tJ78CWZ67(6(s9*sn@2zn3jU2rOEb$dRLY
zA`V!A<xz_Y&kOB5)q>T}29lr?S5Q_J6R217z^AJbi^c5cjoybS=-v8A^aImnrw<B-
zEOg)OJ_*_Ht&pdsY4w`N1J00+3kUm_+22y|@6<G(<LLY0d&Y^zV|#+`rr(j?HIak@
zoR`m<M^3memyvM>Rv7j7A`TrIqN)73n&_n5;of=9)IpQ{YrzbNiJy9M<s*b*TTs;r
zg{Kr)z`coy^B7}YZK_g=bc!~fN7Kh$IeJu`?IHz*;rR4=#I+%*+ZcNQ3l8MZZgj7v
zIyd<&M3gotkF=*{XcQ7S$^HsWRSiXTO&Qd*x<aj7I=`f`iN*4!HI$@fU^4K0LN2Zz
zQmZ8i`0&wT)67+>mZN%u400&)*j8&<<(1x$+H}4|xbd+4O1}zJNSbI!ncRn&5e2&t
zu)rO56fP(I1FYO!`?G|zkS&9u|7sa)a-~aUY=jQ%Gge{PSW%<1)h=+bJ#adRgn)$;
zwJr7tah@rhaH~Ryf)?V79zi|b?CekpPXk_h6h-CAmLr@v4DW8o1}%M?`WQ6cy64Q0
zs!;d$p#`Chw7*?<uMN^tUc{~r@E*(B?I}pJ(=5JPQL+km0?E5X5N~)}&75_Y%kz7D
z1+4&LeQj8W;$Nhx8$$BU0`-h};gU!6E2MKjn2Xg{SGOs3{M(NP)Y`FKx_2batW@)S
zCA9x`1vrGnhQ5N?ykUPj!nnls*UC&2`q=#+-;63fmuXE8Pmr8=Xa@V^>vQ#hy5_OY
z@R-q4v>UYXPr$VEdy0#{%Ftm{Gl;bjJeu^~Wkq>5vD}Sk?c3+qJJ%FT2fnB7Ty!pM
z35*lhdM?bn66)?8DqB0->iCTK#Z;zwkNQWwf^xpcyHoNPdaHTHwD>mP8~&^%#sb&(
zU*f)}5v!HnT0NDinRoA;5Dz&%ENj+uuwQF0d|GybbTfzr8IJc#kPgbyG0LqyhB_+K
zf?fS0c|F0b|L$)qX%ky7q1y4GTF=F<%f|D2&5nuf<`T9RzGjA>YNFOrLnT7NEdT0j
zQhra-9l%v38C{NqGoo)pWE=L&$1Xs-vt50A@t}+|?6u;WW$d>xJ5M>A7Y{zJ=nRA!
zp-e~CFmD>K0o?tr;1r+%29|veO08{SHIHHnrvL(!95L1SRo4@Elu0_qAKH;AMUxn&
z8>#?lMQ+GGde_p4G5u{Kd{eY+!%9?KW%Is;`I^z`!1ebfk)Xn|+;8;o@%x$@u(_y9
z`smD*<wgv`4vklE061k0JIh@Wr9L^m7&VgGVh(mT;^2h&P=g$0DLhdGPbWp@k`-Rn
zZp!OP&-tyVY;7umo04>e<_Ko$5oCl7SjN*$X4m%|(ltbCmsImfOhJ{HyGnG0*bXhK
zzeXn%>9$TLj+hEJ2%75aLo+xfVzzh%j|av7@nUuZ)u-?ncp4?ZjEZck&%ifSXW&pA
zpbA#^RN2zup(yEBiWe%Wzx|C?<DV`s=Z9Ri*;EqTiRK!nh04l>fT+D1AwN#)mXGLJ
z=84^Bxf1>>Eyy+x+KNNF3zSe2;_5%1@H1=$v!WUNbjnRpj!H5}lo?0evy!t6UHoyV
zcjT;+xPQ-Y2fe!S7@k;+{21t6UnyR?lYAd3G8!+`mV^$fwN^YbNVuz%`+n%PmTIP^
z!uQLl3>%WOSYJMvT1^qh<fuv6I3cr1l(`6{h~NKnb>`7*eBu8O2_m*2_AQAZ_8|6B
zB8WYdmR8kXRBPXtMg*a1r}j1WR!g<jO>I?F?Q7MpsJ3dS^wa))zyE!I_nbL1=ght5
z&NKJU%)N7;=ly!|WQx>HgC=5lED!Qi%T)IRN4dl#!Cx!qx1ik%{7Z9&0vk*>P1@o=
z)tR-~CCJ`*hp4ZC!!!ON!43gB@oMxn6j86T_1F(k6Ak!8)5GkeK+y){;aOyv)EDKe
zF@FzrAwo!9V?paFSBW%kydY`aGEtk_3|2pn2ur8y!9vTD`b)`1iQob%JN-4Lc-9oI
zH-F;G0oTEjdpX=gp>W?a^#J^SRsosVUsNrPqUCun2|7zOtHr542gGb4`kQB>`>h1R
zwumXg4~7Un&q%I@==S@c)zo?Sw@)$JnbR$roGvk;6-O?lh=HWGb~93G+^eLm2kV?P
zszZ{-6|fw6Ik#Cn%en9?>4`I3j+3yHTgh)qEWH*eLaV(RA;rbWKUqjZ>ui<%f$8dR
z=?Q(~K<lpA3Xcr)R=TRZ4!*Ewm9{kn%VY&X4H+)NSF_B+_fbXmAs@m*r8F}Mvzp)2
zzZ&p4IpdNDI^1-C;N;^uhuF|dtI>k0<&Vk~8xz(ve%Y<?Z;pNUp(+WgZmCrCCchze
zQk*5SQyB{LW;pVeigP%yJ)-wM3mEfV=l}YH5tn)$$xZK%D|hYS*nODQxn|rK;j+6{
zEgQ_3&Cd98ZGs6D&$4);`!=0(jmt*wH+89^&F(L}<3d!=&=}`t8cBkE!s_({@l@L%
z!dE55#}!{ad#!9+gRYC+W0jn8ccu?^KCW8AuPi<MkZ1kv@tV$}M$s#qr#9ch>E2!a
zDAx#6m+WBsr!VZyY%pTN^x@--*7zDtL82SFecfp}{(9JHMWhx0^P(*#qc<1ONJj#-
znFt$Ym@~B)FZqa~IDo?atoamR1mG1ohV?NQwt6VEHCQZvhAmDo<cT+Iibukk(0v*x
zR=!R)t8ZpE;`sK=aD|KgC2@mM0z+pIRaMZ9a$mP9Nr_k*$$>)Eb~xlWv@|BM&at$=
zFGs(nT^RSX{G=?A5d$*U&Di(u>`67_=ht05d9nv%o-@9Yg@l0J>3Mj`i6}%eIS*VZ
z;mMD7PA;$4Iu}8!thmwugvSaP^D}@wGGIv3a58I>(^qQ)G<Fm{;FGBXF};m+&H|!f
zfLj=YpI5MHJsUB$p(?Abg%TX;%2o3Z7?;OsVLJWL;2YcF5BlRvg=ROxyR{ysvlmCM
zXiG0zHFLsMvbYi~RvuP>ni(EG>6CLGO^Q%MH#4AI4XdSpAJBG^I94kQeS&E7p17rc
zIxdFMKtujsC<E8}5tja##y}_V<y%ehN(fgd-4F*>lJfMK0arp{ShSQn{Q(!xg<E0F
zC_1;n9De=(*krwVnO`fIBxs7&#)})wykF|QpPY&pAf(&a(h7(L$`xQZvXOnzjbZK?
z20!BOk|*U*5}FXvQF|WVS{<)l?n;ZuhM90l!8=NGkoYgP8bM5|${}+eC~`JQ6iTLG
zgfCSl5V1K>Qy2pviS%)K`ZH5Xc<=>wE%6Spm4&tKJkJK{fLlYVP8h+#2qIW!Ke1Z3
zj017)Ng}j?{;tXJ+Gts32q7KdBxXE)XuTfyDAYpS8?1Mo8Yg=9ZtrYe+kyTkp_E6x
z&PL9jk@8IYCr*X_x*#QYtBY#;n^yWvv8-NKUmB@>DI-<RCQZlKtFvseSDLl5V*Yf$
zTED)az#q<-pGZEk5}iOC|87TJ%)d+dES;~`NkbHSx;tigo6CP+Fvo$JzH85oTl7ZO
zvSZf6eWQIdl#bgse(W*1oLVq{wq_dqqY=W<x3fF-4bkWNnfQYei~reaBpp|<&59?S
z+<3d%H+s%jXPXY;P>(R^V_8VBp{L`hW(}*moodILQ^UOf14;+jM6?IY^5_^h7=+bh
zy6<t7fxy9x%jTA@Xsd@OGk=%l0fmeQ2L-b|v7!ld8){xigkpY`?`Dk8%DAy`_uGe)
zP(wSO3M{d@Ihji`qRsy~KUt}T%f7cdi>O+YMHT?kSv({Q+8&U$bb@F)x!*V%8>`B~
z{m$Ijef&bfJh;)z@$$WV7$N_xYZe`ODIXFV-y94&_atSoF~79y;#`KbON-Iy|MTS#
zFNbrAF$&ex!F1l|Feq>w+M-=Qvi{5}?~%|>YH2$XeebHGwr}e@=~Wr~ZVI?<>QzVc
zwlO(JhC$E}v?L2<x(9DLJM`F?JNv=9;`g|AVEwnHbc#Ik9MOKU;Y!8tPpL6|e}XPP
z4Q_LbwjQG|9eL6m9VD3-Kby$ZI9FZH0m}y^!_Sy|QgwkZEXSxazIUaQVin(L{Q6>V
zC%kZb*rnT2kXf;F$p3amo~Pq5m++z#Lm*?{L3$=&YM=LuIGF70e>*we7R0DWiG(f|
z>O_f%EuFp5Rn0to=Wes>w6X92mW7*ouDI!EZ!syun6mOKp*^Ubo=@(ZR{lEDWRw>3
zm`2C^Yt+~t6&)b7lR;E_-gBrtTTA2msq@ss9a`OudV$e1yP-jZ3H+UY?iuirU9lv^
zjBc74I+3!;W$bH9)o}P$ay+o6#u@?Cam#Li597v%a&Cy&sf-j26u-B}Lm3Mp>H|JI
z63VRJVY1K7FHpqe%kN(|Dt~0t&DN5JG@3eq8VCglBAJt*&f?d(#))I2AP@%|{n%_1
z-6O8Ynm<=(zExQfw)BCX2LY=x8z`3?xsM~4GjPv@G^C4zs)G|QMcHbKrXp+15-<*^
z=Tc)DwhA&nuYYpW3<N%>pk@u!Q&x+NM4l`PDSdpH6eX9$msxZZJSE9m{;=!u=ye5S
z`Wt$HAz)JR&ad#D^_0Og0JQxw9WlGyW<+{@se>WOqf1)5{jo|_Ju|R1TM}cB>mmI<
z_%nR&yC-KrLHv-Bgw0~)GC0%I4Z55;pgFt174Gde2)9nOa$GMozE(>_U|XLpWhqGc
z0(|WoTYaAw2t#TxA!6Wq&hRiRMj3=A7=z7{P%XK)EWq#A(aM<7iAb|qFkkxEPg<(e
z$nH8=yYow6U8Qa;FF<?!x$xkWX2f!JI`_Sq53=4<doq%>BJ`(B+jE*zuX3-qsWc1#
zL%p2G*+1#^774lIZ{`Sncb%Y8sLS3R!DLE5XYXY%OP?^Zt<2Dl-}Q#t>lPJu2;!qs
zT4l$2g_#P-wF)(vlk)%t$+OQKdErIGiqPG`rt*)*mrpcxUcZ@~kR6Wx=Cc>@3?}i&
z#zd|SGk)D^@_A>XWp`S}ouI11F7<BcGObrQ2kEpHq*ck)mfvDZs=_X<KvF}Cb=%^j
z8Kl*enw}^GrLj>o$a}Tr!J5tlok6#HPluu1sGu}fW{H-so33h9yIS6Wh{a1IpZ!Pc
zy`pd!Em%zu#84XG;1h-Y<NN;JYiQs&KMkn8?E9E<iLu{hUPMymk(Kw5TCtrQiWB5U
z6lmQx+JNd*el4_?6;YJ<lCqv+F=l*wBWAl-twz1nJ0Q6bv$ibvwy?42s$z2F=%Yb2
zE9VpMjnWwmQ+%S5&i)&iwMlD!1v;4u-y^#Xuq`K!mx(xwTrJ?WzZJ?W<lO2b<^7G-
znX|tR0q%NOa>cupNViO1Dq}-dS66Hssm>3a{HWHz^sMn4XSHDWs5+yoLKe!^ca%As
zocDe?{7vp174ClXe8=wv_A15wZ#yPD_zd?{9kx!94U-1kJe;(9$?=Jqz5Mk8QYt`s
zMtA|>Cr>qYG^|2Tw(^vN{OPoz+Yy`At}>wNHBSGV{s;9cPK7LFtiTxe`Q<D2Stm)>
zAD@Q&{h#53f1aZNvDR-C_T!#5JoBRTki9aR&TJH|v(z4)+^Nm)>?GWFr_~1o3s=*y
zH(x;Zt|1n7dL0vHYcIE@&VM#E;*^Q26ih_t8)Ba-C~QOA->fuSN=j6kNhp8s7S`<G
zF1CSmf<N2_ZYWQk3<`~h^!CK}UD6Qf*hiZ9UE}cOOtQ1bT_qpIcM~<CoJ1tv+1N|_
z$`uX1J6sp&<3ws}CGVGxTUfkci7sxvf0HF<*=bLYO-Ln+GpANF^=9~YrOt%G3Yoy$
z1Phudt6tVDlSmDU7uyBhWWIcIA-)xs3ljMLLY&`7-DGy`jk{VdW;U*T@WcJS__P_i
zUW2}9)AZNwIs=jM9pfGigz&BclhJIfe8Ha+W@l%E3aBUSHeS|o?3Lb{D_GIfGILr?
zH*z<LeRtiv>p(<fPmS8$F`@3SfY?-GQ^wxrXRC=CW%ez^U)}9myxo~-fgN4z?0rG&
zjPeA|<Qgc_6Gu0a)Sg3;vu{n&kLJfjJ0&NcjpnGN_L>&=ny}9oE|h#(M@&v<R<qCV
z1V*rT<`cjAQ34!)YAn8s>F2MN;;c;363!BgSal`1?qzYxIk;Y()p^BHRbUvW{k0RH
zDfiRc##621wJiImmm|q!*9*KFDlQ?{#MP*J{`?vOt8te=H-sL^43%jBk$IePmeRtC
za&m!q-%J)zuBi6*<?oDVe16kyZc6M7)+0#5?akoMU-S7@C8rxPPl~Js+%{6JpFOuE
z@|wS`X>CF&3xL!trxWK;r@P-?IB<6JA`po`IgA8=_y9eETiEqL3!pjv)=STF+uM{g
ze$+pcEZ&c<Fs7PyleOoGnc|F*&-%wTtK@6EuCrh8YRREvM{=1p<`(LNND`IPo;sN+
zbv8X~4ZcQJS-IoAnlJCB-LvcM`kk(mGvBl6J2W_4+up4@=#o{F*9XRqWlPI7*CoxR
zg~&HUXfij%$l^Ks8@AQdWmiNURVJJ;WHaMAaZ|@o;8v=i@`d6$4?Dq&^Z}OZM@Y%4
zB#jW2pyl3E*}{p+Pw=V9Iy^Use8t?RO_kJ%O@0cU{c16cj@~jg#i6K|%J-E`R8h2Q
zC05KJ(P?nyFuqL8Rb%kfDPPe@Fb|A!;E=mQcPT`+aQrFXXlbkkiz=H<BKtJ3E$oO+
zFA{jyn4BqoUF)Tt@B<y7OZk`8Ohr)EWvURLC*%g}cz*(O;`mgW7LN7xmx9kO*4LER
zR({WR<z5-_{}#DBQu_Ms@tkkrCxL>zTWa&}1ud}l{M!4qz6Wz9!L35(Ri?P+{QQR;
zsR>I_&Q-30O-1WR{u;^mDt=Hz#(Mm&jF%zzmjY|+0v3lGPPyFbJp43>V}Z<p5Mn1r
zThG7%;KqY6`eU}VRCf|GTElcXo<=i(AaIuY<jNF1J1Nf0o_B`V5C|S|JX3ZTeJ&zH
z`txJvs~JnCxDh!v4=`gkH@yjvt3twPux`)jN;_KmX`GrUB>@G?p3&4Q4*`lelTaSI
z33PZdF@W>=_b{5fvlDCrC&s_v8yqn=-C_LDmm(gXZXMyszt+M;+AJNf3s2XHGbq<-
zQ+u4zRuJAU^QN9gVmp9#=Fne~dSy8}TGf}5UsvA<FJ0~EC>8T75@jhb2c~mpc|}7{
z?3b9o(c6w-x8g*db+_ZBi#W%Vn^C}wxRv)r*d&SzrnkWSO~+o79kZPA5j>J1>>{h`
zOd)`!hMCS$l;hTOnsqfD7;5TZv8MN0MH7Wp47QCzX;`$gES12slHtK0h~yjZBp9ia
z$tY4MBfTsC1<N`Spvfp4Y?&6v>cV6yIf>gew8n=73$lM4?bdWPg>Tkhg&TFcRP)a9
zk1!?A@|%kSRH2+d*fnEzi*@h=(P$VciM~>@5M<<P!tW9j@Y{gkjV3PbKM+Z-^wDP%
zi{dDcT^DY&<lM#FoT@WkzLFuFR3}zv_X*`f&1Zhb5vmVm<P8IzUYQhX%H=L|%}?ut
zWW-S`WGW#>HAY}hDx^UGmF!HC%&M;BC!SwW7Q$SLRZEY%S%VeUV#*1@;qPOLotY5A
z%zFIA@!~jddfU+BJ6%mP{%IubH<gJgtgIMs2+l(DabgBNYt*$>LJ72n5o!R<S`$8g
z-5d(T+SgFi^j~_zs~PU7>GS7TyW>~kOwjyzF4>9If=yK8$DY?rU}=X&eG*I_^8^Mv
z2NIIc_5P^T$|+WyB<O`wj|W&h1%_HCCnmxr@@%P|h8g+TpqJC&lmwOFIv5p)qBBU&
z<*rQPW)^mAC>9NldSQp5i$^5A=Xfx7Lf<0Xu3qN!DCGU+j;?v(SaqUMHsephkV2t&
zhF+ZWlQ30FNrIgOr_Gaz(yESvR&%J*y=XwxX5y39ZkVA)GWKqa{6imu)TPmoj%_wm
z>z7i+Lap(DzyXu@Tr%9u2nwF>jf_kaE46a05<tswR3g>rk?NE+(Q+qr_5-1ehgE~(
zQ-Ceyigci7NhOrVn6X*<O(fQsQ)*;eNFlPL(RJ-pqj4BVU;a(DhhP^R6IpY}4{*4C
z{zCEbO88?rZg97_pN0R=wvg;s)CLQ@N1Q99Gm~67bh+&3DBYjoop$Gsj6`NuW-3D)
zoA|Q1#t@{}@psFGBzEO{P@_4hV2`8$(Rb9cfyw1Lz#D`$mm&HXW*{jueKwoE&Bzt6
z>-TZ|60UUqR4s<!`mga<OjrhUbvkE(D`JRXTdPk<E)-G_rSt1U;qsXczx25XfSu_0
z(#ZT*s2i~Qvb{c5P1QV{b<nx{y>))JgaZ{r^^nFi*v%duYSm>x#j-J%B-V+lXyIfI
zojWG`3&FeAyOhKD<uYw*#Y`8`_Sn-yhe9s5wt&3h3;~gO2yr|R=~i}|(F<_IifK{}
zfQg8of&7MY*^;R-mYRUmvmW7R#+a{JiCGM5tM@BMi_^j*b`}p3H;88X%*je^LovIX
z?6((V-kbvZbv|i;CqLgnAS~duz7??#=uaEzWFz7<($DN=yuAzy_*R_$`0rONq;Ve8
z2NKy=ZPr*x8VQYw&RGu$B><LXoS}g~tv;*nw1Q5IwGw!wN3Lyx>g)7dM_TEEnG~*T
zqGn6E^-}`+`+z$V{R>||f*dctA=LHDae@Yr`1*l#Ny>z^o}lP&y6@|C`3>T7u2P!A
z{DET$26O4Dn)j-%vKW3N<$1&5uAIp{@D!F$)Eo$ZvbRwVy-SfNJ)qvjyuR_susnT~
zqdiRF(7%Spc>S>lumya^=@gT0IgoES*>Upt^164uItpJ?0X%b0s>k}KywIrFA@%%4
zT@-)n8dm0&ZcHh9(o3kb%k8hg2kEBfFr(=2^4g;9G}Aw%T!^%kY)tBwHNY{>eF#Yj
zy5n@ga#?Y9LGw3dy6!z+{tX>2EARJl(-TlX(B{$|gop%Q+_)YV?5vq%&HNnpDlGp2
zJ4~DO$*!xyx;(QZ^&{z~SMiTSqQ_JI0yWVL1~98+s*%%sdK$*JE)LsmWRR-aApb^i
zEoap|;BwbigT*{qCUYhD)II#L<cW@@yG-^+6+VXsG}_l06%x1*D8O&_se?h|5*Fkv
zDUP#`|2oVLe38UmXdYQc+;zR=u0-gU(@7ZTTp!3X)()$+999^5#mKtnB&G5ki~S~O
zthc!q5g{t-^ULs;84Yhihlg#=UX@k2ttF>XNq?t${!%(So%4I*>W5-F0R!Tyim1~q
z@17x>mtV9p_FB9RO1cLUZD^GRWJVAeWnJ#&X-ZE*qyoXK<-x^>ZJ7D-c%UfCsXF2%
zb?Ixu{aRT8P1ZYt!kX+%p!sxBc{)>JP<^6JZgPf9R$cNOD=v-|Kx|m$?=k4J1g|)m
zS!3uBO-nj}Bj1}|KQ=`^WSo1}@#^}KH28ag7}sFaJ`iT-j9{o0(;@jM9WW+x`c~yU
zHu1sQw8HKCkL>#;e|$3Pp8D<QaI{>05c}2#_=C!{gnQ?I_JHo;)4siT4ug`|+RPNe
zcZa<tZW|HBtX~u0feK!h6WWe|*8x^^g~8H#PD)Z-ab!XvL<UukKXYN?=ajCn&%DUU
z22{r222+R$a4b59$gD@C64~U5_e_J=cCgDm-7}e64AF>9v5&6<pahW+`<rFOxjJyy
zNU_Tw-^?e32k{@jDZ8BZ>{3`zz*~#7p)vb<d$cPJ?M^8`fSGNa6Ty<inu4o29@4J*
zmCh1{M2aA@yNpeqgf|$07Q9+50KTeMeeM8CGeQ)2gXx(wDopuJ(L7l>1>l@GX=of(
zu$+=%pHD*ZQ&Hu0NL~q~yMQzTkmYJ`#2{gU)KBI;C&43fQ$SfRI390)Xs(xDrMrMP
zA|F?%mkg!AoynMEWCoSSPw#APWG!j!ld#3Oh17vduMh;7U8(eNGv|#PmL8lFVMCL8
zNA#sk$#0jF5MoSQjF$;q_2djwJqS4;!WrqVhk;YcHuhwC8%kCs5?4W6h=}?UWaa87
zvSQV$PPb>QK6&Rl6BWs<o91|yaq_$)pj)P=Co|8s%7Dkm;J<9=PN->>;i>PIF+@h#
zbUj70s;|!<df)ilwPYr|)K{LgAo!R17sq~~HG$^fWM+yhIP+%vNp0Qem-pL+Rwnq5
zpbl%MAmuJru6GIoW1b>o{s$Q#Q_edQ+!gH3#LaYBr2A3hX*n|>hCfp3GlAX<U9T5v
zrP~Ytnb=*+-LiKMm|Y%C?&mZ-*XQSJIu+yABk4jj0XF!iNj1#v3><&f-*|93W;5hJ
zkrhK~+#%+-SoXWd0J0QgV{H3<nJAtRjt%^f=a&8WZC3VO2V$&E7N=18%^n19%&T9V
ztiNd~;9+?C1;0wGkm=>_w=5qbZVG+S{4i*pUf`OI-+nOsK5CHCx?4$ZDPrp>RU@bb
zxAa{dvvz|xyWHdUHcJR4({lV|PjHFV^>WP=T?IrUY;a0+iqLOP(QlQ7pcTzY;?bj5
z>?8v+wPp>!Oms;2z=?PW!w{Sag=DXo36-KHf96!H5k-9c5n6&`pULEg)H<uu(4Atc
zdN#*&qx5D;+0VcI99$rIIcuAcf>g8!T!jj@08x58BRR#I|2zf-)Ul)?g6s<-F?P1-
zX6D3*&~f6K1aeUviSCz1^wtLS9mm*lxmaV5ocO0-fcKWp4yf*6b3s)NHiKHO_m?<*
zQ1SL0>&kAm=FmMVMj%rhvSg?sss$-Plgm&q$zHSmrdPi8KJUrZhuH!3h=x~s_3vY!
z!SPwPsn}1@Tuy>m+9ikyvgTf!Du`JgW6t$=hL4#uvNM_A0YdY>2~8|a@x(#goxS1`
zktWsftX}LO2qY&mlLyL!<Vcdpv>G2%l;nE97dA&OfemWM)tkEaAm?;nQL_yrbwen<
z?TQWO@<!g=P||%4AV-fP%7pGcm<Oh>nwTO8H05-{I<s)WseMM8e&G<8>>W3}p7Oy1
zY>qUJ^(lyQmvwn3U@zdyXA0u#&82wcNFnnY8=|WD&tJRvXVHT01|=JMkstvkhB)_J
z%eGTOvBq^#M$VZ1IQ?#oncrv8C!#n3De)DMD}onp&!M!vj8b9-*aU6eVKu<l8fYMT
zw1`FRC+V*%qgVyA{@yL-c2v(_cmy@u-4$kM>QG)!p;UM{!<}8hZ2Yc#(0ob#gz8)m
z33?_hu2T|mWGdoPpn=PifATMedHTWI3OT)e7rP|tzp$PvwJB&~1HXJv8E-G+uQDE;
zSwH=+`w<b*SO3aK73@e~Sxs<AuIohzi*0x_qi>l%2j?NT=mP#@xR0qpH1i&bdwyk1
zw`Hra>-5_adtaI8lvef0qsrAqhM(li#n=Nz<mcN?uBW=dTm8UrBGuOH==A-zOnpYe
zKuRqg8?g;<)~$tg7~ppMp=Gu9s!C#%QNf@9e&6AUR?d5%3@=Aj@K~OR2~(2>5Xi^T
zoVuhF0Er%EOwg{V1}78ZGB*HfLkB$+)3P5HV!R($tbd;+FNH>(PBn^bmJnL2P;#aT
zXktH_2*=kEp?&72^jS~zDsbI)Xq{!cA9laEUX^L-XP#4vxtSit-FsVpsaC0<`$3QJ
zdK3hR!H;o+^b_SpUshu)QwwK$A=HXObz2jA18s(xgq-`*ET~if8#`Ewde?#OzaA#V
z<53-?vxXl?nZdwK+u%Rt92=qN0p_hAQK7&?@ZD!iUOOoV(%pw8jH6sqRt$R&y(0dS
zfS*_(k_WnZNSG<X#*Uu#K;I$Xbsj0btRGez?jey;>45nAp4bJFwmw-Ay_iWNN#iSA
z3z0_jmzia#l3vnT2%N`B!T^+{Ecf4A3%!Dw^qR*RtO<l3hDNYS930EkdPS2dKGtvF
z6M{r`h;ng*4RNqZde}H#p9?lf$2w{TeRe*QT@nQyu$P}tcIxTlB%Ehup8RH+po6w=
zQ~fq?fUU#!CN{skJd4@ZouI_F-EfSG7ungl1Thk3#@5gb_HlZe{S0&n0wn{4qFbiB
zm>bHpFV8ATIyz*!K;7P$`7t%bY|OxVI^6HY_9U25bG*!#)B1FPS#()?Z@+=j{GVAG
zXXNxq`2A7(yaA4nOf5GasiEDIxFiXscQ@k8qJZDH00!<>Af1u;kI{?iuPfNWNrVb`
zCSWYflz|18Zr#sLX+`>qpP2knGHL_h2JZu+tT~oSX|;3Y{NxnPrTXNZ_aju3t%B2E
z(T;}yg^$^O`6Nx|iq8<rz7+gbw1i3P2N^9kX$P00V><~Sh1q1%<DW{vVR3R;KJEA)
zN4)7`+;xZF1G1*?Xj)6<%;AkBKiU%{3`l1sYfmm^qtE9ovr7|Lc{XX=IIeSnAbo>g
zjw|cCzbDwr1r#YMqV)8cV_fI)=N}eYIRSQd#2g-|O%K*7{EE~^{zOS}gN$X_$%U;q
zwSFC@qQ3#|(yGkN#{ah9zTt~*+fIK441=%WWWR{cf+=G8G65fzS@IP?68*e{Au}aL
z#51v#yss&#x9PlVg#M5NKy_KP;RWEJbR7;(705s!uI7Q_awUv-1on7m99dTY-a2GL
zg8=hVqc@h~J|7oIbc-&gnq!f$N?3&f0iO-fx0B|!tp>+g%RyV^;TTX07l?p>%0kQa
zC|DBl&5j-7bLsCk{1_8>De<5%dZ$G{8I$|;t3i0YVM?lFw`2ncpklpX?!)7bljDwf
zeS;NOS)2c+4!26ujLULe>sJo$j5nJ*wR!$bno^p)LXO@QpQsk%n;YHUmn%wDe2p_f
z4WMAnt*NM}_QR8d^hXalfbTwMai~v)#il>SCN7n`nCHi(pw2}<fsSx#FTKAu7HrJe
z0(dlIoDB#I@po`9pSe2E1gwZ}4@ne`+aQ#K3XpcZ_>2JEwB2p3_Zf#c=BnTdQide-
zP;sZv$58s~(i4p-sdj+6u(mEgFvT^@OthADf<H!oC%fw0#gk)8JRy-Dd~}tr7#9|o
zZS>3vT<P$uPn5v@ob?5N7r!A0#i5@jzGMJ|E-|t!z)nr|hcD(!A^_Tz`dw$>KQ%nm
z;6YWU;n2ar&AlYh2KOay6>DlLi8M8-Q1&ckFo@al7Vu%kB?@EzaNb6``DoXIcmGhu
zh{TgsLFA<8ZK0abbJl}%Z<Z;e*Jc<aIs6&VZOfW(Ia@#M*a@9qQDS0ZKs2sCM-%{c
zHh)~Ln}k0`rM=U9TrktKoq<O=A_ARe%`+s8{>s<(1>g(7bHS-C!sJTcx*LjO$XnvW
z&jnDH&)qii9|XdaJd9rhFd`lpQj@{YO*W{bW5$YI`he4`j%z|DC>Kf_?gG%@bY!F`
zPA9`WU-(64$EA3<4cW9WKlIHz$=27+z~FW!k`P>q)*!?T5by5j+#2u~0d}r_Fe-8=
z@iNE_P!wioHs!a~WG~Uj^<8E)XJaL+N}CgCY!s0hv~eSXmS)g*kyHk}p5dSQXy*YH
z)!P@-$K{2zlpGNpFh*catx<Ts)Aj<@m$@_MfuFSBjf97kuz6?}#R<Jqs_05=ZGGsB
zAr>;f6nx;Dsbd)=aK`xCU>VP)m$CYB`1|Wya!v0pTI)baFYb}`mE_uTLi-mz0Y6AN
zB^Vb#g-JcVU|tEjfKp9GqkWJRGJq`Tj3|^~cA-(Sz$O_;`V??IeSR)Is-W`kFAem3
z*WIdZ*bd?bLP^<Toy}j$71Q%FM+rnAY8kVMJwygxAcbQl#W9-VXu?1;i(Cs=29D4N
zzZgqYqQhg^P~5dp<Fexj!_b4C7krwhg-~ChUKau-0OkT4PA7BmJspQ6T-l3|Zd~N^
zIDq#kQ~!SR(-JP#52|>A4C%<p`L>dD0U#(M+e*z>o~36J5ZMv@*$LBjdx3%X$;KRb
zLM|8OZ?N>v<fyRj+2rW2hG90F*#l{JN|*O2asHI-9ZutK{}t*Q*C)}oFEddXO^h>j
zMe9MK)_kSgl>={uvo3W@%(bm^ujf9A%px8yTJRR>#GL$ke<^L@7)7@Kn31a{@pqN;
zJ7Cj_Q_<9O`rV9B*B``0&`~*nDb8*6TJs_p298+nM3$GgPo4Nyh@0+BeyUhSahjbi
zAJdl@9B?ej-zj;rso^l4g0f#O5$@1ax`=ikoP%cOe4_yIHIB>IdB~Y@R5E`e!xY#P
z!r;)WBq44U%9|?<%Cce9<3iJ@2?TmZfF`@0AndBw<wOd^uqFeM09X$XcyEehMZtIg
zsRSQZ8=eQJ=U$iZqagCYxGDWX7V2emB^8B+?7RB&E6F>z+CIVCa&b+F>sgyWf^yL)
zG?0PJd%YeL89M}*H6519^Ls6b$Soh$XP6)Wr@Th=bCaA1{9f)H_66DFIUo~df;vNw
zzv)r{)4NcE`(NBTOiVBBTug7^$bfN}kX@|bBq`t2{YVMKnCVOSI<F6v1`q4`k+Okb
zl$!1tn5tBMw(0of-m72(IK5i`P|rU>e<|k+y2PDx@jvT}E&m`q!p406M5$tnS*XW=
zby9fFxx^xj%iNG)X#1V#h8dl{ZM>;|bd34Uyb#bQHW@8LtV~;n4c3Lr(>8(mA|Qtk
z0jc21qf}f4yiBctR-Um|aaFz~MDu{xp}ji!wnxtpKof9qG!UeMj913cyW(tbn!`VV
zVbB&m5QeK2gET>#!ZP8^Yyds_5ikWujK@7S?T6k2flYBZQ#=rw(gIel66v${RK<F6
zDEa{(KXoG$vY6;{lKfP)!VqmqAW~mkYzIPZMCfV49}QpiQ;kg>c0m56KZ_C=kuj+V
z1MafV@KCwCO%Gv{NgEMPl+^3=)`!fj`m3Bk_a;$)v5xzfo+N*Zr`i9`8;&MaW9eWy
zQc4taJjdPm(#{9XJWo1Z9UeJI>~5UtHqF6z3hDCVnBAGx*w+wWwhV#FeVdF>RGvLk
z%9C!4$>HC3{Y;DhWpj(QOZ|RVTx6Ct!S&A8Buf0x`1R3@{~lSuHcnPmEHiAubo1Qd
zEOL`8K4B6(@^(+JeP?p+Wc?3Xo>`=MjdA$QHedjeH}>@vC*;}EFJ6Z9Ty&X5dG$@g
zxm&|4v!R^l{L@N*u$jg8f{0I2K%Pr%mpQTKXcu`_`zyBs^lqt!R{CH?o(nR`d#V}O
zUjo^g+ku{<ep=xWm({X?I9DYec_ck|DR|sar9-_kb<)@Qa&q_Q=bpwjtvYz{cD4Q+
ziKkZKUC%E(ZCdWv;vX?(O=H)irw5bV^=zaIS8|t~)TRB18ouS?1}$!hDK}5ds{=8+
z)<Uix{P7k<&o$zqcHiSb?r;dwz$H;DM1RCz2KM&0nOn=IvpgnIm1PBmuj^6)3AJfy
z@vP+-uHZf|$9X*=3*5f5{b@BOgIC_4!&{=MdKcei8s;|K@mo}*I8()(k@cl+;(pQX
zuEM<Q?fL~@_8kop@Ov>ahw6Tzr>rLei{{TJj--_#+|8wj%YBizl-;!>tzk|XfoLxz
z<Hfb4#iAc=4eB?_ODRrD6)`J8N?GH#6}4{?S=qul{V)+f&KdK9HsldSZDu(#=n*Qb
zoDBs8c68X^gE2rDTp=70)3u*Nmy|9V{>WgcvKb!)FQ_gK{b0(!riZ4NyHfs!9ar<|
z+E2~L@<cWO41qE2Sh|Zzic7$ejOY#3hr@OVP#W4kq5sCk-9WH&u8lhv{9JdVAq9E$
zGQNSHAc-h&1<<HuNmL<yeFECl6i$NJrQ|x-^TwIbXF9{Gku)Tov^C9^29hR&XbuQ8
zk`Y<sUWmp?5b{YhYPpesE!EII4^6^LkU-Ve<@yDNNVG&IwNe1ZOy!5uuIk$+>kD!U
z#5pj)ObYkH^z?q!GFybKAtsV|E-*Rh-{HhS|DKaI#>rSZ=s)r$XfWwN*8C)joar<3
z%s67{ex)Oz>yWi^HG76W{VN6bGmeoW$N;fM>goA|ayS*O{C3MH`eD}6w;%ZW3{Amn
z3JRR_$zI?Sw{P9JNeN*S8>?YylEwR#3!Tu2Br|;!EWkXm<xF4YEOSd^>4UCR4o_He
zv9*>+RBv3g=*aKxq+^y97OK>*OlIv~_$5;$F<DRg9}ch=$7XH8^^}EyN5)HnG5`E;
zD?HBBv<{KzlTm&lApoJrOn_ChaAASU85R&wS2Gx&{J@qQoulvon)QR^<z*Cy)jk*_
zCeWYLjNT#X3jZvp9oQtUdJq}FBdzp!{5@PYsBgq3XG{V)cJIoIp*tK3gbw9SB6LKs
zUSV3u7m17Dl-kcoLV0rhO2lgd*D9Wmr~vY@?)C^qgb@-!#mi9sSxVnMmy{HSSH!Y!
zw+n?mU`jP%mbTSt1IF=8%4TtBs=_R`I=27C-uw~^JQ9=cT<nVAuJ)29Ad`kqgid`m
z__*1P#f|=b9Dg~F1Sh?Osj$ga5Z>w5DxHP+#?UxHoFJyYbdEWij?OXPgmD2n>Dzzr
zI4AzJ-#jZht5TEHGg{H3vR_qYFx@mCoO2l)m&0q->Ty~d0*&Mu80(N!72Ny#v<7gI
zM@cK5kxHf3@YC|A?ktT6w`PhPDzq{8=_bD}j%(1PS<akGzezg|eljn>_+UZ$s~_Er
zKEWEHHW6CJ1&$-&A0v-Fq|pYJrS`ufII%<<6%{*cEBUJ}{N;&_KBEi({KQ1(wCs>K
zmqdQq>1AtV!w9b-MsKfAoAF%gg)2$QXqTwzlvXT;8WV}T%30g^BZr10uEAjOtm#^G
zBgJ!NKmT>}1N#%CNtqGu?u#E;Due5XAq7^(FqII;<EH(RIQGcF++|V$>#79WM33lW
z+cH6Bt(BA6`R~TU{zgnm^N7?q4aO{S=Qso{qw@FZ9Q{A;p{xHM@DtxHY~Gd6IB|$&
z2hxUu<3gBbj!Iwj_>P$CWk_+M%QLD2nKqKn)v~?OS9n7$B(TY**U<RFVDjZ`%iK};
zEkl24S9l5;gg<bxHsJ$~1;=H|>hX&|J~TdaPWtrcRfOV}y<>iI{IOi~UFyFMZ@P>B
za=}pzVq$$2)tCPLdC%ZpVBsE#FQoF>1OJ`<`@iWAfCRumNpJvMj}8DpB<e;Ot0?OE
zJeY}*&6u8Aw~2{1$g8u~FMO_b_?%5y^{U{Q<<E#YJ#37}+iwdU^u|?A?RCV;#w7p%
zz~QII!2i5v?iOK4BLL(KAZ`SI>Ht&(Osj=)v%E3{0DyX<Pym2UA@qA`+^-7{f4+|!
z^;E*jlO%5OUbU~9KUSYsEN9!^w)@$+XfJxE-B#V%>Z`wrB3f_qEe6JI9tKT!z|QNT
zg9AWNG=Ok^NDPJT>H%0js9smYvXcPwVRLT;o;($NtOo$BM#bph^^Z0=p3lCx{d_Sr
z@>f)uS@F=G+4n~=y1Vd?(Z?;PXD>pdKOM1}{ZLgCdiiPTR@4iRV=?5N(7~crt;Lu{
zoo7or%navMUN}o-Uzomg=j&y|<T^mbZQY;3XFr0v1W(VJf8|F6O+Gn}DRuJmKVRxy
zuxzhi<UcMAC4RSF3=26j2xz*g_NDg1{HL#c!_K9jceG-LqaCJR+Qhu{{Zw{yVc~Z;
z-R8L=Y7NKdcjgX9`}_kEfGPU1M@zB{1ZUaGz;@@ESyAM#h^c<|E!QCxscTucN=t6v
z>lnMVs1d=pcx%yeBW6AXGB)a|cI(As$4F(STh}#x1s~;K85d=ESbxpyhD+^yi`LX*
zzbMhd?Wl#Lg`-WsFsXto%^3{pAIk>-GdfpZi#kZi6bOEoSG{uk*Taw);M%s2u9wSm
zZEKlXjyFOx>_01R-By1ssP$!GVLit^`POJ~SW*R*L8ewmsb_a7s^#^Q`QXb1594$#
zB7Gj+<9B_SlE9<CHS_3jLGI_mf=~1Hx!W68k1g&T3qzoS+OJ=IADSs8g_LeS3JKPJ
zyWq6FI<@=77Rf%R9%ebIbNh$BOjenFbbFik;o;XO?c45R(T7Yt+`ZWPqst}DuV3N5
zTPW*Ve3FN})d~##xM-xiy>J*21#I66IS^H?Q4dpW%%6mf=nih8^p294zKCAhJYAzL
zI!%vuZ~r(6zV$2SXH=nYNOH&3Ti*qzKSXq{ONrcjkvm;cbaS@<@OZd+%Puv~%0jI<
z?N`*BZ{ZOOXWN^{i`L^zqoHgf$4tXdeR6#<k20UxMFg(iv2^dLe<l1KSoNBHYZkKI
z?ZL9Wfz<sR2W|%dSm)+Dr7P*^=-t6|Y@l(Y#G3p<?=5!^?1XpCxXIT4>?R_;%dI9a
z6o3KVg_H~&Xw17I94$%}9n-H#z5hQCjMsVJINwYoWbl;p{75UpIPAb8Q-`riKe3|x
z{N(>8P-z1yxq^<)!V30Tw5Dbvw*J08<-C{<;+f$86bAr6(g+Y8pwNrkJYHW3+i8?9
zRj*e68#|6au&5`ekJQAQCnnW-G0`B&oFFhAAT_R1E$6_f{?vUyhq=((cuUX<i;Arq
zKPW%YudN%wdY5zjdAEYK<M114dWU>o>N86erpLlxlU2^%745GF{rOk<>7C_N;J1-J
zR2(|_+^wi1W|nnGiJ_q226{l+(RzI)a)kbeCh8$6r;e+o6-}g1hID5&WI*dskdG*c
zdu1(=Z?Ck~7)-v~^{*qvdwP?{?d0ykKQ+|f<zJ<rSKp#!E_P+Ffc%S*{@LKgZ$H=g
zkYRuQ!Y(c?ere}W?U9pcxj07U2D{i_yZi994ffmbUy4Vv<7br?|0Y)LL06<8y#F@l
za~^y9%aO{E{oQ{caSoQ5Yww;nd0#XRY8sEeIKBA(`9bKfqU-9!2`}NCju7#>KJ`Mo
zE+`N|rz(TK)yBTEXPOjKL7OCz`_S1Rxw&5t29w{r@+pM>`5P1&#0&4=h~Dq5avRvV
zD4XziBd8<H^3Cd5j@M6xPU?1SMm@*bqS)_|e>FE2uenn)D3b13oR!W~B7*NgRXj<k
z@6&2snaKe;t4aSQgAcS!IA@>L1bI9NdL|lS-uzx9C~EoL_TRt%nQT(~e`^<OvO9=`
zzZJ~Fne68zYiwA06Y({#?!M-dzrf;1S{-w!zC_@bbQ!%lHu&k^jj%so<nJiBr*(g4
zu_ykJGN>}Ua4STrv}qX}XY{ZJVQm|H_e*{y;a-VcXU+gjv~HzQx_ii^xJ1x$pEbt6
zD0B8-(w$Op3W`iW!FrsSGh!jOcXC1KbyboGi_NNbOA>=z<J-C$sFxT4H)wFYs?OML
zX(52(KIbwFT$k?-r*El)sQB(1;WZv{XmWzH@W1sjw(lO>V3rlw2N8l4#Ii~pu%3;(
zao$C8yzA|KoXA>n--39k`JlS?_sF837w7wj-z}{b))-ZD2m$}S(AzswFTA)mHuA~i
zvoKpvfs&Nk@c5}@kbPu^mN~P!*wDwSzxL@IM}yim+frpMS;dnH_`Yomy6n=gCatUL
zZ^8^$nug>Es!pJdRSh5>Tl8L4fX|8LMX7atWX7o^vwpFr;q;n+mU)70Z)QY5H21?_
z9#Pe1FA16M$6(}*b#G&{{TtP+SDdgpFK>d}b8%Vp`c)igVLETq=vO0^*{?mEXPv`P
z!S<9yLXLWhDrnq6GuvZWTf7XHE3#;sMSi380yeW2*?tG_R-JOAR_hI^AV7J-QxYLL
zrSH<x*qMyQ;U(r|TPFXAemU41au9eRs2vr39Nt>lAQc1v-|K58BRKJ%=giKFVxCDW
zyGJ+DZ~Xc<@_68ZWT@pSq;L2sMdFuboVJ!@WtmG=vr#3^y{2g!r=xac+8Wk<cT!xt
zU{YjwAwM9JVNn#i7hrJli&sp9&2n)>#NBDl<CwB<GqrQAh`TG>?OMMStQHwYzZ<^(
zA|k7?aq4<hDuMc&atZ-;V#YQT9#=enA9e`8)#BYc`O4-|eQ0FA`dzb})N#wEMTpA6
zB?0CH3CRExGvh9~`#v{Nx&OkS7ac~<4N=P}f2RKW?Sw+DUSw=r>#bK2lTE(dG*PGP
zx*%$L|K*0Bl*`KJ``CFYZj)-5Fw5X8v*4)7YK_;Hxe>cB9!&0Rg!kgaS{z%=9m#z|
z$FN`O*{_~|RFb#PfxSYh3jWEzxgHdD68o1mDr)zS+47!PpFu+!g1zW(#k}1)_-5kn
z-16UlU4#Sm*3AXRhi;Plf30plSp4pt?P;D~^*#Lkf7Yk#$M(S;z|$pw1%a{J_Imot
zY3%TDL21~;L3+b*bo8vr+oV^4TX_(t@e4lVUfJDj9}pcs3gSE23lMOPrXTZv?|hkl
zx^J*|<NLqs&mKJTyJv>su;D+lNNN@O_?<KfHTwHv8(0JsBdDyi?TQrNw+I5djLL{K
zX{ahe33r<~2WBl=YUJ+;7QyNzO;L5G@nX8jI5N!ygdfPVX=wNkh<Vk+RbG#hp(Zri
zz}RL{*$_$!E!Q>oGQ2L!v@UMEk$CFz`HX*dD~zCDiy5$L5D^?w{Lp(}2xdS2^DI12
zf>Wd#WPa&G>xr0=B*U<}g)~rfTzeikOw;m+4UB4v%@$?)hSIpmJ8LWKd{crG&+Tc4
zzoGx@z@~2YqSRhb<=<TNg16?ar}oh_m|uK9^sO~iqn>@y_NMlI<}~FPx<<<UfMD|I
zO<@<wV@pgppSSR7q_(dX&p)|o2pTQ*<+3fMU=d?(8~I((+|~ptX^%!rf(6i}?&!69
ziwBk+2%5>CO&h~R_l#J38+`Z#Xl=PIZM{#FtL})fOCOcqWozi1;)i6pSQS(;cVb4-
z$|#|Q|Lf+Nfb8o=bFR4l$o5;-R^87ww#~}b{-dVN_Ht5x-SjVdW3ebH^WFLk({|ro
z@>bXqq%NcxWmKhvLK+cGRDSjYHYJF5!83vwozLcFIzpSCgaKWSp2r+@LYzADN5COn
z#Lr>_Y7{^T&@b%;TW4SLQo?v(GHMvlW1gxT>T|M2?6OiD1Scq$Ry9JOBuEhFRy=bT
zHlqw4uy;oL4$}*c?(Ftv>J({2_8Fi=XVu@%m0q~;W|$s{<S=snlZK!ay5Ik8Y*3ua
z`ulh@^g1b^*PkN~ig6ZgK`e@4D`CM2?5TB9aiQ_se%G1{Cg&c^O#Vywr+a#z?w^md
z4@>mO$A{Q>(p$F(ci*LZ74PizV%%QTW0NcLo*om{J+@9uw{%*Dex#ub9B*-32t2=4
z@y|fZ%1y!eSHP876+P^>v)1_Xyi%&ton|Jk<=dSFZ>8A+8b%8O9$8+sw6#lVzRam4
zFJXkBE$XOUD-xXrdei><cR`Tf-f!`<(gm!hg|7M8f9<;WOy7F^kRP?v#)^r&xSMWu
z^u}!ZAZCsBU|q(NYo>o$g6V8w>sF_PA&ypo)?UmiOkg>Fe1fWR*eQ{4tAOV4MY12s
z4I3VPC<Xuz0Dv>68wwE{8o$3p=T&5HK8$qYrBFhYWE&HlQoc>yV;-}|SwEk<ebP2A
z+O9PB?8)ubuTnmWjBS=B{?`O_Y%Cf^9SC8~6-Yx1@-sr^#MIY==*PKx?N=1S+lx=4
z0YDO9Zn`o1l@0!t$wMW%(xyx4Hj_1v@~VD7{a_9a(rITIrd$;_DLI0=9t+;m`ADvK
zj(|l2&j=wM8yn0{tH_w?x>e;;R^fSMXO2MomJdvx_dHu9n(Y%MFmEG!+ho}!OX2vk
z0`aBEto_qj6UX|%uS{Ce^S<+DS|%Zynarpx6Nv{w)vvbM77Hg<c3yJvy+4WAIe8o#
zr7Ijuj8;3<0_YY-=}hG03TS0DLJSHFZKW)qT`f4bZPM!@O?xKp-@~NDr-NbSv}~Ve
zs=|F=aKY9~uV<x^_SyEX4mzbs4x4A^7SWDTinQsk-``8UWnpp6p2~l&rf9F@b2fBQ
zu|~saBKX^ShTUd47RxzxO`*}%3bHkjTDY~A!Y8XOD=RB4o2%e>zGQI=^5q7(?pNg(
z)tIS7QQkF*yX%!JkheVJk9fIhPYPOyBo6FR)SK|5Ar8^gh``gZ`Dx);!=C=FtlO7U
z1`OU(Ww}I_ifEtZ*_bf)-(uAV_BN^yH@g0aiRl8ENB~{aUNLx>e+M!EQ?y-U&{a;L
z5v%&bmJreRV~3rjb-|a_8|&2G|Ge<%`u*Em+f-BL{3MYB4VAvxt*p$Xg!1jIE6Ra|
z7u|DtSh*<WpN=mPD}+^}C73re+z*N8BZlAy45R+2ou-F%$p6o@5{TRsuMbm{av9&C
z$bloys--?DArRND__&NC<#^-i@`njAw)Qj<M@{K)@c(IwR|-Z}w%I{fWu@8wL-_lx
zyo&d|ZdrOU+s~;<R*290>ni_{kghi_5+#(MI!=4yf8K+n>VA=b?4fM1C?_tHClCG4
zsVV>4W-}sRB*EQW{ad@x$lOP&zR#p8aR;iuBX>=9a9uOB!y5Vf_og_mw(oasMa1Oy
zzI`bi=*>`?LSIAH{ODHn!({oogLU?G$4uPUn;x#i9uk4oA9FN_pIk-G`xxql2`bCZ
zZnNbmy~ED-_?=eLqCLN2HtQ(mrR+}NC5fD@eg~tP8D#Rzjr7M6kNayrIhOpp_h0P8
ze#zA<Qj)3a?t}f=DzZXuKAqRAuN9O}GhC93hw;;7Ql6yR+lg=R;zupG`rgB8`1?g8
zAL>@IFu3;}Kdm)L)1tG1g~1kHw)Li9P16Fu#(e+*+)c0X*40aL=GkRhTjb5pJ+XC_
zy*}qiP4+3u@45EuC0AQ>f=Ygm9raP@^Pf$VFHz&l$xSvN9|$SkN9WLTCM=YNWbH?7
z=rNBZni1SwHioFLffN0MuFnE*`>c6*pbC>StFOu<xCKxXh4^YPr;UOOU};>zg)Wnh
z>yor-&Ma=d*E`Ut7xq$KE~h5X_9c_1V>Q1+)76(RP+4n^4vs&V^wX4vgBzAP(d5e*
zCiG`nk9!IC@88e8{`!hI!5ahb;_s2-lZ;D2zOT-BkHosM+CI%`&S|!J!S>p5tdF;8
zET;)FpDP%V2y;1H;2a1HOQJ5E4KL}IHOr;QG|4%M9mRSTS=(a~#l|l|bK(oX*`8|r
zJh{0Uc`g^Sto3~B@S~DD{jEk+fP2P_NH)EUz>9|ess`dypL*U*{hYbc=s~Lx3QCM0
z+#X*ax_uQorgLMbL?+$P(P=^c=-vj>yo*0GaPjiNg}1LK#Gg7oXc*f)`xev7c(ho5
zgQJ`2!zcd~QVg+Hp{(`qKgPeS%~SC|CD+)7MW1+^K2+uwP>P)XojCaJAnl4!WS_U9
zRUS$5f=HzB?~y?Vl}CQte8W4pR`2IyVUM@Q{|cz4yM3y(bf{-qYW(w4i_>$}%x%}h
zsNy8zDFN%98V=^`TejGBd~*5OZzMb6!xW!7!^eBVmcOVT^M{9WVX+xs+vY#ab*8%a
z<@XtjlP|uRuIas1-~9pLX<4cEM{J2*GO&MBR4d@lpM&Q&sp`C&?!EUubnpJHe?g&S
zUecK^W7j@X&A4l+Q}ol~Z4BseYn?$+<(#`7vb+*BbR2R~&#55Rez7)8VP2=`>*|x(
ziz*(EBPOP6!*m|^8f6Zwf8+SM9~)C17P_4nr!+P?_K0nWapH4im}U45dR9)|_>Oc#
zdktgO9amQ>p#;gFr9SgF>RC{|$nozl@HE||T^YsqbN`i=A|%VKUcBp#I}v<!@3{4D
z{EhLmfBQ?X*ZbMW{nl?AW$3Q4{>(34EGsmLRd5;?n~A8oaJ%pG=zN%np)j+3-T$NP
zy@Q(io;XkxqzOouE+v#u6aoY((p!MgJBsukihy*aNt2p{7K#E%Bs8Ui2vU^Zd+#0T
zT@W9?@4Pqf&71enyMLTJv*+&KoqOiYoV)wk&jJ;x_3hQYw2b-h5x;+uDL%j6w_rYd
zz{DWf*EeGIuj^F(N{7We{nI>PxZPc)!QJ!Yj^q>He<Z1ugtJs&gfs=hA(n|Ty!(l0
zpvCY_j@v?F^R46HS6ZvXbpp{>h<Az%OKs12NR0NW76)ZR-zjb1_)RY~5$%zjOW`)s
zi;Hipy(#v)e6~JbluM;$6Ln?sldtUCV-;*|d+;|@6GZlRk4D_=w=X(cX5{*U$lhh&
zEN<NVpl^B_@;#JnzVY8@EPkXoouuQL|6pTp)ssaS>ZQe+{R)$J5y;lKKll~ux1R#l
zG$TsXSa5@>P28mS{DRG)J+huXN|IOIt23jKpW*s)$q5E>J6uRmzeW!hhL}SEv5BM@
zWv-k$0=NpT)xAd|@qZ>WKF$yB+#)UIo)ug)ZMznSFyuVztZv4rT$MKM2LAq4ca^=j
zC-M36IyeZpeXv_z4gM=1v|qKH{U*Lhc^&pP_qE4j-m{kloI^(m+6^X2U{+GqAKEDM
zpzlF9H_7h4M0*m!%pDEAn>_n_{m1UhN&Dxw>n`ste(nKO%6bfgB#|ezDsmjd=OX2%
z<~H?!%U|{{)2^0oEu^v92g5UF&3Yf1H{0XIlJ-1;7Sg{J9{ybW_9nwfrALq7GX2|M
zY601_ML*2sTj`e}{xcJ3Kb_Bv*8fDmCtjW$Y-1Z8IToWIdV2pre6!oXd7W%=GHUYv
zB)b{9`f~jQ;rDjq)O{)7ht-q5?Tj#}2i^CRgI;3H-s7BVgPdbzAt{xl#Z&K+<pG-2
z5K_OKj|R;4@38_AItj)`-M%xI-)+<V7b8GP7M2%HLcVH?H1OSyS4NK+m2rXQyUi+&
z1C9Hq-?o!7o>+owaIB--9hadO0nA66i=(gVW|V%A(T@+@YHuSNk3wH~4C<K5<;)*@
zFl|1|$!@HZDD=bczs9=_G4p@Gu~L^8a%D~1RB)0W@13WQv{vL5upjUZmTU|5$k#qW
z>?T&WjncL9b_npV)ik#+CcRyVt@axDZ#7|YZTrhl*Hx+u3~PjZA8<E;r?>5U{<_QN
z2)XKWd5jS?@5(aPIWkPVwrrm6-a8FAn9al6iV3|MWLX{c8bZS+p@KJ{)sN~kwf+__
zfJptKGJEqTpa$fkyD?h2arS(ZDfqXe@$lqp=IJp@(Lqc4o5|r939jk%ndKz1B4#Gs
zp{7#P^B}*_q<Q}D3|g6L_5X$4*zeyL!@GyagvXAD$A@=6jF`*{?-L%r`G1rD=Ww6>
zKAF7gT_n#651-+GvatUq?&Gm@$>R~+1?R%>?w9^I@t^#^p#YEczkAsKO#WZWY`bCq
z3IA_Ry#FsvzW+T$eCJNs&$|#j9~mB=&3|fm|Nou6Uwn7nJSo{|AO3jiyIChEz-6N)
zTO}#yaRsQzIy^7@3Vu|-v{qW#FY)VhXPN`KfWv~lj0Ml()!Xw6yIx+e1%Bg0O*R@$
zkcgek&8y6(;mtD5A6u`o@%^*wUtT^=@t8gx{Wtu$=@Fv!Ysb5{&7`vR89FA@K(S3y
zBj_s~iraTm8<g09&?c$ctR2#|z=u_Vl!3D9=(lkRIZVmn+{+Tkj9P=tD5%Lh{P|s7
zs_g2yAlIHhT>U}<K)ojD7jKbtt%bG8rT(8T4(wgBRiismrHo$B$U0iHvN0MOj<26H
zNcSSzOvEqP-;(Y`#}g*B1utCZCHo&QhOK|<^Jf1Y2Nupr`5Ru*)FmBn$9AttvGoJ%
zpi=`HWd!1=0X&~hVABEc<I?5<$N}yx0`?*{vMJsS;%kQPl3}_Z{QFkszhxpb_GQV`
zNRwUoKbT>%4G>PRh-a+CR;251wXFEk(>-gZWhT#<hJXh*s4KNNg5W6kz^{8hHO;Ou
z`zQSw+TPs$fwiN#ySYEHZ~AE_qbH52snsq7>7ef(B-c%rDD<5gWC!PRA6g6z4(*au
zMo9SwzIbvpkhiI`!#ZJ`8?x!_5BYsp%o8~jirt+8zMWllf5kst8^ZJ`>+90QZ2b}Q
zV4?eWL4~Zp@~fgr44?b{%0(KRQBhIZBi-E@?u8dl4E*+CM}ys2W$Sbt7j%qbVHcrt
zj_4<@_+Gc<0@Yv09wmgiW)OmIJ%9G~DS04p2zhe6$=u?_kCxpEk~{5@8r2!PZZATT
z98AY|105ZiB{IEyJZ}~ZzWJqu%W+LCgg=lTy1WK2&Asw?C|IGc6d5nrRhjp2<(kFq
zJm3I2h&lr(m0zAAKA)T}CQElOEw*f)dwvO%PS$qY7-lVm+hwIi-VF%xI||BAwxcUY
zU`mT5T#?Zq2|`LOK8b+8gu)?Y{-YJVz3LOn{jb*}k;^-M9~&kczwPB0_-TCLOn47Z
z%b~xoK@$Axs|t~K)nc81)p0{7Yk8~H{lXaMR5KNm-|xhMG(R<vZC}Mv0h{E(c5n!9
zhc5rw`l)P;?$RD&R8bomUIXH!^a}5OAvR0<79!zSNF=!mb|8fPY{~cg_#rXn_wSZB
zAP|!lf|$kLktUWxnkGZW(RRc!%<7cg0YfO4mQy}r<JMVZhc8OFtE3RGKcUY5LoL<B
z!Nu|qzSuZzin;D>Soj^=^?hRH$2mponue6}36%U{-OJ(O+**{v#grfJE20ySm<Xhv
zhO&{ao(3r`8i{<*hpw(Jb}`RZN7iD@&9T|{P;QVK4Si&RV2vtYcO=A4EL}Cx;SO{5
z9Fk1x(uMiN9%Z-8<3+8?J>oGqJIeP`&DN8!7sFVjlZTS<&j#U7AcJJkBM4G<YPYda
zpG_~Eo}%0rKG*)rrSR-9&^>abU1lva_^RHvb`k+_V2V*~Aj5aTSFew<3t`ROOztV^
zy6__~B~X3t{kvAIIN}bGBtastMnc<@qLEKa%-z$@lByf0r=e@m5*EOD><(6CIw4QA
zy6GYVzkkV`6oAAJW8H9pJw0vL0`~gjS-JL|`|vN0KBH<3mep4nEd?p0vNtCTY`n~g
zPrskOlY7h%$fA?%2OLlvS{RJf_OzYls#6+<*U=T`KN*WXWAqP`$jHTG{B*Bs8T>N;
zpIBizbd{cv90Ty@nG|Ncq#$@qm=;FZQ@mbR_+u&P)+7A%g=Gx8R6;}x8Gj3qgP8hK
z5yFRqK2!l3-u?1t@%>QXlII|M46Jjg0w*FKz(tCtvqbn%n%qF-sNgUPC^+Ms-i@(K
zMS-YvQ)+~`g~R35?WrNcqNGX;u39i2Lo>oCcp8jHFVb!-)v8~t`V)`|oZ?)p;iSw{
zGz{l)=CVplsL)W20>NQ62v>6rAy5TQLx0x65UK_LRNL#yqff=;D!_-*(zhW^qemHl
z?XB!<_^B)mAv^|RX{0>&@6+jX^04b=X$k-xvSA=JMyOQDIZZrWCA~_0#^|oJhvb7T
zeSx~58+M|*It@M%Cl0GHo%v;NZBLI@dCxn2(nQQu;Jbfv72t}!g5Xbd4kkN5<Guj$
zOvM6aN4vEJ3)=ICZMZw@`AivFW)mOKrk4mhv|2|HD`m%jSj8)xUtDY*-EL-klwtdo
zW`Ta@B$9VL#g*LrZ$?C@b>hCAwD2KW`}01~z5A>gb#vYKU2wt~mbMeh-?OD8v*~0o
za!zMc$A^^FDY*-LIRO_s-CnFTKlfeqf%M7+f~LT|bb{Ik{0x)|6t)qo%$2c0UFNTF
z_Ldr5{XB^Y=}L4=_B@=wc(_HOqW0?OKEsh-JM1(Z?3B$<ZJx$0+!mJ7PXbW2P7Sky
zMT=!+<%`9(W<kr)siK74IFV2NVlz%amG~})Y<+88kSk9I0oE>_hA&?aUC0q$Su1Qj
z15eB<!T}v-F!C;U2Uq$kS6d*Njgf$0MLY!Q)KiH>VjLhY=_%$l0K1V?4&?&tur!6(
z*f<pj=X4FXnJU1DGt`x#ZA2Vwph@Ejv}qg9L~sIXMYvU4)t$k$P&=G}>8DvERZ?ZN
zGbADmW0=d+;@$qa;t$ei^jSU|S3j#l4)7<CC{FOZp{B{4SzoA?T*qa`JJKNc-7nd@
zW{KOmXZZ-8IySu29_aG?)|Puv6qsUVWoN0i(4jFh<BKyuY~3L{1~Bh3d7bPjgWn*h
zXgMC5Gv?BSqS>9D9)7gVZ@lc--(pI`Bj4aMbfPz7II0$jn2#QUmGz)T?0T>&w1_)0
zGjy5;w|)wmznC_*f)rwh22vw2Oxh^6?lDFRnW(4`O#x`!&xqrkfY6N5$2;i2S7j8e
zw#(>~drfq8&cE`)#}3^$SW?3-<9dinW#rEaPqGi#DEE)wN_|i;Fi_M&fQ0n*Y7>yz
zG>fPe3=m3_GqH}uLhX@Q@(71d_P|0G*C;J+!&ZWVmf{xlLp&S_F@Rx-xSs4O;BWo|
zx=&s`!UMDi+eewLW$_uvOkvMPxk?LseBoy%$g4RY&qyltI#u-}uFLN$2zAoSSY$Yw
z?grKOahWfu^+)l$5b^xiGPeN_dA<=6+-HoMZ)n|Los(~88;m;%URYQVKiDqOVWB@R
z5+`CF3XEQ=^XnciV-1!HBhs@cR5eP8(=(9?EcW#>z8DJ)y<A?N-P)Zazn`j$)6l5W
zN0wo6uqtPx`*(~(ddm7y@yhuSR`JMJJl|d(m2<k$sYf91`nUl#dW=V1y?^hSjP|S>
zrdOJY#KDB@M#YeNIB_O1BaG|bNk;oS(kY}eI`DR(S?lQPY<OjdA(ekd!&wESULpWN
zDXZG5>XFy2o?Q;iRbutY_0w&##S%u{FwxGcn*4BAHyGnXDo#%B1Z88f_uNj3q|_LV
zlr+AgQ4K+Ju!aFoLPgPxU>dCxuFO^+qG8ux36B@lQz5WPte|GL>u^KEF<^TPpf(W!
zEuuE8bXFcoFH5v_=mu9GC^gKco7)5Ukyv1rdOx_wjjtbMRttgDRupx)ssB_COVp!H
zg_tuaC>l=dQ)B3u^gqzYgA71=noJ)ckZPw9X8>x3OP5=$8`Y!1H}t=k#wW%_<3vy>
zRfvIoW!sEH2X>5vU*E034Lj@RN~%dhN#bf0+)x>ttP7x|E3ntgDnrj0mZ8h|-4LXZ
z_hq$T413aN=CHNp0CWX4cS0f{P9sWBrP8cc(QRzZFii-YRR!k!<(y_<z{DT_!5mP7
zH3w7{jHMeIzUPl8qlJ{&!jOtC(9$0Mo-_^QObs^~j?X@JhI7n(B>h(z&=?FJ=KiXu
z0EDQdyw@-0FRgHihbw!LN+>kARrBWyf(^|34(n*f^7dsU0?vNN9x7MY)J{7Ts%V*F
zvh=FxUF<c5Kp0H}`&wty>S<A!CIkq4z;8zN!MO^6RIT`*2#Q7;Jm7cIqaPMTcPkWU
zp<E4s*j~Z3G;mu_k2!?j+Q3!QrGt|%HV&$cL1>|Iq&B9=N~Z)WINT1I4eB;9&Nc$t
zh**Hl+-9N_P*wb8>19wOU0qch7XTWY4ROHMqWbNy22k`g)Z7>eF`Ti1I@ea(mtyWH
zvdZk8%WRqXfmOB;hz2l?8=xr;XaDIGr@>b`t1%0*yX!1YB5KFQ4MNX4JG(+?^=xU~
zoU-*xk%neMwZ^V)Jem4NS|y71X($&%gbEZ|Mi#9)f~-VVbC_ofF(TiiBeh64^SL+(
zzM=u`)HEPXduJ$kl-W!$y+)(T2*ZQK8famW*bgLtyCNPXf>aSbIgiPcqn*7!#Ds@$
ztmcKsrkL_kJixH}5Nhq)<(SlC6C`F;u5~--)_^gAd^r3*V-`tZgNbM)Zk$fOLQg%o
z+2eKp=>c5%&HVyZ4J`=3iklKnt*^EbCi^<Am8QqpLc?&J2~@%@#K+%?S3#hOSI|=A
znvr{P(>Jf>4tYQE)2T^{hDI7r^(m&TXo0?h)1<nSb`xCK<<seHloxCG>8_gC=ZzLd
zZ6O>Be_3=vcMKRaII=gbij6L!9cnV#gT1szeHVzZ`C7bA?#I4gSmjy0;G0?1bb$n^
zVu>k;bCM8e`mcYjLmOvhL)#~Jh#3?bMdmVpXDhbZB{kPcvuy57vd8sH_ZT{3onxJi
zHhDj)dX`d1!5Cu<K56#{8sgHAv}txeB#^a>`XpSPjXs_(AN@jV@H3BrpNxk_lt<BS
z=Kejuv7-8&KyPGPW69t!y6!FHdznL=^#5Q}Z`||1h2AEsk>oe?yeorsy;%Unrzn=S
zmZB07h=Vdn)4-Vr2v&zv!-NE<AZE@sW9n_{f|0_C%37L&ZN17`f&kJkQIIIjQ*#S2
zm8dfeJd#yqBP@)@C+HQTxzE`Zo6RG_*-g)vPOtp?isN{M%bvCXsqe8F_;=xN@8J=`
zlKT6Einu82LSt}LZDCgKhV%MnXZlS2=s~kyn1duf`#pTWV((do{G$n{HNS5pDr==$
zptZi*ne>?|O`cEiX-zW>q=-Ac8^&p_=?pSYH$skK(uA-s1R#w*w0a+HH33`s{@$ZE
zmP{Ijv`P+LPrGkU;~X}%8p@;^@(Lr;`=Z*;Gz?%%;?KX%$PNu9_t}v%tA}5<P^)Xr
z#;jd=xq%d^20Azof2UAxlKS_uJ4XhOhS1J-ef#o7fS;eIM9~^QHfB+kP5pT#VUv#I
zBmT>NxWLUc!b9{|<Xn?ASJ~i<=henSLXzbmBb<!&RuREe^Ow$Y9Mpj*qIrJW+~B|7
zxuT;G7nUN*!=3h!7CwSLVjPI0Nu~%SEGG5mk<q+pvuCV3vmcB?)mAUpUM-@B&WRH0
z@g>M^>b*a<C%=7eLdD!XRwfhl?G4gG9wzc>q&KRF3~c}^V`Ig40F01j=*A_ymdzK9
z<9<358Qdb(nwa-aE~zuat_x{K`T+nBKAAZg;y+p;&g6X4eKgxHK_C;#E7PUtuRYwN
z-r=>3q#LVZ$|b-<B{jAv&$7=6rD8~jKgT#*EbdKvuBU_g4fra!%AHpCQ?s26E9Cz$
ze-KGGA$h{l_#7chg%%zjP!%~0c7zvtl6{#RUfvV?`=f5Y5GIqz%5!jfg(ntddTLUu
z^Cb!{`!S|*3mmI7lFVrs<*&oG@Z`0}BiET?BNMC~e@P31q1Y--4`gB6sv~d6mS-8-
zq=R}B#CFkl$@F(H<FPAVivw93p1i_X7{#~kCmge2oblHIKZ((20N)|flWCt`uMMM&
zEaSNi;xfk81e&{R%IA*<&BqLP%B-EP?{Wr<Wmh))uRZdj#O8WOhWs^maK`IxkAHmQ
z7nh7)K45aFbNBVu>)4_k#9Mv1$HjU?#Y&pvq@7W+QY7wlE8Z_pKKl+o-l2w2e*BNb
z0YLoEWO~pc3H@24^p5>tn{fLbaZVQ*1DWog#HaRqqmbKUEm7g+_K15U_{eDW22w_T
zNm5C&3JGP+@AZq{|3KE^Q02Y7?St$9!R*TNyhkoVXUI@(zcc~5zH^QBFgsKYNLJ0i
zP&Hcqz%3EtyJlYN9l|zkPaWHyG)mhw6FcH1{fOJ1Gc%EMwOA$>`hv~hm2%*VTXMbr
z*r2!OrUDP&pYc=GYI<h`GVoEby%g?9WkMZ0$iInAY(p7GZ5`x3J<$i0kDxOP83NwF
zG-BLs97=l-u{4U9F=-!lf<K&jE~{k;zxP8j>%|jcJFhew$H8n5tv$z{g?n8)V@tAY
zY_~5zBPVr;pAnJvQWd6~Iv0f603xW0<S%hlPufLY#m0q)9~c#w`Z(&LDkX<fTj!-e
zDWUs*|K@S9fZ5W;_m$VtOEU9eIJh5h@}+*M+8q2CmUJI=v?E@oyKVO`aCeA5+79&_
zbgr|u&Ba9XG^ksCo{;=6NaJH9xpOMe6ql;?^>}M@{F!C$*29B4fZ^wrz^G2w!e0q<
z6yI1tPuVmD>JT5Lf6&6YB1qxN{KO$8mN}p=Ecb<z1;n#{PV+gDM+;Te!v5-XFj%8L
zb>VqcF^4M5<Xm(SE=gP_PxX*qvtHrNM6wgy@3t4_lB+}c9WkJV25$4R243xLU7H(3
z%N|7TzR(d{od%@wq^1g6{j{djx|f3AWO?Bc&k-CU%-X6@Z)Tqr&1im~A-u)tkvah%
zhPGcWC70&Ks$5_|^-*r}zK6jv=%c8qJA*`-FN5vy?z*(uEO!9K*R@0PauA-4QtA5n
z3EMzzgL3GB+{5OZ+eyWcpCL6edgwSQZb^+;wRtP)if4y!cZUa6;+Iw<NYPgUdA0II
z3i8&OQbCfIr%oGObA3;k0++6J<5I(;o&IJwK5zf}^JS%OS0}zJiSo_I#$(3~@|HNx
zXpC$r5h;T+mWRnRGr>M6#9x$RF0D;DTH&l>=kJdQnS`D{bAt9iuPgV5Pzbfq+=Gd+
z&5wm+ZYO8{oU$W_e<N>S$lbidfbJ=a<8iJH;lojkO8?e&hyXfm9%oNrx*w{>=dN?E
zzRs;lR@Qz!maTehR%n*>He+N*toY-*%o;CozDl1Y_i-76aM~O4HXq+#bHA1UNGv$d
zn#ua>d%d3h=fG2wNo*CA%9f&y2~!AH+Vx%hU2ih41#R;scp239F8PnlKZB#-WVZff
z7q%Z}r?*l)&8HTbMxirJ`FjVC=5_p)>D!*&>vH?7H)b*-*Y=O*$HsHv>9b1<Sox{4
znN6dm9y><iq$K27(bDB>mY2P6${qTcq~hNK{>5IyjI6FG*^-1=|9a#f>l`4Q25n#E
zbu?Pu{*YwKg>e}aKBq<xSD!i9Yd^1JOkeHVkz&wNH&17fd=TDB<Uw$UIanS1yce8$
zjXchQLcQ+YOVuIKTy>e_?y18SMgZyP9soWU70ww%pk(n0E|B_pb-$txU$CS_$MY@e
zZTK?)Rawt8ZRPt)jLV|&ty>vHg?=XHc3&U7s?8STJEipu{(i!k+1KF^$d=!doKhIR
zW<7)@1skZy^ymS3H)WsZeRr@GWz0IUfPK$NY0J|{U>%MHbH9iwJr)z=#Vxi!-sq^7
z+ROKzRXq4I6>=16exBh!ua<NqGSeySzf$~FT7HS$Ab&;n7x)mTXy+tMHa#m@x&)5{
zDwxK8(xPOFic}GkiT9^iwN-q>cO+9be<t@aRHx|s56sNt3_!f#-oxJ9%g`rohK5GR
zFCMJ`pCB4ncQ40{EF%ve;m&TnvJ(0noX#Nl4LU@PAN<{!`z{2`6L`Pq>7C!I7=``$
zt7rQIPwDrKiZK&!zG;kp-b(IkQHn=`wX^Tio9}yh^0N5vmVf`!ZL)kRf8BI`6X0hw
zZ{m9y`nrP&?sCo+xg;midopGuyDW?mCGsQkY3QORfdA5m2t^{{5J3X6xyU?6aO64*
ze=q*=uKXV3^Ox+bkW#r^qDNlrSB3%C?>N@8R`>YTrgO?TkyH~5GU{(~p462Jn}LOK
z(cHD9P?Q=6+4*oy^6<rGY;58w7KVd{_AA+xdn&nbPC~Rqnsp@g7^N?CT3s}ajOrZn
zFBbmI{*>_;PC`U_e1?jQaTxqj5$TMRhzHMYk0VJmg!o2}EM>0NHFA7CU0vxkasdau
zlJLV-SRh}DG;fH1s%K981JbiEmC9Yv*rHDye?X&J3bCoJ;;xznEqc>cP0ITpHK-Fc
zM8ZW$buwAB_pKZYO}9_Pb3t}GCEs|mu8N{%4c}crIb1@Y_B~~-omogL${xeEgc>w7
zQvXw1!|1w4E5fdn8rS>=Zf_gl!W?23zq;QzUscFBJ-GQDJes<!!{OkUFxVEIsclE-
z!|b)uBl^(deVeVj_g(c{$IawUmTCtsVa)1NEVT71f>0&QN}W;n*BH785>3PN=#(VP
zhvTW)(Ov~i3%(Y@=q&kk=LuhC90~l4mpXI9>+FXb!WWnep$3Z+4smnnR>H<nLY7RS
z4wmL99fSUJkxSU?bowvn@8tZ<?1qu*Gh|}46?A%d*9!yoGUd55mr2(BCG9h>9%Z%<
z;>I>u*7J$6iV^T4jMie6e73SKES@spXvObM_B%gr3VR_9H|~7!dG<?~SbUpmL^@|N
zAZG7mDQW3Ex3FS%a!q_!R;!@y^5e~{?@{^TIuVCRK~}LHPrRydu^F|#@Qm>fv!Q5$
zF2KX&IB%C87aKz|l;Lxx+{8#DD=Es3?&8s<uF>E@fvGmubDj^<1*)tU(ghUHEDq%e
zm(TKYI<ORv*AXJ}?w|ldglfc#Wx1BGh5)!rH$`zk(1CHsMOgfm^!se9t-0#1QRY(D
zbT3dO^#j|^fC=R-@UR2L&G#2ky>^^xb)WWwHL^ivtzHdN&4p@xZzvL~orLSBYPiH{
zow#7$6U`qMG+Fxm2v#^3DK3Zd>4@LL)(1W3T~aa?k#L}Po|?+RY+(Hrh0gwl8^wtx
zl@WD7QbUF_YyMoQP$L^yw&~4l<RA&ceMu#;BZDwnU~JAho9zjE7Au4$i<@t1Tm+Rs
zOI4GI?V8APrDoQr$BH`j0APd_s@?aEesui!@;A9Zlq>5x_?zGHzh}>MPXEP><F;L1
z4Q>f6uJY^p4Gz2>lz`a9OtRsqU)KtBg5ISm7$}#q6NjBXNxO{sy>vnT`QBfmp?^}V
z8KRoBDnZx1Z;>iqf)0y%&$znIf}1UgWCv~|+m}4FH?1v_gJ7MtcCsc1&;|C&+n(!p
zzqa-+-%0e}uDwf=`*pJLzl5reHt)lmck!<k3;w=|(;urDqs_S5t{v2TcKmwY>vY-G
zLh1iXU)t#P?oI^xEqYvC9W2V+>v(&#DwUpNUlpqlzMU8CKL};?PIPsAUow)V!XH0j
zR5F4@=Vko@K1U%jkWl{dhv~eo`IhHpKt~YPx9jtSPe?*d??WvUf{zTPCGZa6&|c{i
zujR$UZlNd7N8|E4<4XOUT}^Y{u&{u(?Vh`gFHpHiyG~=BdjPd_TD%=v_XN7<sxLX1
z@o@Ryx?k!Kil&C$+G};c<w%Q$SwyEc<nZI8j~*GHOP>t57u6Z>?f1{mX1D*B@SR(I
zc;7bqEcbRYbkD;*Y0AGlYvuQTEYgDixXg3Y+;bJD-T8Q`H{I0S^(A$%O=X#8!>e@i
zY+nnTVTRIzw1PdE?QtKRh3Aq-b?u_lzZZ*8(VEZP+E;^R9?gEwWc<7=)ci<}79-+w
zf=pzuXN)H6WYX2=+S8lgNj?n@{gV9oqo2@UgS>c`$;P1iIzNYV2~V;ED%x#FBu+hs
z&A4f4wrXIaGFb5Xv!t(XWh#k%@bS9&#)jecD^E26mP^NU`Ygi*Gb(lL%Y%@C$D6$@
zMG1u;nHMfF<+ya-hhG@q7+UmjYwAzx>c0fuE#=dU{rW$iHD&7Ynx?Ua3wj+s$O5$F
zgPQVj?ELg9O%JEQBSw3vb<5{dK0v0kQBBz^&%qp+g^W-hvIqG8!W0Cr>a5NUG>Ton
z9dMuS!{xpKj%{5t{y!4Y30Av~KHc+Ije$1`wq?z7h>88%CmtuEa#sRZ$}jBp>_z}$
z<e9sxC$|T~IicTpZln#b{xO;3H>UW^XH0AV(L7o5=wZ)TIT~Hu_b)k;bG`c6YEUd(
z0oM|VOX&VveS7Rr-m<;y6dN0b@Vo;KJFH=m`Xu^s+R}{2=C|fKvtk?r+g*GYUd!~E
zYoD4vmIN!nZ3nK2)0|o6QnLGQPMiQdsbwTxnJ5_fbJkM--mc|2ZG#t7ooye}4Lg;`
z2RVrb^v|^)%c*_lY4oG|N27K=CCOvE^gZ>#d<r@%(`P8{QB`N?LdvfFrpx6!DE_7Y
zYToEyV{AD4<j|~2_4SIZs?u|Hn&Clngfn?Sy~ZDS$+zMX_ZOFlKWu;HfLC&$S(h(^
zXOk_M`o;M`P;FIBZt0$*$2^<r=Dp9ViA+y^pdZ<d0Sr^N0{wr`nEcV7)4pL2{XlWU
zy242imDKwEvm_dzHN^W10QZ^~+*Vyn+9p3#K;&g|pW-9?Hv%P{O?UT(oSHj>oz~Rz
z-duk=(_nR+^?ptL44)eM(FA5d@6x^8tdQ~?RXxMpEvoYB`v3(KkmE-t;_DQR$eBp%
zZ<d!D&TEo!Y^U#t<a}logtb=QB=<|aFz^Yxjr^R9qE1cx*zJE7K~nx@c+TmvqdDnc
zD<u0_$kSQ(EKx;ALM=RY2kS^_cfSnWoGpclJL(TF&~Aq`3F>o%CTZ?35d7oX^U~Vb
zm%q8ngczcCYVLkAJ<r`wC1zM3?s#w0a`$?$iM7e&bEmfH&*ib)EB|7TuJ3gILOFdZ
z(q1@&k9L(d1ROtT5HiiJn;zNAhbMcpvW}{G4b_OT6VZc==wC8ruhDP$OUGqyVlpGj
zM`Mkl%hrQbef2AAxS*iXpXw!y`fsMrgpnV(H8~!{QijammYUhVZ2C+222C$LQswHM
zRA>s&9Ovx-90N4Hre~Cn73;gcPJDR_+p<JF$(5OBQTnlV^X$q_$LdWK`>oE_L;I;$
zh2_z=^PYB_U-$Wb91T}Yf_jV2$g5Gp17%GaFM8WqJ(6V9xWlEpbRu1=1Iq@PR-|7u
zyiR_xnrdoGzB1wjv0xzcywAkxzh$vd7tj#SgB>++2J{-Z7~(P^)PzU?I)&7sA7x-x
ziU3uQgRx`xm4MuQv{-$4QE>#+K~xA^T?~tgw$4HVKtOJ8oF>#6@QGQYA3G`v6@ofc
zml~290K%b2eN;9yD}|gO90(L85H2lYZ=nqXbOXXQ9GDCY^cArq<SwWgO}9I~5NdVC
za2&4IRTK!dcNnVy5Cce^H4G~S?A=nraFy~|nbgeCPxsjEI4d#2BqRVJgcN0FrLL~T
z=z!G~<%ba<KpGBK_a0!ZaYbhK=~e(GkoqWK^bXAl6&r<MxB#Q-RHA?sQL!Na0bV9G
zH6GP{DnK}Z`kruKN(vw)WfVd#Rz0JxB_z&C4#kdxiwGeAO;Ge)Q-*7Gv5|nr5TLS0
zU&HFo9;6a$m!*Nai|sk|XpKU}#RUY&;C4_~q0-9khhizDX#hBKltf5CJS|%=8qS1*
z!i`~o2_vv+m>mXeH^mICR5C2%hvD_oP7K!yj>mTtRo_Pzn;Z9+!Zn<$>_vsK4#uwF
z${DKCYE5$^bsA6)1E3mb4$~wT0*6<RA<Qi_#qs*$qOCKj8IeOVFLs;oAk_NmfKMdw
ziS#>^bh<i^6}vq<hq@wOD$?4FS|KVLkoq1W>Vy!53V?rU=mN;IpZLP|8ed__f$9(d
zgd2HZQT-15gV+DitSp<~JT0FC=WJ%iqpm5=Z?xW<5K9L&5pvC;zN3#bto})=kI`@i
z06>N~9u%F!j0H>_CXQ-JNx3rwKu_DIS)}!okabbxYf$TlYv@O(n^{rHYbk1ViIR}@
zwP_e=0#ZfsqV5Q__yF?CB*@Bks75wfv^|jCKnv6}3!bnLSH2^}QU{<>lEx*dxv}a>
zXZ=cC>8JrzBc+8JL>6a6MNj;_x;zz5kWOgCNC%cu<F$1u;B?@`+6aUZ>roR^>aIFI
zAWS2G@d0Dw?f6S5N%3IHS}6)-@kNeH@C3tQ!dc_v(i-z`pMSW&s*CtUZjW<u#$eFt
z*-%Yoc&bH`Sw6NU65&n4#GMTQYHHl$LE?1b7_1^j5o`znP-kgj4RPk_<I|@1CZar5
zRq0Lbx!L(DdsNJOVGfl=&R8;34@M(iA7yvB-j_veB!t8Ou+<ZA1$JjESS_qp!w5A6
z?;+>sM$w|oU_w0YqU;2QZ5XYV6nKxiI>fFuAxo57z^%qW|7+CUb|fI^1ykcW&|*u+
zO@6sr7Vo_cBgvvLu6qi3Q|@`z@P<(36Y^^+HH6FA34#qLXg5@EG1BVWAkE}gq^tqJ
z;VG1qr2<BzAgs9sHAE1NM8oyr^5Fnt##m~~jk9?l=c21OYoa7<#Wg|3=O;gr7+@yc
zIh)@ADwahIp%P9#+L@`%^N@jXgaP3401OGWJk~A+qNu2qPXGr-D6G5Y(B|_v=)&!J
z97dhv06h><s93=RkUA0qNE8Jiu?~=|*l4RLINp82dx|M!vDC_KT77-JfXchCigixc
z6Z_N;eJ@B}<wRJU4HK_2qRc4%4B*eUvT&{}r8iPdbYn;@EiIkKRr5R3PP^5Jxwrx-
zML}soz%-N)7}b}hTWrAz)kx!KHqSOsA2q}|8>x^MOw~{^JETKOXUtTD(&0*A49=`Z
zlncm%?H5y0?ll}2g5t86!S)6s1YHnz2V-M1YaBWpS6$Fgg6~$VhiyZqkbtMnRiIk;
zNXO8C1pJ2rV%_|t)c`VUIG#Q^31HxO4G_?qWv}4`BG)j}%E}T4XM+hwW?)u^MbxRB
z=4SR`)a}a17UbAe<)VSxWGMSMoTIcJ0R2WK{hh{zn20Ps2Nat{i{U00<KxaG#)Xqc
z=xG3{!|o|)ATjLu0}@d?tO&Tus|k>9*B)`8%wNZ6#>-QFw@O29pCex^d4F|=)m-H^
zZ+ymhnr>U2^M%XVis&N>`LFMxLzm=qdiO7OPho}4y&saBe)PdAF13HXI}NH`S*>df
zokwW)0lrtv&RNNZoBY1GnGgQHCfDw8^tmjDx}|kgM-qbh*u}u36yb)r{hHDDm_;0T
zy7gBl@7)tkM44q2PEAI6)X$^yG(Ql=>gp0owP)<r8&|YHR^e+JG%?b|j4UrSj3Uuj
zR?(gF+i<Xgv*KrnEuRxPy%Ar%JWM0(1IwqSJI6Mf*nNiaBm9ou{>r#7{43o*6-8Yf
z^%Gi#Qr^oopDJlo$t?JV?hrrefdaZ2TGrd9oNVF>xU+I(^1D^q&BiOjVrVkIPHB}J
z#o7Jd{$TV=7h|raC#GEK^c_i^u7KQ`YEg=tGW|8ew8!HSh2f?4;`QRSCZ?<=>uDzH
z2U7?HPBn9$=b>Ys_RVtHa;gfX(UFn`aBvW-L2R}8t+agXOGgbQ2;E9BmE$#ys#-Q3
zRD_s~>u58$ZaD|QJ5PxG`>}0dh|@YOVVMV4WPT0!qf+wR{OcT*Yt6>%7*Yc`1g=O;
zO?P=bC|Hm%3W#$VHI=ZgnP}K>NsEvJYuSnd6qv!RS(k+GM>$xoRuk91_*P3v$p4^a
z(N@l_HHhOVom0vKjO#N$pW#_q_fLV8b-AtD(A5{4kJEg2`wZ5;=xXhFvuu{O;W!wt
zMv+S5utUC9bTT!GmXUY8YaG_8NK-$^-7B-zH={B@vH$$0T{~8a3GQ8xgYHN8P)I?F
z(H+B$+S=z~Z@=Jyk_dz@44aAphsr6rdl8$GU3Z4J?8`TwCS?ikK^>k_lXtN+N)Ruy
z(ll@N3X;tzU-)?qAY$-KqcQdEUAZb1;fQ6DWg?n7!7<+I{f~^Y<Zom-yLLx{dHu`%
zuW5qV4=e{o)=AdX+0J`NAGWV~UPnwmT;T2QUBnO0dO;kV*WC+<VTALVI4%>}U39(>
z6=id1(qH`WE56)eze=J^pmixo<UkGCO)_Zo<-SNXe%KN#XL-*HRYPdn$>Ho+?&o(-
zY*mj8Ivxc>>$c9(XOZ`0Yzu-V%B1yY4HSlglTcQfJPxq0eQhWascTl+Vk7=0H6n^r
zU#XzkfV?{NN==ND9tC4b3_qn9GD3$#5)9#(g^+xts6S5P^f`ximsVg<TNOPG(aW78
z)q8$i<fl$K;$+}g)6DK{Za61heMfUrttY|(9F@O8`>eXB4_OoIzxq<JyVyx&@LH7H
z`NczflgaC(Y<haB!XXu|^g?1O<$336fj!Ep{FWnKetxd~0DkmIwfPYboLh4SQcCU_
zMjDBq$;hRj^tokAO)azzw8~?#x%*t^qwo<MN2V^(eZMvzQ>m|+L!yq>`tMl}b<6Z7
zy*SkF(V5z8HD_rFw~<98{N|rYT8}3!ONG;`GSxF})rzR9x8F5lZsbNF1P8&?LO|(P
zu?hK6u?a+y6H_gapTB{S$L->s&1NwCn$m6>YrJK+nI!1<i8U8BqLvIHhM`op63vAr
z5aejLArY_1CfTm+^PXO}uQs#!%^QZq8?A4q=gj1qdQ%=y@_IeV$|iw7KZDHAFTQoC
zkoF1@N7&oyW!ru$@AF*QbE{&J9Pc4lb*_b!4VnVOS*Jw=WPjUDcEjEMMX^xURna&=
zV!~{+w)+7zEHQ`MfmsNBkUlWblm5mGQ)Us;>%zGqC5ACFeG>QUw?`FrHHU0-`I)n`
zH%cU>L!z;YWz_QAb6t(^*L|1|3r<?7oJ{|lNW98`NgcCMW(JsCi&00|N7cvSSzP0y
zgrjRy`O2>cxy22%;=m-CZtd#1oYlB5<o%P3BDT2T^OrkwZ@g;Fxs38y?gzhgR^$pU
z*fRlFzzZC(@3~p*`BFO6c%6y45rq2USOXecgTii$$21!X;;SXbrSqfDlJ?_cSdy4}
zBYpg)CoJx26n-Z36TJAzBb=8bW!>QN+h=+}0MO!=Ra?Ln?e%umNzkq+3zsjcCaD1+
zRMTwHQh44Sp;{fu#gx5CV^WXaFxV`SAKyBCmJ~uibmPtY<$(cKr>eAeQ^@SD!J;DD
z@6`7b)Q5y)Wa0I1AdH0V>X5Y}Xd3ww8lGj2wnxG6F5c4DT>YnPmUt(>)_MJ9t+$>~
zy?y=QMG1(lUi)R<h)&$%TFnh(LZ9uIm@lHB*{}Q8N-1)@46^uVKXeAr(KycHEgZM<
z*gL}S=JEW$AF`T$RV=Nr#rbpAId}y6C(}f#@fR1i43{zWiS&{6k%c$`H@V5V-#qV$
z=L`9Yx7R%@Rt?_B(MDj$=cHnQq<oPz(R*WA!h!F}I&igda}G&<L=D54s`>2OOKH;=
z)L;sgfMXY31768$tPtb@zFXT<oFC}}KH5|bb$bVD>z-U)P5pTy>VD?%lveYF;FiXA
z-An^wHkj5UPnQIm>he~TvE`q>nQz;@RvNdx`f)#p2bd*IWJLOLt$X4eMcNc`Lwj6B
zzx89PcoLX78^fhyity_?3gTpxFY@pq*?=}Re<zQx4opP4TZH8A6Ax@@)RDvToY`2T
zulf8kTl_uV)gwo_RJzh1tRJ`h?Wyd<r-pb3@@+EAbaVqbH8o#Ls{4iTj|>(2^$W<1
zIWi1#i9o2$W-gI2etjhlS|tsco-C=)jat?|2kmaIn?*BP+ebwcfuz0%z3ffs4SbS3
z6WnPd(>is<RvDy|6WGC4F?5z2(*Uk4tsSrZ;ISa(o14Cr>C^oUm=lAzYjiRb8>0Ar
zCxNL3<c@u4{@^`=JWcZXRn$xuwaU)u5OPYx%w`#MstVJ3D9TU4MJB#x33*J=`rcsV
zn{~s~lDl%N%-M^$=0-8vT~i9t3j6=|d)#B8Fq%g3W6%hZkX>S%5^0b?m4sBoH?7mL
zGp*k(<>F(~eq|M5h`1>|o(4DJ+}<_&916b&0f4CZ{52iXb8VUab;cO7^tLDLe-#!#
z9zl5hLOMn^dEJS~Cy*w77Gd?mD{Ij%0z7EGmh0H9Z~gHVi3EUO^RrsI#x>KG<+`I|
zO<S7Su>HNrJpW0)Lk4lTvbLb@8gPBTRo=eX>4@-b&Xf(@)O;|A?JlTL>$w#noy3_T
z$B_77*dpWJ2<t5JOMg$+aZ=5GP*WgYWR#YkUzxK)$*6i7g@71<TJmQDvz(O$c|-Fi
zowquw<l737DrG}H3io-gknBd;>lF{3Efdef!aH~B!G=9d<}*Ki`q+LdIr;Q`Tj`sG
zVlI~3p@w_b3GF`pk_Rke&$&v-v};Ob>E6B+8BK-4hx<Bryl6Lj8*|o$UjBH>g_f?C
zP?8my{P;FCH_}-{>fWOmAq_o8$wO7=;?uQj+7*`@iC#q9H`jSG){ePlo^Qj#qpG<4
zF2BtbRYq2RM+w1bYy#wu{9(J6vBKRki;~HwM@(C)_tnAUa(F*bxyE_)y*A}<_2%b;
z4ckAMl#|Tqz>-gEOs%DdcSp5()e3z$RXL?9{S4mv0PY+6`IL<3xrcpXl7755KlG98
zi-l?qkIby>EQ=_EwC85=0%(X8AmHc-P5+x8i3{C=d@HmQb<dhB{2>z|+_h>T*<dFw
zCh&ZZHw;EQB)>sIOfI#~#LH^?KX2aj1C{oHJL9XI&L19kK6ME?%28j>H?W0o8b#AI
zu{Bj8yd-m35V`ge?vQ-IgWP$3Uzfd_sZO^Bcn!<LdnOqa6f)Tr747&Eu!jBG1P2N@
zz4OyUa#a^X{7+!{4!5$}snnRRZrr_kHFP|6U?=YIMYBHZ3w@ts$Zn9n+lg8mLtg5R
zLhqb@Qw5hZ$q5@pUWr#8s&6opjmB~g{-yuq=AEh1ruzHG&-C7$QQerVpB>M3tGs?D
z?aH>-QeRLuUz7A=;<s5Ug-oa4XC^k=kFZ(`7avKkzTwn#q1rpr^@1<RS`Bm!yl%s)
z*0OZnWxUu&R!2;#d*?iGs^=^V^TjT2)|F%BN}A-wFHW~hsfMdtgK2v`ilMBhLUS*l
z`my49-^<kUzy~!Ft9iR${&vm;zCS&b5$|c3V9CgX9xqBw(ORFx>C|u0%-vUdP|}^*
zs^mZ-&Mcl~Ti}R8pE{X~Zndjhm5VV94G}w|9QE%xp=_Nrx+3EDk>j7q$>`YW5JqwF
zqb!)lCKH(UH|-c(v})=GJay`T*PublkFBt)EjilEm3rM`o7ywj?ljQCS?8IU7vPjd
zsoSR6w!iMtyRqO~Xb|3u7esO_6yD+d6t5_QUVvEM7&g0$O8EY4B=lsfg?&KXF$~R4
z%AYbt8<PbkN)`SA>Y3bB4qVk-RpmCH44+9H?Xa1_ZV2=Ku8N~#Z2oy13szz09$PMd
zyUsom!)F}ros-aa+&h0J8Q|?6b|ZCqm|D5S^du9ZGrU9&hITj9flEBqo)98}(c!hP
zmZr)3jy5~fz`OPS1-vGBFY^1s5_*cmuea=t>XAiGNfCN?MR7yzSP@c&pKojGLO3}z
zjms=_yz;raZnlMQ3Zkys4**M&<T3jX9*`&Hiz#bZpWnOa)P&V~);JloSTkyBYC^b(
zkXp5~&SGrK`71KrbBG8%Rgy?jZc@HBE#^q$Ss1B4A>Bhdn^L1VEfr~^9R`d+3-H03
z0!?X!CT)f0N->^5F+V5H(pW#u)h5=B4^=R1M5l+WEy&r8_(aPaoeV0T^EEP&95CVL
z`9;r%6HM1+FBE`%o2qs*uN4*3pQ%>E|N6zyzIHask2*87a9^%Gz$C0Yk#XZa-d$c?
zJlk_29#|Oar9wxP;`v#rUPf=~g)N1pT~3~(^^!Cj-WH^lE&Pz!N>)BM25qxV%YfO!
zfQk8wKaJ@rXyi>VocmnY=Y*vHy-j$+NGzxK`twD=AIHQRSjKd;J}%2I?^W8#<QL1N
z(>(kUxu1qN#ty{=-cL3DAf{MYbVm(@Hx}BtU>>fs^k0?JGD|Ic4q$7bi7#(7KVa6y
zX+kF1i|54~ssb`r4qt(*H-FK4fk<cj78?Qxq#O5{$fT2|Aj2Ofe>6WO>+G36dlZ*{
zjK_A8;UUCIT7ccn(xNxrtCLVm+?_06C`bmD^Ugi{zM4t~;%rZOLG=Ck^L#AUy1%jS
zu>X98t_C;^pAVYgxIaHXTT^>#-lT8opWz^T#PAw@#qiQYdf>=)|C&nWJFSVV@GAXW
z#C|{?%XhmS!wv6lU%GW(ADY6)RX<8!GA5^4@TOdT)8T%gBXTIy?>jz@1F1{@SuHA-
z_FD|e@GO$K8DXWv=i~t~asYmU`#hBkL}StQ#`Y-lG4Ftfx!;dv8nvX)H$AggcGRWM
zk_ztnDjhWEj%eS`2!BXnC7ZJ@i2fAaB?{$>ozTyhgo~F%s7HSyyBZ%Zx6O&%2!7^0
z{baFNfY!p5*_K((dN7Z5Irc!tg!4Gyd)Dkz(e{-HT*Q8QMfUutS#EOCM~PurLsp)S
z*P+gbah2D}C5O)KYwB_5QlAT>gFl`6>(HPizd`1_3gaR2>e4Kotz$b`PgTig??t;^
zrDBzr=f&1mfd$&Uifd%<V2YW1CM&1U)fcMYXew$e#(X6@J4I%z_@tM_`uDeun?`Cz
z1TeHAHJs5OUR(ehe_{nRgnH@SUb-gJl#7fT_`dX&W%<DDPEg1t_;sSnxCV9nifiiL
zH*XS2wrZ(AwN+%_*mETVUln510w&d*;~=2a)~0+Y_uR?b?X!Z5Z^4_A{mrj3G;{Po
z;x)pBZa(Qe*?Q<2DR;qCjJJe{t!7Y$>(nuijbjSyXV1tlzNQ<7#vCt~*ki=q-SwJH
z=Ci0h%DlbPe0H{NAF?F6nmZ2*d}aqqhH0HLv%G!l5}TF(T`%gcfo5Pb*dLIigSWvn
z!t7?fbfxAiAvV1)jkx0s4bokxsjJ&)f_~Do)gp8n=I2K_704J)nN&ZgI66DoKi(Tu
zc4%mB3KVo+ur&E1au#4|NkT`!7a9V|d)49uu1zeoC-yBP-3GnQ^P07MzV?=DjiXMF
z{1KWKNb^<7ce5jFy{WFI{BhD#3738hPgdF7%f2KD;cTuqH$>EsV=L!aTNr5-43QKg
zTMls_aaiJ^pw~Y3{@@ZA$JL|gvSw6cr1)kRoxi{xYw8|ELae%-d*VhrGgFR0DJv^e
zai{b^7x@J3x|ddFL8{-!Uv4-ixSEeL*t}h+w$Cyjg(=pVa2EYq{GOxZdmI`HCC<r~
z=2ysG{781%SQIz2;SpdO=b*d+hiK$X2s!#g7~b*%2Xdyjz-IzIM~}<>2gLwU-P|Bi
zhvt0eZ_^M#&kyGk9uJSCjf$*%zdqJVMP}7uDj(V-<9h-tgB?!30iWu6|E~6l3DuTS
z{p)L0U_DH^N*O^QO3)~w`;t7M+TAY53xC`N-!4bc8|IW)R`$ieIkz*Wx?j$FZIZO$
znl5CMcXq?Fxm`8Gh&M;NMO~6r?MPHnD<j;Sr%`;WH{~!Vcs)kX#e>CW{q-lEKtCTH
z(%PUKav$T_3EfFEf${NkWU+zAGt%m9Uh{&4Rn7NoQ(zm*PI^PjMw<oY8fpCka}B0q
z^PSVYG>?7^pwSiLX0a#j8RGxwWpISH8b-%!28I|?-tO(|-cr3KdX+RvkKD#Uy&mo=
zZZh>%1k!Jx4-2h*mK?C5T~iU7*2jOTNsFtMGTp9WD%#$8?~%pr(J{kD@#?c}yC@A2
z-rJ@gqAI72O#-g;y5|wR;#FC3vIp6;trAu*>vt&6+F7au->_0f*N71lNLN^+98)Vg
zEhwXCXq?<ntsjU6mTc1Uldhy_6of-w6*ZMC{55xOMkC!WSi3tQvH34PWyi8K@$Cy6
zC<CS$>8TSH;7>w4816DT2`-&VnuqHcEP72FkgMe@789o)_w#yxPlZ;@7_?!;s(<`b
zd;v>QNL8Ebq}vW|$)DMsN6LcV;sx-*#uC}K)N8nKv(0Ze-+c3G+H;$*FMq&G?&06p
ztIeGCTqAIy$84G8n+~;`75yxQ6zC|GY&Ki;t8uroh`|TvC7oZR>c;uTqnJ;+E5gUR
zU%$>lqkP`7o;)3&nOVra7*CC^O{|?Y%W$f+4Ikex5`nU=@P7M~?RL)ip`yYav7QWy
zTM@la34-9q#j&(vS(!#&F7?|8tU<k((_Q%zTt6_Rdz)FM`*KbwPUfDLB)+9}mffMM
zQ*8}CZm_TezuaZ-f2BIJ0YCtdh4LU=jk6xiv6wz+$8R!j@u~Q7bXJVH69;!;eM$-(
zY7+3(vz(z8<zyUG^Mv<j+b+C3=UT{G9?`Ds+CIIIqgmQAwiVVzFn!+K7Myfo;9;E^
zWG}O)wHHSqDW0TCSY}lBGbm)Udv<5{z+aNHNRFeis{C{5(pkMnCl^DPEck_=2eR&0
z#ZQ<_XlRQ|CP5}7b?MKk{IWp)&hr}_-y!YLd;Z8M8p_k00w0#&D3|6aXzxSOT-R5x
z9;sfw={p!<*(%Cfx}vaT0*$@htx}PKjlcfRe_wHb*2v{|ekC{0oA_|jZRy5QM}cT8
zY)9e$Anh%H>gu7kQLF`8ikISg&_Z!5?i}2;xVyU+C|=~??sjl@EAH;@?(X;Wec$i@
zX8xHwb7yX{&z79*$V#%3?5sSiSk!4^R%L851{8uA<RVVxHmG6BLtwPeVG6pA;~oW8
zup<3ZM3A)Nz}`NLaQkF<K=A{7tr$1;&^&yq5aM1$vDok}HnV7cQbZo%q`=`lPDNGL
zVD)i=F(zi#)WUI#CpYR%g)nAn$N4WB9`&6C*nnn|JAxZ(s(D4J0Ex^KxbD9>VK|BL
zm>XGv<Rn#NPE~T^+J4sM0NGKQ!PdRe)pT`!$<kd@sR#LWn05+G@vSPZxG=YZ6tw@t
zJ!qj3ux8q(<yz*hoR3?hJG%IN%mI@Nu+^Ws5ftQNTQn)0mwCFs*T<3|;rId2cnR}a
z>O&`aJ=f(7i~N976@nnJ@k4DpdU27OR<m%_Ov#rHKv38hrYvSZK&Z(uLJnNqDl$*r
z%(u)az;Mswjkeb-I$oDpiC<ESbpIt8Idi_tLNUsuA4tb0!zJygoqvrY!<ceE!1pmc
zY0?)^PKgl_CwctGQCX>ABqUYUkvI8x{Lt``psBa=qVTYE(mL*(%Myp-(E5|3JO=;a
zKH?0rJenTI*M{#^0WpYLaI?Wq%E)SgJ(+<Yvw`CPEkrwV8*jpveAy_-ye)6j^FiyX
zJY{8rd#o_1<(yg;0P;Xc3kr3kgmTNY6;B)8Lii&ge2<w&NlpnP7HlgF;sJnUU4KPG
zPr%)!XH{PMFA#z})+2RKlSz3(D2s^TJj7FiZ-8Wr!iP9yh=u8mC*qU}P9o%#t*BN2
zn9jzz#+AQD*2Tp|63PWy?#Ay!Y@M+YWW{E3$?DokSs_gf?$9l{{Pzdy&ecvRfz#8Y
z19uzQ<k`93C9`@hU|k86Ok#qDHGx`XIcowI5Pup-X5h&`$9m}$Kzr*)N~}wadVz4>
zi6nR-#V*+X9V2agyQf|~?pyrn`V0?alY30$w`WKE$udEZiAZ!>kynAUnTkSGRBjrU
z)Xbl5mbhq|)%$du0`*Rk55OsPX3dY-G%z%<x{d%{w=fDEm7E+3I#I?j5koR{E<_Lp
zF8oCI8(Jrc6jBFC-@>KFJ$U^L1}IF3mmDk>sO|oF^*9ozWiLx>Cn0>5uImN@p+V_!
zdUe!Lr7yvXYhDGuvQi~5x8Qat0kdG`rzxx^&4A|w%^&8}l}zcRzvs0w#gULp!S2JZ
z;0uDCMaktzNkn$O{A8r0Cpe7{ZF&bMfQq`Y@9iXD`&&{tWM91ZocUs@a^<?*{wSb$
zp|A>cS*c&U;GlrNr&V6y;in<dk|wW@q0~$Zbls)3PO+ktT+E{v4;gV_8L~K#*j1!q
zbH&U7qQ^;O*Qk@t>{-=4O?txDxM#)@x(_79g&W{}q04ok5u-_U&{CD_6Y3Pg=j1f(
z{b~qSDC*v^w&UF9j@S()1M!+Ia%fuB%_!I9KZ#Gtiqh2&hwQr|t`Ih*C!O>f(_wuO
z@xT1}Alof#QqfCG@>>`+I6weR5c}CvmICdnb1=a8q*NNiy&kd(S~?f5V2{V0&mA;^
zMbq=Zc7rCS;kTq9FfmOPQm*lMWUuo0?F)>3X}P-$rmKLeA^*ucashWz!l2pXr-Y)_
zJK}U>C^xYC1lQd7x2+~#_^9j$aAGD(q11f~YpI2jYC)0+rZcLGZBDP-cj?>v^Aux>
zPiAXoBhjWC9JX8b(gUa5du(?YQa75F)&1rkJZ_1(eBuRTH@`l6E6I+zEm`%t^q!v|
zd>J{i%Gaxk4h*HhuKOA~q>vQIFRxVFz0qrfGslKKg!jiK#uay+CpSi}dIrTLs^9Ur
zBqXaCRt^4ea<wV;7jEqRVQsFlgy3%p*TX761DhBnG=ppGT~*1SP}8dUV!!fi2RqvS
z9%Eq(2ES9g;md_-?4{0@5hj0dq^%nqVNhn{WM*C-DOAWW8WF1BlhYaojEsq(l1WS8
zNt;J%aB%sAjZUnhG`SQH>5{V2DWQJ{uZfuJzO7y1DlZ88+)T^;q3S~#p&(-OX)Da)
z>X@hR&_XJ+#_7mJi~Srhoro_YmD$7^-pyJ&-=<^o?97|)(ECR?4hxZ@D_ar54xdAM
z*;d=b(d6S1hjAw*&c{I57E?Ahyq4PxGFjw>Y9UcaM#A0o@7pD2JsSwud$&Gh;#KS2
z_-!&dW{I^ngsfU^gvv)}VgrOFXMX`(@*7g=c^`ZPvp1;X=p?lSfVTNdJhUzJJAY;P
zG@>!%D^ZJDa>5U&MU+VG>zZZC>vOoZ8-+!(wy@Le%keG0V<wa@Utb^ozv9U##F5X|
z3YKm<gGgt0Xn0Zw-Iho*sQ+&~nFq_$B(8Qb1BQmc?C>03j&fwGNv_(~Gk1-{$Sw@f
ze{y_(ky|dsOCD9dRui=5PwZ~CAW2-|O*IO-<LY0F<b6%HsIw=y*R6-=df>{pmkqf0
z;%U=Pukhh)-d<%L)!}4!v9=LCg-^MKejZJ7g_}cm9^+GmK-XADEO<vUb8Dr|&+4c<
zr0F2rX5j5BwroEpF4594{v*p*CRyltZvd4D*=rv`XvO^A!0UJTm;f8MNcdO|lSoM4
zstG{%#B~S%xw(3%lVD=!Uw{`rZ%Xomi-bIR+gOQ&yt1bLlIP;KGs$vp$A-rXh-BTh
zYysZJi_9ha)>vPDvrSEqH#S{ydfETMosri5;xL)i^FMNt`Tqgpj1|*EP2!)VdzTX|
zuC5SNy$~83QHx?iO6bR)YF8>{?<3|JCvU_5CSIasmRr#oeqOl<jkMcF8}?w#vRK#*
z|MnjWr!sPAHA+@xZ~a#VY^3Yl)g9aMA`3ohOb0LBK%X^@1zIiivL?)x*V%h`KHr^;
zK{*Pwd+tTp9W?AKu$|<`d*j%R<^GTCpOQ*dsWwDf;(C-C*gc&`BWXVKp+00$JWMmT
z@YaEP&ob2MJ8v)R|4MPT(-M^YQvs|4-iG|QqxgdOVxtvyPKF!%6Z({d?Y3@gxS^*%
z`!m1)c(HzVY0HUeXUhSbDiv~LCH+?T6hH!kOOy(P2)?1{j7t0TzP#yizwN*J$hAJP
z^};4~#(bK<)`RWue~QrlBMsR`BNo2HW}N1kgm1J<p@8p{4uWs+#(KhQQ={8#mt(rx
z;ihq<%N>&H@N_aYn>r~ii0!uwKY;K3tyW6xr%<wK=lL>*rdn0*bSV4$9woMjJ}b^H
zW6lQEQdJRO$$NKmt*F}UWu)sI)}iIHuNxQX_JmMaHOom|aZi@J-*=^oV#|GuKB--{
z>x$f%*K`sSYV^_|MT$HVelc*{BjA@H>?PrD<?w}dLGk>`i{rW!)n`7&EQFw0ffaJ<
z?+lUVmP;p%>fk9AvzILUdjuZK8?g?)&$~egwz4J#+<invxJk{1ee(@oJR_IkmLo|7
z_O3fRoSw8-_nDfO;@|Ib15UIbs@wE2*^F<=RdU!$CJh!O1{!kY8`nGh>~ZCQjj+U1
zJh*zO$dfG0W2IasoKtcq@dQ|511o@R%n^-8lkQmzMOId7Jd*C<^s`Mzo|yv~_k48t
zFFcK^Y+Jq4;7ZMgQDT?r?QZb0X3P|hU0oU1u(yF*de^-8hYVBiYi4FIQl?2oDC)DH
znWDc)l{#Ko=Ps~)ED8|#VxAgKD)t49)pU+t6&;S@y|-F<8tyUpPOSqx*Qu{`5&Eug
zMzcc<<+%&EyaQ^A?buR;VqQwxgdTrzw08w?#JQ8J_Nlh_rUkgUL`;{(%t^lT?z1XY
zw&Y0*8jkepqg88VlM_9v#vOzx&+;;rZ^PU4qIB8l<Y}J9-2be6-dh`$`m7W9$l@iC
zJxs{|N;F??-r62{(1ZE%-T&qN+3ul1j?b;d55~vyH`%X9wSoG$3G$_Lv8lG!9(dG?
zgwPZD2GCERkM|G?UK2%l)-JE#s>>f6){d_r&`mGtZJn?K>S7sNs-E!eNK^!Y!$LEq
zO};jHo>rxGL(o^UTyl+Hr$dRJ`E5$f5?eE$(gyEyE_%go{3%9Kqi1}gpHl8o&`_Og
zTpFW2=1$zb<@_&CG(tok4#a`XbXqG*9=#0fH?H*^j*f=Y2X%Ms?2JiCX(+bn*ikG$
zE2HyP88dwrdYWz@UQ<3E|K^cwA0v?8CeL+zLwwe&>(m@K7zBDZAN$Bg<m7s=%SK#9
zDm}62xvKF_KWGIdJ1a6WA_6F+lG|&btM(SXF0WAd0|GVIedfAurydkSMoms3T41eD
zSC5x_$085W^Ckz?if-l<fPk3Xc-1ch-dC5A6EA!FOvX6RFRVMKr&b3^;lEv#A{Xx>
zSI)rTQihi)i452Km(Fta!fFKL#K4h*l3pW^hS}t4t6bZhkL(qxe!{sNARz>O=rrFg
z+QuzjGvVE<0||*(cZJwEs_WFraDrj>$xr7#?s~1kz<?Nc&lfuKRKLSl-PO*b%;u9+
zfs>cd_bpy)2i`WPZ&*1J+F9*?CVC?CiZ-3`Dpq-Uznz|*o^8VK<7F7D8!<{L#}9S#
zh$X<UVsxTxy_NvsBNOKKt|jm5?rbG<nww89f07Ci3&7t3+Ok%t7VC$HM|Hw?gXB=u
zuZvyo2lq~P%X*)`+8=YlR`3kINW28wUx%$MJ?M1sirL*I?%kaYdHlLMe6<`=P4~Ph
z#h{o;Dw-@AVLv60+g6y&hoZyQK$?3!tY$r|tz}6&FExn~S1BVCN%H<eEcB6LBq<Jd
zY2{Id<bG`tbxs<}2hb9`-ETG5egcs*j6B>p$X%3bd`tLZW-#}2DUl+O-EG}mc9UnU
zSN7iI@q71a72k}H`f)YtT50-Y^kB^t!gRiLdL!+m%~HgLOe5nTa)TTS@lugpb*y;y
zR(SFL?iL*A4TiOF+1;zLlC3CwEB^s46SEQsE`J}~iqX+sl-O{9@GA$u_*=l2fuD2!
zd?UAtvInf0s~Re+fX)v|=o<&AG4S`Z{bg$f&s89+Ps=m1Tca;TVm6sOeG|Q!LRR`P
zA=I+8vVJTgOoKS>?-!2k7g@x{&i4Fo=~VUb8~8q@8cEYXK8T=9iSZ@ecqbw{jWVm<
zXRuv<r?7XL-<Zx}e1Pk29>$y=yY>MovrMVGJLrOR|0Gr^XbfM~z8Izo%9I340|4L2
zsfhWLm?B3Xf-qX-<d!S58cFp|*zt!OyYGl9mTw)d%MwQpC@|9~4s9u!q*-DJsp#_7
zGyG%-6uJ3)f;ey`t4_r*ZSP)qCTaabTFp|no^`UZPo+F2_Br*Ed63e}#3gs^wXa?c
zHb{B|s2jR|Xupmco|+7Bb~=lYbiKMdG(xWr79x#Jp!Q7vIu<A!JFuPnK!HdTl6d!&
zI>J_vJGMlz8`uwIoQ~SHOd&NEWEP&{2oIRX>LH%W*&APdzrg%M+Nlp{*dCh*`+;Zi
zUV|V+S!sFAO1OZ>bmCxS41?$!aL}~9$y3T|c2>*VQqacF>9}A9cr^r=1vq7tq|4UC
zQT81iNnIjRfJJBbI3vQs3%>)&kc0^KF@to-z2(uV`J!6@<$sW->BZM)G1O2usk7%3
z!u0p6zNehs04tRDISByW5;<LhDwC82+a=MXpPKY)8CRx=ejKWub4(TbcswzB6UYwo
z)I`61mQ_fde*TdXL=zb%H71#KEdBD^s-rkv2<v*GZ21GTR20h~2my^t8|o)bAO=0|
zP#aRYiLvc@4&i%;DQ0GdMK^2J6Aq1mt%p_O>Bw)t2}*vCoZLA!Pq-(ne08?C!zw3t
zeh;elk*>clSbDy<dSp46B6*d4NfNu3uoaBO=eyD6yX}9h4SBuHIFKL8=l*WUH~bo8
z{X4TpMv3Y<8axy1lMPFjyUpGHyI=_TVC|I;`yzJ*;H#5%a7cAbkui-hA;Ta`TcUE-
z9C)c9$X!Xq>j+}gF&Qb?LEXpsV!`YdAMzEl?BPS@f0^0km2Wb0t;-OQ$Y~OJwZDe3
zlJC>JLrE$U$AC~M<j^3BsL=z5@a{Y=UG9lWjv;+!v<<SlBOClW5XsA-N?lr;cC?jP
zbV)Knc|~28=UB$JtZH36qp(e+@udD4i!zszoD-qplnRe$@izc~iS|H;MRb&I92swn
zn5o{fKzbi0t>l+G?4}B9WI(grsE^Gznl6sIY5eCKX)ruN=lagzQuq<cea?>ZL%3Lq
z9=v~pGki&k%|?6uPPfO{$!mV7>5Fk+Pv?PWog=@sL0jKVbNk@icNlSFqT>v{$EAgu
z!UH;nx2CT}A;e#_auXv};LCh|Prt!CVDwT?VXGH0k&p_#c2_1IWme*Ly@aq623-73
z^2td8@u!=+iO9kfHSVmxiKhfz6+a)s`|kQD5xkuVAHEU$%yRIeZ=4jPzGW)NHk2>N
zj-)LUU3%(;-6d>%0hfGaw5P4HB;p%9n3F_E1f(pzV2T`LLLm);ZwW`o5>}c#eUOHk
zzw$y~QH~vbF8jKr*nB`FjT#W8bb}y>8bE>|ELPvd@j{!a%nT!3^iDu9w3@sqkX64&
zUFb9aPviV33Q~TWWTi2ZN6x6omAk@-C*J$4WR!@`#~Ls=xX{#;8zM3;ztZQJK{2i#
z_$jNx3+ZPkdV5K5Vw_IJgSpPm8tO!0mq681?>xc_J>u<4mX(p#>szjoF!unaPNdIa
z3G>%W)7dcEa+XhBh4ABjg~tywbK@RC1-QcATxhT68Jb)78P4MwN)gMMfWWxBMKH}_
z+=F&0>plJ1Yvf{kK)nn1$Up;6V-p!m)y2vZQvB`ih2x~-VKI8xAD~AvSSxI-ZcoMX
z<Ib`j)OS$^-%e=>f|ZZ~Zp98qloIWYIU|E}aU8yekjK}yiMOw}9j`WRt?bOpFTk6Z
zg}&zz?nquRV<g{X(CM|a?4IwHC(?fBT^Cu071e%F8RIR<#pAk&N4r70=7UZ#cfNS~
zRP|Gvs0av4HB<eloXt&I$o<or&jI7j*%tiL(gqDm-t5~b8vG~$O!}-3%L_aS>Lby&
zAQPVLNW|$QR+3-h4y^tIa(Ut$8O~Fqzys-YL@o@%>kL7$pi_JX@4TO5C8&{-1bIqJ
z84@nH9Q$9<0TMtvXS*d-Fe^=aR^-?9=x0kenTX%Q&jmIwo>qJ`v5I<W%n%S~8=^ue
z|GE8>Eo0CVmAE;G?<0U3CthXAk<wf3Vk{gbydJs8_tdsvI6u91C@RCA>r%1!Bog^I
zA-W9m#cC;e9c|tDp_<)5W#<8pLhkLGSEz!llhCp(;Vk&Zl?9_&P~X}W*cWrKy<Sk9
zIm&u)G9SGflOCp0s+<1S=e-t4!iZKGfOfw=g@(X;RG{45;&OX^SxJpZLTNeAyY72Q
zF4y`ov9;O!01$J}@#8se%s5P3@OGW>=4!c|`8@%pbW`Kmom+D?g!3`YELT@s)qB|O
zzYl->vTF@d=0l(0JUq<Q6VP6&W4vTjOSWD-)8e9+lq}2KxpML87eCZ)@%`ual-IMT
zw}jU#hwZ}G+$RP;)C@=6XAAfv-fD*vB5vNZqx;s!X?7i_+~k)QX6XEjNom86=!_dc
zeWTr4m63@bip9bYyft%{K|>0%lNGN?66p^4aRjnsu$OJU!ReHH`eI;KWjTJAG!8lF
zr)T&*zR2Z^r?ss6Agyul=)?YJ;o-IDFUVq-FudymS3j@qE+02ZNl7ueWfMz=4auP1
z3o<~xB%dezkgj?1C~`hos(?Uw!s^aL&QJmjf6ovgeDoI{a;0kKzxN1m5G7otUz_VX
zD~_7f-2xE$q2}4JViR<sps*5_fVq>?^)CE$Uz`611NBMb^cZr14GK!W=4vsxFzxnb
z|FgddY`D6x-&Nk;H_QKBz$hZSaByQZJlg2cmwE9$Z#9nI#>U#+Sz|e+ITP|SA@{K@
z3S-@sw6?Ul`IJ||(#mr|<YM`L>sl%@AKRmyXWOWAx$43=6i@A)H}e=Ibrv(DqYfb1
zHCqzEGcVVg#(ncRB%D|FQQ+Nq%+BTQ?QCsn^VkJJ(8VC{n{OEKZj3uE*PNTBy!XmB
zb>6SM5UB^=*oLgam93!mBS`;|L)a58AG48|2{z|R*jSFqwwmE(<Y7>BJvPPM3lt}H
zC5vKHu{7=+@nh_ZH%f+_J|E6{`M@cN@2q#5PxTJln((cgui1rynW$bH<+|2a*oHEn
za*`g|m$9Q*^~}dbrZ8p0=2Un55!;8!W~Sb7(so{KTW)8&ZymP9MR?yPOgv2pBqgG(
zZ2lwf`Tbb!3fG|Q&@FGy3Gbfz$y>)*k&itxN<LNg?w^OC((Ute!Az*9lArKw0*Jij
zK4E!fK?@n-8U4!;02txuCVoDHyZI91A48#iXY4%38@5{t_87#KzE<LV@7LHl0xl3Y
z(dAL8SGc}0Kp_vUF8NgIh+u+pLBRa>uh;F8uR8cbzm2tx<;fLtL6S^YOd-^eCz4(;
z2&n9KwKt6SV(_;rK%v^K?yPO)!C1I9ww^#fZOqo*@OVCo`Z;A_{PBJ^r|$(8(Bqig
zed@oWjfqLvAnx|%b)!U4jQk>7o(<m5Fk(@(Pun`JKm4JyTCf-J=?~BBuTYKRTcKxJ
z6qC%GquD2{g?M9QV_n{Q|NY%|-;AuAOZZ5KsbSripTn>%dK<31Th$Z0^r!C$2CWKx
zT2tQI1AI}!DsO4M<$KM%2`{mqNzLC(+7w=EuHMMSqsvir${Savnp{%cWjarA@j70a
z42?NYo)*$H`hMH%B5^gW$f#P?55}BRxXVPl*@M>>%pubxTvARK!t<ldUu)4nu!6Q<
zFXe<t9v+BHnev$reXKn*;sgERPr&O7w>6(!ng0xd4O67GWU!s}KyeS%SUu$QU5r$$
z0~c_QbJtJJiao1RU0$hSvMih5JJD_zV<HpcamDw>fX)nO1-Xtw(yax0AYV?r%Teb)
z*NFT50^@{5kdI<Vmrs2p^F)&YUVVM*o|TtL3CB)vUmn7J>}6#?c!(Tq0C71$Wt6`F
ziZX5M=`l^h(CKWS2-jq1@hoY*Sv{RD<aK1oE~iEeV>hOA!36N2uKtCVv_3Kx+?lNL
zfLqE-c<UMEs!LZ@;ff%od!L^=`aW!$%9=6#mG{#RL~d6MddgXM8Ptav?dO(H!cly{
z-jwvQQ%cy1y^+(g&gZ3MVA=G;qas3_HhGi@-k;_VBFVEp=VA7U#2CyfMVyU=Xpp{~
z&%$yYim*PeeE!vHu`MBCd1&J385<YALFbHX-EG~())nzox;;Slmo!c3m#0TBzB2DT
z)*D7LBEeGS$*~UQRsaspr8a?BB(=EAdG4h@{6$d12LxT+ceLu{a33W6(A|jS&hJd_
z+Rh<W6Jp>u#Acrd$ezsM=YVp@-Ei~V{Zu3fqFJ8$b`VtBPfTqS0x+lnnzD*ebg;UW
z249A#f`6ePXJc}k#?d$PEU+68Gok&2z$`;|7iq2d{teLud|G_zZdTr?6CY1LmjH-<
zn*OAGqRs8L+Vr~~AYD&p>*h<CV%BQazdYAWcMGB}@{a(LVSY-<!~#J!aa(Ad$dXOu
zrI#Osu=1e;#pd`-yG}A}3U(Kscp|tXF!<1TZ-`%r#+Ea(#Nz=ubU(S?dJ_6dp;L(D
zp_3ol%)!Cn?aTUl7O}<o;U3pdICWR`?^wlVj<f08P{?_{)+#vNeXABkL;r-FWgd`5
zV_;P`;hPQtz+Zv?MxQ)T%`^-KBl8z1yr0KwF@*aWSgg|;#20z}rcNmS=*3GNIr(OP
zw!t=o&cFGf?javY!H{GWbFMF&(DRy+0{*q|thGaS*{*3Xz;aRC3`MxTxl5MXsogTf
zag%&cZTQVF&G=hW2TZGK-_~(KsYh`LX4Uun@P_Innmk9@DwaFbKL5_5aKqu@VFMhV
z0`;dK>9$jAK@8`0pd~T)?kMCSATt(7To3_C#vzQGZu_B8&_=|6#=)>*eWcFcsI{@$
z>eyfZCv4##wa|Ux<!Y-(*;xm`#xMg{k1YpE+b#ard%`I@XXMv6RWP_|2hBDO7P!Qs
zTbxB4&hY7L?g>%tJCf*%Mbqe*mh=6s<YVuH81SUhjTe!`^CPLw47S*{<Zb3NZIxGI
z&^S?Ws_dwDAI2Hb6^lGkMgUHyp8r}r_)z*nN0Gkrw``t|rUV~cvXm4`E-(0ANlfOn
z6;05O@9VoUfg|Yy9W41n1T%s2K(h>*jE&qpN;~@I0RAW_#J&3Zgmj0D=9ATa80eOp
zlReLyRbhU3&zrq;hhX<T;?K&ecn*$yE*F7oF6A*ROUla1T3==^?d}FkHFoBY9{J>#
zvck`}$7bE(x^Ez>P_W*uu++(`QXR0SNZk~Ag~<wJ+=qr8Co0BNa@QU>^NyP?_|`u)
z)mONh=5M{6P&yV0bx(DP{QLUm`e3YTRgsO9_1)>jFNb!1Ex}CF4K+7cd=!^lZL`>Z
zHPe?+#Ld&*ktSD{AlJUzjhh0Oy~JFsLwb3Q*=k6-HaZdz(o13Qh5AsBb$}gKl>2$)
z*A(D(j|H};r`P)Jdr2Roy_1R+26lFq6+%ca_iM=Q&K$IsRk!poEl&?B>(e60eA4J~
zz(T=LSn3})tWSvEhLkVN_j0H!SspM#Xcm}@3&q&j$k>C&>$Qtn1TrZAmzPgx^R~L*
zR2<hW=`E?4)h&Iln=es$;fvfx$p#Z;avgMg`P9iakw4d0Tav$&p4n`cJkDxL=-p3u
z29}9jW>^&AvWLOY!G#-#8Y85O;$e-V>D`GXd>qf{@_yS6sC-3OkEwfBCbk!R_J@5W
zej>YyMokZXg^{H>3NqTjgD0!jWU$0&4X?pukQ$VP0|}!*)b;g0n?nYZbINmhuBUUo
z!#Nup!2_e(IgvQeQf1UjylA~ki(g(>M!0D4nwJ2J^{q90L-e5TB-*OqgtGN3J!vak
zd>iCHd;3XR-@-Pozwjzk-mz*7M2NEyKTd%IMfqILOqrRbl4sMHOHJooTX;S8c-lOY
zNyZfvgMP7NjeT3?Meh|`ZM)O5(3q_)Z@xD#Hu7l2_6k5wWCIr+dkjimP)wQC?$8r*
zZ$L2O=b=16&CL*IcA-7kctGuPJQvVXt94+J8!K6+@NVI|(p+`}=o;v5ljn=h4+9Ma
z^}Yl4Slh{is<#_K5cmBUwO5-%y-oGnY2>jr@g8T#r!|?T_JYnO<FjwZM~%&_S48yR
z#Lq|Zs?#g$miAM(1$a4w)$Lk(w=qI?w>S1UnSe|h3DeHTv#fKP7M^+O(X5>9xx3P8
zf2Uc=L-YhI6{FY>F{w>9eUXHJ2cnSZCp_AC&ptu4Fx4%dFA>?oL+wMM4Ag43w0|0W
z>Oj6oUtN8DJ^@o5a-{w75<nH?b64h#kADhf@+^92=e&8p=8Nd|9JCkl!eK^v3tnK&
zGybY%{>45wg~@w_b&~^coEMQQfSsFw(z-w4ec1*noEzcz(0JG&;msd?vTSs&^oZO0
zyDX0hyP!%fe>?+cpmAJp;<R<o%K?F9)D#mzaJ%2++_LvoU0OJTTjJ*X#3!3v&S06?
zHkQ8lKYGXW?7Z_1ye>y$XJLXrI&v<?WP`?ktL*VPFP$v!L(0L+xv|GLd0}p9g4d?p
zIuqM2!`#stySS5%Sf}-wsHli2&Ig%kziay$dquK~LiP3V*}8<g{1jyR;I&q7$<w=Q
zdh1P7-lLwBLCacL;x{9#;=ml0mtDP}N~f5UF~1cS3B^zJSw9Xpj+(ldfbXZjF^@^#
z#rtQXP-G!G<<Vl)Zp9?rui!(%Un*+F{%t`w4bQT(kNH7Yy}NC1TQ8Mp??ijY1Rg)3
z{My@z@RvBnojXe;3V&k8XS_zqe1%O?R`$U%oVFLcuJ>WQxHxDDzf32_BScmY8%bkO
zo^q?pD@3}B@N~D~6*#b{Psbz8QYkisPm5H?f_^Uq-{Wsv3fy==xUo#XdI(l)Q(Yut
zyvqpF@_s$&I(Z__4{dTZogfrJ!D$dBGY`I!=@X;oQ@k}_S&EErtM4Ha$nGTTE)*SD
zzqukBL>YGTDtq8#coO$M6N+Mfwv+F8!<f28I(~kuqL4a6-QMHiHBeL)jqn;@1i?#R
zkVH#Mx2t}Vm4Evw+xL36IU?+%^CG+V8o2SuyX!o5JSqNm@HY0ECKkEg`BwenbH8@&
zqxtIdkfC#@)AyEldfR^Va)<KxcHW+`VE1}<ti#zv^42x0PyHl_O4NDh6a0Gj;8U+-
zySBbK5;^E|a`5OQ|E%jI{rbjtxbOmc6Ce6|CrG^Kr}w~BvmX<_6WJr%cgHSnk8<Pf
zgK}&$OH}>vdarvaMYQtBdu#kMJo4&u{stm@By+b-blk1gff?ZIoB!h@yYIMf|GGA@
zVgi3d5Hj=TrkP^feSn_}y~zIA(_1?u;o7LAr{6#Wk8r@*u)p5nK{B^FSJOO*!o8YM
z?|C~}Y2JZ?<Aj&;#OsqZJt`Yl3A3qp%;Q+XU`d}|4DsXl{8wBC>-u7!fMxOt_Vd>)
z<}Xtgm&>ImtvV=&KB!PoeC#(JB&8OR-s%EBqSeEGxSB6~|FrDN5$pSXUPv{^NFsZY
z6kv50d-$rTvgkX~EbY&>mj%Lu3&DZA&QqbSrvsF%C%$XSX|o&NUB*DhaELIbL{&GL
zLb<9SU_wh#nT1`h6z;Q9sr5Ib;qhFwS&W;yO2g}i8D$lIM8IDg1%QGmpn^k$XwZO$
zhBE}g{RDuB;XvZS!RSyh;^==Lfuy8=5eNXj!H^RO01{-v{(A%Suj^m0{~7;6qD&5=
zxYKt;lk}G0%y%@IQ1^4iI$yf~dWRf3>C25!|J?oi4E&n{7@bkbw(@^m`9VN*VTi|Q
zK!70=WNSa#KWP&P0f7EbR0tp_D7gQE69<WN7tg+0K?r(y1M$iau|OC|zCirZF#J#u
zD}V#|Nel`5|H_bLZ9DFnK4gynpMiug4h4n&Zz3L*Rlqv~|D*@v0QIlqzh`lDC~;^2
zB*UP;f&Nea;Xr>a5D)@+hnV#5iy?rh@Ic6g6yOU9G?)<p68<k3G_31n`|=y^0SpBz
zzO4!wbYb{!efHv!0(t<9ejWQuolnZMq}qQziQfjHOND+%CxsRWcp15<k)3vLq$%38
zy^<!_<C{5c^BxPK%JWm-^_Z;k3_)*hCY(c3FR`MmSbhlVeD`@?_>eZMe(|=T+V}2R
z_4{zTDfGfrWMeid?uN<-5FBw@c~LP56NV}bkOUBPu;!%W<sCT&i1Oxc{QpEnNOu3B
z>gz`<hiJ%b;6L+atF+c@>7cFt=!K=e^$Z{!1@&KHldsJ!RsBbSe~J`Bqkj)b?Tdne
z6gV0L#{tCuFO?v`7!V8j|F0+Lzmp%xU4S9`iH`Gg^5rFvR6GPyo|3m#Ly*`0m$L9n
z-Z}%;Ysew1kR2&HM;Yw3HwF>LW~`-a4EJrgdh4?)%1KOyBf8Lo^;gHbHbU;<$SwgR
zFY0eqq-6Xo$m`?c;^OM>CnyaXJ7uAd2`66nrq6khr6~H6))o5PYt5&XYQ`-?OSob#
zTI&{duZeWm-wMVU|Ki!16yE$s!SIWa;tt{2t9T%y)Ujs%`^QY((!h4-3NFUH`xqJA
z4VO#LLpDMZ6{)2o8k@V@dG)4TZr#_aUz8CS+?`H@T-{gird`_2i{a<tD}V&)x%V;N
z&I>Ba5aB7zQ%8Ils6;Fz@{dNn490)N)cml;gCV~qykG1a_uguSg~i+MMBNI!t!p|3
z8_LS=C=I*?bLXL<p`BMKS$Fqs&QHCO+$xO#kh)<&BRn@mZ^rv+G`VeL9Qea5OqbNX
z<JVyb$stYWul@he5+tu@_x`7G{l`51miPbFm>}Hc-&z1^KH?C*^0(oTkwDnZKLrdV
zMS@fe^nYuLF#rG7CI}yyS@O2Jpe%HwEvDS0Rw0coCWU}Xkpw#!@b_ijKP{T(n7C0I
z<EzC2iijS_1P~1A-*JXD$VgDvP~<%igq(04)Z6``4YpBZ;Y=)%{)!=#`ST1(L<iQc
zr}Nn%XY!j}7zH*o>`$2*eH$E3)z4S-tej&6967&IzB5VuP&u@c#<bqCM#ndNFK+e|
z-Bo%2s*bVQt{1l9UMdN;dpcmK22b1yPh2XgttLgnRx@yc{2Mcw6P{LzA+>!|syMRy
z39LLmBjf2qP+}fOsvvC^wP>^g*BAH<O(?g1o`3+!Z%W&C+vA=52aFq5lQT5<G%8yd
zl87S$6Cx^Vn|S-<f7FnT9jj*JOB6Va#l)mS*p|>ja_1rXPS|YK4Wv+o!wE85o8*+g
zN3uKdPkyKf^0APnvpqVeEF}~^Tmt8M=O?$dRabGPA{V&!ALy#1_kd#6L<EExx=7Ix
zkpMIRa22}1<DMN43-Zl_VG-hZtQV6|t!%O_inyn)JId%8VFv?}&G6uQKzM&43}Vj9
zSjxLHUxM}<RA+F=M_O14er7pDAiKTu+F|oeZ_M>f!A<#i<1yU4uDEVo9HO|Iy0Whz
z%sW6pe1IQupt^8H+(!gQFGT%rvTiC1Eh4I}%|Ac7@r~e7JJ;cZtSTLSJ+;Smpu|?b
z{^{Ug;Bo!Rf8t`s$f{T|HbX-jPvr@HAa=p`V}mj_!)WJPKQx&|{rjht=A)&23#4c-
zx9E1m*|M|fQgeZ*eFB53?68_5qu40pAgx1Nkp4MG()&qDrt?o9Nh-c=f^jdf_+KbI
z$qwF>a0w_G_bD~VWwbE5{IN>)52iZ#5>lWQNeO)tetmbT-nB<Pe?Ux+=9|C*Bz=c_
z9)sh?VX`8=eLZVG_r_gyw{rt{(VR_LRccfg%1el*XxuBMeLt(Nt50iaZ9D`>JuVI5
zHc+!@VN8-#zH;g)tsO_^XmE4F!f3CltY>V*PPZ}j*B_0Y6Y%jF7_kJznvBi%kIx5P
zOu9dXP!O@?60h?L^{CW%Wn1#fb$;ijA-gnR!qU{wCjsa?uTcYlaBc)@gmZLa;xkSd
z5!2j&gp%M8@lz=zdD0%l4+<g`sCfVyP?a89v@nG+%(%R809aT#0H`EK;v0+(hotL;
zh;CSAHzvqCP@~J~TXq)FlI?8hFpEtj6;XhU25{{m4_;@II*yr;@r*r*j=|1t=<e^{
zZzpPe1g{}sgPJNo^y^8)NvInwk(+^saD`{0^C1{8McTNA`&hY=EJ4}@9Lq6F5PcLV
zF=HF&4;<@?t>=7Vg%Ex6h;W&^-%cqHgIuuoKlP(qWOdHYu2}HLOJnMi!;pW?S>iB$
zzd`;j008>>ku}^jKkh>w@drQ0-eklM)=f)X?RB395M7P3c*~PELes^lboV3YRz@Vw
z{cr%E=nJ=-%~*RSzTqWOXIEUnvdm`-{95kYL21qTcTH$a)}zN}h-$DG$%`YbX{!Vg
z8{-@3>cUyqMJO;fqVr&LX#=SR^!y6r>==z9V-aNv4V7eZ{|{8<0@oh!C!q&$UpBw&
zqUd@du>sCz-Oz2*MIr;=4Em!9O%E`b#^?!GRy8DurnCe)1T7_oM*xnf_Gk~n5V*3U
ztCEc$w4$Yjc0Xur%dmtuQ-G>@hgK7+MefOSqH`Iw8AWSZM5NiGAv<`F@O@+(tI+FW
zF8b&;{btjX0fd=kq`!~JXqho6&}q~j?U?<mCH9vv*w`k2fB%&fwGqg@Kx#$+5DHAD
z|4?WUX31qgU*F00F8tGEiG4?E1w(V$Woy>Q{->j`-iysM1m3phVd4Zgx~S<{YRM9f
zz!Bo@15$i^*I3&>jrP5RRi7DlfqQd7<*_EF^G#tftuA&O*tbG(m(pWAs9O8wDOBYs
z`DY(4VzmXX2wZI>Rr;KSJZvP2rAuTu*bxqpivZU6E?<L;!w;+$CuqJ?3MV{aM1@P>
z;rvJqk5RT@k&nS)vXGWarkRY*r--;HJkqv^ZyIpWt0IE`X7!c2aC-*Zi7H5eT4FzH
zeT60U{m77(VPi!R$`8mEuDs98@_(xF3%h)OOZ<Y`d%wF?iLI70INr>K_pO9hI#+NQ
zo*CN6FpY%kk8n!Bu^2o&g4(_rL16Z$?tNjIkO@kv0)hfom+)buAHC}4yD6!ouY5MQ
z%(^}UfU+ACh$JtF;TX1p4fPPkWx6G@_+&;A4Gpz}NeXt#7mA-V6}GmVYDxKP{OV03
z9W^C43O>)un%CnS*wO-P75bu&sPV~3Srt_P4wX(>*$$2<7=HgnFgrWs>VXFQe00FJ
zWT0Vn4N*tdLNpHNHCJB;j*0>o5fepU{$z)fb<7NU0fYuE_{g93D3yB>>4XRi=L-Xw
z425%r`(uNXm`Dx#L!y}wMw`!m=9E`=J#@LOB6~o-h8=^mJ&(gt0kOg$gke8n%nvZI
zgF=~=WT=mdW0M;7%Ng=;PLHL<3ShrNZZz5FHx9QL`3q|b7?&svjW(VRh^AEa4wmu(
z&68;_a%FygWn}@BTkaR15oKlm07zbDl$8(!;EDQ?pJ3bh2vr)bG)JL}REs&@Cqv~?
z^M6pNy<Ti5>IEcmvWFIToYNF{bsd7iKM{!i5W(O=RR1}6yX)unD2`>Qh7YCzLD0(n
zGNLnAu#JcWwqGJb_f7oIuEu?Y*01Wlb$mu&c0$$iUbQS#&Sl6!gF&tGIsQL2OuGad
z#}7AUv=!gQb171rdx^T`=bPG0u1cGc^F*n`cl;c|LjrMdg+~#g`0@k0EGIWNH?vw3
zWnryx4LPSYM5__asCI-B?VUa-Hao-x9P2gHGs!K$rU~fd5=(zAqIX-fx1uV5MU~m?
z{w|CBVjMj+*CfXXCnyJphA702C;_yVS(`|4wER75z=dsW%-bg}#lv-$?E%O6g`R36
z+|=!TBKOqrHG^ugSkQi%0&wSpFy9|^MgT6EsHQzxH|sGw#BKLzDo3e)m2!+X)>Elw
zi=d>HW!D4o5B5fID*7!>U4c559_N({Nd*_J0@u}%4qw?rVYWXeWQ(z!ekfJ;--A&E
zQ(lN9F*{s7T$Bvr`~uh+#S5hx0E&=f8esQ8{9^y(kN2w={pRw6WXXW?77?8ch9}|L
z?OWDz%q&$NwYgGNQe9n~k;Es87+{e^jHDz0lt&$+R7@j}@c~FJf+iUAl8+!oO{$<m
z6%x?t8#f62rZSTi2i~#w<q)72AAYljtT!2(vQVS(Ey`022wE1BDg^wB1u;s%a3h4m
zP};2spFx%>UG0QjjEHI9F9Fb1ifHoQgs!a*D3a?XIL+S%Uh1&Hm6=OTK(6Ky7iY-F
zQb6VRB`azxmGVB%X?ambfBc1pC*w^>mctD`C1&<uLI@CU`VSFuu)82sP<{t7o<5Mh
z@|NzZXe_Y1Eiu9tFg-Wn;zA7Oio}pQJIA#WZh-v?Xy|2xTzh%lUvyeWZTSWZ%nyIN
zxhDc%rLEt-zqDGb_6<MzI6OR(nu<fzyP?C;YduXr%Ixk_YTkLDClcu&H!d6N>tx(}
zABIoy)t`H5j#IiuY;Z+A@JpxcVly!-Ai`b6?a;<qfQN)^u*%Ob>S_8T7nE&%%Op8I
zFgOD|MloL&w0cBgk4SB!ISY-*_BZT>`Fwnuy%wL<>+j0E4jS3v>)EWOJ5NSZB1Rzc
z6N@rz#r|ud#qj0cp<%NtR?QuEG$q(El1$UlYM9U}@ww@uU+8v5Qetd99E`V@36~cd
zju&jKt#Y@l>d1=(+VOA_txC;iYYTMOInZ?c;RfYYi;)Z{fLH_J0i75)h<+H&b-Mws
z+e=fZ9<rU`p>9V+yu&f`VlE*ojn6-Le(ixS+0#sD145}SXlUYlKht2=(jYN@hV=93
z{GnbZt7On9;HP5^-Up>xsX&h5nNjAm!4a*Pq(?P746}L0N|uiOWMnqBaU=2dq0OcQ
z!@~sA(?eg;bnb}T<L2`BIGFEuOWv(4`LnR-B})wo*UMPha!)&paP~6tbca!p9$*q{
zxwst@U-L|s-9FtMWo?+PmhS!Fb{HqT|8xFBzS~c}(pL79Nwe=4ZhC^BVoelkJ4uCW
zKX59z?M<jL+}6V#V5Qy@u4t{^Y)!T}GTlcQEqu?LtrAFzW@Inm;)pYdXDY>KwS&4@
z?L7sz3X>Z6JIF6sG^1JBnnW`O)0~P(-TjT88_ywejoVniaJYH3Zc!~>cbBCO2dRfi
z%3rQ7eEK>X>HwYJpG`bSqGl%QWD3Bid?a^Nk0q43K~}K|T&~Yt)~Ky#*h}KvwzXWS
zw*Fzi6&B+_7J?f__buDVtYnDRu_#N1AeuvZVx6_EWJ@4(T;;Q&{rZd}s;bsI{Q&0$
z=fzs{%t(*cdzVPUpArH>U65oJ;H6sqt_(MLEq`!g+usyFX^A>>EwroujNBC*(G{Gw
zmBq4)e?>_>vTbi`x=@eIY1cE*7~TC_BtCuwAf>^YWE2tY7}8Y{guH)_cTzIu%Al)O
zOcpm(`%kQNlAo1SYR%&j?wZ$vTzv~QEHG;-T?0i^t?lX-4Y2#XpHg^Heh4(gd4E>l
zpfWy%!Bi&KEMkZg6-~;YIZJ9CPDybnGf|I=!N<q9a0rQu0d{O~d`J$?b9VS;-c$+{
zR&WF;EU}BI#YtEW*e@PBGFdP9S&;!h7X;612vXpDX&>-h2{O5k3d&=Fqa_ko?+z6^
ze${Ee^5Sb9xDjP?Nyn_Ih446{1$In%QwXDL?TWw)MT(7uu*m;&I3o)n+;6<B>583r
zZ#_v&vSWM|v~Sb=%QWN#A#5bGm&z~?6C1)pg$;yt=yweh<{T^%I4V&~DjDf=14*a~
zsj?NKMFiwA3uAK?(ezolu^D%)mwq(mV83c9+Cf4Qv!Qo3*NAzf(~7~cP%oCtqi4@Y
z2&G~ag+xI?#h^PN%6O)A^`mxW>p-Wu(dj?d{VxMAM><6`BMmpS&U_ILcJi<t%Eu9C
z{v{H+6VO9$fNof^OzvKe$5uafzx2NEMqp=qHFBybJ4|?Swp0u))x=}&ntNy31ZU5^
zTjs@i$%sS7m?P<D)XGRW?)N5qY3GfaL&-+U=JH+lz66mer>PaVOF=<?y#PX2$A&rz
zTya5m2dpLaVrc5r6j+Aik!wSYRs+lRlS)6$l3@$%>Z-Jo+Z%4(V-+;9;H>N#OgFu%
zP{nrPv>BR`SeZ%q_<0+=rVl}*)9em<XwL*Q%FB^NYQ8zn(6ECWJyXl(drlOF-M!c`
z%H$KQqF3*=3U0V-Ssaq^en7U@tBmfj1s-e4t(Mkl)Hn{~)LD=fNbRbAcI}E_vill@
zUdxii`c)d+k;M|C#b+i?h2m5H0Z{c_@PIm&+7b>Kstlo&3>6*~0O~vhL9oGCi2=MR
zO3INckuS~`Ajg%>5BjDS;%m*c$*?{YQ6eQuARRnCi7mR`Q{TqjJhXO{E-!|{WdaBr
zzN+(17Zuq}u`)N!o?AQR<N+Kc@;vzCzvXEm7F`N|MCLl5v_LYb7Okb4D{}6Xp+{vJ
zHX(c{WD<k7+of{<oS8EdIOr-IjKT+>S6{<ZukC+<+8!_`2fY3Wh?1a^O#^Fa2FR+$
z)zZZIGSd}l6=1u(Np%iT%~86aDo!$BP~BBV14G6+YenA;m{*vIi!jSG41Yo_nym0C
zR%r;ULVwzXTkS;GWv%UX9`=qhj`F%z?$xtLQVOl;&UqJt95U_w_PA7p{%-lAuJ4{U
zjfm^d2>0Mqf3P1D)bq9jg)Ji~lj7zL3!`9WaR$b^5S(2i&d}`bXWQ#~|2xf>jI6QF
zwd6>t4ArbL*p{x2sh|7u=<vhw(hBhkr%$o+0{>LjzfI+z1JYcw0|NC!AypeY9O49N
zXgJhVxsXoz?=U0hA77s{1?@k45EC}?h4By_;HE3~DeKDgyvC+dkoCF~Iz$WdN(^g&
zd%6RIZ{Pd+eOVD*_gXC&q)i9U-04_g|JynL(?d(4dsx)kY&(oaLJfy|)!*H`!k!XQ
z>^sC1cVkWo2=M=#B*@vK(1WOJZ};Th^C)Rr?rrAHRxN03&sP!T#|7tmmz#~JDGkFC
z0x|^a2L8;kOuVF4II*8yWxxNxK&Z@th;khD{MH(*yUA~2L|%WFNO2Nh{HxOBi(79*
zc7r;53I0Q43%rVxgEgyMnYDQ`dN?c`>u^thJbG+gAPqKRO>Df>SJoKmY+x;uf*E-f
zjaj~NWvnueRCoDa@gvd1PVvxULUXQko+3r&NFCenYAI=j5nO*bP;Nddb>@p*K-qn>
zxA}&$yjy}~nkq2#fZ|5KNxm4&JaVWG4^gEZFs3<CRA<D-vKXz9zs9CBxx9Aee0iK|
zzun-chk<H9p=(Sm4)T@w1z2DS#kDc>@VGsTc_$pJgl~e|r7>>BZ46^wi;lyO&<XR!
z)gCfVj20I7xYf?5-Kv*6knfI$NZIHr3ooU&-um3iYpb;xJ>|F!R<NP1*A*_-C>sIf
zsY=8fxY^ZPiu&bF11*zBzM<~rhX0|;+Jq)_s|b#aMZCU==;}FSCr;5_CeF6K7%Umc
zk1jG`8j)sG#8twfqoL3kFmt;YLu_?uIoWe-aTv9cQ;-<3WSN&{po$j>!LuAG#k4ej
z7$3h*aCWL|c3C5%iZ#;^)z3HALwn$-9Ja}FNonOd!QDB)-SsDx_&mFN=2rZ>Mjm%D
zbu*?qS{Rw*J^tXwq%oT0;B6pCk<^1Hp?QP*#u@3VrL3Gm3IPc6OU|Np!_#fPnq6)@
zKWV*=Zi`RAD$E`IWNKwcDcQ0IJUijESWFR+FlUUNmoBYkDQ-7g_)$iYMg9FxT=Z12
z(sxa1>!16c@=D65ciD5|Hu_6qVSm^ZrL|XAR#00T2SDM&lAd#bD1VmLmj~^ZZG{*S
zJnSBdFhsQ}2pElx&kuhKD<f*KUs7<Wz#+UGa#8L=>5^7Ut7mJ|;tCS+dl<nK&B{Q2
z>G-?4osHbfE3}nL9I@7%elS81VF%&O;dZ(8<?3A8o*84VBpZpOXf}pvxKc{PqJ?8_
zoXD@MxTLR|Qu;KeSzmrGtVvh`Y&p)q;S&6w3Rp7&r?_AsmC%B;VG5Lf<PH@5Oj)%n
z9T~#FVueV5X^yzui{B4bF0qa0oA4|+wkX<>sI01GmM3qXP~xSyZ?(~RvMQ?*)+89j
z<ZEQ<C+-x9n=w~Jh#tDDdqfIb1^F)WJo9S@-^=P_%UUcgrA(H4c2j5wkK@rxvFHVu
zB`IJiqGFQ(a^aXX<yqyb6GzCX>y}I>ldV!n^;-7QR`xvD&dkQpMcgFx$riauKlR0u
zT4c$h?|k0#jUh$qcj|B1+!=29ah2+jYR1e2v<zWM{sEB$VZxybG>dVz@J(<Vh#Pg-
z-S#8rzDk)3oJ?msELJGd{E$7Uk+#erePx#v);eBqrZs<Hn4qd`+T<929I3GsTLrSj
zWS-#8eNgUYrvkTRQ{CAAHhPBvsF^a2mIkO>(wfyw)P9smQ9~8$ZaknYj7)V+wLd@C
z*HKA&;HeP4OGUkyq|kO#4T@*%r*iI)`i8ney9`zl1bx8r`ye=4v5?6g6F23_?85X1
z9T!tL$#6I+?<k?(YD=?8DOCOISDH_sM<pKSI!j}N$$eM)P;;A1YYx|U3IviuaGlTG
z_c(H>q!Sm-s?DN~g3X<TJ~N9;=+$gwi&r%}vMTR2;s77^vXUn$Dqi5KLzVwy&Hr%2
z_YxBS4lAg3{+TR=mhfZn#N52#5mDvxW6*+%v!TVHHda4;_+XY_R2(@>;mO7XVcZb@
z{T}0=a2Dr|bu@>bxMny1Vf@*lNPk&=C}TKF&-=gp{qGRzt498MCxnsw6C*Y$Rb~%l
zqA8b{+38P?-9xByD4!$3h7QrZ!(=?cHk?#PCLj)~L_{KiCiXHhtO_IsyR}#DwCbq;
z{q7HXhgC>U&bE-B#Ux@r@dUW?>;5AyvE~Jx`-0(4D%4?9Z{u7@bj#J(;%u`#N$4X@
zGWA8A7ud;EG@(kEkq+vEiA`|1>KRms)00k0?76D=PT^dPUNY@;Qa0xwxwkRXeG~io
zl~JntgZ{AEXJlCvI&OO2;bUZuC8NvTewX)tGC=}dT4LDM)$w<;`WGX^C$ly(PNbSq
zH|>$0H8Lbc-A-z_)4S1s@D645cDT5k;J*#XYaL#VOmN6+T&^@mIA9&F^!qxlI1tdg
z4KU7P80JoJ*XHC8r*RDY>ED@&9=*N63trUX=nA~2itX%yu}59j7_`K|@f$_+_|2FS
zrlM{x^`3NLCy~WU)PN0elcL3(RU@RVpzQ0ARg-#>HLUNd{w0+z{Y#^Z^bDZzBcomv
z8aoX0Lb_ohMIzHkTKJ-95>e<!c`OqP^BqwR^<oP9hUgfqD$<gGVXeS^-9^KDS)<sW
z)&CD!Zvodv(Dv=(R$N+KgO=hhElzL^4#nNwy;y-l@L<IuxVsg1cPmodokH6$?eo0f
zdCxif%T6}yJG0rHx#xdhw@$1sA#rBI9g0%n-U=!lmZ?j&c}T(tmttxLcVck{n7h)X
zBrya+90`=;6W0Zr^VvW~u2UwOcot2Bci*^h@?y>{>H%4H8&W@;yq5Ybl5RhV#L3lj
zt7wR5@mn|}w#c3lYXt`G3?YMJY2%jVV{Xn(#tK*npwuQv43UVrC}s4;Ob|e1S{ug9
zpCCLnnK~!{6dm_i2Aa30!_L-vC?es?111E+Yi5os8-|ao=Wu8A>j^C*BvJz&OWMJE
zLo$?wx8^soZ<_-xcl&ZSFnQKz7ZPV)@tSlTK@8m;mJ$b#^|BU@DlGISS_SwuhLnVa
zEDcfx<f9uiXWexx*YzVrlCL6-goXCpT@OnatATJT%tvQDUFzZKJAP?xNJhA~cnE)R
zcAN8#JRr7a%=Ud>)b&y-Q<U(M991&*I+wh)vl5=HK5_VoW<?Ksletf^ji?Bhi&&ZG
zymt%!&KMFZV~#6M+N#Y08ZDC3%NvF=Qy*XA_KpzuIbZa+*NSYqj>idn>+jzTdo8!B
zHR+tGz{s6pNh;8v7jcJ~D)(a!zDU<L<~!85Z`@kl*1BE<KQED*VJ=ju(jx%A0RTz<
zp47^b|Be|KS4xQ)i#8Om{1sD2m@At&txs9?w>pcyEcN)htTrwB)4o-wg&gil$&}Py
zQ)*hN!eqD;rtJv9F}>5p4I!K92NmQ5;&Vq?HjPG*94ATqv8&~NtOEDzwRkU1{tgED
z>i1V6jfuws-lV3p4pH^d@(e}cUWc=LWv%hAu!*f`Iik_P5^(L)E5ZYU9-4eP4=$@B
z7L*0+HPyDfxH+1(1-a-1HHW<hKG!FJFX+APGs=E$h;BeP_YP~vL)r9-P2v{O;_sd)
zlnUF6*dqi_AY$dK$dMm=@Z+a{7;?TKR!7AZj-$qlMh!is*iccLI!3Ryvp<I7gRYJm
zrls&SBwFURZ*|I#wo5rk33F;gfaw@Lk~P_$Ft)ep`gxRTdUOm5ExHN1<{aMOz#2u;
zDC$fd;@5tGB*WuMZQoLAhBH^<A9A=ETl0>Bwx4LnMx887#`BJMOjHCCqNy5ZilZna
zCGFQYvs(^clX{#w&P9a66~&jjF5mByx3b(u0cFGB22jF@O|asdDJUZ*Co{WSIFv*h
zEQwFVYDy@rG_B+J6H&d|bmCQ#xH6<h!4j@$GC0PRffwqGQ1gUhb9ERdf8bqSjJzaa
z*LhdkbeRMZVXp+CCr4N*D7J`koSqn>0%4jBlyFh2dQBZ>HmDMGt8d|3c*jrd7gaxj
zswf-Gc#G2eg7N1kOl$LS_Uq5npU?L}KdS$19sP-X`P~(A6?qM)`(r?oCivnzx>ax+
zm_Wn=r{22SU4Blm^?(!0o%HmE!~rRi#}}ho{Abt+&Xo{B%fA1VGm}$y0;Noxksddn
zVUJ3|!86fJ!D?P>VckUc!g;95OY^`7qCFm27&lgYBBc}VW9aEb#r*ClPg5+Pq;p|@
zPjcWf{(GGDEb|<km_JyOez#>`d!0h54t*(WQ2EcE&L6Hm|N1ic6i9T2?kszsi#QSB
zeqT2*9{D!f|Gm&$w2tWrSoY-yaHE$Kh<?9p^Ms1iZ?1{NtAb=KL<%=9S(7{5L%`lX
z-3f1G5Tn;fm_MM`XonEX5%u7|_5FqQ%*syK1p&=i5(!sq64wL;*F+uwn8kNdISPhD
zz)tz0$zdFdM*LS2H@NYxIF1tF&mwgv{-Ib?PGoHT3#EuK4>y%Q{S%o@pYv3pOP8SJ
zhxaZ#DNp5bLSrR-728dc4JB+D)1knVdNh^;Wts0pj+W}D;U$u$Wl+l$3ti1rb95b$
zVfmu7|L@&XN7wyiU?ETfxA*Ben~~!<JMXu}jonm0_rhT3ujRr*PM~Q5ZE-071!6@$
z1(GO_7?&#B#VCbu-a;xmT52g}Ffs9W4gmnZrZM%euYcSlLLM2PcZg-E!+-bh_7E&a
z<;aiFA&hVU%2*3Ap@d?enTE?Ss-OL$#+|EyOwZwJT|UoAU+?a2a34QeDt>!y|J}`6
zB*4ln{r7Z5jk4P<cjCzi02~V9#8j_jetNFuN`c%X{sj5w54~zq7P2Zv9KJ;C5l-tk
zva)(F0Id+%_%1#&^n)?@yHGTO@B5?#5qumra%~&!Ly;|@7h1N=NlaiC9sXoB&g{<@
z{ZzRdZt|N0(>`0C30qD%*p&{@)5PdKw;&Y3F@IEXScg0(&glkt+v`|+dR4sohKYP4
z@)mWm@pgEPc)3>IUUQ`kw<vGjOIbzpY^{*Z5Lqy<c3Umf6>)ce3#W3Khx{>v-X?<?
zERi80Z%vDqnt?`l`5=1X&Ei`IfD|TP?&WGAp1rtn!+ev>3fG#JQ&|VsoH$$7`fF|F
zs~yb{`C&`A8SrQhlyTlJ+-)s(P5O7isV9FWv*Bs3DmbZu_gpixm!IZ$XqTTu8-rsT
zTz81pn>=HmG%Q(vd9^^NXZZ7S-KI2Iz0grZP31jfD)Rnc3%H_<fg@jkEexFLV#&vM
z#SF&8gekYjCvE~PKqUI08b^=!gx^XE?-6*Y#nJIcxymtO;Jofmp@jezD3IIyOP@<X
zX+&`Fly%7yMeg7^RdB8aNV`TuIBaI$JM_2QPh!55kAq+^IK}W>F^$Yo%Y^9{wlk??
zml9y<I4>QGKOSsH1N(|Y+v4r|Ij_-y<n%3)#sd9QNHSZ{7V10GqgZbB9qVuM3q`=j
z5V38hy;}5&Z=v)qbq!@)Luc-QL-o&i3Ut-}lPg>Li%$HI_W17#sk8XDW$S6Ibp}oP
zbz}5n#W6{>&z<?nrj<I1%%4f$j=tFwBtH!(Z*SKIHG9J8LGNu-EG=x|(U5KMx|mG~
zv^7&q6HDunsEP7jl{An&tIqUB3+JFvy|sb#M6Ff*Oo!IC@nH%IY@e)x!tLH6f^e62
zc6v*+<gtph=CBvN@CnHND!;=`H+atbh@p<;|9*MI(HnR(;0GBbp-S%J`%I!r$ZJ%S
zWV_Xxw>tm##63Ve&@%N$kWgWg7R<ZoeQ`k0NV-Z?uqw?R{BH_4ALez@JPh*TdEW~J
zs=Z%0$F=~5J=elR;zQe=fOs??c38+BTU=D@-W>=6hvZ)F_fKzp>E8gD=1Hh`LFVjt
zHEJP|j=?xtIvT#&p{mn>W5VB2I9JPQ@(MqL#*G>72njDF$p%-tB2AU#&G)KHcSSV3
z;F(k@;K^k@Uu0gf7U(w7C$g3{sH@`-@Fpop@D(dDfbF9ogL+J6_7+^xAA72ggK*NE
z0>(BrYNaZg01(W^n8B4qUIkObA8ytu@8lZ@KiuxW?Lu$9yPl0OOdT0MvXa*um0x^Y
zMB0|W^m(3@%->rkTVyj%$x?kVwa`8v@>KL9ocZY2@y~t$wqyWuCUI~gNutwB$c*HF
z;<UWa*<!or4^>T8@^f2j=J(s!U2(NN<2`JU<3QkI5>t7D0kc&O$|I0J{e1d)haa1s
z?FhtIalO3t6>Ygx7V#SWK6nxhi?i6Y*feIx8oS8i9xhn5rWKoGDvth|MJXzyv~ZRF
z9byi7LJX64uuL8v#T&-C#q#>u^(DX6c18KoG1kwl%ym2ysr1Ycdiex(EeHHD_D?HD
zZXE|sMy^wWowi@|H0%(SG79r`zIb7{9B1m|o6X%^?)EoN_4RFu@W@H!VJ7p0*G~~1
zT6*v)>D*np-d^9vxn3noqsD|_UK*ntCm>fUU)QCj5Mr~TN3ygQM)Jf<a}%nN8w9*h
z_{siJblJzq0p%)u&zn#hT$cCMV+xmB&}{|w+Su|+L5@*V#TD#>B*ZBFSUnP6V&(tw
z8gVoePhKw;7GqMc>mzyRuP&Ye%R2tVwheyL+VLu%nQu+{_MlfA`uHdhRvm%_3EtkK
z&owliu6qL{>8Vf607+c=`-d}koBSkA8BQ5^-Z*Y|hs=!$Pd~3jOUIaoTGLtKqz>iF
z*;iN$1^ONb!VXoE+!}mKE?fxmo%dDV5EYRN%e5}oV-*K{shFiEK$(+e=evR9-SoLv
zfKXEt2G;V}HGLYQM8V8q>_NY0qpJgUHR2TjbTgmQNk27{Xokx*cGkgL*-W4ymSa!`
z4^f2XOkCL2{Q<8E;buxZf(V<xzP3GA`t0a|e@-GJE9NH6bzst&w=b(eubM%v9-`Q?
z1Dcahu`5p^m8XysI8QdTt{o|rlx4f-?{yCKHROi(eXF0;zOB^MBdFg|@BMX#k!-v6
z-Ea?>87wDqz{?Od-MR8Ab1kh{N!y{Uc($mCOn<N}N3CU_x?h4(hHp=HRI{2VDSL@x
zNN@*O&8!Hy>2GiL_%VsR>C8?JkO)l#sM8knei8xXU5M0tF59LQA8-7T1(xS&KXB{;
zb7N*wKN%VM?1Paf-56Z@siUPfTO63n<4F1V#M7C)mV1?Ui%rSwPn35nTuGJU*jD*W
z_;<N>c%6DfoVOD}O30GFd;3*04x0vXF{2rnb;a|GG9&L^SuWd7DB(wm5iwluH`N^o
z;6g@+%n785Nm<5SK6BGyexoH#aahWiiOWDxg-E=qDtl*(=<VHlF)>uhYCXy{K2oRd
z`{QiG`z(D0bIh_Xn#*)4t8vMYbFR+u6aF`6(;amJ-a&IiZT4`neHQ5-sGp>aP!keT
znYo0{Ov&gldlluFo3I*VK+sMfh@Th9{>S6kzJn*QN|XN~9;Mv%&(9myHGMLC4d!;d
z5ImQMuDiLp=Y72BtTCiEaQFQoP8Lz{b7<ML((^Ml=C2P~Fi)x4nWc0VDlxIR<mjK0
z5*`m-=N<X7RVngCfkY`!jn%<CWn!eD6zv@C73Gg9a?>I>HmB+X)HgzV(Y&TS=3Xjh
zXj#@CJc?=xv}>l4kSd)D_hY4D_wLN<cfi6<9Ejqt0G#iLUylC>-vs{BcZh4$Sp%in
z);5)j@u49hCHzfM4}R0Ji##*TDGAxkX|Mx=5fFgXxLBd^@PPlM|CvJ=9vlotLqar$
zb?&26!v%xwI?s$cj?2-ySVzOe)2Zt-KsumzCsma!g|+X1<ICUSqL{EHfPDB8z<_9t
z_SV0fp#9sB^!yyiK^UGOCWrD3C<k-l{ht8=zD686xLVN;ifhz^rO-7N=)&I_4$w7w
zhyT}-e``T;@x^Pv_~Ic46Z@8UhG21c05RN~w2WMs*wIJXVlM$sOb&LD|2zF(GyYAA
z!Tnw1KXb2B*epHTsz&~MrpteqfZ@>4X<WVK7&EL<df@@06sxJYu~DyY*g5gUXh>-Q
zaJXnFu*cK_bnI`={!9Jg0))Gbp!MA5k%kugwD_>Ig5&18!9%AG{!gZZ;Yc!kqQVo7
zs9zAn;j!6`I+ZFd8<rQ#+2+F&?qM+#jQ^V<_^@5Z)i#xr**5BWmV@FN{$2`B5PlIi
z*S~zF285nz!IswjO)X%D|4*)LhAmS$?GcI-s=XH<DvW;5L9lEp%k6tdC3<*hgx0B5
zrd6qh*Zg`+KECA7$f9SP4}SDwL-XX_$FzVupWC1Pe}yiUde!*CFm9=pCux?99}Lw9
z1(k!Qzw86EliKZxo2oS9v#BQAus<-l8>^fJPA%u2L7ReSe}F7JOF#}NX>ad#!%pFz
zBB{O{y?l^sGK5{lbD->cW4{zSrh<W#@7>9UzOfiH^4|>nn?Yo-%mL$z!NYDjSPED8
z0a=S)uXD32`%y&~P}g7KxaL`bU;x%N6{~Ezyq^1^HErYC20Icmo3^co*0lPMzlVkW
z__4830zaRGfc=bM!=>oTm2Mb`)vhr@lWx4>A_?c>DKJS1x4ajX{Ho^iwn^puQl~U3
zq=#+v67jOi!RO(d96A7y@YhHt_rWSFA?e!TtodQ~?deP8JI6}XRld07!O}$y<2j`o
z>lGzErgx=Dwn?fJV=W%8Pkx{abmo6sOTczQ1oJY04gQna%^l<8Q+t23F<E~K3b$`{
zd&4NMTDw24WG*$Oq-A^$L`rA?;b43@MwZP+w;Hg79GV;;A*!@Asx<1$VbF(-AAkR|
z`d4Sw-^}RC0F4&B=B4GEM$^84+E;YQ;zTPE;#{)?P}xTE4<efib*`p)!e06?-|YYA
zLf%ihWgQ5P{NGapBqUw@79)iO+kE8sn;PB!v{ct5d{&iK*&+=7vAZ@8b4a(-%_z`Y
z_;+9VKevA=b*1o++jwTDD!WL>I0)MMofg+yM=KCipEmEu5FCm+N0a(Gy;Uc_0#iDw
zr_P*-;VrfJudtanzxqq~U#_tcH#unLK8{gT2V{z(=B?-CN)r(g;b}c(i>W01G$4@3
z4+<6gdg1;vcoe=j@Sua+$l4JL?{+P{(P~QFxvXuy%r+pg#@Z!<)|8ee!^{km4x?3F
zJEw(tUy#~Y`IR->!6pD7ES3*6I}{lB_4V{V>1!;4$pcNxE&TGcV0I<>Tu?_TS}&`5
zUIB98eU`|9PGR`H+(fd&(96Ltvu%g+bvwZpdz)`X-*xw*JypBNmn~SY^(`JZgT~MI
z4ogT~LFJTmlhv==(C1u?T<fp}25HCMFjyHJwmEK!wJ?b=N7}c%9lvu#tc{F(AqwQw
zeXS`XO>ORjh~bAc972Od5MM}Vbr6*<r>+@Qa2$Zw<CmPAbdw{rml~v$b``yx;C&f^
ze)rs<A}jJiyGHgjD5eV=^=u=sTce_hUPtfpRI6k2i4vb;=-bpax%<VHAbGQSVCVO-
zd;{H7eL9n;NdPf_>W2?U%ey~J-|HNz%$6Vb-u3m69sY@%<NSlw;Zw$VUKvcGEZ>!Y
z4i88B$qnh0XL*Mvhb<vHUf`E0v>4?TAUe`%5(6%{8S;@=I~Ufj@~J}*^;NFXK1TNe
zy4oPWdTshbMr4_fS}sEz=*q=B8D6cH{hMcH^784osq=5wj|Mmr@7qdg8R)-$_=ZVr
zEb!R1<#v|5gTqR2kKXeA39#e8H51ebJ194H2>P>$#V240Zj80bx8PKH8ESI`i+YO`
zUHQ^VNg}S|8BDMQCj%E6F=hcK!YK<>ypmY(`JCD@2A(Vmqr$QN#g0*-z&y%CjwVr!
zmU0#DYfv$=6hUEWNIMghI7^6zR<00;dRZDNE%v7gjJqBz>w)P!E`Y@XEe!~%Z>AG_
zUUih6(PB}~Avvje?r>9ldvmwe@H19)Y_$2zB(Cfoxb~}p4d0hWHU)fS3`{9t)gPvS
zJZv~*EF{s8A%dHj+)rCWvGk&(LwZe5{m<c8G(VAr$huoF`|<Dzn5Oqd)F<jp%eXkh
z=d}3b4#bb2Xq`W)xO;c)-3ErWsMuc$I>+UW>pmGC%k<s-J_l3D>P|npOBOf3_<YdI
z7cQ}y5!rRkmBIW>pM>~0gv__GEV>?M_<Z~6w&r<vUWoE)5u{S~=6hrh$L&MugL$y8
zoEDjp6Zg#W4sm*VPIp!6>FtfIun?-c%RX(%4`l3R5Zs<`Yb5!xGw8Xmr{oEUcWP9C
zG{0JGud@KmC>(pux~fx|gr7Q7DQ}xmPa7xJKR~=v7l%)XkSyK85<{_z5=9fN^8IkW
zs2%?dhR)*K+aJ#al`<DHp%`;BB4fP*6O)mJ?cUbqs94==GjmPS{czil&s9I?d~mv(
zXz@;bI+*L42{NI&h`^&~VKxOsj(-`XHO{+6Ke+m1OZDFA3?A#4S#?C*6-vkvPQX$q
zi6-p|MZyHArg_!dW7F0<TH#5*Ze@7O?@?H|T#CUANaSUxOz(3GldEs8p6M$oc~+JL
z3^q!M&o>cHT6|Ngr!}MFGB=k{V#eo4QsQWU5SgbCU`kmusrMtlV@)(R(MulvT!u7j
zW5KKDfyV%zkkre-oS)T16qCp&wIJe@L6%j~ppAKF!?w@MRTb6^Dx0iN-=Xz`0?}j<
z^TPKc3e-7(IYB0tk2B$ekDN)*tbT#V2kX~aa=5?mZiDDZJX~!e-sD;$(3}dfLydyP
zjHst;(I#=K9i-o%#;qy=H$Qw2ijIMGx@!>&$M+@oDBzL^FNc$mR48VE%fJI8s4X=E
z<m9o$#s%m0#oMr!UuP{Cy!x(4KK1qe2r(FAz&%&;m@P+#Ezay!c^aD#-J@KBvm#?o
z8m0w#r4z>iu_Yjl%So@zE_rW0PNYq|<eQK5AuTS4zZ5>ExGauu@X)6TGcUD4UJue^
z<%q;lc`}SQRS*68IYV~NQP)5h;)}2XXR^A?1njsW_dbbp{LGHMwa+H?s1y=H(WGFR
zLg%Eyc(m{FfFoL!59HdJ6ETBHN<0H*8Wm6<W$tG1NPo6$8~Fk%jxw2UF(-)6CVqR&
zf(I#t7RU~d4L25-NYBcT#ehBJqAYiJOMpJIwDb~68yGb8xAGEB%#T$(*svU3oVx<6
z2f6g(#uMd6r0P2~`O+(}{aS!kU!|mAb)vs@t++<Jk9&7iQ$dPBNk2an+&fg7?v+M9
z=3rxybnSsuy*5(@GR#x+>$)dKZSR6Ss*dkxlY0ql`BGl+Azj*?*T1ojw?tELqn5RA
zk6haf7ArG0F{s;6rMG}C<n>x9yY&d(*m+?~G*@$8lykG@JJX4{G;Z5<<q+)My$9UT
z%N%b<p588%sfBHON`6~~LTJ)APZNP*YB+d&0n2hThd$$IfT@+v<WX0;DG(+IX)W@7
zC~yBkIIk3Cx64NC;Ol-?^_HAmfY0#4cT?S^&Vj*JSLy4F>zeDVMN_TP-i}vu`0A_S
z-HF4>xwjjeo7^1>?QAWTEgOU91SH$CEl)2mcTLrpXx=!4y%t(0dUzI4W-qg-B8RxT
zA}bp&cf*!`S`qAU339$#klKuXwthTcJW>C4zsul5SBJ|GWz*UgPE~OGrs%8kzTJ@{
z8Z|Y0D<tw@H-X?0f-px~c@~EJ_)vQY>|qa(M`*E^Gb#bBi~Ue@`?Q|C7`w<E8>u!8
z0SI0i4iy;*AN2Z(s;Q}|q`7RV5Gj?Ysx8U83upwb;Jj@T_HjR7(;FC3!%4mGtlIPq
zIS>#&$8V`;m0$Le*Kxk&#Wqc@TP=!a-piNF7(Vc9|Ds32R0`D#YhlHD^RBsKGg;nW
z{ZT6J1k#x}KEg;ztlPUj(_dnfhCbmU=SCC{nHDczUxZfb#xTlZ(iFxu@#G66rg}CK
z8eg@m>&da4HeCdZk-^;Koa@#aqY3BainIC3gj$vBI=xtv7e5k>Z&nAaKFQc3vDmgV
zWaTHZYzYb*3>LG>vpUYwSPU!Oqnfy><7bNJ?>dYrG?`|O^r!4;Ru&pSwM<PF6QPyv
z5uX7}jxCk#%_#rMr4oUW-T$}ULH0#jay7TXi1%(mO5=Dk%hiQg7Gt<K=q;JW#+>KQ
za%l@G9-0@!fD{E4EkDi|m+fsB{lOz6+j8F+UT#CaOy}JK#mFdc)17?GXC)jjXAz)3
z`Yc5!1_A=t$Jg!EX(BNfrA`+8d+JDBqRJH0KWKDDtpq8CQ5q&J<%Ns$ij>P5Y{~Ul
zhOAkA^Yim_+0M_pz*Rpa4}I4Ce_i^%d~v_JzRs%FcU0A`H=hKlf|O-N9VdtLqcbSg
zt4`Zp+|e)%U8IFKZ#rOi?+V0t*7PI++jWo0WT2nZ0<WIwbJh<!w=^ca+Qvyi7xV&`
zmRd|OaD{#oxs?h3LZDAg>TL5K?Gt8ZJTq=t+j%1S`a~SDG^L;(H4wm22i$dKa2X<x
zikd+K!%rHpxh0YtL?tJgm=e>9jkk|=ZYM+&C$YwKje(k0v0ri%jf;YR`Y&h+9EW}_
zl1i70Ogt38IB&zFBx|J$Rudx#M{y)+&u~E^-i>b)5)MBpXxZ_tDl(RUiQhvp(D2~}
z0jAi`NS`!?KCxlXxzT?1B2NU+(u&K~=#JhQ%3wmF0g;i$y_EXn6A|<x$yu<`fxqc?
zz>c(^<tw!}jFJDXYaF!}AywdJ6sp5+DGF}?@ayN3>A`T05KtOV8uYa=MGyV^6p3&+
zT4*$ll$BSc%>GQ6<>cf@?QW`zJW(=><~rN;=#Mo%E+MTfWd>!2>60q13B8V{4Bpof
zpV+<IiQqSlBMr<487DU`ItX`tovX0=l)<6nZv~cK$7N9)p1-4hK54le!Y|F#A(tg<
zMn-Dc>u6;v7<FPc1RJUD;EP=OZz7AqMZq8XELyH%Td&*j%#d!d9gpI@ex*jHUGJa}
zTemRZl24dKxa7FA(p0k~juLU!Tm_G4x#mWvS8B|mM2c>xh<Ex0u`luR^0MCWV#COI
zJTh7}(G#Q(qTh&5kZ($9bj;pZM&?WQyjn=dv=!4ij#OluPjlG7PHJ_c(C215--$nK
zN%V49h1sU%3^z6yrk#;$c{bEu{UFu?0t5W+PA0L%WjjR4eK}+keIJ}KAZTCI1|K)~
zAmAG(z{-@!`5HNKmXmK&<{Q-DoaYh3sLr>>r3jv^_v;2EcVeQPs%Z0YWNC|oe9N9X
z<jt^ncF6tO?om-!8`HG6!y@_YhR#t5SQH{SIq!DAKkaOK%Z&}WB%Ee{vYX;;8p?9c
zQ8b`;mnel6IKLBhro9Bus3#4fZ2G*{_bIXM7z#(5UB}=62G3r)iU@v+CWE+>a>k?2
zgrPy0(v+DD$e)Pz@dPd}={|w!-+WG?A<kf+%NSo@wY7;WTyIQ_Zf)(<E8cDzhp?Qc
z#71zlmNGbC8)frI%b}Y&OuCB8=T(uRyTqbnT130@2;%=3J-{M2NK%|p6$8Z1ro5wb
z@O2pD4F%7u2)44iRFU!ZgNPd|$Kg5PJ;%9OY7I(b%J4A5p>bbV`6}I9l%1<&4%leq
z8R^izTdxo?d@^O3f4#rrD(BL(3#qitgaKbGoRghzF}dENz6Bc4aO}DP({B%~Q2EN^
zDK^%|{d{h{A%&uLVHD)e%uNGt5lGBW6uJiQ=PdWH9WoLeDzqrxMHMxacTk7lbRaH;
zKR(4ppV(+qM;G?^99~Wpv+GQGc_P5I?09PghvQ0?YJAIUMMR=RK|mWakqz@4kU}6v
z6OD+M>9dR_UntAhcY+Vge7y;C(hhyQTE2MK?&Z1N#zOmvY{jFgF2_<!Z`4l{Ix8W^
z<2EFI^Ym`WXHUJt_fZWB7m5zQtQ2KFAU!WGr77Qv{5D!66J{#pTWo5w$4qDa_D#dy
zZwmV+<;IChFx2NqVpwhPWsQp-sU;5!$Whi%R%^nMfADGZaeo8E{2CNrm9)0jvA7|x
zUdvqXTFs&<FD%&Q)ZTOfx7`{n7^}$59h#1Z0QdFb`c-=qQ3^=Trl3rV8KUm}vD%fk
z=#v5Q6k?GjM@T3dwzxQvcz;JTaw}vTOBXY-oS{7B8v(+pnI}n9FYCBMf@>4DJP&e;
z&fX`ukZ{_>k@Xt^Pt#^@LD#h$Mm9a0xbaDo(d&*Gp0>6;1!jmXs_oeUHzc)?U%x$7
zX?{i7TW}s~UmW9Rd0`jB$=8`|@@}D?*F{@B8;AOm><ytqoI*;hh;!BhjYrw;0q-m`
z8a-=iqv+TGD}mm(FE&Nu^legVD9}w;`av05Q=q9DlIqiEOchD9u!Q!=c-nVv+`jGf
zFz=l522J$>$1(TwqfJ(HEe6c_gxN}F&1=alL<rLU>T#UblD!3OoGv6){@x&jij9d`
zTv#(3O+}2k>TQ|0FbIB{#`UWN&AM$>xb7!B^A<}YpA2zyKCCKFVA@+&Z9%<-{<>El
z`k9`tSY_o&Iu$=As7Jh##hll-zs=f7%WF3Dt9><3UlWgmmn&>YRkDuLv0gvmXGo9W
zSqX_9(QH5hvf@V+(fGhgoiphO*Ava&OlZ2s8E7*Dl}rbbu?UdhP>fBvRx;EDGbE-f
z0EK5#(m?bOrvmatYGVnxShsj^(|-F`@jbP5V${#>(*t%=p+`{=B6th%vQCCtnT0gO
zmNnCU(@ozTPT7=AKEs3tw^#=#h4PlGsqys^^pkeAn49+!WDJq8X|<IrRk0`~RaBco
z+ryx+C+26H7}2?MryVze>ZmOOB-HXv7R)rwTj{nNa4~W-agZ5y-GPD=92^A-xzfwT
zPf8h;-el6S`HD%s+{eUQ6f6!i$6f{e`Lg}E05gsKHe`W8gO0E-)(;+t)y_5I;V%L^
z{r{Q%G-2kke}+>Um}N||Vi&j-cs#gTSqGyG{T^w${%aWpX<?A3{8WEG^w_y<Yu`t`
zmBwb-SiN$8*SSL-{Co=rEo|%r@6kmHW~4_^bMp>9+VN&UUao`!O+N5(FoX_4^)YbH
zg=x{~Lgn+>*P%@L$YP!<A7o6+LXLdFQi%YWU?Qw&I4TmvE?yC;a?ICU+La3V@Kjy>
z3Fz~l$q{^t6d;t-h}+_y`(vhHTdCg2K&xb6j@Ofn+||y~ds)tdS00Q`f@3b=JT!93
zS)XV{=8+FOmA7Gq$BF9DN>v?pHG$B{dUE`J4ZN*~e3WE9%Bk&>r)JY2H9TBpdCET%
z(aooQ)_%d}@W)KPzr0fvh>c7Nr-&u;xR=ZwLlVtJ(av7B`Y%ebYrF|LLVIvy6wv4p
zaG^A4DM;@*<j`{G{kx_jxZe;oCNd63UOtEObr`D&-P?Z{HHtr}D&oA5Mx1)IEknnE
zHo&8xAh@Agg%}N)c!c4mfEtF0y+!@Q)Fo36)nqU<le-wAju{IBnNH@vGgbzr3+gb|
zB-I}$3g;F{e~5Z5joo*2btuALt#KA@D!Gj6eNV7_&v&W-P`1*gL7jUDAQ-tC^yXHt
z_Z7A^JnQXu3_J<uH%ehLhkJRmMMO;*<)zv01`EsM<tyu?7$4rWx=U<p!ySe#OTY-;
zO8>(}N)cuN0%>2iR84Li*lc_aMZ=m-bk?D<(m^5CWU+BT5VI4(G6j>)e06UtV@XlU
zre&P_>Vxw((k+qt95<S_&A?p@qTo;j@*JOIuyNF!S1TZn(+eYRtgWq;;h-f_;)&_6
zg$o%$O2JIlBti^9Z4Y@kJva$qfmTpbf(gRe_ZmgK9$8N<<35bK@r#-SXe6d}+rO;!
zd9<v(oQcM5@1pl%DZHa^8hU2|NsK2ow;qW|_OPShHndYS;N-e^%5Ln+&lop)sZwSK
zmSCJHXPG-F*>VNEP6I8LNJswu?J-0y#N5{0-RhU4;)eQb$H~aw+aHJOqiGu20=h_a
z#eT6>NR^?^j2FYQR=49r)1(D&@eL`L8Hs}XniJoyBTEHT*QOHLhTa8u^h(V-X4aIg
z`zhL@ahLlA^hMEXYnL>8k;)*cNwAx4(|?F@{{!<>!q9y&Y9fab=L;XnG+?Z5B~s`m
zyvfV(cUnZQcJtG3vP~=5{c)Y2>>%aZCV}KOj`4}IN~+k!;y5G{4JQb@(*AaEcc)u8
zFv)v3s&_0WrDu+d;XUWBiCX$#3Oc^Z!87>P%W<W_uRrI0fAmW(4X-K#{L3X#1BNVZ
zLrpRe(?#t}>&ku>3HjluTOw~f%%}{V(=w&!3->(GGpk}GVgfj4)^ch@&&U2)J-nBd
zbs2u2bJ7*odKRl_1tMu>V)RI-bt}1cTi19wL|Q<W5DR%y?gI33O1U8)`X;ShJa!5B
z(2WhM5`r|PLAC=C!(@o)FtA$MJWm8<1z#~b@R#dW?tSemzr__-vYXB;7|}jTWyU~Z
zsG2JG<u}BapwNF|5ujckl1Q==e=vF7a|CIiVpti`o{+rAnnrDhIUa_>vt@zwE1zc%
zK|$<$(F{_<U~`4;4ipG{5uB|xO3Gw^k~9Gxp`scUznEk{A7XIgNqi_)2;rJ|2N{)W
z?^wowrG+j?3zV3Wkz!%+91=K<eT>rgGeQz|ZIY=nrFT2veSeQTiZ`Je?(E*4-X3o*
zwL_6GD<*%z7m7$5rg@Do7{E>uX4)$eX1WuT)+&~mAHz^ie30SBTaBpnB4~0kKz=~U
zOv_X^L|sd`t+1fvXIAK{W-^QVTRAfa#cy?mO@j2!j!J&bU7i!JZAvsud3<B<q+M6h
zGDiuElO%cdjtm8RXKrTg6j>}@6A6zoP{g7~5Ci)#IV$wp4cK%|X99k3+H2RpdKQRG
z!|4BV=Ks{OP<d`C6)L<;t^Yb<i)1|`8jrOU2nEC~hpNy>(WasaQ6347$l@u>$w&**
zlMrUW#_KICjPsU=w_U_I#*Ufx#e*ZEZ9w+@nLJaS(hzD2d!X~LrI7IG@pFd~FYFS@
zvhY|A4q;^fkdXIFrtQLDB}<8LV+Lmeu#{(++T*r~blD|fPoQ*Nky!y<#gv(te*g7k
zoe{0auVIsm6TEo{K^1`^zqe4Lpo4Hm1ebXR!@kuw4=g~jWQ66rTVp3-eRYPs@4^`*
z$u_j4QguW$4eE*ogyxH2I`xU<{1_l_k%ohfrFwoGeu_oC188B%Eo&`@Gea9VNi&dz
z_WM{a?m8h=npOwOVyuW2Pp9>=hnGiz{fZTdSS4Wiot*t=H8DuW_#p1%tDJ6%SZ=(2
z9MlB@t532<Ej2j=6<by+qXi92b$Q;CBs56Za?-Eq<zp(;6o`P~h#^8ycyx=<mV~5N
z01JwZ;+0pMZRAO}%RNP(cO?r7rVa7G0%<;P3@hUkV&~s%>w?*g!Y;G7m|?DKtLAe*
zJxV>2J;=#Eg)F-uyjlK(4EO2S+?7CM_vXiT%WINE4C$y^MsfP^e!|ZHj<8*G;Xi(i
zaVqQTQV)KMgv7MK-Y>Y8KRuR?w*oQWpj<lz;n9^J3XCM;UX!f6i<$G|t+SV%WdZ2b
zfz2UR2v~5WXoQ%&BrMM$Bb6__pzfmHlq^Ord`CHaK*mdQb@^67@R6{BZMZrZ@QN2q
zEy-kuF|XA$U~8e*s1-v>mP40GEG{?cKnj9GYP9GuRqi#wLPgncSf7o4XFg*_hFAO<
zAa9{nSIZ^OK&g?t+96~55o~~yZGpPe?^sm-r!p{q?CJeio3EtWvt6TIIgS%0D<9)D
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%0Aa0rsNT?F3v(C(!Y{rnV>Bha
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
O@pmLsg$V+-tD->M)|fT`

diff --git a/ThirdParty/lcov/.version b/ThirdParty/lcov/.version
deleted file mode 100644
index ad1509c1e..000000000
--- a/ThirdParty/lcov/.version
+++ /dev/null
@@ -1,3 +0,0 @@
-VERSION=1.14
-RELEASE=1
-FULL=1.14
diff --git a/ThirdParty/lcov/CHANGES b/ThirdParty/lcov/CHANGES
deleted file mode 100644
index 2e7086b99..000000000
--- a/ThirdParty/lcov/CHANGES
+++ /dev/null
@@ -1,3454 +0,0 @@
-commit 6c7ad581ab9ed66f80050970c0d559c6684613b7 (HEAD, tag: v1.14, origin/master, origin/HEAD, master)
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Thu Feb 28 18:01:39 2019 +0100
-
-    lcov: Finalize release 1.14
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-
-commit 29814f18ec207ebaefa7b41f6e5acc4eca6d7a7a
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Thu Feb 28 17:31:17 2019 +0100
-
-    geninfo: Fix missing FN: entries in result files
-    
-    geninfo sometimes fails to correctly collect function starting lines for
-    some source files, resulting in output files with missing FN: lines.
-    Also such functions are missing from the function list in HTML output.
-    
-    The problem occurs when
-      a) multiple source files contribute to a function implementation (e.g.
-         via including code), and
-      b) the source file that contains the initial function definition
-         is not the source file that contains the most function
-         definitions
-    
-    The problem occurs due to a heuristic in function graph_find_base() that
-    incorrectly determines the source file for a function in this situation.
-    
-    Fix this by using the first file that contributes to a function as the
-    base source file for that function. Only apply this change to data
-    collected using GCC versions 4 and above since earlier versions did not
-    produce stable file orders in graph files.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-    Reported-by: Joshua Cranmer
-
-commit 74bae96e8ef724eb9dbdf126adad17505375e149
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Thu Feb 28 16:15:22 2019 +0100
-
-    Makefile: Make Perl path install-time configurable
-    
-    Add support for specifying the Perl interpreter path used in installed
-    Perl scripts. If no path is specified, the default '/usr/bin/perl' is
-    used.
-    
-    Set variable LCOV_PERL_PATH to specify a different path, for example:
-    
-      make install LCOV_PERL_PATH=/usr/local/bin/perl
-    
-    Unset this variable to keep the current path:
-    
-      make install LCOV_PERL_PATH=
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-
-commit 0b378cba2c0f93d728627aa8750849d3c33de0e1
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Thu Feb 28 14:21:18 2019 +0100
-
-    bin,test: Use /usr/bin/env to locate script interpreters
-    
-    Make use of the /usr/bin/env tool to locate script interpreters. This is
-    needed to locate the correct interpreter in non-standard environments.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-    Suggested-by: Bjørn Forsman <bjorn.forsman@gmail.com>
-    Suggested-by: Mario Costa
-
-commit 2ff99aefbd0c80fe0cfddf1e09a596d7344533e1
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Thu Feb 28 14:09:42 2019 +0100
-
-    bin/*: Remove '-w' from interpreter specifications
-    
-    Replace '-w' flag from Perl interpreter specifications with 'use strict'
-    directive. This is done in preparation of using a more flexible
-    interpreter specification.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-
-commit 3b378b0e76be95971680056d864d0e13f4a08557
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Wed Feb 27 16:33:42 2019 +0100
-
-    geninfo: Fix errors while resolving /././ path components
-    
-    Trying to collect code coverage data for source code that contains
-    repeat ./ references in a path components fails with the following
-    error message:
-    
-      geninfo: WARNING: cannot find an entry for <name>.gcov in .gcno file,
-               skipping file!
-    
-    This is caused by a bug in path normalization function
-    solve_relative_path() that does not correctly process adjacent ./
-    references.
-    
-    Fix this by repeating the resolution of ./ references in path
-    components.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-    Reported-by: Joshua Cranmer
-
-commit 42b55f5a497d2286566d0dd411e3e52fd4d50469
-Author: iignatyev <igor.v.ignatiev@gmail.com>
-Date:   Wed Feb 6 11:35:02 2019 -0800
-
-    geninfo: preserve-paths makes gcov to fail for long pathnames
-    
-    geninfo uses '--preserve-paths' gcov option whenever gcov supports it, this
-    forces gcov to use a whole pathname as a filename for .gcov files. So in cases
-    of quite large pathnames, gcov isn't able to create .gcov files and hence
-    geninfo can't get any data. The fix replaces usage '--preserve-paths' with
-    '--hash-filenames' when it is available.
-    
-    Signed-off-by: Igor Ignatev <igor.v.ignatiev@gmail.com>
-
-commit 04335632c371b5066e722298c9f8c6f11b210201
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Fri Jan 11 13:53:33 2019 +0100
-
-    geninfo: Fix "Can't use an undefined value" error
-    
-    When run on data for source code that causes gcc 8 to generate
-    artificial functions, geninfo emits warnings and eventually aborts
-    processing:
-    
-      geninfo: Use of uninitialized value in hash element at
-               /usr/local/bin/geninfo line 3001.
-      geninfo: Can't use an undefined value as an ARRAY reference at
-               /usr/local/bin/geninfo line 2889.
-    
-    This problem was introduced by commit 9aa0d14a ("geninfo: Ignore
-    artificial functions during --initial"). It is the result of an
-    incomplete removal of artificial functions from internal data.
-    
-    Fix this by explicitcly removing known artificial functions after
-    parsing of graph files completes.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-    Reported-by: Steven Peters <scpeters@osrfoundation.org>
-
-commit 9aa0d14af4446ef46d80356849a97bc961a91f97
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Thu Jan 10 13:20:15 2019 +0100
-
-    geninfo: Ignore artificial functions during --initial
-    
-    Graph files generated by gcc 8 may contain "artifical" functions that do
-    not exist in a source file. geninfo incorrectly generates coverage data
-    for these functions when run with option --initial.
-    
-    Fix this by filtering out artifical functions when generating initial
-    coverage data.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-    Reported-by: Marcin Konarski <marcin.konarski@codestation.org>
-
-commit 1e0df571198229b4701100ce5f596cf1658ede4b
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Thu Jan 10 11:39:07 2019 +0100
-
-    geninfo: Fix data collection for files containing templates
-    
-    When using gcc 8, lcov/geninfo produces corrupt coverage output for
-    source code that contains templates or other constructs that cause gcov
-    to produce multiple versions of output for some lines and branches.
-    
-    This is caused by an incorrect check for duplicate output in function
-    read_gcov_file() that is triggered when a template consists of multiple
-    lines, or contains branches.
-    
-    Fix this by ensuring that duplicate lines in per-instance gcov output are
-    correctly ignored. Only the initial occurrence of each line containing
-    the combined coverage of all instances will be processed by geninfo.
-    
-    Note that for branch coverage, gcov doesn't provide a combined view and
-    geninfo processes all branches provided. This should not be a problem
-    though as genhtml will combine the branch data when generating HTML
-    output.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-
-commit abd8bed2b013334d4ef978abadbfff6cc6f3d55d
-Author: MarcoFalke <falke.marco@gmail.com>
-Date:   Tue Jan 8 12:49:00 2019 +0100
-
-    genhtml: Unconditionally include anchor for each named line
-    
-    This helps with referencing the line in the html when sharing links.
-    
-    Signed-off-by: MarcoFalke <falke.marco@gmail.com>
-
-commit 28675dc7564aaa1ad231a7ac23106512a3956d68
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Tue Dec 18 13:07:58 2018 +0100
-
-    genhtml: Use gmtime for SOURCE_DATE_EPOCH conversion
-    
-    By changing that localtime to gmtime the "Known bug" section of the
-    commit message can be removed.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-    Suggested-by: Bjørn Forsman <bjorn.forsman@gmail.com>
-
-commit 180286bec651928c41de4d6ce3a8760678b38f60
-Author: Bjørn Forsman <bjorn.forsman@gmail.com>
-Date:   Tue Dec 4 14:30:28 2018 +0100
-
-    genhtml: honor the SOURCE_DATE_EPOCH variable
-    
-    Implement the SOURCE_DATE_EPOCH specification[1] for reproducible
-    builds. If SOURCE_DATE_EPOCH is set, use it as timestamp instead of the
-    current time.
-    
-    In this context, reproducible builds means reproducible HTML coverage
-    reports.
-    
-    Known bug: the specification[1] says to defer converting the timestamp
-    to local timezone at presentation time. This is currently not happening;
-    it's converted at build time.
-    
-    [1] https://reproducible-builds.org/specs/source-date-epoch/
-    
-    Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com>
-
-commit 41e07cadeeae3054ac22202d5b0b0f0ef6e26467
-Author: Bjørn Forsman <bjorn.forsman@gmail.com>
-Date:   Tue Dec 4 14:30:27 2018 +0100
-
-    Tolerate CDPATH being set
-    
-    If CDPATH is set, cd will print the path it enters, resulting in TOOLDIR
-    containing the path twice, separated by a newline.
-    
-    Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com>
-
-commit a3bbe8f0398a3c36b4228cc173e4739d27a863e1
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Mon Dec 10 13:58:10 2018 +0100
-
-    CONTRIBUTING: Clarify patch format requirements
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-
-commit e6750800fe4cb89eda1ff80b7a5fe70fe87ede36
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Tue Nov 13 17:28:17 2018 +0100
-
-    geninfo: Fix accounting of basic blocks in exceptional paths
-    
-    Basic blocks that are not executed and are only reachable via
-    exceptional paths are marked with a '%%%%%' marker in the GCOV output of
-    current GCC versions. Fix geninfo to also recognize this marker.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-    Reported-by: trotux (github user)
-
-commit 94eac0ee870e58630d8052dca1181b0cf802525f
-Author: Peter Oberparleiter <oberpar@linux.ibm.com>
-Date:   Mon Jul 16 13:24:58 2018 +0200
-
-    lcov: Fix branch coverage summary
-    
-    When combining two data files A (without branch coverage data) and B
-    (with branch coverage data), lcov will incorrectly report no branch
-    coverage data for the resulting file in program output, even though the
-    resulting file contains branch coverage data. This only happens when A
-    is specified first during the add operation.
-    
-    This is due to a bug in lcov that loses the correctly combined branch
-    coverage data internally in function brcount_db_combine() when its first
-    parameter is undefined. Fix this by ensuring that the first parameter is
-    an empty hash reference instead.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
-
-commit a5dd9529f9232b8d901a4d6eb9ae54cae179e5b3
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Wed Mar 7 14:18:55 2018 +0100
-
-    geninfo: Add gcc 8 support
-    
-    Fix errors and incorrect data when trying to collect coverage data
-    for programs compiled with gcc 8.
-    
-    Covers the following gcov-related changes in gcc:
-    
-    .gcov-file format:
-      - Line coverage data can appear multiple times for the same line
-      - Line coverage count can be suffixed by '*' to indicated unexecuted
-        basic blocks in that line
-    
-    .gcno-file format:
-      - new header field 'support unexecuted blocks flag'
-      - new function record fields 'column number', 'ending line number',
-        and 'compiler-generated entity flag'
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit c30d88a3a8096dbb3f968de999480c3dc2dedb5f
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Tue Jan 30 15:12:09 2018 +0100
-
-    genhtml: Implement option to show miss counts
-    
-    Add new command line option --missed that can be used to show the
-    number of missed lines, functions, or branches.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 999abf2447b4df373b135dc3f8ee317350bd95f8
-Author: Benoit Belley <Benoit.Belley@autodesk.com>
-Date:   Fri Oct 6 10:01:28 2017 -0400
-
-    Adding the --include and --exclude options to lcov and geninfo
-    
-    * The --include command-line option allows the user to specify a regular
-      expression for the source files to be included. The command-line
-      option can be repeated to specify multiple patterns. The coverage
-      information is only included for the source files matching at least
-      one of the patterns.
-    
-      The "lcov --capture --include" (or "geninfo --include") option is
-      similar in functionality to the "lcov --extract" command-line
-      option. But, by directly using applying the pattern while capturing
-      coverage data one can often avoid having to run "lcov --extract" as a
-      second pass.
-    
-    * The --exclude command-line option allows the user to specify a regular
-      expression for the source files to be excluded. The command-line
-      option can be repeated to specify multiple patterns. The coverage
-      information is excluded for source files matching at least one of the
-      patterns.
-    
-      The "lcov --capture --exclude" (or "geninfo --exclude") option is
-      similar in functionality to the "lcov --extract" command-line
-      option. But, by directly using applying the pattern while capturing
-      coverage data one can often avoid having to run "lcov --remove" as a
-      second pass.
-    
-    * On one of our code base at Autodesk, this speeds-up the generation of
-      HTML code coverage reports by a factor of 3X.
-    
-    Signed-off-by: Benoit Belley <benoit.belley@autodesk.com>
-
-commit b6a11368c3cdc86c4e147ccd8e539918dfe37900
-Author: Ziqian SUN (Zamir) <zsun@redhat.com>
-Date:   Wed Jul 19 10:58:24 2017 +0800
-
-    Resolve some rpmlint issue in SPEC.
-    
-    Following messages reported by rpmlint on RHEL is fixed by this patch:
-    lcov.src: W: invalid-license GPL
-    lcov.src:9: W: hardcoded-path-in-buildroot-tag
-    /var/tmp/%{name}-%{version}-root
-    lcov.src: E: specfile-error warning: bogus date in %changelog: Fri Oct 8
-    2002 Peter Oberparleiter (Peter.Oberparleiter@de.ibm.com)
-    lcov.noarch: W: non-conffile-in-etc /etc/lcovrc
-    
-    Signed-off-by: Ziqian SUN (Zamir) <zsun@redhat.com>
-    [oberpar@linux.vnet.ibm.com: Corrected license to GPLv2+]
-
-commit a77a7628ef5377c525a0d4904cc0b73eeede4d7c
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Fri Apr 7 15:43:28 2017 +0200
-
-    genhtml: Reduce path resolution overhead
-    
-    Reduce overhead when reading coverage data files by consolidating
-    calls to Cwd:cwd().
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 526c5148ac0add40ef1224d2cdabdec73ce3f899
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Fri Apr 7 15:37:52 2017 +0200
-
-    genhtml: Reduce load times for complex coverage data files
-    
-    genhtml uses a significant amount of time loading coverage data files
-    containing complex branch coverage data (i.e. data with a large number
-    of branches per basic block). Most of this time is spent storing
-    branch coverage data in a vector-based data representation, with an
-    unnecessary amount of cross-checking being done for existing branch
-    data.
-    
-    Fix this by replacing the vector based data representation by two
-    separate representations, scalar for storage and hash for processing,
-    and by moving cross-checking out of the hot path. This results in a
-    significant speedup at the cost of a minor increase in memory usage.
-    
-    Test results for "make -C genhtml_output/ SIZE=large":
-    
-    Original:
-      6 tests executed, 6 passed, 0 failed, 0 skipped (time 768.4s, mem
-      893.8MB)
-    
-    Patched:
-      6 tests executed, 6 passed, 0 failed, 0 skipped (time 202.3s, mem
-      908.10MB)
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 0f07133f184af6670bdf1edf39fca9d2e90e9ad2
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Fri Apr 7 14:38:22 2017 +0200
-
-    test: Add self-tests for genhtml
-    
-    Add some tests for checking basic functionality of genhtml.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 544a6951db25679792bb0648006a897ea564d883
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Fri Apr 7 14:32:47 2017 +0200
-
-    genhtml: Ensure stable block order in branch output
-    
-    Sort order of basic blocks in output of branch coverage data. This
-    allows for a better comparison of output between test cases.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 477957fa4c6c104d5842911682ec17d6ad2d2980
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Thu Apr 6 12:28:11 2017 +0200
-
-    lcov: Reduce load times for complex coverage data files
-    
-    lcov uses a significant amount of time loading coverage data files
-    containing complex branch coverage data (i.e. data with a large number
-    of branches per basic block). Most of this time is spent storing
-    branch coverage data in a vector-based data representation, with an
-    unnecessary amount of cross-checking being done for existing branch
-    data.
-    
-    Fix this by replacing the vector based data representation by two
-    separate representations, scalar for storage and hash for processing,
-    and by moving cross-checking out of the hot path. This results in a
-    significant speedup at the cost of a minor increase in memory usage.
-    
-    Test results for "make test SIZE=large":
-    
-    Original:
-      17 tests executed, 17 passed, 0 failed, 0 skipped (time 1883.9s, mem
-      2459.0MB)
-    
-    Patched:
-      17 tests executed, 17 passed, 0 failed, 0 skipped (time 283.6s, mem
-      2544.2MB)
-    
-    Note that this fix only applies to the lcov tool. The same work is
-    necessary for genhtml.
-    
-    This approach was inspired by a patch by creich.3141592@gmail.com.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 3b397a3f3acdb62080e8366130758cb34703cfbf
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Thu Apr 6 09:01:36 2017 +0200
-
-    test: Improve test framework
-    
-    Various improvements to lcov's self-test framework:
-     - Add test case for lcov --diff
-     - Add new verbosity level
-     - Enable normalization of coverage data files from stdin
-     - Fix lcov_add_concatenated4 test name
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 53a6ce8ef604173b6de874a534a30121392d7cd0
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Thu Mar 30 15:42:56 2017 +0200
-
-    lcov: Add self-tests
-    
-    Add some tests for checking basic functionality of lcov. To run these
-    tests, type:
-    
-    	make test
-    
-    in either the top-level directory, or the test/ sub-directory.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 9753d5c0da107919537e91e504551e4ab3bccc2f
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Thu Mar 30 15:31:34 2017 +0200
-
-    lcov: Fix output on stderr for --summary
-    
-    Some functions of lcov erroneously print informational output to stderr
-    instead of stdout as expected. Fix this by inverting the "to_file" logic
-    in lcov to a "data_stdout" logic. Affected functions are --summary,
-    --reset and --list.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 25f5d38abad20eeaa407f62f53c3c00dfbbd0bf3
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Mon Mar 6 09:51:00 2017 +0100
-
-    lcovrc.5: Add genhtml_demangle_cpp default and CLI reference
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 66db744a1d63c5d3b1dee2d8a2ce76e6e06c7255
-Author: Katsuhiko Nishimra <ktns.87@gmail.com>
-Date:   Fri Mar 3 17:47:48 2017 +0900
-
-    Support passing demangle-cpp option via lcovrc
-    
-    This patch allows users to passing the demangle-cpp option to genhtml
-    via lcovrc, alongside with CUI.
-    
-    Signed-off-by: Katsuhiko Nishimra <ktns.87@gmail.com>
-
-commit b6fb452addaa6a33dcb37c101879b8b5e1e0c34c (tag: v1.13)
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Mon Dec 19 15:20:40 2016 +0100
-
-    lcov: Finalize release 1.13
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit daca8d9febe52ccf1976240a3b48ffc350dec902
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Mon Dec 19 14:36:00 2016 +0100
-
-    geninfo: Fix 'unexpected end of file' error
-    
-    Use the compiler version as stored in the .gcno file to determine if
-    the file contains function records with split checksums. This fixes
-    the following problem that can occur when lcov is run using a gcov
-    tool of GCC version 4.7 and above on .gcno files compiled with a
-    version below 4.7:
-    
-      # lcov -c -d . -o test.info --initial
-      [...]
-      geninfo: ERROR: test.gcno: reached unexpected end of file
-    
-    Also add missing lcov version to --debug output.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit a90d50e97cb49ea712c94d91cdef1cc21a3c7986
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Wed Dec 14 11:00:08 2016 +0100
-
-    lcov: Remove use of install -D option
-    
-    Some versions of the install tool don't support the -D option, causing
-    a 'make install' call to fail. Fix this by replacing the -D option with
-    two calls to install, first to create all target directory components,
-    then to install the actual files.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-    Reported-by: <deanyang@tencent.com>
-
-commit 6ec3f2398d22e605c1a8019541fb32d26d18044b
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Fri Oct 7 09:47:35 2016 +0200
-
-    genhtml: Fix warning with small genhtml_line_field_width
-    
-    On systems with Perl versions 5.21 and above, genhtml prints a warning
-    similar to the following during processing:
-    
-      genhtml: Negative repeat count does nothing at bin/genhtml line 3854,
-               <SOURCE_HANDLE> line 4.
-    
-    This is due to size calculations resulting in a negative number of
-    padding characters when genhtml_line_field_width is lower than the size
-    of the strings to pad (9). Fix this by disabling padding in these cases.
-    
-    Reported-by: xaizek@openmailbox.org
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit d7cc7591b3a7cc1ec95371d04e4fc46f10b3fd54
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Tue Oct 4 09:50:52 2016 +0200
-
-    geninfo: Fix gcov version detection for XCode 8.0
-    
-    The LLVM gcov version included in XCode 8.0 reports its version in a
-    format that is not understood by geninfo, resulting in the wrong format
-    of coverage data files being expected. Fix this by reworking gcov
-    version detection in geninfo to be more robust.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 68320d932c5ee5537ae1c287fe52603ae2fecf8c
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Mon Aug 22 15:54:56 2016 +0200
-
-    lcov: Update installation mechanism
-    
-    Change default installation location to /usr/local to prevent
-    conflicts with files installed by package managers (reported by
-    Gregory Fong). To achieve this, rename PREFIX to DESTDIR and
-    introduce actual PREFIX Makefile variable and update spec file
-    to install packaged files to previous locations.
-    
-    Also fix spec file to not announce ownership of system directories
-    (reported by and based on patch by Jiri Kastner <jkastner@redhat.com>).
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 04a3c0ed1b4b9750b2ac5060aac0e6d5a3b9da7f
-Author: Benoit Belley <benoit.belley@autodesk.com>
-Date:   Mon Apr 4 18:16:54 2016 -0400
-
-    Pass --no-strip-underscore to c++filt on OS X
-    
-    * The --no-strip-underscope flag is necessary on OS X so that symbols
-      listed by gcov get demangled properly.
-    
-       From the c++filt man page: "On some systems, both the C and C++
-       compilers put an underscore in front of every name.  For example, the
-       C name "foo" gets the low-level name "_foo". This option tells c++filt
-       not to remove the initial underscore.  Whether c++filt removes the
-       underscore by default is target dependent."
-    
-    Signed-off-by: Benoit Belley <benoit.belley@autodesk.com>
-
-commit 632c25a0d1f5e4d2f4fd5b28ce7c8b86d388c91f
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Tue Mar 8 10:51:51 2016 +0100
-
-    lcov: Fix output files being created in / directory
-    
-    When a warning is emitted by lcov before creating an output file,
-    e.g. when a negative coverage count was found while combining
-    tracefiles, lcov tries to create the output file in the root
-    directory (/) instead of the current working directory.
-    
-    This is a result of lcov's warn handler calling a temp file cleanup
-    routine that changes directories to / before trying to remove its
-    temporary directory.
-    
-    Fix this by removing the temp cleanup call from the warn handler.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit e32aab1b4c85503a6592a91326c4b362613e1d66
-Author: Gabriel Laskar <gabriel@lse.epita.fr>
-Date:   Wed Feb 10 09:56:18 2016 +0100
-
-    lcov: Fix --remove pattern matching
-    
-    The --remove option of lcov now consider the pattern passed as parameter
-    as a full path, and not only a part of the filename.
-    
-    This behavior was discovered by using AX_CODE_COVERAGE[1] m4 macro from
-    a directory in $HOME/tmp. The macro itself calls lcov with
-    `--remove "/tmp/*"`.
-    
-    [1]: https://www.gnu.org/software/autoconf-archive/ax_code_coverage.html
-    
-    Signed-off-by: Gabriel Laskar <gabriel@lse.epita.fr>
-
-commit 79e9f281ea893b2f6498b4bad79173b1414aa055
-Author: Reiner Herrmann <reiner@reiner-h.de>
-Date:   Fri Oct 30 20:26:59 2015 +0100
-
-    lcov: use UTC to get timezone-independent date
-    
-    The date is used for updating the time inside manpages.
-    If localtime is used, the date could vary depending on the user's
-    timezone. To enable reproducible builds, UTC is used instead.
-    
-    Signed-off-by: Reiner Herrmann <reiner@reiner-h.de>
-
-commit de33f51b49dc6d01a285aa73990f03e7d982beb2 (tag: v1.12)
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Mon Oct 5 17:37:40 2015 +0200
-
-    lcov: Finalize release 1.12
-    
-     - Use full git describe output as tool version
-     - Update version numbers and last-changed-dates in man pages,
-       spec and README file
-     - Replace static CHANGES file with git log
-     - Switch Makefile logic to use mktemp for generating a temporary
-       directory
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 1ad4f7779b7721e311e552209e110e08bbf18fa1
-Author: Denis Abramov <abramov.denis@gmail.com>
-Date:   Mon Sep 21 09:29:20 2015 +0200
-
-    geninfo: Added support for Xcode 7.0 gcov version handling
-    
-    With Xcode 7.0 LLVM gcov keeps version information on the first line.
-    E.g. gcov --version yields: Apple LLVM 7.0.0 (clang-700.0.65)
-    
-    Signed-off-by: Denis Abramov <abramov.denis@gmail.com>
-
-commit c3602ea8e598deda4afff603bb123caa98eef159
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Mon Aug 3 11:05:51 2015 +0200
-
-    genhtml: Allow prefix paths with spaces
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit a3572971367198ef0febe476052640bd09bec931
-Author: Gilles Gouaillardet <gilles@rist.or.jp>
-Date:   Thu Jul 30 14:11:57 2015 +0900
-
-    genhtml: support a comma separated list of prefixes
-    
-    the --prefix option of genhtml now takes a comma separated list of prefixes
-    instead of a single prefix.
-    this can be required when running lcov vs projects configure'd with VPATH
-    and in which source files are both in the source and build directories.
-    
-    Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
-
-commit 997f32ae85717cd47d2305d7cd7ccce3ffa1abe6
-Author: Gilles Gouaillardet <gilles@rist.or.jp>
-Date:   Tue Jun 23 14:28:22 2015 +0900
-
-    Fix find command line
-    
-    find xxx -name \*.gcda -type f -o type l
-    does return :
-    - all files with the .gcda suffix
-    - all symbolic links
-    
-    the updated command line now returns
-    - all files with the .gcda suffix
-    - all symbolic links with the .gcda suffix
-    
-    Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
-
-commit 533db4e78b54ae01e023d00c1fec5dddaaaf37e6
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Wed Jun 17 17:54:20 2015 +0200
-
-    lcov: Fix capture for package files containing graph files
-    
-    Depending on whether package files contain graph files, data should be
-    collected from the unpacked package file directly, or from the build
-    directory after linking data files. This approach fixes problems when
-    capturing coverage data via a package from a directory containing graph
-    files.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit a2a8b376ec5e9e5082a0cbb935137d6a8f526870
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Wed Jun 17 17:34:33 2015 +0200
-
-    lcov: Fix .build_directory file not being deleted
-    
-    Using option --to-package while capturing coverage data creates a
-    temporary file named ".build_directory". Currently this file is not
-    properly removed at the end of processing due to a changed CWD. This
-    patch fixes this problem by reverting to the original CWD before trying
-    to remove the temporary file.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit b9de825f1fe018f381c8859ee0f3f4af15122c7a
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Tue Jun 16 13:53:00 2015 +0200
-
-    lcov: Enable userspace package capture with only data files
-    
-    Previously lcov's --from-package capture mechanism required
-    that .gcno files and source were present on the test machine.
-    
-    This patch modifies --from-package capturing to work when
-    only .gcda files are present in the package captured on the
-    test machine. It works by linking the .gcda files collected
-    on the test machine into their natural location on the build
-    machine. This requires existing .gcda files to be removed.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 0e4f0908aed3e1a071d5435c36c18cd493f0c309
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Tue Jun 16 13:33:54 2015 +0200
-
-    lcov: Make package handling more robust
-    
-    Apply some changes to --from-package and --to-package handling
-    to better handle failures:
-    
-     - Abort if tar tool is not available
-     - Abort if no data file is found in package file
-     - Ensure that temporary directories can be deleted
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit f87d980929a5a06d49d0a6856f6c3314418c27ef
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Tue May 12 17:28:44 2015 +0200
-
-    genhtml: Rework c++filt name demangling
-    
-    When running genhtml with command line option --demangle-cpp, do not
-    merge function call data based on demangled function names. Instead mark
-    duplicate function entries in the function view with a version suffix
-    (.<number>). This resolves problems with entries for functions that
-    demangle to the same name, but begin on different lines according to GCC
-    (e.g. virtual destructors).
-    
-    Reported-by: Lukasz Czajczyk <lukasz.czajczyk@gmail.com>
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 2e872175cbba2c09c9025da2660edf0b4abb55cb
-Author: Daniel Fahlgren <daniel@fahlgren.se>
-Date:   Wed Apr 22 15:17:10 2015 +0200
-
-    geninfo: make line exclusion markers configurable
-    
-    This patch exposes the variable $excl_line and $excl_br_line so they can
-    be set in the configuration file. It is not always possible to add the
-    exclusion markers to the code with reasons like third party code,
-    company policy, legacy code, no commit access etc.
-    
-    One obvious use case is to exclude assert() from the branch coverage and
-    abort() from line coverage. They are never meant to be triggered unless
-    something is wrong. Other use cases can be custom error handling macros
-    or macros that depend on endianness, like htons().
-    
-    Signed-off-by: Daniel Fahlgren <daniel@fahlgren.se>
-
-commit 10b11eaa178976d1433007adb2188d05b8605be6
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Mon Nov 10 17:17:23 2014 +0100
-
-    geninfo: Ignore empty .gcno files with --initial
-    
-    Some versions of GCC create empty .gcno files which cause geninfo
-    to abort processing with an error message:
-    
-      geninfo: ERROR: dummy.gcno: reached unexpected end of file
-    
-    Fix this problem by skipping empty .gcno files.
-    
-    Reported-by: Maarten Hoes <hoes.maarten@gmail.com>
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit f9d8079646aa906518c4ab7d326504e6837532a7
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Mon Nov 10 16:54:08 2014 +0100
-
-    lcov: Fix warning when specifying --rc
-    
-    Current Perl versions report the following warning when using the --rc
-    option of lcov:
-    
-      lcov: Use of each() on hash after insertion without resetting hash
-      iterator results in undefined behavior
-    
-    Fix this warning by not modifying the hash variable that is being
-    iterated on. Also add the missing whitespace fix-up of --rc parameters
-    to genhtml.
-    
-    Reported-by: Maarten Hoes <hoes.maarten@gmail.com>
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 2a634f6caa98f979606189ec3ee98f4cac270b97
-Author: Philip Withnall <philip.withnall@collabora.com>
-Date:   Mon Nov 10 14:58:34 2014 +0000
-
-    genhtml: Support relative source filenames in SF keys
-    
-    Some tools which generate .info files generate relative filenames for
-    the ‘SF’ keys. For example, nodeunit’s lcov output does. When genhtml is
-    run with --output-directory, it calls chdir() which breaks relative
-    lookup of the source files. Fix that by resolving all source filenames
-    to absolute paths when loading an info file, resolving any relative ones
-    using the info file’s path as a base.
-    
-    Signed-off-by: Philip Withnall <philip.withnall@collabora.co.uk>
-
-commit b4344c6a5d3c434ca0d801c197a09cfdeecb3f32
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Fri Sep 26 13:11:18 2014 +0200
-
-    man: Add description for --precision and genhtml_precision
-    
-    Add man page sections for genhtml's command-line option --precision
-    and lcovrc configuration setting genhtml_precision. Also add an
-    example configuration setting in lcovrc.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit aa1217412f1e8b540010fea5ca9844b9e4699e54
-Author: Euccas Chen <euchen@qti.qualcomm.com>
-Date:   Fri Sep 26 12:53:29 2014 +0200
-
-    genhtml: Implement option to specify coverage rate precision
-    
-    Add command line support and config file support for specifying the
-    coverage rate precision, valid precision range: [1,4].
-    
-    Signed-off-by: Euccas Chen <euchen@qti.qualcomm.com>
-
-commit 4d4eba1a8b5e7d2a6c5e93c0a50264da1a5c5540
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Wed Jun 25 09:41:59 2014 +0200
-
-    get_version.sh: Remove - characters from release string
-    
-    Replace - with . in release strings to fix the following build
-    error in the dist Makefile target:
-    
-      error: line 4: Illegal char '-' in: Release: 4-g1d44b2a
-      make: *** [rpms] Error 1
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit ffbd3e08cc0871842b2205b0b73c2ae8f3ad02e8
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Wed Jun 25 09:25:50 2014 +0200
-
-    genhtml: Improve demangle error message
-    
-    Improve error message that is shown when there are mangled function name
-    entries on different lines that demangle to the same clear text function
-    name.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 1d44b2a090aa933b15e4cafc1a440ccb390df92e
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Tue Jun 24 17:45:34 2014 +0200
-
-    geninfo: Fix error when using --demangle-cpp
-    
-    Using genhtml's --demangle-cpp option on data produced with recent GCC
-    versions (at least 4.8 and 4.9) can result in an error message similar
-    to the following:
-    
-      genhtml: ERROR: Demangled function name _ZN3subD2Ev  maps to different
-               lines (5 vs 4)
-    
-    The reason for this error is an unexpected sequence of lines records
-    in a .gcno file. These records mention line numbers as belonging to a
-    function which occur before the initial line number of that function
-    as reported by the corresponding function record.
-    
-    Fix this problem by retaining the order of lines belonging to a function
-    as found in the .gcno file. This way geninfo will consistently use the
-    initial line number as reported by the function record when merging
-    function data during the demangling process.
-    
-    Reported-by: Alexandre Duret-Lutz <adl@lrde.epita.fr>
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 566e5ec7e69a03612e1ed4961779d939af180d66
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Wed Jun 18 16:05:29 2014 +0200
-
-    lcov: Remove unused files
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit c76172bfe630520e217ecc0bca8f18481c4c33b0
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Wed Jun 18 16:01:05 2014 +0200
-
-    README: Fix typo
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit a6b10a41056cd10c7b735e259fee81f1865c2109
-Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-Date:   Wed Jun 18 15:50:04 2014 +0200
-
-    lcov: Remove CVS artifacts
-    
-    Replace CVS specifics in the build environment and tools source with
-    Git mechanisms:
-     * CONTRIBUTING and README file now refer to github for the primary
-       source location
-     * When run from a Git repository, the tools dynamically determine the
-       Git version using 'git describe'
-     * When installed into the file system, the version information is
-       fixed with the current Git version
-     * When preparing distribution files, the version at the time of
-       preparing the files is written to file ".version"
-    
-    Also add a .gitignore file to filter out the most frequent temporary
-    file types.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit fa2a991cf6fad37fec7650b95be705df143e058a (tag: v1.11)
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri May 23 08:56:17 2014 +0000
-
-    lcov: finalizing release 1.11
-
-commit e2729beea0d7769ef0e992c27a294b0742a6ac77
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri May 23 08:47:10 2014 +0000
-
-    CHANGES: update
-
-commit 866d187602bfc2e3a8199f4e9e9430ef38f106a8
-Author: Jeffrey Hutzelman <jhutz@cmu.edu>
-Date:   Tue May 20 14:12:55 2014 +0000
-
-    lcov: Sort branches in unnamed blocks first
-    
-    When processing branch coverage data, consider branches in "unnamed"
-    blocks to come before other blocks on the same line, so that they
-    appear in the correct order in HTML output.
-    
-    This is accomplished by using block number -1 for unnamed blocks,
-    instead of 9999 as was previously done.  In branch data vectors, this
-    is reprsented by the value $BR_VEC_MAX, which is defined to be the
-    largest value representable in the field width used.  This same value
-    is also used in .info files, for backward-compatibility with regular
-    expressions used to parse these files.  As a result, .info files
-    generated by versions of lcov with this change can be read by older
-    versions, though branch results will still appear out of order.
-    
-    Signed-off-by: Jeffrey Hutzelman <jhutz@cmu.edu>
-
-commit 17c0edec32193b9e8058908447d3eb403d76c8de
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu May 15 10:23:45 2014 +0000
-
-    lcov: Update man page
-    
-    Add missing description for command line parameter value.
-    
-    Reported-by: sylvestre@mozilla.com
-
-commit c0958139e015805cce15b60b740c735690ad4002
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Apr 14 12:14:55 2014 +0000
-
-    genhtml: Implement option to allow HTML in test description
-    
-    Add lcovrc directive genhtml_desc_html to allow using HTML markup in
-    test case description text.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 4f2c3aefcfcf816806da83a8609bd743eb227d37
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Apr 14 11:24:05 2014 +0000
-
-    genhtml: Check for proper description file format
-    
-    Ensure that description files contain test name lines before test
-    description lines. This fixes a "use of uninitialized value" warning
-    in genhtml.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 3a68239905c28a7c3bfac52172a254872d6a7aa7
-Author: Jonah Petri <jonah@petri.us>
-Date:   Mon Apr 14 11:06:21 2014 +0000
-
-    lcov: make geninfo compatible with LLVM's gcov
-    
-    These changes are needed to make geninfo compatible with LLVM's gcov:
-    * Use --version rather than -v to probe version info
-    * Convert LLVM gcov version numbers to the GCC gcov version they emulate
-    * Translate short options into their equivalent long option capabilities
-    
-    Signed-off-by: Jonah Petri <jonah@petri.us>
-
-commit a74bdeeae0383b197b1dafa44d01a54129fb3d7c
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 8 13:26:04 2014 +0000
-
-    genhtml: Reduce hash copying while adding up files
-    
-    Reduce copying effort and memory usage. Based on similar patch for
-    lcov by olly@survex.com.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit c6b4d91fdf667cfca17213742e2e04f6281ebed4
-Author: Olly Betts <olly@survex.com>
-Date:   Wed Jan 8 13:14:05 2014 +0000
-
-    lcov: Avoiding copying hashes passed to add_counts function
-    
-    This patch reduces memory usage - without it lcov was failing every time
-    for me with out of memory errors in a VM with 1GB of RAM and 1GB of
-    swap, but with it lcov completes every time.
-    
-    It's presumably also faster to avoid these copies.
-    
-    Signed-off-by: Olly Betts <olly@survex.com>
-
-commit cf6f2e685510da62bd2eb1f386f71d57c41f4594
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Dec 13 16:09:05 2013 +0000
-
-    geninfo: Tolerate garbage at end of gcno file
-    
-    Some versions of gcc produce garbage at the end of a gcno file
-    when recompiling a source code file after removing some lines.
-    
-    This patch makes geninfo's gcno file parser more robust by assuming
-    end-of-file when it finds a record that extends beyond the end-of-file.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 14286b29d076208452da6021c792ebf43552ac2c
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Dec 13 15:23:27 2013 +0000
-
-    geninfo: make gcov tool version detection more robust
-    
-    Don't consider gcov tool version information in parenthesis when
-    determining the gcov tool version. This fixes problems where the
-    version string contains a different version number in parenthesis
-    before the actual gcov version.
-    
-    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
-
-commit 0bde87338cd155af46804d77701c93ef263c3d53
-Author: Sebastian Stigler <s_stigler@gmx.de>
-Date:   Fri Dec 13 15:09:58 2013 +0000
-
-    geninfo: add exclude marker for branch coverage
-    
-    Sometimes it can be helpful to generally use branch coverage but to
-    disable it for some lines of code without excluding the line or function
-    coverage too.
-    
-    For example if you make heavily use of assertions in your code (which is
-    generally a good idea) you will see that for each 'assert(...)' exist
-    one branch which is taken and one that is not. Similarly you can see the
-    same phenomenon for 'delete' in C++ code.
-    
-    If you use the 'LCOV_EXCL_LINE' marker in such a situation both of these
-    branches will be omitted from the output. But in doing so, you loose the
-    ability to determine if this peace of code is genuine 'dead code' or not
-    because the line coverage is omitted too.
-    
-    The newly introduces 'LCOV_EXCL_BR_LINE', 'LCOV_EXCL_BR_START' and
-    'LCOV_EXCL_BR_STOP' marker address this problem. The usage is similar to
-    the 'LCOV_EXCL_LINE' etc. markers.
-    
-    Signed-off-by: Sebastian Stigler <s_stigler@gmx.de>
-
-commit 119be727596f567e83b03de384b4150b926911a3
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Dec 12 14:58:44 2013 +0000
-
-    geninfo: Fix handling of non-english locales
-    
-    geninfo expects gcov output in the default C locale. This isn't always
-    given, for example when running in an environment where variable
-    LANGUAGE is set to a non-english locale. In such cases gcov output
-    cannot be correctly parsed, resulting for example in the absence of
-    branch coverage data.
-    
-    gcov uses gettext() for writing internationalized messages. The info
-    page for gettext mentions the order in which locale-defining
-    environment variables are evaluated:
-    
-    LANGUAGE
-    LC_ALL
-    LC_MESSAGES
-    LANG
-    
-    In addition, gettext implements special handling where LC_ALL=C takes
-    precedence over LANGUAGE.
-    
-    geninfo currently only specifies LANG=C. Fix the issue by specifying
-    LC_ALL=C instead.
-    
-    Based on fix suggestion by Sebastian Stigler.
-    
-    Reported-by: Sebastian Stigler <s_stigler@gmx.de>
-
-commit 0f7bb3ebc8487b83ce9b7047c81a3655135876ea
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Dec 9 15:49:35 2013 +0000
-
-    lcov: Added contribution guidelines
-
-commit f83688fe27f133ef02e9ab47a435d6a5d2074932
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 2 07:29:20 2013 +0000
-
-    geninfo: fix --no-external not working with --initial
-    
-    When running lcov --capture --initial together with --no-external.
-    the --no-external has no effect. Fix this by applying the external
-    filtering also for graph files.
-    
-    Reported-by: malcolm.parsons@gmail.com
-
-commit 6a8a678046bd75aa81d30484b1817425022d71e5
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jul 1 11:49:46 2013 +0000
-
-    lcov: fix --config-file not being passed to geninfo
-    
-    Calling lcov to capture coverage data while specifying --config-file
-    will result in the configuration directives of that file not being
-    used during data collection.
-    
-    Fix this by ensuring that --config-file is passed on to geninfo.
-    
-    Reported-by: liuyhlinux@gmail.com
-
-commit c3be5b6859ef280b469b6b75cf4709fc35f91ced
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu May 2 11:02:24 2013 +0000
-
-    lcov: fix whitespace handling in --rc command line option
-    
-    Specifying blanks around --rc options results in the options not
-    being correctly recognized, for example:
-    
-    This doesn't work:
-    geninfo . -o - --rc="geninfo_adjust_src_path = /tmp => /usr"
-    
-    This works:
-    geninfo . -o - --rc="geninfo_adjust_src_path=/tmp => /usr"
-    
-    Fix this by automatically removing whitespaces at the start and end
-    of --rc options and values.
-
-commit 4699f8d391325335777ed234e388be2e2f87478c
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Apr 12 07:51:34 2013 +0000
-
-    README: improve usage hint
-
-commit 36e0539737198ad1bee51103f47842f13c575239
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Mar 13 10:28:07 2013 +0000
-
-    genhtml: add time to date string
-    
-    Add the current time to the date information in the HTML output
-    generated by genhtml. This way users can differentiate results when
-    creating HTML output multiple times a day.
-    
-    Based on patch by sylvestre@debian.org.
-
-commit 38fbe93c8cd8402be8e4821825fdeeaa23e8367c
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Feb 22 14:09:08 2013 +0000
-
-    geninfo: don't warn about missing .gcov files
-    
-    Newer versions of gcc remove .gcov files for source files that do
-    not contribute instrumented lines. Remove the
-    
-      WARNING: no data found for file.c
-    
-    warning that geninfo issues in this case.
-
-commit 29346542c30af221a2ffdfe097fbd858044b712a
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Feb 1 11:44:03 2013 +0000
-
-    genhtml: fix handling of user-specified prefixes with trailing /
-    
-    A trailing / in a user-specified prefix is not correctly recognized.
-    Fix this by removing any number of trailing / in a user-specified
-    prefix. Reported by ahmed_osman@mentor.com.
-
-commit 5241e2afadca5f172bd0b8cafe61e20d2153f0bf
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 30 11:46:42 2013 +0000
-
-    lcov: fix bug when converting function data in --diff operation
-    
-    When a patch is applied to a tracefile using command line option --diff
-    and the patch changes the list of functions, the operation aborts with
-    the following error:
-    
-      lcov: Use of freed value in iteration at lcov line 3718.
-    
-    Fix by applying missing calls to keys() when iterating function data
-    hashes. Reported by Nasir.Amanullah@us.fujitsu.com.
-
-commit 9ce8d8cb4f978eb80fb88ecafd52e869fab75d8f
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 25 16:30:25 2013 +0000
-
-    lcov/genhtml: fix outdated comment regarding data structure
-
-commit c85e73a36e3f8c4e7fab888ac1536bee94a6fe56
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 25 16:29:30 2013 +0000
-
-    genhtml: merge function data during demangling
-    
-    Merge function execution counts when multiple function names demangle
-    to the same name.
-
-commit 2dfafc99c1eccbb81066436845e06a868eb3c434
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 25 11:46:28 2013 +0000
-
-    genhtml: improve function table sorting
-    
-    In the function table view, the initial view should show the functions
-    sorted by execution count because - unlike with file names - the function
-    name is not a natural order for functions (the line number would be,
-    but that is not available). Also sort functions with the same execution
-    count alphabetically for a stable order.
-    
-    Base on a suggestion by paul.bignier@hotmail.fr.
-
-commit 331a29011709a27d2ec11c6cbd6ac51dfdaf70c6
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 23 16:52:06 2013 +0000
-
-    genhtml: consolidate calls to c++filt
-    
-    When using --demanglecpp, call c++filt only once instead of per
-    function. This approach can reduce the run-time for source files
-    with a lot of overloaded functions significantly. Based on idea
-    by olly@survex.com.
-
-commit 49b877160b1d28cd6c3d8332d5d47c9c74420070
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Jan 10 09:02:32 2013 +0000
-
-    geninfo: make empty data directories non-fatal
-    
-    Emit a warning when no data file is found in a data directory
-    to allow processing of additional directories.
-    
-    Based on suggestion by rich_drake@yahoo.com.
-
-commit 3836c162c2864ed180df7d80fa03c70d17102edc
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Nov 13 09:58:53 2012 +0000
-
-    geninfo: fix parsing of gcc 4.7 gcov format
-    
-    GCC 4.7 changes the gcov format for lines which can only be reached
-    by exceptions to "=====" instead of "#####". This results in the
-    following warning:
-    
-    geninfo: Argument "=====" isn't numeric in numeric gt (>) at geninfo
-    line 1281.
-    
-    Fix this by handling "=====" correctly.
-
-commit b932f94cc83c3df169c76689533336bba4de4dba
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Oct 10 09:14:17 2012 +0000
-
-    lcov.spec: back to CVS version
-
-commit 6af00fa26e1a91a39c873ff9fa6df7fb8830ec42
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Oct 10 09:12:42 2012 +0000
-
-    lcov.spec: fix Perl dependency
-
-commit 4eac16e93db328e86e44da40e3d5e96a0301d361
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Oct 10 08:36:16 2012 +0000
-
-    lcov: update CVS version to 1.11-pre1
-
-commit b5c1bdddd1380be3ad12952ed2747df3744e227e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Oct 10 08:20:21 2012 +0000
-
-    lcov: finalizing release 1.10
-
-commit 089861768a94d0f6e827539c828f19141092f529
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Oct 10 08:07:54 2012 +0000
-
-    CHANGES: update
-
-commit 9037de17458c5d9767d201bd0599d40347a9bc41
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Oct 10 08:07:01 2012 +0000
-
-    genhtml: handle source files in root directory gracefully
-
-commit 68dd0f19da0d8d6e82375e09b97f7ffc22847db4
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Oct 9 13:58:22 2012 +0000
-
-    geninfo: add automatic detection of base directory
-    
-    Add a heuristic to automatically determine the base directory
-    when collecting coverage data. This heuristic should cover many,
-    if not most cases of build systems moving files around during
-    compilation (e.g. libtool, automake, etc.). The heuristic can be
-    enabled or disabled using the configuration file directory
-    'geninfo_auto_base'.
-
-commit 631d2b11bfde56ffca4568382abf5d90653c4141
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Oct 8 15:03:23 2012 +0000
-
-    geninfo: fix missing line data after last commit
-
-commit b1e14c4a1a0f3ccaad0c665f439624cf4588a68d
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Oct 8 13:02:45 2012 +0000
-
-    lcov: add missing help text for option --rc
-
-commit a432efff6ee8485ec0724aca4eae79a4c390a328
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Oct 5 15:53:09 2012 +0000
-
-    lcov: updated CHANGES file and copyright years
-
-commit 897322ecdb858f18e4a12f4716bbb08c067b6c9c
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Oct 5 15:20:41 2012 +0000
-
-    geninfo: fix warning about unhandled .gcov files
-    
-    gcov will sometimes create .gcov files that contain no instrumented
-    line. When geninfo reads .gcno files it filters out such files,
-    resulting in the following warning:
-    
-    geninfo: WARNING: cannot find an entry for #path#to#file.gcov in
-             .gcno file, skipping file!
-    
-    Avoid this warning by not filtering out non-instrumented lines.
-
-commit 37d381ae99a66f59ea55d966f1da13a726d2efe8
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Oct 5 15:09:58 2012 +0000
-
-    genhtml: fix source path prefix calculation
-    
-    Fix the following problems of the algorithm used to identify an
-    optimal source path prefix:
-    - the last two path components (filename and first parent
-      directory) are ignored when trying to identify the optimal
-      prefix
-    - if a path prefix matches a longer path prefix, the weight
-      of the filenames associated with the latter is incorrectly
-      attributed to the former
-
-commit 263de2b40e21193ef8d11e899eb55aa52b17225d
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Oct 5 12:00:57 2012 +0000
-
-    lcov: set default for branch coverage data to disabled
-    
-    Collecting branch coverage data can significantly slow down
-    coverage data collection and processing of data files. Assuming
-    that most users are more interested in line/function coverage,
-    change defaults to not collect/process branch coverage data.
-    
-    Users can still override this default using lcov_branch_coverage=1
-    in the lcovrc file or command line option --rc lcov_branch_coverage=1
-
-commit 7e04a152683ff66e24b87f2125474c6765d4524b
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Oct 5 11:49:30 2012 +0000
-
-    geninfo: fix problems with adjust_src_path option
-    
-    Fix the following problems with adjust_src_path:
-    
-     * specifying --compat libtool=on and geninfo_adjust_src_path
-       unexpectedly sets --compat libtool=off
-     * path components that are assembled from sub-directory names are
-       not correctly adjusted
-
-commit 74e4296b6e2a0b0f164c6828c28cc82449344f08
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Oct 5 08:23:06 2012 +0000
-
-    lcov: add setting to disable function and branch coverage
-    
-    Add two new configuration file settings:
-    
-     * lcov_function_coverage and
-     * lcov_branch_coverage
-    
-    When set to zero, lcov will skip the corresponding coverage data
-    type from being collected or processed, resulting in reduced
-    memory and CPU time consumption and smaller data files.
-
-commit 37bc1a1a5f721c6b88fff4c63121c1cbb794c14f
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Oct 2 14:29:57 2012 +0000
-
-    lcovrc: clarify meaning of geninfo_external in man page
-
-commit fc4b9e21efe8f3409d9b0b90cfe7a3e8bc59a74c
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Oct 2 09:12:38 2012 +0000
-
-    geninfo: fix processing of pre-3.3 gcov files
-    
-    When trying to collect coverage data for programs compiled with
-    GCC versions prior to 3.3, geninfo skips each data file with the
-    following warning:
-    
-    geninfo: WARNING: cannot find an entry for test.c.gcov in .bb file,
-    skipping file!
-    
-    Fix this by deriving the source code filename from the gcov filename
-    in case the gcov files do not follow the GCC 3.3 format.
-    
-    Reported-by: georgysebastian@gmail.com
-
-commit d1014dfcabfee2f305278a14ec8e5343e3889139
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 24 11:43:18 2012 +0000
-
-    lcov: fix problems with --rc option
-    
-    Fix error "Invalid option linkage for \"rc=s%\"" when running lcov
-    with an older version of the Getopt::Long module. Also pass --rc
-    options through lcov to geninfo.
-
-commit a9f08b79e2e7ec2b4a5c9ad27a077df8dfb46890
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Jul 24 15:41:38 2012 +0000
-
-    geninfo: implement rc option geninfo_adjust_src_path
-    
-    Provide a new lcovrc file option geninfo_adjust_src_path that users
-    can use to change incorrect source paths.
-    
-    Inspired by patch by ammon.riley@gmail.com.
-
-commit 108f805788590defda99fdf252bfb71cb749f31e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Jul 19 13:12:35 2012 +0000
-
-    lcov: implement command line option --rc
-    
-    Users can now use command line option --rc to override configuration
-    file directives.
-
-commit eeeeeca74706e88a9b8ecfef2bb3451957512e20
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 18 12:56:21 2012 +0000
-
-    lcovrc: add description for geninfo_compat setting
-
-commit f842e46149b48ff316e80f68f630bf94085e4d19
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 18 12:40:56 2012 +0000
-
-    lcov: improve --compat description
-
-commit 392a690ba31092857f7d21d0008783d87954ebce
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 18 12:13:00 2012 +0000
-
-    lcov: add missing documentation for --compat option
-    
-    Add missing sections in the geninfo and lcov man-pages for the
-    newly introduced command line option --compat. Also set the
-    default value for the hammer compatibility mode to 'auto' to
-    keep the behavior of previous releases.
-
-commit 691cab3e3aaebc295c2cfe91c43c6a7c48f1ec2b
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 18 10:40:12 2012 +0000
-
-    lcov: fix extra closing parenthesis in comment
-
-commit cef6f0ff8baa9b2b3dfb437463e7a88d3380b555
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Jul 17 11:37:13 2012 +0000
-
-    lcov: make 0%/100% exclusive to no/full coverage rate
-    
-    Ensure that coverage rates 0% and 100% are only used when no or all
-    lines/functions/branches are hit respectively. This approach is
-    implemented to allow better identification of boundary cases, and
-    to be in accordance with the behavior of the gcov tool.
-    
-    Based on suggestions by: Paul.Zimmermann@loria.fr and
-    vincent@vinc17.net
-
-commit 9cec8f7e332258c9128f1c53d61acb9f0bc17085
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 11 14:09:27 2012 +0000
-
-    geninfo: more improvements to the .gcno format auto-detection
-    
-    Suggestions by garnold@google.com:
-    - rename command line setting
-    - simplify logic
-
-commit 0bbca3bd0c1ad3e3d3fd0b6eebfc3afbbc212a85
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jul 6 14:29:27 2012 +0000
-
-    geninfo: rename compatibility setting to compatibility mode
-
-commit f30fb978662996e29517c733218292a91f5fd12b
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jul 6 09:03:27 2012 +0000
-
-    geninfo: improve detection of gcc 4.7 function records
-    
-    Suggestions by garnold@google.com:
-    - perform detection only once
-    - add warning in case detection is off but overlong strings are found
-    
-    Misc:
-    - add help text for --compat
-    - isolate detection heuristic into separate function
-    - rename corresponding compatibility setting to "gcc_4_7"
-    - allow "android_4_4_0" as alias for "gcc_4_7"
-
-commit 01321c3f170e5d24ffb3bb998441c99f5b775836
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 4 16:06:10 2012 +0000
-
-    geninfo: enable auto-detection of gcc-4.7 function record format
-    
-    gcc-4.7 introduced a modified function record format. This format
-    is in use by android toolchains and has also been ported to some
-    pre-4.7 versions of gcc. Introduce a heuristic-based auto-detection
-    to correctly handle .gcno files in these cases.
-
-commit d929600a0e2133168085e5ddea7ee832afd902b7
-Author: Martin Hopfeld <martin.hopfeld@sse-erfurt.de>
-Date:   Fri Jun 8 14:19:49 2012 +0000
-
-    geninfo: Make geninfo work more reliably on MSYS
-    
-    Using the lcov tools on Win7 with MSYS and MinGW 4.5.1/4.5.2
-    raised some issues for us:
-    
-    geninfo created in the for one source file in the 'SF:' line
-    paths starting with a lowercase drive letter and sometimes
-    starting with uppercase drive letters.
-    
-    This lead to inaccurate coverage results on the MSYS platform.
-    
-    This patch fixes this issue.
-
-commit 5b2751854aa19e6443fdc5fecc139595988d1e99
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon May 7 16:04:49 2012 +0000
-
-    lcov: add perl version dependency to RPM spec file
-    
-    lcov CVS (1.10 pre) seems to be broken on MSYS with perl 5.6.1.
-    The issue is the following:
-    
-      genhtml: Unknown open() mode '>>&' at /usr/bin/genhtml line 5512.
-    
-      $> perl genhtml --version
-      genhtml: LCOV version 1.10 pre (CVS 1.58)
-    
-      $> perl --version
-      This is perl, v5.6.1 built for msys
-    
-    Fortunately perl v5.8.8 is available for MSYS and genhtml works like a
-    charm with that 'new' version.
-    
-    Reported-by: Martin Hopfeld <martin.hopfeld@sse-erfurt.de>
-
-commit 83957a145d243cad0f8060e4a9ccc6cb8ed8fc09
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Apr 10 11:48:52 2012 +0000
-
-    geninfo: add support for gcc 4.7 .gcno file format
-    
-    Based on patch by berrange@redhat.com.
-
-commit 91c91dbc63d1e880d106919300c2fb37737697b0
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 20 11:53:57 2012 +0000
-
-    lcov: add new command line option --compat
-    
-    Add new option to lcov and geninfo to specify compatibility settings.
-    
-    Supported settings:
-      libtool: same as --compat-libtool
-      hammer: gcc3.3 hammer patch compatibility
-      android_4_4_0: android toolchain 4_4_0 compatibility
-
-commit 9588355790a302da680eff2f664058f78439a03e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Aug 11 08:29:21 2011 +0000
-
-    lcov: fix problem with Objective-C functions
-    
-    Fix geninfo not recognizing function entries for Objective-C functions.
-    
-    Based on patch by abrahamh@web.de:
-    current version of lcov unfortunately not support Objective-C files.
-    In details the count of tested function is zero always and the annotated
-    lines have an offset by one if the Objective-C method have one ore more
-    arguments.
-
-commit e1acd78d1e88fe51aad96badf32555c470ee029b
-Author: Martin Hopfeld <martin.hopfeld@sse-erfurt.de>
-Date:   Mon May 23 08:03:13 2011 +0000
-
-    geninfo: Make geninfo handle MinGW output on MSYS.
-    
-    This patch converts path mixtures from MinGW when running on MSYS to
-    correct MSYS paths.
-    
-    In solve_relative_path() an additional conversion step will be inserted
-    when running on MSYS. This will extract the drive letter and convert the
-    remaining path from Windows pathnames to Unix Paths, which are used by
-    MSYS.
-    
-    Additionally, if no drive letter is found, the (relative) path is
-    converted to Unix style. There may be the case where Windows and Unix
-    path separators are intermixed within one path string.
-
-commit ed161e3db5cd5a7c6c8b2113930c729f001cdd4e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Dec 16 08:11:22 2010 +0000
-
-    genpng: handle empty source files
-    
-    Generating an overview PNG image for an empty source code file fails.
-    Handle this case by assuming a single empty line when run for an empty
-    source code file.
-    
-    Reported by: sylvestre@debian.org
-
-commit 95e2c5c337d281b4e88144d95d29bbec183c8728
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Dec 7 08:40:09 2010 +0000
-
-    genhtml: add note to further explain branch coverage output
-
-commit b1c66916151dd4b20998c79f81edf174659ebb14
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Dec 7 08:29:45 2010 +0000
-
-    genhtml: fixed incorrect description of default coverage rates
-
-commit 1994be7d8ed472772b884063af74235f2f25ab39
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Nov 19 16:33:25 2010 +0000
-
-    geninfo: add missing man page sections
-    
-    Add sections describing options --derive-func-data and --no-markers to
-    the geninfo man page.
-
-commit 01a393ef76092e43ebd2d8bf7892ebf375481a84
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Nov 19 16:15:27 2010 +0000
-
-    geninfo: remove help text for unimplemented parameter
-    
-    Parameter --function-coverage was removed but the help text still
-    mentions it. Fix this by removing the option from the help text as
-    well.
-
-commit b92f99d9db0af131080c462300dc9baf292a8ff6
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Nov 19 16:00:22 2010 +0000
-
-    genhtml: handle special characters in file and directory names
-    
-    HTML special characters (e.g. '<') found in file or directory names are
-    not correctly shown in HTML output. Fix this by correctly escaping such
-    characters.
-
-commit 17e158d4569d25218e79901e2d8cd03bfc7752fc
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Nov 19 15:45:01 2010 +0000
-
-    gendesc/genhtml/geninfo/genpng/lcov: handle '<' in filenames
-    
-    Use 3-arg open mode to prevent that a special character (e.g. '<')
-    found in a user-specified filename interfers with the required open
-    mode for that file.
-
-commit b87e40e475c560bdc88206df4de6dc8cf094d91f
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Nov 19 15:11:53 2010 +0000
-
-    geninfo: ignore <built-in>.gcov files
-    
-    The gcov tool will sometimes create a file <built-in>.gcov for code
-    which was added by gcc itself during compilation. Since there isn't
-    any source available for such code, geninfo will fail. Fix this
-    by skipping these files while capturing code coverage data.
-
-commit 398d8f385423927b5675c1429f58c67b6a89a1a8
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Oct 28 14:17:57 2010 +0000
-
-    geninfo: add function comment
-    
-    Add comment explaining data structures used by function derive_data.
-
-commit f5c2072e0e7195d35455db50705884e7f6c5fbe5
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Oct 28 14:16:34 2010 +0000
-
-    geninfo: apply exclusion marker to derived function data
-    
-    When option --derive-func-data is used together with exclusion markers,
-    function data for excluded lines is still included. Fix this by
-    only deriving function data for lines which are instrumented and not
-    excluded.
-    
-    Reported by: bettse@gmail.com
-
-commit 82280b8a5a78e8a147c333c8850a556729d9d96d
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Aug 31 08:19:03 2010 +0000
-
-    geninfo: improve --debug output
-
-commit 6375a03010cb1bb22490b9d19a176188940e2f8b
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Aug 31 08:17:23 2010 +0000
-
-    gcov: add configuration file option to not use gcov's -a option
-    
-    lcov calls gcov while specifying its --all-blocks option to get more
-    detailed branch coverage data per line. It turns out that this option
-    is broken on many versions of gcov, resulting in an endless loop while
-    processing some gcov data files. There's also a slight performance
-    penalty when specifying -a.
-    
-    lcov users can opt to not use the -a option by setting configuration
-    option geninfo_gcov_all_blocks to 0 in the lcovrc file.
-
-commit 7706fb73ebef8060fbbd92c0e08b5d68a2cd284e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Aug 24 16:15:53 2010 +0000
-
-    lcov: add option to specify a configuration file
-    
-    Provide an option for users to specify a configuration file to lcov.
-    This option may be useful when there is a need to run several instances
-    of a tool with different configuration file options in parallel.
-
-commit a404dafc2da12608a936afeb095d68410fa49b0a
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Aug 23 16:14:37 2010 +0000
-
-    lcov: add option to display summary coverage information
-    
-    Provide an option for users to determine the summary coverage
-    information of one or more tracefiles. Example output:
-    
-    Summary coverage rate:
-      lines......: 26.0% (78132 of 300355 lines)
-      functions..: 34.9% (8413 of 24081 functions)
-      branches...: 16.9% (32610 of 193495 branches)
-
-commit 526b5b6a43f2b29f11eb02c1dd8f645293d8c295
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Aug 23 14:47:43 2010 +0000
-
-    lcov: add option to exclude external files
-    
-    Implement an option for users to specify that external source files
-    should be excluded when capturing coverage data. External source files
-    are files which are not located in the directories specified by the
-    --directory and --base-directory options of lcov/geninfo.
-
-commit c2255a0344648dc6eaef0189c53f345fdc70ed4e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 20 14:58:48 2010 +0000
-
-    lcov: pass --no-recursion to geninfo
-    
-    When specifying --no-recursion, make sure that the option is also passed
-    to the helper tool geninfo.
-
-commit 83543f3d21b5a5496b57c8d73e8e9c1819f82f34
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 20 14:31:59 2010 +0000
-
-    genhtml: fix HTML page title for directory pages
-
-commit b77df8ef1a69de3809e0b0bfa5cbbe5a84f313ae
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 20 14:27:19 2010 +0000
-
-    genhtml: make HTML charset specification customizable
-    
-    Provide a configuration file setting to adjust the charset specification
-    used by all generated HTML pages. Also change the default charset to
-    UTF-8.
-
-commit 1ff260462a67c440dc709d34c1fadf7d64760120
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 20 13:14:50 2010 +0000
-
-    lcov: follow Perl naming guidelines
-
-commit f637eb8c6ecb793b64eeb6bea57c6be8501d1484
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 20 13:08:25 2010 +0000
-
-    genhtml: add --ignore-errors option
-    
-    Provide a means for users to specify that genhtml should not abort if
-    it cannot read a source code file. Also make handling of --ignore-errors
-    parameter consistent accross lcov, geninfo and genhtml.
-
-commit 617bced393d5bb97e3409ec140768d9c8a2e2bfb
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 6 11:25:12 2010 +0000
-
-    lcov: update CVS version to 1.10
-
-commit 4dcb4f0ed014ca0f49859ef84fc9ced650f6deb8
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 6 11:14:38 2010 +0000
-
-    lcov: finalizing release 1.9
-
-commit 594779e047eed2f534905ac40912969955d3797f
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Aug 5 16:17:44 2010 +0000
-
-    lcov: update CHANGES file in preparation of new release
-
-commit fbbd9034e7a4ea4bc59342b22bfbe9612dd4bdb8
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Aug 5 15:11:56 2010 +0000
-
-    lcov: introduce configuration file parameters for list output
-    
-    Make some aspects of list output customizable via configuration
-    file parameters. Also introduce special handling, if the root
-    directory is chosen as prefix.
-
-commit c6e783c1a1d3fb6db7419af95f9e2dcb89836fe9
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Aug 5 14:07:35 2010 +0000
-
-    lcov: switch coverage rate and number columns in list view
-    
-    To be more consistent with the order of output in the "Overall
-    coverage rate" case, rates are now shown first in the list output.
-
-commit 3c87b66c68c2e06811c9be479c6813cb409e5461
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Aug 5 11:22:12 2010 +0000
-
-    lcov: fix display of total line coverage rate in list view
-
-commit 3cb6bc4ae0ef34aa63931d63f659f1ef43804c77
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Aug 4 16:15:19 2010 +0000
-
-    lcov: more lcov --list improvement
-    
-    Further improve list output to increase readability.
-
-commit dd98ff68ad143b985a728fc585c86d69e6027bd8
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 28 14:49:47 2010 +0000
-
-    lcov: minor list improvement
-
-commit d4778c75ce8cf3c9d44607b6fd0e385db71126dd
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 28 14:48:25 2010 +0000
-
-    geninfo: remove unneeded functions
-
-commit 65a15afef3430c49c9c7c0d151cc2afec5fc83cc
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 28 14:19:09 2010 +0000
-
-    geninfo: print note on branch coverage data only once
-
-commit bd8ab633298ec27acf5f7db4b2cc4766baf1f153
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 28 14:17:59 2010 +0000
-
-    geninfo: remove incorrect overall coverage rate calculation
-    
-    geninfo output showing the overall coverage rate of its current
-    operation is incorrect since it may count lines, functions and
-    branches for included files multiple times. Remove the output
-    and associated code until a fixed version is available.
-
-commit 8c54de96a1326b7ee0632773816c52eda43393e8
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 28 13:56:26 2010 +0000
-
-    lcov: more list output fixes
-
-commit 7e5fa9900d991320677c381db747c764495b2cc2
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 28 13:52:01 2010 +0000
-
-    lcov: fix list output
-    
-    Fix list output for directories with short filenames.
-
-commit badd4790c70bd8ef8b991a9d56d0e062b28006a8
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jul 26 13:33:18 2010 +0000
-
-    lcov: fix problem when using --initial and --kernel-directory
-    
-    Fix a problem in lcov that resulted in --kernel-directory options
-    being ignored when specifying --initial at the same time.
-    
-    Reported by hjia@redhat.com.
-
-commit a06c2038babb2f6d3e0a634cd298b0434041f834
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jul 19 16:06:15 2010 +0000
-
-    genhtml: change wording for branches which were not executed
-    
-    Since gcov sometimes reports both branches which were never executed
-    as well as branches which were executed in a single block, the wording
-    of the HTML alt text needs to be adjusted accordingly.
-
-commit e6b2491823ffd84c85406145031646af675170ee
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jul 19 15:50:02 2010 +0000
-
-    geninfo: handle branches in unnamed blocks
-    
-    gcov will sometimes report branches outside of a block. In that case,
-    account these branches to a special block so that they are not
-    accidentally merged with subsequently reported blocks.
-
-commit d6c82edf2117ce8b6232c998baf06c7a87269081
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jul 19 15:23:10 2010 +0000
-
-    genhtml: fix branch formatting code
-    
-    Fix the vertical alignment of the HTML representation of branches in
-    the source code view.
-
-commit 44ac74a47e25064ad1b421f65a28d057fdb9925d
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jul 19 14:27:08 2010 +0000
-
-    lcov: improve list output
-    
-    Improve list output by separating directory and file names. Also provide
-    an option to show full path names.
-
-commit 0ab6f7507f3c4f074bec41e571ff1afbeb943185
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jul 19 12:12:43 2010 +0000
-
-    genhtml: fix large numbers being shown as negative in html output
-    
-    genhtml uses a "%d" format string for printing execution counts. For
-    counts exceeding integer range, the output becomes negative. Fix this
-    by using the "%.0f" format string instead.
-    
-    Reported by kkyriako@yahoo.com.
-
-commit bbf0ef40a51dd716c544f91576cffde7986bb6ec
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jun 7 12:22:18 2010 +0000
-
-    geninfo: ensure that exclusion markers apply to --initial
-    
-    Fix a problem where exclusion markers are ignored when gathering
-    initial coverage data.
-    
-    Problem was reported by ahmed_osman@mentor.com.
-
-commit b371fc59fa52f7176f62f382457fba498f39f4b2
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Jun 1 13:48:29 2010 +0000
-
-    lcov: fix problem with relative path names
-    
-    Fix a problem where coverage data is missing because gcov produces
-    output files starting with a dot.
-    
-    Problem reported by weston_schmidt@open-roadster.com.
-
-commit 93c70ddd0edbc2b0addf9d135dfd76871cc7a160
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Sun Feb 28 20:57:37 2010 +0000
-
-    lcov: fix problem with relative paths in build paths
-    
-    When binaries are built using relative paths, lcov cannot find any
-    coverage data. Instead, warnings similar to the following are printed:
-    
-    geninfo: WARNING: cannot find an entry for ^#src#test.c.gcov in .gcno
-    file, skipping file!
-    
-    The reason for this is that File::Spec::rel2abs does not remove ../ from
-    paths which results in lcov not being able to match the relative and
-    absolute versions of the corresponding filenames. Fix this by using the
-    internal function solve_relative_path instead.
-
-commit fad24a75cc69364d002d40e4fb75736b0efbdb37
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Sun Feb 21 14:57:52 2010 +0000
-
-    geninfo: write all debugging output to STDERR
-
-commit c0943385fa0acb927f63f9f78c9aeaebe3a8ece1
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Sun Feb 21 14:56:46 2010 +0000
-
-    geninfo: fix problem with some .gcno files
-    
-    Some .gcno files contain more data in a line record than
-    expected. Skip unhandled bytes of a .gcno file record.
-    This prevents the following unexpected error message:
-    
-    geninfo: ERROR: file.gcno: reached unexpected end of file
-
-commit 4b9ee7598e991b503425148eb43a35de2702aded
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Sun Feb 7 13:07:09 2010 +0000
-
-    lcov: add COPYING file
-
-commit de0e43a098ade45d6624ea43a53e6fad9a176469
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 29 11:07:25 2010 +0000
-
-    lcov: update CVS version to 1.9
-
-commit 4a33269fa3a73ea2577f7616d90bd3f1d14ae460
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 29 10:09:53 2010 +0000
-
-    lcov: finalizing release 1.8
-
-commit 310ffb28d8847f96e02b5a5db3d16bdcb406a876
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 29 10:01:35 2010 +0000
-
-    lcov: updated CHANGES file
-
-commit 9e12808e6108e05dca42b5e682bd8be121f3608d
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 29 09:21:22 2010 +0000
-
-    genhtml: use sans-serif font for function table
-
-commit 71baabb6a1c15228213f8b25359346ee202300ce
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 29 09:12:55 2010 +0000
-
-    lcov: improve list output
-
-commit cc61a28dbc3c46ac84340141fafbfa559e1bf318
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 29 08:56:19 2010 +0000
-
-    lcov: fix overall rate display for tracefiles with more than one testcase
-
-commit b89028529db5110b3b76d117df788768a593d7dd
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 29 08:44:47 2010 +0000
-
-    lcov/genhtml: fix warning while merging branch data
-
-commit b7c69f31d9b1bfbd4bfc0fcb880cb8e514bcdb3f
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Jan 28 15:59:23 2010 +0000
-
-    lcov: fix branch coverage related issues
-    
-    - warnings when combining certain combinations of branch data
-    - branches are not merged correctly when multiple input files are specified
-      to genhtml or when lcov -a is used
-
-commit 817875459df122fa3536a5e57c05ddfae19a089e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 27 16:37:50 2010 +0000
-
-    gendesc: fix problem with single word descriptions
-
-commit 33f60f48747b5ba12a6fdfb505bb662c922496bd
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 27 12:10:04 2010 +0000
-
-    lcov: remove temporary files when creating a package
-
-commit 6775457cbd3fa86acba4655d77b4ba2054b13253
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 27 12:00:05 2010 +0000
-
-    lcov: correctly retain information about converted test data
-
-commit f4d13eccc54f31a53ad109c3c4b86e4b52d6dfcb
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 27 10:17:43 2010 +0000
-
-    lcov. fixed overview output for function data
-
-commit aa00c65b7514c93320c1c787b848c8277593dcb0
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Jan 26 09:36:19 2010 +0000
-
-    genhtml: don't use too much gcc-specific terms (basic block -> block)
-
-commit 3562f60b9500d8ad167c4629e9d95485308aa665
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 22 16:17:37 2010 +0000
-
-    lcov: consolidate coverage rate classification limits
-    
-    Classifying coverage rates per coverage type (line, function or branch
-    coverage) is not useful in most cases. Also the respective
-    color legend takes up too much space in the HTML output. Remove
-    function and branch coverage rates from the documentation and from
-    the color legend. Instead the original limits will be applied to those
-    coverage types as well. The per type rates can still be used if required
-    but it is recommended to only use one rate set.
-
-commit d77dc6a0adf259e322ac9f35c93241d446269a5b
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 22 16:16:47 2010 +0000
-
-    lcov: minor code cleanup
-    
-    - remove unused function definitions and declarations
-    - remove unused CSS declarations
-    - add missing function declarations
-    - fix function prototypes
-
-commit b3243d1fdc17571ca9b1ed6a1ea975a9b3f1b86b
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 22 16:16:15 2010 +0000
-
-    geninfo: consolidate similar functions
-
-commit 739e2bca054c69975594c2570049e8aa9ae1b5ce
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 22 16:15:35 2010 +0000
-
-    lcov: add coverage result output to more operations
-
-commit 0a31d3c0696015c5e4878e821529eba45451c3dd
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 22 16:14:57 2010 +0000
-
-    lcov: minor cosmetic HTML changes
-    
-    - top level view is now named "top-level"
-    - use sans-serif font for coverage values in file list
-    - use smaller font for show/hide details link
-    - use smaller font for function/source view link
-    - use smaller font for show descriptions link
-
-commit b631fa0cb9aabdf18f9365423f0b0bf85d6b8e16
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 22 16:14:27 2010 +0000
-
-    lcov: improve color legend
-    
-    Move color legend closer to the table containing coverage rates.
-
-commit 2aeeeafb31c36ccd1a51051f040e29a9fcf59df2
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 22 16:13:58 2010 +0000
-
-    lcov: implement branch coverage
-
-commit 49dfe22f41b6c3edcb774dfb89b1a807ce7aee6c
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 22 16:13:34 2010 +0000
-
-    genhtml: implement branch coverage
-
-commit 6aa2422401bb854c9710f5ed2936f06e487848c5
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 22 16:13:07 2010 +0000
-
-    geninfo: implement branch coverage
-
-commit ca2c9781b0a512bd6789eac2b6840405e2d87330
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 22 16:12:27 2010 +0000
-
-    geninfo: consolidate handling of extra gcov parameters
-
-commit 9d9c964eb6ece00b15ef068f176c68cb0eedfda0
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Jan 21 11:26:34 2010 +0000
-
-    lcov: minor fix for lcov --diff
-
-commit 4306f81d1e8446a89fe83d20cd71abe075a3cd61
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Jan 21 10:23:35 2010 +0000
-
-    lcov: improve lcov --list output
-
-commit 3242ce1bae94cfd859c3bc964fab11f85bd7d1ed
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 20 17:13:28 2010 +0000
-
-    lcov: unify data order in tracefiles
-
-commit 8f53b2e8dbbe5580050fbe0c604bd9a9322735a7
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 20 16:05:56 2010 +0000
-
-    lcov: fix bug when applying baseline files without function coverage data
-    
-    Fix the following error that occurs when genthml's --baseline-file option
-    is used on files which do not contain any function data:
-    
-    genhtml: Can't use an undefined value as a HASH reference at ./lcov/bin/genhtml line 4441.
-
-commit 96fcd676d5ac9c1eb9f83f3dc4c3089ba478baad
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 20 15:28:21 2010 +0000
-
-    lcov: resolve short-name option ambiguities
-
-commit f1d34d49b394a13c33c7a5b51f04e5dfbded5d26
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 20 14:47:50 2010 +0000
-
-    lcov: fix error messages
-
-commit 89ff61aa7cd2ca23b8cacd649288ecf7f67746de
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 20 08:35:20 2010 +0000
-
-    lcov: fix bug when using genhtml's --baseline-file option
-    
-    Fix the following error message when trying to use genhtml's
-    --baseline-file option:
-    
-    genhtml: Undefined subroutine &main::add_fnccounts called at
-    /home/oberpar/bin/genhtml line 4560.
-    
-    Reported by Brian DeGeeter <sixarm@gmail.com>
-
-commit c3df3a8504b06ca32b9863fdb2abb8cf0ce62251
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jan 18 09:17:17 2010 +0000
-
-    lcov: ensure LANG=C before calling gcov
-    
-    Fix problem calling lcov when LANG is not set to an english locale.
-    Reported by benoit_belbezet@yahoo.fr.
-
-commit d945f23345e02ca535d740782e7ae10cb3396b8c
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Nov 18 09:39:21 2009 +0000
-
-    lcov: more version fixup
-
-commit 413249e6336cff432083954e6ed47236dd35f647
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Nov 18 09:38:03 2009 +0000
-
-    lcov: fix version fixup
-
-commit d0b7148e2d76164e5ea091fe56035c24f7dce22a
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Nov 18 09:34:45 2009 +0000
-
-    lcov: add more CVS versioning
-
-commit 4e0219f918a15cbc9ff40d0e0e4dab91ac073f72
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Nov 18 09:14:56 2009 +0000
-
-    lcov: add CVS revision number to version output
-
-commit 34154c2d48497d9aad41ec1452ba94dd4cbce881
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Oct 30 14:18:45 2009 +0000
-
-    lcov: further clarification in the README
-
-commit 7a4ab1340dd7f88ba0fb56a7b0eb368bf2d0112e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Oct 30 13:58:56 2009 +0000
-
-    lcov: update README to mention required -lgcov switch during linking
-
-commit 3fa5b311b123af84debbd774baa4a1cd30e7085b
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Oct 27 16:54:41 2009 +0000
-
-    lcov: remove further unneeded warning
-    
-    ... + use correct source for list of filenames
-
-commit cd4051719e72129f4abf1ad177269bf14031f83a
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Oct 27 16:19:05 2009 +0000
-
-    lcov: fix problem with matching filename
-    
-    - used correct source for filenames
-    - converted match_filenames to portable version
-
-commit 0d0ff8a9945260eebed6d316aa08c0021faf3549
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Oct 27 15:29:41 2009 +0000
-
-    lcov: remove unnecessary warning
-
-commit 6c711d664c38d18f788ee8a5239586cd4a5b77d9
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Oct 26 14:21:40 2009 +0000
-
-    lcov: improve derive-func-data option
-    
-    - rewrite graph file handling
-    - make derive data look at all lines belonging to a function to find
-      out whether it has been hit or not
-    - introduce --debug option to better debug problems with graph files
-
-commit 214cda20c4b591a823045f35b73f2a16221c9aa1
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Oct 1 15:26:58 2009 +0000
-
-    lcov: introduce new options --derive-func-data
-    
-    When using a gcov version that does not provide function data,
-    this option will attempt to guess the function coverage data
-    for a function by looking at the number of times that the first
-    line of that function was called.
-
-commit 9a75125895fd07a775a2a25f2cbe66b9fbf332d6
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Oct 1 11:49:53 2009 +0000
-
-    lcov: ignore incomplete function names in .bb files
-    
-    - don't abort processing when an incomplete function name is
-      encountered in a .bb file (gcc 2.95.3 adds those)
-    - fix filename prefix detection
-
-commit d5ab6076a0bfc5ad80652ba592583f7fc7946dc6
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Sep 28 12:27:09 2009 +0000
-
-    lcov: improve detection of gcov-kernel support
-
-commit 3cca782fcac9c4ea54adcebe75e1f047a8dca636
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Sep 22 13:44:04 2009 +0000
-
-    lcov: fix problem with CONFIG_MODVERSIONS
-    
-    Make geninfo work with Linux 2.6.31 and CONFIG_MODVERSIONS.
-
-commit 8af873f44c104cd214b796e13b916718fc8f6f99
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Sep 16 15:24:51 2009 +0000
-
-    lcov: remove default for gcov_dir so that auto-sensing works
-    
-    Fix problem with lcov not finding kernel coverage data at
-    /sys/kernel/debug/gcov because the default system-wide
-    lcovrc file contained a specification for the gcov directory
-    which prevented auto-detection from working.
-
-commit 50f90681af4d105a52b5b0dbf4f0bfd04369ffd2
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Aug 27 10:14:23 2009 +0000
-
-    lcov: apply excluded lines also to function coverage data
-
-commit 4aeb840d25c85a419171970e1a445aeb81079e53
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Aug 27 09:23:13 2009 +0000
-
-    lcov: fix help text typo
-
-commit c17a783f87aa8e42949131d2fbc1c540bb3751a3
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Aug 27 09:22:43 2009 +0000
-
-    lcov: add exclusion markers
-    
-    Users can exclude lines of code from coverage reports by adding keywords
-    to the source code.
-
-commit 445715c88337c13ce496bd05423ee5e58d84705c
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 14 08:19:26 2009 +0000
-
-    lcov: ignore gcov errors for unnamed source files
-    
-    When specifying "--ignore-errors gcov", lcov/geninfo should not abort when
-    they cannot read a .gcov file. Fix this by introducing warnings in the
-    respective places.
-
-commit 0e23f03a9ce130e8ebec679fb5a9a6f854efbee5
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Aug 6 12:34:04 2009 +0000
-
-    lcov: improvements
-    
-    - added --from-package and --to-package options
-    - improved gcov-kernel handling
-
-commit 17a05bdf646870cd61794274c7165211c93c82f9
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Jul 23 12:45:15 2009 +0000
-
-    lcov: fix kernel capture for new gcov-kernel version
-    
-    - fix problems when compiling without O=
-
-commit 64e302b9134b6098852cad2e6180e0722f2dea41
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Jul 21 15:42:44 2009 +0000
-
-    lcov: improve lcov -l output
-
-commit cea6941ef36d0860330b6e94f8c6096dca78ca58
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Jul 21 09:10:49 2009 +0000
-
-    lcov: add support for the linux-2.6.31 upstream gcov kernel support
-
-commit 04470d2b25808f195d338112155b9f7db405d902
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Apr 22 09:13:12 2009 +0000
-
-    genhtml: fix warning about undefined value used
-    
-    nikita@zhuk.fi:
-    genhtml.patch checks that $funcdata->{$func} is defined before using
-    it - I got few "undefined value used" warnings without this check.
-
-commit a12d4f9a5d36232b928be12b7cbfaa9a00b3a923
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Apr 22 09:08:19 2009 +0000
-
-    genpng: fix runtime-warning
-    
-    - when called from within genhtml, genpng would warn about warn_handler
-      being redefined
-
-commit d0b5641c62bbdac89757b9ff185a7aa3f38fc0bb
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Mar 13 09:58:00 2009 +0000
-
-    lcov: improve function name filtering
-    
-    Only remove those characters from function names which would conflict
-    with internal delimiters.
-
-commit fbafa4a5628a639544e83f88083082c685677c36
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Feb 13 15:04:40 2009 +0000
-
-    genhtml: minor man page update
-
-commit 085a2150e38a3c1bdadb5af23c0a8a8a79dc4b0d
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Feb 13 14:56:45 2009 +0000
-
-    genhtml: added --demangle-cpp option
-    
-    - used to convert C++ internal function names to human readable format
-    - based on a patch by slava.semushin@gmail.com
-
-commit 53f3ed4afb45a2a4248314b677d36377598cc73c
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Feb 13 14:07:46 2009 +0000
-
-    genhtml: update comment
-
-commit 3c2b2e8541387506fd514d183f9a4a63c07c0aa4
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Feb 12 17:01:19 2009 +0000
-
-    genhtml: fix error when combining tracefiles without function data
-    
-    - genhtml: Can't use an undefined value as a HASH reference at genhtml
-      line 1506.
-    - bug reported by richard.corden@gmail.com
-
-commit 22397370ada6893b6e9a1c3f6ad0aba7f4864f81
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Feb 11 09:31:24 2009 +0000
-
-    lcov: fix error when combining tracefiles without function data
-    
-    - lcov: Can't use an undefined value as a HASH reference at lcov line
-      1341.
-    - bug reported by richard.corden@gmail.com
-
-commit 24ec53ae83acdd35682ba757adae23750bd4c623
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Feb 9 16:15:49 2009 +0000
-
-    lcov: fix warning when $HOME is not set
-    
-    - based on patch by acalando@free.fr
-
-commit 5da3521d5a438db0a21e93b0d14ea5a3cdab14d9
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Feb 9 12:41:44 2009 +0000
-
-    lcov: use install -pD -m <mode> for file installation
-
-commit bdce1bda2ac1a86aa6dfefae8e18353ba57afe4b
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Feb 9 09:46:00 2009 +0000
-
-    lcov: fix double-counting of function data
-
-commit ea62c4e701abb05dd560ef22b52a4a72c17660e8
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 21 16:33:29 2009 +0000
-
-    geninfo: need to add CR removal to geninfo as well
-    
-    ... or checksumming will fail
-
-commit 70be5df7d58a393e27cee178df669c12ec670c5a
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 21 16:24:01 2009 +0000
-
-    lcov: modify end-of-line CR removal
-    
-    - s///g is 10% slower than s/// - \r may be 0x10 or 0x13 (see man
-      perlport)
-
-commit d8df4b0f83ff175f1a06afb693903ee1a93ec377
-Author: Michael Knigge <michael.knigge@set-software.de>
-Date:   Tue Jan 20 11:41:39 2009 +0000
-
-    lcov: remove CRLF line breaks in source code when generating html output
-    
-    - added patch by michael.knigge@set-software.de
-
-commit 442cca7e69356e7f8ba03bd95f7813576bd197cc
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Nov 17 14:11:20 2008 +0000
-
-    lcov: updated CVS version to 1.8
-
-commit 5c5c85a1c090360facd50cb089b8af98f0b37c47
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Nov 17 13:55:52 2008 +0000
-
-    lcov: version + date updates
-
-commit 9f6a735809c23559b861e97a20af55a66b6b96bb
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Nov 17 13:49:43 2008 +0000
-
-    lcov: fix spec file bug
-
-commit 11483dc0b56d326718edcd31d06458143add858f
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Nov 17 13:44:38 2008 +0000
-
-    lcov: update error and warning messages
-
-commit 4dd11b80d14e34fee2e75b3fe8c7aa163f61ad1d
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Nov 17 12:48:03 2008 +0000
-
-    lcov: preparations for release 1.7
-
-commit b847ed6f3103a4c9f0a48417b9c3f160b9e00557
-Author: Jeff Connelly <jeffconnelly@users.sourceforge.net>
-Date:   Fri Oct 10 07:54:47 2008 +0000
-
-    lcov: geninfo chokes on spaces in the directory name
-    
-    In lcov 1.6, geninfo fails to find gcno/gcda files if the source directory
-    has spaces in the name, because it uses backticks to shell out to "find",
-    passing $directory on the command-line.
-    
-    Attached is a patch that double-quotes the variable, allowing geninfo to
-    operate on directories with spaces in their name. The fix isn't perfect; it
-    won't work on directories with a " character, but it works fine for my
-    purposes (I don't have any directories with quotes). A better fix would be
-    to use IPC::System::Simple's capturex from
-    http://search.cpan.org/~pjf/IPC-System-Simple-0.15/lib/IPC/System/Simple.pm
-    #runx(),_systemx()_and_capturex(). capturex() is a multiple-argument form
-    of the backticks, so it avoids any interpolation errors.
-
-commit ee3cdd554ee4e6d3ef5bdc9c5dcfee50de6375a7
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Aug 18 07:12:33 2008 +0000
-
-    lcov: change sorting order to low-to-high coverage
-
-commit fe665ca5ccf9d73d9ebdae17de88e181c1b9b0eb
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 15 08:38:21 2008 +0000
-
-    lcov: several changes
-    
-    - update download link
-    - unify webpage links
-    - provide --sort and --function-coverage switch + documentation
-
-commit 14137c5456f307982fed418e1e8fac65d7f086c3
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Aug 13 15:57:23 2008 +0000
-
-    lcov: fix function view page creation when --no-func is specified
-
-commit e59f7d15ffc7f1b3794a4212c53d0fb97ac7fb2a
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Aug 13 15:35:48 2008 +0000
-
-    lcov: updated versioning mechanism
-    
-    ... + fixed some man page bugs
-
-commit e933698b31bc2fb4a750d89a5755bb8155313da2
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Aug 13 14:08:23 2008 +0000
-
-    lcov: updated rpm description
-    
-    ... + summary and version strings
-
-commit 5a9660585ce39a77fa38607d0c2d2440955e7242
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Aug 13 13:53:50 2008 +0000
-
-    lcov: integrated function coverage patch
-    
-    ... by Tom Zoernen + sorting function
-
-commit d10ede8179747cfd675a3989578350c710e9bdd5
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed May 7 15:08:12 2008 +0000
-
-    lcov: --norecursion becomes --no-recursion
-    
-    + added docs
-
-commit 4096130608b9faf74c5b5feac554a10b5d9f83ce
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Feb 21 10:20:33 2008 +0000
-
-    lcov: fix error when trying to use genhtml -b
-    
-    genhtml fails when the data file contains an entry which is not
-    found in the base file.
-
-commit 9578099e13388344a6179c7cce54bfa094fd9b08
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Feb 20 17:21:51 2008 +0000
-
-    lcov: fixed problem with pre gcc-3.3 versions
-    
-    read_gcov_headers does not return valid results for pre gcc-3.3 versions.
-    Due to an unnecessary check, parsing of gcov files was aborted. Fix
-    by removing check.
-
-commit 16ec76b48fbc50c32890919e5bd0c30653719af9
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Feb 5 09:18:50 2008 +0000
-
-    lcov: adding support for gzipped html
-    
-    ... based on patch by dnozay@vmware.com
-    
-    dnozay@vmware.com: genhtml is a great tool to generate html, but the more
-    files, the more space it takes (here I have over 113MB of html generated),
-    add to that I need to have different sets, and space usage increases
-    dramatically (2.7GB). we are using browsers with htmlz support, so it would
-    be nice to have support for that in genhtml, relying on 'gzip -S z' to do
-    the job.
-
-commit f2c98a8c8581180533508eb4af41720d8566049e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jan 7 16:33:57 2008 +0000
-
-    Filter non-word characters in function name
-    
-    ... as they would break our file format which uses comma and '=' as
-    field separator.
-
-commit 37725fc78fcacaf06e6240971edc3bdd7fe3d142
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Nov 1 16:29:39 2007 +0000
-
-    lcov: fix for problem resulting in lcov aborting with "ERROR: reading string"
-
-commit 48f13fcec1b521d2daba6202ccd7ec0ec8c5ece9
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Oct 4 08:18:07 2007 +0000
-
-    lcov: workaround for gcc 4.1.0 .gcno file oddness
-    
-    scott.heavner@philips.com:
-    I'm trying to use lcov 1.6 with gcov/gcc 4.1.0. The geninfo parser was
-    aborting on a small number of .gcno files. I've patched my local copy so
-    that geninfo prints out the offset of the error and skips the remainder of
-    the problem file
-
-commit 1a805ea068db29b63a83c801f3bb1840fda8dd35
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 24 08:50:26 2007 +0000
-
-    lcov: add experimental option "--norecursion"
-
-commit 194de5071db1d9903d22164432448b73c1ec6cd0
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Aug 23 11:08:39 2007 +0000
-
-    lcov: Makefile for post-release
-
-commit 0750f8a3e5235833711d616a3763c04103cf55a5
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Aug 23 11:04:30 2007 +0000
-
-    lcov: Makefile for release 1.6
-
-commit cb911f7a79593c89a730dc93fa54179fbf1df363
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Aug 20 10:29:35 2007 +0000
-
-    lcov: fixed spec file
-
-commit 62cefebdda87784140eb5f997ae4e575d2338298
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jul 6 07:38:47 2007 +0000
-
-    lcov: add new option --initial to get zero coverage data from graph files
-
-commit f0b6927f1ab1052b00081c662ced614a6e5f9ed7
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 4 14:38:59 2007 +0000
-
-    lcov: fixed bug that would not delete .gcda files when using -z
-
-commit 13941c3a159caf7dc6ba18a5b13e43c20fc18f2b
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 4 14:18:26 2007 +0000
-
-    lcov: another update in preparation for a new release
-
-commit d25e630a77ef2d0f69139058322269387866e414
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jul 4 13:13:22 2007 +0000
-
-    lcov: man page update
-
-commit 7844b915af5402441df9ab0423e4c20ef9a2632f
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Jul 3 16:43:05 2007 +0000
-
-    lcov: update manpage
-
-commit 5adaa72bfb32737d18c328492777c1c6116d4a9e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jul 2 15:29:02 2007 +0000
-
-    lcov: preparations for new release
-    
-    - updated CHANGES file
-    - added compat-libtool + no-compat-libtool option
-    - changed libtool default to on (due to popular request)
-    - added checksum option
-    - changed checksum default to off (to reduce cpu time + file size)
-    - added geninfo_checksum option to lcovrc, deprecated
-      geninfo_no_checksum
-    - added geninfo_compat_libtool option to lcovrc
-    - minor update of README file
-
-commit 6cbfd5022703a6198e1a1e2a2ddddcc0b90f5334
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue May 22 08:11:44 2007 +0000
-
-    lcov: minor help text update
-
-commit 2416ed02ba299c4d0bceb1e47c214b7dec066d7a
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Mar 7 14:59:25 2007 +0000
-
-    lcov
-    
-    - add --ignore-errors option to lcov/geninfo
-    - add --gcov-tool option to lcov/geninfo
-    - remove s390 test case modification in geninfo
-    - restructured help text for lcov/geninfo
-
-commit a13375811717d3ada718e6f52364e4344a7e3187
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jan 8 17:07:21 2007 +0000
-
-    lcov
-    
-    - re-added libtool compatibility workaround patch by
-      thomas@apestaart.org
-    - added new lcov/geninfo-option --compat_libtool to activate libtool
-      compatibility patch
-
-commit 14871d7b097282819db60266d8b8a38506d7b14a
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Nov 14 11:45:17 2006 +0000
-
-    lcov
-    
-    Fix for problem found by Joerg Hohwieler: lcov -k doesn't work if -k is
-    specified more than once.
-
-commit 43b52b37006822c0fca12548bc72fecc957342ca
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Jun 26 15:48:52 2006 +0000
-
-    lcov: new version for prerelease rpms
-
-commit 89e9d59709c9d9d8722170c86251090adc3b96c9
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jun 7 09:31:57 2006 +0000
-
-    lcov: removed autoupdate of copyright date (second thoughts)
-
-commit bb0cf1c9d0ed58b37c1551fea765fb1622bcacde
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jun 7 09:20:37 2006 +0000
-
-    lcov: minor cleanup (release preparations)
-
-commit 527693d753d11ac2b59fe26b923662c99e6e3715
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Apr 5 10:10:05 2006 +0000
-
-    lcov
-    
-    - added base-directory documentation
-    - updated CHANGES file
-
-commit 11ef9338cc4124801c8b61e3edd51a02e50b4c68
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Mar 20 17:09:50 2006 +0000
-
-    genhtml: added html-extension option
-
-commit 93d22308ffb410327248059b7dcdb592f85e249e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Mar 20 16:39:25 2006 +0000
-
-    genhtml
-    
-    - adding html-prolog and html-epilog options (based on patch by Marcus
-      Boerger)
-    - specified behavior when both --no-prefix and --prefix options where
-      provided
-    - small whitespace diff
-
-commit dcac095cdc00cc65930285bb6fc01d0f257ee4ed
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Feb 15 16:02:07 2006 +0000
-
-    lcov: added check for invalid characters in test names
-
-commit d89e561dfd9c5fde43350af1b145b1892d0710d0
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Dec 2 06:38:16 2005 +0000
-
-    lcov
-    
-    - updated Makefile so that people building RPMs from the CVS version get
-      a correct build version. Note: this needs to be adjusted after each
-      release!
-
-commit 1960123050f9098690768d10cd2490dd49b995f7
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Thu Nov 10 13:10:09 2005 +0000
-
-    lcov
-    
-    - fixed bug: .info file generation with new gcc 4.x compilers may fail
-      for programming languages that allow ':' in function names (c++,
-      objective c)
-    - removed special handling for libtool .libs files
-    - libtool should work with currently undocumented option --base-directory
-
-commit 479d446d3bf20a84c2933100ead279c79eeaf5c4
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Sep 7 16:24:39 2005 +0000
-
-    lcov
-    
-    - implementation of new option --base-directory (untested, undocumented)
-    - minor fix for link-traversal when looking for object directory
-    
-    TODO: document option (man page, online help), add to config file, check
-    whether libtool fix still works
-
-commit 770b94a3172f206de7f194c7497ebae14348b521
-Author: Robert Williamson <robbiew@users.sourceforge.net>
-Date:   Mon Jul 11 17:54:25 2005 +0000
-
-    Applied patch from Stefan Kost
-    
-    when running lcov over an uninstalled user-space apps tests, it finds
-    the .da file in the .libs directories, but does not look for the sources
-    one hierarchy up. Libtool places the object in the .libs dirs. when
-    running gcov manually one can specify -o.libs/ to produce a source.c.gov
-    file. I now have attached a patch that fixes the problem for me. please
-    do not just ignore this report. the lcov tool is so nice and it would be
-    a shame if it can not be used for normal apps.
-
-commit 79f2ff2c168150e7532046c2cdbc1e42c8b4708f
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Jun 14 11:34:59 2005 +0000
-
-    lcov
-    
-    - renamed support for modified compilers (gcc 3.3 hammer patch)
-    - fixed bugs in the support for modified compilers
-
-commit fb7dab3494fdd8b093e6a84f088f6ea07fcefe6e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Mar 15 18:02:54 2005 +0000
-
-    lcov
-    
-    Emil.Jansson@oss.teleca.se:
-    lcov 1.4 does not work with the gcc version in Mandrake Linux 10.0
-    
-    >> gcc --version
-    
-    gcc (GCC) 3.3.2 (Mandrake Linux 10.0 3.3.2-6mdk)
-    
-    This patch for geninfo fixes the problem:
-
-commit ae3fe899d824e8af8a16736a0c8104c903565a56
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Mar 8 14:23:06 2005 +0000
-
-    lcov
-    
-    - added optional legend to HTML output
-    - changed background color for "good coverage" entries to green for
-      consistency reasons
-
-commit 18b73d39fd9d6bc8829395baa612a6ed98b89efe
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Mar 2 14:49:47 2005 +0000
-
-    lcov
-    
-    - fixed rpm build process to exclude unnecessary directories in RPM
-
-commit ef6ee74df5bf1d1d104322f8fff36b5c6fda34b4
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Mar 2 12:48:29 2005 +0000
-
-    lcov
-    
-    - added man page for configuration file lcovrc
-
-commit be3afe2626d6bc72256e1873d409c737ac4391c9
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Feb 28 16:31:51 2005 +0000
-
-    lcov
-    
-    - Updated CHANGES file in preparation for a new release
-
-commit dc68ce9c804ef21bc8e149d9b468e18c1619bb54
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Nov 2 15:48:45 2004 +0000
-
-    lcov
-    
-    - temporary fix for a problem which occurs when trying to parse C++
-      coverage data generated with vanilla gcc 3.3.3
-
-commit efedc5b930ab6743ea9f47ce4ea4a1a75bd739ff
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Sep 27 13:13:51 2004 +0000
-
-    lcov
-    
-    - fix for minor bug in geninfo (access to uninitialized variable)
-      related to SLES9 compatibility test and test for existing source code
-      files
-
-commit 47943eedfbec7a12c52e7a8ccbcfaf8d0706f142
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Sep 20 14:11:16 2004 +0000
-
-    lcov
-    
-    - minor fix for regular expression used to parse .gcov files - caused
-      problems when parsing branch coverage data and when using custom
-      gcov versions
-
-commit ce6335ebd92ce017b75ee3e194e9e3ca7bc7e1f3
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Sep 14 15:52:38 2004 +0000
-
-    lcov
-    
-    - fixed bug in geninfo which would not report any FN: data for data
-      generated with gcc versions 3.4.0 and above
-
-commit 58df8af3a62fa4e60569ef300e0ddd0073bf109e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Aug 31 15:57:41 2004 +0000
-
-    lcov
-    
-    - added support for modified GCC version provided by SUSE SLES9
-
-commit 69f3bc3a0c59b35eb6882205286a68b04a8a8d22
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Aug 31 15:48:32 2004 +0000
-
-    lcov
-    
-    - fixed bug in lcov RPM spec file which would not include the global
-      config file in the package list
-
-commit 5d10ca22144ad2be885405c3683b20c0976f7562
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Aug 9 14:32:23 2004 +0000
-
-    lcov
-    
-    - fixed a bug which would cause generation of incorrect line checksums
-      when source code is not available while capturing coverage data
-    - changed default directory for temporary files from . to /tmp
-
-commit 8ee3061f23f17a5074deda0777c66c3e82b5d852
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Aug 9 11:15:02 2004 +0000
-
-    lcov
-    
-    - added configuration file support
-    - fixed Makefile error for target "uninstall"
-
-commit 58af07f0b0ca1af8c9f2b90ad1683447bb560165
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Aug 6 11:36:33 2004 +0000
-
-    lcov
-    
-    - fixed bug which would cause an error when lcov was used on a source
-      directory which contained perl regular expression special characters
-    - simplified regular expression character escaping
-    - removed unnecessary function escape_shell from lcov
-
-commit 69a6918d4cd386aff2fbff093a6e0b5ddcc46602
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Mar 30 13:27:55 2004 +0000
-
-    lcov: - added --path option to fix --diff functionality
-
-commit cbc6cb11b532e525ae8b0c0742a4fd41189ca7c2
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Mar 29 12:56:08 2004 +0000
-
-    lcov
-    
-    - Added compatibility for gcc-3.4
-    - Modified --diff function to better cope with ambiguous entries in
-      patch files
-    - Modified --capture option to use modprobe before insmod (needed for
-      2.6)
-
-commit 1cf9a02c3ea0e98cc1d8b626eaa0a2a1cbd96cf1
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Jan 30 09:42:13 2004 +0000
-
-    lcov
-    
-    - updated CHANGES file
-    - changed Makefile install path (/usr/local/bin -> /usr/bin)
-
-commit c60f0668059032cf4dc5f6c556fd6117925f535f
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Jan 14 10:14:10 2004 +0000
-
-    lcov-patch by Laurent Deniel
-    
-    avoids aborting the geninfo processing when an empty .bb file is
-    encountered (e.g. source code with no profiled statement)
-
-commit 7f2966f8f874a6c905b4d31e5aaf0f4654929044
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Dec 19 16:22:52 2003 +0000
-
-    lcov: updated references to lcov webpage to reflect recent site changes
-
-commit a3893f4eb2b4fadc4d7350324d74fa453a5ba0f3
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Dec 19 12:50:28 2003 +0000
-
-    Added changes by Laurent Deniel
-    
-    - a small patch to lcov 1.1 that introduces the --follow option (in
-      lcov & geninfo) to control whether or not links should be followed
-      while searching for .da files.
-    - a workaround for a gcov (3.2) bug which aborts with empty .da files
-      (gcov 3.3 is fixed but many distributions include gcc 3.2)
-
-commit d44f2f8e8672e31cc104c0598b0556a5949dc067
-Author: Paul Larson <plars@users.sourceforge.net>
-Date:   Fri Nov 21 19:34:59 2003 +0000
-
-    Fixed two buglets that caused geninfo to break with some versions of gcov.
-    
-    1. Return value for gcov --help might not be 0, expect -1 when it
-       doesn't exist
-    2. use -b instead of expanded (--branch-coverage or whatever it was)
-
-commit 5a1a33a840a665c77409f799be91cc2dce5cd3b2
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Tue Nov 18 14:06:47 2003 +0000
-
-    lcov
-    
-    - fixed function which interprets branch possibility data in geninfo
-      (branch x taken = y% would not be interpreted correctly)
-    - deactivated function which would add 'uname -a' output to testname
-      in geninfo (output in genhtml/showdetails looked unreadable, there
-      needs to be some better solution)
-
-commit e0ea03fedf43a3232c35708f882d7058998b2b3d
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Oct 10 14:18:32 2003 +0000
-
-    New function and bug fix update.
-    
-    Makefile:
-    - Added rule to build source rpm
-    
-    lcov.spec:
-    - Modified to support building source rpms
-    
-    genhtml:
-    - Fixed bug which would not correctly associate data sets with an empty
-      test name (only necessary when using --show-details in genhtml)
-    - Added checksumming mechanism: each tracefile now contains a checksum for
-      each instrumented line to detect incompatible data
-    - Implemented new command line option '--nochecksum' to suppress generation
-      of checksums
-    - Implemented new command line option '--highlight' which highlights lines of
-      code which were only covered in converted tracefiles (see '--diff' option of
-      lcov)
-    
-    geninfo:
-    - Added checksumming mechanism: each tracefile now contains a checksum for
-      each instrumented line to detect incompatible data
-    - Implemented new command line option '--nochecksum' to suppress generation
-      of checksums
-    - Added function to collect branch coverage data
-    
-    lcov:
-    - Fixed bug which would not correctly associate data sets with an empty
-      test name (only necessary when using --show-details in genhtml)
-    - Cleaned up internal command line option check
-    - Added info() output when reading tracefiles
-    - Added checksumming mechanism: each tracefile now contains a checksum for
-      each instrumented line to detect incompatible data
-    - Implemented new command line option '--nochecksum' to suppress generation
-      of checksums
-    - Implemented new command line option '--diff' which allows converting
-      coverage data from an older source code version by using a diff file
-      to map line numbers
-    
-    genpng:
-    - Added support for the highlighting option of genhtml
-    - Corrected tab to spaces conversion
-
-commit c17af02b4a856d8733a763e6c0685c31f3c7fb74
-Author: Nigel Hinds <nhinds@users.sourceforge.net>
-Date:   Fri Sep 19 21:51:06 2003 +0000
-
-    capture branch coverage data from GCOV.
-
-commit e2fc88f85254017bcf1fb04a3c935395a9b7a4a1
-Author: James M Kenefick Jr <parseexception@users.sourceforge.net>
-Date:   Thu Sep 4 16:56:10 2003 +0000
-
-    Initial checking of the galaxy map
-
-commit dfec606f3b30e1ac0f4114cfb98b29f91e9edb21
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Sat Jul 5 13:48:45 2003 +0000
-
-    LCOV: Fixed negative count handling
-    
-    - Negative counts are treated as zero
-    - Warning is issued when encountering negative counts
-
-commit a2ee105a07b19c52efe7a3e6e5b11a27b4b60ef8
-Author: Paul Larson <plars@users.sourceforge.net>
-Date:   Wed Jul 2 19:37:50 2003 +0000
-
-    Small fixes before the release
-
-commit 72860625dd904f84909253b20a7fc024b4e3377e
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon May 5 08:32:04 2003 +0000
-
-    Adjusted example program and README file
-    
-    ... to reflect renaming of lcov option '--reset' to '--zerocounters'.
-
-commit cbd9e315832960604d2949439326b30f4061e512
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Apr 30 15:47:51 2003 +0000
-
-    Renamed lcov option '--reset' to '--zerocounters'
-    
-    - Included '--remove' in help text of lcov
-    - Adjusted man pages to include option changes
-    - Extended info() change to geninfo and genhtml (infos are now printed
-      to STDERR)
-
-commit 8155960cb5db0359470d2a5f652bdc744e9ecfcd
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Wed Apr 16 15:43:31 2003 +0000
-
-    Modified read_gcov so that it can also parse the new gcov format which is to be introduced in gcc 3.3.
-
-commit 382440f781b12ade8f1f7962a0eb1cfc0525f2a5
-Author: Paul Larson <plars@users.sourceforge.net>
-Date:   Tue Apr 15 16:06:59 2003 +0000
-
-    Added --remove option info() now prints to stderr
-
-commit 62760fa1840326e849c7e58892ce671f510bb0af
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Mon Apr 14 09:31:51 2003 +0000
-
-    Check-in of updated LCOV version (to be released as 1.1).
-    
-    Includes fixes and modifications by Mike Kobler, Paul Larson and
-    myself.
-    
-    A quote from the CHANGS file:
-    - Added CHANGES file
-    - Added Makefile implementing the following targets:
-      * install    : install LCOV scripts and man pages
-      * uninstall  : revert previous installation
-      * dist       : create lcov.tar.gz file and lcov.rpm file
-      * clean      : clean up example directory, remove .tar and .rpm files
-    - Added man pages for all scripts
-    - Added example program to demonstrate the use of LCOV with a userspace
-      application
-    - Implemented RPM build process
-    - New directory structure:
-      * bin        : contains all executables
-      * example    : contains a userspace example for LCOV
-      * man        : contains man pages
-      * rpm        : contains files required for the RPM build process
-    - LCOV-scripts are now in bin/
-    - Removed .pl-extension from LCOV-script files
-    - Renamed readme.txt to README
-    
-    README:
-    - Adjusted mailing list address to ltp-coverage@lists.sourceforge.net
-    - Fixed incorrect parameter '--output-filename' in example LCOV call
-    - Removed tool descriptions and turned them into man pages
-    - Installation instructions now refer to RPM and tarball
-    
-    descriptions.tests:
-    - Fixed some spelling errors
-    
-    genhtml:
-    - Fixed bug which resulted in an error when trying to combine .info files
-      containing data without a test name
-    - Fixed bug which would not correctly handle data files in directories
-      with names containing some special characters ('+', etc.)
-    - Added check for empty tracefiles to prevent division-by-zeros
-    - Implemented new command line option --num-spaces / the number of spaces
-      which replace a tab in source code view is now user defined
-    - Fixed tab expansion so that in source code view, a tab doesn't produce a
-      fixed number of spaces, but as many spaces as are needed to advance to the
-      next tab position
-    - Output directory is now created if it doesn't exist
-    - Renamed "overview page" to "directory view page"
-    - HTML output pages are now titled "LCOV" instead of "GCOV"
-    
-    geninfo:
-    - Fixed bug which would not allow .info files to be generated in directories
-      with names containing some special characters
-    
-    lcov:
-    - Fixed bug which would cause lcov to fail when the tool is installed in
-      a path with a name containing some special characters
-    - Implemented new command line option '--add-tracefile' which allows the
-      combination of data from several tracefiles
-    - Implemented new command line option '--list' which lists the contents
-      of a tracefile
-    - Implemented new command line option '--extract' which allows extracting
-      data for a particular set of files from a tracefile
-    - Fixed name of gcov kernel module (new package contains gcov-prof.c)
-    - Changed name of gcov kernel directory from /proc/gcov to a global constant
-      so that it may be changed easily when required in future versions
-
-commit ec94ed71838a9780e82ea8bd67742bde2f4eeb47
-Author: Paul Larson <plars@users.sourceforge.net>
-Date:   Fri Mar 7 20:28:15 2003 +0000
-
-    Fix lcov.pl to work with the new gcov-kernel module
-    
-    ... ,documentation fixes in readme.txt
-
-commit e70d9abdb60b83de7174815371259c63fa75bf76
-Author: Robert Williamson <robbiew@users.sourceforge.net>
-Date:   Tue Feb 18 20:05:09 2003 +0000
-
-    Applied patch from Mike Kobler:
-    
-    One of my source file paths includes a "+" in the directory name.  I found
-    that genhtml.pl died when it encountered it. I was able to fix the problem
-    by modifying the string with the escape character before parsing it.
-
-commit 69ef6f1b607670589aae1ae1e6c78ef1b5d204e3
-Author: Peter Oberparleiter <oberpapr@users.sourceforge.net>
-Date:   Fri Sep 6 09:04:34 2002 +0000
-
-    Replaced reference to "cat" cvs directory
-    
-    ... and to .zip package.
-
-commit c641f6e694e2bebf9ef0a507091460026463d169
-Author: Manoj Iyer <iyermanoj@users.sourceforge.net>
-Date:   Thu Sep 5 19:14:51 2002 +0000
-
-    Coverage analysis files.
-    
-    Peter worked on this version.
diff --git a/ThirdParty/lcov/CONTRIBUTING b/ThirdParty/lcov/CONTRIBUTING
deleted file mode 100644
index 6890789bd..000000000
--- a/ThirdParty/lcov/CONTRIBUTING
+++ /dev/null
@@ -1,93 +0,0 @@
-Contributing to LCOV
-====================
-
-Please read this document if you would like to help improving the LTP GCOV
-extension (LCOV). In general, all types of contributions are welcome, for
-example:
-
- * Fixes for code or documentation
- * Performance and compatibility improvements
- * Functional enhancements
-
-There are some rules that these contributions must follow to be acceptable for
-inclusion:
-
- 1. The contribution must align with the project goals of LCOV.
- 2. The contribution must follow a particular format.
- 3. The contribution must be signed.
-
-Once you have made sure that your contribution follows these rules, send it via
-e-mail to the LTP coverage mailing list [1].
-
-
-Signing your work
-=================
-
-All contributions to LCOV must be signed by putting the following line at the
-end of the explanation of a patch:
-
-  Signed-off-by: Your Name <your.email@example.org>
-
-By signing a patch, you certify the following:
-
-  By making a contribution to the LTP GCOV extension (LCOV) on
-  http://ltp.sourceforge.net, I certify that:
-
-  a) The contribution was created by me and I have the right to submit it
-     under the terms and conditions of the open source license
-     "GNU General Public License, version 2 or later".
-     (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html).
-
-  b) The contribution is made free of any other party's intellectual property
-     claims or rights.
-
-  c) I understand and agree that this project and the contribution are public
-     and that a record of the contribution (including all personal information
-     I submit with it, including my sign-off) is maintained indefinitely and
-     may be redistributed consistent with this project or the open source
-     license(s) involved.
-
-
-Project goals
-=============
-
-The goal of LCOV is to provide a set of command line tools that can be used to
-collect, process and visualize code coverage data as produced by the gcov tool
-that is part of the GNU Compiler Collection (GCC) [2].
-
-If you have an idea for a contribution but are unsure if it aligns with the
-project goals, feel free to discuss the idea on the LTP coverage mailing
-list [1].
-
-
-Contribution format
-===================
-
-To contribute a change, please create a patch using 'git format-patch'.
-Alternatively you can use the diff utility with the following command line
-options:
-
-  diff -Naurp
-
-Please base your changes on the most current version of LCOV. You can use the
-following command line to obtain this version from the lcov Git repository:
-
- git clone https://github.com/linux-test-project/lcov.git
-
-Add a meaningful description of the contribution to the top of the patch. The
-description should follow this format:
-
-  component: short description
-
-  detailed description
-
-  Signed-off-by: Your Name <your.email@example.org>
-
-With your Signed-off-by, you certify the rules stated in section
-"Signing your work".
-
-
--- 
-
-[1] ltp-coverage@lists.sourceforge.net
-[2] http://gcc.gnu.org
diff --git a/ThirdParty/lcov/COPYING b/ThirdParty/lcov/COPYING
deleted file mode 100644
index d511905c1..000000000
--- a/ThirdParty/lcov/COPYING
+++ /dev/null
@@ -1,339 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/ThirdParty/lcov/Makefile b/ThirdParty/lcov/Makefile
deleted file mode 100644
index 1207cb19a..000000000
--- a/ThirdParty/lcov/Makefile
+++ /dev/null
@@ -1,122 +0,0 @@
-#
-# Makefile for LCOV
-#
-# Make targets:
-#   - install:   install LCOV tools and man pages on the system
-#   - uninstall: remove tools and man pages from the system
-#   - dist:      create files required for distribution, i.e. the lcov.tar.gz
-#                and the lcov.rpm file. Just make sure to adjust the VERSION
-#                and RELEASE variables below - both version and date strings
-#                will be updated in all necessary files.
-#   - clean:     remove all generated files
-#
-
-VERSION := $(shell bin/get_version.sh --version)
-RELEASE := $(shell bin/get_version.sh --release)
-FULL    := $(shell bin/get_version.sh --full)
-
-# Set this variable during 'make install' to specify the Perl interpreter used in
-# installed scripts, or leave empty to keep the current interpreter.
-export LCOV_PERL_PATH := /usr/bin/perl
-
-PREFIX  := /usr/local
-
-CFG_DIR := $(PREFIX)/etc
-BIN_DIR := $(PREFIX)/bin
-MAN_DIR := $(PREFIX)/share/man
-TMP_DIR := $(shell mktemp -d)
-FILES   := $(wildcard bin/*) $(wildcard man/*) README Makefile \
-	   $(wildcard rpm/*) lcovrc
-
-.PHONY: all info clean install uninstall rpms test
-
-all: info
-
-info:
-	@echo "Available make targets:"
-	@echo "  install   : install binaries and man pages in DESTDIR (default /)"
-	@echo "  uninstall : delete binaries and man pages from DESTDIR (default /)"
-	@echo "  dist      : create packages (RPM, tarball) ready for distribution"
-	@echo "  test      : perform self-tests"
-
-clean:
-	rm -f lcov-*.tar.gz
-	rm -f lcov-*.rpm
-	make -C example clean
-	make -C test -s clean
-
-install:
-	bin/install.sh bin/lcov $(DESTDIR)$(BIN_DIR)/lcov -m 755
-	bin/install.sh bin/genhtml $(DESTDIR)$(BIN_DIR)/genhtml -m 755
-	bin/install.sh bin/geninfo $(DESTDIR)$(BIN_DIR)/geninfo -m 755
-	bin/install.sh bin/genpng $(DESTDIR)$(BIN_DIR)/genpng -m 755
-	bin/install.sh bin/gendesc $(DESTDIR)$(BIN_DIR)/gendesc -m 755
-	bin/install.sh man/lcov.1 $(DESTDIR)$(MAN_DIR)/man1/lcov.1 -m 644
-	bin/install.sh man/genhtml.1 $(DESTDIR)$(MAN_DIR)/man1/genhtml.1 -m 644
-	bin/install.sh man/geninfo.1 $(DESTDIR)$(MAN_DIR)/man1/geninfo.1 -m 644
-	bin/install.sh man/genpng.1 $(DESTDIR)$(MAN_DIR)/man1/genpng.1 -m 644
-	bin/install.sh man/gendesc.1 $(DESTDIR)$(MAN_DIR)/man1/gendesc.1 -m 644
-	bin/install.sh man/lcovrc.5 $(DESTDIR)$(MAN_DIR)/man5/lcovrc.5 -m 644
-	bin/install.sh lcovrc $(DESTDIR)$(CFG_DIR)/lcovrc -m 644
-	bin/updateversion.pl $(DESTDIR)$(BIN_DIR)/lcov $(VERSION) $(RELEASE) $(FULL)
-	bin/updateversion.pl $(DESTDIR)$(BIN_DIR)/genhtml $(VERSION) $(RELEASE) $(FULL)
-	bin/updateversion.pl $(DESTDIR)$(BIN_DIR)/geninfo $(VERSION) $(RELEASE) $(FULL)
-	bin/updateversion.pl $(DESTDIR)$(BIN_DIR)/genpng $(VERSION) $(RELEASE) $(FULL)
-	bin/updateversion.pl $(DESTDIR)$(BIN_DIR)/gendesc $(VERSION) $(RELEASE) $(FULL)
-	bin/updateversion.pl $(DESTDIR)$(MAN_DIR)/man1/lcov.1 $(VERSION) $(RELEASE) $(FULL)
-	bin/updateversion.pl $(DESTDIR)$(MAN_DIR)/man1/genhtml.1 $(VERSION) $(RELEASE) $(FULL)
-	bin/updateversion.pl $(DESTDIR)$(MAN_DIR)/man1/geninfo.1 $(VERSION) $(RELEASE) $(FULL)
-	bin/updateversion.pl $(DESTDIR)$(MAN_DIR)/man1/genpng.1 $(VERSION) $(RELEASE) $(FULL)
-	bin/updateversion.pl $(DESTDIR)$(MAN_DIR)/man1/gendesc.1 $(VERSION) $(RELEASE) $(FULL)
-	bin/updateversion.pl $(DESTDIR)$(MAN_DIR)/man5/lcovrc.5 $(VERSION) $(RELEASE) $(FULL)
-
-uninstall:
-	bin/install.sh --uninstall bin/lcov $(DESTDIR)$(BIN_DIR)/lcov
-	bin/install.sh --uninstall bin/genhtml $(DESTDIR)$(BIN_DIR)/genhtml
-	bin/install.sh --uninstall bin/geninfo $(DESTDIR)$(BIN_DIR)/geninfo
-	bin/install.sh --uninstall bin/genpng $(DESTDIR)$(BIN_DIR)/genpng
-	bin/install.sh --uninstall bin/gendesc $(DESTDIR)$(BIN_DIR)/gendesc
-	bin/install.sh --uninstall man/lcov.1 $(DESTDIR)$(MAN_DIR)/man1/lcov.1
-	bin/install.sh --uninstall man/genhtml.1 $(DESTDIR)$(MAN_DIR)/man1/genhtml.1
-	bin/install.sh --uninstall man/geninfo.1 $(DESTDIR)$(MAN_DIR)/man1/geninfo.1
-	bin/install.sh --uninstall man/genpng.1 $(DESTDIR)$(MAN_DIR)/man1/genpng.1
-	bin/install.sh --uninstall man/gendesc.1 $(DESTDIR)$(MAN_DIR)/man1/gendesc.1
-	bin/install.sh --uninstall man/lcovrc.5 $(DESTDIR)$(MAN_DIR)/man5/lcovrc.5
-	bin/install.sh --uninstall lcovrc $(DESTDIR)$(CFG_DIR)/lcovrc
-
-dist: lcov-$(VERSION).tar.gz lcov-$(VERSION)-$(RELEASE).noarch.rpm \
-      lcov-$(VERSION)-$(RELEASE).src.rpm
-
-lcov-$(VERSION).tar.gz: $(FILES)
-	mkdir $(TMP_DIR)/lcov-$(VERSION)
-	cp -r * $(TMP_DIR)/lcov-$(VERSION)
-	bin/copy_dates.sh . $(TMP_DIR)/lcov-$(VERSION)
-	make -C $(TMP_DIR)/lcov-$(VERSION) clean
-	bin/updateversion.pl $(TMP_DIR)/lcov-$(VERSION) $(VERSION) $(RELEASE) $(FULL)
-	bin/get_changes.sh > $(TMP_DIR)/lcov-$(VERSION)/CHANGES
-	cd $(TMP_DIR) ; \
-	tar cfz $(TMP_DIR)/lcov-$(VERSION).tar.gz lcov-$(VERSION)
-	mv $(TMP_DIR)/lcov-$(VERSION).tar.gz .
-	rm -rf $(TMP_DIR)
-
-lcov-$(VERSION)-$(RELEASE).noarch.rpm: rpms
-lcov-$(VERSION)-$(RELEASE).src.rpm: rpms
-
-rpms: lcov-$(VERSION).tar.gz
-	mkdir $(TMP_DIR)
-	mkdir $(TMP_DIR)/BUILD
-	mkdir $(TMP_DIR)/RPMS
-	mkdir $(TMP_DIR)/SOURCES
-	mkdir $(TMP_DIR)/SRPMS
-	cp lcov-$(VERSION).tar.gz $(TMP_DIR)/SOURCES
-	cd $(TMP_DIR)/BUILD ; \
-	tar xfz $(TMP_DIR)/SOURCES/lcov-$(VERSION).tar.gz \
-		lcov-$(VERSION)/rpm/lcov.spec
-	rpmbuild --define '_topdir $(TMP_DIR)' \
-		 -ba $(TMP_DIR)/BUILD/lcov-$(VERSION)/rpm/lcov.spec
-	mv $(TMP_DIR)/RPMS/noarch/lcov-$(VERSION)-$(RELEASE).noarch.rpm .
-	mv $(TMP_DIR)/SRPMS/lcov-$(VERSION)-$(RELEASE).src.rpm .
-	rm -rf $(TMP_DIR)
-
-test:
-	@make -C test -s all
diff --git a/ThirdParty/lcov/README b/ThirdParty/lcov/README
deleted file mode 100644
index ad53c3cbc..000000000
--- a/ThirdParty/lcov/README
+++ /dev/null
@@ -1,135 +0,0 @@
--------------------------------------------------
-- README file for the LTP GCOV extension (LCOV) -
-- Last changes: 2019-02-28                      -
--------------------------------------------------
-
-Description
------------
-  LCOV is an extension of GCOV, a GNU tool which provides information about
-  what parts of a program are actually executed (i.e. "covered") while running
-  a particular test case. The extension consists of a set of Perl scripts
-  which build on the textual GCOV output to implement the following enhanced
-  functionality:
-
-    * HTML based output: coverage rates are additionally indicated using bar
-      graphs and specific colors.
-
-    * Support for large projects: overview pages allow quick browsing of
-      coverage data by providing three levels of detail: directory view,
-      file view and source code view.
-
-  LCOV was initially designed to support Linux kernel coverage measurements,
-  but works as well for coverage measurements on standard user space
-  applications.
-
-
-Further README contents
------------------------
-  1. Included files
-  2. Installing LCOV
-  3. An example of how to access kernel coverage data
-  4. An example of how to access coverage data for a user space program
-  5. Questions and Comments
-
-
-
-1. Important files
-------------------
-  README             - This README file
-  CHANGES            - List of changes between releases
-  bin/lcov           - Tool for capturing LCOV coverage data
-  bin/genhtml        - Tool for creating HTML output from LCOV data
-  bin/gendesc        - Tool for creating description files as used by genhtml
-  bin/geninfo        - Internal tool (creates LCOV data files)
-  bin/genpng         - Internal tool (creates png overviews of source files)
-  bin/install.sh     - Internal tool (takes care of un-/installing)
-  man                - Directory containing man pages for included tools
-  example            - Directory containing an example to demonstrate LCOV
-  lcovrc             - LCOV configuration file
-  Makefile           - Makefile providing 'install' and 'uninstall' targets
-
-
-2. Installing LCOV
-------------------
-The LCOV package is available as either RPM or tarball from:
-     
-  http://ltp.sourceforge.net/coverage/lcov.php
-
-To install the tarball, unpack it to a directory and run:
-
-  make install
-
-Use Git for the most recent (but possibly unstable) version:
-
-  git clone https://github.com/linux-test-project/lcov.git
-
-Change to the resulting lcov directory and type:
-
-  make install
-
-
-3. An example of how to access kernel coverage data
----------------------------------------------------
-Requirements: get and install the gcov-kernel package from
-
-  http://sourceforge.net/projects/ltp
-
-Copy the resulting gcov kernel module file to either the system wide modules
-directory or the same directory as the Perl scripts. As root, do the following:
-
-  a) Resetting counters
-
-     lcov --zerocounters
-
-  b) Capturing the current coverage state to a file
-
-     lcov --capture --output-file kernel.info
-
-  c) Getting HTML output
-
-     genhtml kernel.info
-
-Point the web browser of your choice to the resulting index.html file.
-
-
-4. An example of how to access coverage data for a user space program
----------------------------------------------------------------------
-Requirements: compile the program in question using GCC with the options
--fprofile-arcs and -ftest-coverage. During linking, make sure to specify
--lgcov or -coverage.
-
-Assuming the compile directory is called "appdir", do the following:
-
-  a) Resetting counters
-
-     lcov --directory appdir --zerocounters
-
-  b) Capturing the current coverage state to a file
-
-     lcov --directory appdir --capture --output-file app.info
-
-     Note that this step only works after the application has
-     been started and stopped at least once. Otherwise lcov will
-     abort with an error mentioning that there are no data/.gcda files.
-
-  c) Getting HTML output
-
-     genhtml app.info
-
-Point the web browser of your choice to the resulting index.html file.
-
-Please note that independently of where the application is installed or
-from which directory it is run, the --directory statement needs to
-point to the directory in which the application was compiled.
-
-For further information on the gcc profiling mechanism, please also
-consult the gcov man page.
-
-
-5. Questions and comments
--------------------------
-See the included man pages for more information on how to use the LCOV tools.
-
-Please email further questions or comments regarding this tool to the
-LTP Mailing list at ltp-coverage@lists.sourceforge.net  
-
diff --git a/ThirdParty/lcov/bin/copy_dates.sh b/ThirdParty/lcov/bin/copy_dates.sh
deleted file mode 100755
index aef5f5ed3..000000000
--- a/ThirdParty/lcov/bin/copy_dates.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# Usage: copy_dates.sh SOURCE TARGET
-#
-# For each file found in SOURCE, set the modification time of the copy of that
-# file in TARGET to either the time of the latest Git commit (if SOURCE contains
-# a Git repository and the file was not modified after the last commit), or the
-# modification time of the original file.
-
-SOURCE="$1"
-TARGET="$2"
-
-if [ -z "$SOURCE" -o -z "$TARGET" ] ; then
-	echo "Usage: $0 SOURCE TARGET" >&2
-	exit 1
-fi
-
-[ -d "$SOURCE/.git" ] ; NOGIT=$?
-
-echo "Copying modification/commit times from $SOURCE to $TARGET"
-
-cd "$SOURCE" || exit 1
-find * -type f | while read FILENAME ; do
-	[ ! -e "$TARGET/$FILENAME" ] && continue
-
-	# Copy modification time
-	touch -m "$TARGET/$FILENAME" -r "$FILENAME"
-
-	[ $NOGIT -eq 1 ] && continue				# No Git
-	git diff --quiet -- "$FILENAME" || continue		# Modified
-	git diff --quiet --cached -- "$FILENAME" || continue	# Modified
-
-	# Apply modification time from Git commit time
-	TIME=$(git log --pretty=format:%cd -n 1 --date=iso -- "$FILENAME")
-	[ -n "$TIME" ] && touch -m "$TARGET/$FILENAME" --date "$TIME"
-done
diff --git a/ThirdParty/lcov/bin/gendesc b/ThirdParty/lcov/bin/gendesc
deleted file mode 100755
index 334ee7892..000000000
--- a/ThirdParty/lcov/bin/gendesc
+++ /dev/null
@@ -1,226 +0,0 @@
-#!/usr/bin/env perl
-#
-#   Copyright (c) International Business Machines  Corp., 2002
-#
-#   This program is free software;  you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or (at
-#   your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY;  without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#   General Public License for more details.                 
-#
-#   You should have received a copy of the GNU General Public License
-#   along with this program;  if not, write to the Free Software
-#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-#
-# gendesc
-#
-#   This script creates a description file as understood by genhtml.
-#   Input file format:
-#
-#   For each test case:
-#     <test name><optional whitespace>
-#     <at least one whitespace character (blank/tab)><test description>
-#   
-#   Actual description may consist of several lines. By default, output is
-#   written to stdout. Test names consist of alphanumeric characters
-#   including _ and -.
-#
-#
-# History:
-#   2002-09-02: created by Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>
-#
-
-use strict;
-use warnings;
-use File::Basename; 
-use Getopt::Long;
-use Cwd qw/abs_path/;
-
-
-# Constants
-our $tool_dir		= abs_path(dirname($0));
-our $lcov_version	= "LCOV version 1.14";
-our $lcov_url		= "http://ltp.sourceforge.net/coverage/lcov.php";
-our $tool_name		= basename($0);
-
-
-# Prototypes
-sub print_usage(*);
-sub gen_desc();
-sub warn_handler($);
-sub die_handler($);
-
-
-# Global variables
-our $help;
-our $version;
-our $output_filename;
-our $input_filename;
-
-
-#
-# Code entry point
-#
-
-$SIG{__WARN__} = \&warn_handler;
-$SIG{__DIE__} = \&die_handler;
-
-# Parse command line options
-if (!GetOptions("output-filename=s" => \$output_filename,
-		"version" =>\$version,
-		"help|?" => \$help
-		))
-{
-	print(STDERR "Use $tool_name --help to get usage information\n");
-	exit(1);
-}
-
-$input_filename = $ARGV[0];
-
-# Check for help option
-if ($help)
-{
-	print_usage(*STDOUT);
-	exit(0);
-}
-
-# Check for version option
-if ($version)
-{
-	print("$tool_name: $lcov_version\n");
-	exit(0);
-}
-
-
-# Check for input filename
-if (!$input_filename)
-{
-	die("No input filename specified\n".
-	    "Use $tool_name --help to get usage information\n");
-}
-
-# Do something
-gen_desc();
-
-
-#
-# print_usage(handle)
-#
-# Write out command line usage information to given filehandle.
-#
-
-sub print_usage(*)
-{
-	local *HANDLE = $_[0];
-
-	print(HANDLE <<END_OF_USAGE)
-Usage: $tool_name [OPTIONS] INPUTFILE
-
-Convert a test case description file into a format as understood by genhtml.
-
-  -h, --help                        Print this help, then exit
-  -v, --version                     Print version number, then exit
-  -o, --output-filename FILENAME    Write description to FILENAME
-
-For more information see: $lcov_url
-END_OF_USAGE
-	;
-}
-
-
-#
-# gen_desc()
-#
-# Read text file INPUT_FILENAME and convert the contained description to a
-# format as understood by genhtml, i.e.
-#
-#    TN:<test name>
-#    TD:<test description>
-#
-# If defined, write output to OUTPUT_FILENAME, otherwise to stdout.
-#
-# Die on error.
-#
-
-sub gen_desc()
-{
-	local *INPUT_HANDLE;
-	local *OUTPUT_HANDLE;
-	my $empty_line = "ignore";
-
-	open(INPUT_HANDLE, "<", $input_filename)
-		or die("ERROR: cannot open $input_filename!\n");
-
-	# Open output file for writing
-	if ($output_filename)
-	{
-		open(OUTPUT_HANDLE, ">", $output_filename)
-			or die("ERROR: cannot create $output_filename!\n");
-	}
-	else
-	{
-		*OUTPUT_HANDLE = *STDOUT;
-	}
-
-	# Process all lines in input file
-	while (<INPUT_HANDLE>)
-	{
-		chomp($_);
-
-		if (/^(\w[\w-]*)(\s*)$/)
-		{
-			# Matched test name
-			# Name starts with alphanum or _, continues with
-			# alphanum, _ or -
-			print(OUTPUT_HANDLE "TN: $1\n");
-			$empty_line = "ignore";
-		}
-		elsif (/^(\s+)(\S.*?)\s*$/)
-		{
-			# Matched test description
-			if ($empty_line eq "insert")
-			{
-				# Write preserved empty line
-				print(OUTPUT_HANDLE "TD: \n");
-			}
-			print(OUTPUT_HANDLE "TD: $2\n");
-			$empty_line = "observe";
-		}
-		elsif (/^\s*$/)
-		{
-			# Matched empty line to preserve paragraph separation
-			# inside description text
-			if ($empty_line eq "observe")
-			{
-				$empty_line = "insert";
-			}
-		}
-	}
-
-	# Close output file if defined
-	if ($output_filename)
-	{
-		close(OUTPUT_HANDLE);
-	}
-
-	close(INPUT_HANDLE);
-}
-
-sub warn_handler($)
-{
-	my ($msg) = @_;
-
-	warn("$tool_name: $msg");
-}
-
-sub die_handler($)
-{
-	my ($msg) = @_;
-
-	die("$tool_name: $msg");
-}
diff --git a/ThirdParty/lcov/bin/genhtml b/ThirdParty/lcov/bin/genhtml
deleted file mode 100755
index 2352300c1..000000000
--- a/ThirdParty/lcov/bin/genhtml
+++ /dev/null
@@ -1,5974 +0,0 @@
-#!/usr/bin/env perl
-#
-#   Copyright (c) International Business Machines  Corp., 2002,2012
-#
-#   This program is free software;  you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or (at
-#   your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY;  without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#   General Public License for more details. 
-#
-#   You should have received a copy of the GNU General Public License
-#   along with this program;  if not, write to the Free Software
-#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-#
-# genhtml
-#
-#   This script generates HTML output from .info files as created by the
-#   geninfo script. Call it with --help and refer to the genhtml man page
-#   to get information on usage and available options.
-#
-#
-# History:
-#   2002-08-23 created by Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>
-#                         IBM Lab Boeblingen
-#        based on code by Manoj Iyer <manjo@mail.utexas.edu> and
-#                         Megan Bock <mbock@us.ibm.com>
-#                         IBM Austin
-#   2002-08-27 / Peter Oberparleiter: implemented frame view
-#   2002-08-29 / Peter Oberparleiter: implemented test description filtering
-#                so that by default only descriptions for test cases which
-#                actually hit some source lines are kept
-#   2002-09-05 / Peter Oberparleiter: implemented --no-sourceview
-#   2002-09-05 / Mike Kobler: One of my source file paths includes a "+" in
-#                the directory name.  I found that genhtml.pl died when it
-#                encountered it. I was able to fix the problem by modifying
-#                the string with the escape character before parsing it.
-#   2002-10-26 / Peter Oberparleiter: implemented --num-spaces
-#   2003-04-07 / Peter Oberparleiter: fixed bug which resulted in an error
-#                when trying to combine .info files containing data without
-#                a test name
-#   2003-04-10 / Peter Oberparleiter: extended fix by Mike to also cover
-#                other special characters
-#   2003-04-30 / Peter Oberparleiter: made info write to STDERR, not STDOUT
-#   2003-07-10 / Peter Oberparleiter: added line checksum support
-#   2004-08-09 / Peter Oberparleiter: added configuration file support
-#   2005-03-04 / Cal Pierog: added legend to HTML output, fixed coloring of
-#                "good coverage" background
-#   2006-03-18 / Marcus Boerger: added --custom-intro, --custom-outro and
-#                overwrite --no-prefix if --prefix is present
-#   2006-03-20 / Peter Oberparleiter: changes to custom_* function (rename
-#                to html_prolog/_epilog, minor modifications to implementation),
-#                changed prefix/noprefix handling to be consistent with current
-#                logic
-#   2006-03-20 / Peter Oberparleiter: added --html-extension option
-#   2008-07-14 / Tom Zoerner: added --function-coverage command line option;
-#                added function table to source file page
-#   2008-08-13 / Peter Oberparleiter: modified function coverage
-#                implementation (now enabled per default),
-#                introduced sorting option (enabled per default)
-#
-
-use strict;
-use warnings;
-use File::Basename;
-use File::Temp qw(tempfile);
-use Getopt::Long;
-use Digest::MD5 qw(md5_base64);
-use Cwd qw/abs_path cwd/;
-
-
-# Global constants
-our $title		= "LCOV - code coverage report";
-our $tool_dir		= abs_path(dirname($0));
-our $lcov_version	= "LCOV version 1.14";
-our $lcov_url		= "http://ltp.sourceforge.net/coverage/lcov.php";
-our $tool_name		= basename($0);
-
-# Specify coverage rate default precision
-our $default_precision = 1;
-
-# Specify coverage rate limits (in %) for classifying file entries
-# HI:   $hi_limit <= rate <= 100          graph color: green
-# MED: $med_limit <= rate <  $hi_limit    graph color: orange
-# LO:          0  <= rate <  $med_limit   graph color: red
-
-# For line coverage/all coverage types if not specified
-our $hi_limit = 90;
-our $med_limit = 75;
-
-# For function coverage
-our $fn_hi_limit;
-our $fn_med_limit;
-
-# For branch coverage
-our $br_hi_limit;
-our $br_med_limit;
-
-# Width of overview image
-our $overview_width = 80;
-
-# Resolution of overview navigation: this number specifies the maximum
-# difference in lines between the position a user selected from the overview
-# and the position the source code window is scrolled to.
-our $nav_resolution = 4;
-
-# Clicking a line in the overview image should show the source code view at
-# a position a bit further up so that the requested line is not the first
-# line in the window. This number specifies that offset in lines.
-our $nav_offset = 10;
-
-# Clicking on a function name should show the source code at a position a
-# few lines before the first line of code of that function. This number
-# specifies that offset in lines.
-our $func_offset = 2;
-
-our $overview_title = "top level";
-
-# Width for line coverage information in the source code view
-our $line_field_width = 12;
-
-# Width for branch coverage information in the source code view
-our $br_field_width = 16;
-
-# Internal Constants
-
-# Header types
-our $HDR_DIR		= 0;
-our $HDR_FILE		= 1;
-our $HDR_SOURCE		= 2;
-our $HDR_TESTDESC	= 3;
-our $HDR_FUNC		= 4;
-
-# Sort types
-our $SORT_FILE		= 0;
-our $SORT_LINE		= 1;
-our $SORT_FUNC		= 2;
-our $SORT_BRANCH	= 3;
-
-# Fileview heading types
-our $HEAD_NO_DETAIL	= 1;
-our $HEAD_DETAIL_HIDDEN	= 2;
-our $HEAD_DETAIL_SHOWN	= 3;
-
-# Additional offsets used when converting branch coverage data to HTML
-our $BR_LEN	= 3;
-our $BR_OPEN	= 4;
-our $BR_CLOSE	= 5;
-
-# Branch data combination types
-our $BR_SUB = 0;
-our $BR_ADD = 1;
-
-# Error classes which users may specify to ignore during processing
-our $ERROR_SOURCE	= 0;
-our %ERROR_ID = (
-	"source" => $ERROR_SOURCE,
-);
-
-# Data related prototypes
-sub print_usage(*);
-sub gen_html();
-sub html_create($$);
-sub process_dir($);
-sub process_file($$$);
-sub info(@);
-sub read_info_file($);
-sub get_info_entry($);
-sub set_info_entry($$$$$$$$$;$$$$$$);
-sub get_prefix($@);
-sub shorten_prefix($);
-sub get_dir_list(@);
-sub get_relative_base_path($);
-sub read_testfile($);
-sub get_date_string();
-sub create_sub_dir($);
-sub subtract_counts($$);
-sub add_counts($$);
-sub apply_baseline($$);
-sub remove_unused_descriptions();
-sub get_found_and_hit($);
-sub get_affecting_tests($$$);
-sub combine_info_files($$);
-sub merge_checksums($$$);
-sub combine_info_entries($$$);
-sub apply_prefix($@);
-sub system_no_output($@);
-sub read_config($);
-sub apply_config($);
-sub get_html_prolog($);
-sub get_html_epilog($);
-sub write_dir_page($$$$$$$$$$$$$$$$$);
-sub classify_rate($$$$);
-sub combine_brcount($$$;$);
-sub get_br_found_and_hit($);
-sub warn_handler($);
-sub die_handler($);
-sub parse_ignore_errors(@);
-sub parse_dir_prefix(@);
-sub rate($$;$$$);
-
-
-# HTML related prototypes
-sub escape_html($);
-sub get_bar_graph_code($$$);
-
-sub write_png_files();
-sub write_htaccess_file();
-sub write_css_file();
-sub write_description_file($$$$$$$);
-sub write_function_table(*$$$$$$$$$$);
-
-sub write_html(*$);
-sub write_html_prolog(*$$);
-sub write_html_epilog(*$;$);
-
-sub write_header(*$$$$$$$$$$);
-sub write_header_prolog(*$);
-sub write_header_line(*@);
-sub write_header_epilog(*$);
-
-sub write_file_table(*$$$$$$$);
-sub write_file_table_prolog(*$@);
-sub write_file_table_entry(*$$$@);
-sub write_file_table_detail_entry(*$@);
-sub write_file_table_epilog(*);
-
-sub write_test_table_prolog(*$);
-sub write_test_table_entry(*$$);
-sub write_test_table_epilog(*);
-
-sub write_source($$$$$$$);
-sub write_source_prolog(*);
-sub write_source_line(*$$$$$);
-sub write_source_epilog(*);
-
-sub write_frameset(*$$$);
-sub write_overview_line(*$$$);
-sub write_overview(*$$$$);
-
-# External prototype (defined in genpng)
-sub gen_png($$$@);
-
-
-# Global variables & initialization
-our %info_data;		# Hash containing all data from .info file
-our @opt_dir_prefix;	# Array of prefixes to remove from all sub directories
-our @dir_prefix;
-our %test_description;	# Hash containing test descriptions if available
-our $date = get_date_string();
-
-our @info_filenames;	# List of .info files to use as data source
-our $test_title;	# Title for output as written to each page header
-our $output_directory;	# Name of directory in which to store output
-our $base_filename;	# Optional name of file containing baseline data
-our $desc_filename;	# Name of file containing test descriptions
-our $css_filename;	# Optional name of external stylesheet file to use
-our $quiet;		# If set, suppress information messages
-our $help;		# Help option flag
-our $version;		# Version option flag
-our $show_details;	# If set, generate detailed directory view
-our $no_prefix;		# If set, do not remove filename prefix
-our $func_coverage;	# If set, generate function coverage statistics
-our $no_func_coverage;	# Disable func_coverage
-our $br_coverage;	# If set, generate branch coverage statistics
-our $no_br_coverage;	# Disable br_coverage
-our $sort = 1;		# If set, provide directory listings with sorted entries
-our $no_sort;		# Disable sort
-our $frames;		# If set, use frames for source code view
-our $keep_descriptions;	# If set, do not remove unused test case descriptions
-our $no_sourceview;	# If set, do not create a source code view for each file
-our $highlight;		# If set, highlight lines covered by converted data only
-our $legend;		# If set, include legend in output
-our $tab_size = 8;	# Number of spaces to use in place of tab
-our $config;		# Configuration file contents
-our $html_prolog_file;	# Custom HTML prolog file (up to and including <body>)
-our $html_epilog_file;	# Custom HTML epilog file (from </body> onwards)
-our $html_prolog;	# Actual HTML prolog
-our $html_epilog;	# Actual HTML epilog
-our $html_ext = "html";	# Extension for generated HTML files
-our $html_gzip = 0;	# Compress with gzip
-our $demangle_cpp = 0;	# Demangle C++ function names
-our @opt_ignore_errors;	# Ignore certain error classes during processing
-our @ignore;
-our $opt_config_file;	# User-specified configuration file location
-our %opt_rc;
-our $opt_missed;	# List/sort lines by missed counts
-our $charset = "UTF-8";	# Default charset for HTML pages
-our @fileview_sortlist;
-our @fileview_sortname = ("", "-sort-l", "-sort-f", "-sort-b");
-our @funcview_sortlist;
-our @rate_name = ("Lo", "Med", "Hi");
-our @rate_png = ("ruby.png", "amber.png", "emerald.png");
-our $lcov_func_coverage = 1;
-our $lcov_branch_coverage = 0;
-our $rc_desc_html = 0;	# lcovrc: genhtml_desc_html
-
-our $cwd = cwd();	# Current working directory
-
-
-#
-# Code entry point
-#
-
-$SIG{__WARN__} = \&warn_handler;
-$SIG{__DIE__} = \&die_handler;
-
-# Check command line for a configuration file name
-Getopt::Long::Configure("pass_through", "no_auto_abbrev");
-GetOptions("config-file=s" => \$opt_config_file,
-	   "rc=s%" => \%opt_rc);
-Getopt::Long::Configure("default");
-
-{
-	# Remove spaces around rc options
-	my %new_opt_rc;
-
-	while (my ($key, $value) = each(%opt_rc)) {
-		$key =~ s/^\s+|\s+$//g;
-		$value =~ s/^\s+|\s+$//g;
-
-		$new_opt_rc{$key} = $value;
-	}
-	%opt_rc = %new_opt_rc;
-}
-
-# Read configuration file if available
-if (defined($opt_config_file)) {
-	$config = read_config($opt_config_file);
-} elsif (defined($ENV{"HOME"}) && (-r $ENV{"HOME"}."/.lcovrc"))
-{
-	$config = read_config($ENV{"HOME"}."/.lcovrc");
-}
-elsif (-r "/etc/lcovrc")
-{
-	$config = read_config("/etc/lcovrc");
-} elsif (-r "/usr/local/etc/lcovrc")
-{
-	$config = read_config("/usr/local/etc/lcovrc");
-}
-
-if ($config || %opt_rc)
-{
-	# Copy configuration file and --rc values to variables
-	apply_config({
-		"genhtml_css_file"		=> \$css_filename,
-		"genhtml_hi_limit"		=> \$hi_limit,
-		"genhtml_med_limit"		=> \$med_limit,
-		"genhtml_line_field_width"	=> \$line_field_width,
-		"genhtml_overview_width"	=> \$overview_width,
-		"genhtml_nav_resolution"	=> \$nav_resolution,
-		"genhtml_nav_offset"		=> \$nav_offset,
-		"genhtml_keep_descriptions"	=> \$keep_descriptions,
-		"genhtml_no_prefix"		=> \$no_prefix,
-		"genhtml_no_source"		=> \$no_sourceview,
-		"genhtml_num_spaces"		=> \$tab_size,
-		"genhtml_highlight"		=> \$highlight,
-		"genhtml_legend"		=> \$legend,
-		"genhtml_html_prolog"		=> \$html_prolog_file,
-		"genhtml_html_epilog"		=> \$html_epilog_file,
-		"genhtml_html_extension"	=> \$html_ext,
-		"genhtml_html_gzip"		=> \$html_gzip,
-		"genhtml_precision"		=> \$default_precision,
-		"genhtml_function_hi_limit"	=> \$fn_hi_limit,
-		"genhtml_function_med_limit"	=> \$fn_med_limit,
-		"genhtml_function_coverage"	=> \$func_coverage,
-		"genhtml_branch_hi_limit"	=> \$br_hi_limit,
-		"genhtml_branch_med_limit"	=> \$br_med_limit,
-		"genhtml_branch_coverage"	=> \$br_coverage,
-		"genhtml_branch_field_width"	=> \$br_field_width,
-		"genhtml_sort"			=> \$sort,
-		"genhtml_charset"		=> \$charset,
-		"genhtml_desc_html"		=> \$rc_desc_html,
-		"genhtml_demangle_cpp"		=> \$demangle_cpp,
-		"genhtml_missed"		=> \$opt_missed,
-		"lcov_function_coverage"	=> \$lcov_func_coverage,
-		"lcov_branch_coverage"		=> \$lcov_branch_coverage,
-		});
-}
-
-# Copy related values if not specified
-$fn_hi_limit	= $hi_limit if (!defined($fn_hi_limit));
-$fn_med_limit	= $med_limit if (!defined($fn_med_limit));
-$br_hi_limit	= $hi_limit if (!defined($br_hi_limit));
-$br_med_limit	= $med_limit if (!defined($br_med_limit));
-$func_coverage	= $lcov_func_coverage if (!defined($func_coverage));
-$br_coverage	= $lcov_branch_coverage if (!defined($br_coverage));
-
-# Parse command line options
-if (!GetOptions("output-directory|o=s"	=> \$output_directory,
-		"title|t=s"		=> \$test_title,
-		"description-file|d=s"	=> \$desc_filename,
-		"keep-descriptions|k"	=> \$keep_descriptions,
-		"css-file|c=s"		=> \$css_filename,
-		"baseline-file|b=s"	=> \$base_filename,
-		"prefix|p=s"		=> \@opt_dir_prefix,
-		"num-spaces=i"		=> \$tab_size,
-		"no-prefix"		=> \$no_prefix,
-		"no-sourceview"		=> \$no_sourceview,
-		"show-details|s"	=> \$show_details,
-		"frames|f"		=> \$frames,
-		"highlight"		=> \$highlight,
-		"legend"		=> \$legend,
-		"quiet|q"		=> \$quiet,
-		"help|h|?"		=> \$help,
-		"version|v"		=> \$version,
-		"html-prolog=s"		=> \$html_prolog_file,
-		"html-epilog=s"		=> \$html_epilog_file,
-		"html-extension=s"	=> \$html_ext,
-		"html-gzip"		=> \$html_gzip,
-		"function-coverage"	=> \$func_coverage,
-		"no-function-coverage"	=> \$no_func_coverage,
-		"branch-coverage"	=> \$br_coverage,
-		"no-branch-coverage"	=> \$no_br_coverage,
-		"sort"			=> \$sort,
-		"no-sort"		=> \$no_sort,
-		"demangle-cpp"		=> \$demangle_cpp,
-		"ignore-errors=s"	=> \@opt_ignore_errors,
-		"config-file=s"		=> \$opt_config_file,
-		"rc=s%"			=> \%opt_rc,
-		"precision=i"		=> \$default_precision,
-		"missed"		=> \$opt_missed,
-		))
-{
-	print(STDERR "Use $tool_name --help to get usage information\n");
-	exit(1);
-} else {
-	# Merge options
-	if ($no_func_coverage) {
-		$func_coverage = 0;
-	}
-	if ($no_br_coverage) {
-		$br_coverage = 0;
-	}
-
-	# Merge sort options
-	if ($no_sort) {
-		$sort = 0;
-	}
-}
-
-@info_filenames = @ARGV;
-
-# Check for help option
-if ($help)
-{
-	print_usage(*STDOUT);
-	exit(0);
-}
-
-# Check for version option
-if ($version)
-{
-	print("$tool_name: $lcov_version\n");
-	exit(0);
-}
-
-# Determine which errors the user wants us to ignore
-parse_ignore_errors(@opt_ignore_errors);
-
-# Split the list of prefixes if needed
-parse_dir_prefix(@opt_dir_prefix);
-
-# Check for info filename
-if (!@info_filenames)
-{
-	die("No filename specified\n".
-	    "Use $tool_name --help to get usage information\n");
-}
-
-# Generate a title if none is specified
-if (!$test_title)
-{
-	if (scalar(@info_filenames) == 1)
-	{
-		# Only one filename specified, use it as title
-		$test_title = basename($info_filenames[0]);
-	}
-	else
-	{
-		# More than one filename specified, used default title
-		$test_title = "unnamed";
-	}
-}
-
-# Make sure css_filename is an absolute path (in case we're changing
-# directories)
-if ($css_filename)
-{
-	if (!($css_filename =~ /^\/(.*)$/))
-	{
-		$css_filename = $cwd."/".$css_filename;
-	}
-}
-
-# Make sure tab_size is within valid range
-if ($tab_size < 1)
-{
-	print(STDERR "ERROR: invalid number of spaces specified: ".
-		     "$tab_size!\n");
-	exit(1);
-}
-
-# Get HTML prolog and epilog
-$html_prolog = get_html_prolog($html_prolog_file);
-$html_epilog = get_html_epilog($html_epilog_file);
-
-# Issue a warning if --no-sourceview is enabled together with --frames
-if ($no_sourceview && defined($frames))
-{
-	warn("WARNING: option --frames disabled because --no-sourceview ".
-	     "was specified!\n");
-	$frames = undef;
-}
-
-# Issue a warning if --no-prefix is enabled together with --prefix
-if ($no_prefix && @dir_prefix)
-{
-	warn("WARNING: option --prefix disabled because --no-prefix was ".
-	     "specified!\n");
-	@dir_prefix = undef;
-}
-
-@fileview_sortlist = ($SORT_FILE);
-@funcview_sortlist = ($SORT_FILE);
-
-if ($sort) {
-	push(@fileview_sortlist, $SORT_LINE);
-	push(@fileview_sortlist, $SORT_FUNC) if ($func_coverage);
-	push(@fileview_sortlist, $SORT_BRANCH) if ($br_coverage);
-	push(@funcview_sortlist, $SORT_LINE);
-}
-
-if ($frames)
-{
-	# Include genpng code needed for overview image generation
-	do("$tool_dir/genpng");
-}
-
-# Ensure that the c++filt tool is available when using --demangle-cpp
-if ($demangle_cpp)
-{
-	if (system_no_output(3, "c++filt", "--version")) {
-		die("ERROR: could not find c++filt tool needed for ".
-		    "--demangle-cpp\n");
-	}
-}
-
-# Make sure precision is within valid range
-if ($default_precision < 1 || $default_precision > 4)
-{
-	die("ERROR: specified precision is out of range (1 to 4)\n");
-}
-
-
-# Make sure output_directory exists, create it if necessary
-if ($output_directory)
-{
-	stat($output_directory);
-
-	if (! -e _)
-	{
-		create_sub_dir($output_directory);
-	}
-}
-
-# Do something
-gen_html();
-
-exit(0);
-
-
-
-#
-# print_usage(handle)
-#
-# Print usage information.
-#
-
-sub print_usage(*)
-{
-	local *HANDLE = $_[0];
-
-	print(HANDLE <<END_OF_USAGE);
-Usage: $tool_name [OPTIONS] INFOFILE(S)
-
-Create HTML output for coverage data found in INFOFILE. Note that INFOFILE
-may also be a list of filenames.
-
-Misc:
-  -h, --help                        Print this help, then exit
-  -v, --version                     Print version number, then exit
-  -q, --quiet                       Do not print progress messages
-      --config-file FILENAME        Specify configuration file location
-      --rc SETTING=VALUE            Override configuration file setting
-      --ignore-errors ERRORS        Continue after ERRORS (source)
-
-Operation:
-  -o, --output-directory OUTDIR     Write HTML output to OUTDIR
-  -s, --show-details                Generate detailed directory view
-  -d, --description-file DESCFILE   Read test case descriptions from DESCFILE
-  -k, --keep-descriptions           Do not remove unused test descriptions
-  -b, --baseline-file BASEFILE      Use BASEFILE as baseline file
-  -p, --prefix PREFIX               Remove PREFIX from all directory names
-      --no-prefix                   Do not remove prefix from directory names
-      --(no-)function-coverage      Enable (disable) function coverage display
-      --(no-)branch-coverage        Enable (disable) branch coverage display
-
-HTML output:
-  -f, --frames                      Use HTML frames for source code view
-  -t, --title TITLE                 Display TITLE in header of all pages
-  -c, --css-file CSSFILE            Use external style sheet file CSSFILE
-      --no-source                   Do not create source code view
-      --num-spaces NUM              Replace tabs with NUM spaces in source view
-      --highlight                   Highlight lines with converted-only data
-      --legend                      Include color legend in HTML output
-      --html-prolog FILE            Use FILE as HTML prolog for generated pages
-      --html-epilog FILE            Use FILE as HTML epilog for generated pages
-      --html-extension EXT          Use EXT as filename extension for pages
-      --html-gzip                   Use gzip to compress HTML
-      --(no-)sort                   Enable (disable) sorted coverage views
-      --demangle-cpp                Demangle C++ function names
-      --precision NUM               Set precision of coverage rate
-      --missed                      Show miss counts as negative numbers
-
-For more information see: $lcov_url
-END_OF_USAGE
-	;
-}
-
-
-#
-# get_rate(found, hit)
-#
-# Return a relative value for the specified found&hit values
-# which is used for sorting the corresponding entries in a
-# file list.
-#
-
-sub get_rate($$)
-{
-	my ($found, $hit) = @_;
-
-	if ($found == 0) {
-		return 10000;
-	}
-	return int($hit * 1000 / $found) * 10 + 2 - (1 / $found);
-}
-
-
-#
-# get_overall_line(found, hit, name_singular, name_plural)
-#
-# Return a string containing overall information for the specified
-# found/hit data.
-#
-
-sub get_overall_line($$$$)
-{
-	my ($found, $hit, $name_sn, $name_pl) = @_;
-	my $name;
-
-	return "no data found" if (!defined($found) || $found == 0);
-	$name = ($found == 1) ? $name_sn : $name_pl;
-	return rate($hit, $found, "% ($hit of $found $name)");
-}
-
-
-#
-# print_overall_rate(ln_do, ln_found, ln_hit, fn_do, fn_found, fn_hit, br_do
-#                    br_found, br_hit)
-#
-# Print overall coverage rates for the specified coverage types.
-#
-
-sub print_overall_rate($$$$$$$$$)
-{
-	my ($ln_do, $ln_found, $ln_hit, $fn_do, $fn_found, $fn_hit,
-	    $br_do, $br_found, $br_hit) = @_;
-
-	info("Overall coverage rate:\n");
-	info("  lines......: %s\n",
-	     get_overall_line($ln_found, $ln_hit, "line", "lines"))
-		if ($ln_do);
-	info("  functions..: %s\n",
-	     get_overall_line($fn_found, $fn_hit, "function", "functions"))
-		if ($fn_do);
-	info("  branches...: %s\n",
-	     get_overall_line($br_found, $br_hit, "branch", "branches"))
-		if ($br_do);
-}
-
-sub get_fn_list($)
-{
-	my ($info) = @_;
-	my %fns;
-	my @result;
-
-	foreach my $filename (keys(%{$info})) {
-		my $data = $info->{$filename};
-		my $funcdata = $data->{"func"};
-		my $sumfnccount = $data->{"sumfnc"};
-
-		if (defined($funcdata)) {
-			foreach my $func_name (keys(%{$funcdata})) {
-				$fns{$func_name} = 1;
-			}
-		}
-
-		if (defined($sumfnccount)) {
-			foreach my $func_name (keys(%{$sumfnccount})) {
-				$fns{$func_name} = 1;
-			}
-		}
-	}
-
-	@result = keys(%fns);
-
-	return \@result;
-}
-
-#
-# rename_functions(info, conv)
-#
-# Rename all function names in INFO according to CONV: OLD_NAME -> NEW_NAME.
-# In case two functions demangle to the same name, assume that they are
-# different object code implementations for the same source function.
-#
-
-sub rename_functions($$)
-{
-	my ($info, $conv) = @_;
-
-	foreach my $filename (keys(%{$info})) {
-		my $data = $info->{$filename};
-		my $funcdata;
-		my $testfncdata;
-		my $sumfnccount;
-		my %newfuncdata;
-		my %newsumfnccount;
-		my $f_found;
-		my $f_hit;
-
-		# funcdata: function name -> line number
-		$funcdata = $data->{"func"};
-		foreach my $fn (keys(%{$funcdata})) {
-			my $cn = $conv->{$fn};
-
-			# Abort if two functions on different lines map to the
-			# same demangled name.
-			if (defined($newfuncdata{$cn}) &&
-			    $newfuncdata{$cn} != $funcdata->{$fn}) {
-				die("ERROR: Demangled function name $cn ".
-				    "maps to different lines (".
-				    $newfuncdata{$cn}." vs ".
-				    $funcdata->{$fn}.") in $filename\n");
-			}
-			$newfuncdata{$cn} = $funcdata->{$fn};
-		}
-		$data->{"func"} = \%newfuncdata;
-
-		# testfncdata: test name -> testfnccount
-		# testfnccount: function name -> execution count
-		$testfncdata = $data->{"testfnc"};
-		foreach my $tn (keys(%{$testfncdata})) {
-			my $testfnccount = $testfncdata->{$tn};
-			my %newtestfnccount;
-
-			foreach my $fn (keys(%{$testfnccount})) {
-				my $cn = $conv->{$fn};
-
-				# Add counts for different functions that map
-				# to the same name.
-				$newtestfnccount{$cn} +=
-					$testfnccount->{$fn};
-			}
-			$testfncdata->{$tn} = \%newtestfnccount;
-		}
-
-		# sumfnccount: function name -> execution count
-		$sumfnccount = $data->{"sumfnc"};
-		foreach my $fn (keys(%{$sumfnccount})) {
-			my $cn = $conv->{$fn};
-
-			# Add counts for different functions that map
-			# to the same name.
-			$newsumfnccount{$cn} += $sumfnccount->{$fn};
-		}
-		$data->{"sumfnc"} = \%newsumfnccount;
-
-		# Update function found and hit counts since they may have
-		# changed
-		$f_found = 0;
-		$f_hit = 0;
-		foreach my $fn (keys(%newsumfnccount)) {
-			$f_found++;
-			$f_hit++ if ($newsumfnccount{$fn} > 0);
-		}
-		$data->{"f_found"} = $f_found;
-		$data->{"f_hit"} = $f_hit;
-	}
-}
-
-#
-# gen_html()
-#
-# Generate a set of HTML pages from contents of .info file INFO_FILENAME.
-# Files will be written to the current directory. If provided, test case
-# descriptions will be read from .tests file TEST_FILENAME and included
-# in ouput.
-#
-# Die on error.
-#
-
-sub gen_html()
-{
-	local *HTML_HANDLE;
-	my %overview;
-	my %base_data;
-	my $lines_found;
-	my $lines_hit;
-	my $fn_found;
-	my $fn_hit;
-	my $br_found;
-	my $br_hit;
-	my $overall_found = 0;
-	my $overall_hit = 0;
-	my $total_fn_found = 0;
-	my $total_fn_hit = 0;
-	my $total_br_found = 0;
-	my $total_br_hit = 0;
-	my $dir_name;
-	my $link_name;
-	my @dir_list;
-	my %new_info;
-
-	# Read in all specified .info files
-	foreach (@info_filenames)
-	{
-		%new_info = %{read_info_file($_)};
-
-		# Combine %new_info with %info_data
-		%info_data = %{combine_info_files(\%info_data, \%new_info)};
-	}
-
-	info("Found %d entries.\n", scalar(keys(%info_data)));
-
-	# Read and apply baseline data if specified
-	if ($base_filename)
-	{
-		# Read baseline file
-		info("Reading baseline file $base_filename\n");
-		%base_data = %{read_info_file($base_filename)};
-		info("Found %d entries.\n", scalar(keys(%base_data)));
-
-		# Apply baseline
-		info("Subtracting baseline data.\n");
-		%info_data = %{apply_baseline(\%info_data, \%base_data)};
-	}
-
-	@dir_list = get_dir_list(keys(%info_data));
-
-	if ($no_prefix)
-	{
-		# User requested that we leave filenames alone
-		info("User asked not to remove filename prefix\n");
-	}
-	elsif (! @dir_prefix)
-	{
-		# Get prefix common to most directories in list
-		my $prefix = get_prefix(1, keys(%info_data));
-
-		if ($prefix)
-		{
-			info("Found common filename prefix \"$prefix\"\n");
-			$dir_prefix[0] = $prefix;
-
-		}
-		else
-		{
-			info("No common filename prefix found!\n");
-			$no_prefix=1;
-		}
-	}
-	else
-	{
-		my $msg = "Using user-specified filename prefix ";
-		for my $i (0 .. $#dir_prefix)
-		{
-				$dir_prefix[$i] =~ s/\/+$//;
-				$msg .= ", " unless 0 == $i;
-				$msg .= "\"" . $dir_prefix[$i] . "\"";
-		}
-		info($msg . "\n");
-	}
-
-
-	# Read in test description file if specified
-	if ($desc_filename)
-	{
-		info("Reading test description file $desc_filename\n");
-		%test_description = %{read_testfile($desc_filename)};
-
-		# Remove test descriptions which are not referenced
-		# from %info_data if user didn't tell us otherwise
-		if (!$keep_descriptions)
-		{
-			remove_unused_descriptions();
-		}
-	}
-
-	# Change to output directory if specified
-	if ($output_directory)
-	{
-		chdir($output_directory)
-			or die("ERROR: cannot change to directory ".
-			"$output_directory!\n");
-	}
-
-	info("Writing .css and .png files.\n");
-	write_css_file();
-	write_png_files();
-
-	if ($html_gzip)
-	{
-		info("Writing .htaccess file.\n");
-		write_htaccess_file();
-	}
-
-	info("Generating output.\n");
-
-	# Process each subdirectory and collect overview information
-	foreach $dir_name (@dir_list)
-	{
-		($lines_found, $lines_hit, $fn_found, $fn_hit,
-		 $br_found, $br_hit)
-			= process_dir($dir_name);
-
-		# Handle files in root directory gracefully
-		$dir_name = "root" if ($dir_name eq "");
-
-		# Remove prefix if applicable
-		if (!$no_prefix && @dir_prefix)
-		{
-			# Match directory names beginning with one of @dir_prefix
-			$dir_name = apply_prefix($dir_name,@dir_prefix);
-		}
-
-		# Generate name for directory overview HTML page
-		if ($dir_name =~ /^\/(.*)$/)
-		{
-			$link_name = substr($dir_name, 1)."/index.$html_ext";
-		}
-		else
-		{
-			$link_name = $dir_name."/index.$html_ext";
-		}
-
-		$overview{$dir_name} = [$lines_found, $lines_hit, $fn_found,
-					$fn_hit, $br_found, $br_hit, $link_name,
-					get_rate($lines_found, $lines_hit),
-					get_rate($fn_found, $fn_hit),
-					get_rate($br_found, $br_hit)];
-		$overall_found	+= $lines_found;
-		$overall_hit	+= $lines_hit;
-		$total_fn_found	+= $fn_found;
-		$total_fn_hit	+= $fn_hit;
-		$total_br_found	+= $br_found;
-		$total_br_hit	+= $br_hit;
-	}
-
-	# Generate overview page
-	info("Writing directory view page.\n");
-
-	# Create sorted pages
-	foreach (@fileview_sortlist) {
-		write_dir_page($fileview_sortname[$_], ".", "", $test_title,
-			       undef, $overall_found, $overall_hit,
-			       $total_fn_found, $total_fn_hit, $total_br_found,
-			       $total_br_hit, \%overview, {}, {}, {}, 0, $_);
-	}
-
-	# Check if there are any test case descriptions to write out
-	if (%test_description)
-	{
-		info("Writing test case description file.\n");
-		write_description_file( \%test_description,
-					$overall_found, $overall_hit,
-					$total_fn_found, $total_fn_hit,
-					$total_br_found, $total_br_hit);
-	}
-
-	print_overall_rate(1, $overall_found, $overall_hit,
-			   $func_coverage, $total_fn_found, $total_fn_hit,
-			   $br_coverage, $total_br_found, $total_br_hit);
-
-	chdir($cwd);
-}
-
-#
-# html_create(handle, filename)
-#
-
-sub html_create($$)
-{
-	my $handle = $_[0];
-	my $filename = $_[1];
-
-	if ($html_gzip)
-	{
-		open($handle, "|-", "gzip -c >'$filename'")
-			or die("ERROR: cannot open $filename for writing ".
-			       "(gzip)!\n");
-	}
-	else
-	{
-		open($handle, ">", $filename)
-			or die("ERROR: cannot open $filename for writing!\n");
-	}
-}
-
-sub write_dir_page($$$$$$$$$$$$$$$$$)
-{
-	my ($name, $rel_dir, $base_dir, $title, $trunc_dir, $overall_found,
-	    $overall_hit, $total_fn_found, $total_fn_hit, $total_br_found,
-	    $total_br_hit, $overview, $testhash, $testfnchash, $testbrhash,
-	    $view_type, $sort_type) = @_;
-
-	# Generate directory overview page including details
-	html_create(*HTML_HANDLE, "$rel_dir/index$name.$html_ext");
-	if (!defined($trunc_dir)) {
-		$trunc_dir = "";
-	}
-	$title .= " - " if ($trunc_dir ne "");
-	write_html_prolog(*HTML_HANDLE, $base_dir, "LCOV - $title$trunc_dir");
-	write_header(*HTML_HANDLE, $view_type, $trunc_dir, $rel_dir,
-		     $overall_found, $overall_hit, $total_fn_found,
-		     $total_fn_hit, $total_br_found, $total_br_hit, $sort_type);
-	write_file_table(*HTML_HANDLE, $base_dir, $overview, $testhash,
-			 $testfnchash, $testbrhash, $view_type, $sort_type);
-	write_html_epilog(*HTML_HANDLE, $base_dir);
-	close(*HTML_HANDLE);
-}
-
-
-#
-# process_dir(dir_name)
-#
-
-sub process_dir($)
-{
-	my $abs_dir = $_[0];
-	my $trunc_dir;
-	my $rel_dir = $abs_dir;
-	my $base_dir;
-	my $filename;
-	my %overview;
-	my $lines_found;
-	my $lines_hit;
-	my $fn_found;
-	my $fn_hit;
-	my $br_found;
-	my $br_hit;
-	my $overall_found=0;
-	my $overall_hit=0;
-	my $total_fn_found=0;
-	my $total_fn_hit=0;
-	my $total_br_found = 0;
-	my $total_br_hit = 0;
-	my $base_name;
-	my $extension;
-	my $testdata;
-	my %testhash;
-	my $testfncdata;
-	my %testfnchash;
-	my $testbrdata;
-	my %testbrhash;
-	my @sort_list;
-	local *HTML_HANDLE;
-
-	# Remove prefix if applicable
-	if (!$no_prefix)
-	{
-		# Match directory name beginning with one of @dir_prefix
-		$rel_dir = apply_prefix($rel_dir,@dir_prefix);
-	}
-
-	$trunc_dir = $rel_dir;
-
-	# Remove leading /
-	if ($rel_dir =~ /^\/(.*)$/)
-	{
-		$rel_dir = substr($rel_dir, 1);
-	}
-
-	# Handle files in root directory gracefully
-	$rel_dir = "root" if ($rel_dir eq "");
-	$trunc_dir = "root" if ($trunc_dir eq "");
-
-	$base_dir = get_relative_base_path($rel_dir);
-
-	create_sub_dir($rel_dir);
-
-	# Match filenames which specify files in this directory, not including
-	# sub-directories
-	foreach $filename (grep(/^\Q$abs_dir\E\/[^\/]*$/,keys(%info_data)))
-	{
-		my $page_link;
-		my $func_link;
-
-		($lines_found, $lines_hit, $fn_found, $fn_hit, $br_found,
-		 $br_hit, $testdata, $testfncdata, $testbrdata) =
-			process_file($trunc_dir, $rel_dir, $filename);
-
-		$base_name = basename($filename);
-
-		if ($no_sourceview) {
-			$page_link = "";
-		} elsif ($frames) {
-			# Link to frameset page
-			$page_link = "$base_name.gcov.frameset.$html_ext";
-		} else {
-			# Link directory to source code view page
-			$page_link = "$base_name.gcov.$html_ext";
-		}
-		$overview{$base_name} = [$lines_found, $lines_hit, $fn_found,
-					 $fn_hit, $br_found, $br_hit,
-					 $page_link,
-					 get_rate($lines_found, $lines_hit),
-					 get_rate($fn_found, $fn_hit),
-					 get_rate($br_found, $br_hit)];
-
-		$testhash{$base_name} = $testdata;
-		$testfnchash{$base_name} = $testfncdata;
-		$testbrhash{$base_name} = $testbrdata;
-
-		$overall_found	+= $lines_found;
-		$overall_hit	+= $lines_hit;
-
-		$total_fn_found += $fn_found;
-		$total_fn_hit   += $fn_hit;
-
-		$total_br_found += $br_found;
-		$total_br_hit   += $br_hit;
-	}
-
-	# Create sorted pages
-	foreach (@fileview_sortlist) {
-		# Generate directory overview page (without details)	
-		write_dir_page($fileview_sortname[$_], $rel_dir, $base_dir,
-			       $test_title, $trunc_dir, $overall_found,
-			       $overall_hit, $total_fn_found, $total_fn_hit,
-			       $total_br_found, $total_br_hit, \%overview, {},
-			       {}, {}, 1, $_);
-		if (!$show_details) {
-			next;
-		}
-		# Generate directory overview page including details
-		write_dir_page("-detail".$fileview_sortname[$_], $rel_dir,
-			       $base_dir, $test_title, $trunc_dir,
-			       $overall_found, $overall_hit, $total_fn_found,
-			       $total_fn_hit, $total_br_found, $total_br_hit,
-			       \%overview, \%testhash, \%testfnchash,
-			       \%testbrhash, 1, $_);
-	}
-
-	# Calculate resulting line counts
-	return ($overall_found, $overall_hit, $total_fn_found, $total_fn_hit,
-		$total_br_found, $total_br_hit);
-}
-
-
-#
-# get_converted_lines(testdata)
-#
-# Return hash of line numbers of those lines which were only covered in
-# converted data sets.
-#
-
-sub get_converted_lines($)
-{
-	my $testdata = $_[0];
-	my $testcount;
-	my %converted;
-	my %nonconverted;
-	my $hash;
-	my $testcase;
-	my $line;
-	my %result;
-
-
-	# Get a hash containing line numbers with positive counts both for
-	# converted and original data sets
-	foreach $testcase (keys(%{$testdata}))
-	{
-		# Check to see if this is a converted data set
-		if ($testcase =~ /,diff$/)
-		{
-			$hash = \%converted;
-		}
-		else
-		{
-			$hash = \%nonconverted;
-		}
-
-		$testcount = $testdata->{$testcase};
-		# Add lines with a positive count to hash
-		foreach $line (keys%{$testcount})
-		{
-			if ($testcount->{$line} > 0)
-			{
-				$hash->{$line} = 1;
-			}
-		}
-	}
-
-	# Combine both hashes to resulting list
-	foreach $line (keys(%converted))
-	{
-		if (!defined($nonconverted{$line}))
-		{
-			$result{$line} = 1;
-		}
-	}
-
-	return \%result;
-}
-
-
-sub write_function_page($$$$$$$$$$$$$$$$$$)
-{
-	my ($base_dir, $rel_dir, $trunc_dir, $base_name, $title,
-	    $lines_found, $lines_hit, $fn_found, $fn_hit, $br_found, $br_hit,
-	    $sumcount, $funcdata, $sumfnccount, $testfncdata, $sumbrcount,
-	    $testbrdata, $sort_type) = @_;
-	my $pagetitle;
-	my $filename;
-
-	# Generate function table for this file
-	if ($sort_type == 0) {
-		$filename = "$rel_dir/$base_name.func.$html_ext";
-	} else {
-		$filename = "$rel_dir/$base_name.func-sort-c.$html_ext";
-	}
-	html_create(*HTML_HANDLE, $filename);
-	$pagetitle = "LCOV - $title - $trunc_dir/$base_name - functions";
-	write_html_prolog(*HTML_HANDLE, $base_dir, $pagetitle);
-	write_header(*HTML_HANDLE, 4, "$trunc_dir/$base_name",
-		     "$rel_dir/$base_name", $lines_found, $lines_hit,
-		     $fn_found, $fn_hit, $br_found, $br_hit, $sort_type);
-	write_function_table(*HTML_HANDLE, "$base_name.gcov.$html_ext",
-			     $sumcount, $funcdata,
-			     $sumfnccount, $testfncdata, $sumbrcount,
-			     $testbrdata, $base_name,
-			     $base_dir, $sort_type);
-	write_html_epilog(*HTML_HANDLE, $base_dir, 1);
-	close(*HTML_HANDLE);
-}
-
-
-#
-# process_file(trunc_dir, rel_dir, filename)
-#
-
-sub process_file($$$)
-{
-	info("Processing file ".apply_prefix($_[2], @dir_prefix)."\n");
-
-	my $trunc_dir = $_[0];
-	my $rel_dir = $_[1];
-	my $filename = $_[2];
-	my $base_name = basename($filename);
-	my $base_dir = get_relative_base_path($rel_dir);
-	my $testdata;
-	my $testcount;
-	my $sumcount;
-	my $funcdata;
-	my $checkdata;
-	my $testfncdata;
-	my $sumfnccount;
-	my $testbrdata;
-	my $sumbrcount;
-	my $lines_found;
-	my $lines_hit;
-	my $fn_found;
-	my $fn_hit;
-	my $br_found;
-	my $br_hit;
-	my $converted;
-	my @source;
-	my $pagetitle;
-	local *HTML_HANDLE;
-
-	($testdata, $sumcount, $funcdata, $checkdata, $testfncdata,
-	 $sumfnccount, $testbrdata, $sumbrcount, $lines_found, $lines_hit,
-	 $fn_found, $fn_hit, $br_found, $br_hit)
-		= get_info_entry($info_data{$filename});
-
-	# Return after this point in case user asked us not to generate
-	# source code view
-	if ($no_sourceview)
-	{
-		return ($lines_found, $lines_hit, $fn_found, $fn_hit,
-			$br_found, $br_hit, $testdata, $testfncdata,
-			$testbrdata);
-	}
-
-	$converted = get_converted_lines($testdata);
-	# Generate source code view for this file
-	html_create(*HTML_HANDLE, "$rel_dir/$base_name.gcov.$html_ext");
-	$pagetitle = "LCOV - $test_title - $trunc_dir/$base_name";
-	write_html_prolog(*HTML_HANDLE, $base_dir, $pagetitle);
-	write_header(*HTML_HANDLE, 2, "$trunc_dir/$base_name",
-		     "$rel_dir/$base_name", $lines_found, $lines_hit,
-		     $fn_found, $fn_hit, $br_found, $br_hit, 0);
-	@source = write_source(*HTML_HANDLE, $filename, $sumcount, $checkdata,
-			       $converted, $funcdata, $sumbrcount);
-
-	write_html_epilog(*HTML_HANDLE, $base_dir, 1);
-	close(*HTML_HANDLE);
-
-	if ($func_coverage) {
-		# Create function tables
-		foreach (@funcview_sortlist) {
-			write_function_page($base_dir, $rel_dir, $trunc_dir,
-					    $base_name, $test_title,
-					    $lines_found, $lines_hit,
-					    $fn_found, $fn_hit, $br_found,
-					    $br_hit, $sumcount,
-					    $funcdata, $sumfnccount,
-					    $testfncdata, $sumbrcount,
-					    $testbrdata, $_);
-		}
-	}
-
-	# Additional files are needed in case of frame output
-	if (!$frames)
-	{
-		return ($lines_found, $lines_hit, $fn_found, $fn_hit,
-			$br_found, $br_hit, $testdata, $testfncdata,
-			$testbrdata);
-	}
-
-	# Create overview png file
-	gen_png("$rel_dir/$base_name.gcov.png", $overview_width, $tab_size,
-		@source);
-
-	# Create frameset page
-	html_create(*HTML_HANDLE,
-		    "$rel_dir/$base_name.gcov.frameset.$html_ext");
-	write_frameset(*HTML_HANDLE, $base_dir, $base_name, $pagetitle);
-	close(*HTML_HANDLE);
-
-	# Write overview frame
-	html_create(*HTML_HANDLE,
-		    "$rel_dir/$base_name.gcov.overview.$html_ext");
-	write_overview(*HTML_HANDLE, $base_dir, $base_name, $pagetitle,
-		       scalar(@source));
-	close(*HTML_HANDLE);
-
-	return ($lines_found, $lines_hit, $fn_found, $fn_hit, $br_found,
-		$br_hit, $testdata, $testfncdata, $testbrdata);
-}
-
-
-sub compress_brcount($)
-{
-	my ($brcount) = @_;
-	my $db;
-
-	$db = brcount_to_db($brcount);
-	return db_to_brcount($db, $brcount);
-}
-
-
-#
-# read_info_file(info_filename)
-#
-# Read in the contents of the .info file specified by INFO_FILENAME. Data will
-# be returned as a reference to a hash containing the following mappings:
-#
-# %result: for each filename found in file -> \%data
-#
-# %data: "test"  -> \%testdata
-#        "sum"   -> \%sumcount
-#        "func"  -> \%funcdata
-#        "found" -> $lines_found (number of instrumented lines found in file)
-#	 "hit"   -> $lines_hit (number of executed lines in file)
-#        "f_found" -> $fn_found (number of instrumented functions found in file)
-#	 "f_hit"   -> $fn_hit (number of executed functions in file)
-#        "b_found" -> $br_found (number of instrumented branches found in file)
-#	 "b_hit"   -> $br_hit (number of executed branches in file)
-#        "check" -> \%checkdata
-#        "testfnc" -> \%testfncdata
-#        "sumfnc"  -> \%sumfnccount
-#        "testbr"  -> \%testbrdata
-#        "sumbr"   -> \%sumbrcount
-#
-# %testdata   : name of test affecting this file -> \%testcount
-# %testfncdata: name of test affecting this file -> \%testfnccount
-# %testbrdata:  name of test affecting this file -> \%testbrcount
-#
-# %testcount   : line number   -> execution count for a single test
-# %testfnccount: function name -> execution count for a single test
-# %testbrcount : line number   -> branch coverage data for a single test
-# %sumcount    : line number   -> execution count for all tests
-# %sumfnccount : function name -> execution count for all tests
-# %sumbrcount  : line number   -> branch coverage data for all tests
-# %funcdata    : function name -> line number
-# %checkdata   : line number   -> checksum of source code line
-# $brdata      : vector of items: block, branch, taken
-# 
-# Note that .info file sections referring to the same file and test name
-# will automatically be combined by adding all execution counts.
-#
-# Note that if INFO_FILENAME ends with ".gz", it is assumed that the file
-# is compressed using GZIP. If available, GUNZIP will be used to decompress
-# this file.
-#
-# Die on error.
-#
-
-sub read_info_file($)
-{
-	my $tracefile = $_[0];		# Name of tracefile
-	my %result;			# Resulting hash: file -> data
-	my $data;			# Data handle for current entry
-	my $testdata;			#       "             "
-	my $testcount;			#       "             "
-	my $sumcount;			#       "             "
-	my $funcdata;			#       "             "
-	my $checkdata;			#       "             "
-	my $testfncdata;
-	my $testfnccount;
-	my $sumfnccount;
-	my $testbrdata;
-	my $testbrcount;
-	my $sumbrcount;
-	my $line;			# Current line read from .info file
-	my $testname;			# Current test name
-	my $filename;			# Current filename
-	my $hitcount;			# Count for lines hit
-	my $count;			# Execution count of current line
-	my $negative;			# If set, warn about negative counts
-	my $changed_testname;		# If set, warn about changed testname
-	my $line_checksum;		# Checksum of current line
-	my $notified_about_relative_paths;
-	local *INFO_HANDLE;		# Filehandle for .info file
-
-	info("Reading data file $tracefile\n");
-
-	# Check if file exists and is readable
-	stat($_[0]);
-	if (!(-r _))
-	{
-		die("ERROR: cannot read file $_[0]!\n");
-	}
-
-	# Check if this is really a plain file
-	if (!(-f _))
-	{
-		die("ERROR: not a plain file: $_[0]!\n");
-	}
-
-	# Check for .gz extension
-	if ($_[0] =~ /\.gz$/)
-	{
-		# Check for availability of GZIP tool
-		system_no_output(1, "gunzip" ,"-h")
-			and die("ERROR: gunzip command not available!\n");
-
-		# Check integrity of compressed file
-		system_no_output(1, "gunzip", "-t", $_[0])
-			and die("ERROR: integrity check failed for ".
-				"compressed file $_[0]!\n");
-
-		# Open compressed file
-		open(INFO_HANDLE, "-|", "gunzip -c '$_[0]'")
-			or die("ERROR: cannot start gunzip to decompress ".
-			       "file $_[0]!\n");
-	}
-	else
-	{
-		# Open decompressed file
-		open(INFO_HANDLE, "<", $_[0])
-			or die("ERROR: cannot read file $_[0]!\n");
-	}
-
-	$testname = "";
-	while (<INFO_HANDLE>)
-	{
-		chomp($_);
-		$line = $_;
-
-		# Switch statement
-		foreach ($line)
-		{
-			/^TN:([^,]*)(,diff)?/ && do
-			{
-				# Test name information found
-				$testname = defined($1) ? $1 : "";
-				if ($testname =~ s/\W/_/g)
-				{
-					$changed_testname = 1;
-				}
-				$testname .= $2 if (defined($2));
-				last;
-			};
-
-			/^[SK]F:(.*)/ && do
-			{
-				# Filename information found
-				# Retrieve data for new entry
-				$filename = File::Spec->rel2abs($1, $cwd);
-
-				if (!File::Spec->file_name_is_absolute($1) &&
-				    !$notified_about_relative_paths)
-				{
-					info("Resolved relative source file ".
-					     "path \"$1\" with CWD to ".
-					     "\"$filename\".\n");
-					$notified_about_relative_paths = 1;
-				}
-
-				$data = $result{$filename};
-				($testdata, $sumcount, $funcdata, $checkdata,
-				 $testfncdata, $sumfnccount, $testbrdata,
-				 $sumbrcount) =
-					get_info_entry($data);
-
-				if (defined($testname))
-				{
-					$testcount = $testdata->{$testname};
-					$testfnccount = $testfncdata->{$testname};
-					$testbrcount = $testbrdata->{$testname};
-				}
-				else
-				{
-					$testcount = {};
-					$testfnccount = {};
-					$testbrcount = {};
-				}
-				last;
-			};
-
-			/^DA:(\d+),(-?\d+)(,[^,\s]+)?/ && do
-			{
-				# Fix negative counts
-				$count = $2 < 0 ? 0 : $2;
-				if ($2 < 0)
-				{
-					$negative = 1;
-				}
-				# Execution count found, add to structure
-				# Add summary counts
-				$sumcount->{$1} += $count;
-
-				# Add test-specific counts
-				if (defined($testname))
-				{
-					$testcount->{$1} += $count;
-				}
-
-				# Store line checksum if available
-				if (defined($3))
-				{
-					$line_checksum = substr($3, 1);
-
-					# Does it match a previous definition
-					if (defined($checkdata->{$1}) &&
-					    ($checkdata->{$1} ne
-					     $line_checksum))
-					{
-						die("ERROR: checksum mismatch ".
-						    "at $filename:$1\n");
-					}
-
-					$checkdata->{$1} = $line_checksum;
-				}
-				last;
-			};
-
-			/^FN:(\d+),([^,]+)/ && do
-			{
-				last if (!$func_coverage);
-
-				# Function data found, add to structure
-				$funcdata->{$2} = $1;
-
-				# Also initialize function call data
-				if (!defined($sumfnccount->{$2})) {
-					$sumfnccount->{$2} = 0;
-				}
-				if (defined($testname))
-				{
-					if (!defined($testfnccount->{$2})) {
-						$testfnccount->{$2} = 0;
-					}
-				}
-				last;
-			};
-
-			/^FNDA:(\d+),([^,]+)/ && do
-			{
-				last if (!$func_coverage);
-				# Function call count found, add to structure
-				# Add summary counts
-				$sumfnccount->{$2} += $1;
-
-				# Add test-specific counts
-				if (defined($testname))
-				{
-					$testfnccount->{$2} += $1;
-				}
-				last;
-			};
-
-			/^BRDA:(\d+),(\d+),(\d+),(\d+|-)/ && do {
-				# Branch coverage data found
-				my ($line, $block, $branch, $taken) =
-				   ($1, $2, $3, $4);
-
-				last if (!$br_coverage);
-				$sumbrcount->{$line} .=
-					"$block,$branch,$taken:";
-
-				# Add test-specific counts
-				if (defined($testname)) {
-					$testbrcount->{$line} .=
-						"$block,$branch,$taken:";
-				}
-				last;
-			};
-
-			/^end_of_record/ && do
-			{
-				# Found end of section marker
-				if ($filename)
-				{
-					# Store current section data
-					if (defined($testname))
-					{
-						$testdata->{$testname} =
-							$testcount;
-						$testfncdata->{$testname} =
-							$testfnccount;
-						$testbrdata->{$testname} =
-							$testbrcount;
-					}	
-
-					set_info_entry($data, $testdata,
-						       $sumcount, $funcdata,
-						       $checkdata, $testfncdata,
-						       $sumfnccount,
-						       $testbrdata,
-						       $sumbrcount);
-					$result{$filename} = $data;
-					last;
-				}
-			};
-
-			# default
-			last;
-		}
-	}
-	close(INFO_HANDLE);
-
-	# Calculate lines_found and lines_hit for each file
-	foreach $filename (keys(%result))
-	{
-		$data = $result{$filename};
-
-		($testdata, $sumcount, undef, undef, $testfncdata,
-		 $sumfnccount, $testbrdata, $sumbrcount) =
-			get_info_entry($data);
-
-		# Filter out empty files
-		if (scalar(keys(%{$sumcount})) == 0)
-		{
-			delete($result{$filename});
-			next;
-		}
-		# Filter out empty test cases
-		foreach $testname (keys(%{$testdata}))
-		{
-			if (!defined($testdata->{$testname}) ||
-			    scalar(keys(%{$testdata->{$testname}})) == 0)
-			{
-				delete($testdata->{$testname});
-				delete($testfncdata->{$testname});
-			}
-		}
-
-		$data->{"found"} = scalar(keys(%{$sumcount}));
-		$hitcount = 0;
-
-		foreach (keys(%{$sumcount}))
-		{
-			if ($sumcount->{$_} > 0) { $hitcount++; }
-		}
-
-		$data->{"hit"} = $hitcount;
-
-		# Get found/hit values for function call data
-		$data->{"f_found"} = scalar(keys(%{$sumfnccount}));
-		$hitcount = 0;
-
-		foreach (keys(%{$sumfnccount})) {
-			if ($sumfnccount->{$_} > 0) {
-				$hitcount++;
-			}
-		}
-		$data->{"f_hit"} = $hitcount;
-
-		# Combine branch data for the same branches
-		(undef, $data->{"b_found"}, $data->{"b_hit"}) =
-			compress_brcount($sumbrcount);
-		foreach $testname (keys(%{$testbrdata})) {
-			compress_brcount($testbrdata->{$testname});
-		}
-	}
-
-	if (scalar(keys(%result)) == 0)
-	{
-		die("ERROR: no valid records found in tracefile $tracefile\n");
-	}
-	if ($negative)
-	{
-		warn("WARNING: negative counts found in tracefile ".
-		     "$tracefile\n");
-	}
-	if ($changed_testname)
-	{
-		warn("WARNING: invalid characters removed from testname in ".
-		     "tracefile $tracefile\n");
-	}
-
-	return(\%result);
-}
-
-
-#
-# get_info_entry(hash_ref)
-#
-# Retrieve data from an entry of the structure generated by read_info_file().
-# Return a list of references to hashes:
-# (test data hash ref, sum count hash ref, funcdata hash ref, checkdata hash
-#  ref, testfncdata hash ref, sumfnccount hash ref, lines found, lines hit,
-#  functions found, functions hit)
-#
-
-sub get_info_entry($)
-{
-	my $testdata_ref = $_[0]->{"test"};
-	my $sumcount_ref = $_[0]->{"sum"};
-	my $funcdata_ref = $_[0]->{"func"};
-	my $checkdata_ref = $_[0]->{"check"};
-	my $testfncdata = $_[0]->{"testfnc"};
-	my $sumfnccount = $_[0]->{"sumfnc"};
-	my $testbrdata = $_[0]->{"testbr"};
-	my $sumbrcount = $_[0]->{"sumbr"};
-	my $lines_found = $_[0]->{"found"};
-	my $lines_hit = $_[0]->{"hit"};
-	my $fn_found = $_[0]->{"f_found"};
-	my $fn_hit = $_[0]->{"f_hit"};
-	my $br_found = $_[0]->{"b_found"};
-	my $br_hit = $_[0]->{"b_hit"};
-
-	return ($testdata_ref, $sumcount_ref, $funcdata_ref, $checkdata_ref,
-		$testfncdata, $sumfnccount, $testbrdata, $sumbrcount,
-		$lines_found, $lines_hit, $fn_found, $fn_hit,
-		$br_found, $br_hit);
-}
-
-
-#
-# set_info_entry(hash_ref, testdata_ref, sumcount_ref, funcdata_ref,
-#                checkdata_ref, testfncdata_ref, sumfcncount_ref,
-#                testbrdata_ref, sumbrcount_ref[,lines_found,
-#                lines_hit, f_found, f_hit, $b_found, $b_hit])
-#
-# Update the hash referenced by HASH_REF with the provided data references.
-#
-
-sub set_info_entry($$$$$$$$$;$$$$$$)
-{
-	my $data_ref = $_[0];
-
-	$data_ref->{"test"} = $_[1];
-	$data_ref->{"sum"} = $_[2];
-	$data_ref->{"func"} = $_[3];
-	$data_ref->{"check"} = $_[4];
-	$data_ref->{"testfnc"} = $_[5];
-	$data_ref->{"sumfnc"} = $_[6];
-	$data_ref->{"testbr"} = $_[7];
-	$data_ref->{"sumbr"} = $_[8];
-
-	if (defined($_[9])) { $data_ref->{"found"} = $_[9]; }
-	if (defined($_[10])) { $data_ref->{"hit"} = $_[10]; }
-	if (defined($_[11])) { $data_ref->{"f_found"} = $_[11]; }
-	if (defined($_[12])) { $data_ref->{"f_hit"} = $_[12]; }
-	if (defined($_[13])) { $data_ref->{"b_found"} = $_[13]; }
-	if (defined($_[14])) { $data_ref->{"b_hit"} = $_[14]; }
-}
-
-
-#
-# add_counts(data1_ref, data2_ref)
-#
-# DATA1_REF and DATA2_REF are references to hashes containing a mapping
-#
-#   line number -> execution count
-#
-# Return a list (RESULT_REF, LINES_FOUND, LINES_HIT) where RESULT_REF
-# is a reference to a hash containing the combined mapping in which
-# execution counts are added.
-#
-
-sub add_counts($$)
-{
-	my $data1_ref = $_[0];	# Hash 1
-	my $data2_ref = $_[1];	# Hash 2
-	my %result;		# Resulting hash
-	my $line;		# Current line iteration scalar
-	my $data1_count;	# Count of line in hash1
-	my $data2_count;	# Count of line in hash2
-	my $found = 0;		# Total number of lines found
-	my $hit = 0;		# Number of lines with a count > 0
-
-	foreach $line (keys(%$data1_ref))
-	{
-		$data1_count = $data1_ref->{$line};
-		$data2_count = $data2_ref->{$line};
-
-		# Add counts if present in both hashes
-		if (defined($data2_count)) { $data1_count += $data2_count; }
-
-		# Store sum in %result
-		$result{$line} = $data1_count;
-
-		$found++;
-		if ($data1_count > 0) { $hit++; }
-	}
-
-	# Add lines unique to data2_ref
-	foreach $line (keys(%$data2_ref))
-	{
-		# Skip lines already in data1_ref
-		if (defined($data1_ref->{$line})) { next; }
-
-		# Copy count from data2_ref
-		$result{$line} = $data2_ref->{$line};
-
-		$found++;
-		if ($result{$line} > 0) { $hit++; }
-	}
-
-	return (\%result, $found, $hit);
-}
-
-
-#
-# merge_checksums(ref1, ref2, filename)
-#
-# REF1 and REF2 are references to hashes containing a mapping
-#
-#   line number -> checksum
-#
-# Merge checksum lists defined in REF1 and REF2 and return reference to
-# resulting hash. Die if a checksum for a line is defined in both hashes
-# but does not match.
-#
-
-sub merge_checksums($$$)
-{
-	my $ref1 = $_[0];
-	my $ref2 = $_[1];
-	my $filename = $_[2];
-	my %result;
-	my $line;
-
-	foreach $line (keys(%{$ref1}))
-	{
-		if (defined($ref2->{$line}) &&
-		    ($ref1->{$line} ne $ref2->{$line}))
-		{
-			die("ERROR: checksum mismatch at $filename:$line\n");
-		}
-		$result{$line} = $ref1->{$line};
-	}
-
-	foreach $line (keys(%{$ref2}))
-	{
-		$result{$line} = $ref2->{$line};
-	}
-
-	return \%result;
-}
-
-
-#
-# merge_func_data(funcdata1, funcdata2, filename)
-#
-
-sub merge_func_data($$$)
-{
-	my ($funcdata1, $funcdata2, $filename) = @_;
-	my %result;
-	my $func;
-
-	if (defined($funcdata1)) {
-		%result = %{$funcdata1};
-	}
-
-	foreach $func (keys(%{$funcdata2})) {
-		my $line1 = $result{$func};
-		my $line2 = $funcdata2->{$func};
-
-		if (defined($line1) && ($line1 != $line2)) {
-			warn("WARNING: function data mismatch at ".
-			     "$filename:$line2\n");
-			next;
-		}
-		$result{$func} = $line2;
-	}
-
-	return \%result;
-}
-
-
-#
-# add_fnccount(fnccount1, fnccount2)
-#
-# Add function call count data. Return list (fnccount_added, f_found, f_hit)
-#
-
-sub add_fnccount($$)
-{
-	my ($fnccount1, $fnccount2) = @_;
-	my %result;
-	my $fn_found;
-	my $fn_hit;
-	my $function;
-
-	if (defined($fnccount1)) {
-		%result = %{$fnccount1};
-	}
-	foreach $function (keys(%{$fnccount2})) {
-		$result{$function} += $fnccount2->{$function};
-	}
-	$fn_found = scalar(keys(%result));
-	$fn_hit = 0;
-	foreach $function (keys(%result)) {
-		if ($result{$function} > 0) {
-			$fn_hit++;
-		}
-	}
-
-	return (\%result, $fn_found, $fn_hit);
-}
-
-#
-# add_testfncdata(testfncdata1, testfncdata2)
-#
-# Add function call count data for several tests. Return reference to
-# added_testfncdata.
-#
-
-sub add_testfncdata($$)
-{
-	my ($testfncdata1, $testfncdata2) = @_;
-	my %result;
-	my $testname;
-
-	foreach $testname (keys(%{$testfncdata1})) {
-		if (defined($testfncdata2->{$testname})) {
-			my $fnccount;
-
-			# Function call count data for this testname exists
-			# in both data sets: add
-			($fnccount) = add_fnccount(
-				$testfncdata1->{$testname},
-				$testfncdata2->{$testname});
-			$result{$testname} = $fnccount;
-			next;
-		}
-		# Function call count data for this testname is unique to
-		# data set 1: copy
-		$result{$testname} = $testfncdata1->{$testname};
-	}
-
-	# Add count data for testnames unique to data set 2
-	foreach $testname (keys(%{$testfncdata2})) {
-		if (!defined($result{$testname})) {
-			$result{$testname} = $testfncdata2->{$testname};
-		}
-	}
-	return \%result;
-}
-
-
-#
-# brcount_to_db(brcount)
-#
-# Convert brcount data to the following format:
-#
-# db:          line number    -> block hash
-# block hash:  block number   -> branch hash
-# branch hash: branch number  -> taken value
-#
-
-sub brcount_to_db($)
-{
-	my ($brcount) = @_;
-	my $line;
-	my $db;
-
-	# Add branches to database
-	foreach $line (keys(%{$brcount})) {
-		my $brdata = $brcount->{$line};
-
-		foreach my $entry (split(/:/, $brdata)) {
-			my ($block, $branch, $taken) = split(/,/, $entry);
-			my $old = $db->{$line}->{$block}->{$branch};
-
-			if (!defined($old) || $old eq "-") {
-				$old = $taken;
-			} elsif ($taken ne "-") {
-				$old += $taken;
-			}
-
-			$db->{$line}->{$block}->{$branch} = $old;
-		}
-	}
-
-	return $db;
-}
-
-
-#
-# db_to_brcount(db[, brcount])
-#
-# Convert branch coverage data back to brcount format. If brcount is specified,
-# the converted data is directly inserted in brcount.
-#
-
-sub db_to_brcount($;$)
-{
-	my ($db, $brcount) = @_;
-	my $line;
-	my $br_found = 0;
-	my $br_hit = 0;
-
-	# Convert database back to brcount format
-	foreach $line (sort({$a <=> $b} keys(%{$db}))) {
-		my $ldata = $db->{$line};
-		my $brdata;
-		my $block;
-
-		foreach $block (sort({$a <=> $b} keys(%{$ldata}))) {
-			my $bdata = $ldata->{$block};
-			my $branch;
-
-			foreach $branch (sort({$a <=> $b} keys(%{$bdata}))) {
-				my $taken = $bdata->{$branch};
-
-				$br_found++;
-				$br_hit++ if ($taken ne "-" && $taken > 0);
-				$brdata .= "$block,$branch,$taken:";
-			}
-		}
-		$brcount->{$line} = $brdata;
-	}
-
-	return ($brcount, $br_found, $br_hit);
-}
-
-
-#
-# brcount_db_combine(db1, db2, op)
-#
-# db1 := db1 op db2, where
-#   db1, db2: brcount data as returned by brcount_to_db
-#   op:       one of $BR_ADD and BR_SUB
-#
-sub brcount_db_combine($$$)
-{
-	my ($db1, $db2, $op) = @_;
-
-	foreach my $line (keys(%{$db2})) {
-		my $ldata = $db2->{$line};
-
-		foreach my $block (keys(%{$ldata})) {
-			my $bdata = $ldata->{$block};
-
-			foreach my $branch (keys(%{$bdata})) {
-				my $taken = $bdata->{$branch};
-				my $new = $db1->{$line}->{$block}->{$branch};
-
-				if (!defined($new) || $new eq "-") {
-					$new = $taken;
-				} elsif ($taken ne "-") {
-					if ($op == $BR_ADD) {
-						$new += $taken;
-					} elsif ($op == $BR_SUB) {
-						$new -= $taken;
-						$new = 0 if ($new < 0);
-					}
-				}
-
-				$db1->{$line}->{$block}->{$branch} = $new;
-			}
-		}
-	}
-}
-
-
-#
-# brcount_db_get_found_and_hit(db)
-#
-# Return (br_found, br_hit) for db.
-#
-
-sub brcount_db_get_found_and_hit($)
-{
-	my ($db) = @_;
-	my ($br_found , $br_hit) = (0, 0);
-
-	foreach my $line (keys(%{$db})) {
-		my $ldata = $db->{$line};
-
-		foreach my $block (keys(%{$ldata})) {
-			my $bdata = $ldata->{$block};
-
-			foreach my $branch (keys(%{$bdata})) {
-				my $taken = $bdata->{$branch};
-
-				$br_found++;
-				$br_hit++ if ($taken ne "-" && $taken > 0);
-			}
-		}
-	}
-
-	return ($br_found, $br_hit);
-}
-
-
-# combine_brcount(brcount1, brcount2, type, inplace)
-#
-# If add is BR_ADD, add branch coverage data and return list brcount_added.
-# If add is BR_SUB, subtract the taken values of brcount2 from brcount1 and
-# return brcount_sub. If inplace is set, the result is inserted into brcount1.
-#
-
-sub combine_brcount($$$;$)
-{
-	my ($brcount1, $brcount2, $type, $inplace) = @_;
-	my ($db1, $db2);
-
-	$db1 = brcount_to_db($brcount1);
-	$db2 = brcount_to_db($brcount2);
-	brcount_db_combine($db1, $db2, $type);
-
-	return db_to_brcount($db1, $inplace ? $brcount1 : undef);
-}
-
-
-#
-# add_testbrdata(testbrdata1, testbrdata2)
-#
-# Add branch coverage data for several tests. Return reference to
-# added_testbrdata.
-#
-
-sub add_testbrdata($$)
-{
-	my ($testbrdata1, $testbrdata2) = @_;
-	my %result;
-	my $testname;
-
-	foreach $testname (keys(%{$testbrdata1})) {
-		if (defined($testbrdata2->{$testname})) {
-			my $brcount;
-
-			# Branch coverage data for this testname exists
-			# in both data sets: add
-			($brcount) = combine_brcount($testbrdata1->{$testname},
-					 $testbrdata2->{$testname}, $BR_ADD);
-			$result{$testname} = $brcount;
-			next;
-		}
-		# Branch coverage data for this testname is unique to
-		# data set 1: copy
-		$result{$testname} = $testbrdata1->{$testname};
-	}
-
-	# Add count data for testnames unique to data set 2
-	foreach $testname (keys(%{$testbrdata2})) {
-		if (!defined($result{$testname})) {
-			$result{$testname} = $testbrdata2->{$testname};
-		}
-	}
-	return \%result;
-}
-
-
-#
-# combine_info_entries(entry_ref1, entry_ref2, filename)
-#
-# Combine .info data entry hashes referenced by ENTRY_REF1 and ENTRY_REF2.
-# Return reference to resulting hash.
-#
-
-sub combine_info_entries($$$)
-{
-	my $entry1 = $_[0];	# Reference to hash containing first entry
-	my $testdata1;
-	my $sumcount1;
-	my $funcdata1;
-	my $checkdata1;
-	my $testfncdata1;
-	my $sumfnccount1;
-	my $testbrdata1;
-	my $sumbrcount1;
-
-	my $entry2 = $_[1];	# Reference to hash containing second entry
-	my $testdata2;
-	my $sumcount2;
-	my $funcdata2;
-	my $checkdata2;
-	my $testfncdata2;
-	my $sumfnccount2;
-	my $testbrdata2;
-	my $sumbrcount2;
-
-	my %result;		# Hash containing combined entry
-	my %result_testdata;
-	my $result_sumcount = {};
-	my $result_funcdata;
-	my $result_testfncdata;
-	my $result_sumfnccount;
-	my $result_testbrdata;
-	my $result_sumbrcount;
-	my $lines_found;
-	my $lines_hit;
-	my $fn_found;
-	my $fn_hit;
-	my $br_found;
-	my $br_hit;
-
-	my $testname;
-	my $filename = $_[2];
-
-	# Retrieve data
-	($testdata1, $sumcount1, $funcdata1, $checkdata1, $testfncdata1,
-	 $sumfnccount1, $testbrdata1, $sumbrcount1) = get_info_entry($entry1);
-	($testdata2, $sumcount2, $funcdata2, $checkdata2, $testfncdata2,
-	 $sumfnccount2, $testbrdata2, $sumbrcount2) = get_info_entry($entry2);
-
-	# Merge checksums
-	$checkdata1 = merge_checksums($checkdata1, $checkdata2, $filename);
-
-	# Combine funcdata
-	$result_funcdata = merge_func_data($funcdata1, $funcdata2, $filename);
-
-	# Combine function call count data
-	$result_testfncdata = add_testfncdata($testfncdata1, $testfncdata2);
-	($result_sumfnccount, $fn_found, $fn_hit) =
-		add_fnccount($sumfnccount1, $sumfnccount2);
-	
-	# Combine branch coverage data
-	$result_testbrdata = add_testbrdata($testbrdata1, $testbrdata2);
-	($result_sumbrcount, $br_found, $br_hit) =
-		combine_brcount($sumbrcount1, $sumbrcount2, $BR_ADD);
-
-	# Combine testdata
-	foreach $testname (keys(%{$testdata1}))
-	{
-		if (defined($testdata2->{$testname}))
-		{
-			# testname is present in both entries, requires
-			# combination
-			($result_testdata{$testname}) =
-				add_counts($testdata1->{$testname},
-					   $testdata2->{$testname});
-		}
-		else
-		{
-			# testname only present in entry1, add to result
-			$result_testdata{$testname} = $testdata1->{$testname};
-		}
-
-		# update sum count hash
-		($result_sumcount, $lines_found, $lines_hit) =
-			add_counts($result_sumcount,
-				   $result_testdata{$testname});
-	}
-
-	foreach $testname (keys(%{$testdata2}))
-	{
-		# Skip testnames already covered by previous iteration
-		if (defined($testdata1->{$testname})) { next; }
-
-		# testname only present in entry2, add to result hash
-		$result_testdata{$testname} = $testdata2->{$testname};
-
-		# update sum count hash
-		($result_sumcount, $lines_found, $lines_hit) =
-			add_counts($result_sumcount,
-				   $result_testdata{$testname});
-	}
-	
-	# Calculate resulting sumcount
-
-	# Store result
-	set_info_entry(\%result, \%result_testdata, $result_sumcount,
-		       $result_funcdata, $checkdata1, $result_testfncdata,
-		       $result_sumfnccount, $result_testbrdata,
-		       $result_sumbrcount, $lines_found, $lines_hit,
-		       $fn_found, $fn_hit, $br_found, $br_hit);
-
-	return(\%result);
-}
-
-
-#
-# combine_info_files(info_ref1, info_ref2)
-#
-# Combine .info data in hashes referenced by INFO_REF1 and INFO_REF2. Return
-# reference to resulting hash.
-#
-
-sub combine_info_files($$)
-{
-	my %hash1 = %{$_[0]};
-	my %hash2 = %{$_[1]};
-	my $filename;
-
-	foreach $filename (keys(%hash2))
-	{
-		if ($hash1{$filename})
-		{
-			# Entry already exists in hash1, combine them
-			$hash1{$filename} =
-				combine_info_entries($hash1{$filename},
-						     $hash2{$filename},
-						     $filename);
-		}
-		else
-		{
-			# Entry is unique in both hashes, simply add to
-			# resulting hash
-			$hash1{$filename} = $hash2{$filename};
-		}
-	}
-
-	return(\%hash1);
-}
-
-
-#
-# get_prefix(min_dir, filename_list)
-#
-# Search FILENAME_LIST for a directory prefix which is common to as many
-# list entries as possible, so that removing this prefix will minimize the
-# sum of the lengths of all resulting shortened filenames while observing
-# that no filename has less than MIN_DIR parent directories.
-#
-
-sub get_prefix($@)
-{
-	my ($min_dir, @filename_list) = @_;
-	my %prefix;			# mapping: prefix -> sum of lengths
-	my $current;			# Temporary iteration variable
-
-	# Find list of prefixes
-	foreach (@filename_list)
-	{
-		# Need explicit assignment to get a copy of $_ so that
-		# shortening the contained prefix does not affect the list
-		$current = $_;
-		while ($current = shorten_prefix($current))
-		{
-			$current .= "/";
-
-			# Skip rest if the remaining prefix has already been
-			# added to hash
-			if (exists($prefix{$current})) { last; }
-
-			# Initialize with 0
-			$prefix{$current}="0";
-		}
-
-	}
-
-	# Remove all prefixes that would cause filenames to have less than
-	# the minimum number of parent directories
-	foreach my $filename (@filename_list) {
-		my $dir = dirname($filename);
-
-		for (my $i = 0; $i < $min_dir; $i++) {
-			delete($prefix{$dir."/"});
-			$dir = shorten_prefix($dir);
-		}
-	}
-
-	# Check if any prefix remains
-	return undef if (!%prefix);
-
-	# Calculate sum of lengths for all prefixes
-	foreach $current (keys(%prefix))
-	{
-		foreach (@filename_list)
-		{
-			# Add original length
-			$prefix{$current} += length($_);
-
-			# Check whether prefix matches
-			if (substr($_, 0, length($current)) eq $current)
-			{
-				# Subtract prefix length for this filename
-				$prefix{$current} -= length($current);
-			}
-		}
-	}
-
-	# Find and return prefix with minimal sum
-	$current = (keys(%prefix))[0];
-
-	foreach (keys(%prefix))
-	{
-		if ($prefix{$_} < $prefix{$current})
-		{
-			$current = $_;
-		}
-	}
-
-	$current =~ s/\/$//;
-
-	return($current);
-}
-
-
-#
-# shorten_prefix(prefix)
-#
-# Return PREFIX shortened by last directory component.
-#
-
-sub shorten_prefix($)
-{
-	my @list = split("/", $_[0]);
-
-	pop(@list);
-	return join("/", @list);
-}
-
-
-
-#
-# get_dir_list(filename_list)
-#
-# Return sorted list of directories for each entry in given FILENAME_LIST.
-#
-
-sub get_dir_list(@)
-{
-	my %result;
-
-	foreach (@_)
-	{
-		$result{shorten_prefix($_)} = "";
-	}
-
-	return(sort(keys(%result)));
-}
-
-
-#
-# get_relative_base_path(subdirectory)
-#
-# Return a relative path string which references the base path when applied
-# in SUBDIRECTORY.
-#
-# Example: get_relative_base_path("fs/mm") -> "../../"
-#
-
-sub get_relative_base_path($)
-{
-	my $result = "";
-	my $index;
-
-	# Make an empty directory path a special case
-	if (!$_[0]) { return(""); }
-
-	# Count number of /s in path
-	$index = ($_[0] =~ s/\//\//g);
-
-	# Add a ../ to $result for each / in the directory path + 1
-	for (; $index>=0; $index--)
-	{
-		$result .= "../";
-	}
-
-	return $result;
-}
-
-
-#
-# read_testfile(test_filename)
-#
-# Read in file TEST_FILENAME which contains test descriptions in the format:
-#
-#   TN:<whitespace><test name>
-#   TD:<whitespace><test description>
-#
-# for each test case. Return a reference to a hash containing a mapping
-#
-#   test name -> test description.
-#
-# Die on error.
-#
-
-sub read_testfile($)
-{
-	my %result;
-	my $test_name;
-	my $changed_testname;
-	local *TEST_HANDLE;
-
-	open(TEST_HANDLE, "<", $_[0])
-		or die("ERROR: cannot open $_[0]!\n");
-
-	while (<TEST_HANDLE>)
-	{
-		chomp($_);
-
-		# Match lines beginning with TN:<whitespace(s)>
-		if (/^TN:\s+(.*?)\s*$/)
-		{
-			# Store name for later use
-			$test_name = $1;
-			if ($test_name =~ s/\W/_/g)
-			{
-				$changed_testname = 1;
-			}
-		}
-
-		# Match lines beginning with TD:<whitespace(s)>
-		if (/^TD:\s+(.*?)\s*$/)
-		{
-			if (!defined($test_name)) {
-				die("ERROR: Found test description without prior test name in $_[0]:$.\n");
-			}
-			# Check for empty line
-			if ($1)
-			{
-				# Add description to hash
-				$result{$test_name} .= " $1";
-			}
-			else
-			{
-				# Add empty line
-				$result{$test_name} .= "\n\n";
-			}
-		}
-	}
-
-	close(TEST_HANDLE);
-
-	if ($changed_testname)
-	{
-		warn("WARNING: invalid characters removed from testname in ".
-		     "descriptions file $_[0]\n");
-	}
-
-	return \%result;
-}
-
-
-#
-# escape_html(STRING)
-#
-# Return a copy of STRING in which all occurrences of HTML special characters
-# are escaped.
-#
-
-sub escape_html($)
-{
-	my $string = $_[0];
-
-	if (!$string) { return ""; }
-
-	$string =~ s/&/&amp;/g;		# & -> &amp;
-	$string =~ s/</&lt;/g;		# < -> &lt;
-	$string =~ s/>/&gt;/g;		# > -> &gt;
-	$string =~ s/\"/&quot;/g;	# " -> &quot;
-
-	while ($string =~ /^([^\t]*)(\t)/)
-	{
-		my $replacement = " "x($tab_size - (length($1) % $tab_size));
-		$string =~ s/^([^\t]*)(\t)/$1$replacement/;
-	}
-
-	$string =~ s/\n/<br>/g;		# \n -> <br>
-
-	return $string;
-}
-
-
-#
-# get_date_string()
-#
-# Return the current date in the form: yyyy-mm-dd
-#
-
-sub get_date_string()
-{
-	my $year;
-	my $month;
-	my $day;
-	my $hour;
-	my $min;
-	my $sec;
-	my @timeresult;
-
-	if (defined $ENV{'SOURCE_DATE_EPOCH'})
-	{
-		@timeresult = gmtime($ENV{'SOURCE_DATE_EPOCH'});
-	}
-	else
-	{
-		@timeresult = localtime();
-	}
-	($year, $month, $day, $hour, $min, $sec) =
-		@timeresult[5, 4, 3, 2, 1, 0];
-
-	return sprintf("%d-%02d-%02d %02d:%02d:%02d", $year+1900, $month+1,
-		       $day, $hour, $min, $sec);
-}
-
-
-#
-# create_sub_dir(dir_name)
-#
-# Create subdirectory DIR_NAME if it does not already exist, including all its
-# parent directories.
-#
-# Die on error.
-#
-
-sub create_sub_dir($)
-{
-	my ($dir) = @_;
-
-	system("mkdir", "-p" ,$dir)
-		and die("ERROR: cannot create directory $dir!\n");
-}
-
-
-#
-# write_description_file(descriptions, overall_found, overall_hit,
-#                        total_fn_found, total_fn_hit, total_br_found,
-#                        total_br_hit)
-#
-# Write HTML file containing all test case descriptions. DESCRIPTIONS is a
-# reference to a hash containing a mapping
-#
-#   test case name -> test case description
-#
-# Die on error.
-#
-
-sub write_description_file($$$$$$$)
-{
-	my %description = %{$_[0]};
-	my $found = $_[1];
-	my $hit = $_[2];
-	my $fn_found = $_[3];
-	my $fn_hit = $_[4];
-	my $br_found = $_[5];
-	my $br_hit = $_[6];
-	my $test_name;
-	local *HTML_HANDLE;
-
-	html_create(*HTML_HANDLE,"descriptions.$html_ext");
-	write_html_prolog(*HTML_HANDLE, "", "LCOV - test case descriptions");
-	write_header(*HTML_HANDLE, 3, "", "", $found, $hit, $fn_found,
-		     $fn_hit, $br_found, $br_hit, 0);
-
-	write_test_table_prolog(*HTML_HANDLE,
-			 "Test case descriptions - alphabetical list");
-
-	foreach $test_name (sort(keys(%description)))
-	{
-		my $desc = $description{$test_name};
-
-		$desc = escape_html($desc) if (!$rc_desc_html);
-		write_test_table_entry(*HTML_HANDLE, $test_name, $desc);
-	}
-
-	write_test_table_epilog(*HTML_HANDLE);
-	write_html_epilog(*HTML_HANDLE, "");
-
-	close(*HTML_HANDLE);
-}
-
-
-
-#
-# write_png_files()
-#
-# Create all necessary .png files for the HTML-output in the current
-# directory. .png-files are used as bar graphs.
-#
-# Die on error.
-#
-
-sub write_png_files()
-{
-	my %data;
-	local *PNG_HANDLE;
-
-	$data{"ruby.png"} =
-		[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 
-		 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 
-		 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x25, 
-		 0xdb, 0x56, 0xca, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 
-		 0x45, 0x07, 0xd2, 0x07, 0x11, 0x0f, 0x18, 0x10, 0x5d, 0x57, 
-		 0x34, 0x6e, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 
-		 0x00, 0x00, 0x0b, 0x12, 0x00, 0x00, 0x0b, 0x12, 0x01, 0xd2, 
-		 0xdd, 0x7e, 0xfc, 0x00, 0x00, 0x00, 0x04, 0x67, 0x41, 0x4d, 
-		 0x41, 0x00, 0x00, 0xb1, 0x8f, 0x0b, 0xfc, 0x61, 0x05, 0x00, 
-		 0x00, 0x00, 0x06, 0x50, 0x4c, 0x54, 0x45, 0xff, 0x35, 0x2f, 
-		 0x00, 0x00, 0x00, 0xd0, 0x33, 0x9a, 0x9d, 0x00, 0x00, 0x00, 
-		 0x0a, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x00, 
-		 0x00, 0x00, 0x02, 0x00, 0x01, 0xe5, 0x27, 0xde, 0xfc, 0x00, 
-		 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 
-		 0x82];
-	$data{"amber.png"} =
-		[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 
-		 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 
-		 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x25, 
-		 0xdb, 0x56, 0xca, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 
-		 0x45, 0x07, 0xd2, 0x07, 0x11, 0x0f, 0x28, 0x04, 0x98, 0xcb, 
-		 0xd6, 0xe0, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 
-		 0x00, 0x00, 0x0b, 0x12, 0x00, 0x00, 0x0b, 0x12, 0x01, 0xd2, 
-		 0xdd, 0x7e, 0xfc, 0x00, 0x00, 0x00, 0x04, 0x67, 0x41, 0x4d, 
-		 0x41, 0x00, 0x00, 0xb1, 0x8f, 0x0b, 0xfc, 0x61, 0x05, 0x00, 
-		 0x00, 0x00, 0x06, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xe0, 0x50, 
-		 0x00, 0x00, 0x00, 0xa2, 0x7a, 0xda, 0x7e, 0x00, 0x00, 0x00, 
-		 0x0a, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x00, 
-	  	 0x00, 0x00, 0x02, 0x00, 0x01, 0xe5, 0x27, 0xde, 0xfc, 0x00, 
-		 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 
-		 0x82];
-	$data{"emerald.png"} =
-		[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 
-		 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 
-		 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x25, 
-		 0xdb, 0x56, 0xca, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 
-		 0x45, 0x07, 0xd2, 0x07, 0x11, 0x0f, 0x22, 0x2b, 0xc9, 0xf5, 
-		 0x03, 0x33, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 
-		 0x00, 0x00, 0x0b, 0x12, 0x00, 0x00, 0x0b, 0x12, 0x01, 0xd2, 
-		 0xdd, 0x7e, 0xfc, 0x00, 0x00, 0x00, 0x04, 0x67, 0x41, 0x4d, 
-		 0x41, 0x00, 0x00, 0xb1, 0x8f, 0x0b, 0xfc, 0x61, 0x05, 0x00, 
-		 0x00, 0x00, 0x06, 0x50, 0x4c, 0x54, 0x45, 0x1b, 0xea, 0x59, 
-		 0x0a, 0x0a, 0x0a, 0x0f, 0xba, 0x50, 0x83, 0x00, 0x00, 0x00, 
-		 0x0a, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x00, 
-		 0x00, 0x00, 0x02, 0x00, 0x01, 0xe5, 0x27, 0xde, 0xfc, 0x00, 
-		 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 
-		 0x82];
-	$data{"snow.png"} =
-		[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 
-		 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 
-		 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x25, 
-		 0xdb, 0x56, 0xca, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 
-		 0x45, 0x07, 0xd2, 0x07, 0x11, 0x0f, 0x1e, 0x1d, 0x75, 0xbc, 
-		 0xef, 0x55, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 
-		 0x00, 0x00, 0x0b, 0x12, 0x00, 0x00, 0x0b, 0x12, 0x01, 0xd2, 
-		 0xdd, 0x7e, 0xfc, 0x00, 0x00, 0x00, 0x04, 0x67, 0x41, 0x4d, 
-		 0x41, 0x00, 0x00, 0xb1, 0x8f, 0x0b, 0xfc, 0x61, 0x05, 0x00, 
-		 0x00, 0x00, 0x06, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 
-		 0x00, 0x00, 0x00, 0x55, 0xc2, 0xd3, 0x7e, 0x00, 0x00, 0x00, 
-		 0x0a, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x00, 
-		 0x00, 0x00, 0x02, 0x00, 0x01, 0xe5, 0x27, 0xde, 0xfc, 0x00, 
-		 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 
-		 0x82];
-	$data{"glass.png"} =
-		[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 
-		 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 
-		 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x25, 
-		 0xdb, 0x56, 0xca, 0x00, 0x00, 0x00, 0x04, 0x67, 0x41, 0x4d, 
-		 0x41, 0x00, 0x00, 0xb1, 0x8f, 0x0b, 0xfc, 0x61, 0x05, 0x00, 
-		 0x00, 0x00, 0x06, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 
-		 0x00, 0x00, 0x00, 0x55, 0xc2, 0xd3, 0x7e, 0x00, 0x00, 0x00, 
-		 0x01, 0x74, 0x52, 0x4e, 0x53, 0x00, 0x40, 0xe6, 0xd8, 0x66, 
-		 0x00, 0x00, 0x00, 0x01, 0x62, 0x4b, 0x47, 0x44, 0x00, 0x88, 
-		 0x05, 0x1d, 0x48, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
-		 0x73, 0x00, 0x00, 0x0b, 0x12, 0x00, 0x00, 0x0b, 0x12, 0x01, 
-		 0xd2, 0xdd, 0x7e, 0xfc, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 
-		 0x4d, 0x45, 0x07, 0xd2, 0x07, 0x13, 0x0f, 0x08, 0x19, 0xc4, 
-		 0x40, 0x56, 0x10, 0x00, 0x00, 0x00, 0x0a, 0x49, 0x44, 0x41, 
-		 0x54, 0x78, 0x9c, 0x63, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 
-		 0x01, 0x48, 0xaf, 0xa4, 0x71, 0x00, 0x00, 0x00, 0x00, 0x49, 
-		 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82];
-	$data{"updown.png"} =
-		[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 
-		 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x0a, 
-		 0x00, 0x00, 0x00, 0x0e, 0x08, 0x06, 0x00, 0x00, 0x00, 0x16, 
-		 0xa3, 0x8d, 0xab, 0x00, 0x00, 0x00, 0x3c, 0x49, 0x44, 0x41, 
-		 0x54, 0x28, 0xcf, 0x63, 0x60, 0x40, 0x03, 0xff, 0xa1, 0x00, 
-		 0x5d, 0x9c, 0x11, 0x5d, 0x11, 0x8a, 0x24, 0x23, 0x23, 0x23, 
-		 0x86, 0x42, 0x6c, 0xa6, 0x20, 0x2b, 0x66, 0xc4, 0xa7, 0x08, 
-		 0x59, 0x31, 0x23, 0x21, 0x45, 0x30, 0xc0, 0xc4, 0x30, 0x60, 
-		 0x80, 0xfa, 0x6e, 0x24, 0x3e, 0x78, 0x48, 0x0a, 0x70, 0x62, 
-		 0xa2, 0x90, 0x81, 0xd8, 0x44, 0x01, 0x00, 0xe9, 0x5c, 0x2f, 
-		 0xf5, 0xe2, 0x9d, 0x0f, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x49, 
-		 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82] if ($sort);
-	foreach (keys(%data))
-	{
-		open(PNG_HANDLE, ">", $_)
-			or die("ERROR: cannot create $_!\n");
-		binmode(PNG_HANDLE);
-		print(PNG_HANDLE map(chr,@{$data{$_}}));
-		close(PNG_HANDLE);
-	}
-}
-
-
-#
-# write_htaccess_file()
-#
-
-sub write_htaccess_file()
-{
-	local *HTACCESS_HANDLE;
-	my $htaccess_data;
-
-	open(*HTACCESS_HANDLE, ">", ".htaccess")
-		or die("ERROR: cannot open .htaccess for writing!\n");
-
-	$htaccess_data = (<<"END_OF_HTACCESS")
-AddEncoding x-gzip .html
-END_OF_HTACCESS
-	;
-
-	print(HTACCESS_HANDLE $htaccess_data);
-	close(*HTACCESS_HANDLE);
-}
-
-
-#
-# write_css_file()
-#
-# Write the cascading style sheet file gcov.css to the current directory.
-# This file defines basic layout attributes of all generated HTML pages.
-#
-
-sub write_css_file()
-{
-	local *CSS_HANDLE;
-
-	# Check for a specified external style sheet file
-	if ($css_filename)
-	{
-		# Simply copy that file
-		system("cp", $css_filename, "gcov.css")
-			and die("ERROR: cannot copy file $css_filename!\n");
-		return;
-	}
-
-	open(CSS_HANDLE, ">", "gcov.css")
-		or die ("ERROR: cannot open gcov.css for writing!\n");
-
-
-	# *************************************************************
-
-	my $css_data = ($_=<<"END_OF_CSS")
-	/* All views: initial background and text color */
-	body
-	{
-	  color: #000000;
-	  background-color: #FFFFFF;
-	}
-	
-	/* All views: standard link format*/
-	a:link
-	{
-	  color: #284FA8;
-	  text-decoration: underline;
-	}
-	
-	/* All views: standard link - visited format */
-	a:visited
-	{
-	  color: #00CB40;
-	  text-decoration: underline;
-	}
-	
-	/* All views: standard link - activated format */
-	a:active
-	{
-	  color: #FF0040;
-	  text-decoration: underline;
-	}
-	
-	/* All views: main title format */
-	td.title
-	{
-	  text-align: center;
-	  padding-bottom: 10px;
-	  font-family: sans-serif;
-	  font-size: 20pt;
-	  font-style: italic;
-	  font-weight: bold;
-	}
-	
-	/* All views: header item format */
-	td.headerItem
-	{
-	  text-align: right;
-	  padding-right: 6px;
-	  font-family: sans-serif;
-	  font-weight: bold;
-	  vertical-align: top;
-	  white-space: nowrap;
-	}
-	
-	/* All views: header item value format */
-	td.headerValue
-	{
-	  text-align: left;
-	  color: #284FA8;
-	  font-family: sans-serif;
-	  font-weight: bold;
-	  white-space: nowrap;
-	}
-
-	/* All views: header item coverage table heading */
-	td.headerCovTableHead
-	{
-	  text-align: center;
-	  padding-right: 6px;
-	  padding-left: 6px;
-	  padding-bottom: 0px;
-	  font-family: sans-serif;
-	  font-size: 80%;
-	  white-space: nowrap;
-	}
-	
-	/* All views: header item coverage table entry */
-	td.headerCovTableEntry
-	{
-	  text-align: right;
-	  color: #284FA8;
-	  font-family: sans-serif;
-	  font-weight: bold;
-	  white-space: nowrap;
-	  padding-left: 12px;
-	  padding-right: 4px;
-	  background-color: #DAE7FE;
-	}
-	
-	/* All views: header item coverage table entry for high coverage rate */
-	td.headerCovTableEntryHi
-	{
-	  text-align: right;
-	  color: #000000;
-	  font-family: sans-serif;
-	  font-weight: bold;
-	  white-space: nowrap;
-	  padding-left: 12px;
-	  padding-right: 4px;
-	  background-color: #A7FC9D;
-	}
-	
-	/* All views: header item coverage table entry for medium coverage rate */
-	td.headerCovTableEntryMed
-	{
-	  text-align: right;
-	  color: #000000;
-	  font-family: sans-serif;
-	  font-weight: bold;
-	  white-space: nowrap;
-	  padding-left: 12px;
-	  padding-right: 4px;
-	  background-color: #FFEA20;
-	}
-	
-	/* All views: header item coverage table entry for ow coverage rate */
-	td.headerCovTableEntryLo
-	{
-	  text-align: right;
-	  color: #000000;
-	  font-family: sans-serif;
-	  font-weight: bold;
-	  white-space: nowrap;
-	  padding-left: 12px;
-	  padding-right: 4px;
-	  background-color: #FF0000;
-	}
-	
-	/* All views: header legend value for legend entry */
-	td.headerValueLeg
-	{
-	  text-align: left;
-	  color: #000000;
-	  font-family: sans-serif;
-	  font-size: 80%;
-	  white-space: nowrap;
-	  padding-top: 4px;
-	}
-	
-	/* All views: color of horizontal ruler */
-	td.ruler
-	{
-	  background-color: #6688D4;
-	}
-	
-	/* All views: version string format */
-	td.versionInfo
-	{
-	  text-align: center;
-	  padding-top: 2px;
-	  font-family: sans-serif;
-	  font-style: italic;
-	}
-	
-	/* Directory view/File view (all)/Test case descriptions:
-	   table headline format */
-	td.tableHead
-	{
-	  text-align: center;
-	  color: #FFFFFF;
-	  background-color: #6688D4;
-	  font-family: sans-serif;
-	  font-size: 120%;
-	  font-weight: bold;
-	  white-space: nowrap;
-	  padding-left: 4px;
-	  padding-right: 4px;
-	}
-
-	span.tableHeadSort
-	{
-	  padding-right: 4px;
-	}
-	
-	/* Directory view/File view (all): filename entry format */
-	td.coverFile
-	{
-	  text-align: left;
-	  padding-left: 10px;
-	  padding-right: 20px; 
-	  color: #284FA8;
-	  background-color: #DAE7FE;
-	  font-family: monospace;
-	}
-	
-	/* Directory view/File view (all): bar-graph entry format*/
-	td.coverBar
-	{
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  background-color: #DAE7FE;
-	}
-	
-	/* Directory view/File view (all): bar-graph outline color */
-	td.coverBarOutline
-	{
-	  background-color: #000000;
-	}
-	
-	/* Directory view/File view (all): percentage entry for files with
-	   high coverage rate */
-	td.coverPerHi
-	{
-	  text-align: right;
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  background-color: #A7FC9D;
-	  font-weight: bold;
-	  font-family: sans-serif;
-	}
-	
-	/* Directory view/File view (all): line count entry for files with
-	   high coverage rate */
-	td.coverNumHi
-	{
-	  text-align: right;
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  background-color: #A7FC9D;
-	  white-space: nowrap;
-	  font-family: sans-serif;
-	}
-	
-	/* Directory view/File view (all): percentage entry for files with
-	   medium coverage rate */
-	td.coverPerMed
-	{
-	  text-align: right;
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  background-color: #FFEA20;
-	  font-weight: bold;
-	  font-family: sans-serif;
-	}
-	
-	/* Directory view/File view (all): line count entry for files with
-	   medium coverage rate */
-	td.coverNumMed
-	{
-	  text-align: right;
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  background-color: #FFEA20;
-	  white-space: nowrap;
-	  font-family: sans-serif;
-	}
-	
-	/* Directory view/File view (all): percentage entry for files with
-	   low coverage rate */
-	td.coverPerLo
-	{
-	  text-align: right;
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  background-color: #FF0000;
-	  font-weight: bold;
-	  font-family: sans-serif;
-	}
-	
-	/* Directory view/File view (all): line count entry for files with
-	   low coverage rate */
-	td.coverNumLo
-	{
-	  text-align: right;
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  background-color: #FF0000;
-	  white-space: nowrap;
-	  font-family: sans-serif;
-	}
-	
-	/* File view (all): "show/hide details" link format */
-	a.detail:link
-	{
-	  color: #B8D0FF;
-	  font-size:80%;
-	}
-	
-	/* File view (all): "show/hide details" link - visited format */
-	a.detail:visited
-	{
-	  color: #B8D0FF;
-	  font-size:80%;
-	}
-	
-	/* File view (all): "show/hide details" link - activated format */
-	a.detail:active
-	{
-	  color: #FFFFFF;
-	  font-size:80%;
-	}
-	
-	/* File view (detail): test name entry */
-	td.testName
-	{
-	  text-align: right;
-	  padding-right: 10px;
-	  background-color: #DAE7FE;
-	  font-family: sans-serif;
-	}
-	
-	/* File view (detail): test percentage entry */
-	td.testPer
-	{
-	  text-align: right;
-	  padding-left: 10px;
-	  padding-right: 10px; 
-	  background-color: #DAE7FE;
-	  font-family: sans-serif;
-	}
-	
-	/* File view (detail): test lines count entry */
-	td.testNum
-	{
-	  text-align: right;
-	  padding-left: 10px;
-	  padding-right: 10px; 
-	  background-color: #DAE7FE;
-	  font-family: sans-serif;
-	}
-	
-	/* Test case descriptions: test name format*/
-	dt
-	{
-	  font-family: sans-serif;
-	  font-weight: bold;
-	}
-	
-	/* Test case descriptions: description table body */
-	td.testDescription
-	{
-	  padding-top: 10px;
-	  padding-left: 30px;
-	  padding-bottom: 10px;
-	  padding-right: 30px;
-	  background-color: #DAE7FE;
-	}
-	
-	/* Source code view: function entry */
-	td.coverFn
-	{
-	  text-align: left;
-	  padding-left: 10px;
-	  padding-right: 20px; 
-	  color: #284FA8;
-	  background-color: #DAE7FE;
-	  font-family: monospace;
-	}
-
-	/* Source code view: function entry zero count*/
-	td.coverFnLo
-	{
-	  text-align: right;
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  background-color: #FF0000;
-	  font-weight: bold;
-	  font-family: sans-serif;
-	}
-
-	/* Source code view: function entry nonzero count*/
-	td.coverFnHi
-	{
-	  text-align: right;
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  background-color: #DAE7FE;
-	  font-weight: bold;
-	  font-family: sans-serif;
-	}
-
-	/* Source code view: source code format */
-	pre.source
-	{
-	  font-family: monospace;
-	  white-space: pre;
-	  margin-top: 2px;
-	}
-	
-	/* Source code view: line number format */
-	span.lineNum
-	{
-	  background-color: #EFE383;
-	}
-	
-	/* Source code view: format for lines which were executed */
-	td.lineCov,
-	span.lineCov
-	{
-	  background-color: #CAD7FE;
-	}
-	
-	/* Source code view: format for Cov legend */
-	span.coverLegendCov
-	{
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  padding-bottom: 2px;
-	  background-color: #CAD7FE;
-	}
-	
-	/* Source code view: format for lines which were not executed */
-	td.lineNoCov,
-	span.lineNoCov
-	{
-	  background-color: #FF6230;
-	}
-	
-	/* Source code view: format for NoCov legend */
-	span.coverLegendNoCov
-	{
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  padding-bottom: 2px;
-	  background-color: #FF6230;
-	}
-	
-	/* Source code view (function table): standard link - visited format */
-	td.lineNoCov > a:visited,
-	td.lineCov > a:visited
-	{  
-	  color: black;
-	  text-decoration: underline;
-	}  
-	
-	/* Source code view: format for lines which were executed only in a
-	   previous version */
-	span.lineDiffCov
-	{
-	  background-color: #B5F7AF;
-	}
-	
-	/* Source code view: format for branches which were executed
-	 * and taken */
-	span.branchCov
-	{
-	  background-color: #CAD7FE;
-	}
-
-	/* Source code view: format for branches which were executed
-	 * but not taken */
-	span.branchNoCov
-	{
-	  background-color: #FF6230;
-	}
-
-	/* Source code view: format for branches which were not executed */
-	span.branchNoExec
-	{
-	  background-color: #FF6230;
-	}
-
-	/* Source code view: format for the source code heading line */
-	pre.sourceHeading
-	{
-	  white-space: pre;
-	  font-family: monospace;
-	  font-weight: bold;
-	  margin: 0px;
-	}
-
-	/* All views: header legend value for low rate */
-	td.headerValueLegL
-	{
-	  font-family: sans-serif;
-	  text-align: center;
-	  white-space: nowrap;
-	  padding-left: 4px;
-	  padding-right: 2px;
-	  background-color: #FF0000;
-	  font-size: 80%;
-	}
-
-	/* All views: header legend value for med rate */
-	td.headerValueLegM
-	{
-	  font-family: sans-serif;
-	  text-align: center;
-	  white-space: nowrap;
-	  padding-left: 2px;
-	  padding-right: 2px;
-	  background-color: #FFEA20;
-	  font-size: 80%;
-	}
-
-	/* All views: header legend value for hi rate */
-	td.headerValueLegH
-	{
-	  font-family: sans-serif;
-	  text-align: center;
-	  white-space: nowrap;
-	  padding-left: 2px;
-	  padding-right: 4px;
-	  background-color: #A7FC9D;
-	  font-size: 80%;
-	}
-
-	/* All views except source code view: legend format for low coverage */
-	span.coverLegendCovLo
-	{
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  padding-top: 2px;
-	  background-color: #FF0000;
-	}
-
-	/* All views except source code view: legend format for med coverage */
-	span.coverLegendCovMed
-	{
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  padding-top: 2px;
-	  background-color: #FFEA20;
-	}
-
-	/* All views except source code view: legend format for hi coverage */
-	span.coverLegendCovHi
-	{
-	  padding-left: 10px;
-	  padding-right: 10px;
-	  padding-top: 2px;
-	  background-color: #A7FC9D;
-	}
-END_OF_CSS
-	;
-
-	# *************************************************************
-
-
-	# Remove leading tab from all lines
-	$css_data =~ s/^\t//gm;
-
-	print(CSS_HANDLE $css_data);
-
-	close(CSS_HANDLE);
-}
-
-
-#
-# get_bar_graph_code(base_dir, cover_found, cover_hit)
-#
-# Return a string containing HTML code which implements a bar graph display
-# for a coverage rate of cover_hit * 100 / cover_found.
-#
-
-sub get_bar_graph_code($$$)
-{
-	my ($base_dir, $found, $hit) = @_;
-	my $rate;
-	my $alt;
-	my $width;
-	my $remainder;
-	my $png_name;
-	my $graph_code;
-
-	# Check number of instrumented lines
-	if ($_[1] == 0) { return ""; }
-
-	$alt		= rate($hit, $found, "%");
-	$width		= rate($hit, $found, undef, 0);
-	$remainder	= 100 - $width;
-
-	# Decide which .png file to use
-	$png_name = $rate_png[classify_rate($found, $hit, $med_limit,
-					    $hi_limit)];
-
-	if ($width == 0)
-	{
-		# Zero coverage
-		$graph_code = (<<END_OF_HTML)
-	        <table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="$_[0]snow.png" width=100 height=10 alt="$alt"></td></tr></table>
-END_OF_HTML
-		;
-	}
-	elsif ($width == 100)
-	{
-		# Full coverage
-		$graph_code = (<<END_OF_HTML)
-		<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="$_[0]$png_name" width=100 height=10 alt="$alt"></td></tr></table>
-END_OF_HTML
-		;
-	}
-	else
-	{
-		# Positive coverage
-		$graph_code = (<<END_OF_HTML)
-		<table border=0 cellspacing=0 cellpadding=1><tr><td class="coverBarOutline"><img src="$_[0]$png_name" width=$width height=10 alt="$alt"><img src="$_[0]snow.png" width=$remainder height=10 alt="$alt"></td></tr></table>
-END_OF_HTML
-		;
-	}
-
-	# Remove leading tabs from all lines
-	$graph_code =~ s/^\t+//gm;
-	chomp($graph_code);
-
-	return($graph_code);
-}
-
-#
-# sub classify_rate(found, hit, med_limit, high_limit)
-#
-# Return 0 for low rate, 1 for medium rate and 2 for hi rate.
-#
-
-sub classify_rate($$$$)
-{
-	my ($found, $hit, $med, $hi) = @_;
-	my $rate;
-
-	if ($found == 0) {
-		return 2;
-	}
-	$rate = rate($hit, $found);
-	if ($rate < $med) {
-		return 0;
-	} elsif ($rate < $hi) {
-		return 1;
-	}
-	return 2;
-}
-
-
-#
-# write_html(filehandle, html_code)
-#
-# Write out HTML_CODE to FILEHANDLE while removing a leading tabulator mark
-# in each line of HTML_CODE.
-#
-
-sub write_html(*$)
-{
-	local *HTML_HANDLE = $_[0];
-	my $html_code = $_[1];
-
-	# Remove leading tab from all lines
-	$html_code =~ s/^\t//gm;
-
-	print(HTML_HANDLE $html_code)
-		or die("ERROR: cannot write HTML data ($!)\n");
-}
-
-
-#
-# write_html_prolog(filehandle, base_dir, pagetitle)
-#
-# Write an HTML prolog common to all HTML files to FILEHANDLE. PAGETITLE will
-# be used as HTML page title. BASE_DIR contains a relative path which points
-# to the base directory.
-#
-
-sub write_html_prolog(*$$)
-{
-	my $basedir = $_[1];
-	my $pagetitle = $_[2];
-	my $prolog;
-
-	$prolog = $html_prolog;
-	$prolog =~ s/\@pagetitle\@/$pagetitle/g;
-	$prolog =~ s/\@basedir\@/$basedir/g;
-
-	write_html($_[0], $prolog);
-}
-
-
-#
-# write_header_prolog(filehandle, base_dir)
-#
-# Write beginning of page header HTML code.
-#
-
-sub write_header_prolog(*$)
-{
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-	  <table width="100%" border=0 cellspacing=0 cellpadding=0>
-	    <tr><td class="title">$title</td></tr>
-	    <tr><td class="ruler"><img src="$_[1]glass.png" width=3 height=3 alt=""></td></tr>
-
-	    <tr>
-	      <td width="100%">
-	        <table cellpadding=1 border=0 width="100%">
-END_OF_HTML
-	;
-
-	# *************************************************************
-}
-
-
-#
-# write_header_line(handle, content)
-#
-# Write a header line with the specified table contents.
-#
-
-sub write_header_line(*@)
-{
-	my ($handle, @content) = @_;
-	my $entry;
-
-	write_html($handle, "          <tr>\n");
-	foreach $entry (@content) {
-		my ($width, $class, $text, $colspan) = @{$entry};
-
-		if (defined($width)) {
-			$width = " width=\"$width\"";
-		} else {
-			$width = "";
-		}
-		if (defined($class)) {
-			$class = " class=\"$class\"";
-		} else {
-			$class = "";
-		}
-		if (defined($colspan)) {
-			$colspan = " colspan=\"$colspan\"";
-		} else {
-			$colspan = "";
-		}
-		$text = "" if (!defined($text));
-		write_html($handle,
-			   "            <td$width$class$colspan>$text</td>\n");
-	}
-	write_html($handle, "          </tr>\n");
-}
-
-
-#
-# write_header_epilog(filehandle, base_dir)
-#
-# Write end of page header HTML code.
-#
-
-sub write_header_epilog(*$)
-{
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-	          <tr><td><img src="$_[1]glass.png" width=3 height=3 alt=""></td></tr>
-	        </table>
-	      </td>
-	    </tr>
-
-	    <tr><td class="ruler"><img src="$_[1]glass.png" width=3 height=3 alt=""></td></tr>
-	  </table>
-
-END_OF_HTML
-	;
-
-	# *************************************************************
-}
-
-
-#
-# write_file_table_prolog(handle, file_heading, ([heading, num_cols], ...))
-#
-# Write heading for file table.
-#
-
-sub write_file_table_prolog(*$@)
-{
-	my ($handle, $file_heading, @columns) = @_;
-	my $num_columns = 0;
-	my $file_width;
-	my $col;
-	my $width;
-
-	$width = 20 if (scalar(@columns) == 1);
-	$width = 10 if (scalar(@columns) == 2);
-	$width = 8 if (scalar(@columns) > 2);
-
-	foreach $col (@columns) {
-		my ($heading, $cols) = @{$col};
-
-		$num_columns += $cols;
-	}
-	$file_width = 100 - $num_columns * $width;
-
-	# Table definition
-	write_html($handle, <<END_OF_HTML);
-	  <center>
-	  <table width="80%" cellpadding=1 cellspacing=1 border=0>
-
-	    <tr>
-	      <td width="$file_width%"><br></td>
-END_OF_HTML
-	# Empty first row
-	foreach $col (@columns) {
-		my ($heading, $cols) = @{$col};
-
-		while ($cols-- > 0) {
-			write_html($handle, <<END_OF_HTML);
-	      <td width="$width%"></td>
-END_OF_HTML
-		}
-	}
-	# Next row
-	write_html($handle, <<END_OF_HTML);
-	    </tr>
-
-	    <tr>
-	      <td class="tableHead">$file_heading</td>
-END_OF_HTML
-	# Heading row
-	foreach $col (@columns) {
-		my ($heading, $cols) = @{$col};
-		my $colspan = "";
-
-		$colspan = " colspan=$cols" if ($cols > 1);
-		write_html($handle, <<END_OF_HTML);
-	      <td class="tableHead"$colspan>$heading</td>
-END_OF_HTML
-	}
-	write_html($handle, <<END_OF_HTML);
-	    </tr>
-END_OF_HTML
-}
-
-
-# write_file_table_entry(handle, base_dir, filename, page_link,
-#			 ([ found, hit, med_limit, hi_limit, graph ], ..)
-#
-# Write an entry of the file table.
-#
-
-sub write_file_table_entry(*$$$@)
-{
-	my ($handle, $base_dir, $filename, $page_link, @entries) = @_;
-	my $file_code;
-	my $entry;
-	my $esc_filename = escape_html($filename);
-
-	# Add link to source if provided
-	if (defined($page_link) && $page_link ne "") {
-		$file_code = "<a href=\"$page_link\">$esc_filename</a>";
-	} else {
-		$file_code = $esc_filename;
-	}
-
-	# First column: filename
-	write_html($handle, <<END_OF_HTML);
-	    <tr>
-	      <td class="coverFile">$file_code</td>
-END_OF_HTML
-	# Columns as defined
-	foreach $entry (@entries) {
-		my ($found, $hit, $med, $hi, $graph) = @{$entry};
-		my $bar_graph;
-		my $class;
-		my $rate;
-
-		# Generate bar graph if requested
-		if ($graph) {
-			$bar_graph = get_bar_graph_code($base_dir, $found,
-							$hit);
-			write_html($handle, <<END_OF_HTML);
-	      <td class="coverBar" align="center">
-	        $bar_graph
-	      </td>
-END_OF_HTML
-		}
-		# Get rate color and text
-		if ($found == 0) {
-			$rate = "-";
-			$class = "Hi";
-		} else {
-			$rate = rate($hit, $found, "&nbsp;%");
-			$class = $rate_name[classify_rate($found, $hit,
-					    $med, $hi)];
-		}
-		if ($opt_missed) {
-			# Show negative number of items without coverage
-			$hit = -($found - $hit);
-		}
-		write_html($handle, <<END_OF_HTML);
-	      <td class="coverPer$class">$rate</td>
-	      <td class="coverNum$class">$hit / $found</td>
-END_OF_HTML
-	}
-	# End of row
-        write_html($handle, <<END_OF_HTML);
-	    </tr>
-END_OF_HTML
-}
-
-
-#
-# write_file_table_detail_entry(filehandle, test_name, ([found, hit], ...))
-#
-# Write entry for detail section in file table.
-#
-
-sub write_file_table_detail_entry(*$@)
-{
-	my ($handle, $test, @entries) = @_;
-	my $entry;
-
-	if ($test eq "") {
-		$test = "<span style=\"font-style:italic\">&lt;unnamed&gt;</span>";
-	} elsif ($test =~ /^(.*),diff$/) {
-		$test = $1." (converted)";
-	}
-	# Testname
-	write_html($handle, <<END_OF_HTML);
-	    <tr>
-	      <td class="testName" colspan=2>$test</td>
-END_OF_HTML
-	# Test data
-	foreach $entry (@entries) {
-		my ($found, $hit) = @{$entry};
-		my $rate = rate($hit, $found, "&nbsp;%");
-
-		write_html($handle, <<END_OF_HTML);
-	      <td class="testPer">$rate</td>
-	      <td class="testNum">$hit&nbsp;/&nbsp;$found</td>
-END_OF_HTML
-	}
-
-        write_html($handle, <<END_OF_HTML);
-	    </tr>
-
-END_OF_HTML
-
-	# *************************************************************
-}
-
-
-#
-# write_file_table_epilog(filehandle)
-#
-# Write end of file table HTML code.
-#
-
-sub write_file_table_epilog(*)
-{
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-	  </table>
-	  </center>
-	  <br>
-
-END_OF_HTML
-	;
-
-	# *************************************************************
-}
-
-
-#
-# write_test_table_prolog(filehandle, table_heading)
-#
-# Write heading for test case description table.
-#
-
-sub write_test_table_prolog(*$)
-{
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-	  <center>
-	  <table width="80%" cellpadding=2 cellspacing=1 border=0>
-
-	    <tr>
-	      <td><br></td>
-	    </tr>
-
-	    <tr>
-	      <td class="tableHead">$_[1]</td>
-	    </tr>
-
-	    <tr>
-	      <td class="testDescription">
-	        <dl>
-END_OF_HTML
-	;
-
-	# *************************************************************
-}
-
-
-#
-# write_test_table_entry(filehandle, test_name, test_description)
-#
-# Write entry for the test table.
-#
-
-sub write_test_table_entry(*$$)
-{
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-          <dt>$_[1]<a name="$_[1]">&nbsp;</a></dt>
-          <dd>$_[2]<br><br></dd>
-END_OF_HTML
-	;
-
-	# *************************************************************
-}
-
-
-#
-# write_test_table_epilog(filehandle)
-#
-# Write end of test description table HTML code.
-#
-
-sub write_test_table_epilog(*)
-{
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-	        </dl>
-	      </td>
-	    </tr>
-	  </table>
-	  </center>
-	  <br>
-
-END_OF_HTML
-	;
-
-	# *************************************************************
-}
-
-
-sub fmt_centered($$)
-{
-	my ($width, $text) = @_;
-	my $w0 = length($text);
-	my $w1 = $width > $w0 ? int(($width - $w0) / 2) : 0;
-	my $w2 = $width > $w0 ? $width - $w0 - $w1 : 0;
-
-	return (" "x$w1).$text.(" "x$w2);
-}
-
-
-#
-# write_source_prolog(filehandle)
-#
-# Write start of source code table.
-#
-
-sub write_source_prolog(*)
-{
-	my $lineno_heading = "         ";
-	my $branch_heading = "";
-	my $line_heading = fmt_centered($line_field_width, "Line data");
-	my $source_heading = " Source code";
-
-	if ($br_coverage) {
-		$branch_heading = fmt_centered($br_field_width, "Branch data").
-				  " ";
-	}
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-	  <table cellpadding=0 cellspacing=0 border=0>
-	    <tr>
-	      <td><br></td>
-	    </tr>
-	    <tr>
-	      <td>
-<pre class="sourceHeading">${lineno_heading}${branch_heading}${line_heading} ${source_heading}</pre>
-<pre class="source">
-END_OF_HTML
-	;
-
-	# *************************************************************
-}
-
-sub cmp_blocks($$)
-{
-	my ($a, $b) = @_;
-	my ($fa, $fb) = ($a->[0], $b->[0]);
-
-	return $fa->[0] <=> $fb->[0] if ($fa->[0] != $fb->[0]);
-	return $fa->[1] <=> $fb->[1];
-}
-
-#
-# get_branch_blocks(brdata)
-#
-# Group branches that belong to the same basic block.
-#
-# Returns: [block1, block2, ...]
-# block:   [branch1, branch2, ...]
-# branch:  [block_num, branch_num, taken_count, text_length, open, close]
-#
-
-sub get_branch_blocks($)
-{
-	my ($brdata) = @_;
-	my $last_block_num;
-	my $block = [];
-	my @blocks;
-
-	return () if (!defined($brdata));
-
-	# Group branches
-	foreach my $entry (split(/:/, $brdata)) {
-		my ($block_num, $branch, $taken) = split(/,/, $entry);
-		my $br;
-
-		if (defined($last_block_num) && $block_num != $last_block_num) {
-			push(@blocks, $block);
-			$block = [];
-		}
-		$br = [$block_num, $branch, $taken, 3, 0, 0];
-		push(@{$block}, $br);
-		$last_block_num = $block_num;
-	}
-	push(@blocks, $block) if (scalar(@{$block}) > 0);
-
-	# Add braces to first and last branch in group
-	foreach $block (@blocks) {
-		$block->[0]->[$BR_OPEN] = 1;
-		$block->[0]->[$BR_LEN]++;
-		$block->[scalar(@{$block}) - 1]->[$BR_CLOSE] = 1;
-		$block->[scalar(@{$block}) - 1]->[$BR_LEN]++;
-	}
-
-	return sort(cmp_blocks @blocks);
-}
-
-#
-# get_block_len(block)
-#
-# Calculate total text length of all branches in a block of branches.
-#
-
-sub get_block_len($)
-{
-	my ($block) = @_;
-	my $len = 0;
-	my $branch;
-
-	foreach $branch (@{$block}) {
-		$len += $branch->[$BR_LEN];
-	}
-
-	return $len;
-}
-
-
-#
-# get_branch_html(brdata)
-#
-# Return a list of HTML lines which represent the specified branch coverage
-# data in source code view.
-#
-
-sub get_branch_html($)
-{
-	my ($brdata) = @_;
-	my @blocks = get_branch_blocks($brdata);
-	my $block;
-	my $branch;
-	my $line_len = 0;
-	my $line = [];	# [branch2|" ", branch|" ", ...]
-	my @lines;	# [line1, line2, ...]
-	my @result;
-
-	# Distribute blocks to lines
-	foreach $block (@blocks) {
-		my $block_len = get_block_len($block);
-
-		# Does this block fit into the current line?
-		if ($line_len + $block_len <= $br_field_width) {
-			# Add it
-			$line_len += $block_len;
-			push(@{$line}, @{$block});
-			next;
-		} elsif ($block_len <= $br_field_width) {
-			# It would fit if the line was empty - add it to new
-			# line
-			push(@lines, $line);
-			$line_len = $block_len;
-			$line = [ @{$block} ];
-			next;
-		}
-		# Split the block into several lines
-		foreach $branch (@{$block}) {
-			if ($line_len + $branch->[$BR_LEN] >= $br_field_width) {
-				# Start a new line
-				if (($line_len + 1 <= $br_field_width) &&
-				    scalar(@{$line}) > 0 &&
-				    !$line->[scalar(@$line) - 1]->[$BR_CLOSE]) {
-					# Try to align branch symbols to be in
-					# one # row
-					push(@{$line}, " ");
-				}
-				push(@lines, $line);
-				$line_len = 0;
-				$line = [];
-			}
-			push(@{$line}, $branch);
-			$line_len += $branch->[$BR_LEN];
-		}
-	}
-	push(@lines, $line);
-
-	# Convert to HTML
-	foreach $line (@lines) {
-		my $current = "";
-		my $current_len = 0;
-
-		foreach $branch (@$line) {
-			# Skip alignment space
-			if ($branch eq " ") {
-				$current .= " ";
-				$current_len++;
-				next;
-			}
-
-			my ($block_num, $br_num, $taken, $len, $open, $close) =
-			   @{$branch};
-			my $class;
-			my $title;
-			my $text;
-
-			if ($taken eq '-') {
-				$class	= "branchNoExec";
-				$text	= " # ";
-				$title	= "Branch $br_num was not executed";
-			} elsif ($taken == 0) {
-				$class	= "branchNoCov";
-				$text	= " - ";
-				$title	= "Branch $br_num was not taken";
-			} else {
-				$class	= "branchCov";
-				$text	= " + ";
-				$title	= "Branch $br_num was taken $taken ".
-					  "time";
-				$title .= "s" if ($taken > 1);
-			}
-			$current .= "[" if ($open);
-			$current .= "<span class=\"$class\" title=\"$title\">";
-			$current .= $text."</span>";
-			$current .= "]" if ($close);
-			$current_len += $len;
-		}
-
-		# Right-align result text
-		if ($current_len < $br_field_width) {
-			$current = (" "x($br_field_width - $current_len)).
-				   $current;
-		}
-		push(@result, $current);
-	}
-
-	return @result;
-}
-
-
-#
-# format_count(count, width)
-#
-# Return a right-aligned representation of count that fits in width characters.
-#
-
-sub format_count($$)
-{
-	my ($count, $width) = @_;
-	my $result;
-	my $exp;
-
-	$result = sprintf("%*.0f", $width, $count);
-	while (length($result) > $width) {
-		last if ($count < 10);
-		$exp++;
-		$count = int($count/10);
-		$result = sprintf("%*s", $width, ">$count*10^$exp");
-	}
-	return $result;
-}
-
-#
-# write_source_line(filehandle, line_num, source, hit_count, converted,
-#                   brdata)
-#
-# Write formatted source code line. Return a line in a format as needed
-# by gen_png()
-#
-
-sub write_source_line(*$$$$$)
-{
-	my ($handle, $line, $source, $count, $converted, $brdata) = @_;
-	my $source_format;
-	my $count_format;
-	my $result;
-	my $anchor_start = "";
-	my $anchor_end = "";
-	my $count_field_width = $line_field_width - 1;
-	my @br_html;
-	my $html;
-
-	# Get branch HTML data for this line
-	@br_html = get_branch_html($brdata) if ($br_coverage);
-
-	if (!defined($count)) {
-		$result		= "";
-		$source_format	= "";
-		$count_format	= " "x$count_field_width;
-	}
-	elsif ($count == 0) {
-		$result		= $count;
-		$source_format	= '<span class="lineNoCov">';
-		$count_format	= format_count($count, $count_field_width);
-	}
-	elsif ($converted && defined($highlight)) {
-		$result		= "*".$count;
-		$source_format	= '<span class="lineDiffCov">';
-		$count_format	= format_count($count, $count_field_width);
-	}
-	else {
-		$result		= $count;
-		$source_format	= '<span class="lineCov">';
-		$count_format	= format_count($count, $count_field_width);
-	}
-	$result .= ":".$source;
-
-	# Write out a line number navigation anchor every $nav_resolution
-	# lines if necessary
-	$anchor_start	= "<a name=\"$_[1]\">";
-	$anchor_end	= "</a>";
-
-
-	# *************************************************************
-
-	$html = $anchor_start;
-	$html .= "<span class=\"lineNum\">".sprintf("%8d", $line)." </span>";
-	$html .= shift(@br_html).":" if ($br_coverage);
-	$html .= "$source_format$count_format : ";
-	$html .= escape_html($source);
-	$html .= "</span>" if ($source_format);
-	$html .= $anchor_end."\n";
-
-	write_html($handle, $html);
-
-	if ($br_coverage) {
-		# Add lines for overlong branch information
-		foreach (@br_html) {
-			write_html($handle, "<span class=\"lineNum\">".
-				   "         </span>$_\n");
-		}
-	}
-	# *************************************************************
-
-	return($result);
-}
-
-
-#
-# write_source_epilog(filehandle)
-#
-# Write end of source code table.
-#
-
-sub write_source_epilog(*)
-{
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-	</pre>
-	      </td>
-	    </tr>
-	  </table>
-	  <br>
-
-END_OF_HTML
-	;
-
-	# *************************************************************
-}
-
-
-#
-# write_html_epilog(filehandle, base_dir[, break_frames])
-#
-# Write HTML page footer to FILEHANDLE. BREAK_FRAMES should be set when
-# this page is embedded in a frameset, clicking the URL link will then
-# break this frameset.
-#
-
-sub write_html_epilog(*$;$)
-{
-	my $basedir = $_[1];
-	my $break_code = "";
-	my $epilog;
-
-	if (defined($_[2]))
-	{
-		$break_code = " target=\"_parent\"";
-	}
-
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-	  <table width="100%" border=0 cellspacing=0 cellpadding=0>
-	    <tr><td class="ruler"><img src="$_[1]glass.png" width=3 height=3 alt=""></td></tr>
-	    <tr><td class="versionInfo">Generated by: <a href="$lcov_url"$break_code>$lcov_version</a></td></tr>
-	  </table>
-	  <br>
-END_OF_HTML
-	;
-
-	$epilog = $html_epilog;
-	$epilog =~ s/\@basedir\@/$basedir/g;
-
-	write_html($_[0], $epilog);
-}
-
-
-#
-# write_frameset(filehandle, basedir, basename, pagetitle)
-#
-#
-
-sub write_frameset(*$$$)
-{
-	my $frame_width = $overview_width + 40;
-
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
-
-	<html lang="en">
-
-	<head>
-	  <meta http-equiv="Content-Type" content="text/html; charset=$charset">
-	  <title>$_[3]</title>
-	  <link rel="stylesheet" type="text/css" href="$_[1]gcov.css">
-	</head>
-
-	<frameset cols="$frame_width,*">
-	  <frame src="$_[2].gcov.overview.$html_ext" name="overview">
-	  <frame src="$_[2].gcov.$html_ext" name="source">
-	  <noframes>
-	    <center>Frames not supported by your browser!<br></center>
-	  </noframes>
-	</frameset>
-
-	</html>
-END_OF_HTML
-	;
-
-	# *************************************************************
-}
-
-
-#
-# sub write_overview_line(filehandle, basename, line, link)
-#
-#
-
-sub write_overview_line(*$$$)
-{
-	my $y1 = $_[2] - 1;
-	my $y2 = $y1 + $nav_resolution - 1;
-	my $x2 = $overview_width - 1;
-
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-	    <area shape="rect" coords="0,$y1,$x2,$y2" href="$_[1].gcov.$html_ext#$_[3]" target="source" alt="overview">
-END_OF_HTML
-	;
-
-	# *************************************************************
-}
-
-
-#
-# write_overview(filehandle, basedir, basename, pagetitle, lines)
-#
-#
-
-sub write_overview(*$$$$)
-{
-	my $index;
-	my $max_line = $_[4] - 1;
-	my $offset;
-
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
-	<html lang="en">
-
-	<head>
-	  <title>$_[3]</title>
-	  <meta http-equiv="Content-Type" content="text/html; charset=$charset">
-	  <link rel="stylesheet" type="text/css" href="$_[1]gcov.css">
-	</head>
-
-	<body>
-	  <map name="overview">
-END_OF_HTML
-	;
-
-	# *************************************************************
-
-	# Make $offset the next higher multiple of $nav_resolution
-	$offset = ($nav_offset + $nav_resolution - 1) / $nav_resolution;
-	$offset = sprintf("%d", $offset ) * $nav_resolution;
-
-	# Create image map for overview image
-	for ($index = 1; $index <= $_[4]; $index += $nav_resolution)
-	{
-		# Enforce nav_offset
-		if ($index < $offset + 1)
-		{
-			write_overview_line($_[0], $_[2], $index, 1);
-		}
-		else
-		{
-			write_overview_line($_[0], $_[2], $index, $index - $offset);
-		}
-	}
-
-	# *************************************************************
-
-	write_html($_[0], <<END_OF_HTML)
-	  </map>
-
-	  <center>
-	  <a href="$_[2].gcov.$html_ext#top" target="source">Top</a><br><br>
-	  <img src="$_[2].gcov.png" width=$overview_width height=$max_line alt="Overview" border=0 usemap="#overview">
-	  </center>
-	</body>
-	</html>
-END_OF_HTML
-	;
-
-	# *************************************************************
-}
-
-
-sub max($$)
-{
-	my ($a, $b) = @_;
-
-	return $a if ($a > $b);
-	return $b;
-}
-
-
-#
-# write_header(filehandle, type, trunc_file_name, rel_file_name, lines_found,
-# lines_hit, funcs_found, funcs_hit, sort_type)
-#
-# Write a complete standard page header. TYPE may be (0, 1, 2, 3, 4)
-# corresponding to (directory view header, file view header, source view
-# header, test case description header, function view header)
-#
-
-sub write_header(*$$$$$$$$$$)
-{
-	local *HTML_HANDLE = $_[0];
-	my $type = $_[1];
-	my $trunc_name = $_[2];
-	my $rel_filename = $_[3];
-	my $lines_found = $_[4];
-	my $lines_hit = $_[5];
-	my $fn_found = $_[6];
-	my $fn_hit = $_[7];
-	my $br_found = $_[8];
-	my $br_hit = $_[9];
-	my $sort_type = $_[10];
-	my $base_dir;
-	my $view;
-	my $test;
-	my $base_name;
-	my $style;
-	my $rate;
-	my @row_left;
-	my @row_right;
-	my $num_rows;
-	my $i;
-	my $esc_trunc_name = escape_html($trunc_name);
-
-	$base_name = basename($rel_filename);
-
-	# Prepare text for "current view" field
-	if ($type == $HDR_DIR)
-	{
-		# Main overview
-		$base_dir = "";
-		$view = $overview_title;
-	}
-	elsif ($type == $HDR_FILE)
-	{
-		# Directory overview
-		$base_dir = get_relative_base_path($rel_filename);
-		$view = "<a href=\"$base_dir"."index.$html_ext\">".
-			"$overview_title</a> - $esc_trunc_name";
-	}
-	elsif ($type == $HDR_SOURCE || $type == $HDR_FUNC)
-	{
-		# File view
-		my $dir_name = dirname($rel_filename);
-		my $esc_base_name = escape_html($base_name);
-		my $esc_dir_name = escape_html($dir_name);
-
-		$base_dir = get_relative_base_path($dir_name);
-		if ($frames)
-		{
-			# Need to break frameset when clicking any of these
-			# links
-			$view = "<a href=\"$base_dir"."index.$html_ext\" ".
-				"target=\"_parent\">$overview_title</a> - ".
-				"<a href=\"index.$html_ext\" target=\"_parent\">".
-				"$esc_dir_name</a> - $esc_base_name";
-		}
-		else
-		{
-			$view = "<a href=\"$base_dir"."index.$html_ext\">".
-				"$overview_title</a> - ".
-				"<a href=\"index.$html_ext\">".
-				"$esc_dir_name</a> - $esc_base_name";
-		}
-
-		# Add function suffix
-		if ($func_coverage) {
-			$view .= "<span style=\"font-size: 80%;\">";
-			if ($type == $HDR_SOURCE) {
-				if ($sort) {
-					$view .= " (source / <a href=\"$base_name.func-sort-c.$html_ext\">functions</a>)";
-				} else {
-					$view .= " (source / <a href=\"$base_name.func.$html_ext\">functions</a>)";
-				}
-			} elsif ($type == $HDR_FUNC) {
-				$view .= " (<a href=\"$base_name.gcov.$html_ext\">source</a> / functions)";
-			}
-			$view .= "</span>";
-		}
-	}
-	elsif ($type == $HDR_TESTDESC)
-	{
-		# Test description header
-		$base_dir = "";
-		$view = "<a href=\"$base_dir"."index.$html_ext\">".
-			"$overview_title</a> - test case descriptions";
-	}
-
-	# Prepare text for "test" field
-	$test = escape_html($test_title);
-
-	# Append link to test description page if available
-	if (%test_description && ($type != $HDR_TESTDESC))
-	{
-		if ($frames && ($type == $HDR_SOURCE || $type == $HDR_FUNC))
-		{
-			# Need to break frameset when clicking this link
-			$test .= " ( <span style=\"font-size:80%;\">".
-				 "<a href=\"$base_dir".
-				 "descriptions.$html_ext\" target=\"_parent\">".
-				 "view descriptions</a></span> )";
-		}
-		else
-		{
-			$test .= " ( <span style=\"font-size:80%;\">".
-				 "<a href=\"$base_dir".
-				 "descriptions.$html_ext\">".
-				 "view descriptions</a></span> )";
-		}
-	}
-
-	# Write header
-	write_header_prolog(*HTML_HANDLE, $base_dir);
-
-	# Left row
-	push(@row_left, [[ "10%", "headerItem", "Current view:" ],
-			 [ "35%", "headerValue", $view ]]);
-	push(@row_left, [[undef, "headerItem", "Test:"],
-			 [undef, "headerValue", $test]]);
-	push(@row_left, [[undef, "headerItem", "Date:"],
-			 [undef, "headerValue", $date]]);
-
-	# Right row
-	if ($legend && ($type == $HDR_SOURCE || $type == $HDR_FUNC)) {
-		my $text = <<END_OF_HTML;
-            Lines:
-            <span class="coverLegendCov">hit</span>
-            <span class="coverLegendNoCov">not hit</span>
-END_OF_HTML
-		if ($br_coverage) {
-			$text .= <<END_OF_HTML;
-            | Branches:
-            <span class="coverLegendCov">+</span> taken
-            <span class="coverLegendNoCov">-</span> not taken
-            <span class="coverLegendNoCov">#</span> not executed
-END_OF_HTML
-		}
-		push(@row_left, [[undef, "headerItem", "Legend:"],
-				 [undef, "headerValueLeg", $text]]);
-	} elsif ($legend && ($type != $HDR_TESTDESC)) {
-		my $text = <<END_OF_HTML;
-	    Rating:
-            <span class="coverLegendCovLo" title="Coverage rates below $med_limit % are classified as low">low: &lt; $med_limit %</span>
-            <span class="coverLegendCovMed" title="Coverage rates between $med_limit % and $hi_limit % are classified as medium">medium: &gt;= $med_limit %</span>
-            <span class="coverLegendCovHi" title="Coverage rates of $hi_limit % and more are classified as high">high: &gt;= $hi_limit %</span>
-END_OF_HTML
-		push(@row_left, [[undef, "headerItem", "Legend:"],
-				 [undef, "headerValueLeg", $text]]);
-	}
-	if ($type == $HDR_TESTDESC) {
-		push(@row_right, [[ "55%" ]]);
-	} else {
-		push(@row_right, [["15%", undef, undef ],
-				  ["10%", "headerCovTableHead", "Hit" ],
-				  ["10%", "headerCovTableHead", "Total" ],
-				  ["15%", "headerCovTableHead", "Coverage"]]);
-	}
-	# Line coverage
-	$style = $rate_name[classify_rate($lines_found, $lines_hit,
-					  $med_limit, $hi_limit)];
-	$rate = rate($lines_hit, $lines_found, " %");
-	push(@row_right, [[undef, "headerItem", "Lines:"],
-			  [undef, "headerCovTableEntry", $lines_hit],
-			  [undef, "headerCovTableEntry", $lines_found],
-			  [undef, "headerCovTableEntry$style", $rate]])
-			if ($type != $HDR_TESTDESC);
-	# Function coverage
-	if ($func_coverage) {
-		$style = $rate_name[classify_rate($fn_found, $fn_hit,
-						  $fn_med_limit, $fn_hi_limit)];
-		$rate = rate($fn_hit, $fn_found, " %");
-		push(@row_right, [[undef, "headerItem", "Functions:"],
-				  [undef, "headerCovTableEntry", $fn_hit],
-				  [undef, "headerCovTableEntry", $fn_found],
-				  [undef, "headerCovTableEntry$style", $rate]])
-			if ($type != $HDR_TESTDESC);
-	}
-	# Branch coverage
-	if ($br_coverage) {
-		$style = $rate_name[classify_rate($br_found, $br_hit,
-						  $br_med_limit, $br_hi_limit)];
-		$rate = rate($br_hit, $br_found, " %");
-		push(@row_right, [[undef, "headerItem", "Branches:"],
-				  [undef, "headerCovTableEntry", $br_hit],
-				  [undef, "headerCovTableEntry", $br_found],
-				  [undef, "headerCovTableEntry$style", $rate]])
-			if ($type != $HDR_TESTDESC);
-	}
-
-	# Print rows
-	$num_rows = max(scalar(@row_left), scalar(@row_right));
-	for ($i = 0; $i < $num_rows; $i++) {
-		my $left = $row_left[$i];
-		my $right = $row_right[$i];
-
-		if (!defined($left)) {
-			$left = [[undef, undef, undef], [undef, undef, undef]];
-		}
-		if (!defined($right)) {
-			$right = [];
-		}
-		write_header_line(*HTML_HANDLE, @{$left},
-				  [ $i == 0 ? "5%" : undef, undef, undef],
-				  @{$right});
-	}
-
-	# Fourth line
-	write_header_epilog(*HTML_HANDLE, $base_dir);
-}
-
-sub get_sorted_by_rate($$)
-{
-	my ($hash, $type) = @_;
-
-	if ($type == $SORT_LINE) {
-		# Sort by line coverage
-		return sort({$hash->{$a}[7] <=> $hash->{$b}[7]} keys(%{$hash}));
-	} elsif ($type == $SORT_FUNC) {
-		# Sort by function coverage;
-		return sort({$hash->{$a}[8] <=> $hash->{$b}[8]}	keys(%{$hash}));
-	} elsif ($type == $SORT_BRANCH) {
-		# Sort by br coverage;
-		return sort({$hash->{$a}[9] <=> $hash->{$b}[9]}	keys(%{$hash}));
-	}
-}
-
-sub get_sorted_by_missed($$)
-{
-	my ($hash, $type) = @_;
-
-	if ($type == $SORT_LINE) {
-		# Sort by number of instrumented lines without coverage
-		return sort(
-			{
-				($hash->{$b}[0] - $hash->{$b}[1]) <=>
-				($hash->{$a}[0] - $hash->{$a}[1])
-			} keys(%{$hash}));
-	} elsif ($type == $SORT_FUNC) {
-		# Sort by number of instrumented functions without coverage
-		return sort(
-			{
-				($hash->{$b}[2] - $hash->{$b}[3]) <=>
-				($hash->{$a}[2] - $hash->{$a}[3])
-			} keys(%{$hash}));
-	} elsif ($type == $SORT_BRANCH) {
-		# Sort by number of instrumented branches without coverage
-		return sort(
-			{
-				($hash->{$b}[4] - $hash->{$b}[5]) <=>
-				($hash->{$a}[4] - $hash->{$a}[5])
-			} keys(%{$hash}));
-	}
-}
-
-#
-# get_sorted_keys(hash_ref, sort_type)
-#
-# hash_ref: filename -> stats
-# stats: [ lines_found, lines_hit, fn_found, fn_hit, br_found, br_hit,
-#          link_name, line_rate, fn_rate, br_rate ]
-#
-
-sub get_sorted_keys($$)
-{
-	my ($hash, $type) = @_;
-
-	if ($type == $SORT_FILE) {
-		# Sort by name
-		return sort(keys(%{$hash}));
-	} elsif ($opt_missed) {
-		return get_sorted_by_missed($hash, $type);
-	} else {
-		return get_sorted_by_rate($hash, $type);
-	}
-}
-
-sub get_sort_code($$$)
-{
-	my ($link, $alt, $base) = @_;
-	my $png;
-	my $link_start;
-	my $link_end;
-
-	if (!defined($link)) {
-		$png = "glass.png";
-		$link_start = "";
-		$link_end = "";
-	} else {
-		$png = "updown.png";
-		$link_start = '<a href="'.$link.'">';
-		$link_end = "</a>";
-	}
-
-	return ' <span class="tableHeadSort">'.$link_start.
-	       '<img src="'.$base.$png.'" width=10 height=14 '.
-	       'alt="'.$alt.'" title="'.$alt.'" border=0>'.$link_end.'</span>';
-}
-
-sub get_file_code($$$$)
-{
-	my ($type, $text, $sort_button, $base) = @_;
-	my $result = $text;
-	my $link;
-
-	if ($sort_button) {
-		if ($type == $HEAD_NO_DETAIL) {
-			$link = "index.$html_ext";
-		} else {
-			$link = "index-detail.$html_ext";
-		}
-	}
-	$result .= get_sort_code($link, "Sort by name", $base);
-
-	return $result;
-}
-
-sub get_line_code($$$$$)
-{
-	my ($type, $sort_type, $text, $sort_button, $base) = @_;
-	my $result = $text;
-	my $sort_link;
-
-	if ($type == $HEAD_NO_DETAIL) {
-		# Just text
-		if ($sort_button) {
-			$sort_link = "index-sort-l.$html_ext";
-		}
-	} elsif ($type == $HEAD_DETAIL_HIDDEN) {
-		# Text + link to detail view
-		$result .= ' ( <a class="detail" href="index-detail'.
-			   $fileview_sortname[$sort_type].'.'.$html_ext.
-			   '">show details</a> )';
-		if ($sort_button) {
-			$sort_link = "index-sort-l.$html_ext";
-		}
-	} else {
-		# Text + link to standard view
-		$result .= ' ( <a class="detail" href="index'.
-			   $fileview_sortname[$sort_type].'.'.$html_ext.
-			   '">hide details</a> )';
-		if ($sort_button) {
-			$sort_link = "index-detail-sort-l.$html_ext";
-		}
-	}
-	# Add sort button
-	$result .= get_sort_code($sort_link, "Sort by line coverage", $base);
-
-	return $result;
-}
-
-sub get_func_code($$$$)
-{
-	my ($type, $text, $sort_button, $base) = @_;
-	my $result = $text;
-	my $link;
-
-	if ($sort_button) {
-		if ($type == $HEAD_NO_DETAIL) {
-			$link = "index-sort-f.$html_ext";
-		} else {
-			$link = "index-detail-sort-f.$html_ext";
-		}
-	}
-	$result .= get_sort_code($link, "Sort by function coverage", $base);
-	return $result;
-}
-
-sub get_br_code($$$$)
-{
-	my ($type, $text, $sort_button, $base) = @_;
-	my $result = $text;
-	my $link;
-
-	if ($sort_button) {
-		if ($type == $HEAD_NO_DETAIL) {
-			$link = "index-sort-b.$html_ext";
-		} else {
-			$link = "index-detail-sort-b.$html_ext";
-		}
-	}
-	$result .= get_sort_code($link, "Sort by branch coverage", $base);
-	return $result;
-}
-
-#
-# write_file_table(filehandle, base_dir, overview, testhash, testfnchash,
-#                  testbrhash, fileview, sort_type)
-#
-# Write a complete file table. OVERVIEW is a reference to a hash containing
-# the following mapping:
-#
-#   filename -> "lines_found,lines_hit,funcs_found,funcs_hit,page_link,
-#		 func_link"
-#
-# TESTHASH is a reference to the following hash:
-#
-#   filename -> \%testdata
-#   %testdata: name of test affecting this file -> \%testcount
-#   %testcount: line number -> execution count for a single test
-#
-# Heading of first column is "Filename" if FILEVIEW is true, "Directory name"
-# otherwise.
-#
-
-sub write_file_table(*$$$$$$$)
-{
-	local *HTML_HANDLE = $_[0];
-	my $base_dir = $_[1];
-	my $overview = $_[2];
-	my $testhash = $_[3];
-	my $testfnchash = $_[4];
-	my $testbrhash = $_[5];
-	my $fileview = $_[6];
-	my $sort_type = $_[7];
-	my $filename;
-	my $bar_graph;
-	my $hit;
-	my $found;
-	my $fn_found;
-	my $fn_hit;
-	my $br_found;
-	my $br_hit;
-	my $page_link;
-	my $testname;
-	my $testdata;
-	my $testfncdata;
-	my $testbrdata;
-	my %affecting_tests;
-	my $line_code = "";
-	my $func_code;
-	my $br_code;
-	my $file_code;
-	my @head_columns;
-
-	# Determine HTML code for column headings
-	if (($base_dir ne "") && $show_details)
-	{
-		my $detailed = keys(%{$testhash});
-
-		$file_code = get_file_code($detailed ? $HEAD_DETAIL_HIDDEN :
-					$HEAD_NO_DETAIL,
-					$fileview ? "Filename" : "Directory",
-					$sort && $sort_type != $SORT_FILE,
-					$base_dir);
-		$line_code = get_line_code($detailed ? $HEAD_DETAIL_SHOWN :
-					$HEAD_DETAIL_HIDDEN,
-					$sort_type,
-					"Line Coverage",
-					$sort && $sort_type != $SORT_LINE,
-					$base_dir);
-		$func_code = get_func_code($detailed ? $HEAD_DETAIL_HIDDEN :
-					$HEAD_NO_DETAIL,
-					"Functions",
-					$sort && $sort_type != $SORT_FUNC,
-					$base_dir);
-		$br_code = get_br_code($detailed ? $HEAD_DETAIL_HIDDEN :
-					$HEAD_NO_DETAIL,
-					"Branches",
-					$sort && $sort_type != $SORT_BRANCH,
-					$base_dir);
-	} else {
-		$file_code = get_file_code($HEAD_NO_DETAIL,
-					$fileview ? "Filename" : "Directory",
-					$sort && $sort_type != $SORT_FILE,
-					$base_dir);
-		$line_code = get_line_code($HEAD_NO_DETAIL, $sort_type, "Line Coverage",
-					$sort && $sort_type != $SORT_LINE,
-					$base_dir);
-		$func_code = get_func_code($HEAD_NO_DETAIL, "Functions",
-					$sort && $sort_type != $SORT_FUNC,
-					$base_dir);
-		$br_code = get_br_code($HEAD_NO_DETAIL, "Branches",
-					$sort && $sort_type != $SORT_BRANCH,
-					$base_dir);
-	}
-	push(@head_columns, [ $line_code, 3 ]);
-	push(@head_columns, [ $func_code, 2]) if ($func_coverage);
-	push(@head_columns, [ $br_code, 2]) if ($br_coverage);
-
-	write_file_table_prolog(*HTML_HANDLE, $file_code, @head_columns);
-
-	foreach $filename (get_sorted_keys($overview, $sort_type))
-	{
-		my @columns;
-		($found, $hit, $fn_found, $fn_hit, $br_found, $br_hit,
-		 $page_link) = @{$overview->{$filename}};
-
-		# Line coverage
-		push(@columns, [$found, $hit, $med_limit, $hi_limit, 1]);
-		# Function coverage
-		if ($func_coverage) {
-			push(@columns, [$fn_found, $fn_hit, $fn_med_limit,
-					$fn_hi_limit, 0]);
-		}
-		# Branch coverage
-		if ($br_coverage) {
-			push(@columns, [$br_found, $br_hit, $br_med_limit,
-					$br_hi_limit, 0]);
-		}
-		write_file_table_entry(*HTML_HANDLE, $base_dir, $filename,
-				       $page_link, @columns);
-
-		$testdata = $testhash->{$filename};
-		$testfncdata = $testfnchash->{$filename};
-		$testbrdata = $testbrhash->{$filename};
-
-		# Check whether we should write test specific coverage
-		# as well
-		if (!($show_details && $testdata)) { next; }
-
-		# Filter out those tests that actually affect this file
-		%affecting_tests = %{ get_affecting_tests($testdata,
-					$testfncdata, $testbrdata) };
-
-		# Does any of the tests affect this file at all?
-		if (!%affecting_tests) { next; }
-
-		foreach $testname (keys(%affecting_tests))
-		{
-			my @results;
-			($found, $hit, $fn_found, $fn_hit, $br_found, $br_hit) =
-				split(",", $affecting_tests{$testname});
-
-			# Insert link to description of available
-			if ($test_description{$testname})
-			{
-				$testname = "<a href=\"$base_dir".
-					    "descriptions.$html_ext#$testname\">".
-					    "$testname</a>";
-			}
-
-			push(@results, [$found, $hit]);
-			push(@results, [$fn_found, $fn_hit]) if ($func_coverage);
-			push(@results, [$br_found, $br_hit]) if ($br_coverage);
-			write_file_table_detail_entry(*HTML_HANDLE, $testname,
-				@results);
-		}
-	}
-
-	write_file_table_epilog(*HTML_HANDLE);
-}
-
-
-#
-# get_found_and_hit(hash)
-#
-# Return the count for entries (found) and entries with an execution count
-# greater than zero (hit) in a hash (linenumber -> execution count) as
-# a list (found, hit)
-#
-
-sub get_found_and_hit($)
-{
-	my %hash = %{$_[0]};
-	my $found = 0;
-	my $hit = 0;
-
-	# Calculate sum
-	$found = 0;
-	$hit = 0;
-			
-	foreach (keys(%hash))
-	{
-		$found++;
-		if ($hash{$_}>0) { $hit++; }
-	}
-
-	return ($found, $hit);
-}
-
-
-#
-# get_func_found_and_hit(sumfnccount)
-#
-# Return (f_found, f_hit) for sumfnccount
-#
-
-sub get_func_found_and_hit($)
-{
-	my ($sumfnccount) = @_;
-	my $function;
-	my $fn_found;
-	my $fn_hit;
-
-	$fn_found = scalar(keys(%{$sumfnccount}));
-	$fn_hit = 0;
-	foreach $function (keys(%{$sumfnccount})) {
-		if ($sumfnccount->{$function} > 0) {
-			$fn_hit++;
-		}
-	}
-	return ($fn_found, $fn_hit);
-}
-
-
-sub get_br_found_and_hit($)
-{
-	my ($brcount) = @_;
-	my $db;
-
-	$db = brcount_to_db($brcount);
-
-	return brcount_db_get_found_and_hit($db);
-}
-
-
-#
-# get_affecting_tests(testdata, testfncdata, testbrdata)
-#
-# HASHREF contains a mapping filename -> (linenumber -> exec count). Return
-# a hash containing mapping filename -> "lines found, lines hit" for each
-# filename which has a nonzero hit count.
-#
-
-sub get_affecting_tests($$$)
-{
-	my ($testdata, $testfncdata, $testbrdata) = @_;
-	my $testname;
-	my $testcount;
-	my $testfnccount;
-	my $testbrcount;
-	my %result;
-	my $found;
-	my $hit;
-	my $fn_found;
-	my $fn_hit;
-	my $br_found;
-	my $br_hit;
-
-	foreach $testname (keys(%{$testdata}))
-	{
-		# Get (line number -> count) hash for this test case
-		$testcount = $testdata->{$testname};
-		$testfnccount = $testfncdata->{$testname};
-		$testbrcount = $testbrdata->{$testname};
-
-		# Calculate sum
-		($found, $hit) = get_found_and_hit($testcount);
-		($fn_found, $fn_hit) = get_func_found_and_hit($testfnccount);
-		($br_found, $br_hit) = get_br_found_and_hit($testbrcount);
-
-		if ($hit>0)
-		{
-			$result{$testname} = "$found,$hit,$fn_found,$fn_hit,".
-					     "$br_found,$br_hit";
-		}
-	}
-
-	return(\%result);
-}
-
-
-sub get_hash_reverse($)
-{
-	my ($hash) = @_;
-	my %result;
-
-	foreach (keys(%{$hash})) {
-		$result{$hash->{$_}} = $_;
-	}
-
-	return \%result;
-}
-
-#
-# write_source(filehandle, source_filename, count_data, checksum_data,
-#              converted_data, func_data, sumbrcount)
-#
-# Write an HTML view of a source code file. Returns a list containing
-# data as needed by gen_png().
-#
-# Die on error.
-#
-
-sub write_source($$$$$$$)
-{
-	local *HTML_HANDLE = $_[0];
-	local *SOURCE_HANDLE;
-	my $source_filename = $_[1];
-	my %count_data;
-	my $line_number;
-	my @result;
-	my $checkdata = $_[3];
-	my $converted = $_[4];
-	my $funcdata  = $_[5];
-	my $sumbrcount = $_[6];
-	my $datafunc = get_hash_reverse($funcdata);
-	my @file;
-
-	if ($_[2])
-	{
-		%count_data = %{$_[2]};
-	}
-
-	if (!open(SOURCE_HANDLE, "<", $source_filename)) {
-		my @lines;
-		my $last_line = 0;
-
-		if (!$ignore[$ERROR_SOURCE]) {
-			die("ERROR: cannot read $source_filename\n");
-		}
-
-		# Continue without source file
-		warn("WARNING: cannot read $source_filename!\n");
-
-		@lines = sort( { $a <=> $b }  keys(%count_data));
-		if (@lines) {
-			$last_line = $lines[scalar(@lines) - 1];
-		}
-		return ( ":" ) if ($last_line < 1);
-
-		# Simulate gcov behavior
-		for ($line_number = 1; $line_number <= $last_line;
-		     $line_number++) {
-			push(@file, "/* EOF */");
-		}
-	} else {
-		@file = <SOURCE_HANDLE>;
-	}
-	
-	write_source_prolog(*HTML_HANDLE);
-	$line_number = 0;
-	foreach (@file) {
-		$line_number++;
-		chomp($_);
-
-		# Also remove CR from line-end
-		s/\015$//;
-
-		# Source code matches coverage data?
-		if (defined($checkdata->{$line_number}) &&
-		    ($checkdata->{$line_number} ne md5_base64($_)))
-		{
-			die("ERROR: checksum mismatch  at $source_filename:".
-			    "$line_number\n");
-		}
-
-		push (@result,
-		      write_source_line(HTML_HANDLE, $line_number,
-					$_, $count_data{$line_number},
-					$converted->{$line_number},
-					$sumbrcount->{$line_number}));
-	}
-
-	close(SOURCE_HANDLE);
-	write_source_epilog(*HTML_HANDLE);
-	return(@result);
-}
-
-
-sub funcview_get_func_code($$$)
-{
-	my ($name, $base, $type) = @_;
-	my $result;
-	my $link;
-
-	if ($sort && $type == 1) {
-		$link = "$name.func.$html_ext";
-	}
-	$result = "Function Name";
-	$result .= get_sort_code($link, "Sort by function name", $base);
-
-	return $result;
-}
-
-sub funcview_get_count_code($$$)
-{
-	my ($name, $base, $type) = @_;
-	my $result;
-	my $link;
-
-	if ($sort && $type == 0) {
-		$link = "$name.func-sort-c.$html_ext";
-	}
-	$result = "Hit count";
-	$result .= get_sort_code($link, "Sort by hit count", $base);
-
-	return $result;
-}
-
-#
-# funcview_get_sorted(funcdata, sumfncdata, sort_type)
-#
-# Depending on the value of sort_type, return a list of functions sorted
-# by name (type 0) or by the associated call count (type 1).
-#
-
-sub funcview_get_sorted($$$)
-{
-	my ($funcdata, $sumfncdata, $type) = @_;
-
-	if ($type == 0) {
-		return sort(keys(%{$funcdata}));
-	}
-	return sort({
-		$sumfncdata->{$b} == $sumfncdata->{$a} ?
-			$a cmp $b : $sumfncdata->{$a} <=> $sumfncdata->{$b}
-		} keys(%{$sumfncdata}));
-}
-
-sub demangle_list($)
-{
-	my ($list) = @_;
-	my $tmpfile;
-	my $handle;
-	my %demangle;
-	my $demangle_arg = "";
-	my %versions;
-
-	# Write function names to file
-	($handle, $tmpfile) = tempfile();
-	die("ERROR: could not create temporary file") if (!defined($tmpfile));
-	print($handle join("\n", @$list));
-	close($handle);
-
-	# Extra flag necessary on OS X so that symbols listed by gcov get demangled
-	# properly.
-	if ($^O eq "darwin") {
-		$demangle_arg = "--no-strip-underscores";
-	}
-
-	# Build translation hash from c++filt output
-	open($handle, "-|", "c++filt $demangle_arg < $tmpfile") or
-		die("ERROR: could not run c++filt: $!\n");
-	foreach my $func (@$list) {
-		my $translated = <$handle>;
-		my $version;
-
-		last if (!defined($translated));
-		chomp($translated);
-
-		$version = ++$versions{$translated};
-		$translated .= ".$version" if ($version > 1);
-		$demangle{$func} = $translated;
-	}
-	close($handle);
-
-	if (scalar(keys(%demangle)) != scalar(@$list)) {
-		die("ERROR: c++filt output not as expected (".
-		    scalar(keys(%demangle))." vs ".scalar(@$list).") lines\n");
-	}
-
-	unlink($tmpfile) or
-		warn("WARNING: could not remove temporary file $tmpfile: $!\n");
-
-	return \%demangle;
-}
-
-#
-# write_function_table(filehandle, source_file, sumcount, funcdata,
-#		       sumfnccount, testfncdata, sumbrcount, testbrdata,
-#		       base_name, base_dir, sort_type)
-#
-# Write an HTML table listing all functions in a source file, including
-# also function call counts and line coverages inside of each function.
-#
-# Die on error.
-#
-
-sub write_function_table(*$$$$$$$$$$)
-{
-	local *HTML_HANDLE = $_[0];
-	my $source = $_[1];
-	my $sumcount = $_[2];
-	my $funcdata = $_[3];
-	my $sumfncdata = $_[4];
-	my $testfncdata = $_[5];
-	my $sumbrcount = $_[6];
-	my $testbrdata = $_[7];
-	my $name = $_[8];
-	my $base = $_[9];
-	my $type = $_[10];
-	my $func;
-	my $func_code;
-	my $count_code;
-	my $demangle;
-
-	# Get HTML code for headings
-	$func_code = funcview_get_func_code($name, $base, $type);
-	$count_code = funcview_get_count_code($name, $base, $type);
-	write_html(*HTML_HANDLE, <<END_OF_HTML)
-	  <center>
-	  <table width="60%" cellpadding=1 cellspacing=1 border=0>
-	    <tr><td><br></td></tr>
-	    <tr>
-	      <td width="80%" class="tableHead">$func_code</td>
-	      <td width="20%" class="tableHead">$count_code</td>
-	    </tr>
-END_OF_HTML
-	;
-
-	# Get demangle translation hash
-	if ($demangle_cpp) {
-		$demangle = demangle_list([ sort(keys(%{$funcdata})) ]);
-	}
-
-	# Get a sorted table
-	foreach $func (funcview_get_sorted($funcdata, $sumfncdata, $type)) {
-		if (!defined($funcdata->{$func}))
-		{
-			next;
-		}
-
-		my $startline = $funcdata->{$func} - $func_offset;
-		my $name = $func;
-		my $count = $sumfncdata->{$name};
-		my $countstyle;
-
-		# Replace function name with demangled version if available
-		$name = $demangle->{$name} if (exists($demangle->{$name}));
-
-		# Escape special characters
-		$name = escape_html($name);
-		if ($startline < 1) {
-			$startline = 1;
-		}
-		if ($count == 0) {
-			$countstyle = "coverFnLo";
-		} else {
-			$countstyle = "coverFnHi";
-		}
-
-		write_html(*HTML_HANDLE, <<END_OF_HTML)
-	    <tr>
-              <td class="coverFn"><a href="$source#$startline">$name</a></td>
-              <td class="$countstyle">$count</td>
-            </tr>
-END_OF_HTML
-                ;
-	}
-	write_html(*HTML_HANDLE, <<END_OF_HTML)
-	  </table>
-	  <br>
-	  </center>
-END_OF_HTML
-	;
-}
-
-
-#
-# info(printf_parameter)
-#
-# Use printf to write PRINTF_PARAMETER to stdout only when the $quiet flag
-# is not set.
-#
-
-sub info(@)
-{
-	if (!$quiet)
-	{
-		# Print info string
-		printf(@_);
-	}
-}
-
-
-#
-# subtract_counts(data_ref, base_ref)
-#
-
-sub subtract_counts($$)
-{
-	my %data = %{$_[0]};
-	my %base = %{$_[1]};
-	my $line;
-	my $data_count;
-	my $base_count;
-	my $hit = 0;
-	my $found = 0;
-
-	foreach $line (keys(%data))
-	{
-		$found++;
-		$data_count = $data{$line};
-		$base_count = $base{$line};
-
-		if (defined($base_count))
-		{
-			$data_count -= $base_count;
-
-			# Make sure we don't get negative numbers
-			if ($data_count<0) { $data_count = 0; }
-		}
-
-		$data{$line} = $data_count;
-		if ($data_count > 0) { $hit++; }
-	}
-
-	return (\%data, $found, $hit);
-}
-
-
-#
-# subtract_fnccounts(data, base)
-#
-# Subtract function call counts found in base from those in data.
-# Return (data, f_found, f_hit).
-#
-
-sub subtract_fnccounts($$)
-{
-	my %data;
-	my %base;
-	my $func;
-	my $data_count;
-	my $base_count;
-	my $fn_hit = 0;
-	my $fn_found = 0;
-
-	%data = %{$_[0]} if (defined($_[0]));
-	%base = %{$_[1]} if (defined($_[1]));
-	foreach $func (keys(%data)) {
-		$fn_found++;
-		$data_count = $data{$func};
-		$base_count = $base{$func};
-
-		if (defined($base_count)) {
-			$data_count -= $base_count;
-
-			# Make sure we don't get negative numbers
-			if ($data_count < 0) {
-				$data_count = 0;
-			}
-		}
-
-		$data{$func} = $data_count;
-		if ($data_count > 0) {
-			$fn_hit++;
-		}
-	}
-
-	return (\%data, $fn_found, $fn_hit);
-}
-
-
-#
-# apply_baseline(data_ref, baseline_ref)
-#
-# Subtract the execution counts found in the baseline hash referenced by
-# BASELINE_REF from actual data in DATA_REF.
-#
-
-sub apply_baseline($$)
-{
-	my %data_hash = %{$_[0]};
-	my %base_hash = %{$_[1]};
-	my $filename;
-	my $testname;
-	my $data;
-	my $data_testdata;
-	my $data_funcdata;
-	my $data_checkdata;
-	my $data_testfncdata;
-	my $data_testbrdata;
-	my $data_count;
-	my $data_testfnccount;
-	my $data_testbrcount;
-	my $base;
-	my $base_checkdata;
-	my $base_sumfnccount;
-	my $base_sumbrcount;
-	my $base_count;
-	my $sumcount;
-	my $sumfnccount;
-	my $sumbrcount;
-	my $found;
-	my $hit;
-	my $fn_found;
-	my $fn_hit;
-	my $br_found;
-	my $br_hit;
-
-	foreach $filename (keys(%data_hash))
-	{
-		# Get data set for data and baseline
-		$data = $data_hash{$filename};
-		$base = $base_hash{$filename};
-
-		# Skip data entries for which no base entry exists
-		if (!defined($base))
-		{
-			next;
-		}
-
-		# Get set entries for data and baseline
-		($data_testdata, undef, $data_funcdata, $data_checkdata,
-		 $data_testfncdata, undef, $data_testbrdata) =
-			get_info_entry($data);
-		(undef, $base_count, undef, $base_checkdata, undef,
-		 $base_sumfnccount, undef, $base_sumbrcount) =
-			get_info_entry($base);
-
-		# Check for compatible checksums
-		merge_checksums($data_checkdata, $base_checkdata, $filename);
-
-		# sumcount has to be calculated anew
-		$sumcount = {};
-		$sumfnccount = {};
-		$sumbrcount = {};
-
-		# For each test case, subtract test specific counts
-		foreach $testname (keys(%{$data_testdata}))
-		{
-			# Get counts of both data and baseline
-			$data_count = $data_testdata->{$testname};
-			$data_testfnccount = $data_testfncdata->{$testname};
-			$data_testbrcount = $data_testbrdata->{$testname};
-
-			($data_count, undef, $hit) =
-				subtract_counts($data_count, $base_count);
-			($data_testfnccount) =
-				subtract_fnccounts($data_testfnccount,
-						   $base_sumfnccount);
-			($data_testbrcount) =
-				combine_brcount($data_testbrcount,
-						 $base_sumbrcount, $BR_SUB);
-
-
-			# Check whether this test case did hit any line at all
-			if ($hit > 0)
-			{
-				# Write back resulting hash
-				$data_testdata->{$testname} = $data_count;
-				$data_testfncdata->{$testname} =
-					$data_testfnccount;
-				$data_testbrdata->{$testname} =
-					$data_testbrcount;
-			}
-			else
-			{
-				# Delete test case which did not impact this
-				# file
-				delete($data_testdata->{$testname});
-				delete($data_testfncdata->{$testname});
-				delete($data_testbrdata->{$testname});
-			}
-
-			# Add counts to sum of counts
-			($sumcount, $found, $hit) =
-				add_counts($sumcount, $data_count);
-			($sumfnccount, $fn_found, $fn_hit) =
-				add_fnccount($sumfnccount, $data_testfnccount);
-			($sumbrcount, $br_found, $br_hit) =
-				combine_brcount($sumbrcount, $data_testbrcount,
-						$BR_ADD);
-		}
-
-		# Write back resulting entry
-		set_info_entry($data, $data_testdata, $sumcount, $data_funcdata,
-			       $data_checkdata, $data_testfncdata, $sumfnccount,
-			       $data_testbrdata, $sumbrcount, $found, $hit,
-			       $fn_found, $fn_hit, $br_found, $br_hit);
-
-		$data_hash{$filename} = $data;
-	}
-
-	return (\%data_hash);
-}
-
-
-#
-# remove_unused_descriptions()
-#
-# Removes all test descriptions from the global hash %test_description which
-# are not present in %info_data.
-#
-
-sub remove_unused_descriptions()
-{
-	my $filename;		# The current filename
-	my %test_list;		# Hash containing found test names
-	my $test_data;		# Reference to hash test_name -> count_data
-	my $before;		# Initial number of descriptions
-	my $after;		# Remaining number of descriptions
-	
-	$before = scalar(keys(%test_description));
-
-	foreach $filename (keys(%info_data))
-	{
-		($test_data) = get_info_entry($info_data{$filename});
-		foreach (keys(%{$test_data}))
-		{
-			$test_list{$_} = "";
-		}
-	}
-
-	# Remove descriptions for tests which are not in our list
-	foreach (keys(%test_description))
-	{
-		if (!defined($test_list{$_}))
-		{
-			delete($test_description{$_});
-		}
-	}
-
-	$after = scalar(keys(%test_description));
-	if ($after < $before)
-	{
-		info("Removed ".($before - $after).
-		     " unused descriptions, $after remaining.\n");
-	}
-}
-
-
-#
-# apply_prefix(filename, PREFIXES)
-#
-# If FILENAME begins with PREFIX from PREFIXES, remove PREFIX from FILENAME
-# and return resulting string, otherwise return FILENAME.
-#
-
-sub apply_prefix($@)
-{
-	my $filename = shift;
-	my @dir_prefix = @_;
-
-	if (@dir_prefix)
-	{
-		foreach my $prefix (@dir_prefix)
-		{
-			if ($prefix ne "" && $filename =~ /^\Q$prefix\E\/(.*)$/)
-			{
-				return substr($filename, length($prefix) + 1);
-			}
-		}
-	}
-
-	return $filename;
-}
-
-
-#
-# system_no_output(mode, parameters)
-#
-# Call an external program using PARAMETERS while suppressing depending on
-# the value of MODE:
-#
-#   MODE & 1: suppress STDOUT
-#   MODE & 2: suppress STDERR
-#
-# Return 0 on success, non-zero otherwise.
-#
-
-sub system_no_output($@)
-{
-	my $mode = shift;
-	my $result;
-	local *OLD_STDERR;
-	local *OLD_STDOUT;
-
-	# Save old stdout and stderr handles
-	($mode & 1) && open(OLD_STDOUT, ">>&", "STDOUT");
-	($mode & 2) && open(OLD_STDERR, ">>&", "STDERR");
-
-	# Redirect to /dev/null
-	($mode & 1) && open(STDOUT, ">", "/dev/null");
-	($mode & 2) && open(STDERR, ">", "/dev/null");
-
-	system(@_);
-	$result = $?;
-
-	# Close redirected handles
-	($mode & 1) && close(STDOUT);
-	($mode & 2) && close(STDERR);
-
-	# Restore old handles
-	($mode & 1) && open(STDOUT, ">>&", "OLD_STDOUT");
-	($mode & 2) && open(STDERR, ">>&", "OLD_STDERR");
-
-	return $result;
-}
-
-
-#
-# read_config(filename)
-#
-# Read configuration file FILENAME and return a reference to a hash containing
-# all valid key=value pairs found.
-#
-
-sub read_config($)
-{
-	my $filename = $_[0];
-	my %result;
-	my $key;
-	my $value;
-	local *HANDLE;
-
-	if (!open(HANDLE, "<", $filename))
-	{
-		warn("WARNING: cannot read configuration file $filename\n");
-		return undef;
-	}
-	while (<HANDLE>)
-	{
-		chomp;
-		# Skip comments
-		s/#.*//;
-		# Remove leading blanks
-		s/^\s+//;
-		# Remove trailing blanks
-		s/\s+$//;
-		next unless length;
-		($key, $value) = split(/\s*=\s*/, $_, 2);
-		if (defined($key) && defined($value))
-		{
-			$result{$key} = $value;
-		}
-		else
-		{
-			warn("WARNING: malformed statement in line $. ".
-			     "of configuration file $filename\n");
-		}
-	}
-	close(HANDLE);
-	return \%result;
-}
-
-
-#
-# apply_config(REF)
-#
-# REF is a reference to a hash containing the following mapping:
-#
-#   key_string => var_ref
-#
-# where KEY_STRING is a keyword and VAR_REF is a reference to an associated
-# variable. If the global configuration hashes CONFIG or OPT_RC contain a value
-# for keyword KEY_STRING, VAR_REF will be assigned the value for that keyword. 
-#
-
-sub apply_config($)
-{
-	my $ref = $_[0];
-
-	foreach (keys(%{$ref}))
-	{
-		if (defined($opt_rc{$_})) {
-			${$ref->{$_}} = $opt_rc{$_};
-		} elsif (defined($config->{$_})) {
-			${$ref->{$_}} = $config->{$_};
-		}
-	}
-}
-
-
-#
-# get_html_prolog(FILENAME)
-#
-# If FILENAME is defined, return contents of file. Otherwise return default
-# HTML prolog. Die on error.
-#
-
-sub get_html_prolog($)
-{
-	my $filename = $_[0];
-	my $result = "";
-
-	if (defined($filename))
-	{
-		local *HANDLE;
-
-		open(HANDLE, "<", $filename)
-			or die("ERROR: cannot open html prolog $filename!\n");
-		while (<HANDLE>)
-		{
-			$result .= $_;
-		}
-		close(HANDLE);
-	}
-	else
-	{
-		$result = <<END_OF_HTML
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
-<html lang="en">
-
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=$charset">
-  <title>\@pagetitle\@</title>
-  <link rel="stylesheet" type="text/css" href="\@basedir\@gcov.css">
-</head>
-
-<body>
-
-END_OF_HTML
-		;
-	}
-
-	return $result;
-}
-
-
-#
-# get_html_epilog(FILENAME)
-#
-# If FILENAME is defined, return contents of file. Otherwise return default
-# HTML epilog. Die on error.
-#
-sub get_html_epilog($)
-{
-	my $filename = $_[0];
-	my $result = "";
-
-	if (defined($filename))
-	{
-		local *HANDLE;
-
-		open(HANDLE, "<", $filename)
-			or die("ERROR: cannot open html epilog $filename!\n");
-		while (<HANDLE>)
-		{
-			$result .= $_;
-		}
-		close(HANDLE);
-	}
-	else
-	{
-		$result = <<END_OF_HTML
-
-</body>
-</html>
-END_OF_HTML
-		;
-	}
-
-	return $result;
-
-}
-
-sub warn_handler($)
-{
-	my ($msg) = @_;
-
-	warn("$tool_name: $msg");
-}
-
-sub die_handler($)
-{
-	my ($msg) = @_;
-
-	die("$tool_name: $msg");
-}
-
-#
-# parse_ignore_errors(@ignore_errors)
-#
-# Parse user input about which errors to ignore.
-#
-
-sub parse_ignore_errors(@)
-{
-	my (@ignore_errors) = @_;
-	my @items;
-	my $item;
-
-	return if (!@ignore_errors);
-
-	foreach $item (@ignore_errors) {
-		$item =~ s/\s//g;
-		if ($item =~ /,/) {
-			# Split and add comma-separated parameters
-			push(@items, split(/,/, $item));
-		} else {
-			# Add single parameter
-			push(@items, $item);
-		}
-	}
-	foreach $item (@items) {
-		my $item_id = $ERROR_ID{lc($item)};
-
-		if (!defined($item_id)) {
-			die("ERROR: unknown argument for --ignore-errors: ".
-			    "$item\n");
-		}
-		$ignore[$item_id] = 1;
-	}
-}
-
-#
-# parse_dir_prefix(@dir_prefix)
-#
-# Parse user input about the prefix list
-#
-
-sub parse_dir_prefix(@)
-{
-	my (@opt_dir_prefix) = @_;
-	my $item;
-
-	return if (!@opt_dir_prefix);
-
-	foreach $item (@opt_dir_prefix) {
-		if ($item =~ /,/) {
-			# Split and add comma-separated parameters
-			push(@dir_prefix, split(/,/, $item));
-		} else {
-			# Add single parameter
-			push(@dir_prefix, $item);
-		}
-	}
-}
-
-#
-# rate(hit, found[, suffix, precision, width])
-#
-# Return the coverage rate [0..100] for HIT and FOUND values. 0 is only
-# returned when HIT is 0. 100 is only returned when HIT equals FOUND.
-# PRECISION specifies the precision of the result. SUFFIX defines a
-# string that is appended to the result if FOUND is non-zero. Spaces
-# are added to the start of the resulting string until it is at least WIDTH
-# characters wide.
-#
-
-sub rate($$;$$$)
-{
-        my ($hit, $found, $suffix, $precision, $width) = @_;
-        my $rate; 
-
-	# Assign defaults if necessary
-	$precision	= $default_precision if (!defined($precision));
-	$suffix		= ""	if (!defined($suffix));
-	$width		= 0	if (!defined($width));
-        
-        return sprintf("%*s", $width, "-") if (!defined($found) || $found == 0);
-        $rate = sprintf("%.*f", $precision, $hit * 100 / $found);
-
-	# Adjust rates if necessary
-        if ($rate == 0 && $hit > 0) {
-		$rate = sprintf("%.*f", $precision, 1 / 10 ** $precision);
-        } elsif ($rate == 100 && $hit != $found) {
-		$rate = sprintf("%.*f", $precision, 100 - 1 / 10 ** $precision);
-	}
-
-	return sprintf("%*s", $width, $rate.$suffix);
-}
diff --git a/ThirdParty/lcov/bin/geninfo b/ThirdParty/lcov/bin/geninfo
deleted file mode 100755
index f41eaec1c..000000000
--- a/ThirdParty/lcov/bin/geninfo
+++ /dev/null
@@ -1,4014 +0,0 @@
-#!/usr/bin/env perl
-#
-#   Copyright (c) International Business Machines  Corp., 2002,2012
-#
-#   This program is free software;  you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or (at
-#   your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY;  without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#   General Public License for more details.                 
-#
-#   You should have received a copy of the GNU General Public License
-#   along with this program;  if not, write to the Free Software
-#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-#
-# geninfo
-#
-#   This script generates .info files from data files as created by code
-#   instrumented with gcc's built-in profiling mechanism. Call it with
-#   --help and refer to the geninfo man page to get information on usage
-#   and available options.
-#
-#
-# Authors:
-#   2002-08-23 created by Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>
-#                         IBM Lab Boeblingen
-#        based on code by Manoj Iyer <manjo@mail.utexas.edu> and
-#                         Megan Bock <mbock@us.ibm.com>
-#                         IBM Austin
-#   2002-09-05 / Peter Oberparleiter: implemented option that allows file list
-#   2003-04-16 / Peter Oberparleiter: modified read_gcov so that it can also
-#                parse the new gcov format which is to be introduced in gcc 3.3
-#   2003-04-30 / Peter Oberparleiter: made info write to STDERR, not STDOUT
-#   2003-07-03 / Peter Oberparleiter: added line checksum support, added
-#                --no-checksum
-#   2003-09-18 / Nigel Hinds: capture branch coverage data from GCOV
-#   2003-12-11 / Laurent Deniel: added --follow option
-#                workaround gcov (<= 3.2.x) bug with empty .da files
-#   2004-01-03 / Laurent Deniel: Ignore empty .bb files
-#   2004-02-16 / Andreas Krebbel: Added support for .gcno/.gcda files and
-#                gcov versioning
-#   2004-08-09 / Peter Oberparleiter: added configuration file support
-#   2008-07-14 / Tom Zoerner: added --function-coverage command line option
-#   2008-08-13 / Peter Oberparleiter: modified function coverage
-#                implementation (now enabled per default)
-#
-
-use strict;
-use warnings;
-use File::Basename; 
-use File::Spec::Functions qw /abs2rel catdir file_name_is_absolute splitdir
-			      splitpath catpath/;
-use Getopt::Long;
-use Digest::MD5 qw(md5_base64);
-use Cwd qw/abs_path/;
-if( $^O eq "msys" )
-{
-	require File::Spec::Win32;
-}
-
-# Constants
-our $tool_dir		= abs_path(dirname($0));
-our $lcov_version	= "LCOV version 1.14";
-our $lcov_url		= "http://ltp.sourceforge.net/coverage/lcov.php";
-our $gcov_tool		= "gcov";
-our $tool_name		= basename($0);
-
-our $GCOV_VERSION_8_0_0	= 0x80000;
-our $GCOV_VERSION_4_7_0	= 0x40700;
-our $GCOV_VERSION_3_4_0	= 0x30400;
-our $GCOV_VERSION_3_3_0	= 0x30300;
-our $GCNO_FUNCTION_TAG	= 0x01000000;
-our $GCNO_LINES_TAG	= 0x01450000;
-our $GCNO_FILE_MAGIC	= 0x67636e6f;
-our $BBG_FILE_MAGIC	= 0x67626267;
-
-# Error classes which users may specify to ignore during processing
-our $ERROR_GCOV		= 0;
-our $ERROR_SOURCE	= 1;
-our $ERROR_GRAPH	= 2;
-our %ERROR_ID = (
-	"gcov" => $ERROR_GCOV,
-	"source" => $ERROR_SOURCE,
-	"graph" => $ERROR_GRAPH,
-);
-
-our $EXCL_START = "LCOV_EXCL_START";
-our $EXCL_STOP = "LCOV_EXCL_STOP";
-
-# Marker to exclude branch coverage but keep function and line coveage
-our $EXCL_BR_START = "LCOV_EXCL_BR_START";
-our $EXCL_BR_STOP = "LCOV_EXCL_BR_STOP";
-
-# Compatibility mode values
-our $COMPAT_VALUE_OFF	= 0;
-our $COMPAT_VALUE_ON	= 1;
-our $COMPAT_VALUE_AUTO	= 2;
-
-# Compatibility mode value names
-our %COMPAT_NAME_TO_VALUE = (
-	"off"	=> $COMPAT_VALUE_OFF,
-	"on"	=> $COMPAT_VALUE_ON,
-	"auto"	=> $COMPAT_VALUE_AUTO,
-);
-
-# Compatiblity modes
-our $COMPAT_MODE_LIBTOOL	= 1 << 0;
-our $COMPAT_MODE_HAMMER		= 1 << 1;
-our $COMPAT_MODE_SPLIT_CRC	= 1 << 2;
-
-# Compatibility mode names
-our %COMPAT_NAME_TO_MODE = (
-	"libtool"	=> $COMPAT_MODE_LIBTOOL,
-	"hammer"	=> $COMPAT_MODE_HAMMER,
-	"split_crc"	=> $COMPAT_MODE_SPLIT_CRC,
-	"android_4_4_0"	=> $COMPAT_MODE_SPLIT_CRC,
-);
-
-# Map modes to names
-our %COMPAT_MODE_TO_NAME = (
-	$COMPAT_MODE_LIBTOOL	=> "libtool",
-	$COMPAT_MODE_HAMMER	=> "hammer",
-	$COMPAT_MODE_SPLIT_CRC	=> "split_crc",
-);
-
-# Compatibility mode default values
-our %COMPAT_MODE_DEFAULTS = (
-	$COMPAT_MODE_LIBTOOL	=> $COMPAT_VALUE_ON,
-	$COMPAT_MODE_HAMMER	=> $COMPAT_VALUE_AUTO,
-	$COMPAT_MODE_SPLIT_CRC	=> $COMPAT_VALUE_AUTO,
-);
-
-# Compatibility mode auto-detection routines
-sub compat_hammer_autodetect();
-our %COMPAT_MODE_AUTO = (
-	$COMPAT_MODE_HAMMER	=> \&compat_hammer_autodetect,
-	$COMPAT_MODE_SPLIT_CRC	=> 1,	# will be done later
-);
-
-our $BR_LINE		= 0;
-our $BR_BLOCK		= 1;
-our $BR_BRANCH		= 2;
-our $BR_TAKEN		= 3;
-our $BR_VEC_ENTRIES	= 4;
-our $BR_VEC_WIDTH	= 32;
-our $BR_VEC_MAX		= vec(pack('b*', 1 x $BR_VEC_WIDTH), 0, $BR_VEC_WIDTH);
-
-our $UNNAMED_BLOCK	= -1;
-
-# Prototypes
-sub print_usage(*);
-sub transform_pattern($);
-sub gen_info($);
-sub process_dafile($$);
-sub match_filename($@);
-sub solve_ambiguous_match($$$);
-sub split_filename($);
-sub solve_relative_path($$);
-sub read_gcov_header($);
-sub read_gcov_file($);
-sub info(@);
-sub map_llvm_version($);
-sub version_to_str($);
-sub get_gcov_version();
-sub system_no_output($@);
-sub read_config($);
-sub apply_config($);
-sub get_exclusion_data($);
-sub apply_exclusion_data($$);
-sub process_graphfile($$);
-sub filter_fn_name($);
-sub warn_handler($);
-sub die_handler($);
-sub graph_error($$);
-sub graph_expect($);
-sub graph_read(*$;$$);
-sub graph_skip(*$;$);
-sub uniq(@);
-sub sort_uniq(@);
-sub sort_uniq_lex(@);
-sub graph_cleanup($);
-sub graph_find_base($);
-sub graph_from_bb($$$$);
-sub graph_add_order($$$);
-sub read_bb_word(*;$);
-sub read_bb_value(*;$);
-sub read_bb_string(*$);
-sub read_bb($);
-sub read_bbg_word(*;$);
-sub read_bbg_value(*;$);
-sub read_bbg_string(*);
-sub read_bbg_lines_record(*$$$$$);
-sub read_bbg($);
-sub read_gcno_word(*;$$);
-sub read_gcno_value(*$;$$);
-sub read_gcno_string(*$);
-sub read_gcno_lines_record(*$$$$$$);
-sub determine_gcno_split_crc($$$$);
-sub read_gcno_function_record(*$$$$$);
-sub read_gcno($);
-sub get_gcov_capabilities();
-sub get_overall_line($$$$);
-sub print_overall_rate($$$$$$$$$);
-sub br_gvec_len($);
-sub br_gvec_get($$);
-sub debug($);
-sub int_handler();
-sub parse_ignore_errors(@);
-sub is_external($);
-sub compat_name($);
-sub parse_compat_modes($);
-sub is_compat($);
-sub is_compat_auto($);
-
-
-# Global variables
-our $gcov_version;
-our $gcov_version_string;
-our $graph_file_extension;
-our $data_file_extension;
-our @data_directory;
-our $test_name = "";
-our $quiet;
-our $help;
-our $output_filename;
-our $base_directory;
-our $version;
-our $follow;
-our $checksum;
-our $no_checksum;
-our $opt_compat_libtool;
-our $opt_no_compat_libtool;
-our $rc_adjust_src_path;# Regexp specifying parts to remove from source path
-our $adjust_src_pattern;
-our $adjust_src_replace;
-our $adjust_testname;
-our $config;		# Configuration file contents
-our @ignore_errors;	# List of errors to ignore (parameter)
-our @ignore;		# List of errors to ignore (array)
-our $initial;
-our @include_patterns; # List of source file patterns to include
-our @exclude_patterns; # List of source file patterns to exclude
-our %excluded_files; # Files excluded due to include/exclude options
-our $no_recursion = 0;
-our $maxdepth;
-our $no_markers = 0;
-our $opt_derive_func_data = 0;
-our $opt_external = 1;
-our $opt_no_external;
-our $debug = 0;
-our $gcov_caps;
-our @gcov_options;
-our @internal_dirs;
-our $opt_config_file;
-our $opt_gcov_all_blocks = 1;
-our $opt_compat;
-our %opt_rc;
-our %compat_value;
-our $gcno_split_crc;
-our $func_coverage = 1;
-our $br_coverage = 0;
-our $rc_auto_base = 1;
-our $excl_line = "LCOV_EXCL_LINE";
-our $excl_br_line = "LCOV_EXCL_BR_LINE";
-
-our $cwd = `pwd`;
-chomp($cwd);
-
-
-#
-# Code entry point
-#
-
-# Register handler routine to be called when interrupted
-$SIG{"INT"} = \&int_handler;
-$SIG{__WARN__} = \&warn_handler;
-$SIG{__DIE__} = \&die_handler;
-
-# Set LC_ALL so that gcov output will be in a unified format
-$ENV{"LC_ALL"} = "C";
-
-# Check command line for a configuration file name
-Getopt::Long::Configure("pass_through", "no_auto_abbrev");
-GetOptions("config-file=s" => \$opt_config_file,
-	   "rc=s%" => \%opt_rc);
-Getopt::Long::Configure("default");
-
-{
-	# Remove spaces around rc options
-	my %new_opt_rc;
-
-	while (my ($key, $value) = each(%opt_rc)) {
-		$key =~ s/^\s+|\s+$//g;
-		$value =~ s/^\s+|\s+$//g;
-
-		$new_opt_rc{$key} = $value;
-	}
-	%opt_rc = %new_opt_rc;
-}
-
-# Read configuration file if available
-if (defined($opt_config_file)) {
-	$config = read_config($opt_config_file);
-} elsif (defined($ENV{"HOME"}) && (-r $ENV{"HOME"}."/.lcovrc"))
-{
-	$config = read_config($ENV{"HOME"}."/.lcovrc");
-}
-elsif (-r "/etc/lcovrc")
-{
-	$config = read_config("/etc/lcovrc");
-} elsif (-r "/usr/local/etc/lcovrc")
-{
-	$config = read_config("/usr/local/etc/lcovrc");
-}
-
-if ($config || %opt_rc)
-{
-	# Copy configuration file and --rc values to variables
-	apply_config({
-		"geninfo_gcov_tool"		=> \$gcov_tool,
-		"geninfo_adjust_testname"	=> \$adjust_testname,
-		"geninfo_checksum"		=> \$checksum,
-		"geninfo_no_checksum"		=> \$no_checksum, # deprecated
-		"geninfo_compat_libtool"	=> \$opt_compat_libtool,
-		"geninfo_external"		=> \$opt_external,
-		"geninfo_gcov_all_blocks"	=> \$opt_gcov_all_blocks,
-		"geninfo_compat"		=> \$opt_compat,
-		"geninfo_adjust_src_path"	=> \$rc_adjust_src_path,
-		"geninfo_auto_base"		=> \$rc_auto_base,
-		"lcov_function_coverage"	=> \$func_coverage,
-		"lcov_branch_coverage"		=> \$br_coverage,
-		"lcov_excl_line"		=> \$excl_line,
-		"lcov_excl_br_line"		=> \$excl_br_line,
-	});
-
-	# Merge options
-	if (defined($no_checksum))
-	{
-		$checksum = ($no_checksum ? 0 : 1);
-		$no_checksum = undef;
-	}
-
-	# Check regexp
-	if (defined($rc_adjust_src_path)) {
-		my ($pattern, $replace) = split(/\s*=>\s*/,
-						$rc_adjust_src_path);
-		local $SIG{__DIE__};
-		eval '$adjust_src_pattern = qr>'.$pattern.'>;';
-		if (!defined($adjust_src_pattern)) {
-			my $msg = $@;
-
-			chomp($msg);
-			$msg =~ s/at \(eval.*$//;
-			warn("WARNING: invalid pattern in ".
-			     "geninfo_adjust_src_path: $msg\n");
-		} elsif (!defined($replace)) {
-			# If no replacement is specified, simply remove pattern
-			$adjust_src_replace = "";
-		} else {
-			$adjust_src_replace = $replace;
-		}
-	}
-	for my $regexp (($excl_line, $excl_br_line)) {
-		eval 'qr/'.$regexp.'/';
-		my $error = $@;
-		chomp($error);
-		$error =~ s/at \(eval.*$//;
-		die("ERROR: invalid exclude pattern: $error") if $error;
-	}
-}
-
-# Parse command line options
-if (!GetOptions("test-name|t=s" => \$test_name,
-		"output-filename|o=s" => \$output_filename,
-		"checksum" => \$checksum,
-		"no-checksum" => \$no_checksum,
-		"base-directory|b=s" => \$base_directory,
-		"version|v" =>\$version,
-		"quiet|q" => \$quiet,
-		"help|h|?" => \$help,
-		"follow|f" => \$follow,
-		"compat-libtool" => \$opt_compat_libtool,
-		"no-compat-libtool" => \$opt_no_compat_libtool,
-		"gcov-tool=s" => \$gcov_tool,
-		"ignore-errors=s" => \@ignore_errors,
-		"initial|i" => \$initial,
-		"include=s" => \@include_patterns,
-		"exclude=s" => \@exclude_patterns,
-		"no-recursion" => \$no_recursion,
-		"no-markers" => \$no_markers,
-		"derive-func-data" => \$opt_derive_func_data,
-		"debug" => \$debug,
-		"external|e" => \$opt_external,
-		"no-external" => \$opt_no_external,
-		"compat=s" => \$opt_compat,
-		"config-file=s" => \$opt_config_file,
-		"rc=s%" => \%opt_rc,
-		))
-{
-	print(STDERR "Use $tool_name --help to get usage information\n");
-	exit(1);
-}
-else
-{
-	# Merge options
-	if (defined($no_checksum))
-	{
-		$checksum = ($no_checksum ? 0 : 1);
-		$no_checksum = undef;
-	}
-
-	if (defined($opt_no_compat_libtool))
-	{
-		$opt_compat_libtool = ($opt_no_compat_libtool ? 0 : 1);
-		$opt_no_compat_libtool = undef;
-	}
-
-	if (defined($opt_no_external)) {
-		$opt_external = 0;
-		$opt_no_external = undef;
-	}
-
-	if(@include_patterns) {
-		# Need perlreg expressions instead of shell pattern
-		@include_patterns = map({ transform_pattern($_); } @include_patterns);
-	}
-
-	if(@exclude_patterns) {
-		# Need perlreg expressions instead of shell pattern
-		@exclude_patterns = map({ transform_pattern($_); } @exclude_patterns);
-	}
-}
-
-@data_directory = @ARGV;
-
-debug("$lcov_version\n");
-
-# Check for help option
-if ($help)
-{
-	print_usage(*STDOUT);
-	exit(0);
-}
-
-# Check for version option
-if ($version)
-{
-	print("$tool_name: $lcov_version\n");
-	exit(0);
-}
-
-# Check gcov tool
-if (system_no_output(3, $gcov_tool, "--help") == -1)
-{
-	die("ERROR: need tool $gcov_tool!\n");
-}
-
-($gcov_version, $gcov_version_string) = get_gcov_version();
-
-# Determine gcov options
-$gcov_caps = get_gcov_capabilities();
-push(@gcov_options, "-b") if ($gcov_caps->{'branch-probabilities'} &&
-			      ($br_coverage || $func_coverage));
-push(@gcov_options, "-c") if ($gcov_caps->{'branch-counts'} &&
-			      $br_coverage);
-push(@gcov_options, "-a") if ($gcov_caps->{'all-blocks'} &&
-			      $opt_gcov_all_blocks && $br_coverage);
-if ($gcov_caps->{'hash-filenames'})
-{
-	push(@gcov_options, "-x");
-} else {
-	push(@gcov_options, "-p") if ($gcov_caps->{'preserve-paths'});
-}
-
-# Determine compatibility modes
-parse_compat_modes($opt_compat);
-
-# Determine which errors the user wants us to ignore
-parse_ignore_errors(@ignore_errors);
-
-# Make sure test names only contain valid characters
-if ($test_name =~ s/\W/_/g)
-{
-	warn("WARNING: invalid characters removed from testname!\n");
-}
-
-# Adjust test name to include uname output if requested
-if ($adjust_testname)
-{
-	$test_name .= "__".`uname -a`;
-	$test_name =~ s/\W/_/g;
-}
-
-# Make sure base_directory contains an absolute path specification
-if ($base_directory)
-{
-	$base_directory = solve_relative_path($cwd, $base_directory);
-}
-
-# Check for follow option
-if ($follow)
-{
-	$follow = "-follow"
-}
-else
-{
-	$follow = "";
-}
-
-# Determine checksum mode
-if (defined($checksum))
-{
-	# Normalize to boolean
-	$checksum = ($checksum ? 1 : 0);
-}
-else
-{
-	# Default is off
-	$checksum = 0;
-}
-
-# Determine max depth for recursion
-if ($no_recursion)
-{
-	$maxdepth = "-maxdepth 1";
-}
-else
-{
-	$maxdepth = "";
-}
-
-# Check for directory name
-if (!@data_directory)
-{
-	die("No directory specified\n".
-	    "Use $tool_name --help to get usage information\n");
-}
-else
-{
-	foreach (@data_directory)
-	{
-		stat($_);
-		if (!-r _)
-		{
-			die("ERROR: cannot read $_!\n");
-		}
-	}
-}
-
-if ($gcov_version < $GCOV_VERSION_3_4_0)
-{
-	if (is_compat($COMPAT_MODE_HAMMER))
-	{
-		$data_file_extension = ".da";
-		$graph_file_extension = ".bbg";
-	}
-	else
-	{
-		$data_file_extension = ".da";
-		$graph_file_extension = ".bb";
-	}
-}
-else
-{
-	$data_file_extension = ".gcda";
-	$graph_file_extension = ".gcno";
-}	
-
-# Check output filename
-if (defined($output_filename) && ($output_filename ne "-"))
-{
-	# Initially create output filename, data is appended
-	# for each data file processed
-	local *DUMMY_HANDLE;
-	open(DUMMY_HANDLE, ">", $output_filename)
-		or die("ERROR: cannot create $output_filename!\n");
-	close(DUMMY_HANDLE);
-
-	# Make $output_filename an absolute path because we're going
-	# to change directories while processing files
-	if (!($output_filename =~ /^\/(.*)$/))
-	{
-		$output_filename = $cwd."/".$output_filename;
-	}
-}
-
-# Build list of directories to identify external files
-foreach my $entry(@data_directory, $base_directory) {
-	next if (!defined($entry));
-	push(@internal_dirs, solve_relative_path($cwd, $entry));
-}
-
-# Do something
-foreach my $entry (@data_directory) {
-	gen_info($entry);
-}
-
-if ($initial && $br_coverage) {
-	warn("Note: --initial does not generate branch coverage ".
-	     "data\n");
-}
-info("Finished .info-file creation\n");
-
-exit(0);
-
-
-
-#
-# print_usage(handle)
-#
-# Print usage information.
-#
-
-sub print_usage(*)
-{
-	local *HANDLE = $_[0];
-
-	print(HANDLE <<END_OF_USAGE);
-Usage: $tool_name [OPTIONS] DIRECTORY
-
-Traverse DIRECTORY and create a .info file for each data file found. Note
-that you may specify more than one directory, all of which are then processed
-sequentially.
-
-  -h, --help                        Print this help, then exit
-  -v, --version                     Print version number, then exit
-  -q, --quiet                       Do not print progress messages
-  -i, --initial                     Capture initial zero coverage data
-  -t, --test-name NAME              Use test case name NAME for resulting data
-  -o, --output-filename OUTFILE     Write data only to OUTFILE
-  -f, --follow                      Follow links when searching .da/.gcda files
-  -b, --base-directory DIR          Use DIR as base directory for relative paths
-      --(no-)checksum               Enable (disable) line checksumming
-      --(no-)compat-libtool         Enable (disable) libtool compatibility mode
-      --gcov-tool TOOL              Specify gcov tool location
-      --ignore-errors ERROR         Continue after ERROR (gcov, source, graph)
-      --no-recursion                Exclude subdirectories from processing
-      --no-markers                  Ignore exclusion markers in source code
-      --derive-func-data            Generate function data from line data
-      --(no-)external               Include (ignore) data for external files
-      --config-file FILENAME        Specify configuration file location
-      --rc SETTING=VALUE            Override configuration file setting
-      --compat MODE=on|off|auto     Set compat MODE (libtool, hammer, split_crc)
-      --include PATTERN             Include files matching PATTERN
-      --exclude PATTERN             Exclude files matching PATTERN
-
-For more information see: $lcov_url
-END_OF_USAGE
-	;
-}
-
-
-#
-# transform_pattern(pattern)
-#
-# Transform shell wildcard expression to equivalent Perl regular expression.
-# Return transformed pattern.
-#
-
-sub transform_pattern($)
-{
-	my $pattern = $_[0];
-
-	# Escape special chars
-
-	$pattern =~ s/\\/\\\\/g;
-	$pattern =~ s/\//\\\//g;
-	$pattern =~ s/\^/\\\^/g;
-	$pattern =~ s/\$/\\\$/g;
-	$pattern =~ s/\(/\\\(/g;
-	$pattern =~ s/\)/\\\)/g;
-	$pattern =~ s/\[/\\\[/g;
-	$pattern =~ s/\]/\\\]/g;
-	$pattern =~ s/\{/\\\{/g;
-	$pattern =~ s/\}/\\\}/g;
-	$pattern =~ s/\./\\\./g;
-	$pattern =~ s/\,/\\\,/g;
-	$pattern =~ s/\|/\\\|/g;
-	$pattern =~ s/\+/\\\+/g;
-	$pattern =~ s/\!/\\\!/g;
-
-	# Transform ? => (.) and * => (.*)
-
-	$pattern =~ s/\*/\(\.\*\)/g;
-	$pattern =~ s/\?/\(\.\)/g;
-
-	return $pattern;
-}
-
-
-#
-# get_common_prefix(min_dir, filenames)
-#
-# Return the longest path prefix shared by all filenames. MIN_DIR specifies
-# the minimum number of directories that a filename may have after removing
-# the prefix.
-#
-
-sub get_common_prefix($@)
-{
-	my ($min_dir, @files) = @_;
-	my $file;
-	my @prefix;
-	my $i;
-
-	foreach $file (@files) {
-		my ($v, $d, $f) = splitpath($file);
-		my @comp = splitdir($d);
-
-		if (!@prefix) {
-			@prefix = @comp;
-			next;
-		}
-		for ($i = 0; $i < scalar(@comp) && $i < scalar(@prefix); $i++) {
-			if ($comp[$i] ne $prefix[$i] ||
-			    ((scalar(@comp) - ($i + 1)) <= $min_dir)) {
-				delete(@prefix[$i..scalar(@prefix)]);
-				last;
-			}
-		}
-	}
-
-	return catdir(@prefix);
-}
-
-#
-# gen_info(directory)
-#
-# Traverse DIRECTORY and create a .info file for each data file found.
-# The .info file contains TEST_NAME in the following format:
-#
-#   TN:<test name>
-#
-# For each source file name referenced in the data file, there is a section
-# containing source code and coverage data:
-#
-#   SF:<absolute path to the source file>
-#   FN:<line number of function start>,<function name> for each function
-#   DA:<line number>,<execution count> for each instrumented line
-#   LH:<number of lines with an execution count> greater than 0
-#   LF:<number of instrumented lines>
-#
-# Sections are separated by:
-#
-#   end_of_record
-#
-# In addition to the main source code file there are sections for each
-# #included file containing executable code. Note that the absolute path
-# of a source file is generated by interpreting the contents of the respective
-# graph file. Relative filenames are prefixed with the directory in which the
-# graph file is found. Note also that symbolic links to the graph file will be
-# resolved so that the actual file path is used instead of the path to a link.
-# This approach is necessary for the mechanism to work with the /proc/gcov
-# files.
-#
-# Die on error.
-#
-
-sub gen_info($)
-{
-	my $directory = $_[0];
-	my @file_list;
-	my $file;
-	my $prefix;
-	my $type;
-	my $ext;
-
-	if ($initial) {
-		$type = "graph";
-		$ext = $graph_file_extension;
-	} else {
-		$type = "data";
-		$ext = $data_file_extension;
-	}
-
-	if (-d $directory)
-	{
-		info("Scanning $directory for $ext files ...\n");
-
-		@file_list = `find "$directory" $maxdepth $follow -name \\*$ext -type f -o -name \\*$ext -type l 2>/dev/null`;
-		chomp(@file_list);
-		if (!@file_list) {
-			warn("WARNING: no $ext files found in $directory - ".
-			     "skipping!\n");
-			return;
-		}
-		$prefix = get_common_prefix(1, @file_list);
-		info("Found %d %s files in %s\n", $#file_list+1, $type,
-		     $directory);
-	}
-	else
-	{
-		@file_list = ($directory);
-		$prefix = "";
-	}
-
-	# Process all files in list
-	foreach $file (@file_list) {
-		# Process file
-		if ($initial) {
-			process_graphfile($file, $prefix);
-		} else {
-			process_dafile($file, $prefix);
-		}
-	}
-
-	# Report whether files were excluded.
-	if (%excluded_files) {
-		info("Excluded data for %d files due to include/exclude options\n",
-			 scalar keys %excluded_files);
-	}
-}
-
-
-#
-# derive_data(contentdata, funcdata, bbdata)
-#
-# Calculate function coverage data by combining line coverage data and the
-# list of lines belonging to a function.
-#
-# contentdata: [ instr1, count1, source1, instr2, count2, source2, ... ]
-# instr<n>: Instrumentation flag for line n
-# count<n>: Execution count for line n
-# source<n>: Source code for line n
-#
-# funcdata: [ count1, func1, count2, func2, ... ]
-# count<n>: Execution count for function number n
-# func<n>: Function name for function number n
-#
-# bbdata: function_name -> [ line1, line2, ... ]
-# line<n>: Line number belonging to the corresponding function
-#
-
-sub derive_data($$$)
-{
-	my ($contentdata, $funcdata, $bbdata) = @_;
-	my @gcov_content = @{$contentdata};
-	my @gcov_functions = @{$funcdata};
-	my %fn_count;
-	my %ln_fn;
-	my $line;
-	my $maxline;
-	my %fn_name;
-	my $fn;
-	my $count;
-
-	if (!defined($bbdata)) {
-		return @gcov_functions;
-	}
-
-	# First add existing function data
-	while (@gcov_functions) {
-		$count = shift(@gcov_functions);
-		$fn = shift(@gcov_functions);
-
-		$fn_count{$fn} = $count;
-	}
-
-	# Convert line coverage data to function data
-	foreach $fn (keys(%{$bbdata})) {
-		my $line_data = $bbdata->{$fn};
-		my $line;
-		my $fninstr = 0;
-
-		if ($fn eq "") {
-			next;
-		}
-		# Find the lowest line count for this function
-		$count = 0;
-		foreach $line (@$line_data) {
-			my $linstr = $gcov_content[ ( $line - 1 ) * 3 + 0 ];
-			my $lcount = $gcov_content[ ( $line - 1 ) * 3 + 1 ];
-
-			next if (!$linstr);
-			$fninstr = 1;
-			if (($lcount > 0) &&
-			    (($count == 0) || ($lcount < $count))) {
-				$count = $lcount;
-			}
-		}
-		next if (!$fninstr);
-		$fn_count{$fn} = $count;
-	}
-
-
-	# Check if we got data for all functions
-	foreach $fn (keys(%fn_name)) {
-		if ($fn eq "") {
-			next;
-		}
-		if (defined($fn_count{$fn})) {
-			next;
-		}
-		warn("WARNING: no derived data found for function $fn\n");
-	}
-
-	# Convert hash to list in @gcov_functions format
-	foreach $fn (sort(keys(%fn_count))) {
-		push(@gcov_functions, $fn_count{$fn}, $fn);
-	}
-
-	return @gcov_functions;
-}
-
-#
-# get_filenames(directory, pattern)
-#
-# Return a list of filenames found in directory which match the specified
-# pattern.
-#
-# Die on error.
-#
-
-sub get_filenames($$)
-{
-	my ($dirname, $pattern) = @_;
-	my @result;
-	my $directory;
-	local *DIR;
-
-	opendir(DIR, $dirname) or
-		die("ERROR: cannot read directory $dirname\n");
-	while ($directory = readdir(DIR)) {
-		push(@result, $directory) if ($directory =~ /$pattern/);
-	}
-	closedir(DIR);
-
-	return @result;
-}
-
-#
-# process_dafile(da_filename, dir)
-#
-# Create a .info file for a single data file.
-#
-# Die on error.
-#
-
-sub process_dafile($$)
-{
-	my ($file, $dir) = @_;
-	my $da_filename;	# Name of data file to process
-	my $da_dir;		# Directory of data file
-	my $source_dir;		# Directory of source file
-	my $da_basename;	# data filename without ".da/.gcda" extension
-	my $bb_filename;	# Name of respective graph file
-	my $bb_basename;	# Basename of the original graph file
-	my $graph;		# Contents of graph file
-	my $instr;		# Contents of graph file part 2
-	my $gcov_error;		# Error code of gcov tool
-	my $object_dir;		# Directory containing all object files
-	my $source_filename;	# Name of a source code file
-	my $gcov_file;		# Name of a .gcov file
-	my @gcov_content;	# Content of a .gcov file
-	my $gcov_branches;	# Branch content of a .gcov file
-	my @gcov_functions;	# Function calls of a .gcov file
-	my @gcov_list;		# List of generated .gcov files
-	my $line_number;	# Line number count
-	my $lines_hit;		# Number of instrumented lines hit
-	my $lines_found;	# Number of instrumented lines found
-	my $funcs_hit;		# Number of instrumented functions hit
-	my $funcs_found;	# Number of instrumented functions found
-	my $br_hit;
-	my $br_found;
-	my $source;		# gcov source header information
-	my $object;		# gcov object header information
-	my @matches;		# List of absolute paths matching filename
-	my $base_dir;		# Base directory for current file
-	my @tmp_links;		# Temporary links to be cleaned up
-	my @result;
-	my $index;
-	my $da_renamed;		# If data file is to be renamed
-	local *INFO_HANDLE;
-
-	info("Processing %s\n", abs2rel($file, $dir));
-	# Get path to data file in absolute and normalized form (begins with /,
-	# contains no more ../ or ./)
-	$da_filename = solve_relative_path($cwd, $file);
-
-	# Get directory and basename of data file
-	($da_dir, $da_basename) = split_filename($da_filename);
-
-	$source_dir = $da_dir;
-	if (is_compat($COMPAT_MODE_LIBTOOL)) {
-		# Avoid files from .libs dirs 	 
-		$source_dir =~ s/\.libs$//;
-	}
-
-	if (-z $da_filename)
-	{
-		$da_renamed = 1;
-	}
-	else
-	{
-		$da_renamed = 0;
-	}
-
-	# Construct base_dir for current file
-	if ($base_directory)
-	{
-		$base_dir = $base_directory;
-	}
-	else
-	{
-		$base_dir = $source_dir;
-	}
-
-	# Check for writable $base_dir (gcov will try to write files there)
-	stat($base_dir);
-	if (!-w _)
-	{
-		die("ERROR: cannot write to directory $base_dir!\n");
-	}
-
-	# Construct name of graph file
-	$bb_basename = $da_basename.$graph_file_extension;
-	$bb_filename = "$da_dir/$bb_basename";
-
-	# Find out the real location of graph file in case we're just looking at
-	# a link
-	while (readlink($bb_filename))
-	{
-		my $last_dir = dirname($bb_filename);
-
-		$bb_filename = readlink($bb_filename);
-		$bb_filename = solve_relative_path($last_dir, $bb_filename);
-	}
-
-	# Ignore empty graph file (e.g. source file with no statement)
-	if (-z $bb_filename)
-	{
-		warn("WARNING: empty $bb_filename (skipped)\n");
-		return;
-	}
-
-	# Read contents of graph file into hash. We need it later to find out
-	# the absolute path to each .gcov file created as well as for
-	# information about functions and their source code positions.
-	if ($gcov_version < $GCOV_VERSION_3_4_0)
-	{
-		if (is_compat($COMPAT_MODE_HAMMER))
-		{
-			($instr, $graph) = read_bbg($bb_filename);
-		}
-		else
-		{
-			($instr, $graph) = read_bb($bb_filename);
-		}
-	} 
-	else
-	{
-		($instr, $graph) = read_gcno($bb_filename);
-	} 
-
-	# Try to find base directory automatically if requested by user
-	if ($rc_auto_base) {
-		$base_dir = find_base_from_graph($base_dir, $instr, $graph);
-	}
-
-	($instr, $graph) = adjust_graph_filenames($base_dir, $instr, $graph);
-
-	# Set $object_dir to real location of object files. This may differ
-	# from $da_dir if the graph file is just a link to the "real" object
-	# file location.
-	$object_dir = dirname($bb_filename);
-
-	# Is the data file in a different directory? (this happens e.g. with
-	# the gcov-kernel patch)
-	if ($object_dir ne $da_dir)
-	{
-		# Need to create link to data file in $object_dir
-		system("ln", "-s", $da_filename, 
-		       "$object_dir/$da_basename$data_file_extension")
-			and die ("ERROR: cannot create link $object_dir/".
-				 "$da_basename$data_file_extension!\n");
-		push(@tmp_links,
-		     "$object_dir/$da_basename$data_file_extension");
-		# Need to create link to graph file if basename of link
-		# and file are different (CONFIG_MODVERSION compat)
-		if ((basename($bb_filename) ne $bb_basename) &&
-		    (! -e "$object_dir/$bb_basename")) {
-			symlink($bb_filename, "$object_dir/$bb_basename") or
-				warn("WARNING: cannot create link ".
-				     "$object_dir/$bb_basename\n");
-			push(@tmp_links, "$object_dir/$bb_basename");
-		}
-	}
-
-	# Change to directory containing data files and apply GCOV
-	debug("chdir($base_dir)\n");
-        chdir($base_dir);
-
-	if ($da_renamed)
-	{
-		# Need to rename empty data file to workaround
-	        # gcov <= 3.2.x bug (Abort)
-		system_no_output(3, "mv", "$da_filename", "$da_filename.ori")
-			and die ("ERROR: cannot rename $da_filename\n");
-	}
-
-	# Execute gcov command and suppress standard output
-	$gcov_error = system_no_output(1, $gcov_tool, $da_filename,
-				       "-o", $object_dir, @gcov_options);
-
-	if ($da_renamed)
-	{
-		system_no_output(3, "mv", "$da_filename.ori", "$da_filename")
-			and die ("ERROR: cannot rename $da_filename.ori");
-	}
-
-	# Clean up temporary links
-	foreach (@tmp_links) {
-		unlink($_);
-	}
-
-	if ($gcov_error)
-	{
-		if ($ignore[$ERROR_GCOV])
-		{
-			warn("WARNING: GCOV failed for $da_filename!\n");
-			return;
-		}
-		die("ERROR: GCOV failed for $da_filename!\n");
-	}
-
-	# Collect data from resulting .gcov files and create .info file
-	@gcov_list = get_filenames('.', '\.gcov$');
-
-	# Check for files
-	if (!@gcov_list)
-	{
-		warn("WARNING: gcov did not create any files for ".
-		     "$da_filename!\n");
-	}
-
-	# Check whether we're writing to a single file
-	if ($output_filename)
-	{
-		if ($output_filename eq "-")
-		{
-			*INFO_HANDLE = *STDOUT;
-		}
-		else
-		{
-			# Append to output file
-			open(INFO_HANDLE, ">>", $output_filename)
-				or die("ERROR: cannot write to ".
-				       "$output_filename!\n");
-		}
-	}
-	else
-	{
-		# Open .info file for output
-		open(INFO_HANDLE, ">", "$da_filename.info")
-			or die("ERROR: cannot create $da_filename.info!\n");
-	}
-
-	# Write test name
-	printf(INFO_HANDLE "TN:%s\n", $test_name);
-
-	# Traverse the list of generated .gcov files and combine them into a
-	# single .info file
-	foreach $gcov_file (sort(@gcov_list))
-	{
-		my $i;
-		my $num;
-
-		# Skip gcov file for gcc built-in code
-		next if ($gcov_file eq "<built-in>.gcov");
-
-		($source, $object) = read_gcov_header($gcov_file);
-
-		if (!defined($source)) {
-			# Derive source file name from gcov file name if
-			# header format could not be parsed
-			$source = $gcov_file;
-			$source =~ s/\.gcov$//;
-		}
-
-		$source = solve_relative_path($base_dir, $source);
-
-		if (defined($adjust_src_pattern)) {
-			# Apply transformation as specified by user
-			$source =~ s/$adjust_src_pattern/$adjust_src_replace/g;
-		}
-
-		# gcov will happily create output even if there's no source code
-		# available - this interferes with checksum creation so we need
-		# to pull the emergency brake here.
-		if (! -r $source && $checksum)
-		{
-			if ($ignore[$ERROR_SOURCE])
-			{
-				warn("WARNING: could not read source file ".
-				     "$source\n");
-				next;
-			}
-			die("ERROR: could not read source file $source\n");
-		}
-
-		@matches = match_filename($source, keys(%{$instr}));
-
-		# Skip files that are not mentioned in the graph file
-		if (!@matches)
-		{
-			warn("WARNING: cannot find an entry for ".$gcov_file.
-			     " in $graph_file_extension file, skipping ".
-			     "file!\n");
-			unlink($gcov_file);
-			next;
-		}
-
-		# Read in contents of gcov file
-		@result = read_gcov_file($gcov_file);
-		if (!defined($result[0])) {
-			warn("WARNING: skipping unreadable file ".
-			     $gcov_file."\n");
-			unlink($gcov_file);
-			next;
-		}
-		@gcov_content = @{$result[0]};
-		$gcov_branches = $result[1];
-		@gcov_functions = @{$result[2]};
-
-		# Skip empty files
-		if (!@gcov_content)
-		{
-			warn("WARNING: skipping empty file ".$gcov_file."\n");
-			unlink($gcov_file);
-			next;
-		}
-
-		if (scalar(@matches) == 1)
-		{
-			# Just one match
-			$source_filename = $matches[0];
-		}
-		else
-		{
-			# Try to solve the ambiguity
-			$source_filename = solve_ambiguous_match($gcov_file,
-						\@matches, \@gcov_content);
-		}
-
-		if (@include_patterns)
-		{
-			my $keep = 0;
-
-			foreach my $pattern (@include_patterns)
-			{
-				$keep ||= ($source_filename =~ (/^$pattern$/));
-			}
-
-			if (!$keep)
-			{
-				$excluded_files{$source_filename} = ();
-				unlink($gcov_file);
-				next;
-			}
-		}
-
-		if (@exclude_patterns)
-		{
-			my $exclude = 0;
-
-			foreach my $pattern (@exclude_patterns)
-			{
-				$exclude ||= ($source_filename =~ (/^$pattern$/));
-			}
-
-			if ($exclude)
-			{
-				$excluded_files{$source_filename} = ();
-				unlink($gcov_file);
-				next;
-			}
-		}
-
-		# Skip external files if requested
-		if (!$opt_external) {
-			if (is_external($source_filename)) {
-				info("  ignoring data for external file ".
-				     "$source_filename\n");
-				unlink($gcov_file);
-				next;
-			}
-		}
-
-		# Write absolute path of source file
-		printf(INFO_HANDLE "SF:%s\n", $source_filename);
-
-		# If requested, derive function coverage data from
-		# line coverage data of the first line of a function
-		if ($opt_derive_func_data) {
-			@gcov_functions =
-				derive_data(\@gcov_content, \@gcov_functions,
-					    $graph->{$source_filename});
-		}
-
-		# Write function-related information
-		if (defined($graph->{$source_filename}))
-		{
-			my $fn_data = $graph->{$source_filename};
-			my $fn;
-
-			foreach $fn (sort
-				{$fn_data->{$a}->[0] <=> $fn_data->{$b}->[0]}
-				keys(%{$fn_data})) {
-				my $ln_data = $fn_data->{$fn};
-				my $line = $ln_data->[0];
-
-				# Skip empty function
-				if ($fn eq "") {
-					next;
-				}
-				# Remove excluded functions
-				if (!$no_markers) {
-					my $gfn;
-					my $found = 0;
-
-					foreach $gfn (@gcov_functions) {
-						if ($gfn eq $fn) {
-							$found = 1;
-							last;
-						}
-					}
-					if (!$found) {
-						next;
-					}
-				}
-
-				# Normalize function name
-				$fn = filter_fn_name($fn);
-
-				print(INFO_HANDLE "FN:$line,$fn\n");
-			}
-		}
-
-		#--
-		#-- FNDA: <call-count>, <function-name>
-		#-- FNF: overall count of functions
-		#-- FNH: overall count of functions with non-zero call count
-		#--
-		$funcs_found = 0;
-		$funcs_hit = 0;
-		while (@gcov_functions)
-		{
-			my $count = shift(@gcov_functions);
-			my $fn = shift(@gcov_functions);
-
-			$fn = filter_fn_name($fn);
-			printf(INFO_HANDLE "FNDA:$count,$fn\n");
-			$funcs_found++;
-			$funcs_hit++ if ($count > 0);
-		}
-		if ($funcs_found > 0) {
-			printf(INFO_HANDLE "FNF:%s\n", $funcs_found);
-			printf(INFO_HANDLE "FNH:%s\n", $funcs_hit);
-		}
-
-		# Write coverage information for each instrumented branch:
-		#
-		#   BRDA:<line number>,<block number>,<branch number>,<taken>
-		#
-		# where 'taken' is the number of times the branch was taken
-		# or '-' if the block to which the branch belongs was never
-		# executed
-		$br_found = 0;
-		$br_hit = 0;
-		$num = br_gvec_len($gcov_branches);
-		for ($i = 0; $i < $num; $i++) {
-			my ($line, $block, $branch, $taken) =
-				br_gvec_get($gcov_branches, $i);
-
-			$block = $BR_VEC_MAX if ($block < 0);
-			print(INFO_HANDLE "BRDA:$line,$block,$branch,$taken\n");
-			$br_found++;
-			$br_hit++ if ($taken ne '-' && $taken > 0);
-		}
-		if ($br_found > 0) {
-			printf(INFO_HANDLE "BRF:%s\n", $br_found);
-			printf(INFO_HANDLE "BRH:%s\n", $br_hit);
-		}
-
-		# Reset line counters
-		$line_number = 0;
-		$lines_found = 0;
-		$lines_hit = 0;
-
-		# Write coverage information for each instrumented line
-		# Note: @gcov_content contains a list of (flag, count, source)
-		# tuple for each source code line
-		while (@gcov_content)
-		{
-			$line_number++;
-
-			# Check for instrumented line
-			if ($gcov_content[0])
-			{
-				$lines_found++;
-				printf(INFO_HANDLE "DA:".$line_number.",".
-				       $gcov_content[1].($checksum ?
-				       ",". md5_base64($gcov_content[2]) : "").
-				       "\n");
-
-				# Increase $lines_hit in case of an execution
-				# count>0
-				if ($gcov_content[1] > 0) { $lines_hit++; }
-			}
-
-			# Remove already processed data from array
-			splice(@gcov_content,0,3);
-		}
-
-		# Write line statistics and section separator
-		printf(INFO_HANDLE "LF:%s\n", $lines_found);
-		printf(INFO_HANDLE "LH:%s\n", $lines_hit);
-		print(INFO_HANDLE "end_of_record\n");
-
-		# Remove .gcov file after processing
-		unlink($gcov_file);
-	}
-
-	if (!($output_filename && ($output_filename eq "-")))
-	{
-		close(INFO_HANDLE);
-	}
-
-	# Change back to initial directory
-	chdir($cwd);
-}
-
-
-#
-# solve_relative_path(path, dir)
-#
-# Solve relative path components of DIR which, if not absolute, resides in PATH.
-#
-
-sub solve_relative_path($$)
-{
-	my $path = $_[0];
-	my $dir = $_[1];
-	my $volume;
-	my $directories;
-	my $filename;
-	my @dirs;			# holds path elements
-	my $result;
-
-	# Convert from Windows path to msys path
-	if( $^O eq "msys" )
-	{
-		# search for a windows drive letter at the beginning
-		($volume, $directories, $filename) = File::Spec::Win32->splitpath( $dir );
-		if( $volume ne '' )
-		{
-			my $uppercase_volume;
-			# transform c/d\../e/f\g to Windows style c\d\..\e\f\g
-			$dir = File::Spec::Win32->canonpath( $dir );
-			# use Win32 module to retrieve path components
-			# $uppercase_volume is not used any further
-			( $uppercase_volume, $directories, $filename ) = File::Spec::Win32->splitpath( $dir );
-			@dirs = File::Spec::Win32->splitdir( $directories );
-			
-			# prepend volume, since in msys C: is always mounted to /c
-			$volume =~ s|^([a-zA-Z]+):|/\L$1\E|;
-			unshift( @dirs, $volume );
-			
-			# transform to Unix style '/' path
-			$directories = File::Spec->catdir( @dirs );
-			$dir = File::Spec->catpath( '', $directories, $filename );
-		} else {
-			# eliminate '\' path separators
-			$dir = File::Spec->canonpath( $dir );
-		}
-	}
-
-	$result = $dir;
-	# Prepend path if not absolute
-	if ($dir =~ /^[^\/]/)
-	{
-		$result = "$path/$result";
-	}
-
-	# Remove //
-	$result =~ s/\/\//\//g;
-
-	# Remove .
-	while ($result =~ s/\/\.\//\//g)
-	{
-	}
-	$result =~ s/\/\.$/\//g;
-
-	# Remove trailing /
-	$result =~ s/\/$//g;
-
-	# Solve ..
-	while ($result =~ s/\/[^\/]+\/\.\.\//\//)
-	{
-	}
-
-	# Remove preceding ..
-	$result =~ s/^\/\.\.\//\//g;
-
-	return $result;
-}
-
-
-#
-# match_filename(gcov_filename, list)
-#
-# Return a list of those entries of LIST which match the relative filename
-# GCOV_FILENAME.
-#
-
-sub match_filename($@)
-{
-	my ($filename, @list) = @_;
-	my ($vol, $dir, $file) = splitpath($filename);
-	my @comp = splitdir($dir);
-	my $comps = scalar(@comp);
-	my $entry;
-	my @result;
-
-entry:
-	foreach $entry (@list) {
-		my ($evol, $edir, $efile) = splitpath($entry);
-		my @ecomp;
-		my $ecomps;
-		my $i;
-
-		# Filename component must match
-		if ($efile ne $file) {
-			next;
-		}
-		# Check directory components last to first for match
-		@ecomp = splitdir($edir);
-		$ecomps = scalar(@ecomp);
-		if ($ecomps < $comps) {
-			next;
-		}
-		for ($i = 0; $i < $comps; $i++) {
-			if ($comp[$comps - $i - 1] ne
-			    $ecomp[$ecomps - $i - 1]) {
-				next entry;
-			}
-		}
-		push(@result, $entry),
-	}
-
-	return @result;
-}
-
-#
-# solve_ambiguous_match(rel_filename, matches_ref, gcov_content_ref)
-#
-# Try to solve ambiguous matches of mapping (gcov file) -> (source code) file
-# by comparing source code provided in the GCOV file with that of the files
-# in MATCHES. REL_FILENAME identifies the relative filename of the gcov
-# file.
-# 
-# Return the one real match or die if there is none.
-#
-
-sub solve_ambiguous_match($$$)
-{
-	my $rel_name = $_[0];
-	my $matches = $_[1];
-	my $content = $_[2];
-	my $filename;
-	my $index;
-	my $no_match;
-	local *SOURCE;
-
-	# Check the list of matches
-	foreach $filename (@$matches)
-	{
-
-		# Compare file contents
-		open(SOURCE, "<", $filename)
-			or die("ERROR: cannot read $filename!\n");
-
-		$no_match = 0;
-		for ($index = 2; <SOURCE>; $index += 3)
-		{
-			chomp;
-
-			# Also remove CR from line-end
-			s/\015$//;
-
-			if ($_ ne @$content[$index])
-			{
-				$no_match = 1;
-				last;
-			}
-		}
-
-		close(SOURCE);
-
-		if (!$no_match)
-		{
-			info("Solved source file ambiguity for $rel_name\n");
-			return $filename;
-		}
-	}
-
-	die("ERROR: could not match gcov data for $rel_name!\n");
-}
-
-
-#
-# split_filename(filename)
-#
-# Return (path, filename, extension) for a given FILENAME.
-#
-
-sub split_filename($)
-{
-	my @path_components = split('/', $_[0]);
-	my @file_components = split('\.', pop(@path_components));
-	my $extension = pop(@file_components);
-
-	return (join("/",@path_components), join(".",@file_components),
-		$extension);
-}
-
-
-#
-# read_gcov_header(gcov_filename)
-#
-# Parse file GCOV_FILENAME and return a list containing the following
-# information:
-#
-#   (source, object)
-#
-# where:
-#
-# source: complete relative path of the source code file (gcc >= 3.3 only)
-# object: name of associated graph file
-#
-# Die on error.
-#
-
-sub read_gcov_header($)
-{
-	my $source;
-	my $object;
-	local *INPUT;
-
-	if (!open(INPUT, "<", $_[0]))
-	{
-		if ($ignore_errors[$ERROR_GCOV])
-		{
-			warn("WARNING: cannot read $_[0]!\n");
-			return (undef,undef);
-		}
-		die("ERROR: cannot read $_[0]!\n");
-	}
-
-	while (<INPUT>)
-	{
-		chomp($_);
-
-		# Also remove CR from line-end
-		s/\015$//;
-
-		if (/^\s+-:\s+0:Source:(.*)$/)
-		{
-			# Source: header entry
-			$source = $1;
-		}
-		elsif (/^\s+-:\s+0:Object:(.*)$/)
-		{
-			# Object: header entry
-			$object = $1;
-		}
-		else
-		{
-			last;
-		}
-	}
-
-	close(INPUT);
-
-	return ($source, $object);
-}
-
-
-#
-# br_gvec_len(vector)
-#
-# Return the number of entries in the branch coverage vector.
-#
-
-sub br_gvec_len($)
-{
-	my ($vec) = @_;
-
-	return 0 if (!defined($vec));
-	return (length($vec) * 8 / $BR_VEC_WIDTH) / $BR_VEC_ENTRIES;
-}
-
-
-#
-# br_gvec_get(vector, number)
-#
-# Return an entry from the branch coverage vector.
-#
-
-sub br_gvec_get($$)
-{
-	my ($vec, $num) = @_;
-	my $line;
-	my $block;
-	my $branch;
-	my $taken;
-	my $offset = $num * $BR_VEC_ENTRIES;
-
-	# Retrieve data from vector
-	$line	= vec($vec, $offset + $BR_LINE, $BR_VEC_WIDTH);
-	$block	= vec($vec, $offset + $BR_BLOCK, $BR_VEC_WIDTH);
-	$block = -1 if ($block == $BR_VEC_MAX);
-	$branch = vec($vec, $offset + $BR_BRANCH, $BR_VEC_WIDTH);
-	$taken	= vec($vec, $offset + $BR_TAKEN, $BR_VEC_WIDTH);
-
-	# Decode taken value from an integer
-	if ($taken == 0) {
-		$taken = "-";
-	} else {
-		$taken--;
-	}
-
-	return ($line, $block, $branch, $taken);
-}
-
-
-#
-# br_gvec_push(vector, line, block, branch, taken)
-#
-# Add an entry to the branch coverage vector.
-#
-
-sub br_gvec_push($$$$$)
-{
-	my ($vec, $line, $block, $branch, $taken) = @_;
-	my $offset;
-
-	$vec = "" if (!defined($vec));
-	$offset = br_gvec_len($vec) * $BR_VEC_ENTRIES;
-	$block = $BR_VEC_MAX if $block < 0;
-
-	# Encode taken value into an integer
-	if ($taken eq "-") {
-		$taken = 0;
-	} else {
-		$taken++;
-	}
-
-	# Add to vector
-	vec($vec, $offset + $BR_LINE, $BR_VEC_WIDTH) = $line;
-	vec($vec, $offset + $BR_BLOCK, $BR_VEC_WIDTH) = $block;
-	vec($vec, $offset + $BR_BRANCH, $BR_VEC_WIDTH) = $branch;
-	vec($vec, $offset + $BR_TAKEN, $BR_VEC_WIDTH) = $taken;
-
-	return $vec;
-}
-
-
-#
-# read_gcov_file(gcov_filename)
-#
-# Parse file GCOV_FILENAME (.gcov file format) and return the list:
-# (reference to gcov_content, reference to gcov_branch, reference to gcov_func)
-#
-# gcov_content is a list of 3 elements
-# (flag, count, source) for each source code line:
-#
-# $result[($line_number-1)*3+0] = instrumentation flag for line $line_number
-# $result[($line_number-1)*3+1] = execution count for line $line_number
-# $result[($line_number-1)*3+2] = source code text for line $line_number
-#
-# gcov_branch is a vector of 4 4-byte long elements for each branch:
-# line number, block number, branch number, count + 1 or 0
-#
-# gcov_func is a list of 2 elements
-# (number of calls, function name) for each function
-#
-# Die on error.
-#
-
-sub read_gcov_file($)
-{
-	my $filename = $_[0];
-	my @result = ();
-	my $branches = "";
-	my @functions = ();
-	my $number;
-	my $exclude_flag = 0;
-	my $exclude_line = 0;
-	my $exclude_br_flag = 0;
-	my $exclude_branch = 0;
-	my $last_block = $UNNAMED_BLOCK;
-	my $last_line = 0;
-	local *INPUT;
-
-	if (!open(INPUT, "<", $filename)) {
-		if ($ignore_errors[$ERROR_GCOV])
-		{
-			warn("WARNING: cannot read $filename!\n");
-			return (undef, undef, undef);
-		}
-		die("ERROR: cannot read $filename!\n");
-	}
-
-	if ($gcov_version < $GCOV_VERSION_3_3_0)
-	{
-		# Expect gcov format as used in gcc < 3.3
-		while (<INPUT>)
-		{
-			chomp($_);
-
-			# Also remove CR from line-end
-			s/\015$//;
-
-			if (/^branch\s+(\d+)\s+taken\s+=\s+(\d+)/) {
-				next if (!$br_coverage);
-				next if ($exclude_line);
-				next if ($exclude_branch);
-				$branches = br_gvec_push($branches, $last_line,
-						$last_block, $1, $2);
-			} elsif (/^branch\s+(\d+)\s+never\s+executed/) {
-				next if (!$br_coverage);
-				next if ($exclude_line);
-				next if ($exclude_branch);
-				$branches = br_gvec_push($branches, $last_line,
-						$last_block, $1, '-');
-			}
-			elsif (/^call/ || /^function/)
-			{
-				# Function call return data
-			}
-			else
-			{
-				$last_line++;
-				# Check for exclusion markers
-				if (!$no_markers) {
-					if (/$EXCL_STOP/) {
-						$exclude_flag = 0;
-					} elsif (/$EXCL_START/) {
-						$exclude_flag = 1;
-					}
-					if (/$excl_line/ || $exclude_flag) {
-						$exclude_line = 1;
-					} else {
-						$exclude_line = 0;
-					}
-				}
-				# Check for exclusion markers (branch exclude)
-				if (!$no_markers) {
-					if (/$EXCL_BR_STOP/) {
-						$exclude_br_flag = 0;
-					} elsif (/$EXCL_BR_START/) {
-						$exclude_br_flag = 1;
-					}
-					if (/$excl_br_line/ || $exclude_br_flag) {
-						$exclude_branch = 1;
-					} else {
-						$exclude_branch = 0;
-					}
-				}
-				# Source code execution data
-				if (/^\t\t(.*)$/)
-				{
-					# Uninstrumented line
-					push(@result, 0);
-					push(@result, 0);
-					push(@result, $1);
-					next;
-				}
-				$number = (split(" ",substr($_, 0, 16)))[0];
-
-				# Check for zero count which is indicated
-				# by ######
-				if ($number eq "######") { $number = 0;	}
-
-				if ($exclude_line) {
-					# Register uninstrumented line instead
-					push(@result, 0);
-					push(@result, 0);
-				} else {
-					push(@result, 1);
-					push(@result, $number);
-				}
-				push(@result, substr($_, 16));
-			}
-		}
-	}
-	else
-	{
-		# Expect gcov format as used in gcc >= 3.3
-		while (<INPUT>)
-		{
-			chomp($_);
-
-			# Also remove CR from line-end
-			s/\015$//;
-
-			if (/^\s*(\d+|\$+|\%+):\s*(\d+)-block\s+(\d+)\s*$/) {
-				# Block information - used to group related
-				# branches
-				$last_line = $2;
-				$last_block = $3;
-			} elsif (/^branch\s+(\d+)\s+taken\s+(\d+)/) {
-				next if (!$br_coverage);
-				next if ($exclude_line);
-				next if ($exclude_branch);
-				$branches = br_gvec_push($branches, $last_line,
-						$last_block, $1, $2);
-			} elsif (/^branch\s+(\d+)\s+never\s+executed/) {
-				next if (!$br_coverage);
-				next if ($exclude_line);
-				next if ($exclude_branch);
-				$branches = br_gvec_push($branches, $last_line,
-						$last_block, $1, '-');
-			}
-			elsif (/^function\s+(.+)\s+called\s+(\d+)\s+/)
-			{
-				next if (!$func_coverage);
-				if ($exclude_line) {
-					next;
-				}
-				push(@functions, $2, $1);
-			}
-			elsif (/^call/)
-			{
-				# Function call return data
-			}
-			elsif (/^\s*([^:]+):\s*([^:]+):(.*)$/)
-			{
-				my ($count, $line, $code) = ($1, $2, $3);
-
-				# Skip instance-specific counts
-				next if ($line <= (scalar(@result) / 3));
-
-				$last_line = $line;
-				$last_block = $UNNAMED_BLOCK;
-				# Check for exclusion markers
-				if (!$no_markers) {
-					if (/$EXCL_STOP/) {
-						$exclude_flag = 0;
-					} elsif (/$EXCL_START/) {
-						$exclude_flag = 1;
-					}
-					if (/$excl_line/ || $exclude_flag) {
-						$exclude_line = 1;
-					} else {
-						$exclude_line = 0;
-					}
-				}
-				# Check for exclusion markers (branch exclude)
-				if (!$no_markers) {
-					if (/$EXCL_BR_STOP/) {
-						$exclude_br_flag = 0;
-					} elsif (/$EXCL_BR_START/) {
-						$exclude_br_flag = 1;
-					}
-					if (/$excl_br_line/ || $exclude_br_flag) {
-						$exclude_branch = 1;
-					} else {
-						$exclude_branch = 0;
-					}
-				}
-
-				# Strip unexecuted basic block marker
-				$count =~ s/\*$//;
-
-				# <exec count>:<line number>:<source code>
-				if ($line eq "0")
-				{
-					# Extra data
-				}
-				elsif ($count eq "-")
-				{
-					# Uninstrumented line
-					push(@result, 0);
-					push(@result, 0);
-					push(@result, $code);
-				}
-				else
-				{
-					if ($exclude_line) {
-						push(@result, 0);
-						push(@result, 0);
-					} else {
-						# Check for zero count
-						if ($count =~ /^[#=]/) {
-							$count = 0;
-						}
-						push(@result, 1);
-						push(@result, $count);
-					}
-					push(@result, $code);
-				}
-			}
-		}
-	}
-
-	close(INPUT);
-	if ($exclude_flag || $exclude_br_flag) {
-		warn("WARNING: unterminated exclusion section in $filename\n");
-	}
-	return(\@result, $branches, \@functions);
-}
-
-
-# Map LLVM versions to the version of GCC gcov which they emulate.
-
-sub map_llvm_version($)
-{
-	my ($ver) = @_;
-
-	return 0x040200 if ($ver >= 0x030400);
-
-	warn("WARNING: This version of LLVM's gcov is unknown.  ".
-	     "Assuming it emulates GCC gcov version 4.2.\n");
-
-	return 0x040200;
-}
-
-
-# Return a readable version of encoded gcov version.
-
-sub version_to_str($)
-{
-	my ($ver) = @_;
-	my ($a, $b, $c);
-
-	$a = $ver >> 16 & 0xff;
-	$b = $ver >> 8 & 0xff;
-	$c = $ver & 0xff;
-
-	return "$a.$b.$c";
-}
-
-
-#
-# Get the GCOV tool version. Return an integer number which represents the
-# GCOV version. Version numbers can be compared using standard integer
-# operations.
-#
-
-sub get_gcov_version()
-{
-	local *HANDLE;
-	my $version_string;
-	my $result;
-	my ($a, $b, $c) = (4, 2, 0);	# Fallback version
-
-	# Examples for gcov version output:
-	#
-	# gcov (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
-	#
-	# gcov (crosstool-NG 1.18.0) 4.7.2
-	#
-	# LLVM (http://llvm.org/):
-	#   LLVM version 3.4svn
-	#
-	# Apple LLVM version 8.0.0 (clang-800.0.38)
-	#       Optimized build.
-	#       Default target: x86_64-apple-darwin16.0.0
-	#       Host CPU: haswell
-
-	open(GCOV_PIPE, "-|", "$gcov_tool --version")
-		or die("ERROR: cannot retrieve gcov version!\n");
-	local $/;
-	$version_string = <GCOV_PIPE>;
-	close(GCOV_PIPE);
-
-	# Remove all bracketed information
-	$version_string =~ s/\([^\)]*\)//g;
-
-	if ($version_string =~ /(\d+)\.(\d+)(\.(\d+))?/) {
-		($a, $b, $c) = ($1, $2, $4);
-		$c = 0 if (!defined($c));
-	} else {
-		warn("WARNING: cannot determine gcov version - ".
-		     "assuming $a.$b.$c\n");
-	}
-	$result = $a << 16 | $b << 8 | $c;
-
-	if ($version_string =~ /LLVM/) {
-		$result = map_llvm_version($result);
-		info("Found LLVM gcov version $a.$b.$c, which emulates gcov ".
-		     "version ".version_to_str($result)."\n");
-	} else {
-		info("Found gcov version: ".version_to_str($result)."\n");
-	}
-
-	return ($result, $version_string);
-}
-
-
-#
-# info(printf_parameter)
-#
-# Use printf to write PRINTF_PARAMETER to stdout only when the $quiet flag
-# is not set.
-#
-
-sub info(@)
-{
-	if (!$quiet)
-	{
-		# Print info string
-		if (defined($output_filename) && ($output_filename eq "-"))
-		{
-			# Don't interfere with the .info output to STDOUT
-			printf(STDERR @_);
-		}
-		else
-		{
-			printf(@_);
-		}
-	}
-}
-
-
-#
-# int_handler()
-#
-# Called when the script was interrupted by an INT signal (e.g. CTRl-C)
-#
-
-sub int_handler()
-{
-	if ($cwd) { chdir($cwd); }
-	info("Aborted.\n");
-	exit(1);
-}
-
-
-#
-# system_no_output(mode, parameters)
-#
-# Call an external program using PARAMETERS while suppressing depending on
-# the value of MODE:
-#
-#   MODE & 1: suppress STDOUT
-#   MODE & 2: suppress STDERR
-#
-# Return 0 on success, non-zero otherwise.
-#
-
-sub system_no_output($@)
-{
-	my $mode = shift;
-	my $result;
-	local *OLD_STDERR;
-	local *OLD_STDOUT;
-
-	# Save old stdout and stderr handles
-	($mode & 1) && open(OLD_STDOUT, ">>&", "STDOUT");
-	($mode & 2) && open(OLD_STDERR, ">>&", "STDERR");
-
-	# Redirect to /dev/null
-	($mode & 1) && open(STDOUT, ">", "/dev/null");
-	($mode & 2) && open(STDERR, ">", "/dev/null");
- 
-	debug("system(".join(' ', @_).")\n");
-	system(@_);
-	$result = $?;
-
-	# Close redirected handles
-	($mode & 1) && close(STDOUT);
-	($mode & 2) && close(STDERR);
-
-	# Restore old handles
-	($mode & 1) && open(STDOUT, ">>&", "OLD_STDOUT");
-	($mode & 2) && open(STDERR, ">>&", "OLD_STDERR");
- 
-	return $result;
-}
-
-
-#
-# read_config(filename)
-#
-# Read configuration file FILENAME and return a reference to a hash containing
-# all valid key=value pairs found.
-#
-
-sub read_config($)
-{
-	my $filename = $_[0];
-	my %result;
-	my $key;
-	my $value;
-	local *HANDLE;
-
-	if (!open(HANDLE, "<", $filename))
-	{
-		warn("WARNING: cannot read configuration file $filename\n");
-		return undef;
-	}
-	while (<HANDLE>)
-	{
-		chomp;
-		# Skip comments
-		s/#.*//;
-		# Remove leading blanks
-		s/^\s+//;
-		# Remove trailing blanks
-		s/\s+$//;
-		next unless length;
-		($key, $value) = split(/\s*=\s*/, $_, 2);
-		if (defined($key) && defined($value))
-		{
-			$result{$key} = $value;
-		}
-		else
-		{
-			warn("WARNING: malformed statement in line $. ".
-			     "of configuration file $filename\n");
-		}
-	}
-	close(HANDLE);
-	return \%result;
-}
-
-
-#
-# apply_config(REF)
-#
-# REF is a reference to a hash containing the following mapping:
-#
-#   key_string => var_ref
-#
-# where KEY_STRING is a keyword and VAR_REF is a reference to an associated
-# variable. If the global configuration hashes CONFIG or OPT_RC contain a value
-# for keyword KEY_STRING, VAR_REF will be assigned the value for that keyword. 
-#
-
-sub apply_config($)
-{
-	my $ref = $_[0];
-
-	foreach (keys(%{$ref}))
-	{
-		if (defined($opt_rc{$_})) {
-			${$ref->{$_}} = $opt_rc{$_};
-		} elsif (defined($config->{$_})) {
-			${$ref->{$_}} = $config->{$_};
-		}
-	}
-}
-
-
-#
-# get_exclusion_data(filename)
-#
-# Scan specified source code file for exclusion markers and return
-#   linenumber -> 1
-# for all lines which should be excluded.
-#
-
-sub get_exclusion_data($)
-{
-	my ($filename) = @_;
-	my %list;
-	my $flag = 0;
-	local *HANDLE;
-
-	if (!open(HANDLE, "<", $filename)) {
-		warn("WARNING: could not open $filename\n");
-		return undef;
-	}
-	while (<HANDLE>) {
-		if (/$EXCL_STOP/) {
-			$flag = 0;
-		} elsif (/$EXCL_START/) {
-			$flag = 1;
-		}
-		if (/$excl_line/ || $flag) {
-			$list{$.} = 1;
-		}
-	}
-	close(HANDLE);
-
-	if ($flag) {
-		warn("WARNING: unterminated exclusion section in $filename\n");
-	}
-
-	return \%list;
-}
-
-
-#
-# apply_exclusion_data(instr, graph)
-#
-# Remove lines from instr and graph data structures which are marked
-# for exclusion in the source code file.
-#
-# Return adjusted (instr, graph).
-#
-# graph         : file name -> function data
-# function data : function name -> line data
-# line data     : [ line1, line2, ... ]
-#
-# instr     : filename -> line data
-# line data : [ line1, line2, ... ]
-#
-
-sub apply_exclusion_data($$)
-{
-	my ($instr, $graph) = @_;
-	my $filename;
-	my %excl_data;
-	my $excl_read_failed = 0;
-
-	# Collect exclusion marker data
-	foreach $filename (sort_uniq_lex(keys(%{$graph}), keys(%{$instr}))) {
-		my $excl = get_exclusion_data($filename);
-
-		# Skip and note if file could not be read
-		if (!defined($excl)) {
-			$excl_read_failed = 1;
-			next;
-		}
-
-		# Add to collection if there are markers
-		$excl_data{$filename} = $excl if (keys(%{$excl}) > 0);
-	}
-
-	# Warn if not all source files could be read
-	if ($excl_read_failed) {
-		warn("WARNING: some exclusion markers may be ignored\n");
-	}
-
-	# Skip if no markers were found
-	return ($instr, $graph) if (keys(%excl_data) == 0);
-
-	# Apply exclusion marker data to graph
-	foreach $filename (keys(%excl_data)) {
-		my $function_data = $graph->{$filename};
-		my $excl = $excl_data{$filename};
-		my $function;
-
-		next if (!defined($function_data));
-
-		foreach $function (keys(%{$function_data})) {
-			my $line_data = $function_data->{$function};
-			my $line;
-			my @new_data;
-
-			# To be consistent with exclusion parser in non-initial
-			# case we need to remove a function if the first line
-			# was excluded
-			if ($excl->{$line_data->[0]}) {
-				delete($function_data->{$function});
-				next;
-			}
-			# Copy only lines which are not excluded
-			foreach $line (@{$line_data}) {
-				push(@new_data, $line) if (!$excl->{$line});
-			}
-
-			# Store modified list
-			if (scalar(@new_data) > 0) {
-				$function_data->{$function} = \@new_data;
-			} else {
-				# All of this function was excluded
-				delete($function_data->{$function});
-			}
-		}
-
-		# Check if all functions of this file were excluded
-		if (keys(%{$function_data}) == 0) {
-			delete($graph->{$filename});
-		}
-	}
-
-	# Apply exclusion marker data to instr
-	foreach $filename (keys(%excl_data)) {
-		my $line_data = $instr->{$filename};
-		my $excl = $excl_data{$filename};
-		my $line;
-		my @new_data;
-
-		next if (!defined($line_data));
-
-		# Copy only lines which are not excluded
-		foreach $line (@{$line_data}) {
-			push(@new_data, $line) if (!$excl->{$line});
-		}
-
-		# Store modified list
-		$instr->{$filename} = \@new_data;
-	}
-
-	return ($instr, $graph);
-}
-
-
-sub process_graphfile($$)
-{
-	my ($file, $dir) = @_;
-	my $graph_filename = $file;
-	my $graph_dir;
-	my $graph_basename;
-	my $source_dir;
-	my $base_dir;
-	my $graph;
-	my $instr;
-	my $filename;
-	local *INFO_HANDLE;
-
-	info("Processing %s\n", abs2rel($file, $dir));
-
-	# Get path to data file in absolute and normalized form (begins with /,
-	# contains no more ../ or ./)
-	$graph_filename = solve_relative_path($cwd, $graph_filename);
-
-	# Get directory and basename of data file
-	($graph_dir, $graph_basename) = split_filename($graph_filename);
-
-	$source_dir = $graph_dir;
-	if (is_compat($COMPAT_MODE_LIBTOOL)) {
-		# Avoid files from .libs dirs 	 
-		$source_dir =~ s/\.libs$//;
-	}
-
-	# Construct base_dir for current file
-	if ($base_directory)
-	{
-		$base_dir = $base_directory;
-	}
-	else
-	{
-		$base_dir = $source_dir;
-	}
-
-	# Ignore empty graph file (e.g. source file with no statement)
-	if (-z $graph_filename)
-	{
-		warn("WARNING: empty $graph_filename (skipped)\n");
-		return;
-	}
-
-	if ($gcov_version < $GCOV_VERSION_3_4_0)
-	{
-		if (is_compat($COMPAT_MODE_HAMMER))
-		{
-			($instr, $graph) = read_bbg($graph_filename);
-		}
-		else
-		{
-			($instr, $graph) = read_bb($graph_filename);
-		}
-	} 
-	else
-	{
-		($instr, $graph) = read_gcno($graph_filename);
-	}
-
-	# Try to find base directory automatically if requested by user
-	if ($rc_auto_base) {
-		$base_dir = find_base_from_graph($base_dir, $instr, $graph);
-	}
-
-	($instr, $graph) = adjust_graph_filenames($base_dir, $instr, $graph);
-
-	if (!$no_markers) {
-		# Apply exclusion marker data to graph file data
-		($instr, $graph) = apply_exclusion_data($instr, $graph);
-	}
-
-	# Check whether we're writing to a single file
-	if ($output_filename)
-	{
-		if ($output_filename eq "-")
-		{
-			*INFO_HANDLE = *STDOUT;
-		}
-		else
-		{
-			# Append to output file
-			open(INFO_HANDLE, ">>", $output_filename)
-				or die("ERROR: cannot write to ".
-				       "$output_filename!\n");
-		}
-	}
-	else
-	{
-		# Open .info file for output
-		open(INFO_HANDLE, ">", "$graph_filename.info")
-			or die("ERROR: cannot create $graph_filename.info!\n");
-	}
-
-	# Write test name
-	printf(INFO_HANDLE "TN:%s\n", $test_name);
-	foreach $filename (sort(keys(%{$instr})))
-	{
-		my $funcdata = $graph->{$filename};
-		my $line;
-		my $linedata;
-
-		# Skip external files if requested
-		if (!$opt_external) {
-			if (is_external($filename)) {
-				info("  ignoring data for external file ".
-				     "$filename\n");
-				next;
-			}
-		}
-
-		print(INFO_HANDLE "SF:$filename\n");
-
-		if (defined($funcdata) && $func_coverage) {
-			my @functions = sort {$funcdata->{$a}->[0] <=>
-					      $funcdata->{$b}->[0]}
-					     keys(%{$funcdata});
-			my $func;
-
-			# Gather list of instrumented lines and functions
-			foreach $func (@functions) {
-				$linedata = $funcdata->{$func};
-
-				# Print function name and starting line
-				print(INFO_HANDLE "FN:".$linedata->[0].
-				      ",".filter_fn_name($func)."\n");
-			}
-			# Print zero function coverage data
-			foreach $func (@functions) {
-				print(INFO_HANDLE "FNDA:0,".
-				      filter_fn_name($func)."\n");
-			}
-			# Print function summary
-			print(INFO_HANDLE "FNF:".scalar(@functions)."\n");
-			print(INFO_HANDLE "FNH:0\n");
-		}
-		# Print zero line coverage data
-		foreach $line (@{$instr->{$filename}}) {
-			print(INFO_HANDLE "DA:$line,0\n");
-		}
-		# Print line summary
-		print(INFO_HANDLE "LF:".scalar(@{$instr->{$filename}})."\n");
-		print(INFO_HANDLE "LH:0\n");
-
-		print(INFO_HANDLE "end_of_record\n");
-	}
-	if (!($output_filename && ($output_filename eq "-")))
-	{
-		close(INFO_HANDLE);
-	}
-}
-
-sub filter_fn_name($)
-{
-	my ($fn) = @_;
-
-	# Remove characters used internally as function name delimiters
-	$fn =~ s/[,=]/_/g;
-
-	return $fn;
-}
-
-sub warn_handler($)
-{
-	my ($msg) = @_;
-
-	warn("$tool_name: $msg");
-}
-
-sub die_handler($)
-{
-	my ($msg) = @_;
-
-	die("$tool_name: $msg");
-}
-
-
-#
-# graph_error(filename, message)
-#
-# Print message about error in graph file. If ignore_graph_error is set, return.
-# Otherwise abort.
-#
-
-sub graph_error($$)
-{
-	my ($filename, $msg) = @_;
-
-	if ($ignore[$ERROR_GRAPH]) {
-		warn("WARNING: $filename: $msg - skipping\n");
-		return;
-	}
-	die("ERROR: $filename: $msg\n");
-}
-
-#
-# graph_expect(description)
-#
-# If debug is set to a non-zero value, print the specified description of what
-# is expected to be read next from the graph file.
-#
-
-sub graph_expect($)
-{
-	my ($msg) = @_;
-
-	if (!$debug || !defined($msg)) {
-		return;
-	}
-
-	print(STDERR "DEBUG: expecting $msg\n");
-}
-
-#
-# graph_read(handle, bytes[, description, peek])
-#
-# Read and return the specified number of bytes from handle. Return undef
-# if the number of bytes could not be read. If PEEK is non-zero, reset
-# file position after read.
-#
-
-sub graph_read(*$;$$)
-{
-	my ($handle, $length, $desc, $peek) = @_;
-	my $data;
-	my $result;
-	my $pos;
-
-	graph_expect($desc);
-	if ($peek) {
-		$pos = tell($handle);
-		if ($pos == -1) {
-			warn("Could not get current file position: $!\n");
-			return undef;
-		}
-	}
-	$result = read($handle, $data, $length);
-	if ($debug) {
-		my $op = $peek ? "peek" : "read";
-		my $ascii = "";
-		my $hex = "";
-		my $i;
-
-		print(STDERR "DEBUG: $op($length)=$result: ");
-		for ($i = 0; $i < length($data); $i++) {
-			my $c = substr($data, $i, 1);;
-			my $n = ord($c);
-
-			$hex .= sprintf("%02x ", $n);
-			if ($n >= 32 && $n <= 127) {
-				$ascii .= $c;
-			} else {
-				$ascii .= ".";
-			}
-		}
-		print(STDERR "$hex |$ascii|");
-		print(STDERR "\n");
-	}
-	if ($peek) {
-		if (!seek($handle, $pos, 0)) {
-			warn("Could not set file position: $!\n");
-			return undef;
-		}
-	}
-	if ($result != $length) {
-		return undef;
-	}
-	return $data;
-}
-
-#
-# graph_skip(handle, bytes[, description])
-#
-# Read and discard the specified number of bytes from handle. Return non-zero
-# if bytes could be read, zero otherwise.
-#
-
-sub graph_skip(*$;$)
-{
-	my ($handle, $length, $desc) = @_;
-
-	if (defined(graph_read($handle, $length, $desc))) {
-		return 1;
-	}
-	return 0;
-}
-
-#
-# uniq(list)
-#
-# Return list without duplicate entries.
-#
-
-sub uniq(@)
-{
-	my (@list) = @_;
-	my @new_list;
-	my %known;
-
-	foreach my $item (@list) {
-		next if ($known{$item});
-		$known{$item} = 1;
-		push(@new_list, $item);
-	}
-
-	return @new_list;
-}
-
-#
-# sort_uniq(list)
-#
-# Return list in numerically ascending order and without duplicate entries.
-#
-
-sub sort_uniq(@)
-{
-	my (@list) = @_;
-	my %hash;
-
-	foreach (@list) {
-		$hash{$_} = 1;
-	}
-	return sort { $a <=> $b } keys(%hash);
-}
-
-#
-# sort_uniq_lex(list)
-#
-# Return list in lexically ascending order and without duplicate entries.
-#
-
-sub sort_uniq_lex(@)
-{
-	my (@list) = @_;
-	my %hash;
-
-	foreach (@list) {
-		$hash{$_} = 1;
-	}
-	return sort keys(%hash);
-}
-
-#
-# parent_dir(dir)
-#
-# Return parent directory for DIR. DIR must not contain relative path
-# components.
-#
-
-sub parent_dir($)
-{
-	my ($dir) = @_;
-	my ($v, $d, $f) = splitpath($dir, 1);
-	my @dirs = splitdir($d);
-
-	pop(@dirs);
-
-	return catpath($v, catdir(@dirs), $f);
-}
-
-#
-# find_base_from_graph(base_dir, instr, graph)
-#
-# Try to determine the base directory of the graph file specified by INSTR
-# and GRAPH. The base directory is the base for all relative filenames in
-# the graph file. It is defined by the current working directory at time
-# of compiling the source file.
-#
-# This function implements a heuristic which relies on the following
-# assumptions:
-# - all files used for compilation are still present at their location
-# - the base directory is either BASE_DIR or one of its parent directories
-# - files by the same name are not present in multiple parent directories
-#
-
-sub find_base_from_graph($$$)
-{
-	my ($base_dir, $instr, $graph) = @_;
-	my $old_base;
-	my $best_miss;
-	my $best_base;
-	my %rel_files;
-
-	# Determine list of relative paths
-	foreach my $filename (keys(%{$instr}), keys(%{$graph})) {
-		next if (file_name_is_absolute($filename));
-
-		$rel_files{$filename} = 1;
-	}
-
-	# Early exit if there are no relative paths
-	return $base_dir if (!%rel_files);
-
-	do {
-		my $miss = 0;
-
-		foreach my $filename (keys(%rel_files)) {
-			if (!-e solve_relative_path($base_dir, $filename)) {
-				$miss++;
-			}
-		}
-
-		debug("base_dir=$base_dir miss=$miss\n");
-
-		# Exit if we find an exact match with no misses
-		return $base_dir if ($miss == 0);
-
-		# No exact match, aim for the one with the least source file
-		# misses
-		if (!defined($best_base) || $miss < $best_miss) {
-			$best_base = $base_dir;
-			$best_miss = $miss;
-		}
-
-		# Repeat until there's no more parent directory
-		$old_base = $base_dir;
-		$base_dir = parent_dir($base_dir);
-	} while ($old_base ne $base_dir);
-
-	return $best_base;
-}
-
-#
-# adjust_graph_filenames(base_dir, instr, graph)
-#
-# Make relative paths in INSTR and GRAPH absolute and apply
-# geninfo_adjust_src_path setting to graph file data.
-#
-
-sub adjust_graph_filenames($$$)
-{
-	my ($base_dir, $instr, $graph) = @_;
-
-	foreach my $filename (keys(%{$instr})) {
-		my $old_filename = $filename;
-
-		# Convert to absolute canonical form
-		$filename = solve_relative_path($base_dir, $filename);
-
-		# Apply adjustment
-		if (defined($adjust_src_pattern)) {
-			$filename =~ s/$adjust_src_pattern/$adjust_src_replace/g;
-		}
-
-		if ($filename ne $old_filename) {
-			$instr->{$filename} = delete($instr->{$old_filename});
-		}
-	}
-
-	foreach my $filename (keys(%{$graph})) {
-		my $old_filename = $filename;
-
-		# Make absolute
-		# Convert to absolute canonical form
-		$filename = solve_relative_path($base_dir, $filename);
-
-		# Apply adjustment
-		if (defined($adjust_src_pattern)) {
-			$filename =~ s/$adjust_src_pattern/$adjust_src_replace/g;
-		}
-
-		if ($filename ne $old_filename) {
-			$graph->{$filename} = delete($graph->{$old_filename});
-		}
-	}
-
-	return ($instr, $graph);
-}
-
-#
-# graph_cleanup(graph)
-#
-# Remove entries for functions with no lines. Remove duplicate line numbers.
-# Sort list of line numbers numerically ascending.
-#
-
-sub graph_cleanup($)
-{
-	my ($graph) = @_;
-	my $filename;
-
-	foreach $filename (keys(%{$graph})) {
-		my $per_file = $graph->{$filename};
-		my $function;
-
-		foreach $function (keys(%{$per_file})) {
-			my $lines = $per_file->{$function};
-
-			if (scalar(@$lines) == 0) {
-				# Remove empty function
-				delete($per_file->{$function});
-				next;
-			}
-			# Normalize list
-			$per_file->{$function} = [ uniq(@$lines) ];
-		}
-		if (scalar(keys(%{$per_file})) == 0) {
-			# Remove empty file
-			delete($graph->{$filename});
-		}
-	}
-}
-
-#
-# graph_find_base(bb)
-#
-# Try to identify the filename which is the base source file for the
-# specified bb data.
-#
-
-sub graph_find_base($)
-{
-	my ($bb) = @_;
-	my %file_count;
-	my $basefile;
-	my $file;
-	my $func;
-	my $filedata;
-	my $count;
-	my $num;
-
-	# Identify base name for this bb data.
-	foreach $func (keys(%{$bb})) {
-		$filedata = $bb->{$func};
-
-		foreach $file (keys(%{$filedata})) {
-			$count = $file_count{$file};
-
-			# Count file occurrence
-			$file_count{$file} = defined($count) ? $count + 1 : 1;
-		}
-	}
-	$count = 0;
-	$num = 0;
-	foreach $file (keys(%file_count)) {
-		if ($file_count{$file} > $count) {
-			# The file that contains code for the most functions
-			# is likely the base file
-			$count = $file_count{$file};
-			$num = 1;
-			$basefile = $file;
-		} elsif ($file_count{$file} == $count) {
-			# If more than one file could be the basefile, we
-			# don't have a basefile
-			$basefile = undef;
-		}
-	}
-
-	return $basefile;
-}
-
-#
-# graph_from_bb(bb, fileorder, bb_filename, fileorder_first)
-#
-# Convert data from bb to the graph format and list of instrumented lines.
-#
-# If FILEORDER_FIRST is set, use fileorder data to determine a functions
-# base source file.
-#
-# Returns (instr, graph).
-#
-# bb         : function name -> file data
-#            : undef -> file order
-# file data  : filename -> line data
-# line data  : [ line1, line2, ... ]
-#
-# file order : function name -> [ filename1, filename2, ... ]
-#
-# graph         : file name -> function data
-# function data : function name -> line data
-# line data     : [ line1, line2, ... ]
-#
-# instr     : filename -> line data
-# line data : [ line1, line2, ... ]
-#
-
-sub graph_from_bb($$$$)
-{
-	my ($bb, $fileorder, $bb_filename, $fileorder_first) = @_;
-	my $graph = {};
-	my $instr = {};
-	my $basefile;
-	my $file;
-	my $func;
-	my $filedata;
-	my $linedata;
-	my $order;
-
-	$basefile = graph_find_base($bb);
-	# Create graph structure
-	foreach $func (keys(%{$bb})) {
-		$filedata = $bb->{$func};
-		$order = $fileorder->{$func};
-
-		# Account for lines in functions
-		if (defined($basefile) && defined($filedata->{$basefile}) &&
-		    !$fileorder_first) {
-			# If the basefile contributes to this function,
-			# account this function to the basefile.
-			$graph->{$basefile}->{$func} = $filedata->{$basefile};
-		} else {
-			# If the basefile does not contribute to this function,
-			# account this function to the first file contributing
-			# lines.
-			$graph->{$order->[0]}->{$func} =
-				$filedata->{$order->[0]};
-		}
-
-		foreach $file (keys(%{$filedata})) {
-			# Account for instrumented lines
-			$linedata = $filedata->{$file};
-			push(@{$instr->{$file}}, @$linedata);
-		}
-	}
-	# Clean up array of instrumented lines
-	foreach $file (keys(%{$instr})) {
-		$instr->{$file} = [ sort_uniq(@{$instr->{$file}}) ];
-	}
-
-	return ($instr, $graph);
-}
-
-#
-# graph_add_order(fileorder, function, filename)
-#
-# Add an entry for filename to the fileorder data set for function.
-#
-
-sub graph_add_order($$$)
-{
-	my ($fileorder, $function, $filename) = @_;
-	my $item;
-	my $list;
-
-	$list = $fileorder->{$function};
-	foreach $item (@$list) {
-		if ($item eq $filename) {
-			return;
-		}
-	}
-	push(@$list, $filename);
-	$fileorder->{$function} = $list;
-}
-
-#
-# read_bb_word(handle[, description])
-#
-# Read and return a word in .bb format from handle.
-#
-
-sub read_bb_word(*;$)
-{
-	my ($handle, $desc) = @_;
-
-	return graph_read($handle, 4, $desc);
-}
-
-#
-# read_bb_value(handle[, description])
-#
-# Read a word in .bb format from handle and return the word and its integer
-# value.
-#
-
-sub read_bb_value(*;$)
-{
-	my ($handle, $desc) = @_;
-	my $word;
-
-	$word = read_bb_word($handle, $desc);
-	return undef if (!defined($word));
-
-	return ($word, unpack("V", $word));
-}
-
-#
-# read_bb_string(handle, delimiter)
-#
-# Read and return a string in .bb format from handle up to the specified
-# delimiter value.
-#
-
-sub read_bb_string(*$)
-{
-	my ($handle, $delimiter) = @_;
-	my $word;
-	my $value;
-	my $string = "";
-
-	graph_expect("string");
-	do {
-		($word, $value) = read_bb_value($handle, "string or delimiter");
-		return undef if (!defined($value));
-		if ($value != $delimiter) {
-			$string .= $word;
-		}
-	} while ($value != $delimiter);
-	$string =~ s/\0//g;
-
-	return $string;
-}
-
-#
-# read_bb(filename)
-#
-# Read the contents of the specified .bb file and return (instr, graph), where:
-#
-#   instr     : filename -> line data
-#   line data : [ line1, line2, ... ]
-#
-#   graph     :     filename -> file_data
-#   file_data : function name -> line_data
-#   line_data : [ line1, line2, ... ]
-#
-# See the gcov info pages of gcc 2.95 for a description of the .bb file format.
-#
-
-sub read_bb($)
-{
-	my ($bb_filename) = @_;
-	my $minus_one = 0x80000001;
-	my $minus_two = 0x80000002;
-	my $value;
-	my $filename;
-	my $function;
-	my $bb = {};
-	my $fileorder = {};
-	my $instr;
-	my $graph;
-	local *HANDLE;
-
-	open(HANDLE, "<", $bb_filename) or goto open_error;
-	binmode(HANDLE);
-	while (!eof(HANDLE)) {
-		$value = read_bb_value(*HANDLE, "data word");
-		goto incomplete if (!defined($value));
-		if ($value == $minus_one) {
-			# Source file name
-			graph_expect("filename");
-			$filename = read_bb_string(*HANDLE, $minus_one);
-			goto incomplete if (!defined($filename));
-		} elsif ($value == $minus_two) {
-			# Function name
-			graph_expect("function name");
-			$function = read_bb_string(*HANDLE, $minus_two);
-			goto incomplete if (!defined($function));
-		} elsif ($value > 0) {
-			# Line number
-			if (!defined($filename) || !defined($function)) {
-				warn("WARNING: unassigned line number ".
-				     "$value\n");
-				next;
-			}
-			push(@{$bb->{$function}->{$filename}}, $value);
-			graph_add_order($fileorder, $function, $filename);
-		}
-	}
-	close(HANDLE);
-
-	($instr, $graph) = graph_from_bb($bb, $fileorder, $bb_filename, 0);
-	graph_cleanup($graph);
-
-	return ($instr, $graph);
-
-open_error:
-	graph_error($bb_filename, "could not open file");
-	return undef;
-incomplete:
-	graph_error($bb_filename, "reached unexpected end of file");
-	return undef;
-}
-
-#
-# read_bbg_word(handle[, description])
-#
-# Read and return a word in .bbg format.
-#
-
-sub read_bbg_word(*;$)
-{
-	my ($handle, $desc) = @_;
-
-	return graph_read($handle, 4, $desc);
-}
-
-#
-# read_bbg_value(handle[, description])
-#
-# Read a word in .bbg format from handle and return its integer value.
-#
-
-sub read_bbg_value(*;$)
-{
-	my ($handle, $desc) = @_;
-	my $word;
-
-	$word = read_bbg_word($handle, $desc);
-	return undef if (!defined($word));
-
-	return unpack("N", $word);
-}
-
-#
-# read_bbg_string(handle)
-#
-# Read and return a string in .bbg format.
-#
-
-sub read_bbg_string(*)
-{
-	my ($handle, $desc) = @_;
-	my $length;
-	my $string;
-
-	graph_expect("string");
-	# Read string length
-	$length = read_bbg_value($handle, "string length");
-	return undef if (!defined($length));
-	if ($length == 0) {
-		return "";
-	}
-	# Read string
-	$string = graph_read($handle, $length, "string");
-	return undef if (!defined($string));
-	# Skip padding
-	graph_skip($handle, 4 - $length % 4, "string padding") or return undef;
-
-	return $string;
-}
-
-#
-# read_bbg_lines_record(handle, bbg_filename, bb, fileorder, filename,
-#                       function)
-#
-# Read a bbg format lines record from handle and add the relevant data to
-# bb and fileorder. Return filename on success, undef on error.
-#
-
-sub read_bbg_lines_record(*$$$$$)
-{
-	my ($handle, $bbg_filename, $bb, $fileorder, $filename, $function) = @_;
-	my $string;
-	my $lineno;
-
-	graph_expect("lines record");
-	# Skip basic block index
-	graph_skip($handle, 4, "basic block index") or return undef;
-	while (1) {
-		# Read line number
-		$lineno = read_bbg_value($handle, "line number");
-		return undef if (!defined($lineno));
-		if ($lineno == 0) {
-			# Got a marker for a new filename
-			graph_expect("filename");
-			$string = read_bbg_string($handle);
-			return undef if (!defined($string));
-			# Check for end of record
-			if ($string eq "") {
-				return $filename;
-			}
-			$filename = $string;
-			if (!exists($bb->{$function}->{$filename})) {
-				$bb->{$function}->{$filename} = [];
-			}
-			next;
-		}
-		# Got an actual line number
-		if (!defined($filename)) {
-			warn("WARNING: unassigned line number in ".
-			     "$bbg_filename\n");
-			next;
-		}
-		push(@{$bb->{$function}->{$filename}}, $lineno);
-		graph_add_order($fileorder, $function, $filename);
-	}
-}
-
-#
-# read_bbg(filename)
-#
-# Read the contents of the specified .bbg file and return the following mapping:
-#   graph:     filename -> file_data
-#   file_data: function name -> line_data
-#   line_data: [ line1, line2, ... ]
-#
-# See the gcov-io.h file in the SLES 9 gcc 3.3.3 source code for a description
-# of the .bbg format.
-#
-
-sub read_bbg($)
-{
-	my ($bbg_filename) = @_;
-	my $file_magic = 0x67626267;
-	my $tag_function = 0x01000000;
-	my $tag_lines = 0x01450000;
-	my $word;
-	my $tag;
-	my $length;
-	my $function;
-	my $filename;
-	my $bb = {};
-	my $fileorder = {};
-	my $instr;
-	my $graph;
-	local *HANDLE;
-
-	open(HANDLE, "<", $bbg_filename) or goto open_error;
-	binmode(HANDLE);
-	# Read magic
-	$word = read_bbg_value(*HANDLE, "file magic");
-	goto incomplete if (!defined($word));
-	# Check magic
-	if ($word != $file_magic) {
-		goto magic_error;
-	}
-	# Skip version
-	graph_skip(*HANDLE, 4, "version") or goto incomplete;
-	while (!eof(HANDLE)) {
-		# Read record tag
-		$tag = read_bbg_value(*HANDLE, "record tag");
-		goto incomplete if (!defined($tag));
-		# Read record length
-		$length = read_bbg_value(*HANDLE, "record length");
-		goto incomplete if (!defined($tag));
-		if ($tag == $tag_function) {
-			graph_expect("function record");
-			# Read function name
-			graph_expect("function name");
-			$function = read_bbg_string(*HANDLE);
-			goto incomplete if (!defined($function));
-			$filename = undef;
-			# Skip function checksum
-			graph_skip(*HANDLE, 4, "function checksum")
-				or goto incomplete;
-		} elsif ($tag == $tag_lines) {
-			# Read lines record
-			$filename = read_bbg_lines_record(HANDLE, $bbg_filename,
-					  $bb, $fileorder, $filename,
-					  $function);
-			goto incomplete if (!defined($filename));
-		} else {
-			# Skip record contents
-			graph_skip(*HANDLE, $length, "unhandled record")
-				or goto incomplete;
-		}
-	}
-	close(HANDLE);
-	($instr, $graph) = graph_from_bb($bb, $fileorder, $bbg_filename, 0);
-
-	graph_cleanup($graph);
-
-	return ($instr, $graph);
-
-open_error:
-	graph_error($bbg_filename, "could not open file");
-	return undef;
-incomplete:
-	graph_error($bbg_filename, "reached unexpected end of file");
-	return undef;
-magic_error:
-	graph_error($bbg_filename, "found unrecognized bbg file magic");
-	return undef;
-}
-
-#
-# read_gcno_word(handle[, description, peek])
-#
-# Read and return a word in .gcno format.
-#
-
-sub read_gcno_word(*;$$)
-{
-	my ($handle, $desc, $peek) = @_;
-
-	return graph_read($handle, 4, $desc, $peek);
-}
-
-#
-# read_gcno_value(handle, big_endian[, description, peek])
-#
-# Read a word in .gcno format from handle and return its integer value
-# according to the specified endianness. If PEEK is non-zero, reset file
-# position after read.
-#
-
-sub read_gcno_value(*$;$$)
-{
-	my ($handle, $big_endian, $desc, $peek) = @_;
-	my $word;
-	my $pos;
-
-	$word = read_gcno_word($handle, $desc, $peek);
-	return undef if (!defined($word));
-	if ($big_endian) {
-		return unpack("N", $word);
-	} else {
-		return unpack("V", $word);
-	}
-}
-
-#
-# read_gcno_string(handle, big_endian)
-#
-# Read and return a string in .gcno format.
-#
-
-sub read_gcno_string(*$)
-{
-	my ($handle, $big_endian) = @_;
-	my $length;
-	my $string;
-
-	graph_expect("string");
-	# Read string length
-	$length = read_gcno_value($handle, $big_endian, "string length");
-	return undef if (!defined($length));
-	if ($length == 0) {
-		return "";
-	}
-	$length *= 4;
-	# Read string
-	$string = graph_read($handle, $length, "string and padding");
-	return undef if (!defined($string));
-	$string =~ s/\0//g;
-
-	return $string;
-}
-
-#
-# read_gcno_lines_record(handle, gcno_filename, bb, fileorder, filename,
-#                        function, big_endian)
-#
-# Read a gcno format lines record from handle and add the relevant data to
-# bb and fileorder. Return filename on success, undef on error.
-#
-
-sub read_gcno_lines_record(*$$$$$$)
-{
-	my ($handle, $gcno_filename, $bb, $fileorder, $filename, $function,
-	    $big_endian) = @_;
-	my $string;
-	my $lineno;
-
-	graph_expect("lines record");
-	# Skip basic block index
-	graph_skip($handle, 4, "basic block index") or return undef;
-	while (1) {
-		# Read line number
-		$lineno = read_gcno_value($handle, $big_endian, "line number");
-		return undef if (!defined($lineno));
-		if ($lineno == 0) {
-			# Got a marker for a new filename
-			graph_expect("filename");
-			$string = read_gcno_string($handle, $big_endian);
-			return undef if (!defined($string));
-			# Check for end of record
-			if ($string eq "") {
-				return $filename;
-			}
-			$filename = $string;
-			if (!exists($bb->{$function}->{$filename})) {
-				$bb->{$function}->{$filename} = [];
-			}
-			next;
-		}
-		# Got an actual line number
-		if (!defined($filename)) {
-			warn("WARNING: unassigned line number in ".
-			     "$gcno_filename\n");
-			next;
-		}
-		# Add to list
-		push(@{$bb->{$function}->{$filename}}, $lineno);
-		graph_add_order($fileorder, $function, $filename);
-	}
-}
-
-#
-# determine_gcno_split_crc(handle, big_endian, rec_length, version)
-#
-# Determine if HANDLE refers to a .gcno file with a split checksum function
-# record format. Return non-zero in case of split checksum format, zero
-# otherwise, undef in case of read error.
-#
-
-sub determine_gcno_split_crc($$$$)
-{
-	my ($handle, $big_endian, $rec_length, $version) = @_;
-	my $strlen;
-	my $overlong_string;
-
-	return 1 if ($version >= $GCOV_VERSION_4_7_0);
-	return 1 if (is_compat($COMPAT_MODE_SPLIT_CRC));
-
-	# Heuristic:
-	# Decide format based on contents of next word in record:
-	# - pre-gcc 4.7
-	#   This is the function name length / 4 which should be
-	#   less than the remaining record length
-	# - gcc 4.7
-	#   This is a checksum, likely with high-order bits set,
-	#   resulting in a large number
-	$strlen = read_gcno_value($handle, $big_endian, undef, 1);
-	return undef if (!defined($strlen));
-	$overlong_string = 1 if ($strlen * 4 >= $rec_length - 12);
-
-	if ($overlong_string) {
-		if (is_compat_auto($COMPAT_MODE_SPLIT_CRC)) {
-			info("Auto-detected compatibility mode for split ".
-			     "checksum .gcno file format\n");
-
-			return 1;
-		} else {
-			# Sanity check
-			warn("Found overlong string in function record: ".
-			     "try '--compat split_crc'\n");
-		}
-	}
-
-	return 0;
-}
-
-#
-# read_gcno_function_record(handle, graph, big_endian, rec_length, version)
-#
-# Read a gcno format function record from handle and add the relevant data
-# to graph. Return (filename, function, artificial) on success, undef on error.
-#
-
-sub read_gcno_function_record(*$$$$$)
-{
-	my ($handle, $bb, $fileorder, $big_endian, $rec_length, $version) = @_;
-	my $filename;
-	my $function;
-	my $lineno;
-	my $lines;
-	my $artificial;
-
-	graph_expect("function record");
-	# Skip ident and checksum
-	graph_skip($handle, 8, "function ident and checksum") or return undef;
-	# Determine if this is a function record with split checksums
-	if (!defined($gcno_split_crc)) {
-		$gcno_split_crc = determine_gcno_split_crc($handle, $big_endian,
-							   $rec_length,
-							   $version);
-		return undef if (!defined($gcno_split_crc));
-	}
-	# Skip cfg checksum word in case of split checksums
-	graph_skip($handle, 4, "function cfg checksum") if ($gcno_split_crc);
-	# Read function name
-	graph_expect("function name");
-	$function = read_gcno_string($handle, $big_endian);
-	return undef if (!defined($function));
-	if ($version >= $GCOV_VERSION_8_0_0) {
-		$artificial = read_gcno_value($handle, $big_endian,
-					      "compiler-generated entity flag");
-		return undef if (!defined($artificial));
-	}
-	# Read filename
-	graph_expect("filename");
-	$filename = read_gcno_string($handle, $big_endian);
-	return undef if (!defined($filename));
-	# Read first line number
-	$lineno = read_gcno_value($handle, $big_endian, "initial line number");
-	return undef if (!defined($lineno));
-	# Skip column and ending line number
-	if ($version >= $GCOV_VERSION_8_0_0) {
-		graph_skip($handle, 4, "column number") or return undef;
-		graph_skip($handle, 4, "ending line number") or return undef;
-	}
-	# Add to list
-	push(@{$bb->{$function}->{$filename}}, $lineno);
-	graph_add_order($fileorder, $function, $filename);
-
-	return ($filename, $function, $artificial);
-}
-
-#
-# map_gcno_version
-#
-# Map version number as found in .gcno files to the format used in geninfo.
-#
-
-sub map_gcno_version($)
-{
-	my ($version) = @_;
-	my ($a, $b, $c);
-	my ($major, $minor);
-
-	$a = $version >> 24;
-	$b = $version >> 16 & 0xff;
-	$c = $version >> 8 & 0xff;
-
-	if ($a < ord('A')) {
-		$major = $a - ord('0');
-		$minor = ($b - ord('0')) * 10 + $c - ord('0');
-	} else {
-		$major = ($a - ord('A')) * 10 + $b - ord('0');
-		$minor = $c - ord('0');
-	}
-
-	return $major << 16 | $minor << 8;
-}
-
-sub remove_fn_from_hash($$)
-{
-	my ($hash, $fns) = @_;
-
-	foreach my $fn (@$fns) {
-		delete($hash->{$fn});
-	}
-}
-
-#
-# read_gcno(filename)
-#
-# Read the contents of the specified .gcno file and return the following
-# mapping:
-#   graph:    filename -> file_data
-#   file_data: function name -> line_data
-#   line_data: [ line1, line2, ... ]
-#
-# See the gcov-io.h file in the gcc 3.3 source code for a description of
-# the .gcno format.
-#
-
-sub read_gcno($)
-{
-	my ($gcno_filename) = @_;
-	my $file_magic = 0x67636e6f;
-	my $tag_function = 0x01000000;
-	my $tag_lines = 0x01450000;
-	my $big_endian;
-	my $word;
-	my $tag;
-	my $length;
-	my $filename;
-	my $function;
-	my $bb = {};
-	my $fileorder = {};
-	my $instr;
-	my $graph;
-	my $filelength;
-	my $version;
-	my $artificial;
-	my @artificial_fns;
-	local *HANDLE;
-
-	open(HANDLE, "<", $gcno_filename) or goto open_error;
-	$filelength = (stat(HANDLE))[7];
-	binmode(HANDLE);
-	# Read magic
-	$word = read_gcno_word(*HANDLE, "file magic");
-	goto incomplete if (!defined($word));
-	# Determine file endianness
-	if (unpack("N", $word) == $file_magic) {
-		$big_endian = 1;
-	} elsif (unpack("V", $word) == $file_magic) {
-		$big_endian = 0;
-	} else {
-		goto magic_error;
-	}
-	# Read version
-	$version = read_gcno_value(*HANDLE, $big_endian, "compiler version");
-	$version = map_gcno_version($version);
-	debug(sprintf("found version 0x%08x\n", $version));
-	# Skip stamp
-	graph_skip(*HANDLE, 4, "file timestamp") or goto incomplete;
-	if ($version >= $GCOV_VERSION_8_0_0) {
-		graph_skip(*HANDLE, 4, "support unexecuted blocks flag")
-			or goto incomplete;
-	}
-	while (!eof(HANDLE)) {
-		my $next_pos;
-		my $curr_pos;
-
-		# Read record tag
-		$tag = read_gcno_value(*HANDLE, $big_endian, "record tag");
-		goto incomplete if (!defined($tag));
-		# Read record length
-		$length = read_gcno_value(*HANDLE, $big_endian,
-					  "record length");
-		goto incomplete if (!defined($length));
-		# Convert length to bytes
-		$length *= 4;
-		# Calculate start of next record
-		$next_pos = tell(HANDLE);
-		goto tell_error if ($next_pos == -1);
-		$next_pos += $length;
-		# Catch garbage at the end of a gcno file
-		if ($next_pos > $filelength) {
-			debug("Overlong record: file_length=$filelength ".
-			      "rec_length=$length\n");
-			warn("WARNING: $gcno_filename: Overlong record at end ".
-			     "of file!\n");
-			last;
-		}
-		# Process record
-		if ($tag == $tag_function) {
-			($filename, $function, $artificial) =
-				read_gcno_function_record(
-				*HANDLE, $bb, $fileorder, $big_endian,
-				$length, $version);
-			goto incomplete if (!defined($function));
-			push(@artificial_fns, $function) if ($artificial);
-		} elsif ($tag == $tag_lines) {
-			# Read lines record
-			$filename = read_gcno_lines_record(*HANDLE,
-					$gcno_filename, $bb, $fileorder,
-					$filename, $function, $big_endian);
-			goto incomplete if (!defined($filename));
-		} else {
-			# Skip record contents
-			graph_skip(*HANDLE, $length, "unhandled record")
-				or goto incomplete;
-		}
-		# Ensure that we are at the start of the next record
-		$curr_pos = tell(HANDLE);
-		goto tell_error if ($curr_pos == -1);
-		next if ($curr_pos == $next_pos);
-		goto record_error if ($curr_pos > $next_pos);
-		graph_skip(*HANDLE, $next_pos - $curr_pos,
-			   "unhandled record content")
-			or goto incomplete;
-	}
-	close(HANDLE);
-
-	# Remove artificial functions from result data
-	remove_fn_from_hash($bb, \@artificial_fns);
-	remove_fn_from_hash($fileorder, \@artificial_fns);
-
-	($instr, $graph) = graph_from_bb($bb, $fileorder, $gcno_filename, 1);
-	graph_cleanup($graph);
-
-	return ($instr, $graph);
-
-open_error:
-	graph_error($gcno_filename, "could not open file");
-	return undef;
-incomplete:
-	graph_error($gcno_filename, "reached unexpected end of file");
-	return undef;
-magic_error:
-	graph_error($gcno_filename, "found unrecognized gcno file magic");
-	return undef;
-tell_error:
-	graph_error($gcno_filename, "could not determine file position");
-	return undef;
-record_error:
-	graph_error($gcno_filename, "found unrecognized record format");
-	return undef;
-}
-
-sub debug($)
-{
-	my ($msg) = @_;
-
-	return if (!$debug);
-	print(STDERR "DEBUG: $msg");
-}
-
-#
-# get_gcov_capabilities
-#
-# Determine the list of available gcov options.
-#
-
-sub get_gcov_capabilities()
-{
-	my $help = `$gcov_tool --help`;
-	my %capabilities;
-	my %short_option_translations = (
-		'a' => 'all-blocks',
-		'b' => 'branch-probabilities',
-		'c' => 'branch-counts',
-		'f' => 'function-summaries',
-		'h' => 'help',
-		'l' => 'long-file-names',
-		'n' => 'no-output',
-		'o' => 'object-directory',
-		'p' => 'preserve-paths',
-		'u' => 'unconditional-branches',
-		'v' => 'version',
-		'x' => 'hash-filenames',
-	);
-
-	foreach (split(/\n/, $help)) {
-		my $capability;
-		if (/--(\S+)/) {
-			$capability = $1;
-		} else {
-			# If the line provides a short option, translate it.
-			next if (!/^\s*-(\S)\s/);
-			$capability = $short_option_translations{$1};
-			next if not defined($capability);
-		}
-		next if ($capability eq 'help');
-		next if ($capability eq 'version');
-		next if ($capability eq 'object-directory');
-
-		$capabilities{$capability} = 1;
-		debug("gcov has capability '$capability'\n");
-	}
-
-	return \%capabilities;
-}
-
-#
-# parse_ignore_errors(@ignore_errors)
-#
-# Parse user input about which errors to ignore.
-#
-
-sub parse_ignore_errors(@)
-{
-	my (@ignore_errors) = @_;
-	my @items;
-	my $item;
-
-	return if (!@ignore_errors);
-
-	foreach $item (@ignore_errors) {
-		$item =~ s/\s//g;
-		if ($item =~ /,/) {
-			# Split and add comma-separated parameters
-			push(@items, split(/,/, $item));
-		} else {
-			# Add single parameter
-			push(@items, $item);
-		}
-	}
-	foreach $item (@items) {
-		my $item_id = $ERROR_ID{lc($item)};
-
-		if (!defined($item_id)) {
-			die("ERROR: unknown argument for --ignore-errors: ".
-			    "$item\n");
-		}
-		$ignore[$item_id] = 1;
-	}
-}
-
-#
-# is_external(filename)
-#
-# Determine if a file is located outside of the specified data directories.
-#
-
-sub is_external($)
-{
-	my ($filename) = @_;
-	my $dir;
-
-	foreach $dir (@internal_dirs) {
-		return 0 if ($filename =~ /^\Q$dir\/\E/);
-	}
-	return 1;
-}
-
-#
-# compat_name(mode)
-#
-# Return the name of compatibility mode MODE.
-#
-
-sub compat_name($)
-{
-	my ($mode) = @_;
-	my $name = $COMPAT_MODE_TO_NAME{$mode};
-
-	return $name if (defined($name));
-
-	return "<unknown>";
-}
-
-#
-# parse_compat_modes(opt)
-#
-# Determine compatibility mode settings.
-#
-
-sub parse_compat_modes($)
-{
-	my ($opt) = @_;
-	my @opt_list;
-	my %specified;
-
-	# Initialize with defaults
-	%compat_value = %COMPAT_MODE_DEFAULTS;
-
-	# Add old style specifications
-	if (defined($opt_compat_libtool)) {
-		$compat_value{$COMPAT_MODE_LIBTOOL} =
-			$opt_compat_libtool ? $COMPAT_VALUE_ON
-					    : $COMPAT_VALUE_OFF;
-	}
-
-	# Parse settings
-	if (defined($opt)) {
-		@opt_list = split(/\s*,\s*/, $opt);
-	}
-	foreach my $directive (@opt_list) {
-		my ($mode, $value);
-
-		# Either
-		#   mode=off|on|auto or
-		#   mode (implies on)
-		if ($directive !~ /^(\w+)=(\w+)$/ &&
-		    $directive !~ /^(\w+)$/) {
-			die("ERROR: Unknown compatibility mode specification: ".
-			    "$directive!\n");
-		}
-		# Determine mode
-		$mode = $COMPAT_NAME_TO_MODE{lc($1)};
-		if (!defined($mode)) {
-			die("ERROR: Unknown compatibility mode '$1'!\n");
-		}
-		$specified{$mode} = 1;
-		# Determine value
-		if (defined($2)) {
-			$value = $COMPAT_NAME_TO_VALUE{lc($2)};
-			if (!defined($value)) {
-				die("ERROR: Unknown compatibility mode ".
-				    "value '$2'!\n");
-			}
-		} else {
-			$value = $COMPAT_VALUE_ON;
-		}
-		$compat_value{$mode} = $value;
-	}
-	# Perform auto-detection
-	foreach my $mode (sort(keys(%compat_value))) {
-		my $value = $compat_value{$mode};
-		my $is_autodetect = "";
-		my $name = compat_name($mode);
-
-		if ($value == $COMPAT_VALUE_AUTO) {
-			my $autodetect = $COMPAT_MODE_AUTO{$mode};
-
-			if (!defined($autodetect)) {
-				die("ERROR: No auto-detection for ".
-				    "mode '$name' available!\n");
-			}
-
-			if (ref($autodetect) eq "CODE") {
-				$value = &$autodetect();
-				$compat_value{$mode} = $value;
-				$is_autodetect = " (auto-detected)";
-			}
-		}
-
-		if ($specified{$mode}) {
-			if ($value == $COMPAT_VALUE_ON) {
-				info("Enabling compatibility mode ".
-				     "'$name'$is_autodetect\n");
-			} elsif ($value == $COMPAT_VALUE_OFF) {
-				info("Disabling compatibility mode ".
-				     "'$name'$is_autodetect\n");
-			} else {
-				info("Using delayed auto-detection for ".
-				     "compatibility mode ".
-				     "'$name'\n");
-			}
-		}
-	}
-}
-
-sub compat_hammer_autodetect()
-{
-        if ($gcov_version_string =~ /suse/i && $gcov_version == 0x30303 ||
-            $gcov_version_string =~ /mandrake/i && $gcov_version == 0x30302)
-	{
-		info("Auto-detected compatibility mode for GCC 3.3 (hammer)\n");
-		return $COMPAT_VALUE_ON;
-	}
-	return $COMPAT_VALUE_OFF;
-}
-
-#
-# is_compat(mode)
-#
-# Return non-zero if compatibility mode MODE is enabled.
-#
-
-sub is_compat($)
-{
-	my ($mode) = @_;
-
-	return 1 if ($compat_value{$mode} == $COMPAT_VALUE_ON);
-	return 0;
-}
-
-#
-# is_compat_auto(mode)
-#
-# Return non-zero if compatibility mode MODE is set to auto-detect.
-#
-
-sub is_compat_auto($)
-{
-	my ($mode) = @_;
-
-	return 1 if ($compat_value{$mode} == $COMPAT_VALUE_AUTO);
-	return 0;
-}
diff --git a/ThirdParty/lcov/bin/genpng b/ThirdParty/lcov/bin/genpng
deleted file mode 100755
index 943a49d5f..000000000
--- a/ThirdParty/lcov/bin/genpng
+++ /dev/null
@@ -1,389 +0,0 @@
-#!/usr/bin/env perl
-#
-#   Copyright (c) International Business Machines  Corp., 2002
-#
-#   This program is free software;  you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or (at
-#   your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY;  without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#   General Public License for more details.                 
-#
-#   You should have received a copy of the GNU General Public License
-#   along with this program;  if not, write to the Free Software
-#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-#
-# genpng
-#
-#   This script creates an overview PNG image of a source code file by
-#   representing each source code character by a single pixel.
-#
-#   Note that the Perl module GD.pm is required for this script to work.
-#   It may be obtained from http://www.cpan.org
-#
-# History:
-#   2002-08-26: created by Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>
-#
-
-use strict;
-use warnings;
-use File::Basename; 
-use Getopt::Long;
-use Cwd qw/abs_path/;
-
-
-# Constants
-our $tool_dir		= abs_path(dirname($0));
-our $lcov_version	= "LCOV version 1.14";
-our $lcov_url		= "http://ltp.sourceforge.net/coverage/lcov.php";
-our $tool_name		= basename($0);
-
-
-# Prototypes
-sub gen_png($$$@);
-sub check_and_load_module($);
-sub genpng_print_usage(*);
-sub genpng_process_file($$$$);
-sub genpng_warn_handler($);
-sub genpng_die_handler($);
-
-
-#
-# Code entry point
-#
-
-# Check whether required module GD.pm is installed
-if (check_and_load_module("GD"))
-{
-	# Note: cannot use die() to print this message because inserting this
-	# code into another script via do() would not fail as required!
-	print(STDERR <<END_OF_TEXT)
-ERROR: required module GD.pm not found on this system (see www.cpan.org).
-END_OF_TEXT
-	;
-	exit(2);
-}
-
-# Check whether we're called from the command line or from another script
-if (!caller)
-{
-	my $filename;
-	my $tab_size = 4;
-	my $width = 80;
-	my $out_filename;
-	my $help;
-	my $version;
-
-	$SIG{__WARN__} = \&genpng_warn_handler;
-	$SIG{__DIE__} = \&genpng_die_handler;
-
-	# Parse command line options
-	if (!GetOptions("tab-size=i" => \$tab_size,
-			"width=i" => \$width,
-			"output-filename=s" => \$out_filename,
-			"help" => \$help,
-			"version" => \$version))
-	{
-		print(STDERR "Use $tool_name --help to get usage ".
-		      "information\n");
-		exit(1);
-	}
-
-	$filename = $ARGV[0];
-
-	# Check for help flag
-	if ($help)
-	{
-		genpng_print_usage(*STDOUT);
-		exit(0);
-	}
-
-	# Check for version flag
-	if ($version)
-	{
-		print("$tool_name: $lcov_version\n");
-		exit(0);
-	}
-
-	# Check options
-	if (!$filename)
-	{
-		die("No filename specified\n");
-	}
-
-	# Check for output filename
-	if (!$out_filename)
-	{
-		$out_filename = "$filename.png";
-	}
-
-	genpng_process_file($filename, $out_filename, $width, $tab_size);
-	exit(0);
-}
-
-
-#
-# genpng_print_usage(handle)
-#
-# Write out command line usage information to given filehandle.
-#
-
-sub genpng_print_usage(*)
-{
-	local *HANDLE = $_[0];
-
-	print(HANDLE <<END_OF_USAGE)
-Usage: $tool_name [OPTIONS] SOURCEFILE
-
-Create an overview image for a given source code file of either plain text
-or .gcov file format.
-
-  -h, --help                        Print this help, then exit
-  -v, --version                     Print version number, then exit
-  -t, --tab-size TABSIZE            Use TABSIZE spaces in place of tab
-  -w, --width WIDTH                 Set width of output image to WIDTH pixel
-  -o, --output-filename FILENAME    Write image to FILENAME
-
-For more information see: $lcov_url
-END_OF_USAGE
-	;
-}
-
-
-#
-# check_and_load_module(module_name)
-#
-# Check whether a module by the given name is installed on this system
-# and make it known to the interpreter if available. Return undefined if it
-# is installed, an error message otherwise.
-#
-
-sub check_and_load_module($)
-{
-	eval("use $_[0];");
-	return $@;
-}
-
-
-#
-# genpng_process_file(filename, out_filename, width, tab_size)
-#
-
-sub genpng_process_file($$$$)
-{
-	my $filename		= $_[0];
-	my $out_filename	= $_[1];
-	my $width		= $_[2];
-	my $tab_size		= $_[3];
-	local *HANDLE;
-	my @source;
-
-	open(HANDLE, "<", $filename)
-		or die("ERROR: cannot open $filename!\n");
-
-	# Check for .gcov filename extension
-	if ($filename =~ /^(.*).gcov$/)
-	{
-		# Assume gcov text format
-		while (<HANDLE>)
-		{
-			if (/^\t\t(.*)$/)
-			{
-				# Uninstrumented line
-				push(@source, ":$1");
-			}
-			elsif (/^      ######    (.*)$/)
-			{
-				# Line with zero execution count
-				push(@source, "0:$1");
-			}
-			elsif (/^( *)(\d*)    (.*)$/)
-			{
-				# Line with positive execution count
-				push(@source, "$2:$3");
-			}
-		}
-	}
-	else
-	{
-		# Plain text file
-		while (<HANDLE>) { push(@source, ":$_"); }
-	}
-	close(HANDLE);
-
-	gen_png($out_filename, $width, $tab_size, @source);
-}
-
-
-#
-# gen_png(filename, width, tab_size, source)
-#
-# Write an overview PNG file to FILENAME. Source code is defined by SOURCE
-# which is a list of lines <count>:<source code> per source code line.
-# The output image will be made up of one pixel per character of source,
-# coloring will be done according to execution counts. WIDTH defines the
-# image width. TAB_SIZE specifies the number of spaces to use as replacement
-# string for tabulator signs in source code text.
-#
-# Die on error.
-#
-
-sub gen_png($$$@)
-{
-	my $filename = shift(@_);	# Filename for PNG file
-	my $overview_width = shift(@_);	# Imagewidth for image
-	my $tab_size = shift(@_);	# Replacement string for tab signs
-	my @source = @_;	# Source code as passed via argument 2
-	my $height;		# Height as define by source size
-	my $overview;		# Source code overview image data
-	my $col_plain_back;	# Color for overview background
-	my $col_plain_text;	# Color for uninstrumented text
-	my $col_cov_back;	# Color for background of covered lines
-	my $col_cov_text;	# Color for text of covered lines
-	my $col_nocov_back;	# Color for background of lines which
-				# were not covered (count == 0)
-	my $col_nocov_text;	# Color for test of lines which were not
-				# covered (count == 0)
-	my $col_hi_back;	# Color for background of highlighted lines
-	my $col_hi_text;	# Color for text of highlighted lines
-	my $line;		# Current line during iteration
-	my $row = 0;		# Current row number during iteration
-	my $column;		# Current column number during iteration
-	my $color_text;		# Current text color during iteration
-	my $color_back;		# Current background color during iteration
-	my $last_count;		# Count of last processed line
-	my $count;		# Count of current line
-	my $source;		# Source code of current line
-	my $replacement;	# Replacement string for tabulator chars
-	local *PNG_HANDLE;	# Handle for output PNG file
-
-	# Handle empty source files
-	if (!@source) {
-		@source = ( "" );
-	}
-	$height = scalar(@source);
-	# Create image
-	$overview = new GD::Image($overview_width, $height)
-		or die("ERROR: cannot allocate overview image!\n");
-
-	# Define colors
-	$col_plain_back	= $overview->colorAllocate(0xff, 0xff, 0xff);
-	$col_plain_text	= $overview->colorAllocate(0xaa, 0xaa, 0xaa);
-	$col_cov_back	= $overview->colorAllocate(0xaa, 0xa7, 0xef);
-	$col_cov_text	= $overview->colorAllocate(0x5d, 0x5d, 0xea);
-	$col_nocov_back = $overview->colorAllocate(0xff, 0x00, 0x00);
-	$col_nocov_text = $overview->colorAllocate(0xaa, 0x00, 0x00);
-	$col_hi_back = $overview->colorAllocate(0x00, 0xff, 0x00);
-	$col_hi_text = $overview->colorAllocate(0x00, 0xaa, 0x00);
-
-	# Visualize each line
-	foreach $line (@source)
-	{
-		# Replace tabs with spaces to keep consistent with source
-		# code view
-		while ($line =~ /^([^\t]*)(\t)/)
-		{
-			$replacement = " "x($tab_size - ((length($1) - 1) %
-				       $tab_size));
-			$line =~ s/^([^\t]*)(\t)/$1$replacement/;
-		}
-
-		# Skip lines which do not follow the <count>:<line>
-		# specification, otherwise $1 = count, $2 = source code
-		if (!($line =~ /(\*?)(\d*):(.*)$/)) { next; }
-		$count = $2;
-		$source = $3;
-
-		# Decide which color pair to use
-
-		# If this line was not instrumented but the one before was,
-		# take the color of that line to widen color areas in
-		# resulting image
-		if (($count eq "") && defined($last_count) &&
-		    ($last_count ne ""))
-		{
-			$count = $last_count;
-		}
-
-		if ($count eq "")
-		{
-			# Line was not instrumented
-			$color_text = $col_plain_text;
-			$color_back = $col_plain_back;
-		}
-		elsif ($count == 0)
-		{
-			# Line was instrumented but not executed
-			$color_text = $col_nocov_text;
-			$color_back = $col_nocov_back;
-		}
-		elsif ($1 eq "*")
-		{
-			# Line was highlighted
-			$color_text = $col_hi_text;
-			$color_back = $col_hi_back;
-		}
-		else
-		{
-			# Line was instrumented and executed
-			$color_text = $col_cov_text;
-			$color_back = $col_cov_back;
-		}
-
-		# Write one pixel for each source character
-		$column = 0;
-		foreach (split("", $source))
-		{
-			# Check for width
-			if ($column >= $overview_width) { last; }
-
-			if ($_ eq " ")
-			{
-				# Space
-				$overview->setPixel($column++, $row,
-						    $color_back);
-			}
-			else
-			{
-				# Text
-				$overview->setPixel($column++, $row,
-						    $color_text);
-			}
-		}
-
-		# Fill rest of line		
-		while ($column < $overview_width)
-		{
-			$overview->setPixel($column++, $row, $color_back);
-		}
-
-		$last_count = $2;
-
-		$row++;
-	}
-
-	# Write PNG file
-	open (PNG_HANDLE, ">", $filename)
-		or die("ERROR: cannot write png file $filename!\n");
-	binmode(*PNG_HANDLE);
-	print(PNG_HANDLE $overview->png());
-	close(PNG_HANDLE);
-}
-
-sub genpng_warn_handler($)
-{
-	my ($msg) = @_;
-
-	warn("$tool_name: $msg");
-}
-
-sub genpng_die_handler($)
-{
-	my ($msg) = @_;
-
-	die("$tool_name: $msg");
-}
diff --git a/ThirdParty/lcov/bin/get_changes.sh b/ThirdParty/lcov/bin/get_changes.sh
deleted file mode 100755
index ec373b4f4..000000000
--- a/ThirdParty/lcov/bin/get_changes.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env bash
-#
-# Usage: get_changes.sh
-#
-# Print lcov change log information as provided by Git
-
-TOOLDIR=$(cd $(dirname $0) >/dev/null ; pwd)
-
-cd $TOOLDIR
-
-if ! git --no-pager log --no-merges --decorate=short --color=never 2>/dev/null ; then
-	cat "$TOOLDIR/../CHANGES" 2>/dev/null
-fi 
diff --git a/ThirdParty/lcov/bin/get_version.sh b/ThirdParty/lcov/bin/get_version.sh
deleted file mode 100755
index ac5a36314..000000000
--- a/ThirdParty/lcov/bin/get_version.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env bash
-#
-# Usage: get_version.sh --version|--release|--full
-#
-# Print lcov version or release information as provided by Git, .version
-# or a fallback.
-
-TOOLDIR=$(cd $(dirname $0) >/dev/null ; pwd)
-GITVER=$(cd $TOOLDIR ; git describe --tags 2>/dev/null)
-
-if [ -z "$GITVER" ] ; then
-	# Get version information from file
-	if [ -e "$TOOLDIR/../.version" ] ; then
-		source "$TOOLDIR/../.version"
-	fi
-else
-	# Get version information from git
-	FULL=${GITVER:1}
-	VERSION=${GITVER%%-*}
-	VERSION=${VERSION:1}
-	if [ "${GITVER#*-}" != "$GITVER" ] ; then
-		RELEASE=${GITVER#*-}
-		RELEASE=${RELEASE/-/.}
-	fi
-fi
-
-# Fallback
-[ -z "$VERSION" ] && VERSION="1.0"
-[ -z "$RELEASE" ] && RELEASE="1"
-[ -z "$FULL" ]    && FULL="$VERSION"
-
-[ "$1" == "--version" ] && echo -n "$VERSION"
-[ "$1" == "--release" ] && echo -n "$RELEASE"
-[ "$1" == "--full"    ] && echo -n "$FULL"
diff --git a/ThirdParty/lcov/bin/install.sh b/ThirdParty/lcov/bin/install.sh
deleted file mode 100755
index 2cdef45b6..000000000
--- a/ThirdParty/lcov/bin/install.sh
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env bash
-#
-# install.sh [--uninstall] sourcefile targetfile [install options]
-#
-
-
-# Check for uninstall option
-if test "x$1" == "x--uninstall" ; then
-  UNINSTALL=true
-  SOURCE=$2
-  TARGET=$3
-  shift 3
-else
-  UNINSTALL=false
-  SOURCE=$1
-  TARGET=$2
-  shift 2
-fi
-
-# Check usage
-if test -z "$SOURCE" || test -z "$TARGET" ; then
-  echo Usage: install.sh [--uninstall] source target [install options] >&2
-  exit 1
-fi
-
-
-#
-# do_install(SOURCE_FILE, TARGET_FILE)
-#
-
-do_install()
-{
-  local SOURCE=$1
-  local TARGET=$2
-  local PARAMS=$3
-
-  install -d $(dirname $TARGET)
-  install -p $PARAMS $SOURCE $TARGET
-  if [ -n "$LCOV_PERL_PATH" ] ; then
-    # Replace Perl interpreter specification
-    sed -e "1 s%^#\!.*perl.*$%#\!$LCOV_PERL_PATH%" -i $TARGET
-  fi
-}
-
-
-#
-# do_uninstall(SOURCE_FILE, TARGET_FILE)
-#
-
-do_uninstall()
-{
-  local SOURCE=$1
-  local TARGET=$2
-
-  # Does target exist?
-  if test -r $TARGET ; then
-    # Is target of the same version as this package?
-    if diff -I '^our \$lcov_version' -I '^\.TH ' -I '^#!' $SOURCE $TARGET >/dev/null; then
-      rm -f $TARGET
-    else
-      echo WARNING: Skipping uninstall for $TARGET - versions differ! >&2
-    fi
-  else
-    echo WARNING: Skipping uninstall for $TARGET - not installed! >&2
-  fi
-}
-
-
-# Call sub routine
-if $UNINSTALL ; then
-  do_uninstall $SOURCE $TARGET
-else
-  do_install $SOURCE $TARGET "$*"
-fi
-
-exit 0
diff --git a/ThirdParty/lcov/bin/lcov b/ThirdParty/lcov/bin/lcov
deleted file mode 100755
index 33c9f4d16..000000000
--- a/ThirdParty/lcov/bin/lcov
+++ /dev/null
@@ -1,4329 +0,0 @@
-#!/usr/bin/env perl
-#
-#   Copyright (c) International Business Machines  Corp., 2002,2012
-#
-#   This program is free software;  you can redistribute it and/or modify
-#   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or (at
-#   your option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY;  without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#   General Public License for more details.                 
-#
-#   You should have received a copy of the GNU General Public License
-#   along with this program;  if not, write to the Free Software
-#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-#
-# lcov
-#
-#   This is a wrapper script which provides a single interface for accessing
-#   LCOV coverage data.
-#
-#
-# History:
-#   2002-08-29 created by Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>
-#                         IBM Lab Boeblingen
-#   2002-09-05 / Peter Oberparleiter: implemented --kernel-directory +
-#                multiple directories
-#   2002-10-16 / Peter Oberparleiter: implemented --add-tracefile option
-#   2002-10-17 / Peter Oberparleiter: implemented --extract option
-#   2002-11-04 / Peter Oberparleiter: implemented --list option
-#   2003-03-07 / Paul Larson: Changed to make it work with the latest gcov 
-#                kernel patch.  This will break it with older gcov-kernel
-#                patches unless you change the value of $gcovmod in this script
-#   2003-04-07 / Peter Oberparleiter: fixed bug which resulted in an error
-#                when trying to combine .info files containing data without
-#                a test name
-#   2003-04-10 / Peter Oberparleiter: extended Paul's change so that LCOV
-#                works both with the new and the old gcov-kernel patch
-#   2003-04-10 / Peter Oberparleiter: added $gcov_dir constant in anticipation
-#                of a possible move of the gcov kernel directory to another
-#                file system in a future version of the gcov-kernel patch
-#   2003-04-15 / Paul Larson: make info write to STDERR, not STDOUT
-#   2003-04-15 / Paul Larson: added --remove option
-#   2003-04-30 / Peter Oberparleiter: renamed --reset to --zerocounters
-#                to remove naming ambiguity with --remove
-#   2003-04-30 / Peter Oberparleiter: adjusted help text to include --remove
-#   2003-06-27 / Peter Oberparleiter: implemented --diff
-#   2003-07-03 / Peter Oberparleiter: added line checksum support, added
-#                --no-checksum
-#   2003-12-11 / Laurent Deniel: added --follow option
-#   2004-03-29 / Peter Oberparleiter: modified --diff option to better cope with
-#                ambiguous patch file entries, modified --capture option to use
-#                modprobe before insmod (needed for 2.6)
-#   2004-03-30 / Peter Oberparleiter: added --path option
-#   2004-08-09 / Peter Oberparleiter: added configuration file support
-#   2008-08-13 / Peter Oberparleiter: added function coverage support
-#
-
-use strict;
-use warnings;
-use File::Basename;
-use File::Path;
-use File::Find;
-use File::Temp qw /tempdir/;
-use File::Spec::Functions qw /abs2rel canonpath catdir catfile catpath
-			      file_name_is_absolute rootdir splitdir splitpath/;
-use Getopt::Long;
-use Cwd qw /abs_path getcwd/;
-
-
-# Global constants
-our $tool_dir		= abs_path(dirname($0));
-our $lcov_version	= "LCOV version 1.14";
-our $lcov_url		= "http://ltp.sourceforge.net/coverage/lcov.php";
-our $tool_name		= basename($0);
-
-# Directory containing gcov kernel files
-our $gcov_dir;
-
-# Where to create temporary directories
-our $tmp_dir;
-
-# Internal constants
-our $GKV_PROC = 0;	# gcov-kernel data in /proc via external patch
-our $GKV_SYS = 1;	# gcov-kernel data in /sys via vanilla 2.6.31+
-our @GKV_NAME = ( "external", "upstream" );
-our $pkg_gkv_file = ".gcov_kernel_version";
-our $pkg_build_file = ".build_directory";
-
-# Branch data combination types
-our $BR_SUB = 0;
-our $BR_ADD = 1;
-
-# Prototypes
-sub print_usage(*);
-sub check_options();
-sub userspace_reset();
-sub userspace_capture();
-sub kernel_reset();
-sub kernel_capture();
-sub kernel_capture_initial();
-sub package_capture();
-sub add_traces();
-sub read_info_file($);
-sub get_info_entry($);
-sub set_info_entry($$$$$$$$$;$$$$$$);
-sub add_counts($$);
-sub merge_checksums($$$);
-sub combine_info_entries($$$);
-sub combine_info_files($$);
-sub write_info_file(*$);
-sub extract();
-sub remove();
-sub list();
-sub get_common_filename($$);
-sub read_diff($);
-sub diff();
-sub system_no_output($@);
-sub read_config($);
-sub apply_config($);
-sub info(@);
-sub create_temp_dir();
-sub transform_pattern($);
-sub warn_handler($);
-sub die_handler($);
-sub abort_handler($);
-sub temp_cleanup();
-sub setup_gkv();
-sub get_overall_line($$$$);
-sub print_overall_rate($$$$$$$$$);
-sub lcov_geninfo(@);
-sub create_package($$$;$);
-sub get_func_found_and_hit($);
-sub summary();
-sub rate($$;$$$);
-
-# Global variables & initialization
-our @directory;		# Specifies where to get coverage data from
-our @kernel_directory;	# If set, captures only from specified kernel subdirs
-our @add_tracefile;	# If set, reads in and combines all files in list
-our $list;		# If set, list contents of tracefile
-our $extract;		# If set, extracts parts of tracefile
-our $remove;		# If set, removes parts of tracefile
-our $diff;		# If set, modifies tracefile according to diff
-our $reset;		# If set, reset all coverage data to zero
-our $capture;		# If set, capture data
-our $output_filename;	# Name for file to write coverage data to
-our $test_name = "";	# Test case name
-our $quiet = "";	# If set, suppress information messages
-our $help;		# Help option flag
-our $version;		# Version option flag
-our $convert_filenames;	# If set, convert filenames when applying diff
-our $strip;		# If set, strip leading directories when applying diff
-our $temp_dir_name;	# Name of temporary directory
-our $cwd = `pwd`;	# Current working directory
-our $data_stdout;	# If set, indicates that data is written to stdout
-our $follow;		# If set, indicates that find shall follow links
-our $diff_path = "";	# Path removed from tracefile when applying diff
-our $base_directory;	# Base directory (cwd of gcc during compilation)
-our $checksum;		# If set, calculate a checksum for each line
-our $no_checksum;	# If set, don't calculate a checksum for each line
-our $compat_libtool;	# If set, indicates that libtool mode is to be enabled
-our $no_compat_libtool;	# If set, indicates that libtool mode is to be disabled
-our $gcov_tool;
-our @opt_ignore_errors;
-our $initial;
-our @include_patterns; # List of source file patterns to include
-our @exclude_patterns; # List of source file patterns to exclude
-our $no_recursion = 0;
-our $to_package;
-our $from_package;
-our $maxdepth;
-our $no_markers;
-our $config;		# Configuration file contents
-chomp($cwd);
-our @temp_dirs;
-our $gcov_gkv;		# gcov kernel support version found on machine
-our $opt_derive_func_data;
-our $opt_debug;
-our $opt_list_full_path;
-our $opt_no_list_full_path;
-our $opt_list_width = 80;
-our $opt_list_truncate_max = 20;
-our $opt_external;
-our $opt_no_external;
-our $opt_config_file;
-our %opt_rc;
-our @opt_summary;
-our $opt_compat;
-our $ln_overall_found;
-our $ln_overall_hit;
-our $fn_overall_found;
-our $fn_overall_hit;
-our $br_overall_found;
-our $br_overall_hit;
-our $func_coverage = 1;
-our $br_coverage = 0;
-
-
-#
-# Code entry point
-#
-
-$SIG{__WARN__} = \&warn_handler;
-$SIG{__DIE__} = \&die_handler;
-$SIG{'INT'} = \&abort_handler;
-$SIG{'QUIT'} = \&abort_handler;
-
-# Check command line for a configuration file name
-Getopt::Long::Configure("pass_through", "no_auto_abbrev");
-GetOptions("config-file=s" => \$opt_config_file,
-	   "rc=s%" => \%opt_rc);
-Getopt::Long::Configure("default");
-
-{
-	# Remove spaces around rc options
-	my %new_opt_rc;
-
-	while (my ($key, $value) = each(%opt_rc)) {
-		$key =~ s/^\s+|\s+$//g;
-		$value =~ s/^\s+|\s+$//g;
-
-		$new_opt_rc{$key} = $value;
-	}
-	%opt_rc = %new_opt_rc;
-}
-
-# Read configuration file if available
-if (defined($opt_config_file)) {
-	$config = read_config($opt_config_file);
-} elsif (defined($ENV{"HOME"}) && (-r $ENV{"HOME"}."/.lcovrc"))
-{
-	$config = read_config($ENV{"HOME"}."/.lcovrc");
-}
-elsif (-r "/etc/lcovrc")
-{
-	$config = read_config("/etc/lcovrc");
-} elsif (-r "/usr/local/etc/lcovrc")
-{
-	$config = read_config("/usr/local/etc/lcovrc");
-}
-
-if ($config || %opt_rc)
-{
-	# Copy configuration file and --rc values to variables
-	apply_config({
-		"lcov_gcov_dir"		=> \$gcov_dir,
-		"lcov_tmp_dir"		=> \$tmp_dir,
-		"lcov_list_full_path"	=> \$opt_list_full_path,
-		"lcov_list_width"	=> \$opt_list_width,
-		"lcov_list_truncate_max"=> \$opt_list_truncate_max,
-		"lcov_branch_coverage"	=> \$br_coverage,
-		"lcov_function_coverage"=> \$func_coverage,
-	});
-}
-
-# Parse command line options
-if (!GetOptions("directory|d|di=s" => \@directory,
-		"add-tracefile|a=s" => \@add_tracefile,
-		"list|l=s" => \$list,
-		"kernel-directory|k=s" => \@kernel_directory,
-		"extract|e=s" => \$extract,
-		"remove|r=s" => \$remove,
-		"diff=s" => \$diff,
-		"convert-filenames" => \$convert_filenames,
-		"strip=i" => \$strip,
-		"capture|c" => \$capture,
-		"output-file|o=s" => \$output_filename,
-		"test-name|t=s" => \$test_name,
-		"zerocounters|z" => \$reset,
-		"quiet|q" => \$quiet,
-		"help|h|?" => \$help,
-		"version|v" => \$version,
-		"follow|f" => \$follow,
-		"path=s" => \$diff_path,
-		"base-directory|b=s" => \$base_directory,
-		"checksum" => \$checksum,
-		"no-checksum" => \$no_checksum,
-		"compat-libtool" => \$compat_libtool,
-		"no-compat-libtool" => \$no_compat_libtool,
-		"gcov-tool=s" => \$gcov_tool,
-		"ignore-errors=s" => \@opt_ignore_errors,
-		"initial|i" => \$initial,
-		"include=s" => \@include_patterns,
-		"exclude=s" => \@exclude_patterns,
-		"no-recursion" => \$no_recursion,
-		"to-package=s" => \$to_package,
-		"from-package=s" => \$from_package,
-		"no-markers" => \$no_markers,
-		"derive-func-data" => \$opt_derive_func_data,
-		"debug" => \$opt_debug,
-		"list-full-path" => \$opt_list_full_path,
-		"no-list-full-path" => \$opt_no_list_full_path,
-		"external" => \$opt_external,
-		"no-external" => \$opt_no_external,
-		"summary=s" => \@opt_summary,
-		"compat=s" => \$opt_compat,
-		"config-file=s" => \$opt_config_file,
-		"rc=s%" => \%opt_rc,
-		))
-{
-	print(STDERR "Use $tool_name --help to get usage information\n");
-	exit(1);
-}
-else
-{
-	# Merge options
-	if (defined($no_checksum))
-	{
-		$checksum = ($no_checksum ? 0 : 1);
-		$no_checksum = undef;
-	}
-
-	if (defined($no_compat_libtool))
-	{
-		$compat_libtool = ($no_compat_libtool ? 0 : 1);
-		$no_compat_libtool = undef;
-	}
-
-	if (defined($opt_no_list_full_path))
-	{
-		$opt_list_full_path = ($opt_no_list_full_path ? 0 : 1);
-		$opt_no_list_full_path = undef;
-	}
-
-	if (defined($opt_no_external)) {
-		$opt_external = 0;
-		$opt_no_external = undef;
-	}
-}
-
-# Check for help option
-if ($help)
-{
-	print_usage(*STDOUT);
-	exit(0);
-}
-
-# Check for version option
-if ($version)
-{
-	print("$tool_name: $lcov_version\n");
-	exit(0);
-}
-
-# Check list width option
-if ($opt_list_width <= 40) {
-	die("ERROR: lcov_list_width parameter out of range (needs to be ".
-	    "larger than 40)\n");
-}
-
-# Normalize --path text
-$diff_path =~ s/\/$//;
-
-if ($follow)
-{
-	$follow = "-follow";
-}
-else
-{
-	$follow = "";
-}
-
-if ($no_recursion)
-{
-	$maxdepth = "-maxdepth 1";
-}
-else
-{
-	$maxdepth = "";
-}
-
-# Check for valid options
-check_options();
-
-# Only --extract, --remove and --diff allow unnamed parameters
-if (@ARGV && !($extract || $remove || $diff || @opt_summary))
-{
-	die("Extra parameter found: '".join(" ", @ARGV)."'\n".
-	    "Use $tool_name --help to get usage information\n");
-}
-
-# Check for output filename
-$data_stdout = !($output_filename && ($output_filename ne "-"));
-
-if ($capture)
-{
-	if ($data_stdout)
-	{
-		# Option that tells geninfo to write to stdout
-		$output_filename = "-";
-	}
-}
-
-# Determine kernel directory for gcov data
-if (!$from_package && !@directory && ($capture || $reset)) {
-	($gcov_gkv, $gcov_dir) = setup_gkv();
-}
-
-# Check for requested functionality
-if ($reset)
-{
-	$data_stdout = 0;
-	# Differentiate between user space and kernel reset
-	if (@directory)
-	{
-		userspace_reset();
-	}
-	else
-	{
-		kernel_reset();
-	}
-}
-elsif ($capture)
-{
-	# Capture source can be user space, kernel or package
-	if ($from_package) {
-		package_capture();
-	} elsif (@directory) {
-		userspace_capture();
-	} else {
-		if ($initial) {
-			if (defined($to_package)) {
-				die("ERROR: --initial cannot be used together ".
-				    "with --to-package\n");
-			}
-			kernel_capture_initial();
-		} else {
-			kernel_capture();
-		}
-	}
-}
-elsif (@add_tracefile)
-{
-	($ln_overall_found, $ln_overall_hit,
-	 $fn_overall_found, $fn_overall_hit,
-	 $br_overall_found, $br_overall_hit) = add_traces();
-}
-elsif ($remove)
-{
-	($ln_overall_found, $ln_overall_hit,
-	 $fn_overall_found, $fn_overall_hit,
-	 $br_overall_found, $br_overall_hit) = remove();
-}
-elsif ($extract)
-{
-	($ln_overall_found, $ln_overall_hit,
-	 $fn_overall_found, $fn_overall_hit,
-	 $br_overall_found, $br_overall_hit) = extract();
-}
-elsif ($list)
-{
-	$data_stdout = 0;
-	list();
-}
-elsif ($diff)
-{
-	if (scalar(@ARGV) != 1)
-	{
-		die("ERROR: option --diff requires one additional argument!\n".
-		    "Use $tool_name --help to get usage information\n");
-	}
-	($ln_overall_found, $ln_overall_hit,
-	 $fn_overall_found, $fn_overall_hit,
-	 $br_overall_found, $br_overall_hit) = diff();
-}
-elsif (@opt_summary)
-{
-	$data_stdout = 0;
-	($ln_overall_found, $ln_overall_hit,
-	 $fn_overall_found, $fn_overall_hit,
-	 $br_overall_found, $br_overall_hit) = summary();
-}
-
-temp_cleanup();
-
-if (defined($ln_overall_found)) {
-	print_overall_rate(1, $ln_overall_found, $ln_overall_hit,
-			   1, $fn_overall_found, $fn_overall_hit,
-			   1, $br_overall_found, $br_overall_hit);
-} else {
-	info("Done.\n") if (!$list && !$capture);
-}
-exit(0);
-
-#
-# print_usage(handle)
-#
-# Print usage information.
-#
-
-sub print_usage(*)
-{
-	local *HANDLE = $_[0];
-
-	print(HANDLE <<END_OF_USAGE);
-Usage: $tool_name [OPTIONS]
-
-Use lcov to collect coverage data from either the currently running Linux
-kernel or from a user space application. Specify the --directory option to
-get coverage data for a user space program.
-
-Misc:
-  -h, --help                      Print this help, then exit
-  -v, --version                   Print version number, then exit
-  -q, --quiet                     Do not print progress messages
-
-Operation:
-  -z, --zerocounters              Reset all execution counts to zero
-  -c, --capture                   Capture coverage data
-  -a, --add-tracefile FILE        Add contents of tracefiles
-  -e, --extract FILE PATTERN      Extract files matching PATTERN from FILE
-  -r, --remove FILE PATTERN       Remove files matching PATTERN from FILE
-  -l, --list FILE                 List contents of tracefile FILE
-      --diff FILE DIFF            Transform tracefile FILE according to DIFF
-      --summary FILE              Show summary coverage data for tracefiles
-
-Options:
-  -i, --initial                   Capture initial zero coverage data
-  -t, --test-name NAME            Specify test name to be stored with data
-  -o, --output-file FILENAME      Write data to FILENAME instead of stdout
-  -d, --directory DIR             Use .da files in DIR instead of kernel
-  -f, --follow                    Follow links when searching .da files
-  -k, --kernel-directory KDIR     Capture kernel coverage data only from KDIR
-  -b, --base-directory DIR        Use DIR as base directory for relative paths
-      --convert-filenames         Convert filenames when applying diff
-      --strip DEPTH               Strip initial DEPTH directory levels in diff
-      --path PATH                 Strip PATH from tracefile when applying diff
-      --(no-)checksum             Enable (disable) line checksumming
-      --(no-)compat-libtool       Enable (disable) libtool compatibility mode
-      --gcov-tool TOOL            Specify gcov tool location
-      --ignore-errors ERRORS      Continue after ERRORS (gcov, source, graph)
-      --no-recursion              Exclude subdirectories from processing
-      --to-package FILENAME       Store unprocessed coverage data in FILENAME
-      --from-package FILENAME     Capture from unprocessed data in FILENAME
-      --no-markers                Ignore exclusion markers in source code
-      --derive-func-data          Generate function data from line data
-      --list-full-path            Print full path during a list operation
-      --(no-)external             Include (ignore) data for external files
-      --config-file FILENAME      Specify configuration file location
-      --rc SETTING=VALUE          Override configuration file setting
-      --compat MODE=on|off|auto   Set compat MODE (libtool, hammer, split_crc)
-      --include PATTERN           Include files matching PATTERN
-      --exclude PATTERN           Exclude files matching PATTERN
-
-For more information see: $lcov_url
-END_OF_USAGE
-	;
-}
-
-
-#
-# check_options()
-#
-# Check for valid combination of command line options. Die on error.
-#
-
-sub check_options()
-{
-	my $i = 0;
-
-	# Count occurrence of mutually exclusive options
-	$reset && $i++;
-	$capture && $i++;
-	@add_tracefile && $i++;
-	$extract && $i++;
-	$remove && $i++;
-	$list && $i++;
-	$diff && $i++;
-	@opt_summary && $i++;
-	
-	if ($i == 0)
-	{
-		die("Need one of options -z, -c, -a, -e, -r, -l, ".
-		    "--diff or --summary\n".
-		    "Use $tool_name --help to get usage information\n");
-	}
-	elsif ($i > 1)
-	{
-		die("ERROR: only one of -z, -c, -a, -e, -r, -l, ".
-		    "--diff or --summary allowed!\n".
-		    "Use $tool_name --help to get usage information\n");
-	}
-}
-
-
-#
-# userspace_reset()
-#
-# Reset coverage data found in DIRECTORY by deleting all contained .da files.
-#
-# Die on error.
-#
-
-sub userspace_reset()
-{
-	my $current_dir;
-	my @file_list;
-
-	foreach $current_dir (@directory)
-	{
-		info("Deleting all .da files in $current_dir".
-		     ($no_recursion?"\n":" and subdirectories\n"));
-		@file_list = `find "$current_dir" $maxdepth $follow -name \\*\\.da -type f -o -name \\*\\.gcda -type f 2>/dev/null`;
-		chomp(@file_list);
-		foreach (@file_list)
-		{
-			unlink($_) or die("ERROR: cannot remove file $_!\n");
-		}
-	}
-}
-
-
-#
-# userspace_capture()
-#
-# Capture coverage data found in DIRECTORY and write it to a package (if
-# TO_PACKAGE specified) or to OUTPUT_FILENAME or STDOUT.
-#
-# Die on error.
-#
-
-sub userspace_capture()
-{
-	my $dir;
-	my $build;
-
-	if (!defined($to_package)) {
-		lcov_geninfo(@directory);
-		return;
-	}
-	if (scalar(@directory) != 1) {
-		die("ERROR: -d may be specified only once with --to-package\n");
-	}
-	$dir = $directory[0];
-	if (defined($base_directory)) {
-		$build = $base_directory;
-	} else {
-		$build = $dir;
-	}
-	create_package($to_package, $dir, $build);
-}
-
-
-#
-# kernel_reset()
-#
-# Reset kernel coverage.
-#
-# Die on error.
-#
-
-sub kernel_reset()
-{
-	local *HANDLE;
-	my $reset_file;
-
-	info("Resetting kernel execution counters\n");
-	if (-e "$gcov_dir/vmlinux") {
-		$reset_file = "$gcov_dir/vmlinux";
-	} elsif (-e "$gcov_dir/reset") {
-		$reset_file = "$gcov_dir/reset";
-	} else {
-		die("ERROR: no reset control found in $gcov_dir\n");
-	}
-	open(HANDLE, ">", $reset_file) or
-		die("ERROR: cannot write to $reset_file!\n");
-	print(HANDLE "0");
-	close(HANDLE);
-}
-
-
-#
-# lcov_copy_single(from, to)
-# 
-# Copy single regular file FROM to TO without checking its size. This is
-# required to work with special files generated by the kernel
-# seq_file-interface.
-#
-#
-sub lcov_copy_single($$)
-{
-	my ($from, $to) = @_;
-	my $content;
-	local $/;
-	local *HANDLE;
-
-	open(HANDLE, "<", $from) or die("ERROR: cannot read $from: $!\n");
-	$content = <HANDLE>;
-	close(HANDLE);
-	open(HANDLE, ">", $to) or die("ERROR: cannot write $from: $!\n");
-	if (defined($content)) {
-		print(HANDLE $content);
-	}
-	close(HANDLE);
-}
-
-#
-# lcov_find(dir, function, data[, extension, ...)])
-#
-# Search DIR for files and directories whose name matches PATTERN and run
-# FUNCTION for each match. If not pattern is specified, match all names.
-#
-# FUNCTION has the following prototype:
-#   function(dir, relative_name, data)
-#
-# Where:
-#   dir: the base directory for this search
-#   relative_name: the name relative to the base directory of this entry
-#   data: the DATA variable passed to lcov_find
-#
-sub lcov_find($$$;@)
-{
-	my ($dir, $fn, $data, @pattern) = @_;
-	my $result;
-	my $_fn = sub {
-		my $filename = $File::Find::name;
-
-		if (defined($result)) {
-			return;
-		}		
-		$filename = abs2rel($filename, $dir);
-		foreach (@pattern) {
-			if ($filename =~ /$_/) {
-				goto ok;
-			}
-		}
-		return;
-	ok:
-		$result = &$fn($dir, $filename, $data);
-	};
-	if (scalar(@pattern) == 0) {
-		@pattern = ".*";
-	}
-	find( { wanted => $_fn, no_chdir => 1 }, $dir);
-
-	return $result;
-}
-
-#
-# lcov_copy_fn(from, rel, to)
-#
-# Copy directories, files and links from/rel to to/rel.
-#
-
-sub lcov_copy_fn($$$)
-{
-	my ($from, $rel, $to) = @_;
-	my $absfrom = canonpath(catfile($from, $rel));
-	my $absto = canonpath(catfile($to, $rel));
-
-	if (-d) {
-		if (! -d $absto) {
-			mkpath($absto) or
-				die("ERROR: cannot create directory $absto\n");
-			chmod(0700, $absto);
-		}
-	} elsif (-l) {
-		# Copy symbolic link
-		my $link = readlink($absfrom);
-
-		if (!defined($link)) {
-			die("ERROR: cannot read link $absfrom: $!\n");
-		}
-		symlink($link, $absto) or
-			die("ERROR: cannot create link $absto: $!\n");
-	} else {
-		lcov_copy_single($absfrom, $absto);
-		chmod(0600, $absto);
-	}
-	return undef;
-}
-
-#
-# lcov_copy(from, to, subdirs)
-# 
-# Copy all specified SUBDIRS and files from directory FROM to directory TO. For
-# regular files, copy file contents without checking its size. This is required
-# to work with seq_file-generated files.
-#
-
-sub lcov_copy($$;@)
-{
-	my ($from, $to, @subdirs) = @_;
-	my @pattern;
-
-	foreach (@subdirs) {
-		push(@pattern, "^$_");
-	}
-	lcov_find($from, \&lcov_copy_fn, $to, @pattern);
-}
-
-#
-# lcov_geninfo(directory)
-#
-# Call geninfo for the specified directory and with the parameters specified
-# at the command line.
-#
-
-sub lcov_geninfo(@)
-{
-	my (@dir) = @_;
-	my @param;
-
-	# Capture data
-	info("Capturing coverage data from ".join(" ", @dir)."\n");
-	@param = ("$tool_dir/geninfo", @dir);
-	if ($output_filename)
-	{
-		@param = (@param, "--output-filename", $output_filename);
-	}
-	if ($test_name)
-	{
-		@param = (@param, "--test-name", $test_name);
-	}
-	if ($follow)
-	{
-		@param = (@param, "--follow");
-	}
-	if ($quiet)
-	{
-		@param = (@param, "--quiet");
-	}
-	if (defined($checksum))
-	{
-		if ($checksum)
-		{
-			@param = (@param, "--checksum");
-		}
-		else
-		{
-			@param = (@param, "--no-checksum");
-		}
-	}
-	if ($base_directory)
-	{
-		@param = (@param, "--base-directory", $base_directory);
-	}
-	if ($no_compat_libtool)
-	{
-		@param = (@param, "--no-compat-libtool");
-	}
-	elsif ($compat_libtool)
-	{
-		@param = (@param, "--compat-libtool");
-	}
-	if ($gcov_tool)
-	{
-		@param = (@param, "--gcov-tool", $gcov_tool);
-	}
-	foreach (@opt_ignore_errors) {
-		@param = (@param, "--ignore-errors", $_);
-	}
-	if ($no_recursion) {
-		@param = (@param, "--no-recursion");
-	}
-	if ($initial)
-	{
-		@param = (@param, "--initial");
-	}
-	if ($no_markers)
-	{
-		@param = (@param, "--no-markers");
-	}
-	if ($opt_derive_func_data)
-	{
-		@param = (@param, "--derive-func-data");
-	}
-	if ($opt_debug)
-	{
-		@param = (@param, "--debug");
-	}
-	if (defined($opt_external) && $opt_external)
-	{
-		@param = (@param, "--external");
-	}
-	if (defined($opt_external) && !$opt_external)
-	{
-		@param = (@param, "--no-external");
-	}
-	if (defined($opt_compat)) {
-		@param = (@param, "--compat", $opt_compat);
-	}
-	if (%opt_rc) {
-		foreach my $key (keys(%opt_rc)) {
-			@param = (@param, "--rc", "$key=".$opt_rc{$key});
-		}
-	}
-	if (defined($opt_config_file)) {
-		@param = (@param, "--config-file", $opt_config_file);
-	}
-	foreach (@include_patterns) {
-		@param = (@param, "--include", $_);
-	}
-	foreach (@exclude_patterns) {
-		@param = (@param, "--exclude", $_);
-	}
-
-	system(@param) and exit($? >> 8);
-}
-
-#
-# read_file(filename)
-#
-# Return the contents of the file defined by filename.
-#
-
-sub read_file($)
-{
-	my ($filename) = @_;
-	my $content;
-	local $\;
-	local *HANDLE;
-
-	open(HANDLE, "<", $filename) || return undef;
-	$content = <HANDLE>;
-	close(HANDLE);
-
-	return $content;
-}
-
-#
-# get_package(package_file)
-#
-# Unpack unprocessed coverage data files from package_file to a temporary
-# directory and return directory name, build directory and gcov kernel version
-# as found in package.
-#
-
-sub get_package($)
-{
-	my ($file) = @_;
-	my $dir = create_temp_dir();
-	my $gkv;
-	my $build;
-	my $cwd = getcwd();
-	my $count;
-	local *HANDLE;
-
-	info("Reading package $file:\n");
-	$file = abs_path($file);
-	chdir($dir);
-	open(HANDLE, "-|", "tar xvfz '$file' 2>/dev/null")
-		or die("ERROR: could not process package $file\n");
-	$count = 0;
-	while (<HANDLE>) {
-		if (/\.da$/ || /\.gcda$/) {
-			$count++;
-		}
-	}
-	close(HANDLE);
-	if ($count == 0) {
-		die("ERROR: no data file found in package $file\n");
-	}
-	info("  data directory .......: $dir\n");
-	$build = read_file("$dir/$pkg_build_file");
-	if (defined($build)) {
-		info("  build directory ......: $build\n");
-	}
-	$gkv = read_file("$dir/$pkg_gkv_file");
-	if (defined($gkv)) {
-		$gkv = int($gkv);
-		if ($gkv != $GKV_PROC && $gkv != $GKV_SYS) {
-			die("ERROR: unsupported gcov kernel version found ".
-			    "($gkv)\n");
-		}
-		info("  content type .........: kernel data\n");
-		info("  gcov kernel version ..: %s\n", $GKV_NAME[$gkv]);
-	} else {
-		info("  content type .........: application data\n");
-	}
-	info("  data files ...........: $count\n");
-	chdir($cwd);
-
-	return ($dir, $build, $gkv);
-}
-
-#
-# write_file(filename, $content)
-#
-# Create a file named filename and write the specified content to it.
-#
-
-sub write_file($$)
-{
-	my ($filename, $content) = @_;
-	local *HANDLE;
-
-	open(HANDLE, ">", $filename) || return 0;
-	print(HANDLE $content);
-	close(HANDLE) || return 0;
-
-	return 1;
-}
-
-# count_package_data(filename)
-#
-# Count the number of coverage data files in the specified package file.
-#
-
-sub count_package_data($)
-{
-	my ($filename) = @_;
-	local *HANDLE;
-	my $count = 0;
-
-	open(HANDLE, "-|", "tar tfz '$filename'") or return undef;
-	while (<HANDLE>) {
-		if (/\.da$/ || /\.gcda$/) {
-			$count++;
-		}
-	}
-	close(HANDLE);
-	return $count;
-}
-
-#
-# create_package(package_file, source_directory, build_directory[,
-# 		 kernel_gcov_version])
-#
-# Store unprocessed coverage data files from source_directory to package_file.
-#
-
-sub create_package($$$;$)
-{
-	my ($file, $dir, $build, $gkv) = @_;
-	my $cwd = getcwd();
-
-	# Check for availability of tar tool first
-	system("tar --help > /dev/null")
-		and die("ERROR: tar command not available\n");
-
-	# Print information about the package
-	info("Creating package $file:\n");
-	info("  data directory .......: $dir\n");
-
-	# Handle build directory
-	if (defined($build)) {
-		info("  build directory ......: $build\n");
-		write_file("$dir/$pkg_build_file", $build)
-			or die("ERROR: could not write to ".
-			       "$dir/$pkg_build_file\n");
-	}
-
-	# Handle gcov kernel version data
-	if (defined($gkv)) {
-		info("  content type .........: kernel data\n");
-		info("  gcov kernel version ..: %s\n", $GKV_NAME[$gkv]);
-		write_file("$dir/$pkg_gkv_file", $gkv)
-			or die("ERROR: could not write to ".
-			       "$dir/$pkg_gkv_file\n");
-	} else {
-		info("  content type .........: application data\n");
-	}
-
-	# Create package
-	$file = abs_path($file);
-	chdir($dir);
-	system("tar cfz $file .")
-		and die("ERROR: could not create package $file\n");
-	chdir($cwd);
-
-	# Remove temporary files
-	unlink("$dir/$pkg_build_file");
-	unlink("$dir/$pkg_gkv_file");
-
-	# Show number of data files
-	if (!$quiet) {
-		my $count = count_package_data($file);
-
-		if (defined($count)) {
-			info("  data files ...........: $count\n");
-		}
-	}
-}
-
-sub find_link_fn($$$)
-{
-	my ($from, $rel, $filename) = @_;
-	my $absfile = catfile($from, $rel, $filename);
-
-	if (-l $absfile) {
-		return $absfile;
-	}
-	return undef;
-}
-
-#
-# get_base(dir)
-#
-# Return (BASE, OBJ), where
-#  - BASE: is the path to the kernel base directory relative to dir
-#  - OBJ: is the absolute path to the kernel build directory
-#
-
-sub get_base($)
-{
-	my ($dir) = @_;
-	my $marker = "kernel/gcov/base.gcno";
-	my $markerfile;
-	my $sys;
-	my $obj;
-	my $link;
-
-	$markerfile = lcov_find($dir, \&find_link_fn, $marker);
-	if (!defined($markerfile)) {
-		return (undef, undef);
-	}
-
-	# sys base is parent of parent of markerfile.
-	$sys = abs2rel(dirname(dirname(dirname($markerfile))), $dir);
-
-	# obj base is parent of parent of markerfile link target.
-	$link = readlink($markerfile);
-	if (!defined($link)) {
-		die("ERROR: could not read $markerfile\n");
-	}
-	$obj = dirname(dirname(dirname($link)));
-
-	return ($sys, $obj);
-}
-
-#
-# apply_base_dir(data_dir, base_dir, build_dir, @directories)
-#
-# Make entries in @directories relative to data_dir.
-#
-
-sub apply_base_dir($$$@)
-{
-	my ($data, $base, $build, @dirs) = @_;
-	my $dir;
-	my @result;
-
-	foreach $dir (@dirs) {
-		# Is directory path relative to data directory?
-		if (-d catdir($data, $dir)) {
-			push(@result, $dir);
-			next;
-		}
-		# Relative to the auto-detected base-directory?
-		if (defined($base)) {
-			if (-d catdir($data, $base, $dir)) {
-				push(@result, catdir($base, $dir));
-				next;
-			}
-		}
-		# Relative to the specified base-directory?
-		if (defined($base_directory)) {
-			if (file_name_is_absolute($base_directory)) {
-				$base = abs2rel($base_directory, rootdir());
-			} else {
-				$base = $base_directory;
-			}
-			if (-d catdir($data, $base, $dir)) {
-				push(@result, catdir($base, $dir));
-				next;
-			}
-		}
-		# Relative to the build directory?
-		if (defined($build)) {
-			if (file_name_is_absolute($build)) {
-				$base = abs2rel($build, rootdir());
-			} else {
-				$base = $build;
-			}
-			if (-d catdir($data, $base, $dir)) {
-				push(@result, catdir($base, $dir));
-				next;
-			}
-		}
-		die("ERROR: subdirectory $dir not found\n".
-		    "Please use -b to specify the correct directory\n");
-	}
-	return @result;
-}
-
-#
-# copy_gcov_dir(dir, [@subdirectories])
-#
-# Create a temporary directory and copy all or, if specified, only some
-# subdirectories from dir to that directory. Return the name of the temporary
-# directory.
-#
-
-sub copy_gcov_dir($;@)
-{
-	my ($data, @dirs) = @_;
-	my $tempdir = create_temp_dir();
-
-	info("Copying data to temporary directory $tempdir\n");
-	lcov_copy($data, $tempdir, @dirs);
-
-	return $tempdir;
-}
-
-#
-# kernel_capture_initial
-#
-# Capture initial kernel coverage data, i.e. create a coverage data file from
-# static graph files which contains zero coverage data for all instrumented
-# lines.
-#
-
-sub kernel_capture_initial()
-{
-	my $build;
-	my $source;
-	my @params;
-
-	if (defined($base_directory)) {
-		$build = $base_directory;
-		$source = "specified";
-	} else {
-		(undef, $build) = get_base($gcov_dir);
-		if (!defined($build)) {
-			die("ERROR: could not auto-detect build directory.\n".
-			    "Please use -b to specify the build directory\n");
-		}
-		$source = "auto-detected";
-	}
-	info("Using $build as kernel build directory ($source)\n");
-	# Build directory needs to be passed to geninfo
-	$base_directory = $build;
-	if (@kernel_directory) {
-		foreach my $dir (@kernel_directory) {
-			push(@params, "$build/$dir");
-		}
-	} else {
-		push(@params, $build);
-	}
-	lcov_geninfo(@params);
-}
-
-#
-# kernel_capture_from_dir(directory, gcov_kernel_version, build)
-#
-# Perform the actual kernel coverage capturing from the specified directory
-# assuming that the data was copied from the specified gcov kernel version.
-#
-
-sub kernel_capture_from_dir($$$)
-{
-	my ($dir, $gkv, $build) = @_;
-
-	# Create package or coverage file
-	if (defined($to_package)) {
-		create_package($to_package, $dir, $build, $gkv);
-	} else {
-		# Build directory needs to be passed to geninfo
-		$base_directory = $build;
-		lcov_geninfo($dir);
-	}
-}
-
-#
-# adjust_kernel_dir(dir, build)
-#
-# Adjust directories specified with -k so that they point to the directory
-# relative to DIR. Return the build directory if specified or the auto-
-# detected build-directory.
-#
-
-sub adjust_kernel_dir($$)
-{
-	my ($dir, $build) = @_;
-	my ($sys_base, $build_auto) = get_base($dir);
-
-	if (!defined($build)) {
-		$build = $build_auto;
-	}
-	if (!defined($build)) {
-		die("ERROR: could not auto-detect build directory.\n".
-		    "Please use -b to specify the build directory\n");
-	}
-	# Make @kernel_directory relative to sysfs base
-	if (@kernel_directory) {
-		@kernel_directory = apply_base_dir($dir, $sys_base, $build,
-						   @kernel_directory);
-	}
-	return $build;
-}
-
-sub kernel_capture()
-{
-	my $data_dir;
-	my $build = $base_directory;
-
-	if ($gcov_gkv == $GKV_SYS) {
-		$build = adjust_kernel_dir($gcov_dir, $build);
-	}
-	$data_dir = copy_gcov_dir($gcov_dir, @kernel_directory);
-	kernel_capture_from_dir($data_dir, $gcov_gkv, $build);
-}
-
-#
-# link_data_cb(datadir, rel, graphdir)
-#
-# Create symbolic link in GRAPDIR/REL pointing to DATADIR/REL.
-#
-
-sub link_data_cb($$$)
-{
-	my ($datadir, $rel, $graphdir) = @_;
-	my $absfrom = catfile($datadir, $rel);
-	my $absto = catfile($graphdir, $rel);
-	my $base;
-	my $dir;
-
-	if (-e $absto) {
-		die("ERROR: could not create symlink at $absto: ".
-		    "File already exists!\n");
-	}
-	if (-l $absto) {
-		# Broken link - possibly from an interrupted earlier run
-		unlink($absto);
-	}
-
-	# Check for graph file
-	$base = $absto;
-	$base =~ s/\.(gcda|da)$//;
-	if (! -e $base.".gcno" && ! -e $base.".bbg" && ! -e $base.".bb") {
-		die("ERROR: No graph file found for $absfrom in ".
-		    dirname($base)."!\n");
-	}
-
-	symlink($absfrom, $absto) or
-		die("ERROR: could not create symlink at $absto: $!\n");
-}
-
-#
-# unlink_data_cb(datadir, rel, graphdir)
-#
-# Remove symbolic link from GRAPHDIR/REL to DATADIR/REL.
-#
-
-sub unlink_data_cb($$$)
-{
-	my ($datadir, $rel, $graphdir) = @_;
-	my $absfrom = catfile($datadir, $rel);
-	my $absto = catfile($graphdir, $rel);
-	my $target;
-
-	return if (!-l $absto);
-	$target = readlink($absto);
-	return if (!defined($target) || $target ne $absfrom);
-
-	unlink($absto) or
-		warn("WARNING: could not remove symlink $absto: $!\n");
-}
-
-#
-# link_data(datadir, graphdir, create)
-#
-# If CREATE is non-zero, create symbolic links in GRAPHDIR for data files
-# found in DATADIR. Otherwise remove link in GRAPHDIR.
-#
-
-sub link_data($$$)
-{
-	my ($datadir, $graphdir, $create) = @_;
-
-	$datadir = abs_path($datadir);
-	$graphdir = abs_path($graphdir);
-	if ($create) {
-		lcov_find($datadir, \&link_data_cb, $graphdir, '\.gcda$',
-			  '\.da$');
-	} else {
-		lcov_find($datadir, \&unlink_data_cb, $graphdir, '\.gcda$',
-			  '\.da$');
-	}
-}
-
-#
-# find_graph_cb(datadir, rel, count_ref)
-#
-# Count number of files found.
-#
-
-sub find_graph_cb($$$)
-{
-	my ($dir, $rel, $count_ref) = @_;
-
-	($$count_ref)++;
-}
-
-#
-# find_graph(dir)
-#
-# Search DIR for a graph file. Return non-zero if one was found, zero otherwise.
-#
-
-sub find_graph($)
-{
-	my ($dir) = @_;
-	my $count = 0;
-
-	lcov_find($dir, \&find_graph_cb, \$count, '\.gcno$', '\.bb$', '\.bbg$');
-
-	return $count > 0 ? 1 : 0;
-}
-
-#
-# package_capture()
-#
-# Capture coverage data from a package of unprocessed coverage data files
-# as generated by lcov --to-package.
-#
-
-sub package_capture()
-{
-	my $dir;
-	my $build;
-	my $gkv;
-
-	($dir, $build, $gkv) = get_package($from_package);
-
-	# Check for build directory
-	if (defined($base_directory)) {
-		if (defined($build)) {
-			info("Using build directory specified by -b.\n");
-		}
-		$build = $base_directory;
-	}
-
-	# Do the actual capture
-	if (defined($gkv)) {
-		if ($gkv == $GKV_SYS) {
-			$build = adjust_kernel_dir($dir, $build);
-		}
-		if (@kernel_directory) {
-			$dir = copy_gcov_dir($dir, @kernel_directory);	
-		}
-		kernel_capture_from_dir($dir, $gkv, $build);
-	} else {
-		# Build directory needs to be passed to geninfo
-		$base_directory = $build;
-		if (find_graph($dir)) {
-			# Package contains graph files - collect from there
-			lcov_geninfo($dir);
-		} else {
-			# No graph files found, link data files next to
-			# graph files
-			link_data($dir, $base_directory, 1);
-			lcov_geninfo($base_directory);
-			link_data($dir, $base_directory, 0);
-		}
-	}
-}
-
-
-#
-# info(printf_parameter)
-#
-# Use printf to write PRINTF_PARAMETER to stdout only when the $quiet flag
-# is not set.
-#
-
-sub info(@)
-{
-	if (!$quiet)
-	{
-		# Print info string
-		if (!$data_stdout)
-		{
-			printf(@_)
-		}
-		else
-		{
-			# Don't interfere with the .info output to STDOUT
-			printf(STDERR @_);
-		}
-	}
-}
-
-
-#
-# create_temp_dir()
-#
-# Create a temporary directory and return its path.
-#
-# Die on error.
-#
-
-sub create_temp_dir()
-{
-	my $dir;
-
-	if (defined($tmp_dir)) {
-		$dir = tempdir(DIR => $tmp_dir, CLEANUP => 1);
-	} else {
-		$dir = tempdir(CLEANUP => 1);
-	}
-	if (!defined($dir)) {
-		die("ERROR: cannot create temporary directory\n");
-	}
-	push(@temp_dirs, $dir);
-
-	return $dir;
-}
-
-sub compress_brcount($)
-{
-	my ($brcount) = @_;
-	my $db;
-
-	$db = brcount_to_db($brcount);
-	return db_to_brcount($db, $brcount);
-}
-
-sub get_br_found_and_hit($)
-{
-	my ($brcount) = @_;
-	my $db;
-
-	$db = brcount_to_db($brcount);
-
-	return brcount_db_get_found_and_hit($db);
-}
-
-
-#
-# read_info_file(info_filename)
-#
-# Read in the contents of the .info file specified by INFO_FILENAME. Data will
-# be returned as a reference to a hash containing the following mappings:
-#
-# %result: for each filename found in file -> \%data
-#
-# %data: "test"  -> \%testdata
-#        "sum"   -> \%sumcount
-#        "func"  -> \%funcdata
-#        "found" -> $lines_found (number of instrumented lines found in file)
-#	 "hit"   -> $lines_hit (number of executed lines in file)
-#        "f_found" -> $fn_found (number of instrumented functions found in file)
-#	 "f_hit"   -> $fn_hit (number of executed functions in file)
-#        "b_found" -> $br_found (number of instrumented branches found in file)
-#	 "b_hit"   -> $br_hit (number of executed branches in file)
-#        "check" -> \%checkdata
-#        "testfnc" -> \%testfncdata
-#        "sumfnc"  -> \%sumfnccount
-#        "testbr"  -> \%testbrdata
-#        "sumbr"   -> \%sumbrcount
-#
-# %testdata   : name of test affecting this file -> \%testcount
-# %testfncdata: name of test affecting this file -> \%testfnccount
-# %testbrdata:  name of test affecting this file -> \%testbrcount
-#
-# %testcount   : line number   -> execution count for a single test
-# %testfnccount: function name -> execution count for a single test
-# %testbrcount : line number   -> branch coverage data for a single test
-# %sumcount    : line number   -> execution count for all tests
-# %sumfnccount : function name -> execution count for all tests
-# %sumbrcount  : line number   -> branch coverage data for all tests
-# %funcdata    : function name -> line number
-# %checkdata   : line number   -> checksum of source code line
-# $brdata      : text "block,branch,taken:..."
-# 
-# Note that .info file sections referring to the same file and test name
-# will automatically be combined by adding all execution counts.
-#
-# Note that if INFO_FILENAME ends with ".gz", it is assumed that the file
-# is compressed using GZIP. If available, GUNZIP will be used to decompress
-# this file.
-#
-# Die on error.
-#
-
-sub read_info_file($)
-{
-	my $tracefile = $_[0];		# Name of tracefile
-	my %result;			# Resulting hash: file -> data
-	my $data;			# Data handle for current entry
-	my $testdata;			#       "             "
-	my $testcount;			#       "             "
-	my $sumcount;			#       "             "
-	my $funcdata;			#       "             "
-	my $checkdata;			#       "             "
-	my $testfncdata;
-	my $testfnccount;
-	my $sumfnccount;
-	my $testbrdata;
-	my $testbrcount;
-	my $sumbrcount;
-	my $line;			# Current line read from .info file
-	my $testname;			# Current test name
-	my $filename;			# Current filename
-	my $hitcount;			# Count for lines hit
-	my $count;			# Execution count of current line
-	my $negative;			# If set, warn about negative counts
-	my $changed_testname;		# If set, warn about changed testname
-	my $line_checksum;		# Checksum of current line
-	local *INFO_HANDLE;		# Filehandle for .info file
-
-	info("Reading tracefile $tracefile\n");
-
-	# Check if file exists and is readable
-	stat($_[0]);
-	if (!(-r _))
-	{
-		die("ERROR: cannot read file $_[0]!\n");
-	}
-
-	# Check if this is really a plain file
-	if (!(-f _))
-	{
-		die("ERROR: not a plain file: $_[0]!\n");
-	}
-
-	# Check for .gz extension
-	if ($_[0] =~ /\.gz$/)
-	{
-		# Check for availability of GZIP tool
-		system_no_output(1, "gunzip" ,"-h")
-			and die("ERROR: gunzip command not available!\n");
-
-		# Check integrity of compressed file
-		system_no_output(1, "gunzip", "-t", $_[0])
-			and die("ERROR: integrity check failed for ".
-				"compressed file $_[0]!\n");
-
-		# Open compressed file
-		open(INFO_HANDLE, "-|", "gunzip -c '$_[0]'")
-			or die("ERROR: cannot start gunzip to decompress ".
-			       "file $_[0]!\n");
-	}
-	else
-	{
-		# Open decompressed file
-		open(INFO_HANDLE, "<", $_[0])
-			or die("ERROR: cannot read file $_[0]!\n");
-	}
-
-	$testname = "";
-	while (<INFO_HANDLE>)
-	{
-		chomp($_);
-		$line = $_;
-
-		# Switch statement
-		foreach ($line)
-		{
-			/^TN:([^,]*)(,diff)?/ && do
-			{
-				# Test name information found
-				$testname = defined($1) ? $1 : "";
-				if ($testname =~ s/\W/_/g)
-				{
-					$changed_testname = 1;
-				}
-				$testname .= $2 if (defined($2));
-				last;
-			};
-
-			/^[SK]F:(.*)/ && do
-			{
-				# Filename information found
-				# Retrieve data for new entry
-				$filename = $1;
-
-				$data = $result{$filename};
-				($testdata, $sumcount, $funcdata, $checkdata,
-				 $testfncdata, $sumfnccount, $testbrdata,
-				 $sumbrcount) =
-					get_info_entry($data);
-
-				if (defined($testname))
-				{
-					$testcount = $testdata->{$testname};
-					$testfnccount = $testfncdata->{$testname};
-					$testbrcount = $testbrdata->{$testname};
-				}
-				else
-				{
-					$testcount = {};
-					$testfnccount = {};
-					$testbrcount = {};
-				}
-				last;
-			};
-
-			/^DA:(\d+),(-?\d+)(,[^,\s]+)?/ && do
-			{
-				# Fix negative counts
-				$count = $2 < 0 ? 0 : $2;
-				if ($2 < 0)
-				{
-					$negative = 1;
-				}
-				# Execution count found, add to structure
-				# Add summary counts
-				$sumcount->{$1} += $count;
-
-				# Add test-specific counts
-				if (defined($testname))
-				{
-					$testcount->{$1} += $count;
-				}
-
-				# Store line checksum if available
-				if (defined($3))
-				{
-					$line_checksum = substr($3, 1);
-
-					# Does it match a previous definition
-					if (defined($checkdata->{$1}) &&
-					    ($checkdata->{$1} ne
-					     $line_checksum))
-					{
-						die("ERROR: checksum mismatch ".
-						    "at $filename:$1\n");
-					}
-
-					$checkdata->{$1} = $line_checksum;
-				}
-				last;
-			};
-
-			/^FN:(\d+),([^,]+)/ && do
-			{
-				last if (!$func_coverage);
-
-				# Function data found, add to structure
-				$funcdata->{$2} = $1;
-
-				# Also initialize function call data
-				if (!defined($sumfnccount->{$2})) {
-					$sumfnccount->{$2} = 0;
-				}
-				if (defined($testname))
-				{
-					if (!defined($testfnccount->{$2})) {
-						$testfnccount->{$2} = 0;
-					}
-				}
-				last;
-			};
-
-			/^FNDA:(\d+),([^,]+)/ && do
-			{
-				last if (!$func_coverage);
-
-				# Function call count found, add to structure
-				# Add summary counts
-				$sumfnccount->{$2} += $1;
-
-				# Add test-specific counts
-				if (defined($testname))
-				{
-					$testfnccount->{$2} += $1;
-				}
-				last;
-			};
-
-			/^BRDA:(\d+),(\d+),(\d+),(\d+|-)/ && do {
-				# Branch coverage data found
-				my ($line, $block, $branch, $taken) =
-				   ($1, $2, $3, $4);
-
-				last if (!$br_coverage);
-				$sumbrcount->{$line} .=
-					"$block,$branch,$taken:";
-
-				# Add test-specific counts
-				if (defined($testname)) {
-					$testbrcount->{$line} .=
-						"$block,$branch,$taken:";
-				}
-				last;
-			};
-
-			/^end_of_record/ && do
-			{
-				# Found end of section marker
-				if ($filename)
-				{
-					# Store current section data
-					if (defined($testname))
-					{
-						$testdata->{$testname} =
-							$testcount;
-						$testfncdata->{$testname} =
-							$testfnccount;
-						$testbrdata->{$testname} =
-							$testbrcount;
-					}	
-
-					set_info_entry($data, $testdata,
-						       $sumcount, $funcdata,
-						       $checkdata, $testfncdata,
-						       $sumfnccount,
-						       $testbrdata,
-						       $sumbrcount);
-					$result{$filename} = $data;
-					last;
-				}
-			};
-
-			# default
-			last;
-		}
-	}
-	close(INFO_HANDLE);
-
-	# Calculate hit and found values for lines and functions of each file
-	foreach $filename (keys(%result))
-	{
-		$data = $result{$filename};
-
-		($testdata, $sumcount, undef, undef, $testfncdata,
-		 $sumfnccount, $testbrdata, $sumbrcount) =
-			get_info_entry($data);
-
-		# Filter out empty files
-		if (scalar(keys(%{$sumcount})) == 0)
-		{
-			delete($result{$filename});
-			next;
-		}
-		# Filter out empty test cases
-		foreach $testname (keys(%{$testdata}))
-		{
-			if (!defined($testdata->{$testname}) ||
-			    scalar(keys(%{$testdata->{$testname}})) == 0)
-			{
-				delete($testdata->{$testname});
-				delete($testfncdata->{$testname});
-			}
-		}
-
-		$data->{"found"} = scalar(keys(%{$sumcount}));
-		$hitcount = 0;
-
-		foreach (keys(%{$sumcount}))
-		{
-			if ($sumcount->{$_} > 0) { $hitcount++; }
-		}
-
-		$data->{"hit"} = $hitcount;
-
-		# Get found/hit values for function call data
-		$data->{"f_found"} = scalar(keys(%{$sumfnccount}));
-		$hitcount = 0;
-
-		foreach (keys(%{$sumfnccount})) {
-			if ($sumfnccount->{$_} > 0) {
-				$hitcount++;
-			}
-		}
-		$data->{"f_hit"} = $hitcount;
-
-		# Combine branch data for the same branches
-		(undef, $data->{"b_found"}, $data->{"b_hit"}) =
-			compress_brcount($sumbrcount);
-		foreach $testname (keys(%{$testbrdata})) {
-			compress_brcount($testbrdata->{$testname});
-		}
-	}
-
-	if (scalar(keys(%result)) == 0)
-	{
-		die("ERROR: no valid records found in tracefile $tracefile\n");
-	}
-	if ($negative)
-	{
-		warn("WARNING: negative counts found in tracefile ".
-		     "$tracefile\n");
-	}
-	if ($changed_testname)
-	{
-		warn("WARNING: invalid characters removed from testname in ".
-		     "tracefile $tracefile\n");
-	}
-
-	return(\%result);
-}
-
-
-#
-# get_info_entry(hash_ref)
-#
-# Retrieve data from an entry of the structure generated by read_info_file().
-# Return a list of references to hashes:
-# (test data hash ref, sum count hash ref, funcdata hash ref, checkdata hash
-#  ref, testfncdata hash ref, sumfnccount hash ref, testbrdata hash ref,
-#  sumbrcount hash ref, lines found, lines hit, functions found,
-#  functions hit, branches found, branches hit)
-#
-
-sub get_info_entry($)
-{
-	my $testdata_ref = $_[0]->{"test"};
-	my $sumcount_ref = $_[0]->{"sum"};
-	my $funcdata_ref = $_[0]->{"func"};
-	my $checkdata_ref = $_[0]->{"check"};
-	my $testfncdata = $_[0]->{"testfnc"};
-	my $sumfnccount = $_[0]->{"sumfnc"};
-	my $testbrdata = $_[0]->{"testbr"};
-	my $sumbrcount = $_[0]->{"sumbr"};
-	my $lines_found = $_[0]->{"found"};
-	my $lines_hit = $_[0]->{"hit"};
-	my $f_found = $_[0]->{"f_found"};
-	my $f_hit = $_[0]->{"f_hit"};
-	my $br_found = $_[0]->{"b_found"};
-	my $br_hit = $_[0]->{"b_hit"};
-
-	return ($testdata_ref, $sumcount_ref, $funcdata_ref, $checkdata_ref,
-		$testfncdata, $sumfnccount, $testbrdata, $sumbrcount,
-		$lines_found, $lines_hit, $f_found, $f_hit,
-		$br_found, $br_hit);
-}
-
-
-#
-# set_info_entry(hash_ref, testdata_ref, sumcount_ref, funcdata_ref,
-#                checkdata_ref, testfncdata_ref, sumfcncount_ref,
-#                testbrdata_ref, sumbrcount_ref[,lines_found,
-#                lines_hit, f_found, f_hit, $b_found, $b_hit])
-#
-# Update the hash referenced by HASH_REF with the provided data references.
-#
-
-sub set_info_entry($$$$$$$$$;$$$$$$)
-{
-	my $data_ref = $_[0];
-
-	$data_ref->{"test"} = $_[1];
-	$data_ref->{"sum"} = $_[2];
-	$data_ref->{"func"} = $_[3];
-	$data_ref->{"check"} = $_[4];
-	$data_ref->{"testfnc"} = $_[5];
-	$data_ref->{"sumfnc"} = $_[6];
-	$data_ref->{"testbr"} = $_[7];
-	$data_ref->{"sumbr"} = $_[8];
-
-	if (defined($_[9])) { $data_ref->{"found"} = $_[9]; }
-	if (defined($_[10])) { $data_ref->{"hit"} = $_[10]; }
-	if (defined($_[11])) { $data_ref->{"f_found"} = $_[11]; }
-	if (defined($_[12])) { $data_ref->{"f_hit"} = $_[12]; }
-	if (defined($_[13])) { $data_ref->{"b_found"} = $_[13]; }
-	if (defined($_[14])) { $data_ref->{"b_hit"} = $_[14]; }
-}
-
-
-#
-# add_counts(data1_ref, data2_ref)
-#
-# DATA1_REF and DATA2_REF are references to hashes containing a mapping
-#
-#   line number -> execution count
-#
-# Return a list (RESULT_REF, LINES_FOUND, LINES_HIT) where RESULT_REF
-# is a reference to a hash containing the combined mapping in which
-# execution counts are added.
-#
-
-sub add_counts($$)
-{
-	my $data1_ref = $_[0];	# Hash 1
-	my $data2_ref = $_[1];	# Hash 2
-	my %result;		# Resulting hash
-	my $line;		# Current line iteration scalar
-	my $data1_count;	# Count of line in hash1
-	my $data2_count;	# Count of line in hash2
-	my $found = 0;		# Total number of lines found
-	my $hit = 0;		# Number of lines with a count > 0
-
-	foreach $line (keys(%$data1_ref))
-	{
-		$data1_count = $data1_ref->{$line};
-		$data2_count = $data2_ref->{$line};
-
-		# Add counts if present in both hashes
-		if (defined($data2_count)) { $data1_count += $data2_count; }
-
-		# Store sum in %result
-		$result{$line} = $data1_count;
-
-		$found++;
-		if ($data1_count > 0) { $hit++; }
-	}
-
-	# Add lines unique to data2_ref
-	foreach $line (keys(%$data2_ref))
-	{
-		# Skip lines already in data1_ref
-		if (defined($data1_ref->{$line})) { next; }
-
-		# Copy count from data2_ref
-		$result{$line} = $data2_ref->{$line};
-
-		$found++;
-		if ($result{$line} > 0) { $hit++; }
-	}
-
-	return (\%result, $found, $hit);
-}
-
-
-#
-# merge_checksums(ref1, ref2, filename)
-#
-# REF1 and REF2 are references to hashes containing a mapping
-#
-#   line number -> checksum
-#
-# Merge checksum lists defined in REF1 and REF2 and return reference to
-# resulting hash. Die if a checksum for a line is defined in both hashes
-# but does not match.
-#
-
-sub merge_checksums($$$)
-{
-	my $ref1 = $_[0];
-	my $ref2 = $_[1];
-	my $filename = $_[2];
-	my %result;
-	my $line;
-
-	foreach $line (keys(%{$ref1}))
-	{
-		if (defined($ref2->{$line}) &&
-		    ($ref1->{$line} ne $ref2->{$line}))
-		{
-			die("ERROR: checksum mismatch at $filename:$line\n");
-		}
-		$result{$line} = $ref1->{$line};
-	}
-
-	foreach $line (keys(%{$ref2}))
-	{
-		$result{$line} = $ref2->{$line};
-	}
-
-	return \%result;
-}
-
-
-#
-# merge_func_data(funcdata1, funcdata2, filename)
-#
-
-sub merge_func_data($$$)
-{
-	my ($funcdata1, $funcdata2, $filename) = @_;
-	my %result;
-	my $func;
-
-	if (defined($funcdata1)) {
-		%result = %{$funcdata1};
-	}
-
-	foreach $func (keys(%{$funcdata2})) {
-		my $line1 = $result{$func};
-		my $line2 = $funcdata2->{$func};
-
-		if (defined($line1) && ($line1 != $line2)) {
-			warn("WARNING: function data mismatch at ".
-			     "$filename:$line2\n");
-			next;
-		}
-		$result{$func} = $line2;
-	}
-
-	return \%result;
-}
-
-
-#
-# add_fnccount(fnccount1, fnccount2)
-#
-# Add function call count data. Return list (fnccount_added, f_found, f_hit)
-#
-
-sub add_fnccount($$)
-{
-	my ($fnccount1, $fnccount2) = @_;
-	my %result;
-	my $f_found;
-	my $f_hit;
-	my $function;
-
-	if (defined($fnccount1)) {
-		%result = %{$fnccount1};
-	}
-	foreach $function (keys(%{$fnccount2})) {
-		$result{$function} += $fnccount2->{$function};
-	}
-	$f_found = scalar(keys(%result));
-	$f_hit = 0;
-	foreach $function (keys(%result)) {
-		if ($result{$function} > 0) {
-			$f_hit++;
-		}
-	}
-
-	return (\%result, $f_found, $f_hit);
-}
-
-#
-# add_testfncdata(testfncdata1, testfncdata2)
-#
-# Add function call count data for several tests. Return reference to
-# added_testfncdata.
-#
-
-sub add_testfncdata($$)
-{
-	my ($testfncdata1, $testfncdata2) = @_;
-	my %result;
-	my $testname;
-
-	foreach $testname (keys(%{$testfncdata1})) {
-		if (defined($testfncdata2->{$testname})) {
-			my $fnccount;
-
-			# Function call count data for this testname exists
-			# in both data sets: merge
-			($fnccount) = add_fnccount(
-				$testfncdata1->{$testname},
-				$testfncdata2->{$testname});
-			$result{$testname} = $fnccount;
-			next;
-		}
-		# Function call count data for this testname is unique to
-		# data set 1: copy
-		$result{$testname} = $testfncdata1->{$testname};
-	}
-
-	# Add count data for testnames unique to data set 2
-	foreach $testname (keys(%{$testfncdata2})) {
-		if (!defined($result{$testname})) {
-			$result{$testname} = $testfncdata2->{$testname};
-		}
-	}
-	return \%result;
-}
-
-
-#
-# brcount_to_db(brcount)
-#
-# Convert brcount data to the following format:
-#
-# db:          line number    -> block hash
-# block hash:  block number   -> branch hash
-# branch hash: branch number  -> taken value
-#
-
-sub brcount_to_db($)
-{
-	my ($brcount) = @_;
-	my $line;
-	my $db = {};
-
-	# Add branches to database
-	foreach $line (keys(%{$brcount})) {
-		my $brdata = $brcount->{$line};
-
-		foreach my $entry (split(/:/, $brdata)) {
-			my ($block, $branch, $taken) = split(/,/, $entry);
-			my $old = $db->{$line}->{$block}->{$branch};
-
-			if (!defined($old) || $old eq "-") {
-				$old = $taken;
-			} elsif ($taken ne "-") {
-				$old += $taken;
-			}
-
-			$db->{$line}->{$block}->{$branch} = $old;
-		}
-	}
-
-	return $db;
-}
-
-
-#
-# db_to_brcount(db[, brcount])
-#
-# Convert branch coverage data back to brcount format. If brcount is specified,
-# the converted data is directly inserted in brcount.
-#
-
-sub db_to_brcount($;$)
-{
-	my ($db, $brcount) = @_;
-	my $line;
-	my $br_found = 0;
-	my $br_hit = 0;
-
-	# Convert database back to brcount format
-	foreach $line (sort({$a <=> $b} keys(%{$db}))) {
-		my $ldata = $db->{$line};
-		my $brdata;
-		my $block;
-
-		foreach $block (sort({$a <=> $b} keys(%{$ldata}))) {
-			my $bdata = $ldata->{$block};
-			my $branch;
-
-			foreach $branch (sort({$a <=> $b} keys(%{$bdata}))) {
-				my $taken = $bdata->{$branch};
-
-				$br_found++;
-				$br_hit++ if ($taken ne "-" && $taken > 0);
-				$brdata .= "$block,$branch,$taken:";
-			}
-		}
-		$brcount->{$line} = $brdata;
-	}
-
-	return ($brcount, $br_found, $br_hit);
-}
-
-
-#
-# brcount_db_combine(db1, db2, op)
-#
-# db1 := db1 op db2, where
-#   db1, db2: brcount data as returned by brcount_to_db
-#   op:       one of $BR_ADD and BR_SUB
-#
-sub brcount_db_combine($$$)
-{
-	my ($db1, $db2, $op) = @_;
-
-	foreach my $line (keys(%{$db2})) {
-		my $ldata = $db2->{$line};
-
-		foreach my $block (keys(%{$ldata})) {
-			my $bdata = $ldata->{$block};
-
-			foreach my $branch (keys(%{$bdata})) {
-				my $taken = $bdata->{$branch};
-				my $new = $db1->{$line}->{$block}->{$branch};
-
-				if (!defined($new) || $new eq "-") {
-					$new = $taken;
-				} elsif ($taken ne "-") {
-					if ($op == $BR_ADD) {
-						$new += $taken;
-					} elsif ($op == $BR_SUB) {
-						$new -= $taken;
-						$new = 0 if ($new < 0);
-					}
-				}
-
-				$db1->{$line}->{$block}->{$branch} = $new;
-			}
-		}
-	}
-}
-
-
-#
-# brcount_db_get_found_and_hit(db)
-#
-# Return (br_found, br_hit) for db.
-#
-
-sub brcount_db_get_found_and_hit($)
-{
-	my ($db) = @_;
-	my ($br_found , $br_hit) = (0, 0);
-
-	foreach my $line (keys(%{$db})) {
-		my $ldata = $db->{$line};
-
-		foreach my $block (keys(%{$ldata})) {
-			my $bdata = $ldata->{$block};
-
-			foreach my $branch (keys(%{$bdata})) {
-				my $taken = $bdata->{$branch};
-
-				$br_found++;
-				$br_hit++ if ($taken ne "-" && $taken > 0);
-			}
-		}
-	}
-
-	return ($br_found, $br_hit);
-}
-
-
-# combine_brcount(brcount1, brcount2, type, inplace)
-#
-# If add is BR_ADD, add branch coverage data and return list brcount_added.
-# If add is BR_SUB, subtract the taken values of brcount2 from brcount1 and
-# return brcount_sub. If inplace is set, the result is inserted into brcount1.
-#
-
-sub combine_brcount($$$;$)
-{
-	my ($brcount1, $brcount2, $type, $inplace) = @_;
-	my ($db1, $db2);
-
-	$db1 = brcount_to_db($brcount1);
-	$db2 = brcount_to_db($brcount2);
-	brcount_db_combine($db1, $db2, $type);
-
-	return db_to_brcount($db1, $inplace ? $brcount1 : undef);
-}
-
-
-#
-# add_testbrdata(testbrdata1, testbrdata2)
-#
-# Add branch coverage data for several tests. Return reference to
-# added_testbrdata.
-#
-
-sub add_testbrdata($$)
-{
-	my ($testbrdata1, $testbrdata2) = @_;
-	my %result;
-	my $testname;
-
-	foreach $testname (keys(%{$testbrdata1})) {
-		if (defined($testbrdata2->{$testname})) {
-			my $brcount;
-
-			# Branch coverage data for this testname exists
-			# in both data sets: add
-			($brcount) = combine_brcount(
-				$testbrdata1->{$testname},
-				$testbrdata2->{$testname}, $BR_ADD);
-			$result{$testname} = $brcount;
-			next;
-		}
-		# Branch coverage data for this testname is unique to
-		# data set 1: copy
-		$result{$testname} = $testbrdata1->{$testname};
-	}
-
-	# Add count data for testnames unique to data set 2
-	foreach $testname (keys(%{$testbrdata2})) {
-		if (!defined($result{$testname})) {
-			$result{$testname} = $testbrdata2->{$testname};
-		}
-	}
-	return \%result;
-}
-
-
-#
-# combine_info_entries(entry_ref1, entry_ref2, filename)
-#
-# Combine .info data entry hashes referenced by ENTRY_REF1 and ENTRY_REF2.
-# Return reference to resulting hash.
-#
-
-sub combine_info_entries($$$)
-{
-	my $entry1 = $_[0];	# Reference to hash containing first entry
-	my $testdata1;
-	my $sumcount1;
-	my $funcdata1;
-	my $checkdata1;
-	my $testfncdata1;
-	my $sumfnccount1;
-	my $testbrdata1;
-	my $sumbrcount1;
-
-	my $entry2 = $_[1];	# Reference to hash containing second entry
-	my $testdata2;
-	my $sumcount2;
-	my $funcdata2;
-	my $checkdata2;
-	my $testfncdata2;
-	my $sumfnccount2;
-	my $testbrdata2;
-	my $sumbrcount2;
-
-	my %result;		# Hash containing combined entry
-	my %result_testdata;
-	my $result_sumcount = {};
-	my $result_funcdata;
-	my $result_testfncdata;
-	my $result_sumfnccount;
-	my $result_testbrdata;
-	my $result_sumbrcount;
-	my $lines_found;
-	my $lines_hit;
-	my $f_found;
-	my $f_hit;
-	my $br_found;
-	my $br_hit;
-
-	my $testname;
-	my $filename = $_[2];
-
-	# Retrieve data
-	($testdata1, $sumcount1, $funcdata1, $checkdata1, $testfncdata1,
-	 $sumfnccount1, $testbrdata1, $sumbrcount1) = get_info_entry($entry1);
-	($testdata2, $sumcount2, $funcdata2, $checkdata2, $testfncdata2,
-	 $sumfnccount2, $testbrdata2, $sumbrcount2) = get_info_entry($entry2);
-
-	# Merge checksums
-	$checkdata1 = merge_checksums($checkdata1, $checkdata2, $filename);
-
-	# Combine funcdata
-	$result_funcdata = merge_func_data($funcdata1, $funcdata2, $filename);
-
-	# Combine function call count data
-	$result_testfncdata = add_testfncdata($testfncdata1, $testfncdata2);
-	($result_sumfnccount, $f_found, $f_hit) =
-		add_fnccount($sumfnccount1, $sumfnccount2);
-
-	# Combine branch coverage data
-	$result_testbrdata = add_testbrdata($testbrdata1, $testbrdata2);
-	($result_sumbrcount, $br_found, $br_hit) =
-		combine_brcount($sumbrcount1, $sumbrcount2, $BR_ADD);
-
-	# Combine testdata
-	foreach $testname (keys(%{$testdata1}))
-	{
-		if (defined($testdata2->{$testname}))
-		{
-			# testname is present in both entries, requires
-			# combination
-			($result_testdata{$testname}) =
-				add_counts($testdata1->{$testname},
-					   $testdata2->{$testname});
-		}
-		else
-		{
-			# testname only present in entry1, add to result
-			$result_testdata{$testname} = $testdata1->{$testname};
-		}
-
-		# update sum count hash
-		($result_sumcount, $lines_found, $lines_hit) =
-			add_counts($result_sumcount,
-				   $result_testdata{$testname});
-	}
-
-	foreach $testname (keys(%{$testdata2}))
-	{
-		# Skip testnames already covered by previous iteration
-		if (defined($testdata1->{$testname})) { next; }
-
-		# testname only present in entry2, add to result hash
-		$result_testdata{$testname} = $testdata2->{$testname};
-
-		# update sum count hash
-		($result_sumcount, $lines_found, $lines_hit) =
-			add_counts($result_sumcount,
-				   $result_testdata{$testname});
-	}
-	
-	# Calculate resulting sumcount
-
-	# Store result
-	set_info_entry(\%result, \%result_testdata, $result_sumcount,
-		       $result_funcdata, $checkdata1, $result_testfncdata,
-		       $result_sumfnccount, $result_testbrdata,
-		       $result_sumbrcount, $lines_found, $lines_hit,
-		       $f_found, $f_hit, $br_found, $br_hit);
-
-	return(\%result);
-}
-
-
-#
-# combine_info_files(info_ref1, info_ref2)
-#
-# Combine .info data in hashes referenced by INFO_REF1 and INFO_REF2. Return
-# reference to resulting hash.
-#
-
-sub combine_info_files($$)
-{
-	my %hash1 = %{$_[0]};
-	my %hash2 = %{$_[1]};
-	my $filename;
-
-	foreach $filename (keys(%hash2))
-	{
-		if ($hash1{$filename})
-		{
-			# Entry already exists in hash1, combine them
-			$hash1{$filename} =
-				combine_info_entries($hash1{$filename},
-						     $hash2{$filename},
-						     $filename);
-		}
-		else
-		{
-			# Entry is unique in both hashes, simply add to
-			# resulting hash
-			$hash1{$filename} = $hash2{$filename};
-		}
-	}
-
-	return(\%hash1);
-}
-
-
-#
-# add_traces()
-#
-
-sub add_traces()
-{
-	my $total_trace;
-	my $current_trace;
-	my $tracefile;
-	my @result;
-	local *INFO_HANDLE;
-
-	info("Combining tracefiles.\n");
-
-	foreach $tracefile (@add_tracefile)
-	{
-		$current_trace = read_info_file($tracefile);
-		if ($total_trace)
-		{
-			$total_trace = combine_info_files($total_trace,
-							  $current_trace);
-		}
-		else
-		{
-			$total_trace = $current_trace;
-		}
-	}
-
-	# Write combined data
-	if (!$data_stdout)
-	{
-		info("Writing data to $output_filename\n");
-		open(INFO_HANDLE, ">", $output_filename)
-			or die("ERROR: cannot write to $output_filename!\n");
-		@result = write_info_file(*INFO_HANDLE, $total_trace);
-		close(*INFO_HANDLE);
-	}
-	else
-	{
-		@result = write_info_file(*STDOUT, $total_trace);
-	}
-
-	return @result;
-}
-
-
-#
-# write_info_file(filehandle, data)
-#
-
-sub write_info_file(*$)
-{
-	local *INFO_HANDLE = $_[0];
-	my %data = %{$_[1]};
-	my $source_file;
-	my $entry;
-	my $testdata;
-	my $sumcount;
-	my $funcdata;
-	my $checkdata;
-	my $testfncdata;
-	my $sumfnccount;
-	my $testbrdata;
-	my $sumbrcount;
-	my $testname;
-	my $line;
-	my $func;
-	my $testcount;
-	my $testfnccount;
-	my $testbrcount;
-	my $found;
-	my $hit;
-	my $f_found;
-	my $f_hit;
-	my $br_found;
-	my $br_hit;
-	my $ln_total_found = 0;
-	my $ln_total_hit = 0;
-	my $fn_total_found = 0;
-	my $fn_total_hit = 0;
-	my $br_total_found = 0;
-	my $br_total_hit = 0;
-
-	foreach $source_file (sort(keys(%data)))
-	{
-		$entry = $data{$source_file};
-		($testdata, $sumcount, $funcdata, $checkdata, $testfncdata,
-		 $sumfnccount, $testbrdata, $sumbrcount, $found, $hit,
-		 $f_found, $f_hit, $br_found, $br_hit) =
-			get_info_entry($entry);
-
-		# Add to totals
-		$ln_total_found += $found;
-		$ln_total_hit += $hit;
-		$fn_total_found += $f_found;
-		$fn_total_hit += $f_hit;
-		$br_total_found += $br_found;
-		$br_total_hit += $br_hit;
-
-		foreach $testname (sort(keys(%{$testdata})))
-		{
-			$testcount = $testdata->{$testname};
-			$testfnccount = $testfncdata->{$testname};
-			$testbrcount = $testbrdata->{$testname};
-			$found = 0;
-			$hit   = 0;
-
-			print(INFO_HANDLE "TN:$testname\n");
-			print(INFO_HANDLE "SF:$source_file\n");
-
-			# Write function related data
-			foreach $func (
-				sort({$funcdata->{$a} <=> $funcdata->{$b}}
-				keys(%{$funcdata})))
-			{
-				print(INFO_HANDLE "FN:".$funcdata->{$func}.
-				      ",$func\n");
-			}
-			foreach $func (keys(%{$testfnccount})) {
-				print(INFO_HANDLE "FNDA:".
-				      $testfnccount->{$func}.
-				      ",$func\n");
-			}
-			($f_found, $f_hit) =
-				get_func_found_and_hit($testfnccount);
-			print(INFO_HANDLE "FNF:$f_found\n");
-			print(INFO_HANDLE "FNH:$f_hit\n");
-
-			# Write branch related data
-			$br_found = 0;
-			$br_hit = 0;
-			foreach $line (sort({$a <=> $b}
-					    keys(%{$testbrcount}))) {
-				my $brdata = $testbrcount->{$line};
-
-				foreach my $brentry (split(/:/, $brdata)) {
-					my ($block, $branch, $taken) =
-						split(/,/, $brentry);
-
-					print(INFO_HANDLE "BRDA:$line,$block,".
-					      "$branch,$taken\n");
-					$br_found++;
-					$br_hit++ if ($taken ne '-' &&
-						      $taken > 0);
-				}
-			}
-			if ($br_found > 0) {
-				print(INFO_HANDLE "BRF:$br_found\n");
-				print(INFO_HANDLE "BRH:$br_hit\n");
-			}
-
-			# Write line related data
-			foreach $line (sort({$a <=> $b} keys(%{$testcount})))
-			{
-				print(INFO_HANDLE "DA:$line,".
-				      $testcount->{$line}.
-				      (defined($checkdata->{$line}) &&
-				       $checksum ?
-				       ",".$checkdata->{$line} : "")."\n");
-				$found++;
-				if ($testcount->{$line} > 0)
-				{
-					$hit++;
-				}
-
-			}
-			print(INFO_HANDLE "LF:$found\n");
-			print(INFO_HANDLE "LH:$hit\n");
-			print(INFO_HANDLE "end_of_record\n");
-		}
-	}
-
-	return ($ln_total_found, $ln_total_hit, $fn_total_found, $fn_total_hit,
-		$br_total_found, $br_total_hit);
-}
-
-
-#
-# transform_pattern(pattern)
-#
-# Transform shell wildcard expression to equivalent Perl regular expression.
-# Return transformed pattern.
-#
-
-sub transform_pattern($)
-{
-	my $pattern = $_[0];
-
-	# Escape special chars
-
-	$pattern =~ s/\\/\\\\/g;
-	$pattern =~ s/\//\\\//g;
-	$pattern =~ s/\^/\\\^/g;
-	$pattern =~ s/\$/\\\$/g;
-	$pattern =~ s/\(/\\\(/g;
-	$pattern =~ s/\)/\\\)/g;
-	$pattern =~ s/\[/\\\[/g;
-	$pattern =~ s/\]/\\\]/g;
-	$pattern =~ s/\{/\\\{/g;
-	$pattern =~ s/\}/\\\}/g;
-	$pattern =~ s/\./\\\./g;
-	$pattern =~ s/\,/\\\,/g;
-	$pattern =~ s/\|/\\\|/g;
-	$pattern =~ s/\+/\\\+/g;
-	$pattern =~ s/\!/\\\!/g;
-
-	# Transform ? => (.) and * => (.*)
-
-	$pattern =~ s/\*/\(\.\*\)/g;
-	$pattern =~ s/\?/\(\.\)/g;
-
-	return $pattern;
-}
-
-
-#
-# extract()
-#
-
-sub extract()
-{
-	my $data = read_info_file($extract);
-	my $filename;
-	my $keep;
-	my $pattern;
-	my @pattern_list;
-	my $extracted = 0;
-	my @result;
-	local *INFO_HANDLE;
-
-	# Need perlreg expressions instead of shell pattern
-	@pattern_list = map({ transform_pattern($_); } @ARGV);
-
-	# Filter out files which do not match any pattern
-	foreach $filename (sort(keys(%{$data})))
-	{
-		$keep = 0;
-
-		foreach $pattern (@pattern_list)
-		{
-			$keep ||= ($filename =~ (/^$pattern$/));
-		}
-
-
-		if (!$keep)
-		{
-			delete($data->{$filename});
-		}
-		else
-		{
-			info("Extracting $filename\n"),
-			$extracted++;
-		}
-	}
-
-	# Write extracted data
-	if (!$data_stdout)
-	{
-		info("Extracted $extracted files\n");
-		info("Writing data to $output_filename\n");
-		open(INFO_HANDLE, ">", $output_filename)
-			or die("ERROR: cannot write to $output_filename!\n");
-		@result = write_info_file(*INFO_HANDLE, $data);
-		close(*INFO_HANDLE);
-	}
-	else
-	{
-		@result = write_info_file(*STDOUT, $data);
-	}
-
-	return @result;
-}
-
-
-#
-# remove()
-#
-
-sub remove()
-{
-	my $data = read_info_file($remove);
-	my $filename;
-	my $match_found;
-	my $pattern;
-	my @pattern_list;
-	my $removed = 0;
-	my @result;
-	local *INFO_HANDLE;
-
-	# Need perlreg expressions instead of shell pattern
-	@pattern_list = map({ transform_pattern($_); } @ARGV);
-
-	# Filter out files that match the pattern
-	foreach $filename (sort(keys(%{$data})))
-	{
-		$match_found = 0;
-
-		foreach $pattern (@pattern_list)
-		{
-			$match_found ||= ($filename =~ (/^$pattern$/));
-		}
-
-
-		if ($match_found)
-		{
-			delete($data->{$filename});
-			info("Removing $filename\n"),
-			$removed++;
-		}
-	}
-
-	# Write data
-	if (!$data_stdout)
-	{
-		info("Deleted $removed files\n");
-		info("Writing data to $output_filename\n");
-		open(INFO_HANDLE, ">", $output_filename)
-			or die("ERROR: cannot write to $output_filename!\n");
-		@result = write_info_file(*INFO_HANDLE, $data);
-		close(*INFO_HANDLE);
-	}
-	else
-	{
-		@result = write_info_file(*STDOUT, $data);
-	}
-
-	return @result;
-}
-
-
-# get_prefix(max_width, max_percentage_too_long, path_list)
-#
-# Return a path prefix that satisfies the following requirements:
-# - is shared by more paths in path_list than any other prefix
-# - the percentage of paths which would exceed the given max_width length
-#   after applying the prefix does not exceed max_percentage_too_long
-#
-# If multiple prefixes satisfy all requirements, the longest prefix is
-# returned. Return an empty string if no prefix could be found.
-
-sub get_prefix($$@)
-{
-	my ($max_width, $max_long, @path_list) = @_;
-	my $path;
-	my $ENTRY_NUM = 0;
-	my $ENTRY_LONG = 1;
-	my %prefix;
-
-	# Build prefix hash
-	foreach $path (@path_list) {
-		my ($v, $d, $f) = splitpath($path);
-		my @dirs = splitdir($d);
-		my $p_len = length($path);
-		my $i;
-
-		# Remove trailing '/'
-		pop(@dirs) if ($dirs[scalar(@dirs) - 1] eq '');
-		for ($i = 0; $i < scalar(@dirs); $i++) {
-			my $subpath = catpath($v, catdir(@dirs[0..$i]), '');
-			my $entry = $prefix{$subpath};
-
-			$entry = [ 0, 0 ] if (!defined($entry));
-			$entry->[$ENTRY_NUM]++;
-			if (($p_len - length($subpath) - 1) > $max_width) {
-				$entry->[$ENTRY_LONG]++;
-			}
-			$prefix{$subpath} = $entry;
-		}
-	}
-	# Find suitable prefix (sort descending by two keys: 1. number of
-	# entries covered by a prefix, 2. length of prefix)
-	foreach $path (sort {($prefix{$a}->[$ENTRY_NUM] ==
-			      $prefix{$b}->[$ENTRY_NUM]) ?
-				length($b) <=> length($a) :
-				$prefix{$b}->[$ENTRY_NUM] <=>
-				$prefix{$a}->[$ENTRY_NUM]}
-				keys(%prefix)) {
-		my ($num, $long) = @{$prefix{$path}};
-
-		# Check for additional requirement: number of filenames
-		# that would be too long may not exceed a certain percentage
-		if ($long <= $num * $max_long / 100) {
-			return $path;
-		}
-	}
-
-	return "";
-}
-
-
-#
-# shorten_filename(filename, width)
-#
-# Truncate filename if it is longer than width characters.
-#
-
-sub shorten_filename($$)
-{
-	my ($filename, $width) = @_;
-	my $l = length($filename);
-	my $s;
-	my $e;
-
-	return $filename if ($l <= $width);
-	$e = int(($width - 3) / 2);
-	$s = $width - 3 - $e;
-
-	return substr($filename, 0, $s).'...'.substr($filename, $l - $e);
-}
-
-
-sub shorten_number($$)
-{
-	my ($number, $width) = @_;
-	my $result = sprintf("%*d", $width, $number);
-
-	return $result if (length($result) <= $width);
-	$number = $number / 1000;
-	return $result if (length($result) <= $width);
-	$result = sprintf("%*dk", $width - 1, $number);
-	return $result if (length($result) <= $width);
-	$number = $number / 1000;
-	$result = sprintf("%*dM", $width - 1, $number);
-	return $result if (length($result) <= $width);
-	return '#';
-}
-
-sub shorten_rate($$$)
-{
-	my ($hit, $found, $width) = @_;
-	my $result = rate($hit, $found, "%", 1, $width);
-
-	return $result if (length($result) <= $width);
-	$result = rate($hit, $found, "%", 0, $width);
-	return $result if (length($result) <= $width);
-	return "#";
-}
-
-#
-# list()
-#
-
-sub list()
-{
-	my $data = read_info_file($list);
-	my $filename;
-	my $found;
-	my $hit;
-	my $entry;
-	my $fn_found;
-	my $fn_hit;
-	my $br_found;
-	my $br_hit;
-	my $total_found = 0;
-	my $total_hit = 0;
-	my $fn_total_found = 0;
-	my $fn_total_hit = 0;
-	my $br_total_found = 0;
-	my $br_total_hit = 0;
-	my $prefix;
-	my $strlen = length("Filename");
-	my $format;
-	my $heading1;
-	my $heading2;
-	my @footer;
-	my $barlen;
-	my $rate;
-	my $fnrate;
-	my $brrate;
-	my $lastpath;
-	my $F_LN_NUM = 0;
-	my $F_LN_RATE = 1;
-	my $F_FN_NUM = 2;
-	my $F_FN_RATE = 3;
-	my $F_BR_NUM = 4;
-	my $F_BR_RATE = 5;
-	my @fwidth_narrow = (5, 5, 3, 5, 4, 5);
-	my @fwidth_wide = (6, 5, 5, 5, 6, 5);
-	my @fwidth = @fwidth_wide;
-	my $w;
-	my $max_width = $opt_list_width;
-	my $max_long = $opt_list_truncate_max;
-	my $fwidth_narrow_length;
-	my $fwidth_wide_length;
-	my $got_prefix = 0;
-	my $root_prefix = 0;
-
-	# Calculate total width of narrow fields
-	$fwidth_narrow_length = 0;
-	foreach $w (@fwidth_narrow) {
-		$fwidth_narrow_length += $w + 1;
-	}
-	# Calculate total width of wide fields
-	$fwidth_wide_length = 0;
-	foreach $w (@fwidth_wide) {
-		$fwidth_wide_length += $w + 1;
-	}
-	# Get common file path prefix
-	$prefix = get_prefix($max_width - $fwidth_narrow_length, $max_long,
-			     keys(%{$data}));
-	$root_prefix = 1 if ($prefix eq rootdir());
-	$got_prefix = 1 if (length($prefix) > 0);
-	$prefix =~ s/\/$//;
-	# Get longest filename length
-	foreach $filename (keys(%{$data})) {
-		if (!$opt_list_full_path) {
-			if (!$got_prefix || !$root_prefix &&
-			    !($filename =~ s/^\Q$prefix\/\E//)) {
-				my ($v, $d, $f) = splitpath($filename);
-
-				$filename = $f;
-			}
-		}
-		# Determine maximum length of entries
-		if (length($filename) > $strlen) {
-			$strlen = length($filename)
-		}
-	}
-	if (!$opt_list_full_path) {
-		my $blanks;
-
-		$w = $fwidth_wide_length;
-		# Check if all columns fit into max_width characters
-		if ($strlen + $fwidth_wide_length > $max_width) {
-			# Use narrow fields
-			@fwidth = @fwidth_narrow;
-			$w = $fwidth_narrow_length;
-			if (($strlen + $fwidth_narrow_length) > $max_width) {
-				# Truncate filenames at max width
-				$strlen = $max_width - $fwidth_narrow_length;
-			}
-		}
-		# Add some blanks between filename and fields if possible
-		$blanks = int($strlen * 0.5);
-		$blanks = 4 if ($blanks < 4);
-		$blanks = 8 if ($blanks > 8);
-		if (($strlen + $w + $blanks) < $max_width) {
-			$strlen += $blanks;
-		} else {
-			$strlen = $max_width - $w;
-		}
-	}
-	# Filename
-	$w = $strlen;
-	$format		= "%-${w}s|";
-	$heading1 	= sprintf("%*s|", $w, "");
-	$heading2 	= sprintf("%-*s|", $w, "Filename");
-	$barlen		= $w + 1;
-	# Line coverage rate
-	$w = $fwidth[$F_LN_RATE];
-	$format		.= "%${w}s ";
-	$heading1 	.= sprintf("%-*s |", $w + $fwidth[$F_LN_NUM],
-				   "Lines");
-	$heading2 	.= sprintf("%-*s ", $w, "Rate");
-	$barlen		+= $w + 1;
-	# Number of lines
-	$w = $fwidth[$F_LN_NUM];
-	$format		.= "%${w}s|";
-	$heading2	.= sprintf("%*s|", $w, "Num");
-	$barlen		+= $w + 1;
-	# Function coverage rate
-	$w = $fwidth[$F_FN_RATE];
-	$format		.= "%${w}s ";
-	$heading1 	.= sprintf("%-*s|", $w + $fwidth[$F_FN_NUM] + 1,
-				   "Functions");
-	$heading2 	.= sprintf("%-*s ", $w, "Rate");
-	$barlen		+= $w + 1;
-	# Number of functions
-	$w = $fwidth[$F_FN_NUM];
-	$format		.= "%${w}s|";
-	$heading2	.= sprintf("%*s|", $w, "Num");
-	$barlen		+= $w + 1;
-	# Branch coverage rate
-	$w = $fwidth[$F_BR_RATE];
-	$format		.= "%${w}s ";
-	$heading1 	.= sprintf("%-*s", $w + $fwidth[$F_BR_NUM] + 1,
-				   "Branches");
-	$heading2 	.= sprintf("%-*s ", $w, "Rate");
-	$barlen		+= $w + 1;
-	# Number of branches
-	$w = $fwidth[$F_BR_NUM];
-	$format		.= "%${w}s";
-	$heading2	.= sprintf("%*s", $w, "Num");
-	$barlen		+= $w;
-	# Line end
-	$format		.= "\n";
-	$heading1	.= "\n";
-	$heading2	.= "\n";
-
-	# Print heading
-	print($heading1);
-	print($heading2);
-	print(("="x$barlen)."\n");
-
-	# Print per file information
-	foreach $filename (sort(keys(%{$data})))
-	{
-		my @file_data;
-		my $print_filename = $filename;
-
-		$entry = $data->{$filename};
-		if (!$opt_list_full_path) {
-			my $p;
-
-			$print_filename = $filename;
-			if (!$got_prefix || !$root_prefix &&
-			    !($print_filename =~ s/^\Q$prefix\/\E//)) {
-				my ($v, $d, $f) = splitpath($filename);
-
-				$p = catpath($v, $d, "");
-				$p =~ s/\/$//;
-				$print_filename = $f;
-			} else {
-				$p = $prefix;
-			}
-
-			if (!defined($lastpath) || $lastpath ne $p) {
-				print("\n") if (defined($lastpath));
-				$lastpath = $p;
-				print("[$lastpath/]\n") if (!$root_prefix);
-			}
-			$print_filename = shorten_filename($print_filename,
-							   $strlen);
-		}
-
-		(undef, undef, undef, undef, undef, undef, undef, undef,
-		 $found, $hit, $fn_found, $fn_hit, $br_found, $br_hit) =
-			get_info_entry($entry);
-
-		# Assume zero count if there is no function data for this file
-		if (!defined($fn_found) || !defined($fn_hit)) {
-			$fn_found = 0;
-			$fn_hit = 0;
-		}
-		# Assume zero count if there is no branch data for this file
-		if (!defined($br_found) || !defined($br_hit)) {
-			$br_found = 0;
-			$br_hit = 0;
-		}
-
-		# Add line coverage totals
-		$total_found += $found;
-		$total_hit += $hit;
-		# Add function coverage totals
-		$fn_total_found += $fn_found;
-		$fn_total_hit += $fn_hit;
-		# Add branch coverage totals
-		$br_total_found += $br_found;
-		$br_total_hit += $br_hit;
-
-		# Determine line coverage rate for this file
-		$rate = shorten_rate($hit, $found, $fwidth[$F_LN_RATE]);
-		# Determine function coverage rate for this file
-		$fnrate = shorten_rate($fn_hit, $fn_found, $fwidth[$F_FN_RATE]);
-		# Determine branch coverage rate for this file
-		$brrate = shorten_rate($br_hit, $br_found, $fwidth[$F_BR_RATE]);
-
-		# Assemble line parameters
-		push(@file_data, $print_filename);
-		push(@file_data, $rate);
-		push(@file_data, shorten_number($found, $fwidth[$F_LN_NUM]));
-		push(@file_data, $fnrate);
-		push(@file_data, shorten_number($fn_found, $fwidth[$F_FN_NUM]));
-		push(@file_data, $brrate);
-		push(@file_data, shorten_number($br_found, $fwidth[$F_BR_NUM]));
-
-		# Print assembled line
-		printf($format, @file_data);
-	}
-
-	# Determine total line coverage rate
-	$rate = shorten_rate($total_hit, $total_found, $fwidth[$F_LN_RATE]);
-	# Determine total function coverage rate
-	$fnrate = shorten_rate($fn_total_hit, $fn_total_found,
-			       $fwidth[$F_FN_RATE]);
-	# Determine total branch coverage rate
-	$brrate = shorten_rate($br_total_hit, $br_total_found,
-			       $fwidth[$F_BR_RATE]);
-
-	# Print separator
-	print(("="x$barlen)."\n");
-
-	# Assemble line parameters
-	push(@footer, sprintf("%*s", $strlen, "Total:"));
-	push(@footer, $rate);
-	push(@footer, shorten_number($total_found, $fwidth[$F_LN_NUM]));
-	push(@footer, $fnrate);
-	push(@footer, shorten_number($fn_total_found, $fwidth[$F_FN_NUM]));
-	push(@footer, $brrate);
-	push(@footer, shorten_number($br_total_found, $fwidth[$F_BR_NUM]));
-
-	# Print assembled line
-	printf($format, @footer);
-}
-
-
-#
-# get_common_filename(filename1, filename2)
-#
-# Check for filename components which are common to FILENAME1 and FILENAME2.
-# Upon success, return
-#
-#   (common, path1, path2)
-#
-#  or 'undef' in case there are no such parts.
-#
-
-sub get_common_filename($$)
-{
-        my @list1 = split("/", $_[0]);
-        my @list2 = split("/", $_[1]);
-	my @result;
-
-	# Work in reverse order, i.e. beginning with the filename itself
-	while (@list1 && @list2 && ($list1[$#list1] eq $list2[$#list2]))
-	{
-		unshift(@result, pop(@list1));
-		pop(@list2);
-	}
-
-	# Did we find any similarities?
-	if (scalar(@result) > 0)
-	{
-	        return (join("/", @result), join("/", @list1),
-			join("/", @list2));
-	}
-	else
-	{
-		return undef;
-	}
-}
-
-
-#
-# strip_directories($path, $depth)
-#
-# Remove DEPTH leading directory levels from PATH.
-#
-
-sub strip_directories($$)
-{
-	my $filename = $_[0];
-	my $depth = $_[1];
-	my $i;
-
-	if (!defined($depth) || ($depth < 1))
-	{
-		return $filename;
-	}
-	for ($i = 0; $i < $depth; $i++)
-	{
-		$filename =~ s/^[^\/]*\/+(.*)$/$1/;
-	}
-	return $filename;
-}
-
-
-#
-# read_diff(filename)
-#
-# Read diff output from FILENAME to memory. The diff file has to follow the
-# format generated by 'diff -u'. Returns a list of hash references:
-#
-#   (mapping, path mapping)
-#
-#   mapping:   filename -> reference to line hash
-#   line hash: line number in new file -> corresponding line number in old file
-#
-#   path mapping:  filename -> old filename
-#
-# Die in case of error.
-#
-
-sub read_diff($)
-{
-	my $diff_file = $_[0];	# Name of diff file
-	my %diff;		# Resulting mapping filename -> line hash
-	my %paths;		# Resulting mapping old path  -> new path
-	my $mapping;		# Reference to current line hash
-	my $line;		# Contents of current line
-	my $num_old;		# Current line number in old file
-	my $num_new;		# Current line number in new file
-	my $file_old;		# Name of old file in diff section
-	my $file_new;		# Name of new file in diff section
-	my $filename;		# Name of common filename of diff section
-	my $in_block = 0;	# Non-zero while we are inside a diff block
-	local *HANDLE;		# File handle for reading the diff file
-
-	info("Reading diff $diff_file\n");
-
-	# Check if file exists and is readable
-	stat($diff_file);
-	if (!(-r _))
-	{
-		die("ERROR: cannot read file $diff_file!\n");
-	}
-
-	# Check if this is really a plain file
-	if (!(-f _))
-	{
-		die("ERROR: not a plain file: $diff_file!\n");
-	}
-
-	# Check for .gz extension
-	if ($diff_file =~ /\.gz$/)
-	{
-		# Check for availability of GZIP tool
-		system_no_output(1, "gunzip", "-h")
-			and die("ERROR: gunzip command not available!\n");
-
-		# Check integrity of compressed file
-		system_no_output(1, "gunzip", "-t", $diff_file)
-			and die("ERROR: integrity check failed for ".
-				"compressed file $diff_file!\n");
-
-		# Open compressed file
-		open(HANDLE, "-|", "gunzip -c '$diff_file'")
-			or die("ERROR: cannot start gunzip to decompress ".
-			       "file $_[0]!\n");
-	}
-	else
-	{
-		# Open decompressed file
-		open(HANDLE, "<", $diff_file)
-			or die("ERROR: cannot read file $_[0]!\n");
-	}
-
-	# Parse diff file line by line
-	while (<HANDLE>)
-	{
-		chomp($_);
-		$line = $_;
-
-		foreach ($line)
-		{
-			# Filename of old file:
-			# --- <filename> <date>
-			/^--- (\S+)/ && do
-			{
-				$file_old = strip_directories($1, $strip);
-				last;
-			};
-			# Filename of new file:
-			# +++ <filename> <date>
-			/^\+\+\+ (\S+)/ && do
-			{
-				# Add last file to resulting hash
-				if ($filename)
-				{
-					my %new_hash;
-					$diff{$filename} = $mapping;
-					$mapping = \%new_hash;
-				}
-				$file_new = strip_directories($1, $strip);
-				$filename = $file_old;
-				$paths{$filename} = $file_new;
-				$num_old = 1;
-				$num_new = 1;
-				last;
-			};
-			# Start of diff block:
-			# @@ -old_start,old_num, +new_start,new_num @@
-			/^\@\@\s+-(\d+),(\d+)\s+\+(\d+),(\d+)\s+\@\@$/ && do
-			{
-			$in_block = 1;
-			while ($num_old < $1)
-			{
-				$mapping->{$num_new} = $num_old;
-				$num_old++;
-				$num_new++;
-			}
-			last;
-			};
-			# Unchanged line
-			# <line starts with blank>
-			/^ / && do
-			{
-				if ($in_block == 0)
-				{
-					last;
-				}
-				$mapping->{$num_new} = $num_old;
-				$num_old++;
-				$num_new++;
-				last;
-			};
-			# Line as seen in old file
-			# <line starts with '-'>
-			/^-/ && do
-			{
-				if ($in_block == 0)
-				{
-					last;
-				}
-				$num_old++;
-				last;
-			};
-			# Line as seen in new file
-			# <line starts with '+'>
-			/^\+/ && do
-			{
-				if ($in_block == 0)
-				{
-					last;
-				}
-				$num_new++;
-				last;
-			};
-			# Empty line
-			/^$/ && do
-			{
-				if ($in_block == 0)
-				{
-					last;
-				}
-				$mapping->{$num_new} = $num_old;
-				$num_old++;
-				$num_new++;
-				last;
-			};
-		}
-	}
-
-	close(HANDLE);
-
-	# Add final diff file section to resulting hash
-	if ($filename)
-	{
-		$diff{$filename} = $mapping;
-	}
-
-	if (!%diff)
-	{
-		die("ERROR: no valid diff data found in $diff_file!\n".
-		    "Make sure to use 'diff -u' when generating the diff ".
-		    "file.\n");
-	}
-	return (\%diff, \%paths);
-}
-
-
-#
-# apply_diff($count_data, $line_hash)
-#
-# Transform count data using a mapping of lines:
-#
-#   $count_data: reference to hash: line number -> data
-#   $line_hash:  reference to hash: line number new -> line number old
-#
-# Return a reference to transformed count data.
-#
-
-sub apply_diff($$)
-{
-	my $count_data = $_[0];	# Reference to data hash: line -> hash
-	my $line_hash = $_[1];	# Reference to line hash: new line -> old line
-	my %result;		# Resulting hash
-	my $last_new = 0;	# Last new line number found in line hash
-	my $last_old = 0;	# Last old line number found in line hash
-
-	# Iterate all new line numbers found in the diff
-	foreach (sort({$a <=> $b} keys(%{$line_hash})))
-	{
-		$last_new = $_;
-		$last_old = $line_hash->{$last_new};
-
-		# Is there data associated with the corresponding old line?
-		if (defined($count_data->{$line_hash->{$_}}))
-		{
-			# Copy data to new hash with a new line number
-			$result{$_} = $count_data->{$line_hash->{$_}};
-		}
-	}
-	# Transform all other lines which come after the last diff entry
-	foreach (sort({$a <=> $b} keys(%{$count_data})))
-	{
-		if ($_ <= $last_old)
-		{
-			# Skip lines which were covered by line hash
-			next;
-		}
-		# Copy data to new hash with an offset
-		$result{$_ + ($last_new - $last_old)} = $count_data->{$_};
-	}
-
-	return \%result;
-}
-
-
-#
-# apply_diff_to_brcount(brcount, linedata)
-#
-# Adjust line numbers of branch coverage data according to linedata.
-#
-
-sub apply_diff_to_brcount($$)
-{
-	my ($brcount, $linedata) = @_;
-	my $db;
-
-	# Convert brcount to db format
-	$db = brcount_to_db($brcount);
-	# Apply diff to db format
-	$db = apply_diff($db, $linedata);
-	# Convert db format back to brcount format
-	($brcount) = db_to_brcount($db);
-
-	return $brcount;
-}
-
-
-#
-# get_hash_max(hash_ref)
-#
-# Return the highest integer key from hash.
-#
-
-sub get_hash_max($)
-{
-	my ($hash) = @_;
-	my $max;
-
-	foreach (keys(%{$hash})) {
-		if (!defined($max)) {
-			$max = $_;
-		} elsif ($hash->{$_} > $max) {
-			$max = $_;
-		}
-	}
-	return $max;
-}
-
-sub get_hash_reverse($)
-{
-	my ($hash) = @_;
-	my %result;
-
-	foreach (keys(%{$hash})) {
-		$result{$hash->{$_}} = $_;
-	}
-
-	return \%result;
-}
-
-#
-# apply_diff_to_funcdata(funcdata, line_hash)
-#
-
-sub apply_diff_to_funcdata($$)
-{
-	my ($funcdata, $linedata) = @_;
-	my $last_new = get_hash_max($linedata);
-	my $last_old = $linedata->{$last_new};
-	my $func;
-	my %result;
-	my $line_diff = get_hash_reverse($linedata);
-
-	foreach $func (keys(%{$funcdata})) {
-		my $line = $funcdata->{$func};
-
-		if (defined($line_diff->{$line})) {
-			$result{$func} = $line_diff->{$line};
-		} elsif ($line > $last_old) {
-			$result{$func} = $line + $last_new - $last_old;
-		}
-	}
-
-	return \%result;
-}
-
-
-#
-# get_line_hash($filename, $diff_data, $path_data)
-#
-# Find line hash in DIFF_DATA which matches FILENAME. On success, return list
-# line hash. or undef in case of no match. Die if more than one line hashes in
-# DIFF_DATA match.
-#
-
-sub get_line_hash($$$)
-{
-	my $filename = $_[0];
-	my $diff_data = $_[1];
-	my $path_data = $_[2];
-	my $conversion;
-	my $old_path;
-	my $new_path;
-	my $diff_name;
-	my $common;
-	my $old_depth;
-	my $new_depth;
-
-	# Remove trailing slash from diff path
-	$diff_path =~ s/\/$//;
-	foreach (keys(%{$diff_data}))
-	{
-		my $sep = "";
-
-		$sep = '/' if (!/^\//);
-
-		# Try to match diff filename with filename
-		if ($filename =~ /^\Q$diff_path$sep$_\E$/)
-		{
-			if ($diff_name)
-			{
-				# Two files match, choose the more specific one
-				# (the one with more path components)
-				$old_depth = ($diff_name =~ tr/\///);
-				$new_depth = (tr/\///);
-				if ($old_depth == $new_depth)
-				{
-					die("ERROR: diff file contains ".
-					    "ambiguous entries for ".
-					    "$filename\n");
-				}
-				elsif ($new_depth > $old_depth)
-				{
-					$diff_name = $_;
-				}
-			}
-			else
-			{
-				$diff_name = $_;
-			}
-		};
-	}
-	if ($diff_name)
-	{
-		# Get converted path
-		if ($filename =~ /^(.*)$diff_name$/)
-		{
-			($common, $old_path, $new_path) =
-				get_common_filename($filename,
-					$1.$path_data->{$diff_name});
-		}
-		return ($diff_data->{$diff_name}, $old_path, $new_path);
-	}
-	else
-	{
-		return undef;
-	}
-}
-
-
-#
-# convert_paths(trace_data, path_conversion_data)
-#
-# Rename all paths in TRACE_DATA which show up in PATH_CONVERSION_DATA.
-#
-
-sub convert_paths($$)
-{
-	my $trace_data = $_[0];
-	my $path_conversion_data = $_[1];
-	my $filename;
-	my $new_path;
-
-	if (scalar(keys(%{$path_conversion_data})) == 0)
-	{
-		info("No path conversion data available.\n");
-		return;
-	}
-
-	# Expand path conversion list
-	foreach $filename (keys(%{$path_conversion_data}))
-	{
-		$new_path = $path_conversion_data->{$filename};
-		while (($filename =~ s/^(.*)\/[^\/]+$/$1/) &&
-		       ($new_path =~ s/^(.*)\/[^\/]+$/$1/) &&
-		       ($filename ne $new_path))
-		{
-			$path_conversion_data->{$filename} = $new_path;
-		}
-	}
-
-	# Adjust paths
-	FILENAME: foreach $filename (keys(%{$trace_data}))
-	{
-		# Find a path in our conversion table that matches, starting
-		# with the longest path
-		foreach (sort({length($b) <=> length($a)}
-			      keys(%{$path_conversion_data})))
-		{
-			# Is this path a prefix of our filename?
-			if (!($filename =~ /^$_(.*)$/))
-			{
-				next;
-			}
-			$new_path = $path_conversion_data->{$_}.$1;
-
-			# Make sure not to overwrite an existing entry under
-			# that path name
-			if ($trace_data->{$new_path})
-			{
-				# Need to combine entries
-				$trace_data->{$new_path} =
-					combine_info_entries(
-						$trace_data->{$filename},
-						$trace_data->{$new_path},
-						$filename);
-			}
-			else
-			{
-				# Simply rename entry
-				$trace_data->{$new_path} =
-					$trace_data->{$filename};
-			}
-			delete($trace_data->{$filename});
-			next FILENAME;
-		}
-		info("No conversion available for filename $filename\n");
-	}
-}
-
-#
-# sub adjust_fncdata(funcdata, testfncdata, sumfnccount)
-#
-# Remove function call count data from testfncdata and sumfnccount which
-# is no longer present in funcdata.
-#
-
-sub adjust_fncdata($$$)
-{
-	my ($funcdata, $testfncdata, $sumfnccount) = @_;
-	my $testname;
-	my $func;
-	my $f_found;
-	my $f_hit;
-
-	# Remove count data in testfncdata for functions which are no longer
-	# in funcdata
-	foreach $testname (keys(%{$testfncdata})) {
-		my $fnccount = $testfncdata->{$testname};
-
-		foreach $func (keys(%{$fnccount})) {
-			if (!defined($funcdata->{$func})) {
-				delete($fnccount->{$func});
-			}
-		}
-	}
-	# Remove count data in sumfnccount for functions which are no longer
-	# in funcdata
-	foreach $func (keys(%{$sumfnccount})) {
-		if (!defined($funcdata->{$func})) {
-			delete($sumfnccount->{$func});
-		}
-	}
-}
-
-#
-# get_func_found_and_hit(sumfnccount)
-#
-# Return (f_found, f_hit) for sumfnccount
-#
-
-sub get_func_found_and_hit($)
-{
-	my ($sumfnccount) = @_;
-	my $function;
-	my $f_found;
-	my $f_hit;
-
-	$f_found = scalar(keys(%{$sumfnccount}));
-	$f_hit = 0;
-	foreach $function (keys(%{$sumfnccount})) {
-		if ($sumfnccount->{$function} > 0) {
-			$f_hit++;
-		}
-	}
-	return ($f_found, $f_hit);
-}
-
-#
-# diff()
-#
-
-sub diff()
-{
-	my $trace_data = read_info_file($diff);
-	my $diff_data;
-	my $path_data;
-	my $old_path;
-	my $new_path;
-	my %path_conversion_data;
-	my $filename;
-	my $line_hash;
-	my $new_name;
-	my $entry;
-	my $testdata;
-	my $testname;
-	my $sumcount;
-	my $funcdata;
-	my $checkdata;
-	my $testfncdata;
-	my $sumfnccount;
-	my $testbrdata;
-	my $sumbrcount;
-	my $found;
-	my $hit;
-	my $f_found;
-	my $f_hit;
-	my $br_found;
-	my $br_hit;
-	my $converted = 0;
-	my $unchanged = 0;
-	my @result;
-	local *INFO_HANDLE;
-
-	($diff_data, $path_data) = read_diff($ARGV[0]);
-
-        foreach $filename (sort(keys(%{$trace_data})))
-        {
-		# Find a diff section corresponding to this file
-		($line_hash, $old_path, $new_path) =
-			get_line_hash($filename, $diff_data, $path_data);
-		if (!$line_hash)
-		{
-			# There's no diff section for this file
-			$unchanged++;
-			next;
-		}
-		$converted++;
-		if ($old_path && $new_path && ($old_path ne $new_path))
-		{
-			$path_conversion_data{$old_path} = $new_path;
-		}
-		# Check for deleted files
-		if (scalar(keys(%{$line_hash})) == 0)
-		{
-			info("Removing $filename\n");
-			delete($trace_data->{$filename});
-			next;
-		}
-		info("Converting $filename\n");
-		$entry = $trace_data->{$filename};
-		($testdata, $sumcount, $funcdata, $checkdata, $testfncdata,
-		 $sumfnccount, $testbrdata, $sumbrcount) =
-			get_info_entry($entry);
-		# Convert test data
-		foreach $testname (keys(%{$testdata}))
-		{
-			# Adjust line numbers of line coverage data
-			$testdata->{$testname} =
-				apply_diff($testdata->{$testname}, $line_hash);
-			# Adjust line numbers of branch coverage data
-			$testbrdata->{$testname} =
-				apply_diff_to_brcount($testbrdata->{$testname},
-						      $line_hash);
-			# Remove empty sets of test data
-			if (scalar(keys(%{$testdata->{$testname}})) == 0)
-			{
-				delete($testdata->{$testname});
-				delete($testfncdata->{$testname});
-				delete($testbrdata->{$testname});
-			}
-		}
-		# Rename test data to indicate conversion
-		foreach $testname (keys(%{$testdata}))
-		{
-			# Skip testnames which already contain an extension
-			if ($testname =~ /,[^,]+$/)
-			{
-				next;
-			}
-			# Check for name conflict
-			if (defined($testdata->{$testname.",diff"}))
-			{
-				# Add counts
-				($testdata->{$testname}) = add_counts(
-					$testdata->{$testname},
-					$testdata->{$testname.",diff"});
-				delete($testdata->{$testname.",diff"});
-				# Add function call counts
-				($testfncdata->{$testname}) = add_fnccount(
-					$testfncdata->{$testname},
-					$testfncdata->{$testname.",diff"});
-				delete($testfncdata->{$testname.",diff"});
-				# Add branch counts
-				combine_brcount(
-					$testbrdata->{$testname},
-					$testbrdata->{$testname.",diff"},
-					$BR_ADD, 1);
-				delete($testbrdata->{$testname.",diff"});
-			}
-			# Move test data to new testname
-			$testdata->{$testname.",diff"} = $testdata->{$testname};
-			delete($testdata->{$testname});
-			# Move function call count data to new testname
-			$testfncdata->{$testname.",diff"} =
-				$testfncdata->{$testname};
-			delete($testfncdata->{$testname});
-			# Move branch count data to new testname
-			$testbrdata->{$testname.",diff"} =
-				$testbrdata->{$testname};
-			delete($testbrdata->{$testname});
-		}
-		# Convert summary of test data
-		$sumcount = apply_diff($sumcount, $line_hash);
-		# Convert function data
-		$funcdata = apply_diff_to_funcdata($funcdata, $line_hash);
-		# Convert branch coverage data
-		$sumbrcount = apply_diff_to_brcount($sumbrcount, $line_hash);
-		# Update found/hit numbers
-		# Convert checksum data
-		$checkdata = apply_diff($checkdata, $line_hash);
-		# Convert function call count data
-		adjust_fncdata($funcdata, $testfncdata, $sumfnccount);
-		($f_found, $f_hit) = get_func_found_and_hit($sumfnccount);
-		($br_found, $br_hit) = get_br_found_and_hit($sumbrcount);
-		# Update found/hit numbers
-		$found = 0;
-		$hit = 0;
-		foreach (keys(%{$sumcount}))
-		{
-			$found++;
-			if ($sumcount->{$_} > 0)
-			{
-				$hit++;
-			}
-		}
-		if ($found > 0)
-		{
-			# Store converted entry
-			set_info_entry($entry, $testdata, $sumcount, $funcdata,
-				       $checkdata, $testfncdata, $sumfnccount,
-				       $testbrdata, $sumbrcount, $found, $hit,
-				       $f_found, $f_hit, $br_found, $br_hit);
-		}
-		else
-		{
-			# Remove empty data set
-			delete($trace_data->{$filename});
-		}
-        }
-
-	# Convert filenames as well if requested
-	if ($convert_filenames)
-	{
-		convert_paths($trace_data, \%path_conversion_data);
-	}
-
-	info("$converted entr".($converted != 1 ? "ies" : "y")." converted, ".
-	     "$unchanged entr".($unchanged != 1 ? "ies" : "y")." left ".
-	     "unchanged.\n");
-
-	# Write data
-	if (!$data_stdout)
-	{
-		info("Writing data to $output_filename\n");
-		open(INFO_HANDLE, ">", $output_filename)
-			or die("ERROR: cannot write to $output_filename!\n");
-		@result = write_info_file(*INFO_HANDLE, $trace_data);
-		close(*INFO_HANDLE);
-	}
-	else
-	{
-		@result = write_info_file(*STDOUT, $trace_data);
-	}
-
-	return @result;
-}
-
-#
-# summary()
-#
-
-sub summary()
-{
-	my $filename;
-	my $current;
-	my $total;
-	my $ln_total_found;
-	my $ln_total_hit;
-	my $fn_total_found;
-	my $fn_total_hit;
-	my $br_total_found;
-	my $br_total_hit;
-
-	# Read and combine trace files
-	foreach $filename (@opt_summary) {
-		$current = read_info_file($filename);
-		if (!defined($total)) {
-			$total = $current;
-		} else {
-			$total = combine_info_files($total, $current);
-		}
-	}
-	# Calculate coverage data
-	foreach $filename (keys(%{$total}))
-	{
-		my $entry = $total->{$filename};
-		my $ln_found;
-		my $ln_hit;
-		my $fn_found;
-		my $fn_hit;
-		my $br_found;
-		my $br_hit;
-
-		(undef, undef, undef, undef, undef, undef, undef, undef,
-			$ln_found, $ln_hit, $fn_found, $fn_hit, $br_found,
-			$br_hit) = get_info_entry($entry);
-
-		# Add to totals
-		$ln_total_found	+= $ln_found;
-		$ln_total_hit	+= $ln_hit;
-		$fn_total_found += $fn_found;
-		$fn_total_hit	+= $fn_hit;
-		$br_total_found += $br_found;
-		$br_total_hit	+= $br_hit;
-	}
-
-
-	return ($ln_total_found, $ln_total_hit, $fn_total_found, $fn_total_hit,
-		$br_total_found, $br_total_hit);
-}
-
-#
-# system_no_output(mode, parameters)
-#
-# Call an external program using PARAMETERS while suppressing depending on
-# the value of MODE:
-#
-#   MODE & 1: suppress STDOUT
-#   MODE & 2: suppress STDERR
-#
-# Return 0 on success, non-zero otherwise.
-#
-
-sub system_no_output($@)
-{
-	my $mode = shift;
-	my $result;
-	local *OLD_STDERR;
-	local *OLD_STDOUT;
-
-	# Save old stdout and stderr handles
-	($mode & 1) && open(OLD_STDOUT, ">>&", "STDOUT");
-	($mode & 2) && open(OLD_STDERR, ">>&", "STDERR");
-
-	# Redirect to /dev/null
-	($mode & 1) && open(STDOUT, ">", "/dev/null");
-	($mode & 2) && open(STDERR, ">", "/dev/null");
- 
-	system(@_);
-	$result = $?;
-
-	# Close redirected handles
-	($mode & 1) && close(STDOUT);
-	($mode & 2) && close(STDERR);
-
-	# Restore old handles
-	($mode & 1) && open(STDOUT, ">>&", "OLD_STDOUT");
-	($mode & 2) && open(STDERR, ">>&", "OLD_STDERR");
- 
-	return $result;
-}
-
-
-#
-# read_config(filename)
-#
-# Read configuration file FILENAME and return a reference to a hash containing
-# all valid key=value pairs found.
-#
-
-sub read_config($)
-{
-	my $filename = $_[0];
-	my %result;
-	my $key;
-	my $value;
-	local *HANDLE;
-
-	if (!open(HANDLE, "<", $filename))
-	{
-		warn("WARNING: cannot read configuration file $filename\n");
-		return undef;
-	}
-	while (<HANDLE>)
-	{
-		chomp;
-		# Skip comments
-		s/#.*//;
-		# Remove leading blanks
-		s/^\s+//;
-		# Remove trailing blanks
-		s/\s+$//;
-		next unless length;
-		($key, $value) = split(/\s*=\s*/, $_, 2);
-		if (defined($key) && defined($value))
-		{
-			$result{$key} = $value;
-		}
-		else
-		{
-			warn("WARNING: malformed statement in line $. ".
-			     "of configuration file $filename\n");
-		}
-	}
-	close(HANDLE);
-	return \%result;
-}
-
-
-#
-# apply_config(REF)
-#
-# REF is a reference to a hash containing the following mapping:
-#
-#   key_string => var_ref
-#
-# where KEY_STRING is a keyword and VAR_REF is a reference to an associated
-# variable. If the global configuration hashes CONFIG or OPT_RC contain a value
-# for keyword KEY_STRING, VAR_REF will be assigned the value for that keyword. 
-#
-
-sub apply_config($)
-{
-	my $ref = $_[0];
-
-	foreach (keys(%{$ref}))
-	{
-		if (defined($opt_rc{$_})) {
-			${$ref->{$_}} = $opt_rc{$_};
-		} elsif (defined($config->{$_})) {
-			${$ref->{$_}} = $config->{$_};
-		}
-	}
-}
-
-sub warn_handler($)
-{
-	my ($msg) = @_;
-
-	warn("$tool_name: $msg");
-}
-
-sub die_handler($)
-{
-	my ($msg) = @_;
-
-	temp_cleanup();
-	die("$tool_name: $msg");
-}
-
-sub abort_handler($)
-{
-	temp_cleanup();
-	exit(1);
-}
-
-sub temp_cleanup()
-{
-	# Ensure temp directory is not in use by current process
-	chdir("/");
-
-	if (@temp_dirs) {
-		info("Removing temporary directories.\n");
-		foreach (@temp_dirs) {
-			rmtree($_);
-		}
-		@temp_dirs = ();
-	}
-}
-
-sub setup_gkv_sys()
-{
-	system_no_output(3, "mount", "-t", "debugfs", "nodev",
-			 "/sys/kernel/debug");
-}
-
-sub setup_gkv_proc()
-{
-	if (system_no_output(3, "modprobe", "gcov_proc")) {
-		system_no_output(3, "modprobe", "gcov_prof");
-	}
-}
-
-sub check_gkv_sys($)
-{
-	my ($dir) = @_;
-
-	if (-e "$dir/reset") {
-		return 1;
-	}
-	return 0;
-}
-
-sub check_gkv_proc($)
-{
-	my ($dir) = @_;
-
-	if (-e "$dir/vmlinux") {
-		return 1;
-	}
-	return 0;
-}
-
-sub setup_gkv()
-{
-	my $dir;
-	my $sys_dir = "/sys/kernel/debug/gcov";
-	my $proc_dir = "/proc/gcov";
-	my @todo;
-
-	if (!defined($gcov_dir)) {
-		info("Auto-detecting gcov kernel support.\n");
-		@todo = ( "cs", "cp", "ss", "cs", "sp", "cp" );
-	} elsif ($gcov_dir =~ /proc/) {
-		info("Checking gcov kernel support at $gcov_dir ".
-		     "(user-specified).\n");
-		@todo = ( "cp", "sp", "cp", "cs", "ss", "cs");
-	} else {
-		info("Checking gcov kernel support at $gcov_dir ".
-		     "(user-specified).\n");
-		@todo = ( "cs", "ss", "cs", "cp", "sp", "cp", );
-	}
-	foreach (@todo) {
-		if ($_ eq "cs") {
-			# Check /sys
-			$dir = defined($gcov_dir) ? $gcov_dir : $sys_dir;
-			if (check_gkv_sys($dir)) {
-				info("Found ".$GKV_NAME[$GKV_SYS]." gcov ".
-				     "kernel support at $dir\n");
-				return ($GKV_SYS, $dir);
-			}
-		} elsif ($_ eq "cp") {
-			# Check /proc
-			$dir = defined($gcov_dir) ? $gcov_dir : $proc_dir;
-			if (check_gkv_proc($dir)) {
-				info("Found ".$GKV_NAME[$GKV_PROC]." gcov ".
-				     "kernel support at $dir\n");
-				return ($GKV_PROC, $dir);
-			}
-		} elsif ($_ eq "ss") {
-			# Setup /sys
-			setup_gkv_sys();
-		} elsif ($_ eq "sp") {
-			# Setup /proc
-			setup_gkv_proc();
-		}
-	}
-	if (defined($gcov_dir)) {
-		die("ERROR: could not find gcov kernel data at $gcov_dir\n");
-	} else {
-		die("ERROR: no gcov kernel data found\n");
-	}
-}
-
-
-#
-# get_overall_line(found, hit, name_singular, name_plural)
-#
-# Return a string containing overall information for the specified
-# found/hit data.
-#
-
-sub get_overall_line($$$$)
-{
-	my ($found, $hit, $name_sn, $name_pl) = @_;
-	my $name;
-
-	return "no data found" if (!defined($found) || $found == 0);
-	$name = ($found == 1) ? $name_sn : $name_pl;
-
-	return rate($hit, $found, "% ($hit of $found $name)");
-}
-
-
-#
-# print_overall_rate(ln_do, ln_found, ln_hit, fn_do, fn_found, fn_hit, br_do
-#                    br_found, br_hit)
-#
-# Print overall coverage rates for the specified coverage types.
-#
-
-sub print_overall_rate($$$$$$$$$)
-{
-	my ($ln_do, $ln_found, $ln_hit, $fn_do, $fn_found, $fn_hit,
-	    $br_do, $br_found, $br_hit) = @_;
-
-	info("Summary coverage rate:\n");
-	info("  lines......: %s\n",
-	     get_overall_line($ln_found, $ln_hit, "line", "lines"))
-		if ($ln_do);
-	info("  functions..: %s\n",
-	     get_overall_line($fn_found, $fn_hit, "function", "functions"))
-		if ($fn_do);
-	info("  branches...: %s\n",
-	     get_overall_line($br_found, $br_hit, "branch", "branches"))
-		if ($br_do);
-}
-
-
-#
-# rate(hit, found[, suffix, precision, width])
-#
-# Return the coverage rate [0..100] for HIT and FOUND values. 0 is only
-# returned when HIT is 0. 100 is only returned when HIT equals FOUND.
-# PRECISION specifies the precision of the result. SUFFIX defines a
-# string that is appended to the result if FOUND is non-zero. Spaces
-# are added to the start of the resulting string until it is at least WIDTH
-# characters wide.
-#
-
-sub rate($$;$$$)
-{
-        my ($hit, $found, $suffix, $precision, $width) = @_;
-        my $rate; 
-
-	# Assign defaults if necessary
-        $precision	= 1	if (!defined($precision));
-	$suffix		= ""	if (!defined($suffix));
-	$width		= 0	if (!defined($width));
-        
-        return sprintf("%*s", $width, "-") if (!defined($found) || $found == 0);
-        $rate = sprintf("%.*f", $precision, $hit * 100 / $found);
-
-	# Adjust rates if necessary
-        if ($rate == 0 && $hit > 0) {
-		$rate = sprintf("%.*f", $precision, 1 / 10 ** $precision);
-        } elsif ($rate == 100 && $hit != $found) {
-		$rate = sprintf("%.*f", $precision, 100 - 1 / 10 ** $precision);
-	}
-
-	return sprintf("%*s", $width, $rate.$suffix);
-}
diff --git a/ThirdParty/lcov/bin/updateversion.pl b/ThirdParty/lcov/bin/updateversion.pl
deleted file mode 100755
index 19db81ecd..000000000
--- a/ThirdParty/lcov/bin/updateversion.pl
+++ /dev/null
@@ -1,194 +0,0 @@
-#!/usr/bin/env perl
-
-use strict;
-use warnings;
-
-use File::Basename;
-
-sub update_man_page($);
-sub update_bin_tool($);
-sub update_txt_file($);
-sub update_spec_file($);
-sub write_version_file($);
-sub get_file_info($);
-
-our $directory = $ARGV[0];
-our $version = $ARGV[1];
-our $release = $ARGV[2];
-our $full = $ARGV[3];
-
-our @man_pages = ("man/gendesc.1",  "man/genhtml.1",  "man/geninfo.1",
-		  "man/genpng.1", "man/lcov.1", "man/lcovrc.5");
-our @bin_tools = ("bin/gendesc", "bin/genhtml", "bin/geninfo",
-		  "bin/genpng", "bin/lcov");
-our @txt_files = ("README");
-our @spec_files = ("rpm/lcov.spec");
-
-if (!defined($directory) || !defined($version) || !defined($release)) {
-	die("Usage: $0 DIRECTORY|FILE VERSION RELEASE FULL_VERSION\n");
-}
-
-# Determine mode of operation
-if (-f $directory) {
-	my $file = $directory;
-	my $base = basename($file);
-
-	if (grep(/^$base$/, map({ basename($_) } @man_pages))) {
-		print("Updating man page $file\n");
-		update_man_page($file);
-	} elsif (grep(/^$base$/, map({ basename($_) } @bin_tools))) {
-		print("Updating bin tool $file\n");
-		update_bin_tool($file);
-	} elsif (grep(/^$base$/, map({ basename($_) } @txt_files))) {
-		print("Updating text file $file\n");
-		update_txt_file($file);
-	} elsif (grep(/^$base$/, map({ basename($_) } @spec_files))) {
-		print("Updating spec file $file\n");
-		update_spec_file($file);
-	} elsif ($base eq ".version") {
-		print("Updating version file $file\n");
-		write_version_file($file);
-	} else {
-		print("WARNING: Skipping unknown file $file\n");
-	}
-	print("Done.\n");
-	exit(0);
-}
-
-foreach (@man_pages) {
-	print("Updating man page $_\n");
-	update_man_page($directory."/".$_);
-}
-foreach (@bin_tools) {
-	print("Updating bin tool $_\n");
-	update_bin_tool($directory."/".$_);
-}
-foreach (@txt_files) {
-	print("Updating text file $_\n");
-	update_txt_file($directory."/".$_);
-}
-foreach (@spec_files) {
-	print("Updating spec file $_\n");
-	update_spec_file($directory."/".$_);
-}
-print("Updating version file $directory/.version\n");
-write_version_file("$directory/.version");
-print("Done.\n");
-
-sub get_file_info($)
-{
-	my ($filename) = @_;
-	my ($sec, $min, $hour, $year, $month, $day);
-	my @stat;
-	my $gittime;
-
-	return (0, 0, 0) if (!-e $filename);
-	@stat = stat($filename);
-	($sec, $min, $hour, $day, $month, $year) = gmtime($stat[9]);
-	$year += 1900;
-	$month += 1;
-
-	return (sprintf("%04d-%02d-%02d", $year, $month, $day),
-		sprintf("%04d%02d%02d%02d%02d.%02d", $year, $month, $day,
-			$hour, $min, $sec),
-		sprintf("%o", $stat[2] & 07777));
-}
-
-sub update_man_page($)
-{
-	my ($filename) = @_;
-	my @date = get_file_info($filename);
-	my $date_string = $date[0];
-	local *IN;
-	local *OUT;
-
-	$date_string =~ s/-/\\-/g;
-	open(IN, "<$filename") || die ("Error: cannot open $filename\n");
-	open(OUT, ">$filename.new") ||
-		die("Error: cannot create $filename.new\n");
-	while (<IN>) {
-		s/\"LCOV\s+\d+\.\d+\"/\"LCOV $version\"/g;
-		s/\d\d\d\d\\\-\d\d\\\-\d\d/$date_string/g;
-		print(OUT $_);
-	}
-	close(OUT);
-	close(IN);
-	chmod(oct($date[2]), "$filename.new");
-	system("mv", "-f", "$filename.new", "$filename");
-	system("touch", "$filename", "-t", $date[1]);
-}
-
-sub update_bin_tool($)
-{
-	my ($filename) = @_;
-	my @date = get_file_info($filename);
-	local *IN;
-	local *OUT;
-
-	open(IN, "<$filename") || die ("Error: cannot open $filename\n");
-	open(OUT, ">$filename.new") ||
-		die("Error: cannot create $filename.new\n");
-	while (<IN>) {
-		s/^(our\s+\$lcov_version\s*=).*$/$1 "LCOV version $full";/g;
-		print(OUT $_);
-	}
-	close(OUT);
-	close(IN);
-	chmod(oct($date[2]), "$filename.new");
-	system("mv", "-f", "$filename.new", "$filename");
-	system("touch", "$filename", "-t", $date[1]);
-}
-
-sub update_txt_file($)
-{
-	my ($filename) = @_;
-	my @date = get_file_info($filename);
-	local *IN;
-	local *OUT;
-
-	open(IN, "<$filename") || die ("Error: cannot open $filename\n");
-	open(OUT, ">$filename.new") ||
-		die("Error: cannot create $filename.new\n");
-	while (<IN>) {
-		s/(Last\s+changes:\s+)\d\d\d\d-\d\d-\d\d/$1$date[0]/g;
-		print(OUT $_);
-	}
-	close(OUT);
-	close(IN);
-	chmod(oct($date[2]), "$filename.new");
-	system("mv", "-f", "$filename.new", "$filename");
-	system("touch", "$filename", "-t", $date[1]);
-}
-
-sub update_spec_file($)
-{
-	my ($filename) = @_;
-	my @date = get_file_info($filename);
-	local *IN;
-	local *OUT;
-
-	open(IN, "<$filename") || die ("Error: cannot open $filename\n");
-	open(OUT, ">$filename.new") ||
-		die("Error: cannot create $filename.new\n");
-	while (<IN>) {
-		s/^(Version:\s*)\d+\.\d+.*$/$1$version/;
-		s/^(Release:\s*).*$/$1$release/;
-		print(OUT $_);
-	}
-	close(OUT);
-	close(IN);
-	system("mv", "-f", "$filename.new", "$filename");
-	system("touch", "$filename", "-t", $date[1]);
-}
-
-sub write_version_file($)
-{
-	my ($filename) = @_;
-	my $fd;
-
-	open($fd, ">", $filename) or die("Error: cannot write $filename: $!\n");
-	print($fd "VERSION=$version\n");
-	print($fd "RELEASE=$release\n");
-	print($fd "FULL=$full\n");
-	close($fd);
-}
diff --git a/ThirdParty/lcov/example/Makefile b/ThirdParty/lcov/example/Makefile
deleted file mode 100644
index 2f698a1b3..000000000
--- a/ThirdParty/lcov/example/Makefile
+++ /dev/null
@@ -1,98 +0,0 @@
-#
-# Makefile for the LCOV example program.
-#
-# Make targets:
-#   - example: compile the example program
-#   - output:  run test cases on example program and create HTML output
-#   - clean:   clean up directory
-#
-
-CC      := gcc
-CFLAGS  := -Wall -I. -fprofile-arcs -ftest-coverage
-
-LCOV    := ../bin/lcov
-GENHTML := ../bin/genhtml
-GENDESC := ../bin/gendesc
-GENPNG  := ../bin/genpng
-
-# Depending on the presence of the GD.pm perl module, we can use the
-# special option '--frames' for genhtml
-USE_GENPNG := $(shell $(GENPNG) --help >/dev/null 2>/dev/null; echo $$?)
-
-ifeq ($(USE_GENPNG),0)
-  FRAMES := --frames
-else
-  FRAMES :=
-endif
-
-.PHONY: clean output test_noargs test_2_to_2000 test_overflow
-
-all: output
-
-example: example.o iterate.o gauss.o
-	$(CC) example.o iterate.o gauss.o -o example -lgcov
-
-example.o: example.c iterate.h gauss.h
-	$(CC) $(CFLAGS) -c example.c -o example.o
-
-iterate.o: methods/iterate.c iterate.h
-	$(CC) $(CFLAGS) -c methods/iterate.c -o iterate.o
-
-gauss.o: methods/gauss.c gauss.h
-	$(CC) $(CFLAGS) -c methods/gauss.c -o gauss.o
-
-output: example descriptions test_noargs test_2_to_2000 test_overflow
-	@echo
-	@echo '*'
-	@echo '* Generating HTML output'
-	@echo '*'
-	@echo
-	$(GENHTML) trace_noargs.info trace_args.info trace_overflow.info \
-		   --output-directory output --title "Basic example" \
-		   --show-details --description-file descriptions $(FRAMES) \
-		   --legend
-	@echo
-	@echo '*'
-	@echo '* See '`pwd`/output/index.html
-	@echo '*'
-	@echo
-
-descriptions: descriptions.txt
-	$(GENDESC) descriptions.txt -o descriptions
-
-all_tests: example test_noargs test_2_to_2000 test_overflow
-
-test_noargs:
-	@echo
-	@echo '*'
-	@echo '* Test case 1: running ./example without parameters'
-	@echo '*'
-	@echo
-	$(LCOV) --zerocounters --directory .
-	./example
-	$(LCOV) --capture --directory . --output-file trace_noargs.info --test-name test_noargs --no-external
-
-test_2_to_2000:
-	@echo
-	@echo '*'
-	@echo '* Test case 2: running ./example 2 2000'
-	@echo '*'
-	@echo
-	$(LCOV) --zerocounters --directory .
-	./example 2 2000
-	$(LCOV) --capture --directory . --output-file trace_args.info --test-name test_2_to_2000 --no-external
-
-test_overflow:
-	@echo
-	@echo '*'
-	@echo '* Test case 3: running ./example 0 100000 (causes an overflow)'
-	@echo '*'
-	@echo
-	$(LCOV) --zerocounters --directory .
-	./example 0 100000 || true
-	$(LCOV) --capture --directory . --output-file trace_overflow.info --test-name "test_overflow" --no-external
-
-clean:
-	rm -rf *.o *.bb *.bbg *.da *.gcno *.gcda *.info output example \
-	descriptions
-
diff --git a/ThirdParty/lcov/example/README b/ThirdParty/lcov/example/README
deleted file mode 100644
index cf6cf2e4c..000000000
--- a/ThirdParty/lcov/example/README
+++ /dev/null
@@ -1,6 +0,0 @@
-
-To get an example of how the LCOV generated HTML output looks like,
-type 'make output' and point a web browser to the resulting file
-
-  output/index.html
-
diff --git a/ThirdParty/lcov/example/descriptions.txt b/ThirdParty/lcov/example/descriptions.txt
deleted file mode 100644
index 47e602131..000000000
--- a/ThirdParty/lcov/example/descriptions.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-test_noargs
-	Example program is called without arguments so that default range
-	[0..9] is used.
-
-test_2_to_2000
-	Example program is called with "2" and "2000" as arguments.
-
-test_overflow
-	Example program is called with "0" and "100000" as arguments. The
-	resulting sum is too large to be stored as an int variable.
diff --git a/ThirdParty/lcov/example/example.c b/ThirdParty/lcov/example/example.c
deleted file mode 100644
index f9049aa64..000000000
--- a/ThirdParty/lcov/example/example.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *  example.c
- * 
- *  Calculate the sum of a given range of integer numbers. The range is
- *  specified by providing two integer numbers as command line argument.
- *  If no arguments are specified, assume the predefined range [0..9].
- *  Abort with an error message if the resulting number is too big to be
- *  stored as int variable.
- *
- *  This program example is similar to the one found in the GCOV documentation.
- *  It is used to demonstrate the HTML output generated by LCOV.
- *
- *  The program is split into 3 modules to better demonstrate the 'directory
- *  overview' function. There are also a lot of bloated comments inserted to
- *  artificially increase the source code size so that the 'source code
- *  overview' function makes at least a minimum of sense.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "iterate.h"
-#include "gauss.h"
-
-static int start = 0;
-static int end = 9;
-
-
-int main (int argc, char* argv[])
-{
-	int total1, total2;
-
-	/* Accept a pair of numbers as command line arguments. */
-
-	if (argc == 3)
-	{
-		start	= atoi(argv[1]);
-		end	= atoi(argv[2]);
-	}
-
-
-	/* Use both methods to calculate the result. */
-
-	total1 = iterate_get_sum (start, end);
-	total2 = gauss_get_sum (start, end);
-
-
-	/* Make sure both results are the same. */
-
-	if (total1 != total2)
-	{
-		printf ("Failure (%d != %d)!\n", total1, total2);
-	}
-	else
-	{
-		printf ("Success, sum[%d..%d] = %d\n", start, end, total1);
-	}
-
-	return 0;
-}
diff --git a/ThirdParty/lcov/example/gauss.h b/ThirdParty/lcov/example/gauss.h
deleted file mode 100644
index 302a4a980..000000000
--- a/ThirdParty/lcov/example/gauss.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef GAUSS_H
-#define GAUSS_H GAUSS_h
-
-extern int gauss_get_sum (int min, int max);
-
-#endif /* GAUSS_H */
diff --git a/ThirdParty/lcov/example/iterate.h b/ThirdParty/lcov/example/iterate.h
deleted file mode 100644
index 471327951..000000000
--- a/ThirdParty/lcov/example/iterate.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef ITERATE_H
-#define ITERATE_H ITERATE_H
-
-extern int iterate_get_sum (int min, int max);
-
-#endif /* ITERATE_H */
diff --git a/ThirdParty/lcov/example/methods/gauss.c b/ThirdParty/lcov/example/methods/gauss.c
deleted file mode 100644
index 9da3ce508..000000000
--- a/ThirdParty/lcov/example/methods/gauss.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *  methods/gauss.c
- *
- *  Calculate the sum of a given range of integer numbers.
- *
- *  Somewhat of a more subtle way of calculation - and it even has a story
- *  behind it:
- *
- *  Supposedly during math classes in elementary school, the teacher of
- *  young mathematician Gauss gave the class an assignment to calculate the
- *  sum of all natural numbers between 1 and 100, hoping that this task would
- *  keep the kids occupied for some time. The story goes that Gauss had the
- *  result ready after only a few minutes. What he had written on his black
- *  board was something like this:
- *
- *    1 + 100 = 101
- *    2 + 99  = 101
- *    3 + 98  = 101
- *    .
- *    .
- *    100 + 1 = 101
- *
- *    s = (1/2) * 100 * 101 = 5050
- *
- *  A more general form of this formula would be
- *  
- *    s = (1/2) * (max + min) * (max - min + 1)
- *
- *  which is used in the piece of code below to implement the requested
- *  function in constant time, i.e. without dependencies on the size of the
- *  input parameters.
- *
- */
-
-#include "gauss.h"
-
-
-int gauss_get_sum (int min, int max)
-{
-	/* This algorithm doesn't work well with invalid range specifications
-	   so we're intercepting them here. */
-	if (max < min)
-	{
-		return 0;
-	}
-
-	return (int) ((max + min) * (double) (max - min + 1) / 2);
-}
diff --git a/ThirdParty/lcov/example/methods/iterate.c b/ThirdParty/lcov/example/methods/iterate.c
deleted file mode 100644
index 023d1801c..000000000
--- a/ThirdParty/lcov/example/methods/iterate.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  methods/iterate.c
- *  
- *  Calculate the sum of a given range of integer numbers.
- *
- *  This particular method of implementation works by way of brute force,
- *  i.e. it iterates over the entire range while adding the numbers to finally
- *  get the total sum. As a positive side effect, we're able to easily detect
- *  overflows, i.e. situations in which the sum would exceed the capacity
- *  of an integer variable.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "iterate.h"
-
-
-int iterate_get_sum (int min, int max)
-{
-	int i, total;
-
-	total = 0;
-
-	/* This is where we loop over each number in the range, including
-	   both the minimum and the maximum number. */
-
-	for (i = min; i <= max; i++)
-	{
-		/* We can detect an overflow by checking whether the new
-		   sum would become negative. */
-
-		if (total + i < total)
-		{
-			printf ("Error: sum too large!\n");
-			exit (1);
-		}
-
-		/* Everything seems to fit into an int, so continue adding. */
-
-		total += i;
-	}
-
-	return total;
-}
diff --git a/ThirdParty/lcov/lcovrc b/ThirdParty/lcov/lcovrc
deleted file mode 100644
index 40f364f17..000000000
--- a/ThirdParty/lcov/lcovrc
+++ /dev/null
@@ -1,169 +0,0 @@
-#
-# /etc/lcovrc - system-wide defaults for LCOV
-#
-# To change settings for a single user, place a customized copy of this file
-# at location ~/.lcovrc
-#
-
-# Specify an external style sheet file (same as --css-file option of genhtml)
-#genhtml_css_file = gcov.css
-
-# Specify coverage rate limits (in %) for classifying file entries
-# HI:   hi_limit <= rate <= 100         graph color: green
-# MED: med_limit <= rate <  hi_limit    graph color: orange
-# LO:         0  <= rate <  med_limit   graph color: red
-genhtml_hi_limit = 90
-genhtml_med_limit = 75
-
-# Width of line coverage field in source code view
-genhtml_line_field_width = 12
-
-# Width of branch coverage field in source code view
-genhtml_branch_field_width = 16
-
-# Width of overview image (used by --frames option of genhtml)
-genhtml_overview_width = 80
-
-# Resolution of overview navigation: this number specifies the maximum
-# difference in lines between the position a user selected from the overview
-# and the position the source code window is scrolled to (used by --frames
-# option of genhtml)
-genhtml_nav_resolution = 4
-
-# Clicking a line in the overview image should show the source code view at
-# a position a bit further up so that the requested line is not the first
-# line in the window. This number specifies that offset in lines (used by
-# --frames option of genhtml)
-genhtml_nav_offset = 10
-
-# Do not remove unused test descriptions if non-zero (same as
-# --keep-descriptions option of genhtml)
-genhtml_keep_descriptions = 0
-
-# Do not remove prefix from directory names if non-zero (same as --no-prefix
-# option of genhtml)
-genhtml_no_prefix = 0
-
-# Do not create source code view if non-zero (same as --no-source option of
-# genhtml)
-genhtml_no_source = 0
-
-# Replace tabs with number of spaces in source view (same as --num-spaces
-# option of genhtml)
-genhtml_num_spaces = 8
-
-# Highlight lines with converted-only data if non-zero (same as --highlight
-# option of genhtml)
-genhtml_highlight = 0
-
-# Include color legend in HTML output if non-zero (same as --legend option of
-# genhtml)
-genhtml_legend = 0
-
-# Use FILE as HTML prolog for generated pages (same as --html-prolog option of
-# genhtml)
-#genhtml_html_prolog = FILE
-
-# Use FILE as HTML epilog for generated pages (same as --html-epilog option of
-# genhtml)
-#genhtml_html_epilog = FILE
-
-# Use custom filename extension for pages (same as --html-extension option of
-# genhtml)
-#genhtml_html_extension = html
-
-# Compress all generated html files with gzip.
-#genhtml_html_gzip = 1
-
-# Include sorted overview pages (can be disabled by the --no-sort option of
-# genhtml)
-genhtml_sort = 1
-
-# Include function coverage data display (can be disabled by the
-# --no-func-coverage option of genhtml)
-#genhtml_function_coverage = 1
-
-# Include branch coverage data display (can be disabled by the
-# --no-branch-coverage option of genhtml)
-#genhtml_branch_coverage = 1
-
-# Specify the character set of all generated HTML pages
-genhtml_charset=UTF-8
-
-# Allow HTML markup in test case description text if non-zero
-genhtml_desc_html=0
-
-# Specify the precision for coverage rates
-#genhtml_precision=1
-
-# Show missed counts instead of hit counts
-#genhtml_missed=1
-
-# Demangle C++ symbols
-#genhtml_demangle_cpp=1
-
-# Location of the gcov tool (same as --gcov-info option of geninfo)
-#geninfo_gcov_tool = gcov
-
-# Adjust test names to include operating system information if non-zero
-#geninfo_adjust_testname = 0
-
-# Calculate checksum for each source code line if non-zero (same as --checksum
-# option of geninfo if non-zero, same as --no-checksum if zero)
-#geninfo_checksum = 1
-
-# Specify whether to capture coverage data for external source files (can
-# be overridden by the --external and --no-external options of geninfo/lcov)
-#geninfo_external = 1
-
-# Enable libtool compatibility mode if non-zero (same as --compat-libtool option
-# of geninfo if non-zero, same as --no-compat-libtool if zero)
-#geninfo_compat_libtool = 0
-
-# Use gcov's --all-blocks option if non-zero
-#geninfo_gcov_all_blocks = 1
-
-# Specify compatiblity modes (same as --compat option of geninfo).
-#geninfo_compat = libtool=on, hammer=auto, split_crc=auto
-
-# Adjust path to source files by removing or changing path components that
-# match the specified pattern (Perl regular expression format)
-#geninfo_adjust_src_path = /tmp/build => /usr/src
-
-# Specify if geninfo should try to automatically determine the base-directory
-# when collecting coverage data.
-geninfo_auto_base = 1
-
-# Directory containing gcov kernel files
-# lcov_gcov_dir = /proc/gcov
-
-# Location of the insmod tool
-lcov_insmod_tool = /sbin/insmod
-
-# Location of the modprobe tool
-lcov_modprobe_tool = /sbin/modprobe
-
-# Location of the rmmod tool
-lcov_rmmod_tool = /sbin/rmmod
-
-# Location for temporary directories
-lcov_tmp_dir = /tmp
-
-# Show full paths during list operation if non-zero (same as --list-full-path
-# option of lcov)
-lcov_list_full_path = 0
-
-# Specify the maximum width for list output. This value is ignored when
-# lcov_list_full_path is non-zero.
-lcov_list_width = 80
-
-# Specify the maximum percentage of file names which may be truncated when
-# choosing a directory prefix in list output. This value is ignored when
-# lcov_list_full_path is non-zero.
-lcov_list_truncate_max = 20
-
-# Specify if function coverage data should be collected and processed.
-lcov_function_coverage = 1
-
-# Specify if branch coverage data should be collected and processed.
-lcov_branch_coverage = 0
diff --git a/ThirdParty/lcov/man/gendesc.1 b/ThirdParty/lcov/man/gendesc.1
deleted file mode 100644
index 9c9a7084d..000000000
--- a/ThirdParty/lcov/man/gendesc.1
+++ /dev/null
@@ -1,78 +0,0 @@
-.TH gendesc 1 "LCOV 1.14" 2019\-02\-28 "User Manuals"
-.SH NAME
-gendesc \- Generate a test case description file
-.SH SYNOPSIS
-.B gendesc
-.RB [ \-h | \-\-help ]
-.RB [ \-v | \-\-version ]
-.RS 8
-.br
-.RB [ \-o | \-\-output\-filename
-.IR filename ]
-.br
-.I inputfile
-.SH DESCRIPTION
-Convert plain text test case descriptions into a format as understood by
-.BR genhtml .
-.I inputfile
-needs to observe the following format:
-
-For each test case:
-.IP "     \-"
-one line containing the test case name beginning at the start of the line
-.RE
-.IP "     \-"
-one or more lines containing the test case description indented with at
-least one whitespace character (tab or space)
-.RE
-
-.B Example input file:
-
-test01
-.RS
-An example test case description.
-.br
-Description continued
-.RE
-
-test42
-.RS
-Supposedly the answer to most of your questions
-.RE
-
-Note: valid test names can consist of letters, decimal digits and the
-underscore character ('_').
-.SH OPTIONS
-.B \-h
-.br
-.B \-\-help
-.RS
-Print a short help text, then exit.
-.RE
-
-.B \-v
-.br
-.B \-\-version
-.RS
-Print version number, then exit.
-.RE
-
-
-.BI "\-o " filename
-.br
-.BI "\-\-output\-filename " filename
-.RS
-Write description data to
-.IR filename .
-
-By default, output is written to STDOUT.
-.RE
-.SH AUTHOR
-Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>
-
-.SH SEE ALSO
-.BR lcov (1),
-.BR genhtml (1),
-.BR geninfo (1),
-.BR genpng (1),
-.BR gcov (1)
diff --git a/ThirdParty/lcov/man/genhtml.1 b/ThirdParty/lcov/man/genhtml.1
deleted file mode 100644
index 949bd4c57..000000000
--- a/ThirdParty/lcov/man/genhtml.1
+++ /dev/null
@@ -1,600 +0,0 @@
-.TH genhtml 1 "LCOV 1.14" 2019\-02\-28 "User Manuals"
-.SH NAME
-genhtml \- Generate HTML view from LCOV coverage data files
-.SH SYNOPSIS
-.B genhtml
-.RB [ \-h | \-\-help ]
-.RB [ \-v | \-\-version ]
-.RS 8
-.br
-.RB [ \-q | \-\-quiet ]
-.RB [ \-s | \-\-show\-details ]
-.RB [ \-f | \-\-frames ]
-.br
-.RB [ \-b | \-\-baseline\-file  ]
-.IR baseline\-file
-.br
-.RB [ \-o | \-\-output\-directory
-.IR output\-directory ]
-.br
-.RB [ \-t | \-\-title
-.IR title ]
-.br
-.RB [ \-d | \-\-description\-file
-.IR description\-file ]
-.br
-.RB [ \-k | \-\-keep\-descriptions ]
-.RB [ \-c | \-\-css\-file
-.IR css\-file ]
-.br
-.RB [ \-p | \-\-prefix
-.IR prefix ]
-.RB [ \-\-no\-prefix ]
-.br
-.RB [ \-\-no\-source ]
-.RB [ \-\-num\-spaces
-.IR num ]
-.RB [ \-\-highlight ]
-.br
-.RB [ \-\-legend ]
-.RB [ \-\-html\-prolog
-.IR prolog\-file ]
-.br
-.RB [ \-\-html\-epilog
-.IR epilog\-file ]
-.RB [ \-\-html\-extension
-.IR extension ]
-.br
-.RB [ \-\-html\-gzip ]
-.RB [ \-\-sort ]
-.RB [ \-\-no\-sort ]
-.br
-.RB [ \-\-function\-coverage ]
-.RB [ \-\-no\-function\-coverage ]
-.br
-.RB [ \-\-branch\-coverage ]
-.RB [ \-\-no\-branch\-coverage ]
-.br
-.RB [ \-\-demangle\-cpp ]
-.RB [ \-\-ignore\-errors
-.IR errors  ]
-.br
-.RB [ \-\-config\-file
-.IR config\-file ]
-.RB [ \-\-rc
-.IR keyword = value ]
-.br
-.RB [ \-\-precision
-.RB [ \-\-missed ]
-.br
-.IR tracefile(s)
-.RE
-.SH DESCRIPTION
-Create an HTML view of coverage data found in
-.IR tracefile .
-Note that
-.I tracefile
-may also be a list of filenames.
-
-HTML output files are created in the current working directory unless the
-\-\-output\-directory option is used. If 
-.I tracefile
-ends with ".gz", it is assumed to be GZIP\-compressed and the gunzip tool
-will be used to decompress it transparently.
-
-Note that all source code files have to be present and readable at the
-exact file system location they were compiled.
-
-Use option
-.I \--css\-file
-to modify layout and colors of the generated HTML output. Files are
-marked in different colors depending on the associated coverage rate. By
-default, the coverage limits for low, medium and high coverage are set to
-0\-75%, 75\-90% and 90\-100% percent respectively. To change these
-values, use configuration file options
-.IR genhtml_hi_limit " and " genhtml_med_limit .
-
-Also note that when displaying percentages, 0% and 100% are only printed when
-the values are exactly 0% and 100% respectively. Other values which would
-conventionally be rounded to 0% or 100% are instead printed as nearest
-non-boundary value. This behavior is in accordance with that of the
-.BR gcov (1)
-tool.
-
-.SH OPTIONS
-.B \-h
-.br
-.B \-\-help
-.RS
-Print a short help text, then exit.
-
-.RE
-.B \-v
-.br
-.B \-\-version
-.RS
-Print version number, then exit.
-
-.RE
-.B \-q
-.br
-.B \-\-quiet
-.RS
-Do not print progress messages.
-
-Suppresses all informational progress output. When this switch is enabled,
-only error or warning messages are printed.
-
-.RE
-.B \-f
-.br
-.B \-\-frames
-.RS
-Use HTML frames for source code view.
-
-If enabled, a frameset is created for each source code file, providing
-an overview of the source code as a "clickable" image. Note that this
-option will slow down output creation noticeably because each source
-code character has to be inspected once. Note also that the GD.pm Perl
-module has to be installed for this option to work (it may be obtained
-from http://www.cpan.org).
-
-.RE
-.B \-s
-.br
-.B \-\-show\-details
-.RS
-Generate detailed directory view.
-
-When this option is enabled,
-.B genhtml
-generates two versions of each
-file view. One containing the standard information plus a link to a
-"detailed" version. The latter additionally contains information about
-which test case covered how many lines of each source file.
-
-.RE
-.BI "\-b " baseline\-file
-.br
-.BI "\-\-baseline\-file " baseline\-file
-.RS
-Use data in
-.I baseline\-file
-as coverage baseline.
-
-The tracefile specified by
-.I baseline\-file
-is read and all counts found in the original
-.I tracefile
-are decremented by the corresponding counts in 
-.I baseline\-file
-before creating any output.
-
-Note that when a count for a particular line in
-.I baseline\-file
-is greater than the count in the
-.IR tracefile ,
-the result is zero.
-
-.RE
-.BI "\-o " output\-directory
-.br
-.BI "\-\-output\-directory " output\-directory
-.RS
-Create files in 
-.I output\-directory.
-
-Use this option to tell 
-.B genhtml
-to write the resulting files to a directory other than
-the current one. If 
-.I output\-directory
-does not exist, it will be created.
-
-It is advisable to use this option since depending on the
-project size, a lot of files and subdirectories may be created.
-
-.RE
-.BI "\-t " title
-.br
-.BI "\-\-title " title
-.RS
-Display 
-.I title
-in header of all pages.
-
-.I title
-is written to the header portion of each generated HTML page to
-identify the context in which a particular output
-was created. By default this is the name of the tracefile.
-
-.RE
-.BI "\-d " description\-file
-.br
-.BI "\-\-description\-file " description\-file
-.RS
-Read test case descriptions from 
-.IR description\-file .
-
-All test case descriptions found in
-.I description\-file
-and referenced in the input data file are read and written to an extra page
-which is then incorporated into the HTML output.
-
-The file format of
-.IR "description\-file " is:
-
-for each test case:
-.RS
-TN:<testname>
-.br
-TD:<test description>
-
-.RE
-
-Valid test case names can consist of letters, numbers and the underscore
-character ('_').
-.RE
-.B \-k
-.br
-.B \-\-keep\-descriptions
-.RS
-Do not remove unused test descriptions.
-
-Keep descriptions found in the description file even if the coverage data
-indicates that the associated test case did not cover any lines of code.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_keep_descriptions .
-
-.RE
-.BI "\-c " css\-file
-.br
-.BI "\-\-css\-file " css\-file
-.RS
-Use external style sheet file
-.IR css\-file .
-
-Using this option, an extra .css file may be specified which will replace
-the default one. This may be helpful if the default colors make your eyes want
-to jump out of their sockets :)
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_css_file .
-
-.RE
-.BI "\-p " prefix
-.br
-.BI "\-\-prefix " prefix
-.RS
-Remove 
-.I prefix
-from all directory names.
-
-Because lists containing long filenames are difficult to read, there is a
-mechanism implemented that will automatically try to shorten all directory
-names on the overview page beginning with a common prefix. By default,
-this is done using an algorithm that tries to find the prefix which, when
-applied, will minimize the resulting sum of characters of all directory
-names.
-
-Use this option to specify the prefix to be removed by yourself.
-
-.RE
-.B \-\-no\-prefix
-.RS
-Do not remove prefix from directory names.
-
-This switch will completely disable the prefix mechanism described in the
-previous section.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_no_prefix .
-
-.RE
-.B \-\-no\-source
-.RS
-Do not create source code view.
-
-Use this switch if you don't want to get a source code view for each file.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_no_source .
-
-.RE
-.BI "\-\-num\-spaces " spaces
-.RS
-Replace tabs in source view with
-.I num
-spaces.
-
-Default value is 8.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_num_spaces .
-
-.RE
-.B \-\-highlight
-.RS
-Highlight lines with converted\-only coverage data.
-
-Use this option in conjunction with the \-\-diff option of
-.B lcov
-to highlight those lines which were only covered in data sets which were
-converted from previous source code versions.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_highlight .
-
-.RE
-.B \-\-legend
-.RS
-Include color legend in HTML output.
-
-Use this option to include a legend explaining the meaning of color coding
-in the resulting HTML output.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_legend .
-
-.RE
-.BI "\-\-html\-prolog " prolog\-file
-.RS
-Read customized HTML prolog from 
-.IR prolog\-file .
-
-Use this option to replace the default HTML prolog (the initial part of the
-HTML source code leading up to and including the <body> tag) with the contents
-of
-.IR prolog\-file .
-Within the prolog text, the following words will be replaced when a page is generated:
-
-.B "@pagetitle@"
-.br
-The title of the page.
-
-.B "@basedir@"
-.br
-A relative path leading to the base directory (e.g. for locating css\-files).
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_html_prolog .
-
-.RE
-.BI "\-\-html\-epilog " epilog\-file
-.RS
-Read customized HTML epilog from 
-.IR epilog\-file .
-
-Use this option to replace the default HTML epilog (the final part of the HTML
-source including </body>) with the contents of
-.IR epilog\-file .
-
-Within the epilog text, the following words will be replaced when a page is generated:
-
-.B "@basedir@"
-.br
-A relative path leading to the base directory (e.g. for locating css\-files).
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_html_epilog .
-
-.RE
-.BI "\-\-html\-extension " extension
-.RS
-Use customized filename extension for generated HTML pages.
-
-This option is useful in situations where different filename extensions
-are required to render the resulting pages correctly (e.g. php). Note that
-a '.' will be inserted between the filename and the extension specified by
-this option.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_html_extension .
-.RE
-
-.B \-\-html\-gzip
-.RS
-Compress all generated html files with gzip and add a .htaccess file specifying
-gzip\-encoding in the root output directory.
-
-Use this option if you want to save space on your webserver. Requires a
-webserver with .htaccess support and a browser with support for gzip
-compressed html.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_html_gzip .
-
-.RE
-.B \-\-sort
-.br
-.B \-\-no\-sort
-.RS
-Specify whether to include sorted views of file and directory overviews.
-
-Use \-\-sort to include sorted views or \-\-no\-sort to not include them.
-Sorted views are
-.B enabled
-by default.
-
-When sorted views are enabled, each overview page will contain links to
-views of that page sorted by coverage rate.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_sort .
-
-.RE
-.B \-\-function\-coverage
-.br
-.B \-\-no\-function\-coverage
-.RS
-Specify whether to display function coverage summaries in HTML output.
-
-Use \-\-function\-coverage to enable function coverage summaries or
-\-\-no\-function\-coverage to disable it. Function coverage summaries are
-.B enabled
-by default
-
-When function coverage summaries are enabled, each overview page will contain
-the number of functions found and hit per file or directory, together with
-the resulting coverage rate. In addition, each source code view will contain
-a link to a page which lists all functions found in that file plus the
-respective call count for those functions.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_function_coverage .
-
-.RE
-.B \-\-branch\-coverage
-.br
-.B \-\-no\-branch\-coverage
-.RS
-Specify whether to display branch coverage data in HTML output.
-
-Use \-\-branch\-coverage to enable branch coverage display or
-\-\-no\-branch\-coverage to disable it. Branch coverage data display is
-.B enabled
-by default
-
-When branch coverage display is enabled, each overview page will contain
-the number of branches found and hit per file or directory, together with
-the resulting coverage rate. In addition, each source code view will contain
-an extra column which lists all branches of a line with indications of
-whether the branch was taken or not. Branches are shown in the following format:
-
- ' + ': Branch was taken at least once
-.br
- ' - ': Branch was not taken
-.br
- ' # ': The basic block containing the branch was never executed
-.br
-
-Note that it might not always be possible to relate branches to the
-corresponding source code statements: during compilation, GCC might shuffle
-branches around or eliminate some of them to generate better code.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_branch_coverage .
-
-.RE
-.B \-\-demangle\-cpp
-.RS
-Specify whether to demangle C++ function names.
-
-Use this option if you want to convert C++ internal function names to
-human readable format for display on the HTML function overview page.
-This option requires that the c++filt tool is installed (see
-.BR c++filt (1)).
-
-.RE
-.B \-\-ignore\-errors
-.I errors
-.br
-.RS
-Specify a list of errors after which to continue processing.
-
-Use this option to specify a list of one or more classes of errors after which
-geninfo should continue processing instead of aborting.
-
-.I errors
-can be a comma\-separated list of the following keywords:
-
-.B source:
-the source code file for a data set could not be found.
-.RE
-
-.B \-\-config\-file
-.I config\-file
-.br
-.RS
-Specify a configuration file to use.
-
-When this option is specified, neither the system\-wide configuration file
-/etc/lcovrc, nor the per\-user configuration file ~/.lcovrc is read.
-
-This option may be useful when there is a need to run several
-instances of
-.B genhtml
-with different configuration file options in parallel.
-.RE
-
-.B \-\-rc
-.IR keyword = value
-.br
-.RS
-Override a configuration directive.
-
-Use this option to specify a
-.IR keyword = value
-statement which overrides the corresponding configuration statement in
-the lcovrc configuration file. You can specify this option more than once
-to override multiple configuration statements.
-See
-.BR lcovrc (5)
-for a list of available keywords and their meaning.
-.RE
-
-.BI "\-\-precision " num
-.RS
-Show coverage rates with
-.I num
-number of digits after the decimal-point.
-
-Default value is 1.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_precision .
-.RE
-
-.B \-\-missed
-.RS
-Show counts of missed lines, functions, or branches
-
-Use this option to change overview pages to show the count of lines, functions,
-or branches that were not hit. These counts are represented by negative numbers.
-
-When specified together with \-\-sort, file and directory views will be sorted
-by missed counts.
-
-This option can also be configured permanently using the configuration file
-option
-.IR genhtml_missed .
-.RE
-
-.SH FILES
-
-.I /etc/lcovrc
-.RS
-The system\-wide configuration file.
-.RE
-
-.I ~/.lcovrc
-.RS
-The per\-user configuration file.
-.RE
-
-.SH AUTHOR
-Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>
-
-.SH SEE ALSO
-.BR lcov (1),
-.BR lcovrc (5),
-.BR geninfo (1),
-.BR genpng (1),
-.BR gendesc (1),
-.BR gcov (1)
diff --git a/ThirdParty/lcov/man/geninfo.1 b/ThirdParty/lcov/man/geninfo.1
deleted file mode 100644
index 2ce917126..000000000
--- a/ThirdParty/lcov/man/geninfo.1
+++ /dev/null
@@ -1,578 +0,0 @@
-.TH geninfo 1 "LCOV 1.14" 2019\-02\-28 "User Manuals"
-.SH NAME
-geninfo \- Generate tracefiles from .da files
-.SH SYNOPSIS
-.B geninfo
-.RB [ \-h | \-\-help ]
-.RB [ \-v | \-\-version ]
-.RB [ \-q | \-\-quiet ]
-.br
-.RS 8
-.RB [ \-i | \-\-initial ]
-.RB [ \-t | \-\-test\-name
-.IR test\-name ]
-.br
-.RB [ \-o | \-\-output\-filename
-.IR filename ]
-.RB [ \-f | \-\-follow ]
-.br
-.RB [ \-b | \-\-base\-directory
-.IR directory ]
-.br
-.RB [ \-\-checksum ]
-.RB [ \-\-no\-checksum ]
-.br
-.RB [ \-\-compat\-libtool ]
-.RB [ \-\-no\-compat\-libtool ]
-.br
-.RB [ \-\-gcov\-tool
-.IR tool  ]
-.RB [ \-\-ignore\-errors
-.IR errors  ]
-.br
-.RB [ \-\-no\-recursion ]
-.I directory
-.RB [ \-\-external ]
-.RB [ \-\-no\-external ]
-.br
-.RB [ \-\-config\-file
-.IR config\-file ]
-.RB [ \-\-no\-markers ]
-.br
-.RB [ \-\-derive\-func\-data ]
-.RB [ \-\-compat
-.IR  mode =on|off|auto]
-.br
-.RB [ \-\-rc
-.IR keyword = value ]
-.br
-.RB [ \-\-include
-.IR pattern ]
-.RB [ \-\-exclude
-.IR pattern ]
-.RE
-.SH DESCRIPTION
-.B geninfo 
-converts all GCOV coverage data files found in 
-.I directory
-into tracefiles, which the
-.B genhtml
-tool can convert to HTML output.
-
-Unless the \-\-output\-filename option is specified,
-.B geninfo
-writes its
-output to one file per .da file, the name of which is generated by simply
-appending ".info" to the respective .da file name.
-
-Note that the current user needs write access to both
-.I directory
-as well as to the original source code location. This is necessary because
-some temporary files have to be created there during the conversion process.
-
-Note also that
-.B geninfo
-is called from within
-.BR lcov ,
-so that there is usually no need to call it directly.
-
-.B Exclusion markers
-
-To exclude specific lines of code from a tracefile, you can add exclusion
-markers to the source code. Additionally you can exclude specific branches from
-branch coverage without excluding the involved lines from line and function
-coverage. Exclusion markers are keywords which can for example be added in the
-form of a comment.
-See
-.BR lcovrc (5)
-how to override some of them.
-
-The following markers are recognized by geninfo:
-
-LCOV_EXCL_LINE
-.RS
-Lines containing this marker will be excluded.
-.br
-.RE
-LCOV_EXCL_START
-.RS
-Marks the beginning of an excluded section. The current line is part of this
-section.
-.br
-.RE
-LCOV_EXCL_STOP
-.RS
-Marks the end of an excluded section. The current line not part of this
-section.
-.RE
-.br
-LCOV_EXCL_BR_LINE
-.RS
-Lines containing this marker will be excluded from branch coverage.
-.br
-.RE
-LCOV_EXCL_BR_START
-.RS
-Marks the beginning of a section which is excluded from branch coverage. The
-current line is part of this section.
-.br
-.RE
-LCOV_EXCL_BR_STOP
-.RS
-Marks the end of a section which is excluded from branch coverage. The current
-line not part of this section.
-.RE
-.br
-
-.SH OPTIONS
-
-.B \-b
-.I directory
-.br
-.B \-\-base\-directory
-.I directory
-.br
-.RS
-.RI "Use " directory
-as base directory for relative paths.
-
-Use this option to specify the base directory of a build\-environment
-when geninfo produces error messages like:
-
-.RS
-ERROR: could not read source file /home/user/project/subdir1/subdir2/subdir1/subdir2/file.c
-.RE
-
-In this example, use /home/user/project as base directory.
-
-This option is required when using geninfo on projects built with libtool or
-similar build environments that work with a base directory, i.e. environments,
-where the current working directory when invoking the compiler is not the same
-directory in which the source code file is located.
-
-Note that this option will not work in environments where multiple base
-directories are used. In that case use configuration file setting
-.B geninfo_auto_base=1
-(see
-.BR lcovrc (5)).
-.RE
-
-.B \-\-checksum
-.br
-.B \-\-no\-checksum
-.br
-.RS
-Specify whether to generate checksum data when writing tracefiles.
-
-Use \-\-checksum to enable checksum generation or \-\-no\-checksum to
-disable it. Checksum generation is
-.B disabled
-by default.
-
-When checksum generation is enabled, a checksum will be generated for each
-source code line and stored along with the coverage data. This checksum will
-be used to prevent attempts to combine coverage data from different source
-code versions.
-
-If you don't work with different source code versions, disable this option
-to speed up coverage data processing and to reduce the size of tracefiles.
-.RE
-
-.B \-\-compat
-.IR mode = value [, mode = value ,...]
-.br
-.RS
-Set compatibility mode.
-
-Use \-\-compat to specify that geninfo should enable one or more compatibility
-modes when capturing coverage data. You can provide a comma-separated list
-of mode=value pairs to specify the values for multiple modes.
-
-Valid
-.I values
-are:
-
-.B on
-.RS
-Enable compatibility mode.
-.RE
-.B off
-.RS
-Disable compatibility mode.
-.RE
-.B auto
-.RS
-Apply auto-detection to determine if compatibility mode is required. Note that
-auto-detection is not available for all compatibility modes.
-.RE
-
-If no value is specified, 'on' is assumed as default value.
-
-Valid
-.I modes
-are:
-
-.B libtool
-.RS
-Enable this mode if you are capturing coverage data for a project that
-was built using the libtool mechanism. See also
-\-\-compat\-libtool.
-
-The default value for this setting is 'on'.
-
-.RE
-.B hammer
-.RS
-Enable this mode if you are capturing coverage data for a project that
-was built using a version of GCC 3.3 that contains a modification
-(hammer patch) of later GCC versions. You can identify a modified GCC 3.3
-by checking the build directory of your project for files ending in the
-extension '.bbg'. Unmodified versions of GCC 3.3 name these files '.bb'.
-
-The default value for this setting is 'auto'.
-
-.RE
-.B split_crc
-.RS
-Enable this mode if you are capturing coverage data for a project that
-was built using a version of GCC 4.6 that contains a modification
-(split function checksums) of later GCC versions. Typical error messages
-when running geninfo on coverage data produced by such GCC versions are
-\'out of memory' and 'reached unexpected end of file'.
-
-The default value for this setting is 'auto'
-.RE
-
-.RE
-
-.B \-\-compat\-libtool
-.br
-.B \-\-no\-compat\-libtool
-.br
-.RS
-Specify whether to enable libtool compatibility mode.
-
-Use \-\-compat\-libtool to enable libtool compatibility mode or \-\-no\-compat\-libtool
-to disable it. The libtool compatibility mode is
-.B enabled
-by default.
-
-When libtool compatibility mode is enabled, geninfo will assume that the source
-code relating to a .da file located in a directory named ".libs" can be
-found in its parent directory.
-
-If you have directories named ".libs" in your build environment but don't use
-libtool, disable this option to prevent problems when capturing coverage data.
-.RE
-
-.B \-\-config\-file
-.I config\-file
-.br
-.RS
-Specify a configuration file to use.
-
-When this option is specified, neither the system\-wide configuration file
-/etc/lcovrc, nor the per\-user configuration file ~/.lcovrc is read.
-
-This option may be useful when there is a need to run several
-instances of
-.B geninfo
-with different configuration file options in parallel.
-.RE
-
-.B \-\-derive\-func\-data
-.br
-.RS
-Calculate function coverage data from line coverage data.
-
-Use this option to collect function coverage data, even if the version of the
-gcov tool installed on the test system does not provide this data. lcov will
-instead derive function coverage data from line coverage data and
-information about which lines belong to a function.
-.RE
-
-.B \-\-exclude
-.I pattern
-.br
-.RS
-Exclude source files matching
-.IR pattern .
-
-Use this switch if you want to exclude coverage data for a particular set
-of source files matching any of the given patterns. Multiple patterns can be
-specified by using multiple
-.B --exclude
-command line switches. The
-.I patterns
-will be interpreted as shell wildcard patterns (note that they may need to be
-escaped accordingly to prevent the shell from expanding them first).
-
-Can be combined with the
-.B --include
-command line switch. If a given file matches both the include pattern and the
-exclude pattern, the exclude pattern will take precedence.
-.RE
-
-.B \-\-external
-.br
-.B \-\-no\-external
-.br
-.RS
-Specify whether to capture coverage data for external source files.
-
-External source files are files which are not located in one of the directories
-specified by \-\-directory or \-\-base\-directory. Use \-\-external to include
-external source files while capturing coverage data or \-\-no\-external to
-ignore this data.
-
-Data for external source files is
-.B included
-by default.
-.RE
-
-.B \-f
-.br
-.B \-\-follow
-.RS
-Follow links when searching .da files.
-.RE
-
-.B \-\-gcov\-tool
-.I tool
-.br
-.RS
-Specify the location of the gcov tool.
-.RE
-
-.B \-h
-.br
-.B \-\-help
-.RS
-Print a short help text, then exit.
-.RE
-
-.B \-\-include
-.I pattern
-.br
-.RS
-Include source files matching
-.IR pattern .
-
-Use this switch if you want to include coverage data for only a particular set
-of source files matching any of the given patterns. Multiple patterns can be
-specified by using multiple
-.B --include
-command line switches. The
-.I patterns
-will be interpreted as shell wildcard patterns (note that they may need to be
-escaped accordingly to prevent the shell from expanding them first).
-.RE
-
-.B \-\-ignore\-errors
-.I errors
-.br
-.RS
-Specify a list of errors after which to continue processing.
-
-Use this option to specify a list of one or more classes of errors after which
-geninfo should continue processing instead of aborting.
-
-.I errors
-can be a comma\-separated list of the following keywords:
-
-.B gcov:
-the gcov tool returned with a non\-zero return code.
-
-.B source:
-the source code file for a data set could not be found.
-.RE
-
-.B \-i
-.br
-.B \-\-initial
-.RS
-Capture initial zero coverage data.
-
-Run geninfo with this option on the directories containing .bb, .bbg or .gcno
-files before running any test case. The result is a "baseline" coverage data
-file that contains zero coverage for every instrumented line and function.
-Combine this data file (using lcov \-a) with coverage data files captured
-after a test run to ensure that the percentage of total lines covered is
-correct even when not all object code files were loaded during the test.
-
-Note: currently, the \-\-initial option does not generate branch coverage
-information.
-.RE
-
-.B \-\-no\-markers
-.br
-.RS
-Use this option if you want to get coverage data without regard to exclusion
-markers in the source code file.
-.RE
-
-.B \-\-no\-recursion
-.br
-.RS
-Use this option if you want to get coverage data for the specified directory
-only without processing subdirectories.
-.RE
-
-.BI "\-o " output\-filename
-.br
-.BI "\-\-output\-filename " output\-filename
-.RS
-Write all data to
-.IR output\-filename .
-
-If you want to have all data written to a single file (for easier
-handling), use this option to specify the respective filename. By default,
-one tracefile will be created for each processed .da file.
-.RE
-
-.B \-q
-.br
-.B \-\-quiet
-.RS
-Do not print progress messages.
-
-Suppresses all informational progress output. When this switch is enabled,
-only error or warning messages are printed.
-.RE
-
-.B \-\-rc
-.IR keyword = value
-.br
-.RS
-Override a configuration directive.
-
-Use this option to specify a
-.IR keyword = value
-statement which overrides the corresponding configuration statement in
-the lcovrc configuration file. You can specify this option more than once
-to override multiple configuration statements.
-See
-.BR lcovrc (5)
-for a list of available keywords and their meaning.
-.RE
-
-.BI "\-t " testname
-.br
-.BI "\-\-test\-name " testname
-.RS
-Use test case name 
-.I testname
-for resulting data. Valid test case names can consist of letters, decimal
-digits and the underscore character ('_').
-
-This proves useful when data from several test cases is merged (i.e. by
-simply concatenating the respective tracefiles) in which case a test
-name can be used to differentiate between data from each test case.
-.RE
-
-.B \-v
-.br
-.B \-\-version
-.RS
-Print version number, then exit.
-.RE
-
-
-.SH FILES
-
-.I /etc/lcovrc
-.RS
-The system\-wide configuration file.
-.RE
-
-.I ~/.lcovrc
-.RS
-The per\-user configuration file.
-.RE
-
-Following is a quick description of the tracefile format as used by
-.BR genhtml ", " geninfo " and " lcov .
-
-A tracefile is made up of several human\-readable lines of text,
-divided into sections. If available, a tracefile begins with the
-.I testname
-which is stored in the following format:
-
-  TN:<test name>
-
-For each source file referenced in the .da file, there is a section containing
-filename and coverage data:
-
-  SF:<absolute path to the source file>
-
-Following is a list of line numbers for each function name found in the
-source file:
-
-  FN:<line number of function start>,<function name>
-
-Next, there is a list of execution counts for each instrumented function:
-
-  FNDA:<execution count>,<function name>
-
-This list is followed by two lines containing the number of functions found
-and hit:
-
-  FNF:<number of functions found>
-  FNH:<number of function hit>
-
-Branch coverage information is stored which one line per branch:
-
-  BRDA:<line number>,<block number>,<branch number>,<taken>
-
-Block number and branch number are gcc internal IDs for the branch. Taken is
-either '-' if the basic block containing the branch was never executed or
-a number indicating how often that branch was taken.
-
-Branch coverage summaries are stored in two lines:
-
-  BRF:<number of branches found>
-  BRH:<number of branches hit>
-
-Then there is a list of execution counts for each instrumented line
-(i.e. a line which resulted in executable code):
-
-  DA:<line number>,<execution count>[,<checksum>]
-
-Note that there may be an optional checksum present for each instrumented
-line. The current
-.B geninfo
-implementation uses an MD5 hash as checksumming algorithm.
-
-At the end of a section, there is a summary about how many lines
-were found and how many were actually instrumented:
-
-  LH:<number of lines with a non\-zero execution count>
-  LF:<number of instrumented lines>
-
-Each sections ends with:
-
-  end_of_record
-
-In addition to the main source code file there are sections for all
-#included files which also contain executable code.
-
-Note that the absolute path of a source file is generated by interpreting
-the contents of the respective .bb file (see
-.BR "gcov " (1)
-for more information on this file type). Relative filenames are prefixed
-with the directory in which the .bb file is found.
-
-Note also that symbolic links to the .bb file will be resolved so that the
-actual file path is used instead of the path to a link. This approach is
-necessary for the mechanism to work with the /proc/gcov files.
-
-.SH AUTHOR
-Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>
-
-.SH SEE ALSO
-.BR lcov (1),
-.BR lcovrc (5),
-.BR genhtml (1),
-.BR genpng (1),
-.BR gendesc (1),
-.BR gcov (1)
diff --git a/ThirdParty/lcov/man/genpng.1 b/ThirdParty/lcov/man/genpng.1
deleted file mode 100644
index f6a49b8a5..000000000
--- a/ThirdParty/lcov/man/genpng.1
+++ /dev/null
@@ -1,101 +0,0 @@
-.TH genpng 1 "LCOV 1.14" 2019\-02\-28 "User Manuals"
-.SH NAME
-genpng \- Generate an overview image from a source file
-.SH SYNOPSIS
-.B genpng
-.RB [ \-h | \-\-help ]
-.RB [ \-v | \-\-version ]
-.RS 7
-.br
-.RB [ \-t | \-\-tab\-size
-.IR tabsize ]
-.RB [ \-w | \-\-width
-.IR width ]
-.br
-.RB [ \-o | \-\-output\-filename
-.IR output\-filename ]
-.br
-.IR source\-file
-.SH DESCRIPTION
-.B genpng
-creates an overview image for a given source code file of either
-plain text or .gcov file format.
-
-Note that the
-.I GD.pm
-Perl module has to be installed for this script to work
-(it may be obtained from
-.IR http://www.cpan.org ).
-
-Note also that
-.B genpng
-is called from within
-.B genhtml
-so that there is usually no need to call it directly.
-
-.SH OPTIONS
-.B \-h
-.br
-.B \-\-help
-.RS
-Print a short help text, then exit.
-.RE
-
-.B \-v
-.br
-.B \-\-version
-.RS
-Print version number, then exit.
-.RE
-
-.BI "\-t " tab\-size
-.br
-.BI "\-\-tab\-size " tab\-size
-.RS
-Use 
-.I tab\-size
-spaces in place of tab.
-
-All occurrences of tabulator signs in the source code file will be replaced
-by the number of spaces defined by
-.I tab\-size
-(default is 4).
-.RE
-
-.BI "\-w " width
-.br
-.BI "\-\-width " width
-.RS
-Set width of output image to 
-.I width
-pixel.
-
-The resulting image will be exactly
-.I width
-pixel wide (default is 80).
-
-Note that source code lines which are longer than
-.I width
-will be truncated.
-.RE
-
-
-.BI "\-o " filename
-.br
-.BI "\-\-output\-filename " filename
-.RS
-Write image to
-.IR filename .
-
-Specify a name for the resulting image file (default is 
-.IR source\-file .png).
-.RE
-.SH AUTHOR
-Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>
-
-.SH SEE ALSO
-.BR lcov (1),
-.BR genhtml (1),
-.BR geninfo (1),
-.BR gendesc (1),
-.BR gcov (1)
diff --git a/ThirdParty/lcov/man/lcov.1 b/ThirdParty/lcov/man/lcov.1
deleted file mode 100644
index e86eb3aa7..000000000
--- a/ThirdParty/lcov/man/lcov.1
+++ /dev/null
@@ -1,930 +0,0 @@
-.TH lcov 1 "LCOV 1.14" 2019\-02\-28 "User Manuals"
-.SH NAME
-lcov \- a graphical GCOV front\-end
-.SH SYNOPSIS
-.B lcov
-.BR \-c | \-\-capture
-.RS 5
-.br
-.RB [ \-d | \-\-directory
-.IR directory ]
-.RB [ \-k | \-\-kernel\-directory
-.IR directory ]
-.br
-.RB [ \-o | \-\-output\-file
-.IR tracefile ]
-.RB [ \-t | \-\-test\-name
-.IR testname ]
-.br
-.RB [ \-b | \-\-base\-directory
-.IR directory ]
-.RB [ \-i | \-\-initial ]
-.RB [ \-\-gcov\-tool
-.IR tool ]
-.br
-.RB [ \-\-checksum ]
-.RB [ \-\-no\-checksum ]
-.RB [ \-\-no\-recursion ]
-.RB [ \-f | \-\-follow ]
-.br
-.RB [ \-\-compat\-libtool ]
-.RB [ \-\-no\-compat\-libtool ]
-.RB [ \-\-ignore\-errors
-.IR errors ]
-.br
-.RB [ \-\-to\-package
-.IR package ]
-.RB [ \-\-from\-package
-.IR package ]
-.RB [ \-q | \-\-quiet ]
-.br
-.RB [ \-\-no\-markers ]
-.RB [ \-\-external ]
-.RB [ \-\-no\-external ]
-.br
-.RB [ \-\-config\-file
-.IR config\-file ]
-.RB [ \-\-rc
-.IR keyword = value ]
-.br
-.RB [ \-\-compat
-.IR  mode =on|off|auto]
-.br
-.RB [ \-\-include
-.IR pattern ]
-.RB [ \-\-exclude
-.IR pattern ]
-.br
-.RE
-
-.B lcov
-.BR \-z | \-\-zerocounters
-.RS 5
-.br
-.RB [ \-d | \-\-directory
-.IR directory ]
-.RB [ \-\-no\-recursion ]
-.RB [ \-f | \-\-follow ]
-.br
-.RB [ \-q | \-\-quiet ]
-.br
-.RE
-
-.B lcov
-.BR \-l | \-\-list
-.I tracefile
-.RS 5
-.br
-.RB [ \-q | \-\-quiet ]
-.RB [ \-\-list\-full\-path ]
-.RB [ \-\-no\-list\-full\-path ]
-.br
-.RB [ \-\-config\-file
-.IR config\-file ]
-.RB [ \-\-rc
-.IR keyword = value ]
-.br
-.RE
-
-.B lcov
-.BR \-a | \-\-add\-tracefile
-.I tracefile
-.RS 5
-.br
-.RB [ \-o | \-\-output\-file
-.IR tracefile ]
-.RB [ \-\-checksum ]
-.RB [ \-\-no\-checksum ]
-.br
-.RB [ \-q | \-\-quiet ]
-.RB [ \-\-config\-file
-.IR config\-file ]
-.RB [ \-\-rc
-.IR keyword = value ]
-.br
-.RE
-
-.B lcov
-.BR \-e | \-\-extract
-.I tracefile pattern
-.RS 5
-.br
-.RB [ \-o | \-\-output\-file
-.IR tracefile ]
-.RB [ \-\-checksum ]
-.RB [ \-\-no\-checksum ]
-.br
-.RB [ \-q | \-\-quiet ]
-.RB [ \-\-config\-file
-.IR config\-file ]
-.RB [ \-\-rc
-.IR keyword = value ]
-.br
-.RE
-
-.B lcov
-.BR \-r | \-\-remove
-.I tracefile pattern
-.RS 5
-.br
-.RB [ \-o | \-\-output\-file
-.IR tracefile ]
-.RB [ \-\-checksum ]
-.RB [ \-\-no\-checksum ]
-.br
-.RB [ \-q | \-\-quiet ]
-.RB [ \-\-config\-file
-.IR config\-file ]
-.RB [ \-\-rc
-.IR keyword = value ]
-.br
-.RE
-
-.B lcov
-.BR \-\-diff
-.IR "tracefile diff"
-.RS 5
-.br
-.RB [ \-o | \-\-output\-file
-.IR tracefile ]
-.RB [ \-\-checksum ]
-.RB [ \-\-no\-checksum ]
-.br
-.RB [ \-\-convert\-filenames ]
-.RB [ \-\-strip
-.IR depth ]
-.RB [ \-\-path
-.IR path ]
-.RB [ \-q | \-\-quiet ]
-.br
-.RB [ \-\-config\-file
-.IR config\-file ]
-.RB [ \-\-rc
-.IR keyword = value ]
-.br
-.RE
-
-.B lcov
-.BR \-\-summary
-.I tracefile
-.RS 5
-.br
-.RB [ \-q | \-\-quiet ]
-.br
-.RE
-
-.B lcov
-.RB [ \-h | \-\-help ]
-.RB [ \-v | \-\-version ]
-.RS 5
-.br
-.RE
-
-.SH DESCRIPTION
-.B lcov
-is a graphical front\-end for GCC's coverage testing tool gcov. It collects
-line, function and branch coverage data for multiple source files and creates
-HTML pages containing the source code annotated with coverage information.
-It also adds overview pages for easy navigation within the file structure.
-
-Use
-.B lcov
-to collect coverage data and
-.B genhtml
-to create HTML pages. Coverage data can either be collected from the
-currently running Linux kernel or from a user space application. To do this,
-you have to complete the following preparation steps:
-
-For Linux kernel coverage:
-.RS
-Follow the setup instructions for the gcov\-kernel infrastructure:
-.I http://ltp.sourceforge.net/coverage/gcov.php
-.br
-
-
-.RE
-For user space application coverage:
-.RS
-Compile the application with GCC using the options
-"\-fprofile\-arcs" and "\-ftest\-coverage".
-.RE
-
-Please note that this man page refers to the output format of
-.B lcov
-as ".info file" or "tracefile" and that the output of GCOV
-is called ".da file".
-
-Also note that when printing percentages, 0% and 100% are only printed when
-the values are exactly 0% and 100% respectively. Other values which would
-conventionally be rounded to 0% or 100% are instead printed as nearest
-non-boundary value. This behavior is in accordance with that of the
-.BR gcov (1)
-tool.
-
-.SH OPTIONS
-
-
-.B \-a
-.I tracefile
-.br
-.B \-\-add\-tracefile
-.I tracefile
-.br
-.RS
-Add contents of
-.IR tracefile .
-
-Specify several tracefiles using the \-a switch to combine the coverage data
-contained in these files by adding up execution counts for matching test and
-filename combinations.
-
-The result of the add operation will be written to stdout or the tracefile
-specified with \-o.
-
-Only one of  \-z, \-c, \-a, \-e, \-r, \-l, \-\-diff or \-\-summary may be
-specified at a time.
-
-.RE
-
-.B \-b
-.I directory
-.br
-.B \-\-base\-directory
-.I directory
-.br
-.RS
-.RI "Use " directory
-as base directory for relative paths.
-
-Use this option to specify the base directory of a build\-environment
-when lcov produces error messages like:
-
-.RS
-ERROR: could not read source file /home/user/project/subdir1/subdir2/subdir1/subdir2/file.c
-.RE
-
-In this example, use /home/user/project as base directory.
-
-This option is required when using lcov on projects built with libtool or
-similar build environments that work with a base directory, i.e. environments,
-where the current working directory when invoking the compiler is not the same
-directory in which the source code file is located.
-
-Note that this option will not work in environments where multiple base
-directories are used. In that case use configuration file setting
-.B geninfo_auto_base=1
-(see
-.BR lcovrc (5)).
-.RE
-
-.B \-c
-.br
-.B \-\-capture
-.br
-.RS
-Capture coverage data.
-
-By default captures the current kernel execution counts and writes the
-resulting coverage data to the standard output. Use the \-\-directory
-option to capture counts for a user space program.
-
-The result of the capture operation will be written to stdout or the tracefile
-specified with \-o.
-
-Only one of  \-z, \-c, \-a, \-e, \-r, \-l, \-\-diff or \-\-summary may be
-specified at a time.
-.RE
-
-.B \-\-checksum
-.br
-.B \-\-no\-checksum
-.br
-.RS
-Specify whether to generate checksum data when writing tracefiles.
-
-Use \-\-checksum to enable checksum generation or \-\-no\-checksum to
-disable it. Checksum generation is
-.B disabled
-by default.
-
-When checksum generation is enabled, a checksum will be generated for each
-source code line and stored along with the coverage data. This checksum will
-be used to prevent attempts to combine coverage data from different source
-code versions.
-
-If you don't work with different source code versions, disable this option
-to speed up coverage data processing and to reduce the size of tracefiles.
-.RE
-
-.B \-\-compat
-.IR mode = value [, mode = value ,...]
-.br
-.RS
-Set compatibility mode.
-
-Use \-\-compat to specify that lcov should enable one or more compatibility
-modes when capturing coverage data. You can provide a comma-separated list
-of mode=value pairs to specify the values for multiple modes.
-
-Valid
-.I values
-are:
-
-.B on
-.RS
-Enable compatibility mode.
-.RE
-.B off
-.RS
-Disable compatibility mode.
-.RE
-.B auto
-.RS
-Apply auto-detection to determine if compatibility mode is required. Note that
-auto-detection is not available for all compatibility modes.
-.RE
-
-If no value is specified, 'on' is assumed as default value.
-
-Valid
-.I modes
-are:
-
-.B libtool
-.RS
-Enable this mode if you are capturing coverage data for a project that
-was built using the libtool mechanism. See also
-\-\-compat\-libtool.
-
-The default value for this setting is 'on'.
-
-.RE
-.B hammer
-.RS
-Enable this mode if you are capturing coverage data for a project that
-was built using a version of GCC 3.3 that contains a modification
-(hammer patch) of later GCC versions. You can identify a modified GCC 3.3
-by checking the build directory of your project for files ending in the
-extension '.bbg'. Unmodified versions of GCC 3.3 name these files '.bb'.
-
-The default value for this setting is 'auto'.
-
-.RE
-.B split_crc
-.RS
-Enable this mode if you are capturing coverage data for a project that
-was built using a version of GCC 4.6 that contains a modification
-(split function checksums) of later GCC versions. Typical error messages
-when running lcov on coverage data produced by such GCC versions are
-\'out of memory' and 'reached unexpected end of file'.
-
-The default value for this setting is 'auto'
-.RE
-
-.RE
-
-.B \-\-compat\-libtool
-.br
-.B \-\-no\-compat\-libtool
-.br
-.RS
-Specify whether to enable libtool compatibility mode.
-
-Use \-\-compat\-libtool to enable libtool compatibility mode or \-\-no\-compat\-libtool
-to disable it. The libtool compatibility mode is
-.B enabled
-by default.
-
-When libtool compatibility mode is enabled, lcov will assume that the source
-code relating to a .da file located in a directory named ".libs" can be
-found in its parent directory.
-
-If you have directories named ".libs" in your build environment but don't use
-libtool, disable this option to prevent problems when capturing coverage data.
-.RE
-
-.B \-\-config\-file
-.I config\-file
-.br
-.RS
-Specify a configuration file to use.
-
-When this option is specified, neither the system\-wide configuration file
-/etc/lcovrc, nor the per\-user configuration file ~/.lcovrc is read.
-
-This option may be useful when there is a need to run several
-instances of
-.B lcov
-with different configuration file options in parallel.
-.RE
-
-.B \-\-convert\-filenames
-.br
-.RS
-Convert filenames when applying diff.
-
-Use this option together with \-\-diff to rename the file names of processed
-data sets according to the data provided by the diff.
-.RE
-
-.B \-\-diff
-.I tracefile
-.I difffile
-.br
-.RS
-Convert coverage data in
-.I tracefile
-using source code diff file
-.IR difffile .
-
-Use this option if you want to merge coverage data from different source code
-levels of a program, e.g. when you have data taken from an older version
-and want to combine it with data from a more current version.
-.B lcov
-will try to map source code lines between those versions and adjust the coverage
-data respectively.
-.I difffile
-needs to be in unified format, i.e. it has to be created using the "\-u" option
-of the
-.B diff
-tool.
-
-Note that lines which are not present in the old version will not be counted
-as instrumented, therefore tracefiles resulting from this operation should
-not be interpreted individually but together with other tracefiles taken
-from the newer version. Also keep in mind that converted coverage data should
-only be used for overview purposes as the process itself introduces a loss
-of accuracy.
-
-The result of the diff operation will be written to stdout or the tracefile
-specified with \-o.
-
-Only one of  \-z, \-c, \-a, \-e, \-r, \-l, \-\-diff or \-\-summary may be
-specified at a time.
-.RE
-
-.B \-d
-.I directory
-.br
-.B \-\-directory
-.I  directory
-.br
-.RS
-Use .da files in
-.I directory
-instead of kernel.
-
-If you want to work on coverage data for a user space program, use this
-option to specify the location where the program was compiled (that's
-where the counter files ending with .da will be stored).
-
-Note that you may specify this option more than once.
-.RE
-
-.B \-\-exclude
-.I pattern
-.br
-.RS
-Exclude source files matching
-.IR pattern .
-
-Use this switch if you want to exclude coverage data for a particular set
-of source files matching any of the given patterns. Multiple patterns can be
-specified by using multiple
-.B --exclude
-command line switches. The
-.I patterns
-will be interpreted as shell wildcard patterns (note that they may need to be
-escaped accordingly to prevent the shell from expanding them first).
-
-Can be combined with the
-.B --include
-command line switch. If a given file matches both the include pattern and the
-exclude pattern, the exclude pattern will take precedence.
-.RE
-
-.B \-\-external
-.br
-.B \-\-no\-external
-.br
-.RS
-Specify whether to capture coverage data for external source files.
-
-External source files are files which are not located in one of the directories
-specified by \-\-directory or \-\-base\-directory. Use \-\-external to include
-external source files while capturing coverage data or \-\-no\-external to
-ignore this data.
-
-Data for external source files is
-.B included
-by default.
-.RE
-
-.B \-e
-.I tracefile
-.I pattern
-.br
-.B \-\-extract
-.I tracefile
-.I pattern
-.br
-.RS
-Extract data from
-.IR tracefile .
-
-Use this switch if you want to extract coverage data for only a particular
-set of files from a tracefile. Additional command line parameters will be
-interpreted as shell wildcard patterns (note that they may need to be
-escaped accordingly to prevent the shell from expanding them first).
-Every file entry in
-.I tracefile
-which matches at least one of those patterns will be extracted.
-
-The result of the extract operation will be written to stdout or the tracefile
-specified with \-o.
-
-Only one of  \-z, \-c, \-a, \-e, \-r, \-l, \-\-diff or \-\-summary may be
-specified at a time.
-.RE
-
-.B \-f
-.br
-.B \-\-follow
-.br
-.RS
-Follow links when searching for .da files.
-.RE
-
-.B \-\-from\-package
-.I package
-.br
-.RS
-Use .da files in
-.I package
-instead of kernel or directory.
-
-Use this option if you have separate machines for build and test and
-want to perform the .info file creation on the build machine. See
-\-\-to\-package for more information.
-.RE
-
-.B \-\-gcov\-tool
-.I tool
-.br
-.RS
-Specify the location of the gcov tool.
-.RE
-
-.B \-h
-.br
-.B \-\-help
-.br
-.RS
-Print a short help text, then exit.
-.RE
-
-.B \-\-include
-.I pattern
-.br
-.RS
-Include source files matching
-.IR pattern .
-
-Use this switch if you want to include coverage data for only a particular set
-of source files matching any of the given patterns. Multiple patterns can be
-specified by using multiple
-.B --include
-command line switches. The
-.I patterns
-will be interpreted as shell wildcard patterns (note that they may need to be
-escaped accordingly to prevent the shell from expanding them first).
-.RE
-
-.B \-\-ignore\-errors
-.I errors
-.br
-.RS
-Specify a list of errors after which to continue processing.
-
-Use this option to specify a list of one or more classes of errors after which
-lcov should continue processing instead of aborting.
-
-.I errors
-can be a comma\-separated list of the following keywords:
-
-.B gcov:
-the gcov tool returned with a non\-zero return code.
-
-.B source:
-the source code file for a data set could not be found.
-
-.B graph:
-the graph file could not be found or is corrupted.
-.RE
-
-.B \-i
-.br
-.B \-\-initial
-.RS
-Capture initial zero coverage data.
-
-Run lcov with \-c and this option on the directories containing .bb, .bbg
-or .gcno files before running any test case. The result is a "baseline"
-coverage data file that contains zero coverage for every instrumented line.
-Combine this data file (using lcov \-a) with coverage data files captured
-after a test run to ensure that the percentage of total lines covered is
-correct even when not all source code files were loaded during the test.
-
-Recommended procedure when capturing data for a test case:
-
-1. create baseline coverage data file
-.RS
-# lcov \-c \-i \-d appdir \-o app_base.info
-.br
-
-.RE
-2. perform test
-.RS
-# appdir/test
-.br
-
-.RE
-3. create test coverage data file
-.RS
-# lcov \-c \-d appdir \-o app_test.info
-.br
-
-.RE
-4. combine baseline and test coverage data
-.RS
-# lcov \-a app_base.info \-a app_test.info \-o app_total.info
-.br
-
-.RE
-.RE
-
-.B \-k
-.I subdirectory
-.br
-.B \-\-kernel\-directory
-.I subdirectory
-.br
-.RS
-Capture kernel coverage data only from
-.IR subdirectory .
-
-Use this option if you don't want to get coverage data for all of the
-kernel, but only for specific subdirectories. This option may be specified
-more than once.
-
-Note that you may need to specify the full path to the kernel subdirectory
-depending on the version of the kernel gcov support.
-.RE
-
-.B \-l
-.I tracefile
-.br
-.B \-\-list
-.I tracefile
-.br
-.RS
-List the contents of the
-.IR tracefile .
-
-Only one of  \-z, \-c, \-a, \-e, \-r, \-l, \-\-diff or \-\-summary may be
-specified at a time.
-.RE
-
-.B \-\-list\-full\-path
-.br
-.B \-\-no\-list\-full\-path
-.br
-.RS
-Specify whether to show full paths during list operation.
-
-Use \-\-list\-full\-path to show full paths during list operation
-or \-\-no\-list\-full\-path to show shortened paths. Paths are
-.B shortened
-by default.
-.RE
-
-.B \-\-no\-markers
-.br
-.RS
-Use this option if you want to get coverage data without regard to exclusion
-markers in the source code file. See
-.BR "geninfo " (1)
-for details on exclusion markers.
-.RE
-
-.B \-\-no\-recursion
-.br
-.RS
-Use this option if you want to get coverage data for the specified directory
-only without processing subdirectories.
-.RE
-
-.B \-o
-.I tracefile
-.br
-.B \-\-output\-file
-.I tracefile
-.br
-.RS
-Write data to
-.I tracefile
-instead of stdout.
-
-Specify "\-" as a filename to use the standard output.
-
-By convention, lcov\-generated coverage data files are called "tracefiles" and
-should have the filename extension ".info".
-.RE
-
-.B \-\-path
-.I path
-.br
-.RS
-Strip path from filenames when applying diff.
-
-Use this option together with \-\-diff to tell lcov to disregard the specified
-initial path component when matching between tracefile and diff filenames.
-.RE
-
-.B \-q
-.br
-.B \-\-quiet
-.br
-.RS
-Do not print progress messages.
-
-This option is implied when no output filename is specified to prevent
-progress messages to mess with coverage data which is also printed to
-the standard output.
-.RE
-
-.B \-\-rc
-.IR keyword = value
-.br
-.RS
-Override a configuration directive.
-
-Use this option to specify a
-.IR keyword = value
-statement which overrides the corresponding configuration statement in
-the lcovrc configuration file. You can specify this option more than once
-to override multiple configuration statements.
-See
-.BR lcovrc (5)
-for a list of available keywords and their meaning.
-.RE
-
-.B \-r
-.I tracefile
-.I pattern
-.br
-.B \-\-remove
-.I tracefile
-.I pattern
-.br
-.RS
-Remove data from
-.IR tracefile .
-
-Use this switch if you want to remove coverage data for a particular
-set of files from a tracefile. Additional command line parameters will be
-interpreted as shell wildcard patterns (note that they may need to be
-escaped accordingly to prevent the shell from expanding them first).
-Every file entry in
-.I tracefile
-which matches at least one of those patterns will be removed.
-
-The result of the remove operation will be written to stdout or the tracefile
-specified with \-o.
-
-Only one of  \-z, \-c, \-a, \-e, \-r, \-l, \-\-diff or \-\-summary may be
-specified at a time.
-.RE
-
-.B \-\-strip
-.I depth
-.br
-.RS
-Strip path components when applying diff.
-
-Use this option together with \-\-diff to tell lcov to disregard the specified
-number of initial directories when matching tracefile and diff filenames.
-.RE
-
-.B \-\-summary
-.I tracefile
-.br
-.RS
-Show summary coverage information for the specified tracefile.
-
-Note that you may specify this option more than once.
-
-Only one of  \-z, \-c, \-a, \-e, \-r, \-l, \-\-diff or \-\-summary may be
-specified at a time.
-.RE
-
-.B \-t
-.I testname
-.br
-.B \-\-test\-name
-.I testname
-.br
-.RS
-Specify test name to be stored in the tracefile.
-
-This name identifies a coverage data set when more than one data set is merged
-into a combined tracefile (see option \-a).
-
-Valid test names can consist of letters, decimal digits and the underscore
-character ("_").
-.RE
-
-.B \-\-to\-package
-.I package
-.br
-.RS
-Store .da files for later processing.
-
-Use this option if you have separate machines for build and test and
-want to perform the .info file creation on the build machine. To do this,
-follow these steps:
-
-On the test machine:
-.RS
-.br
-\- run the test
-.br
-\- run lcov \-c [\-d directory] \-\-to-package
-.I file
-.br
-\- copy
-.I file
-to the build machine
-.RE
-.br
-
-On the build machine:
-.RS
-.br
-\- run lcov \-c \-\-from-package
-.I file
-[\-o and other options]
-.RE
-.br
-
-This works for both kernel and user space coverage data. Note that you might
-have to specify the path to the build directory using \-b with
-either \-\-to\-package or \-\-from-package. Note also that the package data
-must be converted to a .info file before recompiling the program or it will
-become invalid.
-.RE
-
-.B \-v
-.br
-.B \-\-version
-.br
-.RS
-Print version number, then exit.
-.RE
-
-.B \-z
-.br
-.B \-\-zerocounters
-.br
-.RS
-Reset all execution counts to zero.
-
-By default tries to reset kernel execution counts. Use the \-\-directory
-option to reset all counters of a user space program.
-
-Only one of  \-z, \-c, \-a, \-e, \-r, \-l, \-\-diff or \-\-summary may be
-specified at a time.
-.RE
-
-.SH FILES
-
-.I /etc/lcovrc
-.RS
-The system\-wide configuration file.
-.RE
-
-.I ~/.lcovrc
-.RS
-The per\-user configuration file.
-.RE
-
-.SH AUTHOR
-Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>
-
-.SH SEE ALSO
-.BR lcovrc (5),
-.BR genhtml (1),
-.BR geninfo (1),
-.BR genpng (1),
-.BR gendesc (1),
-.BR gcov (1)
diff --git a/ThirdParty/lcov/man/lcovrc.5 b/ThirdParty/lcov/man/lcovrc.5
deleted file mode 100644
index f20d273a9..000000000
--- a/ThirdParty/lcov/man/lcovrc.5
+++ /dev/null
@@ -1,913 +0,0 @@
-.TH lcovrc 5 "LCOV 1.14" 2019\-02\-28 "User Manuals"
-
-.SH NAME
-lcovrc \- lcov configuration file
-
-.SH DESCRIPTION
-The
-.I lcovrc
-file contains configuration information for the
-.B lcov
-code coverage tool (see
-.BR lcov (1)).
-.br
-
-The system\-wide configuration file is located at
-.IR /etc/lcovrc .
-To change settings for a single user, place a customized copy of this file at
-location
-.IR ~/.lcovrc .
-Where available, command\-line options override configuration file settings.
-
-Lines in a configuration file can either be:
-.IP "     *"
-empty lines or lines consisting only of white space characters. These lines are
-ignored.
-.IP "     *"
-comment lines which start with a hash sign ('#'). These are treated like empty
-lines and will be ignored.
-.IP "     *"
-statements in the form
-.RI ' key " = " value '.
-A list of valid statements and their description can be found in
-section 'OPTIONS' below.
-.PP
-
-.B Example configuration:
-.IP
-#
-.br
-# Example LCOV configuration file
-.br
-#
-.br
-
-# External style sheet file
-.br
-#genhtml_css_file = gcov.css
-.br
-
-# Coverage rate limits
-.br
-genhtml_hi_limit = 90
-.br
-genhtml_med_limit = 75
-.br
-
-# Width of line coverage field in source code view
-.br
-genhtml_line_field_width = 12
-.br
-
-# Width of branch coverage field in source code view
-.br
-genhtml_branch_field_width = 16
-.br
-
-# Width of overview image
-.br
-genhtml_overview_width = 80
-.br
-
-# Resolution of overview navigation
-.br
-genhtml_nav_resolution = 4
-.br
-
-# Offset for source code navigation
-.br
-genhtml_nav_offset = 10
-.br
-
-# Do not remove unused test descriptions if non\-zero
-.br
-genhtml_keep_descriptions = 0
-.br
-
-# Do not remove prefix from directory names if non\-zero
-.br
-genhtml_no_prefix = 0
-.br
-
-# Do not create source code view if non\-zero
-.br
-genhtml_no_source = 0
-.br
-
-# Specify size of tabs
-.br
-genhtml_num_spaces = 8
-.br
-
-# Highlight lines with converted\-only data if non\-zero
-.br
-genhtml_highlight = 0
-.br
-
-# Include color legend in HTML output if non\-zero
-.br
-genhtml_legend = 0
-.br
-
-# Include HTML file at start of HTML output
-.br
-#genhtml_html_prolog = prolog.html
-.br
-
-# Include HTML file at end of HTML output
-.br
-#genhtml_html_epilog = epilog.html
-.br
-
-# Use custom HTML file extension
-.br
-#genhtml_html_extension = html
-.br
-
-# Compress all generated html files with gzip.
-.br
-#genhtml_html_gzip = 1
-.br
-
-# Include sorted overview pages
-.br
-genhtml_sort = 1
-.br
-
-# Include function coverage data display
-.br
-#genhtml_function_coverage = 1
-.br
-
-# Include branch coverage data display
-.br
-#genhtml_branch_coverage = 1
-.br
-
-# Specify the character set of all generated HTML pages
-.br
-genhtml_charset=UTF\-8
-.br
-
-# Allow HTML markup in test case description text if non\-zero
-.br
-genhtml_desc_html=0
-.br
-
-# Specify the precision for coverage rates
-.br
-#genhtml_precision=1
-.br
-
-# Show missed counts instead of hit counts
-.br
-#genhtml_missed=1
-.br
-
-# Demangle C++ symbols
-.br
-#genhtml_demangle_cpp=1
-.br
-
-# Location of the gcov tool
-.br
-#geninfo_gcov_tool = gcov
-.br
-
-# Adjust test names if non\-zero
-.br
-#geninfo_adjust_testname = 0
-.br
-
-# Calculate a checksum for each line if non\-zero
-.br
-geninfo_checksum = 0
-.br
-
-# Enable libtool compatibility mode if non\-zero
-.br
-geninfo_compat_libtool = 0
-.br
-
-# Specify whether to capture coverage data for external source
-.br
-# files
-.br
-#geninfo_external = 1
-.br
-
-# Use gcov's --all-blocks option if non-zero
-.br
-#geninfo_gcov_all_blocks = 1
-.br
-
-# Specify compatiblity modes (same as \-\-compat option
-.br
-# of geninfo)
-.br
-#geninfo_compat = libtool=on, hammer=auto, split_crc=auto
-.br
-
-# Adjust path to source files by removing or changing path
-.br
-# components that match the specified pattern (Perl regular
-.br
-# expression format)
-.br
-#geninfo_adjust_src_path = /tmp/build => /usr/src
-
-# Specify if geninfo should try to automatically determine
-.br
-# the base-directory when collecting coverage data.
-.br
-geninfo_auto_base = 1
-.br
-
-# Directory containing gcov kernel files
-.br
-lcov_gcov_dir = /proc/gcov
-.br
-
-# Location for temporary directories
-.br
-lcov_tmp_dir = /tmp
-.br
-
-# Show full paths during list operation if non\-zero
-.br
-lcov_list_full_path = 0
-.br
-
-# Specify the maximum width for list output. This value is
-.br
-# ignored when lcov_list_full_path is non\-zero.
-.br
-lcov_list_width = 80
-.br
-
-# Specify the maximum percentage of file names which may be
-.br
-# truncated when choosing a directory prefix in list output.
-.br
-# This value is ignored when lcov_list_full_path is non\-zero.
-.br
-lcov_list_truncate_max = 20
-
-# Specify if function coverage data should be collected and
-.br
-# processed.
-.br
-lcov_function_coverage = 1
-.br
-
-# Specify if branch coverage data should be collected and
-.br
-# processed.
-.br
-lcov_branch_coverage = 0
-.br
-.PP
-
-.SH OPTIONS
-
-.BR genhtml_css_file " ="
-.I filename
-.IP
-Specify an external style sheet file. Use this option to modify the appearance of the HTML output as generated by
-.BR genhtml .
-During output generation, a copy of this file will be placed in the output
-directory.
-.br
-
-This option corresponds to the \-\-css\-file command line option of
-.BR genhtml .
-.br
-
-By default, a standard CSS file is generated.
-.PP
-
-.BR genhtml_hi_limit "  ="
-.I hi_limit
-.br
-.BR genhtml_med_limit " ="
-.I med_limit
-.br
-.IP
-Specify coverage rate limits for classifying file entries. Use this option to
-modify the coverage rates (in percent) for line, function and branch coverage at
-which a result is classified as high, medium or low coverage. This
-classification affects the color of the corresponding entries on the overview
-pages of the HTML output:
-.br
-
-High:   hi_limit  <= rate <= 100        default color: green
-.br
-Medium: med_limit <= rate < hi_limit    default color: orange
-.br
-Low:    0         <= rate < med_limit   default color: red
-.br
-
-Defaults are 90 and 75 percent.
-.PP
-
-.BR genhtml_line_field_width " ="
-.I number_of_characters
-.IP
-Specify the width (in characters) of the source code view column containing
-line coverage information.
-.br
-
-Default is 12.
-.PP
-
-.BR genhtml_branch_field_width " ="
-.I number_of_characters
-.IP
-Specify the width (in characters) of the source code view column containing
-branch coverage information.
-.br
-
-Default is 16.
-.PP
-
-.BR genhtml_overview_width " ="
-.I pixel_size
-.IP
-Specify the width (in pixel) of the overview image created when generating HTML
-output using the \-\-frames option of
-.BR genhtml .
-.br
-
-Default is 80.
-.PP
-
-.BR genhtml_nav_resolution " ="
-.I lines
-.IP
-Specify the resolution of overview navigation when generating HTML output using
-the \-\-frames option of
-.BR genhtml .
-This number specifies the maximum difference in lines between the position a
-user selected from the overview and the position the source code window is
-scrolled to.
-.br
-
-Default is 4.
-.PP
-
-
-.BR genhtml_nav_offset " ="
-.I lines
-.IP
-Specify the overview navigation line offset as applied when generating HTML
-output using the \-\-frames option of
-.BR genhtml.
-.br
-
-Clicking a line in the overview image should show the source code view at
-a position a bit further up, so that the requested line is not the first
-line in the window.  This number specifies that offset.
-.br
-
-Default is 10.
-.PP
-
-
-.BR genhtml_keep_descriptions " ="
-.IR 0 | 1
-.IP
-If non\-zero, keep unused test descriptions when generating HTML output using
-.BR genhtml .
-.br
-
-This option corresponds to the \-\-keep\-descriptions option of
-.BR genhtml .
-.br
-
-Default is 0.
-.PP
-
-.BR genhtml_no_prefix " ="
-.IR 0 | 1
-.IP
-If non\-zero, do not try to find and remove a common prefix from directory names.
-.br
-
-This option corresponds to the \-\-no\-prefix option of
-.BR genhtml .
-.br
-
-Default is 0.
-.PP
-
-.BR genhtml_no_source " ="
-.IR 0 | 1
-.IP
-If non\-zero, do not create a source code view when generating HTML output using
-.BR genhtml .
-.br
-
-This option corresponds to the \-\-no\-source option of
-.BR genhtml .
-.br
-
-Default is 0.
-.PP
-
-.BR genhtml_num_spaces " ="
-.I num
-.IP
-Specify the number of spaces to use as replacement for tab characters in the
-HTML source code view as generated by
-.BR genhtml .
-.br
-
-This option corresponds to the \-\-num\-spaces option of
-.BR genthml .
-.br
-
-Default is 8.
-
-.PP
-
-.BR genhtml_highlight " ="
-.IR 0 | 1
-.IP
-If non\-zero, highlight lines with converted\-only data in
-HTML output as generated by
-.BR genhtml .
-.br
-
-This option corresponds to the \-\-highlight option of
-.BR genhtml .
-.br
-
-Default is 0.
-.PP
-
-.BR genhtml_legend " ="
-.IR 0 | 1
-.IP
-If non\-zero, include a legend explaining the meaning of color coding in the HTML
-output as generated by
-.BR genhtml .
-.br
-
-This option corresponds to the \-\-legend option of
-.BR genhtml .
-.br
-
-Default is 0.
-.PP
-
-.BR genhtml_html_prolog " ="
-.I filename
-.IP
-If set, include the contents of the specified file at the beginning of HTML
-output.
-
-This option corresponds to the \-\-html\-prolog option of
-.BR genhtml .
-.br
-
-Default is to use no extra prolog.
-.PP
-
-.BR genhtml_html_epilog " ="
-.I filename
-.IP
-If set, include the contents of the specified file at the end of HTML output.
-
-This option corresponds to the \-\-html\-epilog option of
-.BR genhtml .
-.br
-
-Default is to use no extra epilog.
-.PP
-
-.BR genhtml_html_extension " ="
-.I extension
-.IP
-If set, use the specified string as filename extension for generated HTML files.
-
-This option corresponds to the \-\-html\-extension option of
-.BR genhtml .
-.br
-
-Default extension is "html".
-.PP
-
-.BR genhtml_html_gzip " ="
-.IR 0 | 1
-.IP
-If set, compress all html files using gzip.
-
-This option corresponds to the \-\-html\-gzip option of
-.BR genhtml .
-.br
-
-Default extension is 0.
-.PP
-
-.BR genhtml_sort " ="
-.IR 0 | 1
-.IP
-If non\-zero, create overview pages sorted by coverage rates when generating
-HTML output using
-.BR genhtml .
-.br
-
-This option can be set to 0 by using the \-\-no\-sort option of
-.BR genhtml .
-.br
-
-Default is 1.
-.PP
-
-.BR genhtml_function_coverage " ="
-.IR 0 | 1
-.IP
-If non\-zero, include function coverage data when generating HTML output using
-.BR genhtml .
-.br
-
-This option can be set to 0 by using the \-\-no\-function\-coverage option of
-.BR genhtml .
-.br
-
-Default is 1.
-.PP
-
-.BR genhtml_branch_coverage " ="
-.IR 0 | 1
-.IP
-If non\-zero, include branch coverage data when generating HTML output using
-.BR genhtml .
-.br
-
-This option can be set to 0 by using the \-\-no\-branch\-coverage option of
-.BR genhtml .
-.br
-
-Default is 1.
-.PP
-
-.BR genhtml_charset " ="
-.I charset
-.IP
-Specify the character set of all generated HTML pages.
-.br
-
-Use this option if the source code contains characters which are not
-part of the default character set. Note that this option is ignored
-when a custom HTML prolog is specified (see also
-.BR genhtml_html_prolog ).
-.br
-
-Default is UTF-8.
-.PP
-
-.BR genhtml_demangle_cpp " ="
-.IR 0 | 1
-.IP
-If non-zero, demangle C++ function names in function overviews.
-
-Set this option to one if you want to convert C++ internal function
-names to human readable format for display on the HTML function overview
-page.  This option requires that the c++filt tool is installed (see
-.BR c++filt(1)
-).
-.br
-
-This option corresponds to the \-\-demangle\-cpp command line option of
-.BR genhtml .
-.br
-
-Default is 0.
-.PP
-
-.BR genhtml_desc_html " ="
-.IR 0 | 1
-.IP
-If non-zero, test case descriptions may contain HTML markup.
-
-Set this option to one if you want to embed HTML markup (for example to
-include links) in test case descriptions. When set to zero, HTML markup
-characters will be escaped to show up as plain text on the test case
-description page.
-.br
-
-Default is 0.
-.PP
-
-.BR genhtml_precision " ="
-.IR  1 | 2 | 3 | 4
-.IP
-Specify how many digits after the decimal-point should be used for
-displaying coverage rates.
-.br
-
-Default is 1.
-.PP
-.BR genhtml_missed " ="
-.IR  0 | 1
-.IP
-If non-zero, the count of missed lines, functions, or branches is shown
-as negative numbers in overview pages.
-.br
-
-Default is 0.
-.PP
-
-.
-.BR geninfo_gcov_tool " ="
-.I path_to_gcov
-.IP
-Specify the location of the gcov tool (see
-.BR gcov (1))
-which is used to generate coverage information from data files. 
-.br
-
-Default is 'gcov'.
-.PP
-
-.BR geninfo_adjust_testname " ="
-.IR 0 | 1
-.IP
-If non\-zero,  adjust test names to include operating system information
-when capturing coverage data.
-.br
-
-Default is 0.
-.PP
-
-.BR geninfo_checksum " ="
-.IR 0 | 1
-.IP
-If non\-zero, generate source code checksums when capturing coverage data.
-Checksums are useful to prevent merging coverage data from incompatible
-source code versions but checksum generation increases the size of coverage
-files and the time used to generate those files.
-.br
-
-This option corresponds to the \-\-checksum and \-\-no\-checksum command line
-option of
-.BR geninfo .
-.br
-
-Default is 0.
-.PP
-
-.BR geninfo_compat_libtool " ="
-.IR 0 | 1
-.IP
-If non\-zero, enable libtool compatibility mode. When libtool compatibility
-mode is enabled, lcov will assume that the source code relating to a .da file
-located in a directory named ".libs" can be found in its parent directory.
-.br
-
-This option corresponds to the \-\-compat\-libtool and \-\-no\-compat\-libtool
-command line option of
-.BR geninfo .
-.br
-
-Default is 1.
-.PP
-
-.BR geninfo_external " ="
-.IR 0 | 1
-.IP
-If non\-zero, capture coverage data for external source files.
-
-External source files are files which are not located in one of the directories
-(including sub-directories)
-specified by the \-\-directory or \-\-base\-directory options of
-.BR lcov / geninfo .
-
-Default is 1.
-.PP
-
-.BR geninfo_gcov_all_blocks " ="
-.IR 0 | 1
-.IP
-If non\-zero, call the gcov tool with option --all-blocks.
-
-Using --all-blocks will produce more detailed branch coverage information for
-each line. Set this option to zero if you do not need detailed branch coverage
-information to speed up the process of capturing code coverage or to work
-around a bug in some versions of gcov which will cause it to endlessly loop
-when analysing some files.
-
-Default is 1.
-.PP
-
-.BR geninfo_compat " ="
-.IR mode = value [, mode = value ,...]
-.IP
-Specify that geninfo should enable one or more compatibility modes
-when capturing coverage data.
-
-This option corresponds to the \-\-compat command line option of
-.BR geninfo .
-
-Default is 'libtool=on, hammer=auto, split_crc=auto'.
-.PP
-
-.BR geninfo_adjust_src_path " ="
-.IR pattern " => " replacement
-.br
-.BR geninfo_adjust_src_path " ="
-.I pattern
-.IP
-Adjust source paths when capturing coverage data.
-
-Use this option in situations where geninfo cannot find the correct
-path to source code files of a project. By providing a
-.I pattern
-in Perl regular expression format (see
-.BR perlre (1))
-and an optional replacement string, you can instruct geninfo to
-remove or change parts of the incorrect source path.
-
-.B Example:
-.br
-
-1. When geninfo reports that it cannot find source file
-.br
-
-    /path/to/src/.libs/file.c
-.br
-
-while the file is actually located in
-.br
-
-    /path/to/src/file.c
-.br
-
-use the following parameter:
-.br
-
-    geninfo_adjust_src_path = /.libs
-
-This will remove all "/.libs" strings from the path.
-
-2. When geninfo reports that it cannot find source file
-.br
-
-    /tmp/build/file.c
-.br
-
-while the file is actually located in
-.br
-
-    /usr/src/file.c
-.br
-
-use the following parameter:
-.br
-
-    geninfo_adjust_src_path = /tmp/build => /usr/src
-.br
-
-This will change all "/tmp/build" strings in the path to "/usr/src".
-.PP
-
-.BR geninfo_auto_base " ="
-.IR 0 | 1
-.IP
-If non\-zero, apply a heuristic to determine the base directory when
-collecting coverage data.
-.br
-
-Use this option when using geninfo on projects built with libtool or
-similar build environments that work with multiple base directories,
-i.e. environments, where the current working directory when invoking the
-compiler ist not the same directory in which the source code file is
-located, and in addition, is different between files of the same project.
-.br
-
-Default is 1.
-.PP
-
-.BR lcov_gcov_dir " ="
-.I path_to_kernel_coverage_data
-.IP
-Specify the path to the directory where kernel coverage data can be found
-or leave undefined for auto-detection.
-.br
-
-Default is auto-detection.
-.PP
-
-.BR lcov_tmp_dir " ="
-.I temp
-.IP
-Specify the location of a directory used for temporary files.
-.br
-
-Default is '/tmp'.
-.PP
-
-.BR lcov_list_full_path " ="
-.IR 0 | 1
-.IP
-If non-zero, print the full path to source code files during a list operation.
-.br
-
-This option corresponds to the \-\-list\-full\-path option of
-.BR lcov .
-.br
-
-Default is 0.
-.PP
-
-.BR lcov_list_max_width " ="
-.IR width
-.IP
-Specify the maximum width for list output. This value is ignored when
-lcov_list_full_path is non\-zero.
-.br
-
-Default is 80.
-.PP
-
-.BR lcov_list_truncate_max
-.B " ="
-.IR percentage
-.IP
-Specify the maximum percentage of file names which may be truncated when
-choosing a directory prefix in list output. This value is ignored when
-lcov_list_full_path is non\-zero.
-.br
-
-Default is 20.
-.PP
-
-.BR lcov_function_coverage " ="
-.IR 0 | 1
-.IP
-Specify whether lcov should handle function coverage data.
-.br
-
-Setting this option to 0 can reduce memory and CPU time consumption
-when lcov is collecting and processing coverage data, as well as
-reduce the size of the resulting data files. Note that setting
-.B genhtml_function_coverage
-will override this option for HTML generation.
-.br
-
-Default is 1.
-.PP
-
-.BR lcov_branch_coverage " ="
-.IR 0 | 1
-.IP
-Specify whether lcov should handle branch coverage data.
-.br
-
-Setting this option to 0 can reduce memory and CPU time consumption
-when lcov is collecting and processing coverage data, as well as
-reduce the size of the resulting data files. Note that setting
-.B genhtml_branch_coverage
-will override this option for HTML generation.
-.br
-
-Default is 0.
-.PP
-
-.BR lcov_excl_line " ="
-.I expression
-.IP
-Specify the regular expression of lines to exclude.
-.br
-
-Default is 'LCOV_EXCL_LINE'.
-.PP
-
-.BR lcov_excl_br_line " ="
-.I expression
-.IP
-Specify the regular expression of lines to exclude from branch coverage.
-.br
-
-Default is 'LCOV_EXCL_BR_LINE'.
-.PP
-
-.SH FILES
-
-.TP
-.I /etc/lcovrc
-The system\-wide
-.B lcov
-configuration file.
-
-.TP
-.I ~/.lcovrc
-The individual per\-user configuration file.
-.PP
-
-.SH SEE ALSO
-.BR lcov (1),
-.BR genhtml (1),
-.BR geninfo (1),
-.BR gcov (1)
diff --git a/ThirdParty/lcov/rpm/lcov.spec b/ThirdParty/lcov/rpm/lcov.spec
deleted file mode 100644
index e96c8d47b..000000000
--- a/ThirdParty/lcov/rpm/lcov.spec
+++ /dev/null
@@ -1,59 +0,0 @@
-Summary: A graphical GCOV front-end
-Name: lcov
-Version: 1.14
-Release: 1
-License: GPLv2+
-Group: Development/Tools
-URL: http://ltp.sourceforge.net/coverage/lcov.php
-Source0: http://downloads.sourceforge.net/ltp/%{name}-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
-BuildArch: noarch
-Requires: perl >= 5.8.8
-
-%description
-LCOV is a graphical front-end for GCC's coverage testing tool gcov. It collects
-gcov data for multiple source files and creates HTML pages containing the
-source code annotated with coverage information. It also adds overview pages
-for easy navigation within the file structure.
-
-%prep
-%setup -q -n %{name}-%{version}
-
-%build
-exit 0
-
-%install
-rm -rf $RPM_BUILD_ROOT
-make install DESTDIR=$RPM_BUILD_ROOT PREFIX=/usr CFG_DIR=/etc
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files
-%defattr(-,root,root)
-/usr/bin/*
-/usr/share/man/man*/*
-%config /etc/*
-
-%changelog
-* Mon Aug 22 2016 Peter Oberparleiter (Peter.Oberparleiter@de.ibm.com)
-- updated "make install" call to work with PREFIX Makefile changes
-
-* Mon May 07 2012 Peter Oberparleiter (Peter.Oberparleiter@de.ibm.com)
-- added dependency on perl 5.8.8 for >>& open mode support
-
-* Wed Aug 13 2008 Peter Oberparleiter (Peter.Oberparleiter@de.ibm.com)
-- changed description + summary text
-
-* Mon Aug 20 2007 Peter Oberparleiter (Peter.Oberparleiter@de.ibm.com)
-- fixed "Copyright" tag
-
-* Mon Jul 14 2003 Peter Oberparleiter (Peter.Oberparleiter@de.ibm.com)
-- removed variables for version/release to support source rpm building
-- added initial rm command in install section
-
-* Mon Apr 7 2003 Peter Oberparleiter (Peter.Oberparleiter@de.ibm.com)
-- implemented variables for version/release
-
-* Fri Oct 18 2002 Peter Oberparleiter (Peter.Oberparleiter@de.ibm.com)
-- created initial spec file
diff --git a/ThirdParty/lcov/test/Makefile b/ThirdParty/lcov/test/Makefile
deleted file mode 100644
index ecb96042a..000000000
--- a/ThirdParty/lcov/test/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-include common.mak
-
-TESTDIRS   := $(sort $(patsubst %/,%,$(dir $(wildcard */Makefile))))
-
-help: info
-
-info:
-	echo "Available make targets:"
-	echo "  test   : perform self-tests"
-	echo "  clean  : remove all temporary files"
-	echo ""
-	echo "Available make variables:"
-	echo "  SIZE   : specify size of test data (small, medium, large)"
-	echo "  V      : specify level of verbosity (0, 1, 2)"
-
-test:
-	for TEST in $(TESTDIRS) ; do \
-		make -C $$TEST test ; \
-	done
-
-clean:
-	rm -rf *.info *.counts test.log src/
-	for TEST in $(TESTDIRS) ; do \
-		make -C $$TEST clean ; \
-	done
-
-.PHONY: help info test clean
diff --git a/ThirdParty/lcov/test/bin/common b/ThirdParty/lcov/test/bin/common
deleted file mode 100644
index a8b527ded..000000000
--- a/ThirdParty/lcov/test/bin/common
+++ /dev/null
@@ -1,103 +0,0 @@
-function elapsed_to_ms()
-{
-	local ELAPSED=$1
-	local IFS=:.
-	local MS
-
-	set -- $ELAPSED
-	if [ $# -eq 3 ] ; then
-		let MS=${3#0}*10+${2#0}*1000+$1*60000
-	else
-		let MS=${4#0}*10+${3#0}*1000+${2#0}*60000+$1*3600000
-	fi
-
-	echo $MS
-}
-
-function t_timestamp()
-{
-	date +"%Y-%m-%d %H:%M:%S %z"
-}
-
-function t_marker()
-{
-	echo
-	echo "======================================================================"
-}
-
-function t_detail()
-{
-	local KEY=$1
-	local VALUE=$2
-	local DOTS=" ............"
-
-	printf "%-.12s: %s\n" "$KEY$DOTS" "$VALUE"
-}
-
-function t_announce()
-{
-	local TESTNAME="$1"
-
-	printf "$BOLD%-.30s$RESET " "$TESTNAME .............................."
-	t_marker >> "$LOGFILE"
-	t_detail "DATE" "$(t_timestamp)" >> "$LOGFILE"
-	t_detail "TESTNAME" "$TESTNAME" >> "$LOGFILE"
-}
-
-function t_result()
-{
-	local COLOR="$1"
-	local TEXT="$2"
-
-	printf "[$COLOR$TEXT$RESET]"
-}
-
-function t_pass()
-{
-	local TESTNAME="$1"
-
-	t_result "$GREEN" "pass"
-	echo "pass $TESTNAME" >> "$COUNTFILE"
-}
-
-function t_fail()
-{
-	local TESTNAME="$1"
-
-	t_result "$RED" "fail"
-	echo "fail $TESTNAME" >> "$COUNTFILE"
-}
-
-function t_kill()
-{
-	local TESTNAME="$1"
-
-	t_result "$RED" "kill"
-	echo "fail $TESTNAME" >> "$COUNTFILE"
-}
-
-function t_skip()
-{
-	local TESTNAME="$1"
-
-	t_result "$BLUE" "skip"
-	echo "skip $TESTNAME" >> "$COUNTFILE"
-}
-
-function t_indent()
-{
-	sed -e 's/^/  /'
-}
-
-LOGFILE="$TOPDIR/test.log"
-COUNTFILE="$TOPDIR/test.counts"
-TIMEFILE="$TOPDIR/test.time"
-
-if [ -t 1 ] ; then
-	RED="\e[31m"
-	GREEN="\e[32m"
-	BLUE="\e[34m"
-	BOLD="\e[1m"
-	DEFAULT="\e[39m"
-	RESET="\e[0m"
-fi
diff --git a/ThirdParty/lcov/test/bin/mkinfo b/ThirdParty/lcov/test/bin/mkinfo
deleted file mode 100755
index 5231aeac5..000000000
--- a/ThirdParty/lcov/test/bin/mkinfo
+++ /dev/null
@@ -1,952 +0,0 @@
-#!/usr/bin/env perl
-#
-# Copyright IBM Corp. 2017
-#
-# Usage: mkinfo <config_file> [-o <output_dir>] [--seed <seed>]
-#               [<key>=<value>...]
-# 
-# Create a fake lcov code coverage data file and optionally the corresponding
-# source tree. DATA_FILE contains all specifications for creating the data
-# file. Directives can be overridden using KEY=VALUE specifications with KEY
-# being in the form SECTION.KEY. SEED specifies the number used to initialize
-# the pseudo random number generator.
-# 
-# Example:
-# mkinfo profiles/small -o src files.numfiles=12
-#
-
-use strict;
-use warnings;
-
-use Getopt::Long;
-use Cwd qw(abs_path getcwd);
-use File::Path qw(make_path);
-use File::Basename;
-use Data::Dumper;
-
-my $MAX_TAKEN	= 1000;
-my $use_colors	= -t STDIN;
-my $BOLD	= $use_colors ? "\033[1m" : "";
-my $RESET	= $use_colors ? "\033[0m" : "";
-
-sub usage()
-{
-	print(<<EOF)
-Usage: $0 <config_file> [-o <output_dir>] [--seed <seed>] [<key>=<value>...]
-
-Create a fake lcov code coverage data file and optionally the corresponding
-source tree. DATA_FILE contains all specifications for creating the data
-file. Directives can be overridden using KEY=VALUE specifications with KEY
-being in the form SECTION.KEY. SEED specifies the number used to initialize
-the pseudo random number generator.
- 
-Example:
-$0 profiles/small -o src files.numfiles=12
-EOF
-}
-
-sub read_config($)
-{
-	my ($filename) = @_;
-	my $fd;
-	my %config;
-	my $section;
-
-	open($fd, "<", $filename) or die("Could not open $filename: $!\n");
-	while (my $line = <$fd>) {
-		my ($key, $value);
-
-		$line =~ s/(^\s*|\s*$)//g;
-		next if ($line eq "" || $line =~ /^#/);
-		if ($line =~ /^\[\s*(\S+)\s*]$/) {
-			$section = $1;
-			next;
-		}
-		if ($line !~ /^(\S+)\s*=\s*(.*)$/) {
-			die("$filename:$.: Unknown line format: $line\n");
-		}
-		($key, $value) = ($1, $2);
-		if (!defined($section)) {
-			die("$filename:$.: Directive outside of section\n");
-		}
-		$config{$section}->{$1} = $2;
-	}
-	close($fd);
-
-	return \%config;
-}
-
-sub apply_config($$)
-{
-	my ($config, $directive) = @_;
-
-	for my $dir (@$directive) {
-		if ($dir !~ /^([^\.]+)\.([^=]+)=(.*)$/) {
-			die("Unknown directive format: $dir\n");
-		}
-		$config->{$1}->{$2} = $3;
-	}
-}
-
-sub get_value($$;$)
-{
-	my ($config, $dir, $default) = @_;
-	my ($section, $key, $value);
-
-	if ($dir !~ /^([^\.]+)\.([^=]+)$/) {
-		die("$0: Internal error: Unknown key format: $key\n");
-	}
-	($section, $key) = ($1, $2);
-
-	$value = $config->{$section}->{$key};
-
-	if (!defined($value)) {
-		if (!defined($default)) {
-			die("$0: Missing config value for $dir\n");
-		}
-		$value = $default;
-	}
-
-	return $value;
-}
-
-sub get_int($$;$$$)
-{
-	my ($config, $dir, $default, $min, $max) = @_;
-	my $value = get_value($config, $dir, $default);
-
-	if ($value !~ /^\d+$/) {
-		die("$0: Config value $dir must be an integer: $value\n");
-	}
-	$value = int($value);
-	if (defined($min) && $value < $min) {
-		die("$0: Config value $dir is too low (min $min): $value\n");
-	}
-	if (defined($max) && $value > $max) {
-		die("$0: Config value $dir is too high (max $max): $value\n");
-	}
-
-	return int($value);
-}
-
-sub get_list($$;$)
-{
-	my ($config, $dir, $default) = @_;
-	my $value = get_value($config, $dir, $default);
-	my @list = split(/\s+/, $value);
-
-	return \@list;
-}
-
-sub randlist($)
-{
-	my ($list) = @_;
-
-	return "" if (!@$list);
-	return $list->[int(rand(scalar(@$list)))];
-}
-
-sub randbool()
-{
-	return int(rand(2));
-}
-
-# Reduce LIST to PERCENTAGE of its former size.
-sub reduce_list_per($$)
-{
-	my ($list, $percentage) = @_;
-	my $remove;
-
-	$remove = int((100 - $percentage) * scalar(@$list) / 100);
-
-	for (my $i = 0; $i < $remove; $i++) {
-		splice(@$list, int(rand(scalar(@$list))), 1);
-	}
-}
-
-# Reduce LIST to NUM items.
-sub reduce_list_num($$)
-{
-	my ($list, $num) = @_;
-	my $remove;
-
-	$remove = scalar(@$list) - $num;
-
-	for (my $i = 0; $i < $remove; $i++) {
-		splice(@$list, int(rand(scalar(@$list))), 1);
-	}
-}
-
-sub _gen_filename($$)
-{
-	my ($c, $root) = @_;
-	my $ltop = get_list($c, "files.top", "");
-	my $lsub = get_list($c, "files.sub", "");
-	my $lsubsub = get_list($c, "files.subsub", "");
-	my $lprefix = get_list($c, "files.prefix");
-	my $lsuffix = get_list($c, "files.suffix", "");
-	my $lext = get_list($c, "files.ext");
-	my ($top, $sub, $subsub, $prefix, $suffix, $ext) =
-		("", "", "", "", "", "");
-	my $filename = "";
-
-	$top = randlist($ltop) if (randbool());
-	$sub = randlist($lsub) if (randbool());
-	$subsub = randlist($lsubsub) if (randbool());
-	$prefix = randlist($lprefix);
-	$suffix = randlist($lsuffix) if (randbool());
-	$ext = randlist($lext);
-
-	$filename = $root;
-	$filename .= "/".$top if ($top ne "");
-	$filename .= "/".$sub if ($sub ne "");
-	$filename .= "/".$subsub if ($subsub ne "");
-	$filename .= "/".$prefix;
-	$filename .= "_".$suffix if ($suffix ne "");
-	$filename .= $ext;
-	$filename =~ s#^//#/#;
-
-	return $filename;
-}
-
-sub gen_filename($$$)
-{
-	my ($c, $root, $filenames) = @_;
-	my $filename;
-
-	do {
-		$filename = _gen_filename($c, $root);
-	} while ($filenames->{$filename});
-	$filenames->{$filename} = 1;
-
-	return $filename;
-}
-
-sub gen_lines($$)
-{
-	my ($c, $length) = @_;
-	my @lines = 1 .. $length;
-	my $percent = get_int($c, "lines.instrumented", undef, 0, 100);
-
-	reduce_list_per(\@lines, $percent);
-
-	return \@lines;
-}
-
-sub gen_fnname($$)
-{
-	my ($c, $hash) = @_;
-	my $lverb = get_list($c, "functions.verb");
-	my $ladj = get_list($c, "functions.adj", "");
-	my $lnoun = get_list($c, "functions.noun", "");
-	my ($verb, $adj, $noun) = ("", "", "");
-	my $fnname;
-
-	$verb = randlist($lverb);
-	$adj = randlist($ladj) if (randbool());
-	$noun = randlist($lnoun) if (randbool());
-
-	$fnname = $verb;
-	$fnname .= "_".$adj if ($adj ne "");
-	$fnname .= "_".$noun if ($noun ne "");
-
-	if (exists($hash->{$fnname})) {
-		my $i = 2;
-
-		while (exists($hash->{$fnname.$i})) {
-			$i++;
-		}
-		$fnname .= $i;
-	}
-	$hash->{$fnname} = 1;
-
-	return $fnname;
-}
-
-sub gen_functions($$)
-{
-	my ($c, $lines) = @_;
-	my @fnlines;
-	my @functions;
-	my %names;
-	my $percent = get_int($c, "functions.perinstrumented", undef, 0, 100);
-
-	@fnlines = @$lines;
-	reduce_list_per(\@fnlines, $percent);
-
-	foreach my $fnline (@fnlines) {
-		push(@functions, [ $fnline, gen_fnname($c, \%names) ]);
-	}
-
-	return \@functions;
-}
-
-
-# Returns a value distribution object. This object can be used to randomly
-# choose one element from a list of elements with a given relative distribution.
-#
-# dist: [ sumprob, probs]
-# sumprob: Sum of all probabilities
-# probs: [ prob1, prob2, ... ]
-# prob: [ num, x ]
-# num: Value
-sub get_dist($$;$)
-{
-	my ($c, $dir, $default) = @_;
-	my $list = get_list($c, $dir, $default);
-	my $sumprob = 0;
-	my @probs;
-
-	foreach my $spec (@$list) {
-		my ($n, $p);
-
-		if ($spec =~ /^(\d+):(\d+)$/) {
-			($n, $p) = ($1, $2);
-		} elsif ($spec =~ /^(\d+)$/) {
-			$n = $1;
-			$p = 1;
-		} else {
-			die("$0: Config value $dir must be a distribution ".
-			    "list (a:p1 b:p2 ...)\n");
-		}
-		$sumprob += $p;
-		push(@probs, [ $n, $sumprob ]);
-	}
-
-	return [ $sumprob, \@probs ];
-}
-
-sub rand_dist($)
-{
-	my ($dist) = @_;
-	my ($sumprob, $probs) = @$dist;
-	my $r = int(rand($sumprob));
-
-	foreach my $prob (@$probs) {
-		my ($num, $x) = @$prob;
-		return $num if ($r < $x);
-	}
-
-	die("Internal error: Incomplete distribution list\n");
-}
-
-sub gen_branches($$)
-{
-	my ($c, $lines) = @_;
-	my $percent = get_int($c, "branches.perinstrumented", undef, 0, 100);
-	my @allblocks = @{get_list($c, "branches.blocks", "0")};
-	my $branchdist = get_dist($c, "branches.branchdist", "2");
-	my @brlines;
-	my @branches;
-
-	@brlines = @$lines;
-	reduce_list_per(\@brlines, $percent);
-
-	foreach my $brline (@brlines) {
-		my @blocks = @allblocks;
-		my $numblocks = int(rand(scalar(@blocks))) + 1;
-
-		reduce_list_num(\@blocks, $numblocks);
-
-		foreach my $block (@blocks) {
-			my $numbranch = rand_dist($branchdist);
-
-			for (my $branch = 0; $branch < $numbranch; $branch++) {
-				push(@branches, [ $brline, $block, $branch]);
-			}
-		}
-	}
-
-	return \@branches;
-}
-
-sub gen_filesrc($)
-{
-	my ($c) = @_;
-	my ($length, $lines, $functions, $branches);
-	my $do_ln = get_int($c, "lines.enabled");
-	my $do_fn = get_int($c, "functions.enabled");
-	my $do_br = get_int($c, "branches.enabled");
-
-	$length		= 1 + int(rand(get_int($c, "lines.maxlines")));
-	$lines		= gen_lines($c, $length);
-	$functions	= gen_functions($c, $lines) if ($do_fn);
-	$branches	= gen_branches($c, $lines) if ($do_br);
-
-	return [ $length, $lines, $functions, $branches ];
-}
-
-# Generate fake source tree.
-#
-# returns:	[ files, numlns, numfns, numbrs ]
-# files:	filename -> filesrc
-# filesrc:	[ length, lines, functions, branches ]
-# length:	Total number of lines in file
-#
-# lines:	[ line1, line2, ... ]
-#
-# functions:	[ fn1, fn2, ... ]
-# fn:		[ fnline, fnname ]
-# fnline:	Starting line of function
-# fnname:	Function name
-#
-# branches:	[ brdata1, brdata2, ...]
-# brdata:	[ brline, block, branch ]
-# brline:	Line number containing branches
-# block:	Block ID
-# branch:	Branch ID
-#
-sub gen_src($$)
-{
-	my ($c, $root) = @_;
-	my %files;
-	my $numfiles = get_int($c, "files.numfiles");
-	my %filenames;
-	my ($numlns, $numfns, $numbrs) = (0, 0, 0);
-
-	for (my $i = 0; $i < $numfiles; $i++) {
-		my $filename = gen_filename($c, $root, \%filenames);
-		my $filesrc = gen_filesrc($c);
-
-		$files{$filename} = $filesrc;
-		$numlns += scalar(@{$filesrc->[1]}) if (defined($filesrc->[1]));
-		$numfns += scalar(@{$filesrc->[2]}) if (defined($filesrc->[2]));
-		$numbrs += scalar(@{$filesrc->[3]}) if (defined($filesrc->[3]));
-	}
-
-	return [ \%files, $numlns, $numfns, $numbrs ];
-}
-
-sub write_src($)
-{
-	my ($src) = @_;
-	my ($files, $numlns, $numfns, $numbrs) = @$src;
-
-	foreach my $filename (sort(keys(%{$files}))) {
-		my $filesrc = $files->{$filename};
-		my $length = $filesrc->[0];
-		my $dir = dirname($filename);
-		my $fd;
-
-		if (!-d $dir) {
-			make_path($dir) or
-				die("Could not create directory $dir\n");
-		}
-
-		open($fd, ">", $filename) or
-			die("Could not create file $filename: $!\n");
-		for (my $i = 0; $i < $length; $i++) {
-			print($fd "\n");
-		}
-		close($fd);
-	}
-}
-
-sub write_branches($$$$)
-{
-	my ($fd, $branches, $brhits, $iref) = @_;
-	my ($found, $hit) = (0, 0);
-
-	# Line coverage data
-	foreach my $brdata (@$branches) {
-		my $brhit = $brhits->[$$iref++];
-		my ($brline, $block, $branch) = @$brdata;
-
-		$found++;
-		$hit++ if ($brhit ne "-" && $brhit > 0);
-		print($fd "BRDA:$brline,$block,$branch,$brhit\n");
-	}
-	if ($found > 0) {
-		print($fd "BRF:$found\n");
-		print($fd "BRH:$hit\n");
-	}
-}
-
-sub write_lines($$$$)
-{
-	my ($fd, $lines, $lnhist, $iref) = @_;
-	my ($found, $hit) = (0, 0);
-
-	# Line coverage data
-	foreach my $line (@$lines) {
-		my $lnhit = $lnhist->[$$iref++];
-
-		$found++;
-		$hit++ if ($lnhit > 0);
-		print($fd "DA:$line,$lnhit\n");
-	}
-	print($fd "LF:$found\n");
-	print($fd "LH:$hit\n");
-}
-
-sub write_functions($$$$)
-{
-	my ($fd, $functions, $fnhits, $iref) = @_;
-	my ($found, $hit) = (0, 0);
-
-	# Function coverage data
-	foreach my $fn (@$functions) {
-		my ($fnline, $fnname) = @$fn;
-
-		print($fd "FN:$fnline,$fnname\n");
-	}
-	foreach my $fn (@$functions) {
-		my ($fnline, $fnname) = @$fn;
-		my $fnhit = $fnhits->[$$iref++];
-
-		$found++;
-		$hit++ if ($fnhit > 0);
-		print($fd "FNDA:$fnhit,$fnname\n");
-	}
-	print($fd "FNF:$found\n");
-	print($fd "FNH:$hit\n");
-}
-
-sub write_filesrc($$$$$)
-{
-	my ($c, $fd, $filesrc, $hits, $iter) = @_;
-	my ($length, $lines, $functions, $branches) = @$filesrc;
-	my $do_ln = get_int($c, "lines.enabled");
-	my $do_fn = get_int($c, "functions.enabled");
-	my $do_br = get_int($c, "branches.enabled");
-
-	write_functions($fd, $functions, $hits->[1], \$iter->[1]) if ($do_fn);
-	write_branches($fd, $branches, $hits->[2], \$iter->[2]) if ($do_br);
-	write_lines($fd, $lines, $hits->[0], \$iter->[0]) if ($do_ln);
-}
-
-sub write_info($$$$)
-{
-	my ($c, $filename, $src, $hits) = @_;
-	my $files = $src->[0];
-	my $fd;
-	my %iters;
-
-	foreach my $testname (keys(%{$hits})) {
-		$iters{$testname} = [ 0, 0, 0 ];
-	}
-
-	open($fd, ">", $filename) or die("Could not create $filename: $!\n");
-
-	foreach my $filename (sort(keys(%{$files}))) {
-		my $filesrc = $files->{$filename};
-
-		foreach my $testname (sort(keys(%{$hits}))) {
-			my $testhits = $hits->{$testname};
-			my $iter = $iters{$testname};
-
-			print($fd "TN:$testname\n");
-			print($fd "SF:$filename\n");
-
-			write_filesrc($c, $fd, $filesrc, $testhits, $iter);
-
-			print($fd "end_of_record\n");
-		}
-	}
-
-	close($fd);
-}
-
-sub get_hit_found($)
-{
-	my ($list) = @_;
-	my ($hit, $found) = (0, 0);
-
-	foreach my $e (@$list) {
-		$hit++ if ($e ne "-" && $e > 0);
-		$found++;
-	}
-	return ($hit, $found);
-}
-
-sub write_counts($$)
-{
-	my ($filename, $hits) = @_;
-	my $fd;
-	my (@tlnhits, @tfnhits, @tbrhits);
-
-	foreach my $testname (keys(%{$hits})) {
-		my $testhits = $hits->{$testname};
-		my ($lnhits, $fnhits, $brhits) = @$testhits;
-
-		for (my $i = 0; $i < scalar(@$lnhits); $i++) {
-			$tlnhits[$i] += $lnhits->[$i];
-		}
-		for (my $i = 0; $i < scalar(@$fnhits); $i++) {
-			$tfnhits[$i] += $fnhits->[$i];
-		}
-		for (my $i = 0; $i < scalar(@$brhits); $i++) {
-			my $h = $brhits->[$i];
-
-			$h = 0 if ($h eq "-");
-			$tbrhits[$i] += $h;
-		}
-	}
-
-	open($fd, ">", $filename) or die("Could not create $filename: $!\n");
-	print($fd join(" ", get_hit_found(\@tlnhits), get_hit_found(\@tfnhits),
-			    get_hit_found(\@tbrhits))."\n");
-	close($fd);
-}
-
-# A branch hit value for a block that was not hit must be "-". A branch hit
-# value for a block that was hit cannot be "-", but must be "0" if not hit.
-sub sanitize_brhits($)
-{
-	my ($brhits) = @_;
-	my $block_hit = 0;
-
-	foreach my $brhit_ref (@$brhits) {
-		if ($$brhit_ref ne "-" && $$brhit_ref > 0) {
-			$block_hit = 1;
-			last;
-		}
-	}
-	foreach my $brhit_ref (@$brhits) {
-		if (!$block_hit) {
-			$$brhit_ref = "-";
-		} elsif ($$brhit_ref eq "-") {
-			$$brhit_ref = 0;
-		}
-	}
-}
-
-# Ensure coverage rate interdependencies are met
-sub sanitize_hits($$)
-{
-	my ($src, $hits) = @_;
-	my $files = $src->[0];
-
-	foreach my $hits (values(%{$hits})) {
-		my $brhits = $hits->[2];
-		my $i = 0;
-
-		foreach my $filename (sort(keys(%{$files}))) {
-			my $filesrc = $files->{$filename};
-			my $branches = $filesrc->[3];
-			my $lastblock;
-			my $lastline;
-			my @blist;
-
-			foreach my $brdata (@$branches) {
-				my ($brline, $block, $branch) = @$brdata;
-
-				if (!defined($lastblock) ||
-				    $block != $lastblock ||
-				    $brline != $lastline) {
-					sanitize_brhits(\@blist);
-					@blist = ();
-					$lastblock = $block;
-					$lastline = $brline;
-				}
-				push(@blist, \$brhits->[$i++]);
-			}
-			sanitize_brhits(\@blist);
-		}
-	}
-}
-
-# Generate random coverage data
-#
-# returns:	testname -> testhits
-# testhits:	[ lnhits, fnhits, brhits ]
-# lnhits:	[ ln1hit, ln2hit, ... ]
-# lnhit:	Number of times a line was hit by a specific test
-# fnhits:	[ fn1hit, fn2hit, ... ]
-# fnhit:	Number of times a function was hit by a specific test
-# brhits:	[ br1hit, br2hit, ... ]
-# brhit:	Number of times a branch was hit by a specific test
-sub gen_hits($$)
-{
-	my ($c, $src) = @_;
-	my (@lnhits, @fnhits, @brhits);
-	my ($files, $numlns, $numfns, $numbrs) = @$src;
-	my $testnames = get_list($c, "tests.names", "");
-	my %hits;
-
-	$testnames = [ "" ] if (!@$testnames);
-
-	foreach my $testname (@$testnames) {
-		my (@lnhits, @fnhits, @brhits);
-
-		for (my $i = 0; $i < $numlns; $i++) {
-			push(@lnhits, 1 + int(rand($MAX_TAKEN)));
-		}
-
-		for (my $i = 0; $i < $numfns; $i++) {
-			push(@fnhits, 1 + int(rand($MAX_TAKEN)));
-		}
-
-		for (my $i = 0; $i < $numbrs; $i++) {
-			push(@brhits, 1 + int(rand($MAX_TAKEN)));
-		}
-
-		$hits{$testname} = [ \@lnhits, \@fnhits, \@brhits ];
-	}
-
-	sanitize_hits($src, \%hits);
-
-	return \%hits;
-}
-
-# Return a hash containing RATE percent of indices [0..NUM-1].
-sub gen_filter($$)
-{
-	my ($num, $rate) = @_;
-	my @list = (0 .. ($num - 1));
-	my %hash;
-
-	reduce_list_per(\@list, $rate);
-	foreach my $i (@list) {
-		$hash{$i} = 1;
-	}
-
-	return \%hash;
-}
-
-# Zero all entries in LIST identified by the indices in FILTER.
-sub zero_by_filter($$)
-{
-	my ($list, $filter) = @_;
-
-	foreach my $i (keys(%{$filter})) {
-		$list->[$i] = 0;
-	}
-}
-
-# Add a random number of indices between [0..NUM-1] to FILTER.
-sub widen_filter($$)
-{
-	my ($filter, $num) = @_;
-	my @list;
-
-	for (my $i = 0; $i < $num; $i++) {
-		push(@list, $i) if (!exists($filter->{$i}));
-	}
-	reduce_list_per(\@list, int(rand(101)));
-
-	foreach my $i (@list) {
-		$filter->{$i} = 1;
-	}
-}
-
-# Zero coverage data in HITS until the combined coverage rates reach the
-# specified RATEs.
-sub reduce_hits($$$$$)
-{
-	my ($src, $hits, $lnrate, $fnrate, $brrate) = @_;
-	my ($files, $numlns, $numfns, $numbrs) = @$src;
-	my ($lnfilter, $fnfilter, $brfilter);
-
-	$lnfilter = gen_filter($numlns, 100 - $lnrate);
-	$fnfilter = gen_filter($numfns, 100 - $fnrate);
-	$brfilter = gen_filter($numbrs, 100 - $brrate);
-
-	foreach my $testhits (values(%{$hits})) {
-		my ($lnhits, $fnhits, $brhits) = @$testhits;
-
-		zero_by_filter($lnhits, $lnfilter);
-		zero_by_filter($fnhits, $fnfilter);
-		zero_by_filter($brhits, $brfilter);
-
-		# Provide some variation between tests
-		widen_filter($lnfilter, $numlns);
-		widen_filter($fnfilter, $numfns);
-		widen_filter($brfilter, $numbrs);
-	}
-
-	sanitize_hits($src, $hits);
-}
-
-sub zero_list($)
-{
-	my ($list) = @_;
-
-	foreach my $i (@$list) {
-		$i = 0;
-	}
-}
-
-# Zero all coverage in HITS.
-sub zero_hits($$)
-{
-	my ($src, $hits) = @_;
-
-	foreach my $testhits (values(%{$hits})) {
-		my ($lnhits, $fnhits, $brhits) = @$testhits;
-
-		zero_list($lnhits);
-		zero_list($fnhits);
-		zero_list($brhits);
-	}
-
-	sanitize_hits($src, $hits);
-}
-
-# Distribute items from LIST to A and B depending on whether the index for
-# an item is found in FILTER.
-sub split_by_filter($$$$)
-{
-	my ($list, $filter, $a, $b) = @_;
-
-	for (my $i = 0; $i < scalar(@$list); $i++) {
-		if (exists($filter->{$i})) {
-			push(@$a, $list->[$i]);
-			push(@$b, 0);
-		} else {
-			push(@$a, 0);
-			push(@$b, $list->[$i]);
-		}
-	}
-}
-
-sub split_hits($$$)
-{
-	my ($c, $src, $hits) = @_;
-	my ($files, $numlns, $numfns, $numbrs) = @$src;
-	my ($lnsplit, $fnsplit, $brsplit);
-	my (%a, %b);
-
-	$lnsplit = gen_filter($numlns, int(rand(101)));
-	$fnsplit = gen_filter($numfns, int(rand(101)));
-	$brsplit = gen_filter($numbrs, int(rand(101)));
-
-	foreach my $testname (keys(%{$hits})) {
-		my $testhits = $hits->{$testname};
-		my ($lnhits, $fnhits, $brhits) = @$testhits;
-		my (@lnhitsa, @fnhitsa, @brhitsa);
-		my (@lnhitsb, @fnhitsb, @brhitsb);
-
-		split_by_filter($lnhits, $lnsplit, \@lnhitsa, \@lnhitsb);
-		split_by_filter($fnhits, $fnsplit, \@fnhitsa, \@fnhitsb);
-		split_by_filter($brhits, $brsplit, \@brhitsa, \@brhitsb);
-
-		$a{$testname} = [ \@lnhitsa, \@fnhitsa, \@brhitsa ];
-		$b{$testname} = [ \@lnhitsb, \@fnhitsb, \@brhitsb ];
-	}
-
-	sanitize_hits($src, \%a);
-	sanitize_hits($src, \%b);
-
-	return (\%a, \%b);
-}
-
-sub plural($$$)
-{
-	my ($num, $sing, $plur) = @_;
-
-	return $num <= 1 ? $sing : $plur;
-}
-
-sub print_intro($)
-{
-	my ($c) = @_;
-	my $numtests = scalar(@{get_list($c, "tests.names")});
-	my $numfiles = get_int($c, "files.numfiles");
-
-	$numtests = 1 if ($numtests < 1);
-
-	print($BOLD."Creating coverage files ($numtests ".
-	      plural($numtests, "test", "tests").", $numfiles ".
-	      plural($numfiles, "source file", "source files").")\n".$RESET);
-}
-
-sub main()
-{
-	my $opt_help;
-	my $opt_output;
-	my $opt_configfile;
-	my $opt_seed = 0;
-	my $c;
-	my $src;
-	my $hits;
-	my $root;
-	my $enum;
-	my ($a, $b);
-
-	# Parse options
-	if (!GetOptions("output|o=s" => \$opt_output,
-			"seed=s" => \$opt_seed,
-			"help|h" => \$opt_help,
-	)) {
-		print(STDERR "Use $0 --help to get usage information\n");
-		exit(2);
-	}
-
-	if ($opt_help) {
-		usage();
-		exit(0);
-	}
-
-	$opt_configfile = shift(@ARGV);
-	if (!defined($opt_configfile)) {
-		print(STDERR "Please specify a config file\n");
-		exit(2);
-	}
-
-	if (defined($opt_output)) {
-		if (! -d $opt_output) {
-			mkdir($opt_output) or
-				die("$0: Could not create directory ".
-				    "$opt_output: $!\n");
-		}
-		$root = abs_path($opt_output)
-	} else {
-		$root = "/";
-	}
-
-	srand($opt_seed);
-
-	# Get config
-	$c = read_config($opt_configfile);
-	apply_config($c, \@ARGV) if (@ARGV);
-
-	print_intro($c);
-	# Show lines on STDOUT without newline
-	$| = 1;
-
-	# Create source tree
-	print("  Source tree ......... ");
-	$src = gen_src($c, $root);
-	# Write out source code if requested
-	write_src($src) if (defined($opt_output));
-	print("done (");
-	print($src->[1]." lines, ");
-	print($src->[2]." functions, ");
-	print($src->[3]." branches)\n");
-
-	# Write out full-coverage data files
-	print("  Full coverage ....... ");
-	$hits = gen_hits($c, $src);
-	write_info($c, "full.info", $src, $hits);
-	write_counts("full.counts", $hits);
-	print("done\n");
-
-	# Write out data files with target coverage rates
-	print("  Target coverage ..... ");
-	reduce_hits($src, $hits, get_int($c, "lines.covered"),
-				 get_int($c, "functions.covered"),
-				 get_int($c, "branches.covered"));
-	write_info($c, "target.info", $src, $hits);
-	write_counts("target.counts", $hits);
-	print("done\n");
-
-	# Write out partial data files
-	print("  Partial coverage .... ");
-	($a, $b) = split_hits($c, $src, $hits);
-	write_info($c, "part1.info", $src, $a);
-	write_counts("part1.counts", $a);
-	write_info($c, "part2.info", $src, $b);
-	write_counts("part2.counts", $b);
-	print("done\n");
-
-	# Write out zero-coverage data files
-	print("  Zero coverage ....... ");
-	zero_hits($src, $hits);
-	write_info($c, "zero.info", $src, $hits);
-	write_counts("zero.counts", $hits);
-	print("done\n");
-}
-
-main();
-exit(0);
diff --git a/ThirdParty/lcov/test/bin/norminfo b/ThirdParty/lcov/test/bin/norminfo
deleted file mode 100755
index 9fe0ef2f0..000000000
--- a/ThirdParty/lcov/test/bin/norminfo
+++ /dev/null
@@ -1,243 +0,0 @@
-#!/usr/bin/env perl
-#
-# Copyright IBM Corp. 2017
-#
-# Usage: norminfo <coverage-data-file> [<multiplier>]
-#
-# Normalize coverage data file (ensure stable order), perform some sanity
-# checks, and apply optional multiplier to execution counts.
-#
-
-use strict;
-use warnings;
-
-sub ferr($$$)
-{
-	my ($pos, $filename, $msg) = @_;
-
-	if (defined($pos)) {
-		$pos .= ":";
-	} else {
-		$pos = "";
-	}
-
-	die("$0:$filename:$pos $msg");
-}
-
-sub print_sorted($$$)
-{
-	my ($fd, $info, $multi) = @_;
-	my (%fn, %fns, %fnda, %brda, %da);
-	my ($fnf, $fnh, $brf, $brh, $lf, $lh);
-
-	while (my $line = <$fd>) {
-		$line =~ s/(^\s*|\s*$)//g;
-
-		if ($line =~ /^end_of_record$/) {
-			last;
-		} elsif ($line =~ /^FN:(\d+),(.*)$/) {
-			my ($lineno, $fnname) = ($1, $2);
-
-			if (exists($fn{$lineno})) {
-				ferr($., $info, "Duplicate FN: entry\n");
-			}
-			$fn{$lineno} = $fnname;
-			if (exists($fns{$fnname})) {
-				ferr($., $info, "Duplicate function name\n");
-			}
-			$fns{$fnname} = $lineno;
-		} elsif ($line =~ /^FNDA:(\d+),(.*)$/) {
-			my ($count, $fnname) = ($1, $2);
-
-			if (exists($fnda{$fnname})) {
-				ferr($., $info, "Duplicate FNDA: entry\n");
-			}
-			$fnda{$fnname} = int($count * $multi);
-		} elsif ($line =~ /^FNF:(\d+)$/) {
-			if (defined($fnf)) {
-				ferr($., $info, "Duplicate FNF: entry\n");
-			}
-			$fnf = $1;
-		} elsif ($line =~ /^FNH:(\d+)$/) {
-			if (defined($fnh)) {
-				ferr($., $info, "Duplicate FNH: entry\n");
-			}
-			$fnh = $1;
-		} elsif ($line =~ /^BRDA:(\d+),(\d+),(\d+),(\d+|-)$/) {
-			my ($lineno, $block, $branch, $count) = ($1, $2, $3, $4);
-
-			if (exists($brda{$lineno}->{$block}->{$branch})) {
-				ferr($., $info, "Duplicate BRDA: entry\n");
-			}
-			$count = int($count * $multi) if ($count ne "-");
-			$brda{$lineno}->{$block}->{$branch} = $count;
-
-		} elsif ($line =~ /^BRF:(\d+)$/) {
-			if (defined($brf)) {
-				ferr($., $info, "Duplicate BRF: entry\n");
-			}
-			$brf = $1;
-		} elsif ($line =~ /^BRH:(\d+)$/) {
-			if (defined($brh)) {
-				ferr($., $info, "Duplicate BRH: entry\n");
-			}
-			$brh = $1;
-		} elsif ($line =~ /^DA:(\d+),(\d+)$/) {
-			my ($lineno, $count) = ($1, $2);
-
-			if (exists($da{$lineno})) {
-				ferr($., $info, "Duplicate FNDA: entry\n");
-			}
-			$da{$lineno} = int($count * $multi);
-		} elsif ($line =~ /^LF:(\d+)$/) {
-			if (defined($lf)) {
-				ferr($., $info, "Duplicate LF: entry\n");
-			}
-			$lf = $1;
-		} elsif ($line =~ /^LH:(\d+)$/) {
-			if (defined($lh)) {
-				ferr($., $info, "Duplicate LH: entry\n");
-			}
-			$lh = $1;
-		} else {
-			ferr($., $info, "Unknown line: $line\n");
-		}
-	}
-
-	# FN:<line>,<fnname>
-	foreach my $lineno (sort({ $a <=> $b } keys(%fn))) {
-		my $fnname = $fn{$lineno};
-		print("FN:$lineno,$fnname\n");
-	}
-
-	# FNDA:<counts>,<fnname>
-	foreach my $fnname (keys(%fnda)) {
-		if (!exists($fns{$fnname})) {
-			ferr(undef, $info, "FNDA entry without FN: $fnname\n");
-		}
-	}
-	foreach my $fnname (sort({ $fns{$a} <=> $fns{$b} } keys(%fnda))) {
-		my $count = $fnda{$fnname};
-		print("FNDA:$count,$fnname\n");
-	}
-	# FNF:<counts>
-	print("FNF:$fnf\n") if (defined($fnf));
-	# FNH:<counts>
-	if (defined($fnh)) {
-		$fnh = 0 if ($multi == 0);
-		print("FNH:$fnh\n");
-	}
-	# BRDA:<line>,<block>,<branch>,<count>
-	foreach my $lineno (sort({ $a <=> $b } keys(%brda))) {
-		my $blocks = $brda{$lineno};
-
-		foreach my $block (sort({ $a <=> $b } keys(%{$blocks}))) {
-			my $branches = $blocks->{$block};
-
-			foreach my $branch (sort({ $a <=> $b }
-					    keys(%{$branches}))) {
-				my $count = $branches->{$branch};
-
-				$count = "-" if ($multi == 0);
-				print("BRDA:$lineno,$block,$branch,$count\n");
-			}
-		}
-
-	}
-	# BRF:<counts>
-	print("BRF:$brf\n") if (defined($brf));
-	# BRH:<counts>
-	if (defined($brh)) {
-		$brh = 0 if ($multi == 0);
-		print("BRH:$brh\n");
-	}
-	# DA:<line>,<counts>
-	foreach my $lineno (sort({ $a <=> $b } keys(%da))) {
-		my $count = $da{$lineno};
-
-		print("DA:$lineno,$count\n");
-	}
-	# LF:<counts>
-	print("LF:$lf\n") if (defined($lf));
-	# LH:<count>
-	if (defined($lh)) {
-		$lh = 0 if ($multi == 0);
-		print("LH:$lh\n");
-	}
-}
-
-sub main()
-{
-	my $infofile = $ARGV[0];
-	my $multi = $ARGV[1];
-	# info: testname -> files
-	# files: infofile -> data
-	# data: [ starting offset, starting line ]
-	my %info;
-	my $fd;
-	my $tn = "";
-	my %allfiles;
-
-	$multi = 1 if (!defined($multi));
-	if (!defined($infofile)) {
-		$infofile = "standard input";
-		warn("$0: Reading data from standard input\n");
-		open($fd, "<&STDIN") or
-			die("$0: Could not duplicated stdin: $!\n");
-	} else {
-		open($fd, "<", $infofile) or
-			die("$0: Could not open $infofile: $!\n");
-	}
-
-	# Register starting positions of data sets
-	while (my $line = <$fd>) {
-		if ($line =~ /^TN:(.*)$/) {
-			$tn = $1;
-		} elsif ($line =~ /^SF:(.*)$/) {
-			my $sf = $1;
-			my $pos = tell($fd);
-
-			die("$0: Could not get file position: $!\n")
-				if ($pos == -1);
-			if (exists($info{$tn}->{$sf})) {
-				ferr($., $infofile,
-				     "Duplicate entry for $tn:$sf\n");
-			}
-			$info{$tn}->{$sf} = [ $pos, $. ];
-			$allfiles{$sf} = 1;
-		}
-	}
-
-	# Print data sets in normalized order
-	foreach my $filename (sort(keys(%allfiles))) {
-		foreach my $testname (sort(keys(%info))) {
-			my $pos = $info{$testname}->{$filename};
-			my ($cpos, $lpos) = @$pos;
-
-			next if (!defined($pos));
-
-			if (seek($fd, $cpos, 0) != 1) {
-				die("$0: Could not seek in $infofile: $!\n");
-			}
-			printf("TN:$testname\n");
-			printf("SF:$filename\n");
-
-			$. = $lpos;
-			print_sorted($fd, $infofile, $multi);
-
-			printf("end_of_record\n");
-
-		}
-	}
-	foreach my $testname (sort(keys(%info))) {
-		my $files = $info{$testname};
-
-		foreach my $filename (sort(keys(%{$files}))) {
-		}
-	}
-
-	close($fd);
-}
-
-main();
-exit(0);
diff --git a/ThirdParty/lcov/test/bin/test_run b/ThirdParty/lcov/test/bin/test_run
deleted file mode 100755
index 23e69d0f4..000000000
--- a/ThirdParty/lcov/test/bin/test_run
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/env bash
-#
-# Copyright IBM Corp. 2017
-#
-# Usage: test_run <testname> <cmdline>
-#
-# Announce a test case, run it, and record the resulting output in the
-# test log file. Must be run after testsuite_init.
-#
-
-TOPDIR=$(realpath $(dirname $0)/..) && source "$TOPDIR/bin/common"
-EXCERPTLEN=10
-TESTNAME="$1"
-shift
-
-TIME=$(which time 2>/dev/null)
-if [ ! -z "$TIME" ] ; then
-	TIME="$TIME -v -o $TIMEFILE"
-	if ! $TIME true 2>/dev/null ; then
-		TIME=""
-	fi
-fi
-
-t_announce "$TESTNAME"
-
-let POS=$(stat -c %s "$LOGFILE")+1
-
-t_detail "COMMAND" "\"$*\"" >>"$LOGFILE"
-t_detail "OUTPUT" "" >>"$LOGFILE"
-
-# Run command
-$TIME bash -c "$*" 2>&1 | t_indent >>"$LOGFILE"
-RC=$?
-
-# Evaluate output of time command
-ELAPSED=
-RESIDENT=
-SIGNAL=
-if [ ! -z "$TIME" ] ; then
-	while read LINE ; do
-		case "$LINE" in
-		"Command terminated by signal"*) SIGNAL=${LINE##* } ;;
-		"Elapsed"*) ELAPSED=$(elapsed_to_ms ${LINE##* }) ;;
-		"Maximum resident"*) RESIDENT=${LINE##* } ;;
-		"Exit status"*) RC=${LINE##* } ;;
-		esac
-	done < "$TIMEFILE"
-	rm -f "$TIMEFILE"
-fi
-
-t_detail "EXITCODE" "$RC" >>"$LOGFILE"
-
-# Show result
-if [ $RC -eq 0 -a -z "$SIGNAL" ] ; then
-	RESULT="pass"
-	t_pass "$TESTNAME"
-else
-	if [ -z "$SIGNAL" ] ; then
-		RESULT="fail"
-		t_fail "$TESTNAME"
-	else
-		RESULT="kill"
-		t_kill "$TESTNAME"
-	fi
-fi
-
-if [ ! -z "$SIGNAL" ] ; then
-	t_detail "SIGNAL" "$SIGNAL" >>"$LOGFILE"
-fi
-
-if [ ! -z "$ELAPSED" ] ; then
-	echo -n " (time $(($ELAPSED/1000)).$(($ELAPSED%1000/100))s, "
-	echo "elapsed $TESTNAME $ELAPSED" >> "$COUNTFILE"
-fi
-
-if [ ! -z "$RESIDENT" ] ; then
-	echo -n "mem $(($RESIDENT/1024)).$((($RESIDENT%1024)/100))MB)"
-	echo "resident $TESTNAME $RESIDENT" >> "$COUNTFILE"
-fi
-
-echo
-
-# Show log excerpt on failure or if requested
-if [ $RC -ne 0 -o "$V" == "1" ] ; then
-	LEN=$(tail -c "+$POS" "$LOGFILE" | wc -l)
-	if [ "$LEN" -gt "$EXCERPTLEN" -a "$V" != "1" ] ; then
-		tail -c "+$POS" "$LOGFILE" | head -n $EXCERPTLEN | t_indent
-		let LEN=$LEN-$EXCERPTLEN
-		echo "    ..."
-		echo "    Skipping $LEN more lines (see $LOGFILE)"
-	else
-		tail -c "+$POS" "$LOGFILE" | t_indent
-	fi
-fi
-
-# Log more details
-[ ! -z "$ELAPSED" ] && t_detail "TIME" "${ELAPSED}ms" >>"$LOGFILE"
-[ ! -z "$RESIDENT" ] && t_detail "MEM" "${RESIDENT}kB" >>"$LOGFILE"
-t_detail "RESULT" "$RESULT" >> "$LOGFILE"
diff --git a/ThirdParty/lcov/test/bin/test_skip b/ThirdParty/lcov/test/bin/test_skip
deleted file mode 100755
index 202606f4f..000000000
--- a/ThirdParty/lcov/test/bin/test_skip
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env bash
-#
-# Copyright IBM Corp. 2017
-#
-# Usage: test_skip <testname> <reason>
-#
-# Announce and record that a single test case was skipped, including an
-# optional reason text. Must be run after testsuite_init.
-#
-
-TOPDIR=$(realpath $(dirname $0)/..) && source "$TOPDIR/bin/common"
-TESTNAME="$1"
-REASON="${*:2}" ; [ -z "$REASON" ] && REASON="<no reason given>"
-
-t_announce "$TESTNAME"
-t_skip "$TESTNAME"
-echo
-t_detail "REASON" "$REASON" >>"$LOGFILE"
-t_detail "REASON" "$REASON" | t_indent
diff --git a/ThirdParty/lcov/test/bin/testsuite_exit b/ThirdParty/lcov/test/bin/testsuite_exit
deleted file mode 100755
index 6720df99f..000000000
--- a/ThirdParty/lcov/test/bin/testsuite_exit
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env bash
-#
-# Copyright IBM Corp. 2017
-#
-# Usage: testsuite_exit
-#
-# Announce end of test suite and show aggregate results.
-#
-
-TOPDIR=$(realpath $(dirname $0)/..) && source "$TOPDIR/bin/common"
-
-echo "end_time $(date +%s.%N)" >>"$COUNTFILE"
-
-SUCCESS=0
-FAILED=0
-SKIPPED=0
-TOTAL_TIME=0
-TOTAL_MEM=0
-HAVE_EXT=0
-
-# Get results
-while read LINE ; do
-	set -- $LINE
-	case "$1" in
-	start_time)	START_TIME=$2 ;;
-	end_time)	END_TIME=$2 ;;
-	pass)		let SUCCESS=$SUCCESS+1 ;;
-	fail)		let FAILED=$FAILED+1 ;;
-	skip)		let SKIPPED=$SKIPPED+1 ;;
-	elapsed)	let TOTAL_TIME=$TOTAL_TIME+$3 ; HAVE_EXT=1 ;;
-	resident)	let TOTAL_MEM=$TOTAL_MEM+$3 ; HAVE_EXT=1 ;;
-	esac
-done < "$COUNTFILE"
-
-exec 3>&1
-exec >>"$LOGFILE" 2>&1
-
-t_marker
-t_detail "DATE" "$(t_timestamp)"
-
-let TOTAL=$SUCCESS+$SKIPPED+$FAILED
-t_detail "EXECUTED" "$TOTAL"
-t_detail "PASSED" "$SUCCESS"
-t_detail "FAILED" "$FAILED"
-t_detail "SKIPPED" "$SKIPPED"
-[ $HAVE_EXT -eq 1 ] && t_detail "TIME" "${TOTAL_TIME}ms"
-[ $HAVE_EXT -eq 1 ] && t_detail "MEM" "${TOTAL_MEM}kB"
-
-TOTAL_TIME=$(($TOTAL_TIME/1000)).$(($TOTAL_TIME%1000/100))
-TOTAL_MEM=$(($TOTAL_MEM/1024)).$((($TOTAL_MEM%1024)/100))
-TOTAL="$BOLD$TOTAL tests executed$RESET"
-PASS="$SUCCESS passed"
-FAIL="$FAILED failed"
-SKIP="$SKIPPED skipped"
-TIME="time ${TOTAL_TIME}s"
-MEM="mem ${TOTAL_MEM}MB"
-
-[ "$SUCCESS" -gt 0 ] && PASS="$GREEN$PASS$DEFAULT"
-[ "$FAILED"  -gt 0 ] && FAIL="$RED$FAIL$DEFAULT"
-[ "$SKIPPED" -gt 0 ] && SKIP="$BLUE$SKIP$DEFAULT"
-
-echo -en "$TOTAL, $PASS, $FAIL, $SKIP$RESET" >&3
-[ $HAVE_EXT -eq 1 ] && echo -n " ($TIME, $MEM)" >&3
-echo >&3
-echo "Result log stored in $LOGFILE" >&3
-
-if [ "$FAILED" -gt 0 ] ; then
-	exit 1
-fi
-
-exit 0
diff --git a/ThirdParty/lcov/test/bin/testsuite_init b/ThirdParty/lcov/test/bin/testsuite_init
deleted file mode 100755
index f901e35f1..000000000
--- a/ThirdParty/lcov/test/bin/testsuite_init
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env bash
-#
-# Copyright IBM Corp. 2017
-#
-# Usage: testsuite_init
-#
-# Announce start of test suite and prepare log files.
-#
-
-TOPDIR=$(realpath $(dirname $0)/..) && source "$TOPDIR/bin/common"
-
-echo -e $BOLD"Starting tests"$RESET
-echo "start_time $(date +%s.%N)" >"$COUNTFILE"
-exec >"$LOGFILE" 2>&1
-
-t_detail "DATE" "$(t_timestamp)"
-
-t_detail "LCOV" ""
-lcov --version 2>&1 | t_indent
-
-t_detail "GCOV" ""
-gcov --version 2>&1 | t_indent
-
-t_detail "CPUINFO" ""
-t_indent < /proc/cpuinfo
-
-t_detail "MEMINFO" ""
-t_indent < /proc/meminfo
diff --git a/ThirdParty/lcov/test/common.mak b/ThirdParty/lcov/test/common.mak
deleted file mode 100644
index 55f31eb99..000000000
--- a/ThirdParty/lcov/test/common.mak
+++ /dev/null
@@ -1,50 +0,0 @@
-TOPDIR       := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
-TESTDIR      := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
-PARENTDIR    := $(dir $(patsubst %/,%,$(TOPDIR)))
-RELDIR       := $(TESTDIR:$(PARENTDIR)%=%)
-ZEROINFO     := $(TOPDIR)zero.info
-ZEROCOUNTS   := $(TOPDIR)zero.counts
-FULLINFO     := $(TOPDIR)full.info
-FULLCOUNTS   := $(TOPDIR)full.counts
-TARGETINFO   := $(TOPDIR)target.info
-TARGETCOUNTS := $(TOPDIR)target.counts
-PART1INFO    := $(TOPDIR)part1.info
-PART1COUNTS  := $(TOPDIR)part1.counts
-PART2INFO    := $(TOPDIR)part2.info
-PART2COUNTS  := $(TOPDIR)part2.counts
-INFOFILES    := $(ZEROINFO) $(FULLINFO) $(TARGETINFO) $(PART1INFO) $(PART2INFO)
-COUNTFILES   := $(ZEROCOUNTS) $(FULLCOUNTS) $(TARGETCOUNTS) $(PART1COUNTS) \
-		$(PART2COUNTS)
-LCOVRC       := $(TOPDIR)lcovrc
-LCOVFLAGS    := --config-file $(LCOVRC)
-SIZE         := small
-CC           := gcc
-
-export LCOV := lcov $(LCOVFLAGS)
-export GENHTML := genhtml $(LCOVFLAGS)
-export PATH := $(TOPDIR)/../bin:$(TOPDIR)/bin:$(PATH)
-export LANG := C
-
-all: prepare init test exit
-
-init:
-	testsuite_init
-
-exit:
-	testsuite_exit
-
-prepare: $(INFOFILES) $(COUNTFILES)
-
-clean: clean_common
-
-clean_common:
-	echo "  CLEAN   $(patsubst %/,%,$(RELDIR))"
-
-$(INFOFILES) $(COUNTFILES):
-	cd $(TOPDIR) && mkinfo profiles/$(SIZE) -o src/
-
-ifneq ($(V),2)
-.SILENT:
-endif
-
-.PHONY: all init exit prepare clean clean_common
diff --git a/ThirdParty/lcov/test/genhtml_output/Makefile b/ThirdParty/lcov/test/genhtml_output/Makefile
deleted file mode 100644
index 0fbd88267..000000000
--- a/ThirdParty/lcov/test/genhtml_output/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-include ../common.mak
-
-GENHTML_TEST := ./genhtml_test
-
-TESTS := genhtml_output_zero genhtml_output_full genhtml_output_target \
-	 genhtml_output_part1 genhtml_output_part2 genhtml_output_combined
-
-test: $(TESTS)
-
-genhtml_output_zero:
-	@test_run genhtml_output_zero $(GENHTML) $(ZEROINFO) -o out_zero/
-
-genhtml_output_full:
-	@test_run genhtml_output_full $(GENHTML) $(FULLINFO) -o out_full/
-
-genhtml_output_target:
-	@test_run genhtml_output_target $(GENHTML) $(TARGETINFO) -o out_target/
-
-genhtml_output_part1:
-	@test_run genhtml_output_part1 $(GENHTML) $(PART1INFO) -o out_part1/
-
-genhtml_output_part2:
-	@test_run genhtml_output_part2 $(GENHTML) $(PART2INFO) -o out_part2/
-
-genhtml_output_combined: genhtml_output_target
-	@test_run genhtml_output_combined $(GENHTML_TEST) $(TARGETINFO) $(PART1INFO) $(PART2INFO)
-
-clean:
-	rm -rf out_*/
-
-.PHONY: test $(TESTS) clean
diff --git a/ThirdParty/lcov/test/genhtml_output/genhtml_test b/ThirdParty/lcov/test/genhtml_output/genhtml_test
deleted file mode 100755
index 0b0f83491..000000000
--- a/ThirdParty/lcov/test/genhtml_output/genhtml_test
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env bash
-#
-# Copyright IBM Corp. 2017
-#
-# Usage: genhtml_test <ref-file> <file1> [<file2>...]
-#
-# Compare genhtml output of a reference coverage data file with that of
-# a combination of multiple files.
-#
-
-function die()
-{
-	echo "Error: $@" >&2
-	exit 1
-}
-
-GENHTMLFLAGS="-t title"
-REFFILE=$1
-shift
-
-if [ -z "$REFFILE" -o -z "$*" ] ; then
-	echo "Usage: $0 <ref-file> <file1> [<file2>...]" >&2
-	exit 2
-fi
-
-OUTREF="out_$(basename $REFFILE .info)"
-OUTCOMBINED="out_combined"
-
-$GENHTML $GENHTMLFLAGS "$REFFILE" -o "$OUTREF" || \
-	die "Could not generate HTML for reference file"
-
-$GENHTML $GENHTMLFLAGS "$@" -o "$OUTCOMBINED" || \
-	die "Could not generate HTML for combined files"
-
-diff -ur "$OUTREF" "$OUTCOMBINED" -I "headerValue" || \
-	die "Mismatch in generated output"
diff --git a/ThirdParty/lcov/test/lcov_add_files/Makefile b/ThirdParty/lcov/test/lcov_add_files/Makefile
deleted file mode 100644
index 87937a155..000000000
--- a/ThirdParty/lcov/test/lcov_add_files/Makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-include ../common.mak
-
-ADDTEST := ./add_test
-
-TESTS := lcov_add_zero lcov_add_zero2 lcov_add_full lcov_add_full2 \
-	 lcov_add_part lcov_add_part2 lcov_add_concatenated4
-
-
-test: $(TESTS)
-
-lcov_add_zero:
-	# Add single zero coverage file - output should be same as input
-	test_run lcov_add_zero $(ADDTEST) 1 "$(ZEROINFO)" "$(ZEROINFO)"
-
-lcov_add_zero2:
-	# Add two zero coverage files - output should be same as input
-	test_run lcov_add_zero2 $(ADDTEST) 1 "$(ZEROINFO)" "$(ZEROINFO)" "$(ZEROINFO)"
-
-lcov_add_full:
-	# Add single 100% coverage file - output should be same as input
-	test_run lcov_add_full $(ADDTEST) 1 "$(FULLINFO)" "$(FULLINFO)"
-
-lcov_add_full2:
-	# Add two 100% coverage file and reduce counts to 1/2 - output should
-	# be same as input
-	test_run lcov_add_full2 $(ADDTEST) 0.5 "$(FULLINFO)" "$(FULLINFO)" "$(FULLINFO)"
-
-lcov_add_part:
-	# Add single coverage file with random coverage rate - output should
-	# be same as input
-	test_run lcov_add_part $(ADDTEST) 1 "$(PART1INFO)" "$(PART1INFO)"
-
-lcov_add_part2:
-	# Add two coverage files that were split from target file - output
-	# should be same as target file
-	test_run lcov_add_part2 $(ADDTEST) 1 "$(TARGETINFO)" "$(PART1INFO)" "$(PART2INFO)"
-
-lcov_add_concatenated4:
-	# Add coverage file that consists of 4 concatenation of target files 
-	# and reduce counts to 1/4 - output should be the same as input
-	cat $(TARGETINFO) $(TARGETINFO) $(TARGETINFO) $(TARGETINFO) >concatenated.info
-	test_run lcov_add_concatenated4 $(ADDTEST) 0.25 $(TARGETINFO) concatenated.info
-
-clean:
-	rm -f *.info
-
-.PHONY: test $(TESTS) clean
diff --git a/ThirdParty/lcov/test/lcov_add_files/add_test b/ThirdParty/lcov/test/lcov_add_files/add_test
deleted file mode 100755
index 4ff5ffeb6..000000000
--- a/ThirdParty/lcov/test/lcov_add_files/add_test
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env bash
-#
-# Copyright IBM Corp. 2017
-#
-# Usage: add_test <multiplier> <reference_file> <add_file> [<add_file>...]
-#
-# Add multiple coverage data files, normalize the output and multiply counts
-# with multiplier. Compare against reference file. Report deviations.
-#
-
-MULTI=$1
-REFFILE=$2
-shift 2
-
-ADD=
-for INFO in $* ; do
-	ADD="$ADD -a $INFO"
-done
-
-if [ -z "$MULTI" -o -z "$REFFILE" -o -z "$ADD" ] ; then
-	echo "Usage: $0 <multiplier> <reference_file> <add_file> [<add_file>...]" >&2
-	exit 1
-fi
-
-OUTFILE="add_"$(basename "$REFFILE")
-SORTFILE="norm_$OUTFILE"
-
-set -x
-
-echo "Adding files..."
-if ! $LCOV $ADD -o "$OUTFILE" ; then
-	echo "Error: lcov returned with non-zero exit code $?" >&2
-	exit 1
-fi
-
-echo "Normalizing result..."
-if ! norminfo "$OUTFILE" "$MULTI" > "$SORTFILE" ; then
-	echo "Error: Normalization of lcov result file failed" >&2
-	exit 1
-fi
-
-echo "Comparing with reference..."
-if ! diff -u "$REFFILE" "$SORTFILE" ; then
-	echo "Error: Result of combination differs from reference file" >&2
-	exit 1
-fi
diff --git a/ThirdParty/lcov/test/lcov_diff/Makefile b/ThirdParty/lcov/test/lcov_diff/Makefile
deleted file mode 100644
index d2d4dd662..000000000
--- a/ThirdParty/lcov/test/lcov_diff/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-include ../common.mak
-
-test:
-	test_run lcov_diff_apply ./diff_test
-
-clean:
-	make -C old clean
-	make -C new clean
-	rm -f *.info diff
diff --git a/ThirdParty/lcov/test/lcov_diff/diff_test b/ThirdParty/lcov/test/lcov_diff/diff_test
deleted file mode 100755
index e0f8c0b30..000000000
--- a/ThirdParty/lcov/test/lcov_diff/diff_test
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env bash
-#
-# Copyright IBM Corp. 2017
-#
-# Usage: diff_test
-#
-# Check lcov's diff function:
-# - Compile two slightly different test programs
-# - Run the programs and collect coverage data
-# - Generate a patch containing the difference between the source code
-# - Apply the patch to the coverage data
-# - Compare the resulting patched coverage data file with the data from the
-#   patched source file
-#
-
-function die()
-{
-	echo "Error: $@" >&2
-	exit 1
-}
-
-make -C old || die "Failed to compile old source"
-make -C new || die "Failed to compile new source"
-diff -u $PWD/old/prog.c $PWD/new/prog.c > diff
-
-$LCOV --diff old/prog.info diff --convert-filenames -o patched.info -t bla || \
-	die "Failed to apply patch to coverage data file"
-norminfo new/prog.info > new_normalized.info
-norminfo patched.info > patched_normalized.info
-sed -i -e 's/^TN:.*$/TN:/' patched_normalized.info
-
-diff -u patched_normalized.info new_normalized.info || \
-	die "Mismatch in patched coverage data file"
-
-echo "Patched coverage data file matches expected file"
diff --git a/ThirdParty/lcov/test/lcov_diff/new/Makefile b/ThirdParty/lcov/test/lcov_diff/new/Makefile
deleted file mode 100644
index 51005c71d..000000000
--- a/ThirdParty/lcov/test/lcov_diff/new/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-prog.info:
-
-include ../../common.mak
-
-prog.info: prog.gcda
-	$(LCOV) -c -d . -o prog.info
-
-prog.gcda: prog
-	./prog || true
-
-prog: prog.c
-	$(CC) prog.c -o prog --coverage
-
-clean:
-	rm -f prog prog.gcda prog.gcno prog.info
-
-.PHONY: all clean
diff --git a/ThirdParty/lcov/test/lcov_diff/new/prog.c b/ThirdParty/lcov/test/lcov_diff/new/prog.c
deleted file mode 100644
index 6f4607cc4..000000000
--- a/ThirdParty/lcov/test/lcov_diff/new/prog.c
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-int fn(int x)
-{
-	switch (x) {
-	case -1: return 0;
-
-
-	case 0:  return 2;
-	case 2:  return 3;
-
-
-	case 12: return 7;
-	default: return 255;
-	}
-
-
-
-}
-
-int fn2()
-{
-
-
-	return 7;
-}
-
-
-
-int main(int argc, char *argv[])
-{
-
-
-	if (argc > 1)
-		return fn(argc);
-
-	return fn2();
-
-
-}
diff --git a/ThirdParty/lcov/test/lcov_diff/old/Makefile b/ThirdParty/lcov/test/lcov_diff/old/Makefile
deleted file mode 100644
index 51005c71d..000000000
--- a/ThirdParty/lcov/test/lcov_diff/old/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-prog.info:
-
-include ../../common.mak
-
-prog.info: prog.gcda
-	$(LCOV) -c -d . -o prog.info
-
-prog.gcda: prog
-	./prog || true
-
-prog: prog.c
-	$(CC) prog.c -o prog --coverage
-
-clean:
-	rm -f prog prog.gcda prog.gcno prog.info
-
-.PHONY: all clean
diff --git a/ThirdParty/lcov/test/lcov_diff/old/prog.c b/ThirdParty/lcov/test/lcov_diff/old/prog.c
deleted file mode 100644
index a4eda2555..000000000
--- a/ThirdParty/lcov/test/lcov_diff/old/prog.c
+++ /dev/null
@@ -1,22 +0,0 @@
-int fn(int x)
-{
-	switch (x) {
-	case -1: return 0;
-	case 0:  return 2;
-	case 2:  return 3;
-	case 12: return 7;
-	default: return 255;
-	}
-}
-
-int fn2()
-{
-	return 7;
-}
-
-int main(int argc, char *argv[])
-{
-	if (argc > 1)
-		return fn(argc);
-	return fn2();
-}
diff --git a/ThirdParty/lcov/test/lcov_misc/Makefile b/ThirdParty/lcov/test/lcov_misc/Makefile
deleted file mode 100644
index d3bcc4ab2..000000000
--- a/ThirdParty/lcov/test/lcov_misc/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-include ../common.mak
-
-test:
-	@test_run lcov_version lcov --version
-	@test_run lcov_help lcov --help
diff --git a/ThirdParty/lcov/test/lcov_summary/Makefile b/ThirdParty/lcov/test/lcov_summary/Makefile
deleted file mode 100644
index f48d0bc76..000000000
--- a/ThirdParty/lcov/test/lcov_summary/Makefile
+++ /dev/null
@@ -1,41 +0,0 @@
-include ../common.mak
-
-CHECK := ./check_counts
-TESTS := lcov_summary_zero lcov_summary_full lcov_summary_target \
-	 lcov_summary_part1 lcov_summary_part2 lcov_summary_concatenated \
-	 lcov_summary_concatenated2
-
-test: $(TESTS)
-
-lcov_summary_zero:
-	# Compare output of lcov --summary with generated counts
-	test_run lcov_summary_zero $(CHECK) $(ZEROCOUNTS) $(ZEROINFO)
-lcov_summary_full:
-	# Compare output of lcov --summary with generated counts
-	test_run lcov_summary_full $(CHECK) $(FULLCOUNTS) $(FULLINFO)
-lcov_summary_target:
-	# Compare output of lcov --summary with generated counts
-	test_run lcov_summary_target $(CHECK) $(TARGETCOUNTS) $(TARGETINFO)
-lcov_summary_part1:
-	# Compare output of lcov --summary with generated counts
-	test_run lcov_summary_part1 $(CHECK) $(PART1COUNTS) $(PART1INFO)
-lcov_summary_part2:
-	# Compare output of lcov --summary with generated counts
-	test_run lcov_summary_part2 $(CHECK) $(PART2COUNTS) $(PART2INFO)
-lcov_summary_concatenated:
-	# Compare output of lcov --summary with generated counts for a
-	# concatenated coverage data file
-	cat $(TARGETINFO) $(TARGETINFO) > concatenated.info
-	test_run lcov_summary_concatenated $(CHECK) $(TARGETCOUNTS) concatenated.info
-lcov_summary_concatenated2:
-	# Compare output of lcov --summary with generated counts for a
-	# concatenated coverage data file (part1+part2=target)
-	cat $(PART1INFO) $(PART2INFO) > concatenated2.info
-	test_run lcov_summary_concatenated2 $(CHECK) $(TARGETCOUNTS) concatenated2.info
-
-
-
-clean:
-	rm -f *.info
-
-.PHONY: test $(TESTS) clean
diff --git a/ThirdParty/lcov/test/lcov_summary/check_counts b/ThirdParty/lcov/test/lcov_summary/check_counts
deleted file mode 100755
index 32d454230..000000000
--- a/ThirdParty/lcov/test/lcov_summary/check_counts
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/env perl
-#
-# Copyright IBM Corp. 2017
-#
-# Usage: check_counts <counts_file> <coverage_data_file>
-#
-# Compare the output of "lcov --summary" for <coverage_data_file> with the
-# coverage data counts specified in <counts_file>. This file has the following
-# format (all in a single line):
-#
-#   lnhit lnfound fnhit fnfound brhit brfound2
-#
-
-use strict;
-use warnings;
-
-sub do_cmp($$$)
-{
-	my ($title, $a, $b) = @_;
-
-	if ($a == $b) {
-		print("$title: $a == $b\n");
-		return 0;
-	} else {
-		print("$title: $a != $b => mismatch!\n");
-		return 1;
-	}
-}
-
-my $lcov = $ENV{"LCOV"};
-my ($counts, $info) = @ARGV;
-my $fd;
-my $cmdline;
-my ($lnhit, $lnfound, $fnhit, $fnfound, $brhit, $brfound) = (0, 0, 0, 0, 0, 0);
-my ($lnhit2, $lnfound2, $fnhit2, $fnfound2, $brhit2, $brfound2);
-my $rc = 0;
-
-die("$0: LCOV environment variable not defined\n") if (!defined($lcov));
-if (!defined($counts) || !defined($info)) {
-	die("Usage: $0 <counts_file> <coverage_data_file>\n");
-}
-
-$cmdline = "$lcov --summary $info";
-open($fd, "-|", $cmdline) or die("$0: Could not run $cmdline: $!\n");
-while (<$fd>) {
-	($lnhit, $lnfound) = ($1, $2) if (/(\d+) of (\d+) lines/);
-	($fnhit, $fnfound) = ($1, $2) if (/(\d+) of (\d+) functions/);
-	($brhit, $brfound) = ($1, $2) if (/(\d+) of (\d+) branches/);
-}
-close($fd);
-
-die("$0: Non-zero result code ($?) of command: $cmdline\n") if ($? != 0);
-
-open($fd, "<", $counts) or die("$0: Could not open $counts: $!\n");
-if (<$fd> !~ /^(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/) {
-	die("$0: Invalid count file: $counts\n");
-}
-($lnhit2, $lnfound2, $fnhit2, $fnfound2, $brhit2, $brfound2) =
-	($1, $2, $3, $4, $5, $6);
-close($fd);
-
-print("Comparing --summary output for $info and $counts:\n");
-$rc |= do_cmp("line hit", $lnhit, $lnhit2);
-$rc |= do_cmp("line found", $lnfound, $lnfound2);
-$rc |= do_cmp("functions hit", $fnhit, $fnhit2);
-$rc |= do_cmp("functions found", $fnfound, $fnfound2);
-$rc |= do_cmp("branches hit", $brhit, $brhit2);
-$rc |= do_cmp("branches found", $brfound, $brfound2);
-
-exit($rc);
diff --git a/ThirdParty/lcov/test/lcovrc b/ThirdParty/lcov/test/lcovrc
deleted file mode 100644
index 5005f637d..000000000
--- a/ThirdParty/lcov/test/lcovrc
+++ /dev/null
@@ -1,4 +0,0 @@
-# lcovrc file used during tests
-
-lcov_function_coverage = 1
-lcov_branch_coverage = 1
diff --git a/ThirdParty/lcov/test/profiles/large b/ThirdParty/lcov/test/profiles/large
deleted file mode 100644
index 31788b040..000000000
--- a/ThirdParty/lcov/test/profiles/large
+++ /dev/null
@@ -1,51 +0,0 @@
-# Profile of a large source code project. Use with mkinfo to generate fake test
-# source code and coverage data.
-
-[tests]
-# List of test names
-names	= test1 test2
-
-[files]
-# Create this many files
-numfiles = 500
-# Generate paths from these components (top/sub/subsub/prefix_suffix.ext)
-top	= lib tools test bin img scripts
-sub	= build debug release include target sys config
-subsub	= work www utils gui info log basic
-prefix	= main misc report tune mem list 
-suffix	= a b c top work proto final fast
-ext	= .c .h
-
-[lines]
-# Generate line coverage data
-enabled	= 1
-# Line coverage rate
-covered	= 80
-# Percentage of lines covered
-instrumented = 80
-# Maximum number of lines per file
-maxlines = 2000
-
-[functions]
-# Generate function coverage data
-enabled	= 1
-# Function coverage rate
-covered	= 60
-# Percent of instrumented lines containing function definitions
-perinstrumented = 10
-# Generate function names from these components (verb_adj_noun)
-verb	= get set find read write stat add sub combine
-adj	= first last best min max avg
-noun	= bit byte file str num obj data
-
-[branches]
-# Generate branch coverage data
-enabled	= 1
-# Branch coverage rate
-covered = 20
-# Percent of instrumented lines containing branches
-perinstrumented = 5
-# List of blocks to use
-blocks	= 0 4294967295
-# Distribution of number of branches per block (num:probability)
-branchdist = 2:50 3:25 5:20 100:5
diff --git a/ThirdParty/lcov/test/profiles/medium b/ThirdParty/lcov/test/profiles/medium
deleted file mode 100644
index 56598e868..000000000
--- a/ThirdParty/lcov/test/profiles/medium
+++ /dev/null
@@ -1,51 +0,0 @@
-# Profile of a medium-sized source code project. Use with mkinfo to generate
-# fake test source code and coverage data.
-
-[tests]
-# List of test names
-names	= test1 test2 test3
-
-[files]
-# Create this many files
-numfiles = 50
-# Generate paths from these components (top/sub/subsub/prefix_suffix.ext)
-top	= lib tools test bin img scripts
-sub	= build debug release include target sys config
-subsub	= work www utils gui info log basic
-prefix	= main misc report tune mem list 
-suffix	= a b c top work proto final fast
-ext	= .c .h
-
-[lines]
-# Generate line coverage data
-enabled	= 1
-# Line coverage rate
-covered	= 80
-# Percentage of lines covered
-instrumented = 50
-# Maximum number of lines per file
-maxlines = 1000
-
-[functions]
-# Generate function coverage data
-enabled	= 1
-# Function coverage rate
-covered	= 60
-# Percent of instrumented lines containing function definitions
-perinstrumented = 5
-# Generate function names from these components (verb_adj_noun)
-verb	= get set find read write stat add sub combine
-adj	= first last best min max avg
-noun	= bit byte file str num obj data
-
-[branches]
-# Generate branch coverage data
-enabled	= 1
-# Branch coverage rate
-covered = 20
-# Percent of instrumented lines containing branches
-perinstrumented = 50
-# List of blocks to use
-blocks	= 0 4294967295
-# Distribution of number of branches per block (num:probability)
-branchdist = 2:50 3:50
diff --git a/ThirdParty/lcov/test/profiles/small b/ThirdParty/lcov/test/profiles/small
deleted file mode 100644
index 388d2a3bb..000000000
--- a/ThirdParty/lcov/test/profiles/small
+++ /dev/null
@@ -1,51 +0,0 @@
-# Profile of a small source code project. Use with mkinfo to generate fake test
-# source code and coverage data.
-
-[tests]
-# List of test names
-names	= test1 test2
-
-[files]
-# Create this many files
-numfiles = 5
-# Generate paths from these components (top/sub/subsub/prefix_suffix.ext)
-top	= lib tools test bin img scripts
-sub	= build debug release include target sys config
-subsub	= work www utils gui info log basic
-prefix	= main misc report tune mem list 
-suffix	= a b c top work proto final fast
-ext	= .c .h
-
-[lines]
-# Generate line coverage data
-enabled	= 1
-# Line coverage rate
-covered	= 80
-# Percentage of lines covered
-instrumented = 50
-# Maximum number of lines per file
-maxlines = 500
-
-[functions]
-# Generate function coverage data
-enabled	= 1
-# Function coverage rate
-covered	= 60
-# Percent of instrumented lines containing function definitions
-perinstrumented = 5
-# Generate function names from these components (verb_adj_noun)
-verb	= get set find read write stat add sub combine
-adj	= first last best min max avg
-noun	= bit byte file str num obj data
-
-[branches]
-# Generate branch coverage data
-enabled	= 1
-# Branch coverage rate
-covered = 20
-# Percent of instrumented lines containing branches
-perinstrumented = 50
-# List of blocks to use
-blocks	= 0 4294967295
-# Distribution of number of branches per block (num:probability)
-branchdist = 2:50 3:45 50:5
diff --git a/Tools/CMakeLists.txt b/Tools/CMakeLists.txt
deleted file mode 100644
index 109b6d44a..000000000
--- a/Tools/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-set (TOOLS_FILES plot_tracks.sh plot_crossings.sh read_hist.py)
-
-install (
-  FILES ${TOOLS_FILES} 
-  DESTINATION share/tools
-  )
diff --git a/CMakeModules/CodeCoverage b/cmake/CodeCoverage
similarity index 100%
rename from CMakeModules/CodeCoverage
rename to cmake/CodeCoverage
diff --git a/CMakeModules/CodeCoverage.cmake b/cmake/CodeCoverage.cmake
similarity index 100%
rename from CMakeModules/CodeCoverage.cmake
rename to cmake/CodeCoverage.cmake
diff --git a/CMakeModules/CorsikaUtilities.cmake b/cmake/CorsikaUtilities.cmake
similarity index 100%
rename from CMakeModules/CorsikaUtilities.cmake
rename to cmake/CorsikaUtilities.cmake
diff --git a/cmake/FindCORSIKA.cmake b/cmake/FindCORSIKA.cmake
new file mode 100644
index 000000000..5a18d9772
--- /dev/null
+++ b/cmake/FindCORSIKA.cmake
@@ -0,0 +1,6 @@
+
+add_library(CORSIKA INTERFACE)
+
+target_compile_coptions(CORSIKA
+  INTERFACE
+  ${CMAKE_CURRENT_SOURCE_DIR})
diff --git a/cmake/FindCORSIKA8.cmake b/cmake/FindCORSIKA8.cmake
new file mode 100644
index 000000000..39f936323
--- /dev/null
+++ b/cmake/FindCORSIKA8.cmake
@@ -0,0 +1,9 @@
+add_library (CORSIKA8 INTERFACE)
+
+target_include_directories (CORSIKA8
+  INTERFACE
+  ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+
+target_link_libraries (CORSIKA8 INTERFACE PhysUnits)
+
+set (CORSIKA8_FOUND TRUE)
diff --git a/cmake/FindCatch2.cmake b/cmake/FindCatch2.cmake
new file mode 100644
index 000000000..19bd43876
--- /dev/null
+++ b/cmake/FindCatch2.cmake
@@ -0,0 +1,8 @@
+add_library (Catch2 INTERFACE)
+
+target_compile_options (Catch2
+  INTERFACE
+  -I${CMAKE_SOURCE_DIR}/externals/catch2
+  )
+
+set (Catch2_FOUND True)
diff --git a/cmake/FindCorsika8.cmake b/cmake/FindCorsika8.cmake
new file mode 100644
index 000000000..1a8549ce0
--- /dev/null
+++ b/cmake/FindCorsika8.cmake
@@ -0,0 +1,63 @@
+#
+# FindCorsika8
+#
+# This module tries to find the Corsika8 header files and extrats their version.  It
+# sets the following variables.
+#
+# CORSIKA8_FOUND       -  Set ON if Corsika8 headers are found, otherwise OFF.
+#
+# CORSIKA8_INCLUDE_DIR -  Include directory for hydra header files.  (All header
+#                       files will actually be in the Corsika8 subdirectory.)
+# CORSIKA8_VERSION     -  Version of hydra in the form "major.minor.patch".
+#
+
+find_path( CORSIKA8_INCLUDE_DIR
+  PATHS
+    ${CMAKE_SOURCE_DIR}
+    /usr/include
+    /usr/local/include
+    ${CORSIKA8_DIR}
+  NAMES corsika/corsika.h
+  DOC "Corsika8 headers"
+  )
+
+
+if( CORSIKA8_INCLUDE_DIR )
+  list( REMOVE_DUPLICATES CORSIKA8_INCLUDE_DIR )
+endif( CORSIKA8_INCLUDE_DIR )
+
+# Find hydra version
+if (CORSIKA8_INCLUDE_DIR)
+  file( STRINGS ${CORSIKA_INCLUDE_DIR}/corsika/corsika.h
+    version
+    REGEX "#define CORSIKA_VERSION[ \t]+([0-9x]+)"
+    )
+  string( REGEX REPLACE
+    "#define CORSIKA_VERSION[ \t]+"
+    ""
+    version
+    "${version}"
+    )
+
+  string( REGEX MATCH "^[0-9]" major ${version} )
+  string( REGEX REPLACE "^${major}00" "" version "${version}" )
+  string( REGEX MATCH "^[0-9]" minor ${version} )
+  string( REGEX REPLACE "^${minor}0" "" version "${version}" )
+  set( CORSIKA_VERSION "${major}.${minor}.${version}")
+  set( CORSIKA_MAJOR_VERSION "${major}")
+  set( CORSIKA_MINOR_VERSION "${minor}")
+endif()
+
+# Check for required components
+include( FindPackageHandleStandardArgs )
+find_package_handle_standard_args( Corsika8
+  FOUND_VAR CORSIKA8_FOUND
+  REQUIRED_VARS CORSIKA8_INCLUDE_DIR
+  VERSION_VAR CORSIKA8_VERSION
+  )
+
+if(CORSIKA8_FOUND)
+  set(CORSIKA8_INCLUDE_DIRS ${CORSIKA8_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(CORSIKA8_INCLUDE_DIR)
diff --git a/cmake/FindEigen3.cmake b/cmake/FindEigen3.cmake
new file mode 100644
index 000000000..0b36805e7
--- /dev/null
+++ b/cmake/FindEigen3.cmake
@@ -0,0 +1,107 @@
+# - Try to find Eigen3 lib
+#
+# This module supports requiring a minimum version, e.g. you can do
+#   find_package(Eigen3 3.1.2)
+# to require version 3.1.2 or newer of Eigen3.
+#
+# Once done this will define
+#
+#  EIGEN3_FOUND - system has eigen lib with correct version
+#  EIGEN3_INCLUDE_DIR - the eigen include directory
+#  EIGEN3_VERSION - eigen version
+#
+# and the following imported target:
+#
+#  Eigen3::Eigen - The header-only Eigen library
+#
+# This module reads hints about search locations from 
+# the following environment variables:
+#
+# EIGEN3_ROOT
+# EIGEN3_ROOT_DIR
+
+# Copyright (c) 2006, 2007 Montel Laurent, <montel@kde.org>
+# Copyright (c) 2008, 2009 Gael Guennebaud, <g.gael@free.fr>
+# Copyright (c) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+# Redistribution and use is allowed according to the terms of the 2-clause BSD license.
+
+if(NOT Eigen3_FIND_VERSION)
+  if(NOT Eigen3_FIND_VERSION_MAJOR)
+    set(Eigen3_FIND_VERSION_MAJOR 2)
+  endif()
+  if(NOT Eigen3_FIND_VERSION_MINOR)
+    set(Eigen3_FIND_VERSION_MINOR 91)
+  endif()
+  if(NOT Eigen3_FIND_VERSION_PATCH)
+    set(Eigen3_FIND_VERSION_PATCH 0)
+  endif()
+
+  set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}")
+endif()
+
+macro(_eigen3_check_version)
+  file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
+
+  string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}")
+  set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}")
+  string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}")
+  set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}")
+  string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}")
+  set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}")
+
+  set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION})
+  if(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
+    set(EIGEN3_VERSION_OK FALSE)
+  else()
+    set(EIGEN3_VERSION_OK TRUE)
+  endif()
+
+  if(NOT EIGEN3_VERSION_OK)
+
+    message(STATUS "Eigen3 version ${EIGEN3_VERSION} found in ${EIGEN3_INCLUDE_DIR}, "
+                   "but at least version ${Eigen3_FIND_VERSION} is required")
+  endif()
+endmacro()
+
+if (EIGEN3_INCLUDE_DIR)
+
+  # in cache already
+  _eigen3_check_version()
+  set(EIGEN3_FOUND ${EIGEN3_VERSION_OK})
+  set(Eigen3_FOUND ${EIGEN3_VERSION_OK})
+
+else ()
+  
+  # search first if an Eigen3Config.cmake is available in the system,
+  # if successful this would set EIGEN3_INCLUDE_DIR and the rest of
+  # the script will work as usual
+  find_package(Eigen3 ${Eigen3_FIND_VERSION} NO_MODULE QUIET)
+
+  if(NOT EIGEN3_INCLUDE_DIR)
+    find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library
+        HINTS
+        ENV EIGEN3_ROOT 
+        ENV EIGEN3_ROOT_DIR
+        PATHS
+        ${CMAKE_INSTALL_PREFIX}/include
+        ${KDE4_INCLUDE_DIR}
+        PATH_SUFFIXES eigen3 eigen
+      )
+  endif()
+
+  if(EIGEN3_INCLUDE_DIR)
+    _eigen3_check_version()
+  endif()
+
+  include(FindPackageHandleStandardArgs)
+  find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK)
+
+  mark_as_advanced(EIGEN3_INCLUDE_DIR)
+
+endif()
+
+if(EIGEN3_FOUND AND NOT TARGET Eigen3::Eigen)
+  add_library(Eigen3::Eigen INTERFACE IMPORTED)
+  set_target_properties(Eigen3::Eigen PROPERTIES
+    INTERFACE_INCLUDE_DIRECTORIES "${EIGEN3_INCLUDE_DIR}")
+endif()
diff --git a/cmake/FindPhysUnits.cmake b/cmake/FindPhysUnits.cmake
new file mode 100644
index 000000000..321ec043e
--- /dev/null
+++ b/cmake/FindPhysUnits.cmake
@@ -0,0 +1,8 @@
+add_library (PhysUnits INTERFACE)
+
+target_compile_options (PhysUnits
+  INTERFACE
+  -I${CMAKE_SOURCE_DIR}/externals/phys_units
+  )
+
+set (PhysUnits_FOUND True)
diff --git a/CMakeModules/FindPythia8.cmake b/cmake/FindPythia8.cmake
similarity index 100%
rename from CMakeModules/FindPythia8.cmake
rename to cmake/FindPythia8.cmake
diff --git a/corsika/corsika.hpp b/corsika/corsika.hpp
new file mode 100644
index 000000000..e69de29bb
diff --git a/corsika/detail/framework/core/Cascade.inl b/corsika/detail/framework/core/Cascade.inl
new file mode 100644
index 000000000..1f784caa6
--- /dev/null
+++ b/corsika/detail/framework/core/Cascade.inl
@@ -0,0 +1,262 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/random/ExponentialDistribution.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/random/UniformRealDistribution.hpp>
+#include <corsika/framework/stack/SecondaryView.hpp>
+#include <cassert>
+#include <cmath>
+#include <iostream>
+#include <limits>
+#include <type_traits>
+
+#include <boost/type_index.hpp>
+
+#include <corsika/media/Environment.hpp>
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
+#include <corsika/framework/sequence/ProcessReturn.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+using boost::typeindex::type_id_with_cvr;
+
+/**
+ * The cascade namespace assembles all objects needed to simulate full particles cascades.
+ */
+
+namespace corsika {
+
+
+    template <typename TTracking, typename TProcessList, typename TStack, typename TStackView>
+    void Cascade<TTracking, TProcessList, TStack, TStackView >::Init()
+    {
+      fProcessSequence.Init();
+      fStack.Init();
+    }
+
+
+    template <typename TTracking, typename TProcessList, typename TStack, typename TStackView>
+    void Cascade<TTracking, TProcessList, TStack, TStackView >::SetNodes() {
+      std::for_each(fStack.begin(), fStack.end(), [&](auto& p) {
+        auto const* numericalNode =
+            fEnvironment.GetUniverse()->GetContainingNode(p.GetPosition());
+        p.SetNode(numericalNode);
+      });
+    }
+
+    template <typename TTracking, typename TProcessList, typename TStack, typename TStackView>
+    void Cascade<TTracking, TProcessList, TStack, TStackView >::Run()
+    {
+      SetNodes();
+
+      while (!fStack.IsEmpty()) {
+        while (!fStack.IsEmpty()) {
+          auto pNext = fStack.GetNextParticle();
+          std::cout << "========= next: " << pNext.GetPID() << std::endl;
+          Step(pNext);
+          std::cout << "========= stack ============" << std::endl;
+          fProcessSequence.DoStack(fStack);
+        }
+        // do cascade equations, which can put new particles on Stack,
+        // thus, the double loop
+        // DoCascadeEquations();
+      }
+    }
+
+    template <typename TTracking, typename TProcessList, typename TStack, typename TStackView>
+    void Cascade<TTracking, TProcessList, TStack, TStackView >::forceInteraction()
+    {
+      std::cout << "forced interaction!" << std::endl;
+      auto vParticle = fStack.GetNextParticle();
+      TStackView secondaries(vParticle);
+      auto projectile = secondaries.GetProjectile();
+      interaction(vParticle, projectile);
+      fProcessSequence.DoSecondaries(secondaries);
+      vParticle.Delete(); // todo: this should be reviewed, see below
+    }
+
+    template <typename TTracking, typename TProcessList, typename TStack, typename TStackView>
+    void Cascade<TTracking, TProcessList, TStack, TStackView >::Step(Particle& vParticle)
+    {
+      using namespace corsika;
+      using namespace corsika::units::si;
+
+      // determine geometric tracking
+      auto [step, geomMaxLength, nextVol] = fTracking.GetTrack(vParticle);
+      [[maybe_unused]] auto const& dummy_nextVol = nextVol;
+
+      // determine combined total interaction length (inverse)
+      InverseGrammageType const total_inv_lambda =
+          fProcessSequence.GetTotalInverseInteractionLength(vParticle);
+
+      // sample random exponential step length in grammage
+      corsika::ExponentialDistribution expDist(1 / total_inv_lambda);
+      GrammageType const next_interact = expDist(fRNG);
+
+      std::cout << "total_inv_lambda=" << total_inv_lambda
+                << ", next_interact=" << next_interact << std::endl;
+
+      auto const* currentLogicalNode = vParticle.GetNode();
+
+      // assert that particle stays outside void Universe if it has no
+      // model properties set
+      assert(currentLogicalNode != &*fEnvironment.GetUniverse() ||
+             fEnvironment.GetUniverse()->HasModelProperties());
+
+      // convert next_step from grammage to length
+      LengthType const distance_interact =
+          currentLogicalNode->GetModelProperties().ArclengthFromGrammage(step,
+                                                                         next_interact);
+
+      // determine the maximum geometric step length
+      LengthType const distance_max = fProcessSequence.MaxStepLength(vParticle, step);
+      std::cout << "distance_max=" << distance_max << std::endl;
+
+      // determine combined total inverse decay time
+      InverseTimeType const total_inv_lifetime =
+          fProcessSequence.GetTotalInverseLifetime(vParticle);
+
+      // sample random exponential decay time
+      corsika::ExponentialDistribution expDistDecay(1 / total_inv_lifetime);
+      TimeType const next_decay = expDistDecay(fRNG);
+      std::cout << "total_inv_lifetime=" << total_inv_lifetime
+                << ", next_decay=" << next_decay << std::endl;
+
+      // convert next_decay from time to length [m]
+      LengthType const distance_decay = next_decay * vParticle.GetMomentum().norm() /
+                                        vParticle.GetEnergy() * units::constants::c;
+
+      // take minimum of geometry, interaction, decay for next step
+      auto const min_distance =
+          std::min({distance_interact, distance_decay, distance_max, geomMaxLength});
+
+      std::cout << " move particle by : " << min_distance << std::endl;
+
+      // here the particle is actually moved along the trajectory to new position:
+      // std::visit(setup::ParticleUpdate<particle_type>{vParticle}, step);
+      vParticle.SetPosition(step.PositionFromArclength(min_distance));
+      // .... also update time, momentum, direction, ...
+      vParticle.SetTime(vParticle.GetTime() + min_distance / units::constants::c);
+
+      step.LimitEndTo(min_distance);
+
+      // apply all continuous processes on particle + track
+      process::EProcessReturn status = fProcessSequence.DoContinuous(vParticle, step);
+
+      if (status == process::EProcessReturn::eParticleAbsorbed) {
+        std::cout << "Cascade: delete absorbed particle " << vParticle.GetPID() << " "
+                  << vParticle.GetEnergy() / 1_GeV << "GeV" << std::endl;
+        vParticle.Delete();
+        return;
+      }
+
+      std::cout << "sth. happening before geometric limit ? "
+                << ((min_distance < geomMaxLength) ? "yes" : "no") << std::endl;
+
+      if (min_distance < geomMaxLength) { // interaction to happen within geometric limit
+
+        // check whether decay or interaction limits this step the
+        // outcome of decay or interaction MAY be a) new particles in
+        // secondaries, b) the projectile particle deleted (or
+        // changed)
+
+        TStackView secondaries(vParticle);
+
+        if (min_distance != distance_max) {
+          /*
+            Create SecondaryView object on Stack. The data container
+            remains untouched and identical, and 'projectil' is identical
+            to 'vParticle' above this line. However,
+            projectil.AddSecondaries populate the SecondaryView, which can
+            then be used afterwards for further processing. Thus: it is
+            important to use projectle (and not vParticle) for Interaction,
+            and Decay!
+          */
+
+          [[maybe_unused]] auto projectile = secondaries.GetProjectile();
+
+          if (min_distance == distance_interact) {
+            interaction(vParticle, projectile);
+          } else {
+            assert(min_distance == distance_decay);
+            decay(vParticle, projectile);
+            // make sure particle actually did decay if it should have done so
+            if (secondaries.GetSize() == 1 &&
+                projectile.GetPID() == secondaries.GetNextParticle().GetPID())
+              throw std::runtime_error("Cascade::Step: particle_type decays into itself!");
+          }
+
+          fProcessSequence.DoSecondaries(secondaries);
+          vParticle.Delete(); // todo: this should be reviewed. Where
+                              // exactly are particles best deleted, and
+                              // where they should NOT be
+                              // deleted... maybe Delete function should
+                              // be "protected" and not accessible to physics
+
+        } else { // step-length limitation within volume
+
+          std::cout << "step-length limitation" << std::endl;
+          fProcessSequence.DoSecondaries(secondaries);
+        }
+
+        [[maybe_unused]] auto const assertion = [&] {
+          auto const* numericalNodeAfterStep =
+              fEnvironment.GetUniverse()->GetContainingNode(vParticle.GetPosition());
+          return numericalNodeAfterStep == currentLogicalNode;
+        };
+
+        assert(assertion()); // numerical and logical nodes don't match
+      } else {               // boundary crossing, step is limited by volume boundary
+        std::cout << "boundary crossing! next node = " << nextVol << std::endl;
+        vParticle.SetNode(nextVol);
+        // DoBoundary may delete the particle (or not)
+        fProcessSequence.DoBoundaryCrossing(vParticle, *currentLogicalNode, *nextVol);
+      }
+    }
+
+    template <typename TTracking, typename TProcessList, typename TStack, typename TStackView>
+    auto Cascade<TTracking, TProcessList, TStack, TStackView >::decay(Particle& particle,
+               decltype(std::declval<TStackView>().GetProjectile()) projectile)
+    {
+      std::cout << "decay" << std::endl;
+      units::si::InverseTimeType const actual_decay_time =
+          fProcessSequence.GetTotalInverseLifetime(particle);
+
+      random::UniformRealDistribution<units::si::InverseTimeType> uniDist(
+          actual_decay_time);
+      const auto sample_process = uniDist(fRNG);
+      units::si::InverseTimeType inv_decay_count = units::si::InverseTimeType::zero();
+      return fProcessSequence.SelectDecay(particle, projectile, sample_process,
+                                          inv_decay_count);
+    }
+
+    template <typename TTracking, typename TProcessList, typename TStack, typename TStackView>
+    auto Cascade<TTracking, TProcessList, TStack, TStackView >::interaction(particle_type& particle,
+                     decltype(std::declval<TStackView>().GetProjectile()) projectile)
+    {
+      std::cout << "collide" << std::endl;
+
+      units::si::InverseGrammageType const current_inv_length =
+          fProcessSequence.GetTotalInverseInteractionLength(particle);
+
+      random::UniformRealDistribution<units::si::InverseGrammageType> uniDist(
+          current_inv_length);
+      const auto sample_process = uniDist(fRNG);
+      auto inv_lambda_count = units::si::InverseGrammageType::zero();
+      return fProcessSequence.SelectInteraction(particle, projectile, sample_process,
+                                                inv_lambda_count);
+    }
+
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/geometry/BaseVector.inl b/corsika/detail/framework/geometry/BaseVector.inl
new file mode 100644
index 000000000..b1b7361ce
--- /dev/null
+++ b/corsika/detail/framework/geometry/BaseVector.inl
@@ -0,0 +1,26 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/CoordinateSystem.hpp>
+#include <corsika/framework/geometry/QuantityVector.hpp>
+
+namespace corsika {
+
+	template <typename dim>
+	auto const& BaseVector<dim>::GetCoordinateSystem() const
+	{
+		return *cs;
+	}
+
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/geometry/CoordinateSystem.inl b/corsika/detail/framework/geometry/CoordinateSystem.inl
new file mode 100644
index 000000000..732f44e09
--- /dev/null
+++ b/corsika/detail/framework/geometry/CoordinateSystem.inl
@@ -0,0 +1,152 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/QuantityVector.hpp>
+#include <Eigen/Dense>
+#include <stdexcept>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/utility/sgn.hpp>
+
+
+namespace corsika {
+
+
+    CoordinateSystem& CoordinateSystem::operator=(const corsika::CoordinateSystem& pCS)
+    {
+      reference = pCS.reference;
+      transf = pCS.transf;
+      return *this;
+    }
+
+    inline CoordinateSystem CoordinateSystem::translate(QuantityVector<length_d> vector) const
+    {
+      EigenTransform const translation{EigenTranslation(vector.eVector)};
+
+      return CoordinateSystem(*this, translation);
+    }
+
+    template <typename TDim>
+    auto CoordinateSystem::RotateToZ(Vector<TDim> vVec) const
+    {
+      auto const a = vVec.normalized().GetComponents(*this).eVector;
+      auto const a1 = a(0), a2 = a(1);
+
+      auto const s = corsika::sgn(a(2));
+      auto const c = 1 / (1 + s * a(2));
+
+      Eigen::Matrix3d A, B;
+
+      if (s > 0) {
+        A << 1, 0, -a1,                     // comment to prevent clang-format
+            0, 1, -a2,                      // .
+            a1, a2, 1;                      // .
+        B << -a1 * a1 * c, -a1 * a2 * c, 0, // .
+            -a1 * a2 * c, -a2 * a2 * c, 0,  // .
+            0, 0, -(a1 * a1 + a2 * a2) * c; // .
+
+      } else {
+        A << 1, 0, a1,                      // .
+            0, -1, -a2,                     // .
+            a1, a2, -1;                     // .
+        B << -a1 * a1 * c, -a1 * a2 * c, 0, // .
+            +a1 * a2 * c, +a2 * a2 * c, 0,  // .
+            0, 0, (a1 * a1 + a2 * a2) * c;  // .
+      }
+
+      return CoordinateSystem(*this, EigenTransform(A + B));
+    }
+
+    template <typename TDim>
+    auto CoordinateSystem::rotate(QuantityVector<TDim> axis, double angle) const
+    {
+      if (axis.eVector.isZero()) {
+        throw std::runtime_error("null-vector given as axis parameter");
+      }
+
+      EigenTransform const rotation{Eigen::AngleAxisd(angle, axis.eVector.normalized())};
+
+      return CoordinateSystem(*this, rotation);
+    }
+
+    template <typename TDim>
+    auto CoordinateSystem::translateAndRotate(QuantityVector<phys::units::length_d> translation, QuantityVector<TDim> axis, double angle)
+    {
+      if (axis.eVector.isZero()) {
+        throw std::runtime_error("null-vector given as axis parameter");
+      }
+
+      EigenTransform const transf{Eigen::AngleAxisd(angle, axis.eVector.normalized()) *
+                                  EigenTranslation(translation.eVector)};
+
+      return CoordinateSystem(*this, transf);
+    }
+
+    CoordinateSystem const* CoordinateSystem::GetReference() const
+    {
+    	return reference;
+    }
+
+    const EigenTransform& CoordinateSystem::GetTransform() const
+    {
+    	return transf;
+    }
+
+    /**
+     * returns the transformation matrix necessary to transform primitives with coordinates
+     * in \a pFrom to \a pTo, e.g.
+     * \f$ \vec{v}^{\text{(to)}} = \mathcal{M} \vec{v}^{\text{(from)}} \f$
+     * (\f$ \vec{v}^{(.)} \f$ denotes the coordinates/components of the component in
+     * the indicated CoordinateSystem).
+     */
+    inline EigenTransform getTransformation(CoordinateSystem const& pFrom,
+                                                                                          CoordinateSystem const& pTo) {
+      CoordinateSystem const* a{&pFrom};
+      CoordinateSystem const* b{&pTo};
+      CoordinateSystem const* commonBase{nullptr};
+
+      while (a != b && b != nullptr) {
+        a = &pFrom;
+
+        while (a != b && a != nullptr) { a = a->GetReference(); }
+
+        if (a == b) break;
+
+        b = b->GetReference();
+      }
+
+      if (a == b && a != nullptr) {
+        commonBase = a;
+
+      } else {
+        throw std::runtime_error("no connection between coordinate systems found!");
+      }
+
+      EigenTransform t = EigenTransform::Identity();
+      auto* p = &pFrom;
+
+      while (p != commonBase) {
+        t = p->GetTransform() * t;
+        p = p->GetReference();
+      }
+
+      p = &pTo;
+
+      while (p != commonBase) {
+        t = t * p->GetTransform().inverse(Eigen::TransformTraits::Isometry);
+        p = p->GetReference();
+      }
+
+      return t;
+    }
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/geometry/FourVector.inl b/corsika/detail/framework/geometry/FourVector.inl
new file mode 100644
index 000000000..4d629b659
--- /dev/null
+++ b/corsika/detail/framework/geometry/FourVector.inl
@@ -0,0 +1,189 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <iostream>
+#include <type_traits>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+
+
+
+namespace corsika {
+
+
+	template <typename TimeType, typename SpaceVecType>
+    TimeType FourVector<TimeType, SpaceVecType>::GetTimeLikeComponent() const
+    {
+    	return fTimeLike;
+    }
+
+	template <typename TimeType, typename SpaceVecType>
+    SpaceVecType& FourVector<TimeType, SpaceVecType>::GetSpaceLikeComponents()
+	{
+		return fSpaceLike;
+	}
+
+
+	template <typename TimeType, typename SpaceVecType>
+    const SpaceVecType& FourVector<TimeType, SpaceVecType>::GetSpaceLikeComponents() const
+	{
+		return fSpaceLike;
+	}
+
+	template <typename TimeType, typename SpaceVecType>
+    auto FourVector<TimeType, SpaceVecType>::GetNormSqr() const
+	{
+		return GetTimeSquared() - fSpaceLike.squaredNorm();
+	}
+
+	template <typename TimeType, typename SpaceVecType>
+	typename FourVector<TimeType, SpaceVecType>::SpaceType
+	FourVector<TimeType, SpaceVecType>::GetNorm() const
+	{
+
+		return sqrt(abs(GetNormSqr()));
+	}
+
+	template <typename TimeType, typename SpaceVecType>
+    bool FourVector<TimeType, SpaceVecType>::IsTimelike() const
+	{
+      return GetTimeSquared() < fSpaceLike.squaredNorm();
+    }
+
+	template <typename TimeType, typename SpaceVecType>
+    bool FourVector<TimeType, SpaceVecType>::IsSpacelike() const {
+      return GetTimeSquared() > fSpaceLike.squaredNorm();
+    }
+
+	template <typename TimeType, typename SpaceVecType>
+    FourVector<TimeType, SpaceVecType>&
+	FourVector<TimeType, SpaceVecType>::operator+=(const FourVector& b)
+	{
+      fTimeLike += b.fTimeLike;
+      fSpaceLike += b.fSpaceLike;
+
+      return *this;
+    }
+
+	template <typename TimeType, typename SpaceVecType>
+    FourVector<TimeType, SpaceVecType>&
+	FourVector<TimeType, SpaceVecType>::operator-=(const FourVector& b)
+	{
+      fTimeLike -= b.fTimeLike;
+      fSpaceLike -= b.fSpaceLike;
+      return *this;
+    }
+
+	template <typename TimeType, typename SpaceVecType>
+    FourVector<TimeType, SpaceVecType>&
+	FourVector<TimeType, SpaceVecType>::operator*=(const double b)
+	{
+      fTimeLike *= b;
+      fSpaceLike *= b;
+      return *this;
+    }
+
+	template <typename TimeType, typename SpaceVecType>
+    FourVector<TimeType, SpaceVecType>&
+	FourVector<TimeType, SpaceVecType>::operator/=(const double b)
+	{
+      fTimeLike /= b;
+      fSpaceLike.GetComponents() /= b; // TODO: WHY IS THIS??????
+      return *this;
+    }
+
+	template <typename TimeType, typename SpaceVecType>
+    FourVector<TimeType, SpaceVecType>&
+	FourVector<TimeType, SpaceVecType>::operator/(const double b)
+	{
+      *this /= b;
+      return *this;
+    }
+
+	template <typename TimeType, typename SpaceVecType>
+	typename FourVector<TimeType, SpaceVecType>::SpaceType
+	FourVector<TimeType, SpaceVecType>::operator*(const FourVector& b)
+	{
+      if constexpr (std::is_same<typename std::decay<TimeType>::type,
+                                 decltype(std::declval<SpaceType>() /
+                                          corsika::units::si::meter *
+                                          corsika::units::si::second)>::value)
+        return fTimeLike * b.fTimeLike *
+                   (corsika::units::constants::c * corsika::units::constants::c) -
+               fSpaceLike.norm();
+      else
+        return fTimeLike * fTimeLike - fSpaceLike.norm();
+    }
+
+	template <typename TimeType, typename SpaceVecType>
+    auto FourVector<TimeType, SpaceVecType>::GetTimeSquared() const
+	{
+      if constexpr (std::is_same<typename std::decay<TimeType>::type,
+                                 decltype(std::declval<SpaceType>() /
+                                          corsika::units::si::meter *
+                                          corsika::units::si::second)>::value)
+        return fTimeLike * fTimeLike *
+               (corsika::units::constants::c * corsika::units::constants::c);
+      else
+        return fTimeLike * fTimeLike;
+    }
+
+  /**
+      The math operator+
+   */
+  template <typename TimeType, typename SpaceVecType>
+  inline FourVector<typename std::decay<TimeType>::type, typename std::decay<SpaceVecType>::type>
+  operator+(const FourVector<TimeType, SpaceVecType>& a, const FourVector<TimeType, SpaceVecType>& b)
+  {
+    return FourVector<typename std::decay<TimeType>::type,
+    		          typename std::decay<SpaceVecType>::type>(a.fTimeLike + b.fTimeLike, a.fSpaceLike + b.fSpaceLike);
+  }
+
+  /**
+     The math operator-
+  */
+  template <typename TimeType, typename SpaceVecType>
+  inline FourVector<typename std::decay<TimeType>::type,
+                    typename std::decay<SpaceVecType>::type>
+  operator-(const FourVector<TimeType, SpaceVecType>& a, const FourVector<TimeType, SpaceVecType>& b)
+  {
+    return FourVector<typename std::decay<TimeType>::type,
+                      typename std::decay<SpaceVecType>::type>(
+        a.fTimeLike - b.fTimeLike, a.fSpaceLike - b.fSpaceLike);
+  }
+
+  /**
+     The math operator*
+  */
+  template <typename TimeType, typename SpaceVecType>
+  inline FourVector<typename std::decay<TimeType>::type,
+                    typename std::decay<SpaceVecType>::type>
+  operator*(const FourVector<TimeType, SpaceVecType>& a, const double b)
+  {
+    return FourVector<typename std::decay<TimeType>::type,
+                      typename std::decay<SpaceVecType>::type>(a.fTimeLike * b,
+                                                               a.fSpaceLike * b);
+  }
+
+  /**
+      The math operator/
+   */
+  template <typename TimeType, typename SpaceVecType>
+  inline FourVector<typename std::decay<TimeType>::type,
+                    typename std::decay<SpaceVecType>::type>
+  operator/(const FourVector<TimeType, SpaceVecType>& a, const double b) {
+    return FourVector<typename std::decay<TimeType>::type,
+                      typename std::decay<SpaceVecType>::type>(a.fTimeLike / b,
+                                                               a.fSpaceLike / b);
+  }
+
+} // namespace corsika
diff --git a/corsika/detail/framework/geometry/Helix.inl b/corsika/detail/framework/geometry/Helix.inl
new file mode 100644
index 000000000..103aac982
--- /dev/null
+++ b/corsika/detail/framework/geometry/Helix.inl
@@ -0,0 +1,51 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/Point.hpp>
+#include <cmath>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+
+namespace corsika {
+
+
+    Point Helix::GetPosition(corsika::units::si::TimeType t) const
+    {
+      return r0 + vPar * t +
+             (vPerp * (cos(omegaC * t) - 1) + uPerp * sin(omegaC * t)) / omegaC;
+    }
+
+    Point Helix::PositionFromArclength(corsika::units::si::LengthType l) const
+    {
+      return GetPosition(TimeFromArclength(l));
+    }
+
+    units::si::LengthType Helix::GetRadius() const
+    {
+    	return radius;
+    }
+
+    corsika::units::si::LengthType
+    Helix::ArcLength(corsika::units::si::TimeType t1, corsika::units::si::TimeType t2) const
+    {
+      return (vPar + vPerp).norm() * (t2 - t1);
+    }
+
+    corsika::units::si::TimeType
+	Helix::TimeFromArclength(corsika::units::si::LengthType l) const
+    {
+      return l / (vPar + vPerp).norm();
+    }
+
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/geometry/Line.inl b/corsika/detail/framework/geometry/Line.inl
new file mode 100644
index 000000000..5446bad4e
--- /dev/null
+++ b/corsika/detail/framework/geometry/Line.inl
@@ -0,0 +1,54 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+
+namespace corsika {
+
+
+    Point Line::GetPosition(units::si::TimeType t) const
+    {
+    	return r0 + v0 * t;
+    }
+
+    Point Line::PositionFromArclength(units::si::LengthType l) const
+    {
+      return r0 + v0.normalized() * l;
+    }
+
+    units::si::LengthType
+	Line::ArcLength(units::si::TimeType t1, units::si::TimeType t2) const
+    {
+      return v0.norm() * (t2 - t1);
+    }
+
+    units::si::TimeType
+	Line::TimeFromArclength( units::si::LengthType t) const
+    {
+      return t / v0.norm();
+    }
+
+    const Point& Line::GetR0() const
+    {
+    	return r0;
+    }
+
+    const Line::VelocityVec& Line::GetV0() const
+    {
+    	return v0;
+    }
+
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/geometry/Plane.inl b/corsika/detail/framework/geometry/Plane.inl
new file mode 100644
index 000000000..f2170b48e
--- /dev/null
+++ b/corsika/detail/framework/geometry/Plane.inl
@@ -0,0 +1,42 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+
+namespace corsika {
+
+
+    bool Plane::IsAbove(Point const& vP) const
+    {
+      return fNormal.dot(vP - fCenter) > corsika::units::si::LengthType::zero();
+    }
+
+    units::si::LengthType Plane::DistanceTo(geometry::Point const& vP) const
+    {
+      return (fNormal * (vP - fCenter).dot(fNormal)).norm();
+    }
+
+    Point const& Plane::GetCenter() const
+    {
+    	return fCenter;
+    }
+
+    Plane::DimLessVec const& Plane::GetNormal() const
+    {
+    	return fNormal;
+    }
+
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/geometry/Point.inl b/corsika/detail/framework/geometry/Point.inl
new file mode 100644
index 000000000..b2c01105b
--- /dev/null
+++ b/corsika/detail/framework/geometry/Point.inl
@@ -0,0 +1,82 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/BaseVector.hpp>
+#include <corsika/framework/geometry/QuantityVector.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+
+namespace corsika {
+
+
+    // TODO: this should be private or protected, we don NOT want to expose numbers
+    // without reference to outside:
+    auto Point::GetCoordinates() const
+    {
+    	return BaseVector<length_d>::qVector;
+    }
+
+    auto Point::GetX() const
+    {
+    	return BaseVector<length_d>::qVector.GetX();
+    }
+
+    auto Point::GetY() const
+    {
+    	return BaseVector<length_d>::qVector.GetY();
+    }
+
+    auto Point::GetZ() const
+    {
+    	return BaseVector<length_d>::qVector.GetZ();
+    }
+
+    /// this always returns a QuantityVector as triple
+    auto Point::GetCoordinates( CoordinateSystem const& pCS) const
+    {
+      if (&pCS == BaseVector<length_d>::cs) {
+        return BaseVector<length_d>::qVector;
+      } else {
+        return QuantityVector<length_d>(
+            getTransformation(*BaseVector<length_d>::cs, pCS) *
+            BaseVector<length_d>::qVector.eVector);
+      }
+    }
+
+    /*!
+     * transforms the Point into another CoordinateSystem by changing its
+     * coordinates interally
+     */
+    void Point::rebase(CoordinateSystem const& pCS)
+    {
+      BaseVector<length_d>::qVector = GetCoordinates(pCS);
+      BaseVector<length_d>::cs = &pCS;
+    }
+
+    Point Point::operator+(Vector<length_d> const& pVec) const
+    {
+      return Point(*BaseVector<length_d>::cs,
+                   GetCoordinates() + pVec.GetComponents(*BaseVector<length_d>::cs));
+    }
+
+    /*!
+     * returns the distance Vector between two points
+     */
+    Vector<length_d> Point::operator-( Point const& pB) const
+    {
+      auto& cs = *BaseVector<length_d>::cs;
+      return Vector<length_d>(cs, GetCoordinates() - pB.GetCoordinates(cs));
+    }
+
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/geometry/QuantityVector.inl b/corsika/detail/framework/geometry/QuantityVector.inl
new file mode 100644
index 000000000..9ac8513a9
--- /dev/null
+++ b/corsika/detail/framework/geometry/QuantityVector.inl
@@ -0,0 +1,152 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <Eigen/Dense>
+
+#include <iostream>
+#include <utility>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+namespace corsika {
+
+    template <typename dim>
+    inline auto QuantityVector<dim>::operator[](size_t index) const {
+      return Quantity(phys::units::detail::magnitude_tag, eVector[index]);
+    }
+
+    template <typename dim>
+    inline auto QuantityVector<dim>::GetX() const
+    {
+    	return (*this)[0];
+    }
+
+    template <typename dim>
+    inline auto QuantityVector<dim>::GetY() const
+    {
+    	return (*this)[1];
+    }
+
+    template <typename dim>
+    inline auto QuantityVector<dim>::GetZ() const
+    {
+    	return (*this)[2];
+    }
+
+    template <typename dim>
+    inline auto QuantityVector<dim>::norm() const
+    {
+      return Quantity(phys::units::detail::magnitude_tag, eVector.norm());
+    }
+
+    template <typename dim>
+    inline auto QuantityVector<dim>::squaredNorm() const
+    {
+      using QuantitySquared =
+          decltype(std::declval<Quantity>() * std::declval<Quantity>());
+      return QuantitySquared(phys::units::detail::magnitude_tag, eVector.squaredNorm());
+    }
+
+    template <typename dim>
+    inline auto  QuantityVector<dim>::operator+(QuantityVector<dim> const& pQVec) const
+    {
+      return QuantityVector<dim>(eVector + pQVec.eVector);
+    }
+
+    template <typename dim>
+    inline auto QuantityVector<dim>::operator-(QuantityVector<dim> const& pQVec) const
+    {
+      return QuantityVector<dim>(eVector - pQVec.eVector);
+    }
+
+    template <typename dim>
+    template <typename ScalarDim>
+    inline auto QuantityVector<dim>::operator*(phys::units::quantity<ScalarDim, double> const p) const
+    {
+      using ResQuantity = phys::units::detail::Product<ScalarDim, dim, double, double>;
+
+      if constexpr (std::is_same<ResQuantity, double>::value) // result dimensionless, not
+                                                              // a "Quantity" anymore
+      {
+        return QuantityVector<phys::units::dimensionless_d>(eVector * p.magnitude());
+      } else {
+        return QuantityVector<typename ResQuantity::dimension_type>(eVector *
+                                                                    p.magnitude());
+      }
+    }
+
+    template <typename dim>
+    template <typename ScalarDim>
+    inline auto QuantityVector<dim>::operator/(phys::units::quantity<ScalarDim, double> const p) const
+    {
+      return (*this) * (1 / p);
+    }
+
+    template <typename dim>
+    inline auto QuantityVector<dim>::operator*(double const p) const
+    {
+    	return QuantityVector<dim>(eVector * p);
+    }
+
+    template <typename dim>
+    inline auto QuantityVector<dim>::operator/(double const p) const
+    {
+    	return QuantityVector<dim>(eVector / p);
+    }
+
+    template <typename dim>
+    inline auto& QuantityVector<dim>::operator/=(double const p) {
+      eVector /= p;
+      return *this;
+    }
+
+    template <typename dim>
+    inline auto& QuantityVector<dim>::operator*=(double const p) {
+      eVector *= p;
+      return *this;
+    }
+
+    template <typename dim>
+    inline auto& QuantityVector<dim>::operator+=(QuantityVector<dim> const& pQVec) {
+      eVector += pQVec.eVector;
+      return *this;
+    }
+
+    template <typename dim>
+    inline auto& QuantityVector<dim>::operator-=(QuantityVector<dim> const& pQVec) {
+      eVector -= pQVec.eVector;
+      return *this;
+    }
+
+    template <typename dim>
+    inline auto& QuantityVector<dim>::operator-() const {
+    	return QuantityVector<dim>(-eVector);
+    }
+
+    template <typename dim>
+    inline auto QuantityVector<dim>::normalized() const { return QuantityVector<dim>(eVector.normalized()); }
+
+    template <typename dim>
+    inline auto QuantityVector<dim>::operator==(QuantityVector<dim> const& p) const { return eVector == p.eVector; }
+
+
+  template <typename dim>
+  inline auto& operator<<(std::ostream& os, corsika::QuantityVector<dim> qv) {
+    using Quantity = phys::units::quantity<dim, double>;
+
+    os << '(' << qv.eVector(0) << ' ' << qv.eVector(1) << ' ' << qv.eVector(2) << ") "
+       << phys::units::to_unit_symbol<dim, double>(
+              Quantity(phys::units::detail::magnitude_tag, 1));
+    return os;
+  }
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/geometry/Sphere.inl b/corsika/detail/framework/geometry/Sphere.inl
new file mode 100644
index 000000000..68e10467c
--- /dev/null
+++ b/corsika/detail/framework/geometry/Sphere.inl
@@ -0,0 +1,36 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Volume.hpp>
+
+namespace corsika {
+
+    //! returns true if the Point p is within the sphere
+    bool Sphere::Contains(Point const& p) const
+    {
+      return fRadius * fRadius > (fCenter - p).squaredNorm();
+    }
+
+    const Point& Sphere::GetCenter() const
+    {
+    	return fCenter;
+    }
+
+    units::si::LengthType Sphere::GetRadius() const
+    {
+    	return fRadius;
+    }
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/geometry/Trajectory.inl b/corsika/detail/framework/geometry/Trajectory.inl
new file mode 100644
index 000000000..8a34d758d
--- /dev/null
+++ b/corsika/detail/framework/geometry/Trajectory.inl
@@ -0,0 +1,61 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+namespace corsika {
+
+    template <typename T>
+    Point Trajectory<T>::GetPosition(double u) const
+    {
+    	return T::GetPosition(fTimeLength * u);
+    }
+
+    template <typename T>
+    corsika::units::si::TimeType Trajectory<T>::GetDuration() const
+    {
+    	return fTimeLength;
+    }
+
+    template <typename T>
+    corsika::units::si::LengthType Trajectory<T>::GetLength() const
+    {
+    	return GetDistance(fTimeLength);
+    }
+
+    template <typename T>
+    corsika::units::si::LengthType Trajectory<T>::GetDistance(corsika::units::si::TimeType t) const
+    {
+      assert(t <= fTimeLength);
+      assert(t >= 0 * corsika::units::si::second);
+      return T::ArcLength(0 * corsika::units::si::second, t);
+    }
+
+    template <typename T>
+    void Trajectory<T>::LimitEndTo(corsika::units::si::LengthType limit)
+    {
+      fTimeLength = T::TimeFromArclength(limit);
+    }
+
+    template <typename T>
+    auto Trajectory<T>::NormalizedDirection() const
+    {
+      static_assert(std::is_same_v<T, corsika::Line>);
+      return T::GetV0().normalized();
+    }
+
+
+} // namespace corsika
+
+
diff --git a/corsika/detail/framework/geometry/Vector.inl b/corsika/detail/framework/geometry/Vector.inl
new file mode 100644
index 000000000..419bce298
--- /dev/null
+++ b/corsika/detail/framework/geometry/Vector.inl
@@ -0,0 +1,195 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/BaseVector.hpp>
+#include <corsika/framework/geometry/QuantityVector.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+
+namespace corsika {
+
+
+    template <typename dim>
+    auto Vector<dim>::GetComponents() const
+    {
+    	return BaseVector<dim>::qVector;
+    }
+
+
+    template <typename dim>
+    auto Vector<dim>::GetComponents(CoordinateSystem const& pCS) const
+    {
+      if (&pCS == BaseVector<dim>::cs) {
+        return BaseVector<dim>::qVector;
+      } else {
+        return QuantityVector<dim>(
+            getTransformation(*BaseVector<dim>::cs, pCS).linear() *
+            BaseVector<dim>::qVector.eVector);
+      }
+    }
+
+    template <typename dim>
+    void Vector<dim>::rebase(CoordinateSystem const& pCS)
+    {
+      BaseVector<dim>::qVector = GetComponents(pCS);
+      BaseVector<dim>::cs = &pCS;
+    }
+
+    template <typename dim>
+    auto Vector<dim>::norm() const
+    {
+    	return BaseVector<dim>::qVector.norm();
+    }
+
+    template <typename dim>
+    auto Vector<dim>::GetNorm() const
+    {
+    	return BaseVector<dim>::qVector.norm();
+    }
+
+    template <typename dim>
+    auto Vector<dim>::squaredNorm() const
+    {
+    	return BaseVector<dim>::qVector.squaredNorm();
+    }
+
+    template <typename dim>
+    auto Vector<dim>::GetSquaredNorm() const
+    {
+    	return BaseVector<dim>::qVector.squaredNorm();
+    }
+
+    template <typename dim>
+    template <typename dim2>
+    auto Vector<dim>::parallelProjectionOnto(Vector<dim2> const& pVec,
+                                CoordinateSystem const& pCS) const
+    {
+      auto const ourCompVec = GetComponents(pCS);
+      auto const otherCompVec = pVec.GetComponents(pCS);
+      auto const& a = ourCompVec.eVector;
+      auto const& b = otherCompVec.eVector;
+
+      return Vector<dim>(pCS, QuantityVector<dim>(b * ((a.dot(b)) / b.squaredNorm())));
+    }
+
+    template <typename dim>
+    template <typename dim2>
+    auto Vector<dim>::parallelProjectionOnto(Vector<dim2> const& pVec) const
+    {
+      return parallelProjectionOnto<dim2>(pVec, *BaseVector<dim>::cs);
+    }
+
+    template <typename dim>
+    auto Vector<dim>::operator+(Vector<dim> const& pVec) const
+    {
+      auto const components =
+          GetComponents(*BaseVector<dim>::cs) + pVec.GetComponents(*BaseVector<dim>::cs);
+      return Vector<dim>(*BaseVector<dim>::cs, components);
+    }
+
+    template <typename dim>
+    auto Vector<dim>::operator-(Vector<dim> const& pVec) const
+    {
+      auto const components = GetComponents() - pVec.GetComponents(*BaseVector<dim>::cs);
+      return Vector<dim>(*BaseVector<dim>::cs, components);
+    }
+
+    template <typename dim>
+    auto&  Vector<dim>::operator*=(double const p)
+	{
+      BaseVector<dim>::qVector *= p;
+      return *this;
+    }
+
+    template <typename dim>
+    template <typename ScalarDim>
+    auto  Vector<dim>::operator*(phys::units::quantity<ScalarDim, double> const p) const
+    {
+      using ProdDim = phys::units::detail::product_d<dim, ScalarDim>;
+
+      return Vector<ProdDim>(*BaseVector<dim>::cs, BaseVector<dim>::qVector * p);
+    }
+
+    template <typename dim>
+    template <typename ScalarDim>
+    auto Vector<dim>::operator/(phys::units::quantity<ScalarDim, double> const p) const
+    {
+      return (*this) * (1 / p);
+    }
+
+    template <typename dim>
+    auto Vector<dim>::operator*(double const p) const
+    {
+      return Vector<dim>(*BaseVector<dim>::cs, BaseVector<dim>::qVector * p);
+    }
+
+    template <typename dim>
+    auto Vector<dim>::operator/(double const p) const
+    {
+      return Vector<dim>(*BaseVector<dim>::cs, BaseVector<dim>::qVector / p);
+    }
+
+    template <typename dim>
+    auto& Vector<dim>::operator+=(Vector<dim> const& pVec)
+	{
+      BaseVector<dim>::qVector += pVec.GetComponents(*BaseVector<dim>::cs);
+      return *this;
+    }
+
+    template <typename dim>
+    auto& Vector<dim>::operator-=(Vector<dim> const& pVec)
+	{
+      BaseVector<dim>::qVector -= pVec.GetComponents(*BaseVector<dim>::cs);
+      return *this;
+    }
+
+    template <typename dim>
+    auto& Vector<dim>::operator-() const
+    {
+      return Vector<dim>(*BaseVector<dim>::cs, -BaseVector<dim>::qVector);
+    }
+
+    template <typename dim>
+    auto Vector<dim>::normalized() const
+    {
+    	return (*this) * (1 / norm());
+    }
+
+    template <typename dim>
+    template <typename dim2>
+    auto Vector<dim>::cross(Vector<dim2> pV) const
+    {
+      auto const c1 = GetComponents().eVector;
+      auto const c2 = pV.GetComponents(*BaseVector<dim>::cs).eVector;
+      auto const bareResult = c1.cross(c2);
+
+      using ProdDim = phys::units::detail::product_d<dim, dim2>;
+      return Vector<ProdDim>(*BaseVector<dim>::cs, bareResult);
+    }
+
+    template <typename dim>
+    template <typename dim2>
+    auto Vector<dim>::dot(Vector<dim2> pV) const
+    {
+      auto const c1 = GetComponents().eVector;
+      auto const c2 = pV.GetComponents(*BaseVector<dim>::cs).eVector;
+      auto const bareResult = c1.dot(c2);
+
+      using ProdDim = phys::units::detail::product_d<dim, dim2>;
+
+      return phys::units::quantity<ProdDim, double>(phys::units::detail::magnitude_tag,
+                                                    bareResult);
+    }
+
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/random/RNGManager.inl b/corsika/detail/framework/random/RNGManager.inl
new file mode 100644
index 000000000..8bc88135b
--- /dev/null
+++ b/corsika/detail/framework/random/RNGManager.inl
@@ -0,0 +1,59 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+
+namespace corsika {
+
+	void RNGManager::RegisterRandomStream(std::string const& pStreamName)
+	{
+	  RNG rng;
+
+	  if (auto const& it = seeds.find(pStreamName); it != seeds.end()) {
+	    rng.seed(it->second);
+	  }
+
+	  rngs[pStreamName] = std::move(rng);
+	}
+
+	RNG& RNGManager::GetRandomStream
+	(
+	    std::string const& pStreamName) {
+	  return rngs.at(pStreamName);
+	}
+
+	std::stringstream RNGManager::dumpState() const
+	{
+	  std::stringstream buffer;
+	  for (auto const& [streamName, rng] : rngs) {
+	    buffer << '"' << streamName << "\" = \"" << rng << '"' << std::endl;
+	  }
+
+	  return buffer;
+	}
+
+	void RNGManager::SeedAll(uint64_t vSeed)
+	{
+	  for (auto& entry : rngs) { entry.second.seed(vSeed++); }
+	}
+
+	void RNGManager::SeedAll()
+	{
+	  std::random_device rd;
+
+	  for (auto& entry : rngs) {
+	    std::seed_seq sseq{rd(), rd(), rd(), rd(), rd(), rd()};
+	    entry.second.seed(sseq);
+	  }
+	}
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/sequence/ProcessSequence.inl b/corsika/detail/framework/sequence/ProcessSequence.inl
new file mode 100644
index 000000000..60295fd8b
--- /dev/null
+++ b/corsika/detail/framework/sequence/ProcessSequence.inl
@@ -0,0 +1,258 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/sequence/BaseProcess.hpp>
+#include <corsika/framework/sequence/BoundaryCrossingProcess.hpp>
+#include <corsika/framework/sequence/DecayProcess.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <corsika/framework/sequence/StackProcess.hpp>
+#include <cmath>
+#include <limits>
+#include <type_traits>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/sequence/ContinuousProcess.hpp>
+#include <corsika/framework/sequence/ProcessReturn.hpp>
+#include <corsika/framework/sequence/SecondariesProcess.hpp>
+
+namespace corsika {
+
+
+
+	template <typename T1, typename T2>
+	template <typename Particle, typename VTNType>
+	EProcessReturn ProcessSequence<T1, T2>::DoBoundaryCrossing(Particle& p, VTNType const& from,
+			VTNType const& to) {
+		EProcessReturn ret = EProcessReturn::eOk;
+
+		if constexpr (std::is_base_of<BoundaryCrossingProcess<T1type>, T1type>::value ||
+				t1ProcSeq) {
+			ret |= A.DoBoundaryCrossing(p, from, to);
+		}
+
+		if constexpr (std::is_base_of<BoundaryCrossingProcess<T2type>, T2type>::value ||
+				t2ProcSeq) {
+			ret |= B.DoBoundaryCrossing(p, from, to);
+		}
+
+		return ret;
+	}
+
+	template <typename T1, typename T2>
+	template <typename TParticle, typename TTrack>
+	EProcessReturn ProcessSequence<T1, T2>::DoContinuous(TParticle& vP, TTrack& vT) {
+		EProcessReturn ret = EProcessReturn::eOk;
+		if constexpr (std::is_base_of<ContinuousProcess<T1type>, T1type>::value || t1ProcSeq) {
+
+			ret |= A.DoContinuous(vP, vT);
+		}
+		if constexpr (std::is_base_of<ContinuousProcess<T2type>, T2type>::value || t2ProcSeq) {
+			ret |= B.DoContinuous(vP, vT);
+		}
+		return ret;
+	}
+
+	template <typename T1, typename T2>
+	template <typename TSecondaries>
+	EProcessReturn ProcessSequence<T1, T2>::DoSecondaries(TSecondaries& vS) {
+		EProcessReturn ret = EProcessReturn::eOk;
+		if constexpr (std::is_base_of<SecondariesProcess<T1type>, T1type>::value || t1ProcSeq) {
+			ret |= A.DoSecondaries(vS);
+		}
+		if constexpr (std::is_base_of<SecondariesProcess<T2type>, T2type>::value || t2ProcSeq) {
+			ret |= B.DoSecondaries(vS);
+		}
+		return ret;
+	}
+
+	template <typename T1, typename T2>
+	bool ProcessSequence<T1, T2>::CheckStep() {
+		bool ret = false;
+		if constexpr (std::is_base_of<StackProcess<T1type>, T1type>::value || t1ProcSeq) {
+			ret |= A.CheckStep();
+		}
+		if constexpr (std::is_base_of<StackProcess<T2type>, T2type>::value || t2ProcSeq) {
+			ret |= B.CheckStep();
+		}
+		return ret;
+	}
+
+	template <typename T1, typename T2>
+	template <typename TStack>
+	EProcessReturn ProcessSequence<T1, T2>::DoStack(TStack& vS) {
+		EProcessReturn ret = EProcessReturn::eOk;
+		if constexpr (std::is_base_of<StackProcess<T1type>, T1type>::value || t1ProcSeq) {
+			if (A.CheckStep()) { ret |= A.DoStack(vS); }
+		}
+		if constexpr (std::is_base_of<StackProcess<T2type>, T2type>::value || t2ProcSeq) {
+			if (B.CheckStep()) { ret |= B.DoStack(vS); }
+		}
+		return ret;
+	}
+
+	template <typename T1, typename T2>
+	template <typename TParticle, typename TTrack>
+	corsika::units::si::LengthType ProcessSequence<T1, T2>::MaxStepLength(TParticle& vP, TTrack& vTrack) {
+		corsika::units::si::LengthType
+		max_length = // if no other process in the sequence implements it
+		std::numeric_limits<double>::infinity() * corsika::units::si::meter;
+
+		if constexpr (std::is_base_of<ContinuousProcess<T1type>, T1type>::value || t1ProcSeq) {
+			corsika::units::si::LengthType const len = A.MaxStepLength(vP, vTrack);
+			max_length = std::min(max_length, len);
+		}
+		if constexpr (std::is_base_of<ContinuousProcess<T2type>, T2type>::value || t2ProcSeq) {
+			corsika::units::si::LengthType const len = B.MaxStepLength(vP, vTrack);
+			max_length = std::min(max_length, len);
+		}
+		return max_length;
+	}
+
+	template <typename T1, typename T2>
+	template <typename TParticle>
+	corsika::units::si::GrammageType ProcessSequence<T1, T2>::GetTotalInteractionLength(TParticle& vP) {
+		return 1. / GetInverseInteractionLength(vP);
+	}
+
+	template <typename T1, typename T2>
+	template <typename TParticle>
+	corsika::units::si::InverseGrammageType ProcessSequence<T1, T2>::GetTotalInverseInteractionLength(
+			TParticle& vP) {
+		return GetInverseInteractionLength(vP);
+	}
+
+	template <typename T1, typename T2>
+	template <typename TParticle>
+	corsika::units::si::InverseGrammageType ProcessSequence<T1, T2>::GetInverseInteractionLength(TParticle& vP) {
+		corsika::units::si::InverseGrammageType tot = 0 * corsika::units::si::meter * corsika::units::si::meter / corsika::units::si::gram;
+
+		if constexpr (std::is_base_of<InteractionProcess<T1type>, T1type>::value || t1ProcSeq ||
+				t1SwitchProc) {
+			tot += A.GetInverseInteractionLength(vP);
+		}
+		if constexpr (std::is_base_of<InteractionProcess<T2type>, T2type>::value || t2ProcSeq ||
+				t2SwitchProc) {
+			tot += B.GetInverseInteractionLength(vP);
+		}
+		return tot;
+	}
+
+	template <typename T1, typename T2>
+	template <typename TParticle, typename TSecondaries>
+	EProcessReturn ProcessSequence<T1, T2>::SelectInteraction(
+			TParticle& vP, TSecondaries& vS,
+			[[maybe_unused]] corsika::units::si::InverseGrammageType lambda_select,
+			corsika::units::si::InverseGrammageType& lambda_inv_count)
+	{
+
+		if constexpr (t1ProcSeq || t1SwitchProc) {
+			// if A is a process sequence --> check inside
+			const EProcessReturn ret =
+					A.SelectInteraction(vP, vS, lambda_select, lambda_inv_count);
+			// if A did succeed, stop routine
+			if (ret != EProcessReturn::eOk) { return ret; }
+		} else if constexpr (std::is_base_of<InteractionProcess<T1type>, T1type>::value ) {
+			// if this is not a ContinuousProcess --> evaluate probability
+			lambda_inv_count += A.GetInverseInteractionLength(vP);
+			// check if we should execute THIS process and then EXIT
+			if (lambda_select < lambda_inv_count) {
+				A.DoInteraction(vS);
+				return EProcessReturn::eInteracted;
+			}
+		} // end branch A
+
+		if constexpr (t2ProcSeq || t2SwitchProc) {
+			// if A is a process sequence --> check inside
+			const EProcessReturn ret =
+					B.SelectInteraction(vP, vS, lambda_select, lambda_inv_count);
+			// if A did succeed, stop routine
+			if (ret != EProcessReturn::eOk) { return ret; }
+		} else if constexpr (std::is_base_of<InteractionProcess<T2type>, T2type>::value) {
+			// if this is not a ContinuousProcess --> evaluate probability
+			lambda_inv_count += B.GetInverseInteractionLength(vP);
+			// check if we should execute THIS process and then EXIT
+			if (lambda_select < lambda_inv_count) {
+				B.DoInteraction(vS);
+				return EProcessReturn::eInteracted;
+			}
+		} // end branch A
+		return EProcessReturn::eOk;
+	}
+
+	template <typename T1, typename T2>
+	template <typename TParticle>
+	corsika::units::si::TimeType ProcessSequence<T1, T2>::GetTotalLifetime(TParticle& p) {
+		return 1. / GetInverseLifetime(p);
+	}
+
+	template <typename T1, typename T2>
+	template <typename TParticle>
+	corsika::units::si::InverseTimeType ProcessSequence<T1, T2>::GetTotalInverseLifetime(TParticle& p) {
+		return GetInverseLifetime(p);
+	}
+
+	template <typename T1, typename T2>
+	template <typename TParticle>
+	corsika::units::si::InverseTimeType ProcessSequence<T1, T2>::GetInverseLifetime(TParticle& p) {
+		corsika::units::si::InverseTimeType tot = 0 / corsika::units::si::second;
+
+		if constexpr (std::is_base_of<DecayProcess<T1type>, T1type>::value || t1ProcSeq) {
+			tot += A.GetInverseLifetime(p);
+		}
+		if constexpr (std::is_base_of<DecayProcess<T2type>, T2type>::value || t2ProcSeq) {
+			tot += B.GetInverseLifetime(p);
+		}
+		return tot;
+	}
+
+
+	template <typename T1, typename T2>
+	template <typename TParticle, typename TSecondaries>
+	EProcessReturn ProcessSequence<T1, T2>::SelectDecay(
+			TParticle& vP, TSecondaries& vS,
+			[[maybe_unused]] corsika::units::si::InverseTimeType decay_select,
+			corsika::units::si::InverseTimeType& decay_inv_count) {
+		if constexpr (t1ProcSeq) {
+			// if A is a process sequence --> check inside
+			const EProcessReturn ret = A.SelectDecay(vP, vS, decay_select, decay_inv_count);
+			// if A did succeed, stop routine
+			if (ret != EProcessReturn::eOk) { return ret; }
+		} else if constexpr (std::is_base_of<DecayProcess<T1type>, T1type>::value) {
+			// if this is not a ContinuousProcess --> evaluate probability
+			decay_inv_count += A.GetInverseLifetime(vP);
+			// check if we should execute THIS process and then EXIT
+			if (decay_select < decay_inv_count) { // more pedagogical: rndm_select <
+				// decay_inv_count / decay_inv_tot
+				A.DoDecay(vS);
+				return EProcessReturn::eDecayed;
+			}
+		} // end branch A
+
+		if constexpr (t2ProcSeq) {
+			// if A is a process sequence --> check inside
+			const EProcessReturn ret = B.SelectDecay(vP, vS, decay_select, decay_inv_count);
+			// if A did succeed, stop routine
+			if (ret != EProcessReturn::eOk) { return ret; }
+		} else if constexpr (std::is_base_of<DecayProcess<T2type>, T2type>::value) {
+			// if this is not a ContinuousProcess --> evaluate probability
+			decay_inv_count += B.GetInverseLifetime(vP);
+			// check if we should execute THIS process and then EXIT
+			if (decay_select < decay_inv_count) {
+				B.DoDecay(vS);
+				return EProcessReturn::eDecayed;
+			}
+		} // end branch B
+		return EProcessReturn::eOk;
+	}
+
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/stack/CombinedStack.inl b/corsika/detail/framework/stack/CombinedStack.inl
new file mode 100644
index 000000000..48ff64e71
--- /dev/null
+++ b/corsika/detail/framework/stack/CombinedStack.inl
@@ -0,0 +1,119 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+
+namespace corsika {
+
+	template <template <typename> typename ParticleInterfaceA,
+	            template <typename> typename ParticleInterfaceB, typename StackIterator>
+    template <typename... Args1>
+    void CombinedParticleInterface<ParticleInterfaceA, ParticleInterfaceB,
+	                          StackIterator>::SetParticleData(const std::tuple<Args1...> vA) {
+      PI_A::SetParticleData(vA);
+      PI_B::SetParticleData();
+    }
+
+	template <template <typename> typename ParticleInterfaceA,
+		            template <typename> typename ParticleInterfaceB, typename StackIterator>
+    template <typename... Args1, typename... Args2>
+    void CombinedParticleInterface<ParticleInterfaceA, ParticleInterfaceB,
+    StackIterator>::SetParticleData(const std::tuple<Args1...> vA, const std::tuple<Args2...> vB) {
+      PI_A::SetParticleData(vA);
+      PI_B::SetParticleData(vB);
+    }
+
+	template <template <typename> typename ParticleInterfaceA,
+		            template <typename> typename ParticleInterfaceB, typename StackIterator>
+    template <typename... Args1>
+    void CombinedParticleInterface<ParticleInterfaceA, ParticleInterfaceB,
+    StackIterator>::SetParticleData(PI_C& p, const std::tuple<Args1...> vA) {
+      // static_assert(MT<I>::has_not, "error");
+      PI_A::SetParticleData(static_cast<PI_A&>(p), vA); // original stack
+      PI_B::SetParticleData(static_cast<PI_B&>(p));     // addon stack
+    }
+
+	template <template <typename> typename ParticleInterfaceA,
+		            template <typename> typename ParticleInterfaceB, typename StackIterator>
+    template <typename... Args1, typename... Args2>
+    void CombinedParticleInterface<ParticleInterfaceA, ParticleInterfaceB,
+    StackIterator>::SetParticleData(PI_C& p, const std::tuple<Args1...> vA,
+                         const std::tuple<Args2...> vB) {
+      PI_A::SetParticleData(static_cast<PI_A&>(p), vA);
+      PI_B::SetParticleData(static_cast<PI_B&>(p), vB);
+    }
+
+
+namespace detail {
+
+  template <typename Stack1Impl, typename Stack2Impl>
+  class CombinedStackImpl : public Stack1Impl, public Stack2Impl {
+
+  public:
+    void Init() {
+      Stack1Impl::Init();
+      Stack2Impl::Init();
+    }
+
+    void Clear() {
+      Stack1Impl::Clear();
+      Stack2Impl::Clear();
+    }
+
+    unsigned int GetSize() const { return Stack1Impl::GetSize(); }
+    unsigned int GetCapacity() const { return Stack1Impl::GetCapacity(); }
+
+    /**
+     *   Function to copy particle at location i1 in stack to i2
+     */
+    void Copy(const unsigned int i1, const unsigned int i2) {
+      if (i1 >= GetSize() || i2 >= GetSize()) {
+        std::ostringstream err;
+        err << "CombinedStack: trying to access data beyond size of stack!";
+        throw std::runtime_error(err.str());
+      }
+      Stack1Impl::Copy(i1, i2);
+      Stack2Impl::Copy(i1, i2);
+    }
+
+    /**
+     *   Function to copy particle at location i2 in stack to i1
+     */
+    void Swap(const unsigned int i1, const unsigned int i2) {
+      if (i1 >= GetSize() || i2 >= GetSize()) {
+        std::ostringstream err;
+        err << "CombinedStack: trying to access data beyond size of stack!";
+        throw std::runtime_error(err.str());
+      }
+      Stack1Impl::Swap(i1, i2);
+      Stack2Impl::Swap(i1, i2);
+    }
+
+    void IncrementSize() {
+      Stack1Impl::IncrementSize();
+      Stack2Impl::IncrementSize();
+    }
+
+    void DecrementSize() {
+      Stack1Impl::DecrementSize();
+      Stack2Impl::DecrementSize();
+    }
+
+  }; // end class CombinedStackImpl
+
+}  // namespace detail
+
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/stack/SecondaryView.inl b/corsika/detail/framework/stack/SecondaryView.inl
new file mode 100644
index 000000000..13fa27de4
--- /dev/null
+++ b/corsika/detail/framework/stack/SecondaryView.inl
@@ -0,0 +1,80 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <stdexcept>
+#include <vector>
+#include <corsika/framework/stack/Stack.hpp>
+
+namespace corsika {
+
+
+
+ // template <typename StackDataType, template <typename> typename ParticleInterface>
+ // SecondaryView<StackDataType, ParticleInterface>:
+
+
+
+	template <typename StackDataType, template <typename> typename ParticleInterface>
+    template <typename... Args>
+    auto SecondaryView<StackDataType, ParticleInterface>::AddSecondary(const Args... v) {
+      StackIterator proj = GetProjectile();
+      return AddSecondary(proj, v...);
+    }
+
+	template <typename StackDataType, template <typename> typename ParticleInterface>
+    template <typename... Args>
+    auto SecondaryView<StackDataType, ParticleInterface>::AddSecondary(StackIterator& proj, const Args... v) {
+      // make space on stack
+      InnerStackType::GetStackData().IncrementSize();
+      // get current number of secondaries on stack
+      const unsigned int idSec = GetSize();
+      // determine index on (inner) stack where new particle will be located
+      const unsigned int index = InnerStackType::GetStackData().GetSize() - 1;
+      fIndices.push_back(index);
+      // NOTE: "+1" is since "0" is special marker here for PROJECTILE, see
+      // GetIndexFromIterator
+      return StackIterator(*this, idSec + 1, proj, v...);
+    }
+
+
+
+	template <typename StackDataType, template <typename> typename ParticleInterface>
+    void SecondaryView<StackDataType, ParticleInterface>::Delete(StackIterator p) {
+      if (IsEmpty()) { /* error */
+        throw std::runtime_error("Stack, cannot delete entry since size is zero");
+      }
+      const int innerSize = InnerStackType::GetSize();
+      const int innerIndex = GetIndexFromIterator(p.GetIndex());
+      if (innerIndex < innerSize - 1)
+        InnerStackType::GetStackData().Copy(innerSize - 1,
+                                            GetIndexFromIterator(p.GetIndex()));
+      DeleteLast();
+    }
+
+    template <typename StackDataType, template <typename> typename ParticleInterface>
+    void SecondaryView<StackDataType, ParticleInterface>::Delete(ParticleInterfaceType p) { Delete(p.GetIterator()); }
+
+   template <typename StackDataType, template <typename> typename ParticleInterface>
+    void SecondaryView<StackDataType, ParticleInterface>::DeleteLast() {
+      fIndices.pop_back();
+      InnerStackType::GetStackData().DecrementSize();
+    }
+
+   template <typename StackDataType, template <typename> typename ParticleInterface>
+   unsigned int SecondaryView<StackDataType, ParticleInterface>::GetIndexFromIterator(const unsigned int vI) const {
+      if (vI == 0) return fProjectileIndex;
+      return fIndices[vI - 1];
+    }
+
+
+} // namespace corsika
+
diff --git a/corsika/detail/framework/utility/COMBoost.inl b/corsika/detail/framework/utility/COMBoost.inl
new file mode 100644
index 000000000..da63c03fe
--- /dev/null
+++ b/corsika/detail/framework/utility/COMBoost.inl
@@ -0,0 +1,126 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/CoordinateSystem.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/utility/sgn.hpp>
+#include <Eigen/Dense>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+namespace corsika {
+
+      auto const& COMBoost::GetRotationMatrix() const { return fRotation; }
+
+    //! transforms a 4-momentum from lab frame to the center-of-mass frame
+    template <typename FourVector>
+    FourVector COMBoost::toCoM(const FourVector& p) const {
+      using namespace corsika::units::si;
+      auto pComponents = p.GetSpaceLikeComponents().GetComponents(fCS);
+      Eigen::Vector3d eVecRotated = fRotation * pComponents.eVector;
+      Eigen::Vector2d lab;
+
+      lab << (p.GetTimeLikeComponent() * (1 / 1_GeV)),
+          (eVecRotated(2) * (1 / 1_GeV).magnitude());
+
+      auto const boostedZ = fBoost * lab;
+      auto const E_CoM = boostedZ(0) * 1_GeV;
+
+      eVecRotated(2) = boostedZ(1) * (1_GeV).magnitude();
+
+      return FourVector(E_CoM,
+                        corsika::Vector<corsika::units::si::hepmomentum_d>(fCS, eVecRotated));
+    }
+
+    //! transforms a 4-momentum from the center-of-mass frame back to lab frame
+    template <typename FourVector>
+    FourVector COMBoost::fromCoM(const FourVector& p) const {
+      using namespace corsika::units::si;
+      Eigen::Vector2d com;
+      com << (p.GetTimeLikeComponent() * (1 / 1_GeV)),
+          (p.GetSpaceLikeComponents().GetComponents().eVector(2) *
+           (1 / 1_GeV).magnitude());
+
+      auto const plab = p.GetSpaceLikeComponents().GetComponents();
+      std::cout << "COMBoost::fromCoM Ecm=" << p.GetTimeLikeComponent() / 1_GeV
+                << " GeV, "
+                << " pcm = " << plab / 1_GeV << " (norm = " << plab.norm() / 1_GeV
+                << " GeV), invariant mass = " << p.GetNorm() / 1_GeV << " GeV"
+                << std::endl;
+
+      auto const boostedZ = fInverseBoost * com;
+      auto const E_lab = boostedZ(0) * 1_GeV;
+
+      auto pLab = p.GetSpaceLikeComponents().GetComponents();
+      pLab.eVector(2) = boostedZ(1) * (1_GeV).magnitude();
+      pLab.eVector = fRotation.transpose() * pLab.eVector;
+
+      FourVector f(E_lab, corsika::Vector(fCS, pLab));
+
+      std::cout << "COMBoost::fromCoM --> Elab=" << E_lab / 1_GeV << "GeV, "
+                << " pcm = " << pLab / 1_GeV << " (norm =" << pLab.norm() / 1_GeV
+                << " GeV), invariant mass = " << f.GetNorm() / 1_GeV << " GeV"
+                << std::endl;
+
+      return f;
+    }
+
+    COMBoost::COMBoost(FourVector<corsika::units::si::HEPEnergyType, Vector<corsika::units::si::hepmomentum_d>> const& Pprojectile,
+                       const corsika::units::si::HEPMassType massTarget)
+        : fCS(Pprojectile.GetSpaceLikeComponents().GetCoordinateSystem()) {
+      auto const pProjectile = Pprojectile.GetSpaceLikeComponents();
+      auto const pProjNorm = pProjectile.norm();
+      auto const a = (pProjectile / pProjNorm).GetComponents().eVector;
+      auto const a1 = a(0), a2 = a(1);
+
+      auto const s = sgn(a(2));
+      auto const c = 1 / (1 + s * a(2));
+
+      Eigen::Matrix3d A, B;
+
+      if (s > 0) {
+        A << 1, 0, -a1,                     // comment to prevent clang-format
+            0, 1, -a2,                      // .
+            a1, a2, 1;                      // .
+        B << -a1 * a1 * c, -a1 * a2 * c, 0, // .
+            -a1 * a2 * c, -a2 * a2 * c, 0,  // .
+            0, 0, -(a1 * a1 + a2 * a2) * c; // .
+
+      } else {
+        A << 1, 0, a1,                      // comment to prevent clang-format
+            0, -1, -a2,                     // .
+            a1, a2, -1;                     // .
+        B << -a1 * a1 * c, -a1 * a2 * c, 0, // .
+            +a1 * a2 * c, +a2 * a2 * c, 0,  // .
+            0, 0, (a1 * a1 + a2 * a2) * c;  // .
+      }
+
+      fRotation = A + B;
+
+      // calculate boost
+      double const beta = pProjNorm / (Pprojectile.GetTimeLikeComponent() + massTarget);
+
+      /* Accurracy matters here, beta = 1 - epsilon for ultra-relativistic boosts */
+      double const coshEta = 1 / std::sqrt((1 + beta) * (1 - beta));
+      //~ double const coshEta = 1 / std::sqrt((1-beta*beta));
+      double const sinhEta = -beta * coshEta;
+
+      std::cout << "COMBoost (1-beta)=" << 1 - beta << " gamma=" << coshEta << std::endl;
+      std::cout << "  det = " << fRotation.determinant() - 1 << std::endl;
+
+      fBoost << coshEta, sinhEta, sinhEta, coshEta;
+
+      fInverseBoost << coshEta, -sinhEta, -sinhEta, coshEta;
+    }
+} // namespace corsika
diff --git a/corsika/detail/framework/utility/CorsikaFenvFallback.inl b/corsika/detail/framework/utility/CorsikaFenvFallback.inl
new file mode 100644
index 000000000..4fb6e1c65
--- /dev/null
+++ b/corsika/detail/framework/utility/CorsikaFenvFallback.inl
@@ -0,0 +1,20 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/framework/utility/CorsikaFenv.hpp>
+#include <cfenv>
+
+extern "C" {
+#warning No enabling/disabling of floating point exceptions - platform needs better implementation
+
+int feenableexcept(int excepts) { return -1; }
+
+int fedisableexcept(int excepts) { return -1; }
+}
diff --git a/Framework/Utilities/CorsikaFenvOSX.cc b/corsika/detail/framework/utility/CorsikaFenvOSX.inl
similarity index 96%
rename from Framework/Utilities/CorsikaFenvOSX.cc
rename to corsika/detail/framework/utility/CorsikaFenvOSX.inl
index 1028c4b7e..490dfec65 100644
--- a/Framework/Utilities/CorsikaFenvOSX.cc
+++ b/corsika/detail/framework/utility/CorsikaFenvOSX.inl
@@ -10,7 +10,7 @@
  *
  */
 
-#include <corsika/utl/CorsikaFenv.h>
+#include <corsika/framework/utility/CorsikaFenv.hpp>
 #include <cfenv>
 
 // Implementation for OS X on intel X64_86
diff --git a/corsika/detail/media/BaseExponential.inl b/corsika/detail/media/BaseExponential.inl
new file mode 100644
index 000000000..c4c51cb77
--- /dev/null
+++ b/corsika/detail/media/BaseExponential.inl
@@ -0,0 +1,63 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/BaseExponential.hpp>
+
+namespace corsika {
+
+
+  template <class TDerived>
+    auto const& BaseExponential<TDerived>::GetImplementation() const 
+{ return *static_cast<TDerived const*>(this); }
+
+  template <class TDerived>
+    units::si::GrammageType BaseExponential<TDerived>::IntegratedGrammage(
+        Trajectory<Line> const& vLine,
+		units::si::LengthType vL,
+        Vector<units::si::dimensionless_d> const& vAxis) const {
+      if (vL == units::si::LengthType::zero()) { return units::si::GrammageType::zero(); }
+
+      auto const uDotA = vLine.NormalizedDirection().dot(vAxis).magnitude();
+      auto const rhoStart = GetImplementation().GetMassDensity(vLine.GetR0());
+
+      if (uDotA == 0) {
+        return vL * rhoStart;
+      } else {
+        return rhoStart * (fLambda / uDotA) * (exp(uDotA * vL * fInvLambda) - 1);
+      }
+    }
+
+  template <class TDerived>
+    units::si::LengthType BaseExponential<TDerived>::ArclengthFromGrammage(
+        Trajectory<Line> const& vLine,
+        units::si::GrammageType vGrammage,
+        Vector<units::si::dimensionless_d> const& vAxis) const {
+      auto const uDotA = vLine.NormalizedDirection().dot(vAxis).magnitude();
+      auto const rhoStart = GetImplementation().GetMassDensity(vLine.GetR0());
+
+      if (uDotA == 0) {
+        return vGrammage / rhoStart;
+      } else {
+        auto const logArg = vGrammage * fInvLambda * uDotA / rhoStart + 1;
+        if (logArg > 0) {
+          return fLambda / uDotA * log(logArg);
+        } else {
+          return std::numeric_limits<typename decltype(
+                     vGrammage)::value_type>::infinity() *
+                 units::si::meter;
+        }
+      }
+    }
+
+
+} // namespace corsika
+
diff --git a/corsika/detail/media/Environment.inl b/corsika/detail/media/Environment.inl
new file mode 100644
index 000000000..cc5a94551
--- /dev/null
+++ b/corsika/detail/media/Environment.inl
@@ -0,0 +1,39 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/Environment.hpp>
+
+namespace corsika {
+
+    template <typename IEnvironmentModel>
+    auto& Environment<IEnvironmentModel>::GetUniverse() {
+ return fUniverse;     }
+
+    template <typename IEnvironmentModel>
+    auto const& Environment<IEnvironmentModel>::GetUniverse() const {  return fUniverse; }
+
+    template <typename IEnvironmentModel>
+    auto const& Environment<IEnvironmentModel>::GetCoordinateSystem() const { return fCoordinateSystem; }
+
+    // factory method for creation of VolumeTreeNodes
+    template <typename IEnvironmentModel>
+    template <class TVolumeType, typename... TVolumeArgs>
+    auto Environment<IEnvironmentModel>::CreateNode(TVolumeArgs&&... args) {
+      static_assert(std::is_base_of_v<corsika::Volume, TVolumeType>,
+                    "unusable type provided, needs to be derived from "
+                    "\"corsika::Volume\"");
+
+      return std::make_unique<BaseNodeType>(
+          std::make_unique<TVolumeType>(std::forward<TVolumeArgs>(args)...));
+    }
+
+}
\ No newline at end of file
diff --git a/corsika/detail/media/FlatExponential.inl b/corsika/detail/media/FlatExponential.inl
new file mode 100644
index 000000000..24f66e557
--- /dev/null
+++ b/corsika/detail/media/FlatExponential.inl
@@ -0,0 +1,41 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/FlatExponential.hpp>
+
+namespace corsika {
+
+  template <class T>
+  units::si::MassDensityType FlatExponential<T>::GetMassDensity(Point const& vP) const {
+    return Base::fRho0 * exp(Base::fInvLambda * (vP - Base::fP0).dot(fAxis));
+  }
+
+  template <class T>
+  NuclearComposition const& FlatExponential<T>::GetNuclearComposition() const {
+    return fNuclComp;
+  }
+
+  template <class T>
+  units::si::GrammageType FlatExponential<T>::IntegratedGrammage(
+      Trajectory<Line> const& vLine, units::si::LengthType vTo) const {
+    return Base::IntegratedGrammage(vLine, vTo, fAxis);
+  }
+
+  template <class T>
+  units::si::LengthType FlatExponential<T>::ArclengthFromGrammage(
+      Trajectory<Line> const& vLine, units::si::GrammageType vGrammage) const {
+    return Base::ArclengthFromGrammage(vLine, vGrammage, fAxis);
+  }
+
+} // namespace corsika
+
+#include <corsika/detail/media/BaseExponential.inl>
diff --git a/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl b/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl
new file mode 100644
index 000000000..be0781236
--- /dev/null
+++ b/corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl
@@ -0,0 +1,87 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/media/LayeredSphericalAtmosphereBuilder.hpp>
+#include <corsika/media/FlatExponential.hpp>
+#include <corsika/media/HomogeneousMedium.hpp>
+#include <corsika/media/SlidingPlanarExponential.hpp>
+
+namespace corsika {
+
+void LayeredSphericalAtmosphereBuilder::checkRadius(units::si::LengthType r) const {
+  if (r <= previousRadius_) {
+    throw std::runtime_error("radius must be greater than previous");
+  }
+}
+
+void LayeredSphericalAtmosphereBuilder::setNuclearComposition(
+    NuclearComposition composition) {
+  composition_ = std::make_unique<NuclearComposition>(composition);
+}
+
+void LayeredSphericalAtmosphereBuilder::addExponentialLayer(
+    units::si::GrammageType b, units::si::LengthType c,
+    units::si::LengthType upperBoundary) {
+  auto const radius = seaLevel_ + upperBoundary;
+  checkRadius(radius);
+  previousRadius_ = radius;
+
+  auto node = std::make_unique<VolumeTreeNode<IMediumModel>>(
+      std::make_unique<Sphere>(center_, radius));
+
+  auto const rho0 = b / c;
+  std::cout << "rho0 = " << rho0 << ", c = " << c << std::endl;
+
+  node->SetModelProperties<SlidingPlanarExponential<IMediumModel>>(
+      center_, rho0, -c, *composition_, seaLevel_);
+
+  layers_.push(std::move(node));
+}
+
+void LayeredSphericalAtmosphereBuilder::addLinearLayer(
+    units::si::LengthType c, units::si::LengthType upperBoundary) {
+  using namespace units::si;
+
+  auto const radius = seaLevel_ + upperBoundary;
+  checkRadius(radius);
+  previousRadius_ = radius;
+
+  units::si::GrammageType constexpr b = 1 * 1_g / (1_cm * 1_cm);
+  auto const rho0 = b / c;
+
+  std::cout << "rho0 = " << rho0;
+
+  auto node = std::make_unique<VolumeTreeNode<IMediumModel>>(
+      std::make_unique<Sphere>(center_, radius));
+  node->SetModelProperties<HomogeneousMedium<IMediumModel>>(rho0, *composition_);
+
+  layers_.push(std::move(node));
+}
+
+Environment<IMediumModel> LayeredSphericalAtmosphereBuilder::assemble() {
+  Environment<IMediumModel> env;
+  assemble(env);
+  return env;
+}
+
+void LayeredSphericalAtmosphereBuilder::assemble(Environment<IMediumModel>& env) {
+  auto& universe = env.GetUniverse();
+  auto* outmost = universe.get();
+
+  while (!layers_.empty()) {
+    auto l = std::move(layers_.top());
+    auto* tmp = l.get();
+    outmost->AddChild(std::move(l));
+    layers_.pop();
+    outmost = tmp;
+  }
+}
+
+} // namespace corsika
diff --git a/corsika/detail/media/LinearApproximationIntegrator.inl b/corsika/detail/media/LinearApproximationIntegrator.inl
new file mode 100644
index 000000000..77766a6d9
--- /dev/null
+++ b/corsika/detail/media/LinearApproximationIntegrator.inl
@@ -0,0 +1,57 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/LinearApproximationIntegrator.hpp>
+
+namespace corsika {
+
+
+   template <class TDerived>
+     auto const& LinearApproximationIntegrator<TDerived>::GetImplementation() const {
+		   return *static_cast<TDerived const*>(this);
+	   }
+
+
+   template <class TDerived>
+    auto LinearApproximationIntegrator<TDerived>::IntegrateGrammage(
+        corsika::Trajectory<corsika::Line> const& line,
+        corsika::units::si::LengthType length) const {
+      auto const c0 = GetImplementation().EvaluateAt(line.GetPosition(0));
+      auto const c1 = GetImplementation().fRho.FirstDerivative(
+          line.GetPosition(0), line.NormalizedDirection());
+      return (c0 + 0.5 * c1 * length) * length;
+    }
+
+   template <class TDerived>
+    auto LinearApproximationIntegrator<TDerived>::ArclengthFromGrammage(
+        corsika::Trajectory<corsika::Line> const& line,
+        corsika::units::si::GrammageType grammage) const {
+      auto const c0 = GetImplementation().fRho(line.GetPosition(0));
+      auto const c1 = GetImplementation().fRho.FirstDerivative(
+          line.GetPosition(0), line.NormalizedDirection());
+
+      return (1 - 0.5 * grammage * c1 / (c0 * c0)) * grammage / c0;
+    }
+
+   template <class TDerived>
+    auto LinearApproximationIntegrator<TDerived>::MaximumLength(corsika::Trajectory<corsika::Line> const& line,
+                       [[maybe_unused]] double relError) const {
+      using namespace corsika::units::si;
+      [[maybe_unused]] auto const c1 = GetImplementation().fRho.SecondDerivative(
+          line.GetPosition(0), line.NormalizedDirection());
+
+      // todo: provide a real, working implementation
+      return 1_m * std::numeric_limits<double>::infinity();
+    }
+
+
+}
\ No newline at end of file
diff --git a/corsika/detail/media/SlidingPlanarExponential.inl b/corsika/detail/media/SlidingPlanarExponential.inl
new file mode 100644
index 000000000..224826efc
--- /dev/null
+++ b/corsika/detail/media/SlidingPlanarExponential.inl
@@ -0,0 +1,38 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/SlidingPlanarExponential.hpp>
+
+namespace corsika {
+
+  template <class T>
+  units::si::MassDensityType SlidingPlanarExponential<T>::GetMassDensity(
+      Point const& p) const {
+    auto const height = (p - Base::fP0).norm() - referenceHeight_;
+    return Base::fRho0 * exp(Base::fInvLambda * height);
+  }
+
+  template <class T>
+  units::si::GrammageType SlidingPlanarExponential<T>::IntegratedGrammage(
+      Trajectory<Line> const& line, units::si::LengthType l) const {
+    auto const axis = (line.GetR0() - Base::fP0).normalized();
+    return Base::IntegratedGrammage(line, l, axis);
+  }
+
+  template <class T>
+  units::si::LengthType SlidingPlanarExponential<T>::ArclengthFromGrammage(
+      Trajectory<Line> const& line, units::si::GrammageType grammage) const {
+    auto const axis = (line.GetR0() - Base::fP0).normalized();
+    return Base::ArclengthFromGrammage(line, grammage, axis);
+  }
+
+} // namespace corsika
\ No newline at end of file
diff --git a/corsika/detail/media/Universe.inl b/corsika/detail/media/Universe.inl
new file mode 100644
index 000000000..d1f16c4e5
--- /dev/null
+++ b/corsika/detail/media/Universe.inl
@@ -0,0 +1,31 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/Environment.hpp>
+
+namespace corsika {
+
+          Universe::Universe(corsika::CoordinateSystem const& pCS):
+       corsika::Sphere(
+              corsika::Point{pCS,
+    	                               0 * corsika::units::si::meter,
+                                       0 * corsika::units::si::meter,
+                                       0 * corsika::units::si::meter},
+              corsika::units::si::meter * std::numeric_limits<double>::infinity())
+    {}
+
+    bool Universe::Contains(corsika::Point const&) const
+    {
+    	return true;
+    } 
+
+} 
\ No newline at end of file
diff --git a/corsika/detail/media/VolumeTreeNode.inl b/corsika/detail/media/VolumeTreeNode.inl
new file mode 100644
index 000000000..14eaef6b5
--- /dev/null
+++ b/corsika/detail/media/VolumeTreeNode.inl
@@ -0,0 +1,92 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/Volume.hpp>
+#include <corsika/media/IMediumModel.hpp>
+
+namespace corsika {
+
+  //! convenience function equivalent to Volume::Contains
+  template <typename IModelProperties>
+  bool VolumeTreeNode<IModelProperties>::Contains(corsika::Point const& p) const {
+    return fGeoVolume->Contains(p);
+  }
+
+  template <typename IModelProperties>
+  inline VolumeTreeNode<IModelProperties> const*
+  VolumeTreeNode<IModelProperties>::Excludes(corsika::Point const& p) const {
+    auto exclContainsIter =
+        std::find_if(fExcludedNodes.cbegin(), fExcludedNodes.cend(),
+                     [&](auto const& s) { return bool(s->Contains(p)); });
+
+    return exclContainsIter != fExcludedNodes.cend() ? *exclContainsIter : nullptr;
+  }
+
+  /** returns a pointer to the sub-VolumeTreeNode which is "responsible" for the given
+   * \class Point \p p, or nullptr iff \p p is not contained in this volume.
+   */
+  template <typename IModelProperties>
+  VolumeTreeNode<IModelProperties> const*
+  VolumeTreeNode<IModelProperties>::GetContainingNode(corsika::Point const& p) const {
+    if (!Contains(p)) { return nullptr; }
+
+    if (auto const childContainsIter =
+            std::find_if(fChildNodes.cbegin(), fChildNodes.cend(),
+                         [&](auto const& s) { return bool(s->Contains(p)); });
+        childContainsIter == fChildNodes.cend()) // not contained in any of the children
+    {
+      if (auto const exclContainsIter = Excludes(p)) // contained in any excluded nodes
+      {
+        return exclContainsIter->GetContainingNode(p);
+      } else {
+        return this;
+      }
+    } else {
+      return (*childContainsIter)->GetContainingNode(p);
+    }
+  }
+
+  template <typename IModelProperties>
+  template <typename TCallable, bool preorder>
+  void VolumeTreeNode<IModelProperties>::walk(TCallable func) {
+    if constexpr (preorder) { func(*this); }
+
+    std::for_each(fChildNodes.begin(), fChildNodes.end(),
+                  [&](auto& v) { v->walk(func); });
+
+    if constexpr (!preorder) { func(*this); };
+  }
+
+  template <typename IModelProperties>
+  void VolumeTreeNode<IModelProperties>::AddChild(typename VolumeTreeNode<IModelProperties>::VTNUPtr pChild) {
+    pChild->fParentNode = this;
+    fChildNodes.push_back(std::move(pChild));
+    // It is a bad idea to return an iterator to the inserted element
+    // because it might get invalidated when the vector needs to grow
+    // later and the caller won't notice.
+  }
+
+  template <typename IModelProperties>
+  void VolumeTreeNode<IModelProperties>::ExcludeOverlapWith(typename VolumeTreeNode<IModelProperties>::VTNUPtr const& pNode) {
+    fExcludedNodes.push_back(pNode.get());
+  }
+
+  template <typename IModelProperties>
+  template <class MediumType, typename... Args>
+  auto VolumeTreeNode<IModelProperties>::CreateMedium(Args&&... args) {
+    static_assert(std::is_base_of_v<IMediumModel, MediumType>,
+                  "unusable type provided, needs to be derived from \"IMediumModel\"");
+
+    return std::make_shared<MediumType>(std::forward<Args>(args)...);
+  }
+
+} // namespace corsika
\ No newline at end of file
diff --git a/corsika/detail/modules/sibyll/Decay.inl b/corsika/detail/modules/sibyll/Decay.inl
new file mode 100644
index 000000000..a6ffafa22
--- /dev/null
+++ b/corsika/detail/modules/sibyll/Decay.inl
@@ -0,0 +1,163 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/modules/sibyll/Decay.hpp>
+#include <corsika/modules/sibyll/ParticleConversion.hpp>
+#include <corsika/modules/sibyll/SibStack.hpp>
+
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
+
+#include <iostream>
+#include <vector>
+
+using SetupView = corsika::setup::StackView;
+using SetupProjectile = corsika::setup::StackView::ParticleType;
+using SetupParticle = corsika::setup::Stack::ParticleType;
+
+namespace corsika::sibyll {
+
+  Decay::Decay() {}
+  Decay::~Decay() { std::cout << "Sibyll::Decay n=" << fCount << std::endl; }
+  void Decay::Init() {
+    // switch off decays to avoid internal decay chains
+    SetAllStable();
+  }
+
+  void Decay::SetStable(const std::vector<corsika::Code> vParticleList) {
+    for (auto p : vParticleList) Decay::SetStable(p);
+  }
+
+  void Decay::SetUnstable(const std::vector<corsika::Code> vParticleList) {
+    for (auto p : vParticleList) Decay::SetUnstable(p);
+  }
+
+  bool Decay::IsStable(const corsika::Code vCode) {
+    return abs(corsika::sibyll::ConvertToSibyllRaw(vCode)) <= 0 ? true : false;
+  }
+
+  bool Decay::IsUnstable(const corsika::Code vCode) {
+    return abs(corsika::sibyll::ConvertToSibyllRaw(vCode)) > 0 ? true : false;
+  }
+
+  void Decay::SetDecay(const corsika::Code vCode, const bool vMakeUnstable) {
+    vMakeUnstable ? SetUnstable(vCode) : SetStable(vCode);
+  }
+
+  void Decay::SetUnstable(const corsika::Code vCode) {
+    std::cout << "Sibyll::Interaction: setting " << vCode << " unstable.." << std::endl;
+    const int s_id = abs(corsika::sibyll::ConvertToSibyllRaw(vCode));
+    s_csydec_.idb[s_id - 1] = abs(s_csydec_.idb[s_id - 1]);
+  }
+
+  void Decay::SetStable(const corsika::Code vCode) {
+    std::cout << "Sibyll::Interaction: setting " << vCode << " stable.." << std::endl;
+    const int s_id = abs(corsika::sibyll::ConvertToSibyllRaw(vCode));
+    s_csydec_.idb[s_id - 1] = (-1) * abs(s_csydec_.idb[s_id - 1]);
+  }
+
+  void Decay::SetAllStable() {
+    for (int i = 0; i < 99; ++i) s_csydec_.idb[i] = -1 * abs(s_csydec_.idb[i]);
+  }
+
+  void Decay::SetAllUnstable() {
+    for (int i = 0; i < 99; ++i) s_csydec_.idb[i] = abs(s_csydec_.idb[i]);
+  }
+
+  void Decay::PrintDecayConfig(const corsika::Code vCode) {
+    std::cout << "Decay: Sibyll decay configuration:" << std::endl;
+    const int sibCode = corsika::sibyll::ConvertToSibyllRaw(vCode);
+    const int absSibCode = abs(sibCode);
+    std::cout << vCode << " is ";
+    if (s_csydec_.idb[absSibCode - 1] <= 0)
+      std::cout << "stable" << std::endl;
+    else
+      std::cout << "unstable" << std::endl;
+  }
+
+  template <>
+  units::si::TimeType Decay::GetLifetime(SetupParticle const& vP) const {
+    using namespace units::si;
+
+    HEPEnergyType E = vP.GetEnergy();
+    HEPMassType m = vP.GetMass();
+
+    const double gamma = E / m;
+
+    const TimeType t0 = corsika::GetLifetime(vP.GetPID());
+    auto const lifetime = gamma * t0;
+
+    const auto mkin =
+        (E * E - vP.GetMomentum().squaredNorm()); // delta_mass(vP.GetMomentum(), E, m);
+    std::cout << "Decay: code: " << vP.GetPID() << std::endl;
+    std::cout << "Decay: MinStep: t0: " << t0 << std::endl;
+    std::cout << "Decay: MinStep: energy: " << E / 1_GeV << " GeV" << std::endl;
+    std::cout << "Decay: momentum: " << vP.GetMomentum().GetComponents() / 1_GeV << " GeV"
+         << std::endl;
+    std::cout << "Decay: momentum: shell mass-kin. inv. mass " << mkin / 1_GeV / 1_GeV << " "
+         << m / 1_GeV * m / 1_GeV << std::endl;
+    auto sib_id = corsika::sibyll::ConvertToSibyllRaw(vP.GetPID());
+    std::cout << "Decay: sib mass: " << get_sibyll_mass2(sib_id) << std::endl;
+    std::cout << "Decay: MinStep: gamma: " << gamma << std::endl;
+    std::cout << "Decay: MinStep: tau: " << lifetime << std::endl;
+
+    return lifetime;
+  }
+
+  template <>
+  void Decay::DoDecay(SetupProjectile& vP) {
+    using corsika::Point;
+    using namespace units::si;
+
+    fCount++;
+    SibStack ss;
+    ss.Clear();
+    const corsika::Code pCode = vP.GetPID();
+    // copy particle to sibyll stack
+    ss.AddParticle(corsika::sibyll::ConvertToSibyllRaw(pCode), vP.GetEnergy(),
+                   vP.GetMomentum(),
+                   // setting particle mass with Corsika values, may be inconsistent
+                   // with sibyll internal values
+                   corsika::GetMass(pCode));
+    // remember position
+    Point const decayPoint = vP.GetPosition();
+    TimeType const t0 = vP.GetTime();
+    // remember if particles is unstable
+    // auto const priorIsUnstable = IsUnstable(pCode);
+    // switch on decay for this particle
+    SetUnstable(pCode);
+    PrintDecayConfig(pCode);
+
+    // call sibyll decay
+    std::cout << "Decay: calling Sibyll decay routine.." << std::endl;
+    decsib_();
+
+    // reset to stable
+    SetStable(pCode);
+    // print output
+    int print_unit = 6;
+    sib_list_(print_unit);
+
+    // copy particles from sibyll stack to corsika
+    for (auto& psib : ss) {
+      // FOR NOW: skip particles that have decayed in Sibyll, move to iterator?
+      if (psib.HasDecayed()) continue;
+      // add to corsika stack
+      vP.AddSecondary(
+      std::tuple<corsika::Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                Point, units::si::TimeType>{
+              corsika::sibyll::ConvertFromSibyll(psib.GetPID()), psib.GetEnergy(),
+              psib.GetMomentum(), decayPoint, t0});
+    }
+    // empty sibyll stack
+    ss.Clear();
+  }
+
+} // namespace corsika::sibyll
diff --git a/corsika/detail/modules/sibyll/Interaction.inl b/corsika/detail/modules/sibyll/Interaction.inl
new file mode 100644
index 000000000..b27988241
--- /dev/null
+++ b/corsika/detail/modules/sibyll/Interaction.inl
@@ -0,0 +1,365 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/modules/sibyll/Interaction.hpp>
+
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/modules/sibyll/ParticleConversion.hpp>
+#include <corsika/modules/sibyll/SibStack.hpp>
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
+#include <corsika/framework/utility/COMBoost.hpp>
+
+#include <sibyll2.3d.hpp>
+
+#include <tuple>
+
+using std::make_tuple;
+using std::tuple;
+
+using namespace corsika;
+using SetupParticle = setup::Stack::StackIterator;
+using SetupView = setup::StackView;
+using Track = setup::Trajectory;
+
+namespace corsika::sibyll {
+
+  Interaction::Interaction() {
+    using corsika::RNGManager;
+
+    // initialize Sibyll
+    if (!initialized_) {
+      sibyll_ini_();
+      initialized_ = true;
+    }
+  }
+
+  Interaction::~Interaction() {
+    std::cout << "Sibyll::Interaction n=" << count_ << " Nnuc=" << nucCount_ << std::endl;
+  }
+
+  void Interaction::SetStable(std::vector<corsika::Code> const& vParticleList) {
+    for (auto p : vParticleList) Interaction::SetStable(p);
+  }
+
+  void Interaction::SetUnstable(std::vector<corsika::Code> const& vParticleList) {
+    for (auto p : vParticleList) Interaction::SetUnstable(p);
+  }
+
+  void Interaction::SetUnstable(const corsika::Code vCode) {
+    std::cout << "Sibyll::Interaction: setting " << vCode << " unstable.." << std::endl;
+    const int s_id = abs(corsika::sibyll::ConvertToSibyllRaw(vCode));
+    s_csydec_.idb[s_id - 1] = abs(s_csydec_.idb[s_id - 1]);
+  }
+
+  void Interaction::SetStable(const corsika::Code vCode) {
+    std::cout << "Sibyll::Interaction: setting " << vCode << " stable.." << std::endl;
+    const int s_id = abs(corsika::sibyll::ConvertToSibyllRaw(vCode));
+    s_csydec_.idb[s_id - 1] = (-1) * abs(s_csydec_.idb[s_id - 1]);
+  }
+
+  void Interaction::SetAllUnstable() {
+    for (int i = 0; i < 99; ++i) s_csydec_.idb[i] = abs(s_csydec_.idb[i]);
+  }
+
+  void Interaction::SetAllStable() {
+    for (int i = 0; i < 99; ++i) s_csydec_.idb[i] = -1 * abs(s_csydec_.idb[i]);
+  }
+
+  tuple<units::si::CrossSectionType, units::si::CrossSectionType>
+  Interaction::GetCrossSection(const corsika::Code BeamId,
+                               const corsika::Code TargetId,
+                               const units::si::HEPEnergyType CoMenergy) const {
+    using namespace units::si;
+    double sigProd, sigEla, dummy, dum1, dum3, dum4;
+    double dumdif[3];
+    const int iBeam = corsika::sibyll::GetSibyllXSCode(BeamId);
+    if (!IsValidCoMEnergy(CoMenergy)) {
+      throw std::runtime_error(
+          "Interaction: GetCrossSection: CoM energy outside range for Sibyll!");
+    }
+    const double dEcm = CoMenergy / 1_GeV;
+    if (corsika::IsNucleus(TargetId)) {
+      const int iTarget = corsika::GetNucleusA(TargetId);
+      if (iTarget > maxTargetMassNumber_ || iTarget == 0)
+        throw std::runtime_error(
+            "Sibyll target outside range. Only nuclei with A<18 are allowed.");
+      sib_sigma_hnuc_(iBeam, iTarget, dEcm, sigProd, dummy, sigEla);
+    } else if (TargetId == corsika::Proton::GetCode()) {
+      sib_sigma_hp_(iBeam, dEcm, dum1, sigEla, sigProd, dumdif, dum3, dum4);
+    } else {
+      // no interaction in sibyll possible, return infinite cross section? or throw?
+      sigProd = std::numeric_limits<double>::infinity();
+      sigEla = std::numeric_limits<double>::infinity();
+    }
+    return std::make_tuple(sigProd * 1_mb, sigEla * 1_mb);
+  }
+
+
+  template <>
+  units::si::GrammageType Interaction::GetInteractionLength(
+      SetupParticle const& vP) const {
+
+    using namespace units;
+    using namespace units::si;
+
+    // coordinate system, get global frame of reference
+    CoordinateSystem& rootCS =
+        RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+
+    const corsika::Code corsikaBeamId = vP.GetPID();
+
+    // beam corsika for sibyll : 1, 2, 3 for p, pi, k
+    // read from cross section code table
+    const bool kInteraction = corsika::sibyll::CanInteract(corsikaBeamId);
+
+    // FOR NOW: assume target is at rest
+    MomentumVector pTarget(rootCS, {0_GeV, 0_GeV, 0_GeV});
+
+    // total momentum and energy
+    HEPEnergyType Elab = vP.GetEnergy() + constants::nucleonMass;
+    MomentumVector pTotLab(rootCS, {0_GeV, 0_GeV, 0_GeV});
+    pTotLab += vP.GetMomentum();
+    pTotLab += pTarget;
+    auto const pTotLabNorm = pTotLab.norm();
+    // calculate cm. energy
+    const HEPEnergyType ECoM = sqrt(
+        (Elab + pTotLabNorm) * (Elab - pTotLabNorm)); // binomial for numerical accuracy
+
+    std::cout << "Interaction: LambdaInt: \n"
+         << " input energy: " << vP.GetEnergy() / 1_GeV << std::endl
+         << " beam can interact:" << kInteraction << std::endl
+         << " beam pid:" << vP.GetPID() << std::endl;
+
+    // TODO: move limits into variables
+    // FR: removed && Elab >= 8.5_GeV
+    if (kInteraction && IsValidCoMEnergy(ECoM)) {
+
+      // get target from environment
+      /*
+        the target should be defined by the Environment,
+        ideally as full particle object so that the four momenta
+        and the boosts can be defined..
+      */
+
+      auto const* currentNode = vP.GetNode();
+      const auto& mediumComposition =
+          currentNode->GetModelProperties().GetNuclearComposition();
+
+      si::CrossSectionType weightedProdCrossSection = mediumComposition.WeightedSum(
+          [=](corsika::Code targetID) -> si::CrossSectionType {
+            return std::get<0>(this->GetCrossSection(corsikaBeamId, targetID, ECoM));
+          });
+
+      std::cout << "Interaction: "
+           << "IntLength: weighted CrossSection (mb): " << weightedProdCrossSection / 1_mb
+           << std::endl;
+
+      // calculate interaction length in medium
+      GrammageType const int_length = mediumComposition.GetAverageMassNumber() *
+                                      units::constants::u / weightedProdCrossSection;
+      std::cout << "Interaction: "
+           << "interaction length (g/cm2): " << int_length / (0.001_kg) * 1_cm * 1_cm
+           << std::endl;
+
+      return int_length;
+    }
+
+    return std::numeric_limits<double>::infinity() * 1_g / (1_cm * 1_cm);
+  }
+
+  /**
+     In this function SIBYLL is called to produce one event. The
+     event is copied (and boosted) into the shower lab frame.
+   */
+
+  template <>
+  corsika::EProcessReturn Interaction::DoInteraction(SetupProjectile& vP) {
+
+    using namespace units::si;
+
+    const auto corsikaBeamId = vP.GetPID();
+    std::cout << "ProcessSibyll: "
+         << "DoInteraction: " << corsikaBeamId << " interaction? "
+         << corsika::sibyll::CanInteract(corsikaBeamId) << std::endl;
+
+    if (corsika::IsNucleus(corsikaBeamId)) {
+      // nuclei handled by different process, this should not happen
+      throw std::runtime_error("Nuclear projectile are not handled by SIBYLL!");
+    }
+
+    if (corsika::sibyll::CanInteract(corsikaBeamId)) {
+      const CoordinateSystem& rootCS =
+          RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+
+      // position and time of interaction, not used in Sibyll
+      Point pOrig = vP.GetPosition();
+      TimeType tOrig = vP.GetTime();
+
+      // define target
+      // for Sibyll is always a single nucleon
+      // FOR NOW: target is always at rest
+      const auto eTargetLab = 0_GeV + corsika::units::constants::nucleonMass;
+      const auto pTargetLab = MomentumVector(rootCS, 0_GeV, 0_GeV, 0_GeV);
+      const FourVector PtargLab(eTargetLab, pTargetLab);
+
+      // define projectile
+      HEPEnergyType const eProjectileLab = vP.GetEnergy();
+      auto const pProjectileLab = vP.GetMomentum();
+
+      std::cout << "Interaction: ebeam lab: " << eProjectileLab / 1_GeV << std::endl
+           << "Interaction: pbeam lab: " << pProjectileLab.GetComponents() / 1_GeV
+           << std::endl;
+      std::cout << "Interaction: etarget lab: " << eTargetLab / 1_GeV << std::endl
+           << "Interaction: ptarget lab: " << pTargetLab.GetComponents() / 1_GeV << std::endl;
+
+      const FourVector PprojLab(eProjectileLab, pProjectileLab);
+
+      // define target kinematics in lab frame
+      // define boost to and from CoM frame
+      // CoM frame definition in Sibyll projectile: +z
+      COMBoost const boost(PprojLab, corsika::units::constants::nucleonMass);
+
+      // just for show:
+      // boost projecticle
+      auto const PprojCoM = boost.toCoM(PprojLab);
+
+      // boost target
+      auto const PtargCoM = boost.toCoM(PtargLab);
+
+      std::cout << "Interaction: ebeam CoM: " << PprojCoM.GetTimeLikeComponent() / 1_GeV
+           << std::endl
+           << "Interaction: pbeam CoM: "
+           << PprojCoM.GetSpaceLikeComponents().GetComponents() / 1_GeV << std::endl;
+      std::cout << "Interaction: etarget CoM: " << PtargCoM.GetTimeLikeComponent() / 1_GeV
+           << std::endl
+           << "Interaction: ptarget CoM: "
+           << PtargCoM.GetSpaceLikeComponents().GetComponents() / 1_GeV << std::endl;
+
+      std::cout << "Interaction: position of interaction: " << pOrig.GetCoordinates() << std::endl;
+      std::cout << "Interaction: time: " << tOrig << std::endl;
+
+      HEPEnergyType Etot = eProjectileLab + eTargetLab;
+      MomentumVector Ptot = vP.GetMomentum();
+      // invariant mass, i.e. cm. energy
+      HEPEnergyType Ecm = sqrt(Etot * Etot - Ptot.squaredNorm());
+
+      // sample target mass number
+      auto const* currentNode = vP.GetNode();
+      auto const& mediumComposition =
+          currentNode->GetModelProperties().GetNuclearComposition();
+      // get cross sections for target materials
+      /*
+        Here we read the cross section from the interaction model again,
+        should be passed from GetInteractionLength if possible
+       */
+      //#warning reading interaction cross section again, should not be necessary
+      auto const& compVec = mediumComposition.GetComponents();
+      std::vector<corsika::units::si::CrossSectionType> cross_section_of_components(compVec.size());
+
+      for (size_t i = 0; i < compVec.size(); ++i) {
+        auto const targetId = compVec[i];
+        const auto [sigProd, sigEla] = GetCrossSection(corsikaBeamId, targetId, Ecm);
+        [[maybe_unused]] const auto& dummy_sigEla = sigEla;
+        cross_section_of_components[i] = sigProd;
+      }
+
+      const auto targetCode =
+          mediumComposition.SampleTarget(cross_section_of_components, RNG_);
+      std::cout << "Interaction: target selected: " << targetCode << std::endl;
+      /*
+        FOR NOW: allow nuclei with A<18 or protons only.
+        when medium composition becomes more complex, approximations will have to be
+        allowed air in atmosphere also contains some Argon.
+      */
+      int targetSibCode = -1;
+      if (IsNucleus(targetCode)) targetSibCode = GetNucleusA(targetCode);
+      if (targetCode == corsika::Proton::GetCode()) targetSibCode = 1;
+      std::cout << "Interaction: sibyll code: " << targetSibCode << std::endl;
+      if (targetSibCode > maxTargetMassNumber_ || targetSibCode < 1)
+        throw std::runtime_error(
+            "Sibyll target outside range. Only nuclei with A<18 or protons are "
+            "allowed.");
+
+      // beam id for sibyll
+      const int kBeam = corsika::sibyll::ConvertToSibyllRaw(corsikaBeamId);
+
+      std::cout << "Interaction: "
+           << " DoInteraction: E(GeV):" << eProjectileLab / 1_GeV
+           << " Ecm(GeV): " << Ecm / 1_GeV << std::endl;
+      if (Ecm > GetMaxEnergyCoM())
+        throw std::runtime_error("Interaction::DoInteraction: CoM energy too high!");
+      // FR: removed eProjectileLab < 8.5_GeV ||
+      if (Ecm < GetMinEnergyCoM()) {
+        std::cout << "Interaction: "
+             << " DoInteraction: should have dropped particle.. "
+             << "THIS IS AN ERROR" << std::endl;
+        throw std::runtime_error("energy too low for SIBYLL");
+      } else {
+        count_++;
+        // Sibyll does not know about units..
+        const double sqs = Ecm / 1_GeV;
+        // running sibyll, filling stack
+        std::cout << "kBeam " << kBeam << " targetSibCode " << targetSibCode << " sqs " << sqs << std::endl;
+        sibyll_(kBeam, targetSibCode, sqs);
+        if (internalDecays_) {
+          // corsika that decay internally will never appear on the corsika stack
+          // switch on all decays except for the corsika we want to take part in the
+          // tracking
+          SetAllUnstable();
+          SetStable(trackedParticles_);
+          decsib_();
+          // reset
+          SetAllStable();
+        }
+        // print final state
+        int print_unit = 6;
+        sib_list_(print_unit);
+        nucCount_ += get_nwounded() - 1;
+
+        // add corsika from sibyll to stack
+        // link to sibyll stack
+        SibStack ss;
+
+        MomentumVector Plab_final(rootCS, {0.0_GeV, 0.0_GeV, 0.0_GeV});
+        HEPEnergyType Elab_final = 0_GeV, Ecm_final = 0_GeV;
+        for (auto& psib : ss) {
+
+          // skip corsika that have decayed in Sibyll
+          if (psib.HasDecayed()) continue;
+
+          // transform energy to lab. frame
+          auto const pCoM = psib.GetMomentum();
+          HEPEnergyType const eCoM = psib.GetEnergy();
+          auto const Plab = boost.fromCoM(FourVector(eCoM, pCoM));
+
+          // add to corsika stack
+          auto pnew = vP.AddSecondary(
+          std::tuple<corsika::Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                    corsika::Point, units::si::TimeType>{
+                  corsika::sibyll::ConvertFromSibyll(psib.GetPID()),
+                  Plab.GetTimeLikeComponent(), Plab.GetSpaceLikeComponents(), pOrig,
+                  tOrig});
+
+          Plab_final += pnew.GetMomentum();
+          Elab_final += pnew.GetEnergy();
+          Ecm_final += psib.GetEnergy();
+        }
+        std::cout << "conservation (all GeV): Ecm_final=" << Ecm_final / 1_GeV << std::endl
+             << "Elab_final=" << Elab_final / 1_GeV
+             << ", Plab_final=" << (Plab_final / 1_GeV).GetComponents() << std::endl;
+      }
+    }
+    return corsika::EProcessReturn::eOk;
+  }
+
+} // namespace corsika::sibyll
diff --git a/corsika/detail/modules/sibyll/NuclearInteraction.inl b/corsika/detail/modules/sibyll/NuclearInteraction.inl
new file mode 100644
index 000000000..5f08a662f
--- /dev/null
+++ b/corsika/detail/modules/sibyll/NuclearInteraction.inl
@@ -0,0 +1,600 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/modules/sibyll/Interaction.hpp>
+#include <corsika/modules/sibyll/NuclearInteraction.hpp>
+
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/utility/COMBoost.hpp>
+
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
+
+#include <nuclib.hpp>
+
+namespace corsika::sibyll {
+
+  template <>
+  NuclearInteraction<corsika::setup::SetupEnvironment>::NuclearInteraction(
+      corsika::sibyll::Interaction& hadint, corsika::setup::SetupEnvironment const& env)
+      : environment_(env)
+      , hadronicInteraction_(hadint) {}
+
+  template <>
+  NuclearInteraction<corsika::setup::SetupEnvironment>::~NuclearInteraction() {
+    std::cout << "Nuclib::NuclearInteraction n=" << count_ << " Nnuc=" << nucCount_ << std::endl;
+  }
+
+  template <>
+  void NuclearInteraction<corsika::setup::SetupEnvironment>::PrintCrossSectionTable(
+      corsika::Code pCode) {
+    const int k = targetComponentsIndex_.at(pCode);
+    Code pNuclei[] = {Code::Helium, Code::Lithium7, Code::Oxygen,
+                      Code::Neon,   Code::Argon,    Code::Iron};
+    std::cout << "en/A ";
+    for (auto& j : pNuclei) std::cout << std::setw(9) << j;
+    std::cout << std::endl;
+
+    // loop over energy bins
+    for (unsigned int i = 0; i < GetNEnergyBins(); ++i) {
+      std::cout << " " << i << "  ";
+      for (auto& n : pNuclei) {
+        auto const j = GetNucleusA(n);
+        std::cout << " " << std::setprecision(5) << std::setw(8)
+             << cnucsignuc_.sigma[j - 1][k][i];
+      }
+      std::cout << std::endl;
+    }
+  }
+
+  template <>
+  void NuclearInteraction<corsika::setup::SetupEnvironment>::InitializeNuclearCrossSections() {
+
+    using namespace corsika::units::si;
+
+    auto& universe = *(environment_.GetUniverse());
+
+    auto const allElementsInUniverse = std::invoke([&]() {
+      std::set<corsika::Code> allElementsInUniverse;
+      auto collectElements = [&](auto& vtn) {
+        if (vtn.HasModelProperties()) {
+          auto const& comp =
+              vtn.GetModelProperties().GetNuclearComposition().GetComponents();
+          for (auto const c : comp) allElementsInUniverse.insert(c);
+        }
+      };
+      universe.walk(collectElements);
+      return allElementsInUniverse;
+    });
+
+    std::cout << "NuclearInteraction: initializing nuclear cross sections..." << std::endl;
+
+    // loop over target components, at most 4!!
+    int k = -1;
+    for (auto& ptarg : allElementsInUniverse) {
+      ++k;
+      std::cout << "NuclearInteraction: init target component: " << ptarg << std::endl;
+      const int ib = GetNucleusA(ptarg);
+      if (!hadronicInteraction_.IsValidTarget(ptarg)) {
+        std::cout << "NuclearInteraction::InitializeNuclearCrossSections: target nucleus? id="
+             << ptarg << std::endl;
+        throw std::runtime_error(
+            " target can not be handled by hadronic interaction model! ");
+      }
+      targetComponentsIndex_.insert(std::pair<Code, int>(ptarg, k));
+      // loop over energies, fNEnBins log. energy bins
+      for (unsigned int i = 0; i < GetNEnergyBins(); ++i) {
+        // hard coded energy grid, has to be aligned to definition in signuc2!!, no
+        // comment..
+        const corsika::units::si::HEPEnergyType Ecm = pow(10., 1. + 1. * i) * 1_GeV;
+        // get p-p cross sections
+        auto const protonId = Code::Proton;
+        auto const [siginel, sigela] =
+            hadronicInteraction_.GetCrossSection(protonId, protonId, Ecm);
+        const double dsig = siginel / 1_mb;
+        const double dsigela = sigela / 1_mb;
+        // loop over projectiles, mass numbers from 2 to fMaxNucleusAProjectile
+        for (unsigned int j = 1; j < gMaxNucleusAProjectile_; ++j) {
+          const int jj = j + 1;
+          double sig_out, dsig_out, sigqe_out, dsigqe_out;
+          sigma_mc_(jj, ib, dsig, dsigela, gNSample_, sig_out, dsig_out, sigqe_out,
+                    dsigqe_out);
+          // write to table
+          cnucsignuc_.sigma[j][k][i] = sig_out;
+          cnucsignuc_.sigqe[j][k][i] = sigqe_out;
+        }
+      }
+    }
+    std::cout << "NuclearInteraction: cross sections for " << targetComponentsIndex_.size()
+         << " components initialized!" << std::endl;
+    for (auto& ptarg : allElementsInUniverse) {
+      std::cout << "cross section table: " << ptarg << std::endl;
+      PrintCrossSectionTable(ptarg);
+    }
+  }
+
+  template <>
+  void NuclearInteraction<corsika::setup::SetupEnvironment>::Init() {
+  
+    // initialize hadronic interaction module
+    // TODO: safe to run multiple initializations?
+    if (!hadronicInteraction_.WasInitialized()) hadronicInteraction_.Init();
+
+    // check compatibility of energy ranges, someone could try to use low-energy model..
+    if (!hadronicInteraction_.IsValidCoMEnergy(GetMinEnergyPerNucleonCoM()) ||
+        !hadronicInteraction_.IsValidCoMEnergy(GetMaxEnergyPerNucleonCoM()))
+      throw std::runtime_error(
+          "NuclearInteraction: hadronic interaction model incompatible!");
+
+    // initialize nuclib
+    // TODO: make sure this does not overlap with sibyll
+    nuc_nuc_ini_();
+
+    // initialize cross sections
+    InitializeNuclearCrossSections();
+  }
+
+  template <>
+  corsika::units::si::CrossSectionType NuclearInteraction<corsika::setup::SetupEnvironment>::ReadCrossSectionTable(
+      const int ia, corsika::Code pTarget, corsika::units::si::HEPEnergyType elabnuc) {
+
+    using namespace corsika::units::si;
+
+    const int ib = targetComponentsIndex_.at(pTarget) + 1; // table index in fortran
+    auto const ECoMNuc = sqrt(2. * corsika::units::constants::nucleonMass * elabnuc);
+    if (ECoMNuc < GetMinEnergyPerNucleonCoM() || ECoMNuc > GetMaxEnergyPerNucleonCoM())
+      throw std::runtime_error("NuclearInteraction: energy outside tabulated range!");
+    const double e0 = elabnuc / 1_GeV;
+    double sig;
+    std::cout << "ReadCrossSectionTable: " << ia << " " << ib << " " << e0 << std::endl;
+    signuc2_(ia, ib, e0, sig);
+    std::cout << "ReadCrossSectionTable: sig=" << sig << std::endl;
+    return sig * 1_mb;
+  }
+
+  // TODO: remove elastic cross section?
+  template <>
+  template <typename TParticle>
+  std::tuple<corsika::units::si::CrossSectionType, corsika::units::si::CrossSectionType>
+  NuclearInteraction<corsika::setup::SetupEnvironment>::GetCrossSection(const TParticle& vP,
+                                                        const corsika::Code TargetId) {
+
+    using namespace corsika::units::si;
+
+    if (vP.GetPID() != corsika::Code::Nucleus)
+      throw std::runtime_error(
+          "NuclearInteraction: GetCrossSection: particle not a nucleus!");
+
+    unsigned int const iBeamA = vP.GetNuclearA();
+    HEPEnergyType LabEnergyPerNuc = vP.GetEnergy() / iBeamA;
+    std::cout << "NuclearInteraction: GetCrossSection: called with: beamNuclA= " << iBeamA
+         << " TargetId= " << TargetId << " LabEnergyPerNuc= " << LabEnergyPerNuc / 1_GeV
+         << std::endl;
+
+    // use nuclib to calc. nuclear cross sections
+    // TODO: for now assumes air with hard coded composition
+    // extend to arbitrary mixtures, requires smarter initialization
+    // get nuclib projectile code: nucleon number
+    if (iBeamA > GetMaxNucleusAProjectile() || iBeamA < 2) {
+      std::cout << "NuclearInteraction: beam nucleus outside allowed range for NUCLIB!" << std::endl
+           << "A=" << iBeamA << std::endl;
+      throw std::runtime_error(
+          "NuclearInteraction: GetCrossSection: beam nucleus outside allowed range for "
+          "NUCLIB!");
+    }
+
+    if (hadronicInteraction_.IsValidTarget(TargetId)) {
+      auto const sigProd = ReadCrossSectionTable(iBeamA, TargetId, LabEnergyPerNuc);
+      std::cout << "cross section (mb): " << sigProd / 1_mb << std::endl;
+      return std::make_tuple(sigProd, 0_mb);
+    } else {
+      throw std::runtime_error("target outside range.");
+    }
+    return std::make_tuple(std::numeric_limits<double>::infinity() * 1_mb,
+                           std::numeric_limits<double>::infinity() * 1_mb);
+  }
+
+  template <>
+  template <typename TParticle>
+  corsika::units::si::GrammageType NuclearInteraction<corsika::setup::SetupEnvironment>::GetInteractionLength(
+                               const TParticle& vP) {
+
+    using namespace corsika::units::si;
+
+    // coordinate system, get global frame of reference
+    CoordinateSystem& rootCS =
+        RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+
+    const corsika::Code corsikaBeamId = vP.GetPID();
+
+    if (corsikaBeamId != corsika::Code::Nucleus) {
+      // check if target-style nucleus (enum), these are not allowed as projectile
+      if (corsika::IsNucleus(corsikaBeamId))
+        throw std::runtime_error(
+            "NuclearInteraction: GetInteractionLength: Wrong nucleus type. Nuclear "
+            "projectiles should use NuclearStackExtension!");
+      else {
+        // no nuclear interaction
+        return std::numeric_limits<double>::infinity() * 1_g / (1_cm * 1_cm);
+      }
+    }
+
+    // read from cross section code table
+
+    // FOR NOW: assume target is at rest
+    corsika::MomentumVector pTarget(rootCS, {0.0_GeV, 0.0_GeV, 0.0_GeV});
+
+    // total momentum and energy
+    HEPEnergyType Elab = vP.GetEnergy() + corsika::units::constants::nucleonMass;
+    int const nuclA = vP.GetNuclearA();
+    auto const ElabNuc = vP.GetEnergy() / nuclA;
+
+    corsika::MomentumVector pTotLab(rootCS, {0.0_GeV, 0.0_GeV, 0.0_GeV});
+    pTotLab += vP.GetMomentum();
+    pTotLab += pTarget;
+    auto const pTotLabNorm = pTotLab.norm();
+    // calculate cm. energy
+    const HEPEnergyType ECoM = sqrt(
+        (Elab + pTotLabNorm) * (Elab - pTotLabNorm)); // binomial for numerical accuracy
+    auto const ECoMNN = sqrt(2. * ElabNuc * corsika::units::constants::nucleonMass);
+    std::cout << "NuclearInteraction: LambdaInt: \n"
+         << " input energy: " << Elab / 1_GeV << std::endl
+         << " input energy CoM: " << ECoM / 1_GeV << std::endl
+         << " beam pid:" << corsikaBeamId << std::endl
+         << " beam A: " << nuclA << std::endl
+         << " input energy per nucleon: " << ElabNuc / 1_GeV << std::endl
+         << " input energy CoM per nucleon: " << ECoMNN / 1_GeV << std::endl;
+    //      throw std::runtime_error("stop here");
+
+    // energy limits
+    // TODO: values depend on hadronic interaction model !! this is sibyll specific
+    if (ElabNuc >= 8.5_GeV && ECoMNN >= gMinEnergyPerNucleonCoM_ &&
+        ECoMNN < gMaxEnergyPerNucleonCoM_) {
+
+      // get target from environment
+      /*
+        the target should be defined by the Environment,
+        ideally as full particle object so that the four momenta
+        and the boosts can be defined..
+      */
+      auto const* const currentNode = vP.GetNode();
+      auto const& mediumComposition =
+          currentNode->GetModelProperties().GetNuclearComposition();
+      // determine average interaction length
+      // weighted sum
+      int i = -1;
+      CrossSectionType weightedProdCrossSection = 0_mb;
+      // get weights of components from environment/medium
+      const auto& w = mediumComposition.GetFractions();
+      // loop over components in medium
+      for (auto const targetId : mediumComposition.GetComponents()) {
+        i++;
+        std::cout << "NuclearInteraction: get interaction length for target: " << targetId
+             << std::endl;
+        auto const [productionCrossSection, elaCrossSection] =
+            GetCrossSection(vP, targetId);
+        [[maybe_unused]] auto& dummy_elaCrossSection = elaCrossSection;
+
+        std::cout << "NuclearInteraction: "
+             << "IntLength: nuclib return (mb): " << productionCrossSection / 1_mb
+             << std::endl;
+        weightedProdCrossSection += w[i] * productionCrossSection;
+      }
+      std::cout << "NuclearInteraction: "
+           << "IntLength: weighted CrossSection (mb): " << weightedProdCrossSection / 1_mb
+           << std::endl;
+
+      // calculate interaction length in medium
+      GrammageType const int_length = mediumComposition.GetAverageMassNumber() *
+                                      corsika::units::constants::u / weightedProdCrossSection;
+      std::cout << "NuclearInteraction: "
+           << "interaction length (g/cm2): " << int_length * (1_cm * 1_cm / (0.001_kg))
+           << std::endl;
+
+      return int_length;
+    } else {
+      return std::numeric_limits<double>::infinity() * 1_g / (1_cm * 1_cm);
+    }
+  }
+
+  template <>
+  template <typename TProjectile>
+  corsika::EProcessReturn NuclearInteraction<corsika::setup::SetupEnvironment>::DoInteraction(
+       TProjectile& vP) {
+
+    using namespace corsika::units::si;
+
+    // this routine superimposes different nucleon-nucleon interactions
+    // in a nucleus-nucleus interaction, based the SIBYLL routine SIBNUC
+
+    const auto ProjId = vP.GetPID();
+    // TODO: calculate projectile mass in nuclearStackExtension
+    //      const auto ProjMass = vP.GetMass();
+    std::cout << "NuclearInteraction: DoInteraction: called with:" << ProjId << std::endl;
+
+    // check if target-style nucleus (enum)
+    if (ProjId != corsika::Code::Nucleus)
+      throw std::runtime_error(
+          "NuclearInteraction: DoInteraction: Wrong nucleus type. Nuclear projectiles "
+          "should use NuclearStackExtension!");
+
+    auto const ProjMass =
+        vP.GetNuclearZ() * corsika::Proton::GetMass() +
+        (vP.GetNuclearA() - vP.GetNuclearZ()) * corsika::Neutron::GetMass();
+    std::cout << "NuclearInteraction: projectile mass: " << ProjMass / 1_GeV << std::endl;
+
+    count_++;
+
+    const CoordinateSystem& rootCS =
+        RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+
+    // position and time of interaction, not used in NUCLIB
+    Point pOrig = vP.GetPosition();
+    TimeType tOrig = vP.GetTime();
+
+    std::cout << "Interaction: position of interaction: " << pOrig.GetCoordinates() << std::endl;
+    std::cout << "Interaction: time: " << tOrig << std::endl;
+
+    // projectile nucleon number
+    const unsigned int kAProj = vP.GetNuclearA();
+    if (kAProj > GetMaxNucleusAProjectile())
+      throw std::runtime_error("Projectile nucleus too large for NUCLIB!");
+
+    // kinematics
+    // define projectile nucleus
+    HEPEnergyType const eProjectileLab = vP.GetEnergy();
+    auto const pProjectileLab = vP.GetMomentum();
+    const FourVector PprojLab(eProjectileLab, pProjectileLab);
+
+    std::cout << "NuclearInteraction: eProj lab: " << eProjectileLab / 1_GeV << std::endl
+         << "NuclearInteraction: pProj lab: " << pProjectileLab.GetComponents() / 1_GeV
+         << std::endl;
+
+    // define projectile nucleon
+    HEPEnergyType const eProjectileNucLab = vP.GetEnergy() / kAProj;
+    auto const pProjectileNucLab = vP.GetMomentum() / kAProj;
+    const FourVector PprojNucLab(eProjectileNucLab, pProjectileNucLab);
+
+    std::cout << "NuclearInteraction: eProjNucleon lab: " << eProjectileNucLab / 1_GeV << std::endl
+         << "NuclearInteraction: pProjNucleon lab: "
+         << pProjectileNucLab.GetComponents() / 1_GeV << std::endl;
+
+    // define target
+    // always a nucleon
+    // target is always at rest
+    const auto eTargetNucLab = 0_GeV + corsika::units::constants::nucleonMass;
+    const auto pTargetNucLab =
+        corsika::MomentumVector(rootCS, 0_GeV, 0_GeV, 0_GeV);
+    const FourVector PtargNucLab(eTargetNucLab, pTargetNucLab);
+
+    std::cout << "NuclearInteraction: etarget lab: " << eTargetNucLab / 1_GeV << std::endl
+         << "NuclearInteraction: ptarget lab: " << pTargetNucLab.GetComponents() / 1_GeV
+         << std::endl;
+
+    // center-of-mass energy in nucleon-nucleon frame
+    auto const PtotNN4 = PtargNucLab + PprojNucLab;
+    HEPEnergyType EcmNN = PtotNN4.GetNorm();
+    std::cout << "NuclearInteraction: nuc-nuc cm energy: " << EcmNN / 1_GeV << std::endl;
+
+    if (!hadronicInteraction_.IsValidCoMEnergy(EcmNN)) {
+      std::cout << "NuclearInteraction: nuc-nuc. CoM energy too low for hadronic "
+              "interaction model!"
+           << std::endl;
+      throw std::runtime_error("NuclearInteraction: DoInteraction: energy too low!");
+    }
+
+    // define boost to NUCLEON-NUCLEON frame
+    COMBoost const boost(PprojNucLab, corsika::units::constants::nucleonMass);
+    // boost projecticle
+    auto const PprojNucCoM = boost.toCoM(PprojNucLab);
+
+    // boost target
+    auto const PtargNucCoM = boost.toCoM(PtargNucLab);
+
+    std::cout << "Interaction: ebeam CoM: " << PprojNucCoM.GetTimeLikeComponent() / 1_GeV
+         << std::endl
+         << "Interaction: pbeam CoM: "
+         << PprojNucCoM.GetSpaceLikeComponents().GetComponents() / 1_GeV << std::endl;
+    std::cout << "Interaction: etarget CoM: " << PtargNucCoM.GetTimeLikeComponent() / 1_GeV
+         << std::endl
+         << "Interaction: ptarget CoM: "
+         << PtargNucCoM.GetSpaceLikeComponents().GetComponents() / 1_GeV << std::endl;
+
+    // sample target nucleon number
+    //
+    // proton stand-in for nucleon
+    const auto beamId = corsika::Proton::GetCode();
+    auto const* const currentNode = vP.GetNode();
+    const auto& mediumComposition =
+        currentNode->GetModelProperties().GetNuclearComposition();
+    std::cout << "get nucleon-nucleus cross sections for target materials.." << std::endl;
+    // get cross sections for target materials
+    // using nucleon-target-nucleus cross section!!!
+    /*
+      Here we read the cross section from the interaction model again,
+      should be passed from GetInteractionLength if possible
+    */
+    auto const& compVec = mediumComposition.GetComponents();
+    std::vector<CrossSectionType> cross_section_of_components(compVec.size());
+
+    for (size_t i = 0; i < compVec.size(); ++i) {
+      auto const targetId = compVec[i];
+      std::cout << "target component: " << targetId << std::endl;
+      std::cout << "beam id: " << beamId << std::endl;
+      const auto [sigProd, sigEla] =
+          hadronicInteraction_.GetCrossSection(beamId, targetId, EcmNN);
+      cross_section_of_components[i] = sigProd;
+      [[maybe_unused]] auto sigElaCopy = sigEla; // ONLY TO AVOID COMPILER WARNINGS
+    }
+
+    const auto targetCode =
+        mediumComposition.SampleTarget(cross_section_of_components, RNG_);
+    std::cout << "Interaction: target selected: " << targetCode << std::endl;
+    /*
+      FOR NOW: allow nuclei with A<18 or protons only.
+      when medium composition becomes more complex, approximations will have to be
+      allowed air in atmosphere also contains some Argon.
+    */
+    int kATarget = -1;
+    if (IsNucleus(targetCode)) kATarget = GetNucleusA(targetCode);
+    if (targetCode == corsika::Proton::GetCode()) kATarget = 1;
+    std::cout << "NuclearInteraction: nuclib target code: " << kATarget << std::endl;
+    if (!hadronicInteraction_.IsValidTarget(targetCode))
+      throw std::runtime_error("target outside range. ");
+    // end of target sampling
+
+    // superposition
+    std::cout << "NuclearInteraction: sampling nuc. multiple interaction structure.. " << std::endl;
+    // get nucleon-nucleon cross section
+    // (needed to determine number of nucleon-nucleon scatterings)
+    const auto protonId = corsika::Proton::GetCode();
+    const auto [prodCrossSection, elaCrossSection] =
+        hadronicInteraction_.GetCrossSection(protonId, protonId, EcmNN);
+    const double sigProd = prodCrossSection / 1_mb;
+    const double sigEla = elaCrossSection / 1_mb;
+    // sample number of interactions (only input variables, output in common cnucms)
+    // nuclear multiple scattering according to glauber (r.i.p.)
+    int_nuc_(kATarget, kAProj, sigProd, sigEla);
+
+    std::cout << "number of nucleons in target           : " << kATarget << std::endl
+         << "number of wounded nucleons in target   : " << cnucms_.na << std::endl
+         << "number of nucleons in projectile       : " << kAProj << std::endl
+         << "number of wounded nucleons in project. : " << cnucms_.nb << std::endl
+         << "number of inel. nuc.-nuc. interactions : " << cnucms_.ni << std::endl
+         << "number of elastic nucleons in target   : " << cnucms_.nael << std::endl
+         << "number of elastic nucleons in project. : " << cnucms_.nbel << std::endl
+         << "impact parameter: " << cnucms_.b << std::endl;
+
+    // calculate fragmentation
+    std::cout << "calculating nuclear fragments.." << std::endl;
+    // number of interactions
+    // include elastic
+    const int nElasticNucleons = cnucms_.nbel;
+    const int nInelNucleons = cnucms_.nb;
+    const int nIntProj = nInelNucleons + nElasticNucleons;
+    const double impactPar = cnucms_.b; // only needed to avoid passing common var.
+    int nFragments;
+    // number of fragments is limited to 60
+    int AFragments[60];
+    // call fragmentation routine
+    // input: target A, projectile A, number of int. nucleons in projectile, impact
+    // parameter (fm) output: nFragments, AFragments in addition the momenta ar stored
+    // in pf in common fragments, neglected
+    fragm_(kATarget, kAProj, nIntProj, impactPar, nFragments, AFragments);
+
+    // this should not occur but well :)
+    if (nFragments > GetMaxNFragments())
+      throw std::runtime_error("Number of nuclear fragments in NUCLIB exceeded!");
+
+    std::cout << "number of fragments: " << nFragments << std::endl;
+    for (int j = 0; j < nFragments; ++j)
+      std::cout << "fragment: " << j << " A=" << AFragments[j]
+           << " px=" << fragments_.ppp[j][0] << " py=" << fragments_.ppp[j][1]
+           << " pz=" << fragments_.ppp[j][2] << std::endl;
+
+    std::cout << "adding nuclear fragments to particle stack.." << std::endl;
+    // put nuclear fragments on corsika stack
+    for (int j = 0; j < nFragments; ++j) {
+      corsika::Code specCode;
+      const auto nuclA = AFragments[j];
+      // get Z from stability line
+      const auto nuclZ = int(nuclA / 2.15 + 0.7);
+
+      // TODO: do we need to catch single nucleons??
+      if (nuclA == 1)
+        // TODO: sample neutron or proton
+        specCode = corsika::Code::Proton;
+      else
+        specCode = corsika::Code::Nucleus;
+
+      // TODO: mass of nuclei?
+      const HEPMassType mass =
+          corsika::Proton::GetMass() * nuclZ +
+          (nuclA - nuclZ) * corsika::Neutron::GetMass(); // this neglects binding energy
+
+      std::cout << "NuclearInteraction: adding fragment: " << specCode << std::endl;
+      std::cout << "NuclearInteraction: A,Z: " << nuclA << "," << nuclZ << std::endl;
+      std::cout << "NuclearInteraction: mass: " << mass / 1_GeV << std::endl;
+
+      // CORSIKA 7 way
+      // spectators inherit momentum from original projectile
+      const double mass_ratio = mass / ProjMass;
+
+      std::cout << "NuclearInteraction: mass ratio " << mass_ratio << std::endl;
+
+      auto const Plab = PprojLab * mass_ratio;
+
+      std::cout << "NuclearInteraction: fragment momentum: "
+           << Plab.GetSpaceLikeComponents().GetComponents() / 1_GeV << std::endl;
+
+      if (nuclA == 1)
+        // add nucleon
+        vP.AddSecondary(
+            std::tuple<corsika::Code, corsika::units::si::HEPEnergyType, corsika::MomentumVector,
+                  corsika::Point, corsika::units::si::TimeType>{
+                specCode, Plab.GetTimeLikeComponent(), Plab.GetSpaceLikeComponents(),
+                pOrig, tOrig});
+      else
+        // add nucleus
+        vP.AddSecondary(std::tuple<corsika::Code, corsika::units::si::HEPEnergyType,
+                              corsika::MomentumVector, corsika::Point,
+                              corsika::units::si::TimeType, unsigned short, unsigned short>{
+            specCode, Plab.GetTimeLikeComponent(), Plab.GetSpaceLikeComponents(), pOrig,
+            tOrig, nuclA, nuclZ});
+    }
+
+    // add elastic nucleons to corsika stack
+    // TODO: the elastic interaction could be external like the inelastic interaction,
+    // e.g. use existing ElasticModel
+    std::cout << "adding elastically scattered nucleons to particle stack.." << std::endl;
+    for (int j = 0; j < nElasticNucleons; ++j) {
+      // TODO: sample proton or neutron
+      auto const elaNucCode = corsika::Code::Proton;
+
+      // CORSIKA 7 way
+      // elastic nucleons inherit momentum from original projectile
+      // neglecting momentum transfer in interaction
+      const double mass_ratio = corsika::GetMass(elaNucCode) / ProjMass;
+      auto const Plab = PprojLab * mass_ratio;
+
+      vP.AddSecondary(
+          std::tuple<corsika::Code, corsika::units::si::HEPEnergyType, corsika::MomentumVector,
+                corsika::Point, corsika::units::si::TimeType>{
+              elaNucCode, Plab.GetTimeLikeComponent(), Plab.GetSpaceLikeComponents(),
+              pOrig, tOrig});
+    }
+
+    // add inelastic interactions
+    std::cout << "calculate inelastic nucleon-nucleon interactions.." << std::endl;
+    for (int j = 0; j < nInelNucleons; ++j) {
+      // TODO: sample neutron or proton
+      auto pCode = corsika::Proton::GetCode();
+      // temporarily add to stack, will be removed after interaction in DoInteraction
+      std::cout << "inelastic interaction no. " << j << std::endl;
+      auto inelasticNucleon = vP.AddSecondary(
+          std::tuple<corsika::Code, corsika::units::si::HEPEnergyType, corsika::MomentumVector,
+                corsika::Point, corsika::units::si::TimeType>{
+              pCode, PprojNucLab.GetTimeLikeComponent(),
+              PprojNucLab.GetSpaceLikeComponents(), pOrig, tOrig});
+      // create inelastic interaction
+      std::cout << "calling HadronicInteraction..." << std::endl;
+      hadronicInteraction_.DoInteraction(inelasticNucleon);
+    }
+
+    std::cout << "NuclearInteraction: DoInteraction: done" << std::endl;
+
+    return corsika::EProcessReturn::eOk;
+  }
+
+} // namespace corsika::sibyll
+
diff --git a/corsika/detail/modules/sibyll/ParticleConversion.inl b/corsika/detail/modules/sibyll/ParticleConversion.inl
new file mode 100644
index 000000000..fbc978d2a
--- /dev/null
+++ b/corsika/detail/modules/sibyll/ParticleConversion.inl
@@ -0,0 +1,26 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+
+using namespace corsika::sibyll;
+
+corsika::units::si::HEPMassType corsika::sibyll::GetSibyllMass(
+    corsika::Code const pCode) {
+  using namespace corsika::units;
+  using namespace corsika::units::si;
+  if (pCode == corsika::Code::Nucleus)
+    throw std::runtime_error("Cannot GetMass() of particle::Nucleus -> unspecified");
+  auto sCode = ConvertToSibyllRaw(pCode);
+  if (sCode == 0)
+    throw std::runtime_error("GetSibyllMass: unknown particle!");
+  else
+    return sqrt(get_sibyll_mass2(sCode)) * 1_GeV;
+}
diff --git a/corsika/framework/CMakeLists.txt b/corsika/framework/CMakeLists.txt
new file mode 100644
index 000000000..8fabe1c93
--- /dev/null
+++ b/corsika/framework/CMakeLists.txt
@@ -0,0 +1,21 @@
+set (input_dir ${PROJECT_SOURCE_DIR}/corsika/framework/core)
+set (output_dir ${PROJECT_BINARY_DIR}/corsika/framework/core)
+
+file (MAKE_DIRECTORY ${output_dir})
+
+add_custom_command (
+  OUTPUT  ${output_dir}/GeneratedParticleProperties.inc
+          ${output_dir}/particle_db.pkl
+  COMMAND ${input_dir}/pdxml_reader.py ${input_dir}/ParticleData.xml ${input_dir}/NuclearData.xml  ${input_dir}/ParticleClassNames.xml
+  DEPENDS ${input_dir}/pdxml_reader.py
+          ${input_dir}/ParticleData.xml
+          ${input_dir}/NuclearData.xml
+          ${input_dir}/ParticleClassNames.xml
+  WORKING_DIRECTORY
+          ${output_dir}
+  COMMENT "Read PYTHIA8 particle data and produce C++ source code GeneratedParticleProperties.inc"
+  VERBATIM
+  )
+
+add_custom_target (GenParticlesHeaders DEPENDS ${output_dir}/GeneratedParticleProperties.inc)
+add_dependencies (CORSIKA8 GenParticlesHeaders)
diff --git a/corsika/framework/core/CMakeLists.txt b/corsika/framework/core/CMakeLists.txt
new file mode 100644
index 000000000..c922c93da
--- /dev/null
+++ b/corsika/framework/core/CMakeLists.txt
@@ -0,0 +1,18 @@
+add_custom_command (
+  OUTPUT  ${PROJECT_BINARY_DIR}/GeneratedParticleProperties.inc
+          ${PROJECT_BINARY_DIR}/particle_db.pkl
+  COMMAND ${PROJECT_SOURCE_DIR}/Framework/Particles/pdxml_reader.py 
+          ${PROJECT_SOURCE_DIR}/Framework/Particles/ParticleData.xml
+          ${PROJECT_SOURCE_DIR}/Framework/Particles/NuclearData.xml
+          ${PROJECT_SOURCE_DIR}/Framework/Particles/ParticleClassNames.xml
+  DEPENDS pdxml_reader.py
+          ParticleData.xml
+          NuclearData.xml
+          ParticleClassNames.xml
+  WORKING_DIRECTORY
+          ${PROJECT_BINARY_DIR}/
+  COMMENT "Read PYTHIA8 particle data and produce C++ source code GeneratedParticleProperties.inc"
+  VERBATIM
+  )
+
+add_dependencies (CORSIKA8 ${PROJECT_BINARY_DIR}/Framework/Particles/GeneratedParticleProperties.inc)
diff --git a/corsika/framework/core/Cascade.hpp b/corsika/framework/core/Cascade.hpp
new file mode 100644
index 000000000..0a7bf3d7b
--- /dev/null
+++ b/corsika/framework/core/Cascade.hpp
@@ -0,0 +1,125 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <cassert>
+#include <cmath>
+#include <limits>
+
+//FIXME: importing what from BOOST ?
+#include <boost/type_index.hpp>
+
+#include <corsika/media/Environment.hpp>
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
+#include <corsika/framework/random/ExponentialDistribution.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/random/UniformRealDistribution.hpp>
+#include <corsika/framework/sequence/ProcessReturn.hpp>
+#include <corsika/framework/stack/SecondaryView.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+//FIXME: importing what from BOOST ?
+//using boost::typeindex::type_id_with_cvr;
+
+#include <fstream>
+
+/**
+ * The cascade namespace assembles all objects needed to simulate full particles cascades.
+ */
+
+namespace corsika {
+
+  /**
+   * \class Cascade
+   *
+   * The Cascade class is constructed from template arguments making
+   * it very versatile. Via the template arguments physics models are
+   * plugged into the cascade simulation.
+   *
+   * <b>TTracking</b> must be a class according to the
+   * TrackingInterface providing the functions:
+   *
+   * <code>
+   * auto GetTrack(Particle const& p)</auto>,
+   * with the return type <code>geometry::Trajectory<corsika::Line>
+   * </code>
+   *
+   * <b>TProcessList</b> must be a ProcessSequence.   *
+   * <b>Stack</b> is the storage object for particle data, i.e. with
+   * Particle class type <code>Stack::ParticleType</code>
+   *
+   *
+   */
+  template <typename TTracking, typename TProcessList, typename TStack,
+  	  	  	  typename TStackView = corsika::StackView>
+  class Cascade
+  {
+
+    typedef typename TStack::ParticleType Particle;
+    typedef std::remove_pointer_t<decltype(((Particle*)nullptr)->GetNode())> VolumeTreeNode;
+    typedef typename VolumeTreeNode::IModelProperties MediumInterface;
+
+  public:
+
+    Cascade() = delete;
+
+    Cascade(corsika::Environment<MediumInterface> const& env, TTracking& tr,
+    		 TProcessList& pl, TStack& stack):
+    	fEnvironment(env),
+		fTracking(tr),
+		fProcessSequence(pl),
+		fStack(stack)
+    { }
+
+    /**
+     * The Init function is called before the actual cascade simulations.
+     * All components of the Cascade simulation must be configured here.
+     */
+    void Init();
+
+    /**
+     * set the nodes for all particles on the stack according to their numerical
+     * position
+     */
+    void SetNodes();
+
+    /**
+     * The Run function is the main simulation loop, which processes
+     * particles from the Stack until the Stack is empty.
+     */
+    void Run();
+
+    /**
+     * Force an interaction of the top particle of the stack at its current position.
+     * Note that SetNodes() or an equivalent procedure needs to be called first if you
+     * want to call forceInteraction() for the primary interaction.
+     */
+    void forceInteraction();
+
+  private:
+
+    void Step(Particle& vParticle);
+
+    auto decay(Particle& particle, decltype(std::declval<TStackView>().GetProjectile()) projectile);
+
+    auto interaction(particle_type& particle, decltype(std::declval<TStackView>().GetProjectile()) projectile) ;
+
+    corsika::Environment<MediumInterface> const& fEnvironment;
+    TTracking& fTracking;
+    TProcessList& fProcessSequence;
+    TStack& fStack;
+    corsika::RNG& fRNG =
+        corsika::RNGManager::GetInstance().GetRandomStream("cascade");
+
+  };
+
+} // namespace corsika
+
+#include <corsika/detail/framework/core/Cascade.inl>
diff --git a/Framework/Particles/NuclearData.xml b/corsika/framework/core/NuclearData.xml
similarity index 100%
rename from Framework/Particles/NuclearData.xml
rename to corsika/framework/core/NuclearData.xml
diff --git a/Framework/Particles/ParticleClassNames.xml b/corsika/framework/core/ParticleClassNames.xml
similarity index 100%
rename from Framework/Particles/ParticleClassNames.xml
rename to corsika/framework/core/ParticleClassNames.xml
diff --git a/corsika/framework/core/ParticleData.xml b/corsika/framework/core/ParticleData.xml
new file mode 100644
index 000000000..40cd64c8a
--- /dev/null
+++ b/corsika/framework/core/ParticleData.xml
@@ -0,0 +1,9721 @@
+<chapter name="Particle Data">
+
+  <!-- MR: copied from Pythia 8235 -->
+<particle id="0" name="void" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+
+<!--
+<particle id="1" name="d" antiName="dbar" spinType="2" chargeType="-1" colType="1" 
+          m0="0.33000"> 
+</particle> 
+ 
+<particle id="2" name="u" antiName="ubar" spinType="2" chargeType="2" colType="1" 
+          m0="0.33000"> 
+</particle> 
+ 
+<particle id="3" name="s" antiName="sbar" spinType="2" chargeType="-1" colType="1" 
+          m0="0.50000"> 
+</particle> 
+ 
+<particle id="4" name="c" antiName="cbar" spinType="2" chargeType="2" colType="1" 
+          m0="1.50000"> 
+</particle> 
+ 
+<particle id="5" name="b" antiName="bbar" spinType="2" chargeType="-1" colType="1" 
+          m0="4.80000"> 
+</particle> 
+ 
+<particle id="6" name="t" antiName="tbar" spinType="2" chargeType="2" colType="1" 
+          m0="171.00000" mWidth="1.40000" mMin="86.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000300" products="24 1"/> 
+ <channel onMode="1" bRatio="0.0017650" products="24 3"/> 
+ <channel onMode="1" bRatio="0.9982050" products="24 5"/> 
+ <channel onMode="0" bRatio="0.0000000" products="37 5"/> 
+</particle> 
+ 
+<particle id="7" name="b'" antiName="b'bar" spinType="2" chargeType="-1" colType="1" 
+          m0="400.00000"> 
+ <channel onMode="1" bRatio="0.0000000" products="-24 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-24 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-24 6"/> 
+ <channel onMode="1" bRatio="1.0000000" products="-24 8"/> 
+</particle> 
+ 
+<particle id="8" name="t'" antiName="t'bar" spinType="2" chargeType="2" colType="1" 
+          m0="400.00000"> 
+ <channel onMode="1" bRatio="0.0000000" products="24 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="24 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="24 5"/> 
+ <channel onMode="1" bRatio="1.0000000" products="24 7"/> 
+</particle> 
+-->
+ 
+<particle id="11" name="e-" antiName="e+" spinType="2" chargeType="-3" colType="0" 
+          m0="5.110e-04"> 
+</particle> 
+ 
+<particle id="12" name="nu_e" antiName="nu_ebar" spinType="2" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="13" name="mu-" antiName="mu+" spinType="2" chargeType="-3" colType="0" 
+          m0="0.10566" tau0="6.58654e+05"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="22" products="-12 11 14"/> 
+</particle> 
+ 
+<particle id="14" name="nu_mu" antiName="nu_mubar" spinType="2" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="15" name="tau-" antiName="tau+" spinType="2" chargeType="-3" colType="0" 
+          m0="1.77682" tau0="8.71100e-02"> 
+ <channel onMode="1" bRatio="0.1076825" meMode="1521" products="16 -211"/> 
+ <channel onMode="1" bRatio="0.0069601" meMode="1521" products="16 -321"/> 
+ <channel onMode="1" bRatio="0.1772832" meMode="1531" products="16 11 -12"/> 
+ <channel onMode="1" bRatio="0.1731072" meMode="1531" products="16 13 -14"/> 
+ <channel onMode="1" bRatio="0.2537447" meMode="1532" products="16 111 -211"/> 
+ <channel onMode="1" bRatio="0.0015809" meMode="1532" products="16 311 -321"/> 
+ <channel onMode="1" bRatio="0.0001511" meMode="1532" products="16 221 -321"/> 
+ <channel onMode="1" bRatio="0.0083521" meMode="1533" products="16 -211 -311"/> 
+ <channel onMode="1" bRatio="0.0042655" meMode="1533" products="16 111 -321"/> 
+ <channel onMode="1" bRatio="0.0924697" meMode="1541" products="16 111 111 -211"/> 
+ <channel onMode="1" bRatio="0.0925691" meMode="1541" products="16 -211 -211 211"/> 
+ <channel onMode="1" bRatio="0.0039772" meMode="1542" products="16 111 -211 -311"/> 
+ <channel onMode="1" bRatio="0.0034701" meMode="1542" products="16 -211 211 -321"/> 
+ <channel onMode="1" bRatio="0.0014318" meMode="1542" products="16 -211 -321 321"/> 
+ <channel onMode="1" bRatio="0.0015809" meMode="1542" products="16 111 311 -321"/> 
+ <channel onMode="1" bRatio="0.0011932" meMode="1542" products="16 130 -211 310"/> 
+ <channel onMode="1" bRatio="0.0006463" meMode="1542" products="16 111 111 -321"/> 
+ <channel onMode="1" bRatio="0.0002386" meMode="1542" products="16 130 130 -211"/> 
+ <channel onMode="1" bRatio="0.0002386" meMode="1542" products="16 -211 310 310"/> 
+ <channel onMode="1" bRatio="0.0013821" meMode="1543" products="16 111 -211 221"/> 
+ <channel onMode="1" bRatio="0.0017520" meMode="1544" products="16 22 111 -211"/> 
+ <channel onMode="1" bRatio="0.0459365" meMode="1551" products="16 111 -211 -211 211"/> 
+ <channel onMode="1" bRatio="0.0104401" meMode="1551" products="16 111 111 111 -211"/> 
+ <channel onMode="1" bRatio="0.0049069" meMode="1561" products="16 111 111 -211 -211 211"/> 
+ <channel onMode="1" bRatio="0.0009515" meMode="1561" products="16 111 111 111 111 -211"/> 
+ <channel onMode="1" bRatio="0.0008342" meMode="1561" products="16 -211 -211 -211 211 211"/> 
+ <channel onMode="1" bRatio="0.0001631" meMode="0" products="16 -211 -211 211 221"/> 
+ <channel onMode="1" bRatio="0.0001491" meMode="0" products="16 111 111 -211 221"/> 
+ <channel onMode="1" bRatio="0.0001392" meMode="0" products="16 111 111 -211 223"/> 
+ <channel onMode="1" bRatio="0.0001193" meMode="0" products="16 -211 -211 211 223"/> 
+ <channel onMode="1" bRatio="0.0004077" meMode="0" products="16 223 -321"/> 
+ <channel onMode="1" bRatio="0.0004773" meMode="0" products="16 111 111 111 -321"/> 
+ <channel onMode="1" bRatio="0.0003052" meMode="0" products="16 111 -211 211 -321"/> 
+ <channel onMode="1" bRatio="0.0002784" meMode="0" products="16 221 -323"/> 
+ <channel onMode="1" bRatio="0.0002366" meMode="0" products="16 111 111 -211 -311"/> 
+ <channel onMode="1" bRatio="0.0002237" meMode="0" products="16 -211 -211 211 -311"/> 
+ <channel onMode="1" bRatio="0.0002953" meMode="0" products="16 111 -211 -311 311"/> 
+ <channel onMode="1" bRatio="0.0000590" meMode="0" products="16 111 -211 -321 321"/> 
+</particle> 
+ 
+<particle id="16" name="nu_tau" antiName="nu_taubar" spinType="2" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<!--
+<particle id="17" name="tau'-" antiName="tau'+" spinType="2" chargeType="-3" colType="0" 
+          m0="400.00000"> 
+ <channel onMode="1" bRatio="1.0000000" products="-24 18"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="18" name="nu'_tau" antiName="nu'_taubar" spinType="2" chargeType="0" colType="0" 
+          m0="400.00000"> 
+ <channel onMode="1" bRatio="1.0000000" products="24 17"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="21" name="g" spinType="3" chargeType="0" colType="2" 
+          m0="0.00000"> 
+</particle> 
+-->
+ 
+<particle id="22" name="gamma" spinType="3" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<!--
+<particle id="23" name="Z0" spinType="3" chargeType="0" colType="0" 
+          m0="91.18760" mWidth="2.49520" mMin="10.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.1539950" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.1194200" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.1539840" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.1192590" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.1522720" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0335760" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0668060" products="12 -12"/> 
+ <channel onMode="1" bRatio="0.0335760" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0668060" products="14 -14"/> 
+ <channel onMode="1" bRatio="0.0335000" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0668060" products="16 -16"/> 
+</particle> 
+ 
+<particle id="24" name="W+" antiName="W-" spinType="3" chargeType="3" colType="0" 
+          m0="80.38500" mWidth="2.08500" mMin="10.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.3213690" products="-1 2"/> 
+ <channel onMode="1" bRatio="0.0164940" products="-1 4"/> 
+ <channel onMode="1" bRatio="0.0165020" products="-3 2"/> 
+ <channel onMode="1" bRatio="0.3206150" products="-3 4"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-5 2"/> 
+ <channel onMode="1" bRatio="0.0005910" products="-5 4"/> 
+ <channel onMode="1" bRatio="0.1081660" products="-11 12"/> 
+ <channel onMode="1" bRatio="0.1081660" products="-13 14"/> 
+ <channel onMode="1" bRatio="0.1080870" products="-15 16"/> 
+</particle> 
+ 
+<particle id="25" name="h0" spinType="1" chargeType="0" colType="0" 
+          m0="125.00000" mWidth="0.00374" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000009" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0000002" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0002361" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0335602" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.5876728" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0002445" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0690800" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0630585" products="21 21"/> 
+ <channel onMode="1" bRatio="0.0028438" products="22 22"/> 
+ <channel onMode="1" bRatio="0.0017601" products="22 23"/> 
+ <channel onMode="1" bRatio="0.0259708" products="23 23"/> 
+ <channel onMode="1" bRatio="0.2155720" products="24 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000022 1000022"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000023 1000022"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000023 1000023"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000025 1000022"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000025 1000023"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000025 1000025"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000022"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000023"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000025"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000035"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000024 -1000024"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000024 -1000037"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000037 -1000024"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000037 -1000037"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000001 -1000001"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000001 -2000001"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000001 -2000001"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000001 2000001"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000002 -1000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000002 -2000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000002 -2000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000002 2000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000003 -1000003"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000003 -2000003"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000003 -2000003"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000003 2000003"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000004 -1000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000004 -2000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000004 -2000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000004 2000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000005 -1000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000005 -2000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000005 -2000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000005 2000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000006 -1000006"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000006 -2000006"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000006 -2000006"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000006 2000006"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000011 -1000011"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000011 -2000011"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000011 -2000011"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000011 2000011"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000012 -1000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000012 -2000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000012 -2000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000012 2000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000013 -1000013"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000013 -2000013"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000013 -2000013"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000013 2000013"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000014 -1000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000014 -2000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000014 -2000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000014 2000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000015 -1000015"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000015 -2000015"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000015 -2000015"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000015 2000015"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000016 -1000016"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000016 -2000016"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000016 -2000016"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000016 2000016"/> 
+</particle> 
+ 
+<particle id="32" name="Z'0" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="14.54029" mMin="10.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.1458350" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.1132760" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.1458350" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.1132710" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.1457810" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0490020" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="7 -7"/> 
+ <channel onMode="1" bRatio="0.0000000" products="8 -8"/> 
+ <channel onMode="1" bRatio="0.0320250" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0636420" products="12 -12"/> 
+ <channel onMode="1" bRatio="0.0320250" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0636420" products="14 -14"/> 
+ <channel onMode="1" bRatio="0.0320220" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0636420" products="16 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="17 -17"/> 
+ <channel onMode="1" bRatio="0.0000000" products="18 -18"/> 
+ <channel onMode="1" bRatio="0.0000000" products="24 -24"/> 
+</particle> 
+ 
+<particle id="33" name="Z''0" spinType="3" chargeType="0" colType="0" 
+          m0="900.00000"> 
+</particle> 
+ 
+<particle id="34" name="W'+" antiName="W'-" spinType="3" chargeType="3" colType="0" 
+          m0="500.00000" mWidth="16.66099" mMin="10.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.2512250" products="-1 2"/> 
+ <channel onMode="1" bRatio="0.0129000" products="-1 4"/> 
+ <channel onMode="1" bRatio="0.0000060" products="-1 6"/> 
+ <channel onMode="1" bRatio="0.0129000" products="-3 2"/> 
+ <channel onMode="1" bRatio="0.2507640" products="-3 4"/> 
+ <channel onMode="1" bRatio="0.0003800" products="-3 6"/> 
+ <channel onMode="1" bRatio="0.0000080" products="-5 2"/> 
+ <channel onMode="1" bRatio="0.0004650" products="-5 4"/> 
+ <channel onMode="1" bRatio="0.2154180" products="-5 6"/> 
+ <channel onMode="1" bRatio="0.0853120" products="-11 12"/> 
+ <channel onMode="1" bRatio="0.0853120" products="-13 14"/> 
+ <channel onMode="1" bRatio="0.0853100" products="-15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="24 23"/> 
+</particle> 
+ 
+<particle id="35" name="H0" spinType="1" chargeType="0" colType="0" 
+          m0="300.00000" mWidth="8.38842" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0000490" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.0007740" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0000740" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0004170" products="21 21"/> 
+ <channel onMode="1" bRatio="0.0000150" products="22 22"/> 
+ <channel onMode="1" bRatio="0.0000610" products="22 23"/> 
+ <channel onMode="1" bRatio="0.3067100" products="23 23"/> 
+ <channel onMode="1" bRatio="0.6890110" products="24 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="23 25"/> 
+ <channel onMode="1" bRatio="0.0028890" products="25 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="24 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="37 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="23 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="25 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="36 36"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000022 1000022"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000023 1000022"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000023 1000023"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000025 1000022"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000025 1000023"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000025 1000025"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000022"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000023"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000025"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000035"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000024 -1000024"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000024 -1000037"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000037 -1000024"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000037 -1000037"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000001 -1000001"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000001 -2000001"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000001 -2000001"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000001 2000001"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000002 -1000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000002 -2000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000002 -2000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000002 2000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000003 -1000003"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000003 -2000003"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000003 -2000003"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000003 2000003"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000004 -1000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000004 -2000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000004 -2000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000004 2000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000005 -1000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000005 -2000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000005 -2000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000005 2000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000006 -1000006"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000006 -2000006"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000006 -2000006"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000006 2000006"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000011 -1000011"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000011 -2000011"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000011 -2000011"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000011 2000011"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000012 -1000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000012 -2000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000012 -2000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000012 2000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000013 -1000013"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000013 -2000013"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000013 -2000013"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000013 2000013"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000014 -1000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000014 -2000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000014 -2000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000014 2000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000015 -1000015"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000015 -2000015"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000015 -2000015"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000015 2000015"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000016 -1000016"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000016 -2000016"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000016 -2000016"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000016 2000016"/> 
+</particle> 
+ 
+<particle id="36" name="A0" spinType="1" chargeType="0" colType="0" 
+          m0="300.00000" mWidth="3.37520" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0000010" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0001210" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.0019240" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0000010" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0001840" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0031060" products="21 21"/> 
+ <channel onMode="1" bRatio="0.0000150" products="22 22"/> 
+ <channel onMode="1" bRatio="0.0000030" products="22 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="23 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="24 -24"/> 
+ <channel onMode="1" bRatio="0.9946460" products="23 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="25 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="24 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="37 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000022 1000022"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000023 1000022"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000023 1000023"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000025 1000022"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000025 1000023"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000025 1000025"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000022"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000023"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000025"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000035"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000024 -1000024"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000024 -1000037"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000037 -1000024"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000037 -1000037"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000001 -1000001"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000001 -2000001"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000001 -2000001"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000001 2000001"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000002 -1000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000002 -2000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000002 -2000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000002 2000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000003 -1000003"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000003 -2000003"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000003 -2000003"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000003 2000003"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000004 -1000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000004 -2000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000004 -2000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000004 2000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000005 -1000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000005 -2000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000005 -2000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000005 2000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000006 -1000006"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000006 -2000006"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000006 -2000006"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000006 2000006"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000011 -1000011"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000011 -2000011"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000011 -2000011"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000011 2000011"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000012 -1000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000012 -2000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000012 -2000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000012 2000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000013 -1000013"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000013 -2000013"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000013 -2000013"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000013 2000013"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000014 -1000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000014 -2000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000014 -2000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000014 2000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000015 -1000015"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000015 -2000015"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000015 -2000015"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000015 2000015"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000016 -1000016"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000016 -2000016"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000016 -2000016"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000016 2000016"/> 
+</particle> 
+ 
+<particle id="37" name="H+" antiName="H-" spinType="1" chargeType="3" colType="0" 
+          m0="300.00000" mWidth="4.17669" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 2"/> 
+ <channel onMode="1" bRatio="0.0000210" products="-3 4"/> 
+ <channel onMode="1" bRatio="0.0901350" products="-5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 12"/> 
+ <channel onMode="1" bRatio="0.0000130" products="-13 14"/> 
+ <channel onMode="1" bRatio="0.0037140" products="-15 16"/> 
+ <channel onMode="1" bRatio="0.9061170" products="24 25"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000022 1000024"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000022 1000037"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000023 1000024"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000023 1000037"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000025 1000024"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000025 1000037"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000024"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000035 1000037"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000006 -1000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000006 -1000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000006 -2000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="2000006 -2000005"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000001 1000002"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000003 1000004"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000011 1000012"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000013 1000014"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-1000015 1000016"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="-2000015 1000016"/> 
+</particle> 
+ 
+<particle id="39" name="Graviton" spinType="5" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="40" name="BlackHole" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="41" name="R0" antiName="Rbar0" spinType="3" chargeType="0" colType="0" 
+          m0="5.000e+03" mWidth="4.173e+02" mMin="1.000e+02" mMax="0.000e+00"> 
+ <channel onMode="1" bRatio="0.2151190" products="1 -3"/> 
+ <channel onMode="1" bRatio="0.2151190" products="2 -4"/> 
+ <channel onMode="1" bRatio="0.2151190" products="3 -5"/> 
+ <channel onMode="1" bRatio="0.2147240" products="4 -6"/> 
+ <channel onMode="1" bRatio="0.0699600" products="11 -13"/> 
+ <channel onMode="1" bRatio="0.0699590" products="13 -15"/> 
+</particle> 
+ 
+<particle id="42" name="LQ_ue" antiName="LQ_uebar" spinType="1" chargeType="-1" colType="1" 
+          m0="200.00000" mWidth="0.39162" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" products="2 11"/> 
+</particle> 
+ 
+<particle id="45" name="H_3" spinType="1" chargeType="0" colType="0" 
+          m0="500.00000"> 
+</particle> 
+ 
+<particle id="46" name="A_2" spinType="1" chargeType="0" colType="0" 
+          m0="500.00000"> 
+</particle> 
+ 
+<particle id="51" name="DM(s=0)" antiName="DMbar(s=0)" spinType="1" chargeType="0" colType="0" 
+          m0="100.00000"> 
+</particle> 
+ 
+<particle id="52" name="DM(s=1/2)" antiName="DMbar(s=1/2)" spinType="2" chargeType="0" colType="0" 
+          m0="100.00000"> 
+</particle> 
+ 
+<particle id="53" name="DM(s=1)" antiName="DMbar(s=1)" spinType="3" chargeType="0" colType="0" 
+          m0="100.00000"> 
+</particle> 
+ 
+<particle id="54" name="DMmed(s=0)" antiName="DMmedbar(s=0)" spinType="1" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="0.1" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.000" products=" 1  -1"/> 
+ <channel onMode="1" bRatio="0.000" products=" 2  -2"/> 
+ <channel onMode="1" bRatio="0.000" products=" 3  -3"/> 
+ <channel onMode="1" bRatio="0.000" products=" 4  -4"/> 
+ <channel onMode="1" bRatio="0.300" products=" 5  -5"/> 
+ <channel onMode="1" bRatio="0.000" products=" 6  -6"/> 
+ <channel onMode="1" bRatio="0.000" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.000" products="12 -12"/> 
+ <channel onMode="1" bRatio="0.000" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.000" products="14 -14"/> 
+ <channel onMode="1" bRatio="0.000" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.000" products="16 -16"/> 
+ <channel onMode="1" bRatio="0.100" products="21  21"/> 
+ <channel onMode="1" bRatio="0.000" products="22  22"/> 
+ <channel onMode="1" bRatio="0.000" products="22  23"/> 
+ <channel onMode="1" bRatio="0.000" products="23  23"/> 
+ <channel onMode="1" bRatio="0.000" products="24 -24"/> 
+ <channel onMode="1" bRatio="0.000" products="25  25"/> 
+ <channel onMode="1" bRatio="0.000" products="51 -51"/> 
+ <channel onMode="1" bRatio="0.000" products="51  51"/> 
+ <channel onMode="1" bRatio="0.600" products="52 -52"/> 
+ <channel onMode="1" bRatio="0.000" products="52  52"/> 
+ <channel onMode="1" bRatio="0.000" products="53 -53"/> 
+ <channel onMode="1" bRatio="0.000" products="53  53"/> 
+</particle> 
+ 
+<particle id="55" name="DMmed(s=1)" antiName="DMmedbar(s=1)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="0.1" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.050" products=" 1  -1"/> 
+ <channel onMode="1" bRatio="0.050" products=" 2  -2"/> 
+ <channel onMode="1" bRatio="0.050" products=" 3  -3"/> 
+ <channel onMode="1" bRatio="0.050" products=" 4  -4"/> 
+ <channel onMode="1" bRatio="0.050" products=" 5  -5"/> 
+ <channel onMode="1" bRatio="0.050" products=" 6  -6"/> 
+ <channel onMode="1" bRatio="0.050" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.050" products="12 -12"/> 
+ <channel onMode="1" bRatio="0.050" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.050" products="14 -14"/> 
+ <channel onMode="1" bRatio="0.050" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.050" products="16 -16"/> 
+ <channel onMode="1" bRatio="0.025" products="21  21"/> 
+ <channel onMode="1" bRatio="0.025" products="22  22"/> 
+ <channel onMode="1" bRatio="0.050" products="22  23"/> 
+ <channel onMode="1" bRatio="0.050" products="23  23"/> 
+ <channel onMode="1" bRatio="0.050" products="24 -24"/> 
+ <channel onMode="1" bRatio="0.050" products="25  25"/> 
+ <channel onMode="1" bRatio="0.025" products="51 -51"/> 
+ <channel onMode="1" bRatio="0.025" products="51  51"/> 
+ <channel onMode="1" bRatio="0.025" products="52 -52"/> 
+ <channel onMode="1" bRatio="0.025" products="52  52"/> 
+ <channel onMode="1" bRatio="0.025" products="53 -53"/> 
+ <channel onMode="1" bRatio="0.025" products="53  53"/> 
+</particle> 
+ 
+<particle id="56" name="DM?1" antiName="DMbar?1" spinType="1" chargeType="0" colType="0" 
+          m0="100.00000"> 
+</particle> 
+ 
+<particle id="57" name="DM?2" antiName="DMbar?1" spinType="1" chargeType="0" colType="0" 
+          m0="100.00000"> 
+</particle> 
+ 
+<particle id="58" name="DM?3" antiName="DMbar?3" spinType="1" chargeType="0" colType="0" 
+          m0="100.00000"> 
+</particle> 
+ 
+<particle id="59" name="DM?4" antiName="DMbar?4" spinType="1" chargeType="0" colType="0" 
+          m0="100.00000"> 
+</particle> 
+ 
+<particle id="60" name="DM?5" antiName="DMbar?5" spinType="1" chargeType="0" colType="0" 
+          m0="100.00000"> 
+</particle> 
+ 
+<particle id="81" name="specflav" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="82" name="rndmflavq" antiName="rndmflavqbar" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="83" name="rndmflavg" antiName="rndmflavgbar" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="90" name="system" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="93" name="Z0copy" spinType="3" chargeType="0" colType="0" 
+          m0="91.18760" mWidth="2.49520" mMin="10.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.1539950" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.1194200" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.1539840" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.1192590" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.1522720" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0335760" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0668060" products="12 -12"/> 
+ <channel onMode="1" bRatio="0.0335760" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0668060" products="14 -14"/> 
+ <channel onMode="1" bRatio="0.0335000" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0668060" products="16 -16"/> 
+</particle> 
+ 
+<particle id="94" name="W+copy" antiName="W-copy" spinType="3" chargeType="3" colType="0" 
+          m0="80.38500" mWidth="2.08500" mMin="10.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.3213690" products="-1 2"/> 
+ <channel onMode="1" bRatio="0.0164940" products="-1 4"/> 
+ <channel onMode="1" bRatio="0.0165020" products="-3 2"/> 
+ <channel onMode="1" bRatio="0.3206150" products="-3 4"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-5 2"/> 
+ <channel onMode="1" bRatio="0.0005910" products="-5 4"/> 
+ <channel onMode="1" bRatio="0.1081660" products="-11 12"/> 
+ <channel onMode="1" bRatio="0.1081660" products="-13 14"/> 
+ <channel onMode="1" bRatio="0.1080870" products="-15 16"/> 
+</particle> 
+ 
+<particle id="110" name="Reggeon" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+-->
+ 
+<particle id="111" name="pi0" spinType="1" chargeType="0" colType="0" 
+          m0="0.13498" tau0="2.55313e-05"> 
+ <channel onMode="1" bRatio="0.9879900" products="22 22"/> 
+ <channel onMode="1" bRatio="0.0119800" meMode="11" products="22 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000300" meMode="13" products="11 -11 11 -11"/> 
+</particle> 
+ 
+<particle id="113" name="rho0" spinType="3" chargeType="0" colType="0" 
+          m0="0.77549" mWidth="0.14910" mMin="0.30000" mMax="1.50000"> 
+ <channel onMode="1" bRatio="0.9988447" meMode="2" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.0005993" products="111 22"/> 
+ <channel onMode="1" bRatio="0.0002997" products="221 22"/> 
+ <channel onMode="1" bRatio="0.0001009" meMode="1" products="211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000471" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0000454" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0000449" products="111 111 22"/> 
+ <channel onMode="1" bRatio="0.0000180" products="211 -211 211 -211"/> 
+</particle> 
+ 
+<!--
+<particle id="115" name="a_20" spinType="5" chargeType="0" colType="0" 
+          m0="1.31830" mWidth="0.10700" mMin="1.00000" mMax="1.70000"> 
+ <channel onMode="1" bRatio="0.3483455" products="213 -211"/> 
+ <channel onMode="1" bRatio="0.3483455" products="-213 211"/> 
+ <channel onMode="1" bRatio="0.1440000" products="221 111"/> 
+ <channel onMode="1" bRatio="0.1050000" products="223 211 -211"/> 
+ <channel onMode="1" bRatio="0.0245000" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.0122500" products="130 130"/> 
+ <channel onMode="1" bRatio="0.0122500" products="310 310"/> 
+ <channel onMode="1" bRatio="0.0053000" products="331 111"/> 
+ <channel onMode="1" bRatio="0.0000090" products="22 22"/> 
+</particle> 
+-->
+ 
+<particle id="130" name="K_L0" spinType="1" chargeType="0" colType="0" 
+          m0="0.49761" tau0="1.53300e+04"> 
+ <channel onMode="1" bRatio="0.1952278" products="111 111 111"/> 
+ <channel onMode="1" bRatio="0.1254178" products="211 -211 111"/> 
+ <channel onMode="1" bRatio="0.2027688" meMode="22" products="-12 11 211"/> 
+ <channel onMode="1" bRatio="0.2027688" meMode="22" products="12 -11 -211"/> 
+ <channel onMode="1" bRatio="0.1352191" meMode="22" products="-14 13 211"/> 
+ <channel onMode="1" bRatio="0.1352191" meMode="22" products="14 -13 -211"/> 
+ <channel onMode="1" bRatio="0.0019673" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.0008641" products="111 111"/> 
+ <channel onMode="1" bRatio="0.0005471" products="22 22"/> 
+</particle> 
+ 
+<particle id="211" name="pi+" antiName="pi-" spinType="1" chargeType="3" colType="0" 
+          m0="0.13957" tau0="7.80450e+03"> 
+ <channel onMode="1" bRatio="0.9998770" products="-13 14"/> 
+ <channel onMode="1" bRatio="0.0001230" products="-11 12"/> 
+</particle> 
+ 
+<particle id="213" name="rho+" antiName="rho-" spinType="3" chargeType="3" colType="0" 
+          m0="0.77549" mWidth="0.14910" mMin="0.30000" mMax="1.50000"> 
+ <channel onMode="1" bRatio="0.9995502" meMode="2" products="211 111"/> 
+ <channel onMode="1" bRatio="0.0004498" products="211 22"/> 
+</particle> 
+
+<particle id="100211" name="pi(1300)+" antiName="pi(1300)-" spinType="1" chargeType="3" colType="0" 
+          m0="1.300" mWidth="0.200"> 
+</particle>
+
+<particle id="100111" name="pi(1300)0" spinType="1" chargeType="3" colType="0" 
+          m0="1.300" mWidth="0.200"> 
+</particle>
+
+<!--
+<particle id="215" name="a_2+" antiName="a_2-" spinType="5" chargeType="3" colType="0" 
+          m0="1.31830" mWidth="0.10700" mMin="1.00000" mMax="1.70000"> 
+ <channel onMode="1" bRatio="0.3480100" products="213 111"/> 
+ <channel onMode="1" bRatio="0.3480100" products="113 211"/> 
+ <channel onMode="1" bRatio="0.1440000" products="221 211"/> 
+ <channel onMode="1" bRatio="0.1040000" products="223 211 111"/> 
+ <channel onMode="1" bRatio="0.0480000" products="321 -311"/> 
+ <channel onMode="1" bRatio="0.0053000" products="331 211"/> 
+ <channel onMode="1" bRatio="0.0026800" products="211 22"/> 
+</particle> 
+-->
+ 
+<particle id="221" name="eta" spinType="1" chargeType="0" colType="0" 
+          m0="0.54785" tau0="1.51e-07"> 
+ <channel onMode="1" bRatio="0.3931181" products="22 22"/> 
+ <channel onMode="1" bRatio="0.3257150" products="111 111 111"/> 
+ <channel onMode="1" bRatio="0.0002700" products="111 22 22"/> 
+ <channel onMode="1" bRatio="0.2274105" products="211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0460021" products="211 -211 22"/> 
+ <channel onMode="1" bRatio="0.0069003" meMode="11" products="22 11 -11"/> 
+ <channel onMode="1" bRatio="0.0003100" meMode="11" products="22 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000060" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0002680" meMode="12" products="211 -211 11 -11"/> 
+</particle> 
+ 
+<particle id="223" name="omega" spinType="3" chargeType="0" colType="0" 
+          m0="0.78265" mWidth="0.00849" mMin="0.50000" mMax="1.10000"> 
+ <channel onMode="1" bRatio="0.8994773" meMode="1" products="211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0834941" products="111 22"/> 
+ <channel onMode="1" bRatio="0.0154283" meMode="2" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.0004639" products="221 22"/> 
+ <channel onMode="1" bRatio="0.0007765" meMode="11" products="111 11 -11"/> 
+ <channel onMode="1" bRatio="0.0001311" meMode="11" products="111 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000728" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0000900" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0000660" products="111 111 22"/> 
+</particle> 
+ 
+<!--
+<particle id="225" name="f_2" spinType="5" chargeType="0" colType="0" 
+          m0="1.27510" mWidth="0.18510" mMin="0.60000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.5653260" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.2826600" products="111 111"/> 
+ <channel onMode="1" bRatio="0.0710000" products="211 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0280000" products="211 -211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0230000" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.0115000" products="130 130"/> 
+ <channel onMode="1" bRatio="0.0115000" products="310 310"/> 
+ <channel onMode="1" bRatio="0.0040000" products="221 221"/> 
+ <channel onMode="1" bRatio="0.0030000" products="111 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000140" products="22 22"/> 
+</particle> 
+-->
+ 
+<particle id="310" name="K_S0" spinType="1" chargeType="0" colType="0" 
+          m0="0.49761" tau0="2.68420e+01"> 
+ <channel onMode="1" bRatio="0.6922420" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.3070073" products="111 111"/> 
+ <channel onMode="1" bRatio="0.0000479" meMode="12" products="211 -211 11 -11"/> 
+ <channel onMode="1" bRatio="0.0003501" meMode="22" products="-12 11 211"/> 
+ <channel onMode="1" bRatio="0.0003501" meMode="22" products="12 -11 -211"/> 
+ <channel onMode="1" bRatio="0.0000026" products="22 22"/> 
+</particle> 
+ 
+<particle id="311" name="K0" antiName="Kbar0" spinType="1" chargeType="0" colType="0" 
+          m0="0.49761" tau0="1e-15"> 
+ <channel onMode="1" bRatio="0.5000000" products="130"/> 
+ <channel onMode="1" bRatio="0.5000000" products="310"/> 
+</particle> 
+ 
+<particle id="313" name="K*0" antiName="K*bar0" spinType="3" chargeType="0" colType="0" 
+          m0="0.89594" mWidth="0.04870" mMin="0.65000" mMax="1.20000"> 
+ <channel onMode="1" bRatio="0.6649467" meMode="2" products="321 -211"/> 
+ <channel onMode="1" bRatio="0.3326633" meMode="2" products="311 111"/> 
+ <channel onMode="1" bRatio="0.0023900" products="311 22"/> 
+</particle> 
+
+<particle id="10311" name="K*0(1430)0" antiName="K*0(1430)0bar" spinType="1" chargeType="0" colType="0" 
+          m0="1.425" mWidth="0.270" mMin="1.3750" mMax="1.4750"> 
+</particle> 
+
+<particle id="10321" name="K*0(1430)+" antiName="K*0(1430)bar-" spinType="1" chargeType="0" colType="0" 
+          m0="1.425" mWidth="0.270" mMin="1.3750" mMax="1.4750"> 
+</particle> 
+
+<!--
+<particle id="315" name="K*_2(1430)0" antiName="K*_2(1430)bar0" spinType="5" chargeType="0" colType="0" 
+          m0="1.43240" mWidth="0.10900" mMin="1.10000" mMax="1.80000"> 
+ <channel onMode="1" bRatio="0.3335002" products="321 -211"/> 
+ <channel onMode="1" bRatio="0.1667502" products="311 111"/> 
+ <channel onMode="1" bRatio="0.1650794" products="323 -211"/> 
+ <channel onMode="1" bRatio="0.0825397" products="313 111"/> 
+ <channel onMode="1" bRatio="0.0892231" products="323 -211 111"/> 
+ <channel onMode="1" bRatio="0.0451128" products="313 211 -211"/> 
+ <channel onMode="1" bRatio="0.0581454" products="321 -213"/> 
+ <channel onMode="1" bRatio="0.0290727" products="311 113"/> 
+ <channel onMode="1" bRatio="0.0290727" products="311 223"/> 
+ <channel onMode="1" bRatio="0.0015038" products="311 221"/> 
+</particle> 
+-->
+ 
+<particle id="321" name="K+" antiName="K-" spinType="1" chargeType="3" colType="0" 
+          m0="0.49368" tau0="3.71300e+03"> 
+ <channel onMode="1" bRatio="0.6355250" products="-13 14"/> 
+ <channel onMode="1" bRatio="0.0000158" products="-11 12"/> 
+ <channel onMode="1" bRatio="0.2066081" products="211 111"/> 
+ <channel onMode="1" bRatio="0.0559022" products="211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0176107" products="211 111 111"/> 
+ <channel onMode="1" bRatio="0.0507020" meMode="22" products="12 -11 111"/> 
+ <channel onMode="1" bRatio="0.0335313" meMode="22" products="14 -13 111"/> 
+ <channel onMode="1" bRatio="0.0000220" products="-11 12 111 111"/> 
+ <channel onMode="1" bRatio="0.0000409" products="-11 12 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000140" products="-13 14 111 111"/> 
+ <channel onMode="1" bRatio="0.0000280" products="-13 14 211 -211"/> 
+</particle> 
+ 
+<particle id="323" name="K*+" antiName="K*-" spinType="3" chargeType="3" colType="0" 
+          m0="0.89166" mWidth="0.05080" mMin="0.65000" mMax="1.20000"> 
+ <channel onMode="1" bRatio="0.6660067" meMode="2" products="311 211"/> 
+ <channel onMode="1" bRatio="0.3330033" meMode="2" products="321 111"/> 
+ <channel onMode="1" bRatio="0.0009900" products="321 22"/> 
+</particle> 
+ 
+<!--
+<particle id="325" name="K*_2(1430)+" antiName="K*_2(1430)-" spinType="5" chargeType="3" colType="0" 
+          m0="1.42560" mWidth="0.09850" mMin="1.10000" mMax="1.80000"> 
+ <channel onMode="1" bRatio="0.3330333" products="311 211"/> 
+ <channel onMode="1" bRatio="0.1660166" products="321 111"/> 
+ <channel onMode="1" bRatio="0.1646498" products="313 211"/> 
+ <channel onMode="1" bRatio="0.0823749" products="323 111"/> 
+ <channel onMode="1" bRatio="0.0890089" products="313 211 111"/> 
+ <channel onMode="1" bRatio="0.0450045" products="323 211 -211"/> 
+ <channel onMode="1" bRatio="0.0580058" products="311 213"/> 
+ <channel onMode="1" bRatio="0.0290029" products="321 113"/> 
+ <channel onMode="1" bRatio="0.0290029" products="321 223"/> 
+ <channel onMode="1" bRatio="0.0015002" products="321 221"/> 
+ <channel onMode="1" bRatio="0.0024002" products="321 22"/> 
+</particle> 
+-->
+ 
+<particle id="331" name="eta'" spinType="1" chargeType="0" colType="0" 
+          m0="0.95778" mWidth="0.00020" mMin="0.95578" mMax="0.95978"> 
+ <channel onMode="1" bRatio="0.4365815" products="211 -211 221"/> 
+ <channel onMode="1" bRatio="0.2947428" products="113 22"/> 
+ <channel onMode="1" bRatio="0.2172848" products="111 111 221"/> 
+ <channel onMode="1" bRatio="0.0276636" products="223 22"/> 
+ <channel onMode="1" bRatio="0.0219297" products="22 22"/> 
+ <channel onMode="1" bRatio="0.0016900" products="111 111 111"/> 
+ <channel onMode="1" bRatio="0.0001076" products="13 -13 22"/> 
+</particle> 
+ 
+<particle id="333" name="phi" spinType="3" chargeType="0" colType="0" 
+          m0="1.01946" mWidth="0.00426" mMin="1.00000" mMax="1.04000"> 
+ <channel onMode="1" bRatio="0.4893042" meMode="2" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.3422127" meMode="2" products="130 310"/> 
+ <channel onMode="1" bRatio="0.0420984" products="-213 211"/> 
+ <channel onMode="1" bRatio="0.0420984" products="113 111"/> 
+ <channel onMode="1" bRatio="0.0420984" products="213 -211"/> 
+ <channel onMode="1" bRatio="0.0270000" meMode="1" products="211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0130981" products="221 22"/> 
+ <channel onMode="1" bRatio="0.0012708" products="111 22"/> 
+ <channel onMode="1" bRatio="0.0002956" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0002872" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0001151" meMode="11" products="221 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000740" meMode="2" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.0000470" products="223 111"/> 
+</particle> 
+ 
+<!--
+<particle id="335" name="f'_2(1525)" spinType="5" chargeType="0" colType="0" 
+          m0="1.52500" mWidth="0.07300" mMin="1.10000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.4444000" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.2222000" products="130 130"/> 
+ <channel onMode="1" bRatio="0.2222000" products="310 310"/> 
+ <channel onMode="1" bRatio="0.1030000" products="221 221"/> 
+ <channel onMode="1" bRatio="0.0041000" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.0041000" products="111 111"/> 
+</particle> 
+-->
+ 
+<particle id="411" name="D+" antiName="D-" spinType="1" chargeType="3" colType="0" 
+          m0="1.86962" tau0="3.11800e-01"> 
+ <channel onMode="1" bRatio="0.0004000" products="-13 14"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-15 16"/> 
+ <channel onMode="1" bRatio="0.0043000" meMode="22" products="-11 12 111"/> 
+ <channel onMode="1" bRatio="0.0028000" meMode="22" products="-11 12 113"/> 
+ <channel onMode="1" bRatio="0.0026000" meMode="22" products="-11 12 221"/> 
+ <channel onMode="1" bRatio="0.0028000" meMode="22" products="-11 12 223"/> 
+ <channel onMode="1" bRatio="0.0900000" meMode="22" products="-11 12 311"/> 
+ <channel onMode="1" bRatio="0.0554000" meMode="22" products="-11 12 -313"/> 
+ <channel onMode="1" bRatio="0.0038000" meMode="22" products="-11 12 -315"/> 
+ <channel onMode="1" bRatio="0.0005000" meMode="22" products="-11 12 331"/> 
+ <channel onMode="1" bRatio="0.0036000" meMode="22" products="-11 12 -10313"/> 
+ <channel onMode="1" bRatio="0.0043000" meMode="22" products="-13 14 111"/> 
+ <channel onMode="1" bRatio="0.0028000" meMode="22" products="-13 14 113"/> 
+ <channel onMode="1" bRatio="0.0026000" meMode="22" products="-13 14 221"/> 
+ <channel onMode="1" bRatio="0.0028000" meMode="22" products="-13 14 223"/> 
+ <channel onMode="1" bRatio="0.0874000" meMode="22" products="-13 14 311"/> 
+ <channel onMode="1" bRatio="0.0533000" meMode="22" products="-13 14 -313"/> 
+ <channel onMode="1" bRatio="0.0038000" meMode="22" products="-13 14 -315"/> 
+ <channel onMode="1" bRatio="0.0005000" meMode="22" products="-13 14 331"/> 
+ <channel onMode="1" bRatio="0.0036000" meMode="22" products="-13 14 -10313"/> 
+ <channel onMode="1" bRatio="0.0014000" meMode="22" products="-11 12 311 111"/> 
+ <channel onMode="1" bRatio="0.0027000" meMode="22" products="-11 12 -321 211"/> 
+ <channel onMode="1" bRatio="0.0014000" meMode="22" products="-13 14 311 111"/> 
+ <channel onMode="1" bRatio="0.0027000" meMode="22" products="-13 14 -321 211"/> 
+ <channel onMode="1" bRatio="0.0026000" products="211 111"/> 
+ <channel onMode="1" bRatio="0.0010000" products="211 113"/> 
+ <channel onMode="1" bRatio="0.0076000" products="221 211"/> 
+ <channel onMode="1" bRatio="0.0282000" products="311 211"/> 
+ <channel onMode="1" bRatio="0.0210000" products="-313 213"/> 
+ <channel onMode="1" bRatio="0.0074000" products="321 311"/> 
+ <channel onMode="1" bRatio="0.0042000" products="321 -313"/> 
+ <channel onMode="1" bRatio="0.0310000" products="323 311"/> 
+ <channel onMode="1" bRatio="0.0180000" products="323 -313"/> 
+ <channel onMode="1" bRatio="0.0070000" products="333 211"/> 
+ <channel onMode="1" bRatio="0.0115000" products="-10311 211"/> 
+ <channel onMode="1" bRatio="0.0800000" products="20213 311"/> 
+ <channel onMode="1" bRatio="0.0508000" products="-20313 211"/> 
+ <channel onMode="1" bRatio="0.0015000" products="211 111 111"/> 
+ <channel onMode="1" bRatio="0.0020000" products="211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0030000" products="221 211 111"/> 
+ <channel onMode="1" bRatio="0.0970000" products="311 211 111"/> 
+ <channel onMode="1" bRatio="0.0050000" products="311 211 113"/> 
+ <channel onMode="1" bRatio="0.0100000" products="311 221 211"/> 
+ <channel onMode="1" bRatio="0.0050000" products="311 223 211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="311 311 211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="313 311 211"/> 
+ <channel onMode="1" bRatio="0.0100000" products="-313 211 111"/> 
+ <channel onMode="1" bRatio="0.0078000" products="-313 211 113"/> 
+ <channel onMode="1" bRatio="0.0100000" products="-313 221 211"/> 
+ <channel onMode="1" bRatio="0.0050000" products="-313 223 211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-313 311 211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="321 311 111"/> 
+ <channel onMode="1" bRatio="0.0100000" products="321 311 311"/> 
+ <channel onMode="1" bRatio="0.0010000" products="321 -313 111"/> 
+ <channel onMode="1" bRatio="0.0046000" products="321 -321 211"/> 
+ <channel onMode="1" bRatio="0.0920000" products="-321 211 211"/> 
+ <channel onMode="1" bRatio="0.0110000" products="-321 213 211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="323 311 111"/> 
+ <channel onMode="1" bRatio="0.0010000" products="323 -321 211"/> 
+ <channel onMode="1" bRatio="0.0070000" products="-323 211 211"/> 
+ <channel onMode="1" bRatio="0.0100000" products="-323 213 211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-323 321 211"/> 
+ <channel onMode="1" bRatio="0.0230000" products="333 211 111"/> 
+ <channel onMode="1" bRatio="0.0050000" products="211 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0090000" products="211 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0020000" products="221 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0030000" products="221 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0188000" products="311 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0120000" products="-321 211 211 111"/> 
+ <channel onMode="1" bRatio="0.0021000" products="211 211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0035000" products="311 211 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0087000" products="311 211 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0050000" products="-321 211 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0022000" products="-321 211 211 211 -211"/> 
+</particle> 
+ 
+<particle id="413" name="D*+" antiName="D*-" spinType="3" chargeType="3" colType="0" 
+          m0="2.01028" tau0="2.36e-09"> 
+ <channel onMode="1" bRatio="0.6770000" meMode="2" products="421 211"/> 
+ <channel onMode="1" bRatio="0.3070000" meMode="2" products="411 111"/> 
+ <channel onMode="1" bRatio="0.0160000" products="411 22"/> 
+</particle> 
+ 
+<!--
+<particle id="415" name="D*_2(2460)+" antiName="D*_2(2460)-" spinType="5" chargeType="3" colType="0" 
+          m0="2.46440" mWidth="0.03700" mMin="2.30000" mMax="2.65000"> 
+ <channel onMode="1" bRatio="0.2200000" products="423 211"/> 
+ <channel onMode="1" bRatio="0.1100000" products="413 111"/> 
+ <channel onMode="1" bRatio="0.3800000" products="421 211"/> 
+ <channel onMode="1" bRatio="0.1900000" products="411 111"/> 
+ <channel onMode="1" bRatio="0.0670000" products="423 211 111"/> 
+ <channel onMode="1" bRatio="0.0330000" products="413 211 -211"/> 
+</particle> 
+-->
+ 
+<particle id="421" name="D0" antiName="Dbar0" spinType="1" chargeType="0" colType="0" 
+          m0="1.86486" tau0="1.22900e-01"> 
+ <channel onMode="1" bRatio="0.0034000" meMode="22" products="-11 12 -211"/> 
+ <channel onMode="1" bRatio="0.0022000" meMode="22" products="-11 12 -213"/> 
+ <channel onMode="1" bRatio="0.0350000" meMode="22" products="-11 12 -321"/> 
+ <channel onMode="1" bRatio="0.0225000" meMode="22" products="-11 12 -323"/> 
+ <channel onMode="1" bRatio="0.0015000" meMode="22" products="-11 12 -325"/> 
+ <channel onMode="1" bRatio="0.0014000" meMode="22" products="-11 12 -10323"/> 
+ <channel onMode="1" bRatio="0.0034000" meMode="22" products="-13 14 -211"/> 
+ <channel onMode="1" bRatio="0.0022000" meMode="22" products="-13 14 -213"/> 
+ <channel onMode="1" bRatio="0.0340000" meMode="22" products="-13 14 -321"/> 
+ <channel onMode="1" bRatio="0.0214000" meMode="22" products="-13 14 -323"/> 
+ <channel onMode="1" bRatio="0.0015000" meMode="22" products="-13 14 -325"/> 
+ <channel onMode="1" bRatio="0.0014000" meMode="22" products="-13 14 -10323"/> 
+ <channel onMode="1" bRatio="0.0011000" meMode="22" products="-11 12 311 -211"/> 
+ <channel onMode="1" bRatio="0.0006000" meMode="22" products="-11 12 -321 111"/> 
+ <channel onMode="1" bRatio="0.0011000" meMode="22" products="-13 14 311 -211"/> 
+ <channel onMode="1" bRatio="0.0006000" meMode="22" products="-13 14 -321 111"/> 
+ <channel onMode="1" bRatio="0.0008000" products="111 111"/> 
+ <channel onMode="1" bRatio="0.0020000" products="113 111"/> 
+ <channel onMode="1" bRatio="0.0006000" products="130 130"/> 
+ <channel onMode="1" bRatio="0.0015000" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.0040000" products="213 -211"/> 
+ <channel onMode="1" bRatio="0.0040000" products="-213 211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="221 111"/> 
+ <channel onMode="1" bRatio="0.0010000" products="221 221"/> 
+ <channel onMode="1" bRatio="0.0006000" products="310 310"/> 
+ <channel onMode="1" bRatio="0.0212000" products="311 111"/> 
+ <channel onMode="1" bRatio="0.0071000" products="311 221"/> 
+ <channel onMode="1" bRatio="0.0210000" products="311 223"/> 
+ <channel onMode="1" bRatio="0.0004000" products="313 311"/> 
+ <channel onMode="1" bRatio="0.0014000" products="313 -313"/> 
+ <channel onMode="1" bRatio="0.0085000" products="-313 111"/> 
+ <channel onMode="1" bRatio="0.0146000" products="-313 113"/> 
+ <channel onMode="1" bRatio="0.0190000" products="-313 221"/> 
+ <channel onMode="1" bRatio="0.0110000" products="-313 223"/> 
+ <channel onMode="1" bRatio="0.0008000" products="-313 311"/> 
+ <channel onMode="1" bRatio="0.0001500" products="321 -211"/> 
+ <channel onMode="1" bRatio="0.0043000" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.0383000" products="-321 211"/> 
+ <channel onMode="1" bRatio="0.0035000" products="323 -321"/> 
+ <channel onMode="1" bRatio="0.0610000" products="-323 213"/> 
+ <channel onMode="1" bRatio="0.0018000" products="-323 321"/> 
+ <channel onMode="1" bRatio="0.0010000" products="331 111"/> 
+ <channel onMode="1" bRatio="0.0172000" products="331 311"/> 
+ <channel onMode="1" bRatio="0.0020000" products="331 -313"/> 
+ <channel onMode="1" bRatio="0.0007000" products="333 111"/> 
+ <channel onMode="1" bRatio="0.0086000" products="333 311"/> 
+ <channel onMode="1" bRatio="0.0071000" products="-10313 111"/> 
+ <channel onMode="1" bRatio="0.0107000" products="-10323 211"/> 
+ <channel onMode="1" bRatio="0.0730000" products="20213 -321"/> 
+ <channel onMode="1" bRatio="0.0010000" products="111 111 111"/> 
+ <channel onMode="1" bRatio="0.0060000" products="211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0270000" products="211 -211 130"/> 
+ <channel onMode="1" bRatio="0.0270000" products="310 211 -211"/> 
+ <channel onMode="1" bRatio="0.0008000" products="310 310 310"/> 
+ <channel onMode="1" bRatio="0.0078000" products="311 111 111"/> 
+ <channel onMode="1" bRatio="0.0116000" products="-313 111 111"/> 
+ <channel onMode="1" bRatio="0.0225000" products="-313 211 -211"/> 
+ <channel onMode="1" bRatio="0.0005000" products="321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0051000" products="321 -321 311"/> 
+ <channel onMode="1" bRatio="0.1390000" products="-321 211 111"/> 
+ <channel onMode="1" bRatio="0.0060000" products="-321 211 113"/> 
+ <channel onMode="1" bRatio="0.0068000" products="-321 213 111"/> 
+ <channel onMode="1" bRatio="0.0100000" products="-321 221 211"/> 
+ <channel onMode="1" bRatio="0.0303000" products="-321 223 211"/> 
+ <channel onMode="1" bRatio="0.0100000" products="-323 211 111"/> 
+ <channel onMode="1" bRatio="0.0075000" products="331 -321 211"/> 
+ <channel onMode="1" bRatio="0.0011000" products="333 211 -211"/> 
+ <channel onMode="1" bRatio="0.0073000" products="211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0050000" products="211 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0143000" products="311 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0085000" products="311 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0015000" products="311 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0015000" products="311 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0030000" products="321 -321 111 111"/> 
+ <channel onMode="1" bRatio="0.0025000" products="321 -321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0257500" products="-321 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0074000" products="-321 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0177000" products="211 211 -211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0060000" products="211 -211 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0058000" products="311 211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0638000" products="311 211 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0038000" products="-321 211 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0038000" products="-321 211 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0192000" products="311 211 -211 111 111 111"/> 
+</particle> 
+ 
+<particle id="423" name="D*0" antiName="D*bar0" spinType="3" chargeType="0" colType="0" 
+          m0="2.00698"> 
+ <channel onMode="1" bRatio="0.6190000" meMode="2" products="421 111"/> 
+ <channel onMode="1" bRatio="0.3810000" products="421 22"/> 
+</particle> 
+ 
+<!--
+<particle id="425" name="D*_2(2460)0" antiName="D*_2(2460)bar0" spinType="5" chargeType="0" colType="0" 
+          m0="2.46260" mWidth="0.04900" mMin="2.30000" mMax="2.65000"> 
+ <channel onMode="1" bRatio="0.2200000" products="413 -211"/> 
+ <channel onMode="1" bRatio="0.1100000" products="423 111"/> 
+ <channel onMode="1" bRatio="0.3800000" products="411 -211"/> 
+ <channel onMode="1" bRatio="0.1900000" products="421 111"/> 
+ <channel onMode="1" bRatio="0.0670000" products="413 -211 111"/> 
+ <channel onMode="1" bRatio="0.0330000" products="423 211 -211"/> 
+</particle> 
+-->
+ 
+<particle id="431" name="D_s+" antiName="D_s-" spinType="1" chargeType="3" colType="0" 
+          m0="1.96849" tau0="1.49900e-01"> 
+ <channel onMode="1" bRatio="0.0061600" products="-13 14"/> 
+ <channel onMode="1" bRatio="0.0640000" products="-15 16"/> 
+ <channel onMode="1" bRatio="0.0307000" meMode="22" products="-11 12 221"/> 
+ <channel onMode="1" bRatio="0.0027000" meMode="22" products="-11 12 311"/> 
+ <channel onMode="1" bRatio="0.0010000" meMode="22" products="-11 12 -313"/> 
+ <channel onMode="1" bRatio="0.0106000" meMode="22" products="-11 12 331"/> 
+ <channel onMode="1" bRatio="0.0242000" meMode="22" products="-11 12 333"/> 
+ <channel onMode="1" bRatio="0.0307000" meMode="22" products="-13 14 221"/> 
+ <channel onMode="1" bRatio="0.0027000" meMode="22" products="-13 14 311"/> 
+ <channel onMode="1" bRatio="0.0010000" meMode="22" products="-13 14 -313"/> 
+ <channel onMode="1" bRatio="0.0106000" meMode="22" products="-13 14 331"/> 
+ <channel onMode="1" bRatio="0.0242000" meMode="22" products="-13 14 333"/> 
+ <channel onMode="1" bRatio="0.0010000" products="211 111"/> 
+ <channel onMode="1" bRatio="0.0004000" products="211 113"/> 
+ <channel onMode="1" bRatio="0.0004000" products="213 111"/> 
+ <channel onMode="1" bRatio="0.0210000" products="221 211"/> 
+ <channel onMode="1" bRatio="0.1310400" products="221 213"/> 
+ <channel onMode="1" bRatio="0.0034000" products="223 211"/> 
+ <channel onMode="1" bRatio="0.0023000" products="225 211"/> 
+ <channel onMode="1" bRatio="0.0040000" products="311 211"/> 
+ <channel onMode="1" bRatio="0.0015000" products="311 213"/> 
+ <channel onMode="1" bRatio="0.0079000" products="313 211"/> 
+ <channel onMode="1" bRatio="0.0050000" products="313 213"/> 
+ <channel onMode="1" bRatio="0.0015000" products="321 113"/> 
+ <channel onMode="1" bRatio="0.0002000" products="321 221"/> 
+ <channel onMode="1" bRatio="0.0440000" products="321 311"/> 
+ <channel onMode="1" bRatio="0.0400000" products="321 -313"/> 
+ <channel onMode="1" bRatio="0.0530000" products="323 311"/> 
+ <channel onMode="1" bRatio="0.0700000" products="323 -313"/> 
+ <channel onMode="1" bRatio="0.0470000" products="331 211"/> 
+ <channel onMode="1" bRatio="0.1220000" products="331 213"/> 
+ <channel onMode="1" bRatio="0.0002000" products="331 321"/> 
+ <channel onMode="1" bRatio="0.0440000" products="333 211"/> 
+ <channel onMode="1" bRatio="0.0820000" products="333 213"/> 
+ <channel onMode="1" bRatio="0.0003000" products="333 321"/> 
+ <channel onMode="1" bRatio="0.0025000" products="20213 311"/> 
+ <channel onMode="1" bRatio="0.0100000" products="9010221 211"/> 
+ <channel onMode="1" bRatio="0.0000500" products="211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000500" products="211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0150000" products="221 211 111"/> 
+ <channel onMode="1" bRatio="0.0010000" products="311 211 111"/> 
+ <channel onMode="1" bRatio="0.0050000" products="313 211 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="321 221 111"/> 
+ <channel onMode="1" bRatio="0.0030000" products="321 311 111"/> 
+ <channel onMode="1" bRatio="0.0012000" products="321 -313 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="321 321 -321"/> 
+ <channel onMode="1" bRatio="0.0110000" products="321 -321 211"/> 
+ <channel onMode="1" bRatio="0.0012000" products="323 311 111"/> 
+ <channel onMode="1" bRatio="0.0040000" products="323 -313 111"/> 
+ <channel onMode="1" bRatio="0.0150000" products="331 211 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="331 321 111"/> 
+ <channel onMode="1" bRatio="0.0100000" products="333 211 111"/> 
+ <channel onMode="1" bRatio="0.0050000" products="221 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0050000" products="221 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="321 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="321 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0010000" products="321 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="331 321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0050000" products="333 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0080000" products="333 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0043000" products="321 -321 211 211 -211"/> 
+</particle> 
+ 
+<particle id="433" name="D*_s+" antiName="D*_s-" spinType="3" chargeType="3" colType="0" 
+          m0="2.11230"> 
+ <channel onMode="1" bRatio="0.9420000" products="431 22"/> 
+ <channel onMode="1" bRatio="0.0580000" meMode="2" products="431 111"/> 
+</particle> 
+ 
+<!--
+<particle id="435" name="D*_2s(2573)+" antiName="D*_2s(2573)-" spinType="5" chargeType="3" colType="0" 
+          m0="2.57190" mWidth="0.01700" mMin="2.51000" mMax="2.70000"> 
+ <channel onMode="1" bRatio="0.0500000" products="413 311"/> 
+ <channel onMode="1" bRatio="0.0500000" products="423 321"/> 
+ <channel onMode="1" bRatio="0.4500000" products="411 311"/> 
+ <channel onMode="1" bRatio="0.4500000" products="421 321"/> 
+</particle> 
+-->
+ 
+<particle id="441" name="eta_c" spinType="1" chargeType="0" colType="0" 
+          m0="2.98100" mWidth="0.02970" mMin="2.78040" mMax="3.18040"> 
+ <channel onMode="1" bRatio="0.0002800" products="22 22"/> 
+ <channel onMode="1" bRatio="0.0087000" products="113 113"/> 
+ <channel onMode="1" bRatio="0.0173000" products="213 -213"/> 
+ <channel onMode="1" bRatio="0.0042000" products="313 -313"/> 
+ <channel onMode="1" bRatio="0.0043000" products="323 -323"/> 
+ <channel onMode="1" bRatio="0.0026000" products="333 333"/> 
+ <channel onMode="1" bRatio="0.0013000" products="2212 -2212"/> 
+ <channel onMode="1" bRatio="0.0163000" products="221 111 111"/> 
+ <channel onMode="1" bRatio="0.0327000" products="221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0095000" products="311 311 111"/> 
+ <channel onMode="1" bRatio="0.0191000" products="321 311 -211"/> 
+ <channel onMode="1" bRatio="0.0072000" products="321 -313 -211"/> 
+ <channel onMode="1" bRatio="0.0095000" products="321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0191000" products="-321 311 211"/> 
+ <channel onMode="1" bRatio="0.0072000" products="-321 313 211"/> 
+ <channel onMode="1" bRatio="0.0137000" products="331 111 111"/> 
+ <channel onMode="1" bRatio="0.0273000" products="331 211 -211"/> 
+ <channel onMode="1" bRatio="0.0018000" products="333 321 -321"/> 
+ <channel onMode="1" bRatio="0.0033000" products="211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0006000" products="321 321 -321 -321"/> 
+ <channel onMode="1" bRatio="0.0054000" products="321 -321 211 -211"/> 
+ <channel onMode="1" bRatio="0.7886200" meMode="52" products="83 -83"/> 
+</particle> 
+ 
+<particle id="443" name="J/psi" spinType="3" chargeType="0" colType="0" 
+          m0="3.09692" mWidth="0.00009" mMin="3.09602" mMax="3.09782"> 
+ <channel onMode="1" bRatio="0.8023950" meMode="43" products="83 -83"/> 
+ <channel onMode="1" bRatio="0.0594000" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0593000" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0130000" products="441 22"/> 
+ <channel onMode="1" bRatio="0.0056000" products="113 111"/> 
+ <channel onMode="1" bRatio="0.0056500" products="213 -211"/> 
+ <channel onMode="1" bRatio="0.0056500" products="-213 211"/> 
+ <channel onMode="1" bRatio="0.0036000" products="115 113"/> 
+ <channel onMode="1" bRatio="0.0036000" products="-215 213"/> 
+ <channel onMode="1" bRatio="0.0036000" products="215 -213"/> 
+ <channel onMode="1" bRatio="0.0043000" products="225 223"/> 
+ <channel onMode="1" bRatio="0.0022000" products="313 -315"/> 
+ <channel onMode="1" bRatio="0.0022000" products="323 -325"/> 
+ <channel onMode="1" bRatio="0.0022000" products="-323 325"/> 
+ <channel onMode="1" bRatio="0.0025000" products="321 -323"/> 
+ <channel onMode="1" bRatio="0.0025000" products="-321 323"/> 
+ <channel onMode="1" bRatio="0.0021000" products="311 -313"/> 
+ <channel onMode="1" bRatio="0.0021000" products="-311 313"/> 
+ <channel onMode="1" bRatio="0.0019000" products="20323 -321"/> 
+ <channel onMode="1" bRatio="0.0019000" products="-20323 321"/> 
+ <channel onMode="1" bRatio="0.0015000" products="10213 -211"/> 
+ <channel onMode="1" bRatio="0.0015000" products="-10213 211"/> 
+ <channel onMode="1" bRatio="0.0023000" products="10113 111"/> 
+ <channel onMode="1" bRatio="0.0004800" products="10331 223"/> 
+ <channel onMode="1" bRatio="0.0007400" products="223 221"/> 
+ <channel onMode="1" bRatio="0.0003600" products="10331 333"/> 
+ <channel onMode="1" bRatio="0.0008000" products="333 335"/> 
+ <channel onMode="1" bRatio="0.0006800" products="20333 223"/> 
+ <channel onMode="1" bRatio="0.0007400" products="333 221"/> 
+ <channel onMode="1" bRatio="0.0004500" products="223 111"/> 
+ <channel onMode="1" bRatio="0.0004000" products="333 331"/> 
+ <channel onMode="1" bRatio="0.0003200" products="333 9010221"/> 
+ <channel onMode="1" bRatio="0.0002600" products="333 20223"/> 
+ <channel onMode="1" bRatio="0.0001930" products="113 221"/> 
+ <channel onMode="1" bRatio="0.0001820" products="223 331"/> 
+ <channel onMode="1" bRatio="0.0001400" products="223 9010221"/> 
+ <channel onMode="1" bRatio="0.0001050" products="113 331"/> 
+ <channel onMode="1" bRatio="0.0011000" products="2224 -2224"/> 
+ <channel onMode="1" bRatio="0.0005150" products="3112 -3112"/> 
+ <channel onMode="1" bRatio="0.0005900" products="3314 -3314"/> 
+ <channel onMode="1" bRatio="0.0003200" products="3324 -3324"/> 
+ <channel onMode="1" bRatio="0.0003200" products="3324 -3324"/> 
+ <channel onMode="1" bRatio="0.0001550" products="3114 -3114"/> 
+ <channel onMode="1" bRatio="0.0001550" products="3224 -3224"/> 
+</particle> 
+ 
+<!--
+<particle id="445" name="chi_2c" spinType="5" chargeType="0" colType="0" 
+          m0="3.55620" mWidth="0.00198" mMin="3.53620" mMax="3.57620"> 
+ <channel onMode="1" bRatio="0.0002590" products="22 22"/> 
+ <channel onMode="1" bRatio="0.2020000" products="443 22"/> 
+ <channel onMode="1" bRatio="0.0008900" products="130 130"/> 
+ <channel onMode="1" bRatio="0.0018000" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.0008900" products="310 310"/> 
+ <channel onMode="1" bRatio="0.0047000" products="313 -313"/> 
+ <channel onMode="1" bRatio="0.0009000" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.0024000" products="333 333"/> 
+ <channel onMode="1" bRatio="0.0000680" products="2212 -2212"/> 
+ <channel onMode="1" bRatio="0.0003000" products="3122 -3122"/> 
+ <channel onMode="1" bRatio="0.0046000" products="211 -211 113"/> 
+ <channel onMode="1" bRatio="0.0046000" products="213 -211 111"/> 
+ <channel onMode="1" bRatio="0.0046000" products="-213 211 111"/> 
+ <channel onMode="1" bRatio="0.0015000" products="321 -313 -211"/> 
+ <channel onMode="1" bRatio="0.0015000" products="-321 313 211"/> 
+ <channel onMode="1" bRatio="0.0016000" products="323 311 -211"/> 
+ <channel onMode="1" bRatio="0.0016000" products="-323 311 211"/> 
+ <channel onMode="1" bRatio="0.0102000" products="211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0003000" products="310 310 211 -211"/> 
+ <channel onMode="1" bRatio="0.0012000" products="321 321 -321 -321"/> 
+ <channel onMode="1" bRatio="0.0103000" products="321 -321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0003000" products="321 -321 310 310"/> 
+ <channel onMode="1" bRatio="0.0017000" products="2212 -2212 211 -211"/> 
+ <channel onMode="1" bRatio="0.0107000" products="211 211 211 -211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.7310930" meMode="52" products="83 -83"/> 
+</particle> 
+-->
+ 
+<particle id="511" name="B0" antiName="Bbar0" spinType="1" chargeType="0" colType="0" 
+          m0="5.27958" tau0="4.58700e-01"> 
+ <channel onMode="1" bRatio="0.0001330" meMode="22" products="12 -11 -211"/> 
+ <channel onMode="1" bRatio="0.0002690" meMode="22" products="12 -11 -213"/> 
+ <channel onMode="1" bRatio="0.0207000" meMode="22" products="12 -11 -411"/> 
+ <channel onMode="1" bRatio="0.0570000" meMode="22" products="12 -11 -413"/> 
+ <channel onMode="1" bRatio="0.0023000" meMode="22" products="12 -11 -415"/> 
+ <channel onMode="1" bRatio="0.0045000" meMode="22" products="12 -11 -10411"/> 
+ <channel onMode="1" bRatio="0.0052000" meMode="22" products="12 -11 -10413"/> 
+ <channel onMode="1" bRatio="0.0083000" meMode="22" products="12 -11 -20413"/> 
+ <channel onMode="1" bRatio="0.0001330" meMode="22" products="14 -13 -211"/> 
+ <channel onMode="1" bRatio="0.0002690" meMode="22" products="14 -13 -213"/> 
+ <channel onMode="1" bRatio="0.0207000" meMode="22" products="14 -13 -411"/> 
+ <channel onMode="1" bRatio="0.0570000" meMode="22" products="14 -13 -413"/> 
+ <channel onMode="1" bRatio="0.0023000" meMode="22" products="14 -13 -415"/> 
+ <channel onMode="1" bRatio="0.0045000" meMode="22" products="14 -13 -10411"/> 
+ <channel onMode="1" bRatio="0.0052000" meMode="22" products="14 -13 -10413"/> 
+ <channel onMode="1" bRatio="0.0083000" meMode="22" products="14 -13 -20413"/> 
+ <channel onMode="1" bRatio="0.0000600" meMode="22" products="16 -15 -211"/> 
+ <channel onMode="1" bRatio="0.0000830" meMode="22" products="16 -15 -213"/> 
+ <channel onMode="1" bRatio="0.0000080" meMode="22" products="16 -15 -215"/> 
+ <channel onMode="1" bRatio="0.0070000" meMode="22" products="16 -15 -411"/> 
+ <channel onMode="1" bRatio="0.0160000" meMode="22" products="16 -15 -413"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="16 -15 -415"/> 
+ <channel onMode="1" bRatio="0.0000080" meMode="22" products="16 -15 -10213"/> 
+ <channel onMode="1" bRatio="0.0013000" meMode="22" products="16 -15 -10411"/> 
+ <channel onMode="1" bRatio="0.0013000" meMode="22" products="16 -15 -10413"/> 
+ <channel onMode="1" bRatio="0.0000900" meMode="22" products="16 -15 -20213"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="16 -15 -20413"/> 
+ <channel onMode="1" bRatio="0.0000080" meMode="22" products="16 -15 -9000211"/> 
+ <channel onMode="1" bRatio="0.0010000" meMode="22" products="12 -11 -411 111"/> 
+ <channel onMode="1" bRatio="0.0003000" meMode="22" products="12 -11 -413 111"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="12 -11 -421 -211"/> 
+ <channel onMode="1" bRatio="0.0007000" meMode="22" products="12 -11 -423 -211"/> 
+ <channel onMode="1" bRatio="0.0010000" meMode="22" products="14 -13 -411 111"/> 
+ <channel onMode="1" bRatio="0.0003000" meMode="22" products="14 -13 -413 111"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="14 -13 -421 -211"/> 
+ <channel onMode="1" bRatio="0.0007000" meMode="22" products="14 -13 -423 -211"/> 
+ <channel onMode="1" bRatio="0.0000015" products="111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="113 113"/> 
+ <channel onMode="1" bRatio="0.0000060" products="130 111"/> 
+ <channel onMode="1" bRatio="0.0000026" products="130 113"/> 
+ <channel onMode="1" bRatio="0.0000006" products="130 130"/> 
+ <channel onMode="1" bRatio="0.0000046" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.0000300" products="213 -213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 130"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 221"/> 
+ <channel onMode="1" bRatio="0.0000005" products="223 22"/> 
+ <channel onMode="1" bRatio="0.0000010" products="223 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="223 113"/> 
+ <channel onMode="1" bRatio="0.0000023" products="223 130"/> 
+ <channel onMode="1" bRatio="0.0000010" products="223 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="223 223"/> 
+ <channel onMode="1" bRatio="0.0000060" products="310 111"/> 
+ <channel onMode="1" bRatio="0.0000026" products="310 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="310 221"/> 
+ <channel onMode="1" bRatio="0.0000023" products="310 223"/> 
+ <channel onMode="1" bRatio="0.0000006" products="310 310"/> 
+ <channel onMode="1" bRatio="0.0000401" products="313 22"/> 
+ <channel onMode="1" bRatio="0.0000017" products="313 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 113"/> 
+ <channel onMode="1" bRatio="0.0000190" products="313 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="313 223"/> 
+ <channel onMode="1" bRatio="0.0000030" products="313 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="313 -313"/> 
+ <channel onMode="1" bRatio="0.0000180" products="321 -211"/> 
+ <channel onMode="1" bRatio="0.0000099" products="321 -213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.0000130" products="323 -211"/> 
+ <channel onMode="1" bRatio="0.0000200" products="323 -213"/> 
+ <channel onMode="1" bRatio="0.0000020" products="323 -321"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 -323"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 113"/> 
+ <channel onMode="1" bRatio="0.0000320" products="331 130"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 223"/> 
+ <channel onMode="1" bRatio="0.0000320" products="331 310"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 331"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 113"/> 
+ <channel onMode="1" bRatio="0.0000042" products="333 130"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 223"/> 
+ <channel onMode="1" bRatio="0.0000042" products="333 310"/> 
+ <channel onMode="1" bRatio="0.0000110" products="333 313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 331"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 333"/> 
+ <channel onMode="1" bRatio="0.0002700" products="411 -411"/> 
+ <channel onMode="1" bRatio="0.0028000" products="-411 211"/> 
+ <channel onMode="1" bRatio="0.0077000" products="-411 213"/> 
+ <channel onMode="1" bRatio="0.0002000" products="-411 321"/> 
+ <channel onMode="1" bRatio="0.0003700" products="-411 323"/> 
+ <channel onMode="1" bRatio="0.0003350" products="413 -411"/> 
+ <channel onMode="1" bRatio="0.0008300" products="413 -413"/> 
+ <channel onMode="1" bRatio="0.0028000" products="-413 211"/> 
+ <channel onMode="1" bRatio="0.0068000" products="-413 213"/> 
+ <channel onMode="1" bRatio="0.0001700" products="-413 321"/> 
+ <channel onMode="1" bRatio="0.0003800" products="-413 323"/> 
+ <channel onMode="1" bRatio="0.0003350" products="-413 411"/> 
+ <channel onMode="1" bRatio="0.0009000" products="-415 211"/> 
+ <channel onMode="1" bRatio="0.0022000" products="-415 213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="421 313"/> 
+ <channel onMode="1" bRatio="0.0002900" products="-421 111"/> 
+ <channel onMode="1" bRatio="0.0002900" products="-421 113"/> 
+ <channel onMode="1" bRatio="0.0002200" products="-421 221"/> 
+ <channel onMode="1" bRatio="0.0002500" products="-421 223"/> 
+ <channel onMode="1" bRatio="0.0000400" products="-421 311"/> 
+ <channel onMode="1" bRatio="0.0000400" products="-421 313"/> 
+ <channel onMode="1" bRatio="0.0001700" products="-421 331"/> 
+ <channel onMode="1" bRatio="0.0000100" products="423 313"/> 
+ <channel onMode="1" bRatio="0.0002700" products="-423 111"/> 
+ <channel onMode="1" bRatio="0.0002900" products="-423 113"/> 
+ <channel onMode="1" bRatio="0.0002600" products="-423 221"/> 
+ <channel onMode="1" bRatio="0.0004200" products="-423 223"/> 
+ <channel onMode="1" bRatio="0.0000400" products="-423 311"/> 
+ <channel onMode="1" bRatio="0.0000400" products="-423 313"/> 
+ <channel onMode="1" bRatio="0.0001700" products="-423 331"/> 
+ <channel onMode="1" bRatio="0.0000390" products="431 -211"/> 
+ <channel onMode="1" bRatio="0.0000160" products="431 -213"/> 
+ <channel onMode="1" bRatio="0.0090000" products="431 -411"/> 
+ <channel onMode="1" bRatio="0.0126000" products="431 -413"/> 
+ <channel onMode="1" bRatio="0.0042000" products="431 -415"/> 
+ <channel onMode="1" bRatio="0.0000460" products="-431 321"/> 
+ <channel onMode="1" bRatio="0.0000160" products="-431 323"/> 
+ <channel onMode="1" bRatio="0.0000260" products="433 -211"/> 
+ <channel onMode="1" bRatio="0.0000160" products="433 -213"/> 
+ <channel onMode="1" bRatio="0.0090000" products="433 -411"/> 
+ <channel onMode="1" bRatio="0.0240000" products="433 -413"/> 
+ <channel onMode="1" bRatio="0.0040000" products="433 -415"/> 
+ <channel onMode="1" bRatio="0.0000160" products="-433 321"/> 
+ <channel onMode="1" bRatio="0.0000160" products="-433 323"/> 
+ <channel onMode="1" bRatio="0.0006000" products="441 130"/> 
+ <channel onMode="1" bRatio="0.0006000" products="441 310"/> 
+ <channel onMode="1" bRatio="0.0016200" products="441 313"/> 
+ <channel onMode="1" bRatio="0.0000220" products="443 111"/> 
+ <channel onMode="1" bRatio="0.0000160" products="443 113"/> 
+ <channel onMode="1" bRatio="0.0004400" products="443 130"/> 
+ <channel onMode="1" bRatio="0.0000300" products="443 223"/> 
+ <channel onMode="1" bRatio="0.0004400" products="443 310"/> 
+ <channel onMode="1" bRatio="0.0005000" products="443 315"/> 
+ <channel onMode="1" bRatio="0.0000300" products="445 313"/> 
+ <channel onMode="1" bRatio="0.0000001" products="2212 -2212"/> 
+ <channel onMode="1" bRatio="0.0000010" products="10113 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="10113 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10113 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="10113 331"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10213 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-10213 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-10213 321"/> 
+ <channel onMode="1" bRatio="0.0000010" products="10311 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 113"/> 
+ <channel onMode="1" bRatio="0.0000030" products="10311 311"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 333"/> 
+ <channel onMode="1" bRatio="0.0015000" products="10313 443"/> 
+ <channel onMode="1" bRatio="0.0000010" products="10321 -211"/> 
+ <channel onMode="1" bRatio="0.0000200" products="10321 -213"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10321 -321"/> 
+ <channel onMode="1" bRatio="0.0002000" products="-10411 211"/> 
+ <channel onMode="1" bRatio="0.0006000" products="-10413 211"/> 
+ <channel onMode="1" bRatio="0.0004000" products="-10413 213"/> 
+ <channel onMode="1" bRatio="0.0012000" products="-10413 431"/> 
+ <channel onMode="1" bRatio="0.0024000" products="-10413 433"/> 
+ <channel onMode="1" bRatio="0.0016000" products="10431 -411"/> 
+ <channel onMode="1" bRatio="0.0016000" products="10431 -413"/> 
+ <channel onMode="1" bRatio="0.0001500" products="10441 130"/> 
+ <channel onMode="1" bRatio="0.0001500" products="10441 310"/> 
+ <channel onMode="1" bRatio="0.0003000" products="10441 313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20113 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20113 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20113 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20113 223"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20113 311"/> 
+ <channel onMode="1" bRatio="0.0000200" products="20113 313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20113 331"/> 
+ <channel onMode="1" bRatio="0.0000500" products="20113 20113"/> 
+ <channel onMode="1" bRatio="0.0000400" products="20213 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20213 -213"/> 
+ <channel onMode="1" bRatio="0.0083400" products="20213 -411"/> 
+ <channel onMode="1" bRatio="0.0120000" products="20213 -413"/> 
+ <channel onMode="1" bRatio="0.0000500" products="20213 -20213"/> 
+ <channel onMode="1" bRatio="0.0000400" products="-20213 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-20213 213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-20213 321"/> 
+ <channel onMode="1" bRatio="0.0000200" products="-20213 323"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20313 333"/> 
+ <channel onMode="1" bRatio="0.0001000" products="20313 443"/> 
+ <channel onMode="1" bRatio="0.0001000" products="-20413 211"/> 
+ <channel onMode="1" bRatio="0.0013000" products="-20413 213"/> 
+ <channel onMode="1" bRatio="0.0006000" products="-20413 431"/> 
+ <channel onMode="1" bRatio="0.0012000" products="-20413 433"/> 
+ <channel onMode="1" bRatio="0.0041000" products="20433 -411"/> 
+ <channel onMode="1" bRatio="0.0098000" products="20433 -413"/> 
+ <channel onMode="1" bRatio="0.0002300" products="20443 130"/> 
+ <channel onMode="1" bRatio="0.0002300" products="20443 310"/> 
+ <channel onMode="1" bRatio="0.0003000" products="20443 313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="30313 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="30313 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="30323 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="30323 -321"/> 
+ <channel onMode="1" bRatio="0.0002400" products="30443 130"/> 
+ <channel onMode="1" bRatio="0.0002400" products="30443 310"/> 
+ <channel onMode="1" bRatio="0.0004800" products="30443 313"/> 
+ <channel onMode="1" bRatio="0.0002900" products="30443 10313"/> 
+ <channel onMode="1" bRatio="0.0000005" products="100113 130"/> 
+ <channel onMode="1" bRatio="0.0000005" products="100113 310"/> 
+ <channel onMode="1" bRatio="0.0002400" products="100441 130"/> 
+ <channel onMode="1" bRatio="0.0002400" products="100441 310"/> 
+ <channel onMode="1" bRatio="0.0006600" products="100441 313"/> 
+ <channel onMode="1" bRatio="0.0003300" products="100443 130"/> 
+ <channel onMode="1" bRatio="0.0003300" products="100443 310"/> 
+ <channel onMode="1" bRatio="0.0006600" products="100443 313"/> 
+ <channel onMode="1" bRatio="0.0004000" products="100443 10313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 223"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 311"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9000111 313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 331"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 10113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 20113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 9000111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9000211 -213"/> 
+ <channel onMode="1" bRatio="0.0000030" products="-9000211 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-9000211 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-9000211 321"/> 
+ <channel onMode="1" bRatio="0.0000050" products="-9000211 323"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 223"/> 
+ <channel onMode="1" bRatio="0.0000060" products="9010221 311"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9010221 313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 331"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 10113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 20113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 9000111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 9010221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="113 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="113 113 111"/> 
+ <channel onMode="1" bRatio="0.0000240" products="211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000030" products="211 -211 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="213 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="213 -213 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-213 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="221 113 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="221 113 113"/> 
+ <channel onMode="1" bRatio="0.0000170" products="221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="221 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="221 213 -213"/> 
+ <channel onMode="1" bRatio="0.0000050" products="221 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 221 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="221 221 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="223 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="223 113 111"/> 
+ <channel onMode="1" bRatio="0.0000030" products="223 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="223 221 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="223 221 113"/> 
+ <channel onMode="1" bRatio="0.0000002" products="223 221 221"/> 
+ <channel onMode="1" bRatio="0.0000006" meMode="11" products="311 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000006" meMode="11" products="311 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000001" meMode="11" products="311 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000020" products="311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 113 111"/> 
+ <channel onMode="1" bRatio="0.0000260" products="311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 221 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="311 221 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 221 221"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 223 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="311 223 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 223"/> 
+ <channel onMode="1" bRatio="0.0000480" products="311 311 311"/> 
+ <channel onMode="1" bRatio="0.0000018" meMode="11" products="313 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000014" meMode="11" products="313 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000002" meMode="11" products="313 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 113 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="313 221 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 223 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="313 223 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="313 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="313 -313 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="313 -313 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-313 311 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -213 111"/> 
+ <channel onMode="1" bRatio="0.0000200" products="321 221 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 221 -213"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 223 -211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="321 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 -213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -313 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 223"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -321 313"/> 
+ <channel onMode="1" bRatio="0.0000005" products="-321 311 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-321 311 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-321 313 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 -211 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 -213 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="323 221 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="323 221 -213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 223 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 -313 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 -321 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 -323 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="323 -323 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-323 311 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-323 313 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-323 321 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-323 321 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 111 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 113 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 113 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 213 -213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 221 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 221 113"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 223 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 223 113"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 223 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 311 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 311 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 311 223"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 311 311"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 313 113"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 313 223"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 313 -313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 -213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 323 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 323 -213"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 323 -323"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 331 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 113 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="333 221 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 223 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 311 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 311 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 311 223"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 311 311"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 313 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="333 313 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 321 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 321 -213"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 323 -211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="333 331 113"/> 
+ <channel onMode="1" bRatio="0.0000020" products="333 331 313"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 333 111"/> 
+ <channel onMode="1" bRatio="0.0000030" products="333 333 311"/> 
+ <channel onMode="1" bRatio="0.0000030" products="333 333 313"/> 
+ <channel onMode="1" bRatio="0.0015000" products="411 -411 311"/> 
+ <channel onMode="1" bRatio="0.0025000" products="411 -411 313"/> 
+ <channel onMode="1" bRatio="0.0005000" products="-411 211 111"/> 
+ <channel onMode="1" bRatio="0.0011000" products="-411 211 113"/> 
+ <channel onMode="1" bRatio="0.0011000" products="-411 213 111"/> 
+ <channel onMode="1" bRatio="0.0047000" products="413 -411 311"/> 
+ <channel onMode="1" bRatio="0.0025000" products="413 -411 313"/> 
+ <channel onMode="1" bRatio="0.0070000" products="413 -413 311"/> 
+ <channel onMode="1" bRatio="0.0050000" products="413 -413 313"/> 
+ <channel onMode="1" bRatio="0.0008000" products="-413 211 111"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-413 211 113"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-413 213 111"/> 
+ <channel onMode="1" bRatio="0.0018000" products="-413 411 311"/> 
+ <channel onMode="1" bRatio="0.0025000" products="-413 411 313"/> 
+ <channel onMode="1" bRatio="0.0017000" products="421 -411 321"/> 
+ <channel onMode="1" bRatio="0.0025000" products="421 -411 323"/> 
+ <channel onMode="1" bRatio="0.0031000" products="421 -413 321"/> 
+ <channel onMode="1" bRatio="0.0025000" products="421 -413 323"/> 
+ <channel onMode="1" bRatio="0.0005000" products="421 -421 311"/> 
+ <channel onMode="1" bRatio="0.0005000" products="421 -421 313"/> 
+ <channel onMode="1" bRatio="0.0005000" products="-421 211 -211"/> 
+ <channel onMode="1" bRatio="0.0049000" products="423 -411 321"/> 
+ <channel onMode="1" bRatio="0.0025000" products="423 -411 323"/> 
+ <channel onMode="1" bRatio="0.0100000" products="423 -413 321"/> 
+ <channel onMode="1" bRatio="0.0050000" products="423 -413 323"/> 
+ <channel onMode="1" bRatio="0.0005000" products="423 -421 313"/> 
+ <channel onMode="1" bRatio="0.0015000" products="423 -423 311"/> 
+ <channel onMode="1" bRatio="0.0010000" products="423 -423 313"/> 
+ <channel onMode="1" bRatio="0.0005000" products="-423 111 111"/> 
+ <channel onMode="1" bRatio="0.0003000" products="-423 211 -211"/> 
+ <channel onMode="1" bRatio="0.0005000" products="-423 421 313"/> 
+ <channel onMode="1" bRatio="0.0018000" products="431 -411 111"/> 
+ <channel onMode="1" bRatio="0.0037000" products="431 -421 -211"/> 
+ <channel onMode="1" bRatio="0.0018000" products="433 -411 111"/> 
+ <channel onMode="1" bRatio="0.0037000" products="433 -421 -211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="441 311 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="441 321 -211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="443 311 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="443 321 -211"/> 
+ <channel onMode="1" bRatio="0.0000900" products="443 333 311"/> 
+ <channel onMode="1" bRatio="0.0001000" products="445 311 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="445 321 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 113 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10311 221 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10311 331 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 333 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 -211 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 -213 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10321 221 -213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 -321 311"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10321 331 -213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 333 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-10321 321 311"/> 
+ <channel onMode="1" bRatio="0.0001000" products="10441 311 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="10441 321 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20113 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20113 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="20113 221 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20113 311 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20113 321 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20113 331 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20213 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="20213 221 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20213 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20213 331 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-20213 211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="-20213 221 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-20213 311 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-20213 321 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-20213 331 211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20313 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20313 333 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20313 333 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20313 333 331"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20323 333 -211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="20443 311 111"/> 
+ <channel onMode="1" bRatio="0.0004000" products="20443 321 -211"/> 
+ <channel onMode="1" bRatio="0.0001400" products="30443 311 111"/> 
+ <channel onMode="1" bRatio="0.0001400" products="30443 321 -211"/> 
+ <channel onMode="1" bRatio="0.0000500" products="100441 311 111"/> 
+ <channel onMode="1" bRatio="0.0000800" products="100441 321 -211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="100443 311 111"/> 
+ <channel onMode="1" bRatio="0.0004000" products="100443 321 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9000111 113 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9000111 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9000111 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9000111 221 113"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9000111 313 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9000111 313 221"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9000111 323 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9000111 331 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 331 313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9000211 -211 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9000211 -213 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9000211 221 -213"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9000211 331 -213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-9000211 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-9000211 211 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-9000211 213 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="-9000211 221 213"/> 
+ <channel onMode="1" bRatio="0.0000050" products="-9000211 323 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-9000211 323 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-9000211 331 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-9000211 331 323"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 113 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9010221 221 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 223 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 313 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9010221 313 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 323 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9010221 331 113"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9010221 331 313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 333 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 333 311"/> 
+ <channel onMode="1" bRatio="0.0000020" products="113 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="211 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="211 -211 113 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="213 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="213 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-213 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-213 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 113 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="221 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 211 -211 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 213 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 -213 211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="221 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="223 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="223 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="223 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="223 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 113 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 211 -211 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 213 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 -213 211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 221 113 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 221 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 221 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="311 221 221 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 223 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 223 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 223 221 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 113 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="311 311 221 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="311 311 221 113"/> 
+ <channel onMode="1" bRatio="0.0000002" products="311 311 221 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 223 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 311 311 221"/> 
+ <channel onMode="1" bRatio="0.0000001" products="311 311 311 311"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="313 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="313 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="313 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="313 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="313 311 221 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-313 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-313 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="-313 311 221 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -211 113 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 213 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -213 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -213 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 221 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 221 -211 113"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 221 -213 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="321 221 221 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 223 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 223 221 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 -211 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 -213 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="321 311 221 -213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 223 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 313 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -313 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="321 -313 221 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -313 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 321 -321 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 321 -321 -213"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 321 -321 -321"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 113 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="321 -321 221 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="321 -321 221 113"/> 
+ <channel onMode="1" bRatio="0.0000002" products="321 -321 221 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 223 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="321 -321 223 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -321 311 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -321 311 113"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 -321 311 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -321 311 223"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 -321 311 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-321 311 211 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-321 311 213 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="-321 311 221 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-321 311 223 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-321 313 211 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="-321 313 221 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="323 221 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 311 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="323 311 221 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 311 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 321 -321 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 -321 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 -321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="323 -321 221 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-323 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="-323 311 221 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-323 321 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-323 321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="-323 321 221 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-323 321 321 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 113 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 211 -211 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 213 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 -213 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 223 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 223 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 311 113 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 311 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 311 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 311 221 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 311 223 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 311 311 113"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 311 311 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 313 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 313 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 313 311 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 -313 311 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 -211 113"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 -213 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 221 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 223 -211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 321 311 -213"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 321 -313 -211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 321 -321 113"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 321 -321 221"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 321 -321 223"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 -321 311 213"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 -321 313 211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 323 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 323 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 323 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 -323 311 211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 -323 321 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="333 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="333 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="333 311 221 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 311 311 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 313 311 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 -313 311 311"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="333 321 221 -211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 321 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 321 -321 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 321 -321 313"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 -323 321 311"/> 
+ <channel onMode="1" bRatio="0.0000002" products="333 331 111 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="333 331 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="333 331 311 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="333 331 321 -211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-411 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0022000" products="-411 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-413 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0001000" products="-421 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-421 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0001000" products="-423 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-423 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0022000" products="431 -411 111 111"/> 
+ <channel onMode="1" bRatio="0.0030000" products="431 -411 211 -211"/> 
+ <channel onMode="1" bRatio="0.0022000" products="431 -421 -211 111"/> 
+ <channel onMode="1" bRatio="0.0022000" products="433 -411 111 111"/> 
+ <channel onMode="1" bRatio="0.0030000" products="433 -411 211 -211"/> 
+ <channel onMode="1" bRatio="0.0022000" products="433 -421 -211 111"/> 
+ <channel onMode="1" bRatio="0.0001000" products="441 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="441 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="441 321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0001000" products="445 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="445 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="445 321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10311 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10311 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10311 311 311 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 321 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10311 321 -321 221"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10311 331 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10311 331 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10311 331 311 311"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10311 331 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-10311 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="-10311 311 311 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-10311 321 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-10311 331 311 311"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10321 221 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 311 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 321 -321 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10321 331 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-10321 321 321 -211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="10441 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="10441 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="10441 321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20313 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20313 311 311 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20313 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20313 321 -321 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20313 331 311 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20313 331 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-20313 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-20313 311 311 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-20313 331 311 311"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20323 321 -321 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-20323 321 321 -211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="20443 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0004000" products="20443 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="20443 321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000700" products="30443 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0001400" products="30443 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000700" products="30443 321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000500" products="100441 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000800" products="100441 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000500" products="100441 321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0001000" products="100443 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="100443 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="100443 321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000211 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-9000211 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-9000211 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9010221 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9010221 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 321 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 321 -321 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 331 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 331 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="111 111 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="211 211 -211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="211 -211 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="221 111 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="221 211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="221 211 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="311 111 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="311 211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="311 211 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 221 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 221 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="311 311 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="311 311 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="311 311 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="311 311 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 311 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 311 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 311 311 221 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="311 311 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="321 211 -211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="321 -211 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 221 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 221 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="321 311 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="321 311 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 311 221 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 311 311 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 311 311 221 -211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 311 311 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 321 -321 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 321 -321 221 -211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 321 -321 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 321 -321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 321 -321 -321 311"/> 
+ <channel onMode="1" bRatio="0.0000002" products="321 -321 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="321 -321 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 -321 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 -321 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -321 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -321 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 -321 311 221 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 -321 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 -321 311 311 311"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 -321 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="-321 311 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="-321 311 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="-321 311 221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="-321 311 311 311 211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 111 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 211 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 311 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 311 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 311 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 311 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 311 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 321 311 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 311 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 321 -321 -211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 321 -321 111 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 321 -321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="331 321 -321 311 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 -321 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 311 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 321 311 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 321 321 -321 -211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="333 321 -321 311 111"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="55" products="-3 1"/> 
+ <channel onMode="1" bRatio="0.0110000" meMode="63" products="-4101 2101"/> 
+ <channel onMode="1" bRatio="0.0220000" meMode="63" products="-4103 2103"/> 
+ <channel onMode="1" bRatio="0.0030000" meMode="63" products="-4301 2101"/> 
+ <channel onMode="1" bRatio="0.0060000" meMode="63" products="-4303 2103"/> 
+ <channel onMode="1" bRatio="0.0000700" meMode="23" products="1 -1 -1 1"/> 
+ <channel onMode="1" bRatio="0.0018000" meMode="23" products="1 -1 -3 1"/> 
+ <channel onMode="1" bRatio="0.0030000" meMode="23" products="2 -1 -2 1"/> 
+ <channel onMode="1" bRatio="0.0020500" meMode="23" products="2 -2 -1 1"/> 
+ <channel onMode="1" bRatio="0.0022000" meMode="23" products="2 -2 -3 1"/> 
+ <channel onMode="1" bRatio="0.0210000" meMode="63" products="2 -3 -4 1"/> 
+ <channel onMode="1" bRatio="0.0180000" meMode="23" products="2 -4 -1 1"/> 
+ <channel onMode="1" bRatio="0.0009000" meMode="23" products="2 -4 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000900" meMode="23" products="3 -3 -1 1"/> 
+ <channel onMode="1" bRatio="0.0015000" meMode="23" products="3 -3 -3 1"/> 
+ <channel onMode="1" bRatio="0.0060000" meMode="43" products="4 -1 -4 1"/> 
+ <channel onMode="1" bRatio="0.0040000" meMode="23" products="4 -3 -2 1"/> 
+ <channel onMode="1" bRatio="0.0740000" meMode="43" products="4 -3 -4 1"/> 
+ <channel onMode="2" bRatio="0.0018920" meMode="22" products="12 -11 1 -2"/> 
+ <channel onMode="2" bRatio="0.0018920" meMode="22" products="14 -13 1 -2"/> 
+ <channel onMode="2" bRatio="0.0012910" products="443 313"/> 
+ <channel onMode="2" bRatio="0.0000500" products="445 130"/> 
+ <channel onMode="2" bRatio="0.0000500" products="445 310"/> 
+ <channel onMode="2" bRatio="0.0000100" products="213 -211 113"/> 
+ <channel onMode="2" bRatio="0.0000100" products="223 213 -211"/> 
+ <channel onMode="2" bRatio="0.0000067" products="313 111 111"/> 
+ <channel onMode="2" bRatio="0.0000100" products="321 -211 113"/> 
+ <channel onMode="2" bRatio="0.0000010" products="321 -321 130"/> 
+ <channel onMode="2" bRatio="0.0000010" products="321 -321 310"/> 
+ <channel onMode="2" bRatio="0.0000070" products="333 311 221"/> 
+ <channel onMode="2" bRatio="0.0005000" products="423 -421 311"/> 
+ <channel onMode="2" bRatio="0.0015000" products="-423 421 311"/> 
+ <channel onMode="2" bRatio="0.0000050" products="9000211 313 -211"/> 
+ <channel onMode="2" bRatio="0.0003118" meMode="31" products="1 -3 22"/> 
+ <channel onMode="2" bRatio="0.0000050" meMode="12" products="1 -3 11 -11"/> 
+ <channel onMode="2" bRatio="0.0000025" meMode="12" products="1 -3 13 -13"/> 
+ <channel onMode="2" bRatio="0.0000002" meMode="12" products="1 -3 15 -15"/> 
+ <channel onMode="2" bRatio="0.3158500" meMode="23" products="2 -1 -4 1"/> 
+ <channel onMode="3" bRatio="0.0018920" meMode="22" products="12 -11 -2 1"/> 
+ <channel onMode="3" bRatio="0.0018920" meMode="22" products="14 -13 -2 1"/> 
+ <channel onMode="3" bRatio="0.0012310" products="443 313"/> 
+ <channel onMode="3" bRatio="0.0000100" products="445 130"/> 
+ <channel onMode="3" bRatio="0.0000100" products="445 310"/> 
+ <channel onMode="3" bRatio="0.0000100" products="-213 211 113"/> 
+ <channel onMode="3" bRatio="0.0000100" products="223 -213 211"/> 
+ <channel onMode="3" bRatio="0.0000067" products="-313 111 111"/> 
+ <channel onMode="3" bRatio="0.0000050" products="321 -211 113"/> 
+ <channel onMode="3" bRatio="0.0000105" products="321 -321 130"/> 
+ <channel onMode="3" bRatio="0.0000105" products="321 -321 310"/> 
+ <channel onMode="3" bRatio="0.0000050" products="333 311 221"/> 
+ <channel onMode="3" bRatio="0.0015000" products="423 -421 311"/> 
+ <channel onMode="3" bRatio="0.0005000" products="-423 421 311"/> 
+ <channel onMode="3" bRatio="0.0000050" products="-9000211 313 211"/> 
+ <channel onMode="3" bRatio="0.0003118" meMode="31" products="-3 1 22"/> 
+ <channel onMode="3" bRatio="0.3160000" meMode="23" products="2 -1 -4 1"/> 
+ <channel onMode="3" bRatio="0.0000050" meMode="12" products="-3 1 11 -11"/> 
+ <channel onMode="3" bRatio="0.0000025" meMode="12" products="-3 1 13 -13"/> 
+ <channel onMode="3" bRatio="0.0000002" meMode="12" products="-3 1 15 -15"/> 
+</particle> 
+ 
+<!--
+<particle id="513" name="B*0" antiName="B*bar0" spinType="3" chargeType="0" colType="0" 
+          m0="5.32520"> 
+ <channel onMode="1" bRatio="1.0000000" products="511 22"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="515" name="B*_20" antiName="B*_2bar0" spinType="5" chargeType="0" colType="0" 
+          m0="5.74300" mWidth="0.02300" mMin="5.63000" mMax="6.03000"> 
+ <channel onMode="1" bRatio="0.3100000" products="523 -211"/> 
+ <channel onMode="1" bRatio="0.1500000" products="513 111"/> 
+ <channel onMode="1" bRatio="0.3100000" products="521 -211"/> 
+ <channel onMode="1" bRatio="0.1500000" products="511 111"/> 
+ <channel onMode="1" bRatio="0.0500000" products="523 -211 111"/> 
+ <channel onMode="1" bRatio="0.0300000" products="513 211 -211"/> 
+</particle> 
+-->
+ 
+<particle id="521" name="B+" antiName="B-" spinType="1" chargeType="3" colType="0" 
+          m0="5.27925" tau0="4.91100e-01"> 
+ <channel onMode="1" bRatio="0.0000930" products="16 -15"/> 
+ <channel onMode="1" bRatio="0.0000720" meMode="22" products="12 -11 111"/> 
+ <channel onMode="1" bRatio="0.0001450" meMode="22" products="12 -11 113"/> 
+ <channel onMode="1" bRatio="0.0000840" meMode="22" products="12 -11 221"/> 
+ <channel onMode="1" bRatio="0.0001450" meMode="22" products="12 -11 223"/> 
+ <channel onMode="1" bRatio="0.0000840" meMode="22" products="12 -11 331"/> 
+ <channel onMode="1" bRatio="0.0224000" meMode="22" products="12 -11 -421"/> 
+ <channel onMode="1" bRatio="0.0617000" meMode="22" products="12 -11 -423"/> 
+ <channel onMode="1" bRatio="0.0030000" meMode="22" products="12 -11 -425"/> 
+ <channel onMode="1" bRatio="0.0049000" meMode="22" products="12 -11 -10421"/> 
+ <channel onMode="1" bRatio="0.0056000" meMode="22" products="12 -11 -10423"/> 
+ <channel onMode="1" bRatio="0.0090000" meMode="22" products="12 -11 -20423"/> 
+ <channel onMode="1" bRatio="0.0000720" meMode="22" products="14 -13 111"/> 
+ <channel onMode="1" bRatio="0.0001450" meMode="22" products="14 -13 113"/> 
+ <channel onMode="1" bRatio="0.0000840" meMode="22" products="14 -13 221"/> 
+ <channel onMode="1" bRatio="0.0001450" meMode="22" products="14 -13 223"/> 
+ <channel onMode="1" bRatio="0.0000840" meMode="22" products="14 -13 331"/> 
+ <channel onMode="1" bRatio="0.0224000" meMode="22" products="14 -13 -421"/> 
+ <channel onMode="1" bRatio="0.0617000" meMode="22" products="14 -13 -423"/> 
+ <channel onMode="1" bRatio="0.0030000" meMode="22" products="14 -13 -425"/> 
+ <channel onMode="1" bRatio="0.0049000" meMode="22" products="14 -13 -10421"/> 
+ <channel onMode="1" bRatio="0.0056000" meMode="22" products="14 -13 -10423"/> 
+ <channel onMode="1" bRatio="0.0090000" meMode="22" products="14 -13 -20423"/> 
+ <channel onMode="1" bRatio="0.0000300" meMode="22" products="16 -15 111"/> 
+ <channel onMode="1" bRatio="0.0000420" meMode="22" products="16 -15 113"/> 
+ <channel onMode="1" bRatio="0.0000120" meMode="22" products="16 -15 221"/> 
+ <channel onMode="1" bRatio="0.0000420" meMode="22" products="16 -15 223"/> 
+ <channel onMode="1" bRatio="0.0000200" meMode="22" products="16 -15 225"/> 
+ <channel onMode="1" bRatio="0.0000180" meMode="22" products="16 -15 331"/> 
+ <channel onMode="1" bRatio="0.0000200" meMode="22" products="16 -15 335"/> 
+ <channel onMode="1" bRatio="0.0070000" meMode="22" products="16 -15 -421"/> 
+ <channel onMode="1" bRatio="0.0160000" meMode="22" products="16 -15 -423"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="16 -15 -425"/> 
+ <channel onMode="1" bRatio="0.0000270" meMode="22" products="16 -15 10113"/> 
+ <channel onMode="1" bRatio="0.0000020" meMode="22" products="16 -15 10221"/> 
+ <channel onMode="1" bRatio="0.0000130" meMode="22" products="16 -15 10223"/> 
+ <channel onMode="1" bRatio="0.0000130" meMode="22" products="16 -15 10333"/> 
+ <channel onMode="1" bRatio="0.0013000" meMode="22" products="16 -15 -10421"/> 
+ <channel onMode="1" bRatio="0.0013000" meMode="22" products="16 -15 -10423"/> 
+ <channel onMode="1" bRatio="0.0000460" meMode="22" products="16 -15 20113"/> 
+ <channel onMode="1" bRatio="0.0000230" meMode="22" products="16 -15 20223"/> 
+ <channel onMode="1" bRatio="0.0000230" meMode="22" products="16 -15 20333"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="16 -15 -20423"/> 
+ <channel onMode="1" bRatio="0.0000040" meMode="22" products="16 -15 9000111"/> 
+ <channel onMode="1" bRatio="0.0000020" meMode="22" products="16 -15 9010221"/> 
+ <channel onMode="1" bRatio="0.0019000" meMode="22" products="12 -11 -411 211"/> 
+ <channel onMode="1" bRatio="0.0006000" meMode="22" products="12 -11 -413 211"/> 
+ <channel onMode="1" bRatio="0.0010000" meMode="22" products="12 -11 -421 111"/> 
+ <channel onMode="1" bRatio="0.0003000" meMode="22" products="12 -11 -423 111"/> 
+ <channel onMode="1" bRatio="0.0019000" meMode="22" products="14 -13 -411 211"/> 
+ <channel onMode="1" bRatio="0.0006000" meMode="22" products="14 -13 -413 211"/> 
+ <channel onMode="1" bRatio="0.0010000" meMode="22" products="14 -13 -421 111"/> 
+ <channel onMode="1" bRatio="0.0003000" meMode="22" products="14 -13 -423 111"/> 
+ <channel onMode="1" bRatio="0.0000055" products="211 111"/> 
+ <channel onMode="1" bRatio="0.0000091" products="211 113"/> 
+ <channel onMode="1" bRatio="0.0000120" products="211 130"/> 
+ <channel onMode="1" bRatio="0.0000120" products="213 111"/> 
+ <channel onMode="1" bRatio="0.0000150" products="213 113"/> 
+ <channel onMode="1" bRatio="0.0000048" products="221 211"/> 
+ <channel onMode="1" bRatio="0.0000086" products="221 213"/> 
+ <channel onMode="1" bRatio="0.0000059" products="223 211"/> 
+ <channel onMode="1" bRatio="0.0000130" products="223 213"/> 
+ <channel onMode="1" bRatio="0.0000023" products="225 211"/> 
+ <channel onMode="1" bRatio="0.0000120" products="310 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 213"/> 
+ <channel onMode="1" bRatio="0.0000120" products="321 111"/> 
+ <channel onMode="1" bRatio="0.0000052" products="321 113"/> 
+ <channel onMode="1" bRatio="0.0000026" products="321 221"/> 
+ <channel onMode="1" bRatio="0.0000051" products="321 223"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311"/> 
+ <channel onMode="1" bRatio="0.0000403" products="323 22"/> 
+ <channel onMode="1" bRatio="0.0000020" products="323 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 113"/> 
+ <channel onMode="1" bRatio="0.0000240" products="323 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 223"/> 
+ <channel onMode="1" bRatio="0.0000030" products="323 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 -313"/> 
+ <channel onMode="1" bRatio="0.0000042" products="331 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 213"/> 
+ <channel onMode="1" bRatio="0.0000780" products="331 321"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 323"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 213"/> 
+ <channel onMode="1" bRatio="0.0000090" products="333 321"/> 
+ <channel onMode="1" bRatio="0.0000110" products="333 323"/> 
+ <channel onMode="1" bRatio="0.0000005" products="411 111"/> 
+ <channel onMode="1" bRatio="0.0000110" products="411 311"/> 
+ <channel onMode="1" bRatio="0.0000005" products="413 111"/> 
+ <channel onMode="1" bRatio="0.0000060" products="413 311"/> 
+ <channel onMode="1" bRatio="0.0050000" products="-421 211"/> 
+ <channel onMode="1" bRatio="0.0134000" products="-421 213"/> 
+ <channel onMode="1" bRatio="0.0004100" products="-421 321"/> 
+ <channel onMode="1" bRatio="0.0006100" products="-421 323"/> 
+ <channel onMode="1" bRatio="0.0002700" products="-421 411"/> 
+ <channel onMode="1" bRatio="0.0003350" products="-421 413"/> 
+ <channel onMode="1" bRatio="0.0046000" products="-423 211"/> 
+ <channel onMode="1" bRatio="0.0098000" products="-423 213"/> 
+ <channel onMode="1" bRatio="0.0003600" products="-423 321"/> 
+ <channel onMode="1" bRatio="0.0007700" products="-423 323"/> 
+ <channel onMode="1" bRatio="0.0003350" products="-423 411"/> 
+ <channel onMode="1" bRatio="0.0010400" products="-423 413"/> 
+ <channel onMode="1" bRatio="0.0008000" products="-425 211"/> 
+ <channel onMode="1" bRatio="0.0038000" products="-425 213"/> 
+ <channel onMode="1" bRatio="0.0000200" products="431 111"/> 
+ <channel onMode="1" bRatio="0.0000280" products="431 113"/> 
+ <channel onMode="1" bRatio="0.0129000" products="431 -421"/> 
+ <channel onMode="1" bRatio="0.0124000" products="431 -423"/> 
+ <channel onMode="1" bRatio="0.0042000" products="431 -425"/> 
+ <channel onMode="1" bRatio="0.0000200" products="433 111"/> 
+ <channel onMode="1" bRatio="0.0000280" products="433 113"/> 
+ <channel onMode="1" bRatio="0.0111000" products="433 -421"/> 
+ <channel onMode="1" bRatio="0.0278000" products="433 -423"/> 
+ <channel onMode="1" bRatio="0.0040000" products="433 -425"/> 
+ <channel onMode="1" bRatio="0.0009000" products="441 321"/> 
+ <channel onMode="1" bRatio="0.0012000" products="441 323"/> 
+ <channel onMode="1" bRatio="0.0000400" products="443 211"/> 
+ <channel onMode="1" bRatio="0.0000600" products="443 213"/> 
+ <channel onMode="1" bRatio="0.0010600" products="443 321"/> 
+ <channel onMode="1" bRatio="0.0014300" products="443 323"/> 
+ <channel onMode="1" bRatio="0.0005000" products="443 325"/> 
+ <channel onMode="1" bRatio="0.0000200" products="445 321"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10113 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10113 321"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10213 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10213 311"/> 
+ <channel onMode="1" bRatio="0.0000700" products="10311 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 213"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-10311 321"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10321 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 113"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10321 311"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 333"/> 
+ <channel onMode="1" bRatio="0.0018000" products="10323 443"/> 
+ <channel onMode="1" bRatio="0.0009100" products="-10421 211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-10423 211"/> 
+ <channel onMode="1" bRatio="0.0007000" products="-10423 213"/> 
+ <channel onMode="1" bRatio="0.0012000" products="-10423 431"/> 
+ <channel onMode="1" bRatio="0.0024000" products="-10423 433"/> 
+ <channel onMode="1" bRatio="0.0016000" products="10431 -421"/> 
+ <channel onMode="1" bRatio="0.0016000" products="10431 -423"/> 
+ <channel onMode="1" bRatio="0.0003000" products="10441 321"/> 
+ <channel onMode="1" bRatio="0.0004000" products="10441 323"/> 
+ <channel onMode="1" bRatio="0.0000400" products="20113 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20113 321"/> 
+ <channel onMode="1" bRatio="0.0000200" products="20113 323"/> 
+ <channel onMode="1" bRatio="0.0000400" products="20213 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20213 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20213 223"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20213 311"/> 
+ <channel onMode="1" bRatio="0.0000200" products="20213 313"/> 
+ <channel onMode="1" bRatio="0.0088700" products="20213 -421"/> 
+ <channel onMode="1" bRatio="0.0159700" products="20213 -423"/> 
+ <channel onMode="1" bRatio="0.0000500" products="20213 20113"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20323 333"/> 
+ <channel onMode="1" bRatio="0.0001000" products="20323 443"/> 
+ <channel onMode="1" bRatio="0.0007500" products="-20423 211"/> 
+ <channel onMode="1" bRatio="0.0022000" products="-20423 213"/> 
+ <channel onMode="1" bRatio="0.0006000" products="-20423 431"/> 
+ <channel onMode="1" bRatio="0.0012000" products="-20423 433"/> 
+ <channel onMode="1" bRatio="0.0041000" products="20433 -421"/> 
+ <channel onMode="1" bRatio="0.0098000" products="20433 -423"/> 
+ <channel onMode="1" bRatio="0.0005700" products="20443 321"/> 
+ <channel onMode="1" bRatio="0.0002900" products="20443 323"/> 
+ <channel onMode="1" bRatio="0.0004800" products="30443 321"/> 
+ <channel onMode="1" bRatio="0.0005000" products="30443 323"/> 
+ <channel onMode="1" bRatio="0.0003000" products="30443 10323"/> 
+ <channel onMode="1" bRatio="0.0000022" products="100113 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="100113 321"/> 
+ <channel onMode="1" bRatio="0.0003600" products="100441 321"/> 
+ <channel onMode="1" bRatio="0.0004800" products="100441 323"/> 
+ <channel onMode="1" bRatio="0.0006300" products="100443 321"/> 
+ <channel onMode="1" bRatio="0.0006000" products="100443 323"/> 
+ <channel onMode="1" bRatio="0.0004000" products="100443 10323"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9000111 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 321"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9000111 323"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9000211 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000211 311"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9000211 313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 213"/> 
+ <channel onMode="1" bRatio="0.0000085" products="9010221 321"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 323"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 20213"/> 
+ <channel onMode="1" bRatio="0.0000260" products="211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="211 113 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="211 113 113"/> 
+ <channel onMode="1" bRatio="0.0000160" products="211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="213 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="213 113 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="213 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="213 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-213 211 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="221 211 113"/> 
+ <channel onMode="1" bRatio="0.0000050" products="221 213 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="221 213 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 221 211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="221 221 213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="223 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="223 211 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="223 213 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="223 221 211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="223 221 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 211 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 213 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 221 211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 221 213"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 223 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 211 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 213 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="313 221 211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="313 221 213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 223 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="313 311 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="313 -313 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-313 311 211"/> 
+ <channel onMode="1" bRatio="0.0000006" meMode="11" products="321 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000006" meMode="11" products="321 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000001" meMode="11" products="321 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 113 111"/> 
+ <channel onMode="1" bRatio="0.0000049" products="321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 221 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="321 221 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 221 221"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 223 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="321 223 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 223"/> 
+ <channel onMode="1" bRatio="0.0000480" products="321 311 311"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 313 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -313 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="321 -313 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -313 311"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 321 -211"/> 
+ <channel onMode="1" bRatio="0.0000260" products="321 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 213"/> 
+ <channel onMode="1" bRatio="0.0000001" products="-321 211 211"/> 
+ <channel onMode="1" bRatio="0.0000018" meMode="11" products="323 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000014" meMode="11" products="323 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000002" meMode="11" products="323 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 113 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="323 221 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="323 221 113"/> 
+ <channel onMode="1" bRatio="0.0000020" products="323 221 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 223 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="323 223 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 311 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="323 311 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 311 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 -313 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="323 -313 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 -321 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-323 321 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-323 321 321"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 211 113"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 213 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 213 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 221 211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 223 211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 223 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 311 211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 311 213"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 313 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 223"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 311"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 321 -313"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 323 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 323 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 323 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 323 223"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 323 311"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 323 -313"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 331 321"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 211 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 213 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="333 221 211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="333 221 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 223 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 311 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 311 213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 321 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 321 113"/> 
+ <channel onMode="1" bRatio="0.0000050" products="333 321 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 321 223"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 321 311"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 323 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="333 331 211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="333 331 213"/> 
+ <channel onMode="1" bRatio="0.0000020" products="333 331 321"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 333 211"/> 
+ <channel onMode="1" bRatio="0.0000030" products="333 333 321"/> 
+ <channel onMode="1" bRatio="0.0000030" products="333 333 323"/> 
+ <channel onMode="1" bRatio="0.0005000" products="411 -411 321"/> 
+ <channel onMode="1" bRatio="0.0005000" products="411 -411 323"/> 
+ <channel onMode="1" bRatio="0.0010200" products="-411 211 211"/> 
+ <channel onMode="1" bRatio="0.0020000" products="-411 213 211"/> 
+ <channel onMode="1" bRatio="0.0005000" products="413 -411 321"/> 
+ <channel onMode="1" bRatio="0.0005000" products="413 -411 323"/> 
+ <channel onMode="1" bRatio="0.0015000" products="413 -413 321"/> 
+ <channel onMode="1" bRatio="0.0010000" products="413 -413 323"/> 
+ <channel onMode="1" bRatio="0.0012500" products="-413 211 211"/> 
+ <channel onMode="1" bRatio="0.0020000" products="-413 213 211"/> 
+ <channel onMode="1" bRatio="0.0015000" products="-413 411 321"/> 
+ <channel onMode="1" bRatio="0.0005000" products="-413 411 323"/> 
+ <channel onMode="1" bRatio="0.0015000" products="421 -421 321"/> 
+ <channel onMode="1" bRatio="0.0025000" products="421 -421 323"/> 
+ <channel onMode="1" bRatio="0.0005000" products="-421 211 111"/> 
+ <channel onMode="1" bRatio="0.0021000" products="-421 211 113"/> 
+ <channel onMode="1" bRatio="0.0017000" products="-421 411 311"/> 
+ <channel onMode="1" bRatio="0.0025000" products="-421 411 313"/> 
+ <channel onMode="1" bRatio="0.0049000" products="-421 413 311"/> 
+ <channel onMode="1" bRatio="0.0025000" products="-421 413 313"/> 
+ <channel onMode="1" bRatio="0.0047000" products="423 -421 321"/> 
+ <channel onMode="1" bRatio="0.0025000" products="423 -421 323"/> 
+ <channel onMode="1" bRatio="0.0070000" products="423 -423 321"/> 
+ <channel onMode="1" bRatio="0.0050000" products="423 -423 323"/> 
+ <channel onMode="1" bRatio="0.0005000" products="-423 211 111"/> 
+ <channel onMode="1" bRatio="0.0005000" products="-423 211 113"/> 
+ <channel onMode="1" bRatio="0.0005000" products="-423 213 111"/> 
+ <channel onMode="1" bRatio="0.0031000" products="-423 411 311"/> 
+ <channel onMode="1" bRatio="0.0025000" products="-423 411 313"/> 
+ <channel onMode="1" bRatio="0.0100000" products="-423 413 311"/> 
+ <channel onMode="1" bRatio="0.0050000" products="-423 413 313"/> 
+ <channel onMode="1" bRatio="0.0018000" products="-423 421 321"/> 
+ <channel onMode="1" bRatio="0.0025000" products="-423 421 323"/> 
+ <channel onMode="1" bRatio="0.0036000" products="431 -411 211"/> 
+ <channel onMode="1" bRatio="0.0018000" products="431 -421 111"/> 
+ <channel onMode="1" bRatio="0.0037000" products="433 -411 211"/> 
+ <channel onMode="1" bRatio="0.0018000" products="433 -421 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="441 311 211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="441 321 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="443 311 211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="443 321 111"/> 
+ <channel onMode="1" bRatio="0.0000900" products="443 333 321"/> 
+ <channel onMode="1" bRatio="0.0002000" products="445 311 211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="445 321 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 211 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 213 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10311 221 213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 321 311"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10311 331 213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 333 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-10311 321 311"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 113 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10321 221 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10321 331 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 333 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10321 333 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10321 333 331"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-10321 321 321"/> 
+ <channel onMode="1" bRatio="0.0002000" products="10441 311 211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="10441 321 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20113 211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="20113 221 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20113 311 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20113 321 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20113 331 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20213 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20213 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="20213 221 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20213 311 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20213 321 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20213 331 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-20213 211 211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20313 333 211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20323 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20323 333 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20323 333 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20323 333 331"/> 
+ <channel onMode="1" bRatio="0.0004000" products="20443 311 211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="20443 321 111"/> 
+ <channel onMode="1" bRatio="0.0003000" products="30443 311 211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="30443 321 111"/> 
+ <channel onMode="1" bRatio="0.0000800" products="100441 311 211"/> 
+ <channel onMode="1" bRatio="0.0000500" products="100441 321 111"/> 
+ <channel onMode="1" bRatio="0.0004000" products="100443 311 211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="100443 321 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9000111 213 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9000111 221 213"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9000111 323 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9000111 331 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9000211 113 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9000211 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9000211 221 113"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9000211 313 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9000211 331 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-9000211 211 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 211 113"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 213 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9010221 221 213"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 223 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 313 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 323 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="9010221 323 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9010221 331 213"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9010221 331 323"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 333 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 333 321"/> 
+ <channel onMode="1" bRatio="0.0000100" products="211 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="211 113 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="211 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="211 211 -211 113"/> 
+ <channel onMode="1" bRatio="0.0000020" products="213 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="213 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-213 211 211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="221 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 211 113 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="221 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 213 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 213 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 -213 211 211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="221 221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 221 213 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="223 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="223 221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 211 113 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 213 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 213 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 -213 211 211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="311 221 213 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="311 221 221 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 223 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 211 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 213 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="311 311 221 211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="311 311 221 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 311 223 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 311 311 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="313 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="313 221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="313 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-313 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 113 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 213 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -213 211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 221 113 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="321 221 221 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 223 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 223 221 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 113 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 213 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 -213 211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="321 311 221 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="321 311 221 113"/> 
+ <channel onMode="1" bRatio="0.0000002" products="321 311 221 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 223 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 311 311 221"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 311 311"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 313 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -313 111 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="321 -313 221 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -313 311 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 321 -321 113"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 321 -321 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 321 -321 223"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 321 -321 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 211 113"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 213 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="321 -321 221 211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="321 -321 221 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 223 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -321 311 213"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-321 311 213 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-321 313 211 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="323 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="323 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="323 221 221 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000005" products="323 311 221 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="323 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="323 -321 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-323 311 211 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-323 321 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-323 321 321 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 211 113 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 213 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 213 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 -213 211 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 223 211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 311 213 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 311 311 211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 311 311 213"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 313 211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 113 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 221 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 223 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 321 311 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 321 311 113"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 321 311 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 311 311"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 321 -313 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 321 -321 211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 321 -321 213"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 323 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 323 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 323 221 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="331 323 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000005" products="333 221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 311 311 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 321 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="333 321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="333 321 221 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 321 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 321 311 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 321 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 323 311 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 323 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000002" products="333 331 211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="333 331 321 111"/> 
+ <channel onMode="1" bRatio="0.0020000" products="-411 211 211 111"/> 
+ <channel onMode="1" bRatio="0.0150000" products="-413 211 211 111"/> 
+ <channel onMode="1" bRatio="0.0050000" products="-421 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0005000" products="-423 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0005000" products="-423 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0033000" products="431 -411 211 111"/> 
+ <channel onMode="1" bRatio="0.0008000" products="431 -421 111 111"/> 
+ <channel onMode="1" bRatio="0.0033000" products="431 -421 211 -211"/> 
+ <channel onMode="1" bRatio="0.0033000" products="433 -411 211 111"/> 
+ <channel onMode="1" bRatio="0.0008000" products="433 -421 111 111"/> 
+ <channel onMode="1" bRatio="0.0033000" products="433 -421 211 -211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="441 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0001000" products="441 321 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="441 321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="445 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0001000" products="445 321 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="445 321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10311 221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 321 311 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10311 321 311 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10311 321 -321 211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10311 331 211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10311 331 321 311"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-10311 311 311 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-10311 321 311 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="-10311 321 311 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-10311 321 321 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-10311 331 321 311"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10321 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="10321 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="10321 321 -321 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10321 331 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="10321 331 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-10321 321 321 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="-10321 321 321 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-10321 331 321 321"/> 
+ <channel onMode="1" bRatio="0.0001000" products="10441 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0001000" products="10441 321 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="10441 321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20313 311 311 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="20313 321 311 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="20313 321 311 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20313 321 -321 211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20313 331 321 311"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-20313 311 311 211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="-20313 321 311 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="-20313 321 311 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-20313 331 321 311"/> 
+ <channel onMode="1" bRatio="0.0000040" products="20323 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20323 311 311 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20323 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20323 321 -321 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="20323 331 311 311"/> 
+ <channel onMode="1" bRatio="0.0000010" products="20323 331 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-20323 321 321 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="20443 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="20443 321 111 111"/> 
+ <channel onMode="1" bRatio="0.0004000" products="20443 321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="30443 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0001000" products="30443 321 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="30443 321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000500" products="100441 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0000500" products="100441 321 111 111"/> 
+ <channel onMode="1" bRatio="0.0000800" products="100441 321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="100443 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0001000" products="100443 321 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="100443 321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000111 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9000211 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="-9000211 211 211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9010221 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="9010221 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 311 311 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 321 311 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="9010221 321 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000010" products="9010221 331 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="211 111 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="211 211 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 211 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="221 211 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="311 211 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="311 211 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 221 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 221 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="311 221 221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="311 311 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="311 311 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="311 311 221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="311 311 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="321 111 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="321 211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="321 211 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 221 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 221 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 221 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="321 311 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="321 311 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 311 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 311 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 311 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 311 311 221 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 311 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 321 -321 111 111"/> 
+ <channel onMode="1" bRatio="0.0000050" products="321 321 -321 221 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 321 -321 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 321 -321 -321 211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="321 -321 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0000002" products="321 -321 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="321 -321 221 211 111"/> 
+ <channel onMode="1" bRatio="0.0000100" products="321 -321 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="321 -321 311 311 211"/> 
+ <channel onMode="1" bRatio="0.0000002" products="-321 311 211 211 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="-321 311 221 211 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 211 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 211 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 311 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 311 311 211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 111 111 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="331 321 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 321 311 111 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 321 311 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000020" products="331 321 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 321 -321 211 111"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 -321 311 211 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 311 311 311 211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 321 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 321 321 311 -211"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 321 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 321 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="55" products="-3 2"/> 
+ <channel onMode="1" bRatio="0.0330000" meMode="63" products="-4103 2203"/> 
+ <channel onMode="1" bRatio="0.0090000" meMode="63" products="-4303 2203"/> 
+ <channel onMode="1" bRatio="0.0000700" meMode="23" products="1 -1 -1 2"/> 
+ <channel onMode="1" bRatio="0.0018000" meMode="23" products="1 -1 -3 2"/> 
+ <channel onMode="1" bRatio="0.0030000" meMode="23" products="2 -1 -2 2"/> 
+ <channel onMode="1" bRatio="0.0020500" meMode="23" products="2 -2 -1 2"/> 
+ <channel onMode="1" bRatio="0.0022000" meMode="23" products="2 -2 -3 2"/> 
+ <channel onMode="1" bRatio="0.0225000" meMode="43" products="2 -3 -4 2"/> 
+ <channel onMode="1" bRatio="0.0000900" meMode="23" products="3 -3 -1 2"/> 
+ <channel onMode="1" bRatio="0.0015000" meMode="23" products="3 -3 -3 2"/> 
+ <channel onMode="1" bRatio="0.0040000" meMode="43" products="4 -1 -4 2"/> 
+ <channel onMode="1" bRatio="0.0040000" meMode="23" products="4 -3 -2 2"/> 
+ <channel onMode="1" bRatio="0.0740000" meMode="43" products="4 -3 -4 2"/> 
+ <channel onMode="2" bRatio="0.0019480" meMode="22" products="12 -11 2 -2"/> 
+ <channel onMode="2" bRatio="0.0019480" meMode="22" products="14 -13 2 -2"/> 
+ <channel onMode="2" bRatio="0.0000200" products="445 323"/> 
+ <channel onMode="2" bRatio="0.0000010" products="333 321 313 311"/> 
+ <channel onMode="2" bRatio="0.0000020" products="-20313 321 321 -211"/> 
+ <channel onMode="2" bRatio="0.0003118" meMode="31" products="2 -3 22"/> 
+ <channel onMode="2" bRatio="0.2682660" meMode="23" products="2 -1 -4 2"/> 
+ <channel onMode="2" bRatio="0.0000050" meMode="12" products="2 -3 11 -11"/> 
+ <channel onMode="2" bRatio="0.0000025" meMode="12" products="2 -3 13 -13"/> 
+ <channel onMode="2" bRatio="0.0000002" meMode="12" products="2 -3 15 -15"/> 
+ <channel onMode="3" bRatio="0.0019480" meMode="22" products="12 -11 -2 2"/> 
+ <channel onMode="3" bRatio="0.0019480" meMode="22" products="14 -13 -2 2"/> 
+ <channel onMode="3" bRatio="0.0000400" products="445 323"/> 
+ <channel onMode="3" bRatio="0.0000010" products="333 321 -313 311"/> 
+ <channel onMode="3" bRatio="0.0000020" products="20313 321 321 -211"/> 
+ <channel onMode="3" bRatio="0.0003118" meMode="31" products="-3 2 22"/> 
+ <channel onMode="3" bRatio="0.2683360" meMode="23" products="2 -1 -4 2"/> 
+ <channel onMode="3" bRatio="0.0000050" meMode="12" products="-3 2 11 -11"/> 
+ <channel onMode="3" bRatio="0.0000025" meMode="12" products="-3 2 13 -13"/> 
+ <channel onMode="3" bRatio="0.0000002" meMode="12" products="-3 2 15 -15"/> 
+</particle> 
+ 
+<!--
+<particle id="523" name="B*+" antiName="B*-" spinType="3" chargeType="3" colType="0" 
+          m0="5.32520"> 
+ <channel onMode="1" bRatio="1.0000000" products="521 22"/> 
+</particle> 
+ 
+<particle id="525" name="B*_2+" antiName="B*_2-" spinType="5" chargeType="3" colType="0" 
+          m0="5.74300" mWidth="0.02300" mMin="5.63000" mMax="6.03000"> 
+ <channel onMode="1" bRatio="0.3100000" products="513 211"/> 
+ <channel onMode="1" bRatio="0.1500000" products="523 111"/> 
+ <channel onMode="1" bRatio="0.3100000" products="511 211"/> 
+ <channel onMode="1" bRatio="0.1500000" products="521 111"/> 
+ <channel onMode="1" bRatio="0.0500000" products="513 211 111"/> 
+ <channel onMode="1" bRatio="0.0300000" products="523 211 -211"/> 
+</particle> 
+-->
+ 
+<particle id="531" name="B_s0" antiName="B_sbar0" spinType="1" chargeType="0" colType="0" 
+          m0="5.36677" tau0="4.39000e-01"> 
+ <channel onMode="1" bRatio="0.0002000" meMode="22" products="12 -11 -321"/> 
+ <channel onMode="1" bRatio="0.0003000" meMode="22" products="12 -11 -323"/> 
+ <channel onMode="1" bRatio="0.0210000" meMode="22" products="12 -11 -431"/> 
+ <channel onMode="1" bRatio="0.0490000" meMode="22" products="12 -11 -433"/> 
+ <channel onMode="1" bRatio="0.0070000" meMode="22" products="12 -11 -435"/> 
+ <channel onMode="1" bRatio="0.0003000" meMode="22" products="12 -11 -10323"/> 
+ <channel onMode="1" bRatio="0.0040000" meMode="22" products="12 -11 -10431"/> 
+ <channel onMode="1" bRatio="0.0070000" meMode="22" products="12 -11 -10433"/> 
+ <channel onMode="1" bRatio="0.0002000" meMode="22" products="12 -11 -20323"/> 
+ <channel onMode="1" bRatio="0.0040000" meMode="22" products="12 -11 -20433"/> 
+ <channel onMode="1" bRatio="0.0002000" meMode="22" products="14 -13 -321"/> 
+ <channel onMode="1" bRatio="0.0003000" meMode="22" products="14 -13 -323"/> 
+ <channel onMode="1" bRatio="0.0210000" meMode="22" products="14 -13 -431"/> 
+ <channel onMode="1" bRatio="0.0490000" meMode="22" products="14 -13 -433"/> 
+ <channel onMode="1" bRatio="0.0070000" meMode="22" products="14 -13 -435"/> 
+ <channel onMode="1" bRatio="0.0003000" meMode="22" products="14 -13 -10323"/> 
+ <channel onMode="1" bRatio="0.0040000" meMode="22" products="14 -13 -10431"/> 
+ <channel onMode="1" bRatio="0.0070000" meMode="22" products="14 -13 -10433"/> 
+ <channel onMode="1" bRatio="0.0002000" meMode="22" products="14 -13 -20323"/> 
+ <channel onMode="1" bRatio="0.0040000" meMode="22" products="14 -13 -20433"/> 
+ <channel onMode="1" bRatio="0.0080000" meMode="22" products="16 -15 -431"/> 
+ <channel onMode="1" bRatio="0.0160000" meMode="22" products="16 -15 -433"/> 
+ <channel onMode="1" bRatio="0.0028000" meMode="22" products="16 -15 -435"/> 
+ <channel onMode="1" bRatio="0.0018000" meMode="22" products="16 -15 -10431"/> 
+ <channel onMode="1" bRatio="0.0028000" meMode="22" products="16 -15 -10433"/> 
+ <channel onMode="1" bRatio="0.0018000" meMode="22" products="16 -15 -20433"/> 
+ <channel onMode="1" bRatio="0.0000005" products="22 22"/> 
+ <channel onMode="1" bRatio="0.0000100" products="130 130"/> 
+ <channel onMode="1" bRatio="0.0000000" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.0000040" products="221 221"/> 
+ <channel onMode="1" bRatio="0.0000012" products="223 221"/> 
+ <channel onMode="1" bRatio="0.0000100" products="310 310"/> 
+ <channel onMode="1" bRatio="0.0000002" products="311 111"/> 
+ <channel onMode="1" bRatio="0.0000000" products="311 113"/> 
+ <channel onMode="1" bRatio="0.0000002" products="311 221"/> 
+ <channel onMode="1" bRatio="0.0000001" products="311 223"/> 
+ <channel onMode="1" bRatio="0.0000020" products="313 130"/> 
+ <channel onMode="1" bRatio="0.0000020" products="313 310"/> 
+ <channel onMode="1" bRatio="0.0000040" products="313 -313"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-313 111"/> 
+ <channel onMode="1" bRatio="0.0000008" products="-313 113"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-313 130"/> 
+ <channel onMode="1" bRatio="0.0000001" products="-313 221"/> 
+ <channel onMode="1" bRatio="0.0000020" products="-313 310"/> 
+ <channel onMode="1" bRatio="0.0000185" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.0000048" products="-321 211"/> 
+ <channel onMode="1" bRatio="0.0000120" products="-321 213"/> 
+ <channel onMode="1" bRatio="0.0000046" products="323 -321"/> 
+ <channel onMode="1" bRatio="0.0000060" products="323 -323"/> 
+ <channel onMode="1" bRatio="0.0000250" products="-323 211"/> 
+ <channel onMode="1" bRatio="0.0000200" products="-323 213"/> 
+ <channel onMode="1" bRatio="0.0000082" products="-323 321"/> 
+ <channel onMode="1" bRatio="0.0000250" products="331 221"/> 
+ <channel onMode="1" bRatio="0.0000025" products="331 223"/> 
+ <channel onMode="1" bRatio="0.0000001" products="331 311"/> 
+ <channel onMode="1" bRatio="0.0000000" products="331 -313"/> 
+ <channel onMode="1" bRatio="0.0000580" products="331 331"/> 
+ <channel onMode="1" bRatio="0.0000450" products="333 22"/> 
+ <channel onMode="1" bRatio="0.0000213" products="333 221"/> 
+ <channel onMode="1" bRatio="0.0000004" products="333 -313"/> 
+ <channel onMode="1" bRatio="0.0000125" products="333 331"/> 
+ <channel onMode="1" bRatio="0.0000080" products="333 333"/> 
+ <channel onMode="1" bRatio="0.0002000" products="-421 311"/> 
+ <channel onMode="1" bRatio="0.0002000" products="-421 -313"/> 
+ <channel onMode="1" bRatio="0.0002000" products="-423 311"/> 
+ <channel onMode="1" bRatio="0.0002000" products="-423 -313"/> 
+ <channel onMode="1" bRatio="0.0017000" products="431 -411"/> 
+ <channel onMode="1" bRatio="0.0017000" products="431 -413"/> 
+ <channel onMode="1" bRatio="0.0086000" products="431 -431"/> 
+ <channel onMode="1" bRatio="0.0026000" products="-431 211"/> 
+ <channel onMode="1" bRatio="0.0073000" products="-431 213"/> 
+ <channel onMode="1" bRatio="0.0001500" products="-431 321"/> 
+ <channel onMode="1" bRatio="0.0003000" products="-431 323"/> 
+ <channel onMode="1" bRatio="0.0017000" products="433 -411"/> 
+ <channel onMode="1" bRatio="0.0017000" products="433 -413"/> 
+ <channel onMode="1" bRatio="0.0197000" products="433 -433"/> 
+ <channel onMode="1" bRatio="0.0027000" products="-433 211"/> 
+ <channel onMode="1" bRatio="0.0070000" products="-433 213"/> 
+ <channel onMode="1" bRatio="0.0001500" products="-433 321"/> 
+ <channel onMode="1" bRatio="0.0003000" products="-433 323"/> 
+ <channel onMode="1" bRatio="0.0013000" products="-435 211"/> 
+ <channel onMode="1" bRatio="0.0004000" products="441 221"/> 
+ <channel onMode="1" bRatio="0.0008000" products="441 331"/> 
+ <channel onMode="1" bRatio="0.0015000" products="441 333"/> 
+ <channel onMode="1" bRatio="0.0003200" products="443 221"/> 
+ <channel onMode="1" bRatio="0.0000800" products="443 311"/> 
+ <channel onMode="1" bRatio="0.0006400" products="443 331"/> 
+ <channel onMode="1" bRatio="0.0013500" products="443 333"/> 
+ <channel onMode="1" bRatio="0.0002350" products="445 221"/> 
+ <channel onMode="1" bRatio="0.0004650" products="445 331"/> 
+ <channel onMode="1" bRatio="0.0000500" products="10441 221"/> 
+ <channel onMode="1" bRatio="0.0001000" products="10441 331"/> 
+ <channel onMode="1" bRatio="0.0002000" products="10441 333"/> 
+ <channel onMode="1" bRatio="0.0002350" products="10443 221"/> 
+ <channel onMode="1" bRatio="0.0004650" products="10443 331"/> 
+ <channel onMode="1" bRatio="0.0010000" products="10443 333"/> 
+ <channel onMode="1" bRatio="0.0085000" products="20213 -431"/> 
+ <channel onMode="1" bRatio="0.0122000" products="20213 -433"/> 
+ <channel onMode="1" bRatio="0.0008000" products="-20433 211"/> 
+ <channel onMode="1" bRatio="0.0021000" products="-20433 213"/> 
+ <channel onMode="1" bRatio="0.0003000" products="20443 221"/> 
+ <channel onMode="1" bRatio="0.0007000" products="20443 331"/> 
+ <channel onMode="1" bRatio="0.0014000" products="20443 333"/> 
+ <channel onMode="1" bRatio="0.0002000" products="100441 221"/> 
+ <channel onMode="1" bRatio="0.0004000" products="100441 331"/> 
+ <channel onMode="1" bRatio="0.0006000" products="100441 333"/> 
+ <channel onMode="1" bRatio="0.0002350" products="100443 221"/> 
+ <channel onMode="1" bRatio="0.0004650" products="100443 331"/> 
+ <channel onMode="1" bRatio="0.0012000" products="100443 333"/> 
+ <channel onMode="1" bRatio="0.0000023" meMode="11" products="333 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000023" meMode="11" products="333 13 -13"/> 
+ <channel onMode="1" bRatio="0.0007000" products="411 -411 311"/> 
+ <channel onMode="1" bRatio="0.0007000" products="413 -411 311"/> 
+ <channel onMode="1" bRatio="0.0007000" products="421 411 -321"/> 
+ <channel onMode="1" bRatio="0.0007000" products="-421 413 -321"/> 
+ <channel onMode="1" bRatio="0.0096000" products="431 -411 311"/> 
+ <channel onMode="1" bRatio="0.0096000" products="431 421 -321"/> 
+ <channel onMode="1" bRatio="0.0009000" products="-431 211 113"/> 
+ <channel onMode="1" bRatio="0.0009000" products="-431 213 111"/> 
+ <channel onMode="1" bRatio="0.0020000" products="-431 411 311"/> 
+ <channel onMode="1" bRatio="0.0025000" products="-431 411 313"/> 
+ <channel onMode="1" bRatio="0.0050000" products="-431 413 311"/> 
+ <channel onMode="1" bRatio="0.0025000" products="-431 413 313"/> 
+ <channel onMode="1" bRatio="0.0020000" products="-431 421 321"/> 
+ <channel onMode="1" bRatio="0.0025000" products="-431 421 323"/> 
+ <channel onMode="1" bRatio="0.0050000" products="-431 423 321"/> 
+ <channel onMode="1" bRatio="0.0025000" products="-431 423 323"/> 
+ <channel onMode="1" bRatio="0.0096000" products="433 -411 311"/> 
+ <channel onMode="1" bRatio="0.0096000" products="433 -421 -321"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-433 211 113"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-433 213 111"/> 
+ <channel onMode="1" bRatio="0.0050000" products="-433 411 311"/> 
+ <channel onMode="1" bRatio="0.0050000" products="-433 411 313"/> 
+ <channel onMode="1" bRatio="0.0150000" products="-433 413 311"/> 
+ <channel onMode="1" bRatio="0.0030000" products="-433 413 313"/> 
+ <channel onMode="1" bRatio="0.0050000" products="-433 421 321"/> 
+ <channel onMode="1" bRatio="0.0050000" products="-433 421 323"/> 
+ <channel onMode="1" bRatio="0.0150000" products="-433 423 321"/> 
+ <channel onMode="1" bRatio="0.0030000" products="-433 423 323"/> 
+ <channel onMode="1" bRatio="0.0002800" products="441 311 311"/> 
+ <channel onMode="1" bRatio="0.0002800" products="441 321 -321"/> 
+ <channel onMode="1" bRatio="0.0002000" products="443 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="443 211 -211"/> 
+ <channel onMode="1" bRatio="0.0007000" products="443 311 311"/> 
+ <channel onMode="1" bRatio="0.0007000" products="443 321 -321"/> 
+ <channel onMode="1" bRatio="0.0001600" products="445 311 311"/> 
+ <channel onMode="1" bRatio="0.0001600" products="445 321 -321"/> 
+ <channel onMode="1" bRatio="0.0000300" products="10441 311 311"/> 
+ <channel onMode="1" bRatio="0.0000300" products="10441 321 -321"/> 
+ <channel onMode="1" bRatio="0.0001600" products="10443 311 311"/> 
+ <channel onMode="1" bRatio="0.0001600" products="10443 321 -321"/> 
+ <channel onMode="1" bRatio="0.0002600" products="20443 311 311"/> 
+ <channel onMode="1" bRatio="0.0002600" products="20443 321 -321"/> 
+ <channel onMode="1" bRatio="0.0001200" products="100441 311 311"/> 
+ <channel onMode="1" bRatio="0.0001200" products="100441 321 -321"/> 
+ <channel onMode="1" bRatio="0.0002000" products="100443 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="100443 211 -211"/> 
+ <channel onMode="1" bRatio="0.0003000" products="100443 311 311"/> 
+ <channel onMode="1" bRatio="0.0003000" products="100443 321 -321"/> 
+ <channel onMode="1" bRatio="0.0003000" products="411 -411 311 111"/> 
+ <channel onMode="1" bRatio="0.0003000" products="411 -411 -321 211"/> 
+ <channel onMode="1" bRatio="0.0003000" products="413 -411 311 111"/> 
+ <channel onMode="1" bRatio="0.0003000" products="413 -411 -321 211"/> 
+ <channel onMode="1" bRatio="0.0007000" products="-421 411 311 -211"/> 
+ <channel onMode="1" bRatio="0.0007000" products="-421 411 -321 111"/> 
+ <channel onMode="1" bRatio="0.0007000" products="-421 413 311 -211"/> 
+ <channel onMode="1" bRatio="0.0007000" products="-421 413 -321 111"/> 
+ <channel onMode="1" bRatio="0.0024000" products="431 -411 311 111"/> 
+ <channel onMode="1" bRatio="0.0048000" products="431 -411 -321 211"/> 
+ <channel onMode="1" bRatio="0.0048000" products="431 -421 311 -211"/> 
+ <channel onMode="1" bRatio="0.0024000" products="431 -421 -321 111"/> 
+ <channel onMode="1" bRatio="0.0009000" products="-431 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0009000" products="-431 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0024000" products="433 -411 311 111"/> 
+ <channel onMode="1" bRatio="0.0048000" products="433 -411 -321 211"/> 
+ <channel onMode="1" bRatio="0.0048000" products="433 -421 311 -211"/> 
+ <channel onMode="1" bRatio="0.0024000" products="433 -421 -321 111"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-433 211 111 111"/> 
+ <channel onMode="1" bRatio="0.0077000" products="-433 211 211 -211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="441 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0001000" products="441 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0002800" products="441 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0002800" products="441 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0002800" products="441 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="441 331 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="441 331 211 -211"/> 
+ <channel onMode="1" bRatio="0.0004000" products="441 333 111 111"/> 
+ <channel onMode="1" bRatio="0.0004000" products="441 333 211 -211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="443 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="443 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0007000" products="443 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0007000" products="443 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0007000" products="443 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0004000" products="443 331 111 111"/> 
+ <channel onMode="1" bRatio="0.0004000" products="443 331 211 -211"/> 
+ <channel onMode="1" bRatio="0.0003900" products="443 333 111 111"/> 
+ <channel onMode="1" bRatio="0.0003900" products="443 333 211 -211"/> 
+ <channel onMode="1" bRatio="0.0001600" products="445 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0001600" products="445 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0001600" products="445 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0000300" products="10441 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0000300" products="10441 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0000300" products="10441 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0001600" products="10443 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0001600" products="10443 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0001600" products="10443 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0001000" products="20443 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0001000" products="20443 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0002600" products="20443 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0002600" products="20443 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0002600" products="20443 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="20443 331 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="20443 331 211 -211"/> 
+ <channel onMode="1" bRatio="0.0004000" products="20443 333 111 111"/> 
+ <channel onMode="1" bRatio="0.0004000" products="20443 333 211 -211"/> 
+ <channel onMode="1" bRatio="0.0001200" products="100441 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0001200" products="100441 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0001200" products="100441 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="100443 221 111 111"/> 
+ <channel onMode="1" bRatio="0.0002000" products="100443 221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0003000" products="100443 311 311 111"/> 
+ <channel onMode="1" bRatio="0.0003000" products="100443 321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0003000" products="100443 -321 311 211"/> 
+ <channel onMode="1" bRatio="0.0004000" products="100443 331 111 111"/> 
+ <channel onMode="1" bRatio="0.0004000" products="100443 331 211 -211"/> 
+ <channel onMode="1" bRatio="0.0003400" products="100443 333 111 111"/> 
+ <channel onMode="1" bRatio="0.0003400" products="100443 333 211 -211"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="55" products="-3 3"/> 
+ <channel onMode="1" bRatio="0.0200000" meMode="63" products="-4301 2101"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="63" products="-4303 2103"/> 
+ <channel onMode="1" bRatio="0.0007000" meMode="23" products="1 -1 -1 3"/> 
+ <channel onMode="1" bRatio="0.0016000" meMode="23" products="1 -1 -3 3"/> 
+ <channel onMode="1" bRatio="0.3574344" meMode="23" products="2 -1 -4 3"/> 
+ <channel onMode="1" bRatio="0.0036000" meMode="23" products="2 -2 -1 3"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="23" products="2 -2 -3 3"/> 
+ <channel onMode="1" bRatio="0.0172000" meMode="23" products="2 -3 -4 3"/> 
+ <channel onMode="1" bRatio="0.0195000" meMode="23" products="2 -4 -1 3"/> 
+ <channel onMode="1" bRatio="0.0009000" meMode="23" products="2 -4 -3 3"/> 
+ <channel onMode="1" bRatio="0.0009000" meMode="23" products="3 -3 -1 3"/> 
+ <channel onMode="1" bRatio="0.0013000" meMode="23" products="3 -3 -3 3"/> 
+ <channel onMode="1" bRatio="0.0070000" meMode="43" products="4 -1 -4 3"/> 
+ <channel onMode="1" bRatio="0.0040000" meMode="23" products="4 -3 -2 3"/> 
+ <channel onMode="2" bRatio="0.0090000" products="433 -431"/> 
+ <channel onMode="2" bRatio="0.0099000" products="-433 431"/> 
+ <channel onMode="3" bRatio="0.0099000" products="433 -431"/> 
+ <channel onMode="3" bRatio="0.0090000" products="-433 431"/> 
+</particle> 
+ 
+<!--
+<particle id="533" name="B*_s0" antiName="B*_sbar0" spinType="3" chargeType="0" colType="0" 
+          m0="5.41540"> 
+ <channel onMode="1" bRatio="1.0000000" products="531 22"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="535" name="B*_2s0" antiName="B*_2sbar0" spinType="5" chargeType="0" colType="0" 
+          m0="5.83970" mWidth="0.02000" mMin="5.81970" mMax="5.85970"> 
+ <channel onMode="1" bRatio="0.1700000" products="513 311"/> 
+ <channel onMode="1" bRatio="0.1700000" products="523 -321"/> 
+ <channel onMode="1" bRatio="0.3300000" products="511 311"/> 
+ <channel onMode="1" bRatio="0.3300000" products="521 -321"/> 
+</particle> 
+-->
+ 
+<particle id="541" name="B_c+" antiName="B_c-" spinType="1" chargeType="3" colType="0" 
+          m0="6.27700" tau0="1.38000e-01"> 
+ <channel onMode="1" bRatio="0.0160000" products="16 -15"/> 
+ <channel onMode="1" bRatio="0.0034000" meMode="22" products="-11 12 511"/> 
+ <channel onMode="1" bRatio="0.0058000" meMode="22" products="-11 12 513"/> 
+ <channel onMode="1" bRatio="0.0403000" meMode="22" products="-11 12 531"/> 
+ <channel onMode="1" bRatio="0.0506000" meMode="22" products="-11 12 533"/> 
+ <channel onMode="1" bRatio="0.0000400" meMode="22" products="12 -11 421"/> 
+ <channel onMode="1" bRatio="0.0001800" meMode="22" products="12 -11 423"/> 
+ <channel onMode="1" bRatio="0.0075000" meMode="22" products="12 -11 441"/> 
+ <channel onMode="1" bRatio="0.0190000" meMode="22" products="12 -11 443"/> 
+ <channel onMode="1" bRatio="0.0002000" meMode="22" products="12 -11 100441"/> 
+ <channel onMode="1" bRatio="0.0009400" meMode="22" products="12 -11 100443"/> 
+ <channel onMode="1" bRatio="0.0034000" meMode="22" products="-13 14 511"/> 
+ <channel onMode="1" bRatio="0.0058000" meMode="22" products="-13 14 513"/> 
+ <channel onMode="1" bRatio="0.0403000" meMode="22" products="-13 14 531"/> 
+ <channel onMode="1" bRatio="0.0506000" meMode="22" products="-13 14 533"/> 
+ <channel onMode="1" bRatio="0.0000400" meMode="22" products="14 -13 421"/> 
+ <channel onMode="1" bRatio="0.0001800" meMode="22" products="14 -13 423"/> 
+ <channel onMode="1" bRatio="0.0075000" meMode="22" products="14 -13 441"/> 
+ <channel onMode="1" bRatio="0.0190000" meMode="22" products="14 -13 443"/> 
+ <channel onMode="1" bRatio="0.0002000" meMode="22" products="14 -13 100441"/> 
+ <channel onMode="1" bRatio="0.0009400" meMode="22" products="14 -13 100443"/> 
+ <channel onMode="1" bRatio="0.0000200" meMode="22" products="16 -15 421"/> 
+ <channel onMode="1" bRatio="0.0000800" meMode="22" products="16 -15 423"/> 
+ <channel onMode="1" bRatio="0.0023000" meMode="22" products="16 -15 441"/> 
+ <channel onMode="1" bRatio="0.0048000" meMode="22" products="16 -15 443"/> 
+ <channel onMode="1" bRatio="0.0000160" meMode="22" products="16 -15 100441"/> 
+ <channel onMode="1" bRatio="0.0000800" meMode="22" products="16 -15 100443"/> 
+ <channel onMode="1" bRatio="0.0000200" products="211 113"/> 
+ <channel onMode="1" bRatio="0.0000003" products="421 411"/> 
+ <channel onMode="1" bRatio="0.0000004" products="421 413"/> 
+ <channel onMode="1" bRatio="0.0000530" products="-421 411"/> 
+ <channel onMode="1" bRatio="0.0000490" products="-421 413"/> 
+ <channel onMode="1" bRatio="0.0000003" products="423 411"/> 
+ <channel onMode="1" bRatio="0.0000016" products="423 413"/> 
+ <channel onMode="1" bRatio="0.0000750" products="-423 411"/> 
+ <channel onMode="1" bRatio="0.0003300" products="-423 413"/> 
+ <channel onMode="1" bRatio="0.0000066" products="431 421"/> 
+ <channel onMode="1" bRatio="0.0000048" products="431 -421"/> 
+ <channel onMode="1" bRatio="0.0000063" products="431 423"/> 
+ <channel onMode="1" bRatio="0.0000071" products="431 -423"/> 
+ <channel onMode="1" bRatio="0.0000085" products="433 421"/> 
+ <channel onMode="1" bRatio="0.0000045" products="433 -421"/> 
+ <channel onMode="1" bRatio="0.0000404" products="433 423"/> 
+ <channel onMode="1" bRatio="0.0000260" products="433 -423"/> 
+ <channel onMode="1" bRatio="0.0020000" products="441 211"/> 
+ <channel onMode="1" bRatio="0.0042000" products="441 213"/> 
+ <channel onMode="1" bRatio="0.0001300" products="441 321"/> 
+ <channel onMode="1" bRatio="0.0002000" products="441 323"/> 
+ <channel onMode="1" bRatio="0.0001500" products="441 411"/> 
+ <channel onMode="1" bRatio="0.0001000" products="441 413"/> 
+ <channel onMode="1" bRatio="0.0028000" products="441 431"/> 
+ <channel onMode="1" bRatio="0.0027000" products="441 433"/> 
+ <channel onMode="1" bRatio="0.0013000" products="443 211"/> 
+ <channel onMode="1" bRatio="0.0040000" products="443 213"/> 
+ <channel onMode="1" bRatio="0.0001100" products="443 321"/> 
+ <channel onMode="1" bRatio="0.0002200" products="443 323"/> 
+ <channel onMode="1" bRatio="0.0000900" products="443 411"/> 
+ <channel onMode="1" bRatio="0.0002800" products="443 413"/> 
+ <channel onMode="1" bRatio="0.0017000" products="443 431"/> 
+ <channel onMode="1" bRatio="0.0067000" products="443 433"/> 
+ <channel onMode="1" bRatio="0.0106000" products="511 211"/> 
+ <channel onMode="1" bRatio="0.0096000" products="511 213"/> 
+ <channel onMode="1" bRatio="0.0007000" products="511 321"/> 
+ <channel onMode="1" bRatio="0.0001500" products="511 323"/> 
+ <channel onMode="1" bRatio="0.0095000" products="513 211"/> 
+ <channel onMode="1" bRatio="0.0257000" products="513 213"/> 
+ <channel onMode="1" bRatio="0.0005500" products="513 321"/> 
+ <channel onMode="1" bRatio="0.0005800" products="513 323"/> 
+ <channel onMode="1" bRatio="0.0003700" products="521 111"/> 
+ <channel onMode="1" bRatio="0.0003400" products="521 113"/> 
+ <channel onMode="1" bRatio="0.0198000" products="521 311"/> 
+ <channel onMode="1" bRatio="0.0003300" products="523 111"/> 
+ <channel onMode="1" bRatio="0.0009000" products="523 113"/> 
+ <channel onMode="1" bRatio="0.0160000" products="523 311"/> 
+ <channel onMode="1" bRatio="0.1640000" products="531 211"/> 
+ <channel onMode="1" bRatio="0.0720000" products="531 213"/> 
+ <channel onMode="1" bRatio="0.0106000" products="531 321"/> 
+ <channel onMode="1" bRatio="0.0650000" products="533 211"/> 
+ <channel onMode="1" bRatio="0.2020000" products="533 213"/> 
+ <channel onMode="1" bRatio="0.0037000" products="533 321"/> 
+ <channel onMode="1" bRatio="0.0600502" meMode="42" products="4 -3"/> 
+ <channel onMode="2" bRatio="0.0043000" products="521 313"/> 
+ <channel onMode="2" bRatio="0.0167000" products="523 313"/> 
+ <channel onMode="3" bRatio="0.0043000" products="521 -313"/> 
+ <channel onMode="3" bRatio="0.0167000" products="523 -313"/> 
+</particle> 
+ 
+<!--
+<particle id="543" name="B*_c+" antiName="B*_c-" spinType="3" chargeType="3" colType="0" 
+          m0="6.34000"> 
+ <channel onMode="1" bRatio="1.0000000" products="541 22"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="545" name="B*_2c+" antiName="B*_2c-" spinType="5" chargeType="3" colType="0" 
+          m0="7.35000" mWidth="0.02000" mMin="7.20000" mMax="7.50000"> 
+ <channel onMode="1" bRatio="0.3000000" products="511 411"/> 
+ <channel onMode="1" bRatio="0.3000000" products="521 421"/> 
+ <channel onMode="1" bRatio="0.2000000" products="513 411"/> 
+ <channel onMode="1" bRatio="0.2000000" products="523 421"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="551" name="eta_b" spinType="1" chargeType="0" colType="0" 
+          m0="9.40000" mWidth="0.010" mMin="9.30000" mMax="9.50000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="91" products="21 21"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="553" name="Upsilon" spinType="3" chargeType="0" colType="0" 
+          m0="9.46030" mWidth="0.00005" mMin="9.45980" mMax="9.46080"> 
+ <channel onMode="1" bRatio="0.7757000" meMode="92" products="21 21 21"/> 
+ <channel onMode="1" bRatio="0.0290000" meMode="92" products="22 21 21"/> 
+ <channel onMode="1" bRatio="0.0238000" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0248000" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0267000" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="91" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0450000" meMode="91" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="91" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0450000" meMode="91" products="4 -4"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="555" name="chi_2b" spinType="5" chargeType="0" colType="0" 
+          m0="9.91220"> 
+ <channel onMode="1" bRatio="0.2200000" products="553 22"/> 
+ <channel onMode="1" bRatio="0.7800000" meMode="91" products="21 21"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="990990" name="Pomeron" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="1103" name="dd_1" antiName="dd_1bar" spinType="3" chargeType="-2" colType="-1" 
+          m0="0.77133"> 
+</particle> 
+-->
+
+<particle id="1114" name="Delta-" antiName="Deltabar+" spinType="4" chargeType="-3" colType="0" 
+          m0="1.23200" mWidth="0.11700" mMin="1.08000" mMax="1.60000"> 
+ <channel onMode="1" bRatio="1.0000000" products="2112 -211"/> 
+</particle> 
+
+<!-- 
+<particle id="2101" name="ud_0" antiName="ud_0bar" spinType="1" chargeType="1" colType="-1" 
+          m0="0.57933"> 
+</particle> 
+ 
+<particle id="2103" name="ud_1" antiName="ud_1bar" spinType="3" chargeType="1" colType="-1" 
+          m0="0.77133"> 
+</particle> 
+-->
+ 
+<particle id="2112" name="n0" antiName="nbar0" spinType="2" chargeType="0" colType="0" 
+          m0="0.93957" tau0="2.65500e+14"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="22" products="-12 11 2212"/> 
+</particle> 
+ 
+<particle id="2114" name="Delta0" antiName="Deltabar0" spinType="4" chargeType="0" colType="0" 
+          m0="1.23200" mWidth="0.11700" mMin="1.08000" mMax="1.60000"> 
+ <channel onMode="1" bRatio="0.3314104" products="2212 -211"/> 
+ <channel onMode="1" bRatio="0.6630208" products="2112 111"/> 
+ <channel onMode="1" bRatio="0.0055688" products="2112 22"/> 
+</particle> 
+ 
+<!--
+<particle id="2203" name="uu_1" antiName="uu_1bar" spinType="3" chargeType="4" colType="-1" 
+          m0="0.77133"> 
+</particle> 
+-->
+ 
+<particle id="2212" name="p+" antiName="pbar-" spinType="2" chargeType="3" colType="0" 
+          m0="0.93827"> 
+</particle> 
+
+<particle id="202212" name="N(1440)+" antiName="N(1440)bar-" spinType="2" chargeType="3" colType="0" 
+          m0="1.440" mWidth="0.350" mMin="1.4100" mMax="1.4500">
+  <channel onMode="1" bRatio="0.466" products="2212 211"/>
+  <channel onMode="1" bRatio="0.2340" products="2112 111"/>
+  <channel onMode="1" bRatio="0.1990" products="2212 211 111"/>
+  <channel onMode="1" bRatio="0.1010" products="2112 211 -211"/>
+</particle> 
+
+<particle id="202112" name="N(1440)0" antiName="N(1440)bar0" spinType="2" chargeType="3" colType="0" 
+          m0="1.440" mWidth="0.350" mMin="1.4100" mMax="1.4500">
+    <channel onMode="1" bRatio="0.4660" products="2112 -211"/>
+    <channel onMode="1" bRatio="0.2340" products="2212 111"/>
+    <channel onMode="1" bRatio="0.1990" products="2112 111 -211"/>
+    <channel onMode="1" bRatio="0.1010" products="2212 211 -211"/>
+</particle> 
+
+<particle id="212212" name="N(1710)+" antiName="N(1710)bar-" spinType="2" chargeType="3" colType="0" 
+          m0="1.710" mWidth="0.100" mMin="1.6800" mMax="1.7400">
+      <channel onMode="1" bRatio="0.3334" products="2212 211 111"/>
+      <channel onMode="1" bRatio="0.1666" products="2112 211 -211"/>
+      <channel onMode="1" bRatio="0.1334" products="2212 211"/>
+      <channel onMode="1" bRatio="0.1300" products="2112 223"/>
+      <channel onMode="1" bRatio="0.1100" products="3122 321"/>
+      <channel onMode="1" bRatio="0.0660" products="2112 111"/>
+      <channel onMode="1" bRatio="0.0660" products="2112 221"/>
+</particle> 
+
+<particle id="212112" name="N(1710)0" antiName="N(1710)bar0" spinType="2" chargeType="3" colType="0" 
+          m0="1.710" mWidth="0.100" mMin="1.6800" mMax="1.7400">
+  <channel onMode="1" bRatio="0.3334" products="2112 -211 111"/>
+  <channel onMode="1" bRatio="0.1666" products="2212 211 -211"/>
+  <channel onMode="1" bRatio="0.1334" products="2112 -211"/>
+  <channel onMode="1" bRatio="0.1300" products="2212 223"/>
+  <channel onMode="1" bRatio="0.1100" products="3122 311"/>
+  <channel onMode="1" bRatio="0.0660" products="2212 111"/>
+  <channel onMode="1" bRatio="0.0660" products="2212 221"/>
+</particle> 
+
+<particle id="2214" name="Delta+" antiName="Deltabar-" spinType="4" chargeType="3" colType="0" 
+          m0="1.23200" mWidth="0.11700" mMin="1.08000" mMax="1.60000"> 
+ <channel onMode="1" bRatio="0.6630208" products="2212 111"/> 
+ <channel onMode="1" bRatio="0.3314104" products="2112 211"/> 
+ <channel onMode="1" bRatio="0.0055688" products="2212 22"/> 
+</particle> 
+ 
+<particle id="2224" name="Delta++" antiName="Deltabar--" spinType="4" chargeType="6" colType="0" 
+          m0="1.23200" mWidth="0.11700" mMin="1.08000" mMax="1.60000"> 
+ <channel onMode="1" bRatio="1.0000000" products="2212 211"/> 
+</particle> 
+ 
+<!--
+<particle id="3101" name="sd_0" antiName="sd_0bar" spinType="1" chargeType="-2" colType="-1" 
+          m0="0.80473"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="3103" name="sd_1" antiName="sd_1bar" spinType="3" chargeType="-2" colType="-1" 
+          m0="0.92953"> 
+</particle> 
+-->
+ 
+<particle id="3112" name="Sigma-" antiName="Sigmabar+" spinType="2" chargeType="-3" colType="0" 
+          m0="1.19745" tau0="4.43400e+01"> 
+ <channel onMode="1" bRatio="0.9984757" products="2112 -211"/> 
+ <channel onMode="1" bRatio="0.0010170" meMode="22" products="-12 11 2112"/> 
+ <channel onMode="1" bRatio="0.0004500" meMode="22" products="-14 13 2112"/> 
+ <channel onMode="1" bRatio="0.0000573" meMode="22" products="-12 11 3122"/> 
+</particle> 
+ 
+
+<particle id="3114" name="Sigma*-" antiName="Sigma*bar+" spinType="4" chargeType="-3" colType="0" 
+          m0="1.38720" mWidth="0.03940" mMin="1.34000" mMax="1.70000"> 
+ <channel onMode="1" bRatio="0.8814590" products="3122 -211"/> 
+ <channel onMode="1" bRatio="0.0592705" products="3212 -211"/> 
+ <channel onMode="1" bRatio="0.0592705" products="3112 111"/> 
+</particle> 
+
+ 
+<particle id="3122" name="Lambda0" antiName="Lambdabar0" spinType="2" chargeType="0" colType="0" 
+          m0="1.11568" tau0="7.89000e+01"> 
+ <channel onMode="1" bRatio="0.6391668" products="2212 -211"/> 
+ <channel onMode="1" bRatio="0.3580935" products="2112 111"/> 
+ <channel onMode="1" bRatio="0.0017505" products="2112 22"/> 
+ <channel onMode="1" bRatio="0.0008322" meMode="22" products="-12 11 2212"/> 
+ <channel onMode="1" bRatio="0.0001570" meMode="22" products="-14 13 2212"/> 
+</particle> 
+ 
+<!--
+<particle id="3124" name="Lambda(1520)0" antiName="Lambda(1520)bar0" spinType="4" chargeType="0" colType="0" 
+          m0="1.51950" mWidth="0.01560" mMin="1.40000" mMax="1.65000"> 
+ <channel onMode="1" bRatio="0.2300000" products="2212 -321"/> 
+ <channel onMode="1" bRatio="0.2300000" products="2112 -311"/> 
+ <channel onMode="1" bRatio="0.1400000" products="3222 -211"/> 
+ <channel onMode="1" bRatio="0.1400000" products="3112 211"/> 
+ <channel onMode="1" bRatio="0.1400000" products="3212 111"/> 
+ <channel onMode="1" bRatio="0.0333000" products="3122 111 111"/> 
+ <channel onMode="1" bRatio="0.0667000" products="3122 211 -211"/> 
+ <channel onMode="1" bRatio="0.0030000" products="3222 -211 111"/> 
+ <channel onMode="1" bRatio="0.0030000" products="3112 211 111"/> 
+ <channel onMode="1" bRatio="0.0010000" products="3212 111 111"/> 
+ <channel onMode="1" bRatio="0.0020000" products="3212 211 -211"/> 
+ <channel onMode="1" bRatio="0.0110000" products="3122 22"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="3201" name="su_0" antiName="su_0bar" spinType="1" chargeType="1" colType="-1" 
+          m0="0.80473"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="3203" name="su_1" antiName="su_1bar" spinType="3" chargeType="1" colType="-1" 
+          m0="0.92953"> 
+</particle> 
+-->
+ 
+<particle id="3212" name="Sigma0" antiName="Sigmabar0" spinType="2" chargeType="0" colType="0" 
+          m0="1.19264" tau0="2.22e-08"> 
+ <channel onMode="1" bRatio="0.9950249" products="3122 22"/> 
+ <channel onMode="1" bRatio="0.0049751" meMode="11" products="3122 11 -11"/> 
+</particle> 
+ 
+
+<particle id="3214" name="Sigma*0" antiName="Sigma*bar0" spinType="4" chargeType="0" colType="0" 
+          m0="1.38370" mWidth="0.03600" mMin="1.34000" mMax="1.70000"> 
+ <channel onMode="1" bRatio="0.8700000" products="3122 111"/> 
+ <channel onMode="1" bRatio="0.0585000" products="3222 -211"/> 
+ <channel onMode="1" bRatio="0.0585000" products="3112 211"/> 
+ <channel onMode="1" bRatio="0.0130000" products="3122 22"/> 
+</particle> 
+
+ 
+<particle id="3222" name="Sigma+" antiName="Sigmabar-" spinType="2" chargeType="3" colType="0" 
+          m0="1.18937" tau0="2.40400e+01"> 
+ <channel onMode="1" bRatio="0.5156743" products="2212 111"/> 
+ <channel onMode="1" bRatio="0.4830758" products="2112 211"/> 
+ <channel onMode="1" bRatio="0.0012299" products="2212 22"/> 
+ <channel onMode="1" bRatio="0.0000200" meMode="22" products="-11 12 3122"/> 
+</particle> 
+ 
+
+<particle id="3224" name="Sigma*+" antiName="Sigma*bar-" spinType="4" chargeType="3" colType="0" 
+          m0="1.38280" mWidth="0.03600" mMin="1.34000" mMax="1.70000"> 
+ <channel onMode="1" bRatio="0.8814590" products="3122 211"/> 
+ <channel onMode="1" bRatio="0.0592705" products="3222 111"/> 
+ <channel onMode="1" bRatio="0.0592705" products="3212 211"/> 
+</particle> 
+
+ 
+<!--
+<particle id="3303" name="ss_1" antiName="ss_1bar" spinType="3" chargeType="-2" colType="-1" 
+          m0="1.09361"> 
+</particle> 
+-->
+ 
+<particle id="3312" name="Xi-" antiName="Xibar+" spinType="2" chargeType="-3" colType="0" 
+          m0="1.32171" tau0="4.91000e+01"> 
+ <channel onMode="1" bRatio="0.9988730" products="3122 -211"/> 
+ <channel onMode="1" bRatio="0.0001270" products="3112 22"/> 
+ <channel onMode="1" bRatio="0.0005630" meMode="22" products="-12 11 3122"/> 
+ <channel onMode="1" bRatio="0.0003500" meMode="22" products="-14 13 3122"/> 
+ <channel onMode="1" bRatio="0.0000870" meMode="22" products="-12 11 3212"/> 
+</particle> 
+ 
+
+<particle id="3314" name="Xi*-" antiName="Xi*bar+" spinType="4" chargeType="-3" colType="0" 
+          m0="1.53500" mWidth="0.00990" mMin="1.46000" mMax="1.63000"> 
+ <channel onMode="1" bRatio="0.6670000" products="3322 -211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="3312 111"/> 
+</particle> 
+ 
+<particle id="3322" name="Xi0" antiName="Xibar0" spinType="2" chargeType="0" colType="0" 
+          m0="1.31486" tau0="8.71000e+01"> 
+ <channel onMode="1" bRatio="0.9952424" products="3122 111"/> 
+ <channel onMode="1" bRatio="0.0011700" products="3122 22"/> 
+ <channel onMode="1" bRatio="0.0033300" products="3212 22"/> 
+ <channel onMode="1" bRatio="0.0002530" meMode="22" products="-12 11 3222"/> 
+ <channel onMode="1" bRatio="0.0000046" meMode="22" products="-14 13 3222"/> 
+</particle> 
+ 
+<particle id="3324" name="Xi*0" antiName="Xi*bar0" spinType="4" chargeType="0" colType="0" 
+          m0="1.53180" mWidth="0.00910" mMin="1.46000" mMax="1.63000"> 
+ <channel onMode="1" bRatio="0.3330000" products="3322 111"/> 
+ <channel onMode="1" bRatio="0.6670000" products="3312 211"/> 
+</particle> 
+ 
+<particle id="3334" name="Omega-" antiName="Omegabar+" spinType="4" chargeType="-3" colType="0" 
+          m0="1.67245" tau0="2.46100e+01"> 
+ <channel onMode="1" bRatio="0.6737955" products="3122 -321"/> 
+ <channel onMode="1" bRatio="0.2345365" products="3322 -211"/> 
+ <channel onMode="1" bRatio="0.0854667" products="3312 111"/> 
+ <channel onMode="1" bRatio="0.0006360" products="3324 -211"/> 
+ <channel onMode="1" bRatio="0.0055653" meMode="22" products="-12 11 3322"/> 
+</particle> 
+ 
+<!--
+<particle id="4101" name="cd_0" antiName="cd_0bar" spinType="1" chargeType="1" colType="-1" 
+          m0="1.96908"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="4103" name="cd_1" antiName="cd_1bar" spinType="3" chargeType="1" colType="-1" 
+          m0="2.00808"> 
+</particle> 
+-->
+ 
+<particle id="4112" name="Sigma_c0" antiName="Sigma_cbar0" spinType="2" chargeType="0" colType="0" 
+          m0="2.45374" mWidth="0.00216" mMin="2.43176" mMax="2.47576"> 
+ <channel onMode="1" bRatio="1.0000000" products="4122 -211"/> 
+</particle> 
+ 
+<particle id="4114" name="Sigma*_c0" antiName="Sigma*_cbar0" spinType="4" chargeType="0" colType="0" 
+          m0="2.51880" mWidth="0.01450" mMin="2.43000" mMax="2.68000"> 
+ <channel onMode="1" bRatio="1.0000000" products="4122 -211"/> 
+</particle> 
+ 
+<particle id="4122" name="Lambda_c+" antiName="Lambda_cbar-" spinType="2" chargeType="3" colType="0" 
+          m0="2.28646" tau0="5.99000e-02"> 
+ <channel onMode="1" bRatio="0.0030000" meMode="22" products="-11 12 2112"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="-11 12 2114"/> 
+ <channel onMode="1" bRatio="0.0180000" meMode="22" products="-11 12 3122"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-11 12 3212"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-11 12 3214"/> 
+ <channel onMode="1" bRatio="0.0030000" meMode="22" products="-13 14 2112"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="-13 14 2114"/> 
+ <channel onMode="1" bRatio="0.0180000" meMode="22" products="-13 14 3122"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-13 14 3212"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-13 14 3214"/> 
+ <channel onMode="1" bRatio="0.0060000" meMode="22" products="-11 12 2112 111"/> 
+ <channel onMode="1" bRatio="0.0060000" meMode="22" products="-11 12 2212 -211"/> 
+ <channel onMode="1" bRatio="0.0060000" meMode="22" products="-13 14 2112 111"/> 
+ <channel onMode="1" bRatio="0.0060000" meMode="22" products="-13 14 2212 -211"/> 
+ <channel onMode="1" bRatio="0.0030000" products="2112 211"/> 
+ <channel onMode="1" bRatio="0.0030000" products="2112 213"/> 
+ <channel onMode="1" bRatio="0.0030000" products="2114 211"/> 
+ <channel onMode="1" bRatio="0.0030000" products="2114 213"/> 
+ <channel onMode="1" bRatio="0.0020000" products="2212 111"/> 
+ <channel onMode="1" bRatio="0.0020000" products="2212 113"/> 
+ <channel onMode="1" bRatio="0.0010000" products="2212 221"/> 
+ <channel onMode="1" bRatio="0.0020000" products="2212 223"/> 
+ <channel onMode="1" bRatio="0.0230000" products="2212 311"/> 
+ <channel onMode="1" bRatio="0.0400000" products="2212 -313"/> 
+ <channel onMode="1" bRatio="0.0010000" products="2212 331"/> 
+ <channel onMode="1" bRatio="0.0013000" products="2212 333"/> 
+ <channel onMode="1" bRatio="0.0010000" products="2214 111"/> 
+ <channel onMode="1" bRatio="0.0010000" products="2214 113"/> 
+ <channel onMode="1" bRatio="0.0010000" products="2214 221"/> 
+ <channel onMode="1" bRatio="0.0010000" products="2214 223"/> 
+ <channel onMode="1" bRatio="0.0050000" products="2214 311"/> 
+ <channel onMode="1" bRatio="0.0050000" products="2214 -313"/> 
+ <channel onMode="1" bRatio="0.0010000" products="2214 331"/> 
+ <channel onMode="1" bRatio="0.0010000" products="2224 -211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="2224 -213"/> 
+ <channel onMode="1" bRatio="0.0066000" products="2224 -321"/> 
+ <channel onMode="1" bRatio="0.0250000" products="2224 -323"/> 
+ <channel onMode="1" bRatio="0.0058000" products="3122 211"/> 
+ <channel onMode="1" bRatio="0.0050000" products="3122 213"/> 
+ <channel onMode="1" bRatio="0.0050000" products="3122 321"/> 
+ <channel onMode="1" bRatio="0.0050000" products="3122 323"/> 
+ <channel onMode="1" bRatio="0.0055000" products="3212 211"/> 
+ <channel onMode="1" bRatio="0.0040000" products="3212 213"/> 
+ <channel onMode="1" bRatio="0.0020000" products="3212 321"/> 
+ <channel onMode="1" bRatio="0.0020000" products="3212 323"/> 
+ <channel onMode="1" bRatio="0.0040000" products="3214 211"/> 
+ <channel onMode="1" bRatio="0.0040000" products="3214 213"/> 
+ <channel onMode="1" bRatio="0.0010000" products="3214 321"/> 
+ <channel onMode="1" bRatio="0.0010000" products="3214 323"/> 
+ <channel onMode="1" bRatio="0.0040000" products="3222 111"/> 
+ <channel onMode="1" bRatio="0.0040000" products="3222 113"/> 
+ <channel onMode="1" bRatio="0.0020000" products="3222 221"/> 
+ <channel onMode="1" bRatio="0.0040000" products="3222 223"/> 
+ <channel onMode="1" bRatio="0.0020000" products="3222 311"/> 
+ <channel onMode="1" bRatio="0.0020000" products="3222 313"/> 
+ <channel onMode="1" bRatio="0.0020000" products="3222 331"/> 
+ <channel onMode="1" bRatio="0.0030000" products="3224 111"/> 
+ <channel onMode="1" bRatio="0.0030000" products="3224 113"/> 
+ <channel onMode="1" bRatio="0.0020000" products="3224 221"/> 
+ <channel onMode="1" bRatio="0.0030000" products="3224 223"/> 
+ <channel onMode="1" bRatio="0.0010000" products="3224 311"/> 
+ <channel onMode="1" bRatio="0.0010000" products="3224 313"/> 
+ <channel onMode="1" bRatio="0.0020000" products="3322 321"/> 
+ <channel onMode="1" bRatio="0.0020000" products="3322 323"/> 
+ <channel onMode="1" bRatio="0.0020000" products="3324 321"/> 
+ <channel onMode="1" bRatio="0.0018000" products="9010221 2212"/> 
+ <channel onMode="1" bRatio="0.0300000" meMode="43" products="1 2203"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="43" products="2 2101"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="43" products="2 2103"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="43" products="2 3201"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="43" products="2 3203"/> 
+ <channel onMode="1" bRatio="0.0950000" meMode="43" products="3 2203"/> 
+ <channel onMode="1" bRatio="0.0350000" meMode="43" products="2 -1 1 2101"/> 
+ <channel onMode="1" bRatio="0.1300000" meMode="43" products="2 -1 1 3201"/> 
+ <channel onMode="1" bRatio="0.0570000" meMode="43" products="2 -1 1 3203"/> 
+ <channel onMode="1" bRatio="0.0350000" meMode="43" products="2 -3 1 3201"/> 
+</particle> 
+ 
+<!--
+<particle id="4124" name="Lambda_c(2625)+" antiName="Lambda_c(2625)-" spinType="4" chargeType="3" colType="0" 
+          m0="2.62810"> 
+ <channel onMode="1" bRatio="0.6600000" products="4122 211 -211"/> 
+ <channel onMode="1" bRatio="0.3300000" products="4122 111"/> 
+ <channel onMode="1" bRatio="0.0100000" products="4122 22"/> 
+</particle> 
+-->
+ 
+<particle id="4132" name="Xi_c0" antiName="Xi_cbar0" spinType="2" chargeType="0" colType="0" 
+          m0="2.47088" tau0="3.36000e-02"> 
+ <channel onMode="1" bRatio="0.0200000" meMode="22" products="-11 12 3 3101"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-11 12 3 3103"/> 
+ <channel onMode="1" bRatio="0.0200000" meMode="22" products="-13 14 3 3101"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-13 14 3 3103"/> 
+ <channel onMode="1" bRatio="0.5400000" meMode="42" products="2 -1 3 3101"/> 
+ <channel onMode="1" bRatio="0.2100000" meMode="42" products="3 3201"/> 
+ <channel onMode="1" bRatio="0.1000000" meMode="42" products="3 3203"/> 
+ <channel onMode="1" bRatio="0.1000000" meMode="42" products="2 3303"/> 
+</particle> 
+ 
+<!--
+<particle id="4201" name="cu_0" antiName="cu_0bar" spinType="1" chargeType="4" colType="-1" 
+          m0="1.96908"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="4203" name="cu_1" antiName="cu_1bar" spinType="3" chargeType="4" colType="-1" 
+          m0="2.00808"> 
+</particle> 
+-->
+ 
+<particle id="4212" name="Sigma_c+" antiName="Sigma_cbar-" spinType="2" chargeType="3" colType="0" 
+          m0="2.45290" mWidth="0.00220" mMin="2.43090" mMax="2.47490"> 
+ <channel onMode="1" bRatio="1.0000000" products="4122 111"/> 
+</particle> 
+ 
+<particle id="4214" name="Sigma*_c+" antiName="Sigma*_cbar-" spinType="4" chargeType="3" colType="0" 
+          m0="2.51750" mWidth="0.01550" mMin="2.43000" mMax="2.68000"> 
+ <channel onMode="1" bRatio="1.0000000" products="4122 111"/> 
+</particle> 
+ 
+<particle id="4222" name="Sigma_c++" antiName="Sigma_cbar--" spinType="2" chargeType="6" colType="0" 
+          m0="2.45398" mWidth="0.00226" mMin="2.43202" mMax="2.47602"> 
+ <channel onMode="1" bRatio="1.0000000" products="4122 211"/> 
+</particle> 
+ 
+<particle id="4224" name="Sigma*_c++" antiName="Sigma*_cbar--" spinType="4" chargeType="6" colType="0" 
+          m0="2.51790" mWidth="0.01490" mMin="2.43000" mMax="2.68000"> 
+ <channel onMode="1" bRatio="1.0000000" products="4122 211"/> 
+</particle> 
+ 
+<particle id="4232" name="Xi_c+" antiName="Xi_cbar-" spinType="2" chargeType="3" colType="0" 
+          m0="2.46780" tau0="1.32000e-01"> 
+ <channel onMode="1" bRatio="0.0280000" meMode="22" products="-11 12 3 3201"/> 
+ <channel onMode="1" bRatio="0.0070000" meMode="22" products="-11 12 3 3203"/> 
+ <channel onMode="1" bRatio="0.0280000" meMode="22" products="-13 14 3 3201"/> 
+ <channel onMode="1" bRatio="0.0070000" meMode="22" products="-13 14 3 3203"/> 
+ <channel onMode="1" bRatio="0.9300000" meMode="42" products="2 -1 3 3201"/> 
+</particle> 
+ 
+<!--
+<particle id="4301" name="cs_0" antiName="cs_0bar" spinType="1" chargeType="1" colType="-1" 
+          m0="2.15432"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="4303" name="cs_1" antiName="cs_1bar" spinType="3" chargeType="1" colType="-1" 
+          m0="2.17967"> 
+</particle> 
+-->
+ 
+<particle id="4312" name="Xi'_c0" antiName="Xi'_cbar0" spinType="2" chargeType="0" colType="0" 
+          m0="2.57790"> 
+ <channel onMode="1" bRatio="1.0000000" products="4132 22"/> 
+</particle> 
+ 
+
+<particle id="4314" name="Xi*_c0" antiName="Xi*_cbar0" spinType="4" chargeType="0" colType="0" 
+          m0="2.64590" mWidth="0.0026" mMin="2.63590" mMax="2.65590"> 
+ <channel onMode="1" bRatio="0.5000000" products="4132 111"/> 
+ <channel onMode="1" bRatio="0.5000000" products="4132 22"/> 
+</particle> 
+
+ 
+<particle id="4322" name="Xi'_c+" antiName="Xi'_cbar-" spinType="2" chargeType="3" colType="0" 
+          m0="2.57560"> 
+ <channel onMode="1" bRatio="1.0000000" products="4232 22"/> 
+</particle> 
+ 
+
+<particle id="4324" name="Xi*_c+" antiName="Xi*_cbar-" spinType="4" chargeType="3" colType="0" 
+          m0="2.64590" mWidth="0.0026" mMin="2.63590" mMax="2.65590"> 
+ <channel onMode="1" bRatio="0.5000000" products="4232 111"/> 
+ <channel onMode="1" bRatio="0.5000000" products="4232 22"/> 
+</particle> 
+
+ 
+<particle id="4332" name="Omega_c0" antiName="Omega_cbar0" spinType="2" chargeType="0" colType="0" 
+          m0="2.69520" tau0="2.10000e-02"> 
+ <channel onMode="1" bRatio="0.0180000" meMode="22" products="-11 12 3 3303"/> 
+ <channel onMode="1" bRatio="0.0180000" meMode="22" products="-13 14 3 3303"/> 
+ <channel onMode="1" bRatio="0.9640000" meMode="42" products="2 -1 3 3303"/> 
+</particle> 
+ 
+<!--
+<particle id="4334" name="Omega*_c0" antiName="Omega*_cbar0" spinType="4" chargeType="0" colType="0" 
+          m0="2.76590"> 
+ <channel onMode="1" bRatio="1.0000000" products="4332 22"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="4403" name="cc_1" antiName="cc_1bar" spinType="3" chargeType="4" colType="-1" 
+          m0="3.27531"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="4412" name="Xi_cc+" antiName="Xi_ccbar-" spinType="2" chargeType="3" colType="0" 
+          m0="3.59798" tau0="1.00000e-01"> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-11 12 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-13 14 3 81"/> 
+ <channel onMode="1" bRatio="0.7600000" meMode="42" products="2 -1 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="42" products="2 -3 3 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="4414" name="Xi*_cc+" antiName="Xi*_ccbar-" spinType="4" chargeType="3" colType="0" 
+          m0="3.65648" tau0="1.00000e-01"> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-11 12 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-13 14 3 81"/> 
+ <channel onMode="1" bRatio="0.7600000" meMode="42" products="2 -1 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="42" products="2 -3 3 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="4422" name="Xi_cc++" antiName="Xi_ccbar&#45;&#45;" spinType="2" chargeType="6" colType="0" 
+          m0="3.59798" tau0="1.00000e-01"> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-11 12 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-13 14 3 81"/> 
+ <channel onMode="1" bRatio="0.7600000" meMode="42" products="2 -1 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="42" products="2 -3 3 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="4424" name="Xi*_cc++" antiName="Xi*_ccbar&#45;&#45;" spinType="4" chargeType="6" colType="0" 
+          m0="3.65648" tau0="1.00000e-01"> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-11 12 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-13 14 3 81"/> 
+ <channel onMode="1" bRatio="0.7600000" meMode="42" products="2 -1 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="42" products="2 -3 3 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="4432" name="Omega_cc+" antiName="Omega_ccbar-" spinType="2" chargeType="3" colType="0" 
+          m0="3.78663" tau0="1.00000e-01"> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-11 12 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-13 14 3 81"/> 
+ <channel onMode="1" bRatio="0.7600000" meMode="42" products="2 -1 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="42" products="2 -3 3 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="4434" name="Omega*_cc+" antiName="Omega*_ccbar-" spinType="4" chargeType="3" colType="0" 
+          m0="3.82466" tau0="1.00000e-01"> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-11 12 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-13 14 3 81"/> 
+ <channel onMode="1" bRatio="0.7600000" meMode="42" products="2 -1 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="42" products="2 -3 3 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="4444" name="Omega*_ccc++" antiName="Omega*_cccbar&#45;&#45;" spinType="4" chargeType="6" colType="0" 
+          m0="4.91594" tau0="1.00000e-01"> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-11 12 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-13 14 3 81"/> 
+ <channel onMode="1" bRatio="0.7600000" meMode="42" products="2 -1 3 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="42" products="2 -3 3 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5101" name="bd_0" antiName="bd_0bar" spinType="1" chargeType="-2" colType="-1" 
+          m0="5.38897"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5103" name="bd_1" antiName="bd_1bar" spinType="3" chargeType="-2" colType="-1" 
+          m0="5.40145"> 
+</particle> 
+-->
+ 
+<particle id="5112" name="Sigma_b-" antiName="Sigma_bbar+" spinType="2" chargeType="-3" colType="0" 
+          m0="5.81550"> 
+ <channel onMode="1" bRatio="1.0000000" products="5122 -211"/> 
+</particle> 
+ 
+<!--
+<particle id="5114" name="Sigma*_b-" antiName="Sigma*_bbar+" spinType="4" chargeType="-3" colType="0" 
+          m0="5.83510"> 
+ <channel onMode="1" bRatio="1.0000000" products="5122 -211"/> 
+</particle> 
+-->
+ 
+<particle id="5122" name="Lambda_b0" antiName="Lambda_bbar0" spinType="2" chargeType="0" colType="0" 
+          m0="5.61940" tau0="3.69000e-01"> 
+ <channel onMode="1" bRatio="0.0546000" meMode="22" products="-12 11 4122"/> 
+ <channel onMode="1" bRatio="0.0096000" meMode="22" products="-12 11 4124"/> 
+ <channel onMode="1" bRatio="0.0128000" meMode="22" products="-12 11 14122"/> 
+ <channel onMode="1" bRatio="0.0546000" meMode="22" products="-14 13 4122"/> 
+ <channel onMode="1" bRatio="0.0096000" meMode="22" products="-14 13 4124"/> 
+ <channel onMode="1" bRatio="0.0128000" meMode="22" products="-14 13 14122"/> 
+ <channel onMode="1" bRatio="0.0172000" meMode="22" products="-16 15 4122"/> 
+ <channel onMode="1" bRatio="0.0032000" meMode="22" products="-16 15 4124"/> 
+ <channel onMode="1" bRatio="0.0043000" meMode="22" products="-16 15 14122"/> 
+ <channel onMode="1" bRatio="0.0008000" products="2112 421"/> 
+ <channel onMode="1" bRatio="0.0000048" products="2212 -211"/> 
+ <channel onMode="1" bRatio="0.0000185" products="2212 -321"/> 
+ <channel onMode="1" bRatio="0.0000650" products="3122 22"/> 
+ <channel onMode="1" bRatio="0.0000050" products="3122 113"/> 
+ <channel onMode="1" bRatio="0.0000200" products="3122 333"/> 
+ <channel onMode="1" bRatio="0.0008000" products="3122 -421"/> 
+ <channel onMode="1" bRatio="0.0010000" products="3122 441"/> 
+ <channel onMode="1" bRatio="0.0004700" products="3122 443"/> 
+ <channel onMode="1" bRatio="0.0000590" products="3124 22"/> 
+ <channel onMode="1" bRatio="0.0006000" products="4112 111"/> 
+ <channel onMode="1" bRatio="0.0004000" products="4112 221"/> 
+ <channel onMode="1" bRatio="0.0005000" products="4112 331"/> 
+ <channel onMode="1" bRatio="0.0400000" products="4122 -211"/> 
+ <channel onMode="1" bRatio="0.0100000" products="4122 -213"/> 
+ <channel onMode="1" bRatio="0.0005500" products="4122 -321"/> 
+ <channel onMode="1" bRatio="0.0220000" products="4122 -431"/> 
+ <channel onMode="1" bRatio="0.0440000" products="4122 -433"/> 
+ <channel onMode="1" bRatio="0.0003000" products="4132 311"/> 
+ <channel onMode="1" bRatio="0.0006000" products="4212 -211"/> 
+ <channel onMode="1" bRatio="0.0005000" products="4312 311"/> 
+ <channel onMode="1" bRatio="0.0200000" products="-20213 4122"/> 
+ <channel onMode="1" bRatio="0.0000570" products="23122 22"/> 
+ <channel onMode="1" bRatio="0.0000560" products="33122 22"/> 
+ <channel onMode="1" bRatio="0.0003800" products="100443 3122"/> 
+ <channel onMode="1" bRatio="0.0220000" products="4122 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0200000" products="3122 311 211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0120000" meMode="22" products="-2 1 2 2101"/> 
+ <channel onMode="1" bRatio="0.4411147" meMode="23" products="-2 1 4 2101"/> 
+ <channel onMode="1" bRatio="0.0910000" meMode="43" products="-2 4 1 2101"/> 
+ <channel onMode="1" bRatio="0.0120000" meMode="22" products="-4 3 2 2101"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="43" products="-4 3 4 2101"/> 
+</particle> 
+ 
+<particle id="5132" name="Xi_b-" antiName="Xi_bbar+" spinType="2" chargeType="-3" colType="0" 
+          m0="5.79110" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1080010" meMode="22" products="-12 11 4 3101"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="-12 11 2 3101"/> 
+ <channel onMode="1" bRatio="0.1080000" meMode="22" products="-14 13 4 3101"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="-14 13 2 3101"/> 
+ <channel onMode="1" bRatio="0.0250000" meMode="22" products="-16 15 4 3101"/> 
+ <channel onMode="1" bRatio="0.0010000" meMode="22" products="-16 15 4 3101"/> 
+ <channel onMode="1" bRatio="0.0010000" products="443 3312"/> 
+ <channel onMode="1" bRatio="0.0004370" products="100443 3312"/> 
+ <channel onMode="1" bRatio="0.0004710" products="20443 3312"/> 
+ <channel onMode="1" bRatio="0.0000900" products="445 3312"/> 
+ <channel onMode="1" bRatio="0.0004900" products="441 3312"/> 
+ <channel onMode="1" bRatio="0.0015000" products="443 3314"/> 
+ <channel onMode="1" bRatio="0.0006560" products="100443 3314"/> 
+ <channel onMode="1" bRatio="0.0007060" products="20443 3314"/> 
+ <channel onMode="1" bRatio="0.0001350" products="445 3314"/> 
+ <channel onMode="1" bRatio="0.0007350" products="441 3314"/> 
+ <channel onMode="1" bRatio="0.0012000" products="443 -321 3122"/> 
+ <channel onMode="1" bRatio="0.0005240" products="100443 -321 3122"/> 
+ <channel onMode="1" bRatio="0.0005650" products="20443 -321 3122"/> 
+ <channel onMode="1" bRatio="0.0001080" products="445 -321 3122"/> 
+ <channel onMode="1" bRatio="0.0005880" products="441 -321 3122"/> 
+ <channel onMode="1" bRatio="0.0006000" products="443 -311 3112"/> 
+ <channel onMode="1" bRatio="0.0002620" products="100443 -311 3112"/> 
+ <channel onMode="1" bRatio="0.0002830" products="20443 -311 3112"/> 
+ <channel onMode="1" bRatio="0.0000540" products="445 -311 3112"/> 
+ <channel onMode="1" bRatio="0.0002940" products="441 -311 3112"/> 
+ <channel onMode="1" bRatio="0.0038200" meMode="43" products="443 3 3101"/> 
+ <channel onMode="1" bRatio="0.0016690" meMode="43" products="100443 3 3101"/> 
+ <channel onMode="1" bRatio="0.0017990" meMode="43" products="20443 3 3101"/> 
+ <channel onMode="1" bRatio="0.0003440" meMode="43" products="445 3 3101"/> 
+ <channel onMode="1" bRatio="0.0018720" meMode="43" products="441 3 3101"/> 
+ <channel onMode="1" bRatio="0.1096770" meMode="22" products="-2 1 4 3101"/> 
+ <channel onMode="1" bRatio="0.2632250" meMode="22" products="-2 4 1 3101"/> 
+ <channel onMode="1" bRatio="0.0658060" meMode="42" products="-2 1 4 3101"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="42" products="-2 4 1 3101"/> 
+ <channel onMode="1" bRatio="0.0057720" meMode="22" products="-2 3 4 3101"/> 
+ <channel onMode="1" bRatio="0.0138540" meMode="22" products="-2 4 3 3101"/> 
+ <channel onMode="1" bRatio="0.0034630" meMode="42" products="-2 3 4 3101"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="42" products="-2 4 3 3101"/> 
+ <channel onMode="1" bRatio="0.0090000" meMode="22" products="-2 1 2 3101"/> 
+ <channel onMode="1" bRatio="0.0060000" meMode="22" products="-2 2 1 3101"/> 
+ <channel onMode="1" bRatio="0.0230000" meMode="63" products="-431 4 3101"/> 
+ <channel onMode="1" bRatio="0.0230000" meMode="63" products="-433 4 3101"/> 
+ <channel onMode="1" bRatio="0.0130000" products="-431 4132"/> 
+ <channel onMode="1" bRatio="0.0090000" products="-431 4314"/> 
+ <channel onMode="1" bRatio="0.0090000" products="-433 4132"/> 
+ <channel onMode="1" bRatio="0.0230000" products="-433 4314"/> 
+ <channel onMode="1" bRatio="0.0080000" meMode="22" products="-421 -321 4 3101"/> 
+ <channel onMode="1" bRatio="0.0080000" meMode="22" products="-411 -311 4 3101"/> 
+ <channel onMode="1" bRatio="0.0320000" meMode="22" products="-423 -321 4 3101"/> 
+ <channel onMode="1" bRatio="0.0320000" meMode="22" products="-413 -311 4 3101"/> 
+ <channel onMode="1" bRatio="0.0770000" meMode="42" products="4122 -2203 3101"/> 
+</particle> 
+ 
+<!--
+<particle id="5142" name="Xi_bc0" antiName="Xi_bcbar0" spinType="2" chargeType="0" colType="0" 
+          m0="7.00575" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5201" name="bu_0" antiName="bu_0bar" spinType="1" chargeType="1" colType="-1" 
+          m0="5.38897"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5203" name="bu_1" antiName="bu_1bar" spinType="3" chargeType="1" colType="-1" 
+          m0="5.40145"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5212" name="Sigma_b0" antiName="Sigma_bbar0" spinType="2" chargeType="0" colType="0" 
+          m0="5.80000"> 
+ <channel onMode="1" bRatio="1.0000000" products="5122 111"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5214" name="Sigma*_b0" antiName="Sigma*_bbar0" spinType="4" chargeType="0" colType="0" 
+          m0="5.81000"> 
+ <channel onMode="1" bRatio="1.0000000" products="5122 111"/> 
+</particle> 
+-->
+ 
+<particle id="5222" name="Sigma_b+" antiName="Sigma_bbar-" spinType="2" chargeType="3" colType="0" 
+          m0="5.81130"> 
+ <channel onMode="1" bRatio="1.0000000" products="5122 211"/> 
+</particle> 
+ 
+<!--
+<particle id="5224" name="Sigma*_b+" antiName="Sigma*_bbar-" spinType="4" chargeType="3" colType="0" 
+          m0="5.83210"> 
+ <channel onMode="1" bRatio="1.0000000" products="5122 211"/> 
+</particle> 
+-->
+ 
+<particle id="5232" name="Xi_b0" antiName="Xi_bbar0" spinType="2" chargeType="0" colType="0" 
+          m0="5.78800" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1080010" meMode="22" products="-12 11 4 3201"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="-12 11 2 3201"/> 
+ <channel onMode="1" bRatio="0.1080000" meMode="22" products="-14 13 4 3201"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="-14 13 2 3201"/> 
+ <channel onMode="1" bRatio="0.0250000" meMode="22" products="-16 15 4 3201"/> 
+ <channel onMode="1" bRatio="0.0010000" meMode="22" products="-16 15 4 3201"/> 
+ <channel onMode="1" bRatio="0.0010000" products="443 3322"/> 
+ <channel onMode="1" bRatio="0.0004370" products="100443 3322"/> 
+ <channel onMode="1" bRatio="0.0004710" products="20443 3322"/> 
+ <channel onMode="1" bRatio="0.0000900" products="445 3322"/> 
+ <channel onMode="1" bRatio="0.0004900" products="441 3322"/> 
+ <channel onMode="1" bRatio="0.0015000" products="443 3324"/> 
+ <channel onMode="1" bRatio="0.0006560" products="100443 3324"/> 
+ <channel onMode="1" bRatio="0.0007060" products="20443 3324"/> 
+ <channel onMode="1" bRatio="0.0001350" products="445 3324"/> 
+ <channel onMode="1" bRatio="0.0007350" products="441 3324"/> 
+ <channel onMode="1" bRatio="0.0012000" products="443 -321 3222"/> 
+ <channel onMode="1" bRatio="0.0005240" products="100443 -321 3222"/> 
+ <channel onMode="1" bRatio="0.0005650" products="20443 -321 3222"/> 
+ <channel onMode="1" bRatio="0.0001080" products="445 -321 3222"/> 
+ <channel onMode="1" bRatio="0.0005880" products="441 -321 3222"/> 
+ <channel onMode="1" bRatio="0.0006000" products="443 -311 3212"/> 
+ <channel onMode="1" bRatio="0.0002620" products="100443 -311 3212"/> 
+ <channel onMode="1" bRatio="0.0002830" products="20443 -311 3212"/> 
+ <channel onMode="1" bRatio="0.0000540" products="445 -311 3212"/> 
+ <channel onMode="1" bRatio="0.0002940" products="441 -311 3212"/> 
+ <channel onMode="1" bRatio="0.0038200" meMode="43" products="443 3 3201"/> 
+ <channel onMode="1" bRatio="0.0016690" meMode="43" products="100443 3 3201"/> 
+ <channel onMode="1" bRatio="0.0017990" meMode="43" products="20443 3 3201"/> 
+ <channel onMode="1" bRatio="0.0003440" meMode="43" products="445 3 3201"/> 
+ <channel onMode="1" bRatio="0.0018720" meMode="43" products="441 3 3201"/> 
+ <channel onMode="1" bRatio="0.1096770" meMode="22" products="-2 1 4 3201"/> 
+ <channel onMode="1" bRatio="0.2632250" meMode="22" products="-2 4 1 3201"/> 
+ <channel onMode="1" bRatio="0.0658060" meMode="42" products="-2 1 4 3201"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="42" products="-2 4 1 3201"/> 
+ <channel onMode="1" bRatio="0.0057720" meMode="22" products="-2 3 4 3201"/> 
+ <channel onMode="1" bRatio="0.0138540" meMode="22" products="-2 4 3 3201"/> 
+ <channel onMode="1" bRatio="0.0034630" meMode="42" products="-2 3 4 3201"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="42" products="-2 4 3 3201"/> 
+ <channel onMode="1" bRatio="0.0090000" meMode="22" products="-2 1 2 3201"/> 
+ <channel onMode="1" bRatio="0.0060000" meMode="22" products="-2 2 1 3201"/> 
+ <channel onMode="1" bRatio="0.0230000" meMode="63" products="-431 4 3201"/> 
+ <channel onMode="1" bRatio="0.0230000" meMode="63" products="-433 4 3201"/> 
+ <channel onMode="1" bRatio="0.0130000" products="-431 4232"/> 
+ <channel onMode="1" bRatio="0.0090000" products="-431 4324"/> 
+ <channel onMode="1" bRatio="0.0090000" products="-433 4232"/> 
+ <channel onMode="1" bRatio="0.0230000" products="-433 4324"/> 
+ <channel onMode="1" bRatio="0.0080000" meMode="22" products="-421 -321 4 3201"/> 
+ <channel onMode="1" bRatio="0.0080000" meMode="22" products="-411 -311 4 3201"/> 
+ <channel onMode="1" bRatio="0.0320000" meMode="22" products="-423 -321 4 3201"/> 
+ <channel onMode="1" bRatio="0.0320000" meMode="22" products="-413 -311 4 3201"/> 
+ <channel onMode="1" bRatio="0.0770000" meMode="42" products="4122 -2203 3201"/> 
+</particle> 
+ 
+<!--
+<particle id="5242" name="Xi_bc+" antiName="Xi_bcbar-" spinType="2" chargeType="3" colType="0" 
+          m0="7.00575" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5301" name="bs_0" antiName="bs_0bar" spinType="1" chargeType="-2" colType="-1" 
+          m0="5.56725"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5303" name="bs_1" antiName="bs_1bar" spinType="3" chargeType="-2" colType="-1" 
+          m0="5.57536"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5312" name="Xi'_b-" antiName="Xi'_bbar+" spinType="2" chargeType="-3" colType="0" 
+          m0="5.96000"> 
+ <channel onMode="1" bRatio="1.0000000" products="5132 22"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5314" name="Xi*_b-" antiName="Xi*_bbar+" spinType="4" chargeType="-3" colType="0" 
+          m0="5.97000"> 
+ <channel onMode="1" bRatio="1.0000000" products="5132 22"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5322" name="Xi'_b0" antiName="Xi'_bbar0" spinType="2" chargeType="0" colType="0" 
+          m0="5.96000"> 
+ <channel onMode="1" bRatio="1.0000000" products="5232 22"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5324" name="Xi*_b0" antiName="Xi*_bbar0" spinType="4" chargeType="0" colType="0" 
+          m0="5.97000"> 
+ <channel onMode="1" bRatio="1.0000000" products="5232 22"/> 
+</particle> 
+-->
+ 
+<particle id="5332" name="Omega_b-" antiName="Omega_bbar+" spinType="2" chargeType="-3" colType="0" 
+          m0="6.07000" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1080010" meMode="22" products="-12 11 4 3303"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="-12 11 2 3303"/> 
+ <channel onMode="1" bRatio="0.1080000" meMode="22" products="-14 13 4 3303"/> 
+ <channel onMode="1" bRatio="0.0020000" meMode="22" products="-14 13 2 3303"/> 
+ <channel onMode="1" bRatio="0.0250000" meMode="22" products="-16 15 4 3303"/> 
+ <channel onMode="1" bRatio="0.0010000" meMode="22" products="-16 15 4 3303"/> 
+ <channel onMode="1" bRatio="0.0025000" products="443 3334"/> 
+ <channel onMode="1" bRatio="0.0010930" products="100443 3334"/> 
+ <channel onMode="1" bRatio="0.0011770" products="20443 3334"/> 
+ <channel onMode="1" bRatio="0.0002250" products="445 3334"/> 
+ <channel onMode="1" bRatio="0.0012250" products="441 3334"/> 
+ <channel onMode="1" bRatio="0.0012000" products="443 -321 3322"/> 
+ <channel onMode="1" bRatio="0.0005240" products="100443 -321 3322"/> 
+ <channel onMode="1" bRatio="0.0005650" products="20443 -321 3322"/> 
+ <channel onMode="1" bRatio="0.0001080" products="445 -321 3322"/> 
+ <channel onMode="1" bRatio="0.0005880" products="441 -321 3322"/> 
+ <channel onMode="1" bRatio="0.0006000" products="443 -311 3312"/> 
+ <channel onMode="1" bRatio="0.0002620" products="100443 -311 3312"/> 
+ <channel onMode="1" bRatio="0.0002830" products="20443 -311 3312"/> 
+ <channel onMode="1" bRatio="0.0000540" products="445 -311 3312"/> 
+ <channel onMode="1" bRatio="0.0002940" products="441 -311 3312"/> 
+ <channel onMode="1" bRatio="0.0038200" meMode="43" products="443 3 3303"/> 
+ <channel onMode="1" bRatio="0.0016690" meMode="43" products="100443 3 3303"/> 
+ <channel onMode="1" bRatio="0.0017990" meMode="43" products="20443 3 3303"/> 
+ <channel onMode="1" bRatio="0.0003440" meMode="43" products="445 3 3303"/> 
+ <channel onMode="1" bRatio="0.0018720" meMode="43" products="441 3 3303"/> 
+ <channel onMode="1" bRatio="0.1096770" meMode="22" products="-2 1 4 3303"/> 
+ <channel onMode="1" bRatio="0.2632250" meMode="22" products="-2 4 1 3303"/> 
+ <channel onMode="1" bRatio="0.0658060" meMode="42" products="-2 1 4 3303"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="42" products="-2 4 1 3303"/> 
+ <channel onMode="1" bRatio="0.0057720" meMode="22" products="-2 3 4 3303"/> 
+ <channel onMode="1" bRatio="0.0138540" meMode="22" products="-2 4 3 3303"/> 
+ <channel onMode="1" bRatio="0.0034630" meMode="42" products="-2 3 4 3303"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="42" products="-2 4 3 3303"/> 
+ <channel onMode="1" bRatio="0.0090000" meMode="22" products="-2 1 2 3303"/> 
+ <channel onMode="1" bRatio="0.0060000" meMode="22" products="-2 2 1 3303"/> 
+ <channel onMode="1" bRatio="0.0230000" meMode="63" products="-431 4 3303"/> 
+ <channel onMode="1" bRatio="0.0230000" meMode="63" products="-433 4 3303"/> 
+ <channel onMode="1" bRatio="0.0130000" products="-431 4332"/> 
+ <channel onMode="1" bRatio="0.0090000" products="-431 4334"/> 
+ <channel onMode="1" bRatio="0.0090000" products="-433 4332"/> 
+ <channel onMode="1" bRatio="0.0230000" products="-433 4334"/> 
+ <channel onMode="1" bRatio="0.0080000" meMode="22" products="-421 -321 4 3303"/> 
+ <channel onMode="1" bRatio="0.0080000" meMode="22" products="-411 -311 4 3303"/> 
+ <channel onMode="1" bRatio="0.0320000" meMode="22" products="-423 -321 4 3303"/> 
+ <channel onMode="1" bRatio="0.0320000" meMode="22" products="-413 -311 4 3303"/> 
+ <channel onMode="1" bRatio="0.0770000" meMode="42" products="4122 -2203 3303"/> 
+</particle> 
+ 
+<!--
+<particle id="5334" name="Omega*_b-" antiName="Omega*_bbar+" spinType="4" chargeType="-3" colType="0" 
+          m0="6.13000"> 
+ <channel onMode="1" bRatio="1.0000000" products="5332 22"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5342" name="Omega_bc0" antiName="Omega_bcbar0" spinType="2" chargeType="0" colType="0" 
+          m0="7.19099" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5401" name="bc_0" antiName="bc_0bar" spinType="1" chargeType="1" colType="-1" 
+          m0="6.67143"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5403" name="bc_1" antiName="bc_1bar" spinType="3" chargeType="1" colType="-1" 
+          m0="6.67397"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5412" name="Xi'_bc0" antiName="Xi'_bcbar0" spinType="2" chargeType="0" colType="0" 
+          m0="7.03724" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5414" name="Xi*_bc0" antiName="Xi*_bcbar0" spinType="4" chargeType="0" colType="0" 
+          m0="7.04850" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5422" name="Xi'_bc+" antiName="Xi'_bcbar-" spinType="2" chargeType="3" colType="0" 
+          m0="7.03724" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5424" name="Xi*_bc+" antiName="Xi*_bcbar-" spinType="4" chargeType="3" colType="0" 
+          m0="7.04850" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5432" name="Omega'_bc0" antiName="Omega'_bcbar0" spinType="2" chargeType="0" colType="0" 
+          m0="7.21101" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5434" name="Omega*_bc0" antiName="Omega*_bcbar0" spinType="4" chargeType="0" colType="0" 
+          m0="7.21900" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5442" name="Omega_bcc+" antiName="Omega_bccbar-" spinType="2" chargeType="3" colType="0" 
+          m0="8.30945" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5444" name="Omega*_bcc+" antiName="Omega*_bccbar-" spinType="4" chargeType="3" colType="0" 
+          m0="8.31325" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5503" name="bb_1" antiName="bb_1bar" spinType="3" chargeType="-2" colType="-1" 
+          m0="10.07354"> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5512" name="Xi_bb-" antiName="Xi_bbbar+" spinType="2" chargeType="-3" colType="0" 
+          m0="10.42272" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5514" name="Xi*_bb-" antiName="Xi*_bbbar+" spinType="4" chargeType="-3" colType="0" 
+          m0="10.44144" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5522" name="Xi_bb0" antiName="Xi_bbbar0" spinType="2" chargeType="0" colType="0" 
+          m0="10.42272" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5524" name="Xi*_bb0" antiName="Xi*_bbbar0" spinType="4" chargeType="0" colType="0" 
+          m0="10.44144" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5532" name="Omega_bb-" antiName="Omega_bbbar+" spinType="2" chargeType="-3" colType="0" 
+          m0="10.60209" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5534" name="Omega*_bb-" antiName="Omega*_bbbar+" spinType="4" chargeType="-3" colType="0" 
+          m0="10.61426" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5542" name="Omega_bbc0" antiName="Omega_bbcbar0" spinType="2" chargeType="0" colType="0" 
+          m0="11.70767" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5544" name="Omega*_bbc0" antiName="Omega*_bbcbar0" spinType="4" chargeType="0" colType="0" 
+          m0="11.71147" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="5554" name="Omega*_bbb-" antiName="Omega*_bbbbar+" spinType="4" chargeType="-3" colType="0" 
+          m0="15.11061" tau0="3.64000e-01"> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-12 11 4 81"/> 
+ <channel onMode="1" bRatio="0.1050000" meMode="22" products="-14 13 4 81"/> 
+ <channel onMode="1" bRatio="0.0400000" meMode="22" products="-16 15 4 81"/> 
+ <channel onMode="1" bRatio="0.5000000" meMode="22" products="-2 1 4 81"/> 
+ <channel onMode="1" bRatio="0.0800000" meMode="22" products="-2 4 1 81"/> 
+ <channel onMode="1" bRatio="0.1400000" meMode="22" products="-4 3 4 81"/> 
+ <channel onMode="1" bRatio="0.0100000" meMode="22" products="-4 4 3 81"/> 
+ <channel onMode="1" bRatio="0.0150000" meMode="22" products="-2 1 2 81"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="22" products="-4 3 2 81"/> 
+</particle> 
+-->
+ 
+<!--
+<particle id="10111" name="a_0(1450)0" spinType="1" chargeType="0" colType="0" 
+          m0="1.47400" mWidth="0.26500" mMin="1.00000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.3000000" products="111 221"/> 
+ <channel onMode="1" bRatio="0.1000000" products="111 331"/> 
+ <channel onMode="1" bRatio="0.1200000" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.0600000" products="130 130"/> 
+ <channel onMode="1" bRatio="0.0600000" products="310 310"/> 
+ <channel onMode="1" bRatio="0.1800000" products="223 211 -211"/> 
+ <channel onMode="1" bRatio="0.1800000" products="223 111 111"/> 
+</particle> 
+ 
+<particle id="10113" name="b_1(1235)0" spinType="3" chargeType="0" colType="0" 
+          m0="1.22950" mWidth="0.14200" mMin="0.95000" mMax="1.70000"> 
+ <channel onMode="1" bRatio="1.0000000" products="223 111"/> 
+</particle> 
+ 
+<particle id="10211" name="a_0(1450)+" antiName="a_0(1450)-" spinType="1" chargeType="3" colType="0" 
+          m0="1.47400" mWidth="0.26500" mMin="1.00000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.3000000" products="211 221"/> 
+ <channel onMode="1" bRatio="0.1000000" products="211 331"/> 
+ <channel onMode="1" bRatio="0.2400000" products="321 -311"/> 
+ <channel onMode="1" bRatio="0.3600000" products="223 211 111"/> 
+</particle> 
+ 
+<particle id="10213" name="b_1(1235)+" antiName="b_1(1235)-" spinType="3" chargeType="3" colType="0" 
+          m0="1.22950" mWidth="0.14200" mMin="0.95000" mMax="1.70000"> 
+ <channel onMode="1" bRatio="0.9984000" products="223 211"/> 
+ <channel onMode="1" bRatio="0.0016000" products="211 22"/> 
+</particle> 
+ 
+<particle id="10221" name="f_0(1370)" spinType="1" chargeType="0" colType="0" 
+          m0="1.35000" mWidth="0.20000" mMin="1.00000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.2000000" products="113 111"/> 
+ <channel onMode="1" bRatio="0.2000000" products="213 -213"/> 
+ <channel onMode="1" bRatio="0.1000000" products="111 111 111 111"/> 
+ <channel onMode="1" bRatio="0.2000000" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.1000000" products="111 111"/> 
+ <channel onMode="1" bRatio="0.0500000" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.0250000" products="130 130"/> 
+ <channel onMode="1" bRatio="0.0250000" products="310 310"/> 
+ <channel onMode="1" bRatio="0.1000000" products="221 221"/> 
+</particle> 
+ 
+<particle id="10223" name="h_1(1170)" spinType="3" chargeType="0" colType="0" 
+          m0="1.17000" mWidth="0.36000" mMin="0.95000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.3330000" products="213 -211"/> 
+ <channel onMode="1" bRatio="0.3340000" products="113 111"/> 
+ <channel onMode="1" bRatio="0.3330000" products="-213 211"/> 
+</particle> 
+ 
+<particle id="10311" name="K*_0(1430)0" antiName="K*_0(1430)bar0" spinType="1" chargeType="0" colType="0" 
+          m0="1.43000" mWidth="0.27000" mMin="0.70000" mMax="2.20000"> 
+ <channel onMode="1" bRatio="0.6670000" products="321 -211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="311 111"/> 
+</particle> 
+ 
+<particle id="10313" name="K_1(1270)0" antiName="K_1(1270)bar0" spinType="3" chargeType="0" colType="0" 
+          m0="1.27200" mWidth="0.09000" mMin="1.00000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.2886598" products="321 -213"/> 
+ <channel onMode="1" bRatio="0.1443299" products="311 113"/> 
+ <channel onMode="1" bRatio="0.1924399" products="10321 -211"/> 
+ <channel onMode="1" bRatio="0.0962199" products="10311 111"/> 
+ <channel onMode="1" bRatio="0.1099656" products="323 -211"/> 
+ <channel onMode="1" bRatio="0.0549828" products="313 111"/> 
+ <channel onMode="1" bRatio="0.1134021" products="311 223"/> 
+</particle> 
+ 
+<particle id="10321" name="K*_0(1430)+" antiName="K*_0(1430)-" spinType="1" chargeType="3" colType="0" 
+          m0="1.43000" mWidth="0.27000" mMin="0.70000" mMax="2.20000"> 
+ <channel onMode="1" bRatio="0.6670000" products="311 211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="321 111"/> 
+</particle> 
+ 
+<particle id="10323" name="K_1(1270)+" antiName="K_1(1270)-" spinType="3" chargeType="3" colType="0" 
+          m0="1.27200" mWidth="0.09000" mMin="1.00000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.2886598" products="311 213"/> 
+ <channel onMode="1" bRatio="0.1443299" products="321 113"/> 
+ <channel onMode="1" bRatio="0.1924399" products="10311 211"/> 
+ <channel onMode="1" bRatio="0.0962199" products="10321 111"/> 
+ <channel onMode="1" bRatio="0.1099656" products="313 211"/> 
+ <channel onMode="1" bRatio="0.0549828" products="323 111"/> 
+ <channel onMode="1" bRatio="0.1134021" products="321 223"/> 
+</particle> 
+ 
+<particle id="10331" name="f_0(1710)" spinType="1" chargeType="0" colType="0" 
+          m0="1.72000" mWidth="0.13500" mMin="1.10000" mMax="2.40000"> 
+ <channel onMode="1" bRatio="0.3000000" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.1500000" products="130 130"/> 
+ <channel onMode="1" bRatio="0.1500000" products="310 310"/> 
+ <channel onMode="1" bRatio="0.3000000" products="221 221"/> 
+ <channel onMode="1" bRatio="0.0500000" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.0500000" products="111 111"/> 
+</particle> 
+ 
+<particle id="10333" name="h_1(1380)" spinType="3" chargeType="0" colType="0" 
+          m0="1.38600" mWidth="0.09100" mMin="1.38000" mMax="1.60000"> 
+ <channel onMode="1" bRatio="0.2500000" products="313 -311"/> 
+ <channel onMode="1" bRatio="0.2500000" products="-313 311"/> 
+ <channel onMode="1" bRatio="0.2500000" products="323 -321"/> 
+ <channel onMode="1" bRatio="0.2500000" products="-323 321"/> 
+</particle> 
+ 
+<particle id="10411" name="D*_0+" antiName="D*_0-" spinType="1" chargeType="3" colType="0" 
+          m0="2.31800" mWidth="0.27000" mMin="2.05000" mMax="2.50000"> 
+ <channel onMode="1" bRatio="0.6670000" products="421 211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="411 111"/> 
+</particle> 
+ 
+<particle id="10413" name="D_1+" antiName="D_1-" spinType="3" chargeType="3" colType="0" 
+          m0="2.42400" mWidth="0.02000" mMin="2.22400" mMax="2.62400"> 
+ <channel onMode="1" bRatio="0.6670000" products="423 211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="413 111"/> 
+</particle> 
+ 
+<particle id="10421" name="D*_00" antiName="D*_0bar0" spinType="1" chargeType="0" colType="0" 
+          m0="2.31800" mWidth="0.27000" mMin="2.05000" mMax="2.50000"> 
+ <channel onMode="1" bRatio="0.6670000" products="411 -211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="421 111"/> 
+</particle> 
+ 
+<particle id="10423" name="D_10" antiName="D_1bar0" spinType="3" chargeType="0" colType="0" 
+          m0="2.42130" mWidth="0.02710" mMin="2.21830" mMax="2.62630"> 
+ <channel onMode="1" bRatio="0.6670000" products="413 -211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="423 111"/> 
+</particle> 
+ 
+<particle id="10431" name="D*_0s+" antiName="D*_0s-" spinType="1" chargeType="3" colType="0" 
+          m0="2.31780" mWidth="0.02000" mMin="2.20000" mMax="2.44000"> 
+ <channel onMode="1" bRatio="1.0000000" products="431 111"/> 
+</particle> 
+ 
+<particle id="10433" name="D_1s+" antiName="D_1s-" spinType="3" chargeType="3" colType="0" 
+          m0="2.53512" mWidth="0.00092" mMin="2.52512" mMax="2.54512"> 
+ <channel onMode="1" bRatio="0.5000000" products="423 321"/> 
+ <channel onMode="1" bRatio="0.5000000" products="413 311"/> 
+</particle> 
+ 
+<particle id="10441" name="chi_0c" spinType="1" chargeType="0" colType="0" 
+          m0="3.41475" mWidth="0.01040" mMin="3.31076" mMax="3.51876"> 
+ <channel onMode="1" bRatio="0.0002600" products="22 22"/> 
+ <channel onMode="1" bRatio="0.0021000" products="130 130"/> 
+ <channel onMode="1" bRatio="0.0049000" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.0021000" products="221 221"/> 
+ <channel onMode="1" bRatio="0.0021000" products="310 310"/> 
+ <channel onMode="1" bRatio="0.0016000" products="313 -313"/> 
+ <channel onMode="1" bRatio="0.0060000" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.0010000" products="333 333"/> 
+ <channel onMode="1" bRatio="0.0200000" products="443 22"/> 
+ <channel onMode="1" bRatio="0.0002200" products="2212 -2212"/> 
+ <channel onMode="1" bRatio="0.0005000" products="3122 -3122"/> 
+ <channel onMode="1" bRatio="0.0028000" products="9010221 9010221"/> 
+ <channel onMode="1" bRatio="0.0100000" products="211 -211 113"/> 
+ <channel onMode="1" bRatio="0.0100000" products="213 -211 111"/> 
+ <channel onMode="1" bRatio="0.0100000" products="-213 211 111"/> 
+ <channel onMode="1" bRatio="0.0032000" products="321 -313 -211"/> 
+ <channel onMode="1" bRatio="0.0032000" products="-321 313 211"/> 
+ <channel onMode="1" bRatio="0.0043000" products="323 311 -211"/> 
+ <channel onMode="1" bRatio="0.0043000" products="-323 311 211"/> 
+ <channel onMode="1" bRatio="0.0134000" products="211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0021000" products="321 321 -321 -321"/> 
+ <channel onMode="1" bRatio="0.0153000" products="321 -321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0022000" products="2212 -2212 211 -211"/> 
+ <channel onMode="1" bRatio="0.0098000" products="211 211 211 -211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.8686200" meMode="52" products="83 -83"/> 
+</particle> 
+ 
+<particle id="10443" name="h_1c" spinType="3" chargeType="0" colType="0" 
+          m0="3.52541" mWidth="0.01000" mMin="3.36000" mMax="3.56000"> 
+ <channel onMode="1" bRatio="0.5000000" products="441 22"/> 
+ <channel onMode="1" bRatio="0.0100000" products="443 111"/> 
+ <channel onMode="1" bRatio="0.4900000" meMode="42" products="83 -83"/> 
+</particle> 
+ 
+<particle id="10511" name="B*_00" antiName="B*_0bar0" spinType="1" chargeType="0" colType="0" 
+          m0="5.68000" mWidth="0.05000" mMin="5.58000" mMax="5.78000"> 
+ <channel onMode="1" bRatio="0.6670000" products="521 -211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="511 111"/> 
+</particle> 
+ 
+<particle id="10513" name="B_10" antiName="B_1bar0" spinType="3" chargeType="0" colType="0" 
+          m0="5.73000" mWidth="0.05000" mMin="5.63000" mMax="5.83000"> 
+ <channel onMode="1" bRatio="0.6670000" products="523 -211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="513 111"/> 
+</particle> 
+ 
+<particle id="10521" name="B*_0+" antiName="B*_0-" spinType="1" chargeType="3" colType="0" 
+          m0="5.68000" mWidth="0.05000" mMin="5.58000" mMax="5.78000"> 
+ <channel onMode="1" bRatio="0.6670000" products="511 211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="521 111"/> 
+</particle> 
+ 
+<particle id="10523" name="B_1+" antiName="B_1-" spinType="3" chargeType="3" colType="0" 
+          m0="5.73000" mWidth="0.05000" mMin="5.63000" mMax="5.83000"> 
+ <channel onMode="1" bRatio="0.6670000" products="513 211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="523 111"/> 
+</particle> 
+ 
+<particle id="10531" name="B*_0s0" antiName="B*_0sbar0" spinType="1" chargeType="0" colType="0" 
+          m0="5.92000" mWidth="0.05000" mMin="5.82000" mMax="6.02000"> 
+ <channel onMode="1" bRatio="0.5000000" products="521 -321"/> 
+ <channel onMode="1" bRatio="0.5000000" products="511 -311"/> 
+</particle> 
+ 
+<particle id="10533" name="B_1s0" antiName="B_1sbar0" spinType="3" chargeType="0" colType="0" 
+          m0="5.82900" mWidth="0.05000" mMin="5.77900" mMax="5.87900"> 
+ <channel onMode="1" bRatio="0.5000000" products="523 -321"/> 
+ <channel onMode="1" bRatio="0.5000000" products="513 -311"/> 
+</particle> 
+ 
+<particle id="10541" name="B*_0c+" antiName="B*_0c-" spinType="1" chargeType="3" colType="0" 
+          m0="7.25000" mWidth="0.05000" mMin="7.20000" mMax="7.30000"> 
+ <channel onMode="1" bRatio="0.5000000" products="511 411"/> 
+ <channel onMode="1" bRatio="0.5000000" products="521 421"/> 
+</particle> 
+ 
+<particle id="10543" name="B_1c+" antiName="B_1c-" spinType="3" chargeType="3" colType="0" 
+          m0="7.30000" mWidth="0.05000" mMin="7.20000" mMax="7.40000"> 
+ <channel onMode="1" bRatio="0.5000000" products="513 411"/> 
+ <channel onMode="1" bRatio="0.5000000" products="523 421"/> 
+</particle> 
+ 
+<particle id="10551" name="chi_0b" spinType="1" chargeType="0" colType="0" 
+          m0="9.85940"> 
+ <channel onMode="1" bRatio="0.9800000" meMode="91" products="21 21"/> 
+ <channel onMode="1" bRatio="0.0200000" products="553 22"/> 
+</particle> 
+ 
+<particle id="10553" name="h_1b" spinType="3" chargeType="0" colType="0" 
+          m0="9.89860" mWidth="0.01000" mMin="9.85500" mMax="9.89500"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="91" products="21 21"/> 
+</particle> 
+-->
+
+<particle id="13122" name="Lambda(1405)0" antiName="Lambda(1405)bar0" spinType="2" chargeType="0" colType="0" 
+          m0="1.40510" mWidth="0.05000" mMin="1.32000" mMax="1.80000"> 
+ <channel onMode="1" bRatio="0.3333000" products="3222 -211"/> 
+ <channel onMode="1" bRatio="0.3333000" products="3112 211"/> 
+ <channel onMode="1" bRatio="0.3334000" products="3212 111"/> 
+</particle> 
+<!-- 
+<particle id="14122" name="Lambda_c(2593)+" antiName="Lambda_c(2593)-" spinType="2" chargeType="3" colType="0" 
+          m0="2.59225" mWidth="0.00260" mMin="2.57000" mMax="2.63000"> 
+ <channel onMode="1" bRatio="0.2400000" products="4222 -211"/> 
+ <channel onMode="1" bRatio="0.2400000" products="4112 211"/> 
+ <channel onMode="1" bRatio="0.1800000" products="4122 211 -211"/> 
+ <channel onMode="1" bRatio="0.2400000" products="4212 111"/> 
+ <channel onMode="1" bRatio="0.0900000" products="4122 111 111"/> 
+ <channel onMode="1" bRatio="0.0100000" products="4122 22"/> 
+</particle> 
+ 
+<particle id="20113" name="a_1(1260)0" spinType="3" chargeType="0" colType="0" 
+          m0="1.23000" mWidth="0.42000" mMin="0.93000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.3300000" products="213 -211"/> 
+ <channel onMode="1" bRatio="0.3300000" products="-213 211"/> 
+ <channel onMode="1" bRatio="0.3400000" products="113 111"/> 
+</particle> 
+ 
+<particle id="20213" name="a_1(1260)+" antiName="a_1(1260)-" spinType="3" chargeType="3" colType="0" 
+          m0="1.23000" mWidth="0.42000" mMin="0.93000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.5000000" products="113 211"/> 
+ <channel onMode="1" bRatio="0.5000000" products="213 111"/> 
+</particle> 
+ 
+<particle id="20223" name="f_1(1285)" spinType="3" chargeType="0" colType="0" 
+          m0="1.28210" mWidth="0.02420" mMin="1.20000" mMax="1.50000"> 
+ <channel onMode="1" bRatio="0.1200000" products="9000211 -211"/> 
+ <channel onMode="1" bRatio="0.1200000" products="9000111 111"/> 
+ <channel onMode="1" bRatio="0.1200000" products="-9000211 211"/> 
+ <channel onMode="1" bRatio="0.0800000" products="221 211 -211"/> 
+ <channel onMode="1" bRatio="0.0800000" products="221 111 111"/> 
+ <channel onMode="1" bRatio="0.1100000" products="113 211 -211"/> 
+ <channel onMode="1" bRatio="0.0740000" products="213 -211 111"/> 
+ <channel onMode="1" bRatio="0.0740000" products="113 111 111"/> 
+ <channel onMode="1" bRatio="0.0740000" products="-213 211 111"/> 
+ <channel onMode="1" bRatio="0.0230000" products="321 -321 111"/> 
+ <channel onMode="1" bRatio="0.0230000" products="321 -311 -211"/> 
+ <channel onMode="1" bRatio="0.0230000" products="311 -311 111"/> 
+ <channel onMode="1" bRatio="0.0230000" products="311 -321 211"/> 
+ <channel onMode="1" bRatio="0.0552600" products="113 22"/> 
+ <channel onMode="1" bRatio="0.0007400" products="333 22"/> 
+</particle> 
+ 
+<particle id="20313" name="K_1(1400)0" antiName="K_1(1400)bar0" spinType="3" chargeType="0" colType="0" 
+          m0="1.40300" mWidth="0.17400" mMin="1.10000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.6270000" products="323 -211"/> 
+ <channel onMode="1" bRatio="0.3130000" products="313 111"/> 
+ <channel onMode="1" bRatio="0.0200000" products="321 -213"/> 
+ <channel onMode="1" bRatio="0.0100000" products="311 113"/> 
+ <channel onMode="1" bRatio="0.0200000" products="311 10221"/> 
+ <channel onMode="1" bRatio="0.0100000" products="311 223"/> 
+</particle> 
+ 
+<particle id="20323" name="K_1(1400)+" antiName="K_1(1400)-" spinType="3" chargeType="3" colType="0" 
+          m0="1.40300" mWidth="0.17400" mMin="1.10000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.6270000" products="313 211"/> 
+ <channel onMode="1" bRatio="0.3130000" products="323 111"/> 
+ <channel onMode="1" bRatio="0.0200000" products="311 213"/> 
+ <channel onMode="1" bRatio="0.0100000" products="321 113"/> 
+ <channel onMode="1" bRatio="0.0200000" products="321 10221"/> 
+ <channel onMode="1" bRatio="0.0100000" products="321 223"/> 
+</particle> 
+ 
+<particle id="20333" name="f_1(1420)" spinType="3" chargeType="0" colType="0" 
+          m0="1.42640" mWidth="0.05490" mMin="1.40000" mMax="1.80000"> 
+ <channel onMode="1" bRatio="0.2500000" products="313 -311"/> 
+ <channel onMode="1" bRatio="0.2500000" products="-313 311"/> 
+ <channel onMode="1" bRatio="0.2500000" products="323 -321"/> 
+ <channel onMode="1" bRatio="0.2500000" products="-323 321"/> 
+</particle> 
+ 
+<particle id="20413" name="D*_1+" antiName="D*_1-" spinType="3" chargeType="3" colType="0" 
+          m0="2.42700" mWidth="0.38400" mMin="2.15000" mMax="3.00000"> 
+ <channel onMode="1" bRatio="0.6670000" products="423 211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="413 111"/> 
+</particle> 
+ 
+<particle id="20423" name="D*_10" antiName="D*_1bar0" spinType="3" chargeType="0" colType="0" 
+          m0="2.42700" mWidth="0.38400" mMin="2.15000" mMax="3.00000"> 
+ <channel onMode="1" bRatio="0.6670000" products="413 -211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="423 111"/> 
+</particle> 
+ 
+<particle id="20433" name="D*_1s+" antiName="D*_1s-" spinType="3" chargeType="3" colType="0" 
+          m0="2.45960" mWidth="0.03000" mMin="2.40000" mMax="2.60000"> 
+ <channel onMode="1" bRatio="0.7600000" products="433 111"/> 
+ <channel onMode="1" bRatio="0.2400000" products="433 22"/> 
+</particle> 
+ 
+<particle id="20443" name="chi_1c" spinType="3" chargeType="0" colType="0" 
+          m0="3.51066" mWidth="0.00086" mMin="3.50176" mMax="3.51956"> 
+ <channel onMode="1" bRatio="0.3560000" products="443 22"/> 
+ <channel onMode="1" bRatio="0.0000100" products="130 130"/> 
+ <channel onMode="1" bRatio="0.0000100" products="310 310"/> 
+ <channel onMode="1" bRatio="0.0016000" products="313 -313"/> 
+ <channel onMode="1" bRatio="0.0000720" products="2212 -2212"/> 
+ <channel onMode="1" bRatio="0.0003000" products="3122 -3122"/> 
+ <channel onMode="1" bRatio="0.0020000" products="211 -211 113"/> 
+ <channel onMode="1" bRatio="0.0020000" products="213 -211 111"/> 
+ <channel onMode="1" bRatio="0.0020000" products="-213 211 111"/> 
+ <channel onMode="1" bRatio="0.0025000" products="321 311 -211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="321 -313 -211"/> 
+ <channel onMode="1" bRatio="0.0025000" products="-321 311 211"/> 
+ <channel onMode="1" bRatio="0.0002000" products="-321 313 211"/> 
+ <channel onMode="1" bRatio="0.0009000" products="323 311 -211"/> 
+ <channel onMode="1" bRatio="0.0009000" products="-323 311 211"/> 
+ <channel onMode="1" bRatio="0.0062000" products="211 211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0008000" products="310 310 211 -211"/> 
+ <channel onMode="1" bRatio="0.0004000" products="321 321 -321 -321"/> 
+ <channel onMode="1" bRatio="0.0038000" products="321 -321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0003000" products="321 -321 310 310"/> 
+ <channel onMode="1" bRatio="0.0005000" products="2212 -2212 211 -211"/> 
+ <channel onMode="1" bRatio="0.0058000" products="211 211 211 -211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.6110080" meMode="52" products="83 -83"/> 
+</particle> 
+ 
+<particle id="20513" name="B*_10" antiName="B*_1bar0" spinType="3" chargeType="0" colType="0" 
+          m0="5.78000" mWidth="0.05000" mMin="5.68000" mMax="5.88000"> 
+ <channel onMode="1" bRatio="0.6670000" products="523 -211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="513 111"/> 
+</particle> 
+ 
+<particle id="20523" name="B*_1+" antiName="B*_1-" spinType="3" chargeType="3" colType="0" 
+          m0="5.78000" mWidth="0.05000" mMin="5.68000" mMax="5.88000"> 
+ <channel onMode="1" bRatio="0.6670000" products="513 211"/> 
+ <channel onMode="1" bRatio="0.3330000" products="523 111"/> 
+</particle> 
+ 
+<particle id="20533" name="B*_1s0" antiName="B*_1sbar0" spinType="3" chargeType="0" colType="0" 
+          m0="6.02000" mWidth="0.05000" mMin="5.92000" mMax="6.12000"> 
+ <channel onMode="1" bRatio="0.5000000" products="523 -321"/> 
+ <channel onMode="1" bRatio="0.5000000" products="513 -311"/> 
+</particle> 
+ 
+<particle id="20543" name="B*_1c+" antiName="B*_1c-" spinType="3" chargeType="3" colType="0" 
+          m0="7.30000" mWidth="0.05000" mMin="7.20000" mMax="7.40000"> 
+ <channel onMode="1" bRatio="0.5000000" products="513 411"/> 
+ <channel onMode="1" bRatio="0.5000000" products="523 421"/> 
+</particle> 
+ 
+<particle id="20553" name="chi_1b" spinType="3" chargeType="0" colType="0" 
+          m0="9.89280"> 
+ <channel onMode="1" bRatio="0.3500000" products="553 22"/> 
+ <channel onMode="1" bRatio="0.6500000" meMode="91" products="21 21"/> 
+</particle> 
+ 
+<particle id="23122" name="Lambda(1600)0" antiName="Lambda(1600)bar0" spinType="2" chargeType="0" colType="0" 
+          m0="1.60000" mWidth="0.15000" mMin="1.42000" mMax="2.20000"> 
+ <channel onMode="1" bRatio="0.1760000" products="2212 -321"/> 
+ <channel onMode="1" bRatio="0.1760000" products="2112 -311"/> 
+ <channel onMode="1" bRatio="0.2160000" products="3222 -211"/> 
+ <channel onMode="1" bRatio="0.2160000" products="3112 211"/> 
+ <channel onMode="1" bRatio="0.2160000" products="3212 111"/> 
+</particle> 
+ 
+<particle id="30313" name="K*(1680)0" antiName="K*(1680)bar0" spinType="3" chargeType="0" colType="0" 
+          m0="1.71700" mWidth="0.32000" mMin="1.05000" mMax="2.50000"> 
+ <channel onMode="1" bRatio="0.2580000" products="321 -211"/> 
+ <channel onMode="1" bRatio="0.1290000" products="311 111"/> 
+ <channel onMode="1" bRatio="0.2093000" products="323 -211"/> 
+ <channel onMode="1" bRatio="0.1047000" products="313 111"/> 
+ <channel onMode="1" bRatio="0.1993000" products="-213 321"/> 
+ <channel onMode="1" bRatio="0.0997000" products="113 311"/> 
+</particle> 
+ 
+<particle id="30323" name="K*(1680)+" antiName="K*(1680)-" spinType="3" chargeType="3" colType="0" 
+          m0="1.71700" mWidth="0.32000" mMin="1.05000" mMax="2.50000"> 
+ <channel onMode="1" bRatio="0.2580000" products="311 211"/> 
+ <channel onMode="1" bRatio="0.1290000" products="321 111"/> 
+ <channel onMode="1" bRatio="0.2093000" products="313 211"/> 
+ <channel onMode="1" bRatio="0.1047000" products="323 111"/> 
+ <channel onMode="1" bRatio="0.1993000" products="213 311"/> 
+ <channel onMode="1" bRatio="0.0997000" products="113 321"/> 
+</particle> 
+ 
+<particle id="30443" name="psi(3770)" spinType="3" chargeType="0" colType="0" 
+          m0="3.77315" mWidth="0.02720" mMin="3.54110" mMax="4.00110"> 
+ <channel onMode="1" bRatio="0.4243000" products="411 -411"/> 
+ <channel onMode="1" bRatio="0.5723000" products="421 -421"/> 
+ <channel onMode="1" bRatio="0.0034000" products="443 211 -211"/> 
+</particle> 
+ 
+<particle id="33122" name="Lambda(1670)0" antiName="Lambda(1670)bar0" spinType="2" chargeType="0" colType="0" 
+          m0="1.67000" mWidth="0.03500" mMin="1.42000" mMax="2.00000"> 
+ <channel onMode="1" bRatio="0.1000000" products="2212 -321"/> 
+ <channel onMode="1" bRatio="0.1000000" products="2112 -311"/> 
+ <channel onMode="1" bRatio="0.1600000" products="3222 -211"/> 
+ <channel onMode="1" bRatio="0.1600000" products="3112 211"/> 
+ <channel onMode="1" bRatio="0.1600000" products="3212 111"/> 
+ <channel onMode="1" bRatio="0.3200000" products="3122 221"/> 
+</particle> 
+ 
+<particle id="100113" name="rho(1450)0" spinType="3" chargeType="0" colType="0" 
+          m0="1.46500" mWidth="0.40000" mMin="1.00000" mMax="2.20000"> 
+ <channel onMode="1" bRatio="0.4000000" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.3500000" products="211 -211 211 -211"/> 
+ <channel onMode="1" bRatio="0.1500000" products="211 -211 111 111"/> 
+ <channel onMode="1" bRatio="0.1000000" products="111 111 111 111"/> 
+</particle> 
+ 
+<particle id="100213" name="rho(1450)+" antiName="rho(1450)-" spinType="3" chargeType="3" colType="0" 
+          m0="1.46500" mWidth="0.40000" mMin="1.00000" mMax="2.20000"> 
+ <channel onMode="1" bRatio="0.4000000" products="211 111"/> 
+ <channel onMode="1" bRatio="0.4000000" products="211 211 -211 111"/> 
+ <channel onMode="1" bRatio="0.2000000" products="211 111 111 111"/> 
+</particle> 
+ 
+<particle id="100441" name="eta_c(2S)" spinType="1" chargeType="0" colType="0" 
+          m0="3.63890" mWidth="0.01000" mMin="3.49800" mMax="3.77800"> 
+ <channel onMode="1" bRatio="0.0190000" products="321 -311 -211"/> 
+ <channel onMode="1" bRatio="0.0190000" products="-321 311 211"/> 
+ <channel onMode="1" bRatio="0.0095000" products="111 321 -321"/> 
+ <channel onMode="1" bRatio="0.0095000" products="311 -311 111"/> 
+ <channel onMode="1" bRatio="0.9430000" meMode="52" products="83 -83"/> 
+</particle> 
+ 
+<particle id="100443" name="psi(2S)" spinType="3" chargeType="0" colType="0" 
+          m0="3.68611" mWidth="0.00030" mMin="3.68269" mMax="3.68949"> 
+ <channel onMode="1" bRatio="0.0073500" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0073000" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0028000" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0000080" products="113 111"/> 
+ <channel onMode="1" bRatio="0.0000800" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.0000080" products="213 -211"/> 
+ <channel onMode="1" bRatio="0.0000080" products="-213 211"/> 
+ <channel onMode="1" bRatio="0.0000300" products="221 113"/> 
+ <channel onMode="1" bRatio="0.0000250" products="223 111"/> 
+ <channel onMode="1" bRatio="0.0000010" products="223 221"/> 
+ <channel onMode="1" bRatio="0.0002100" products="225 22"/> 
+ <channel onMode="1" bRatio="0.0000520" products="310 130"/> 
+ <channel onMode="1" bRatio="0.0000460" products="313 311"/> 
+ <channel onMode="1" bRatio="0.0000460" products="-313 311"/> 
+ <channel onMode="1" bRatio="0.0001000" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.0000065" products="323 -321"/> 
+ <channel onMode="1" bRatio="0.0000065" products="-323 321"/> 
+ <channel onMode="1" bRatio="0.0001500" products="331 22"/> 
+ <channel onMode="1" bRatio="0.0000010" products="333 111"/> 
+ <channel onMode="1" bRatio="0.0000200" products="333 221"/> 
+ <channel onMode="1" bRatio="0.0032000" products="441 22"/> 
+ <channel onMode="1" bRatio="0.0013000" products="443 111"/> 
+ <channel onMode="1" bRatio="0.0324000" products="443 221"/> 
+ <channel onMode="1" bRatio="0.0933000" products="445 22"/> 
+ <channel onMode="1" bRatio="0.0002100" products="2212 -2212"/> 
+ <channel onMode="1" bRatio="0.0001300" products="2224 -2224"/> 
+ <channel onMode="1" bRatio="0.0001800" products="3122 -3122"/> 
+ <channel onMode="1" bRatio="0.0001200" products="3212 -3212"/> 
+ <channel onMode="1" bRatio="0.0001100" products="3224 -3224"/> 
+ <channel onMode="1" bRatio="0.0000900" products="3312 -3312"/> 
+ <channel onMode="1" bRatio="0.0002140" products="10113 111"/> 
+ <channel onMode="1" bRatio="0.0002140" products="10213 -211"/> 
+ <channel onMode="1" bRatio="0.0002140" products="-10213 211"/> 
+ <channel onMode="1" bRatio="0.0010000" products="10323 -321"/> 
+ <channel onMode="1" bRatio="0.0010000" products="-10323 321"/> 
+ <channel onMode="1" bRatio="0.0922000" products="10441 22"/> 
+ <channel onMode="1" bRatio="0.0008000" products="10443 111"/> 
+ <channel onMode="1" bRatio="0.0907000" products="20443 22"/> 
+ <channel onMode="1" bRatio="0.0001640" products="211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0004200" products="211 -211 113"/> 
+ <channel onMode="1" bRatio="0.0001500" products="321 -321 223"/> 
+ <channel onMode="1" bRatio="0.0001500" products="333 211 -211"/> 
+ <channel onMode="1" bRatio="0.0000600" products="333 321 -321"/> 
+ <channel onMode="1" bRatio="0.1658000" products="443 111 111"/> 
+ <channel onMode="1" bRatio="0.3366000" products="443 211 -211"/> 
+ <channel onMode="1" bRatio="0.0001400" products="2212 -2212 111"/> 
+ <channel onMode="1" bRatio="0.0002200" products="310 310 211 -211"/> 
+ <channel onMode="1" bRatio="0.0016000" products="321 -321 211 -211"/> 
+ <channel onMode="1" bRatio="0.0008000" products="2212 -2212 211 -211"/> 
+ <channel onMode="1" bRatio="0.0030000" products="211 211 -211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0001500" products="211 211 211 -211 -211 -211"/> 
+ <channel onMode="1" bRatio="0.0035000" products="211 211 211 -211 -211 -211 111"/> 
+ <channel onMode="1" bRatio="0.0168000" meMode="53" products="83 -83"/> 
+ <channel onMode="1" bRatio="0.1258780" meMode="92" products="21 21 21"/> 
+ <channel onMode="1" bRatio="0.0089380" meMode="92" products="22 21 21"/> 
+</particle> 
+ 
+<particle id="100553" name="Upsilon(2S)" spinType="3" chargeType="0" colType="0" 
+          m0="10.02326" mWidth="0.00003" mMin="10.02297" mMax="10.02357"> 
+ <channel onMode="1" bRatio="0.0191000" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0193000" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0170000" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0670000" products="555 22"/> 
+ <channel onMode="1" bRatio="0.0430000" products="10551 22"/> 
+ <channel onMode="1" bRatio="0.0660000" products="20553 22"/> 
+ <channel onMode="1" bRatio="0.0900000" products="553 111 111"/> 
+ <channel onMode="1" bRatio="0.1850000" products="553 211 -211"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="91" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0200000" meMode="91" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0050000" meMode="91" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0200000" meMode="91" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.4276000" meMode="92" products="21 21 21"/> 
+ <channel onMode="1" bRatio="0.0160000" meMode="92" products="22 21 21"/> 
+</particle> 
+ 
+<particle id="200553" name="Upsilon(3S)" spinType="3" chargeType="0" colType="0" 
+          m0="10.3552" mWidth="0.00002" mMin="10.3552" mMax="10.3552"> 
+ <channel onMode="1" bRatio="0.0000000" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0379639" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0398795" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0383122" products="553 111 111"/> 
+ <channel onMode="1" bRatio="0.0761019" products="553 211 -211"/> 
+ <channel onMode="1" bRatio="0.0322171" products="100553 111 111"/> 
+ <channel onMode="1" bRatio="0.0491092" products="100553 211 -211"/> 
+ <channel onMode="1" bRatio="0.0870731" products="100553 22 22"/> 
+ <channel onMode="1" bRatio="0.0007488" products="10553 111"/> 
+ <channel onMode="1" bRatio="0.6217021" meMode="92" products="21 21 21"/> 
+ <channel onMode="1" bRatio="0.0168922" meMode="92" products="22 21 21"/> 
+</particle> 
+ 
+<particle id="1000001" name="~d_L" antiName="~d_Lbar" spinType="1" chargeType="-1" colType="1" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 1"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 3"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -5"/> 
+</particle> 
+ 
+<particle id="1000002" name="~u_L" antiName="~u_Lbar" spinType="1" chargeType="2" colType="1" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 2"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 4"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 -5"/> 
+</particle> 
+ 
+<particle id="1000003" name="~s_L" antiName="~s_Lbar" spinType="1" chargeType="-1" colType="1" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 1"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 3"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -5"/> 
+</particle> 
+ 
+<particle id="1000004" name="~c_L" antiName="~c_Lbar" spinType="1" chargeType="2" colType="1" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 2"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 4"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 -5"/> 
+</particle> 
+ 
+<particle id="1000005" name="~b_1" antiName="~b_1bar" spinType="1" chargeType="-1" colType="1" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 1"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 3"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -3"/> 
+</particle> 
+ 
+<particle id="1000006" name="~t_1" antiName="~t_1bar" spinType="1" chargeType="2" colType="1" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 2"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 4"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 -5"/> 
+</particle> 
+ 
+<particle id="1000011" name="~e_L-" antiName="~e_L+" spinType="1" chargeType="-3" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000012 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000012 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000012 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 5"/> 
+</particle> 
+ 
+<particle id="1000012" name="~nu_eL" antiName="~nu_eLbar" spinType="1" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000011 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000011 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000011 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000011 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-5 5"/> 
+</particle> 
+ 
+<particle id="1000013" name="~mu_L-" antiName="~mu_L+" spinType="1" chargeType="-3" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000014 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000014 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000014 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000014 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 5"/> 
+</particle> 
+ 
+<particle id="1000014" name="~nu_muL" antiName="~nu_muLbar" spinType="1" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000013 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000013 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000013 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000013 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-5 5"/> 
+</particle> 
+ 
+<particle id="1000015" name="~tau_1-" antiName="~tau_1+" spinType="1" chargeType="-3" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000016 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000016 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000016 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000016 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 5"/> 
+</particle> 
+ 
+<particle id="1000016" name="~nu_tauL" antiName="~nu_tauLbar" spinType="1" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000015 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000015 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000015 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000015 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-5 5"/> 
+</particle> 
+ 
+<particle id="1000021" name="~g" spinType="2" chargeType="0" colType="2" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 21"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000002 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000002 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000002 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000002 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000002 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000002 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000004 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000004 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000004 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000004 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000004 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000004 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000006 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000006 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000006 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000006 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 3 5"/> 
+</particle> 
+ 
+<particle id="1000022" name="~chi_10" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="20.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 22"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 23"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 25"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 35"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 3 5"/> 
+</particle> 
+ 
+<particle id="1000023" name="~chi_20" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 22"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 23"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 25"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 35"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 22"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000011 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000011 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000011 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000011 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000012 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000012 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000012 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000012 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000013 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000013 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000013 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000013 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000014 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000014 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000014 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000014 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000015 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000015 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000015 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000015 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000016 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000016 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000016 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000016 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 16 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 11 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 13 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 15 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 11 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 13 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 15 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000002 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000002 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000002 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000002 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000002 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000002 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000004 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000004 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000004 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000004 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000004 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000004 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000006 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000006 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000006 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000006 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 3 5"/> 
+</particle> 
+ 
+<particle id="1000024" name="~chi_1+" antiName="~chi_1-" spinType="2" chargeType="3" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 24"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000012 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000012 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000011 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000011 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000014 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000014 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000013 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000013 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000016 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000016 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000015 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000015 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 14 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 14 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 14 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 16 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 16 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 16 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 16 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 16 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 16 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 -5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 6 3"/> 
+</particle> 
+ 
+<particle id="1000025" name="~chi_30" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 22"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 23"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 25"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 35"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 22"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 22"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000011 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000011 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000011 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000011 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000012 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000012 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000012 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000012 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000013 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000013 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000013 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000013 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000014 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000014 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000014 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000014 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000015 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000015 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000015 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000015 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000016 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000016 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000016 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000016 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 16 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 16 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 11 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 13 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 15 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 11 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 13 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 15 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000002 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000002 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000002 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000002 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000002 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000002 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000004 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000004 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000004 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000004 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000004 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000004 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000006 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000006 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000006 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000006 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 3 5"/> 
+</particle> 
+ 
+<particle id="1000035" name="~chi_40" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 22"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 23"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 25"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 35"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 22"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 22"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 22"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 16 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 16 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 16 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 11 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 13 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 15 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 11 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 13 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 15 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000011 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000011 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000011 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000011 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000012 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000012 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000012 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000012 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000013 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000013 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000013 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000013 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000014 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000014 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000014 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000014 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000015 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000015 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000015 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000015 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000016 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000016 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000016 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000016 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000002 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000002 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000002 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000002 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000002 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000002 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000004 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000004 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000004 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000004 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000004 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000004 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000006 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000006 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000006 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000006 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 3 5"/> 
+</particle> 
+ 
+<particle id="1000037" name="~chi_2+" antiName="~chi_2-" spinType="2" chargeType="3" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 24"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 16 -16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000012 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000012 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000011 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000011 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000014 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000014 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000013 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000013 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000016 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000016 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000015 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000015 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 2 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 2 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 4 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 4 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 6 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 6 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000001 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000001 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000003 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000003 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000005 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2000005 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 14 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 14 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -13 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 14 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 16 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 16 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 16 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 12 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 12 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -11 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 12 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 16 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -15 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 16 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -15 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -15 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 16 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -15 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 12 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -11 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 12 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -11 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -11 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 12 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -11 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 14 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -13 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 14 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -13 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -13 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 14 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -13 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -2 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -4 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -6 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -2 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -4 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -6 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -1 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -1 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -1 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -2 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -1 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -3 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -3 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -4 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -3 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -5 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -5 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 -5 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -6 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 -5 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 6 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 -3 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 6 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 -5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 6 3"/> 
+</particle> 
+ 
+<particle id="1000039" name="~Gravitino" spinType="4" chargeType="0" colType="0" 
+          m0="1.000e-03"> 
+</particle> 
+ 
+<particle id="1000045" name="~chi_50" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000"> 
+</particle> 
+ 
+<particle id="1000512" name="R0(~b dbar)" antiName="R0(~bbar d)" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1000522" name="R-(~b ubar)" antiName="R+(~bbar u)" spinType="2" chargeType="-3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1000532" name="R0(~b sbar)" antiName="R0(~bbar s)" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1000542" name="R-(~b cbar)" antiName="R+(~bbar c)" spinType="2" chargeType="-3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1000552" name="R0(~b bbar)" antiName="R0(~bbar b)" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1000612" name="R+(~t dbar)" antiName="R-(~tbar d)" spinType="2" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1000622" name="R0(~t ubar)" antiName="R0(~tbar u)" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1000632" name="R+(~t sbar)" antiName="R-(~tbar s)" spinType="2" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1000642" name="R0(~t cbar)" antiName="R0(~tbar c)" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1000652" name="R+(~t bbar)" antiName="R-(~tbar b)" spinType="2" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1000993" name="R0(~g g)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1005113" name="R-(~b dd1)" antiName="Rbar+(~b dd1)" spinType="3" chargeType="-3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1005211" name="R0(~b ud0)" antiName="Rbar0(~b ud0)" spinType="1" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1005213" name="R0(~b ud1)" antiName="Rbar0(~b ud1)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1005223" name="R+(~b uu1)" antiName="Rbar-(~b uu1)" spinType="3" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1005311" name="R-(~b sd0)" antiName="Rbar+(~b sd0)" spinType="1" chargeType="-3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1005313" name="R-(~b sd1)" antiName="Rbar+(~b sd1)" spinType="3" chargeType="-3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1005321" name="R0(~b su0)" antiName="Rbar0(~b su0)" spinType="1" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1005323" name="R0(~b su1)" antiName="Rbar0(~b su1)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1005333" name="R-(~b ss1)" antiName="Rbar+(~b ss1)" spinType="3" chargeType="-3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1006113" name="R0(~t dd1)" antiName="Rbar0(~t dd1)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1006211" name="R+(~t ud0)" antiName="Rbar-(~t ud0)" spinType="1" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1006213" name="R+(~t ud1)" antiName="Rbar-(~t ud1)" spinType="3" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1006223" name="R++(~t uu1)" antiName="Rbar&#45;&#45;(~t uu1)" spinType="3" chargeType="6" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1006311" name="R-(~t sd0)" antiName="Rbar+(~t sd0)" spinType="1" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1006313" name="R-(~t sd1)" antiName="Rbar+(~t sd1)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1006321" name="R0(~t su0)" antiName="Rbar0(~t su0)" spinType="1" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1006323" name="R0(~t su1)" antiName="Rbar0(~t su1)" spinType="3" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1006333" name="R0(~t ss1)" antiName="Rbar0(~t ss1)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009002" name="Rtemp(~g q)" antiName="Rtemp(~g qbar)" spinType="2" chargeType="0" colType="1" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009113" name="R0(~g d dbar)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009213" name="R+(~g u dbar)" antiName="R-(~g d ubar)" spinType="3" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009223" name="R0(~g u ubar)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009313" name="R0(~g d sbar)" antiName="R0(~g s dbar)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009323" name="R+(~g u sbar)" antiName="R-(~g s ubar)" spinType="3" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009333" name="R0(~g s sbar)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009413" name="R+(~g c dbar)" antiName="R-(~g d cbar)" spinType="3" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009423" name="R0(~g c ubar)" antiName="R0(~g u cbar)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009433" name="R+(~g c sbar)" antiName="R-(~g s cbar)" spinType="3" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009443" name="R0(~g c cbar)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009513" name="R0(~g d bbar)" antiName="R0(~g b dbar)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009523" name="R+(~g u bbar)" antiName="R-(~g b ubar)" spinType="3" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009533" name="R0(~g s bbar)" antiName="R0(~g b sbar)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009543" name="R+(~g c bbar)" antiName="R-(~g b cbar)" spinType="3" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1009553" name="R0(~g b bbar)" spinType="3" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1091114" name="R-(~g ddd)" antiName="Rbar+(~g ddd)" spinType="4" chargeType="-3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1092114" name="R0(~g udd)" antiName="Rbar0(~g udd)" spinType="4" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1092214" name="R+(~g uud)" antiName="Rbar-(~g uud)" spinType="4" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1092224" name="R++(~g uuu)" antiName="Rbar&#45;&#45;(~g uuu)" spinType="4" chargeType="6" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1093114" name="R-(~g sdd)" antiName="Rbar+(~g sdd)" spinType="4" chargeType="-3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1093214" name="R0(~g sud)" antiName="Rbar0(~g sud)" spinType="4" chargeType="0" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1093224" name="R+(~g suu)" antiName="Rbar-(~g suu)" spinType="4" chargeType="3" colType="0" 
+          m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1093314" name="R-(~g ssd)" antiName="Rbar+(~g ssd)" spinType="4" chargeType="-3" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1093324" name="R0(~g ssu)" antiName="Rbar0(~g ssu)" spinType="4" chargeType="0" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1093334" name="R-(~g sss)" antiName="Rbar+(~g sss)" spinType="4" chargeType="-3" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1094114" name="R0(~g cdd)" antiName="Rbar0(~g cdd)" spinType="4" chargeType="0" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1094214" name="R+(~g cud)" antiName="Rbar-(~g cud)" spinType="4" chargeType="3" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1094224" name="R++(~g cuu)" antiName="Rbar&#45;&#45;(~g cuu)" spinType="4" chargeType="6" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1094314" name="R0(~g csd)" antiName="Rbar0(~g csd)" spinType="4" chargeType="0" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1094324" name="R+(~g csu)" antiName="Rbar-(~g csu)" spinType="4" chargeType="3" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1094334" name="R0(~g css)" antiName="Rbar0(~g css)" spinType="4" chargeType="0" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1095114" name="R-(~g bdd)" antiName="Rbar+(~g bdd)" spinType="4" chargeType="-3" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1095214" name="R0(~g bud)" antiName="Rbar0(~g bud)" spinType="4" chargeType="0" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1095224" name="R+(~g buu)" antiName="Rbar-(~g buu)" spinType="4" chargeType="3" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1095314" name="R-(~g bsd)" antiName="Rbar+(~g bsd)" spinType="4" chargeType="-3" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1095324" name="R0(~g bsu)" antiName="Rbar0(~g bsu)" spinType="4" chargeType="0" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="1095334" name="R-(~g bss)" antiName="Rbar+(~g bss)" spinType="4" chargeType="-3" colType="0" 
+           m0="500.00000" tau0="1e-05"> 
+</particle> 
+ 
+<particle id="2000001" name="~d_R" antiName="~d_Rbar" spinType="1" chargeType="-1" colType="1" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 1"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 3"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -5"/> 
+</particle> 
+ 
+<particle id="2000002" name="~u_R" antiName="~u_Rbar" spinType="1" chargeType="2" colType="1" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 2"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 4"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 -5"/> 
+</particle> 
+ 
+<particle id="2000003" name="~s_R" antiName="~s_Rbar" spinType="1" chargeType="-1" colType="1" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 1"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 3"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -5"/> 
+</particle> 
+ 
+<particle id="2000004" name="~c_R" antiName="~c_Rbar" spinType="1" chargeType="2" colType="1" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 2"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 4"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 -5"/> 
+</particle> 
+ 
+<particle id="2000005" name="~b_2" antiName="~b_2bar" spinType="1" chargeType="-1" colType="1" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 1"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 3"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000006 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 -3"/> 
+</particle> 
+ 
+<particle id="2000006" name="~t_2" antiName="~t_2bar" spinType="1" chargeType="2" colType="1" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 2"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 4"/> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000024 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000037 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000002 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000004 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000006 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000002 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000004 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000001 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000003 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000005 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000001 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000003 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000005 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000021 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-3 -5"/> 
+</particle> 
+ 
+<particle id="2000011" name="~e_R-" antiName="~e_R+" spinType="1" chargeType="-3" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000011 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000011 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000011 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000011 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000012 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000012 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000012 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000012 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 5"/> 
+</particle> 
+ 
+<particle id="2000012" name="~nu_eR" antiName="~nu_eRbar" spinType="1" chargeType="0" colType="0" 
+          m0="500.00000"> 
+</particle> 
+ 
+<particle id="2000013" name="~mu_R-" antiName="~mu_R+" spinType="1" chargeType="-3" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000013 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000013 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000013 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000013 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000014 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000014 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000014 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000014 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-16 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 5"/> 
+</particle> 
+ 
+<particle id="2000014" name="~nu_muR" antiName="~nu_muRbar" spinType="1" chargeType="0" colType="0" 
+          m0="500.00000"> 
+</particle> 
+ 
+<particle id="2000015" name="~tau_2-" antiName="~tau_2+" spinType="1" chargeType="-3" colType="0" 
+          m0="500.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" meMode="103" products="1000039 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000024 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1000037 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000022 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000023 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000025 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000035 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000015 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000015 25"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000015 35"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000015 36"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000016 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000016 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="1000016 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2000016 -37"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-12 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-14 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-2 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-4 5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-6 5"/> 
+</particle> 
+ 
+<particle id="2000016" name="~nu_tauR" antiName="~nu_tauRbar" spinType="1" chargeType="0" colType="0" 
+          m0="500.00000"> 
+</particle> 
+ 
+<particle id="3000111" name="pi_tc0" spinType="1" chargeType="0" colType="0" 
+          m0="110.00000" mWidth="0.02911" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0174310" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0540480" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.8576940" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0002500" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0705780" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="21 21"/> 
+</particle> 
+ 
+<particle id="3000113" name="rho_tc0" spinType="3" chargeType="0" colType="0" 
+          m0="210.00000" mWidth="0.86860" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.1440510" products="24 -24"/> 
+ <channel onMode="1" bRatio="0.3519020" products="24 -3000211"/> 
+ <channel onMode="1" bRatio="0.3519020" products="3000211 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="3000211 -3000211"/> 
+ <channel onMode="1" bRatio="0.0821070" products="22 3000111"/> 
+ <channel onMode="1" bRatio="0.0295660" products="22 3000221"/> 
+ <channel onMode="1" bRatio="0.0015110" products="23 3000111"/> 
+ <channel onMode="1" bRatio="0.0007260" products="23 3000221"/> 
+ <channel onMode="1" bRatio="0.0045180" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0065220" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0045180" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0065220" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.0045130" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.0029080" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0009730" products="12 -12"/> 
+ <channel onMode="1" bRatio="0.0029080" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0009730" products="14 -14"/> 
+ <channel onMode="1" bRatio="0.0029080" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0009730" products="16 -16"/> 
+</particle> 
+ 
+<particle id="3000211" name="pi_tc+" antiName="pi_tc-" spinType="1" chargeType="3" colType="0" 
+          m0="110.00000" mWidth="0.01741" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0227480" products="4 -1"/> 
+ <channel onMode="1" bRatio="0.0265760" products="4 -3"/> 
+ <channel onMode="1" bRatio="0.3594860" products="2 -5"/> 
+ <channel onMode="1" bRatio="0.5615810" products="4 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="24 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 12"/> 
+ <channel onMode="1" bRatio="0.0001040" products="-13 14"/> 
+ <channel onMode="1" bRatio="0.0295040" products="-15 16"/> 
+</particle> 
+ 
+<particle id="3000213" name="rho_tc+" antiName="rho_tc-" spinType="3" chargeType="3" colType="0" 
+          m0="210.00000" mWidth="0.62395" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.1439820" products="24 23"/> 
+ <channel onMode="1" bRatio="0.4898880" products="24 3000111"/> 
+ <channel onMode="1" bRatio="0.1951000" products="3000211 23"/> 
+ <channel onMode="1" bRatio="0.0000000" products="3000211 3000111"/> 
+ <channel onMode="1" bRatio="0.1143020" products="3000211 22"/> 
+ <channel onMode="1" bRatio="0.0084260" products="24 3000221"/> 
+ <channel onMode="1" bRatio="0.0148680" products="-1 2"/> 
+ <channel onMode="1" bRatio="0.0007630" products="-1 4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-1 6"/> 
+ <channel onMode="1" bRatio="0.0007630" products="-3 2"/> 
+ <channel onMode="1" bRatio="0.0148400" products="-3 4"/> 
+ <channel onMode="1" bRatio="0.0000030" products="-3 6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-5 2"/> 
+ <channel onMode="1" bRatio="0.0000270" products="-5 4"/> 
+ <channel onMode="1" bRatio="0.0019450" products="-5 6"/> 
+ <channel onMode="1" bRatio="0.0050300" products="-11 12"/> 
+ <channel onMode="1" bRatio="0.0050300" products="-13 14"/> 
+ <channel onMode="1" bRatio="0.0050300" products="-15 16"/> 
+</particle> 
+ 
+<particle id="3000221" name="pi'_tc0" spinType="1" chargeType="0" colType="0" 
+          m0="110.00000" mWidth="0.04536" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0111850" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0346810" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.5503540" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0001600" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0452870" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.3583330" products="21 21"/> 
+</particle> 
+ 
+<particle id="3000223" name="omega_tc" spinType="3" chargeType="0" colType="0" 
+          m0="210.00000" mWidth="0.19192" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.1337760" products="22 3000111"/> 
+ <channel onMode="1" bRatio="0.0032840" products="23 3000111"/> 
+ <channel onMode="1" bRatio="0.3716900" products="22 3000221"/> 
+ <channel onMode="1" bRatio="0.0068380" products="23 3000221"/> 
+ <channel onMode="1" bRatio="0.0309540" products="24 -3000211"/> 
+ <channel onMode="1" bRatio="0.0309540" products="3000211 -24"/> 
+ <channel onMode="1" bRatio="0.0016300" products="24 -24"/> 
+ <channel onMode="1" bRatio="0.0000000" products="3000211 -3000211"/> 
+ <channel onMode="1" bRatio="0.0472240" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0737370" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0472240" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0737320" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.0471790" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.0347610" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0091660" products="12 -12"/> 
+ <channel onMode="1" bRatio="0.0347610" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0091660" products="14 -14"/> 
+ <channel onMode="1" bRatio="0.0347590" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0091660" products="16 -16"/> 
+</particle> 
+ 
+<particle id="3000331" name="eta_tc0" spinType="1" chargeType="0" colType="2" 
+          m0="350.00000" mWidth="0.09511" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.4457810" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.5542190" products="21 21"/> 
+</particle> 
+ 
+<particle id="3100021" name="V8_tc" spinType="1" chargeType="0" colType="2" 
+          m0="500.00000" mWidth="123.27638" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0090690" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0090690" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0090690" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0090690" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.5101470" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.4535760" products="6 -6"/> 
+</particle> 
+ 
+<particle id="3100111" name="pi_22_1_tc" spinType="1" chargeType="0" colType="0" 
+          m0="125.00000" mWidth="0.02296" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+ <channel onMode="1" bRatio="1.0000000" products="21 21"/> 
+</particle> 
+ 
+<particle id="3100113" name="rho_11_tc" spinType="3" chargeType="0" colType="2" 
+          m0="400.00000" mWidth="23.26819" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0011280" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0011280" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0011280" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0011280" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.5710470" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.3822880" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.0421530" products="21 21"/> 
+</particle> 
+ 
+<particle id="3200111" name="pi_22_8_tc" spinType="1" chargeType="0" colType="2" 
+          m0="250.00000" mWidth="0.18886" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0000000" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+ <channel onMode="1" bRatio="1.0000000" products="21 21"/> 
+</particle> 
+ 
+<particle id="3200113" name="rho_12_tc" spinType="3" chargeType="0" colType="2" 
+          m0="350.00000" mWidth="2.86306" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0165970" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0165970" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0165970" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0165970" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.9336100" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+</particle> 
+ 
+<particle id="3300113" name="rho_21_tc" spinType="3" chargeType="0" colType="2" 
+          m0="350.00000"> 
+ <channel onMode="1" bRatio="0.0165970" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0165970" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0165970" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0165970" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.9336100" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+</particle> 
+ 
+<particle id="3400113" name="rho_22_tc" spinType="3" chargeType="0" colType="2" 
+          m0="300.00000" mWidth="3.45903" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0551500" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0551500" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0551500" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0551500" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.3446900" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.2289980" products="21 21"/> 
+ <channel onMode="1" bRatio="0.1642080" products="3100111 21"/> 
+ <channel onMode="1" bRatio="0.0415030" products="3200111 21"/> 
+</particle> 
+ 
+<particle id="4000001" name="d*" antiName="d*bar" spinType="2" chargeType="-1" colType="1" 
+          m0="400.00000" mWidth="2.59359" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.8509730" products="21 1"/> 
+ <channel onMode="1" bRatio="0.0054110" products="22 1"/> 
+ <channel onMode="1" bRatio="0.0450250" products="23 1"/> 
+ <channel onMode="1" bRatio="0.0985910" products="-24 2"/> 
+</particle> 
+ 
+<particle id="4000002" name="u*" antiName="u*bar" spinType="2" chargeType="2" colType="1" 
+          m0="400.00000" mWidth="2.59687" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.8498980" products="21 2"/> 
+ <channel onMode="1" bRatio="0.0216170" products="22 2"/> 
+ <channel onMode="1" bRatio="0.0300180" products="23 2"/> 
+ <channel onMode="1" bRatio="0.0984660" products="24 1"/> 
+</particle> 
+ 
+<particle id="4000003" name="s*" antiName="s*bar" spinType="2" chargeType="-1" colType="1" 
+          m0="400.00000" mWidth="2.59359" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.8509730" products="21 3"/> 
+ <channel onMode="1" bRatio="0.0054110" products="22 3"/> 
+ <channel onMode="1" bRatio="0.0450250" products="23 3"/> 
+ <channel onMode="1" bRatio="0.0985910" products="-24 4"/> 
+</particle> 
+ 
+<particle id="4000004" name="c*" antiName="c*bar" spinType="2" chargeType="2" colType="1" 
+          m0="400.00000" mWidth="2.59687" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.8498980" products="21 4"/> 
+ <channel onMode="1" bRatio="0.0216170" products="22 4"/> 
+ <channel onMode="1" bRatio="0.0300180" products="23 4"/> 
+ <channel onMode="1" bRatio="0.0984660" products="24 3"/> 
+</particle> 
+ 
+<particle id="4000005" name="b*" antiName="b*bar" spinType="2" chargeType="-1" colType="1" 
+          m0="400.00000" mWidth="2.59359" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.8509730" products="21 5"/> 
+ <channel onMode="1" bRatio="0.0054110" products="22 5"/> 
+ <channel onMode="1" bRatio="0.0450250" products="23 5"/> 
+ <channel onMode="1" bRatio="0.0985910" products="-24 6"/> 
+</particle> 
+ 
+<particle id="4000006" name="t*" antiName="t*bar" spinType="2" chargeType="2" colType="1" 
+          m0="400.00000" mWidth="2.59687" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.8498980" products="21 6"/> 
+ <channel onMode="1" bRatio="0.0216170" products="22 6"/> 
+ <channel onMode="1" bRatio="0.0300180" products="23 6"/> 
+ <channel onMode="1" bRatio="0.0984660" products="24 5"/> 
+</particle> 
+ 
+<particle id="4000011" name="e*-" antiName="e*bar+" spinType="2" chargeType="-3" colType="0" 
+          m0="400.00000" mWidth="0.42896" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.2944480" products="22 11"/> 
+ <channel onMode="1" bRatio="0.1094500" products="23 11"/> 
+ <channel onMode="1" bRatio="0.5961020" products="-24 12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 16 -16"/> 
+</particle> 
+ 
+<particle id="4000012" name="nu*_e0" antiName="nu*_ebar0" spinType="2" chargeType="0" colType="0" 
+          m0="400.00000" mWidth="0.41912" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.3899060" products="23 12"/> 
+ <channel onMode="1" bRatio="0.6100940" products="24 11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="12 16 -16"/> 
+</particle> 
+ 
+<particle id="4000013" name="mu*-" antiName="mu*bar+" spinType="2" chargeType="-3" colType="0" 
+          m0="400.00000" mWidth="0.42896" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.2944480" products="22 13"/> 
+ <channel onMode="1" bRatio="0.1094500" products="23 13"/> 
+ <channel onMode="1" bRatio="0.5961020" products="-24 14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 16 -16"/> 
+</particle> 
+ 
+<particle id="4000014" name="nu*_mu0" antiName="nu*_mubar0" spinType="2" chargeType="0" colType="0" 
+          m0="400.00000" mWidth="0.41912" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.3899060" products="23 14"/> 
+ <channel onMode="1" bRatio="0.6100940" products="24 13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="14 16 -16"/> 
+</particle> 
+ 
+<particle id="4000015" name="tau*-" antiName="tau*bar+" spinType="2" chargeType="-3" colType="0" 
+          m0="400.00000" mWidth="0.42896" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.2944480" products="22 15"/> 
+ <channel onMode="1" bRatio="0.1094500" products="23 15"/> 
+ <channel onMode="1" bRatio="0.5961020" products="-24 16"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 16 -16"/> 
+</particle> 
+ 
+<particle id="4000016" name="nu*_tau0" antiName="nu*_taubar0" spinType="2" chargeType="0" colType="0" 
+          m0="400.00000" mWidth="0.41912" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.3899060" products="23 16"/> 
+ <channel onMode="1" bRatio="0.6100940" products="24 15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 1 -1"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 2 -2"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 3 -3"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 4 -4"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 5 -5"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 6 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 11 -11"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 12 -12"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 13 -13"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 14 -14"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="16 16 -16"/> 
+</particle> 
+ 
+<particle id="4900001" name="Dv" antiName="Dvbar" spinType="2" chargeType="-1" colType="1" 
+          m0="400.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="103" products="1 4900101"/> 
+</particle> 
+ 
+<particle id="4900002" name="Uv" antiName="Uvbar" spinType="2" chargeType="2" colType="1" 
+          m0="400.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="103" products="2 4900101"/> 
+</particle> 
+ 
+<particle id="4900003" name="Sv" antiName="Svbar" spinType="2" chargeType="-1" colType="1" 
+          m0="400.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="103" products="3 4900101"/> 
+</particle> 
+ 
+<particle id="4900004" name="Cv" antiName="Cvbar" spinType="2" chargeType="2" colType="1" 
+          m0="400.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="103" products="4 4900101"/> 
+</particle> 
+ 
+<particle id="4900005" name="Bv" antiName="Bvbar" spinType="2" chargeType="-1" colType="1" 
+          m0="400.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="103" products="5 4900101"/> 
+</particle> 
+ 
+<particle id="4900006" name="Tv" antiName="Tvbar" spinType="2" chargeType="2" colType="1" 
+          m0="400.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="103" products="6 4900101"/> 
+</particle> 
+ 
+<particle id="4900011" name="Ev" antiName="Evbar" spinType="2" chargeType="-3" colType="0" 
+          m0="400.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="103" products="11 4900101"/> 
+</particle> 
+ 
+<particle id="4900012" name="nuEv" antiName="nuEvbar" spinType="2" chargeType="0" colType="0" 
+          m0="400.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="103" products="12 4900101"/> 
+</particle> 
+ 
+<particle id="4900013" name="MUv" antiName="MUvbar" spinType="2" chargeType="-3" colType="0" 
+          m0="400.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="103" products="13 4900101"/> 
+</particle> 
+ 
+<particle id="4900014" name="nuMUv" antiName="nuMUvbar" spinType="2" chargeType="0" colType="0" 
+          m0="400.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="103" products="14 4900101"/> 
+</particle> 
+ 
+<particle id="4900015" name="TAUv" antiName="TAUvbar" spinType="2" chargeType="-3" colType="0" 
+          m0="400.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="103" products="15 4900101"/> 
+</particle> 
+ 
+<particle id="4900016" name="nuTAUv" antiName="nuTAUvbar" spinType="2" chargeType="0" colType="0" 
+          m0="400.00000" mWidth="1.00000" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="1.0000000" meMode="103" products="16 4900101"/> 
+</particle> 
+ 
+<particle id="4900021" name="gv" spinType="3" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="4900022" name="gammav" spinType="3" chargeType="0" colType="0" 
+          m0="0.00000"> 
+ <channel onMode="0" bRatio="0.05" meMode="91" products="1 -1"/> 
+ <channel onMode="0" bRatio="0.20" meMode="91" products="2 -2"/> 
+ <channel onMode="0" bRatio="0.05" meMode="91" products="3 -3"/> 
+ <channel onMode="0" bRatio="0.20" meMode="91" products="4 -4"/> 
+ <channel onMode="0" bRatio="0.05" meMode="91" products="5 -5"/> 
+ <channel onMode="0" bRatio="0.15" meMode="91" products="11 -11"/> 
+ <channel onMode="0" bRatio="0.00" meMode="91" products="12 -12"/> 
+ <channel onMode="0" bRatio="0.15" meMode="91" products="13 -13"/> 
+ <channel onMode="0" bRatio="0.00" meMode="91" products="14 -14"/> 
+ <channel onMode="0" bRatio="0.15" meMode="91" products="15 -15"/> 
+ <channel onMode="0" bRatio="0.00" meMode="91" products="16 -16"/> 
+</particle> 
+ 
+<particle id="4900023" name="Zv" spinType="3" chargeType="0" colType="0" 
+          m0="1000.00000" mWidth="20.00000" mMin="100.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.075" meMode="102" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.075" meMode="102" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.075" meMode="102" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.075" meMode="102" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.075" meMode="102" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.075" meMode="102" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.025" meMode="102" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.025" meMode="102" products="12 -12"/> 
+ <channel onMode="1" bRatio="0.025" meMode="102" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.025" meMode="102" products="14 -14"/> 
+ <channel onMode="1" bRatio="0.025" meMode="102" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.025" meMode="102" products="16 -16"/> 
+ <channel onMode="1" bRatio="0.400" meMode="102" products="4900101 -4900101"/> 
+</particle> 
+ 
+<particle id="4900101" name="qv" antiName="qvbar" spinType="1" chargeType="0" colType="0" 
+          m0="100.00000"> 
+</particle> 
+ 
+<particle id="4900111" name="pivDiag" spinType="1" chargeType="0" colType="0" 
+          m0="10.00000"> 
+ <channel onMode="0" bRatio="1.23e-6" meMode="91" products="1 -1"/> 
+ <channel onMode="0" bRatio="4.96e-7" meMode="91" products="2 -2"/> 
+ <channel onMode="0" bRatio="0.000492" meMode="91" products="3 -3"/> 
+ <channel onMode="0" bRatio="0.079384" meMode="91" products="4 -4"/> 
+ <channel onMode="0" bRatio="0.8679713" meMode="91" products="5 -5"/> 
+ <channel onMode="0" bRatio="4.0e-9" meMode="91" products="11 -11"/> 
+ <channel onMode="0" bRatio="0.00" meMode="91" products="12 -12"/> 
+ <channel onMode="0" bRatio="0.000184" meMode="91" products="13 -13"/> 
+ <channel onMode="0" bRatio="0.00" meMode="91" products="14 -14"/> 
+ <channel onMode="0" bRatio="0.051967" meMode="91" products="15 -15"/> 
+ <channel onMode="0" bRatio="0.00" meMode="91" products="16 -16"/> 
+</particle> 
+ 
+<particle id="4900113" name="rhovDiag" spinType="3" chargeType="0" colType="0" 
+          m0="10.00000"> 
+ <channel onMode="0" bRatio="0.05" meMode="91" products="1 -1"/> 
+ <channel onMode="0" bRatio="0.20" meMode="91" products="2 -2"/> 
+ <channel onMode="0" bRatio="0.05" meMode="91" products="3 -3"/> 
+ <channel onMode="0" bRatio="0.20" meMode="91" products="4 -4"/> 
+ <channel onMode="0" bRatio="0.05" meMode="91" products="5 -5"/> 
+ <channel onMode="0" bRatio="0.15" meMode="91" products="11 -11"/> 
+ <channel onMode="0" bRatio="0.00" meMode="91" products="12 -12"/> 
+ <channel onMode="0" bRatio="0.15" meMode="91" products="13 -13"/> 
+ <channel onMode="0" bRatio="0.00" meMode="91" products="14 -14"/> 
+ <channel onMode="0" bRatio="0.15" meMode="91" products="15 -15"/> 
+ <channel onMode="0" bRatio="0.00" meMode="91" products="16 -16"/> 
+</particle> 
+ 
+<particle id="4900211" name="pivUp" antiName="pivDn" spinType="1" chargeType="0" colType="0" 
+          m0="10.00000"> 
+</particle> 
+ 
+<particle id="4900213" name="rhovUp" antiName="rhovDn" spinType="3" chargeType="0" colType="0" 
+          m0="10.00000"> 
+</particle> 
+ 
+<particle id="4900991" name="ggv" spinType="1" chargeType="0" colType="0" 
+          m0="1.00000"> 
+</particle> 
+ 
+<particle id="5000023" name="Z_KK" spinType="3" chargeType="0" colType="0" 
+          m0="4000.00000" mWidth="240.00000" mMin="1000.00000" mMax="0.00000"> 
+</particle> 
+ 
+<particle id="5000039" name="Graviton" spinType="5" chargeType="0" colType="0" 
+           m0="0.00000"> 
+</particle> 
+ 
+<particle id="5100021" name="KKgluon*" spinType="3" chargeType="0" colType="2" 
+           m0="1.000e+03" mWidth="1.7e02" mMin="5.000e+01" mMax="0.000e+00"> 
+ <channel onMode="1" bRatio="0.005" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.005" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.005" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.005" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.055" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.925" products="6 -6"/> 
+</particle> 
+ 
+<particle id="5100039" name="Graviton*" spinType="5" chargeType="0" colType="0" 
+          m0="1.000e+03" mWidth="1.415e-01" mMin="5.000e+01" mMax="0.000e+00"> 
+ <channel onMode="1" bRatio="0.0633000" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.0633000" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.0633000" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.0632990" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.0632950" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0562810" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.0204950" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0204950" products="12 -12"/> 
+ <channel onMode="1" bRatio="0.0204950" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0204950" products="14 -14"/> 
+ <channel onMode="1" bRatio="0.0204950" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0204950" products="16 -16"/> 
+ <channel onMode="1" bRatio="0.3279190" products="21 21"/> 
+ <channel onMode="1" bRatio="0.0409900" products="22 22"/> 
+ <channel onMode="1" bRatio="0.0452360" products="23 23"/> 
+ <channel onMode="1" bRatio="0.0901120" products="24 -24"/> 
+ <channel onMode="1" bRatio="0.0"       products="25 25"/> 
+</particle> 
+ 
+<particle id="9000111" name="a_0(980)0" spinType="1" chargeType="0" colType="0" 
+          m0="0.98350" mWidth="0.06000" mMin="0.70000" mMax="1.50000"> 
+ <channel onMode="1" bRatio="0.9000000" products="221 111"/> 
+ <channel onMode="1" bRatio="0.0250000" products="130 130"/> 
+ <channel onMode="1" bRatio="0.0250000" products="310 310"/> 
+ <channel onMode="1" bRatio="0.0500000" products="321 -321"/> 
+</particle> 
+ 
+<particle id="9000211" name="a_0(980)+" antiName="a_0(980)-" spinType="1" chargeType="3" colType="0" 
+          m0="0.98350" mWidth="0.06000" mMin="0.70000" mMax="1.50000"> 
+ <channel onMode="1" bRatio="0.9000000" products="221 211"/> 
+ <channel onMode="1" bRatio="0.1000000" products="321 311"/> 
+</particle> 
+ 
+<particle id="9010221" name="f_0(980)" spinType="1" chargeType="0" colType="0" 
+          m0="1.00000" tau0="4e-12"> 
+ <channel onMode="1" bRatio="0.5200000" products="211 -211"/> 
+ <channel onMode="1" bRatio="0.2600000" products="111 111"/> 
+ <channel onMode="1" bRatio="0.1100000" products="321 -321"/> 
+ <channel onMode="1" bRatio="0.0550000" products="130 130"/> 
+ <channel onMode="1" bRatio="0.0550000" products="310 310"/> 
+</particle> 
+ 
+<particle id="9900012" name="nu_Re" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="0.00098" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.1987400" products="11 -1 2"/> 
+ <channel onMode="1" bRatio="0.0102040" products="11 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000030" products="11 -1 6"/> 
+ <channel onMode="1" bRatio="0.0102050" products="11 -3 2"/> 
+ <channel onMode="1" bRatio="0.1983560" products="11 -3 4"/> 
+ <channel onMode="1" bRatio="0.0001510" products="11 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000060" products="11 -5 2"/> 
+ <channel onMode="1" bRatio="0.0003670" products="11 -5 4"/> 
+ <channel onMode="1" bRatio="0.0819670" products="11 -5 6"/> 
+ <channel onMode="1" bRatio="0.1987400" products="-11 1 -2"/> 
+ <channel onMode="1" bRatio="0.0102040" products="-11 1 -4"/> 
+ <channel onMode="1" bRatio="0.0000030" products="-11 1 -6"/> 
+ <channel onMode="1" bRatio="0.0102050" products="-11 3 -2"/> 
+ <channel onMode="1" bRatio="0.1983560" products="-11 3 -4"/> 
+ <channel onMode="1" bRatio="0.0001510" products="-11 3 -6"/> 
+ <channel onMode="1" bRatio="0.0000060" products="-11 5 -2"/> 
+ <channel onMode="1" bRatio="0.0003670" products="-11 5 -4"/> 
+ <channel onMode="1" bRatio="0.0819670" products="-11 5 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 -13 9900014"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 13 9900014"/> 
+ <channel onMode="1" bRatio="0.0000000" products="11 -15 9900016"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-11 15 9900016"/> 
+</particle> 
+ 
+<particle id="9900014" name="nu_Rmu" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="0.00098" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.1987760" products="13 -1 2"/> 
+ <channel onMode="1" bRatio="0.0102060" products="13 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000030" products="13 -1 6"/> 
+ <channel onMode="1" bRatio="0.0102070" products="13 -3 2"/> 
+ <channel onMode="1" bRatio="0.1983900" products="13 -3 4"/> 
+ <channel onMode="1" bRatio="0.0001510" products="13 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000060" products="13 -5 2"/> 
+ <channel onMode="1" bRatio="0.0003670" products="13 -5 4"/> 
+ <channel onMode="1" bRatio="0.0818930" products="13 -5 6"/> 
+ <channel onMode="1" bRatio="0.1987760" products="-13 1 -2"/> 
+ <channel onMode="1" bRatio="0.0102060" products="-13 1 -4"/> 
+ <channel onMode="1" bRatio="0.0000030" products="-13 1 -6"/> 
+ <channel onMode="1" bRatio="0.0102070" products="-13 3 -2"/> 
+ <channel onMode="1" bRatio="0.1983900" products="-13 3 -4"/> 
+ <channel onMode="1" bRatio="0.0001510" products="-13 3 -6"/> 
+ <channel onMode="1" bRatio="0.0000060" products="-13 5 -2"/> 
+ <channel onMode="1" bRatio="0.0003670" products="-13 5 -4"/> 
+ <channel onMode="1" bRatio="0.0818930" products="-13 5 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 -11 9900012"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 11 9900012"/> 
+ <channel onMode="1" bRatio="0.0000000" products="13 -15 9900016"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-13 15 9900016"/> 
+</particle> 
+ 
+<particle id="9900016" name="nu_Rtau" spinType="2" chargeType="0" colType="0" 
+          m0="500.00000" mWidth="0.00097" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.1993440" products="15 -1 2"/> 
+ <channel onMode="1" bRatio="0.0102340" products="15 -1 4"/> 
+ <channel onMode="1" bRatio="0.0000030" products="15 -1 6"/> 
+ <channel onMode="1" bRatio="0.0102360" products="15 -3 2"/> 
+ <channel onMode="1" bRatio="0.1989280" products="15 -3 4"/> 
+ <channel onMode="1" bRatio="0.0001490" products="15 -3 6"/> 
+ <channel onMode="1" bRatio="0.0000060" products="15 -5 2"/> 
+ <channel onMode="1" bRatio="0.0003680" products="15 -5 4"/> 
+ <channel onMode="1" bRatio="0.0807330" products="15 -5 6"/> 
+ <channel onMode="1" bRatio="0.1993440" products="-15 1 -2"/> 
+ <channel onMode="1" bRatio="0.0102340" products="-15 1 -4"/> 
+ <channel onMode="1" bRatio="0.0000030" products="-15 1 -6"/> 
+ <channel onMode="1" bRatio="0.0102360" products="-15 3 -2"/> 
+ <channel onMode="1" bRatio="0.1989280" products="-15 3 -4"/> 
+ <channel onMode="1" bRatio="0.0001490" products="-15 3 -6"/> 
+ <channel onMode="1" bRatio="0.0000060" products="-15 5 -2"/> 
+ <channel onMode="1" bRatio="0.0003680" products="-15 5 -4"/> 
+ <channel onMode="1" bRatio="0.0807330" products="-15 5 -6"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 -11 9900012"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 11 9900012"/> 
+ <channel onMode="1" bRatio="0.0000000" products="15 -13 9900014"/> 
+ <channel onMode="1" bRatio="0.0000000" products="-15 13 9900014"/> 
+</particle> 
+ 
+<particle id="9900020" name="gam_diff0" spinType="3" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="9900023" name="Z_R0" spinType="3" chargeType="0" colType="0" 
+          m0="1.200e+03" mWidth="2.672e+01" mMin="5.000e+01" mMax="0.000e+00"> 
+ <channel onMode="1" bRatio="0.1847380" products="1 -1"/> 
+ <channel onMode="1" bRatio="0.1045880" products="2 -2"/> 
+ <channel onMode="1" bRatio="0.1847380" products="3 -3"/> 
+ <channel onMode="1" bRatio="0.1045870" products="4 -4"/> 
+ <channel onMode="1" bRatio="0.1847310" products="5 -5"/> 
+ <channel onMode="1" bRatio="0.0958200" products="6 -6"/> 
+ <channel onMode="1" bRatio="0.0229020" products="11 -11"/> 
+ <channel onMode="1" bRatio="0.0084290" products="12 -12"/> 
+ <channel onMode="1" bRatio="0.0156020" products="9900012 9900012"/> 
+ <channel onMode="1" bRatio="0.0229020" products="13 -13"/> 
+ <channel onMode="1" bRatio="0.0084290" products="14 -14"/> 
+ <channel onMode="1" bRatio="0.0156020" products="9900014 9900014"/> 
+ <channel onMode="1" bRatio="0.0229020" products="15 -15"/> 
+ <channel onMode="1" bRatio="0.0084290" products="16 -16"/> 
+ <channel onMode="1" bRatio="0.0156020" products="9900016 9900016"/> 
+</particle> 
+ 
+<particle id="9900024" name="W_R+" antiName="W_R-" spinType="3" chargeType="3" colType="0" 
+          m0="750.00000" mWidth="21.74916" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.2895900" products="-1 2"/> 
+ <channel onMode="1" bRatio="0.0148700" products="-1 4"/> 
+ <channel onMode="1" bRatio="0.0000080" products="-1 6"/> 
+ <channel onMode="1" bRatio="0.0148700" products="-3 2"/> 
+ <channel onMode="1" bRatio="0.2890610" products="-3 4"/> 
+ <channel onMode="1" bRatio="0.0004920" products="-3 6"/> 
+ <channel onMode="1" bRatio="0.0000090" products="-5 2"/> 
+ <channel onMode="1" bRatio="0.0005360" products="-5 4"/> 
+ <channel onMode="1" bRatio="0.2791100" products="-5 6"/> 
+ <channel onMode="1" bRatio="0.0371510" products="-11 9900012"/> 
+ <channel onMode="1" bRatio="0.0371510" products="-13 9900014"/> 
+ <channel onMode="1" bRatio="0.0371500" products="-15 9900016"/> 
+</particle> 
+ 
+<particle id="9900041" name="H_L++" antiName="H_L&#45;&#45;" spinType="1" chargeType="6" colType="0" 
+          m0="200.00000" mWidth="0.88159" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0902660" products="-11 -11"/> 
+ <channel onMode="1" bRatio="0.0018050" products="-11 -13"/> 
+ <channel onMode="1" bRatio="0.0018050" products="-11 -15"/> 
+ <channel onMode="1" bRatio="0.0902660" products="-13 -13"/> 
+ <channel onMode="1" bRatio="0.0018050" products="-13 -15"/> 
+ <channel onMode="1" bRatio="0.8122630" products="-15 -15"/> 
+ <channel onMode="1" bRatio="0.0017900" products="24 24"/> 
+</particle> 
+ 
+<particle id="9900042" name="H_R++" antiName="H_R&#45;&#45;" spinType="1" chargeType="6" colType="0" 
+          m0="200.00000" mWidth="0.88001" mMin="50.00000" mMax="0.00000"> 
+ <channel onMode="1" bRatio="0.0904280" products="-11 -11"/> 
+ <channel onMode="1" bRatio="0.0018090" products="-11 -13"/> 
+ <channel onMode="1" bRatio="0.0018080" products="-11 -15"/> 
+ <channel onMode="1" bRatio="0.0904280" products="-13 -13"/> 
+ <channel onMode="1" bRatio="0.0018080" products="-13 -15"/> 
+ <channel onMode="1" bRatio="0.8137200" products="-15 -15"/> 
+ <channel onMode="1" bRatio="0.0000000" products="9900024 9900024"/> 
+</particle> 
+ 
+<particle id="9900110" name="rho_diff0" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="9900210" name="pi_diffr+" antiName="pi_diffr-" spinType="0" chargeType="3" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="9900220" name="omega_di" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="9900330" name="phi_diff" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="9900440" name="J/psi_di" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="9902110" name="n_diffr0" antiName="n_diffrbar0" spinType="0" chargeType="0" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="9902210" name="p_diffr+" antiName="p_diffrbar-" spinType="0" chargeType="3" colType="0" 
+          m0="0.00000"> 
+</particle> 
+ 
+<particle id="9940003" name="J/psi[3S1(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="3.29692" mWidth="0.0" mMin="3.29692" mMax="3.29692"> 
+ <channel onMode="1" bRatio="1.0000000" products="443 21"/> 
+</particle> 
+ 
+<particle id="9940005" name="chi_2c[3S1(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="3.7562" mWidth="0.0" mMin="3.7562" mMax="3.7562"> 
+ <channel onMode="1" bRatio="1.0000000" products="445 21"/> 
+</particle> 
+ 
+<particle id="9940011" name="chi_0c[3S1(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="3.61475" mWidth="0.0" mMin="3.61475" mMax="3.61475"> 
+ <channel onMode="1" bRatio="1.0000000" products="10441 21"/> 
+</particle> 
+ 
+<particle id="9940023" name="chi_1c[3S1(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="3.71066" mWidth="0.0" mMin="3.71066" mMax="3.71066"> 
+ <channel onMode="1" bRatio="1.0000000" products="20443 21"/> 
+</particle> 
+ 
+<particle id="9940103" name="psi(2S)[3S1(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="3.88611" mWidth="0.0" mMin="3.88611" mMax="3.88611"> 
+ <channel onMode="1" bRatio="1.0000000" products="100443 21"/> 
+</particle> 
+ 
+<particle id="9941003" name="J/psi[1S0(8)]" spinType="1" chargeType="0" colType="2" 
+          m0="3.29692" mWidth="0.0" mMin="3.29692" mMax="3.29692"> 
+ <channel onMode="1" bRatio="1.0000000" products="443 21"/> 
+</particle> 
+ 
+<particle id="9941103" name="psi(2S)[1S0(8)]" spinType="1" chargeType="0" colType="2" 
+          m0="3.88611" mWidth="0.0" mMin="3.88611" mMax="3.88611"> 
+ <channel onMode="1" bRatio="1.0000000" products="100443 21"/> 
+</particle> 
+ 
+<particle id="9942003" name="J/psi[3PJ(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="3.29692" mWidth="0.0" mMin="3.29692" mMax="3.29692"> 
+ <channel onMode="1" bRatio="1.0000000" products="443 21"/> 
+</particle> 
+ 
+<particle id="9942033" name="psi(3770)[3PJ(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="3.97315" mWidth="0.0" mMin="3.97315" mMax="3.97315"> 
+ <channel onMode="1" bRatio="1.0000000" products="30443 21"/> 
+</particle> 
+ 
+<particle id="9942103" name="psi(2S)[3PJ(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="3.88611" mWidth="0.0" mMin="3.88611" mMax="3.88611"> 
+ <channel onMode="1" bRatio="1.0000000" products="100443 21"/> 
+</particle> 
+ 
+<particle id="9950003" name="Upsilon[3S1(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="9.6603" mWidth="0.0" mMin="9.6603" mMax="9.6603"> 
+ <channel onMode="1" bRatio="1.0000000" products="553 21"/> 
+</particle> 
+ 
+<particle id="9950005" name="chi_2b[3S1(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="10.1122" mWidth="0.0" mMin="10.1122" mMax="10.1122"> 
+ <channel onMode="1" bRatio="1.0000000" products="555 21"/> 
+</particle> 
+ 
+<particle id="9950011" name="chi_0b[3S1(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="10.0594" mWidth="0.0" mMin="10.0594" mMax="10.0594"> 
+ <channel onMode="1" bRatio="1.0000000" products="10551 21"/> 
+</particle> 
+ 
+<particle id="9950023" name="chi_1b[3S1(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="10.09280" mWidth="0.0" mMin="10.09280" mMax="10.09280"> 
+ <channel onMode="1" bRatio="1.0000000" products="20553 21"/> 
+</particle> 
+ 
+<particle id="9950103" name="Upsilon(2S)[3S1(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="10.22326" mWidth="0.0" mMin="10.22326" mMax="10.22326"> 
+ <channel onMode="1" bRatio="1.0000000" products="100553 21"/> 
+</particle> 
+ 
+<particle id="9950203" name="Upsilon(3S)[3S1(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="10.5552" mWidth="0.0" mMin="10.5552" mMax="10.5552"> 
+ <channel onMode="1" bRatio="1.0000000" products="200553 21"/> 
+</particle> 
+ 
+<particle id="9951003" name="Upsilon[1S0(8)]" spinType="1" chargeType="0" colType="2" 
+          m0="9.6603" mWidth="0.0" mMin="9.6603" mMax="9.6603"> 
+ <channel onMode="1" bRatio="1.0000000" products="553 21"/> 
+</particle> 
+ 
+<particle id="9951103" name="Upsilon(2S)[1S0(8)]" spinType="1" chargeType="0" colType="2" 
+          m0="10.22326" mWidth="0.0" mMin="10.22326" mMax="10.22326"> 
+ <channel onMode="1" bRatio="1.0000000" products="100553 21"/> 
+</particle> 
+ 
+<particle id="9951203" name="Upsilon(3S)[1S0(8)]" spinType="1" chargeType="0" colType="2" 
+          m0="10.5552" mWidth="0.0" mMin="10.5552" mMax="10.5552"> 
+ <channel onMode="1" bRatio="1.0000000" products="200553 21"/> 
+</particle> 
+ 
+<particle id="9952003" name="Upsilon[3PJ(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="9.6603" mWidth="0.0" mMin="9.6603" mMax="9.6603"> 
+ <channel onMode="1" bRatio="1.0000000" products="553 21"/> 
+</particle> 
+ 
+<particle id="9952103" name="Upsilon(2S)[3PJ(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="10.22326" mWidth="0.0" mMin="10.22326" mMax="10.22326"> 
+ <channel onMode="1" bRatio="1.0000000" products="100553 21"/> 
+</particle> 
+ 
+<particle id="9952203" name="Upsilon(3S)[3PJ(8)]" spinType="3" chargeType="0" colType="2" 
+          m0="10.5552" mWidth="0.0" mMin="10.5552" mMax="10.5552"> 
+ <channel onMode="1" bRatio="1.0000000" products="200553 21"/> 
+</particle> 
+ 
+<particle id="1000020040" name="4He" antiName="4Hebar" 
+          spinType="1" chargeType="6" colType="0" m0="3.7284"> 
+</particle> 
+ 
+<particle id="1000030060" name="6Li" antiName="6Libar" 
+          spinType="1" chargeType="9" colType="0" m0="5.6030512"> 
+</particle> 
+ 
+<particle id="1000060120" name="12C" antiName="12Cbar" 
+          spinType="1" chargeType="18" colType="0" m0="11.177929"> 
+</particle> 
+ 
+<particle id="1000080160" name="16O" antiName="16Obar" 
+          spinType="1" chargeType="24" colType="0" m0="14.899168"> 
+</particle> 
+ 
+<particle id="1000290630" name="63Cu" antiName="63Cubar" 
+          spinType="2" chargeType="87" colType="0" m0="58.618646"> 
+</particle> 
+ 
+<particle id="1000541290" name="129Xe" antiName="129Xebar" 
+          spinType="2" chargeType="162" colType="0" m0="120.04645"> 
+</particle> 
+ 
+<particle id="1000791970" name="197Au" antiName="197Aubar" 
+          spinType="2" chargeType="237" colType="0" m0="183.47319"> 
+</particle> 
+ 
+<particle id="1000822080" name="208Pb" antiName="208Pbbar" 
+          spinType="1" chargeType="246" colType="0" m0="193.72902"> 
+</particle> 
+-->
+ 
+</chapter> 
+ 
+<!-- Copyright (C) 2018 Torbjorn Sjostrand --> 
diff --git a/Framework/Particles/ParticleProperties.h b/corsika/framework/core/ParticleProperties.hpp
similarity index 63%
rename from Framework/Particles/ParticleProperties.h
rename to corsika/framework/core/ParticleProperties.hpp
index 7abcc768b..3bba1f509 100644
--- a/Framework/Particles/ParticleProperties.h
+++ b/corsika/framework/core/ParticleProperties.hpp
@@ -18,7 +18,7 @@
 #include <cstdint>
 #include <iosfwd>
 
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 /**
  *
@@ -27,7 +27,7 @@
  *
  */
 
-namespace corsika::particles {
+namespace corsika {
 
   /**
    * @enum Code
@@ -54,10 +54,7 @@ namespace corsika::particles {
   int constexpr GetNucleusA(Code const);
   int constexpr GetNucleusZ(Code const);
 
-} // namespace corsika::particles
-
-// here we read the implementation of all those objects and function
-#include <corsika/particles/GeneratedParticleProperties.inc>
+#include <corsika/framework/core/GeneratedParticleProperties.inc>
 
 namespace corsika::particles {
 
@@ -67,14 +64,14 @@ namespace corsika::particles {
   corsika::units::si::HEPMassType constexpr GetMass(Code const p) {
     if (p == Code::Nucleus)
       throw std::runtime_error("Cannot GetMass() of particle::Nucleus -> unspecified");
-    return detail::masses[static_cast<CodeIntType>(p)];
+    return particle::detail::masses[static_cast<CodeIntType>(p)];
   }
 
   /*!
    * returns PDG id
    */
   PDGCode constexpr GetPDG(Code const p) {
-    return detail::pdg_codes[static_cast<CodeIntType>(p)];
+    return particle::detail::pdg_codes[static_cast<CodeIntType>(p)];
   }
 
   /*!
@@ -85,7 +82,7 @@ namespace corsika::particles {
       throw std::runtime_error(
           "Cannot GetChargeNumber() of particle::Nucleus -> unspecified");
     // electric_charges stores charges in units of (e/3), e.g. 3 for a proton
-    return detail::electric_charges[static_cast<CodeIntType>(p)] / 3;
+    return particle::detail::electric_charges[static_cast<CodeIntType>(p)] / 3;
   }
 
   /*!
@@ -98,43 +95,43 @@ namespace corsika::particles {
   }
 
   constexpr std::string const& GetName(Code const p) {
-    return detail::names[static_cast<CodeIntType>(p)];
+    return particle::detail::names[static_cast<CodeIntType>(p)];
   }
 
-  corsika::units::si::TimeType constexpr GetLifetime(Code const p) {
-    return detail::lifetime[static_cast<CodeIntType>(p)] * corsika::units::si::second;
+  inline corsika::units::si::TimeType constexpr GetLifetime(Code const p) {
+    return particle::detail::lifetime[static_cast<CodeIntType>(p)] * corsika::units::si::second;
   }
 
-  bool constexpr IsHadron(Code const p) {
-    return detail::isHadron[static_cast<CodeIntType>(p)];
+  inline bool constexpr IsHadron(Code const p) {
+    return particle::detail::isHadron[static_cast<CodeIntType>(p)];
   }
 
-  bool constexpr IsEM(Code c) {
+  inline bool constexpr IsEM(Code c) {
     return c == Code::Electron || c == Code::Positron || c == Code::Gamma;
   }
 
-  bool constexpr IsMuon(Code c) { return c == Code::MuPlus || c == Code::MuMinus; }
+  inline bool constexpr IsMuon(Code c) { return c == Code::MuPlus || c == Code::MuMinus; }
 
-  bool constexpr IsNeutrino(Code c) {
+  inline bool constexpr IsNeutrino(Code c) {
     return c == Code::NuE || c == Code::NuMu || c == Code::NuTau || c == Code::NuEBar ||
            c == Code::NuMuBar || c == Code::NuTauBar;
   }
 
-  int constexpr GetNucleusA(Code const p) {
+  inline int constexpr GetNucleusA(Code const p) {
     if (p == Code::Nucleus) {
       throw std::runtime_error("GetNucleusA(Code::Nucleus) is impossible!");
     }
-    return detail::nucleusA[static_cast<CodeIntType>(p)];
+    return particle::detail::nucleusA[static_cast<CodeIntType>(p)];
   }
 
-  int constexpr GetNucleusZ(Code const p) {
+  inline int constexpr GetNucleusZ(Code const p) {
     if (p == Code::Nucleus) {
       throw std::runtime_error("GetNucleusZ(Code::Nucleus) is impossible!");
     }
-    return detail::nucleusZ[static_cast<CodeIntType>(p)];
+    return particle::detail::nucleusZ[static_cast<CodeIntType>(p)];
   }
 
-  bool constexpr IsNucleus(Code const p) {
+  inline bool constexpr IsNucleus(Code const p) {
     return (p == Code::Nucleus) || (GetNucleusA(p) != 0);
   }
 
@@ -142,19 +139,27 @@ namespace corsika::particles {
    * the output operator for humand-readable particle codes
    **/
 
-  std::ostream& operator<<(std::ostream&, corsika::particles::Code);
-
-  Code ConvertFromPDG(PDGCode);
+  inline std::ostream& operator<<(std::ostream& stream, corsika::Code const p) {
+    return stream << corsika::GetName(p);
+  }
 
+  inline Code ConvertFromPDG(PDGCode p) {
+    static_assert(particle::detail::conversionArray.size() % 2 == 1);
+    // this will fail, for the strange case where the maxPDG is negative...
+    unsigned int constexpr maxPDG{(particle::detail::conversionArray.size() - 1) >> 1};
+    auto k = static_cast<PDGCodeType>(p);
+    if ((unsigned int)abs(k) <= maxPDG) {
+      return particle::detail::conversionArray[k + maxPDG];
+    } else {
+      return particle::detail::conversionMap.at(p);
+    }
+  }
   /**
    * Get mass of nucleus
    **/
-  corsika::units::si::HEPMassType constexpr GetNucleusMass(const int vA, const int vZ) {
+  inline corsika::units::si::HEPMassType constexpr GetNucleusMass(const int vA, const int vZ) {
     return Proton::GetMass() * vZ + (vA - vZ) * Neutron::GetMass();
   }
 
-  std::initializer_list<Code> constexpr getAllParticles() {
-    return detail::all_particles;
-  }
+} // namespace corsika
 
-} // namespace corsika::particles
diff --git a/Framework/Units/PhysicalConstants.h b/corsika/framework/core/PhysicalConstants.hpp
similarity index 99%
rename from Framework/Units/PhysicalConstants.h
rename to corsika/framework/core/PhysicalConstants.hpp
index f47b917e6..306f48ebd 100644
--- a/Framework/Units/PhysicalConstants.h
+++ b/corsika/framework/core/PhysicalConstants.hpp
@@ -64,3 +64,4 @@ namespace corsika::units::constants {
   // etc.
 
 } // namespace corsika::units::constants
+
diff --git a/Framework/Units/PhysicalUnits.h b/corsika/framework/core/PhysicalUnits.hpp
similarity index 98%
rename from Framework/Units/PhysicalUnits.h
rename to corsika/framework/core/PhysicalUnits.hpp
index 36a835e7e..ebbdbcb2e 100644
--- a/Framework/Units/PhysicalUnits.h
+++ b/corsika/framework/core/PhysicalUnits.hpp
@@ -8,8 +8,9 @@
 
 #pragma once
 
-#include <corsika/units/PhysicalConstants.h>
+#include <corsika/framework/core/PhysicalConstants.hpp>
 
+//FIXME: What package is this?
 #include <phys/units/io.hpp>
 #include <phys/units/quantity.hpp>
 
diff --git a/Framework/Particles/ParticleProperties.cc b/corsika/framework/core/detail/ParticleProperties.cc
similarity index 100%
rename from Framework/Particles/ParticleProperties.cc
rename to corsika/framework/core/detail/ParticleProperties.cc
diff --git a/corsika/framework/core/pdxml_reader.py b/corsika/framework/core/pdxml_reader.py
new file mode 100755
index 000000000..8ce20b80a
--- /dev/null
+++ b/corsika/framework/core/pdxml_reader.py
@@ -0,0 +1,516 @@
+#!/usr/bin/env python3
+
+import sys, math, itertools, re, csv, pprint
+import xml.etree.ElementTree as ET
+from collections import OrderedDict
+import pickle
+import io
+
+GeVfm = 0.19732696312541853
+c_speed_of_light = 29.9792458e10  # mm / s
+# for nuclear masses
+mneutron = 0.9395654133 # GeV
+mproton = 0.9382720813 # GeV
+
+namespace = "corsika"
+
+##############################################################
+# 
+# reading xml input data, return line by line particle data
+# 
+def parsePythia(filename):
+    tree = ET.parse(filename)
+    root = tree.getroot()
+    
+    for particle in root.iter("particle"):
+        name = particle.attrib["name"]        
+        antiName = "Unknown"
+        if ("antiName" in particle.attrib):
+            antiName = particle.attrib["antiName"]
+        pdg_id = int(particle.attrib["id"])
+        mass = float(particle.attrib["m0"])  # GeV
+        electric_charge = int(particle.attrib["chargeType"])  # in units of e/3        
+        ctau = 0.
+        if pdg_id in (11, 12, 14, 16, 22, 2212):  # these are the stable particles !
+            ctau = float('Inf')
+        elif 'tau0' in particle.attrib:
+            ctau = float(particle.attrib['tau0'])  # mm / c
+        elif 'mWidth' in particle.attrib:
+            ctau = GeVfm / float(particle.attrib['mWidth']) * 1e-15 * 1000.0  # mm / s
+        elif pdg_id in (0, 423, 433, 4312, 4322, 5112, 5222):  # those are certainly not stable....
+            ctau = 0.
+        else:
+            print ("missing lifetime: " + str(pdg_id) + " " + str(name))
+            sys.exit(1)
+        
+        yield (pdg_id, name, mass, electric_charge, antiName, ctau/c_speed_of_light)
+                
+        # TODO: read decay channels from child elements
+        
+        if "antiName" in particle.attrib:
+            yield (-pdg_id, antiName, mass, -electric_charge, name, ctau/c_speed_of_light)
+
+
+##############################################################
+# 
+# reading xml input data, return line by line particle data
+# 
+def parseNuclei(filename):
+    tree = ET.parse(filename)
+    root = tree.getroot()
+        
+    for particle in root.iter("particle"):
+        name = particle.attrib["name"]        
+        antiName = "Unknown"
+        if ("antiName" in particle.attrib):
+            antiName = particle.attrib["antiName"]
+        pdg_id = int(particle.attrib["id"])
+        A = int(particle.attrib["A"])
+        Z = int(particle.attrib["Z"])
+        # mass in GeV
+        if ("mass" in particle.attrib):
+            mass = particle.attrib["mass"] 
+        else:
+            mass = (A-Z)*mneutron + Z*mproton
+
+        electric_charge = Z*3  # in units of e/3        
+        ctau = float('Inf')
+        
+        yield (pdg_id, name, mass, electric_charge, antiName, ctau/c_speed_of_light, A, Z)
+                
+
+        
+##############################################################
+# 
+# returns dict with particle codes and class names
+# 
+def class_names(filename):
+    tree = ET.parse(filename)
+    root = tree.getroot()
+
+    map = {}
+    
+    for particle in root.iter("particle"):
+        name = particle.attrib["classname"]
+        pdg_id = int(particle.attrib["pdgID"])
+        map[pdg_id] = name
+        
+    return map
+
+##############################################################
+# 
+# Automatically produce a string qualifying as C++ class name
+# 
+# This function produces names of type "DeltaPlusPlus"
+# 
+def c_identifier_camel(name):
+    orig = name
+    name = name[0].upper() + name[1:].lower() # all lower case
+    
+    for c in "() /": # replace funny characters
+        name = name.replace(c, "_")
+    
+    name = name.replace("bar", "Bar")
+    name = name.replace("*", "Star")
+    name = name.replace("'", "Prime")
+    name = name.replace("+", "Plus")
+    name = name.replace("-", "Minus")
+
+    # move "Bar" to end of name
+    ibar = name.find('Bar')
+    if ibar > 0 and ibar < len(name)-3:
+        name = name[:ibar] + name[ibar+3:] + 'Bar'
+    
+    # cleanup "_"s
+    while True:
+        tmp = name.replace("__", "_")
+        if tmp == name:
+            break
+        else:
+            name = tmp
+    name.strip("_")
+
+    # remove all "_", if this does not by accident concatenate two numbers
+    istart = 0
+    while True:
+        i = name.find('_', istart)
+        if i < 1 or i > len(name)-1:
+            break
+        istart = i
+        if name[i-1].isdigit() and name[i+1].isdigit():
+            # there is a number on both sides
+            break
+        name = name[:i] + name[i+1:]
+        # and last, for example: make NuE out of Nue
+        if name[i-1].islower() and name[i].islower():
+            if i < len(name)-1:
+                name = name[:i] + name[i].upper() + name[i+1:]
+            else:
+                name = name[:i] + name[i].upper()
+
+    # check if name is valid C++ identifier
+    pattern = re.compile(r'^[a-zA-Z_][a-zA-Z_0-9]*$')
+    if pattern.match(name):
+        return name
+    else:
+        raise Exception("could not generate C identifier for '{:s}': result '{:s}'".format(orig, name))
+
+
+    
+##########################################################
+# 
+# returns dict containing all data from pythia-xml input
+#     
+def read_pythia_db(filename, particle_db, classnames):    
+    
+    counter = itertools.count(len(particle_db))
+    
+    for (pdg, name, mass, electric_charge, antiName, lifetime) in parsePythia(filename):
+
+        c_id = "Unknown"
+        if pdg in classnames:
+            c_id = classnames[pdg]
+        else:
+            c_id = c_identifier_camel(name) # the camel case names
+
+        hadron =abs(pdg) > 100
+
+        if c_id in particle_db.keys():
+            raise RuntimeError("particle '{:s}' already known (new PDG id {:d}, stored PDG id: {:d})".format(c_id, pdg, particle_db[c_id]['pdg']))
+            
+        particle_db[c_id] = {
+            "name" : name,
+            "antiName" : antiName,
+            "pdg" : pdg,
+            "mass" : mass, # in GeV
+            "electric_charge" : electric_charge, # in e/3
+            "lifetime" : lifetime,
+            "ngc_code" : next(counter),
+            "isNucleus" : False,
+            "isHadron" : hadron,
+        }
+    
+    return particle_db
+    
+
+
+##########################################################
+# 
+# returns dict containing all data from pythia-xml input
+#     
+def read_nuclei_db(filename, particle_db, classnames):    
+    
+    counter = itertools.count(len(particle_db))
+
+    for (pdg, name, mass, electric_charge, antiName, lifetime, A, Z) in parseNuclei(filename):
+        
+        c_id = "Unknown"
+        if pdg in classnames:
+            c_id = classnames[pdg]
+        else:
+            c_id = c_identifier_camel(name)
+
+        particle_db[c_id] = {
+            "name" : name,
+            "antiName" : antiName,
+            "pdg" : pdg,
+            "mass" : mass, # in GeV
+            "electric_charge" : electric_charge, # in e/3
+            "lifetime" : lifetime,
+            "ngc_code" : next(counter),
+            "A" : A,
+            "Z" : Z,
+            "isNucleus" : True,
+            "isHadron" : True,
+        }
+    
+    return particle_db
+
+
+###############################################################
+# 
+# build conversion table PDG -> ngc
+# 
+def gen_conversion_PDG_ngc(particle_db):
+    # todo: find a optimum value, think about cache miss with array vs lookup time with map
+    P_MAX = 500 # the maximum PDG code that is still filled into the table
+        
+    conversionDict = dict()
+    conversionTable = [None] * (2*P_MAX + 1)
+    for cId, p in particle_db.items():
+        pdg = p['pdg']
+        
+        if abs(pdg) < P_MAX:
+            if conversionTable[pdg + P_MAX]:
+                raise Exception("table entry already occupied")
+            else:
+                conversionTable[pdg + P_MAX] = cId
+        else:
+            if pdg in conversionDict.keys():
+                raise Exception(f"map entry {pdg} already occupied")
+            else:
+                conversionDict[pdg] = cId
+    
+    output = io.StringIO()
+    def oprint(*args, **kwargs):
+        print(*args, **kwargs, file=output)
+        
+    oprint(f"static std::array<Code, {len(conversionTable)}> constexpr conversionArray {{")
+    for ngc in conversionTable:
+        oprint("    Code::{0},".format(ngc if ngc else "Unknown"))
+    oprint("};")
+    oprint()
+    
+    oprint("static std::map<PDGCode, Code> const conversionMap {")
+    for ngc in conversionDict.values():
+        oprint(f"    {{PDGCode::{ngc}, Code::{ngc}}},")
+    oprint("};")
+    oprint()
+    
+    return output.getvalue()
+
+
+###############################################################
+# 
+# return string with enum of all internal particle codes
+# 
+def gen_internal_enum(particle_db):
+    string = ("enum class Code : CodeIntType {\n"
+              "  FirstParticle = 1, // if you want to loop over particles, you want to start with \"1\"  \n") # identifier for eventual loops...
+    
+    
+    for k in filter(lambda k: "ngc_code" in particle_db[k], particle_db):
+        last_ngc_id = particle_db[k]['ngc_code']
+        string += "  {key:s} = {code:d},\n".format(key = k, code = last_ngc_id)
+
+    string += ("  LastParticle = {:d},\n" # identifier for eventual loops...
+               "}};").format(last_ngc_id + 1)
+               
+    if last_ngc_id > 0x7fff: # does not fit into int16_t
+        raise Exception("Integer overflow in internal particle code definition prevented!")
+    
+    return string
+
+
+###############################################################
+# 
+# return string with enum of all PDG particle codes
+# 
+def gen_pdg_enum(particle_db):
+    string = "enum class PDGCode : PDGCodeType {\n"
+    
+    for cId in particle_db:
+        pdgCode = particle_db[cId]['pdg']
+        string += "  {key:s} = {code:d},\n".format(key = cId, code = pdgCode)
+
+    string += " };\n"
+    
+    return string
+
+
+###############################################################
+# 
+# return string with all data arrays 
+# 
+def gen_properties(particle_db):
+
+    # number of particles, size of tables
+    string = "static constexpr std::size_t size = {size:d};\n".format(size = len(particle_db))
+    string += "\n"
+
+    # all particle initializer_list
+    string += "constexpr std::initializer_list<Code> all_particles = {"
+    for k in particle_db:        
+        string += "  Code::{name:s},\n".format(name = k)
+    string += "};\n"
+    string += "\n"
+    
+    # particle masses table
+    string += "static constexpr std::array<corsika::units::si::HEPMassType const, size> masses = {\n"    
+    for p in particle_db.values():
+        string += "  {mass:e} * 1e9 * corsika::units::si::electronvolt, // {name:s}\n".format(mass = p['mass'], name = p['name'])
+    string += "};\n\n"
+                   
+    # PDG code table
+    string += "static constexpr std::array<PDGCode, size> pdg_codes = {\n"
+    for p in particle_db.keys():
+        string += f"  PDGCode::{p},\n"
+    string += "};\n"
+    
+    # name string table
+    string += "static const std::array<std::string const, size> names = {\n"
+    for p in particle_db.values():
+        string += "  \"{name:s}\",\n".format(name = p['name'])            
+    string += "};\n"
+    
+    # electric charges table
+    string += "static constexpr std::array<int16_t, size> electric_charges = {\n"
+    for p in particle_db.values():
+        string += "  {charge:d},\n".format(charge = p['electric_charge'])
+    string += "};\n"
+
+    # anti-particle table
+    #    string += "static constexpr std::array<size, size> anti_particle = {\n"
+    #    for p in particle_db.values():
+    #        string += "  {anti:d},\n".format(charge = p['anti_particle'])
+    #    string += "};\n"
+
+    # lifetime
+    #string += "static constexpr std::array<corsika::units::si::TimeType const, size> lifetime = {\n"
+    string += "static constexpr std::array<double const, size> lifetime = {\n"
+    for p in particle_db.values():
+        if p['lifetime'] == float("Inf") :
+            string += "  std::numeric_limits<double>::infinity(), \n" # * corsika::units::si::second, \n"
+        else :
+            string += "  {tau:e}, \n".format(tau = p['lifetime'])
+            #string += "  {tau:e} * corsika::units::si::second, \n".format(tau = p['lifetime'])
+    string += "};\n"
+    
+    # is Hadron flag
+    string += "static constexpr std::array<bool, size> isHadron = {\n"
+    for p in particle_db.values():
+        value = 'false'
+        if p['isHadron']:
+            value = 'true'
+        string += "  {val},\n".format(val = value)
+    string += "};\n"
+
+    
+    ### nuclear data ###
+    
+    # nucleus mass number A
+    string += "static constexpr std::array<int16_t, size> nucleusA = {\n"
+    for p in particle_db.values():
+        A = p.get('A', 0)
+        string += "  {val},\n".format(val = A)
+    string += "};\n"
+    
+    # nucleus charge number Z
+    string += "static constexpr std::array<int16_t, size> nucleusZ = {\n"
+    for p in particle_db.values():
+        Z = p.get('Z', 0)
+        string += "  {val},\n".format(val = Z)
+    string += "};\n"
+
+    return string
+
+
+###############################################################
+# 
+# return string with a list of classes for all particles
+# 
+def gen_classes(particle_db):
+
+    string = "// list of C++ classes to access particle properties"
+    
+    for cname in particle_db:
+
+        antiP = 'Unknown'
+        for cname_anti in particle_db:
+            if (particle_db[cname_anti]['name'] == particle_db[cname]['antiName']):
+                antiP = cname_anti
+                break
+        
+        string += "\n"
+        string += "/** @class " + cname + "\n\n"
+        string += " * Particle properties are taken from the PYTHIA8 ParticleData.xml file:<br>\n"
+        string += " *  - pdg=" + str(particle_db[cname]['pdg']) +"\n"
+        string += " *  - mass=" + str(particle_db[cname]['mass']) + " GeV \n"
+        string += " *  - charge= " + str(particle_db[cname]['electric_charge']/3) + " \n"
+        string += " *  - name=" + str(cname) + "\n"
+        string += " *  - anti=" + str(antiP) + "\n"
+        if (particle_db[cname]['isNucleus']):
+            string += " *  - nuclear A=" + str(particle_db[cname]['A']) + "\n"
+            string += " *  - nuclear Z=" + str(particle_db[cname]['Z']) + "\n"        
+        string += "*/\n\n"
+        string += "class " + cname + " {\n"
+        string += "  public:\n"
+        string += "   static constexpr Code GetCode() { return Type; }\n"
+        string += "   static constexpr corsika::units::si::HEPMassType GetMass() { return corsika::GetMass(Type); }\n"
+        string += "   static constexpr corsika::units::si::ElectricChargeType GetCharge() { return corsika::GetCharge(Type); }\n"
+        string += "   static constexpr int16_t GetChargeNumber() { return corsika::GetChargeNumber(Type); }\n"
+        string += "   static std::string const& GetName() { return corsika::GetName(Type); }\n"
+        string += "   static constexpr Code GetAntiParticle() { return AntiType; }\n"
+        string += "   static constexpr bool IsNucleus() { return corsika::IsNucleus(Type); }\n"
+        string += "   static constexpr int16_t GetNucleusA() { return corsika::GetNucleusA(Type); }\n"
+        string += "   static constexpr int16_t GetNucleusZ() { return corsika::GetNucleusZ(Type); }\n"
+        string += "   static constexpr Code Type = Code::" + cname + ";\n"
+        string += "   static constexpr Code AntiType = Code::" + antiP + ";\n"
+        string += " private:\n"
+        string += "   static constexpr CodeIntType TypeIndex = static_cast<CodeIntType const>(Type);\n"
+        string += "};\n"
+
+    return string
+
+
+###############################################################
+# 
+# 
+def inc_start():
+    string = ('// generated by pdxml_reader.py\n'
+              '// MANUAL EDITS ON OWN RISK. THEY WILL BE OVERWRITTEN. \n')
+    return string
+
+
+###############################################################
+# 
+# 
+def detail_start():
+    string = ('namespace particle::detail {\n\n')
+    return string
+
+
+###############################################################
+# 
+# 
+def detail_end():
+    string = "\n}//end namespace particle::detail\n"
+    return string
+
+###############################################################
+# 
+# 
+def inc_end():
+    string = ""
+    return string
+
+
+###################################################################
+# 
+# Serialize particle_db into file 
+# 
+def serialize_particle_db(particle_db, file):
+    pickle.dump(particle_db, file)
+
+    
+###################################################################
+# 
+# Main function
+# 
+if __name__ == "__main__":
+    
+    if len(sys.argv) != 4:
+        print("usage: {:s} <Pythia8.xml> <Nuclei.xml> <ClassNames.xml>".format(sys.argv[0]), file=sys.stderr)
+        sys.exit(1)
+        
+    print("\n       pdxml_reader.py: automatically produce particle properties from input files\n")
+    
+    names = class_names(sys.argv[3])
+    particle_db = OrderedDict()
+    read_pythia_db(sys.argv[1], particle_db, names)
+    read_nuclei_db(sys.argv[2], particle_db, names)
+    
+    with open("GeneratedParticleProperties.inc", "w") as f:
+        print(inc_start(), file=f)
+        print(gen_internal_enum(particle_db), file=f)
+        print(gen_pdg_enum(particle_db), file=f)
+        print(detail_start(), file=f)
+        print(gen_properties(particle_db), file=f)
+        print(gen_conversion_PDG_ngc(particle_db), file=f)
+        print(detail_end(), file=f) 
+        print(gen_classes(particle_db), file=f)
+        print(inc_end(), file=f) 
+    
+    with open("particle_db.pkl", "wb") as f:
+        serialize_particle_db(particle_db, f)
+    
diff --git a/corsika/framework/geometry/BaseVector.hpp b/corsika/framework/geometry/BaseVector.hpp
new file mode 100644
index 000000000..97becb2d5
--- /dev/null
+++ b/corsika/framework/geometry/BaseVector.hpp
@@ -0,0 +1,49 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/CoordinateSystem.hpp>
+#include <corsika/framework/geometry/QuantityVector.hpp>
+
+namespace corsika {
+
+	/*!
+	 * Common base class for Vector and Point. Currently it does basically nothing.
+	 */
+	/*
+	 * FIXME Many potential issues:
+	 * 1. does this class really need to be templated ?
+	 * 2. copy constructor, assignment operator not implemented
+	 * 3. this member pointer is quite scary...
+	 */
+	template <typename dim>
+	class BaseVector {
+
+	public:
+
+	/*
+	 * FIXME Why to copy pQVector twice?
+	 */
+	BaseVector(CoordinateSystem const& pCS, QuantityVector<dim> pQVector):
+		qVector(pQVector),
+		cs(&pCS)
+	{}
+
+	  auto const& GetCoordinateSystem() const;
+
+
+	protected:
+		QuantityVector<dim> qVector;
+		CoordinateSystem const* cs;
+
+	};
+
+} // namespace corsika
+
+#include <corsika/detail/framework/geometry/BaseVector.inl>
diff --git a/corsika/framework/geometry/CoordinateSystem.hpp b/corsika/framework/geometry/CoordinateSystem.hpp
new file mode 100644
index 000000000..3b155fc4a
--- /dev/null
+++ b/corsika/framework/geometry/CoordinateSystem.hpp
@@ -0,0 +1,90 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/QuantityVector.hpp>
+#include <corsika/framework/utility/sgn.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <Eigen/Dense>
+#include <stdexcept>
+
+
+/*
+ * FIXME Review this global typedef.
+ */
+typedef Eigen::Transform<double, 3, Eigen::Affine> EigenTransform;
+typedef Eigen::Translation<double, 3> EigenTranslation;
+
+namespace corsika {
+
+  class RootCoordinateSystem;
+
+
+  template <typename T>
+  class Vector;
+
+  /*
+   * FIXME this statement should be scoped.
+   */
+  using corsika::units::si::length_d;
+
+  class CoordinateSystem
+  {
+
+    CoordinateSystem const* reference = nullptr;
+    EigenTransform transf;
+
+    CoordinateSystem(CoordinateSystem const& reference, EigenTransform const& transf):
+    	reference(&reference),
+		transf(transf)
+    {}
+
+    CoordinateSystem()
+        : // for creating the root CS
+        transf(EigenTransform::Identity()) {}
+
+  public:
+
+    //FIXME missing test for self assignment
+    inline CoordinateSystem& operator=(const CoordinateSystem& pCS);
+
+    inline CoordinateSystem translate(QuantityVector<length_d> vector) const;
+
+    /**
+     * creates a new CS in which vVec points in direction of the new z-axis
+     */
+    template <typename TDim>
+    auto RotateToZ(Vector<TDim> vVec) const;
+
+    template <typename TDim>
+    auto rotate(QuantityVector<TDim> axis, double angle) const ;
+
+    template <typename TDim>
+    auto translateAndRotate(QuantityVector<phys::units::length_d> translation,
+                            QuantityVector<TDim> axis, double angle);
+
+    inline CoordinateSystem const* GetReference() const;
+
+    inline const EigenTransform& GetTransform() const;
+
+  protected:
+
+    static CoordinateSystem CreateCS() { return CoordinateSystem(); }
+
+    friend corsika::RootCoordinateSystem; /// this is the only class that can
+                                                    /// create ONE unique root CS
+  };
+
+
+  EigenTransform getTransformation(CoordinateSystem const& c1, CoordinateSystem const& c2);
+  
+} // namespace corsika
+
+#include <corsika/detail/framework/geometry/CoordinateSystem.inl>
diff --git a/corsika/framework/geometry/FourVector.hpp b/corsika/framework/geometry/FourVector.hpp
new file mode 100644
index 000000000..2dcde2131
--- /dev/null
+++ b/corsika/framework/geometry/FourVector.hpp
@@ -0,0 +1,207 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <iostream>
+#include <type_traits>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+
+namespace corsika {
+
+  /**
+     FourVector supports "full" units, e.g. E in [GeV/c] and p in [GeV],
+     or also t in [s] and r in [m], etc.
+
+     However, for HEP applications it is also possible to use E and p
+     both in [GeV].
+
+     The FourVector can return NormSqr and Norm, whereas Norm is
+     sqrt(abs(NormSqr)). The physical units are always calculated and
+     returned properly.
+
+     FourVector can also return if it is TimeLike, SpaceLike or PhotonLike.
+
+     When a FourVector is initialized with a lvalue reference, this is
+     also used for the internal storage, which should lead to complete
+     disappearance of the FourVector class during optimization.
+   */
+
+  template <typename TimeType, typename SpaceVecType>
+  class FourVector
+  {
+
+  public:
+
+    using SpaceType = typename std::decay<SpaceVecType>::type::Quantity;
+
+    //! check the types and the physical units here:
+    static_assert(
+        std::is_same<typename std::decay<TimeType>::type, SpaceType>::value ||
+            std::is_same<typename std::decay<TimeType>::type,
+                         decltype(std::declval<SpaceType>() / corsika::units::si::meter *
+                                  corsika::units::si::second)>::value,
+        "Units of time-like and space-like coordinates must either be idential "
+        "(e.g. GeV) or [E/c]=[p]");
+
+  public:
+
+    FourVector() = default;
+
+    FourVector(const TimeType& eT, const SpaceVecType& eS):
+    	fTimeLike(eT),
+		fSpaceLike(eS)
+    {}
+
+    /*
+     * FIXME: These Getters are mis-leading and does not favor
+     * locality. Adhere to Getter/Setter
+     */
+    /**
+     * @brief
+     *
+     * @return fTimeLike
+     */
+    TimeType GetTimeLikeComponent() const ;
+
+    /**
+     * @brief
+     *
+     * @return fSpaceLike
+     */
+    SpaceVecType& GetSpaceLikeComponents() ;
+
+    /**
+     * @brief
+     *
+     * @return fSpaceLike;
+     */
+    const SpaceVecType& GetSpaceLikeComponents() const ;
+
+    /**
+     * @brief
+     *
+     * @return
+     */
+    auto GetNormSqr() const;
+
+    /**
+     * @brief
+     *
+     * @return
+     */
+    SpaceType GetNorm() const;
+
+
+    /*
+     * FIXME: a better alternative would be to define an enumeration
+     * enum { SpaceLike =-1, TimeLike, LightLike } V4R_Category;
+     * and a method called  V4R_Category GetCategory() const;
+     */
+    /**
+     * @brief
+     *
+     * @return
+     */
+    bool IsTimelike() const;
+
+    /**
+     * @brief
+     *
+     * @return
+     */
+    bool IsSpacelike() const;
+
+
+    FourVector& operator+=(const FourVector& b);
+
+    FourVector& operator-=(const FourVector& b);
+
+    FourVector& operator*=(const double b);
+
+    FourVector& operator/=(const double b);
+
+    FourVector& operator/(const double b);
+
+    /**
+       Note that the product between two 4-vectors assumes that you use
+       the same "c" convention for both. Only the LHS vector is checked
+       for this. You cannot mix different conventions due to
+       unit-checking.
+     */
+    SpaceType operator*(const FourVector& b) ;
+
+
+  protected:
+
+    //! the data members
+    TimeType fTimeLike;
+    SpaceVecType fSpaceLike;
+
+    //! the friends: math operators
+    template <typename T, typename U>
+    friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type>
+    operator+(const FourVector<T, U>&, const FourVector<T, U>&);
+
+    template <typename T, typename U>
+    friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type>
+    operator-(const FourVector<T, U>&, const FourVector<T, U>&);
+
+    template <typename T, typename U>
+    friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type>
+    operator*(const FourVector<T, U>&, const double);
+
+    template <typename T, typename U>
+    friend FourVector<typename std::decay<T>::type, typename std::decay<U>::type>
+    operator/(const FourVector<T, U>&, const double);
+
+    private:
+    /**
+       This function is automatically compiled to use of ignore the
+       extra factor of "c" for the time-like quantity
+     */
+    auto GetTimeSquared() const ;
+
+  };
+
+
+
+  /**
+      The math operator+
+   */
+  template <typename TimeType, typename SpaceVecType>
+  inline FourVector<typename std::decay<TimeType>::type, typename std::decay<SpaceVecType>::type>
+  operator+(const FourVector<TimeType, SpaceVecType>& a,  const FourVector<TimeType, SpaceVecType>& b) ;
+
+  /**
+     The math operator-
+  */
+  template <typename TimeType, typename SpaceVecType>
+  inline FourVector<typename std::decay<TimeType>::type, typename std::decay<SpaceVecType>::type>
+  operator-(const FourVector<TimeType, SpaceVecType>& a, const FourVector<TimeType, SpaceVecType>& b) ;
+
+  /**
+     The math operator*
+     FIXME: Add overload to deal with multiplication by a scalar and 3-vectors
+  */
+  template <typename TimeType, typename SpaceVecType>
+  inline FourVector<typename std::decay<TimeType>::type, typename std::decay<SpaceVecType>::type>
+  operator*(const FourVector<TimeType, SpaceVecType>& a, const double b) ;
+
+  /**
+      The math operator/
+   */
+  template <typename TimeType, typename SpaceVecType>
+  inline FourVector<typename std::decay<TimeType>::type,typename std::decay<SpaceVecType>::type>
+  operator/(const FourVector<TimeType, SpaceVecType>& a, const double b) ;
+
+
+} // namespace corsika
+
+#include <corsika/detail/framework/geometry/FourVector.inl>
diff --git a/corsika/framework/geometry/Helix.hpp b/corsika/framework/geometry/Helix.hpp
new file mode 100644
index 000000000..09f8672f9
--- /dev/null
+++ b/corsika/framework/geometry/Helix.hpp
@@ -0,0 +1,66 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <cmath>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+
+namespace corsika {
+  /*!
+   * A Helix is defined by the cyclotron frequency \f$ \omega_c \f$, the initial
+   * Point r0 and
+   * the velocity vectors \f$ \vec{v}_{\parallel} \f$ and \f$ \vec{v}_{\perp} \f$
+   * denoting the projections of the initial velocity \f$ \vec{v}_0 \f$ parallel
+   * and perpendicular to the axis \f$ \vec{B} \f$, respectively, i.e.
+   * \f{align*}{
+        \vec{v}_{\parallel} &= \frac{\vec{v}_0 \cdot \vec{B}}{\vec{B}^2} \vec{B} \\
+        \vec{v}_{\perp} &= \vec{v}_0 - \vec{v}_{\parallel}
+     \f}
+   */
+
+  class Helix {
+
+    using VelocityVec = Vector<units::si::SpeedType::dimension_type>;
+
+    Point const r0;
+    units::si::FrequencyType const omegaC;
+    VelocityVec const vPar;
+    VelocityVec const vPerp, uPerp;
+
+    corsika::units::si::LengthType const radius;
+
+  public:
+
+    Helix(Point const& pR0, units::si::FrequencyType pOmegaC,
+          VelocityVec const& pvPar, VelocityVec const& pvPerp)
+        : r0(pR0)
+        , omegaC(pOmegaC)
+        , vPar(pvPar)
+        , vPerp(pvPerp)
+        , uPerp(vPerp.cross(vPar.normalized()))
+        , radius(pvPar.norm() / abs(pOmegaC)) {}
+
+    inline Point GetPosition(units::si::TimeType t) const ;
+
+    inline Point PositionFromArclength(units::si::LengthType l) const ;
+
+    inline units::si::LengthType GetRadius() const ;
+
+    inline units::si::LengthType
+	ArcLength(units::si::TimeType t1, units::si::TimeType t2) const ;
+
+    inline units::si::TimeType TimeFromArclength(units::si::LengthType l) const ;
+
+  };
+
+} // namespace corsika
+
+#include <corsika/detail/framework/geometry/Helix.inl>
diff --git a/corsika/framework/geometry/Line.hpp b/corsika/framework/geometry/Line.hpp
new file mode 100644
index 000000000..f25a3d9e3
--- /dev/null
+++ b/corsika/framework/geometry/Line.hpp
@@ -0,0 +1,56 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+
+namespace corsika {
+
+  /**
+   * \class Line
+   *
+   * A Line describes a movement in three dimensional space. It
+   * consists of a Point `$\vec{p_0}$` and and a speed-Vector
+   * `$\vec{v}$`, so that it can return GetPosition as
+   * `$\vec{p_0}*\vec{v}*t$` for any value of time `$t$`.
+   *
+   **/
+
+  class Line {
+
+    using VelocityVec = Vector<units::si::SpeedType::dimension_type>;
+
+    Point const r0;
+    VelocityVec const v0;
+
+  public:
+
+    Line(Point const& pR0, VelocityVec const& pV0)
+        : r0(pR0)
+        , v0(pV0) {}
+
+    inline Point GetPosition(units::si::TimeType t) const ;
+
+    inline Point PositionFromArclength(units::si::LengthType l) const ;
+
+    inline units::si::LengthType ArcLength(units::si::TimeType t1, units::si::TimeType t2) const ;
+
+    inline units::si::TimeType TimeFromArclength( units::si::LengthType t) const ;
+
+    inline const Point& GetR0() const ;
+
+    inline const VelocityVec& GetV0() const ;
+
+  };
+
+} // namespace corsika
+
+#include <corsika/detail/framework/geometry/Line.inl>
diff --git a/Framework/Geometry/Plane.h b/corsika/framework/geometry/Plane.hpp
similarity index 55%
rename from Framework/Geometry/Plane.h
rename to corsika/framework/geometry/Plane.hpp
index 9a3b04ff4..6a0d04f4c 100644
--- a/Framework/Geometry/Plane.h
+++ b/corsika/framework/geometry/Plane.hpp
@@ -8,11 +8,12 @@
 
 #pragma once
 
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+namespace corsika {
 
-namespace corsika::geometry {
   class Plane {
 
     using DimLessVec = Vector<corsika::units::si::dimensionless_d>;
@@ -21,20 +22,23 @@ namespace corsika::geometry {
     DimLessVec const fNormal;
 
   public:
+
     Plane(Point const& vCenter, DimLessVec const& vNormal)
         : fCenter(vCenter)
         , fNormal(vNormal.normalized()) {}
 
-    bool IsAbove(Point const& vP) const {
-      return fNormal.dot(vP - fCenter) > corsika::units::si::LengthType::zero();
-    }
+    bool IsAbove(Point const& vP) const ;
+
+    units::si::LengthType DistanceTo(geometry::Point const& vP) const ;
+
 
-    units::si::LengthType DistanceTo(geometry::Point const& vP) const {
-      return (fNormal * (vP - fCenter).dot(fNormal)).norm();
-    }
+    Point const& GetCenter() const ;
+
+    DimLessVec const& GetNormal() const ;
 
-    Point const& GetCenter() const { return fCenter; }
-    DimLessVec const& GetNormal() const { return fNormal; }
   };
 
-} // namespace corsika::geometry
+} // namespace corsika
+
+#include <corsika/detail/framework/geometry/Plane.inl>
+
diff --git a/corsika/framework/geometry/Point.hpp b/corsika/framework/geometry/Point.hpp
new file mode 100644
index 000000000..22b9f7558
--- /dev/null
+++ b/corsika/framework/geometry/Point.hpp
@@ -0,0 +1,66 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/QuantityVector.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/BaseVector.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+
+namespace corsika {
+
+  //FIXME: remove aliasing here
+  using corsika::units::si::length_d;
+  using corsika::units::si::LengthType;
+
+  /*!
+   * A Point represents a point in position space. It is defined by its
+   * coordinates with respect to some CoordinateSystem.
+   */
+  class Point : public BaseVector<length_d> {
+
+  public:
+
+    Point(CoordinateSystem const& pCS, QuantityVector<length_d> pQVector)
+        : BaseVector<length_d>(pCS, pQVector) {}
+
+    Point(CoordinateSystem const& cs, LengthType x, LengthType y, LengthType z)
+        : BaseVector<length_d>(cs, {x, y, z}) {}
+
+    // TODO: this should be private or protected, we don NOT want to expose numbers
+    // without reference to outside:
+    inline auto GetCoordinates() const ;
+
+    inline auto GetX() const ;
+
+    inline auto GetY() const ;
+
+    inline auto GetZ() const ;
+
+    /// this always returns a QuantityVector as triple
+    inline auto GetCoordinates(CoordinateSystem const& pCS) const ;
+
+    /*!
+     * transforms the Point into another CoordinateSystem by changing its
+     * coordinates interally
+     */
+    inline void rebase(CoordinateSystem const& pCS) ;
+
+    inline Point operator+(Vector<length_d> const& pVec) const ;
+
+    /*!
+     * returns the distance Vector between two points
+     */
+    inline Vector<length_d> operator-(Point const& pB) const ;
+
+  };
+
+} // namespace corsika
+
+#include <corsika/detail/framework/geometry/Point.inl>
diff --git a/corsika/framework/geometry/QuantityVector.hpp b/corsika/framework/geometry/QuantityVector.hpp
new file mode 100644
index 000000000..e3195c34e
--- /dev/null
+++ b/corsika/framework/geometry/QuantityVector.hpp
@@ -0,0 +1,100 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <Eigen/Dense>
+
+#include <iostream>
+#include <utility>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+namespace corsika {
+
+  /*!
+   * A QuantityVector is a three-component container based on Eigen::Vector3d
+   * with a phys::units::si::dimension. Arithmethic operators are defined that
+   * propagate the dimensions by dimensional analysis.
+   */
+
+  template <typename dim>
+  class QuantityVector {
+  public:
+    using Quantity = phys::units::quantity<dim, double>; //< the phys::units::quantity
+                                                         // corresponding to the dimension
+
+  public:
+    Eigen::Vector3d eVector; //!< the actual container where the raw numbers are stored
+
+    typedef dim dimension; //!< should be a phys::units::dimension
+
+    QuantityVector(Quantity a, Quantity b, Quantity c)
+        : eVector{a.magnitude(), b.magnitude(), c.magnitude()} {}
+
+    QuantityVector(double a, double b, double c)
+        : eVector{a, b, c} {
+      static_assert(
+          std::is_same_v<dim, phys::units::dimensionless_d>,
+          "initialization of dimensionful QuantityVector with pure numbers not allowed!");
+    }
+
+    QuantityVector(Eigen::Vector3d pBareVector)
+        : eVector(pBareVector) {}
+
+    auto operator[](size_t index) const ;
+
+    auto GetX() const ;
+
+    auto GetY() const ;
+
+    auto GetZ() const ;
+
+    auto norm() const ;
+
+    auto squaredNorm() const ;
+
+    auto operator+(QuantityVector<dim> const& pQVec) const ;
+
+    auto operator-(QuantityVector<dim> const& pQVec) const ;
+
+    template <typename ScalarDim>
+    auto operator*(phys::units::quantity<ScalarDim, double> const p) const ;
+
+    template <typename ScalarDim>
+    auto operator/(phys::units::quantity<ScalarDim, double> const p) const ;
+
+    auto operator*(double const p) const ;
+
+    auto operator/(double const p) const ;
+
+    auto& operator/=(double const p) ;
+
+    auto& operator*=(double const p) ;
+
+    auto& operator+=(QuantityVector<dim> const& pQVec) ;
+
+    auto& operator-=(QuantityVector<dim> const& pQVec) ;
+
+    auto& operator-() const ;
+
+    auto normalized() const ;
+
+    auto operator==(QuantityVector<dim> const& p) const ;
+
+  };
+
+  /*
+   * FIXME free function operators not implemented.
+   */
+
+  template <typename dim>
+  auto& operator<<(std::ostream& os, corsika::QuantityVector<dim> qv);
+
+} // namespace corsika
+
+#include <corsika/detail/framework/geometry/QuantityVector.inl>
diff --git a/Framework/Geometry/RootCoordinateSystem.h b/corsika/framework/geometry/RootCoordinateSystem.hpp
similarity index 50%
rename from Framework/Geometry/RootCoordinateSystem.h
rename to corsika/framework/geometry/RootCoordinateSystem.hpp
index a2208fd71..f88c7a270 100644
--- a/Framework/Geometry/RootCoordinateSystem.h
+++ b/corsika/framework/geometry/RootCoordinateSystem.hpp
@@ -8,9 +8,8 @@
 
 #pragma once
 
-#include <corsika/utl/Singleton.h>
-
-#include <corsika/geometry/CoordinateSystem.h>
+#include <corsika/framework/utility/Singleton.hpp>
+#include <corsika/framework/geometry/CoordinateSystem.hpp>
 
 /*!
  * This is the only way to get a root-coordinate system, and it is a
@@ -18,23 +17,28 @@
  * RootCoordinateSystem
  */
 
-namespace corsika::geometry {
+namespace corsika {
 
-  class RootCoordinateSystem : public corsika::utl::Singleton<RootCoordinateSystem> {
+  class RootCoordinateSystem : public corsika::Singleton<RootCoordinateSystem> {
 
-    friend class corsika::utl::Singleton<RootCoordinateSystem>;
+    friend class corsika::Singleton<RootCoordinateSystem>;
 
   protected:
     RootCoordinateSystem() {}
 
   public:
-    corsika::geometry::CoordinateSystem& GetRootCoordinateSystem() { return fRootCS; }
-    const corsika::geometry::CoordinateSystem& GetRootCoordinateSystem() const {
+    corsika::CoordinateSystem& GetRootCoordinateSystem()
+    {
+    	return fRootCS;
+    }
+    const corsika::CoordinateSystem& GetRootCoordinateSystem() const
+    {
       return fRootCS;
     }
 
   private:
-    corsika::geometry::CoordinateSystem fRootCS; // THIS IS IT
+    corsika::CoordinateSystem fRootCS; // THIS IS IT
   };
 
-} // namespace corsika::geometry
+} // namespace corsika
+
diff --git a/corsika/framework/geometry/Sphere.hpp b/corsika/framework/geometry/Sphere.hpp
new file mode 100644
index 000000000..edbeae194
--- /dev/null
+++ b/corsika/framework/geometry/Sphere.hpp
@@ -0,0 +1,36 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Volume.hpp>
+
+namespace corsika {
+
+  class Sphere : public Volume {
+    Point const fCenter;
+    units::si::LengthType const fRadius;
+
+  public:
+    Sphere(Point const& pCenter, units::si::LengthType const pRadius)
+        : fCenter(pCenter)
+        , fRadius(pRadius) {}
+
+    //! returns true if the Point p is within the sphere
+    inline bool Contains(Point const& p) const override ;
+    
+    inline const Point& GetCenter() const;
+    
+    inline units::si::LengthType GetRadius() const;
+  };
+
+} // namespace corsika
+
+#include <corsika/detail/framework/geometry/Sphere.inl>
diff --git a/corsika/framework/geometry/Trajectory.hpp b/corsika/framework/geometry/Trajectory.hpp
new file mode 100644
index 000000000..89a9490ad
--- /dev/null
+++ b/corsika/framework/geometry/Trajectory.hpp
@@ -0,0 +1,111 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+
+namespace corsika {
+
+  /**
+   * \class LineTrajectory
+   *
+   * A Trajectory is a description of a momvement of an object in
+   * three-dimensional space that describes the trajectory (connection
+   * between two Points in space), as well as the direction of motion
+   * at any given point.
+   *
+   * A Trajectory has a start `0` and an end `1`, where
+   * e.g. GetPosition(0) returns the start point and GetDirection(1)
+   * the direction of motion at the end. Values outside 0...1 are not
+   * defined.
+   *
+   * A Trajectory has a length in [m], GetLength, a duration in [s], GetDuration.
+   *
+   * Note: so far it is assumed that the speed (d|vec{r}|/dt) between
+   * start and end does not change and is constant for the entire
+   * Trajectory.
+   *
+   **/
+
+  class LineTrajectory {
+
+    using VelocityVec = Vector<corsika::units::si::SpeedType::dimension_type>;
+
+  public:
+    LineTrajectory() = delete;
+    LineTrajectory(const LineTrajectory&) = default;
+    LineTrajectory(LineTrajectory&&) = default;
+    LineTrajectory& operator=(const LineTrajectory&) = delete;
+
+    /**
+     * \param theLine The geometric \sa Line object that represents a straight-line
+     * connection 
+     *
+     * \param timeLength The time duration to traverse the straight trajectory
+     * in units of \sa TimeType
+     */
+    LineTrajectory(Line const& theLine, corsika::units::si::TimeType timeLength)
+        : line_(theLine)
+        , timeLength_(timeLength)
+        , timeStep_(timeLength)
+        , initialVelocity_(theLine.GetVelocity(corsika::units::si::TimeType::zero()))
+        , finalVelocity_(theLine.GetVelocity(timeLength)) {}
+
+    /**
+     * \param theLine The geometric \sa Line object that represents a straight-line
+     * connection 
+     * 
+     * \param timeLength The time duration to traverse the straight trajectory
+     * in units of \sa TimeType 
+     * 
+     * \param timeStep Time duration to folow eventually curved
+     * trajectory in units of \sa TimesType 
+     * 
+     * \param initialV Initial velocity vector at
+     * start of trajectory \param finalV Final velocity vector at start of trajectory
+     */
+    LineTrajectory(
+        Line const& theLine,
+        corsika::units::si::TimeType timeLength, // length of theLine (straight)
+        corsika::units::si::TimeType timeStep,   // length of bend step (curved)
+        const VelocityVec& initialV, const VelocityVec& finalV)
+        : line_(theLine)
+        , timeLength_(timeLength)
+        , timeStep_(timeStep)
+        , initialVelocity_(initialV)
+        , finalVelocity_(finalV) {}
+
+    const Line& GetLine() const { return line_; }
+    Point GetPosition(double u) const { return line_.GetPosition(timeLength_ * u); }
+    VelocityVec GetVelocity(double u) const {
+      return initialVelocity_ * (1 - u) + finalVelocity_ * u;
+    }
+    Vector<corsika::units::si::dimensionless_d> GetDirection(double u) const {
+      return GetVelocity(u).normalized();
+    }
+
+    Point GetPosition(double u) const ;
+
+    corsika::units::si::TimeType GetDuration() const ;
+
+    corsika::units::si::LengthType GetLength() const ;
+
+    corsika::units::si::LengthType GetDistance(corsika::units::si::TimeType t) const ;
+
+    void LimitEndTo(corsika::units::si::LengthType limit) ;
+
+    auto NormalizedDirection() const ;
+
+  };
+
+} // namespace corsika
+
+#include <corsika/detail/framework/geometry/Trajectory.inl>
diff --git a/corsika/framework/geometry/Vector.hpp b/corsika/framework/geometry/Vector.hpp
new file mode 100644
index 000000000..d117e3fcc
--- /dev/null
+++ b/corsika/framework/geometry/Vector.hpp
@@ -0,0 +1,117 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/BaseVector.hpp>
+#include <corsika/framework/geometry/QuantityVector.hpp>
+
+/*!
+ * A Vector represents a 3-vector in Euclidean space. It is defined by components
+ * given in a specific CoordinateSystem. It has a physical dimension ("unit")
+ * as part of its type, so you cannot mix up e.g. electric with magnetic fields
+ * (but you could calculate their cross-product to get an energy flux vector).
+ *
+ * When transforming coordinate systems, a Vector is subject to the rotational
+ * part only and invariant under translations.
+ */
+
+namespace corsika {
+
+  template <typename dim>
+  class Vector : public BaseVector<dim> {
+  public:
+    using Quantity = phys::units::quantity<dim, double>;
+
+  public:
+    Vector(CoordinateSystem const& pCS, QuantityVector<dim> pQVector)
+        : BaseVector<dim>(pCS, pQVector) {}
+
+    Vector(CoordinateSystem const& cs, Quantity x, Quantity y, Quantity z)
+        : BaseVector<dim>(cs, QuantityVector<dim>(x, y, z)) {}
+
+    /*!
+     * returns a QuantityVector with the components given in the "home"
+     * CoordinateSystem of the Vector
+     */
+    auto GetComponents() const;
+
+    /*!
+     * returns a QuantityVector with the components given in an arbitrary
+     * CoordinateSystem
+     */
+    auto GetComponents(CoordinateSystem const& pCS) const;
+
+    /*!
+     * transforms the Vector into another CoordinateSystem by changing
+     * its components internally
+     */
+    void rebase(CoordinateSystem const& pCS);
+
+    /*!
+     * returns the norm/length of the Vector. Before using this method,
+     * think about whether squaredNorm() might be cheaper for your computation.
+     */
+    auto norm() const;
+
+    auto GetNorm() const ;
+
+    /*!
+     * returns the squared norm of the Vector. Before using this method,
+     * think about whether norm() might be cheaper for your computation.
+     */
+    auto squaredNorm() const ;
+
+    auto GetSquaredNorm() const ;
+    /*!
+     * returns a Vector \f$ \vec{v}_{\parallel} \f$ which is the parallel projection
+     * of this vector \f$ \vec{v}_1 \f$ along another Vector \f$ \vec{v}_2 \f$ given by
+     *   \f[
+     *     \vec{v}_{\parallel} = \frac{\vec{v}_1 \cdot \vec{v}_2}{\vec{v}_2^2} \vec{v}_2
+     *   \f]
+     */
+    template <typename dim2>
+    auto parallelProjectionOnto(Vector<dim2> const& pVec, CoordinateSystem const& pCS) const ;
+    template <typename dim2>
+    auto parallelProjectionOnto(Vector<dim2> const& pVec) const ;
+
+    auto operator+(Vector<dim> const& pVec) const ;
+
+    auto operator-(Vector<dim> const& pVec) const ;
+
+    auto& operator*=(double const p) ;
+
+    template <typename ScalarDim>
+    auto operator*(phys::units::quantity<ScalarDim, double> const p) const ;
+    template <typename ScalarDim>
+    auto operator/(phys::units::quantity<ScalarDim, double> const p) const ;
+
+    auto operator*(double const p) const ;
+
+    auto operator/(double const p) const ;
+
+    auto& operator+=(Vector<dim> const& pVec) ;
+
+    auto& operator-=(Vector<dim> const& pVec);
+
+    auto& operator-() const ;
+
+    auto normalized() const ;
+
+    template <typename dim2>
+    auto cross(Vector<dim2> pV) const ;
+
+    template <typename dim2>
+    auto dot(Vector<dim2> pV) const ;
+
+  };
+
+} // namespace corsika
+
+#include <corsika/detail/framework/geometry/Vector.inl>
diff --git a/Framework/Geometry/Volume.h b/corsika/framework/geometry/Volume.hpp
similarity index 81%
rename from Framework/Geometry/Volume.h
rename to corsika/framework/geometry/Volume.hpp
index c1dfbd313..d566e45c1 100644
--- a/Framework/Geometry/Volume.h
+++ b/corsika/framework/geometry/Volume.hpp
@@ -8,9 +8,9 @@
 
 #pragma once
 
-#include <corsika/geometry/Point.h>
+#include <corsika/framework/geometry/Point.hpp>
 
-namespace corsika::geometry {
+namespace corsika {
 
   class Volume {
 
@@ -21,4 +21,5 @@ namespace corsika::geometry {
     virtual ~Volume() = default;
   };
 
-} // namespace corsika::geometry
+} // namespace corsika
+
diff --git a/Framework/Geometry/CoordinateSystem.cc b/corsika/framework/geometry/detail/CoordinateSystem.cc
similarity index 100%
rename from Framework/Geometry/CoordinateSystem.cc
rename to corsika/framework/geometry/detail/CoordinateSystem.cc
diff --git a/corsika/framework/logging/BufferedSink.h b/corsika/framework/logging/BufferedSink.h
new file mode 100644
index 000000000..5b2b3a62a
--- /dev/null
+++ b/corsika/framework/logging/BufferedSink.h
@@ -0,0 +1,80 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#ifndef _include_BufferedSink_h_
+#define _include_BufferedSink_h_
+
+namespace corsika::logging {
+
+  namespace sink {
+
+    /**
+       Output buffer template. NoBuffer does nothingk.
+    */
+    /*
+    struct NoBuffer {
+      inline bool Test(const std::string&) const { return false; }
+      inline std::string GetString() const { return std::string(""); }
+      inline void Clear() {}
+      inline void Add(const std::string&) {}
+    };
+    */
+    /**
+       Output buffer template. StdBuffer records fSize characters in
+       local memeory before passing it on to further output stages.
+    */
+
+    struct StdBuffer {
+      StdBuffer(const int size)
+          : fSize(size) {}
+      inline bool Test(const std::string& s) {
+        return int(fBuffer.tellp()) + s.length() < fSize;
+      }
+      inline std::string GetString() const { return fBuffer.str(); }
+      inline void Clear() { fBuffer.str(""); }
+      inline void Add(const std::string& s) { fBuffer << s; }
+
+    private:
+      unsigned int fSize;
+      std::ostringstream fBuffer;
+    };
+
+    /**
+       Definition of Sink for log output.
+    */
+    template <typename TStream, typename TBuffer = StdBuffer>
+    class BufferedSink {
+    public:
+      BufferedSink(TStream& out, TBuffer buffer = {})
+          : fOutput(out)
+          , fBuffer(std::move(buffer)) {}
+      void operator<<(const std::string& msg) {
+        if (!fBuffer.Test(msg)) {
+          fOutput << fBuffer.GetString();
+          fBuffer.Clear();
+        }
+        if (!fBuffer.Test(msg))
+          fOutput << msg;
+        else
+          fBuffer.Add(msg);
+      }
+      void Close() { fOutput << fBuffer.GetString(); }
+
+    private:
+      TStream& fOutput;
+      TBuffer fBuffer;
+    };
+
+    typedef BufferedSink<std::ostream, StdBuffer> BufferedSinkStream;
+
+  } // namespace sink
+} // namespace corsika::logging
+
+#endif
diff --git a/corsika/framework/logging/Logger.h b/corsika/framework/logging/Logger.h
new file mode 100644
index 000000000..15ebe3c54
--- /dev/null
+++ b/corsika/framework/logging/Logger.h
@@ -0,0 +1,90 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+/**
+   @File Logger.h
+
+   Everything around logfile generation and text output.
+ */
+
+#ifndef _include_logger_h_
+#define _include_logger_h_
+
+#include <iosfwd>
+#include <sstream>
+#include <string>
+#include <typeinfo>
+
+#include <boost/format.hpp>
+
+#include <corsika/logging/BufferedSink.h>
+#include <corsika/logging/MessageOff.h>
+#include <corsika/logging/MessageOn.h>
+#include <corsika/logging/NoSink.h>
+#include <corsika/logging/Sink.h>
+
+namespace corsika::logging {
+
+  /**
+     @class Logger
+
+     Defines one stream to accept messages, and to wrote those into
+     TSink.  The helper class MessageOn will convert input at
+     compile-time into message strings. The helper class MessageOff,
+     will just do nothing and will be optimized away at compile time.
+  */
+  template <typename MSG = MessageOn, typename TSink = sink::NoSink>
+  class Logger : private MSG {
+
+    using MSG::Message;
+
+  public:
+    // Logger() : fName("") {}
+    Logger(const std::string color, const std::string name, TSink& sink)
+        : fSink(sink)
+        , fName(color + "[" + name + "]\033[39m ") {}
+    ~Logger() { fSink.Close(); }
+    // Logger(const Logger&) = delete;
+
+    /**
+       Function to add string-concatenation of all inputs to output
+       sink.
+     */
+    template <typename... Strings>
+    void Log(const Strings&... inputs) {
+      fSink << MSG::Message(inputs...);
+    }
+
+    const std::string& GetName() const { return fName; }
+
+  private:
+    TSink& fSink;
+    std::string fName;
+  };
+
+} // namespace corsika::logging
+
+/**
+ * @def LOG(...)
+ *
+ * This is the main interface to the logging facilities. If Logger
+ * object are defined (e.g. log1) use as
+ * @example LOG(log1, "var1=", variable1int, "var2=", variabl2double)
+ * for arbitrary long sequence
+ * of arguments. This may also include boost::format objects the
+ * output is concatenated, if log1 is switched off at compile time,
+ * the whole LOG command is optimized away by the compiler.
+ */
+
+#define LOG(__LOGGER, ...)                                                           \
+  __LOGGER.Log(__LOGGER.GetName(), __FILE__, ":", __LINE__, " (", __func__, ") -> ", \
+               __VA_ARGS__);
+
+#endif
diff --git a/corsika/framework/logging/MessageOff.h b/corsika/framework/logging/MessageOff.h
new file mode 100644
index 000000000..691824be0
--- /dev/null
+++ b/corsika/framework/logging/MessageOff.h
@@ -0,0 +1,30 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#ifndef _include_MessageOff_h_
+#define _include_MessageOff_h_
+
+namespace corsika::logging {
+
+  /**
+     Helper class to ignore all arguments to MessagesOn::Message and
+     always return empty string "".
+   */
+  class MessageOff {
+  protected:
+    template <typename First, typename... Strings>
+    std::string Message(const First&, const Strings&...) {
+      return "";
+    }
+  };
+
+} // namespace corsika::logging
+
+#endif
diff --git a/corsika/framework/logging/MessageOn.h b/corsika/framework/logging/MessageOn.h
new file mode 100644
index 000000000..0b013a635
--- /dev/null
+++ b/corsika/framework/logging/MessageOn.h
@@ -0,0 +1,70 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#ifndef _include_MessageOn_h_
+#define _include_MessageOn_h_
+
+namespace corsika::logging {
+
+  /**
+     Helper class to convert all input arguments of MessageOn::Message
+     into string-concatenated version and return this as string.
+  */
+  class MessageOn {
+  protected:
+    std::string Message() { return "\n"; }
+
+    template <typename First, typename... Strings>
+    std::string Message(const First& arg, const Strings&... rest) {
+      std::ostringstream ss;
+      ss << arg << Message(rest...);
+      return ss.str();
+    }
+
+    template <typename... Strings>
+    std::string Message(const int& arg, const Strings&... rest) {
+      return std::to_string(arg) + Message(rest...);
+    }
+
+    template <typename... Strings>
+    std::string Message(const double& arg, const Strings&... rest) {
+      return std::to_string(arg) + Message(rest...);
+    }
+
+    template <typename... Strings>
+    std::string Message(char const* arg, const Strings&... rest) {
+      return std::string(arg) + Message(rest...);
+    }
+
+    template <typename... Strings>
+    std::string Message(const std::string& arg, const Strings&... rest) {
+      return arg + Message(rest...);
+    }
+
+    // ----------------------
+    // boost format
+    template <typename... Strings>
+    std::string Message(const boost::format& fmt, const Strings&... rest) {
+      boost::format FMT(fmt);
+      return bformat(FMT, rest...);
+    }
+
+    template <typename Arg, typename... Strings>
+    std::string bformat(boost::format& fmt, const Arg& arg, const Strings&... rest) {
+      fmt % arg;
+      return bformat(fmt, rest...);
+    }
+
+    std::string bformat(boost::format& fmt) { return fmt.str() + "\n"; }
+  };
+
+} // namespace corsika::logging
+
+#endif
diff --git a/corsika/framework/logging/NoSink.h b/corsika/framework/logging/NoSink.h
new file mode 100644
index 000000000..866d35601
--- /dev/null
+++ b/corsika/framework/logging/NoSink.h
@@ -0,0 +1,26 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#ifndef _include_NoSink_h_
+#define _include_NoSink_h_
+
+namespace corsika::logging {
+
+  namespace sink {
+
+    struct NoSink {
+      inline void operator<<(const std::string&) {}
+      inline void Close() {}
+    };
+
+  } // namespace sink
+} // namespace corsika::logging
+
+#endif
diff --git a/corsika/framework/logging/Sink.h b/corsika/framework/logging/Sink.h
new file mode 100644
index 000000000..28c768d6f
--- /dev/null
+++ b/corsika/framework/logging/Sink.h
@@ -0,0 +1,47 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#ifndef _include_Sink_h_
+#define _include_Sink_h_
+
+namespace corsika::logging {
+
+  /**
+     a sink for the logger must implement the two functions
+     operator<<(const std::string&)
+     and
+     Close()
+
+     See example: NoSink
+   */
+
+  namespace sink {
+
+    /**
+       Definition of Sink for log output.
+    */
+    template <typename TStream>
+    class Sink {
+    public:
+      Sink(TStream& out)
+          : fOutput(out) {}
+      void operator<<(const std::string& msg) { fOutput << msg; }
+      void Close() {}
+
+    private:
+      TStream& fOutput;
+    };
+
+    typedef Sink<std::ostream> SinkStream;
+
+  } // namespace sink
+} // namespace corsika::logging
+
+#endif
diff --git a/Framework/Random/ExponentialDistribution.h b/corsika/framework/random/ExponentialDistribution.hpp
similarity index 69%
rename from Framework/Random/ExponentialDistribution.h
rename to corsika/framework/random/ExponentialDistribution.hpp
index 2431e316e..d0d08be73 100644
--- a/Framework/Random/ExponentialDistribution.h
+++ b/corsika/framework/random/ExponentialDistribution.hpp
@@ -8,10 +8,14 @@
 
 #pragma once
 
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 #include <random>
 
-namespace corsika::random {
+namespace corsika {
+	  //FIXME: This whole facility needs to re-designed.
+	  //It is not parallel friendly neither polymorphic
+	  //and the streaming management is prone to produce
+	  //huge correlation between the streams
 
   template <class TQuantity>
   class ExponentialDistribution {
@@ -30,4 +34,5 @@ namespace corsika::random {
     }
   };
 
-} // namespace corsika::random
+} // namespace corsika
+
diff --git a/Framework/Random/RNGManager.h b/corsika/framework/random/RNGManager.hpp
similarity index 76%
rename from Framework/Random/RNGManager.h
rename to corsika/framework/random/RNGManager.hpp
index 0826642a8..7fc2d327a 100644
--- a/Framework/Random/RNGManager.h
+++ b/corsika/framework/random/RNGManager.hpp
@@ -8,32 +8,34 @@
 
 #pragma once
 
-#include <corsika/utl/Singleton.h>
-
 #include <map>
 #include <random>
 #include <string>
+#include <corsika/framework/utility/Singleton.hpp>
 
 /*!
  * With this class modules can register streams of random numbers.
  */
 
-namespace corsika::random {
+namespace corsika {
+
+  //FIXME: This while facility needs to re-designed.
+  //It is not parallel friendly neither polymorphic
+  //and the streaming management is prone to produce
+  //huge correlation between the streams
 
   using RNG = std::mt19937; //!< the actual RNG type that will be used
 
-  /*!
-   * Manage random number generators.
-   */
-  class RNGManager final : public corsika::utl::Singleton<RNGManager> {
+  class RNGManager : public corsika::Singleton<RNGManager> {
 
-    friend class corsika::utl::Singleton<RNGManager>;
+    friend class corsika::Singleton<RNGManager>;
 
     std::map<std::string, RNG> rngs;
     std::map<std::string, std::seed_seq> seeds;
 
   protected:
-    RNGManager() {}
+
+    RNGManager() {} // why ?
 
   public:
     /*!
@@ -70,4 +72,6 @@ namespace corsika::random {
     void SeedAll(); //!< seed all currently registered streams with "real" randomness
   };
 
-} // namespace corsika::random
+} // namespace corsika
+
+#include <corsika/detail/framework/random/RNGManager.inl>
diff --git a/Framework/Random/UniformRealDistribution.h b/corsika/framework/random/UniformRealDistribution.hpp
similarity index 73%
rename from Framework/Random/UniformRealDistribution.h
rename to corsika/framework/random/UniformRealDistribution.hpp
index 0c63e8542..ce112acc4 100644
--- a/Framework/Random/UniformRealDistribution.h
+++ b/corsika/framework/random/UniformRealDistribution.hpp
@@ -8,9 +8,15 @@
 
 #pragma once
 
+#include <corsika/framework/core/PhysicalUnits.hpp>
 #include <random>
 
-namespace corsika::random {
+namespace corsika {
+
+	  //FIXME: This while facility needs to re-designed.
+	  //It is not parallel friendly neither polymorphic
+	  //and the streaming management is prone to produce
+	  //huge correlation between the streams
 
   template <class TQuantity>
   class UniformRealDistribution {
@@ -33,4 +39,5 @@ namespace corsika::random {
     }
   };
 
-} // namespace corsika::random
+} // namespace corsika
+
diff --git a/Framework/ProcessSequence/BaseProcess.h b/corsika/framework/sequence/BaseProcess.hpp
similarity index 78%
rename from Framework/ProcessSequence/BaseProcess.h
rename to corsika/framework/sequence/BaseProcess.hpp
index c1a4e232e..a17b8faf6 100644
--- a/Framework/ProcessSequence/BaseProcess.h
+++ b/corsika/framework/sequence/BaseProcess.hpp
@@ -8,9 +8,10 @@
 
 #pragma once
 
-#include <corsika/process/ProcessReturn.h> // for convenience
+#include <type_traits>
+#include <corsika/framework/sequence/ProcessReturn.hpp> // for convenience
 
-namespace corsika::process {
+namespace corsika {
 
   class TDerived; // fwd decl
 
@@ -42,4 +43,9 @@ namespace corsika::process {
     using TProcessType = TDerived;
   };
 
-} // namespace corsika::process
+  // overwrite the default trait class, to mark BaseProcess<T> as useful process
+  template <class T>
+  std::true_type is_process_impl(const BaseProcess<T>* impl);
+
+} // namespace corsika
+
diff --git a/Framework/ProcessSequence/BoundaryCrossingProcess.h b/corsika/framework/sequence/BoundaryCrossingProcess.hpp
similarity index 61%
rename from Framework/ProcessSequence/BoundaryCrossingProcess.h
rename to corsika/framework/sequence/BoundaryCrossingProcess.hpp
index 6526648a8..057d156bc 100644
--- a/Framework/ProcessSequence/BoundaryCrossingProcess.h
+++ b/corsika/framework/sequence/BoundaryCrossingProcess.hpp
@@ -8,12 +8,15 @@
 
 #pragma once
 
-#include <corsika/process/BaseProcess.h>
-#include <corsika/process/ProcessReturn.h>
+#include <corsika/media/Environment.hpp>
+#include <corsika/framework/sequence/ProcessReturn.hpp>
 
-#include <type_traits>
+namespace corsika {
 
-namespace corsika::process {
+  template <typename TDerived>
+  struct BoundaryCrossingProcess {
+    auto& GetRef() { return static_cast<TDerived&>(*this); }
+    auto const& GetRef() const { return static_cast<const TDerived&>(*this); }
 
   template <typename TDerived>
   class BoundaryCrossingProcess : public BaseProcess<TDerived> {
@@ -29,4 +32,9 @@ namespace corsika::process {
                                       TVolumeNode const& to);
   };
 
-} // namespace corsika::process
+  template <class T>
+  std::true_type is_process_impl(BoundaryCrossingProcess<T> const* impl);
+
+} // namespace corsika
+
+
diff --git a/Framework/ProcessSequence/ContinuousProcess.h b/corsika/framework/sequence/ContinuousProcess.hpp
similarity index 74%
rename from Framework/ProcessSequence/ContinuousProcess.h
rename to corsika/framework/sequence/ContinuousProcess.hpp
index c4138a755..ec20510db 100644
--- a/Framework/ProcessSequence/ContinuousProcess.h
+++ b/corsika/framework/sequence/ContinuousProcess.hpp
@@ -8,10 +8,10 @@
 
 #pragma once
 
-#include <corsika/process/BaseProcess.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/sequence/ProcessReturn.hpp> // for convenience
 
-namespace corsika::process {
+namespace corsika {
 
   /**
      \class ContinuousProcess
@@ -37,4 +37,10 @@ namespace corsika::process {
     units::si::LengthType MaxStepLength(TParticle const& p, TTrack const& track) const;
   };
 
-} // namespace corsika::process
+  // overwrite the default trait class, to mark BaseProcess<T> as useful process
+  template <class T>
+  std::true_type is_process_impl(const ContinuousProcess<T>* impl);
+
+} // namespace corsika
+
+
diff --git a/Framework/ProcessSequence/DecayProcess.h b/corsika/framework/sequence/DecayProcess.hpp
similarity index 84%
rename from Framework/ProcessSequence/DecayProcess.h
rename to corsika/framework/sequence/DecayProcess.hpp
index 09ba80743..5b238fda5 100644
--- a/Framework/ProcessSequence/DecayProcess.h
+++ b/corsika/framework/sequence/DecayProcess.hpp
@@ -8,10 +8,13 @@
 
 #pragma once
 
-#include <corsika/process/BaseProcess.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <type_traits>
 
-namespace corsika::process {
+#include <corsika/setup/SetupTrajectory.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include "corsika/framework/sequence/ProcessReturn.hpp" // for convenience
+
+namespace corsika {
 
   /**
      \class DecayProcess
@@ -46,4 +49,4 @@ namespace corsika::process {
       }*/
   };
 
-} // namespace corsika::process
+} // namespace corsika
diff --git a/Framework/ProcessSequence/InteractionProcess.h b/corsika/framework/sequence/InteractionProcess.hpp
similarity index 73%
rename from Framework/ProcessSequence/InteractionProcess.h
rename to corsika/framework/sequence/InteractionProcess.hpp
index e70729db8..153364e30 100644
--- a/Framework/ProcessSequence/InteractionProcess.h
+++ b/corsika/framework/sequence/InteractionProcess.hpp
@@ -8,10 +8,13 @@
 
 #pragma once
 
-#include <corsika/process/BaseProcess.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <type_traits>
 
-namespace corsika::process {
+#include <corsika/setup/SetupTrajectory.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/sequence/ProcessReturn.hpp> // for convenience
+
+namespace corsika {
 
   /**
      \class InteractionProcess
@@ -42,4 +45,9 @@ namespace corsika::process {
     }
   };
 
-} // namespace corsika::process
+  // overwrite the default trait class, to mark BaseProcess<T> as useful process
+  template <class T>
+  std::true_type is_process_impl(const InteractionProcess<T>* impl);
+
+} // namespace corsika
+
diff --git a/Framework/ProcessSequence/ProcessReturn.h b/corsika/framework/sequence/ProcessReturn.hpp
similarity index 69%
rename from Framework/ProcessSequence/ProcessReturn.h
rename to corsika/framework/sequence/ProcessReturn.hpp
index c4e7d5890..e54877fab 100644
--- a/Framework/ProcessSequence/ProcessReturn.h
+++ b/corsika/framework/sequence/ProcessReturn.hpp
@@ -8,7 +8,7 @@
 
 #pragma once
 
-namespace corsika::process {
+namespace corsika {
 
   /**
      since in a process sequence many status updates can accumulate
@@ -39,20 +39,5 @@ namespace corsika::process {
     return (static_cast<int>(a) & static_cast<int>(b)) != 0;
   }
 
-  inline bool isOk(const EProcessReturn a) {
-    return static_cast<int>(a & EProcessReturn::eOk);
-  }
-
-  inline bool isAbsorbed(const EProcessReturn a) {
-    return static_cast<int>(a & EProcessReturn::eParticleAbsorbed);
-  }
-
-  inline bool isDecayed(const EProcessReturn a) {
-    return static_cast<int>(a & EProcessReturn::eDecayed);
-  }
-
-  inline bool isInteracted(const EProcessReturn a) {
-    return static_cast<int>(a & EProcessReturn::eInteracted);
-  }
+} // namespace corsika
 
-} // namespace corsika::process
diff --git a/corsika/framework/sequence/ProcessSequence.hpp b/corsika/framework/sequence/ProcessSequence.hpp
new file mode 100644
index 000000000..4ef3effef
--- /dev/null
+++ b/corsika/framework/sequence/ProcessSequence.hpp
@@ -0,0 +1,175 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <cmath>
+#include <limits>
+#include <type_traits>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/sequence/BaseProcess.hpp>
+#include <corsika/framework/sequence/BoundaryCrossingProcess.hpp>
+#include <corsika/framework/sequence/ContinuousProcess.hpp>
+#include <corsika/framework/sequence/DecayProcess.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <corsika/framework/sequence/ProcessReturn.hpp>
+#include <corsika/framework/sequence/SecondariesProcess.hpp>
+#include <corsika/framework/sequence/StackProcess.hpp>
+
+namespace corsika {
+
+  /**
+   * FIXME
+     \class ProcessSequence
+
+     A compile time static list of processes. The compiler will
+     generate a new type based on template logic containing all the
+     elements provided by the user.
+
+     TProcess1 and TProcess2 must both be derived from BaseProcess,
+     and are both references if possible (lvalue), otherwise (rvalue)
+     they are just classes. This allows us to handle both, rvalue as
+     well as lvalue Processes in the ProcessSequence.
+
+     \comment Using CRTP pattern,
+     https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern
+   */
+  template <typename TProcess1, typename TProcess2 = NullModel>
+  class ProcessSequence : public BaseProcess<ProcessSequence<TProcess1, TProcess2>> {
+
+    using TProcess1type = typename std::decay_t<TProcess1>;
+    using TProcess2type = typename std::decay_t<TProcess2>;
+
+    static bool constexpr t1ProcSeq = is_process_sequence_v<TProcess1type>;
+    static bool constexpr t2ProcSeq = is_process_sequence_v<TProcess2type>;
+
+    static bool constexpr t1SwitchProcSeq = is_switch_process_sequence_v<TProcess1type>;
+    static bool constexpr t2SwitchProcSeq = is_switch_process_sequence_v<TProcess2type>;
+
+    // make sure only BaseProcess types TProcess1/2 are passed
+    static_assert(std::is_base_of_v<BaseProcess<TProcess1type>, TProcess1type>,
+                  "can only use process derived from BaseProcess in "
+                  "ProcessSequence, for Process 1");
+    static_assert(std::is_base_of_v<BaseProcess<TProcess2type>, TProcess2type>,
+                  "can only use process derived from BaseProcess in "
+                  "ProcessSequence, for Process 2");
+
+    TProcess1 A_; // this is a reference, if possible
+    TProcess2 B_; // this is a reference, if possible
+
+  public:
+    ProcessSequence(TProcess1 in_A, TProcess2 in_B)
+        : A_(in_A)
+        , B_(in_B) {}
+
+    // example for a trait-based call:
+    // void Hello() const  { detail::CallHello<T1,T2>::Call(A, B); }
+
+    template <typename Particle, typename VTNType>
+    EProcessReturn DoBoundaryCrossing(Particle& p, VTNType const& from,
+                                      VTNType const& to);
+
+    template <typename TParticle, typename TTrack>
+    EProcessReturn DoContinuous(TParticle& vP, TTrack& vT) ;
+
+    template <typename TSecondaries>
+    EProcessReturn DoSecondaries(TSecondaries& vS) ;
+
+    /**
+       The processes of type StackProcess do have an internal counter,
+       so they can be exectuted only each N steps. Often these are
+       "maintenacne processes" that do not need to run after each
+       single step of the simulations. In the CheckStep function it is
+       tested if either A_ or B_ are StackProcess and if they are due
+       for execution.
+     */
+    bool CheckStep() ;
+
+    /**
+       Execute the StackProcess-es in the ProcessSequence
+     */
+    template <typename TStack>
+    EProcessReturn DoStack(TStack& vS);
+
+    template <typename TParticle, typename TTrack>
+    corsika::units::si::LengthType MaxStepLength(TParticle& vP, TTrack& vTrack) ;
+    template <typename TParticle>
+    corsika::units::si::GrammageType GetTotalInteractionLength(TParticle& vP);
+
+    template <typename TParticle>
+    inline corsika::units::si::InverseGrammageType GetTotalInverseInteractionLength(
+        TParticle& vP) ;
+
+    template <typename TParticle>
+    inline corsika::units::si::InverseGrammageType GetInverseInteractionLength(TParticle& vP) ;
+
+    template <typename TParticle, typename TSecondaries>
+    EProcessReturn SelectInteraction(
+        TParticle& vP, TSecondaries& vS,
+        [[maybe_unused]] corsika::units::si::InverseGrammageType lambda_select,
+        corsika::units::si::InverseGrammageType& lambda_inv_count);
+
+    template <typename TParticle>
+    corsika::units::si::TimeType GetTotalLifetime(TParticle& p) ;
+
+    template <typename TParticle>
+    corsika::units::si::InverseTimeType GetTotalInverseLifetime(TParticle& p) ;
+
+    template <typename TParticle>
+    corsika::units::si::InverseTimeType GetInverseLifetime(TParticle& p) ;
+
+    // select decay process
+    template <typename TParticle, typename TSecondaries>
+    EProcessReturn SelectDecay(
+        TParticle& vP, TSecondaries& vS,
+        [[maybe_unused]] corsika::units::si::InverseTimeType decay_select,
+        corsika::units::si::InverseTimeType& decay_inv_count) ;
+
+    void Init() {
+      A.Init();
+      B.Init();
+    }
+  };
+
+  /**
+   * \function sequence
+   *
+   * to construct ProcessSequences in a flexible and dynamic way the
+   * `sequence` factory functions are provided
+   *
+   * Any objects of type
+   *  - BaseProcess,
+   *  - ContinuousProcess, and
+   *  - Interaction/DecayProcess,
+   *  - StackProcess,
+   *  - SecondariesProcess
+   * can be assembled into a ProcessSequence, all
+   * combinatorics are allowed.
+
+   * The sequence function checks that all its arguments are all of
+   * types derived from BaseProcess. Also the ProcessSequence itself
+   * is derived from type BaseProcess
+   **/
+
+  template <typename... TProcesses, typename TProcess1>
+  inline typename std::enable_if_t<
+      std::is_base_of_v<BaseProcess<typename std::decay_t<TProcess1>>,
+                        typename std::decay_t<TProcess1>>,
+      ProcessSequence<TProcess1, decltype(sequence(std::declval<TProcesses>()...))>>
+  sequence(TProcess1&& vA, TProcesses&&... vBs) {
+    return ProcessSequence<TProcess1, decltype(sequence(std::declval<TProcesses>()...))>(
+        vA, sequence(std::forward<TProcesses>(vBs)...));
+  }
+
+  /// marker to identify objectas ProcessSequence
+  template <typename A, typename B>
+  struct is_process_sequence<corsika::ProcessSequence<A, B>> : std::true_type {};
+
+} // namespace corsika
+
+#include<corsika/detail/framework/sequence/ProcessSequence.inl>
diff --git a/Framework/ProcessSequence/ProcessSignature.h b/corsika/framework/sequence/ProcessSignature.hpp
similarity index 99%
rename from Framework/ProcessSequence/ProcessSignature.h
rename to corsika/framework/sequence/ProcessSignature.hpp
index 346e8a33c..56148548a 100644
--- a/Framework/ProcessSequence/ProcessSignature.h
+++ b/corsika/framework/sequence/ProcessSignature.hpp
@@ -24,3 +24,4 @@
   }
 
 // FORCE_SIGNATURE(thisMustBeDefined, T::thisMustBeDefined, int(*)(void));
+
diff --git a/Framework/ProcessSequence/SecondariesProcess.h b/corsika/framework/sequence/SecondariesProcess.hpp
similarity index 66%
rename from Framework/ProcessSequence/SecondariesProcess.h
rename to corsika/framework/sequence/SecondariesProcess.hpp
index a9bc3832a..ecedb02e5 100644
--- a/Framework/ProcessSequence/SecondariesProcess.h
+++ b/corsika/framework/sequence/SecondariesProcess.hpp
@@ -8,10 +8,11 @@
 
 #pragma once
 
-#include <corsika/process/BaseProcess.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/setup/SetupTrajectory.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/sequence/ProcessReturn.hpp> // for convenience
 
-namespace corsika::process {
+namespace corsika {
 
   /**
      \class SecondariesProcess
@@ -31,4 +32,9 @@ namespace corsika::process {
     inline void DoSecondaries(TSecondaries&);
   };
 
-} // namespace corsika::process
+  // overwrite the default trait class, to mark BaseProcess<T> as useful process
+  template <class T>
+  std::true_type is_process_impl(const SecondariesProcess<T>* impl);
+
+} // namespace corsika
+
diff --git a/Framework/ProcessSequence/StackProcess.h b/corsika/framework/sequence/StackProcess.hpp
similarity index 76%
rename from Framework/ProcessSequence/StackProcess.h
rename to corsika/framework/sequence/StackProcess.hpp
index ce5c0998d..6e503d68a 100644
--- a/Framework/ProcessSequence/StackProcess.h
+++ b/corsika/framework/sequence/StackProcess.hpp
@@ -8,10 +8,11 @@
 
 #pragma once
 
-#include <corsika/process/BaseProcess.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/setup/SetupTrajectory.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/sequence/ProcessReturn.hpp> // for convenience
 
-namespace corsika::process {
+namespace corsika {
 
   /**
      \class StackProcess
@@ -51,4 +52,8 @@ namespace corsika::process {
     //! @}
   };
 
-} // namespace corsika::process
+  // overwrite the default trait class, to mark BaseProcess<T> as useful process
+  template <class T>
+  std::true_type is_process_impl(const StackProcess<T>* impl);
+
+} // namespace corsika
diff --git a/Framework/StackInterface/CombinedStack.h b/corsika/framework/stack/CombinedStack.hpp
similarity index 59%
rename from Framework/StackInterface/CombinedStack.h
rename to corsika/framework/stack/CombinedStack.hpp
index d8cecfd57..8bbe41e6d 100644
--- a/Framework/StackInterface/CombinedStack.h
+++ b/corsika/framework/stack/CombinedStack.hpp
@@ -8,12 +8,11 @@
 
 #pragma once
 
-#include <corsika/logging/Logging.h>
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/stack/Stack.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/stack/Stack.hpp>
 
-namespace corsika::stack {
+namespace corsika {
 
   /**
    * @class CombinedParticleInterface
@@ -38,6 +37,12 @@ namespace corsika::stack {
   class CombinedParticleInterface
       : public ParticleInterfaceB<ParticleInterfaceA<StackIterator>> {
 
+    //FIXME: class has no ctors, assignment operators etc.
+
+    // template<template <typename> typename _PI>
+    // template <typename StackDataType, template <typename> typename ParticleInterface>
+    // template<typename T1, template <typename> typename T2> friend class Stack<T1, T2>;
+
     using PI_C =
         CombinedParticleInterface<ParticleInterfaceA, ParticleInterfaceB, StackIterator>;
     using PI_A = ParticleInterfaceA<StackIterator>;
@@ -65,28 +70,17 @@ namespace corsika::stack {
      */
 
     template <typename... Args1>
-    void SetParticleData(const std::tuple<Args1...> vA) {
-      PI_A::SetParticleData(vA);
-      PI_B::SetParticleData();
-    }
+    void SetParticleData(const std::tuple<Args1...> vA) ;
+
     template <typename... Args1, typename... Args2>
-    void SetParticleData(const std::tuple<Args1...> vA, const std::tuple<Args2...> vB) {
-      PI_A::SetParticleData(vA);
-      PI_B::SetParticleData(vB);
-    }
+    void SetParticleData(const std::tuple<Args1...> vA, const std::tuple<Args2...> vB) ;
 
     template <typename... Args1>
-    void SetParticleData(PI_C& p, const std::tuple<Args1...> vA) {
-      // static_assert(MT<I>::has_not, "error");
-      PI_A::SetParticleData(static_cast<PI_A&>(p), vA); // original stack
-      PI_B::SetParticleData(static_cast<PI_B&>(p));     // addon stack
-    }
+    void SetParticleData(PI_C& p, const std::tuple<Args1...> vA) ;
+
     template <typename... Args1, typename... Args2>
     void SetParticleData(PI_C& p, const std::tuple<Args1...> vA,
-                         const std::tuple<Args2...> vB) {
-      PI_A::SetParticleData(static_cast<PI_A&>(p), vA);
-      PI_B::SetParticleData(static_cast<PI_B&>(p), vB);
-    }
+                         const std::tuple<Args2...> vB) ;
     ///@}
 
     std::string as_string() const {
@@ -94,6 +88,8 @@ namespace corsika::stack {
     }
   };
 
+  namespace detail {
+
   /**
    * @class CombinedStackImpl
    *
@@ -104,54 +100,9 @@ namespace corsika::stack {
    * access to the combined number of data entries.
    */
   template <typename Stack1Impl, typename Stack2Impl>
-  class CombinedStackImpl : public Stack1Impl, public Stack2Impl {
-
-  public:
-    void Clear() {
-      Stack1Impl::Clear();
-      Stack2Impl::Clear();
-    }
-
-    unsigned int GetSize() const { return Stack1Impl::GetSize(); }
-    unsigned int GetCapacity() const { return Stack1Impl::GetCapacity(); }
+  class CombinedStackImpl ;
 
-    /**
-     *   Function to copy particle at location i1 in stack to i2
-     */
-    void Copy(const unsigned int i1, const unsigned int i2) {
-      if (i1 >= GetSize() || i2 >= GetSize()) {
-        std::ostringstream err;
-        err << "CombinedStack: trying to access data beyond size of stack!";
-        throw std::runtime_error(err.str());
-      }
-      Stack1Impl::Copy(i1, i2);
-      Stack2Impl::Copy(i1, i2);
-    }
-
-    /**
-     *   Function to copy particle at location i2 in stack to i1
-     */
-    void Swap(const unsigned int i1, const unsigned int i2) {
-      if (i1 >= GetSize() || i2 >= GetSize()) {
-        std::ostringstream err;
-        err << "CombinedStack: trying to access data beyond size of stack!";
-        throw std::runtime_error(err.str());
-      }
-      Stack1Impl::Swap(i1, i2);
-      Stack2Impl::Swap(i1, i2);
-    }
-
-    void IncrementSize() {
-      Stack1Impl::IncrementSize();
-      Stack2Impl::IncrementSize();
-    }
-
-    void DecrementSize() {
-      Stack1Impl::DecrementSize();
-      Stack2Impl::DecrementSize();
-    }
-
-  }; // end class CombinedStackImpl
+}  // namespace detail
 
   /**
    * Helper template alias `CombinedStack` to construct new combined
@@ -163,6 +114,8 @@ namespace corsika::stack {
    */
 
   template <typename Stack1Impl, typename Stack2Impl, template <typename> typename _PI>
-  using CombinedStack = Stack<CombinedStackImpl<Stack1Impl, Stack2Impl>, _PI>;
+  using CombinedStack = Stack<detail::CombinedStackImpl<Stack1Impl, Stack2Impl>, _PI>;
+
+} // namespace corsika
 
-} // namespace corsika::stack
+#include <corsika/detail/framework/stack/CombinedStack.inl>
diff --git a/Framework/StackInterface/ParticleBase.h b/corsika/framework/stack/ParticleBase.hpp
similarity index 98%
rename from Framework/StackInterface/ParticleBase.h
rename to corsika/framework/stack/ParticleBase.hpp
index 1bf7d0ad8..067f54afb 100644
--- a/Framework/StackInterface/ParticleBase.h
+++ b/corsika/framework/stack/ParticleBase.hpp
@@ -8,7 +8,9 @@
 
 #pragma once
 
-namespace corsika::stack {
+#include <type_traits>
+
+namespace corsika {
 
   /**
    @class ParticleBase
@@ -105,4 +107,4 @@ namespace corsika::stack {
     ///@}
   };
 
-} // namespace corsika::stack
+} // namespace corsika
diff --git a/Framework/StackInterface/SecondaryView.h b/corsika/framework/stack/SecondaryView.hpp
similarity index 79%
rename from Framework/StackInterface/SecondaryView.h
rename to corsika/framework/stack/SecondaryView.hpp
index 709a8c4fe..a45a6d4fc 100644
--- a/Framework/StackInterface/SecondaryView.h
+++ b/corsika/framework/stack/SecondaryView.hpp
@@ -8,14 +8,13 @@
 
 #pragma once
 
-#include <corsika/stack/Stack.h>
-
-#include <corsika/logging/Logging.h>
-
 #include <stdexcept>
 #include <vector>
+#include <type_traits>
+#include <corsika/framework/stack/Stack.hpp>
+#include <corsika/framework/stack/StackIteratorInterface.hpp>
 
-namespace corsika::stack {
+namespace corsika {
 
   // forward-decl:
   template <class T1, template <class> class T2>
@@ -196,11 +195,7 @@ namespace corsika::stack {
      * Method to add a new secondary particle on this SecondaryView
      */
     template <typename... Args>
-    StackIterator AddSecondary(const Args... v) {
-      C8LOG_TRACE("SecondaryView::AddSecondary(Args&&)");
-      StackIterator proj = GetProjectile(); // make this const
-      return AddSecondary(proj, v...);
-    }
+    auto AddSecondary(const Args... v) ;
 
   protected:
     /**
@@ -213,24 +208,7 @@ namespace corsika::stack {
      * StackIterator::AddSecondary via ParticleBase
      */
     template <typename... Args>
-    StackIterator AddSecondary(StackIterator& proj, const Args... v) {
-      C8LOG_TRACE("SecondaryView::AddSecondary(StackIterator&, Args&&)");
-      // make space on stack
-      InnerStackTypeRef::GetStackData().IncrementSize();
-      inner_stack_.deleted_.push_back(false);
-      // get current number of secondaries on stack
-      const unsigned int idSec = getSize();
-      // determine index on (inner) stack where new particle will be located
-      const unsigned int index = InnerStackTypeRef::GetStackData().GetSize() - 1;
-      indices_.push_back(index);
-      // NOTE: "+1" is since "0" is special marker here for PROJECTILE, see
-      // GetIndexFromIterator
-      auto sec = StackIterator(*this, idSec + 1, proj, v...);
-      MSecondaryProducer<StackDataType, ParticleInterface>::new_secondary(sec);
-      return sec;
-    }
-
-  public:
+    auto AddSecondary(StackIterator& proj, const Args... v) ;
     /**
      * overwrite Stack::GetSize to return actual number of secondaries
      */
@@ -327,27 +305,13 @@ namespace corsika::stack {
      * remove the last particle.
      *
      */
-    void Delete(StackIterator p) {
-      C8LOG_TRACE("SecondaryView::Delete");
-      if (IsEmpty()) { /*error*/
-        throw std::runtime_error("Stack, cannot delete entry since size is zero");
-      }
-      if (isDeleted(p.GetIndex() - 1)) { /*error*/
-        throw std::runtime_error("Stack, cannot delete entry since already deleted");
-      }
-      inner_stack_.Delete(GetIndexFromIterator(p.GetIndex()));
-      InnerStackTypeRef::nDeleted_++; // also count in SecondaryView
-    }
+    inline void Delete(StackIterator p);
 
     /**
      * return next particle from stack, need to overwrtie Stack::GetNextParticle to get
      * right reference
      */
-    StackIterator GetNextParticle() {
-      while (purgeLastIfDeleted()) {}
-      return last();
-    }
-
+    inline void Delete(ParticleInterfaceType p) ;
     /**
      * check if this particle was already deleted
      *
@@ -361,24 +325,14 @@ namespace corsika::stack {
     /**
      * delete this particle
      */
-    bool isDeleted(const ParticleInterfaceType& p) const {
-      return isDeleted(p.GetIterator());
-    }
+    inline void DeleteLast() ;
 
     /**
      * Function to ultimatively remove the last entry from the stack,
      * if it was marked as deleted before. If this is not the case,
      * the function will just return false and do nothing.
      */
-    bool purgeLastIfDeleted() {
-      C8LOG_TRACE("SecondaryView::purgeLastIfDeleted");
-      if (!isDeleted(getSize() - 1))
-        return false; // the last particle is not marked for deletion. Do nothing.
-      inner_stack_.purge(GetIndexFromIterator(getSize()));
-      InnerStackTypeRef::nDeleted_--;
-      indices_.pop_back();
-      return true;
-    }
+    inline StackIterator GetNextParticle() { return last(); }
 
     /**
      * Function to ultimatively remove all entries from the stack
@@ -388,34 +342,7 @@ namespace corsika::stack {
      * "gaps" in the stack are filled with entries from the back
      * (copied).
      */
-    void purge() {
-      unsigned int iStack = 0;
-      unsigned int size = getSize();
-      while (iStack < size) {
-        if (isDeleted(iStack)) {
-          inner_stack_.purge(iStack);
-          indices_.erase(indices_.begin() + iStack);
-        }
-        size = getSize();
-        iStack++;
-      }
-      InnerStackTypeRef::nDeleted_ = 0;
-    }
-
-    std::string as_string() const {
-      std::string str(fmt::format("size {}\n", getSize()));
-      // we make our own begin/end since we want ALL entries
-      std::string new_line = "     ";
-      for (unsigned int iPart = 0; iPart != getSize(); ++iPart) {
-        ConstStackIterator itPart(*this, iPart);
-        str += fmt::format(
-            "{}{}{}", new_line, itPart.as_string(),
-            (inner_stack_.deleted_[GetIndexFromIterator(itPart.GetIndex())] ? " [deleted]"
-                                                                            : ""));
-        new_line = "\n     ";
-      }
-      return str;
-    }
+    inline bool IsEmpty() { return GetSize() == 0; }
 
   protected:
     // forward to inner stack
@@ -430,13 +357,7 @@ namespace corsika::stack {
      * function the conversion form iterator-index to stack-index is
      * performed.
      */
-    unsigned int GetIndexFromIterator(const unsigned int vI) const {
-      // this is too much: C8LOG_TRACE("SecondaryView::GetIndexFromIterator({})={}", vI,
-      // (vI?indices_[vI-1]:projectile_index_));
-      if (vI == 0) return projectile_index_;
-      return indices_[vI - 1];
-    }
-  };
+    inline unsigned int GetIndexFromIterator(const unsigned int vI) const;
 
   /**
    * Class to handle the generation of new secondaries. Used as default mix-in for
@@ -489,9 +410,10 @@ namespace corsika::stack {
             class MSecondaryProducer = corsika::stack::DefaultSecondaryProducer,
             template <typename> typename MPIType_ = TStack::template MPIType>
   struct MakeView {
-    using type = corsika::stack::SecondaryView<typename TStack::StackImpl, MPIType_,
-                                               MSecondaryProducer>;
+    using type = corsika::SecondaryView<typename S::StackImpl, _PIType>;
   };
 #endif
 
-} // namespace corsika::stack
+} // namespace corsika
+
+#include <corsika/detail/framework/stack/SecondaryView.inl>
diff --git a/Framework/StackInterface/Stack.h b/corsika/framework/stack/Stack.hpp
similarity index 92%
rename from Framework/StackInterface/Stack.h
rename to corsika/framework/stack/Stack.hpp
index 85ec6418f..4f20d4a7e 100644
--- a/Framework/StackInterface/Stack.h
+++ b/corsika/framework/stack/Stack.hpp
@@ -8,19 +8,20 @@
 
 #pragma once
 
-#include <corsika/logging/Logging.h>
-#include <corsika/stack/StackIteratorInterface.h>
-#include <corsika/utl/MetaProgramming.h>
-
+#include <corsika/framework/stack/StackIteratorInterface.hpp>
+// must be after StackIteratorInterface
 #include <stdexcept>
 #include <string>
 #include <vector>
 
+#include <corsika/framework/utility/MetaProgramming.hpp>
+#include <corsika/framework/stack/SecondaryView.hpp>
+
 /**
    All classes around management of particles on a stack.
  */
 
-namespace corsika::stack {
+namespace corsika {
 
   /**
      This is just a forward declatation for the user-defined
@@ -71,11 +72,9 @@ namespace corsika::stack {
      * if TStackData is a reference member we *HAVE* to initialize
      * it in the constructor, this is typically needed for SecondaryView
      */
-    template <typename _ = TStackData, typename = utl::enable_if<std::is_reference<_>>>
-    Stack(TStackData vD)
-        : data_(vD)
-        , deleted_(std::vector<bool>(data_.GetSize(), false))
-        , nDeleted_(0) {}
+    template <typename _ = StackDataType, typename = corsika::enable_if<std::is_reference<_>>>
+    Stack(StackDataType vD)
+        : fData(vD) {}
 
     /**
      * This constructor takes any argument and passes it on to the
@@ -86,12 +85,10 @@ namespace corsika::stack {
      * stacks, where the inner data container is always a reference
      * and cannot be initialized here.
      */
-    template <typename... TArgs, typename _ = TStackData,
-              typename = utl::disable_if<std::is_reference<_>>>
-    Stack(TArgs... args)
-        : data_(args...)
-        , deleted_(std::vector<bool>(data_.GetSize(), false))
-        , nDeleted_(0) {}
+    template <typename... Args, typename _ = StackDataType,
+              typename = corsika::disable_if<std::is_reference<_>>>
+    Stack(Args... args)
+        : fData(args...) {}
 
   public:
     typedef TStackData
@@ -141,15 +138,17 @@ namespace corsika::stack {
      * @name Most generic proxy methods for TStackData data_
      * @{
      */
-    unsigned int GetCapacity() const { return data_.GetCapacity(); }
-    unsigned int getDeleted() const { return nDeleted_; }
-    unsigned int getEntries() const { return getSize() - getDeleted(); }
+    unsigned int GetCapacity() const { return fData.GetCapacity(); }
+    unsigned int GetSize() const { return fData.GetSize(); }
 
-    template <typename... TArgs>
-    void Clear(TArgs... args) {
-      data_.Clear(args...);
-      deleted_ = std::vector<bool>(data_.GetSize(), false);
-      nDeleted_ = 0;
+    template <typename... Args>
+    auto Init(Args... args) {
+      return fData.Init(args...);
+    }
+
+    template <typename... Args>
+    auto Clear(Args... args) {
+      return fData.Clear(args...);
     }
     ///@}
 
@@ -409,4 +408,6 @@ namespace corsika::stack {
     ///@}
   };
 
-} // namespace corsika::stack
+} // namespace corsika
+
+
diff --git a/Framework/StackInterface/StackIteratorInterface.h b/corsika/framework/stack/StackIteratorInterface.hpp
similarity index 92%
rename from Framework/StackInterface/StackIteratorInterface.h
rename to corsika/framework/stack/StackIteratorInterface.hpp
index 6c4901084..d72586239 100644
--- a/Framework/StackInterface/StackIteratorInterface.h
+++ b/corsika/framework/stack/StackIteratorInterface.hpp
@@ -8,14 +8,9 @@
 
 #pragma once
 
-#include <corsika/stack/ParticleBase.h>
+#include <corsika/framework/stack/ParticleBase.hpp>
 
-namespace corsika::history {
-  template <typename T, template <typename> typename ParticleInterface>
-  class HistorySecondaryProducer; // forward decl.
-}
-
-namespace corsika::stack {
+namespace corsika {
 
   template <typename TStackData, template <typename> typename TParticleInterface>
   class Stack; // forward decl
@@ -63,8 +58,8 @@ namespace corsika::stack {
      vIndex).
 
      For two examples see stack_example.cc, or the
-     corsika::processes::sibyll::SibStack class
-  **/
+     corsikaes::sibyll::SibStack class
+  */
 
   template <typename TStackData, template <typename> typename TParticleInterface,
             typename StackType = Stack<TStackData, TParticleInterface>>
@@ -74,8 +69,8 @@ namespace corsika::stack {
 
   public:
     using ParticleInterfaceType =
-        TParticleInterface<corsika::stack::StackIteratorInterface<
-            TStackData, TParticleInterface, StackType>>;
+        ParticleInterface<corsika::StackIteratorInterface<
+            StackDataType, ParticleInterface, StackType>>;
 
     // friends are needed for access to protected methods
     friend class Stack<TStackData,
@@ -360,20 +355,5 @@ namespace corsika::stack {
     ///@}
   }; // end class ConstStackIterator
 
-  template <typename TStackData, template <typename> typename TParticleInterface,
-            typename StackType>
-  bool StackIteratorInterface<TStackData, TParticleInterface, StackType>::operator==(
-      const ConstStackIteratorInterface<TStackData, TParticleInterface, StackType>& rhs)
-      const {
-    return index_ == rhs.index_;
-  }
-
-  template <typename TStackData, template <typename> typename TParticleInterface,
-            typename StackType>
-  bool StackIteratorInterface<TStackData, TParticleInterface, StackType>::operator!=(
-      const ConstStackIteratorInterface<TStackData, TParticleInterface, StackType>& rhs)
-      const {
-    return index_ != rhs.index_;
-  }
+} // namespace corsika
 
-} // namespace corsika::stack
diff --git a/Framework/Utilities/Bit.h b/corsika/framework/utility/Bit.hpp
similarity index 97%
rename from Framework/Utilities/Bit.h
rename to corsika/framework/utility/Bit.hpp
index 1443ddf9b..94faa5dc7 100644
--- a/Framework/Utilities/Bit.h
+++ b/corsika/framework/utility/Bit.hpp
@@ -21,7 +21,7 @@
 
 // #include <utl/AugerException.h>
 
-namespace corsika::utl {
+namespace corsika {
 
   namespace Bit {
 
@@ -88,4 +88,5 @@ namespace corsika::utl {
     return Bit::Array<T>(target);
   }
 
-} // namespace corsika::utl
+} // namespace corsika
+
diff --git a/corsika/framework/utility/COMBoost.hpp b/corsika/framework/utility/COMBoost.hpp
new file mode 100644
index 000000000..04232fe6e
--- /dev/null
+++ b/corsika/framework/utility/COMBoost.hpp
@@ -0,0 +1,52 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <iostream>
+
+#include <Eigen/Dense>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/CoordinateSystem.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
+
+namespace corsika {
+
+  /**
+     This utility class handles Lorentz boost between different
+     referenence frames, using FourVectors.
+   */
+
+  class COMBoost {
+    Eigen::Matrix3d fRotation;
+    Eigen::Matrix2d fBoost, fInverseBoost;
+    corsika::CoordinateSystem const& fCS;
+
+  public:
+    //! construct a COMBoost given four-vector of prjectile and mass of target
+    COMBoost(
+        const corsika::FourVector<
+            corsika::units::si::HEPEnergyType,
+            corsika::Vector<corsika::units::si::hepmomentum_d>>& Pprojectile,
+        const corsika::units::si::HEPEnergyType massTarget);
+
+    auto const& GetRotationMatrix() const;
+
+    //! transforms a 4-momentum from lab frame to the center-of-mass frame
+    template <typename FourVector>
+    FourVector toCoM(const FourVector& p) const ;
+
+    //! transforms a 4-momentum from the center-of-mass frame back to lab frame
+    template <typename FourVector>
+    FourVector fromCoM(const FourVector& p) const ;
+  };
+} // namespace corsika
+
+#include <corsika/detail/framework/utility/COMBoost.inl>
diff --git a/Framework/Utilities/CorsikaFenv.h b/corsika/framework/utility/CorsikaFenv.hpp
similarity index 100%
rename from Framework/Utilities/CorsikaFenv.h
rename to corsika/framework/utility/CorsikaFenv.hpp
diff --git a/Framework/Utilities/MetaProgramming.h b/corsika/framework/utility/MetaProgramming.hpp
similarity index 77%
rename from Framework/Utilities/MetaProgramming.h
rename to corsika/framework/utility/MetaProgramming.hpp
index 689357769..9bd9688b4 100644
--- a/Framework/Utilities/MetaProgramming.h
+++ b/corsika/framework/utility/MetaProgramming.hpp
@@ -16,14 +16,14 @@
   Tools to emulate conditional compilation of method overloads.
 
   ```
-  #include <corsika/utl/MetaProgramming.h>
+  #include <corsika/framework/utility/MetaProgramming.h>
 
   template <class T>
   struct Foo {
-    template <class U, class = corsika::utl::enable_if<std::reference<U>>>
+    template <class U, class = corsika::enable_if<std::reference<U>>>
     void enable_only_if_U_is_reference(U x) {}
 
-    template <class _ = T, class = corsika::utl::disable_if<std::reference<_>>>
+    template <class _ = T, class = corsika::disable_if<std::reference<_>>>
     void enable_only_if_T_is_not_reference() {}
   };
   ```
@@ -31,12 +31,12 @@
   To combine traits, use boost::mp11::mp_and or boost::mp11::mp_or.
 
   ```
-  #include <corsika/utl/MetaProgramming.h>
+  #include <corsika/framework/utility/MetaProgramming.h>
   #include <boost/mp11.hpp>
 
   template <class T>
   struct Foo {
-    template <class U, class = corsika::utl::enable_if<
+    template <class U, class = corsika::enable_if<
       boost::mp11::mp_and<std::is_reference<T>, std::is_const<T>>
     >
     void enable_only_if_U_is_const_reference(U x) {}
@@ -51,10 +51,11 @@
 }
 */
 
-namespace corsika::utl {
+namespace corsika {
   template <class Trait>
   using enable_if = typename std::enable_if<(Trait::value == true)>::type;
 
   template <class Trait>
   using disable_if = typename std::enable_if<(Trait::value == false)>::type;
-} // namespace corsika::utl
+} // namespace corsika
+
diff --git a/Framework/Utilities/Singleton.h b/corsika/framework/utility/Singleton.hpp
similarity index 93%
rename from Framework/Utilities/Singleton.h
rename to corsika/framework/utility/Singleton.hpp
index 68667df8d..801c3f5e5 100644
--- a/Framework/Utilities/Singleton.h
+++ b/corsika/framework/utility/Singleton.hpp
@@ -10,7 +10,7 @@
 
 //#define OFFLINE_USE_GAMMA_SINGLETON
 
-namespace corsika::utl {
+namespace corsika {
   /**
    * \class Singleton Singleton.h utl/Singleton.h
    *
@@ -18,7 +18,7 @@ namespace corsika::utl {
    *
    * The singleton class is implemented as follows
    * \code
-   * #include <utl/Singleton.h>
+   * #include <utl/Singleton.hpp>
    *
    * class SomeClass : public utl::Singleton<SomeClass> {
    *   ...
@@ -55,4 +55,5 @@ namespace corsika::utl {
     ~Singleton() {}
   };
 
-} // namespace corsika::utl
+} // namespace corsika
+
diff --git a/Framework/Utilities/COMBoost.cc b/corsika/framework/utility/detail/COMBoost.cc
similarity index 100%
rename from Framework/Utilities/COMBoost.cc
rename to corsika/framework/utility/detail/COMBoost.cc
diff --git a/corsika/framework/utility/detail/COMBoost.inl b/corsika/framework/utility/detail/COMBoost.inl
new file mode 100644
index 000000000..95ac32b4b
--- /dev/null
+++ b/corsika/framework/utility/detail/COMBoost.inl
@@ -0,0 +1,125 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/CoordinateSystem.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/utility/sgn.hpp>
+#include <Eigen/Dense>
+#include "../../core/PhysicalUnits.hpp"
+
+namespace corsika::utl {
+
+      auto const& COMBoost::GetRotationMatrix() const { return fRotation; }
+
+    //! transforms a 4-momentum from lab frame to the center-of-mass frame
+    template <typename FourVector>
+    FourVector COMBoost::toCoM(const FourVector& p) const {
+      using namespace corsika::units::si;
+      auto pComponents = p.GetSpaceLikeComponents().GetComponents(rotatedCS_);
+      Eigen::Vector3d eVecRotated = pComponents.eVector;
+      Eigen::Vector2d lab;
+
+      lab << (p.GetTimeLikeComponent() * (1 / 1_GeV)),
+          (eVecRotated(2) * (1 / 1_GeV).magnitude());
+
+      auto const boostedZ = boost_ * lab;
+      auto const E_CoM = boostedZ(0) * 1_GeV;
+
+      eVecRotated(2) = boostedZ(1) * (1_GeV).magnitude();
+
+      return FourVector(
+          E_CoM, corsika::geometry::Vector<hepmomentum_d>(rotatedCS_, eVecRotated));
+    }
+
+    //! transforms a 4-momentum from the center-of-mass frame back to lab frame
+    template <typename FourVector>
+    FourVector COMBoost::fromCoM(const FourVector& p) const {
+      using namespace corsika::units::si;
+      auto pCM = p.GetSpaceLikeComponents().GetComponents(rotatedCS_);
+      auto const Ecm = p.GetTimeLikeComponent();
+
+      Eigen::Vector2d com;
+      com << (Ecm * (1 / 1_GeV)), (pCM.eVector(2) * (1 / 1_GeV).magnitude());
+
+      C8LOG_TRACE(
+          "COMBoost::fromCoM Ecm={} GeV"
+          " pcm={} GeV (norm = {} GeV), invariant mass={} GeV",
+          Ecm / 1_GeV, pCM / 1_GeV, pCM.norm() / 1_GeV, p.GetNorm() / 1_GeV);
+
+      auto const boostedZ = inverseBoost_ * com;
+      auto const E_lab = boostedZ(0) * 1_GeV;
+
+      pCM.eVector(2) = boostedZ(1) * (1_GeV).magnitude();
+
+      geometry::Vector<typename decltype(pCM)::dimension> pLab{rotatedCS_, pCM};
+      pLab.rebase(originalCS_);
+
+      FourVector f(E_lab, pLab);
+
+      C8LOG_TRACE("COMBoost::fromCoM --> Elab={} GeV",
+                  " plab={} GeV (norm={} GeV) "
+                  " GeV), invariant mass = {}",
+                  E_lab / 1_GeV, f.GetNorm() / 1_GeV, pLab.GetComponents(),
+                  pLab.norm() / 1_GeV);
+
+      return f;
+    }
+
+    COMBoost::COMBoost(FourVector<HEPEnergyType, Vector<hepmomentum_d>> const& Pprojectile,
+                       const HEPMassType massTarget)
+        : fCS(Pprojectile.GetSpaceLikeComponents().GetCoordinateSystem()) {
+      auto const pProjectile = Pprojectile.GetSpaceLikeComponents();
+      auto const pProjNorm = pProjectile.norm();
+      auto const a = (pProjectile / pProjNorm).GetComponents().eVector;
+      auto const a1 = a(0), a2 = a(1);
+
+      auto const s = sgn(a(2));
+      auto const c = 1 / (1 + s * a(2));
+
+      Eigen::Matrix3d A, B;
+
+      if (s > 0) {
+        A << 1, 0, -a1,                     // comment to prevent clang-format
+            0, 1, -a2,                      // .
+            a1, a2, 1;                      // .
+        B << -a1 * a1 * c, -a1 * a2 * c, 0, // .
+            -a1 * a2 * c, -a2 * a2 * c, 0,  // .
+            0, 0, -(a1 * a1 + a2 * a2) * c; // .
+
+      } else {
+        A << 1, 0, a1,                      // comment to prevent clang-format
+            0, -1, -a2,                     // .
+            a1, a2, -1;                     // .
+        B << -a1 * a1 * c, -a1 * a2 * c, 0, // .
+            +a1 * a2 * c, +a2 * a2 * c, 0,  // .
+            0, 0, (a1 * a1 + a2 * a2) * c;  // .
+      }
+
+      fRotation = A + B;
+
+      // calculate boost
+      double const beta = pProjNorm / (Pprojectile.GetTimeLikeComponent() + massTarget);
+
+      /* Accurracy matters here, beta = 1 - epsilon for ultra-relativistic boosts */
+      double const coshEta = 1 / std::sqrt((1 + beta) * (1 - beta));
+      //~ double const coshEta = 1 / std::sqrt((1-beta*beta));
+      double const sinhEta = -beta * coshEta;
+
+      std::cout << "COMBoost (1-beta)=" << 1 - beta << " gamma=" << coshEta << std::endl;
+      std::cout << "  det = " << fRotation.determinant() - 1 << std::endl;
+
+      fBoost << coshEta, sinhEta, sinhEta, coshEta;
+
+      fInverseBoost << coshEta, -sinhEta, -sinhEta, coshEta;
+    }
+} // namespace corsika::utl
diff --git a/Framework/Utilities/CorsikaFenvDefault.cc b/corsika/framework/utility/detail/CorsikaFenvDefault.cc
similarity index 100%
rename from Framework/Utilities/CorsikaFenvDefault.cc
rename to corsika/framework/utility/detail/CorsikaFenvDefault.cc
diff --git a/Framework/Utilities/CorsikaFenvFallback.cc b/corsika/framework/utility/detail/CorsikaFenvFallback.inl
similarity index 89%
rename from Framework/Utilities/CorsikaFenvFallback.cc
rename to corsika/framework/utility/detail/CorsikaFenvFallback.inl
index 64327b2c7..ba847a3a0 100644
--- a/Framework/Utilities/CorsikaFenvFallback.cc
+++ b/corsika/framework/utility/detail/CorsikaFenvFallback.inl
@@ -6,7 +6,7 @@
  * the license.
  */
 
-#include <corsika/utl/CorsikaFenv.h>
+#include <corsika/framework/utility/CorsikaFenv.hpp>
 #include <cfenv>
 
 extern "C" {
diff --git a/Framework/Utilities/sgn.h b/corsika/framework/utility/sgn.hpp
similarity index 88%
rename from Framework/Utilities/sgn.h
rename to corsika/framework/utility/sgn.hpp
index 2cc3a936b..e9e0f514d 100644
--- a/Framework/Utilities/sgn.h
+++ b/corsika/framework/utility/sgn.hpp
@@ -9,7 +9,7 @@
 
 #pragma once
 
-namespace corsika::utl {
+namespace corsika {
 
   //! sign function without branches
   template <typename T>
@@ -17,4 +17,5 @@ namespace corsika::utl {
     return (T(0) < val) - (val < T(0));
   }
 
-} // namespace corsika::utl
+} // namespace corsika
+
diff --git a/Environment/BaseExponential.h b/corsika/media/BaseExponential.hpp
similarity index 52%
rename from Environment/BaseExponential.h
rename to corsika/media/BaseExponential.hpp
index bf8c16d96..48fe5a520 100644
--- a/Environment/BaseExponential.h
+++ b/corsika/media/BaseExponential.hpp
@@ -8,29 +8,42 @@
 
 #pragma once
 
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <corsika/setup/SetupTrajectory.h>
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Trajectory.hpp>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <limits>
 
-namespace corsika::environment {
+namespace corsika {
 
   /**
    * This class provides the grammage/length conversion functionality for
    * (locally) flat exponential atmospheres.
    */
   template <class TDerived>
-  class BaseExponential {
+  class BaseExponential
+  {
+
+  public:
+
+	  BaseExponential(Point const& vP0, units::si::MassDensityType vRho,
+			  units::si::LengthType vLambda):
+				  fRho0(vRho),
+				  fLambda(vLambda),
+				  fInvLambda(1 / vLambda),
+				  fP0(vP0)
+  {}
+
   protected:
+
     units::si::MassDensityType const fRho0;
     units::si::LengthType const fLambda;
     units::si::InverseLengthType const fInvLambda;
-    geometry::Point const fP0;
+    Point const fP0;
 
-    auto const& GetImplementation() const { return *static_cast<TDerived const*>(this); }
+    auto const& GetImplementation() const ;
 
     // clang-format off
     /**
@@ -47,19 +60,9 @@ namespace corsika::environment {
      */
     // clang-format on
     units::si::GrammageType IntegratedGrammage(
-        setup::Trajectory const& vLine, units::si::LengthType vL,
-        geometry::Vector<units::si::dimensionless_d> const& vAxis) const {
-      if (vL == units::si::LengthType::zero()) { return units::si::GrammageType::zero(); }
-
-      auto const uDotA = vLine.GetDirection(0).dot(vAxis).magnitude();
-      auto const rhoStart = GetImplementation().GetMassDensity(vLine.GetLine().GetR0());
-
-      if (uDotA == 0) {
-        return vL * rhoStart;
-      } else {
-        return rhoStart * (fLambda / uDotA) * (exp(uDotA * vL * fInvLambda) - 1);
-      }
-    }
+        Trajectory<Line> const& vLine,
+		units::si::LengthType vL,
+        Vector<units::si::dimensionless_d> const& vAxis) const;
 
     // clang-format off
     /**
@@ -80,32 +83,13 @@ namespace corsika::environment {
      */
     // clang-format on
     units::si::LengthType ArclengthFromGrammage(
-        setup::Trajectory const& vLine, units::si::GrammageType vGrammage,
-        geometry::Vector<units::si::dimensionless_d> const& vAxis) const {
-      auto const uDotA = vLine.GetDirection(0).dot(vAxis).magnitude();
-      auto const rhoStart = GetImplementation().GetMassDensity(vLine.GetLine().GetR0());
-
-      if (uDotA == 0) {
-        return vGrammage / rhoStart;
-      } else {
-        auto const logArg = vGrammage * fInvLambda * uDotA / rhoStart + 1;
-        if (logArg > 0) {
-          return fLambda / uDotA * log(logArg);
-        } else {
-          return std::numeric_limits<typename decltype(
-                     vGrammage)::value_type>::infinity() *
-                 units::si::meter;
-        }
-      }
-    }
+        Trajectory<Line> const& vLine,
+        units::si::GrammageType vGrammage,
+        Vector<units::si::dimensionless_d> const& vAxis) const;
+
 
-  public:
-    BaseExponential(geometry::Point const& vP0, units::si::MassDensityType vRho,
-                    units::si::LengthType vLambda)
-        : fRho0(vRho)
-        , fLambda(vLambda)
-        , fInvLambda(1 / vLambda)
-        , fP0(vP0) {}
   };
 
 } // namespace corsika::environment
+
+#include <corsika/detail/media/BaseExponential.inl>
diff --git a/Environment/DensityFunction.h b/corsika/media/DensityFunction.hpp
similarity index 55%
rename from Environment/DensityFunction.h
rename to corsika/media/DensityFunction.hpp
index 3ac33c3f2..2105f521f 100644
--- a/Environment/DensityFunction.h
+++ b/corsika/media/DensityFunction.hpp
@@ -8,27 +8,30 @@
 
 #pragma once
 
-#include <corsika/environment/LinearApproximationIntegrator.h>
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/Point.h>
+#include <corsika/media/LinearApproximationIntegrator.hpp>
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Trajectory.hpp>
 
-namespace corsika::environment {
+namespace corsika {
 
-  template <class TDerivableRho,
-            template <typename> class TIntegrator = LinearApproximationIntegrator>
-  class DensityFunction
-      : public TIntegrator<DensityFunction<TDerivableRho, TIntegrator>> {
+  template <class TDerivableRho, template <typename> class TIntegrator = LinearApproximationIntegrator>
+  class DensityFunction: public TIntegrator<DensityFunction<TDerivableRho, TIntegrator>>
+  {
     friend class TIntegrator<DensityFunction<TDerivableRho, TIntegrator>>;
 
     TDerivableRho fRho; //!< functor for density
 
   public:
+
     DensityFunction(TDerivableRho rho)
         : fRho(rho) {}
 
     corsika::units::si::MassDensityType EvaluateAt(
-        corsika::geometry::Point const& p) const {
+        corsika::Point const& p) const {
       return fRho(p);
     }
   };
+
 } // namespace corsika::environment
+
diff --git a/corsika/media/Environment.hpp b/corsika/media/Environment.hpp
new file mode 100644
index 000000000..9c909a631
--- /dev/null
+++ b/corsika/media/Environment.hpp
@@ -0,0 +1,60 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/Universe.hpp>
+#include <corsika/media/IMediumModel.hpp>
+#include <corsika/media/VolumeTreeNode.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Sphere.hpp>
+#include <limits>
+
+namespace corsika {
+
+  template <typename IEnvironmentModel>
+  class Environment
+  {
+  public:
+	  using BaseNodeType = VolumeTreeNode<IEnvironmentModel>;
+
+	  Environment():
+		fCoordinateSystem(
+		    corsika::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem()),
+        fUniverse(
+        	std::make_unique<BaseNodeType>(std::make_unique<Universe>(fCoordinateSystem)))
+        {}
+
+    // using IEnvironmentModel = corsika::IEnvironmentModel;
+
+    inline auto& GetUniverse();
+
+    inline auto const& GetUniverse() const ;
+
+    inline auto const& GetCoordinateSystem() const ;
+
+    // factory method for creation of VolumeTreeNodes
+    template <class TVolumeType, typename... TVolumeArgs>
+    static auto CreateNode(TVolumeArgs&&... args);
+
+
+  private:
+
+    corsika::CoordinateSystem const& fCoordinateSystem;
+    typename BaseNodeType::VTNUPtr fUniverse;
+
+  };
+
+  // using SetupBaseNodeType = VolumeTreeNode<corsika::IEnvironmentModel>;
+  // using SetupEnvironment = Environment<corsika::IEnvironmentModel>;
+
+} // namespace corsika::environment
+
+
+#include <corsika/detail/media/Environment.inl>
diff --git a/corsika/media/FlatExponential.hpp b/corsika/media/FlatExponential.hpp
new file mode 100644
index 000000000..ed066bbe9
--- /dev/null
+++ b/corsika/media/FlatExponential.hpp
@@ -0,0 +1,51 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/BaseExponential.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Trajectory.hpp>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+namespace corsika {
+
+  template <class T>
+  class FlatExponential : public BaseExponential<FlatExponential<T>>, public T
+  {
+    Vector<units::si::dimensionless_d> const fAxis;
+    NuclearComposition const fNuclComp;
+
+    using Base = BaseExponential<FlatExponential<T>>;
+
+  public:
+
+    FlatExponential(Point const& vP0, Vector<units::si::dimensionless_d> const& vAxis,
+                    units::si::MassDensityType vRho, units::si::LengthType vLambda, NuclearComposition vNuclComp):
+                	Base(vP0, vRho, vLambda),
+        fAxis(vAxis),
+        fNuclComp(vNuclComp)
+     {}
+
+    units::si::MassDensityType GetMassDensity(Point const& vP) const override;
+
+    NuclearComposition const& GetNuclearComposition() const override ;
+
+    units::si::GrammageType IntegratedGrammage(Trajectory<Line> const& vLine,
+        units::si::LengthType vTo) const override ;
+
+    units::si::LengthType ArclengthFromGrammage( Trajectory<Line> const& vLine,
+        units::si::GrammageType vGrammage) const override ;
+  };
+
+} // namespace corsika::environment
+
+#include <corsika/detail/media/FlatExponential.inl>
diff --git a/corsika/media/HomogeneousMedium.hpp b/corsika/media/HomogeneousMedium.hpp
new file mode 100644
index 000000000..cde94452e
--- /dev/null
+++ b/corsika/media/HomogeneousMedium.hpp
@@ -0,0 +1,70 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Trajectory.hpp>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <corsika/setup/SetupTrajectory.h>
+
+#include <cassert>
+
+/**
+ * a homogeneous medium
+ */
+
+namespace corsika {
+
+  template <class T>
+  class HomogeneousMedium : public T {
+    corsika::units::si::MassDensityType const fDensity;
+    NuclearComposition const fNuclComp;
+
+  public:
+
+    HomogeneousMedium(corsika::units::si::MassDensityType pDensity, NuclearComposition pNuclComp):
+        fDensity(pDensity),
+        fNuclComp(pNuclComp)
+  {}
+
+    corsika::units::si::MassDensityType
+	GetMassDensity( corsika::Point const&) const override
+    {
+      return fDensity;
+    }
+
+    NuclearComposition const&
+	GetNuclearComposition() const override
+    {
+    	return fNuclComp;
+    }
+
+    corsika::units::si::GrammageType
+	IntegratedGrammage( corsika::Trajectory<corsika::Line> const&,
+        corsika::units::si::LengthType pTo) const override
+    {
+      using namespace corsika::units::si;
+      return pTo * fDensity;
+    }
+
+    corsika::units::si::LengthType
+	ArclengthFromGrammage(corsika::Trajectory<corsika::Line> const&,
+        corsika::units::si::GrammageType pGrammage) const override
+    {
+      return pGrammage / fDensity;
+    }
+  };
+
+} // namespace corsika::environment
+
diff --git a/Environment/IMediumModel.h b/corsika/media/IMediumModel.hpp
similarity index 58%
rename from Environment/IMediumModel.h
rename to corsika/media/IMediumModel.hpp
index 7a3b95171..1623ce225 100644
--- a/Environment/IMediumModel.h
+++ b/corsika/media/IMediumModel.hpp
@@ -8,33 +8,35 @@
 
 #pragma once
 
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Trajectory.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-#include <corsika/setup/SetupTrajectory.h>
+namespace corsika {
 
-namespace corsika::environment {
+  class IMediumModel
+  {
 
-  class IMediumModel {
   public:
     virtual ~IMediumModel() = default; // LCOV_EXCL_LINE
 
-    virtual corsika::units::si::MassDensityType GetMassDensity(
-        corsika::geometry::Point const&) const = 0;
+    virtual corsika::units::si::MassDensityType
+	GetMassDensity( corsika::Point const&) const = 0;
 
     // todo: think about the mixin inheritance of the trajectory vs the BaseTrajectory
     // approach; for now, only lines are supported
     virtual corsika::units::si::GrammageType IntegratedGrammage(
-        corsika::setup::Trajectory const&,
+        corsika::Trajectory<corsika::Line> const&,
         corsika::units::si::LengthType) const = 0;
 
     virtual corsika::units::si::LengthType ArclengthFromGrammage(
-        corsika::setup::Trajectory const&,
-        corsika::units::si::GrammageType) const = 0;
+        corsika::Trajectory<corsika::Line> const&,
+        corsika::units::si::GrammageType ) const = 0;
 
     virtual NuclearComposition const& GetNuclearComposition() const = 0;
   };
 
 } // namespace corsika::environment
+
diff --git a/Environment/InhomogeneousMedium.h b/corsika/media/InhomogeneousMedium.hpp
similarity index 50%
rename from Environment/InhomogeneousMedium.h
rename to corsika/media/InhomogeneousMedium.hpp
index 76378d5d5..a85016848 100644
--- a/Environment/InhomogeneousMedium.h
+++ b/corsika/media/InhomogeneousMedium.hpp
@@ -8,49 +8,65 @@
 
 #pragma once
 
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/Trajectory.h>
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/random/RNGManager.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Trajectory.hpp>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 /**
  * A general inhomogeneous medium. The mass density distribution TDensityFunction must be
  * a \f$C^2\f$-function.
  */
 
-namespace corsika::environment {
+namespace corsika
+{
 
   template <class T, class TDensityFunction>
-  class InhomogeneousMedium : public T {
+  class InhomogeneousMedium : public T
+  {
     NuclearComposition const fNuclComp;
     TDensityFunction const fDensityFunction;
 
   public:
+
+    /*
+     * FIXME: should have traits here for ...Args
+     */
     template <typename... Args>
-    InhomogeneousMedium(NuclearComposition pNuclComp, Args&&... rhoArgs)
-        : fNuclComp(pNuclComp)
-        , fDensityFunction(rhoArgs...) {}
+    InhomogeneousMedium(NuclearComposition pNuclComp, Args&&... rhoArgs):
+	fNuclComp(pNuclComp),
+	fDensityFunction(rhoArgs...)
+	{}
 
-    corsika::units::si::MassDensityType GetMassDensity(
-        corsika::geometry::Point const& p) const override {
+    corsika::units::si::MassDensityType
+	GetMassDensity(corsika::Point const& p) const override
+    {
       return fDensityFunction.EvaluateAt(p);
     }
-    NuclearComposition const& GetNuclearComposition() const override { return fNuclComp; }
 
-    corsika::units::si::GrammageType IntegratedGrammage(
-        corsika::setup::Trajectory const& pLine,
-        corsika::units::si::LengthType pTo) const override {
+    NuclearComposition const& GetNuclearComposition() const override
+    {
+    	return fNuclComp;
+    }
+
+    corsika::units::si::GrammageType
+	IntegratedGrammage( corsika::Trajectory<corsika::Line> const& pLine,
+        corsika::units::si::LengthType pTo) const override
+    {
       return fDensityFunction.IntegrateGrammage(pLine, pTo);
     }
 
-    corsika::units::si::LengthType ArclengthFromGrammage(
-        corsika::setup::Trajectory const& pLine,
-        corsika::units::si::GrammageType pGrammage) const override {
+    corsika::units::si::LengthType
+	ArclengthFromGrammage( corsika::Trajectory<corsika::Line> const& pLine,
+        corsika::units::si::GrammageType pGrammage) const override
+    {
       return fDensityFunction.ArclengthFromGrammage(pLine, pGrammage);
     }
+
   };
 
 } // namespace corsika::environment
+
diff --git a/Environment/LayeredSphericalAtmosphereBuilder.h b/corsika/media/LayeredSphericalAtmosphereBuilder.hpp
similarity index 56%
rename from Environment/LayeredSphericalAtmosphereBuilder.h
rename to corsika/media/LayeredSphericalAtmosphereBuilder.hpp
index 096f9b181..13d1ce86a 100644
--- a/Environment/LayeredSphericalAtmosphereBuilder.h
+++ b/corsika/media/LayeredSphericalAtmosphereBuilder.hpp
@@ -6,17 +6,14 @@
  * the license.
  */
 
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/FlatExponential.h>
-#include <corsika/environment/HomogeneousMedium.h>
-#include <corsika/environment/IMediumModel.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/environment/SlidingPlanarExponential.h>
-#include <corsika/environment/VolumeTreeNode.h>
-
-#include <corsika/geometry/Point.h>
-#include <corsika/units/PhysicalConstants.h>
-#include <corsika/units/PhysicalUnits.h>
+#pragma once
+
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/IMediumModel.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/media/VolumeTreeNode.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <functional>
 #include <memory>
@@ -24,50 +21,17 @@
 #include <tuple>
 #include <type_traits>
 
-namespace corsika::environment {
-
-  // forward-decl
-  template <typename TMediumInterface, template <typename> typename MExtraEnvirnoment>
-  struct make_layered_spherical_atmosphere_builder;
-
-  /**
-   * Helper class to setup concentric spheres of layered atmosphere
-   * with spcified density profiles (exponential, linear, ...).
-   *
-   * This can be used most importantly to replicate CORSIKA7
-   * atmospheres.
-   *
-   * Each layer by definition has a density profile and a (constant)
-   * nuclear composition model.
-   *
-   */
-
-  namespace detail {
-
-    struct NoExtraModelInner {};
-
-    template <typename M>
-    struct NoExtraModel {};
-
-    template <template <typename> typename M>
-    struct has_extra_models : std::true_type {};
+namespace corsika {
 
-    template <>
-    struct has_extra_models<NoExtraModel> : std::false_type {};
-
-  } // namespace detail
-
-  template <typename TMediumInterface = environment::IMediumModel,
-            template <typename> typename TMediumModelExtra = detail::NoExtraModel,
-            typename... TModelArgs>
-  class LayeredSphericalAtmosphereBuilder {
+  class LayeredSphericalAtmosphereBuilder
+  {
     std::unique_ptr<NuclearComposition> composition_;
-    geometry::Point center_;
+    Point center_;
     units::si::LengthType previousRadius_{units::si::LengthType::zero()};
     units::si::LengthType earthRadius_;
     std::tuple<TModelArgs...> const additionalModelArgs_;
 
-    std::stack<typename VolumeTreeNode<TMediumInterface>::VTNUPtr>
+    std::stack<VolumeTreeNode<IMediumModel>::VTNUPtr>
         layers_; // innermost layer first
 
     void checkRadius(units::si::LengthType r) const {
@@ -76,19 +40,12 @@ namespace corsika::environment {
       }
     }
 
-    LayeredSphericalAtmosphereBuilder() = delete;
-    LayeredSphericalAtmosphereBuilder(const LayeredSphericalAtmosphereBuilder&) = delete;
-    LayeredSphericalAtmosphereBuilder(const LayeredSphericalAtmosphereBuilder&&) = delete;
-    LayeredSphericalAtmosphereBuilder& operator=(
-        const LayeredSphericalAtmosphereBuilder&) = delete;
+  public:
 
-    // friend, to allow construction
-    template <typename, template <typename> typename>
-    friend struct make_layered_spherical_atmosphere_builder;
+    static auto constexpr earthRadius = 6'371'000 * units::si::meter;
 
-  protected:
-    LayeredSphericalAtmosphereBuilder(TModelArgs... args, corsika::geometry::Point center,
-                                      units::si::LengthType earthRadius)
+    LayeredSphericalAtmosphereBuilder(corsika::Point center,
+                                      units::si::LengthType seaLevel = earthRadius)
         : center_(center)
         , earthRadius_(earthRadius)
         , additionalModelArgs_{args...} {}
@@ -194,26 +151,12 @@ namespace corsika::environment {
 
   }; // end class LayeredSphericalAtmosphereBuilder
 
-  /**
-   * \class make_layered_spherical_atmosphere_builder
-   *
-   * Helper class to create LayeredSphericalAtmosphereBuilder, the
-   * extra environment models have to be passed as template-template
-   * argument to make_layered_spherical_atmosphere_builder, the member
-   * function `create` does then take an unspecified number of extra
-   * parameters to internalize those models for all layers later
-   * produced.
-   **/
-  template <typename TMediumInterface = environment::IMediumModel,
-            template <typename> typename MExtraEnvirnoment = detail::NoExtraModel>
-  struct make_layered_spherical_atmosphere_builder {
-    template <typename... TArgs>
-    static auto create(geometry::Point const& center, units::si::LengthType earthRadius,
-                       TArgs... args) {
-      return environment::LayeredSphericalAtmosphereBuilder<TMediumInterface,
-                                                            MExtraEnvirnoment, TArgs...>{
-          std::forward<TArgs>(args)..., center, earthRadius};
-    }
+    void assemble(Environment<IMediumModel>&);
+
+    Environment<IMediumModel> assemble();
+
   };
 
 } // namespace corsika::environment
+
+#include <corsika/detail/media/LayeredSphericalAtmosphereBuilder.inl>
diff --git a/corsika/media/LinearApproximationIntegrator.hpp b/corsika/media/LinearApproximationIntegrator.hpp
new file mode 100644
index 000000000..37f52f358
--- /dev/null
+++ b/corsika/media/LinearApproximationIntegrator.hpp
@@ -0,0 +1,38 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <limits>
+
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Trajectory.hpp>
+
+namespace corsika {
+
+   template <class TDerived>
+   class LinearApproximationIntegrator
+   {
+
+     auto const& GetImplementation() const;
+
+  public:
+
+     inline auto IntegrateGrammage( corsika::Trajectory<corsika::Line> const& line,
+        corsika::units::si::LengthType length) const;
+
+    inline auto ArclengthFromGrammage( corsika::Trajectory<corsika::Line> const& line,
+        corsika::units::si::GrammageType grammage) const ;
+
+    inline auto MaximumLength(corsika::Trajectory<corsika::Line> const& line,
+                       [[maybe_unused]] double relError) const ;
+  };
+
+} // namespace corsika::environment
+
+#include <corsika/detail/media/LinearApproximationIntegrator.inl>
diff --git a/Environment/NameModel.h b/corsika/media/NameModel.hpp
similarity index 93%
rename from Environment/NameModel.h
rename to corsika/media/NameModel.hpp
index d5b6ea4fe..5f6b9b24f 100644
--- a/Environment/NameModel.h
+++ b/corsika/media/NameModel.hpp
@@ -11,7 +11,7 @@
 #include <string>
 #include <utility>
 
-namespace corsika::environment {
+namespace corsika {
 
   template <typename T>
   struct NameModel : public T {
diff --git a/corsika/media/NuclearComposition.hpp b/corsika/media/NuclearComposition.hpp
new file mode 100644
index 000000000..42de98fc0
--- /dev/null
+++ b/corsika/media/NuclearComposition.hpp
@@ -0,0 +1,145 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <cassert>
+#include <functional>
+#include <numeric>
+#include <random>
+#include <stdexcept>
+#include <vector>
+
+namespace corsika {
+
+
+  namespace nuc_comp::detail {
+
+		template <class AConstIterator, class BConstIterator>
+		class WeightProviderIterator
+		{
+			AConstIterator fAIter;
+			BConstIterator fBIter;
+
+		public:
+			using value_type = double;
+			using iterator_category = std::input_iterator_tag;
+			using pointer = value_type*;
+			using reference = value_type&;
+			using difference_type = ptrdiff_t;
+
+			WeightProviderIterator(AConstIterator a, BConstIterator b)
+			: fAIter(a)
+			, fBIter(b) {}
+
+			value_type operator*() const { return ((*fAIter) * (*fBIter)).magnitude(); }
+
+			WeightProviderIterator& operator++() { // prefix ++
+				++fAIter;
+				++fBIter;
+				return *this;
+			}
+
+			auto operator==(WeightProviderIterator other) { return fAIter == other.fAIter; }
+
+			auto operator!=(WeightProviderIterator other) { return !(*this == other); }
+		};
+
+	}// namespace nuc_comp::detail
+
+	class NuclearComposition
+	{
+		std::vector<float> const fNumberFractions; //!< relative fractions of number density
+		std::vector<corsika::Code> const	fComponents; //!< particle codes of consitutents
+
+		double const fAvgMassNumber;
+
+		/*
+		 * FIXME: smelling here... nested class why? ...done
+		 * FIXME: promote it to namespace detail ... done
+		 */
+
+
+	public:
+
+		NuclearComposition(std::vector<corsika::Code> pComponents, std::vector<float> pFractions):
+			fNumberFractions(pFractions),
+			fComponents(pComponents),
+			fAvgMassNumber( std::inner_product(
+			pComponents.cbegin(), pComponents.cend(), pFractions.cbegin(), 0.,
+			std::plus<double>(), [](auto const compID, auto const fraction) -> double {
+			  if (IsNucleus(compID)) {
+				return GetNucleusA(compID) * fraction;
+			} else {
+			  return GetMass(compID) /
+			    units::si::ConvertSIToHEP(units::constants::u) * fraction;
+			}
+		}))
+	{
+			assert(pComponents.size() == pFractions.size());
+			auto const sumFractions =
+					std::accumulate(pFractions.cbegin(), pFractions.cend(), 0.f);
+
+			if (!(0.999f < sumFractions && sumFractions < 1.001f)) {
+				throw std::runtime_error("element fractions do not add up to 1");
+			}
+	}
+
+		template <typename TFunction>
+		auto WeightedSum(TFunction func) const {
+			using ResultQuantity = decltype(func(*fComponents.cbegin()));
+
+			auto const prod = [&](auto const compID, auto const fraction) {
+				return func(compID) * fraction;
+			};
+
+			if constexpr (phys::units::is_quantity_v<ResultQuantity>) {
+				return std::inner_product(
+						fComponents.cbegin(), fComponents.cend(), fNumberFractions.cbegin(),
+						ResultQuantity::zero(), // .zero() is defined for quantity types only
+						std::plus<ResultQuantity>(), prod);
+			} else {
+				return std::inner_product(
+						fComponents.cbegin(), fComponents.cend(), fNumberFractions.cbegin(),
+						ResultQuantity(0), // in other cases we have to use a bare 0
+						std::plus<ResultQuantity>(), prod);
+			}
+		}
+
+		auto size() const { return fNumberFractions.size(); }
+
+		auto const& GetFractions() const { return fNumberFractions; }
+		auto const& GetComponents() const { return fComponents; }
+		auto const GetAverageMassNumber() const { return fAvgMassNumber; }
+
+		template <class TRNG>
+		corsika::Code SampleTarget(
+				std::vector<corsika::units::si::CrossSectionType> const& sigma,
+				TRNG& randomStream) const {
+			using namespace corsika::units::si;
+
+			assert(sigma.size() == fNumberFractions.size());
+
+			std::discrete_distribution channelDist(
+							       nuc_comp::detail::WeightProviderIterator<decltype(fNumberFractions.begin()),
+					decltype(sigma.begin())>(fNumberFractions.begin(),
+							sigma.begin()),
+							       nuc_comp::detail::WeightProviderIterator<decltype(fNumberFractions.begin()),
+							decltype(sigma.end())>(fNumberFractions.end(),
+									sigma.end()));
+
+			auto const iChannel = channelDist(randomStream);
+			return fComponents[iChannel];
+		}
+	};
+
+} // namespace corsika::environment
+
diff --git a/corsika/media/SlidingPlanarExponential.hpp b/corsika/media/SlidingPlanarExponential.hpp
new file mode 100644
index 000000000..264fcf4d2
--- /dev/null
+++ b/corsika/media/SlidingPlanarExponential.hpp
@@ -0,0 +1,62 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/FlatExponential.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Trajectory.hpp>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+namespace corsika {
+
+
+	template <class T>
+	class SlidingPlanarExponential : public BaseExponential<SlidingPlanarExponential<T>>, public T
+	{
+
+		NuclearComposition const nuclComp_;
+		units::si::LengthType const referenceHeight_;
+
+		using Base = BaseExponential<SlidingPlanarExponential<T>>;
+
+	public:
+
+		SlidingPlanarExponential(Point const& p0,
+				units::si::MassDensityType rho0, units::si::LengthType lambda,
+				NuclearComposition nuclComp, units::si::LengthType referenceHeight = units::si::LengthType::zero()):
+					Base(p0, rho0, lambda),
+					nuclComp_(nuclComp),
+	                referenceHeight_(referenceHeight)
+	{}
+
+		inline units::si::MassDensityType
+		GetMassDensity(Point const& p) const override ;
+
+		inline NuclearComposition const&
+		GetNuclearComposition() const override
+		{
+			return nuclComp_;
+		}
+
+		inline units::si::GrammageType
+		IntegratedGrammage( Trajectory<Line> const& line,
+				units::si::LengthType l) const override ;
+
+		inline units::si::LengthType
+		ArclengthFromGrammage( Trajectory<Line> const& line,
+				units::si::GrammageType grammage) const override;
+	};
+
+} // namespace corsika::environment
+
+#include <corsika/detail/media/SlidingPlanarExponential.inl>
diff --git a/corsika/media/Universe.hpp b/corsika/media/Universe.hpp
new file mode 100644
index 000000000..7241b794b
--- /dev/null
+++ b/corsika/media/Universe.hpp
@@ -0,0 +1,26 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/Sphere.hpp>
+#include <limits>
+
+namespace corsika {
+
+  struct Universe : public corsika::Sphere
+  {
+    Universe(corsika::CoordinateSystem const& pCS);
+    inline bool Contains(corsika::Point const&) const override;
+  };
+
+}
+
+#include <corsika/detail/media/Universe.inl>
diff --git a/corsika/media/VolumeTreeNode.hpp b/corsika/media/VolumeTreeNode.hpp
new file mode 100644
index 000000000..f280dba40
--- /dev/null
+++ b/corsika/media/VolumeTreeNode.hpp
@@ -0,0 +1,98 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/IMediumModel.hpp>
+#include <corsika/framework/geometry/Volume.hpp>
+#include <memory>
+#include <vector>
+
+namespace corsika {
+
+  class Empty {}; //<! intended for usage as default template argument
+
+  template <typename TModelProperties = Empty>
+  class VolumeTreeNode
+  {
+
+  public:
+
+    using IModelProperties = TModelProperties;
+    using VTN_type = VolumeTreeNode<IModelProperties>;
+    using VTNUPtr = std::unique_ptr<VolumeTreeNode<IModelProperties>>;
+    using IMPSharedPtr = std::shared_ptr<IModelProperties>;
+    using VolUPtr = std::unique_ptr<corsika::Volume>;
+
+    VolumeTreeNode(VolUPtr pVolume = nullptr):
+    	fGeoVolume(std::move(pVolume))
+    {}
+
+    //! convenience function equivalent to Volume::Contains
+    inline bool Contains(corsika::Point const& p) const;
+
+    inline VolumeTreeNode<IModelProperties> const*
+	Excludes(corsika::Point const& p) const ;
+
+    /** returns a pointer to the sub-VolumeTreeNode which is "responsible" for the given
+     * \class Point \p p, or nullptr iff \p p is not contained in this volume.
+     */
+    inline VolumeTreeNode<IModelProperties> const*
+	GetContainingNode(corsika::Point const& p) const;
+
+
+    /**
+     * Traverses the VolumeTree pre- or post-order and calls the functor  \p func for each
+     * node. \p func takes a reference to VolumeTreeNode as argument. The return value \p
+     * func is ignored.
+     */
+    template <typename TCallable, bool preorder = true>
+    inline void walk(TCallable func) ;
+
+    inline void AddChild(VTNUPtr pChild) ;
+
+    inline void ExcludeOverlapWith(VTNUPtr const& pNode) ;
+
+    inline auto* GetParent() const { return fParentNode; };
+
+    inline auto const& GetChildNodes() const { return fChildNodes; }
+
+    inline auto const& GetExcludedNodes() const { return fExcludedNodes; }
+
+    inline auto const& GetVolume() const { return *fGeoVolume; }
+
+    inline auto const& GetModelProperties() const { return *fModelProperties; }
+
+    inline bool HasModelProperties() const { return fModelProperties.get() != nullptr; }
+
+    template <typename ModelProperties, typename... Args>
+    inline auto SetModelProperties(Args&&... args) {
+      static_assert(std::is_base_of_v<IModelProperties, ModelProperties>,
+                    "unusable model properties type provided");
+
+      fModelProperties = std::make_shared<ModelProperties>(std::forward<Args>(args)...);
+      return fModelProperties;
+    }
+
+    inline void SetModelProperties(IMPSharedPtr ptr) { fModelProperties = ptr; }
+
+    /*
+    template <class MediumType, typename... Args>
+    static auto CreateMedium(Args&&... args) ;
+
+  private:
+    std::vector<VTNUPtr> fChildNodes;
+    std::vector<VolumeTreeNode<IModelProperties> const*> fExcludedNodes;
+    VolumeTreeNode<IModelProperties> const* fParentNode = nullptr;
+    VolUPtr fGeoVolume;
+    IMPSharedPtr fModelProperties;
+  };
+
+} // namespace corsika::environment
+
+#include <corsika/detail/media/VolumeTreeNode.inl>
diff --git a/Processes/Sibyll/Decay.cc b/corsika/modules/Sibyll/Decay.cc
similarity index 92%
rename from Processes/Sibyll/Decay.cc
rename to corsika/modules/Sibyll/Decay.cc
index 8297739b7..844f3fdab 100644
--- a/Processes/Sibyll/Decay.cc
+++ b/corsika/modules/Sibyll/Decay.cc
@@ -11,21 +11,21 @@
 #include <corsika/process/sibyll/ParticleConversion.h>
 #include <corsika/process/sibyll/SibStack.h>
 
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
+#include "../../corsika/setup/SetupStack.hpp"
+#include "../../corsika/setup/SetupTrajectory.hpp"
 
 using std::make_tuple;
 using std::tuple;
 using std::vector;
 
 using namespace corsika;
-using namespace corsika::setup;
+using namespace corsika;
 
-using SetupView = corsika::setup::StackView;
-using SetupProjectile = corsika::setup::StackView::ParticleType;
-using Particle = corsika::setup::Stack::ParticleType;
+using SetupView = corsika::StackView;
+using SetupProjectile = corsika::StackView::ParticleType;
+using SetupParticle = corsika::Stack::ParticleType;
 
-namespace corsika::process::sibyll {
+namespace corsika::sibyll {
 
   Decay::Decay(const bool sibyll_printout_on)
       : sibyll_listing_(sibyll_printout_on) {
@@ -222,11 +222,14 @@ namespace corsika::process::sibyll {
       // FOR NOW: skip particles that have decayed in Sibyll, move to iterator?
       if (psib.HasDecayed()) continue;
       // add to corsika stack
-      view.AddSecondary(make_tuple(process::sibyll::ConvertFromSibyll(psib.GetPID()),
-                                   psib.GetEnergy(), psib.GetMomentum(), decayPoint, t0));
+      vP.AddSecondary(
+          tuple<particles::Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                geometry::Point, units::si::TimeType>{
+              process::sibyll::ConvertFromSibyll(psib.GetPID()), psib.GetEnergy(),
+              psib.GetMomentum(), decayPoint, t0});
     }
     // empty sibyll stack
     ss.Clear();
   }
 
-} // namespace corsika::process::sibyll
+} // namespace corsika::sibyll
diff --git a/Processes/Sibyll/Interaction.cc b/corsika/modules/Sibyll/Interaction.cc
similarity index 95%
rename from Processes/Sibyll/Interaction.cc
rename to corsika/modules/Sibyll/Interaction.cc
index aa222b7f6..219494e05 100644
--- a/Processes/Sibyll/Interaction.cc
+++ b/corsika/modules/Sibyll/Interaction.cc
@@ -8,28 +8,30 @@
 
 #include <corsika/process/sibyll/Interaction.h>
 
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/geometry/FourVector.h>
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
 #include <corsika/process/sibyll/ParticleConversion.h>
 #include <corsika/process/sibyll/SibStack.h>
-#include <corsika/process/sibyll/sibyll2.3d.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
-#include <corsika/utl/COMBoost.h>
+#include <corsika/process/sibyll/sibyll2.3c.h>
+#include <corsika/framework/utility/COMBoost.hpp>
 
 #include <tuple>
 
-using std::make_tuple;
+#include "../../corsika/setup/SetupStack.hpp"
+#include "../../corsika/setup/SetupTrajectory.hpp"
+
+using std::cout;
+using std::endl;
 using std::tuple;
 
 using namespace corsika;
-using namespace corsika::setup;
-using Particle = setup::Stack::StackIterator;
-using SetupView = setup::StackView;
+using namespace corsika;
+using SetupParticle = setup::Stack::StackIterator;
+using SetupProjectile = setup::StackView::StackIterator;
 using Track = Trajectory;
 
-namespace corsika::process::sibyll {
+namespace corsika::sibyll {
 
   bool Interaction::initialized_ = false;
 
@@ -356,4 +358,4 @@ namespace corsika::process::sibyll {
     return process::EProcessReturn::eOk;
   }
 
-} // namespace corsika::process::sibyll
+} // namespace corsika::sibyll
diff --git a/Processes/Sibyll/NuclearInteraction.cc b/corsika/modules/Sibyll/NuclearInteraction.cc
similarity index 86%
rename from Processes/Sibyll/NuclearInteraction.cc
rename to corsika/modules/Sibyll/NuclearInteraction.cc
index 4c22491a4..2ec18ed40 100644
--- a/Processes/Sibyll/NuclearInteraction.cc
+++ b/corsika/modules/Sibyll/NuclearInteraction.cc
@@ -9,31 +9,31 @@
 #include <corsika/process/sibyll/Interaction.h>
 #include <corsika/process/sibyll/NuclearInteraction.h>
 
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/geometry/FourVector.h>
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
 #include <corsika/process/sibyll/nuclib.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <corsika/utl/COMBoost.h>
-
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
-
-#include <corsika/logging/Logging.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/utility/COMBoost.hpp>
 
 #include <set>
 #include <sstream>
 
-using std::make_tuple;
+#include "../../corsika/setup/SetupStack.hpp"
+#include "../../corsika/setup/SetupTrajectory.hpp"
+
+using std::cout;
+using std::endl;
 using std::tuple;
 using std::vector;
 
 using namespace corsika;
-using Particle = corsika::setup::Stack::ParticleType; // StackIterator; // ParticleType;
-using View = corsika::setup::StackView;               // StackView::ParticleType;
-using Track = setup::Trajectory;
+using namespace corsika;
+using Particle = Stack::ParticleType;        // StackIterator; // ParticleType;
+using Projectile = StackView::StackIterator; // StackView::ParticleType;
+using Track = Trajectory;
 
-namespace corsika::process::sibyll {
+namespace corsika::sibyll {
 
   template <>
   NuclearInteraction<setup::Environment>::~NuclearInteraction() {
@@ -42,9 +42,9 @@ namespace corsika::process::sibyll {
   }
 
   template <>
-  void NuclearInteraction<setup::Environment>::PrintCrossSectionTable(
-      corsika::particles::Code pCode) {
-    using namespace corsika::particles;
+  void NuclearInteraction<SetupEnvironment>::PrintCrossSectionTable(
+      corsika::Code pCode) {
+    using namespace corsika;
     const int k = targetComponentsIndex_.at(pCode);
     Code pNuclei[] = {Code::Helium, Code::Lithium7, Code::Oxygen,
                       Code::Neon,   Code::Argon,    Code::Iron};
@@ -67,8 +67,8 @@ namespace corsika::process::sibyll {
   }
 
   template <>
-  void NuclearInteraction<setup::Environment>::InitializeNuclearCrossSections() {
-    using namespace corsika::particles;
+  void NuclearInteraction<SetupEnvironment>::InitializeNuclearCrossSections() {
+    using namespace corsika;
     using namespace units::si;
 
     auto& universe = *(environment_.GetUniverse());
@@ -136,7 +136,7 @@ namespace corsika::process::sibyll {
   units::si::CrossSectionType
   NuclearInteraction<setup::Environment>::ReadCrossSectionTable(
       const int ia, particles::Code pTarget, units::si::HEPEnergyType elabnuc) {
-    using namespace corsika::particles;
+    using namespace corsika;
     using namespace units::si;
     const int ib = targetComponentsIndex_.at(pTarget) + 1; // table index in fortran
     auto const ECoMNuc = sqrt(2. * corsika::units::constants::nucleonMass * elabnuc);
@@ -223,14 +223,14 @@ namespace corsika::process::sibyll {
     // read from cross section code table
 
     // FOR NOW: assume target is at rest
-    corsika::stack::MomentumVector pTarget(rootCS, {0.0_GeV, 0.0_GeV, 0.0_GeV});
+    corsika::MomentumVector pTarget(rootCS, {0.0_GeV, 0.0_GeV, 0.0_GeV});
 
     // total momentum and energy
     HEPEnergyType Elab = vP.GetEnergy() + constants::nucleonMass;
     unsigned int const nuclA = vP.GetNuclearA();
     auto const ElabNuc = vP.GetEnergy() / nuclA;
 
-    corsika::stack::MomentumVector pTotLab(rootCS, {0.0_GeV, 0.0_GeV, 0.0_GeV});
+    corsika::MomentumVector pTotLab(rootCS, {0.0_GeV, 0.0_GeV, 0.0_GeV});
     pTotLab += vP.GetMomentum();
     pTotLab += pTarget;
     auto const pTotLabNorm = pTotLab.norm();
@@ -382,7 +382,7 @@ namespace corsika::process::sibyll {
     // target is always at rest
     const auto eTargetNucLab = 0_GeV + constants::nucleonMass;
     const auto pTargetNucLab =
-        corsika::stack::MomentumVector(rootCS, 0_GeV, 0_GeV, 0_GeV);
+        corsika::MomentumVector(rootCS, 0_GeV, 0_GeV, 0_GeV);
     const FourVector PtargNucLab(eTargetNucLab, pTargetNucLab);
 
     C8LOG_DEBUG(
@@ -559,9 +559,11 @@ namespace corsika::process::sibyll {
                                            Plab.GetSpaceLikeComponents(), pOrig, tOrig));
       else
         // add nucleus
-        projectile.AddSecondary(make_tuple(specCode, Plab.GetTimeLikeComponent(),
-                                           Plab.GetSpaceLikeComponents(), pOrig, tOrig,
-                                           nuclA, nuclZ));
+        vP.AddSecondary(tuple<particles::Code, units::si::HEPEnergyType,
+                              corsika::MomentumVector, geometry::Point,
+                              units::si::TimeType, unsigned short, unsigned short>{
+            specCode, Plab.GetTimeLikeComponent(), Plab.GetSpaceLikeComponents(), pOrig,
+            tOrig, nuclA, nuclZ});
     }
 
     // add elastic nucleons to corsika stack
@@ -578,8 +580,11 @@ namespace corsika::process::sibyll {
       const double mass_ratio = particles::GetMass(elaNucCode) / ProjMass;
       auto const Plab = PprojLab * mass_ratio;
 
-      projectile.AddSecondary(make_tuple(elaNucCode, Plab.GetTimeLikeComponent(),
-                                         Plab.GetSpaceLikeComponents(), pOrig, tOrig));
+      vP.AddSecondary(
+          tuple<particles::Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                geometry::Point, units::si::TimeType>{
+              elaNucCode, Plab.GetTimeLikeComponent(), Plab.GetSpaceLikeComponents(),
+              pOrig, tOrig});
     }
 
     // add inelastic interactions
@@ -588,25 +593,15 @@ namespace corsika::process::sibyll {
       // TODO: sample neutron or proton
       auto pCode = particles::Proton::GetCode();
       // temporarily add to stack, will be removed after interaction in DoInteraction
-      C8LOG_DEBUG(fmt::format("inelastic interaction no. {}", j));
-      setup::Stack nucleonStack;
-      // auto inelasticNucleon = projectile.AddSecondary(
-      auto inelasticNucleon = nucleonStack.AddParticle(
-          make_tuple(pCode, PprojNucLab.GetTimeLikeComponent(),
-                     PprojNucLab.GetSpaceLikeComponents(), pOrig, tOrig));
-      inelasticNucleon.SetNode(projectile.GetNode());
-      // create inelastic interaction for each nucleon
-      C8LOG_TRACE("calling HadronicInteraction...");
-      // create new StackView for each of the nucleons
-      View nucleon_secondaries(inelasticNucleon);
-      // all inner hadronic event generator
-      hadronicInteraction_.DoInteraction(nucleon_secondaries);
-      // inelasticNucleon.Delete(); // this is just a temporary object
-      for (const auto& pSec : nucleon_secondaries) {
-        projectile.AddSecondary(make_tuple(pSec.GetPID(), pSec.GetEnergy(),
-                                           pSec.GetMomentum(), pSec.GetPosition(),
-                                           pSec.GetTime()));
-      }
+      cout << "inelastic interaction no. " << j << endl;
+      auto inelasticNucleon = vP.AddSecondary(
+          tuple<particles::Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                geometry::Point, units::si::TimeType>{
+              pCode, PprojNucLab.GetTimeLikeComponent(),
+              PprojNucLab.GetSpaceLikeComponents(), pOrig, tOrig});
+      // create inelastic interaction
+      cout << "calling HadronicInteraction..." << endl;
+      hadronicInteraction_.DoInteraction(inelasticNucleon);
     }
 
     C8LOG_DEBUG("NuclearInteraction: DoInteraction: done");
@@ -614,27 +609,4 @@ namespace corsika::process::sibyll {
     return process::EProcessReturn::eOk;
   }
 
-  template <>
-  NuclearInteraction<setup::Environment>::NuclearInteraction(
-      process::sibyll::Interaction& hadint, setup::Environment const& env)
-      : environment_(env)
-      , hadronicInteraction_(hadint) {
-
-    // initialize hadronic interaction module
-    // TODO: safe to run multiple initializations?
-
-    // check compatibility of energy ranges, someone could try to use low-energy model..
-    if (!hadronicInteraction_.IsValidCoMEnergy(GetMinEnergyPerNucleonCoM()) ||
-        !hadronicInteraction_.IsValidCoMEnergy(GetMaxEnergyPerNucleonCoM()))
-      throw std::runtime_error(
-          "NuclearInteraction: hadronic interaction model incompatible!");
-
-    // initialize nuclib
-    // TODO: make sure this does not overlap with sibyll
-    nuc_nuc_ini_();
-
-    // initialize cross sections
-    InitializeNuclearCrossSections();
-  }
-
-} // namespace corsika::process::sibyll
+} // namespace corsika::sibyll
diff --git a/Processes/Sibyll/ParticleConversion.cc b/corsika/modules/Sibyll/ParticleConversion.cc
similarity index 89%
rename from Processes/Sibyll/ParticleConversion.cc
rename to corsika/modules/Sibyll/ParticleConversion.cc
index a6cf965cb..2e73f3a66 100644
--- a/Processes/Sibyll/ParticleConversion.cc
+++ b/corsika/modules/Sibyll/ParticleConversion.cc
@@ -6,10 +6,10 @@
  * the license.
  */
 
-#include <corsika/particles/ParticleProperties.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
 #include <corsika/process/sibyll/ParticleConversion.h>
 
-using namespace corsika::process::sibyll;
+using namespace corsika::sibyll;
 
 corsika::units::si::HEPMassType corsika::process::sibyll::GetSibyllMass(
     corsika::particles::Code const pCode) {
diff --git a/Processes/Sibyll/code_generator.py b/corsika/modules/Sibyll/code_generator.py
similarity index 96%
rename from Processes/Sibyll/code_generator.py
rename to corsika/modules/Sibyll/code_generator.py
index 7044c95e0..22cb11022 100755
--- a/Processes/Sibyll/code_generator.py
+++ b/corsika/modules/Sibyll/code_generator.py
@@ -106,14 +106,14 @@ def generate_sibyll2corsika(particle_db) :
             pDict[sib_code] = identifier
     
     nPart = max(pDict.keys()) - min(pDict.keys()) + 1
-    string += "std::array<corsika::particles::Code, {:d}> constexpr sibyll2corsika = {{\n".format(nPart)
+    string += "std::array<corsika::Code, {:d}> constexpr sibyll2corsika = {{\n".format(nPart)
     
     for iPart in range(nPart) :
         if iPart in pDict:
             identifier = pDict[iPart]
         else:
             identifier = "Unknown"
-        string += "  corsika::particles::Code::{:s}, \n".format(identifier)
+        string += "  corsika::Code::{:s}, \n".format(identifier)
     
     string += "};\n"
     return string
diff --git a/Processes/Sibyll/sibyll_codes.dat b/corsika/modules/Sibyll/sibyll_codes.dat
similarity index 100%
rename from Processes/Sibyll/sibyll_codes.dat
rename to corsika/modules/Sibyll/sibyll_codes.dat
diff --git a/Processes/Sibyll/testSibyll.cc b/corsika/modules/Sibyll/testSibyll.cc
similarity index 76%
rename from Processes/Sibyll/testSibyll.cc
rename to corsika/modules/Sibyll/testSibyll.cc
index c229e8861..cc9245629 100644
--- a/Processes/Sibyll/testSibyll.cc
+++ b/corsika/modules/Sibyll/testSibyll.cc
@@ -11,20 +11,18 @@
 #include <corsika/process/sibyll/NuclearInteraction.h>
 #include <corsika/process/sibyll/ParticleConversion.h>
 
-#include <corsika/random/RNGManager.h>
+#include <corsika/framework/random/RNGManager.hpp>
 
-#include <corsika/particles/ParticleProperties.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
 
-#include <corsika/geometry/Point.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <catch2/catch.hpp>
 #include <tuple>
 
 using namespace corsika;
-using namespace corsika::process::sibyll;
-using namespace corsika::units;
-using namespace corsika::units::si;
+using namespace corsika::sibyll;
 
 TEST_CASE("Sibyll", "[processes]") {
 
@@ -67,21 +65,20 @@ TEST_CASE("Sibyll", "[processes]") {
   }
 }
 
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
 
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/setup/SetupEnvironment.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include "../../corsika/setup/SetupStack.hpp"
+#include "../../corsika/setup/SetupTrajectory.hpp"
 
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/HomogeneousMedium.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/environment/UniformMagneticField.h>
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/HomogeneousMedium.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/process/sibyll/sibyll2.3c.h>
 
 using namespace corsika::units::si;
 using namespace corsika::units;
@@ -111,7 +108,19 @@ TEST_CASE("SibyllInterface", "[processes]") {
         cs, {P0, 0_eV, 0_eV}); // this is secret knowledge about setupStack
     setup::StackView& view = *viewPtr;
 
-    auto particle = stack->first();
+    setup::Stack stack;
+    const HEPEnergyType E0 = 100_GeV;
+    HEPMomentumType P0 =
+        sqrt(E0 * E0 - particles::Proton::GetMass() * particles::Proton::GetMass());
+    auto plab = corsika::MomentumVector(cs, {0_GeV, 0_GeV, -P0});
+    geometry::Point pos(cs, 0_m, 0_m, 0_m);
+    auto particle = stack.AddParticle(
+        std::tuple<particles::Code, units::si::HEPEnergyType,
+                   corsika::MomentumVector, geometry::Point, units::si::TimeType>{
+            particles::Code::Proton, E0, plab, pos, 0_ns});
+    particle.SetNode(nodePtr);
+    corsika::SecondaryView view(particle);
+    auto projectile = view.GetProjectile();
 
     Interaction model;
 
@@ -187,10 +196,21 @@ TEST_CASE("SibyllInterface", "[processes]") {
 
   SECTION("NuclearInteractionInterface") {
 
-    auto [stack, viewPtr] =
-        setup::testing::setupStack(particles::Code::Nucleus, 4, 2, 500_GeV, nodePtr, cs);
-    setup::StackView& view = *viewPtr;
-    auto particle = stack->first();
+    setup::Stack stack;
+    const HEPEnergyType E0 = 400_GeV;
+    HEPMomentumType P0 =
+        sqrt(E0 * E0 - particles::Proton::GetMass() * particles::Proton::GetMass());
+    auto plab = corsika::MomentumVector(cs, {0_GeV, 0_GeV, -P0});
+    geometry::Point pos(cs, 0_m, 0_m, 0_m);
+
+    auto particle =
+        stack.AddParticle(std::tuple<particles::Code, units::si::HEPEnergyType,
+                                     corsika::MomentumVector, geometry::Point,
+                                     units::si::TimeType, unsigned short, unsigned short>{
+            particles::Code::Nucleus, E0, plab, pos, 0_ns, 4, 2});
+    particle.SetNode(nodePtr);
+    corsika::SecondaryView view(particle);
+    auto projectile = view.GetProjectile();
 
     Interaction hmodel;
     NuclearInteraction model(hmodel, *env);
@@ -203,11 +223,18 @@ TEST_CASE("SibyllInterface", "[processes]") {
 
   SECTION("DecayInterface") {
 
-    auto [stackPtr, viewPtr] =
-        setup::testing::setupStack(particles::Code::Lambda0, 0, 0, 10_GeV, nodePtr, cs);
-    setup::StackView& view = *viewPtr;
-    auto& stack = *stackPtr;
-    auto particle = stack.first();
+    setup::Stack stack;
+    const HEPEnergyType E0 = 10_GeV;
+    HEPMomentumType P0 =
+        sqrt(E0 * E0 - particles::Proton::GetMass() * particles::Proton::GetMass());
+    auto plab = corsika::MomentumVector(cs, {0_GeV, 0_GeV, -P0});
+    geometry::Point pos(cs, 0_m, 0_m, 0_m);
+    auto particle = stack.AddParticle(
+        std::tuple<particles::Code, units::si::HEPEnergyType,
+                   corsika::MomentumVector, geometry::Point, units::si::TimeType>{
+            particles::Code::Lambda0, E0, plab, pos, 0_ns});
+    corsika::SecondaryView view(particle);
+    auto projectile = view.GetProjectile();
 
     Decay model;
     model.PrintDecayConfig();
diff --git a/corsika/modules/UrQMD/UrQMD.cc b/corsika/modules/UrQMD/UrQMD.cc
new file mode 100644
index 000000000..a43308845
--- /dev/null
+++ b/corsika/modules/UrQMD/UrQMD.cc
@@ -0,0 +1,385 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/framework/geometry/QuantityVector.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/process/urqmd/UrQMD.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <algorithm>
+#include <array>
+#include <cassert>
+#include <cmath>
+#include <fstream>
+#include <functional>
+#include <random>
+#include <sstream>
+
+using namespace corsika::UrQMD;
+using namespace corsika::units::si;
+
+UrQMD::UrQMD() { iniurqmd_(); }
+
+using SetupStack = corsika::Stack;
+using SetupParticle = corsika::Stack::StackIterator;
+using SetupProjectile = corsika::StackView::StackIterator;
+
+CrossSectionType UrQMD::GetCrossSection(particles::Code vProjectileCode,
+                                        corsika::Code vTargetCode,
+                                        HEPEnergyType vLabEnergy, int vAProjectile = 1) {
+  // the following is a translation of ptsigtot() into C++
+  if (vProjectileCode != particles::Code::Nucleus &&
+      !IsNucleus(vTargetCode)) { // both particles are "special"
+    auto const mProj = particles::GetMass(vProjectileCode);
+    auto const mTar = particles::GetMass(vTargetCode);
+    double sqrtS = sqrt(units::si::detail::static_pow<2>(mProj) +
+                        units::si::detail::static_pow<2>(mTar) + 2 * vLabEnergy * mTar) *
+                   (1 / 1_GeV);
+
+    // we must set some UrQMD globals first...
+    auto const [ityp, iso3] = ConvertToUrQMD(projectileCode);
+    inputs_.spityp[0] = ityp;
+    inputs_.spiso3[0] = iso3;
+
+    auto const [itypTar, iso3Tar] = ConvertToUrQMD(targetCode);
+    inputs_.spityp[1] = itypTar;
+    inputs_.spiso3[1] = iso3Tar;
+
+    int one = 1;
+    int two = 2;
+    int three = 3;
+
+    double const totalXS = sigtot_(one, two, sqrtS);
+
+    // subtract elastic cross-section as in ptsigtot()
+    int itypmn, itypmx, iso3mn, iso3mx;
+    if (ityp < itypTar) {
+      itypmn = ityp;
+      itypmx = itypTar;
+
+      iso3mn = iso3;
+      iso3mx = iso3Tar;
+    } else {
+      itypmx = ityp;
+      itypmn = itypTar;
+
+      iso3mx = iso3;
+      iso3mn = iso3Tar;
+    }
+
+    int isigline = collclass_(itypmx, iso3mx, itypmn, iso3mn);
+    int iline = readsigmaln_(three, one, isigline);
+    double sigEl;
+    double massProj = mProj / 1_GeV;
+    double massTar = mTar / 1_GeV;
+
+    crossx_(iline, sqrtS, ityp, iso3, massProj, itypTar, iso3Tar, massTar, sigEl);
+
+    if (totalXS > sigEl) {
+      return (totalXS - sigEl) * 1_mb;
+    } else {
+      return sigEl * 0_mb;
+    }
+  } else {
+    int const Ap = projectileA;
+    int const At = IsNucleus(targetCode) ? particles::GetNucleusA(targetCode) : 1;
+
+    double const maxImpact = nucrad_(Ap) + nucrad_(At) + 2 * options_.CTParam[30 - 1];
+    return 10_mb * M_PI * units::static_pow<2>(maxImpact);
+    // is a constant cross-section really reasonable?
+  }
+}
+
+template <typename TParticle> // need template here, as this is called both with
+                              // SetupParticle as well as SetupProjectile
+CrossSectionType UrQMD::GetCrossSection(TParticle const& vProjectile,
+                                        corsika::Code vTargetCode) const {
+  // TODO: return 0 for non-hadrons?
+
+  auto const projectileCode = vProjectile.GetPID();
+  auto const projectileEnergyLab = vProjectile.GetEnergy();
+
+  if (projectileCode == particles::Code::K0Long) {
+    return 0.5 *
+           (GetCrossSection(particles::Code::K0, vTargetCode, projectileEnergyLab) +
+            GetCrossSection(particles::Code::K0Bar, vTargetCode, projectileEnergyLab));
+  }
+
+  return GetTabulatedCrossSection(projectileCode, targetCode, projectileEnergyLab);
+}
+
+bool UrQMD::CanInteract(particles::Code code) const {
+  // According to the manual, UrQMD can use all mesons, baryons and nucleons
+  // which are modeled also as input particles. I think it is safer to accept
+  // only the usual long-lived species as input.
+
+  // Interactions with nucleus projectiles are possible in principle with UrQMD
+  // but right now we don't have access to the inelastic (production) cross-section,
+  // so we unfortunately have to forbid these interactions for the time being.
+
+  static particles::Code const validProjectileCodes[] = {
+      particles::Code::Proton,      particles::Code::AntiProton, particles::Code::Neutron,
+      particles::Code::AntiNeutron, particles::Code::PiPlus,     particles::Code::PiMinus,
+      particles::Code::KPlus,       particles::Code::KMinus,     particles::Code::K0Short,
+      particles::Code::K0Long};
+
+  return std::find(std::cbegin(validProjectileCodes), std::cend(validProjectileCodes),
+                   code) != std::cend(validProjectileCodes);
+}
+
+GrammageType UrQMD::GetInteractionLength(SetupParticle const& particle) const {
+  if (!CanInteract(particle.GetPID())) {
+    // we could do the canInteract check in GetCrossSection, too but if
+    // we do it here we have the advantage of avoiding the loop
+    return std::numeric_limits<double>::infinity() * 1_g / (1_cm * 1_cm);
+  }
+
+  auto const& mediumComposition =
+      particle.GetNode()->GetModelProperties().GetNuclearComposition();
+  using namespace std::placeholders;
+
+  CrossSectionType const weightedProdCrossSection = mediumComposition.WeightedSum(
+      std::bind(&UrQMD::GetCrossSection<decltype(particle)>, this, particle, _1));
+
+  return mediumComposition.GetAverageMassNumber() * units::constants::u /
+         weightedProdCrossSection;
+}
+
+corsika::EProcessReturn UrQMD::DoInteraction(SetupProjectile& vProjectile) {
+  using namespace units::si;
+
+  auto const projectile = view.GetProjectile();
+
+  auto projectileCode = projectile.GetPID();
+  auto const projectileEnergyLab = projectile.GetEnergy();
+  auto const& projectileMomentumLab = projectile.GetMomentum();
+  auto const& projectilePosition = projectile.GetPosition();
+  auto const projectileTime = projectile.GetTime();
+
+  C8LOG_DEBUG("UrQMD::DoInteraction pid={} E={} GeV", projectileCode,
+              projectileEnergyLab / 1_GeV);
+
+  // sample target particle
+  auto const& mediumComposition =
+      projectile.GetNode()->GetModelProperties().GetNuclearComposition();
+  auto const componentCrossSections = std::invoke([&]() {
+    auto const& components = mediumComposition.GetComponents();
+    std::vector<CrossSectionType> crossSections;
+    crossSections.reserve(components.size());
+
+    for (auto const c : components) {
+      crossSections.push_back(GetCrossSection(projectile, c));
+    }
+
+    return crossSections;
+  });
+
+  auto const targetCode = mediumComposition.SampleTarget(componentCrossSections, rng_);
+  auto const targetA = particles::GetNucleusA(targetCode);
+  auto const targetZ = particles::GetNucleusZ(targetCode);
+
+  inputs_.nevents = 1;
+  sys_.eos = 0; // could be configurable in principle
+  inputs_.outsteps = 1;
+  sys_.nsteps = 1;
+
+  // initialization regarding projectile
+  if (particles::Code::Nucleus == projectileCode) {
+    // is this everything?
+    inputs_.prspflg = 0;
+
+    sys_.Ap = projectile.GetNuclearA();
+    sys_.Zp = projectile.GetNuclearZ();
+    rsys_.ebeam = (projectileEnergyLab - projectile.GetMass()) * (1 / 1_GeV) /
+                  projectile.GetNuclearA();
+
+    rsys_.bdist = nucrad_(targetA) + nucrad_(sys_.Ap) + 2 * options_.CTParam[30 - 1];
+
+    int const id = 1;
+    cascinit_(sys_.Zp, sys_.Ap, id);
+  } else {
+    inputs_.prspflg = 1;
+    sys_.Ap = 1; // even for non-baryons this has to be set, see vanilla UrQMD.f
+    rsys_.bdist = nucrad_(targetA) + nucrad_(1) + 2 * options_.CTParam[30 - 1];
+    rsys_.ebeam = (projectileEnergyLab - projectile.GetMass()) * (1 / 1_GeV);
+
+    if (projectileCode == particles::Code::K0Long ||
+        projectileCode == particles::Code::K0Short) {
+      projectileCode = booleanDist_(rng_) ? particles::Code::K0 : particles::Code::K0Bar;
+    }
+
+    auto const [ityp, iso3] = ConvertToUrQMD(projectileCode);
+    // todo: conversion of K_long/short into strong eigenstates;
+    inputs_.spityp[0] = ityp;
+    inputs_.spiso3[0] = iso3;
+  }
+
+  // initilazation regarding target
+  if (particles::IsNucleus(targetCode)) {
+    sys_.Zt = targetZ;
+    sys_.At = targetA;
+    inputs_.trspflg = 0; // nucleus as target
+    int const id = 2;
+    cascinit_(sys_.Zt, sys_.At, id);
+  } else {
+    inputs_.trspflg = 1; // special particle as target
+    auto const [ityp, iso3] = ConvertToUrQMD(targetCode);
+    inputs_.spityp[1] = ityp;
+    inputs_.spiso3[1] = iso3;
+  }
+
+  int iflb = 0; // flag for retrying interaction in case of empty event, 0 means retry
+  urqmd_(iflb);
+
+  // now retrieve secondaries from UrQMD
+  auto const& originalCS = projectileMomentumLab.GetCoordinateSystem();
+  geometry::CoordinateSystem const zAxisFrame =
+      originalCS.RotateToZ(projectileMomentumLab);
+
+  for (int i = 0; i < sys_.npart; ++i) {
+    auto code = ConvertFromUrQMD(isys_.ityp[i], isys_.iso3[i]);
+    if (code == particles::Code::K0 || code == particles::Code::K0Bar) {
+      code = booleanDist_(rng_) ? particles::Code::K0Short : particles::Code::K0Long;
+    }
+
+    // "coor_.p0[i] * 1_GeV" is likely off-shell as UrQMD doesn't preserve masses well
+    auto momentum = geometry::Vector(
+        zAxisFrame,
+        geometry::QuantityVector<dimensionless_d>{coor_.px[i], coor_.py[i], coor_.pz[i]} *
+            1_GeV);
+
+    auto const energy = sqrt(momentum.squaredNorm() + square(particles::GetMass(code)));
+
+    momentum.rebase(originalCS); // transform back into standard lab frame
+    C8LOG_DEBUG(" Secondary {} code {} p={} GeV", i, code,
+                momentum.GetComponents() / 1_GeV);
+
+    view.AddSecondary(
+        std::make_tuple(code, energy, momentum, projectilePosition, projectileTime));
+  }
+
+  C8LOG_DEBUG("UrQMD generated {} secondaries!", sys_.npart);
+
+  return process::EProcessReturn::eOk;
+}
+
+/**
+ * the random number generator function of UrQMD
+ */
+double corsika::UrQMD::ranf_(int&) {
+  static corsika::RNG& rng =
+      corsika::RNGManager::GetInstance().GetRandomStream("UrQMD");
+  static std::uniform_real_distribution<double> dist;
+
+  return dist(rng);
+}
+
+corsika::Code corsika::UrQMD::ConvertFromUrQMD(int vItyp, int vIso3) {
+  int const pdgInt =
+      pdgid_(vItyp, vIso3); // use the conversion function provided by UrQMD
+  if (pdgInt == 0) {        // pdgid_ returns 0 on error
+    throw std::runtime_error("UrQMD pdgid() returned 0");
+  }
+  auto const pdg = static_cast<particles::PDGCode>(pdgInt);
+  return particles::ConvertFromPDG(pdg);
+}
+
+std::pair<int, int> corsika::UrQMD::ConvertToUrQMD(
+    corsika::Code code) {
+  static const std::map<int, std::pair<int, int>> mapPDGToUrQMD{
+      // data mostly from github.com/afedynitch/ParticleDataTool
+      {22, {100, 0}},      // gamma
+      {111, {101, 0}},     // pi0
+      {211, {101, 2}},     // pi+
+      {-211, {101, -2}},   // pi-
+      {321, {106, 1}},     // K+
+      {-321, {-106, -1}},  // K-
+      {311, {106, -1}},    // K0
+      {-311, {-106, 1}},   // K0bar
+      {2212, {1, 1}},      // p
+      {2112, {1, -1}},     // n
+      {-2212, {-1, -1}},   // pbar
+      {-2112, {-1, 1}},    // nbar
+      {221, {102, 0}},     // eta
+      {213, {104, 2}},     // rho+
+      {-213, {104, -2}},   // rho-
+      {113, {104, 0}},     // rho0
+      {323, {108, 2}},     // K*+
+      {-323, {108, -2}},   // K*-
+      {313, {108, 0}},     // K*0
+      {-313, {-108, 0}},   // K*0-bar
+      {223, {103, 0}},     // omega
+      {333, {109, 0}},     // phi
+      {3222, {40, 2}},     // Sigma+
+      {3212, {40, 0}},     // Sigma0
+      {3112, {40, -2}},    // Sigma-
+      {3322, {49, 0}},     // Xi0
+      {3312, {49, -1}},    // Xi-
+      {3122, {27, 0}},     // Lambda0
+      {2224, {17, 4}},     // Delta++
+      {2214, {17, 2}},     // Delta+
+      {2114, {17, 0}},     // Delta0
+      {1114, {17, -2}},    // Delta-
+      {3224, {41, 2}},     // Sigma*+
+      {3214, {41, 0}},     // Sigma*0
+      {3114, {41, -2}},    // Sigma*-
+      {3324, {50, 0}},     // Xi*0
+      {3314, {50, -1}},    // Xi*-
+      {3334, {55, 0}},     // Omega-
+      {411, {133, 2}},     // D+
+      {-411, {133, -2}},   // D-
+      {421, {133, 0}},     // D0
+      {-421, {-133, 0}},   // D0-bar
+      {441, {107, 0}},     // etaC
+      {431, {138, 1}},     // Ds+
+      {-431, {138, -1}},   // Ds-
+      {433, {139, 1}},     // Ds*+
+      {-433, {139, -1}},   // Ds*-
+      {413, {134, 1}},     // D*+
+      {-413, {134, -1}},   // D*-
+      {10421, {134, 0}},   // D*0
+      {-10421, {-134, 0}}, // D*0-bar
+      {443, {135, 0}},     // jpsi
+  };
+
+  return mapPDGToUrQMD.at(static_cast<int>(GetPDG(code)));
+}
+
+void UrQMD::readXSFile(std::string const& filename) {
+  std::ifstream file(filename, std::ios::in);
+
+  if (!file.is_open()) { throw std::runtime_error(filename + " could not be opened."); }
+
+  std::string line;
+
+  std::getline(file, line);
+  std::stringstream ss(line);
+
+  char dummy;
+  int nTargets, nProjectiles, nSupports;
+  ss >> dummy >> nTargets >> nProjectiles >> nSupports;
+
+  decltype(xs_interp_support_table_)::extent_gen extents;
+  xs_interp_support_table_.resize(extents[nProjectiles][nTargets][nSupports]);
+
+  for (int i = 0; i < nTargets; ++i) {
+    for (int j = 0; j < nProjectiles; ++j) {
+      for (int k = 0; k < nSupports; ++k) {
+        std::getline(file, line);
+        std::stringstream s(line);
+        double energy, sigma;
+        s >> energy >> sigma;
+        xs_interp_support_table_[j][i][k] = sigma * 1_mb;
+      }
+
+      std::getline(file, line);
+      std::getline(file, line);
+    }
+  }
+}
diff --git a/corsika/modules/UrQMD/UrQMD.h b/corsika/modules/UrQMD/UrQMD.h
new file mode 100644
index 000000000..61a23b0ef
--- /dev/null
+++ b/corsika/modules/UrQMD/UrQMD.h
@@ -0,0 +1,148 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <array>
+#include <random>
+#include <string>
+#include <utility>
+#include "../../corsika/setup/SetupStack.hpp"
+
+namespace corsika::UrQMD {
+  class UrQMD : public corsika::InteractionProcess<UrQMD> {
+  public:
+    UrQMD(std::string const& path = utl::CorsikaData("UrQMD/UrQMD-1.3.1-xs.dat"));
+    corsika::units::si::GrammageType GetInteractionLength(
+        corsika::Stack::StackIterator&) const;
+
+    template <typename TParticle>
+    corsika::units::si::CrossSectionType GetCrossSection(TParticle const&,
+                                                         corsika::Code) const;
+
+    corsika::EProcessReturn DoInteraction(
+        corsika::StackView::StackIterator&);
+
+    bool CanInteract(particles::Code) const;
+
+  private:
+    static corsika::units::si::CrossSectionType GetCrossSection(
+        particles::Code, particles::Code, corsika::units::si::HEPEnergyType, int);
+    corsika::RNG& fRNG =
+        corsika::RNGManager::GetInstance().GetRandomStream("UrQMD");
+
+    corsika::random::RNG& rng_ =
+        corsika::random::RNGManager::GetInstance().GetRandomStream("urqmd");
+
+    std::uniform_int_distribution<int> booleanDist_{0, 1};
+    boost::multi_array<corsika::units::si::CrossSectionType, 3> xs_interp_support_table_;
+  };
+
+  namespace details::constants {
+    // from coms.f
+    int constexpr nmax = 500;
+
+    // from options.f
+    int constexpr numcto = 400;
+    int constexpr numctp = 400;
+
+    // from inputs.f
+    int constexpr aamax = 300;
+
+  } // namespace details::constants
+
+  template <typename T>
+  using nmaxArray = std::array<T, details::constants::nmax>;
+  using nmaxIntArray = nmaxArray<int>;
+  using nmaxDoubleArray = nmaxArray<double>;
+
+  extern "C" {
+  // FORTRAN functions defined in UrQMD
+  void iniurqmdc8_();
+  double ranf_(int&);
+  void cascinit_(int const&, int const&, int const&);
+  double nucrad_(int const&);
+  void urqmd_(int&);
+  int pdgid_(int const&, int const&);
+  double sigtot_(int&, int&, double&);
+  int collclass_(int&, int&, int&, int&);
+  double crossx_(int const&, double const&, int const&, int const&, double const&,
+                 int const&, int const&, double const&, double&);
+  int readsigmaln_(int const&, int const&, int const&);
+
+  // defined in coms.f
+  extern struct {
+    int npart, nbar, nmes, ctag, nsteps, uid_cnt, ranseed, event;
+    int Ap; // projectile mass number (in case of nucleus)
+    int At; // target mass number (in case of nucleus)
+    int Zp; // projectile charge number (in case of nucleus)
+    int Zt; // target charge number (in case of nucleus)
+    int eos, dectag, NHardRes, NSoftRes, NDecRes, NElColl, NBlColl;
+  } sys_;
+
+  extern struct {
+    double time, acttime, bdist, bimp, bmin;
+    double ebeam; // lab-frame energy of projectile
+    double ecm;
+  } rsys_;
+
+  // defined in coms.f
+  extern struct {
+    nmaxIntArray spin, ncoll, charge, ityp, lstcoll, iso3, origin, strid, uid;
+  } isys_;
+
+  // defined in coor.f
+  extern struct {
+    nmaxDoubleArray r0, rx, ry, rz, p0, px, py, pz, fmass, rww, dectime;
+  } coor_;
+
+  // defined in inputs.f
+  extern struct {
+    int nevents;
+    std::array<int, 2> spityp; // particle codes of: [0]: projectile, [1]: target
+    int prspflg;               // projectile special flag
+    int trspflg; // target special flag, set to 1 unless target is nucleus > H
+    std::array<int, 2> spiso3; // particle codes of: [0]: projectile, [1]: target
+    int outsteps, bflag, srtflag, efuncflag, nsrt, npb, firstev;
+  } inputs_;
+
+  // defined in inputs.f
+  extern struct {
+    double srtmin, srtmax, pbeam, betann, betatar, betapro, pbmin, pbmax;
+  } input2_;
+
+  // defined in options.f
+  extern struct {
+    std::array<double, details::constants::numcto> CTOption;
+    std::array<double, details::constants::numctp> CTParam;
+  } options_;
+
+  extern struct {
+    int fixedseed, bf13, bf14, bf15, bf16, bf17, bf18, bf19, bf20;
+  } loptions_;
+
+  // defined in urqmdInterface.F
+  extern struct { std::array<double, 3> xs, bim; } cxs_u2_;
+  }
+
+  /**
+   * convert CORSIKA code to UrQMD code tuple
+   *
+   * In the current implementation a detour via the PDG code is made.
+   */
+  std::pair<int, int> ConvertToUrQMD(particles::Code);
+  particles::Code ConvertFromUrQMD(int vItyp, int vIso3);
+
+} // namespace corsika::UrQMD
+
+#endif
diff --git a/Processes/UrQMD/testUrQMD.cc b/corsika/modules/UrQMD/testUrQMD.cc
similarity index 62%
rename from Processes/UrQMD/testUrQMD.cc
rename to corsika/modules/UrQMD/testUrQMD.cc
index 17a010c2f..8bcfd651c 100644
--- a/Processes/UrQMD/testUrQMD.cc
+++ b/corsika/modules/UrQMD/testUrQMD.cc
@@ -7,32 +7,32 @@
  */
 
 #include <corsika/process/urqmd/UrQMD.h>
-#include <corsika/random/RNGManager.h>
+#include <corsika/framework/random/RNGManager.hpp>
 
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
 
-#include <corsika/units/PhysicalConstants.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalConstants.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-#include <corsika/utl/CorsikaFenv.h>
+#include <corsika/framework/utility/CorsikaFenv.hpp>
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
-
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/HomogeneousMedium.h>
-#include <corsika/environment/NuclearComposition.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/HomogeneousMedium.hpp>
+#include <corsika/media/NuclearComposition.hpp>
 
 #include <tuple>
 #include <utility>
 
 #include <catch2/catch.hpp>
 
+#include "../../corsika/setup/SetupStack.hpp"
+#include "../../corsika/setup/SetupTrajectory.hpp"
+
 using namespace corsika;
-using namespace corsika::process::UrQMD;
+using namespace corsika::UrQMD;
 using namespace corsika::units::si;
 
 template <typename TStackView>
@@ -53,6 +53,74 @@ auto sumMomentum(TStackView const& view, geometry::CoordinateSystem const& vCS)
   return sum;
 }
 
+auto setupEnvironment(particles::Code vTargetCode) {
+  // setup environment, geometry
+  auto env = std::make_unique<environment::Environment<environment::IMediumModel>>();
+  auto& universe = *(env->GetUniverse());
+  const geometry::CoordinateSystem& cs = env->GetCoordinateSystem();
+
+  auto theMedium =
+      environment::Environment<environment::IMediumModel>::CreateNode<geometry::Sphere>(
+          geometry::Point{cs, 0_m, 0_m, 0_m},
+          1_km * std::numeric_limits<double>::infinity());
+
+  using MyHomogeneousModel = environment::HomogeneousMedium<environment::IMediumModel>;
+  theMedium->SetModelProperties<MyHomogeneousModel>(
+      1_kg / (1_m * 1_m * 1_m),
+      environment::NuclearComposition(std::vector<particles::Code>{vTargetCode},
+                                      std::vector<float>{1.}));
+
+  auto const* nodePtr = theMedium.get();
+  universe.AddChild(std::move(theMedium));
+
+  return std::make_tuple(std::move(env), &cs, nodePtr);
+}
+
+template <typename TNodeType>
+auto setupStack(int vA, int vZ, HEPEnergyType vMomentum, TNodeType* vNodePtr,
+                geometry::CoordinateSystem const& cs) {
+  auto stack = std::make_unique<setup::Stack>();
+  auto constexpr mN = corsika::units::constants::nucleonMass;
+
+  geometry::Point const origin(cs, {0_m, 0_m, 0_m});
+  corsika::MomentumVector const pLab(cs, {vMomentum, 0_GeV, 0_GeV});
+
+  HEPEnergyType const E0 =
+      sqrt(units::si::detail::static_pow<2>(mN * vA) + pLab.squaredNorm());
+  auto particle =
+      stack->AddParticle(std::tuple<particles::Code, units::si::HEPEnergyType,
+                                    corsika::MomentumVector, geometry::Point,
+                                    units::si::TimeType, unsigned short, unsigned short>{
+          particles::Code::Nucleus, E0, pLab, origin, 0_ns, vA, vZ});
+
+  particle.SetNode(vNodePtr);
+  return std::make_tuple(
+      std::move(stack),
+      std::make_unique<decltype(corsika::SecondaryView(particle))>(particle));
+}
+
+template <typename TNodeType>
+auto setupStack(particles::Code vProjectileType, HEPEnergyType vMomentum,
+                TNodeType* vNodePtr, geometry::CoordinateSystem const& cs) {
+  auto stack = std::make_unique<setup::Stack>();
+
+  geometry::Point const origin(cs, {0_m, 0_m, 0_m});
+  corsika::MomentumVector const pLab(cs, {vMomentum, 0_GeV, 0_GeV});
+
+  HEPEnergyType const E0 =
+      sqrt(units::si::detail::static_pow<2>(particles::GetMass(vProjectileType)) +
+           pLab.squaredNorm());
+  auto particle = stack->AddParticle(
+      std::tuple<particles::Code, units::si::HEPEnergyType,
+                 corsika::MomentumVector, geometry::Point, units::si::TimeType>{
+          vProjectileType, E0, pLab, origin, 0_ns});
+
+  particle.SetNode(vNodePtr);
+  return std::make_tuple(
+      std::move(stack),
+      std::make_unique<decltype(corsika::SecondaryView(particle))>(particle));
+}
+
 TEST_CASE("UrQMD") {
   SECTION("conversion") {
     REQUIRE_THROWS(process::UrQMD::ConvertFromUrQMD(106, 0));
@@ -62,7 +130,7 @@ TEST_CASE("UrQMD") {
   }
 
   feenableexcept(FE_INVALID);
-  corsika::random::RNGManager::GetInstance().RegisterRandomStream("urqmd");
+  corsika::RNGManager::GetInstance().RegisterRandomStream("UrQMD");
   UrQMD urqmd;
 
   SECTION("interaction length") {
diff --git a/Processes/UrQMD/urqmdInterface.F b/corsika/modules/UrQMD/urqmdInterface.F
similarity index 100%
rename from Processes/UrQMD/urqmdInterface.F
rename to corsika/modules/UrQMD/urqmdInterface.F
diff --git a/corsika/modules/sibyll/CMakeLists.txt b/corsika/modules/sibyll/CMakeLists.txt
new file mode 100644
index 000000000..7982d74c3
--- /dev/null
+++ b/corsika/modules/sibyll/CMakeLists.txt
@@ -0,0 +1,22 @@
+set (input_dir ${PROJECT_SOURCE_DIR}/corsika/modules/sibyll)
+set (output_dir ${PROJECT_BINARY_DIR}/corsika/modules/sibyll)
+
+file (MAKE_DIRECTORY ${output_dir})
+
+add_custom_command (
+  OUTPUT  ${output_dir}/Generated.inc
+  COMMAND ${input_dir}/code_generator.py 
+          ${PROJECT_BINARY_DIR}/corsika/framework/core/particle_db.pkl
+          ${input_dir}/sibyll_codes.dat
+  DEPENDS code_generator.py
+          ${PROJECT_BINARY_DIR}/corsika/framework/core/particle_db.pkl
+          sibyll_codes.dat
+  WORKING_DIRECTORY
+          ${output_dir}/
+  COMMENT "Generate conversion tables for particle codes SIBYLL <-> CORSIKA"
+  VERBATIM
+  )
+
+add_custom_target (SourceDirLinkSib DEPENDS ${output_dir}/Generated.inc)
+add_dependencies (CORSIKA8 SourceDirLinkSib)
+
diff --git a/corsika/modules/sibyll/Decay.hpp b/corsika/modules/sibyll/Decay.hpp
new file mode 100644
index 000000000..9de7938a1
--- /dev/null
+++ b/corsika/modules/sibyll/Decay.hpp
@@ -0,0 +1,86 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/sequence/DecayProcess.hpp>
+
+#include <set>
+#include <vector>
+
+namespace corsika::sibyll {
+
+    class Decay : public corsika::DecayProcess<Decay> {
+      int fCount = 0;
+      bool handleAllDecays_ = true;
+
+    public:
+      Decay();
+      Decay(std::set< Code>);
+      ~Decay();
+
+      void Init();
+
+            void SetStable(const std::vector< Code>);
+      void SetUnstable(const std::vector< Code>);
+
+      void SetStable(const corsika::Code);
+      void SetUnstable(const corsika::Code);
+
+      // internally set all particles to decay/not to decay
+      void SetAllUnstable();
+      void SetAllStable();
+
+      // will this particle be stable in sibyll ?
+      bool IsStable(const corsika::Code);
+      // will this particle decay in sibyll ?
+      bool IsUnstable(const corsika::Code);
+      // set particle with input code to decay or not
+      void SetDecay(const  Code, const bool);
+
+      
+      void PrintDecayConfig(const corsika::Code);
+      void PrintDecayConfig();
+      void SetHadronsUnstable();
+
+      // is Sibyll::Decay set to handle the decay of this particle?
+      bool IsDecayHandled(const corsika::Code);
+
+      // is decay possible in principle?
+      bool CanHandleDecay(const corsika::Code);
+
+      // set Sibyll::Decay to handle the decay of this particle!
+      void SetHandleDecay(const corsika::Code);
+      // set Sibyll::Decay to handle the decay of this list of particles!
+      void SetHandleDecay(const std::vector< Code>);
+      // set Sibyll::Decay to handle all particle decays
+      void SetHandleAllDecay();
+
+      template <typename TParticle>
+      corsika::units::si::TimeType GetLifetime(TParticle const&) const;
+
+      /**
+       In this function SIBYLL is called to produce to decay the input particle.
+     */
+
+      template <typename TSecondaryParticle>
+      void DoDecay(TSecondaryParticle&);
+
+    private:
+      // internal routines to set particles stable and unstable in the COMMON blocks in
+      // sibyll
+
+      std::set< Code> handledDecays_;
+    };
+
+} // namespace corsika::sibyll
+
+
+#include <corsika/detail/modules/sibyll/Decay.inl>
+
diff --git a/corsika/modules/sibyll/Interaction.hpp b/corsika/modules/sibyll/Interaction.hpp
new file mode 100644
index 000000000..4c29a5f01
--- /dev/null
+++ b/corsika/modules/sibyll/Interaction.hpp
@@ -0,0 +1,92 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <tuple>
+
+namespace corsika::sibyll {
+
+  class Interaction : public corsika::InteractionProcess<Interaction> {
+
+    int count_ = 0;
+    int nucCount_ = 0;
+    bool initialized_ = false;
+
+  public:
+    Interaction();
+    ~Interaction();
+
+    void Init() {}
+
+    void SetStable(std::vector<corsika::Code> const&);
+    void SetUnstable(std::vector<corsika::Code> const&);
+
+    void SetUnstable(const corsika::Code);
+    void SetStable(const corsika::Code);
+    void SetAllUnstable();
+    void SetAllStable();
+
+    bool WasInitialized() { return initialized_; }
+    bool IsValidCoMEnergy(corsika::units::si::HEPEnergyType ecm) const {
+      return (minEnergyCoM_ <= ecm) && (ecm <= maxEnergyCoM_);
+    }
+    int GetMaxTargetMassNumber() const { return maxTargetMassNumber_; }
+    corsika::units::si::HEPEnergyType GetMinEnergyCoM() const { return minEnergyCoM_; }
+    corsika::units::si::HEPEnergyType GetMaxEnergyCoM() const { return maxEnergyCoM_; }
+    bool IsValidTarget(corsika::Code TargetId) const {
+      return (corsika::GetNucleusA(TargetId) < maxTargetMassNumber_) &&
+             corsika::IsNucleus(TargetId);
+    }
+
+    std::tuple<corsika::units::si::CrossSectionType, corsika::units::si::CrossSectionType>
+    GetCrossSection(const corsika::Code, const corsika::Code,
+                    const corsika::units::si::HEPEnergyType) const;
+
+    template <typename TParticle>
+    corsika::units::si::GrammageType GetInteractionLength(TParticle const&) const;
+
+    /**
+       In this function SIBYLL is called to produce one event. The
+       event is copied (and boosted) into the shower lab frame.
+     */
+
+    template <typename TProjectile>
+    corsika::EProcessReturn DoInteraction(TProjectile&);
+
+  private:
+    corsika::RNG& RNG_ =
+        corsika::RNGManager::GetInstance().GetRandomStream("s_rndm");
+    // FOR NOW keep trackedParticles private, could be configurable
+    std::vector<corsika::Code> const trackedParticles_ = {
+        corsika::Code::PiPlus,     corsika::Code::PiMinus,
+        corsika::Code::Pi0,        corsika::Code::KMinus,
+        corsika::Code::KPlus,      corsika::Code::K0Long,
+        corsika::Code::K0Short,    corsika::Code::SigmaPlus,
+        corsika::Code::Sigma0,     corsika::Code::Sigma0Bar,
+        corsika::Code::SigmaMinus, corsika::Code::Lambda0,
+        corsika::Code::Xi0,        corsika::Code::XiMinus,
+        corsika::Code::OmegaMinus, corsika::Code::DPlus,
+        corsika::Code::DMinus,     corsika::Code::D0,
+        corsika::Code::MuMinus,    corsika::Code::MuPlus,
+        corsika::Code::D0Bar};
+    const bool internalDecays_ = true;
+    const corsika::units::si::HEPEnergyType minEnergyCoM_ =
+        10. * 1e9 * corsika::units::si::electronvolt;
+    const corsika::units::si::HEPEnergyType maxEnergyCoM_ =
+        1.e6 * 1e9 * corsika::units::si::electronvolt;
+    const int maxTargetMassNumber_ = 18;
+  };
+
+} // namespace corsika::sibyll
+
+#include <corsika/detail/modules/sibyll/Interaction.inl>
diff --git a/Processes/Sibyll/NuclearInteraction.h b/corsika/modules/sibyll/NuclearInteraction.hpp
similarity index 68%
rename from Processes/Sibyll/NuclearInteraction.h
rename to corsika/modules/sibyll/NuclearInteraction.hpp
index 4a561fad1..5ec3f1866 100644
--- a/Processes/Sibyll/NuclearInteraction.h
+++ b/corsika/modules/sibyll/NuclearInteraction.hpp
@@ -8,11 +8,11 @@
 
 #pragma once
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/process/InteractionProcess.h>
-#include <corsika/random/RNGManager.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
 
-namespace corsika::process::sibyll {
+namespace corsika::sibyll {
 
   class Interaction; // fwd-decl
 
@@ -22,19 +22,21 @@ namespace corsika::process::sibyll {
    **/
   template <class TEnvironment>
   class NuclearInteraction
-      : public corsika::process::InteractionProcess<NuclearInteraction<TEnvironment>> {
+      : public corsika::InteractionProcess<NuclearInteraction<TEnvironment>> {
 
     int count_ = 0;
     int nucCount_ = 0;
 
   public:
-    NuclearInteraction(corsika::process::sibyll::Interaction&, TEnvironment const&);
+    NuclearInteraction(corsika::sibyll::Interaction&, TEnvironment const&);
     ~NuclearInteraction();
 
+    void Init();
+    
     void InitializeNuclearCrossSections();
-    void PrintCrossSectionTable(corsika::particles::Code);
+    void PrintCrossSectionTable(corsika::Code);
     corsika::units::si::CrossSectionType ReadCrossSectionTable(
-        const int, corsika::particles::Code, corsika::units::si::HEPEnergyType);
+        const int, corsika::Code, corsika::units::si::HEPEnergyType);
     corsika::units::si::HEPEnergyType GetMinEnergyPerNucleonCoM() {
       return gMinEnergyPerNucleonCoM_;
     }
@@ -47,20 +49,20 @@ namespace corsika::process::sibyll {
 
     template <typename Particle>
     std::tuple<corsika::units::si::CrossSectionType, corsika::units::si::CrossSectionType>
-    GetCrossSection(Particle const& p, const corsika::particles::Code TargetId);
+    GetCrossSection(Particle const& p, const corsika::Code TargetId);
 
     template <typename Particle>
     corsika::units::si::GrammageType GetInteractionLength(Particle const&);
 
     template <typename TSecondaryView>
-    corsika::process::EProcessReturn DoInteraction(TSecondaryView&);
+    corsika::EProcessReturn DoInteraction(TSecondaryView&);
 
   private:
     TEnvironment const& environment_;
-    corsika::process::sibyll::Interaction& hadronicInteraction_;
-    std::map<corsika::particles::Code, int> targetComponentsIndex_;
-    corsika::random::RNG& RNG_ =
-        corsika::random::RNGManager::GetInstance().GetRandomStream("sibyll");
+    corsika::sibyll::Interaction& hadronicInteraction_;
+    std::map<corsika::Code, int> targetComponentsIndex_;
+    corsika::RNG& RNG_ =
+        corsika::RNGManager::GetInstance().GetRandomStream("s_rndm");
     static constexpr unsigned int gNSample_ =
         500; // number of samples in MC estimation of cross section
     static constexpr unsigned int gMaxNucleusAProjectile_ = 56;
@@ -74,4 +76,7 @@ namespace corsika::process::sibyll {
         1.e6 * 1e9 * corsika::units::si::electronvolt;
   };
 
-} // namespace corsika::process::sibyll
+} // namespace corsika::sibyll
+
+
+#include <corsika/detail/modules/sibyll/NuclearInteraction.inl>
diff --git a/corsika/modules/sibyll/ParticleConversion.hpp b/corsika/modules/sibyll/ParticleConversion.hpp
new file mode 100644
index 000000000..52bcb3094
--- /dev/null
+++ b/corsika/modules/sibyll/ParticleConversion.hpp
@@ -0,0 +1,70 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <sibyll2.3d.hpp>
+
+#include <string>
+
+namespace corsika::sibyll {
+
+  enum class SibyllCode : int8_t;
+  using SibyllCodeIntType = std::underlying_type<SibyllCode>::type;
+
+  /**
+     These are the possible projectile for which Sibyll knows the cross section
+   */
+  enum class SibyllXSClass : int8_t {
+    CannotInteract = 0,
+    Baryon = 1,
+    Pion = 2,
+    Kaon = 3,
+  };
+  using SibyllXSClassIntType = std::underlying_type<SibyllXSClass>::type;
+
+#include <corsika/modules/sibyll/Generated.inc>
+
+  SibyllCode constexpr ConvertToSibyll(corsika::Code pCode) {
+    return corsika2sibyll[static_cast<corsika::CodeIntType>(pCode)];
+  }
+
+  corsika::Code constexpr ConvertFromSibyll(SibyllCode pCode) {
+    auto const s = static_cast<SibyllCodeIntType>(pCode);
+    auto const corsikaCode = sibyll2corsika[s - minSibyll];
+    if (corsikaCode == corsika::Code::Unknown) {
+      throw std::runtime_error(std::string("SIBYLL/CORSIKA conversion of ")
+                                   .append(std::to_string(s))
+                                   .append(" impossible"));
+    }
+    return corsikaCode;
+  }
+
+  int constexpr ConvertToSibyllRaw(corsika::Code pCode) {
+    return static_cast<int>(ConvertToSibyll(pCode));
+  }
+
+  int constexpr GetSibyllXSCode(corsika::Code pCode) {
+    return static_cast<SibyllXSClassIntType>(
+        corsika2sibyllXStype[static_cast<corsika::CodeIntType>(pCode)]);
+  }
+
+  bool constexpr CanInteract(corsika::Code pCode) {
+    return GetSibyllXSCode(pCode) > 0;
+  }
+
+  corsika::units::si::HEPMassType GetSibyllMass(corsika::Code const);
+
+} // namespace corsika::sibyll
+
+
+
+#include <corsika/detail/modules/sibyll/ParticleConversion.inl>
diff --git a/corsika/modules/sibyll/Random.hpp b/corsika/modules/sibyll/Random.hpp
new file mode 100644
index 000000000..3d82be78b
--- /dev/null
+++ b/corsika/modules/sibyll/Random.hpp
@@ -0,0 +1,22 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/framework/random/RNGManager.hpp>
+#include <random>
+
+namespace sibyll {
+
+  double rndm_interface() {
+    static corsika::RNG& rng =
+      corsika::RNGManager::GetInstance().GetRandomStream("s_rndm");    
+    std::uniform_real_distribution<double> dist;
+    return dist(rng);
+  }
+  
+}
+
diff --git a/corsika/modules/sibyll/SibStack.hpp b/corsika/modules/sibyll/SibStack.hpp
new file mode 100644
index 000000000..d28fb66ab
--- /dev/null
+++ b/corsika/modules/sibyll/SibStack.hpp
@@ -0,0 +1,147 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/modules/sibyll/ParticleConversion.hpp>
+#include <corsika/framework/stack/Stack.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <sibyll2.3d.hpp>
+
+namespace corsika::sibyll {
+
+  typedef corsika::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
+
+  class SibStackData {
+
+  public:
+    void Dump() const {}
+
+    void Clear() { s_plist_.np = 0; }
+    unsigned int GetSize() const { return s_plist_.np; }
+    unsigned int GetCapacity() const { return 8000; }
+
+    void SetId(const unsigned int i, const int v) { s_plist_.llist[i] = v; }
+    void SetEnergy(const unsigned int i, const corsika::units::si::HEPEnergyType v) {
+      using namespace corsika::units::si;
+      s_plist_.p[3][i] = v / 1_GeV;
+    }
+    void SetMass(const unsigned int i, const corsika::units::si::HEPMassType v) {
+      using namespace corsika::units::si;
+      s_plist_.p[4][i] = v / 1_GeV;
+    }
+    void SetMomentum(const unsigned int i, const MomentumVector& v) {
+      using namespace corsika::units::si;
+      auto tmp = v.GetComponents();
+      for (int idx = 0; idx < 3; ++idx) s_plist_.p[idx][i] = tmp[idx] / 1_GeV;
+    }
+
+    int GetId(const unsigned int i) const { return s_plist_.llist[i]; }
+    corsika::units::si::HEPEnergyType GetEnergy(const int i) const {
+      using namespace corsika::units::si;
+      return s_plist_.p[3][i] * 1_GeV;
+    }
+    corsika::units::si::HEPEnergyType GetMass(const unsigned int i) const {
+      using namespace corsika::units::si;
+      return s_plist_.p[4][i] * 1_GeV;
+    }
+    MomentumVector GetMomentum(const unsigned int i) const {
+      using corsika::CoordinateSystem;
+      using corsika::QuantityVector;
+      using corsika::RootCoordinateSystem;
+      using namespace corsika::units::si;
+      CoordinateSystem& rootCS =
+          RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+      QuantityVector<hepmomentum_d> components = {
+          s_plist_.p[0][i] * 1_GeV, s_plist_.p[1][i] * 1_GeV, s_plist_.p[2][i] * 1_GeV};
+      return MomentumVector(rootCS, components);
+    }
+
+    void Copy(const unsigned int i1, const unsigned int i2) {
+      s_plist_.llist[i2] = s_plist_.llist[i1];
+      for (unsigned int i = 0; i < 5; ++i) s_plist_.p[i][i2] = s_plist_.p[i][i1];
+    }
+
+    void Swap(const unsigned int i1, const unsigned int i2) {
+      std::swap(s_plist_.llist[i1], s_plist_.llist[i2]);
+      for (unsigned int i = 0; i < 5; ++i)
+        std::swap(s_plist_.p[i][i1], s_plist_.p[i][i2]);
+    }
+
+    void IncrementSize() { s_plist_.np++; }
+    void DecrementSize() {
+      if (s_plist_.np > 0) { s_plist_.np--; }
+    }
+  };
+
+  template <typename StackIteratorInterface>
+  class ParticleInterface : public corsika::ParticleBase<StackIteratorInterface> {
+
+    using corsika::ParticleBase<StackIteratorInterface>::GetStackData;
+    using corsika::ParticleBase<StackIteratorInterface>::GetIndex;
+
+  public:
+    void SetParticleData(const int vID, // corsika::sibyll::SibyllCode vID,
+                         const corsika::units::si::HEPEnergyType vE,
+                         const MomentumVector& vP,
+                         const corsika::units::si::HEPMassType vM) {
+      SetPID(vID);
+      SetEnergy(vE);
+      SetMomentum(vP);
+      SetMass(vM);
+    }
+
+    void SetParticleData(ParticleInterface<StackIteratorInterface>& /*parent*/,
+                         const int vID, //  corsika::sibyll::SibyllCode vID,
+                         const corsika::units::si::HEPEnergyType vE,
+                         const MomentumVector& vP,
+                         const corsika::units::si::HEPMassType vM) {
+      SetPID(vID);
+      SetEnergy(vE);
+      SetMomentum(vP);
+      SetMass(vM);
+    }
+
+    void SetEnergy(const corsika::units::si::HEPEnergyType v) {
+      GetStackData().SetEnergy(GetIndex(), v);
+    }
+
+    corsika::units::si::HEPEnergyType GetEnergy() const {
+      return GetStackData().GetEnergy(GetIndex());
+    }
+
+    bool HasDecayed() const { return abs(GetStackData().GetId(GetIndex())) > 100; }
+
+    void SetMass(const corsika::units::si::HEPMassType v) {
+      GetStackData().SetMass(GetIndex(), v);
+    }
+
+    corsika::units::si::HEPEnergyType GetMass() const {
+      return GetStackData().GetMass(GetIndex());
+    }
+
+    void SetPID(const int v) { GetStackData().SetId(GetIndex(), v); }
+
+    corsika::sibyll::SibyllCode GetPID() const {
+      return static_cast<corsika::sibyll::SibyllCode>(
+          GetStackData().GetId(GetIndex()));
+    }
+
+    MomentumVector GetMomentum() const { return GetStackData().GetMomentum(GetIndex()); }
+
+    void SetMomentum(const MomentumVector& v) {
+      GetStackData().SetMomentum(GetIndex(), v);
+    }
+  };
+
+  typedef corsika::Stack<SibStackData, ParticleInterface> SibStack;
+
+} // end namespace corsika::sibyll
diff --git a/corsika/modules/sibyll/code_generator.py b/corsika/modules/sibyll/code_generator.py
new file mode 100755
index 000000000..22cb11022
--- /dev/null
+++ b/corsika/modules/sibyll/code_generator.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python3
+
+# (c) Copyright 2018-2019 CORSIKA Project, corsika-project@lists.kit.edu
+#
+# See file AUTHORS for a list of contributors.
+#
+# This software is distributed under the terms of the GNU General Public
+# Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+# the license.
+
+
+import pickle, sys, itertools
+
+
+
+def load_particledb(filename):
+    '''
+    loads the pickled particle_db (which is an OrderedDict)
+    '''
+    with open(filename, "rb") as f:
+        particle_db = pickle.load(f)
+    return particle_db
+
+
+
+def read_sibyll_codes(filename, particle_db):
+    '''
+    reads to sibyll codes data file
+
+    For particls known to sibyll, add 'sibyll_code' and 'sibyll_xsType' to particle_db
+    '''
+    with open(filename) as f:
+        for line in f:
+            line = line.strip()
+            if len(line)==0 or line[0] == '#':
+                continue            
+            identifier, sib_code, canInteractFlag, xsType = line.split()
+            try:
+                particle_db[identifier]["sibyll_code"] = int(sib_code)
+                particle_db[identifier]["sibyll_xsType"] = xsType
+            except KeyError as e:
+                raise Exception("Identifier '{:s}' not found in particle_db".format(identifier))
+
+
+            
+
+def generate_sibyll_enum(particle_db):
+    '''
+     generates the enum to access sibyll particles by readable names
+    '''
+    output = "enum class SibyllCode : int8_t {\n"
+    for identifier, pData in particle_db.items():
+        if 'sibyll_code' in pData:
+            output += "  {:s} = {:d},\n".format(identifier, pData['sibyll_code'])
+    output += "};\n"
+    return output
+
+
+
+def generate_corsika2sibyll(particle_db):    
+    '''
+    generates the look-up table to convert corsika codes to sibyll codes
+    '''
+    string = "std::array<SibyllCode, {:d}> constexpr corsika2sibyll = {{\n".format(len(particle_db))
+    for identifier, pData in particle_db.items():
+        if 'sibyll_code' in pData:
+            string += "  SibyllCode::{:s}, \n".format(identifier)
+        else:
+            string += "  SibyllCode::Unknown, // {:s}\n".format(identifier + ' not implemented in SIBYLL')
+    string += "};\n"
+    return string
+    
+
+
+def generate_corsika2sibyll_xsType(particle_db):    
+    '''
+    generates the look-up table to convert corsika codes to sibyll codes
+    '''
+    string = "std::array<SibyllXSClass, {:d}> constexpr corsika2sibyllXStype = {{\n".format(len(particle_db))
+    for identifier, pData in particle_db.items():
+        if 'sibyll_xsType' in pData:
+            string += "  SibyllXSClass::{:s}, // {:s}\n".format(pData['sibyll_xsType'], identifier)
+        else:
+            string += "  SibyllXSClass::CannotInteract, // {:s}\n".format(identifier + ' not implemented in SIBYLL')
+    string += "};\n"
+    return string
+
+
+def generate_sibyll2corsika(particle_db) :
+    '''
+    generates the look-up table to convert sibyll codes to corsika codes    
+    '''
+    string = ""
+    
+    minID = 0
+    for identifier, pData in particle_db.items() :
+        if 'sibyll_code' in pData:
+            minID = min(minID, pData['sibyll_code'])
+
+    string += "SibyllCodeIntType constexpr minSibyll = {:d};\n\n".format(minID)
+
+    pDict = {}
+    for identifier, pData in particle_db.items() :
+        if 'sibyll_code' in pData:
+            sib_code = pData['sibyll_code'] - minID
+            pDict[sib_code] = identifier
+    
+    nPart = max(pDict.keys()) - min(pDict.keys()) + 1
+    string += "std::array<corsika::Code, {:d}> constexpr sibyll2corsika = {{\n".format(nPart)
+    
+    for iPart in range(nPart) :
+        if iPart in pDict:
+            identifier = pDict[iPart]
+        else:
+            identifier = "Unknown"
+        string += "  corsika::Code::{:s}, \n".format(identifier)
+    
+    string += "};\n"
+    return string
+
+if __name__ == "__main__":
+    if len(sys.argv) != 3:
+        print("usage: {:s} <particle_db.pkl> <sibyll_codes.dat>".format(sys.argv[0]), file=sys.stderr)
+        sys.exit(1)
+        
+    print("code_generator.py for SIBYLL")
+    
+    particle_db = load_particledb(sys.argv[1])
+    read_sibyll_codes(sys.argv[2], particle_db)
+    
+    with open("Generated.inc", "w") as f:
+        print("// this file is automatically generated\n// edit at your own risk!\n", file=f)
+        print(generate_sibyll_enum(particle_db), file=f)
+        print(generate_corsika2sibyll(particle_db), file=f)
+        print(generate_sibyll2corsika(particle_db), file=f)
+        print(generate_corsika2sibyll_xsType(particle_db), file=f)
diff --git a/corsika/modules/sibyll/sibyll_codes.dat b/corsika/modules/sibyll/sibyll_codes.dat
new file mode 100644
index 000000000..d8cce42e4
--- /dev/null
+++ b/corsika/modules/sibyll/sibyll_codes.dat
@@ -0,0 +1,132 @@
+# input file for particle conversion to/from SIBYLL
+# the format of this file is: "corsika-identifier" "sibyll-id" "can-interact-in-sibyll" "cross-section-type"
+
+# The unknown particle is to handle all particles that are not known to SIBYLL.
+# It is important that sibyll-id does not overlap with any existing sibyll particle!
+# Be careful
+Unknown                  0       0       CannotInteract
+
+# Here is the list of particles known to sibyll 
+Electron                 3       0       CannotInteract
+Positron                 2       0       CannotInteract
+NuE                      15      0       CannotInteract
+NuEBar                   16      0       CannotInteract
+MuMinus                  5       0       CannotInteract
+MuPlus                   4       0       CannotInteract
+NuMu                     17      0       CannotInteract
+NuMuBar                  18      0       CannotInteract
+TauMinus                 91      0       CannotInteract
+TauPlus                  90      0       CannotInteract
+NuTau                    92      0       CannotInteract
+NuTauBar                 93      0       CannotInteract
+Gamma                    1       0       CannotInteract
+Pi0                      6       1       Pion
+#                        rho0    could interact but sibyll has no cross section/interaction length. was used for gamma had int
+Rho0                     27      0       CannotInteract
+K0Long                   11      1       Kaon
+K0                       21      0       Kaon
+K0Bar                    22      0       Kaon
+PiPlus                   7       1       Pion
+PiMinus                  8       1       Pion
+RhoPlus                  25      0       CannotInteract
+RhoMinus                 26      0       CannotInteract
+Eta                      23      0       CannotInteract
+EtaPrime                 24      0       CannotInteract
+Pi1300Plus               62      0       CannotInteract
+Pi1300Minus              63      0       CannotInteract
+Pi1300_0                 61      0       CannotInteract
+Omega                    32      0       CannotInteract
+K0Short                  12      1       Kaon
+KStar0                   30      0       CannotInteract
+KStar0Bar                31      0       CannotInteract
+KPlus                    9       1       Kaon
+KMinus                   10      1       Kaon
+KStarPlus                28      0       CannotInteract
+KStarMinus               29      0       CannotInteract
+KStar0_1430_0            66      0       CannotInteract
+KStar0_1430_0Bar         67      0       CannotInteract
+KStar0_1430_Plus         64      0       CannotInteract
+KStar0_1430_MinusBar     65      0       CannotInteract
+DPlus                    59      1       Kaon
+DMinus                   60      1       Kaon
+DStarPlus                78      0       CannotInteract
+DStarMinus               79      0       CannotInteract
+D0                       71      1       Kaon
+D0Bar                    72      1       Kaon
+DStar0                   80      0       CannotInteract
+DStar0Bar                81      0       CannotInteract
+DsPlus                   74      1       Kaon
+DsMinus                  75      1       Kaon
+DStarSPlus               76      0       CannotInteract
+DStarSMinus              77      0       CannotInteract
+EtaC                     73      0       CannotInteract
+Neutron                  14      1       Baryon
+AntiNeutron              -14     1       Baryon
+Delta0                   42      0       CannotInteract
+Delta0Bar                -42     0       CannotInteract
+DeltaMinus               43      0       CannotInteract
+DeltaPlusBar             -43     0       CannotInteract
+Proton                   13      1       Baryon
+AntiProton               -13     1       Baryon
+N1440Plus                51      0       CannotInteract
+N1440MinusBar            -51     0       CannotInteract
+N1440_0                  52      0       CannotInteract
+N1440_0Bar               -52     0       CannotInteract
+N1710Plus                53      0       CannotInteract
+N1710MinusBar            -53     0       CannotInteract
+N1710_0                  54      0       CannotInteract
+N1710_0Bar               -54     0       CannotInteract
+DeltaPlus                41      0       CannotInteract
+DeltaMinusBar            -41     0       CannotInteract
+DeltaPlusPlus            40      0       CannotInteract
+DeltaMinusMinusBar       -40     0       CannotInteract
+SigmaMinus               36      1       Baryon
+SigmaPlusBar             -36     1       Baryon
+SigmaStarMinus           46      0       CannotInteract
+SigmaStarPlusBar         -46     0       CannotInteract
+SigmaStarPlus            44      0       CannotInteract
+SigmaStarMinusBar        -44     0       CannotInteract
+SigmaStar0               45      0       CannotInteract
+SigmaStar0Bar            -45     0       CannotInteract
+Lambda0                  39      1       Baryon
+Lambda0Bar               -39     1       Baryon
+Sigma0                   35      1       Baryon
+Sigma0Bar                -35     1       Baryon
+SigmaPlus                34      1       Baryon
+SigmaMinusBar            -34     1       Baryon
+XiMinus                  38      1       Baryon
+XiPlusBar                -38     1       Baryon
+Xi0                      37      1       Baryon
+Xi0Bar                   -37     1       Baryon
+XiStarMinus              48      0       CannotInteract
+XiStarPlusBar            -48     0       CannotInteract  
+XiStar0                  47      0       CannotInteract
+XiStar0Bar               -47     0       CannotInteract
+OmegaMinus               49      0       CannotInteract
+OmegaPlusBar             -49     0       CannotInteract
+SigmaC0                  86      0       CannotInteract
+SigmaC0Bar               -86     0       CannotInteract
+SigmaStarC0              96      0       CannotInteract
+SigmaStarC0Bar           -96     0       CannotInteract
+LambdaCPlus              89      1       Baryon
+LambdaCMinusBar          -89     1       Baryon
+XiC0                     88      1       Baryon
+XiC0Bar                  -88     1       Baryon
+SigmaCPlus               85      0       CannotInteract
+SigmaCMinusBar           -85     0       CannotInteract
+SigmaStarCPlus           95      0       CannotInteract
+SigmaStarCMinusBar       -95     0       CannotInteract
+SigmaCPlusPlus           84      0       CannotInteract
+SigmaCMinusMinusBar      -84     0       CannotInteract
+SigmaStarCPlusPlus       94      0       CannotInteract
+SigmaStarCMinusMinusBar  -94     0       CannotInteract
+XiCPlus                  87      1       Baryon
+XiCMinusBar              -87     1       Baryon
+XiStarCPlus              97      0       CannotInteract
+XiStarCMinusBar          -97     0       CannotInteract
+XiStarC0                 98      0       CannotInteract
+XiStarC0Bar              -98     0       CannotInteract
+OmegaC0                  99      0       CannotInteract
+OmegaC0Bar               -99     0       CannotInteract
+Jpsi                     83      0       CannotInteract
+Phi                      33      0       CannotInteract
diff --git a/Processes/EnergyLoss/EnergyLoss.h b/corsika/process/EnergyLoss.hpp
similarity index 73%
rename from Processes/EnergyLoss/EnergyLoss.h
rename to corsika/process/EnergyLoss.hpp
index f60e16b35..6378824d2 100644
--- a/Processes/EnergyLoss/EnergyLoss.h
+++ b/corsika/process/EnergyLoss.hpp
@@ -8,20 +8,19 @@
 
 #pragma once
 
-#include <corsika/environment/ShowerAxis.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/process/ContinuousProcess.h>
-#include <corsika/units/PhysicalUnits.h>
-
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/framework/sequence/ContinuousProcess.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <map>
 
-namespace corsika::process::energy_loss {
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
+
+namespace corsika {
 
-  class EnergyLoss : public corsika::process::ContinuousProcess<EnergyLoss> {
+  class EnergyLoss : public corsika::ContinuousProcess<EnergyLoss> {
 
     using MeVgcm2 = decltype(1e6 * units::si::electronvolt / units::si::gram *
                              units::si::square(1e-2 * units::si::meter));
@@ -29,8 +28,15 @@ namespace corsika::process::energy_loss {
     void MomentumUpdate(setup::Stack::ParticleType&, units::si::HEPEnergyType Enew);
 
   public:
-    EnergyLoss(environment::ShowerAxis const& showerAxis,
-               corsika::units::si::HEPEnergyType emCut);
+
+    template <typename TDim>
+    EnergyLoss(geometry::Point const& injectionPoint,
+               geometry::Vector<TDim> const& direction)
+        : InjectionPoint_(injectionPoint)
+        , ShowerAxisDirection_(direction.normalized()) {}
+
+    EnergyLoss(setup::Trajectory const& trajectory)
+        : EnergyLoss(trajectory.GetPosition(0), trajectory.GetV0()){};
 
     process::EProcessReturn DoContinuous(setup::Stack::ParticleType&,
                                          setup::Trajectory const&);
@@ -68,4 +74,5 @@ namespace corsika::process::energy_loss {
     using namespace units::si;
     return 0.0001_g / square(1_cm);
   });
-} // namespace corsika::process::energy_loss
+} // namespace corsika
+
diff --git a/Processes/HadronicElasticModel/HadronicElasticModel.h b/corsika/process/HadronicElasticModel.hpp
similarity index 74%
rename from Processes/HadronicElasticModel/HadronicElasticModel.h
rename to corsika/process/HadronicElasticModel.hpp
index 3273bfec1..3b15c4b52 100644
--- a/Processes/HadronicElasticModel/HadronicElasticModel.h
+++ b/corsika/process/HadronicElasticModel.hpp
@@ -8,14 +8,14 @@
 
 #pragma once
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/process/InteractionProcess.h>
-#include <corsika/random/RNGManager.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
 
-#include <corsika/units/PhysicalConstants.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalConstants.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-namespace corsika::process::HadronicElasticModel {
+namespace corsika::HadronicElasticModel {
   /**
    * A simple model for elastic hadronic interactions based on the formulas
    * in Gaisser, Engel, Resconi, Cosmic Rays and Particle Physics (Cambridge Univ. Press,
@@ -25,7 +25,7 @@ namespace corsika::process::HadronicElasticModel {
    * \f$pp\f$-like even for nuclei.
    */
   class HadronicElasticInteraction
-      : public corsika::process::InteractionProcess<HadronicElasticInteraction> {
+      : public corsika::InteractionProcess<HadronicElasticInteraction> {
   private:
     corsika::units::si::CrossSectionType const fX, fY;
 
@@ -39,8 +39,8 @@ namespace corsika::process::HadronicElasticModel {
     using eV2 = decltype(units::si::square(units::si::electronvolt));
     using inveV2 = decltype(1 / units::si::square(units::si::electronvolt));
 
-    corsika::random::RNG& fRNG =
-        corsika::random::RNGManager::GetInstance().GetRandomStream(
+    corsika::RNG& fRNG =
+        corsika::RNGManager::GetInstance().GetRandomStream(
             "HadronicElasticModel");
 
     inveV2 B(eV2 s) const;
@@ -54,8 +54,9 @@ namespace corsika::process::HadronicElasticModel {
     template <typename Particle>
     corsika::units::si::GrammageType GetInteractionLength(Particle const& p);
 
-    template <typename TStackView>
-    corsika::process::EProcessReturn DoInteraction(TStackView&);
+    template <typename Particle>
+    corsika::EProcessReturn DoInteraction(Particle&);
   };
 
-} // namespace corsika::process::HadronicElasticModel
+} // namespace corsika::HadronicElasticModel
+
diff --git a/Processes/ObservationPlane/ObservationPlane.h b/corsika/process/ObservationPlane.hpp
similarity index 63%
rename from Processes/ObservationPlane/ObservationPlane.h
rename to corsika/process/ObservationPlane.hpp
index 3b530f621..5749e69d9 100644
--- a/Processes/ObservationPlane/ObservationPlane.h
+++ b/corsika/process/ObservationPlane.hpp
@@ -8,35 +8,36 @@
 
 #pragma once
 
-#include <corsika/geometry/Plane.h>
-#include <corsika/process/ContinuousProcess.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/geometry/Plane.hpp>
+#include <corsika/framework/sequence/ContinuousProcess.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <fstream>
 
-namespace corsika::process::observation_plane {
+#include "corsika/setup/SetupStack.hpp"
+#include "corsika/setup/SetupTrajectory.hpp"
+
+namespace corsika::observation_plane {
 
   /**
    * The ObservationPlane writes PDG codes, energies, and distances of particles to the
    * central point of the plane into its output file. The particles are considered
    * "absorbed" afterwards.
    */
-  class ObservationPlane : public corsika::process::ContinuousProcess<ObservationPlane> {
+  class ObservationPlane : public corsika::ContinuousProcess<ObservationPlane> {
 
   public:
     ObservationPlane(geometry::Plane const&,
                      geometry::Vector<units::si::dimensionless_d> const&,
                      std::string const&, bool = true);
 
-    corsika::process::EProcessReturn DoContinuous(
-        corsika::setup::Stack::ParticleType& vParticle,
-        corsika::setup::Trajectory const& vTrajectory);
+    corsika::EProcessReturn DoContinuous(
+        corsika::Stack::ParticleType const& vParticle,
+        corsika::Trajectory const& vTrajectory);
 
     corsika::units::si::LengthType MaxStepLength(
-        corsika::setup::Stack::ParticleType const&,
-        corsika::setup::Trajectory const& vTrajectory);
+        corsika::Stack::ParticleType const&,
+        corsika::Trajectory const& vTrajectory);
 
     void ShowResults() const;
     void Reset();
@@ -51,4 +52,6 @@ namespace corsika::process::observation_plane {
     unsigned int count_ground_ = 0;
     geometry::Vector<units::si::dimensionless_d> const xAxis_, yAxis_;
   };
-} // namespace corsika::process::observation_plane
+} // namespace corsika::observation_plane
+
+
diff --git a/Processes/ParticleCut/ParticleCut.h b/corsika/process/ParticleCut.hpp
similarity index 82%
rename from Processes/ParticleCut/ParticleCut.h
rename to corsika/process/ParticleCut.hpp
index b0e897753..5674e2c03 100644
--- a/Processes/ParticleCut/ParticleCut.h
+++ b/corsika/process/ParticleCut.hpp
@@ -8,14 +8,12 @@
 
 #pragma once
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/process/ContinuousProcess.h>
-#include <corsika/process/SecondariesProcess.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
-#include <corsika/units/PhysicalUnits.h>
-
-namespace corsika::process {
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/sequence/SecondariesProcess.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include "corsika/setup/SetupStack.hpp"
+
+namespace corsika {
   namespace particle_cut {
     class ParticleCut : public process::SecondariesProcess<ParticleCut>,
                         public corsika::process::ContinuousProcess<ParticleCut> {
@@ -31,7 +29,11 @@ namespace corsika::process {
       unsigned int uiInvCount = 0;
 
     public:
-      ParticleCut(const units::si::HEPEnergyType eCut, bool em, bool inv);
+      ParticleCut(const units::si::HEPEnergyType vCut)
+          : fECut(vCut) {}
+
+      bool ParticleIsInvisible(particles::Code) const;
+      EProcessReturn DoSecondaries(corsika::StackView&);
 
       void DoSecondaries(corsika::setup::StackView&);
 
@@ -64,4 +66,6 @@ namespace corsika::process {
       bool ParticleIsInvisible(particles::Code) const;
     };
   } // namespace particle_cut
-} // namespace corsika::process
+} // namespace corsika
+
+
diff --git a/corsika/process/Pythia/Decay.hpp b/corsika/process/Pythia/Decay.hpp
new file mode 100644
index 000000000..f8cfa8f97
--- /dev/null
+++ b/corsika/process/Pythia/Decay.hpp
@@ -0,0 +1,58 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <Pythia8/Pythia.h>
+
+#include <iostream>
+#include <vector>
+#include <tuple>
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/sequence/DecayProcess.hpp>
+
+namespace corsika {
+
+  namespace pythia {
+
+    typedef corsika::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
+
+    class Decay : public corsika::DecayProcess<Decay>
+    {
+
+    const std::vector<particles::Code> fTrackedParticles;
+    int fCount = 0;
+
+    public:
+
+      Decay(std::vector<corsika::Code>);
+      ~Decay();
+
+      void SetParticleListStable(std::vector<particles::Code> const& );
+      void SetUnstable(const corsika::Code);
+      void SetStable(const corsika::Code);
+
+      corsika::units::si::TimeType GetLifetime(corsika::Stack::ParticleType const&);
+
+      void DoDecay(corsika::StackView::ParticleType&);
+
+    private:
+      void SetUnstable(const corsika::particles::Code);
+      void SetStable(const corsika::particles::Code);
+      void SetStable(const std::vector<particles::Code>);
+      bool IsStable(const corsika::particles::Code);
+
+      Pythia8::Pythia fPythia;
+      std::set<particles::Code> handledDecays_;
+    };
+
+  } // namespace pythia
+} // namespace corsika
+
+#include <corsika/detail/process/Pythia/Decay.inl>
diff --git a/Processes/Pythia/Interaction.h b/corsika/process/Pythia/Interaction.hpp
similarity index 58%
rename from Processes/Pythia/Interaction.h
rename to corsika/process/Pythia/Interaction.hpp
index ef2bdfbcc..27634e0f0 100644
--- a/Processes/Pythia/Interaction.h
+++ b/corsika/process/Pythia/Interaction.hpp
@@ -10,15 +10,15 @@
 
 #include <Pythia8/Pythia.h>
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/process/InteractionProcess.h>
-#include <corsika/random/RNGManager.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 #include <tuple>
 
-namespace corsika::process::pythia {
+namespace corsika::pythia {
 
-  class Interaction : public corsika::process::InteractionProcess<Interaction> {
+  class Interaction : public corsika::InteractionProcess<Interaction> {
 
     int fCount = 0;
     bool fInitialized = false;
@@ -29,8 +29,8 @@ namespace corsika::process::pythia {
     ~Interaction() = default;
 
     void SetParticleListStable(std::vector<particles::Code> const&);
-    void SetUnstable(const corsika::particles::Code);
-    void SetStable(const corsika::particles::Code);
+    void SetUnstable(const corsika::Code);
+    void SetStable(const corsika::Code);
 
     bool WasInitialized() { return fInitialized; }
     bool ValidCoMEnergy(corsika::units::si::HEPEnergyType ecm) {
@@ -38,13 +38,13 @@ namespace corsika::process::pythia {
       return (10_GeV < ecm) && (ecm < 1_PeV);
     }
 
-    bool CanInteract(const corsika::particles::Code);
-    void ConfigureLabFrameCollision(const corsika::particles::Code,
-                                    const corsika::particles::Code,
+    bool CanInteract(const corsika::Code);
+    void ConfigureLabFrameCollision(const corsika::Code,
+                                    const corsika::Code,
                                     const corsika::units::si::HEPEnergyType);
     std::tuple<corsika::units::si::CrossSectionType, corsika::units::si::CrossSectionType>
-    GetCrossSection(const corsika::particles::Code BeamId,
-                    const corsika::particles::Code TargetId,
+    GetCrossSection(const corsika::Code BeamId,
+                    const corsika::Code TargetId,
                     const corsika::units::si::HEPEnergyType CoMenergy);
 
     template <typename TParticle>
@@ -55,15 +55,17 @@ namespace corsika::process::pythia {
        event is copied (and boosted) into the shower lab frame.
      */
 
-    template <typename TSecondaryView>
-    corsika::process::EProcessReturn DoInteraction(TSecondaryView&);
+    template <typename TProjectile>
+    corsika::EProcessReturn DoInteraction(TProjectile&);
 
   private:
-    corsika::random::RNG& fRNG =
-        corsika::random::RNGManager::GetInstance().GetRandomStream("pythia");
+    corsika::RNG& fRNG =
+        corsika::RNGManager::GetInstance().GetRandomStream("pythia");
     Pythia8::Pythia fPythia;
     Pythia8::SigmaTotal fSigma;
     const bool fInternalDecays = true;
   };
 
-} // namespace corsika::process::pythia
+} // namespace corsika::pythia
+
+#endif
diff --git a/corsika/process/Pythia/Random.hpp b/corsika/process/Pythia/Random.hpp
new file mode 100644
index 000000000..339a9cf87
--- /dev/null
+++ b/corsika/process/Pythia/Random.hpp
@@ -0,0 +1,30 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <Pythia8/Pythia.h>
+#include <corsika/framework/random/RNGManager.hpp>
+
+namespace corsika {
+
+  namespace pythia {
+
+    class Random : public Pythia8::RndmEngine {
+      double flat();
+
+    private:
+      std::uniform_real_distribution<double> fDist;
+      corsika::RNG& fRNG =
+          corsika::RNGManager::GetInstance().GetRandomStream("pythia");
+    };
+
+  } // namespace pythia
+} // namespace corsika
+
+#endif
diff --git a/corsika/process/QGSJetII/Interaction.hpp b/corsika/process/QGSJetII/Interaction.hpp
new file mode 100644
index 000000000..dbe201090
--- /dev/null
+++ b/corsika/process/QGSJetII/Interaction.hpp
@@ -0,0 +1,63 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <string>
+
+namespace corsika::qgsjetII {
+
+  class Interaction : public corsika::InteractionProcess<Interaction> {
+
+    std::string data_path_;
+    int count_ = 0;
+    bool initialized_ = false;
+    QgsjetIIHadronType alternate_ =
+        QgsjetIIHadronType::PiPlusType; // for pi0, rho0 projectiles
+
+  public:
+    Interaction(const std::string& dataPath = "");
+    ~Interaction();
+
+    bool WasInitialized() { return initialized_; }
+    int GetMaxTargetMassNumber() const { return maxMassNumber_; }
+    bool IsValidTarget(corsika::Code TargetId) const {
+      return (corsika::GetNucleusA(TargetId) < maxMassNumber_) &&
+             corsika::IsNucleus(TargetId);
+    }
+
+    corsika::units::si::CrossSectionType GetCrossSection(
+        const corsika::Code, const corsika::Code,
+        const corsika::units::si::HEPEnergyType, const unsigned int Abeam = 0,
+        const unsigned int Atarget = 0) const;
+
+    template <typename TParticle>
+    corsika::units::si::GrammageType GetInteractionLength(TParticle const&) const;
+
+    /**
+       In this function QGSJETII is called to produce one event. The
+       event is copied (and boosted) into the shower lab frame.
+     */
+
+    template <typename TProjectile>
+    corsika::EProcessReturn DoInteraction(TProjectile&);
+
+  private:
+    corsika::RNG& fRNG =
+        corsika::RNGManager::GetInstance().GetRandomStream("qgran");
+    const int maxMassNumber_ = 208;
+  };
+
+} // namespace corsika::qgsjetII
+
+#endif
diff --git a/corsika/process/QGSJetII/ParticleConversion.hpp b/corsika/process/QGSJetII/ParticleConversion.hpp
new file mode 100644
index 000000000..aef660ee2
--- /dev/null
+++ b/corsika/process/QGSJetII/ParticleConversion.hpp
@@ -0,0 +1,88 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+
+#include <string>
+
+namespace corsika::qgsjetII {
+
+  /**
+     These are the possible secondaries produced by QGSJetII
+   */
+  enum class QgsjetIICode : int8_t;
+  using QgsjetIICodeIntType = std::underlying_type<QgsjetIICode>::type;
+
+  /**
+     These are the possible projectile for which QGSJetII knwos cross section
+   */
+  enum class QgsjetIIXSClass : int8_t {
+    CannotInteract = 0,
+    LightMesons = 1,
+    Baryons = 2,
+    Kaons = 3,
+  };
+  using QgsjetIIXSClassIntType = std::underlying_type<QgsjetIIXSClass>::type;
+
+  /**
+     These are the only possible projectile types in QGSJetII
+   */
+  enum class QgsjetIIHadronType : int8_t {
+    UndefinedType = 0,
+    PiPlusType = +1,
+    PiMinusType = -1,
+    ProtonType = +2,
+    AntiProtonType = -2,
+    NeutronType = +3,
+    AntiNeutronType = -3,
+    KaonPlusType = +4,
+    KaonMinusType = -4,
+    Kaon0LType = +5,
+    Kaon0SType = -5,
+    // special codes, not in QGSJetII
+    NucleusType = 100,
+    NeutralLightMesonType = 101,
+  };
+  using QgsjetIIHadronTypeIntType = std::underlying_type<QgsjetIIHadronType>::type;
+
+#include <corsika/process/qgsjetII/Generated.inc>
+
+  QgsjetIICode constexpr ConvertToQgsjetII(corsika::Code pCode) {
+    return static_cast<QgsjetIICode>(
+        corsika2qgsjetII[static_cast<corsika::CodeIntType>(pCode)]);
+  }
+
+  corsika::Code constexpr ConvertFromQgsjetII(QgsjetIICode pCode) {
+    auto const pCodeInt = static_cast<QgsjetIICodeIntType>(pCode);
+    auto const corsikaCode = qgsjetII2corsika[pCodeInt - minQgsjetII];
+    if (corsikaCode == corsika::Code::Unknown) {
+      throw std::runtime_error(std::string("QGSJETII/CORSIKA conversion of pCodeInt=")
+                                   .append(std::to_string(pCodeInt))
+                                   .append(" impossible"));
+    }
+    return corsikaCode;
+  }
+
+  int constexpr ConvertToQgsjetIIRaw(corsika::Code pCode) {
+    return static_cast<int>(ConvertToQgsjetII(pCode));
+  }
+
+  int constexpr GetQgsjetIIXSCode(corsika::Code pCode) {
+    if (pCode == corsika::Code::Nucleus) return 2;
+    return corsika2qgsjetIIXStype[static_cast<corsika::CodeIntType>(pCode)];
+  }
+
+  bool constexpr CanInteract(corsika::Code pCode) {
+    return (GetQgsjetIIXSCode(pCode) > 0) && (ConvertToQgsjetIIRaw(pCode) <= 5);
+  }
+
+} // namespace corsika::qgsjetII
+
+} // namespace corsika::process::qgsjetII
diff --git a/corsika/process/QGSJetII/QGSJetIIFragmentsStack.hpp b/corsika/process/QGSJetII/QGSJetIIFragmentsStack.hpp
new file mode 100644
index 000000000..bbb852f24
--- /dev/null
+++ b/corsika/process/QGSJetII/QGSJetIIFragmentsStack.hpp
@@ -0,0 +1,76 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/process/QGSJetII/ParticleConversion.hpp>
+#include <corsika/process/QGSJetII/qgsjet-II-04.h>
+#include <corsika/framework/stack/Stack.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+namespace corsika::qgsjetII {
+
+  class QGSJetIIFragmentsStackData {
+
+  public:
+    void Dump() const {}
+
+    void Clear() {
+      qgarr13_.nsf = 0;
+      qgarr55_.nwt = 0;
+    }
+    unsigned int GetSize() const { return qgarr13_.nsf; }
+    unsigned int GetCapacity() const { return iapmax; }
+
+    static unsigned int GetWoundedNucleonsTarget() { return qgarr55_.nwt; }
+    static unsigned int GetWoundedNucleonsProjectile() { return qgarr55_.nwp; }
+
+    int GetFragmentSize(const unsigned int i) const { return qgarr13_.iaf[i]; }
+    void SetFragmentSize(const unsigned int i, const int v) { qgarr13_.iaf[i] = v; }
+
+    void Copy(const unsigned int i1, const unsigned int i2) {
+      qgarr13_.iaf[i2] = qgarr13_.iaf[i1];
+    }
+
+    void Swap(const unsigned int i1, const unsigned int i2) {
+      std::swap(qgarr13_.iaf[i1], qgarr13_.iaf[i2]);
+    }
+
+    void IncrementSize() { qgarr13_.nsf++; }
+    void DecrementSize() {
+      if (qgarr13_.nsf > 0) { qgarr13_.nsf--; }
+    }
+  };
+
+  template <typename StackIteratorInterface>
+  class FragmentsInterface : public corsika::ParticleBase<StackIteratorInterface> {
+
+    using corsika::ParticleBase<StackIteratorInterface>::GetStackData;
+    using corsika::ParticleBase<StackIteratorInterface>::GetIndex;
+
+  public:
+    void SetParticleData(const int vSize) { SetFragmentSize(vSize); }
+
+    void SetParticleData(FragmentsInterface<StackIteratorInterface>& /*parent*/,
+                         const int vSize) {
+      SetFragmentSize(vSize);
+    }
+
+    void SetFragmentSize(const int v) { GetStackData().SetFragmentSize(GetIndex(), v); }
+
+    double GetFragmentSize() const { return GetStackData().GetFragmentSize(GetIndex()); }
+  };
+
+  typedef corsika::Stack<QGSJetIIFragmentsStackData, FragmentsInterface>
+      QGSJetIIFragmentsStack;
+
+} // end namespace corsika::qgsjetII
+
+#endif
diff --git a/corsika/process/QGSJetII/QGSJetIIStack.hpp b/corsika/process/QGSJetII/QGSJetIIStack.hpp
new file mode 100644
index 000000000..9bd8512d1
--- /dev/null
+++ b/corsika/process/QGSJetII/QGSJetIIStack.hpp
@@ -0,0 +1,129 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/geometry/CoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/process/QGSJetII/ParticleConversion.hpp>
+#include <corsika/process/QGSJetII/qgsjet-II-04.h>
+#include <corsika/framework/stack/Stack.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+namespace corsika::qgsjetII {
+
+  typedef corsika::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
+
+  class QGSJetIIStackData {
+
+  public:
+    void Dump() const {}
+
+    void Clear() {
+      qgarr12_.nsp = 0;
+      qgarr13_.nsf = 0;
+      qgarr55_.nwt = 0;
+    }
+    unsigned int GetSize() const { return qgarr12_.nsp; }
+    unsigned int GetCapacity() const { return nptmax; }
+
+    void SetId(const unsigned int i, const int v) { qgarr14_.ich[i] = v; }
+    void SetEnergy(const unsigned int i, const corsika::units::si::HEPEnergyType v) {
+      using namespace corsika::units::si;
+      qgarr14_.esp[i][0] = v / 1_GeV;
+    }
+
+    void SetMomentum(const unsigned int i, const MomentumVector& v) {
+      using namespace corsika::units::si;
+      auto tmp = v.GetComponents();
+      qgarr14_.esp[i][2] = tmp[0] / 1_GeV;
+      qgarr14_.esp[i][3] = tmp[1] / 1_GeV;
+      qgarr14_.esp[i][1] = tmp[2] / 1_GeV;
+    }
+
+    int GetId(const unsigned int i) const { return qgarr14_.ich[i]; }
+    corsika::units::si::HEPEnergyType GetEnergy(const int i) const {
+      using namespace corsika::units::si;
+      return qgarr14_.esp[i][0] * 1_GeV;
+    }
+    MomentumVector GetMomentum(const unsigned int i, const corsika::CoordinateSystem& CS) const {
+      using namespace corsika::units::si;
+      geometry::QuantityVector<hepmomentum_d> components = {qgarr14_.esp[i][2] * 1_GeV,
+                                                            qgarr14_.esp[i][3] * 1_GeV,
+                                                            qgarr14_.esp[i][1] * 1_GeV};
+      return MomentumVector(CS, components);
+    }
+
+    void Copy(const unsigned int i1, const unsigned int i2) {
+      qgarr14_.ich[i2] = qgarr14_.ich[i1];
+      for (unsigned int i = 0; i < 4; ++i) qgarr14_.esp[i2][i] = qgarr14_.esp[i1][i];
+    }
+
+    void Swap(const unsigned int i1, const unsigned int i2) {
+      std::swap(qgarr14_.ich[i1], qgarr14_.ich[i2]);
+      for (unsigned int i = 0; i < 4; ++i)
+        std::swap(qgarr14_.esp[i1][i], qgarr14_.esp[i2][i]);
+    }
+
+    void IncrementSize() { qgarr12_.nsp++; }
+    void DecrementSize() {
+      if (qgarr12_.nsp > 0) { qgarr12_.nsp--; }
+    }
+  };
+
+  template <typename StackIteratorInterface>
+  class ParticleInterface : public corsika::ParticleBase<StackIteratorInterface> {
+
+    using corsika::ParticleBase<StackIteratorInterface>::GetStackData;
+    using corsika::ParticleBase<StackIteratorInterface>::GetIndex;
+
+  public:
+    void SetParticleData(const int vID, const corsika::units::si::HEPEnergyType vE,
+                         const MomentumVector& vP,
+                         const corsika::units::si::HEPMassType) {
+      SetPID(vID);
+      SetEnergy(vE);
+      SetMomentum(vP);
+    }
+
+    void SetParticleData(ParticleInterface<StackIteratorInterface>& /*parent*/,
+                         const int vID, const corsika::units::si::HEPEnergyType vE,
+                         const MomentumVector& vP,
+                         const corsika::units::si::HEPMassType) {
+      SetPID(vID);
+      SetEnergy(vE);
+      SetMomentum(vP);
+    }
+
+    void SetEnergy(const corsika::units::si::HEPEnergyType v) {
+      GetStackData().SetEnergy(GetIndex(), v);
+    }
+
+    corsika::units::si::HEPEnergyType GetEnergy() const {
+      return GetStackData().GetEnergy(GetIndex());
+    }
+
+    void SetPID(const int v) { GetStackData().SetId(GetIndex(), v); }
+
+    corsika::qgsjetII::QgsjetIICode GetPID() const {
+      return static_cast<corsika::qgsjetII::QgsjetIICode>(
+          GetStackData().GetId(GetIndex()));
+    }
+
+    MomentumVector GetMomentum(const corsika::CoordinateSystem& CS) const { return GetStackData().GetMomentum(GetIndex(), CS); }
+
+    void SetMomentum(const MomentumVector& v) {
+      GetStackData().SetMomentum(GetIndex(), v);
+    }
+  };
+
+  typedef corsika::Stack<QGSJetIIStackData, ParticleInterface> QGSJetIIStack;
+
+} // end namespace corsika::qgsjetII
+
+#endif
diff --git a/Processes/QGSJetII/qgsjet-II-04.h b/corsika/process/QGSJetII/qgsjet-II-04.h
similarity index 100%
rename from Processes/QGSJetII/qgsjet-II-04.h
rename to corsika/process/QGSJetII/qgsjet-II-04.h
diff --git a/Processes/Sibyll/Decay.h b/corsika/process/Sibyll/Decay.hpp
similarity index 76%
rename from Processes/Sibyll/Decay.h
rename to corsika/process/Sibyll/Decay.hpp
index e5862344e..dbd009dcf 100644
--- a/Processes/Sibyll/Decay.h
+++ b/corsika/process/Sibyll/Decay.hpp
@@ -8,29 +8,37 @@
 
 #pragma once
 
-#include <corsika/particles/ParticleProperties.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
 #include <corsika/process/DecayProcess.h>
-#include <corsika/process/SecondariesProcess.h>
+#include <corsika/framework/sequence/SecondariesProcess.hpp>
 
 #include <set>
 #include <vector>
 
-namespace corsika::process {
+namespace corsika {
 
   namespace sibyll {
 
-    class Decay : public corsika::process::DecayProcess<Decay> {
-      int count_ = 0;
-      bool handleAllDecays_ = true;
-      bool sibyll_listing_ = false;
+    class Decay : public corsika::DecayProcess<Decay> {
+      int fCount = 0;
 
     public:
       Decay(const bool sibyll_listing = false);
       Decay(std::set<particles::Code>);
       ~Decay();
+      void Init();
 
-      void PrintDecayConfig(const corsika::particles::Code);
-      void PrintDecayConfig();
+      void SetStable(const std::vector<particles::Code>);
+      void SetUnstable(const std::vector<particles::Code>);
+      void SetUnstable(const corsika::Code);
+      void SetStable(const corsika::Code);
+      void SetAllUnstable();
+      void SetAllStable();
+      bool IsStable(const corsika::Code);
+      bool IsUnstable(const corsika::Code);
+      void SetDecay(const particles::Code, const bool);
+
+      void PrintDecayConfig(const corsika::Code);
       void SetHadronsUnstable();
 
       // is Sibyll::Decay set to handle the decay of this particle?
@@ -84,4 +92,6 @@ namespace corsika::process {
 
   } // namespace sibyll
 
-} // namespace corsika::process
+} // namespace corsika
+
+#endif
diff --git a/corsika/process/Sibyll/Interaction.hpp b/corsika/process/Sibyll/Interaction.hpp
new file mode 100644
index 000000000..f89245b21
--- /dev/null
+++ b/corsika/process/Sibyll/Interaction.hpp
@@ -0,0 +1,93 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <tuple>
+
+namespace corsika::sibyll {
+
+  class Interaction : public corsika::InteractionProcess<Interaction> {
+
+    int count_ = 0;
+    int nucCount_ = 0;
+    static bool initialized_; ///! flag to assure init is done only once
+    bool sibyll_listing_;
+
+  public:
+    Interaction(const bool sibyll_printout_on = false);
+    ~Interaction();
+
+    void Init();
+
+    void SetStable(std::vector<particles::Code> const&);
+    void SetUnstable(std::vector<particles::Code> const&);
+
+    void SetUnstable(const corsika::Code);
+    void SetStable(const corsika::Code);
+    void SetAllUnstable();
+    void SetAllStable();
+
+    static bool WasInitialized() { return initialized_; }
+    bool IsValidCoMEnergy(corsika::units::si::HEPEnergyType ecm) const {
+      return (minEnergyCoM_ <= ecm) && (ecm <= maxEnergyCoM_);
+    }
+    int GetMaxTargetMassNumber() const { return maxTargetMassNumber_; }
+    corsika::units::si::HEPEnergyType GetMinEnergyCoM() const { return minEnergyCoM_; }
+    corsika::units::si::HEPEnergyType GetMaxEnergyCoM() const { return maxEnergyCoM_; }
+    bool IsValidTarget(corsika::Code TargetId) const {
+      return (corsika::GetNucleusA(TargetId) < maxTargetMassNumber_) &&
+             corsika::IsNucleus(TargetId);
+    }
+
+    std::tuple<corsika::units::si::CrossSectionType, corsika::units::si::CrossSectionType>
+    GetCrossSection(const corsika::Code, const corsika::Code,
+                    const corsika::units::si::HEPEnergyType) const;
+
+    template <typename TParticle>
+    corsika::units::si::GrammageType GetInteractionLength(const TParticle&) const;
+
+    /**
+       In this function SIBYLL is called to produce one event. The
+       event is copied (and boosted) into the shower lab frame.
+     */
+
+    template <typename TProjectile>
+    corsika::EProcessReturn DoInteraction(TProjectile&);
+
+  private:
+    corsika::RNG& RNG_ =
+        corsika::RNGManager::GetInstance().GetRandomStream("s_rndm");
+    // FOR NOW keep trackedParticles private, could be configurable
+    std::vector<particles::Code> const trackedParticles_ = {
+        particles::Code::PiPlus,     particles::Code::PiMinus,
+        particles::Code::Pi0,        particles::Code::KMinus,
+        particles::Code::KPlus,      particles::Code::K0Long,
+        particles::Code::K0Short,    particles::Code::SigmaPlus,
+        particles::Code::Sigma0,     particles::Code::Sigma0Bar,
+        particles::Code::SigmaMinus, particles::Code::Lambda0,
+        particles::Code::Xi0,        particles::Code::XiMinus,
+        particles::Code::OmegaMinus, particles::Code::DPlus,
+        particles::Code::DMinus,     particles::Code::D0,
+        particles::Code::MuMinus,    particles::Code::MuPlus,
+        particles::Code::D0Bar};
+    const bool internalDecays_ = true;
+    const corsika::units::si::HEPEnergyType minEnergyCoM_ =
+        10. * 1e9 * corsika::units::si::electronvolt;
+    const corsika::units::si::HEPEnergyType maxEnergyCoM_ =
+        1.e6 * 1e9 * corsika::units::si::electronvolt;
+    const int maxTargetMassNumber_ = 18;
+  };
+
+} // namespace corsika::sibyll
+
+#endif
diff --git a/corsika/process/Sibyll/NuclearInteraction.hpp b/corsika/process/Sibyll/NuclearInteraction.hpp
new file mode 100644
index 000000000..7a0fe1dfc
--- /dev/null
+++ b/corsika/process/Sibyll/NuclearInteraction.hpp
@@ -0,0 +1,79 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+
+namespace corsika::sibyll {
+
+  class Interaction; // fwd-decl
+
+  /**
+   *
+   *
+   **/
+  template <class TEnvironment>
+  class NuclearInteraction
+      : public corsika::InteractionProcess<NuclearInteraction<TEnvironment>> {
+
+    int count_ = 0;
+    int nucCount_ = 0;
+
+  public:
+    NuclearInteraction(corsika::sibyll::Interaction&, TEnvironment const&);
+    ~NuclearInteraction();
+
+    void InitializeNuclearCrossSections();
+    void PrintCrossSectionTable(corsika::Code);
+    corsika::units::si::CrossSectionType ReadCrossSectionTable(
+        const int, corsika::Code, corsika::units::si::HEPEnergyType);
+    corsika::units::si::HEPEnergyType GetMinEnergyPerNucleonCoM() {
+      return gMinEnergyPerNucleonCoM_;
+    }
+    corsika::units::si::HEPEnergyType GetMaxEnergyPerNucleonCoM() {
+      return gMaxEnergyPerNucleonCoM_;
+    }
+    unsigned int constexpr GetMaxNucleusAProjectile() { return gMaxNucleusAProjectile_; }
+    unsigned int constexpr GetMaxNFragments() { return gMaxNFragments_; }
+    unsigned int constexpr GetNEnergyBins() { return gNEnBins_; }
+
+    template <typename Particle>
+    std::tuple<corsika::units::si::CrossSectionType, corsika::units::si::CrossSectionType>
+    GetCrossSection(Particle& p, const corsika::Code TargetId);
+
+    template <typename Particle>
+    corsika::units::si::GrammageType GetInteractionLength(Particle const&);
+
+    template <typename Projectile>
+    corsika::EProcessReturn DoInteraction(Projectile&);
+
+  private:
+    TEnvironment const& environment_;
+    corsika::sibyll::Interaction& hadronicInteraction_;
+    std::map<corsika::Code, int> targetComponentsIndex_;
+    corsika::RNG& RNG_ =
+        corsika::RNGManager::GetInstance().GetRandomStream("s_rndm");
+    static constexpr int gNSample_ =
+        500; // number of samples in MC estimation of cross section
+    static constexpr unsigned int gMaxNucleusAProjectile_ = 56;
+    static constexpr unsigned int gNEnBins_ = 6;
+    static constexpr unsigned int gMaxNFragments_ = 60;
+    // energy limits defined by table used for cross section in signuc.f
+    // 10**1 GeV to 10**6 GeV
+    static constexpr corsika::units::si::HEPEnergyType gMinEnergyPerNucleonCoM_ =
+        10. * 1e9 * corsika::units::si::electronvolt;
+    static constexpr corsika::units::si::HEPEnergyType gMaxEnergyPerNucleonCoM_ =
+        1.e6 * 1e9 * corsika::units::si::electronvolt;
+  };
+
+} // namespace corsika::sibyll
+
+#endif
diff --git a/Processes/Sibyll/ParticleConversion.h b/corsika/process/Sibyll/ParticleConversion.h
similarity index 58%
rename from Processes/Sibyll/ParticleConversion.h
rename to corsika/process/Sibyll/ParticleConversion.h
index 143e15e63..a2bc716ca 100644
--- a/Processes/Sibyll/ParticleConversion.h
+++ b/corsika/process/Sibyll/ParticleConversion.h
@@ -8,13 +8,11 @@
 
 #pragma once
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/process/sibyll/sibyll2.3d.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
 
 #include <string>
 
-namespace corsika::process::sibyll {
+namespace corsika::sibyll {
 
   enum class SibyllCode : int8_t;
   using SibyllCodeIntType = std::underlying_type<SibyllCode>::type;
@@ -32,14 +30,15 @@ namespace corsika::process::sibyll {
 
 #include <corsika/process/sibyll/Generated.inc>
 
-  SibyllCode constexpr ConvertToSibyll(corsika::particles::Code pCode) {
-    return corsika2sibyll[static_cast<corsika::particles::CodeIntType>(pCode)];
+  SibyllCode constexpr ConvertToSibyll(corsika::Code pCode) {
+    return static_cast<SibyllCode>(
+        corsika2sibyll[static_cast<corsika::CodeIntType>(pCode)]);
   }
 
-  corsika::particles::Code constexpr ConvertFromSibyll(SibyllCode pCode) {
+  corsika::Code constexpr ConvertFromSibyll(SibyllCode pCode) {
     auto const s = static_cast<SibyllCodeIntType>(pCode);
     auto const corsikaCode = sibyll2corsika[s - minSibyll];
-    if (corsikaCode == corsika::particles::Code::Unknown) {
+    if (corsikaCode == corsika::Code::Unknown) {
       throw std::runtime_error(std::string("SIBYLL/CORSIKA conversion of ")
                                    .append(std::to_string(s))
                                    .append(" impossible"));
@@ -47,19 +46,18 @@ namespace corsika::process::sibyll {
     return corsikaCode;
   }
 
-  int constexpr ConvertToSibyllRaw(corsika::particles::Code pCode) {
+  int constexpr ConvertToSibyllRaw(corsika::Code pCode) {
     return static_cast<int>(ConvertToSibyll(pCode));
   }
 
-  int constexpr GetSibyllXSCode(corsika::particles::Code pCode) {
-    return static_cast<SibyllXSClassIntType>(
-        corsika2sibyllXStype[static_cast<corsika::particles::CodeIntType>(pCode)]);
+  int constexpr GetSibyllXSCode(corsika::Code pCode) {
+    return corsika2sibyllXStype[static_cast<corsika::CodeIntType>(pCode)];
   }
 
-  bool constexpr CanInteract(corsika::particles::Code pCode) {
+  bool constexpr CanInteract(corsika::Code pCode) {
     return GetSibyllXSCode(pCode) > 0;
   }
 
-  corsika::units::si::HEPMassType GetSibyllMass(corsika::particles::Code const);
+} // namespace corsika::sibyll
 
 } // namespace corsika::process::sibyll
diff --git a/Processes/Sibyll/SibStack.h b/corsika/process/Sibyll/SibStack.hpp
similarity index 78%
rename from Processes/Sibyll/SibStack.h
rename to corsika/process/Sibyll/SibStack.hpp
index e3ebcc8ff..e17e2c536 100644
--- a/Processes/Sibyll/SibStack.h
+++ b/corsika/process/Sibyll/SibStack.hpp
@@ -8,16 +8,16 @@
 
 #pragma once
 
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
 #include <corsika/process/sibyll/ParticleConversion.h>
-#include <corsika/process/sibyll/sibyll2.3d.h>
-#include <corsika/stack/Stack.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/process/sibyll/sibyll2.3c.h>
+#include <corsika/framework/stack/Stack.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-namespace corsika::process::sibyll {
+namespace corsika::sibyll {
 
-  typedef corsika::geometry::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
+  typedef corsika::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
 
   class SibStackData {
 
@@ -53,9 +53,9 @@ namespace corsika::process::sibyll {
       return s_plist_.p[4][i] * 1_GeV;
     }
     MomentumVector GetMomentum(const unsigned int i) const {
-      using corsika::geometry::CoordinateSystem;
-      using corsika::geometry::QuantityVector;
-      using corsika::geometry::RootCoordinateSystem;
+      using corsika::CoordinateSystem;
+      using corsika::QuantityVector;
+      using corsika::RootCoordinateSystem;
       using namespace corsika::units::si;
       CoordinateSystem& rootCS =
           RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
@@ -82,13 +82,13 @@ namespace corsika::process::sibyll {
   };
 
   template <typename StackIteratorInterface>
-  class ParticleInterface : public corsika::stack::ParticleBase<StackIteratorInterface> {
+  class ParticleInterface : public corsika::ParticleBase<StackIteratorInterface> {
 
-    using corsika::stack::ParticleBase<StackIteratorInterface>::GetStackData;
-    using corsika::stack::ParticleBase<StackIteratorInterface>::GetIndex;
+    using corsika::ParticleBase<StackIteratorInterface>::GetStackData;
+    using corsika::ParticleBase<StackIteratorInterface>::GetIndex;
 
   public:
-    void SetParticleData(const int vID, // corsika::process::sibyll::SibyllCode vID,
+    void SetParticleData(const int vID, // corsika::sibyll::SibyllCode vID,
                          const corsika::units::si::HEPEnergyType vE,
                          const MomentumVector& vP,
                          const corsika::units::si::HEPMassType vM) {
@@ -99,7 +99,7 @@ namespace corsika::process::sibyll {
     }
 
     void SetParticleData(ParticleInterface<StackIteratorInterface>& /*parent*/,
-                         const int vID, //  corsika::process::sibyll::SibyllCode vID,
+                         const int vID, //  corsika::sibyll::SibyllCode vID,
                          const corsika::units::si::HEPEnergyType vE,
                          const MomentumVector& vP,
                          const corsika::units::si::HEPMassType vM) {
@@ -129,8 +129,8 @@ namespace corsika::process::sibyll {
 
     void SetPID(const int v) { GetStackData().SetId(GetIndex(), v); }
 
-    corsika::process::sibyll::SibyllCode GetPID() const {
-      return static_cast<corsika::process::sibyll::SibyllCode>(
+    corsika::sibyll::SibyllCode GetPID() const {
+      return static_cast<corsika::sibyll::SibyllCode>(
           GetStackData().GetId(GetIndex()));
     }
 
@@ -141,6 +141,8 @@ namespace corsika::process::sibyll {
     }
   };
 
-  typedef corsika::stack::Stack<SibStackData, ParticleInterface> SibStack;
+  typedef corsika::Stack<SibStackData, ParticleInterface> SibStack;
 
-} // end namespace corsika::process::sibyll
+} // end namespace corsika::sibyll
+
+#endif
diff --git a/Processes/StackInspector/StackInspector.h b/corsika/process/StackInspector.hpp
similarity index 75%
rename from Processes/StackInspector/StackInspector.h
rename to corsika/process/StackInspector.hpp
index 6d99a4164..0b2d8aaf7 100644
--- a/Processes/StackInspector/StackInspector.h
+++ b/corsika/process/StackInspector.hpp
@@ -8,22 +8,22 @@
 
 #pragma once
 
-#include <corsika/process/StackProcess.h>
-#include <corsika/setup/SetupTrajectory.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/sequence/StackProcess.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <chrono>
+#include "corsika/setup/SetupTrajectory.hpp"
 
-namespace corsika::process {
+namespace corsika {
 
   namespace stack_inspector {
 
     template <typename TStack>
-    class StackInspector : public corsika::process::StackProcess<StackInspector<TStack>> {
+    class StackInspector : public corsika::StackProcess<StackInspector<TStack>> {
 
       typedef typename TStack::ParticleType Particle;
 
-      using corsika::process::StackProcess<StackInspector<TStack>>::GetStep;
+      using corsika::StackProcess<StackInspector<TStack>>::GetStep;
 
     public:
       StackInspector(const int vNStep, const bool vReportStack,
@@ -49,4 +49,5 @@ namespace corsika::process {
 
   } // namespace stack_inspector
 
-} // namespace corsika::process
+} // namespace corsika
+
diff --git a/Processes/SwitchProcess/SwitchProcess.h b/corsika/process/SwitchProcess.hpp
similarity index 92%
rename from Processes/SwitchProcess/SwitchProcess.h
rename to corsika/process/SwitchProcess.hpp
index 6da1b82d8..1ade22295 100644
--- a/Processes/SwitchProcess/SwitchProcess.h
+++ b/corsika/process/SwitchProcess.hpp
@@ -8,12 +8,12 @@
 
 #pragma once
 
-#include <corsika/process/InteractionProcess.h>
-#include <corsika/process/ProcessSequence.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <corsika/framework/sequence/ProcessSequence.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include "corsika/setup/SetupStack.hpp"
 
-namespace corsika::process::switch_process {
+namespace corsika::switch_process {
 
   /**
    * This process provides an energy-based switch between two interaction processes P1 and
@@ -97,4 +97,5 @@ namespace corsika::process::switch_process {
       }
     }
   };
-} // namespace corsika::process::switch_process
+} // namespace corsika::switch_process
+
diff --git a/Processes/TrackWriter/TrackWriter.h b/corsika/process/TrackWriter.hpp
similarity index 68%
rename from Processes/TrackWriter/TrackWriter.h
rename to corsika/process/TrackWriter.hpp
index b62e09fea..3af5fdda6 100644
--- a/Processes/TrackWriter/TrackWriter.h
+++ b/corsika/process/TrackWriter.hpp
@@ -8,21 +8,21 @@
 
 #pragma once
 
-#include <corsika/process/ContinuousProcess.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/sequence/ContinuousProcess.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <fstream>
 #include <string>
 
-namespace corsika::process::track_writer {
+namespace corsika::track_writer {
 
-  class TrackWriter : public corsika::process::ContinuousProcess<TrackWriter> {
+  class TrackWriter : public corsika::ContinuousProcess<TrackWriter> {
 
   public:
     TrackWriter(std::string const& filename);
 
     template <typename Particle, typename Track>
-    corsika::process::EProcessReturn DoContinuous(Particle&, Track&);
+    corsika::EProcessReturn DoContinuous(Particle&, Track&);
 
     template <typename Particle, typename Track>
     corsika::units::si::LengthType MaxStepLength(Particle&, Track&) {
@@ -37,4 +37,5 @@ namespace corsika::process::track_writer {
     int precision = 6;
   };
 
-} // namespace corsika::process::track_writer
+} // namespace corsika::track_writer
+
diff --git a/corsika/process/detail/EnergyLoss.cc b/corsika/process/detail/EnergyLoss.cc
new file mode 100644
index 000000000..6e6d44ac7
--- /dev/null
+++ b/corsika/process/detail/EnergyLoss.cc
@@ -0,0 +1,303 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/process/energy_loss/EnergyLoss.h>
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+
+#include <corsika/framework/geometry/Line.hpp>
+
+#include <cmath>
+#include <fstream>
+#include <iostream>
+#include <limits>
+#include <numeric>
+
+#include "../corsika/setup/SetupStack.hpp"
+#include "../corsika/setup/SetupTrajectory.hpp"
+
+using namespace std;
+
+using namespace corsika;
+using namespace corsika::units::si;
+using SetupParticle = corsika::Stack::ParticleType;
+using SetupTrack = corsika::Trajectory;
+
+namespace corsika {
+
+  auto elab2plab = [](HEPEnergyType Elab, HEPMassType m) {
+    return sqrt((Elab - m) * (Elab + m));
+  };
+
+  /**
+   *   PDG2018, passage of particles through matter
+   *
+   * Note, that \f$I_{\mathrm{eff}}\f$ of composite media a determined from \f$ \ln I =
+   * \sum_i a_i \ln(I_i) \f$ where \f$ a_i \f$ is the fraction of the electron population
+   * (\f$\sim Z_i\f$) of the \f$i\f$-th element. This can also be used for shell
+   * corrections or density effects.
+   *
+   * The \f$I_{\mathrm{eff}}\f$ of compounds is not better than a few percent, if not
+   * measured explicitly.
+   *
+   * For shell correction, see Sec 6 of https://www.nap.edu/read/20066/chapter/8#115
+   *
+   */
+  HEPEnergyType EnergyLoss::BetheBloch(SetupParticle const& p, GrammageType const dX) {
+
+    // all these are material constants and have to come through Environment
+    // right now: values for nitrogen_D
+    // 7 nitrogen_gas 82.0 0.49976 D E 0.0011653 0.0 1.7378 4.1323 0.15349 3.2125 10.54
+    auto Ieff = 82.0_eV;
+    [[maybe_unused]] auto Zmat = 7;
+    auto ZoverA = 0.49976_mol / 1_g;
+    const double x0 = 1.7378;
+    const double x1 = 4.1323;
+    const double Cbar = 10.54;
+    const double delta0 = 0.0;
+    const double aa = 0.15349;
+    const double sk = 3.2125;
+    // end of material constants
+
+    // this is the Bethe-Bloch coefficiet 4pi N_A r_e^2 m_e c^2
+    auto constexpr K = 0.307075_MeV / 1_mol * square(1_cm);
+    HEPEnergyType const E = p.GetEnergy();
+    HEPMassType const m = p.GetMass();
+    double const gamma = E / m;
+    int const Z = p.GetChargeNumber();
+    int const Z2 = Z * Z;
+    HEPMassType constexpr me = particles::Electron::GetMass();
+    auto const m2 = m * m;
+    auto constexpr me2 = me * me;
+    double const gamma2 = gamma * gamma;
+
+    double const beta2 = (gamma2 - 1) / gamma2; // 1-1/gamma2    (1-1/gamma)*(1+1/gamma);
+                                                // (gamma_2-1)/gamma_2 = (1-1/gamma2);
+    double constexpr c2 = 1;                    // HEP convention here c=c2=1
+    cout << "BetheBloch beta2=" << beta2 << " gamma2=" << gamma2 << endl;
+    [[maybe_unused]] double const eta2 = beta2 / (1 - beta2);
+    HEPMassType const Wmax =
+        2 * me * c2 * beta2 * gamma2 / (1 + 2 * gamma * me / m + me2 / m2);
+    // approx, but <<1%    HEPMassType const Wmax = 2*me*c2*beta2*gamma2;      for HEAVY
+    // PARTICLES Wmax ~ 2me v2 for non-relativistic particles
+    cout << "BetheBloch Wmax=" << Wmax << endl;
+
+    // Sternheimer parameterization, density corrections towards high energies
+    // NOTE/TODO: when Cbar is 0 it needs to be approximated from parameterization ->
+    // MISSING
+    cout << "BetheBloch p.GetMomentum().GetNorm()/m=" << p.GetMomentum().GetNorm() / m
+         << endl;
+    double const x = log10(p.GetMomentum().GetNorm() / m);
+    double delta = 0;
+    if (x >= x1) {
+      delta = 2 * (log(10)) * x - Cbar;
+    } else if (x < x1 && x >= x0) {
+      delta = 2 * (log(10)) * x - Cbar + aa * pow((x1 - x), sk);
+    } else if (x < x0) { // and IF conductor (otherwise, this is 0)
+      delta = delta0 * pow(100, 2 * (x - x0));
+    }
+    cout << "BetheBloch delta=" << delta << endl;
+
+    // with further low energies correction, accurary ~1% down to beta~0.05 (1MeV for p)
+
+    // shell correction, <~100MeV
+    // need more clarity about formulas and units
+    const double Cadj = 0;
+    /*
+    // https://www.nap.edu/read/20066/chapter/8#104
+    HEPEnergyType Iadj = 12_eV * Z + 7_eV;  // Iadj<163eV
+    if (Iadj>=163_eV)
+      Iadj = 9.76_eV * Z + 58.8_eV * pow(Z, -0.19);  // Iadj>=163eV
+    double const Cadj = (0.422377/eta2 + 0.0304043/(eta2*eta2) -
+    0.00038106/(eta2*eta2*eta2)) * 1e-6 * Iadj*Iadj + (3.858019/eta2 -
+    0.1667989/(eta2*eta2) + 0.00157955/(eta2*eta2*eta2)) * 1e-9 * Iadj*Iadj*Iadj;
+    */
+
+    // Barkas correction O(Z3) higher-order Born approximation
+    // see Appl. Phys. 85 (1999) 1249
+    // double A = 1;
+    // if (p.GetPID() == particles::Code::Nucleus) A = p.GetNuclearA();
+    // double const Erel = (p.GetEnergy()-p.GetMass()) / A / 1_keV;
+    // double const Llow = 0.01 * Erel;
+    // double const Lhigh = 1.5/pow(Erel, 0.4) + 45000./Zmat * pow(Erel, 1.6);
+    // double const barkas = Z * Llow*Lhigh/(Llow+Lhigh); // RU, I think the Z was
+    // missing...
+    double const barkas = 1; // does not work yet
+
+    // Bloch correction for O(Z4) higher-order Born approximation
+    // see Appl. Phys. 85 (1999) 1249
+    const double alpha = 1. / 137.035999173;
+    double const y2 = Z * Z * alpha * alpha / beta2;
+    double const bloch = -y2 * (1.202 - y2 * (1.042 - 0.855 * y2 + 0.343 * y2 * y2));
+
+    // cout << "BetheBloch Erel=" << Erel << " barkas=" << barkas << " bloch=" << bloch <<
+    // endl;
+
+    double const aux = 2 * me * c2 * beta2 * gamma2 * Wmax / (Ieff * Ieff);
+    return -K * Z2 * ZoverA / beta2 *
+           (0.5 * log(aux) - beta2 - Cadj / Z - delta / 2 + barkas + bloch) * dX;
+  }
+
+EnergyLoss::EnergyLoss(environment::ShowerAxis const& shower_axis,
+                       corsika::units::si::HEPEnergyType emCut)
+    : shower_axis_(shower_axis)
+    , emCut_(emCut)
+    , profile_(int(shower_axis.maximumX() / dX_) + 1) {}
+
+auto elab2plab = [](HEPEnergyType Elab, HEPMassType m) {
+  return sqrt((Elab - m) * (Elab + m));
+};
+
+/**
+ *   PDG2018, passage of particles through matter
+ *
+ * Note, that \f$I_{\mathrm{eff}}\f$ of composite media a determined from \f$ \ln I =
+ * \sum_i a_i \ln(I_i) \f$ where \f$ a_i \f$ is the fraction of the electron population
+ * (\f$\sim Z_i\f$) of the \f$i\f$-th element. This can also be used for shell
+ * corrections or density effects.
+ *
+ * The \f$I_{\mathrm{eff}}\f$ of compounds is not better than a few percent, if not
+ * measured explicitly.
+ *
+ * For shell correction, see Sec 6 of https://www.nap.edu/read/20066/chapter/8#115
+ *
+ */
+HEPEnergyType EnergyLoss::BetheBloch(SetupParticle const& p, GrammageType const dX) {
+
+  // all these are material constants and have to come through Environment
+  // right now: values for nitrogen_D
+  // 7 nitrogen_gas 82.0 0.49976 D E 0.0011653 0.0 1.7378 4.1323 0.15349 3.2125 10.54
+  auto Ieff = 82.0_eV;
+  [[maybe_unused]] auto Zmat = 7;
+  auto ZoverA = 0.49976_mol / 1_g;
+  const double x0 = 1.7378;
+  const double x1 = 4.1323;
+  const double Cbar = 10.54;
+  const double delta0 = 0.0;
+  const double aa = 0.15349;
+  const double sk = 3.2125;
+  // end of material constants
+
+  // this is the Bethe-Bloch coefficiet 4pi N_A r_e^2 m_e c^2
+  auto constexpr K = 0.307075_MeV / 1_mol * square(1_cm);
+  HEPEnergyType const E = p.GetEnergy();
+  HEPMassType const m = p.GetMass();
+  double const gamma = E / m;
+  int const Z = p.GetChargeNumber();
+  int const Z2 = Z * Z;
+  HEPMassType constexpr me = particles::Electron::GetMass();
+  auto const m2 = m * m;
+  auto constexpr me2 = me * me;
+  double const gamma2 = gamma * gamma;
+
+  double const beta2 = (gamma2 - 1) / gamma2; // 1-1/gamma2    (1-1/gamma)*(1+1/gamma);
+                                              // (gamma_2-1)/gamma_2 = (1-1/gamma2);
+  double constexpr c2 = 1;                    // HEP convention here c=c2=1
+  C8LOG_DEBUG("BetheBloch beta2={}, gamma2={}", beta2, gamma2);
+  [[maybe_unused]] double const eta2 = beta2 / (1 - beta2);
+  HEPMassType const Wmax =
+      2 * me * c2 * beta2 * gamma2 / (1 + 2 * gamma * me / m + me2 / m2);
+  // approx, but <<1%    HEPMassType const Wmax = 2*me*c2*beta2*gamma2;      for HEAVY
+  // PARTICLES Wmax ~ 2me v2 for non-relativistic particles
+  C8LOG_DEBUG("BetheBloch Wmax={}", Wmax);
+
+  // Sternheimer parameterization, density corrections towards high energies
+  // NOTE/TODO: when Cbar is 0 it needs to be approximated from parameterization ->
+  // MISSING
+  C8LOG_DEBUG("BetheBloch p.GetMomentum().GetNorm()/m{}=", p.GetMomentum().GetNorm() / m);
+  double const x = log10(p.GetMomentum().GetNorm() / m);
+  double delta = 0;
+  if (x >= x1) {
+    delta = 2 * (log(10)) * x - Cbar;
+  } else if (x < x1 && x >= x0) {
+    delta = 2 * (log(10)) * x - Cbar + aa * pow((x1 - x), sk);
+  } else if (x < x0) { // and IF conductor (otherwise, this is 0)
+    delta = delta0 * pow(100, 2 * (x - x0));
+  }
+
+  void EnergyLoss::MomentumUpdate(corsika::Stack::ParticleType& vP,
+                                  corsika::units::si::HEPEnergyType Enew) {
+    HEPMomentumType Pnew = elab2plab(Enew, vP.GetMass());
+    auto pnew = vP.GetMomentum();
+    vP.SetMomentum(pnew * Pnew / pnew.GetNorm());
+  }
+
+  void EnergyLoss::FillProfile(SetupParticle const& vP, SetupTrack const& vTrack,
+                               const HEPEnergyType dE) {
+
+    using namespace corsika;
+
+    auto const toStart = vTrack.GetPosition(0) - InjectionPoint_;
+    auto const toEnd = vTrack.GetPosition(1) - InjectionPoint_;
+
+    auto const v1 = (toStart * 1_Hz).dot(ShowerAxisDirection_);
+    auto const v2 = (toEnd * 1_Hz).dot(ShowerAxisDirection_);
+    geometry::Line const lineToStartBin(InjectionPoint_, ShowerAxisDirection_ * v1);
+    geometry::Line const lineToEndBin(InjectionPoint_, ShowerAxisDirection_ * v2);
+
+    SetupTrack const trajToStartBin(lineToStartBin, 1_s);
+    SetupTrack const trajToEndBin(lineToEndBin, 1_s);
+
+    GrammageType const grammageStart =
+        vP.GetNode()->GetModelProperties().IntegratedGrammage(trajToStartBin,
+                                                              trajToStartBin.GetLength());
+    GrammageType const grammageEnd =
+        vP.GetNode()->GetModelProperties().IntegratedGrammage(trajToEndBin,
+                                                              trajToEndBin.GetLength());
+
+    const int binStart = grammageStart / dX_;
+    const int binEnd = grammageEnd / dX_;
+
+    std::cout << "energy deposit of " << -dE << " between " << grammageStart << " and "
+              << grammageEnd << std::endl;
+
+    auto energyCount = HEPEnergyType::zero();
+
+    auto fill = [&](int bin, GrammageType weight) {
+      const auto dX = grammageEnd - grammageStart;
+      if (dX > dX_threshold_) {
+        auto const increment = -dE * weight / (grammageEnd - grammageStart);
+        Profile_[bin] += increment;
+        energyCount += increment;
+
+        std::cout << "filling bin " << bin << " with weight " << weight << ": "
+                  << increment << std::endl;
+      }
+    };
+
+    // fill longitudinal profile
+    fill(binStart, (1 + binStart) * dX_ - grammageStart);
+    fill(binEnd, grammageEnd - binEnd * dX_);
+
+    if (binStart == binEnd) { fill(binStart, -dX_); }
+
+    for (int bin = binStart + 1; bin < binEnd; ++bin) { fill(bin, dX_); }
+
+  // fill longitudinal profile
+  if (binStart == binEnd) {
+    fill(binStart, 1);
+  } else {
+    fill(binStart, ((1 + binStart) * dX_ - grammageStart) / deltaX);
+    fill(binEnd, (grammageEnd - binEnd * dX_) / deltaX);
+    for (int bin = binStart + 1; bin < binEnd; ++bin) { fill(bin, 1); }
+  }
+
+  C8LOG_DEBUG("total energy added to histogram: {} ", energyCount);
+}
+
+void EnergyLoss::PrintProfile() const {
+  std::ofstream file("EnergyLossProfile.dat");
+  file << "# EnergyLoss profile" << std::endl
+       << "# lower X bin edge [g/cm2]  dE/dX [GeV/g/cm2]" << endl;
+  double const deltaX = dX_ / 1_g * square(1_cm);
+  for (size_t i = 0; i < profile_.size(); ++i) {
+    file << std::scientific << std::setw(15) << i * deltaX << std::setw(15)
+         << profile_.at(i) / (deltaX * 1_GeV) << endl;
+  }
+
+} // namespace corsika
diff --git a/corsika/process/detail/HadronicElasticModel.cc b/corsika/process/detail/HadronicElasticModel.cc
new file mode 100644
index 000000000..a7fad5814
--- /dev/null
+++ b/corsika/process/detail/HadronicElasticModel.cc
@@ -0,0 +1,122 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/process/hadronic_elastic_model/HadronicElasticModel.h>
+
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/framework/random/ExponentialDistribution.hpp>
+#include <corsika/framework/utility/COMBoost.hpp>
+
+#include <iomanip>
+#include <iostream>
+#include "../corsika/setup/SetupStack.hpp"
+
+using namespace corsika;
+using SetupParticle = corsika::Stack::ParticleType;
+
+namespace corsika::HadronicElasticModel {
+
+  void HadronicElasticInteraction::Init() {}
+
+  HadronicElasticInteraction::HadronicElasticInteraction(units::si::CrossSectionType x,
+                                                         units::si::CrossSectionType y)
+      : fX(x)
+      , fY(y) {}
+
+  template <>
+  units::si::GrammageType HadronicElasticInteraction::GetInteractionLength(
+      SetupParticle const& p) {
+    using namespace units::si;
+    if (p.GetPID() == particles::Code::Proton) {
+      auto const* currentNode = p.GetNode();
+      auto const& mediumComposition =
+          currentNode->GetModelProperties().GetNuclearComposition();
+
+      auto const& components = mediumComposition.GetComponents();
+      auto const& fractions = mediumComposition.GetFractions();
+
+      auto const projectileMomentum = p.GetMomentum();
+      auto const projectileMomentumSquaredNorm = projectileMomentum.squaredNorm();
+      auto const projectileEnergy = p.GetEnergy();
+
+HadronicElasticInteraction::HadronicElasticInteraction(units::si::CrossSectionType x,
+                                                       units::si::CrossSectionType y)
+    : fX(x)
+    , fY(y) {}
+
+template <>
+units::si::GrammageType HadronicElasticInteraction::GetInteractionLength(
+    SetupParticle const& p) {
+  using namespace units::si;
+  if (p.GetPID() == particles::Code::Proton) {
+    auto const* currentNode = p.GetNode();
+    auto const& mediumComposition =
+        currentNode->GetModelProperties().GetNuclearComposition();
+
+    auto const& components = mediumComposition.GetComponents();
+    auto const& fractions = mediumComposition.GetFractions();
+
+    auto const projectileMomentum = p.GetMomentum();
+    auto const projectileMomentumSquaredNorm = projectileMomentum.squaredNorm();
+    auto const projectileEnergy = p.GetEnergy();
+
+    auto const avgCrossSection = [&]() {
+      CrossSectionType avgCrossSection = 0_b;
+
+      for (size_t i = 0; i < fractions.size(); ++i) {
+        auto const targetMass = particles::GetMass(components[i]);
+        auto const s = units::static_pow<2>(projectileEnergy + targetMass) -
+                       projectileMomentumSquaredNorm;
+        avgCrossSection += CrossSection(s) * fractions[i];
+      }
+
+      std::cout << "avgCrossSection: " << avgCrossSection / 1_mb << " mb" << std::endl;
+
+      return avgCrossSection;
+    }();
+
+    auto const avgTargetMassNumber = mediumComposition.GetAverageMassNumber();
+
+    GrammageType const interactionLength =
+        avgTargetMassNumber * units::constants::u / avgCrossSection;
+
+    return interactionLength;
+  } else {
+    return std::numeric_limits<double>::infinity() * 1_g / (1_cm * 1_cm);
+  }
+}
+
+template <>
+process::EProcessReturn HadronicElasticInteraction::DoInteraction(SetupView& view) {
+  using namespace units::si;
+  using namespace units::constants;
+
+  auto p = view.GetProjectile();
+  if (p.GetPID() != particles::Code::Proton) { return process::EProcessReturn::eOk; }
+
+  const auto* currentNode = p.GetNode();
+  const auto& composition = currentNode->GetModelProperties().GetNuclearComposition();
+  const auto& components = composition.GetComponents();
+
+  std::vector<units::si::CrossSectionType> cross_section_of_components(
+      composition.GetComponents().size());
+
+  auto const projectileMomentum = p.GetMomentum();
+  auto const projectileMomentumSquaredNorm = projectileMomentum.squaredNorm();
+  auto const projectileEnergy = p.GetEnergy();
+
+  for (size_t i = 0; i < components.size(); ++i) {
+    auto const targetMass = particles::GetMass(components[i]);
+    auto const s = units::static_pow<2>(projectileEnergy + targetMass) -
+                   projectileMomentumSquaredNorm;
+    cross_section_of_components[i] = CrossSection(s);
+  }
+
+} // namespace corsika::HadronicElasticModel
diff --git a/Processes/ObservationPlane/ObservationPlane.cc b/corsika/process/detail/ObservationPlane.cc
similarity index 95%
rename from Processes/ObservationPlane/ObservationPlane.cc
rename to corsika/process/detail/ObservationPlane.cc
index dd8b79743..402d9c0f3 100644
--- a/Processes/ObservationPlane/ObservationPlane.cc
+++ b/corsika/process/detail/ObservationPlane.cc
@@ -6,12 +6,11 @@
  * the license.
  */
 
-#include <corsika/process/observation_plane/ObservationPlane.h>
-#include <corsika/logging/Logging.h>
+#include <corsika/process/observation_plane/ObservationPlane.hpp>
 
 #include <fstream>
 
-using namespace corsika::process::observation_plane;
+using namespace corsika::observation_plane;
 using namespace corsika::units::si;
 
 ObservationPlane::ObservationPlane(
@@ -28,9 +27,8 @@ ObservationPlane::ObservationPlane(
   outputStream_ << "#PDG code, energy / eV, x distance / m, y distance / m" << std::endl;
 }
 
-corsika::process::EProcessReturn ObservationPlane::DoContinuous(
-    setup::Stack::ParticleType& particle, setup::Trajectory const& trajectory) {
-  
+corsika::EProcessReturn ObservationPlane::DoContinuous(
+    setup::Stack::ParticleType const& particle, setup::Trajectory const& trajectory) {
   TimeType const timeOfIntersection =
       (plane_.GetCenter() - trajectory.GetLine().GetR0()).dot(plane_.GetNormal()) /
       trajectory.GetLine().GetV0().dot(plane_.GetNormal());
diff --git a/Processes/ParticleCut/ParticleCut.cc b/corsika/process/detail/ParticleCut.cc
similarity index 71%
rename from Processes/ParticleCut/ParticleCut.cc
rename to corsika/process/detail/ParticleCut.cc
index 5176ab887..5cd87dad7 100644
--- a/Processes/ParticleCut/ParticleCut.cc
+++ b/corsika/process/detail/ParticleCut.cc
@@ -6,18 +6,17 @@
  * the license.
  */
 
-#include <corsika/logging/Logging.h>
-#include <corsika/process/particle_cut/ParticleCut.h>
+#include <corsika/process/particle_cut/ParticleCut.hpp>
 
 using namespace std;
 
 using namespace corsika;
-using namespace corsika::process;
+using namespace corsika;
 using namespace corsika::units::si;
-using namespace corsika::particles;
-using namespace corsika::setup;
+using namespace corsika;
+using namespace corsika;
 
-namespace corsika::process {
+namespace corsika {
   namespace particle_cut {
 
     template <typename TParticle>
@@ -57,32 +56,35 @@ namespace corsika::process {
       }
     }
 
-    template <typename TParticle>
-    bool ParticleCut::checkCutParticle(const TParticle& particle) {
-
-      const Code pid = particle.GetPID();
-      HEPEnergyType energy = particle.GetEnergy();
-      C8LOG_DEBUG(fmt::format("ParticleCut: checking {}, E= {} GeV, EcutTot={} GeV", pid,
-                              energy / 1_GeV,
-                              (fEmEnergy + fInvEnergy + fEnergy) / 1_GeV));
-      if (bCutEm && ParticleIsEmParticle(pid)) {
-        C8LOG_DEBUG("removing em. particle...");
-        fEmEnergy += energy;
-        uiEmCount += 1;
-        return true;
-      } else if (bCutInv && ParticleIsInvisible(pid)) {
-        C8LOG_DEBUG("removing inv. particle...");
-        fInvEnergy += energy;
-        uiInvCount += 1;
-        return true;
-      } else if (ParticleIsBelowEnergyCut(particle)) {
-        C8LOG_DEBUG("removing low en. particle...");
-        fEnergy += energy;
-        return true;
-      } else if (particle.GetTime() > 10_ms) {
-        C8LOG_DEBUG("removing OLD particle...");
-        fEnergy += energy;
-        return true;
+    EProcessReturn ParticleCut::DoSecondaries(corsika::StackView& vS) {
+      auto p = vS.begin();
+      while (p != vS.end()) {
+        const Code pid = p.GetPID();
+        HEPEnergyType energy = p.GetEnergy();
+        cout << "ProcessCut: DoSecondaries: " << pid << " E= " << energy
+             << ", EcutTot=" << (fEmEnergy + fInvEnergy + fEnergy) / 1_GeV << " GeV"
+             << endl;
+        if (ParticleIsEmParticle(pid)) {
+          cout << "removing em. particle..." << endl;
+          fEmEnergy += energy;
+          fEmCount += 1;
+          p.Delete();
+        } else if (ParticleIsInvisible(pid)) {
+          cout << "removing inv. particle..." << endl;
+          fInvEnergy += energy;
+          fInvCount += 1;
+          p.Delete();
+        } else if (ParticleIsBelowEnergyCut(p)) {
+          cout << "removing low en. particle..." << endl;
+          fEnergy += energy;
+          p.Delete();
+        } else if (p.GetTime() > 10_ms) {
+          cout << "removing OLD particle..." << endl;
+          fEnergy += energy;
+          p.Delete();
+        } else {
+          ++p; // next entry in SecondaryView
+        }
       }
       return false; // this particle will not be removed/cut
     }
@@ -143,4 +145,4 @@ namespace corsika::process {
     }
 
   } // namespace particle_cut
-} // namespace corsika::process
+} // namespace corsika
diff --git a/Processes/Pythia/Decay.cc b/corsika/process/detail/Pythia/Decay.cc
similarity index 93%
rename from Processes/Pythia/Decay.cc
rename to corsika/process/detail/Pythia/Decay.cc
index 92920dfba..e79d534bd 100644
--- a/Processes/Pythia/Decay.cc
+++ b/corsika/process/detail/Pythia/Decay.cc
@@ -10,10 +10,8 @@
 #include <corsika/process/pythia/Decay.h>
 #include <corsika/process/pythia/Random.h>
 
-#include <corsika/geometry/FourVector.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
-#include <corsika/utl/COMBoost.h>
+#include "../../corsika/setup/SetupStack.hpp"
+#include "../../corsika/setup/SetupTrajectory.hpp"
 
 using std::cout;
 using std::endl;
@@ -21,18 +19,18 @@ using std::tuple;
 using std::vector;
 
 using namespace corsika;
-using namespace corsika::setup;
-using View = corsika::setup::StackView;
-using Particle = corsika::setup::Stack::ParticleType;
+using namespace corsika;
+using Projectile = corsika::StackView::ParticleType;
+using Particle = corsika::Stack::ParticleType;
 using Track = Trajectory;
 
-namespace corsika::process::pythia {
+namespace corsika::pythia {
 
   Decay::Decay(const bool print_listing)
       : print_listing_(print_listing) {
 
     // set random number generator in pythia
-    Pythia8::RndmEngine* rndm = new corsika::process::pythia::Random();
+    Pythia8::RndmEngine* rndm = new corsika::pythia::Random();
     fPythia.setRndmEnginePtr(rndm);
 
     /*
@@ -255,13 +253,12 @@ namespace corsika::process::pythia {
 
         view.AddSecondary(
             tuple<particles::Code, units::si::HEPEnergyType,
-                  corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{
-                pyId, fourMomLab.GetTimeLikeComponent(),
-                fourMomLab.GetSpaceLikeComponents(), decayPoint, t0});
+                  corsika::MomentumVector, geometry::Point, units::si::TimeType>{
+                pyId, pyEn, pyP, decayPoint, t0});
       }
 
     // set particle stable
     Decay::SetStable(particleId);
   }
 
-} // namespace corsika::process::pythia
+} // namespace corsika::pythia
diff --git a/Processes/Pythia/Interaction.cc b/corsika/process/detail/Pythia/Interaction.cc
similarity index 94%
rename from Processes/Pythia/Interaction.cc
rename to corsika/process/detail/Pythia/Interaction.cc
index 7a0dbfa64..1b22153ef 100644
--- a/Processes/Pythia/Interaction.cc
+++ b/corsika/process/detail/Pythia/Interaction.cc
@@ -8,26 +8,26 @@
 
 #include <corsika/process/pythia/Interaction.h>
 
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/geometry/FourVector.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/utl/COMBoost.h>
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/framework/utility/COMBoost.hpp>
 
 #include <tuple>
+#include "../../corsika/setup/SetupStack.hpp"
 
 using std::cout;
 using std::endl;
 using std::tuple;
 
 using namespace corsika;
-using namespace corsika::setup;
-using SecondaryView = corsika::setup::StackView;
-using Particle = corsika::setup::Stack::ParticleType;
+using namespace corsika;
+using Projectile = corsika::StackView::ParticleType;
+using Particle = corsika::Stack::ParticleType;
 
-namespace corsika::process::pythia {
+namespace corsika::pythia {
 
-  typedef corsika::geometry::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
+  typedef corsika::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
 
   Interaction::Interaction(const bool print_listing)
       : print_listing_(print_listing) {
@@ -120,13 +120,13 @@ namespace corsika::process::pythia {
     fPythia.init();
   }
 
-  bool Interaction::CanInteract(const corsika::particles::Code pCode) {
-    return pCode == corsika::particles::Code::Proton ||
-           pCode == corsika::particles::Code::Neutron ||
-           pCode == corsika::particles::Code::AntiProton ||
-           pCode == corsika::particles::Code::AntiNeutron ||
-           pCode == corsika::particles::Code::PiMinus ||
-           pCode == corsika::particles::Code::PiPlus;
+  bool Interaction::CanInteract(const corsika::Code pCode) {
+    return pCode == corsika::Code::Proton ||
+           pCode == corsika::Code::Neutron ||
+           pCode == corsika::Code::AntiProton ||
+           pCode == corsika::Code::AntiNeutron ||
+           pCode == corsika::Code::PiMinus ||
+           pCode == corsika::Code::PiPlus;
   }
 
   tuple<units::si::CrossSectionType, units::si::CrossSectionType>
@@ -402,4 +402,4 @@ namespace corsika::process::pythia {
     return process::EProcessReturn::eOk;
   }
 
-} // namespace corsika::process::pythia
+} // namespace corsika::pythia
diff --git a/Processes/Pythia/Random.cc b/corsika/process/detail/Pythia/Random.cc
similarity index 81%
rename from Processes/Pythia/Random.cc
rename to corsika/process/detail/Pythia/Random.cc
index acf2837a5..0ebfbd85b 100644
--- a/Processes/Pythia/Random.cc
+++ b/corsika/process/detail/Pythia/Random.cc
@@ -8,8 +8,8 @@
 
 #include <corsika/process/pythia/Random.h>
 
-namespace corsika::process::pythia {
+namespace corsika::pythia {
 
   double Random::flat() { return fDist(fRNG); }
 
-} // namespace corsika::process::pythia
+} // namespace corsika::pythia
diff --git a/Processes/QGSJetII/Interaction.cc b/corsika/process/detail/QGSJetII/Interaction.cc
similarity index 90%
rename from Processes/QGSJetII/Interaction.cc
rename to corsika/process/detail/QGSJetII/Interaction.cc
index c16233af5..086f98a9a 100644
--- a/Processes/QGSJetII/Interaction.cc
+++ b/corsika/process/detail/QGSJetII/Interaction.cc
@@ -8,22 +8,24 @@
 
 #include <corsika/process/qgsjetII/Interaction.h>
 
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/geometry/FourVector.h>
-#include <corsika/geometry/QuantityVector.h>
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/framework/geometry/QuantityVector.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/process/qgsjetII/ParticleConversion.h>
 #include <corsika/process/qgsjetII/QGSJetIIFragmentsStack.h>
 #include <corsika/process/qgsjetII/QGSJetIIStack.h>
 #include <corsika/process/qgsjetII/qgsjet-II-04.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
-#include <corsika/utl/COMBoost.h>
+#include <corsika/framework/utility/COMBoost.hpp>
 
 #include <random>
 #include <sstream>
 #include <string>
 #include <tuple>
 
+#include "../../corsika/setup/SetupStack.hpp"
+#include "../../corsika/setup/SetupTrajectory.hpp"
+
 using std::cout;
 using std::endl;
 using std::ostringstream;
@@ -31,12 +33,12 @@ using std::string;
 using std::tuple;
 
 using namespace corsika;
-using namespace corsika::setup;
+using namespace corsika;
 using SetupParticle = setup::Stack::StackIterator;
 using SetupView = setup::StackView;
 using Track = Trajectory;
 
-namespace corsika::process::qgsjetII {
+namespace corsika::qgsjetII {
 
   Interaction::Interaction(const string& dataPath)
       : data_path_(dataPath) {
@@ -141,7 +143,7 @@ namespace corsika::process::qgsjetII {
       si::CrossSectionType weightedProdCrossSection = mediumComposition.WeightedSum(
           [=](particles::Code targetID) -> si::CrossSectionType {
             int targetA = 0;
-            if (corsika::particles::IsNucleus(targetID))
+            if (corsika::IsNucleus(targetID))
               targetA = particles::GetNucleusA(targetID);
             return GetCrossSection(corsikaBeamId, targetID, Elab, Abeam, targetA);
           });
@@ -233,7 +235,7 @@ namespace corsika::process::qgsjetII {
       for (size_t i = 0; i < compVec.size(); ++i) {
         auto const targetId = compVec[i];
         int targetA = 0;
-        if (corsika::particles::IsNucleus(targetId))
+        if (corsika::IsNucleus(targetId))
           targetA = particles::GetNucleusA(targetId);
         const auto sigProd =
             GetCrossSection(corsikaBeamId, targetId, projectileEnergyLab, beamA, targetA);
@@ -306,28 +308,18 @@ namespace corsika::process::qgsjetII {
         int Z = 0;
         switch (A) {
           case 1: { // proton/neutron
-            std::uniform_real_distribution<double> select;
-            if (select(rng_) > 0.5) {
-              idFragm = particles::Code::Proton;
-              Z = 1;
-            } else {
-              idFragm = particles::Code::Neutron;
-              Z = 0;
-            }
-
-            const HEPMassType nucleonMass = particles::GetMass(idFragm);
-
-            auto momentum = geometry::Vector(
-                zAxisFrame, corsika::geometry::QuantityVector<hepmomentum_d>{
-                                0.0_GeV, 0.0_GeV,
-                                sqrt((projectileEnergyLabPerNucleon + nucleonMass) *
-                                     (projectileEnergyLabPerNucleon - nucleonMass))});
-
-            auto const energy = sqrt(momentum.squaredNorm() + square(nucleonMass));
-            momentum.rebase(originalCS); // transform back into standard lab frame
-            std::cout << "secondary fragment> id=" << idFragm
-                      << " p=" << momentum.GetComponents() << std::endl;
-            auto pnew = view.AddSecondary(
+            idFragm = particles::Code::Proton;
+
+	    auto momentum = geometry::Vector(
+					     zAxisFrame,
+					     corsika::QuantityVector<hepmomentum_d>{0.0_GeV, 0.0_GeV,
+						 sqrt((projectileEnergyLab + particles::Proton::GetMass()) *
+						      (projectileEnergyLab - particles::Proton::GetMass()))});
+	    
+	    auto const energy = sqrt(momentum.squaredNorm() + square(particles::GetMass(idFragm)));	    
+	    momentum.rebase(originalCS); // transform back into standard lab frame
+	    std::cout << "secondary fragment> id=" << idFragm << " p=" << momentum.GetComponents() << std::endl;
+            auto pnew = vP.AddSecondary(
                 tuple<particles::Code, units::si::HEPEnergyType, stack::MomentumVector,
                       geometry::Point, units::si::TimeType>{idFragm, energy, momentum,
                                                             pOrig, tOrig});
@@ -403,4 +395,4 @@ namespace corsika::process::qgsjetII {
     return process::EProcessReturn::eOk;
   }
 
-} // namespace corsika::process::qgsjetII
+} // namespace corsika::qgsjetII
diff --git a/Processes/QGSJetII/ParticleConversion.cc b/corsika/process/detail/QGSJetII/ParticleConversion.cc
similarity index 76%
rename from Processes/QGSJetII/ParticleConversion.cc
rename to corsika/process/detail/QGSJetII/ParticleConversion.cc
index c8057e9ad..b9e405354 100644
--- a/Processes/QGSJetII/ParticleConversion.cc
+++ b/corsika/process/detail/QGSJetII/ParticleConversion.cc
@@ -6,7 +6,7 @@
  * the license.
  */
 
-#include <corsika/particles/ParticleProperties.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
 #include <corsika/process/qgsjetII/ParticleConversion.h>
 
-using namespace corsika::process::qgsjetII;
+using namespace corsika::qgsjetII;
diff --git a/Processes/QGSJetII/qgsjet-II-04.cc b/corsika/process/detail/QGSJetII/qgsjet-II-04.cc
similarity index 83%
rename from Processes/QGSJetII/qgsjet-II-04.cc
rename to corsika/process/detail/QGSJetII/qgsjet-II-04.cc
index a318d0a6c..d668daf0b 100644
--- a/Processes/QGSJetII/qgsjet-II-04.cc
+++ b/corsika/process/detail/QGSJetII/qgsjet-II-04.cc
@@ -8,7 +8,7 @@
 
 #include <corsika/process/qgsjetII/qgsjet-II-04.h>
 
-#include <corsika/random/RNGManager.h>
+#include <corsika/framework/random/RNGManager.hpp>
 
 #include <iostream>
 #include <random>
@@ -25,8 +25,8 @@ datadir::datadir(const std::string& dir) {
 }
 
 double qgran_(int&) {
-  static corsika::random::RNG& rng =
-      corsika::random::RNGManager::GetInstance().GetRandomStream("qgsjet");
+  static corsika::RNG& rng =
+      corsika::RNGManager::GetInstance().GetRandomStream("qgran");
 
   std::uniform_real_distribution<double> dist;
   return dist(rng);
diff --git a/Processes/StackInspector/StackInspector.cc b/corsika/process/detail/StackInspector.cc
similarity index 87%
rename from Processes/StackInspector/StackInspector.cc
rename to corsika/process/detail/StackInspector.cc
index 6bd1bceb3..2a5622b3e 100644
--- a/Processes/StackInspector/StackInspector.cc
+++ b/corsika/process/detail/StackInspector.cc
@@ -6,23 +6,25 @@
  * the license.
  */
 
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/process/stack_inspector/StackInspector.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/process/stack_inspector/StackInspector.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-#include <corsika/setup/SetupTrajectory.h>
+#include <corsika/logging/Logger.h>
 
 #include <chrono>
 #include <iomanip>
 #include <iostream>
 #include <limits>
+
+#include "../corsika/setup/SetupTrajectory.hpp"
 using namespace std;
 
 using namespace corsika;
-using namespace corsika::particles;
+using namespace corsika;
 using namespace corsika::units::si;
-using namespace corsika::process::stack_inspector;
+using namespace corsika_inspector;
 
 template <typename TStack>
 StackInspector<TStack>::StackInspector(const int vNStep, const bool vReportStack,
@@ -81,7 +83,7 @@ void StackInspector<TStack>::DoStack(const TStack& vS) {
 }
 
 #include <corsika/cascade/testCascade.h>
-#include <corsika/setup/SetupStack.h>
+#include "../corsika/setup/SetupStack.hpp"
 
 template class process::stack_inspector::StackInspector<setup::Stack>;
 template class process::stack_inspector::StackInspector<TestCascadeStack>;
diff --git a/Processes/TrackWriter/TrackWriter.cc b/corsika/process/detail/TrackWriter.cc
similarity index 82%
rename from Processes/TrackWriter/TrackWriter.cc
rename to corsika/process/detail/TrackWriter.cc
index 2d9825d86..7ce08e49d 100644
--- a/Processes/TrackWriter/TrackWriter.cc
+++ b/corsika/process/detail/TrackWriter.cc
@@ -8,19 +8,19 @@
 
 #include <corsika/process/track_writer/TrackWriter.h>
 
-#include <corsika/particles/ParticleProperties.h>
-
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
 
 #include <iomanip>
 #include <limits>
 
-using namespace corsika::setup;
+#include "../corsika/setup/SetupStack.hpp"
+#include "../corsika/setup/SetupTrajectory.hpp"
+
+using namespace corsika;
 using Particle = Stack::ParticleType;
 using Track = Trajectory;
 
-namespace corsika::process::track_writer {
+namespace corsika::track_writer {
 
   TrackWriter::TrackWriter(std::string const& filename)
       : fFilename(filename) {
@@ -56,4 +56,9 @@ namespace corsika::process::track_writer {
     return process::EProcessReturn::eOk;
   }
 
-} // namespace corsika::process::track_writer
+  template <>
+  units::si::LengthType TrackWriter::MaxStepLength(Particle&, Track&) {
+    return units::si::meter * std::numeric_limits<double>::infinity();
+  }
+
+} // namespace corsika::track_writer
diff --git a/corsika/setup/SetupEnvironment.hpp b/corsika/setup/SetupEnvironment.hpp
new file mode 100644
index 000000000..37b9357b6
--- /dev/null
+++ b/corsika/setup/SetupEnvironment.hpp
@@ -0,0 +1,19 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/IMediumModel.hpp>
+#include <corsika/media/NameModel.hpp>
+
+namespace corsika::setup {
+  using IEnvironmentModel = corsika::IMediumModel;
+  using SetupEnvironment = corsika::Environment<IEnvironmentModel>;
+} // namespace corsika
+
diff --git a/Framework/Utilities/try_feenableexcept.cc b/corsika/setup/SetupLogger.hpp
similarity index 74%
rename from Framework/Utilities/try_feenableexcept.cc
rename to corsika/setup/SetupLogger.hpp
index d70dbebad..5bddc24d1 100644
--- a/Framework/Utilities/try_feenableexcept.cc
+++ b/corsika/setup/SetupLogger.hpp
@@ -1,14 +1,14 @@
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
+ * See file AUTHORS for a list of contributors.
+ *
  * This software is distributed under the terms of the GNU General Public
  * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
  * the license.
  */
 
-#include <cfenv>
+#pragma once
+
+namespace corsika {}
 
-int main() {
-  feenableexcept(FE_ALL_EXCEPT);
-  return 0;
-}
\ No newline at end of file
diff --git a/corsika/setup/SetupStack.hpp b/corsika/setup/SetupStack.hpp
new file mode 100644
index 000000000..8b16947d5
--- /dev/null
+++ b/corsika/setup/SetupStack.hpp
@@ -0,0 +1,204 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+// the basic particle data stack:
+#include <corsika/stack/SuperStupidStack.h>
+
+// extension with nuclear data for Code::Nucleus
+#include <corsika/stack/NuclearStackExtension.h>
+
+// extension with geometry information for tracking
+#include <corsika/media/Environment.hpp>
+#include <corsika/framework/stack/CombinedStack.hpp>
+
+#include <tuple>
+#include <utility>
+#include <vector>
+#include <corsika/setup/SetupEnvironment.hpp>
+
+  namespace detail {
+
+/**
+ * @class GeometryData
+ *
+ * definition of stack-data object to store geometry information
+ */
+class GeometryData {
+
+public:
+  using BaseNodeType = typename TEnvType::BaseNodeType;
+
+  // these functions are needed for the Stack interface
+  void Init() {}
+  void Clear() { fNode.clear(); }
+  unsigned int GetSize() const { return fNode.size(); }
+  unsigned int GetCapacity() const { return fNode.size(); }
+  void Copy(const int i1, const int i2) { fNode[i2] = fNode[i1]; }
+  void Swap(const int i1, const int i2) { std::swap(fNode[i1], fNode[i2]); }
+
+  // custom data access function
+  void SetNode(const int i, BaseNodeType const* v) { fNode[i] = v; }
+  auto const* GetNode(const int i) const { return fNode[i]; }
+
+  // these functions are also needed by the Stack interface
+  void IncrementSize() { fNode.push_back(nullptr); }
+  void DecrementSize() {
+    if (fNode.size() > 0) { fNode.pop_back(); }
+  }
+
+  // custom private data section
+private:
+  std::vector<const BaseNodeType*> fNode;
+};
+
+/**
+ * @class GeometryDataInterface
+ *
+ * corresponding defintion of a stack-readout object, the iteractor
+ * dereference operator will deliver access to these function
+// defintion of a stack-readout object, the iteractor dereference
+// operator will deliver access to these function
+ */
+template <typename T, typename TEnvType>
+class GeometryDataInterface : public T {
+
+public:
+  using T::GetIndex;
+  using T::GetStackData;
+  using T::SetParticleData;
+  using BaseNodeType = typename TEnvType::BaseNodeType;
+
+  // default version for particle-creation from input data
+  void SetParticleData(const std::tuple<BaseNodeType const*> v) {
+    SetNode(std::get<0>(v));
+  }
+  void SetParticleData(GeometryDataInterface& parent,
+                       const std::tuple<BaseNodeType const*>) {
+    SetNode(parent.GetNode()); // copy Node from parent particle!
+  }
+  void SetParticleData() { SetNode(nullptr); }
+  void SetParticleData(GeometryDataInterface& parent) {
+    SetNode(parent.GetNode()); // copy Node from parent particle!
+  }
+  void SetNode(BaseNodeType const* v) { GetStackData().SetNode(GetIndex(), v); }
+  auto const* GetNode() const { return GetStackData().GetNode(GetIndex()); }
+};
+
+namespace corsika::setup {
+
+    // the GeometryNode stack needs to know the type of geometry-nodes from the
+    // environment:
+    template <typename TStackIter>
+    using SetupGeometryDataInterface = typename stack::node::MakeGeometryDataInterface<
+        TStackIter, corsika::setup::Environment>::type;
+
+    //
+    // this is an auxiliary help typedef, which I don't know how to put
+    // into NuclearStackExtension.h where it belongs...
+    template <typename StackIter>
+    using ExtendedParticleInterfaceType =
+        corsika::nuclear_extension::NuclearParticleInterface<
+            corsika::super_stupid::SuperStupidStack::PIType, StackIter>;
+    //
+
+    // the particle data stack with extra nuclear information:
+    using ParticleDataStack = corsika::nuclear_extension::NuclearStackExtension<
+        corsika::super_stupid::SuperStupidStack, ExtendedParticleInterfaceType>;
+
+    // ------------------------------------------
+    // Add [optional] history data to stack, too:
+
+    // combine particle data stack with geometry information for tracking
+    template <typename StackIter>
+    using StackWithGeometryInterface =
+        corsika::CombinedParticleInterface<ParticleDataStack::PIType,
+                                                  SetupGeometryDataInterface, StackIter>;
+
+    using StackWithGeometry =
+        corsika::CombinedStack<typename ParticleDataStack::StackImpl,
+                                      GeometryData<setup::SetupEnvironment>,
+                                      StackWithGeometryInterface>;
+
+  } // namespace detail
+
+  // ---------------------------------------
+  // this is the FINAL stack we use in C8:
+
+#ifdef WITH_HISTORY
+
+  /*
+   * the version with history
+   */
+  using Stack = detail::StackWithHistory;
+  template <typename T1, template <typename> typename M2>
+  using StackViewProducer = corsika::history::HistorySecondaryProducer<T1, M2>;
+
+  namespace detail {
+    /*
+      See Issue 161
+
+      unfortunately clang does not support this in the same way (yet) as
+      gcc, so we have to distinguish here. If clang cataches up, we
+      could remove the clang branch here and also in
+      corsika::Cascade. The gcc code is much more generic and
+      universal. If we could do the gcc version, we won't had to define
+      StackView globally, we could do it with MakeView whereever it is
+      actually needed. Keep an eye on this!
+    */
+#if defined(__clang__)
+    using TheStackView = corsika::stack::SecondaryView<
+        typename corsika::setup::Stack::StackImpl,
+        // CHECK with CLANG: corsika::setup::Stack::MPIType>;
+        corsika::setup::detail::StackWithHistoryInterface, StackViewProducer>;
+#elif defined(__GNUC__) || defined(__GNUG__)
+    using TheStackView =
+        corsika::stack::MakeView<corsika::setup::Stack, StackViewProducer>::type;
+#endif
+  } // namespace detail
+
+#else // WITH_HISTORY
+
+  /*
+   * the version without history
+   */
+  using Stack = detail::StackWithGeometry;
+  template <typename T1, template <typename> typename M2>
+  using StackViewProducer = corsika::stack::DefaultSecondaryProducer<T1, M2>;
+
+  namespace detail {
+    /*
+      See Issue 161
+
+      unfortunately clang does not support this in the same way (yet) as
+      gcc, so we have to distinguish here. If clang cataches up, we
+      could remove the clang branch here and also in
+      corsika::Cascade. The gcc code is much more generic and
+      universal. If we could do the gcc version, we won't had to define
+      StackView globally, we could do it with MakeView whereever it is
+      actually needed. Keep an eye on this!
+    */
+#if defined(__clang__)
+  using StackView =
+      corsika::SecondaryView<typename corsika::Stack::StackImpl,
+                                    corsika::detail::StackWithGeometryInterface>;
+#elif defined(__GNUC__) || defined(__GNUG__)
+  using StackView = corsika::MakeView<corsika::setup::Stack>::type;
+#endif
+  } // namespace detail
+
+#endif
+
+  // ---------------------------------------
+  // this is the FINAL stackitertor (particle type) we use in C8:
+
+  using StackView = detail::TheStackView;
+
+} // namespace corsika
+
diff --git a/Setup/SetupTrajectory.h b/corsika/setup/SetupTrajectory.hpp
similarity index 78%
rename from Setup/SetupTrajectory.h
rename to corsika/setup/SetupTrajectory.hpp
index 2a42db7a6..5b84a1400 100644
--- a/Setup/SetupTrajectory.h
+++ b/corsika/setup/SetupTrajectory.hpp
@@ -8,25 +8,23 @@
 
 #pragma once
 
-#include <corsika/geometry/Helix.h>
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/Trajectory.h>
+#include <corsika/framework/geometry/Helix.hpp>
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Trajectory.hpp>
 
-#include <corsika/process/tracking_line/Tracking.h>
-#include <corsika/process/tracking_leapfrog_curved/Tracking.h>
-#include <corsika/process/tracking_leapfrog_straight/Tracking.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <corsika/units/PhysicalUnits.h>
 
 namespace corsika::setup {
 
-  /**
-    Note/Warning:     Tracking and Trajectory must fit together !
+  /// definition of Trajectory base class, to be used in tracking and cascades
+  typedef corsika::Trajectory<corsika::Line> Trajectory;
 
-    tracking_leapfrog_curved::Tracking is the result of the Bachelor
-    thesis of Andre Schmidt, KIT. This is a leap-frog algorithm with
-    an analytical, precise calculation of volume intersections. This
-    algorithm needs a LeapFrogTrajectory.
+  /*
+  typedef std::variant<std::monostate, corsika::Trajectory<Line>,
+                       corsika::Trajectory<Helix>>
+                       Trajectory;
 
     tracking_leapfrog_straight::Tracking is a more simple and direct
     leap-frog implementation. The two halve steps are coded explicitly
@@ -79,7 +77,7 @@ namespace corsika::setup {
           MagneticFieldVector{line.GetR0().GetCoordinateSystem(), 0_T, 0_T, 0_T}, k,
           tEnd);
     }
-
-  } // namespace testing
-
+  };
+  */
 } // namespace corsika::setup
+
diff --git a/Stack/DummyStack/DummyStack.h b/corsika/stack/DummyStack.h
similarity index 90%
rename from Stack/DummyStack/DummyStack.h
rename to corsika/stack/DummyStack.h
index 26270b51c..64934107b 100644
--- a/Stack/DummyStack/DummyStack.h
+++ b/corsika/stack/DummyStack.h
@@ -8,15 +8,14 @@
 
 #pragma once
 
-#include <corsika/logging/Logging.h>
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/stack/Stack.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/stack/Stack.hpp>
 
 #include <string>
 #include <tuple>
 
-namespace corsika::stack {
+namespace corsika {
 
   namespace dummy {
 
@@ -84,4 +83,4 @@ namespace corsika::stack {
 
   } // namespace dummy
 
-} // namespace corsika::stack
+} // namespace corsika
diff --git a/Stack/NuclearStackExtension/NuclearStackExtension.h b/corsika/stack/NuclearStackExtension.h
similarity index 77%
rename from Stack/NuclearStackExtension/NuclearStackExtension.h
rename to corsika/stack/NuclearStackExtension.h
index c2ac33e2e..a8dc43230 100644
--- a/Stack/NuclearStackExtension/NuclearStackExtension.h
+++ b/corsika/stack/NuclearStackExtension.h
@@ -8,15 +8,12 @@
 
 #pragma once
 
-#include <corsika/particles/ParticleProperties.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/stack/Stack.hpp>
 
-#include <corsika/stack/Stack.h>
-#include <corsika/stack/super_stupid/SuperStupidStack.h>
-
-#include <corsika/units/PhysicalUnits.h>
-
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
 
 #include <corsika/logging/Logging.h>
 
@@ -24,7 +21,7 @@
 #include <tuple>
 #include <vector>
 
-namespace corsika::stack {
+namespace corsika {
 
   /**
    * @namespace nuclear_extension
@@ -44,7 +41,7 @@ namespace corsika::stack {
    *
    */
 
-  typedef corsika::geometry::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
+  typedef corsika::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
 
   namespace nuclear_extension {
 
@@ -66,10 +63,10 @@ namespace corsika::stack {
 
     public:
       void SetParticleData(
-          const std::tuple<corsika::particles::Code, corsika::units::si::HEPEnergyType,
-                           corsika::stack::MomentumVector, corsika::geometry::Point,
+          const std::tuple<corsika::Code, corsika::units::si::HEPEnergyType,
+                           corsika::MomentumVector, corsika::Point,
                            corsika::units::si::TimeType>& v) {
-        if (std::get<0>(v) == corsika::particles::Code::Nucleus) {
+        if (std::get<0>(v) == corsika::Code::Nucleus) {
           std::ostringstream err;
           err << "NuclearStackExtension: no A and Z specified for new Nucleus!";
           throw std::runtime_error(err.str());
@@ -79,13 +76,13 @@ namespace corsika::stack {
       }
 
       void SetParticleData(
-          const std::tuple<corsika::particles::Code, corsika::units::si::HEPEnergyType,
-                           corsika::stack::MomentumVector, corsika::geometry::Point,
+          const std::tuple<corsika::Code, corsika::units::si::HEPEnergyType,
+                           corsika::MomentumVector, corsika::Point,
                            corsika::units::si::TimeType, unsigned short, unsigned short>&
               v) {
         const unsigned short A = std::get<5>(v);
         const unsigned short Z = std::get<6>(v);
-        if (std::get<0>(v) != corsika::particles::Code::Nucleus || A == 0 || Z == 0) {
+        if (std::get<0>(v) != corsika::Code::Nucleus || A == 0 || Z == 0) {
           std::ostringstream err;
           err << "NuclearStackExtension: no A and Z specified for new Nucleus!";
           throw std::runtime_error(err.str());
@@ -94,8 +91,8 @@ namespace corsika::stack {
         SetNuclearA(A);
         SetNuclearZ(Z);
         InnerParticleInterface<StackIteratorInterface>::SetParticleData(
-            std::tuple<corsika::particles::Code, corsika::units::si::HEPEnergyType,
-                       corsika::stack::MomentumVector, corsika::geometry::Point,
+            std::tuple<corsika::Code, corsika::units::si::HEPEnergyType,
+                       corsika::MomentumVector, corsika::Point,
                        corsika::units::si::TimeType>{std::get<0>(v), std::get<1>(v),
                                                      std::get<2>(v), std::get<3>(v),
                                                      std::get<4>(v)});
@@ -103,17 +100,17 @@ namespace corsika::stack {
 
       void SetParticleData(
           InnerParticleInterface<StackIteratorInterface>& p,
-          const std::tuple<corsika::particles::Code, corsika::units::si::HEPEnergyType,
-                           corsika::stack::MomentumVector, corsika::geometry::Point,
+          const std::tuple<corsika::Code, corsika::units::si::HEPEnergyType,
+                           corsika::MomentumVector, corsika::Point,
                            corsika::units::si::TimeType>& v) {
-        if (std::get<0>(v) == corsika::particles::Code::Nucleus) {
+        if (std::get<0>(v) == corsika::Code::Nucleus) {
           std::ostringstream err;
           err << "NuclearStackExtension: no A and Z specified for new Nucleus!";
           throw std::runtime_error(err.str());
         }
         InnerParticleInterface<StackIteratorInterface>::SetParticleData(
-            p, std::tuple<corsika::particles::Code, corsika::units::si::HEPEnergyType,
-                          corsika::stack::MomentumVector, corsika::geometry::Point,
+            p, std::tuple<corsika::Code, corsika::units::si::HEPEnergyType,
+                          corsika::MomentumVector, corsika::Point,
                           corsika::units::si::TimeType>{std::get<0>(v), std::get<1>(v),
                                                         std::get<2>(v), std::get<3>(v),
                                                         std::get<4>(v)});
@@ -122,13 +119,13 @@ namespace corsika::stack {
 
       void SetParticleData(
           InnerParticleInterface<StackIteratorInterface>& p,
-          const std::tuple<corsika::particles::Code, corsika::units::si::HEPEnergyType,
-                           corsika::stack::MomentumVector, corsika::geometry::Point,
+          const std::tuple<corsika::Code, corsika::units::si::HEPEnergyType,
+                           corsika::MomentumVector, corsika::Point,
                            corsika::units::si::TimeType, unsigned short, unsigned short>&
               v) {
         const unsigned short A = std::get<5>(v);
         const unsigned short Z = std::get<6>(v);
-        if (std::get<0>(v) != corsika::particles::Code::Nucleus || A == 0 || Z == 0) {
+        if (std::get<0>(v) != corsika::Code::Nucleus || A == 0 || Z == 0) {
           std::ostringstream err;
           err << "NuclearStackExtension: no A and Z specified for new Nucleus!";
           throw std::runtime_error(err.str());
@@ -137,8 +134,8 @@ namespace corsika::stack {
         SetNuclearA(A);
         SetNuclearZ(Z);
         InnerParticleInterface<StackIteratorInterface>::SetParticleData(
-            p, std::tuple<corsika::particles::Code, corsika::units::si::HEPEnergyType,
-                          corsika::stack::MomentumVector, corsika::geometry::Point,
+            p, std::tuple<corsika::Code, corsika::units::si::HEPEnergyType,
+                          corsika::MomentumVector, corsika::Point,
                           corsika::units::si::TimeType>{std::get<0>(v), std::get<1>(v),
                                                         std::get<2>(v), std::get<3>(v),
                                                         std::get<4>(v)});
@@ -176,8 +173,8 @@ namespace corsika::stack {
        */
       corsika::units::si::HEPMassType GetMass() const {
         if (InnerParticleInterface<StackIteratorInterface>::GetPID() ==
-            corsika::particles::Code::Nucleus)
-          return corsika::particles::GetNucleusMass(GetNuclearA(), GetNuclearZ());
+            corsika::Code::Nucleus)
+          return corsika::GetNucleusMass(GetNuclearA(), GetNuclearZ());
         return InnerParticleInterface<StackIteratorInterface>::GetMass();
       }
       /**
@@ -185,7 +182,7 @@ namespace corsika::stack {
        **/
       int16_t GetChargeNumber() const {
         if (InnerParticleInterface<StackIteratorInterface>::GetPID() ==
-            corsika::particles::Code::Nucleus)
+            corsika::Code::Nucleus)
           return GetNuclearZ();
         return InnerParticleInterface<StackIteratorInterface>::GetChargeNumber();
       }
@@ -345,19 +342,48 @@ namespace corsika::stack {
 
     }; // end class NuclearStackExtensionImpl
 
+    //    template<typename StackIteratorInterface>
+    // using NuclearParticleInterfaceType<StackIteratorInterface> =
+    // NuclearParticleInterface< ,StackIteratorInterface>
+
+    // works, but requires stupd _PI class
+    // template<typename SS> using TEST =
+    // NuclearParticleInterface<corsika::super_stupid::SuperStupidStack::PIType,
+    // SS>;
     template <typename InnerStack, template <typename> typename _PI>
     using NuclearStackExtension =
         Stack<NuclearStackExtensionImpl<typename InnerStack::StackImpl>, _PI>;
 
-    //
-    template <typename StackIter>
-    using ExtendedParticleInterfaceType =
-        corsika::stack::nuclear_extension::NuclearParticleInterface<
-            corsika::stack::super_stupid::SuperStupidStack::MPIType, StackIter>;
-
-    // the particle data stack with extra nuclear information:
-    using ParticleDataStack = corsika::stack::nuclear_extension::NuclearStackExtension<
-        corsika::stack::super_stupid::SuperStupidStack, ExtendedParticleInterfaceType>;
+    // ----
+
+    // I'm dont't manage to do this properly.......
+    /*
+    template<typename TT, typename SS> using TESTi = typename
+    NuclearParticleInterface<TT::template PIType, SS>::ExtendedParticleInterface;
+    template<typename TT, typename SS> using TEST1 = TESTi<TT, SS>;
+    template<typename SS> using TEST2 = TEST1<typename
+    corsika::super_stupid::SuperStupidStack, SS>;
+
+    using NuclearStackExtension = Stack<NuclearStackExtensionImpl<typename
+    InnerStack::StackImpl>, TEST2>;
+    */
+    /*
+      // .... this should be fixed ....
+
+    template <typename InnerStack, typename SS=StackIteratorInterface>
+      //using NuclearStackExtension = Stack<NuclearStackExtensionImpl<typename
+    InnerStack::StackImpl>, NuclearParticleInterface<typename InnerStack::template PIType,
+    StackIteratorInterface>::ExtendedParticleInterface>; using NuclearStackExtension =
+    Stack<NuclearStackExtensionImpl<typename InnerStack::StackImpl>, TEST1<typename
+    corsika::super_stupid::SuperStupidStack, SS> >;
+
+    //template <typename InnerStack>
+      //  using NuclearStackExtension = Stack<NuclearStackExtensionImpl<typename
+    InnerStack::StackImpl>, TEST<typename
+    corsika::super_stupid::SuperStupidStack::PIType>>;
+    //using NuclearStackExtension = Stack<NuclearStackExtensionImpl<typename
+    InnerStack::StackImpl>, TEST>;
+    */
 
   } // namespace nuclear_extension
-} // namespace corsika::stack
+} // namespace corsika
diff --git a/Stack/SuperStupidStack/SuperStupidStack.h b/corsika/stack/SuperStupidStack.h
similarity index 64%
rename from Stack/SuperStupidStack/SuperStupidStack.h
rename to corsika/stack/SuperStupidStack.h
index eae265cc7..267f172dd 100644
--- a/Stack/SuperStupidStack/SuperStupidStack.h
+++ b/corsika/stack/SuperStupidStack.h
@@ -8,21 +8,21 @@
 
 #pragma once
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/stack/Stack.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/stack/Stack.hpp>
 
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h> // remove
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp> // remove
+#include <corsika/framework/geometry/Vector.hpp>
 
 #include <string>
 #include <tuple>
 #include <vector>
 
-namespace corsika::stack {
+namespace corsika {
 
-  typedef corsika::geometry::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
+  typedef corsika::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
 
   namespace super_stupid {
 
@@ -34,11 +34,11 @@ namespace corsika::stack {
     class ParticleInterface : public ParticleBase<StackIteratorInterface> {
 
     protected:
-      using corsika::stack::ParticleBase<StackIteratorInterface>::GetStack;
-      using corsika::stack::ParticleBase<StackIteratorInterface>::GetStackData;
+      using corsika::ParticleBase<StackIteratorInterface>::GetStack;
+      using corsika::ParticleBase<StackIteratorInterface>::GetStackData;
 
     public:
-      using corsika::stack::ParticleBase<StackIteratorInterface>::GetIndex;
+      using corsika::ParticleBase<StackIteratorInterface>::GetIndex;
 
     public:
       std::string as_string() const {
@@ -48,39 +48,56 @@ namespace corsika::stack {
       }
 
       void SetParticleData(
-          const std::tuple<corsika::particles::Code, corsika::units::si::HEPEnergyType,
-                           MomentumVector, corsika::geometry::Point,
-                           corsika::units::si::TimeType>& v) {
+          const std::tuple<corsika::Code, corsika::units::si::HEPEnergyType,
+                           MomentumVector, corsika::Point, corsika::units::si::TimeType>&
+              v) {
         SetPID(std::get<0>(v));
         SetEnergy(std::get<1>(v));
         SetMomentum(std::get<2>(v));
         SetPosition(std::get<3>(v));
         SetTime(std::get<4>(v));
       }
+      /*
+    void SetParticleData(const corsika::Code vDataPID,
+                         const corsika::units::si::HEPEnergyType vDataE,
+                         const MomentumVector& vMomentum,
+                         const corsika::Point& vPosition,
+                         const corsika::units::si::TimeType vTime) {
+      }*/
 
       void SetParticleData(
           ParticleInterface<StackIteratorInterface>&,
-          const std::tuple<corsika::particles::Code, corsika::units::si::HEPEnergyType,
-                           MomentumVector, corsika::geometry::Point,
-                           corsika::units::si::TimeType>& v) {
+          const std::tuple<corsika::Code, corsika::units::si::HEPEnergyType,
+                           MomentumVector, corsika::Point, corsika::units::si::TimeType>&
+              v) {
         SetPID(std::get<0>(v));
         SetEnergy(std::get<1>(v));
         SetMomentum(std::get<2>(v));
         SetPosition(std::get<3>(v));
         SetTime(std::get<4>(v));
       }
+      /*      void SetParticleData(ParticleInterface<StackIteratorInterface>&,
+                           const corsika::Code vDataPID,
+                           const corsika::units::si::HEPEnergyType vDataE,
+                           const MomentumVector& vMomentum,
+                           const corsika::Point& vPosition,
+                           const corsika::units::si::TimeType vTime) {
+        SetPID(vDataPID);
+        SetEnergy(vDataE);
+        SetMomentum(vMomentum);
+        SetPosition(vPosition);
+        SetTime(vTime);
+      }*/
 
       /// individual setters
-      void SetPID(const corsika::particles::Code id) {
-        GetStackData().SetPID(GetIndex(), id);
-      }
+      void SetPID(const corsika::Code id) { GetStackData().SetPID(GetIndex(), id); }
       void SetEnergy(const corsika::units::si::HEPEnergyType& e) {
         GetStackData().SetEnergy(GetIndex(), e);
       }
       void SetMomentum(const MomentumVector& v) {
         GetStackData().SetMomentum(GetIndex(), v);
       }
-      void SetPosition(const corsika::geometry::Point& v) {
+      void SetPosition(const corsika::Point& v) {
         GetStackData().SetPosition(GetIndex(), v);
       }
       void SetTime(const corsika::units::si::TimeType& v) {
@@ -88,16 +105,14 @@ namespace corsika::stack {
       }
 
       /// individual getters
-      corsika::particles::Code GetPID() const {
-        return GetStackData().GetPID(GetIndex());
-      }
+      corsika::Code GetPID() const { return GetStackData().GetPID(GetIndex()); }
       corsika::units::si::HEPEnergyType GetEnergy() const {
         return GetStackData().GetEnergy(GetIndex());
       }
       MomentumVector GetMomentum() const {
         return GetStackData().GetMomentum(GetIndex());
       }
-      corsika::geometry::Point GetPosition() const {
+      corsika::Point GetPosition() const {
         return GetStackData().GetPosition(GetIndex());
       }
       corsika::units::si::TimeType GetTime() const {
@@ -108,16 +123,13 @@ namespace corsika::stack {
        *
        * @{
        */
-      corsika::geometry::Vector<corsika::units::si::dimensionless_d> GetDirection()
-          const {
+      corsika::Vector<corsika::units::si::dimensionless_d> GetDirection() const {
         return GetMomentum() / GetEnergy();
       }
       corsika::units::si::HEPMassType GetMass() const {
-        return corsika::particles::GetMass(GetPID());
-      }
-      int16_t GetChargeNumber() const {
-        return corsika::particles::GetChargeNumber(GetPID());
+        return corsika::GetMass(GetPID());
       }
+      int16_t GetChargeNumber() const { return corsika::GetChargeNumber(GetPID()); }
       ///@}
     };
 
@@ -142,30 +154,26 @@ namespace corsika::stack {
       unsigned int GetSize() const { return fDataPID.size(); }
       unsigned int GetCapacity() const { return fDataPID.size(); }
 
-      void SetPID(const unsigned int i, const corsika::particles::Code id) {
-        fDataPID[i] = id;
-      }
+      void SetPID(const unsigned int i, const corsika::Code id) { fDataPID[i] = id; }
       void SetEnergy(const unsigned int i, const corsika::units::si::HEPEnergyType e) {
         fDataE[i] = e;
       }
       void SetMomentum(const unsigned int i, const MomentumVector& v) {
         fMomentum[i] = v;
       }
-      void SetPosition(const unsigned int i, const corsika::geometry::Point& v) {
+      void SetPosition(const unsigned int i, const corsika::Point& v) {
         fPosition[i] = v;
       }
       void SetTime(const unsigned int i, const corsika::units::si::TimeType& v) {
         fTime[i] = v;
       }
 
-      corsika::particles::Code GetPID(const unsigned int i) const { return fDataPID[i]; }
+      corsika::Code GetPID(const unsigned int i) const { return fDataPID[i]; }
       corsika::units::si::HEPEnergyType GetEnergy(const unsigned int i) const {
         return fDataE[i];
       }
       MomentumVector GetMomentum(const unsigned int i) const { return fMomentum[i]; }
-      corsika::geometry::Point GetPosition(const unsigned int i) const {
-        return fPosition[i];
-      }
+      corsika::Point GetPosition(const unsigned int i) const { return fPosition[i]; }
       corsika::units::si::TimeType GetTime(const unsigned int i) const {
         return fTime[i];
       }
@@ -193,12 +201,12 @@ namespace corsika::stack {
       }
 
       void IncrementSize() {
-        using corsika::geometry::Point;
-        using corsika::particles::Code;
+        using corsika::Code;
+        using corsika::Point;
         fDataPID.push_back(Code::Unknown);
         fDataE.push_back(0 * corsika::units::si::electronvolt);
-        geometry::CoordinateSystem& dummyCS =
-            geometry::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+        CoordinateSystem& dummyCS =
+            RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
         fMomentum.push_back(MomentumVector(
             dummyCS,
             {0 * corsika::units::si::electronvolt, 0 * corsika::units::si::electronvolt,
@@ -222,10 +230,10 @@ namespace corsika::stack {
     private:
       /// the actual memory to store particle data
 
-      std::vector<corsika::particles::Code> fDataPID;
+      std::vector<corsika::Code> fDataPID;
       std::vector<corsika::units::si::HEPEnergyType> fDataE;
       std::vector<MomentumVector> fMomentum;
-      std::vector<corsika::geometry::Point> fPosition;
+      std::vector<corsika::Point> fPosition;
       std::vector<corsika::units::si::TimeType> fTime;
 
     }; // end class SuperStupidStackImpl
@@ -234,4 +242,4 @@ namespace corsika::stack {
 
   } // namespace super_stupid
 
-} // namespace corsika::stack
+} // namespace corsika
diff --git a/dependencies/CMakeLists.txt b/dependencies/CMakeLists.txt
new file mode 100644
index 000000000..ed2ead3f6
--- /dev/null
+++ b/dependencies/CMakeLists.txt
@@ -0,0 +1,32 @@
+cmake_minimum_required (VERSION 3.9)
+
+project (
+  corsika_modules
+  VERSION 8.0.0
+  DESCRIPTION "CORSIKA modules"
+  LANGUAGES CXX
+  )
+
+include (FeatureSummary)
+
+# as long as there still are modules using it:
+enable_language (Fortran)
+
+set (CMAKE_CXX_STANDARD 17)
+set (CMAKE_CXX_EXTENSIONS OFF)
+
+# enable warnings and disallow non-standard language
+# configure the various build types here, too
+# FYI: optimizer flags: -O2 would not trade speed for size, neither O2/3 use fast-math
+# debug: O0, relwithdebinfo: 02, release: O3, minsizerel: Os (all defaults)
+set (CMAKE_CXX_FLAGS "-Wall -pedantic -Wextra -Wno-ignored-qualifiers")
+set (CMAKE_Fortran_FLAGS "-std=legacy -Wfunction-elimination")
+
+# clang produces a lot of unecessary warnings without this:
+add_compile_options ("$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wno-nonportable-include-path>")
+
+# order of subdirectories
+add_subdirectory (Sibyll)
+#add_subdirectory (Pythia)
+add_subdirectory (QGSJetII)
+add_subdirectory (UrQMD)
diff --git a/Processes/Pythia/CMakeLists.txt b/dependencies/Pythia/CMakeLists.txt
similarity index 97%
rename from Processes/Pythia/CMakeLists.txt
rename to dependencies/Pythia/CMakeLists.txt
index f4fab9493..516afe3af 100644
--- a/Processes/Pythia/CMakeLists.txt
+++ b/dependencies/Pythia/CMakeLists.txt
@@ -14,7 +14,7 @@ set (
 
 set (
   MODEL_NAMESPACE
-  corsika/process/pythia
+  dependencies/Pythia
   )
 
 add_library (ProcessPythia8 STATIC ${MODEL_SOURCES})
diff --git a/dependencies/Pythia/Decay.cc b/dependencies/Pythia/Decay.cc
new file mode 100644
index 000000000..690593913
--- /dev/null
+++ b/dependencies/Pythia/Decay.cc
@@ -0,0 +1,262 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <Pythia8/Pythia.h>
+#include <dependencies/Pythia/Decay.h>
+#include <dependencies/Pythia/Random.h>
+
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/framework/utility/COMBoost.hpp>
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
+
+using std::cout;
+using std::endl;
+using std::tuple;
+using std::vector;
+
+using namespace corsika;
+using namespace corsika::setup;
+using View = corsika::StackView;
+using Particle = corsika::Stack::ParticleType;
+using Track = Trajectory;
+
+namespace corsika::pythia {
+
+  Decay::Decay() {
+
+    // set random number generator in pythia
+    Pythia8::RndmEngine* rndm = new corsika::pythia::Random();
+    fPythia.setRndmEnginePtr(rndm);
+
+    /*
+       issue xyz: definition of particles and decay channels use the same mechanism in
+       corsika and pythia we should force pythia to use the file in corsika.
+     */
+    // bool ParticleData::reInit(string startFile, bool xmlFormat = true)
+    // read in particle data from Corsika 8
+    // fPythia.particleData.reInit("/home/felix/ngcorsika/corsika-build/include/corsika/framework/coreParticleData.xml");
+    // fPythia.particleData.checkTable();
+
+    fPythia.readString("Next:numberShowInfo = 0");
+    fPythia.readString("Next:numberShowProcess = 0");
+    fPythia.readString("Next:numberShowEvent = 0");
+
+    fPythia.readString("Print:quiet = on");
+    fPythia.readString("Check:particleData = 0");
+
+    /*
+       switching off event check in pythia is needed to allow decays that are off-shell
+       according to the mass definition in pythia.
+       the consistency of particle masses between event generators is an unsolved issues
+    */
+    cout << "Pythia::Init: switching off event checking in pythia.." << endl;
+    fPythia.readString("Check:event = 1");
+
+    fPythia.readString("ProcessLevel:all = off");
+    fPythia.readString("ProcessLevel:resonanceDecays = off");
+
+    // making sure
+    SetStable(Code::Pi0);
+
+    //    fPythia.particleData.readString("59:m0 = 101.00");
+
+    if (!fPythia.init())
+      throw std::runtime_error("Pythia::Decay: Initialization failed!");
+  }
+
+  Decay::Decay(std::set<Code> vHandled)
+      : handleAllDecays_(false)
+      , handledDecays_(vHandled) {}
+
+  Decay::~Decay() { cout << "Pythia::Decay n=" << fCount << endl; }
+
+  bool Decay::CanHandleDecay(const Code vParticleCode) {
+    using namespace corsika::particles;
+    // if known to pythia and not proton, electron or neutrino it can decay
+    if (vParticleCode == Code::Proton || vParticleCode == Code::AntiProton ||
+        vParticleCode == Code::NuE || vParticleCode == Code::NuMu ||
+        vParticleCode == Code::NuTau || vParticleCode == Code::NuEBar ||
+        vParticleCode == Code::NuMuBar || vParticleCode == Code::NuTauBar ||
+        vParticleCode == Code::Electron || vParticleCode == Code::Positron)
+      return false;
+    else if (CanDecay(vParticleCode)) // non-zero for particles known to sibyll
+      return true;
+    else
+      return false;
+  }
+
+  void Decay::SetHandleDecay(const Code vParticleCode) {
+    handleAllDecays_ = false;
+    cout << "Pythia::Decay: set to handle decay of " << vParticleCode << endl;
+    if (Decay::CanHandleDecay(vParticleCode))
+      handledDecays_.insert(vParticleCode);
+    else
+      throw std::runtime_error("this decay can not be handled by pythia!");
+  }
+
+  void Decay::SetHandleDecay(const vector<Code> vParticleList) {
+    handleAllDecays_ = false;
+    for (auto p : vParticleList) SetHandleDecay(p);
+  }
+
+  bool Decay::IsDecayHandled(const corsika::Code vParticleCode) {
+    if (handleAllDecays_ && CanHandleDecay(vParticleCode))
+      return true;
+    else
+      return handledDecays_.find(vParticleCode) != Decay::handledDecays_.end();
+  }
+
+  bool Decay::IsStable(const Code vCode) {
+    return fPythia.particleData.canDecay(static_cast<int>(GetPDG(vCode)));
+  }
+
+  void Decay::PrintDecayConfig(const Code vCode) {
+    cout << "Decay: Pythia decay configuration:" << endl;
+    cout << vCode << " is ";
+    if (IsStable(vCode))
+      cout << "stable" << endl;
+    else
+      cout << "unstable" << endl;
+  }
+
+  void Decay::PrintDecayConfig() {
+    cout << "Pythia::Decay: decay configuration:" << endl;
+    if (handleAllDecays_)
+      cout << " all particles known to Pythia are handled by Pythia::Decay!" << endl;
+    else
+      for (auto& pCode : handledDecays_)
+        cout << "Decay of " << pCode << " is handled by Pythia!" << endl;
+  }
+
+  void Decay::SetStable(const vector<Code> particleList) {
+    for (auto p : particleList) Decay::SetStable(p);
+  }
+
+  bool Decay::CanDecay(const Code pCode) {
+    std::cout << "Pythia::Decay: checking if particle: " << pCode
+              << " can decay in PYTHIA? ";
+    const bool ans = fPythia.particleData.canDecay(static_cast<int>(GetPDG(pCode)));
+    std::cout << ans << std::endl;
+    return ans;
+  }
+
+  void Decay::SetUnstable(const Code pCode) {
+    cout << "Pythia::Decay: setting " << pCode << " unstable.." << endl;
+    fPythia.particleData.mayDecay(static_cast<int>(GetPDG(pCode)), true);
+  }
+
+  void Decay::SetStable(const Code pCode) {
+    cout << "Pythia::Decay: setting " << pCode << " stable.." << endl;
+    fPythia.particleData.mayDecay(static_cast<int>(GetPDG(pCode)), false);
+  }
+
+  template <>
+  units::si::TimeType Decay::GetLifetime(Particle const& vP) {
+    using namespace units::si;
+
+    const auto pid = vP.GetPID();
+    if (CanDecay(pid)) {
+      HEPEnergyType E = vP.GetEnergy();
+      HEPMassType m = vP.GetMass();
+
+      const double gamma = E / m;
+
+      const TimeType t0 = GetLifetime(pid);
+      auto const lifetime = gamma * t0;
+      cout << "Pythia::Decay: code: " << vP.GetPID() << endl;
+      cout << "Pythia::Decay: MinStep: t0: " << t0 << endl;
+      cout << "Pythia::Decay: MinStep: energy: " << E / 1_GeV << " GeV" << endl;
+      cout << "Pythia::Decay: momentum: " << vP.GetMomentum().GetComponents() / 1_GeV
+           << " GeV" << endl;
+      cout << "Pythia::Decay: MinStep: gamma: " << gamma << endl;
+      cout << "Pythia::Decay: MinStep: tau: " << lifetime << endl;
+
+      return lifetime;
+    } else
+      return std::numeric_limits<double>::infinity() * 1_s;
+  }
+
+  template <>
+  void Decay::DoDecay(View& view) {
+    using geometry::Point;
+    using namespace units;
+    using namespace units::si;
+
+    auto const projectile = view.GetProjectile();
+
+    auto const& decayPoint = projectile.GetPosition();
+    auto const t0 = projectile.GetTime();
+
+    auto const& labMomentum = projectile.GetMomentum();
+    geometry::CoordinateSystem const& labCS = labMomentum.GetCoordinateSystem();
+
+    // define target kinematics in lab frame
+    // define boost to and from CoM frame
+    // CoM frame definition in Pythia projectile: +z
+    utl::COMBoost const boost(labMomentum, projectile.GetMass());
+    auto const& rotatedCS = boost.GetRotatedCS();
+
+    fCount++;
+
+    // pythia stack
+    Pythia8::Event& event = fPythia.event;
+    event.reset();
+
+    auto const particleId = projectile.GetPID();
+
+    // set particle unstable
+    Decay::SetUnstable(particleId);
+
+    // input particle PDG
+    auto const pdgCode = static_cast<int>(GetPDG(particleId));
+
+    double constexpr px = 0;
+    double constexpr py = 0;
+    double constexpr pz = 0;
+    double const en = projectile.GetMass() / 1_GeV;
+    double const m = en;
+
+    // add particle to pythia stack
+    event.append(pdgCode, 1, 0, 0, px, py, pz, en, m);
+
+    if (!fPythia.next())
+      throw std::runtime_error("Pythia::Decay: decay failed!");
+    else
+      cout << "Pythia::Decay: particles after decay: " << event.size() << endl;
+
+    // list final state
+    event.list();
+
+    // loop over final state
+    for (int i = 0; i < event.size(); ++i)
+      if (event[i].isFinal()) {
+        auto const pyId = ConvertFromPDG(static_cast<PDGCode>(event[i].id()));
+        HEPEnergyType const Erest = event[i].e() * 1_GeV;
+        MomentumVector const pRest(
+            rotatedCS,
+            {event[i].px() * 1_GeV, event[i].py() * 1_GeV, event[i].pz() * 1_GeV});
+        geometry::FourVector const fourMomRest{Erest, pRest};
+        auto const fourMomLab = boost.fromCoM(fourMomRest);
+
+        cout << "particle: id=" << pyId << " momentum="
+             << fourMomLab.GetSpaceLikeComponents().GetComponents(labCS) / 1_GeV
+             << " energy=" << fourMomLab.GetTimeLikeComponent() << endl;
+
+        view.AddSecondary(
+            tuple<Code, units::si::HEPEnergyType, corsika::stack::MomentumVector,
+                  geometry::Point, units::si::TimeType>{
+                pyId, fourMomLab.GetTimeLikeComponent(),
+                fourMomLab.GetSpaceLikeComponents(), decayPoint, t0});
+      }
+
+    // set particle stable
+    Decay::SetStable(particleId);
+  }
+
+} // namespace corsika::pythia
diff --git a/Processes/Pythia/Decay.h b/dependencies/Pythia/Decay.h
similarity index 58%
rename from Processes/Pythia/Decay.h
rename to dependencies/Pythia/Decay.h
index 51a43b7e3..48ce89f8e 100644
--- a/Processes/Pythia/Decay.h
+++ b/dependencies/Pythia/Decay.h
@@ -9,46 +9,43 @@
 #pragma once
 
 #include <Pythia8/Pythia.h>
-#include <corsika/particles/ParticleProperties.h>
+#include <corsika/framework/coreParticleProperties.h>
 #include <corsika/process/DecayProcess.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <corsika/geometry/FourVector.h>
 
-namespace corsika::process {
+namespace corsika {
 
   namespace pythia {
 
-    typedef corsika::geometry::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
+    typedef corsika::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
 
-    class Decay : public corsika::process::DecayProcess<Decay> {
+    class Decay : public corsika::DecayProcess<Decay> {
       int fCount = 0;
       bool handleAllDecays_ = true;
-      bool print_listing_ = false;
 
     public:
-      Decay(const bool print_listing = false);
-      Decay(std::set<particles::Code>);
+      Decay();
+      Decay(std::set<Code>);
       ~Decay();
 
       // is Pythia::Decay set to handle the decay of this particle?
-      bool IsDecayHandled(const corsika::particles::Code);
+      bool IsDecayHandled(const corsika::Code);
 
       // is decay possible in principle?
-      bool CanHandleDecay(const corsika::particles::Code);
+      bool CanHandleDecay(const corsika::Code);
 
       // set Pythia::Decay to handle the decay of this particle!
-      void SetHandleDecay(const corsika::particles::Code);
+      void SetHandleDecay(const corsika::Code);
       // set Pythia::Decay to handle the decay of this list of particles!
-      void SetHandleDecay(const std::vector<particles::Code>);
+      void SetHandleDecay(const std::vector<Code>);
       // set Pythia::Decay to handle all particle decays
       void SetHandleAllDecays();
 
       // print internal configuration for this particle
-      void PrintDecayConfig(const corsika::particles::Code);
+      void PrintDecayConfig(const corsika::Code);
       // print configuration of decays in corsika
       void PrintDecayConfig();
 
-      bool CanDecay(const corsika::particles::Code);
+      bool CanDecay(const corsika::Code);
 
       /**
        In this function PYTHIA is asked for the lifetime of the input particle.
@@ -67,14 +64,14 @@ namespace corsika::process {
       void DoDecay(TSecondaryView&);
 
     private:
-      void SetUnstable(const corsika::particles::Code);
-      void SetStable(const corsika::particles::Code);
-      void SetStable(const std::vector<particles::Code>);
-      bool IsStable(const corsika::particles::Code);
+      void SetUnstable(const corsika::Code);
+      void SetStable(const corsika::Code);
+      void SetStable(const std::vector<Code>);
+      bool IsStable(const corsika::Code);
 
       Pythia8::Pythia fPythia;
-      std::set<particles::Code> handledDecays_;
+      std::set<Code> handledDecays_;
     };
 
   } // namespace pythia
-} // namespace corsika::process
+} // namespace corsika
diff --git a/dependencies/Pythia/Interaction.cc b/dependencies/Pythia/Interaction.cc
new file mode 100644
index 000000000..dbe514cf2
--- /dev/null
+++ b/dependencies/Pythia/Interaction.cc
@@ -0,0 +1,389 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <dependencies/Pythia/Interaction.h>
+
+#include <corsika/environment/Environment.h>
+#include <corsika/environment/NuclearComposition.h>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/framework/utility/COMBoost.hpp>
+#include <corsika/setup/SetupStack.hpp>
+
+#include <tuple>
+
+using std::cout;
+using std::endl;
+using std::tuple;
+
+using namespace corsika;
+using namespace corsika::setup;
+using SecondaryView = corsika::setup::StackView;
+using Particle = corsika::setup::Stack::ParticleType;
+
+namespace corsika::pythia {
+
+  typedef corsika::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
+
+  Interaction::~Interaction() {}
+
+  Interaction::Interaction() {
+    cout << "Pythia::Interaction n=" << fCount << endl;
+
+    using random::RNGManager;
+
+    // initialize Pythia
+    if (!fInitialized) {
+
+      fPythia.readString("Print:quiet = on");
+      // TODO: proper process initialization for MinBias needed
+      fPythia.readString("HardQCD:all = on");
+      fPythia.readString("ProcessLevel:resonanceDecays = off");
+
+      fPythia.init();
+
+      // any decays in pythia? if yes need to define which particles
+      if (fInternalDecays) {
+        // define which particles are passed to corsika, i.e. which particles make it into
+        // history even very shortlived particles like charm or pi0 are of interest here
+        const std::vector<Code> HadronsWeWantTrackedByCorsika = {
+            Code::PiPlus,     Code::PiMinus, Code::Pi0,     Code::KMinus,
+            Code::KPlus,      Code::K0Long,  Code::K0Short, Code::SigmaPlus,
+            Code::SigmaMinus, Code::Lambda0, Code::Xi0,     Code::XiMinus,
+            Code::OmegaMinus, Code::DPlus,   Code::DMinus,  Code::D0,
+            Code::D0Bar};
+
+        Interaction::SetParticleListStable(HadronsWeWantTrackedByCorsika);
+      }
+
+      // basic initialization of cross section routines
+      fSigma.init(&fPythia.info, fPythia.settings, &fPythia.particleData, &fPythia.rndm);
+
+      fInitialized = true;
+    }
+  }
+
+  void Interaction::SetParticleListStable(std::vector<Code> const& particleList) {
+    for (auto p : particleList) Interaction::SetStable(p);
+  }
+
+  void Interaction::SetUnstable(const Code pCode) {
+    cout << "Pythia::Interaction: setting " << pCode << " unstable.." << endl;
+    fPythia.particleData.mayDecay(static_cast<int>(GetPDG(pCode)), true);
+  }
+
+  void Interaction::SetStable(const Code pCode) {
+    cout << "Pythia::Interaction: setting " << pCode << " stable.." << endl;
+    fPythia.particleData.mayDecay(static_cast<int>(GetPDG(pCode)), false);
+  }
+
+  void Interaction::ConfigureLabFrameCollision(
+      const Code BeamId, const Code TargetId, const units::si::HEPEnergyType BeamEnergy) {
+    using namespace units::si;
+    // Pythia configuration of the current event
+    // very clumsy. I am sure this can be done better..
+
+    // set beam
+    // beam id for pythia
+    auto const pdgBeam = static_cast<int>(GetPDG(BeamId));
+    std::stringstream stBeam;
+    stBeam << "Beams:idA = " << pdgBeam;
+    fPythia.readString(stBeam.str());
+    // set target
+    auto pdgTarget = static_cast<int>(GetPDG(TargetId));
+    // replace hydrogen with proton, otherwise pythia goes into heavy ion mode!
+    if (TargetId == Code::Hydrogen) pdgTarget = static_cast<int>(GetPDG(Code::Proton));
+    std::stringstream stTarget;
+    stTarget << "Beams:idB = " << pdgTarget;
+    fPythia.readString(stTarget.str());
+    // set frame to lab. frame
+    fPythia.readString("Beams:frameType = 2");
+    // set beam energy
+    const double Elab = BeamEnergy / 1_GeV;
+    std::stringstream stEnergy;
+    stEnergy << "Beams:eA = " << Elab;
+    fPythia.readString(stEnergy.str());
+    // target at rest
+    fPythia.readString("Beams:eB = 0.");
+    // initialize this config
+    fPythia.init();
+  }
+
+  bool Interaction::CanInteract(const corsika::Code pCode) {
+    return pCode == corsika::Code::Proton || pCode == corsika::Code::Neutron ||
+           pCode == corsika::Code::AntiProton || pCode == corsika::Code::AntiNeutron ||
+           pCode == corsika::Code::PiMinus || pCode == corsika::Code::PiPlus;
+  }
+
+  tuple<units::si::CrossSectionType, units::si::CrossSectionType>
+  Interaction::GetCrossSection(const Code BeamId, const Code TargetId,
+                               const units::si::HEPEnergyType CoMenergy) {
+    using namespace units::si;
+
+    // interaction possible in pythia?
+    if (TargetId == Code::Proton || TargetId == Code::Hydrogen) {
+      if (CanInteract(BeamId) && ValidCoMEnergy(CoMenergy)) {
+        // input particle PDG
+        auto const pdgCodeBeam = static_cast<int>(GetPDG(BeamId));
+        auto const pdgCodeTarget = static_cast<int>(GetPDG(TargetId));
+        const double ecm = CoMenergy / 1_GeV;
+
+        // calculate cross section
+        fSigma.calc(pdgCodeBeam, pdgCodeTarget, ecm);
+        if (fSigma.hasSigmaTot()) {
+          const double sigEla = fSigma.sigmaEl();
+          const double sigProd = fSigma.sigmaTot() - sigEla;
+
+          return std::make_tuple(sigProd * (1_fm * 1_fm), sigEla * (1_fm * 1_fm));
+
+        } else
+          throw std::runtime_error("pythia cross section init failed");
+
+      } else {
+        return std::make_tuple(std::numeric_limits<double>::infinity() * 1_mb,
+                               std::numeric_limits<double>::infinity() * 1_mb);
+      }
+    } else {
+      throw std::runtime_error("invalid target for pythia");
+    }
+  }
+
+  template <>
+  units::si::GrammageType Interaction::GetInteractionLength(Particle& p) {
+
+    using namespace units;
+    using namespace units::si;
+    using namespace geometry;
+
+    // coordinate system, get global frame of reference
+    CoordinateSystem& rootCS =
+        RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+
+    const Code corsikaBeamId = p.GetPID();
+
+    // beam particles for pythia : 1, 2, 3 for p, pi, k
+    // read from cross section code table
+    const bool kInteraction = CanInteract(corsikaBeamId);
+
+    // FOR NOW: assume target is at rest
+    process::pythia::MomentumVector pTarget(rootCS, {0_GeV, 0_GeV, 0_GeV});
+
+    // total momentum and energy
+    HEPEnergyType Elab = p.GetEnergy() + constants::nucleonMass;
+    process::pythia::MomentumVector pTotLab(rootCS, {0_GeV, 0_GeV, 0_GeV});
+    pTotLab += p.GetMomentum();
+    pTotLab += pTarget;
+    auto const pTotLabNorm = pTotLab.norm();
+    // calculate cm. energy
+    const HEPEnergyType ECoM = sqrt(
+        (Elab + pTotLabNorm) * (Elab - pTotLabNorm)); // binomial for numerical accuracy
+
+    cout << "Interaction: LambdaInt: \n"
+         << " input energy: " << p.GetEnergy() / 1_GeV << endl
+         << " beam can interact:" << kInteraction << endl
+         << " beam pid:" << p.GetPID() << endl;
+
+    // TODO: move limits into variables
+    if (kInteraction && Elab >= 8.5_GeV && ValidCoMEnergy(ECoM)) {
+
+      // get target from environment
+      /*
+        the target should be defined by the Environment,
+        ideally as full particle object so that the four momenta
+        and the boosts can be defined..
+      */
+      const auto* currentNode = p.GetNode();
+      const auto mediumComposition =
+          currentNode->GetModelProperties().GetNuclearComposition();
+      // determine average interaction length
+
+      auto const weightedProdCrossSection =
+          mediumComposition.WeightedSum([=](auto vTargetID) {
+            return std::get<0>(this->GetCrossSection(corsikaBeamId, vTargetID, ECoM));
+          });
+
+      cout << "Interaction: IntLength: weighted CrossSection (mb): "
+           << weightedProdCrossSection / 1_mb << endl
+           << "Interaction: IntLength: average mass number: "
+           << mediumComposition.GetAverageMassNumber() << endl;
+
+      // calculate interaction length in medium
+      GrammageType const int_length = mediumComposition.GetAverageMassNumber() *
+                                      units::constants::u / weightedProdCrossSection;
+      cout << "Interaction: "
+           << "interaction length (g/cm2): " << int_length / (0.001_kg) * 1_cm * 1_cm
+           << endl;
+
+      return int_length;
+    }
+
+    return std::numeric_limits<double>::infinity() * 1_g / (1_cm * 1_cm);
+  }
+
+  /**
+     In this function PYTHIA is called to produce one event. The
+     event is copied (and boosted) into the shower lab frame.
+   */
+
+  template <>
+  process::EProcessReturn Interaction::DoInteraction(SecondaryView& view) {
+
+    using namespace units;
+    using namespace utl;
+    using namespace units::si;
+    using namespace geometry;
+
+    auto const projectile = view.GetProjectile();
+
+    const auto corsikaBeamId = projectile.GetPID();
+    cout << "Pythia::Interaction: "
+         << "DoInteraction: " << corsikaBeamId << " interaction? "
+         << process::pythia::Interaction::CanInteract(corsikaBeamId) << endl;
+
+    if (IsNucleus(corsikaBeamId)) {
+      // nuclei handled by different process, this should not happen
+      throw std::runtime_error("Nuclear projectile are not handled by PYTHIA!");
+    }
+
+    if (process::pythia::Interaction::CanInteract(corsikaBeamId)) {
+
+      const CoordinateSystem& rootCS =
+          RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+
+      // position and time of interaction, not used in Sibyll
+      Point pOrig = projectile.GetPosition();
+      TimeType tOrig = projectile.GetTime();
+
+      // define target
+      // FOR NOW: target is always at rest
+      const auto eTargetLab = 0_GeV + constants::nucleonMass;
+      const auto pTargetLab = MomentumVector(rootCS, 0_GeV, 0_GeV, 0_GeV);
+      const FourVector PtargLab(eTargetLab, pTargetLab);
+
+      // define projectile
+      HEPEnergyType const eProjectileLab = projectile.GetEnergy();
+      auto const pProjectileLab = projectile.GetMomentum();
+
+      cout << "Interaction: ebeam lab: " << eProjectileLab / 1_GeV << endl
+           << "Interaction: pbeam lab: " << pProjectileLab.GetComponents() / 1_GeV
+           << endl;
+      cout << "Interaction: etarget lab: " << eTargetLab / 1_GeV << endl
+           << "Interaction: ptarget lab: " << pTargetLab.GetComponents() / 1_GeV << endl;
+
+      const FourVector PprojLab(eProjectileLab, pProjectileLab);
+
+      // define target kinematics in lab frame
+      // define boost to and from CoM frame
+      // CoM frame definition in Pythia projectile: +z
+      COMBoost const boost(PprojLab, constants::nucleonMass);
+
+      // just for show:
+      // boost projecticle
+      auto const PprojCoM = boost.toCoM(PprojLab);
+
+      // boost target
+      auto const PtargCoM = boost.toCoM(PtargLab);
+
+      cout << "Interaction: ebeam CoM: " << PprojCoM.GetTimeLikeComponent() / 1_GeV
+           << endl
+           << "Interaction: pbeam CoM: "
+           << PprojCoM.GetSpaceLikeComponents().GetComponents() / 1_GeV << endl;
+      cout << "Interaction: etarget CoM: " << PtargCoM.GetTimeLikeComponent() / 1_GeV
+           << endl
+           << "Interaction: ptarget CoM: "
+           << PtargCoM.GetSpaceLikeComponents().GetComponents() / 1_GeV << endl;
+
+      cout << "Interaction: position of interaction: " << pOrig.GetCoordinates() << endl;
+      cout << "Interaction: time: " << tOrig << endl;
+
+      HEPEnergyType Etot = eProjectileLab + eTargetLab;
+      MomentumVector Ptot = projectile.GetMomentum();
+      // invariant mass, i.e. cm. energy
+      HEPEnergyType Ecm = sqrt(Etot * Etot - Ptot.squaredNorm());
+
+      // sample target mass number
+      const auto* currentNode = projectile.GetNode();
+      const auto& mediumComposition =
+          currentNode->GetModelProperties().GetNuclearComposition();
+      // get cross sections for target materials
+      /*
+        Here we read the cross section from the interaction model again,
+        should be passed from GetInteractionLength if possible
+       */
+      //#warning reading interaction cross section again, should not be necessary
+      auto const& compVec = mediumComposition.GetComponents();
+      std::vector<si::CrossSectionType> cross_section_of_components(compVec.size());
+
+      for (size_t i = 0; i < compVec.size(); ++i) {
+        auto const targetId = compVec[i];
+        const auto [sigProd, sigEla] = GetCrossSection(corsikaBeamId, targetId, Ecm);
+        [[maybe_unused]] const auto& dummy_sigEla = sigEla;
+        cross_section_of_components[i] = sigProd;
+      }
+
+      const auto corsikaTargetId =
+          mediumComposition.SampleTarget(cross_section_of_components, fRNG);
+      cout << "Interaction: target selected: " << corsikaTargetId << endl;
+
+      if (corsikaTargetId != Code::Hydrogen && corsikaTargetId != Code::Neutron &&
+          corsikaTargetId != Code::Proton)
+        throw std::runtime_error("DoInteraction: wrong target for PYTHIA");
+
+      cout << "Interaction: "
+           << " DoInteraction: E(GeV):" << eProjectileLab / 1_GeV
+           << " Ecm(GeV): " << Ecm / 1_GeV << endl;
+
+      if (eProjectileLab < 8.5_GeV || !ValidCoMEnergy(Ecm)) {
+        cout << "Interaction: "
+             << " DoInteraction: should have dropped particle.. "
+             << "THIS IS AN ERROR" << endl;
+        throw std::runtime_error("energy too low for PYTHIA");
+
+      } else {
+        fCount++;
+
+        ConfigureLabFrameCollision(corsikaBeamId, corsikaTargetId, eProjectileLab);
+
+        // create event in pytia
+        if (!fPythia.next()) throw std::runtime_error("Pythia::DoInteraction: failed!");
+
+        // link to pythia stack
+        Pythia8::Event& event = fPythia.event;
+        // print final state
+        event.list();
+
+        MomentumVector Plab_final(rootCS, {0.0_GeV, 0.0_GeV, 0.0_GeV});
+        HEPEnergyType Elab_final = 0_GeV;
+        for (int i = 0; i < event.size(); ++i) {
+          Pythia8::Particle& p8p = event[i];
+          // skip particles that have decayed in pythia
+          if (!p8p.isFinal()) continue;
+
+          auto const pyId = ConvertFromPDG(static_cast<PDGCode>(p8p.id()));
+
+          const MomentumVector pyPlab(
+              rootCS, {p8p.px() * 1_GeV, p8p.py() * 1_GeV, p8p.pz() * 1_GeV});
+          HEPEnergyType const pyEn = p8p.e() * 1_GeV;
+
+          // add to corsika stack
+          auto pnew = view.AddSecondary(
+              tuple<Code, units::si::HEPEnergyType, stack::MomentumVector,
+                    geometry::Point, units::si::TimeType>{pyId, pyEn, pyPlab, pOrig,
+                                                          tOrig});
+
+          Plab_final += pnew.GetMomentum();
+          Elab_final += pnew.GetEnergy();
+        }
+        cout << "conservation (all GeV): "
+             << "Elab_final=" << Elab_final / 1_GeV
+             << ", Plab_final=" << (Plab_final / 1_GeV).GetComponents() << endl;
+      }
+    }
+    return process::EProcessReturn::eOk;
+  }
+
+} // namespace corsika::pythia
diff --git a/dependencies/Pythia/Interaction.h b/dependencies/Pythia/Interaction.h
new file mode 100644
index 000000000..c5006ea68
--- /dev/null
+++ b/dependencies/Pythia/Interaction.h
@@ -0,0 +1,66 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <Pythia8/Pythia.h>
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <tuple>
+
+namespace corsika::pythia {
+
+  class Interaction : public corsika::InteractionProcess<Interaction> {
+
+    int fCount = 0;
+    bool fInitialized = false;
+
+  public:
+    Interaction();
+    ~Interaction();
+
+    void SetParticleListStable(std::vector<Code> const&);
+    void SetUnstable(const corsika::Code);
+    void SetStable(const corsika::Code);
+
+    bool WasInitialized() { return fInitialized; }
+    bool ValidCoMEnergy(corsika::units::si::HEPEnergyType ecm) {
+      using namespace corsika::units::si;
+      return (10_GeV < ecm) && (ecm < 1_PeV);
+    }
+
+    bool CanInteract(const corsika::Code);
+    void ConfigureLabFrameCollision(const corsika::Code, const corsika::Code,
+                                    const corsika::units::si::HEPEnergyType);
+    std::tuple<corsika::units::si::CrossSectionType, corsika::units::si::CrossSectionType>
+    GetCrossSection(const corsika::Code BeamId, const corsika::Code TargetId,
+                    const corsika::units::si::HEPEnergyType CoMenergy);
+
+    template <typename TParticle>
+    corsika::units::si::GrammageType GetInteractionLength(TParticle&);
+
+    /**
+       In this function PYTHIA is called to produce one event. The
+       event is copied (and boosted) into the shower lab frame.
+     */
+
+    template <typename TSecondaryView>
+    corsika::EProcessReturn DoInteraction(TSecondaryView&);
+
+  private:
+    corsika::random::RNG& fRNG =
+        corsika::random::RNGManager::GetInstance().GetRandomStream("pythia");
+    Pythia8::Pythia fPythia;
+    Pythia8::SigmaTotal fSigma;
+    const bool fInternalDecays = true;
+  };
+
+} // namespace corsika::pythia
diff --git a/dependencies/Pythia/Random.cc b/dependencies/Pythia/Random.cc
new file mode 100644
index 000000000..099a1fd2a
--- /dev/null
+++ b/dependencies/Pythia/Random.cc
@@ -0,0 +1,15 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <dependencies/Pythia/Random.h>
+
+namespace corsika::pythia {
+
+  double Random::flat() { return fDist(fRNG); }
+
+} // namespace corsika::pythia
diff --git a/Processes/Pythia/Random.h b/dependencies/Pythia/Random.h
similarity index 92%
rename from Processes/Pythia/Random.h
rename to dependencies/Pythia/Random.h
index c649e42bc..59bee7a35 100644
--- a/Processes/Pythia/Random.h
+++ b/dependencies/Pythia/Random.h
@@ -9,7 +9,7 @@
 #pragma once
 
 #include <Pythia8/Pythia.h>
-#include <corsika/random/RNGManager.h>
+#include <corsika/framework/random/RNGManager.hpp>
 
 namespace corsika::process {
 
diff --git a/dependencies/Pythia/testPythia8.cc b/dependencies/Pythia/testPythia8.cc
new file mode 100644
index 000000000..f495f56ec
--- /dev/null
+++ b/dependencies/Pythia/testPythia8.cc
@@ -0,0 +1,185 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <Pythia8/Pythia.h>
+#include <dependencies/Pythia/Decay.h>
+#include <dependencies/Pythia/Interaction.h>
+
+#include <corsika/framework/random/RNGManager.hpp>
+
+#include <corsika/framework/coreParticleProperties.h>
+
+#include <corsika/framework/geometry/Point.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <corsika/utl/CorsikaFenv.h>
+#include <catch2/catch.hpp>
+
+TEST_CASE("Pythia", "[processes]") {
+
+  SECTION("linking pythia") {
+    using namespace Pythia8;
+    using std::cout;
+    using std::endl;
+
+    // Generator. Process selection. LHC initialization. Histogram.
+    Pythia pythia;
+
+    pythia.readString("Next:numberShowInfo = 0");
+    pythia.readString("Next:numberShowProcess = 0");
+    pythia.readString("Next:numberShowEvent = 0");
+
+    pythia.readString("ProcessLevel:all = off");
+
+    pythia.init();
+
+    Event& event = pythia.event;
+    event.reset();
+
+    pythia.particleData.mayDecay(321, true);
+    double pz = 100.;
+    double m = 0.49368;
+    event.append(321, 1, 0, 0, 0., 0., 100., sqrt(pz * pz + m * m), m);
+
+    if (!pythia.next())
+      cout << "decay failed!" << endl;
+    else
+      cout << "particles after decay: " << event.size() << endl;
+    event.list();
+
+    // loop over final state
+    for (int i = 0; i < pythia.event.size(); ++i)
+      if (pythia.event[i].isFinal()) {
+        cout << "particle: id=" << pythia.event[i].id() << endl;
+      }
+  }
+
+  SECTION("pythia interface") {
+    using namespace corsika;
+
+    random::RNGManager::GetInstance().RegisterRandomStream("pythia");
+
+    process::pythia::Decay model;
+  }
+}
+
+#include <corsika/framework/geometry/Point.h>
+#include <corsika/framework/geometry/RootCoordinateSystem.h>
+#include <corsika/framework/geometry/Vector.h>
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <corsika/framework/coreParticleProperties.h>
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
+
+#include <corsika/environment/Environment.h>
+#include <corsika/environment/HomogeneousMedium.h>
+#include <corsika/environment/NuclearComposition.h>
+
+using namespace corsika;
+using namespace corsika::units::si;
+
+template <typename TStackView>
+auto sumMomentum(TStackView const& view, geometry::CoordinateSystem const& vCS) {
+  geometry::Vector<hepenergy_d> sum{vCS, 0_eV, 0_eV, 0_eV};
+
+  for (auto const& p : view) { sum += p.GetMomentum(); }
+
+  return sum;
+}
+
+TEST_CASE("pythia process") {
+
+  // setup environment, geometry
+  environment::Environment<environment::IMediumModel> env;
+
+  geometry::CoordinateSystem const& cs = env.GetCoordinateSystem();
+
+  auto theMedium =
+      environment::Environment<environment::IMediumModel>::CreateNode<geometry::Sphere>(
+          geometry::Point{cs, 0_m, 0_m, 0_m},
+          1_km * std::numeric_limits<double>::infinity());
+
+  using MyHomogeneousModel = environment::HomogeneousMedium<environment::IMediumModel>;
+  theMedium->SetModelProperties<MyHomogeneousModel>(
+      1_kg / (1_m * 1_m * 1_m),
+      environment::NuclearComposition(std::vector<Code>{Code::Hydrogen},
+                                      std::vector<float>{1.}));
+
+  auto const* nodePtr = theMedium.get(); // save the medium for later use before moving it
+
+  SECTION("pythia decay") {
+    feenableexcept(FE_INVALID);
+    setup::Stack stack;
+    const HEPEnergyType E0 = 10_GeV;
+    HEPMomentumType P0 = sqrt(E0 * E0 - PiPlus::GetMass() * PiPlus::GetMass());
+    auto plab = corsika::stack::MomentumVector(cs, {0_GeV, 0_GeV, P0});
+    geometry::Point pos(cs, 0_m, 0_m, 0_m);
+    auto particle = stack.AddParticle(
+        std::tuple<Code, units::si::HEPEnergyType, corsika::stack::MomentumVector,
+                   geometry::Point, units::si::TimeType>{Code::PiPlus, E0, plab, pos,
+                                                         0_ns});
+
+    random::RNGManager::GetInstance().RegisterRandomStream("pythia");
+
+    setup::StackView view(particle);
+
+    process::pythia::Decay model;
+
+    [[maybe_unused]] const TimeType time = model.GetLifetime(particle);
+    model.DoDecay(view);
+    CHECK(stack.getEntries() == 3);
+    auto const pSum = sumMomentum(view, cs);
+    CHECK((pSum - plab).norm() / 1_GeV == Approx(0).margin(1e-4));
+    CHECK((pSum.norm() - plab.norm()) / 1_GeV == Approx(0).margin(1e-4));
+  }
+
+  SECTION("pythia decay config") {
+    process::pythia::Decay model({Code::PiPlus, Code::PiMinus});
+    REQUIRE(model.IsDecayHandled(Code::PiPlus));
+    REQUIRE(model.IsDecayHandled(Code::PiMinus));
+    REQUIRE_FALSE(model.IsDecayHandled(Code::KPlus));
+
+    const std::vector<Code> particleTestList = {Code::PiPlus, Code::PiMinus, Code::KPlus,
+                                                Code::Lambda0Bar, Code::D0Bar};
+
+    // setup decays
+    model.SetHandleDecay(particleTestList);
+    for (auto& pCode : particleTestList) REQUIRE(model.IsDecayHandled(pCode));
+
+    // individually
+    model.SetHandleDecay(Code::KMinus);
+
+    // possible decays
+    REQUIRE_FALSE(model.CanHandleDecay(Code::Proton));
+    REQUIRE_FALSE(model.CanHandleDecay(Code::Electron));
+    REQUIRE(model.CanHandleDecay(Code::PiPlus));
+    REQUIRE(model.CanHandleDecay(Code::MuPlus));
+  }
+
+  SECTION("pythia interaction") {
+
+    setup::Stack stack;
+    const HEPEnergyType E0 = 100_GeV;
+    HEPMomentumType P0 = sqrt(E0 * E0 - PiPlus::GetMass() * PiPlus::GetMass());
+    auto plab = corsika::stack::MomentumVector(cs, {0_GeV, 0_GeV, -P0});
+    geometry::Point pos(cs, 0_m, 0_m, 0_m);
+    auto particle = stack.AddParticle(
+        std::tuple<Code, units::si::HEPEnergyType, corsika::stack::MomentumVector,
+                   geometry::Point, units::si::TimeType>{Code::PiPlus, E0, plab, pos,
+                                                         0_ns});
+    particle.SetNode(nodePtr);
+    setup::StackView view(particle);
+
+    process::pythia::Interaction model;
+
+    [[maybe_unused]] const process::EProcessReturn ret = model.DoInteraction(view);
+    [[maybe_unused]] const GrammageType length = model.GetInteractionLength(particle);
+  }
+}
diff --git a/dependencies/QGSJetII/CMakeLists.txt b/dependencies/QGSJetII/CMakeLists.txt
new file mode 100644
index 000000000..75327b3f6
--- /dev/null
+++ b/dependencies/QGSJetII/CMakeLists.txt
@@ -0,0 +1,21 @@
+cmake_minimum_required(VERSION 3.1)
+
+project(libQGSJetII)
+
+set (
+  MODEL_SOURCES
+  qgsjet-II-04.f
+  )
+
+set (
+  MODEL_HEADERS
+  )
+
+
+enable_language(Fortran)
+add_library (QGSJetII SHARED ${MODEL_SOURCES})
+set_property(TARGET QGSJetII PROPERTY POSITION_INDEPENDENT_CODE 1)
+
+add_library (QGSJetII_static STATIC ${MODEL_SOURCES})
+set_property(TARGET QGSJetII_static PROPERTY POSITION_INDEPENDENT_CODE 1)
+
diff --git a/dependencies/QGSJetII/Interaction.cc b/dependencies/QGSJetII/Interaction.cc
new file mode 100644
index 000000000..df505c115
--- /dev/null
+++ b/dependencies/QGSJetII/Interaction.cc
@@ -0,0 +1,403 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/process/qgsjetII/Interaction.h>
+
+#include <corsika/environment/Environment.h>
+#include <corsika/environment/NuclearComposition.h>
+#include <corsika/framework/geometry/QuantityVector.h>
+#include <corsika/process/qgsjetII/QGSJetIIFragmentsStack.h>
+#include <corsika/process/qgsjetII/QGSJetIIStack.h>
+#include <corsika/process/qgsjetII/qgsjet-II-04.h>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/framework/utility/COMBoost.hpp>
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
+
+#include <random>
+#include <sstream>
+#include <string>
+#include <tuple>
+
+using std::cout;
+using std::endl;
+using std::ostringstream;
+using std::string;
+using std::tuple;
+
+using namespace corsika;
+using namespace corsika::setup;
+using SetupParticle = setup::Stack::StackIterator;
+using SetupView = setup::StackView;
+using Track = Trajectory;
+
+namespace corsika::qgsjetII {
+
+  Interaction::Interaction(const string& dataPath)
+      : data_path_(dataPath) {
+    if (dataPath == "") {
+      if (std::getenv("CORSIKA_DATA")) {
+        data_path_ = string(std::getenv("CORSIKA_DATA")) + "/QGSJetII/";
+        cout << "Searching for QGSJetII data tables in " << data_path_ << endl;
+      }
+    }
+
+    // initialize QgsjetII
+    if (!initialized_) {
+      qgset_();
+      datadir DIR(data_path_);
+      qgaini_(DIR.data);
+      initialized_ = true;
+    }
+  }
+
+  Interaction::~Interaction() { cout << "QgsjetII::Interaction n=" << count_ << endl; }
+
+  units::si::CrossSectionType Interaction::GetCrossSection(
+      const Code beamId, const Code targetId, const units::si::HEPEnergyType Elab,
+      const unsigned int Abeam, const unsigned int targetA) const {
+    using namespace units::si;
+    double sigProd = std::numeric_limits<double>::infinity();
+
+    if (process::qgsjetII::CanInteract(beamId)) {
+
+      const int xsCode = process::qgsjetII::GetQgsjetIIXSCodeRaw(beamId);
+      int iTarget = 1;
+      if (IsNucleus(targetId)) {
+        iTarget = targetA;
+        if (iTarget > maxMassNumber_ || iTarget <= 0) {
+          std::ostringstream txt;
+          txt << "QgsjetII target outside range. iTarget=" << iTarget;
+          throw std::runtime_error(txt.str().c_str());
+        }
+      }
+      int iProjectile = 1;
+      if (IsNucleus(beamId)) {
+        iProjectile = Abeam;
+        if (iProjectile > maxMassNumber_ || iProjectile <= 0)
+          throw std::runtime_error("QgsjetII target outside range. ");
+      }
+
+      cout << "QgsjetII::GetCrossSection Elab=" << Elab << " xs-code=" << xsCode
+           << " iProjectile=" << iProjectile << " iTarget=" << iTarget << endl;
+      sigProd = qgsect_(Elab / 1_GeV, xsCode, iProjectile, iTarget);
+      cout << "QgsjetII::GetCrossSection sigProd=" << sigProd << endl;
+    }
+
+    return sigProd * 1_mb;
+  }
+
+  template <>
+  units::si::GrammageType Interaction::GetInteractionLength(
+      SetupParticle const& vP) const {
+
+    using namespace units;
+    using namespace units::si;
+    using namespace geometry;
+
+    // coordinate system, get global frame of reference
+    CoordinateSystem& rootCS =
+        RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+
+    const Code corsikaBeamId = vP.GetPID();
+
+    // beam particles for qgsjetII : 1, 2, 3 for p, pi, k
+    // read from cross section code table
+    const bool kInteraction = process::qgsjetII::CanInteract(corsikaBeamId);
+
+    // FOR NOW: assume target is at rest
+    MomentumVector pTarget(rootCS, {0_GeV, 0_GeV, 0_GeV});
+
+    // total momentum and energy
+    HEPEnergyType Elab = vP.GetEnergy();
+
+    cout << "Interaction: LambdaInt: \n"
+         << " input energy: " << vP.GetEnergy() / 1_GeV << endl
+         << " beam can interact:" << kInteraction << endl
+         << " beam pid:" << vP.GetPID() << endl;
+
+    if (kInteraction) {
+
+      int Abeam = 0;
+      if (IsNucleus(vP.GetPID())) Abeam = vP.GetNuclearA();
+
+      // get target from environment
+      /*
+        the target should be defined by the Environment,
+        ideally as full particle object so that the four momenta
+        and the boosts can be defined..
+      */
+
+      auto const* currentNode = vP.GetNode();
+      const auto& mediumComposition =
+          currentNode->GetModelProperties().GetNuclearComposition();
+
+      si::CrossSectionType weightedProdCrossSection =
+          mediumComposition.WeightedSum([=](Code targetID) -> si::CrossSectionType {
+            int targetA = 0;
+            if (corsika::IsNucleus(targetID)) targetA = GetNucleusA(targetID);
+            return GetCrossSection(corsikaBeamId, targetID, Elab, Abeam, targetA);
+          });
+
+      cout << "Interaction: "
+           << "IntLength: weighted CrossSection (mb): " << weightedProdCrossSection / 1_mb
+           << endl;
+
+      // calculate interaction length in medium
+      GrammageType const int_length = mediumComposition.GetAverageMassNumber() *
+                                      units::constants::u / weightedProdCrossSection;
+      cout << "Interaction: "
+           << "interaction length (g/cm2): " << int_length / (0.001_kg) * 1_cm * 1_cm
+           << endl;
+
+      return int_length;
+    }
+
+    return std::numeric_limits<double>::infinity() * 1_g / (1_cm * 1_cm);
+  }
+
+  /**
+     In this function QGSJETII is called to produce one event. The
+     event is copied (and boosted) into the shower lab frame.
+   */
+
+  template <>
+  process::EProcessReturn Interaction::DoInteraction(SetupView& view) {
+
+    using namespace units;
+    using namespace utl;
+    using namespace units::si;
+    using namespace geometry;
+
+    auto const projectile = view.GetProjectile();
+
+    const auto corsikaBeamId = projectile.GetPID();
+    cout << "ProcessQgsjetII: "
+         << "DoInteraction: " << corsikaBeamId << " interaction? "
+         << process::qgsjetII::CanInteract(corsikaBeamId) << endl;
+
+    if (process::qgsjetII::CanInteract(corsikaBeamId)) {
+
+      const CoordinateSystem& rootCS =
+          RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+
+      // position and time of interaction, not used in QgsjetII
+      Point pOrig = projectile.GetPosition();
+      TimeType tOrig = projectile.GetTime();
+
+      // define target
+      // for QgsjetII is always a single nucleon
+      // FOR NOW: target is always at rest
+      const auto targetEnergyLab = 0_GeV + constants::nucleonMass;
+      const auto targetMomentumLab = MomentumVector(rootCS, 0_GeV, 0_GeV, 0_GeV);
+      const FourVector PtargLab(targetEnergyLab, targetMomentumLab);
+
+      // define projectile
+      HEPEnergyType const projectileEnergyLab = projectile.GetEnergy();
+      auto const projectileMomentumLab = projectile.GetMomentum();
+
+      int beamA = 1;
+      if (IsNucleus(corsikaBeamId)) beamA = projectile.GetNuclearA();
+
+      const HEPEnergyType projectileEnergyLabPerNucleon = projectileEnergyLab / beamA;
+
+      cout << "Interaction: ebeam lab: " << projectileEnergyLab / 1_GeV << endl
+           << "Interaction: pbeam lab: " << projectileMomentumLab.GetComponents() / 1_GeV
+           << endl;
+      cout << "Interaction: etarget lab: " << targetEnergyLab / 1_GeV << endl
+           << "Interaction: ptarget lab: " << targetMomentumLab.GetComponents() / 1_GeV
+           << endl;
+
+      cout << "Interaction: position of interaction: " << pOrig.GetCoordinates() << endl;
+      cout << "Interaction: time: " << tOrig << endl;
+
+      // sample target mass number
+      auto const* currentNode = projectile.GetNode();
+      auto const& mediumComposition =
+          currentNode->GetModelProperties().GetNuclearComposition();
+      // get cross sections for target materials
+      /*
+        Here we read the cross section from the interaction model again,
+        should be passed from GetInteractionLength if possible
+       */
+      auto const& compVec = mediumComposition.GetComponents();
+      std::vector<si::CrossSectionType> cross_section_of_components(compVec.size());
+
+      for (size_t i = 0; i < compVec.size(); ++i) {
+        auto const targetId = compVec[i];
+        int targetA = 0;
+        if (corsika::IsNucleus(targetId)) targetA = GetNucleusA(targetId);
+        const auto sigProd =
+            GetCrossSection(corsikaBeamId, targetId, projectileEnergyLab, beamA, targetA);
+        cross_section_of_components[i] = sigProd;
+      }
+
+      const auto targetCode =
+          mediumComposition.SampleTarget(cross_section_of_components, rng_);
+      cout << "Interaction: target selected: " << targetCode << endl;
+
+      int targetMassNumber = 1;    // proton
+      if (IsNucleus(targetCode)) { // nucleus
+        targetMassNumber = GetNucleusA(targetCode);
+        if (targetMassNumber > maxMassNumber_)
+          throw std::runtime_error("QgsjetII target mass outside range.");
+      } else {
+        if (targetCode != Proton::GetCode())
+          throw std::runtime_error("QgsjetII Taget not possible.");
+      }
+      cout << "Interaction: target qgsjetII code/A: " << targetMassNumber << endl;
+
+      int projectileMassNumber = 1; // "1" means "hadron"
+      QgsjetIIHadronType qgsjet_hadron_type =
+          process::qgsjetII::GetQgsjetIIHadronType(corsikaBeamId);
+      if (qgsjet_hadron_type == QgsjetIIHadronType::NucleusType) {
+        projectileMassNumber = projectile.GetNuclearA();
+        if (projectileMassNumber > maxMassNumber_)
+          throw std::runtime_error("QgsjetII projectile mass outside range.");
+        std::array<QgsjetIIHadronType, 2> constexpr nucleons = {
+            QgsjetIIHadronType::ProtonType, QgsjetIIHadronType::NeutronType};
+        std::uniform_int_distribution select(0, 1);
+        qgsjet_hadron_type = nucleons[select(rng_)];
+      } else {
+        // from conex: replace pi0 or rho0 with pi+/pi- in alternating sequence
+        if (qgsjet_hadron_type == QgsjetIIHadronType::NeutralLightMesonType) {
+          qgsjet_hadron_type = alternate_;
+          alternate_ = (alternate_ == QgsjetIIHadronType::PiPlusType
+                            ? QgsjetIIHadronType::PiMinusType
+                            : QgsjetIIHadronType::PiPlusType);
+        }
+      }
+      cout << "Interaction: projectile qgsjetII code/A: " << projectileMassNumber << " "
+           << corsikaBeamId << endl;
+
+      int qgsjet_hadron_type_int = static_cast<QgsjetIICodeIntType>(qgsjet_hadron_type);
+
+      cout << "Interaction: "
+           << " DoInteraction: E(GeV):" << projectileEnergyLab / 1_GeV << endl;
+      count_++;
+      qgini_(projectileEnergyLab / 1_GeV, qgsjet_hadron_type_int, projectileMassNumber,
+             targetMassNumber);
+      qgconf_();
+
+      // bookkeeping
+      MomentumVector Plab_final(rootCS, {0.0_GeV, 0.0_GeV, 0.0_GeV});
+      HEPEnergyType Elab_final = 0_GeV;
+
+      // to read the secondaries
+      // define rotation to and from CoM frame
+      // CoM frame definition in QgsjetII projectile: +z
+      auto const& originalCS = projectileMomentumLab.GetCoordinateSystem();
+      geometry::CoordinateSystem const zAxisFrame =
+          originalCS.RotateToZ(projectileMomentumLab);
+
+      // nuclear projectile fragments
+      QGSJetIIFragmentsStack qfs;
+      for (auto& fragm : qfs) {
+        Code idFragm = Code::Nucleus;
+        const int A = fragm.GetFragmentSize();
+        int Z = 0;
+        switch (A) {
+          case 1: { // proton/neutron
+            std::uniform_real_distribution<double> select;
+            if (select(rng_) > 0.5) {
+              idFragm = Code::Proton;
+              Z = 1;
+            } else {
+              idFragm = Code::Neutron;
+              Z = 0;
+            }
+
+            const HEPMassType nucleonMass = GetMass(idFragm);
+
+            auto momentum = geometry::Vector(
+                zAxisFrame, corsika::QuantityVector<hepmomentum_d>{
+                                0.0_GeV, 0.0_GeV,
+                                sqrt((projectileEnergyLabPerNucleon + nucleonMass) *
+                                     (projectileEnergyLabPerNucleon - nucleonMass))});
+
+            auto const energy = sqrt(momentum.squaredNorm() + square(nucleonMass));
+            momentum.rebase(originalCS); // transform back into standard lab frame
+            std::cout << "secondary fragment> id=" << idFragm
+                      << " p=" << momentum.GetComponents() << std::endl;
+            auto pnew = view.AddSecondary(
+                tuple<Code, units::si::HEPEnergyType, stack::MomentumVector,
+                      geometry::Point, units::si::TimeType>{idFragm, energy, momentum,
+                                                            pOrig, tOrig});
+            Plab_final += pnew.GetMomentum();
+            Elab_final += pnew.GetEnergy();
+          } break;
+          case 2: // deuterium
+            Z = 1;
+            break;
+          case 3: // tritium
+            Z = 1;
+            break;
+          case 4: // helium
+            Z = 2;
+            break;
+          default: // nucleus
+          {
+            Z = int(A / 2.15 + 0.7);
+          }
+        }
+
+        if (idFragm == Code::Nucleus) { // thus: not p or n
+          const HEPMassType nucleusMass =
+              Proton::GetMass() * Z + Neutron::GetMass() * (A - Z);
+          auto momentum = geometry::Vector(
+              zAxisFrame, geometry::QuantityVector<hepmomentum_d>{
+                              0.0_GeV, 0.0_GeV,
+                              sqrt((projectileEnergyLabPerNucleon * A + nucleusMass) *
+                                   (projectileEnergyLabPerNucleon * A - nucleusMass))});
+
+          auto const energy = sqrt(momentum.squaredNorm() + square(nucleusMass));
+          momentum.rebase(originalCS); // transform back into standard lab frame
+          std::cout << "secondary fragment> id=" << idFragm
+                    << " p=" << momentum.GetComponents() << " A=" << A << " Z=" << Z
+                    << std::endl;
+          auto pnew = view.AddSecondary(
+              tuple<Code, units::si::HEPEnergyType, stack::MomentumVector,
+                    geometry::Point, units::si::TimeType, unsigned short, unsigned short>{
+                  idFragm, energy, momentum, pOrig, tOrig, A, Z});
+          Plab_final += pnew.GetMomentum();
+          Elab_final += pnew.GetEnergy();
+        }
+      }
+
+      // secondaries
+      QGSJetIIStack qs;
+      for (auto& psec : qs) {
+
+        auto momentum = psec.GetMomentum(zAxisFrame);
+        auto const energy = psec.GetEnergy();
+
+        momentum.rebase(originalCS); // transform back into standard lab frame
+        std::cout << "secondary fragment> id="
+                  << process::qgsjetII::ConvertFromQgsjetII(psec.GetPID())
+                  << " p=" << momentum.GetComponents() << std::endl;
+        auto pnew =
+            view.AddSecondary(tuple<Code, units::si::HEPEnergyType, stack::MomentumVector,
+                                    geometry::Point, units::si::TimeType>{
+                process::qgsjetII::ConvertFromQgsjetII(psec.GetPID()), energy, momentum,
+                pOrig, tOrig});
+        Plab_final += pnew.GetMomentum();
+        Elab_final += pnew.GetEnergy();
+      }
+      cout << "conservation (all GeV): Ecm_final= n/a" /* << Ecm_final / 1_GeV*/ << endl
+           << "Elab_final=" << Elab_final / 1_GeV
+           << ", Plab_final=" << (Plab_final / 1_GeV).GetComponents()
+           << ", N_wounded,targ="
+           << QGSJetIIFragmentsStackData::GetWoundedNucleonsTarget()
+           << ", N_wounded,proj="
+           << QGSJetIIFragmentsStackData::GetWoundedNucleonsProjectile()
+           << ", N_fragm,proj=" << qfs.getEntries() << endl;
+    }
+    return process::EProcessReturn::eOk;
+  }
+
+} // namespace corsika::qgsjetII
diff --git a/Processes/QGSJetII/Interaction.h b/dependencies/QGSJetII/Interaction.h
similarity index 61%
rename from Processes/QGSJetII/Interaction.h
rename to dependencies/QGSJetII/Interaction.h
index bef66e3ce..4984761c2 100644
--- a/Processes/QGSJetII/Interaction.h
+++ b/dependencies/QGSJetII/Interaction.h
@@ -8,17 +8,17 @@
 
 #pragma once
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/process/InteractionProcess.h>
+#include <corsika/framework/coreParticleProperties.h>
 #include <corsika/process/qgsjetII/ParticleConversion.h>
-#include <corsika/random/RNGManager.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
 
 #include <string>
 
-namespace corsika::process::qgsjetII {
+namespace corsika::qgsjetII {
 
-  class Interaction : public corsika::process::InteractionProcess<Interaction> {
+  class Interaction : public corsika::InteractionProcess<Interaction> {
 
     std::string data_path_;
     int count_ = 0;
@@ -32,15 +32,14 @@ namespace corsika::process::qgsjetII {
 
     bool WasInitialized() { return initialized_; }
     int GetMaxTargetMassNumber() const { return maxMassNumber_; }
-    bool IsValidTarget(corsika::particles::Code TargetId) const {
-      return (corsika::particles::GetNucleusA(TargetId) < maxMassNumber_) &&
-             corsika::particles::IsNucleus(TargetId);
+    bool IsValidTarget(corsika::Code TargetId) const {
+      return (corsika::GetNucleusA(TargetId) < maxMassNumber_) &&
+             corsika::IsNucleus(TargetId);
     }
 
     corsika::units::si::CrossSectionType GetCrossSection(
-        const corsika::particles::Code, const corsika::particles::Code,
-        const corsika::units::si::HEPEnergyType, const unsigned int Abeam = 0,
-        const unsigned int Atarget = 0) const;
+        const corsika::Code, const corsika::Code, const corsika::units::si::HEPEnergyType,
+        const unsigned int Abeam = 0, const unsigned int Atarget = 0) const;
 
     template <typename TParticle>
     corsika::units::si::GrammageType GetInteractionLength(TParticle const&) const;
@@ -51,7 +50,7 @@ namespace corsika::process::qgsjetII {
      */
 
     template <typename TSecondaryView>
-    corsika::process::EProcessReturn DoInteraction(TSecondaryView&);
+    corsika::EProcessReturn DoInteraction(TSecondaryView&);
 
   private:
     corsika::random::RNG& rng_ =
@@ -59,4 +58,4 @@ namespace corsika::process::qgsjetII {
     static constexpr int maxMassNumber_ = 208;
   };
 
-} // namespace corsika::process::qgsjetII
+} // namespace corsika::qgsjetII
diff --git a/dependencies/QGSJetII/ParticleConversion.cc b/dependencies/QGSJetII/ParticleConversion.cc
new file mode 100644
index 000000000..8dc5ed9a7
--- /dev/null
+++ b/dependencies/QGSJetII/ParticleConversion.cc
@@ -0,0 +1,12 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/framework/coreParticleProperties.h>
+#include <corsika/process/qgsjetII/ParticleConversion.h>
+
+using namespace corsika::qgsjetII;
diff --git a/Processes/QGSJetII/ParticleConversion.h b/dependencies/QGSJetII/ParticleConversion.h
similarity index 67%
rename from Processes/QGSJetII/ParticleConversion.h
rename to dependencies/QGSJetII/ParticleConversion.h
index 9171706b3..db19a2453 100644
--- a/Processes/QGSJetII/ParticleConversion.h
+++ b/dependencies/QGSJetII/ParticleConversion.h
@@ -8,11 +8,11 @@
 
 #pragma once
 
-#include <corsika/particles/ParticleProperties.h>
+#include <corsika/framework/coreParticleProperties.h>
 
 #include <string>
 
-namespace corsika::process::qgsjetII {
+namespace corsika::qgsjetII {
 
   /**
      These are the possible secondaries produced by QGSJetII
@@ -54,14 +54,14 @@ namespace corsika::process::qgsjetII {
 
 #include <corsika/process/qgsjetII/Generated.inc>
 
-  QgsjetIICode constexpr ConvertToQgsjetII(corsika::particles::Code pCode) {
-    return corsika2qgsjetII[static_cast<corsika::particles::CodeIntType>(pCode)];
+  QgsjetIICode constexpr ConvertToQgsjetII(corsika::Code pCode) {
+    return corsika2qgsjetII[static_cast<corsika::CodeIntType>(pCode)];
   }
 
-  corsika::particles::Code constexpr ConvertFromQgsjetII(QgsjetIICode pCode) {
+  corsika::Code constexpr ConvertFromQgsjetII(QgsjetIICode pCode) {
     auto const pCodeInt = static_cast<QgsjetIICodeIntType>(pCode);
     auto const corsikaCode = qgsjetII2corsika[pCodeInt - minQgsjetII];
-    if (corsikaCode == corsika::particles::Code::Unknown) {
+    if (corsikaCode == corsika::Code::Unknown) {
       throw std::runtime_error(std::string("QGSJETII/CORSIKA conversion of pCodeInt=")
                                    .append(std::to_string(pCodeInt))
                                    .append(" impossible"));
@@ -69,27 +69,26 @@ namespace corsika::process::qgsjetII {
     return corsikaCode;
   }
 
-  QgsjetIICodeIntType constexpr ConvertToQgsjetIIRaw(corsika::particles::Code pCode) {
+  QgsjetIICodeIntType constexpr ConvertToQgsjetIIRaw(corsika::Code pCode) {
     return static_cast<QgsjetIICodeIntType>(ConvertToQgsjetII(pCode));
   }
 
-  QgsjetIIXSClass constexpr GetQgsjetIIXSCode(corsika::particles::Code pCode) {
-    // if (pCode == corsika::particles::Code::Nucleus)
+  QgsjetIIXSClass constexpr GetQgsjetIIXSCode(corsika::Code pCode) {
+    // if (pCode == corsika::Code::Nucleus)
     // static_cast(QgsjetIIXSClassIntType>();
-    return corsika2qgsjetIIXStype[static_cast<corsika::particles::CodeIntType>(pCode)];
+    return corsika2qgsjetIIXStype[static_cast<corsika::CodeIntType>(pCode)];
   }
 
-  QgsjetIIXSClassIntType constexpr GetQgsjetIIXSCodeRaw(corsika::particles::Code pCode) {
+  QgsjetIIXSClassIntType constexpr GetQgsjetIIXSCodeRaw(corsika::Code pCode) {
     return static_cast<QgsjetIIXSClassIntType>(GetQgsjetIIXSCode(pCode));
   }
 
-  bool constexpr CanInteract(corsika::particles::Code pCode) {
+  bool constexpr CanInteract(corsika::Code pCode) {
     return GetQgsjetIIXSCode(pCode) != QgsjetIIXSClass::CannotInteract;
   }
 
-  QgsjetIIHadronType constexpr GetQgsjetIIHadronType(corsika::particles::Code pCode) {
-    return corsika2qgsjetIIHadronType[static_cast<corsika::particles::CodeIntType>(
-        pCode)];
+  QgsjetIIHadronType constexpr GetQgsjetIIHadronType(corsika::Code pCode) {
+    return corsika2qgsjetIIHadronType[static_cast<corsika::CodeIntType>(pCode)];
   }
 
-} // namespace corsika::process::qgsjetII
+} // namespace corsika::qgsjetII
diff --git a/Processes/QGSJetII/QGSJetIIFragmentsStack.h b/dependencies/QGSJetII/QGSJetIIFragmentsStack.h
similarity index 90%
rename from Processes/QGSJetII/QGSJetIIFragmentsStack.h
rename to dependencies/QGSJetII/QGSJetIIFragmentsStack.h
index 5da94661c..3776a85a8 100644
--- a/Processes/QGSJetII/QGSJetIIFragmentsStack.h
+++ b/dependencies/QGSJetII/QGSJetIIFragmentsStack.h
@@ -8,14 +8,14 @@
 
 #pragma once
 
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/geometry/RootCoordinateSystem.h>
+#include <corsika/framework/geometry/Vector.h>
 #include <corsika/process/qgsjetII/ParticleConversion.h>
 #include <corsika/process/qgsjetII/qgsjet-II-04.h>
 #include <corsika/stack/Stack.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-namespace corsika::process::qgsjetII {
+namespace corsika::qgsjetII {
 
   class QGSJetIIFragmentsStackData {
 
@@ -71,4 +71,4 @@ namespace corsika::process::qgsjetII {
   typedef corsika::stack::Stack<QGSJetIIFragmentsStackData, FragmentsInterface>
       QGSJetIIFragmentsStack;
 
-} // end namespace corsika::process::qgsjetII
+} // end namespace corsika::qgsjetII
diff --git a/Processes/QGSJetII/QGSJetIIStack.h b/dependencies/QGSJetII/QGSJetIIStack.h
similarity index 86%
rename from Processes/QGSJetII/QGSJetIIStack.h
rename to dependencies/QGSJetII/QGSJetIIStack.h
index 04685ab7c..9f1d18cd4 100644
--- a/Processes/QGSJetII/QGSJetIIStack.h
+++ b/dependencies/QGSJetII/QGSJetIIStack.h
@@ -8,16 +8,16 @@
 
 #pragma once
 
-#include <corsika/geometry/CoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/geometry/CoordinateSystem.h>
+#include <corsika/framework/geometry/Vector.h>
 #include <corsika/process/qgsjetII/ParticleConversion.h>
 #include <corsika/process/qgsjetII/qgsjet-II-04.h>
 #include <corsika/stack/Stack.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-namespace corsika::process::qgsjetII {
+namespace corsika::qgsjetII {
 
-  typedef corsika::geometry::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
+  typedef corsika::Vector<corsika::units::si::hepmomentum_d> MomentumVector;
 
   class QGSJetIIStackData {
 
@@ -52,7 +52,7 @@ namespace corsika::process::qgsjetII {
       return qgarr14_.esp[i][0] * 1_GeV;
     }
     MomentumVector GetMomentum(const unsigned int i,
-                               const corsika::geometry::CoordinateSystem& CS) const {
+                               const corsika::CoordinateSystem& CS) const {
       using namespace corsika::units::si;
       geometry::QuantityVector<hepmomentum_d> components = {qgarr14_.esp[i][2] * 1_GeV,
                                                             qgarr14_.esp[i][3] * 1_GeV,
@@ -111,12 +111,12 @@ namespace corsika::process::qgsjetII {
 
     void SetPID(const int v) { GetStackData().SetId(GetIndex(), v); }
 
-    corsika::process::qgsjetII::QgsjetIICode GetPID() const {
-      return static_cast<corsika::process::qgsjetII::QgsjetIICode>(
+    corsika::qgsjetII::QgsjetIICode GetPID() const {
+      return static_cast<corsika::qgsjetII::QgsjetIICode>(
           GetStackData().GetId(GetIndex()));
     }
 
-    MomentumVector GetMomentum(const corsika::geometry::CoordinateSystem& CS) const {
+    MomentumVector GetMomentum(const corsika::CoordinateSystem& CS) const {
       return GetStackData().GetMomentum(GetIndex(), CS);
     }
 
@@ -127,4 +127,4 @@ namespace corsika::process::qgsjetII {
 
   typedef corsika::stack::Stack<QGSJetIIStackData, ParticleInterface> QGSJetIIStack;
 
-} // end namespace corsika::process::qgsjetII
+} // end namespace corsika::qgsjetII
diff --git a/dependencies/QGSJetII/code_generator.py b/dependencies/QGSJetII/code_generator.py
new file mode 100755
index 000000000..65c3fe54f
--- /dev/null
+++ b/dependencies/QGSJetII/code_generator.py
@@ -0,0 +1,203 @@
+#!/usr/bin/env python3
+
+# (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+#
+# See file AUTHORS for a list of contributors.
+#
+# This software is distributed under the terms of the GNU General Public
+# Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+# the license.
+
+
+import pickle, sys, itertools
+
+
+
+def load_particledb(filename):
+    '''
+    loads the pickled particle_db (which is an OrderedDict)
+    definition of particle_db dict is: "name", "antiName", "pdg", "mass", "electric_charge", "lifetime", "ngc_code", "isNucleus", "isHadron"
+    '''
+    with open(filename, "rb") as f:
+        particle_db = pickle.load(f)
+    return particle_db
+
+
+def set_default_qgsjetII_definition(particle_db):
+    '''
+    Also particles not explicitly known by QGSJetII may in fact interact via mapping 
+    to cross section types (xsType) and hadron type (hadronType)
+
+    This is achieved here.
+
+    The function return nothing, but modified the input particle_db by adding the 
+    fields 'xsType' and 'hadronType'
+    '''
+    for identifier, pData in particle_db.items():
+        # the cross-section types
+        xsType = "CannotInteract"
+        hadronType = "UndefinedType"
+        if (pData['isNucleus']):
+            xsType = "Baryons"
+            hadronType = "NucleusType"
+        elif (pData['isHadron']):
+            pdg = abs(pData['pdg'])
+            anti = pData['pdg'] < 0
+            isBaryon = (1000 <= pdg < 4000)
+            charge = pData['electric_charge']
+            if (pdg>=100 and pdg<300 and pdg!=130): # light mesons
+                xsType = "LightMesons"
+                if (charge==0):
+                    hadronType = "NeutralLightMesonType"
+                else:
+                    if (charge>0):
+                        hadronType = "PiPlusType"
+                    else:
+                        hadronType = "PiMinusType"               
+            elif ((pdg>=300 and pdg<400) or pdg in [130, 10313, 10323]): # kaons
+                xsType = "Kaons"
+                if (charge>0):
+                    hadronType = "KaonPlusType"
+                else:
+                    hadronType = "KaonMinusType"
+                if (charge==0):
+                    hadronType = "Kaon0SType"
+                    if (pdg == 130):
+                        hadronType = "Kaon0LType"
+                    elif (pdg == 310):
+                        hadronType = "Kaon0SType"
+            elif (isBaryon or pData['isNucleus']): # baryons
+                xsType = "Baryons"
+                if (charge==0):
+                    if (anti):
+                        hadronType = "AntiNeutronType"
+                    else: 
+                        hadronType = "NeutronType"
+                else:
+                    if (charge>0):
+                        hadronType = "ProtonType"
+                    else:
+                        hadronType = "AntiProtonType"
+            # all othe not-captured cased are hopefully irrelevant
+            
+        pData['qgsjetII_xsType'] = xsType
+        pData['qgsjetII_hadronType'] = hadronType
+
+            
+def read_qgsjetII_codes(filename, particle_db):
+    '''
+    reads the qgsjet-codes data file. For particles known to QGSJetII the 'qgsjetII_code' is set in the particle_db, as
+    well as the 'xsType' is updated in case it is different from its default value set above. 
+    '''
+    with open(filename) as f:
+        for line in f:
+            line = line.strip()
+            if len(line)==0 or line[0] == '#':
+                continue
+            line = line.split('#')[0]
+            print (line)
+            identifier, model_code, xsType = line.split()
+            try:
+                particle_db[identifier]["qgsjetII_code"] = int(model_code)
+                particle_db[identifier]["qgsjetII_xsType"] = xsType
+            except KeyError as e:
+                raise Exception("Identifier '{:s}' not found in particle_db".format(identifier))
+
+            
+def generate_qgsjetII_enum(particle_db):
+    '''
+    generates the enum to access qgsjetII particles by readable names
+    '''
+    output = "enum class QgsjetIICode : int8_t {\n"
+    for identifier, pData in particle_db.items():
+        if 'qgsjetII_code' in pData:
+            output += "  {:s} = {:d},\n".format(identifier, pData['qgsjetII_code'])
+    output += "};\n"
+    return output
+
+
+def generate_corsika2qgsjetII(particle_db):    
+    '''
+    generates the look-up table to convert corsika codes to qgsjetII codes
+    '''
+    string = "std::array<QgsjetIICode, {:d}> constexpr corsika2qgsjetII = {{\n".format(len(particle_db))
+    for identifier, pData in particle_db.items():
+        if 'qgsjetII_code' in pData:
+            string += "  QgsjetIICode::{:s}, \n".format(identifier)
+        else:
+            string += "  QgsjetIICode::Unknown, // {:s}\n".format(identifier + ' not implemented in QGSJetII')
+    string += "};\n"
+    return string
+    
+
+def generate_corsika2qgsjetII_xsType(particle_db):    
+    '''
+    generates the look-up table to convert corsika codes to qgsjetII codes
+    '''
+    string = "std::array<QgsjetIIXSClass, {:d}> constexpr corsika2qgsjetIIXStype = {{\n".format(len(particle_db))
+    for identifier, pData in particle_db.items():
+        modelCodeXS = pData.get("qgsjetII_xsType", "CannotInteract")
+        string += "  QgsjetIIXSClass::{:s}, // {:s}\n".format(modelCodeXS, identifier if modelCodeXS else identifier + " (not implemented in QGSJETII)")
+    string += "};\n"
+    return string
+
+
+def generate_corsika2qgsjetII_hadronType(particle_db):    
+    '''
+    generates the look-up table to convert corsika codes to qgsjetII codes
+    '''
+    string = "std::array<QgsjetIIHadronType, {:d}> constexpr corsika2qgsjetIIHadronType = {{\n".format(len(particle_db))
+    for identifier, pData in particle_db.items():
+        modelCode = pData.get("qgsjetII_hadronType", "UndefinedType")
+        string += "  QgsjetIIHadronType::{:s}, // {:s}\n".format(modelCode, identifier if modelCode else identifier + " (not implemented in QGSJETII)")
+    string += "};\n"
+    return string
+
+
+def generate_qgsjetII2corsika(particle_db) :
+    '''
+    generates the look-up table to convert qgsjetII codes to corsika codes    
+    '''
+    minID = 0
+    for identifier, pData in particle_db.items() :
+        if 'qgsjetII_code' in pData:
+            minID = min(minID, pData['qgsjetII_code'])
+
+    string = "QgsjetIICodeIntType constexpr minQgsjetII = {:d};\n\n".format(minID)
+
+    pDict = {}
+    for identifier, pData in particle_db.items() :
+        if 'qgsjetII_code' in pData:
+            model_code = pData['qgsjetII_code'] - minID
+            pDict[model_code] = identifier
+    
+    nPart = max(pDict.keys()) - min(pDict.keys()) + 1
+    string += "std::array<corsika::Code, {:d}> constexpr qgsjetII2corsika = {{\n".format(nPart)
+    
+    for iPart in range(nPart) :
+        identifier = pDict.get(iPart, "Unknown")
+        qgsID = iPart + minID
+        string += "  corsika::Code::{:s}, // {:d} \n".format(identifier, qgsID)
+    
+    string += "};\n"
+    return string
+
+
+if __name__ == "__main__":
+    if len(sys.argv) != 3:
+        print("usage: {:s} <particle_db.pkl> <qgsjetII_codes.dat>".format(sys.argv[0]), file=sys.stderr)
+        sys.exit(1)
+        
+    print("code_generator.py for QGSJETII")
+    
+    particle_db = load_particledb(sys.argv[1])
+    read_qgsjetII_codes(sys.argv[2], particle_db)
+    set_default_qgsjetII_definition(particle_db)
+    
+    with open("Generated.inc", "w") as f:
+        print("// this file is automatically generated\n// edit at your own risk!\n", file=f)
+        print(generate_qgsjetII_enum(particle_db), file=f)
+        print(generate_corsika2qgsjetII(particle_db), file=f)
+        print(generate_qgsjetII2corsika(particle_db), file=f)
+        print(generate_corsika2qgsjetII_xsType(particle_db), file=f)
+        print(generate_corsika2qgsjetII_hadronType(particle_db), file=f)
diff --git a/dependencies/QGSJetII/qgsjet-II-04-codes.dat b/dependencies/QGSJetII/qgsjet-II-04-codes.dat
new file mode 100644
index 000000000..8b1bee7c7
--- /dev/null
+++ b/dependencies/QGSJetII/qgsjet-II-04-codes.dat
@@ -0,0 +1,44 @@
+# input file for particle conversion to/from QGSJet
+# the format of this file is: "corsika-identifier" "qgsjet-id"  "xs-class"
+
+# The 'Unknown' particle is needed to mark all particles qgsjetII does
+# not know
+# IMPORTANT Note: the code "20" MAY NOT BE USED by qgsjetII. Change to
+# another positive integer if a conflict arises. Since we use std::array
+# to store PID data keep the number as low as reasonable.  
+Unknown 20 CannotInteract
+
+# Note, we list here only the particles, which are produced by
+# QGSJetII as secondaries.  There is additional mapping of corsika
+# particles on QGSJetII "xs-class"es and "hadron-type"s, which are
+# programmed in code_generator.py
+
+# class 1 (-> as pions)
+Pi0          0 LightMesons
+PiPlus       1 LightMesons
+PiMinus     -1 LightMesons
+Eta         10 LightMesons
+Rho0       -10 LightMesons
+
+# class 2 (-> as proton)
+Neutron      3 Baryons
+AntiNeutron -3 Baryons
+Proton       2 Baryons
+AntiProton  -2 Baryons 
+Lambda0      6 Baryons
+Lambda0Bar  -6 Baryons
+LambdaCPlus      9 Baryons
+LambdaCMinusBar -9 Baryons
+
+# class 3 (-> as kaon)
+K0Short      5 Kaons
+K0Long      -5 Kaons
+KPlus        4 Kaons
+KMinus      -4 Kaons
+
+# class 4 (-> charmed mesons, not in qgsjetII)
+D0           8 Charmed
+D0Bar       -8 Charmed
+DPlus        7 Charmed
+DMinus      -7 Charmed
+
diff --git a/dependencies/QGSJetII/qgsjet-II-04.cc b/dependencies/QGSJetII/qgsjet-II-04.cc
new file mode 100644
index 000000000..7bb93c1a4
--- /dev/null
+++ b/dependencies/QGSJetII/qgsjet-II-04.cc
@@ -0,0 +1,33 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <qgsjet-II-04.h>
+
+//#include <corsika/framework/random/RNGManager.hpp>
+
+#include <iostream>
+#include <random>
+
+datadir::datadir(const std::string& dir) {
+  if (dir.length() > 130) {
+    std::cerr << "QGSJetII error, will cut datadir \"" << dir
+              << "\" to 130 characters: " << std::endl;
+  }
+  int i = 0;
+  for (i = 0; i < std::min(130, int(dir.length())); ++i) data[i] = dir[i];
+  data[i + 0] = ' ';
+  data[i + 1] = '\0';
+}
+
+double qgran_(int&) {
+  // static corsika::random::RNG& rng =
+  //  corsika::random::RNGManager::GetInstance().GetRandomStream("qgsjet");
+
+  //  std::uniform_real_distribution<double> dist;
+  return 0; // dist(rng);
+}
diff --git a/Processes/QGSJetII/qgsjet-II-04.f b/dependencies/QGSJetII/qgsjet-II-04.f
similarity index 100%
rename from Processes/QGSJetII/qgsjet-II-04.f
rename to dependencies/QGSJetII/qgsjet-II-04.f
diff --git a/dependencies/QGSJetII/qgsjet-II-04.h b/dependencies/QGSJetII/qgsjet-II-04.h
new file mode 100644
index 000000000..f9f75d826
--- /dev/null
+++ b/dependencies/QGSJetII/qgsjet-II-04.h
@@ -0,0 +1,100 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <string>
+
+//----------------------------------------------
+//  C++ interface for the QGSJetII event generator
+//----------------------------------------------
+// wrapper
+
+extern "C" {
+
+// data memory layout
+
+extern struct { int nsp; } qgarr12_;
+
+const int nptmax = 95000;
+const int iapmax = 208;
+
+extern struct {
+  double esp[nptmax][4];
+  int ich[nptmax];
+} qgarr14_;
+
+extern struct {
+  // c nsf - number of secondary fragments;
+  // c iaf(i) - mass of the i-th fragment
+  int nsf;
+  int iaf[iapmax];
+} qgarr13_;
+
+extern struct {
+  int nwt;
+  int nwp;
+} qgarr55_;
+
+/**
+   Small helper class to provide a data-directory name in the format qgsjetII expects
+ */
+class datadir {
+private:
+  datadir operator=(const std::string& dir);
+  datadir operator=(const datadir&);
+
+public:
+  datadir(const std::string& dir);
+  char data[132];
+};
+
+// functions
+void qgset_();
+void qgaini_(
+    const char* datdir); // Note: there is a length limiation 132 from fortran-qgsjet here
+
+/**
+   @function qgini_
+
+   additional initialization procedure per event
+
+   @parameter e0n  - interaction energy (per hadron/nucleon),
+   @parameter icp0 - hadron type (+-1 - pi+-, +-2 - p(p~), +-3 - n(n~), +-4 - K+-, +-5 -
+   K_l/s),
+   @parameter iap  - projectile mass number (1 - for a hadron),
+   @parameter iat  - target mass number
+*/
+void qgini_(const double& e0n, const int& icp0, const int& iap, const int& iat);
+
+/**
+   @function qgconf_
+
+   generate one event configuration
+*/
+void qgconf_();
+
+/**
+   @function qgsect_
+
+   hadron-nucleus (hadron-nucleus) particle production cross section
+
+   @parameter e0n lab. energy per projectile nucleon (hadron)
+   @parameter icz hadron class (1 - pion, 2 - nucleon, 3 - kaon)
+   @parameter iap projectile mass number (1=<iap<=iapmax),
+   @parameter iat target mass number     (1=<iat<=iapmax)
+ */
+double qgsect_(const double& e0n, const int& icz, const int& iap0, const int& iat0);
+
+/**
+   @function qgran
+
+   link to random number generation
+ */
+double qgran_(int&);
+}
diff --git a/dependencies/QGSJetII/testQGSJetII.cc b/dependencies/QGSJetII/testQGSJetII.cc
new file mode 100644
index 000000000..a5f8a145a
--- /dev/null
+++ b/dependencies/QGSJetII/testQGSJetII.cc
@@ -0,0 +1,186 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/process/qgsjetII/Interaction.h>
+#include <corsika/process/qgsjetII/ParticleConversion.h>
+
+#include <corsika/framework/random/RNGManager.hpp>
+
+#include <corsika/framework/coreParticleProperties.h>
+
+#include <corsika/framework/geometry/Point.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <catch2/catch.hpp>
+
+#include <cstdlib>
+#include <experimental/filesystem>
+#include <iostream>
+
+using namespace corsika;
+using namespace corsika::qgsjetII;
+using namespace corsika::units::si;
+
+template <typename TStackView>
+auto sumCharge(TStackView const& view) {
+  int totalCharge = 0;
+
+  for (auto const& p : view) { totalCharge += GetChargeNumber(p.GetPID()); }
+
+  return totalCharge;
+}
+
+template <typename TStackView>
+auto sumMomentum(TStackView const& view, geometry::CoordinateSystem const& vCS) {
+  geometry::Vector<hepenergy_d> sum{vCS, 0_eV, 0_eV, 0_eV};
+
+  for (auto const& p : view) { sum += p.GetMomentum(); }
+
+  return sum;
+}
+
+TEST_CASE("CORSIKA_DATA", "[processes]") {
+
+  SECTION("check CORSIKA_DATA") {
+
+    const char* data = std::getenv("CORSIKA_DATA");
+    // these REQUIRES are needed:
+    REQUIRE(data != 0);
+    REQUIRE(std::experimental::filesystem::is_directory(
+        std::experimental::filesystem::path(std::string(data) + "/QGSJetII")));
+    std::cout << "data: " << data << " isDir: "
+              << std::experimental::filesystem::is_directory(std::string(data) +
+                                                             "/QGSJetII")
+              << std::endl;
+  }
+}
+
+TEST_CASE("QgsjetII", "[processes]") {
+
+  SECTION("Corsika -> QgsjetII") {
+    CHECK(process::qgsjetII::ConvertToQgsjetII(PiMinus::GetCode()) ==
+          process::qgsjetII::QgsjetIICode::PiMinus);
+    CHECK(process::qgsjetII::ConvertToQgsjetIIRaw(Proton::GetCode()) == 2);
+  }
+
+  SECTION("QgsjetII -> Corsika") {
+    CHECK(PiPlus::GetCode() == process::qgsjetII::ConvertFromQgsjetII(
+                                   process::qgsjetII::QgsjetIICode::PiPlus));
+  }
+
+  SECTION("Corsika -> QgsjetII") {
+    CHECK(process::qgsjetII::ConvertToQgsjetII(PiMinus::GetCode()) ==
+          process::qgsjetII::QgsjetIICode::PiMinus);
+    CHECK(process::qgsjetII::ConvertToQgsjetIIRaw(Proton::GetCode()) == 2);
+  }
+
+  SECTION("canInteractInQgsjetII") {
+
+    CHECK(process::qgsjetII::CanInteract(Proton::GetCode()));
+    CHECK(process::qgsjetII::CanInteract(Code::KPlus));
+    CHECK(process::qgsjetII::CanInteract(Nucleus::GetCode()));
+    // CHECK(process::qgsjetII::CanInteract( Helium::GetCode()));
+
+    CHECK_FALSE(process::qgsjetII::CanInteract(EtaC::GetCode()));
+    CHECK_FALSE(process::qgsjetII::CanInteract(SigmaC0::GetCode()));
+  }
+
+  SECTION("cross-section type") {
+
+    CHECK(process::qgsjetII::GetQgsjetIIXSCode(Code::Neutron) ==
+          process::qgsjetII::QgsjetIIXSClass::Baryons);
+    CHECK(process::qgsjetII::GetQgsjetIIXSCode(Code::K0Long) ==
+          process::qgsjetII::QgsjetIIXSClass::Kaons);
+    CHECK(process::qgsjetII::GetQgsjetIIXSCode(Code::Proton) ==
+          process::qgsjetII::QgsjetIIXSClass::Baryons);
+    CHECK(process::qgsjetII::GetQgsjetIIXSCode(Code::PiMinus) ==
+          process::qgsjetII::QgsjetIIXSClass::LightMesons);
+  }
+}
+
+#include <corsika/framework/geometry/Point.h>
+#include <corsika/framework/geometry/RootCoordinateSystem.h>
+#include <corsika/framework/geometry/Vector.h>
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <corsika/framework/coreParticleProperties.h>
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
+
+#include <corsika/environment/Environment.h>
+#include <corsika/environment/HomogeneousMedium.h>
+#include <corsika/environment/NuclearComposition.h>
+#include <corsika/process/qgsjetII/qgsjet-II-04.h>
+
+using namespace corsika::units::si;
+using namespace corsika::units;
+
+TEST_CASE("QgsjetIIInterface", "[processes]") {
+
+  // setup environment, geometry
+  environment::Environment<environment::IMediumModel> env;
+  auto& universe = *(env.GetUniverse());
+
+  auto theMedium =
+      environment::Environment<environment::IMediumModel>::CreateNode<geometry::Sphere>(
+          geometry::Point{env.GetCoordinateSystem(), 0_m, 0_m, 0_m},
+          1_km * std::numeric_limits<double>::infinity());
+
+  using MyHomogeneousModel = environment::HomogeneousMedium<environment::IMediumModel>;
+  theMedium->SetModelProperties<MyHomogeneousModel>(
+      1_kg / (1_m * 1_m * 1_m),
+      environment::NuclearComposition(std::vector<Code>{Code::Oxygen},
+                                      std::vector<float>{1.}));
+
+  auto const* nodePtr = theMedium.get();
+  universe.AddChild(std::move(theMedium));
+
+  const geometry::CoordinateSystem& cs = env.GetCoordinateSystem();
+
+  corsika::random::RNGManager::GetInstance().RegisterRandomStream("qgsjet");
+
+  SECTION("InteractionInterface") {
+
+    setup::Stack stack;
+    const HEPEnergyType E0 = 100_GeV;
+    HEPMomentumType P0 = sqrt(E0 * E0 - Proton::GetMass() * Proton::GetMass());
+    auto plab = corsika::stack::MomentumVector(cs, {0_GeV, 0_GeV, -P0});
+    geometry::Point pos(cs, 0_m, 0_m, 0_m);
+    auto particle = stack.AddParticle(
+        std::tuple<Code, units::si::HEPEnergyType, corsika::stack::MomentumVector,
+                   geometry::Point, units::si::TimeType>{Code::Proton, E0, plab, pos,
+                                                         0_ns});
+
+    particle.SetNode(nodePtr);
+    setup::StackView view(particle);
+    auto projectile = view.GetProjectile();
+    auto const projectileMomentum = projectile.GetMomentum();
+
+    Interaction model;
+
+    [[maybe_unused]] const process::EProcessReturn ret = model.DoInteraction(view);
+    [[maybe_unused]] const GrammageType length = model.GetInteractionLength(particle);
+
+    CHECK(length / (1_g / square(1_cm)) == Approx(93.47).margin(0.1));
+
+    /***********************************
+     It as turned out already two times (#291 and #307) that the detailed output of
+    QGSJetII event generation depends on the gfortran version used. This is not reliable
+    and cannot be tested in a unit test here. One related problem was already found (#291)
+    and is realted to undefined behaviour in the evaluation of functions in logical
+    expressions. It is not clear if #307 is the same issue.
+
+     CHECK(view.GetSize() == 14);
+     CHECK(sumCharge(view) == 2);
+    ************************************/
+    auto const secMomSum = sumMomentum(view, projectileMomentum.GetCoordinateSystem());
+    CHECK((secMomSum - projectileMomentum).norm() / projectileMomentum.norm() ==
+          Approx(0).margin(1e-2));
+  }
+}
diff --git a/dependencies/UrQMD/CMakeLists.txt b/dependencies/UrQMD/CMakeLists.txt
new file mode 100644
index 000000000..6c538f7ff
--- /dev/null
+++ b/dependencies/UrQMD/CMakeLists.txt
@@ -0,0 +1,51 @@
+cmake_minimum_required(VERSION 3.1)
+
+project(libUrQMD)
+
+set (
+  MODEL_SOURCES
+  urqmdInterface.F
+  addpart.f
+  angdis.f
+  anndec.f
+  blockres.f
+  boxprg.f
+  cascinit.f
+  coload.f
+  dectim.f
+  delpart.f
+  detbal.f
+  dwidth.f
+  error.f
+  getmass.f
+  getspin.f
+  init.f
+  iso.f
+  ityp2pdg.f
+  jdecay2.f
+  make22.f
+  numrec.f
+  output.f
+  paulibl.f
+  proppot.f
+  saveinfo.f
+  scatter.f
+  siglookup.f
+  string.f
+  tabinit.f
+  urqmd.f
+  whichres.f
+)
+
+set (
+  MODEL_HEADERS
+  )
+
+enable_language(Fortran)
+add_library (UrQMD SHARED ${MODEL_SOURCES})
+set_property(TARGET UrQMD PROPERTY POSITION_INDEPENDENT_CODE 1)
+
+add_library (UrQMD_static STATIC ${MODEL_SOURCES})
+set_property(TARGET UrQMD_static PROPERTY POSITION_INDEPENDENT_CODE 1)
+
+
diff --git a/Processes/UrQMD/Copyright b/dependencies/UrQMD/Copyright
similarity index 100%
rename from Processes/UrQMD/Copyright
rename to dependencies/UrQMD/Copyright
diff --git a/Processes/UrQMD/README b/dependencies/UrQMD/README
similarity index 100%
rename from Processes/UrQMD/README
rename to dependencies/UrQMD/README
diff --git a/Processes/UrQMD/UrQMD.cc b/dependencies/UrQMD/UrQMD.cc
similarity index 78%
rename from Processes/UrQMD/UrQMD.cc
rename to dependencies/UrQMD/UrQMD.cc
index 9d78d20ae..90be92d6e 100644
--- a/Processes/UrQMD/UrQMD.cc
+++ b/dependencies/UrQMD/UrQMD.cc
@@ -6,12 +6,12 @@
  * the license.
  */
 
-#include <corsika/geometry/QuantityVector.h>
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/coreParticleProperties.h>
+#include <corsika/framework/geometry/QuantityVector.h>
+#include <corsika/framework/geometry/Vector.h>
 #include <corsika/logging/Logging.h>
-#include <corsika/particles/ParticleProperties.h>
 #include <corsika/process/urqmd/UrQMD.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <algorithm>
 #include <array>
@@ -19,10 +19,11 @@
 #include <cmath>
 #include <fstream>
 #include <functional>
+#include <iostream>
 #include <random>
 #include <sstream>
 
-using namespace corsika::process::UrQMD;
+using namespace corsika::UrQMD;
 using namespace corsika::units::si;
 
 using SetupStack = corsika::setup::Stack;
@@ -34,12 +35,15 @@ UrQMD::UrQMD(std::string const& xs_file) {
   iniurqmdc8_();
 }
 
-CrossSectionType UrQMD::GetTabulatedCrossSection(particles::Code projectileCode,
-                                                 corsika::particles::Code targetCode,
+CrossSectionType UrQMD::GetTabulatedCrossSection(Code projectileCode,
+                                                 corsika::Code targetCode,
                                                  HEPEnergyType labEnergy) const {
   // translated to C++ from CORSIKA 7 subroutine cxtot_u
 
-  auto const kinEnergy = labEnergy - particles::GetMass(projectileCode);
+  C8LOG_DEBUG("UrQMD::GetTabulatedCrossSection proj={}, targ={}, E={}GeV",
+              GetName(projectileCode), GetName(targetCode), labEnergy / 1_GeV);
+
+  auto const kinEnergy = labEnergy - GetMass(projectileCode);
 
   assert(kinEnergy >= HEPEnergyType::zero());
 
@@ -54,53 +58,53 @@ CrossSectionType UrQMD::GetTabulatedCrossSection(particles::Code projectileCode,
 
   int projectileIndex;
   switch (projectileCode) {
-    case particles::Code::Proton:
+    case Code::Proton:
       projectileIndex = 0;
       break;
-    case particles::Code::AntiProton:
+    case Code::AntiProton:
       projectileIndex = 1;
       break;
-    case particles::Code::Neutron:
+    case Code::Neutron:
       projectileIndex = 2;
       break;
-    case particles::Code::AntiNeutron:
+    case Code::AntiNeutron:
       projectileIndex = 3;
       break;
-    case particles::Code::PiPlus:
+    case Code::PiPlus:
       projectileIndex = 4;
       break;
-    case particles::Code::PiMinus:
+    case Code::PiMinus:
       projectileIndex = 5;
       break;
-    case particles::Code::KPlus:
+    case Code::KPlus:
       projectileIndex = 6;
       break;
-    case particles::Code::KMinus:
+    case Code::KMinus:
       projectileIndex = 7;
       break;
-    case particles::Code::K0Short:
-    case particles::Code::K0Long:
+    case Code::K0Short:
+    case Code::K0Long:
     /* since K0Short and K0Long are treated the same, we can also add K0 and K0Bar
      * to the list. This is a deviation from CORSIKA 7. */
-    case particles::Code::K0:
-    case particles::Code::K0Bar:
+    case Code::K0:
+    case Code::K0Bar:
       projectileIndex = 8;
       break;
-    default: {
-      C8LOG_WARN("WARNING: UrQMD cross-section not tabulated for {}", projectileCode);
+    default:
+      std::cout << "WARNING: UrQMD cross-section not tabulated for " << projectileCode
+                << std::endl;
       return CrossSectionType::zero();
-    }
   }
 
   int targetIndex;
   switch (targetCode) {
-    case particles::Code::Nitrogen:
+    case Code::Nitrogen:
       targetIndex = 0;
       break;
-    case particles::Code::Oxygen:
+    case Code::Oxygen:
       targetIndex = 1;
       break;
-    case particles::Code::Argon:
+    case Code::Argon:
       targetIndex = 2;
       break;
     default:
@@ -115,21 +119,16 @@ CrossSectionType UrQMD::GetTabulatedCrossSection(particles::Code projectileCode,
         xs_interp_support_table_[projectileIndex][targetIndex][je + i - 1 - 1] * w[i];
   }
 
-  C8LOG_DEBUG("UrQMD::GetTabulatedCrossSection proj={}, targ={}, E={}GeV, sigma={}",
-              particles::GetName(projectileCode), particles::GetName(targetCode),
-              labEnergy / 1_GeV, result);
-
   return result;
 }
 
-CrossSectionType UrQMD::GetCrossSection(particles::Code projectileCode,
-                                        corsika::particles::Code targetCode,
+CrossSectionType UrQMD::GetCrossSection(Code projectileCode, corsika::Code targetCode,
                                         HEPEnergyType labEnergy, int projectileA) const {
   // the following is a (incomplete!) translation of ptsigtot() into C++
-  if (projectileCode != particles::Code::Nucleus &&
+  if (projectileCode != Code::Nucleus &&
       !IsNucleus(targetCode)) { // both particles are "special"
-    auto const mProj = particles::GetMass(projectileCode);
-    auto const mTar = particles::GetMass(targetCode);
+    auto const mProj = GetMass(projectileCode);
+    auto const mTar = GetMass(targetCode);
     double sqrtS = sqrt(units::static_pow<2>(mProj) + units::static_pow<2>(mTar) +
                         2 * labEnergy * mTar) *
                    (1 / 1_GeV);
@@ -180,7 +179,7 @@ CrossSectionType UrQMD::GetCrossSection(particles::Code projectileCode,
     }
   } else {
     int const Ap = projectileA;
-    int const At = IsNucleus(targetCode) ? particles::GetNucleusA(targetCode) : 1;
+    int const At = IsNucleus(targetCode) ? GetNucleusA(targetCode) : 1;
 
     double const maxImpact = nucrad_(Ap) + nucrad_(At) + 2 * options_.CTParam[30 - 1];
     return 10_mb * M_PI * units::static_pow<2>(maxImpact);
@@ -191,12 +190,12 @@ CrossSectionType UrQMD::GetCrossSection(particles::Code projectileCode,
 template <typename TParticle> // need template here, as this is called both with
                               // SetupParticle as well as SetupProjectile
 CrossSectionType UrQMD::GetCrossSection(TParticle const& projectile,
-                                        corsika::particles::Code targetCode) const {
+                                        corsika::Code targetCode) const {
 
   auto const projectileCode = projectile.GetPID();
   auto const projectileEnergyLab = projectile.GetEnergy();
 
-  if (projectileCode == particles::Code::Nucleus) {
+  if (projectileCode == Code::Nucleus) {
     /*
      * unfortunately unavoidable at the moment until we have tools to get the actual
      * inealstic cross-section from UrQMD
@@ -207,7 +206,7 @@ CrossSectionType UrQMD::GetCrossSection(TParticle const& projectile,
   return GetTabulatedCrossSection(projectileCode, targetCode, projectileEnergyLab);
 }
 
-bool UrQMD::CanInteract(particles::Code code) const {
+bool UrQMD::CanInteract(Code code) const {
   // According to the manual, UrQMD can use all mesons, baryons and nucleons
   // which are modeled also as input particles. I think it is safer to accept
   // only the usual long-lived species as input.
@@ -216,11 +215,9 @@ bool UrQMD::CanInteract(particles::Code code) const {
   // but right now we don't have access to the inelastic (production) cross-section,
   // so we unfortunately have to forbid these interactions for the time being.
 
-  static particles::Code const validProjectileCodes[] = {
-      particles::Code::Proton,      particles::Code::AntiProton, particles::Code::Neutron,
-      particles::Code::AntiNeutron, particles::Code::PiPlus,     particles::Code::PiMinus,
-      particles::Code::KPlus,       particles::Code::KMinus,     particles::Code::K0Short,
-      particles::Code::K0Long};
+  static Code const validProjectileCodes[] = {
+      Code::Proton,  Code::AntiProton, Code::Neutron, Code::AntiNeutron, Code::PiPlus,
+      Code::PiMinus, Code::KPlus,      Code::KMinus,  Code::K0Short,     Code::K0Long};
 
   return std::find(std::cbegin(validProjectileCodes), std::cend(validProjectileCodes),
                    code) != std::cend(validProjectileCodes);
@@ -244,7 +241,7 @@ GrammageType UrQMD::GetInteractionLength(SetupParticle const& particle) const {
          weightedProdCrossSection;
 }
 
-corsika::process::EProcessReturn UrQMD::DoInteraction(SetupView& view) {
+corsika::EProcessReturn UrQMD::DoInteraction(SetupView& view) {
   using namespace units::si;
 
   auto const projectile = view.GetProjectile();
@@ -255,9 +252,6 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupView& view) {
   auto const& projectilePosition = projectile.GetPosition();
   auto const projectileTime = projectile.GetTime();
 
-  C8LOG_DEBUG("UrQMD::DoInteraction pid={} E={} GeV", projectileCode,
-              projectileEnergyLab / 1_GeV);
-
   // sample target particle
   auto const& mediumComposition =
       projectile.GetNode()->GetModelProperties().GetNuclearComposition();
@@ -274,8 +268,8 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupView& view) {
   });
 
   auto const targetCode = mediumComposition.SampleTarget(componentCrossSections, rng_);
-  auto const targetA = particles::GetNucleusA(targetCode);
-  auto const targetZ = particles::GetNucleusZ(targetCode);
+  auto const targetA = GetNucleusA(targetCode);
+  auto const targetZ = GetNucleusZ(targetCode);
 
   inputs_.nevents = 1;
   sys_.eos = 0; // could be configurable in principle
@@ -283,7 +277,7 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupView& view) {
   sys_.nsteps = 1;
 
   // initialization regarding projectile
-  if (particles::Code::Nucleus == projectileCode) {
+  if (Code::Nucleus == projectileCode) {
     // is this everything?
     inputs_.prspflg = 0;
 
@@ -302,9 +296,8 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupView& view) {
     rsys_.bdist = nucrad_(targetA) + nucrad_(1) + 2 * options_.CTParam[30 - 1];
     rsys_.ebeam = (projectileEnergyLab - projectile.GetMass()) * (1 / 1_GeV);
 
-    if (projectileCode == particles::Code::K0Long ||
-        projectileCode == particles::Code::K0Short) {
-      projectileCode = booleanDist_(rng_) ? particles::Code::K0 : particles::Code::K0Bar;
+    if (projectileCode == Code::K0Long || projectileCode == Code::K0Short) {
+      projectileCode = booleanDist_(rng_) ? Code::K0 : Code::K0Bar;
     }
 
     auto const [ityp, iso3] = ConvertToUrQMD(projectileCode);
@@ -314,7 +307,7 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupView& view) {
   }
 
   // initilazation regarding target
-  if (particles::IsNucleus(targetCode)) {
+  if (IsNucleus(targetCode)) {
     sys_.Zt = targetZ;
     sys_.At = targetA;
     inputs_.trspflg = 0; // nucleus as target
@@ -337,8 +330,8 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupView& view) {
 
   for (int i = 0; i < sys_.npart; ++i) {
     auto code = ConvertFromUrQMD(isys_.ityp[i], isys_.iso3[i]);
-    if (code == particles::Code::K0 || code == particles::Code::K0Bar) {
-      code = booleanDist_(rng_) ? particles::Code::K0Short : particles::Code::K0Long;
+    if (code == Code::K0 || code == Code::K0Bar) {
+      code = booleanDist_(rng_) ? Code::K0Short : Code::K0Long;
     }
 
     // "coor_.p0[i] * 1_GeV" is likely off-shell as UrQMD doesn't preserve masses well
@@ -347,17 +340,17 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupView& view) {
         geometry::QuantityVector<dimensionless_d>{coor_.px[i], coor_.py[i], coor_.pz[i]} *
             1_GeV);
 
-    auto const energy = sqrt(momentum.squaredNorm() + square(particles::GetMass(code)));
+    auto const energy = sqrt(momentum.squaredNorm() + square(GetMass(code)));
 
     momentum.rebase(originalCS); // transform back into standard lab frame
-    C8LOG_DEBUG(" Secondary {} code {} p={} GeV", i, code,
-                momentum.GetComponents() / 1_GeV);
+    std::cout << i << " " << code << " " << momentum.GetComponents() << std::endl;
 
     view.AddSecondary(
-        std::make_tuple(code, energy, momentum, projectilePosition, projectileTime));
+        std::tuple<Code, HEPEnergyType, stack::MomentumVector, geometry::Point, TimeType>{
+            code, energy, momentum, projectilePosition, projectileTime});
   }
 
-  C8LOG_DEBUG("UrQMD generated {} secondaries!", sys_.npart);
+  std::cout << "UrQMD generated " << sys_.npart << " secondaries!" << std::endl;
 
   return process::EProcessReturn::eOk;
 }
@@ -365,7 +358,7 @@ corsika::process::EProcessReturn UrQMD::DoInteraction(SetupView& view) {
 /**
  * the random number generator function of UrQMD
  */
-double corsika::process::UrQMD::ranf_(int&) {
+double corsika::UrQMD::ranf_(int&) {
   static corsika::random::RNG& rng =
       corsika::random::RNGManager::GetInstance().GetRandomStream("urqmd");
   static std::uniform_real_distribution<double> dist;
@@ -373,18 +366,17 @@ double corsika::process::UrQMD::ranf_(int&) {
   return dist(rng);
 }
 
-corsika::particles::Code corsika::process::UrQMD::ConvertFromUrQMD(int vItyp, int vIso3) {
+corsika::Code corsika::UrQMD::ConvertFromUrQMD(int vItyp, int vIso3) {
   int const pdgInt =
       pdgid_(vItyp, vIso3); // use the conversion function provided by UrQMD
   if (pdgInt == 0) {        // pdgid_ returns 0 on error
     throw std::runtime_error("UrQMD pdgid() returned 0");
   }
-  auto const pdg = static_cast<particles::PDGCode>(pdgInt);
-  return particles::ConvertFromPDG(pdg);
+  auto const pdg = static_cast<PDGCode>(pdgInt);
+  return ConvertFromPDG(pdg);
 }
 
-std::pair<int, int> corsika::process::UrQMD::ConvertToUrQMD(
-    corsika::particles::Code code) {
+std::pair<int, int> corsika::UrQMD::ConvertToUrQMD(corsika::Code code) {
   static const std::map<int, std::pair<int, int>> mapPDGToUrQMD{
       // data mostly from github.com/afedynitch/ParticleDataTool
       {22, {100, 0}},      // gamma
diff --git a/Processes/UrQMD/UrQMD.h b/dependencies/UrQMD/UrQMD.h
similarity index 83%
rename from Processes/UrQMD/UrQMD.h
rename to dependencies/UrQMD/UrQMD.h
index 937b6d702..e6535ca54 100644
--- a/Processes/UrQMD/UrQMD.h
+++ b/dependencies/UrQMD/UrQMD.h
@@ -8,12 +8,12 @@
 
 #pragma once
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/process/InteractionProcess.h>
-#include <corsika/random/RNGManager.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/coreParticleProperties.h>
 #include <corsika/utl/CorsikaData.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/sequence/InteractionProcess.hpp>
+#include <corsika/setup/SetupStack.hpp>
 
 #include <boost/multi_array.hpp>
 
@@ -22,8 +22,8 @@
 #include <string>
 #include <utility>
 
-namespace corsika::process::UrQMD {
-  class UrQMD : public corsika::process::InteractionProcess<UrQMD> {
+namespace corsika::UrQMD {
+  class UrQMD : public corsika::InteractionProcess<UrQMD> {
   public:
     UrQMD(std::string const& path = utl::CorsikaData("UrQMD/UrQMD-1.3.1-xs.dat"));
     corsika::units::si::GrammageType GetInteractionLength(
@@ -31,18 +31,17 @@ namespace corsika::process::UrQMD {
 
     template <typename TParticle>
     corsika::units::si::CrossSectionType GetCrossSection(TParticle const&,
-                                                         corsika::particles::Code) const;
+                                                         corsika::Code) const;
 
     corsika::units::si::CrossSectionType GetCrossSection(
-        particles::Code, particles::Code, corsika::units::si::HEPEnergyType,
-        int Ap = 1) const;
+        Code, Code, corsika::units::si::HEPEnergyType, int Ap = 1) const;
 
     corsika::units::si::CrossSectionType GetTabulatedCrossSection(
-        particles::Code, particles::Code, corsika::units::si::HEPEnergyType) const;
+        Code, Code, corsika::units::si::HEPEnergyType) const;
 
-    corsika::process::EProcessReturn DoInteraction(corsika::setup::StackView&);
+    corsika::EProcessReturn DoInteraction(corsika::setup::StackView&);
 
-    bool CanInteract(particles::Code) const;
+    bool CanInteract(Code) const;
 
   private:
     void readXSFile(std::string const&);
@@ -146,7 +145,7 @@ namespace corsika::process::UrQMD {
    *
    * In the current implementation a detour via the PDG code is made.
    */
-  std::pair<int, int> ConvertToUrQMD(particles::Code);
-  particles::Code ConvertFromUrQMD(int vItyp, int vIso3);
+  std::pair<int, int> ConvertToUrQMD(Code);
+  Code ConvertFromUrQMD(int vItyp, int vIso3);
 
-} // namespace corsika::process::UrQMD
+} // namespace corsika::UrQMD
diff --git a/Processes/UrQMD/addpart.f b/dependencies/UrQMD/addpart.f
similarity index 100%
rename from Processes/UrQMD/addpart.f
rename to dependencies/UrQMD/addpart.f
diff --git a/Processes/UrQMD/angdis.f b/dependencies/UrQMD/angdis.f
similarity index 100%
rename from Processes/UrQMD/angdis.f
rename to dependencies/UrQMD/angdis.f
diff --git a/Processes/UrQMD/anndec.f b/dependencies/UrQMD/anndec.f
similarity index 100%
rename from Processes/UrQMD/anndec.f
rename to dependencies/UrQMD/anndec.f
diff --git a/Processes/UrQMD/blockres.f b/dependencies/UrQMD/blockres.f
similarity index 100%
rename from Processes/UrQMD/blockres.f
rename to dependencies/UrQMD/blockres.f
diff --git a/Processes/UrQMD/boxinc.f b/dependencies/UrQMD/boxinc.f
similarity index 100%
rename from Processes/UrQMD/boxinc.f
rename to dependencies/UrQMD/boxinc.f
diff --git a/Processes/UrQMD/boxprg.f b/dependencies/UrQMD/boxprg.f
similarity index 100%
rename from Processes/UrQMD/boxprg.f
rename to dependencies/UrQMD/boxprg.f
diff --git a/Processes/UrQMD/cascinit.f b/dependencies/UrQMD/cascinit.f
similarity index 100%
rename from Processes/UrQMD/cascinit.f
rename to dependencies/UrQMD/cascinit.f
diff --git a/Processes/UrQMD/colltab.f b/dependencies/UrQMD/colltab.f
similarity index 100%
rename from Processes/UrQMD/colltab.f
rename to dependencies/UrQMD/colltab.f
diff --git a/Processes/UrQMD/coload.f b/dependencies/UrQMD/coload.f
similarity index 100%
rename from Processes/UrQMD/coload.f
rename to dependencies/UrQMD/coload.f
diff --git a/Processes/UrQMD/comnorm.f b/dependencies/UrQMD/comnorm.f
similarity index 100%
rename from Processes/UrQMD/comnorm.f
rename to dependencies/UrQMD/comnorm.f
diff --git a/Processes/UrQMD/comres.f b/dependencies/UrQMD/comres.f
similarity index 100%
rename from Processes/UrQMD/comres.f
rename to dependencies/UrQMD/comres.f
diff --git a/Processes/UrQMD/coms.f b/dependencies/UrQMD/coms.f
similarity index 100%
rename from Processes/UrQMD/coms.f
rename to dependencies/UrQMD/coms.f
diff --git a/Processes/UrQMD/comstr.f b/dependencies/UrQMD/comstr.f
similarity index 100%
rename from Processes/UrQMD/comstr.f
rename to dependencies/UrQMD/comstr.f
diff --git a/Processes/UrQMD/comwid.f b/dependencies/UrQMD/comwid.f
similarity index 100%
rename from Processes/UrQMD/comwid.f
rename to dependencies/UrQMD/comwid.f
diff --git a/Processes/UrQMD/dectim.f b/dependencies/UrQMD/dectim.f
similarity index 100%
rename from Processes/UrQMD/dectim.f
rename to dependencies/UrQMD/dectim.f
diff --git a/Processes/UrQMD/delpart.f b/dependencies/UrQMD/delpart.f
similarity index 100%
rename from Processes/UrQMD/delpart.f
rename to dependencies/UrQMD/delpart.f
diff --git a/Processes/UrQMD/detbal.f b/dependencies/UrQMD/detbal.f
similarity index 100%
rename from Processes/UrQMD/detbal.f
rename to dependencies/UrQMD/detbal.f
diff --git a/Processes/UrQMD/dwidth.f b/dependencies/UrQMD/dwidth.f
similarity index 100%
rename from Processes/UrQMD/dwidth.f
rename to dependencies/UrQMD/dwidth.f
diff --git a/Processes/UrQMD/error.f b/dependencies/UrQMD/error.f
similarity index 100%
rename from Processes/UrQMD/error.f
rename to dependencies/UrQMD/error.f
diff --git a/Processes/UrQMD/freezeout.f b/dependencies/UrQMD/freezeout.f
similarity index 100%
rename from Processes/UrQMD/freezeout.f
rename to dependencies/UrQMD/freezeout.f
diff --git a/Processes/UrQMD/getmass.f b/dependencies/UrQMD/getmass.f
similarity index 100%
rename from Processes/UrQMD/getmass.f
rename to dependencies/UrQMD/getmass.f
diff --git a/Processes/UrQMD/getspin.f b/dependencies/UrQMD/getspin.f
similarity index 100%
rename from Processes/UrQMD/getspin.f
rename to dependencies/UrQMD/getspin.f
diff --git a/Processes/UrQMD/init.f b/dependencies/UrQMD/init.f
similarity index 100%
rename from Processes/UrQMD/init.f
rename to dependencies/UrQMD/init.f
diff --git a/Processes/UrQMD/inputs.f b/dependencies/UrQMD/inputs.f
similarity index 100%
rename from Processes/UrQMD/inputs.f
rename to dependencies/UrQMD/inputs.f
diff --git a/Processes/UrQMD/iso.f b/dependencies/UrQMD/iso.f
similarity index 100%
rename from Processes/UrQMD/iso.f
rename to dependencies/UrQMD/iso.f
diff --git a/Processes/UrQMD/ityp2pdg.f b/dependencies/UrQMD/ityp2pdg.f
similarity index 100%
rename from Processes/UrQMD/ityp2pdg.f
rename to dependencies/UrQMD/ityp2pdg.f
diff --git a/Processes/UrQMD/jdecay2.f b/dependencies/UrQMD/jdecay2.f
similarity index 100%
rename from Processes/UrQMD/jdecay2.f
rename to dependencies/UrQMD/jdecay2.f
diff --git a/Processes/UrQMD/make22.f b/dependencies/UrQMD/make22.f
similarity index 100%
rename from Processes/UrQMD/make22.f
rename to dependencies/UrQMD/make22.f
diff --git a/Processes/UrQMD/newpart.f b/dependencies/UrQMD/newpart.f
similarity index 100%
rename from Processes/UrQMD/newpart.f
rename to dependencies/UrQMD/newpart.f
diff --git a/Processes/UrQMD/numrec.f b/dependencies/UrQMD/numrec.f
similarity index 100%
rename from Processes/UrQMD/numrec.f
rename to dependencies/UrQMD/numrec.f
diff --git a/Processes/UrQMD/options.f b/dependencies/UrQMD/options.f
similarity index 100%
rename from Processes/UrQMD/options.f
rename to dependencies/UrQMD/options.f
diff --git a/Processes/UrQMD/outcom.f b/dependencies/UrQMD/outcom.f
similarity index 100%
rename from Processes/UrQMD/outcom.f
rename to dependencies/UrQMD/outcom.f
diff --git a/Processes/UrQMD/output.f b/dependencies/UrQMD/output.f
similarity index 100%
rename from Processes/UrQMD/output.f
rename to dependencies/UrQMD/output.f
diff --git a/Processes/UrQMD/paulibl.f b/dependencies/UrQMD/paulibl.f
similarity index 100%
rename from Processes/UrQMD/paulibl.f
rename to dependencies/UrQMD/paulibl.f
diff --git a/Processes/UrQMD/proppot.f b/dependencies/UrQMD/proppot.f
similarity index 100%
rename from Processes/UrQMD/proppot.f
rename to dependencies/UrQMD/proppot.f
diff --git a/Processes/UrQMD/saveinfo.f b/dependencies/UrQMD/saveinfo.f
similarity index 100%
rename from Processes/UrQMD/saveinfo.f
rename to dependencies/UrQMD/saveinfo.f
diff --git a/Processes/UrQMD/scatter.f b/dependencies/UrQMD/scatter.f
similarity index 100%
rename from Processes/UrQMD/scatter.f
rename to dependencies/UrQMD/scatter.f
diff --git a/Processes/UrQMD/siglookup.f b/dependencies/UrQMD/siglookup.f
similarity index 100%
rename from Processes/UrQMD/siglookup.f
rename to dependencies/UrQMD/siglookup.f
diff --git a/Processes/UrQMD/string.f b/dependencies/UrQMD/string.f
similarity index 100%
rename from Processes/UrQMD/string.f
rename to dependencies/UrQMD/string.f
diff --git a/Processes/UrQMD/tabinit.f b/dependencies/UrQMD/tabinit.f
similarity index 100%
rename from Processes/UrQMD/tabinit.f
rename to dependencies/UrQMD/tabinit.f
diff --git a/dependencies/UrQMD/testUrQMD.cc b/dependencies/UrQMD/testUrQMD.cc
new file mode 100644
index 000000000..2fcb9b083
--- /dev/null
+++ b/dependencies/UrQMD/testUrQMD.cc
@@ -0,0 +1,222 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/process/urqmd/UrQMD.h>
+#include <corsika/framework/random/RNGManager.hpp>
+
+#include <corsika/framework/geometry/Point.h>
+#include <corsika/framework/geometry/RootCoordinateSystem.h>
+#include <corsika/framework/geometry/Vector.h>
+
+#include <corsika/units/PhysicalConstants.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <corsika/utl/CorsikaFenv.h>
+
+#include <corsika/framework/coreParticleProperties.h>
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
+
+#include <corsika/environment/Environment.h>
+#include <corsika/environment/HomogeneousMedium.h>
+#include <corsika/environment/NuclearComposition.h>
+
+#include <tuple>
+#include <utility>
+
+#include <catch2/catch.hpp>
+
+using namespace corsika;
+using namespace corsika::UrQMD;
+using namespace corsika::units::si;
+
+template <typename TStackView>
+auto sumCharge(TStackView const& view) {
+  int totalCharge = 0;
+
+  for (auto const& p : view) { totalCharge += GetChargeNumber(p.GetPID()); }
+
+  return totalCharge;
+}
+
+template <typename TStackView>
+auto sumMomentum(TStackView const& view, geometry::CoordinateSystem const& vCS) {
+  geometry::Vector<hepenergy_d> sum{vCS, 0_eV, 0_eV, 0_eV};
+
+  for (auto const& p : view) { sum += p.GetMomentum(); }
+
+  return sum;
+}
+
+auto setupEnvironment(Code vTargetCode) {
+  // setup environment, geometry
+  auto env = std::make_unique<environment::Environment<environment::IMediumModel>>();
+  auto& universe = *(env->GetUniverse());
+  const geometry::CoordinateSystem& cs = env->GetCoordinateSystem();
+
+  auto theMedium =
+      environment::Environment<environment::IMediumModel>::CreateNode<geometry::Sphere>(
+          geometry::Point{cs, 0_m, 0_m, 0_m},
+          1_km * std::numeric_limits<double>::infinity());
+
+  using MyHomogeneousModel = environment::HomogeneousMedium<environment::IMediumModel>;
+  theMedium->SetModelProperties<MyHomogeneousModel>(
+      1_kg / (1_m * 1_m * 1_m),
+      environment::NuclearComposition(std::vector<Code>{vTargetCode},
+                                      std::vector<float>{1.}));
+
+  auto const* nodePtr = theMedium.get();
+  universe.AddChild(std::move(theMedium));
+
+  return std::make_tuple(std::move(env), &cs, nodePtr);
+}
+
+template <typename TNodeType>
+auto setupStack(int vA, int vZ, HEPEnergyType vMomentum, TNodeType* vNodePtr,
+                geometry::CoordinateSystem const& cs) {
+  auto stack = std::make_unique<setup::Stack>();
+  auto constexpr mN = corsika::units::constants::nucleonMass;
+
+  geometry::Point const origin(cs, {0_m, 0_m, 0_m});
+  corsika::stack::MomentumVector const pLab(cs, {vMomentum, 0_GeV, 0_GeV});
+
+  HEPEnergyType const E0 = sqrt(units::static_pow<2>(mN * vA) + pLab.squaredNorm());
+  auto particle = stack->AddParticle(
+      std::tuple<Code, units::si::HEPEnergyType, corsika::stack::MomentumVector,
+                 geometry::Point, units::si::TimeType, unsigned short, unsigned short>{
+          Code::Nucleus, E0, pLab, origin, 0_ns, vA, vZ});
+
+  particle.SetNode(vNodePtr);
+  return std::make_tuple(
+      std::move(stack), std::make_unique<decltype(setup::StackView{particle})>(particle));
+}
+
+template <typename TNodeType>
+auto setupStack(Code vProjectileType, HEPEnergyType vMomentum, TNodeType* vNodePtr,
+                geometry::CoordinateSystem const& cs) {
+  auto stack = std::make_unique<setup::Stack>();
+
+  geometry::Point const origin(cs, {0_m, 0_m, 0_m});
+  corsika::stack::MomentumVector const pLab(cs, {vMomentum, 0_GeV, 0_GeV});
+
+  HEPEnergyType const E0 =
+      sqrt(units::static_pow<2>(GetMass(vProjectileType)) + pLab.squaredNorm());
+  auto particle = stack->AddParticle(
+      std::tuple<Code, units::si::HEPEnergyType, corsika::stack::MomentumVector,
+                 geometry::Point, units::si::TimeType>{vProjectileType, E0, pLab, origin,
+                                                       0_ns});
+
+  particle.SetNode(vNodePtr);
+  return std::make_tuple(
+      std::move(stack), std::make_unique<decltype(setup::StackView{particle})>(particle));
+}
+
+TEST_CASE("UrQMD") {
+  SECTION("conversion") {
+    REQUIRE_THROWS(process::UrQMD::ConvertFromUrQMD(106, 0));
+    REQUIRE(process::UrQMD::ConvertFromUrQMD(101, 0) == Code::Pi0);
+    REQUIRE(process::UrQMD::ConvertToUrQMD(Code::PiPlus) ==
+            std::make_pair<int, int>(101, 2));
+  }
+
+  feenableexcept(FE_INVALID);
+  corsika::random::RNGManager::GetInstance().RegisterRandomStream("urqmd");
+  UrQMD urqmd;
+
+  SECTION("interaction length") {
+    auto [env, csPtr, nodePtr] = setupEnvironment(Code::Nitrogen);
+    auto const& cs = *csPtr;
+    [[maybe_unused]] auto const& env_dummy = env;
+    [[maybe_unused]] auto const& node_dummy = nodePtr;
+
+    Code validProjectileCodes[] = {Code::PiPlus,  Code::PiMinus, Code::Proton,
+                                   Code::Neutron, Code::KPlus,   Code::KMinus,
+                                   Code::K0,      Code::K0Bar,   Code::K0Long};
+
+    for (auto code : validProjectileCodes) {
+      auto [stack, view] = setupStack(code, 100_GeV, nodePtr, cs);
+      REQUIRE(stack->getEntries() == 1);
+      REQUIRE(view->getEntries() == 0);
+
+      // simple check whether the cross-section is non-vanishing
+      // only nuclei with available tabluated data so far
+      REQUIRE(urqmd.GetInteractionLength(stack->GetNextParticle()) > 1_g / square(1_cm));
+    }
+  }
+
+  SECTION("nucleus projectile") {
+    auto [env, csPtr, nodePtr] = setupEnvironment(Code::Oxygen);
+    [[maybe_unused]] auto const& env_dummy = env;      // against warnings
+    [[maybe_unused]] auto const& node_dummy = nodePtr; // against warnings
+
+    unsigned short constexpr A = 14, Z = 7;
+    auto [stackPtr, secViewPtr] = setupStack(A, Z, 400_GeV, nodePtr, *csPtr);
+    REQUIRE(stackPtr->getEntries() == 1);
+    REQUIRE(secViewPtr->getEntries() == 0);
+
+    // must be assigned to variable, cannot be used as rvalue?!
+    auto projectile = secViewPtr->GetProjectile();
+    auto const projectileMomentum = projectile.GetMomentum();
+    [[maybe_unused]] process::EProcessReturn const ret = urqmd.DoInteraction(*secViewPtr);
+
+    REQUIRE(sumCharge(*secViewPtr) == Z + GetChargeNumber(Code::Oxygen));
+
+    auto const secMomSum =
+        sumMomentum(*secViewPtr, projectileMomentum.GetCoordinateSystem());
+    REQUIRE((secMomSum - projectileMomentum).norm() / projectileMomentum.norm() ==
+            Approx(0).margin(1e-2));
+  }
+
+  SECTION("\"special\" projectile") {
+    auto [env, csPtr, nodePtr] = setupEnvironment(Code::Oxygen);
+    [[maybe_unused]] auto const& env_dummy = env;      // against warnings
+    [[maybe_unused]] auto const& node_dummy = nodePtr; // against warnings
+
+    auto [stackPtr, secViewPtr] = setupStack(Code::PiPlus, 400_GeV, nodePtr, *csPtr);
+    REQUIRE(stackPtr->getEntries() == 1);
+    REQUIRE(secViewPtr->getEntries() == 0);
+
+    // must be assigned to variable, cannot be used as rvalue?!
+    auto projectile = secViewPtr->GetProjectile();
+    auto const projectileMomentum = projectile.GetMomentum();
+
+    [[maybe_unused]] process::EProcessReturn const ret = urqmd.DoInteraction(*secViewPtr);
+
+    REQUIRE(sumCharge(*secViewPtr) ==
+            GetChargeNumber(Code::PiPlus) + GetChargeNumber(Code::Oxygen));
+
+    auto const secMomSum =
+        sumMomentum(*secViewPtr, projectileMomentum.GetCoordinateSystem());
+    REQUIRE((secMomSum - projectileMomentum).norm() / projectileMomentum.norm() ==
+            Approx(0).margin(1e-2));
+  }
+
+  SECTION("K0Long projectile") {
+    auto [env, csPtr, nodePtr] = setupEnvironment(Code::Oxygen);
+    [[maybe_unused]] auto const& env_dummy = env;      // against warnings
+    [[maybe_unused]] auto const& node_dummy = nodePtr; // against warnings
+
+    auto [stackPtr, secViewPtr] = setupStack(Code::K0Long, 400_GeV, nodePtr, *csPtr);
+    REQUIRE(stackPtr->getEntries() == 1);
+    REQUIRE(secViewPtr->getEntries() == 0);
+
+    // must be assigned to variable, cannot be used as rvalue?!
+    auto projectile = secViewPtr->GetProjectile();
+    auto const projectileMomentum = projectile.GetMomentum();
+
+    [[maybe_unused]] process::EProcessReturn const ret = urqmd.DoInteraction(*secViewPtr);
+
+    REQUIRE(sumCharge(*secViewPtr) ==
+            GetChargeNumber(Code::K0Long) + GetChargeNumber(Code::Oxygen));
+
+    auto const secMomSum =
+        sumMomentum(*secViewPtr, projectileMomentum.GetCoordinateSystem());
+    REQUIRE((secMomSum - projectileMomentum).norm() / projectileMomentum.norm() ==
+            Approx(0).margin(1e-2));
+  }
+}
diff --git a/Processes/UrQMD/urqmd.f b/dependencies/UrQMD/urqmd.f
similarity index 100%
rename from Processes/UrQMD/urqmd.f
rename to dependencies/UrQMD/urqmd.f
diff --git a/dependencies/UrQMD/urqmdInterface.F b/dependencies/UrQMD/urqmdInterface.F
new file mode 100644
index 000000000..ec2bd092a
--- /dev/null
+++ b/dependencies/UrQMD/urqmdInterface.F
@@ -0,0 +1,447 @@
+c 18.11.2011 Link routines between UrQMD 1.3 and CONEX.
+c author T. Pierog based on CORSIKA and EPOS link to UrQMD
+
+c adapted by M. Reininghaus for linking UrQMD to CORSIKA 8 (Apr 2019)
+
+#ifdef __STD__
+#define __GHEISHA__
+#define __QGSJET__
+#define __ANALYSIS__
+#endif
+
+
+c-----------------------------------------------------------------------
+      subroutine IniUrQMDC8
+c-----------------------------------------------------------------------
+c Primary initialization for UrQMD 1.31
+c-----------------------------------------------------------------------
+      implicit none
+c CONEX includes
+c~ #include "conex.h"
+c~ #include "conex.incnex"
+#ifndef __CXCORSIKA__
+c~       character*500 furqdat
+c~       integer ifurqdat, nfurqdat
+c~       common/urqfname/  furqdat, ifurqdat, nfurqdat
+
+      include 'boxinc.f'
+      include 'inputs.f'
+      include 'options.f'
+      
+c commons from coms.f
+      integer Ap, At, Zp, Zt, npart, nbar, nmes, ctag
+      integer nsteps,ranseed,event,eos,dectag,uid_cnt
+      integer NHardRes,NSoftRes,NDecRes,NElColl,NBlColl
+      common /sys/ npart, nbar, nmes, ctag,nsteps,uid_cnt,
+     +             ranseed,event,Ap,At,Zp,Zt,eos,dectag,
+     +             NHardRes,NSoftRes,NDecRes,NElColl,NBlColl
+
+c local
+      INTEGER          i,io,ia,ie,id
+      CHARACTER        CTPStrg(numctp)*60, CTOStrng(numcto)*60
+      integer mxie,mxid,mxia
+      parameter (mxie=41,mxid=10,mxia=3)
+      character adum
+      double precision sig_u1,ekdummy
+      integer iamaxu,idmaxu,iemaxu
+c~       common /cxs_u1/ sig_u1(mxie,mxid,mxia),iamaxu,idmaxu,iemaxu
+c~       double precision xs(3),bim(3)
+c~ c M.R.: bim added to cxs_u2
+c~       common /cxs_u2/ xs,bim
+      integer iudebug
+c~       data bim/6.d0,6.d0,7.d0/
+      integer init
+      data init/0/
+      SAVE
+
+      if(init.ge.1)return
+      init=init+1
+#ifdef __CXDEBUG__
+      call utisx1('iniurqmd  ',4)
+      write(*,'(a)')'initialize URQMD ...'
+#endif
+
+C-----------------------------------------------------------------------
+
+c~       IF ( isx.ge.2 ) THEN
+c~         IUDEBUG = isx-1
+c~       ELSE
+c~         IUDEBUG = 0
+c~       ENDIF
+
+      WRITE (*,*)
+     $   '############################################################'
+      WRITE (*,*)
+     $   '##                                                        ##'
+      WRITE (*,*)
+     $   '##     UrQMD 1.3.1  University of Frankfurt               ##'
+      WRITE (*,*)
+     $   '##                  urqmd@th.physik.uni-frankfurt.de      ##'
+      WRITE (*,*)
+     $   '##                                                        ##'
+      WRITE (*,*)
+     $   '############################################################'
+      WRITE (*,*)
+     $   '##                                                        ##'
+      WRITE (*,*)
+     $   '##     please cite when using this model:                 ##'
+      WRITE (*,*)
+     $   '##     S.A.Bass et al. Prog.Part.Nucl.Phys. 41 (1998) 225 ##'
+      WRITE (*,*)
+     $   '##     M.Bleicher et al. J.Phys. G25  (1999) 1859         ##'
+      WRITE (*,*)
+     $   '##                                                        ##'
+      WRITE (*,*)
+     $   '############################################################'
+
+C  SET THE 'LARGE' CROSS-SECTIONS FOR ALL 3 TARGET ELEMENTS
+c~       DO  I = 1, 3
+c~         XS(I) = 10.D0 * PI * BIM(I)**2
+c~       ENDDO
+
+C  SET NMAX TO DEFAULT VALUE
+      call set0
+      call params
+
+C  THIS IS THE SUBSTITUE FOR THE URQMD INPUT ROUTINE
+C  INITIALIZE COUNTERS
+      boxflag = 0
+      mbflag  = 0
+      edens   = 0.d0
+      para    = 0
+      solid   = 0
+      mbox    = 0
+      io      = 0
+
+C  THE FOLLOWING FLAGS CHECK, WHETHER ALL NECESSARY INPUT IS GIVEN
+C  PROJECTILE
+      prspflg = 0
+C  TARGET
+      trspflg = 0
+C
+      srtflag = 0
+      firstev = 0
+C  EXCITATION FUNCTION
+      nsrt    = 1
+      npb     = 1
+      efuncflag = 0
+C  DEFAULT NUMBER OF EVENTS
+      nevents = 1
+C  DEFAULT NUMBER OF TIMESTEPS
+      nsteps  = 1000
+
+C  SKIP CONDITIONS ON UNIT 13, 14, 15, 16 & 18
+C  SUPPRESS ALL OUTPUT
+      bf13 = .true.
+      bf14 = .true.
+      bf15 = .true.
+      bf16 = .true.
+      bf18 = .true.
+      bf19 = .true.
+      bf20 = .true.
+C  SET DEBUG OUTPUT DEPENDING ON CHOSEN DEBUG LEVEL
+C  SET THE OUTPUT OF UNITS 13, 14, 15 TO THE DEBUG OUTPUT UNIT
+c~       IF     ( IUDEBUG .EQ. 1 ) THEN
+c~         bf13 = .true.
+c~         bf14 = .false.
+c~         call uounit(14,IFCK)
+c~         bf15 = .true.
+c~       ELSEIF ( IUDEBUG .EQ. 2 ) THEN
+c~         bf13 = .false.
+c~         call uounit(13,IFCK)
+c~         bf14 = .true.
+c~         bf15 = .true.
+c~       ELSEIF ( IUDEBUG .GT. 2 ) THEN
+c~         bf13 = .true.
+c~         bf14 = .true.
+c~         bf15 = .false.
+c~         call uounit(15,IFCK)
+c~       ENDIF
+      do  i = 1, numcto
+         CTOdc(i) = '  '
+      enddo
+      do  i = 1, numctp
+         CTPdc(i) = '  '
+      enddo
+      do  i = 1, maxstables
+         stabvec(i) = 0
+      enddo
+      nstable = 0
+
+C  DEFAULT SETTINGS FOR CTParam AND CTOption
+C  DEFAULT SETTINGS FOR CTParam
+      CTParam(1)=1.d0
+      CTPStrg(1)='scaling factor for decay-width'
+      CTParam(2)=0.52d0
+      CTPStrg(2)='used for minimal stringmass & el/inel cut in makestr'
+      CTParam(3)=2.d0
+      CTPStrg(3)='velocity exponent for modified AQM'
+      CTParam(4)=0.3d0
+      CTPStrg(4)='transverse pion mass, used in make22 & strexct'
+      CTParam(5)=0.d0
+      CTPStrg(5)='probabil. for quark rearrangement in cluster'
+      CTParam(6)=0.37d0
+      CTPstrg(6)='strangeness probability'
+      CTParam(7)=0.d0
+      CTPStrg(7)='charm probability (not yet implemented in UQMD)'
+      CTParam(8)=0.093d0
+      CTPStrg(8)='probability to create a diquark'
+      CTParam(9)=0.35d0
+      CTPStrg(9)='kinetic energy cut off for last string break'
+      CTParam(10)=0.25d0
+      CTPStrg(10)='min. kinetic energy for hadron in string'
+      CTParam(11)=0.d0
+      CTPStrg(11)='fraction of non groundstate resonances'
+      CTParam(12)=.5d0
+      CTPStrg(12)='probability for rho 770 in String'
+      CTParam(13)=.27d0
+      CTPStrg(13)='probability for rho 1450 (rest->rho1700)'
+      CTParam(14)=.49d0
+      CTPStrg(14)='probability for omega 782'
+      CTParam(15)=.27d0
+      CTPStrg(15)='probability for omega 1420(rest->om1600)'
+      CTParam(16)=1.0d0
+      CTPStrg(16)='mass cut betw. rho770 and rho 1450'
+      CTParam(17)=1.6d0
+      CTPSTRG(17)='mass cut betw. rho1450 and rho1700'
+      CTParam(18)=.85d0
+      CTPStrg(18)='mass cut betw. om 782 and om1420'
+      CTParam(19)=1.55d0
+      CTPStrg(19)='mass cut betw. om1420 and om1600'
+      CTParam(20)=0.0d0
+      CTPStrg(20)=' distance for second projectile'
+      CTParam(21)=0.0d0
+      CTPStrg(21)=' deformation parameter'
+
+      CTParam(25)=.9d0
+      CTPStrg(25)=' probability for diquark not to break'
+      CTParam(26)=50.d0
+      CTPStrg(26)=' maximum trials to get string masses'
+      CTParam(27)=1.d0
+      CTPStrg(27)=' scaling factor for xmin in string excitation'
+      CTParam(28)=1.d0
+      CTPStrg(28)=' scaling factor for transverse fermi motion'
+      CTParam(29)=0.4d0
+      CTPStrg(29)=' single strange di-quark suppression factor '
+      CTParam(30)=1.5d0
+      CTPStrg(30)=' radius offset for initialization  '
+      CTParam(31)=1.6d0
+      CTPStrg(31)=' sigma of gaussian for tranverse momentum tranfer '
+      CTParam(32)=0.d0
+      CTPStrg(32)=' alpha-1 for valence quark distribution  '
+      CTParam(33)=2.5d0
+      CTPStrg(33)=' betav for valence quark distribution  (DPM)'
+      CTParam(34)=0.1d0
+      CTPStrg(34)=' minimal x multiplied with ecm  '
+      CTParam(35)=3.0d0
+      CTPStrg(35)=' offset for cut for the FSM '
+      CTParam(36)=0.275d0
+      CTPStrg(36)=' fragmentation function parameter a  '
+      CTParam(37)=0.42d0
+      CTPStrg(37)=' fragmentation function parameter b  '
+      CTParam(38)=1.08d0
+      CTPStrg(38)=' diquark pt scaling factor '
+      CTParam(39)=0.8d0
+      CTPStrg(39)=' strange quark pt scaling factor '
+      CTParam(40)=0.5d0
+      CTPStrg(40)=' betas-1 for valence quark distribution (LEM)'
+      CTParam(41)=0.d0
+      CTPStrg(41)=' distance of initialization'
+      CTParam(42)=0.55d0
+      CTPStrg(42)=' width of gaussian -> pt in string-fragmentation '
+      CTParam(43)=5.d0
+      CTPStrg(43)=' maximum kinetic energy in mesonic clustr '
+      CTParam(44)=0.8d0
+      CTPStrg(44)=' prob. of double vs. single excitation for AQM inel.'
+      CTParam(45)=0.5d0
+      CTPStrg(45)=' offset for minimal mass generation of strings'
+      CTParam(46)=800000.d0
+      CTPStrg(46)=' maximal number of rejections for initialization'
+      CTParam(47)=1.0d0
+      CTPStrg(47)=' field feynman fragmentation funct. param. a'
+      CTParam(48)=2.0d0
+      CTPStrg(48)=' field feynman fragmentation funct. param. b'
+
+      CTParam(50)=1.d0
+      CTPStrg(50)=' enhancement factor for 0- mesons'
+      CTParam(51)=1.d0
+      CTPStrg(51)=' enhancement factor for 1- mesons'
+      CTParam(52)=1.d0
+      CTPStrg(52)=' enhancement factor for 0+ mesons'
+      CTParam(53)=1.d0
+      CTPStrg(53)=' enhancement factor for 1+ mesons'
+      CTParam(54)=1.d0
+      CTPStrg(54)=' enhancement factor for 2+ mesons'
+      CTParam(55)=1.d0
+      CTPStrg(55)=' enhancement factor for 1+-mesons'
+      CTParam(56)=1.d0
+      CTPStrg(56)=' enhancement factor for 1-*mesons'
+      CTParam(57)=1.d0
+      CTPStrg(57)=' enhancement factor for 1-*mesons'
+      CTParam(58)=1.d0
+      CTPStrg(58)=' scaling factor for DP time-delay'
+
+C  DEFAULT SETTINGS FOR CTOption
+      CTOption(1)=1                  ! hjd1
+      CTOStrng(1)=' resonance widths are mass dependent '
+      CTOption(2)=0
+      CTOStrng(2)=' conservation of scattering plane'
+      CTOption(3)=0
+      CTOStrng(3)=' use modified detailed balance'
+      CTOption(4)=0
+      CTOStrng(4)=' no initial conf. output '
+      CTOption(5)=0
+      CTOStrng(5)=' fixed random impact parameter'
+      CTOption(6)=0
+      CTOStrng(6)=' no first collisions inside proj/target'
+      CTOption(7)=0
+      CTOStrng(7)=' elastic cross-section enabled (<>0:total=inelast)'
+      CTOption(8)=0
+      CTOStrng(8)=' extrapolate branching ratios '
+      CTOption(9)=0
+      CTOStrng(9)=' use tabulated pp cross-sections '
+      CTOption(10)=0
+      CTOStrng(10)=' enable Pauli Blocker'
+      CTOption(11)=0
+      CTOStrng(11)=' mass reduction for cascade initialization'
+      CTOption(12)=0
+      CTOStrng(12)=' string condition =0 (.ne.0 no strings)'
+      CTOption(13)=0
+      CTOStrng(13)=' enhanced file16 output '
+      CTOption(14)=0
+      CTOStrng(14)=' cos(the) is distributet between -1..1 '
+      CTOption(15)=0
+      CTOStrng(15)=' allow mm&mb-scattering'
+      CTOption(16)=0
+      CTOStrng(16)=' propagate without collisions'
+      CTOption(17)=0
+      CTOStrng(17)=' colload after every timestep '
+      CTOption(18)=0
+      CTOStrng(18)=' final decay of unstable particles'
+      CTOption(19)=0
+      CTOStrng(19)=' allow bbar annihilaion'
+      CTOption(20)=0
+      CTOStrng(20)=' dont generate e+e- instead of bbar'
+      CTOption(21)=0
+      CTOStrng(21)=' use field feynman frgm. function'
+      CTOption(22)=1
+      CTOStrng(22)=' use lund excitation function'
+      CTOption(23)=0
+      CTOStrng(23)=' lorentz contraction of projectile & targed'
+      CTOption(24)=2      ! 1 is default    2 means fast method
+      CTOStrng(24)=' Wood-Saxon initialization'
+      CTOption(25)=0
+      CTOStrng(25)=' phase space corrections for resonance mass'
+      CTOption(26)=0
+      CTOStrng(26)=' use z -> 1-z for diquark-pairs'
+      CTOption(27)=1             ! hjd1
+      CTOStrng(27)=' reference frame (1=target, 2=projectile, else=cms)'
+      CTOption(28)=1             ! M.R. 2019-04-15
+      CTOStrng(28)=' propagate spectators also '
+      CTOption(29)=2
+      CTOStrng(29)=' no transverse momentum in clustr '
+      CTOption(30)=1
+      CTOStrng(30)=' frozen fermi motion '
+      CTOption(31)=0
+      CTOStrng(31)='  reduced mass spectrum in string'
+      CTOption(32)=0
+      CTOStrng(32)=' masses are distributed acc. to m-dep. widths'
+      CTOption(33)=0
+      CTOStrng(33)=' use tables & m-dep. for pmean in fprwdt & fwidth'
+      CTOption(34)=1
+      CTOStrng(34)=' lifetme according to m-dep. width'
+      CTOption(35)=1
+      CTOStrng(35)=' generate high precision tables'
+      CTOption(36)=0
+      CTOStrng(36)=' normalize Breit-Wigners with m.dep. widths '
+      CTOption(37)=0
+      CTOStrng(37)=' heavy quarks form di-quark clusters'
+      CTOption(38)=0
+      CTOStrng(38)=' scale p-pbar to b-bbar with equal p_lab '
+      CTOption(39)=0
+      CTOStrng(39)=' dont call pauliblocker'
+      CTOption(40)=0
+      CTOStrng(40)=' read old fort.14 file '
+      CTOption(41)=0
+      CTOStrng(41)=' generate extended output for cto40'
+      CTOption(42)=0
+      CTOStrng(42)=' hadrons now have color fluctuations'
+      CTOption(43)=0
+      CTOStrng(43)=' dont generate dimuon intead of dielectron output'
+      CTOption(44)=0
+      CTOStrng(44)=' not used at the moment'
+      CTOption(45)=0
+      CTOStrng(45)=' not used at the moment'
+
+C  INITIALIZE ARRAYS FOR SPECIAL PRO/TAR COMBINATIONS
+      do  i = 1, 2
+         spityp(i) = 0
+         spiso3(i) = 0
+      enddo
+
+C  INITIALIZE ARRAYS FOR SPECIAL PARTICLES
+      EoS = 0
+
+C  READ CROSS-SECTION FILES
+Cdh   CALL URQREC()
+
+C  INITIALIZES SOME ARRAYS
+      call strini      ! initialize mixing angles for meson-multipletts
+      call loginit
+
+      IF ( CTOption(33) .EQ. 0  .OR.  CTOption(9) .EQ. 0 ) THEN
+        call loadwtab(io)
+c~         IF ( IUDEBUG .GT. 0 ) WRITE(IFCK,*) 'URQINI: AFTER LOADWTAB'
+      ENDIF
+
+C READ URQMD TOTAL CROSS SECTION TABLE
+c
+c   ie=1..41   E=10.0**(float(ie)/10-1.0-0.05)  (bin-middle)
+c   id=1..9    p,ap,n,an,pi+,pi-,K+,K-,KS
+c   ia=1..3    N,O,Ar
+c
+c~       if(ifurqdat.eq.1)then
+c~         OPEN(UNIT=76,FILE=furqdat(1:nfurqdat),STATUS='OLD')
+c~       else
+c~         OPEN(UNIT=76,FILE='UrQMD-1.3.1-xs.dat',STATUS='OLD')
+c~       endif
+c~       read(76,*) adum,iamaxu,idmaxu,iemaxu
+c~       do ia=1,iamaxu
+c~         do id=1,idmaxu
+c~           do ie=1,iemaxu
+c~             read(76,*) ekdummy,sig_u1(ie,id,ia)
+c~           enddo
+c~           read(76,*)
+c~           read(76,*)
+c~         enddo
+c~       enddo
+c~       close(76)
+
+C  IN CASE OF CASCADE MODE, THE POTENTIALS NEED NOT BE CALCULATED
+
+C  CALCULATE NORMALIZATION OF RESONANCES DISTRIBUTION...
+      call norm_init
+#endif
+
+
+c~       xsegymin=0.25d0
+
+#ifdef __CXDEBUG__
+      call utisx2
+#endif
+
+      end
+
+c
+c M. Reininghaus, 2020-04-08
+c
+      integer function ReadSigmaLn(ia, ib, ic)
+      implicit none
+
+      include 'comres.f'
+
+      integer :: ia, ib, ic
+
+      ReadSigmaLn = SigmaLn(ia, ib, ic)
+
+      end function ReadSigmaLn
diff --git a/dependencies/UrQMD/urqmd_xs.cc b/dependencies/UrQMD/urqmd_xs.cc
new file mode 100644
index 000000000..79ce9c7c8
--- /dev/null
+++ b/dependencies/UrQMD/urqmd_xs.cc
@@ -0,0 +1,39 @@
+/*
+ * (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+// a little helper to dump UrQMD cross-sections
+
+#include <corsika/process/urqmd/UrQMD.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+
+#include <cstdlib>
+#include <fstream>
+#include <iostream>
+
+using namespace corsika;
+using namespace corsika::units::si;
+
+int main() {
+  random::RNGManager::GetInstance().RegisterRandomStream("UrQMD");
+  corsika::UrQMD::UrQMD urqmd;
+
+  std::vector<Code> const projectiles{{Code::Proton, Code::AntiProton, Code::Neutron,
+                                       Code::AntiNeutron, Code::PiPlus, Code::PiMinus,
+                                       Code::KPlus, Code::KMinus, Code::K0Short}};
+
+  for (auto const& p : projectiles) {
+    std::ofstream file(std::string("xs_") + GetName(p) + ".dat");
+    for (auto Elab = GetMass(p) + 200_MeV; Elab <= 10_TeV; Elab *= 1.02) {
+      file << Elab / 1_GeV << '\t'
+           << urqmd.GetTabulatedCrossSection(p, Code::Nitrogen, Elab) / 1_mb << std::endl;
+    }
+  }
+
+  return EXIT_SUCCESS;
+}
diff --git a/Processes/UrQMD/whichres.f b/dependencies/UrQMD/whichres.f
similarity index 100%
rename from Processes/UrQMD/whichres.f
rename to dependencies/UrQMD/whichres.f
diff --git a/dependencies/sibyll/CMakeLists.txt b/dependencies/sibyll/CMakeLists.txt
new file mode 100644
index 000000000..32c967165
--- /dev/null
+++ b/dependencies/sibyll/CMakeLists.txt
@@ -0,0 +1,47 @@
+#cmake_minimum_required(VERSION 3.1)
+#project(Sibyll)
+
+set (
+  MODEL_SOURCES
+  sibyll2.3d.cpp
+  sibyll2.3d.f
+  nuclib.f
+  signuc.f
+  gasdev.f
+  #rndm_dbl.f
+  )
+
+set (
+  MODEL_HEADERS
+  sibyll2.3d.hpp
+  nuclib.hpp
+  )
+
+enable_language(Fortran)
+add_library (Sibyll SHARED ${MODEL_SOURCES})
+set_property(TARGET Sibyll PROPERTY POSITION_INDEPENDENT_CODE 1)
+
+add_library (Sibyll_static STATIC ${MODEL_SOURCES})
+set_property(TARGET Sibyll_static PROPERTY POSITION_INDEPENDENT_CODE 1)
+
+target_include_directories (
+  Sibyll
+  PUBLIC
+  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+  $<INSTALL_INTERFACE:include/include>
+  )
+
+target_include_directories (
+  Sibyll_static
+  PUBLIC
+  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+  $<INSTALL_INTERFACE:include/include>
+  )
+
+target_link_libraries (
+  Sibyll_static
+  PUBLIC
+  gfortran
+  )
+
+add_dependencies (CORSIKA8 Sibyll_static)
diff --git a/Processes/Sibyll/gasdev.f b/dependencies/sibyll/gasdev.f
similarity index 100%
rename from Processes/Sibyll/gasdev.f
rename to dependencies/sibyll/gasdev.f
diff --git a/Processes/Sibyll/nuclib.f b/dependencies/sibyll/nuclib.f
similarity index 100%
rename from Processes/Sibyll/nuclib.f
rename to dependencies/sibyll/nuclib.f
diff --git a/Processes/Sibyll/nuclib.h b/dependencies/sibyll/nuclib.hpp
similarity index 100%
rename from Processes/Sibyll/nuclib.h
rename to dependencies/sibyll/nuclib.hpp
diff --git a/Processes/Sibyll/rndm_dbl.f b/dependencies/sibyll/rndm_dbl.f
similarity index 100%
rename from Processes/Sibyll/rndm_dbl.f
rename to dependencies/sibyll/rndm_dbl.f
diff --git a/dependencies/sibyll/sibyll2.3d.cpp b/dependencies/sibyll/sibyll2.3d.cpp
new file mode 100644
index 000000000..229ddad9c
--- /dev/null
+++ b/dependencies/sibyll/sibyll2.3d.cpp
@@ -0,0 +1,19 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <sibyll2.3d.hpp>
+
+#include <cmath>
+
+int get_nwounded() { return s_chist_.nwd; }
+double get_sibyll_mass2(int& id) { return s_mass1_.am2[std::abs(id) - 1]; }
+
+double s_rndm_(int&) {
+  return sibyll::rndm_interface();
+}
+
diff --git a/dependencies/sibyll/sibyll2.3d.f b/dependencies/sibyll/sibyll2.3d.f
new file mode 100644
index 000000000..8fccb7a42
--- /dev/null
+++ b/dependencies/sibyll/sibyll2.3d.f
@@ -0,0 +1,20471 @@
+C=======================================================================
+C          SSSSSS   IIIIIII  BBBBB   YY      YY   L        L
+C         S            I     B    B    YY  YY     L        L
+C          SSSSS       I     BBBBB       YY       L        L
+C               S      I     B    B      YY       L        L
+C         SSSSSS    IIIIIII  BBBBB       YY       LLLLLLL  LLLLLLL
+C=======================================================================
+C  Code for SIBYLL:  hadronic interaction Monte Carlo event generator
+C=======================================================================
+C   Version 2.3d (Jun-01-2017, modified May-20-2020)
+C
+C     with CHARM production
+C
+C       By   Eun-Joo Ahn
+C            Ralph Engel
+C            A. Fedynitch      
+C            R.S. Fletcher
+C            T.K. Gaisser
+C            Paolo Lipari
+C            Felix Riehn
+C            Todor Stanev
+C
+C-----------------------------------------------------------------------
+C***  Please  have people who want this code contact one of the authors.
+C***  Please report any problems.       ****
+C
+C      For a correct copy contact:
+C                sein@fnal.gov
+C                ralph.engel@kit.edu
+C                afedynitch@gmail.com 
+C                gaisser@bartol.udel.edu
+C                paolo.lipari@roma1.infn.it
+C                friehn@lip.pt
+C                stanev@bartol.udel.edu
+C     
+C     last changes relative to Sibyll 2.3c:
+C     * no pi0 suppression in minijets
+C     * added cross section tables for hadron-nitrogen and hadron-oxygen
+C       (changed S_CCSIG common)
+C     * no remnant in high mass diff. events (pi0-had scattering)
+C     * repaired had-nuc. cross section routine for kaon beams
+C       routine remains inactive in ordinary calls.
+C      
+C=======================================================================
+
+      SUBROUTINE SIBYLL (K_beam, IATARG, Ecm)
+
+C-----------------------------------------------------------------------
+C...Main routine for the production of hadronic events,
+C.  generates an inelastic hadronic interaction of 
+C.  a `projectile particle' of code K_beam with a 
+C.  target nucleus of mass number A = IATARG (integer)
+C.  IATARG = 0 is an "air" nucleus  (superposition of oxygen and nitrogen)
+C.  with c.m. energy for the hadron-nucleon system Ecm (GeV)
+C.  
+C.  Allowed values of K_beam: 7,8,9,10,11,12,13,14,-13,-14
+C.                            pi+-,K+-,KL,KS,p,n,pbar,nbar
+C.                 also:
+C.                  hyperons: 34,35,36,37,38,39
+C.                            Sig+-,Sig0,Xi0-,Lam0
+C.                        
+C.                  charmed:  59,60,71,72,74,75
+C.                            D+,D-,D0,D0b,Ds+,Ds-
+C.                            87,88,89,99
+C.                            Xic+,Xic0,LamC+,OmC0      
+C.                  rho0:27 is allowed as well to emulate photons!
+C.
+C.  The output is contained in COMMON /S_PLIST/ that contains:
+C.
+C.     NP           number of final particles
+C.     P(1:NP, 1:5) 4-momenta + masses of the final particles 
+C.     LLIST (1:NP) codes of final particles.
+C.  the reaction is studied in the c.m. of  hadron-nucleon system
+C.
+C.  The COMMON block /S_CHIST/ contains information about 
+C.  the structure of the  generated event:
+C.    NW   = number of wounded nucleons
+C.    NJET = total number of hard interactions
+C.    NSOF = total number of soft interactions
+C.    NNSOF (1:NW) = number of soft pomeron cuts in each interaction
+C.    NNJET (1:NW) = number of minijets produced in each interaction 
+C.    XJ1 (1:Index) = x1  for each string
+C.    XJ2 (1:Index) = x2   "   "     "
+C.    PTJET (1:Index) = pT   "   "     "
+C.    NNPJET (1:Index) = total number of particles in each string
+C.    NNPSTR (1:2*NW) = number of particles in each `beam string'
+C.    JDIF(1:NW) = diffraction code
+C----------------------------------------------------------------------
+      IMPLICIT NONE
+c     external type declarations
+      DOUBLE PRECISION ECM
+      INTEGER K_beam, IATARG
+
+c     COMMONs
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER LDIFF
+      COMMON /S_CLDIF/ LDIFF
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C     parameters that represent: NW: max. number of wounded nucleons,
+C     NS,NH: max. number of soft and hard interactions
+c      PARAMETER (NW_max = 20)
+C     The COMMON block /S_CHIST/ contains information about the
+C     the structure of the  generated event:
+C     NWD   = number of wounded nucleons
+C     NJET = total number of hard interactions
+C     NSOF = total number of soft interactions
+C     NNSOF (1:NW) = number of soft pomeron cuts in each interaction
+C     NNJET (1:NW) = number of minijets produced in each interaction 
+C     JDIF(1:NW) = diffraction code 
+C                  0 : non-diff,
+C                  1 : beam-diff
+C                  2 : target-diff
+C                  3 : double-diff
+      INTEGER NNSOF,NNJET,JDIF,NWD,NJET,NSOF
+      COMMON /S_CHIST/ NNSOF(NW_max),NNJET(NW_max),
+     &     JDIF(NW_max),NWD,NJET,NSOF
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+c     internal type declarations
+      DOUBLE PRECISION Esum,PXsum,PYsum,PZsum,xchgRate
+      INTEGER LL,IATARGET,IAIR,KBM,L,NW,IREJ,NF,J
+      DIMENSION LL(99)
+      SAVE
+      DATA LL /5*0,7*2,2*1,12*0,2,6*0,6*1,19*0,2,2,10*0,
+     &     2,2,0,2,2,11*0,1,1,1,9*0,1/
+
+      if(Ndebug.gt.0)then
+        WRITE(LUN,'(A42,I3,I3,1X,F10.2)')
+     &     '  SIBYLL: called with (K_beam,IATARG,Ecm):',
+     &     K_beam,IATARG,Ecm
+        WRITE(LUN,*)'Event type selection LDIFF: ',LDIFF
+      endif
+
+ 100  CONTINUE
+      
+      Ncall = Ncall+1
+
+      IATARGET = IATARG
+      IAIR = IABS(MIN(IATARG-1,0))
+      KBM = K_beam
+      
+      CALL INI_EVENT(ECM,KBM,IATARGET,1)
+
+      L = LL(IABS(K_beam))
+      IF(L.eq.0) THEN
+         WRITE(LUN,*)'SIB_MAIN: unknown beam particle! kbeam=',k_beam
+         WRITE(6,*)'SIB_MAIN: unknown beam particle! kbeam=',k_beam
+         CALL SIB_REJECT('SIB_MAIN        ')
+      endif
+
+C...Generate number NW wounded nucleons, and diffraction code.
+
+1000  continue  
+      CALL SIB_START_EV (Ecm, L, IATARGET, IAIR, NWD, JDIF)
+      NW = NWD
+C...limits on simulation of pure diffraction dissociation
+      IF((LDIFF.NE.0).and.(NW.EQ.1)) THEN 
+         IF((LDIFF.EQ.-1) .AND. (JDIF(1).NE.0) ) GOTO 1000
+         IF((LDIFF.EQ. 1) .AND. ((JDIF(1).NE.0).AND.(JDIF(1).NE.3)))
+     +     GOTO 1000
+         IF((LDIFF.EQ. 5) .AND. (JDIF(1).EQ.2)) GOTO 1000
+         IF((LDIFF.GE. 2) .AND. (LDIFF.LE.4)) THEN
+           JDIF(1) = LDIFF-1
+         ENDIF
+      ENDIF
+
+C...Diffractive/non-diffractive interactions
+
+      IF((NW.EQ.1).and.(JDIF(1).NE.0)) THEN
+        CALL SIB_DIFF (KBM, JDIF(1), Ecm, 1, IREJ)
+      ELSE
+        CALL SIB_NDIFF (KBM, NW, Ecm, 1, IREJ)
+      ENDIF
+
+      IF (IREJ.NE.0) THEN
+        if(Ndebug.gt.0) WRITE(LUN,'(A38,F10.2,I3,I3,I3)')
+     &   '  SIBYLL: rejection (Ecm,Ncall,Nw,JDIF):',Ecm,Ncall,NW,JDIF(1)
+        GOTO 100
+      ENDIF
+
+      do J=1,NP
+         if (P(J,4).lt.0.D0 ) then
+            if(Ndebug.gt.0)then
+               WRITE(LUN,*)' negative energy particle!' , P(J,4)
+               CALL SIB_LIST(LUN)
+            endif
+            goto 100
+         endif
+      enddo
+
+C...Check energy-momentum conservation
+      
+      CALL PFSUM(1,NP,Esum,PXsum,PYsum,PZsum,NF)
+      IF (ABS(Esum/(0.5D0*Ecm*DBLE(NW+1)) - 1.D0) .GT. EPS3)  THEN
+         WRITE(LUN,*) ' SIBYLL: energy not conserved (L,call): ',L,Ncall
+         WRITE(LUN,*) ' sqs_inp = ', Ecm, ' sqs_out = ', Esum
+         CALL PRNT_PRTN_STCK
+         CALL SIB_LIST(LUN)
+         WRITE(LUN,*) ' SIBYLL: event rejected'
+c         a = -1.D0
+c         a = log(a)
+c         stop
+         goto 100
+      ENDIF
+      IF (ABS(PZsum+0.5D0*Ecm*DBLE(NW-1)) .GT. 0.1D0)  THEN
+         if(Ndebug.gt.0)THEN
+            WRITE(LUN,*) ' SIBYLL: momentum not conserved (L,call): ',
+     &           L,Ncall
+            WRITE(LUN,*) ' pz_inp = ', 0., ' pz_out = ', pzsum
+         ENDIF
+         IF(ndebug.gt.0)then
+            CALL PRNT_PRTN_STCK
+            CALL SIB_LIST(LUN)
+            WRITE(LUN,*) ' SIBYLL: event rejected'
+         endif
+c         a = -1.D0
+c         a = log(a)
+c         stop
+         goto 100
+      ENDIF
+
+c     exchange pions with vector mesons
+      IF(IPAR(45).ne.0) then
+         xchgRate = PAR(75)
+         CALL FORCE_VECTORS(xchgRate,1,NP)
+      endif
+
+c     exchange pi0 with charged pions for meson projectiles
+      IF(IPAR(50).ne.0.and.IABS(KBM).lt.13) then
+         xchgrate = PAR(136)
+         CALL REMOVE_PI0(xchgRate,1,NP)
+      endif
+      
+      
+C...list final state particles
+      if(Ndebug.gt.10) CALL SIB_LIST(LUN)
+
+      END
+
+
+C======================================================================
+
+      SUBROUTINE SIBNUC (IAB, IATG, ECM)
+
+C-----------------------------------------------------------------------
+C.  Routine that generates the interaction of a nucleus of
+C.  mass number IAB with a  target nucleus  of mass IATG
+C.  (IATG=0 : air).
+C.  SQS (GeV) is the  center of mass energy of each
+C.  nucleon - nucleon cross section
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      COMMON /S_PLNUC/ PA(5,40000), LLA(40000), NPA
+      COMMON /CKFRAG/ KODFRAG
+      PARAMETER (IAMAX=56)
+      COMMON /CNUCMS/ B, BMAX, NTRY, NA, NB, NI, NAEL, NBEL
+     +         ,JJA(IAMAX), JJB(IAMAX), JJINT(IAMAX,IAMAX)
+     +         ,JJAEL(IAMAX), JJBEL(IAMAX)            
+      COMMON /FRAGMENTS/ PPP(3,60)
+      DIMENSION SIGDIF(3)
+      DIMENSION IAF(60)
+      DOUBLE PRECISION FOX
+      SAVE
+      DATA FOX /0.21522D0/  !atomic percentage of 'non-nitrogen' in air
+
+C...Target mass
+      IF (IATG .EQ. 0) THEN
+c  select target IATARGET from air composition
+         R = S_RNDM(0)
+         IATARGET = 14
+         IF (R .LT. FOX)  IATARGET = 16
+      ELSE
+         IATARGET = IATG
+      ENDIF
+       
+C...Single nucleon (proton) case
+
+      IF (IAB .EQ. 1)  THEN
+         NPA = 0
+         CALL SIBYLL (13,IATARGET, ECM)
+         CALL DECSIB
+         DO J=1,NP
+            LA = IABS(LLIST(J))
+            IF (LA .LT. 10000)  THEN
+               NPA = NPA + 1
+               LLA(NPA) = LLIST(J)
+               DO K=1,5
+                  PA(K,NPA) = P(J,K)
+               ENDDO
+            ENDIF
+         ENDDO
+         RETURN
+      ENDIF
+
+
+C...Nuclei
+
+      CALL SIB_SIGMA_HP(1,ECM,SIGT,SIGEL,SIG0,SIGDIF,SLOPE,RHO)
+      CALL INT_NUC (IATARGET, IAB, SIG0, SIGEL) 
+
+C...fragment spectator nucleons
+      NBT = NB + NBEL
+      IF (KODFRAG .EQ. 1)  THEN
+          CALL FRAGM1(IAB,NBT, NF, IAF)
+      ELSE IF(KODFRAG .EQ. 2)  THEN
+          CALL FRAGM2(IAB,NBT, NF, IAF)
+      ELSE 
+          CALL FRAGM (IATARGET, IAB, NBT,B, NF, IAF)
+      ENDIF
+     
+C...Spectator fragments
+      NPA = 0
+      DO J=1,NF
+         NPA = NPA+1
+         if(NPA.gt.40000) then
+           write(6,'(1x,a,2i8)') 
+     &       ' SIBNUC: no space left in S_PLNUC (NPA,NF)',NPA,NF
+           NPA = NPA-1
+           return
+         endif
+         LLA(NPA) = 1000+IAF(J)
+         PA(1,NPA) = 0.D0
+         PA(2,NPA) = 0.D0
+         PA(3,NPA) = ECM/2.D0
+         PA(4,NPA) = ECM/2.D0
+         PA(5,NPA) = DBLE(IAF(J))*0.5D0*(AM(13)+AM(14))
+      ENDDO
+
+C...Elastically scattered fragments
+      DO J=1,NBEL
+         NPA = NPA+1
+         if(NPA.gt.40000) then
+           write(6,'(1x,a,2i8)') 
+     &       ' SIBNUC: no space left in S_PLNUC (NPA,NBEL)',NPA,NBEL
+           NPA = NPA-1
+           return
+         endif
+         LLA(NPA) = 1001
+         PA(1,NPA) = 0.D0
+         PA(2,NPA) = 0.D0
+         PA(3,NPA) = ECM/2.D0
+         PA(4,NPA) = ECM/2.D0
+         PA(5,NPA) = 0.5D0*(AM(13)+AM(14))
+      ENDDO
+
+C...Superimpose NB  nucleon interactions
+      DO JJ=1,NB
+          CALL SIBYLL (13,IATARGET, ECM)
+          CALL DECSIB
+          DO J=1,NP
+             LA = IABS(LLIST(J))
+             IF (LA .LT. 10000)   THEN
+                NPA = NPA + 1
+                if(NPA.gt.40000) then
+                  write(6,'(1x,a,2i8)') 
+     &              ' SIBNUC: no space left in S_PLNUC (NPA,NP)',NPA,NP
+                  NPA = NPA-1
+                  return
+                endif
+                LLA(NPA) = LLIST(J)
+                DO K=1,5
+                    PA(K,NPA) = P(J,K)
+                ENDDO
+             ENDIF
+          ENDDO
+      ENDDO
+
+      END
+C=======================================================================
+
+      SUBROUTINE SIBYLL_INI
+
+C-----------------------------------------------------------------------
+C...Initialization routine for SYBILL 
+C.  
+C.  the routine fills the COMMON block /CCSIG/ that contains
+C.  important information for the generation of events
+C.
+C     PARAMETER (NS_max = 20, NH_max = 80)
+C     COMMON /S_CCSIG/ SSIG(61,3), PJETC(0:NS_max,0:NH_max,61,2),
+C    &    SSIGN(61,3,3),SSIGNSD(61,3,3) ALINT(61,3,3), ASQSMIN, ASQSMAX, DASQS, NSQS
+C.
+C.  NSQS = number of energy points  (61 is current version)
+C.  ASQSMIN = log_10 [sqrt(s) GeV]   minimum value
+C.  ASQSMIN = log_10 [sqrt(s) GeV]   maximum value
+C.  DASQS   = step  in log_10[sqrt(s)]
+C.            DASQS = (ASQSMAX - ASQSMIN)/(NSQS-1)
+C.
+C.  SSIG(J,1) inelastic cross section for pp interaction
+C.            at energy: sqrt(s)(GeV) = 10**[ASQSMIN+DASQS*(J-1)]
+C.  SSIG(J,2)  inelastic cross section for pi-p interaction
+C.  SSIGN(J,1,1) inelastic cross section for p-Air interaction
+C.  SSIGN(J,2,1) inelastic cross section for pi-Air interaction
+C.  SSIGN(J,1,2) inelastic cross section for p-Nitrogen interaction
+C.  SSIGN(J,2,2) inelastic cross section for pi-Nitrogen interaction
+C.
+C.  PJETC(n_s,n_j,J,1) Cumulative  probability distribution
+C.                 for the production of n_s soft interactions and
+C.                 n_j (n_j=0:30) jet pairs at sqrt(s) labeled 
+C.                 by J, for p-p interaction
+C.  PJETC(n_s,n_j,J,2) Same as above for pi-p interaction
+C.  ALINT(J,1)   proton-air  interaction length (g cm-2)
+C.  ALINT(J,2)   pi-air  interaction length (g cm-2)
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+
+      WRITE(*,100)
+ 100  FORMAT(' ','====================================================',
+     *     /,' ','|                                                  |',
+     *     /,' ','|                 S I B Y L L  2.3d                |',
+     *     /,' ','|                                                  |',
+     *     /,' ','|         HADRONIC INTERACTION MONTE CARLO         |',
+     *     /,' ','|                        BY                        |',
+     *     /,' ','|            Eun-Joo AHN, Felix RIEHN              |',
+     *     /,' ','|      R. ENGEL, A. FEDYNITCH, R.S. FLETCHER,      |',
+     *     /,' ','|       T.K. GAISSER, P. LIPARI, T. STANEV         |',
+     *     /,' ','|                                                  |',
+     *     /,' ','| Publication to be cited when using this program: |',
+     *     /,' ','| Eun-Joo AHN et al., Phys.Rev. D80 (2009) 094003  |',
+     *     /,' ','| F. RIEHN et al., hep-ph: 1912.03300              |',
+     *     /,' ','| last modifications: F. Riehn (05/20/2020)        |',
+     *     /,' ','====================================================',
+     *     /)
+
+      CALL PAR_INI
+      CALL DIFF_INI
+      CALL JET_INI
+      CALL PDF_INI
+      CALL BLOCK_INI
+      CALL NUC_GEOM_INI
+      CALL SIG_AIR_INI
+
+c...  charm frag. normalisation
+      CALL ZNORMAL
+
+      END
+
+C=======================================================================
+
+      SUBROUTINE NO_CHARM
+      IMPLICIT NONE
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+c     turn off charm production
+c     global charm rate
+      PAR(24) = 0.D0
+c     minijet string charm rate
+      PAR(156) = 0.D0
+c     remnant string charm rate
+      PAR(107) = 0.D0
+c     soft sea charm rate
+      PAR(97) = 0.D0
+c     valence string charm rate
+      PAR(25) = 0.D0
+c     minijet charm rate
+      PAR(27) = 0.D0
+      END
+      
+C=======================================================================
+
+      SUBROUTINE PAR_INI
+
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      DOUBLE PRECISION FAin, FB0in
+      COMMON /S_CZDIS/ FAin, FB0in
+
+      DOUBLE PRECISION FAs1, fAs2
+      COMMON /S_CZDISs/ FAs1, fAs2
+      DOUBLE PRECISION ZDMAX, EPSI
+      COMMON /S_CZDISc/ ZDMAX, EPSI
+
+      DOUBLE PRECISION CLEAD, FLEAD
+      COMMON /S_CZLEAD/ CLEAD, FLEAD
+      DOUBLE PRECISION CCHIK
+      COMMON /S_CPSPL/ CCHIK(4,99)
+
+      PARAMETER ( NPARFIT = 22 )
+      DOUBLE PRECISION PARS
+      COMMON /XSCTN_FIT/ PARS( 50 , 2 )
+      DOUBLE PRECISION STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      COMMON /S_CUTOFF/ STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      SAVE
+      DATA (PARS(K,1),K=    1,NPARFIT) /
+     &3.9223D+01,4.2055D+01,5.0913D-02,-4.0000D-01,2.0000D-01,
+     &5.0000D-01,0.0000D+00,6.0000D-01,9.0000D-02,1.0000D+00,
+     &2.0000D+00,3.2327D+00,2.5000D-01,5.4000D-01,1.0000D+00,
+     &-8.8000D-01,5.4000D-01,5.0000D-01,9.0000D-01,5.4000D-01,
+     &6.5000D-02,9.0000D-01/
+      DATA (PARS(K,2),K=    1,NPARFIT) /
+     &2.0590D+01,9.6579D+01,5.6069D-02,-7.6393D-01,2.0000D-01,
+     &5.0000D-01,0.0000D+00,6.0000D-01,9.0000D-02,1.0000D+00,
+     &2.0000D+00,2.9191D+00,2.5000D-01,5.4000D-01,1.0000D+00,
+     &-8.8000D-01,5.4000D-01,5.4895D-01,9.0000D-01,5.4000D-01,
+     &6.5000D-02,9.0000D-01/
+c
+c     adjusted central particle production
+c     23rc5.4frgB1 aka retune5 aka Sibyll 2.3.5
+      PAR(1) = 4.0000D-02
+      PAR(2) = 2.5000D-01
+      PAR(3) = 5.0000D-01
+      PAR(4) = 1.4000D-01
+      PAR(5) = 3.0000D-01
+      PAR(6) = 3.0000D-01
+      PAR(7) = 1.5000D-01
+      PAR(8) = 1.3903D-02
+      PAR(9) = 7.0000D+00
+      PAR(10) = 1.0000D+00
+      PAR(11) = 6.5000D-02
+      PAR(12) = 9.0000D-01
+      PAR(13) = 1.0000D-01
+      PAR(14) = 6.0000D-02
+      PAR(15) = 1.3000D-01
+      PAR(16) = 4.0000D-02
+      PAR(17) = 4.0000D-02
+      PAR(18) = 5.0000D-01
+      PAR(19) = 8.0000D-01
+      PAR(20) = 8.0000D-01
+      PAR(21) = 6.0000D-01
+      PAR(22) = 4.0000D+00
+      PAR(23) = 7.0000D-01
+      PAR(24) = 4.0000D-03
+      PAR(25) = 4.0000D-03
+      PAR(26) = 2.0000D+01
+      PAR(27) = 2.0000D-02
+      PAR(28) = 2.0000D+01
+      PAR(29) = 0.0000D+00
+      PAR(30) = 2.0000D+00
+      PAR(31) = 3.3000D-01
+      PAR(32) = 0.0000D+00
+      PAR(33) = 1.0000D-01
+      PAR(34) = 0.0000D+00
+      PAR(35) = 0.0000D+00
+      PAR(36) = 7.0000D-01
+      PAR(37) = 0.0000D+00
+      PAR(38) = 5.0000D-01
+      PAR(39) = 8.0000D-01
+      PAR(40) = 0.0000D+00
+      PAR(41) = 1.0000D+00
+      PAR(42) = 0.0000D+00
+      PAR(43) = 2.3564D-01
+      PAR(44) = 9.9000D-01
+      PAR(45) = 1.0000D+00
+      PAR(46) = 1.8000D-01
+      PAR(47) = 2.8000D-01
+      PAR(48) = 2.7000D-01
+      PAR(49) = 1.0000D-01
+      PAR(50) = 6.0000D-01
+      PAR(51) = 6.0000D-03
+      PAR(52) = 6.0000D-03
+      PAR(53) = 6.0000D+00
+      PAR(54) = 2.0000D-01
+      PAR(55) = 0.0000D+00
+      PAR(56) = 0.0000D+00
+      PAR(57) = 0.0000D+00
+      PAR(58) = 0.0000D+00
+      PAR(59) = 6.8345D-01
+      PAR(60) = 8.0000D-01
+      PAR(61) = 6.6000D-01
+      PAR(62) = 0.0000D+00
+      PAR(63) = 1.0000D+00
+      PAR(64) = 2.5000D-01
+      PAR(65) = 3.0000D-01
+      PAR(66) = 3.0000D-01
+      PAR(67) = 6.0000D-01
+      PAR(68) = 6.0000D-03
+      PAR(69) = 5.0000D-02
+      PAR(70) = 7.0000D-03
+      PAR(71) = 1.0000D+00
+      PAR(72) = 3.8000D-01
+      PAR(73) = 5.0000D-01
+      PAR(74) = 6.0000D-01
+      PAR(75) = 0.0000D+00
+      PAR(76) = 3.5298D-01
+      PAR(77) = 7.0000D-01
+      PAR(78) = 2.0000D+00
+      PAR(79) = 1.0000D+01
+      PAR(80) = 5.0816D-01
+      PAR(81) = 1.0000D+04
+      PAR(82) = 1.0000D-01
+      PAR(83) = 0.0000D+00
+      PAR(84) = 6.0000D+00
+      PAR(85) = 1.0000D+00
+      PAR(86) = 1.0000D+00
+      PAR(87) = 3.0000D-01
+      PAR(88) = 8.0000D-01
+      PAR(89) = 6.0000D-01
+      PAR(90) = 1.1000D+01
+      PAR(91) = -7.2000D+00
+      PAR(92) = 3.5000D+00
+      PAR(93) = 1.0000D+00
+      PAR(94) = 4.0000D+00
+      PAR(95) = 0.0000D+00
+      PAR(96) = 1.0000D+00
+      PAR(97) = 2.0000D-03
+      PAR(98) = 1.5000D+00
+      PAR(99) = 5.0000D-01
+      PAR(100) = 2.0000D+00
+      PAR(101) = 1.0000D+00
+      PAR(102) = 0.0000D+00
+      PAR(103) = 2.0000D+00
+      PAR(104) = 4.0000D-01
+      PAR(105) = 1.0000D-01
+      PAR(106) = 0.0000D+00
+      PAR(107) = 0.0000D+00
+      PAR(108) = 0.0000D+00
+      PAR(109) = 2.0000D+01
+      PAR(110) = 1.5000D+00
+      PAR(111) = 0.0000D+00
+      PAR(112) = 7.0000D-01
+      PAR(113) = 8.0000D-01
+      PAR(114) = 2.0000D+00
+      PAR(115) = 0.0000D+00
+      PAR(116) = 1.0000D+00
+      PAR(117) = 0.0000D+00
+      PAR(118) = 5.0000D-03
+      PAR(119) = 0.0000D+00
+      PAR(120) = 1.0000D+00
+      PAR(121) = 3.0000D-01
+      PAR(122) = 0.0000D+00
+      PAR(123) = 3.0000D-01
+      PAR(124) = 1.0000D+00
+      PAR(125) = 1.0000D+00
+      PAR(126) = 1.0000D+00
+      PAR(127) = 6.0000D+00
+      PAR(128) = 1.0000D+00
+      PAR(129) = 8.0000D-02
+      PAR(130) = 1.2000D+01
+      PAR(131) = 5.0000D-01
+      PAR(132) = 5.0000D-01
+      PAR(133) = 1.0000D+01
+      PAR(134) = -5.0000D+00
+      PAR(135) = 6.0000D+00
+      PAR(136) = 0.0000D+00
+      PAR(137) = 1.2000D+00
+      PAR(138) = 0.0000D+00
+      PAR(139) = 5.0000D-01
+      PAR(140) = 4.5000D-01
+      PAR(141) = 1.5000D+00
+      PAR(142) = 0.0000D+00
+      PAR(143) = 5.0000D-01
+      PAR(144) = 9.5000D-01
+      PAR(145) = 8.5000D-01
+      PAR(146) = 0.0000D+00
+      PAR(147) = 3.0000D-01
+      PAR(148) = 5.0000D-01
+      PAR(149) = 3.0000D-01
+      PAR(150) = 4.0000D-03
+      PAR(151) = 2.0000D+00
+      PAR(152) = 4.0000D+00
+      PAR(153) = 1.0000D+01
+      PAR(154) = 3.0000D-01
+      PAR(155) = 0.0000D+00
+      PAR(156) = 5.0000D-01
+      PAR(157) = 8.0000D-01
+      PAR(158) = 0.0000D+00
+      PAR(159) = 0.0000D+00
+      PAR(160) = 0.0000D+00
+      PAR(161) = 0.0000D+00
+      PAR(162) = 0.0000D+00
+      PAR(163) = 0.0000D+00
+      PAR(164) = 0.0000D+00
+      PAR(165) = 0.0000D+00
+      PAR(166) = 0.0000D+00
+      PAR(167) = 0.0000D+00
+      PAR(168) = 0.0000D+00
+      PAR(169) = 0.0000D+00
+      PAR(170) = 0.0000D+00
+      PAR(171) = 0.0000D+00
+      PAR(172) = 0.0000D+00
+      PAR(173) = 0.0000D+00
+      PAR(174) = 0.0000D+00
+      PAR(175) = 0.0000D+00
+      PAR(176) = 0.0000D+00
+      PAR(177) = 0.0000D+00
+      PAR(178) = 0.0000D+00
+      PAR(179) = 0.0000D+00
+      PAR(180) = 0.0000D+00
+      PAR(181) = 0.0000D+00
+      PAR(182) = 0.0000D+00
+      PAR(183) = 0.0000D+00
+      PAR(184) = 0.0000D+00
+      PAR(185) = 0.0000D+00
+      PAR(186) = 0.0000D+00
+      PAR(187) = 0.0000D+00
+      PAR(188) = 0.0000D+00
+      PAR(189) = 0.0000D+00
+      PAR(190) = 0.0000D+00
+      PAR(191) = 0.0000D+00
+      PAR(192) = 0.0000D+00
+      PAR(193) = 0.0000D+00
+      PAR(194) = 0.0000D+00
+      PAR(195) = 0.0000D+00
+      PAR(196) = 0.0000D+00
+      PAR(197) = 0.0000D+00
+      PAR(198) = 0.0000D+00
+      PAR(199) = 0.0000D+00
+      PAR(200) = 0.0000D+00
+      IPAR(1) = 1
+      IPAR(2) = 0
+      IPAR(3) = 8
+      IPAR(4) = 0
+      IPAR(5) = 1
+      IPAR(6) = 0
+      IPAR(7) = 0
+      IPAR(8) = 1
+      IPAR(9) = 1
+      IPAR(10) = 1
+      IPAR(11) = 0
+      IPAR(12) = 3
+      IPAR(13) = 0
+      IPAR(14) = -2
+      IPAR(15) = 9
+      IPAR(16) = 8
+      IPAR(17) = 1
+      IPAR(18) = 4
+      IPAR(19) = 1
+      IPAR(20) = 0
+      IPAR(21) = 0
+      IPAR(22) = 0
+      IPAR(23) = 0
+      IPAR(24) = 0
+      IPAR(25) = 1
+      IPAR(26) = 0
+      IPAR(27) = 0
+      IPAR(28) = 4
+      IPAR(29) = 1
+      IPAR(30) = 0
+      IPAR(31) = 1
+      IPAR(32) = 0
+      IPAR(33) = 0
+      IPAR(34) = 0
+      IPAR(35) = 0
+      IPAR(36) = 1
+      IPAR(37) = 0
+      IPAR(38) = 1
+      IPAR(39) = 0
+      IPAR(40) = 0
+      IPAR(41) = 0
+      IPAR(42) = 3
+      IPAR(43) = 1
+      IPAR(44) = 0
+      IPAR(45) = 0
+      IPAR(46) = 2
+      IPAR(47) = 6
+      IPAR(48) = 1
+      IPAR(49) = 4
+      IPAR(50) = 0
+      IPAR(51) = 2
+      IPAR(52) = 0
+      IPAR(53) = 1
+      IPAR(54) = 0
+      IPAR(55) = 0
+      IPAR(56) = 0
+      IPAR(57) = 1
+      IPAR(58) = 3
+      IPAR(59) = 1
+      IPAR(60) = 0
+      IPAR(61) = 100
+      IPAR(62) = 1
+      IPAR(63) = 0
+      IPAR(64) = 0
+      IPAR(65) = 1
+      IPAR(66) = 3
+      IPAR(67) = 0
+      IPAR(68) = 0
+      IPAR(69) = 1
+      IPAR(70) = 1
+      IPAR(71) = 0
+      IPAR(72) = 0
+      IPAR(73) = 0
+      IPAR(74) = 1
+      IPAR(75) = 0
+      IPAR(76) = 0
+      IPAR(77) = 0
+      IPAR(78) = 2
+      IPAR(79) = 1
+      IPAR(80) = 1
+      IPAR(81) = 5
+      IPAR(82) = 2
+      IPAR(83) = 0
+      IPAR(84) = 2
+      IPAR(85) = 1
+      IPAR(86) = 0
+      IPAR(87) = 3
+      IPAR(88) = 1
+      IPAR(89) = 0
+      IPAR(90) = 1
+      IPAR(91) = 0
+      IPAR(92) = 1
+      IPAR(93) = 1
+      IPAR(94) = 0
+      IPAR(95) = 1
+      IPAR(96) = 0
+      IPAR(97) = 0
+      IPAR(98) = 0
+      IPAR(99) = 0
+      IPAR(100) = 0
+
+C...  valence quark distribution function
+c     large x suppression
+      do i=1,3                  ! quark flavors
+         CCHIK(i,13)=PAR(62)
+         CCHIK(i,14)=PAR(62)
+      enddo
+C...string fragmentation parameters
+c     effective quark mass
+      STR_mass_val = PAR(36) 
+      STR_mass_sea = PAR(41)
+
+C...energy dependence of PTmin
+c     pt_cut offset
+      PAR(10) = PARS(10 , 1)
+c     lambda
+      PAR(11) = PARS(21 , 1)
+c     c parameter
+      PAR(12) = PARS(22 , 1)
+
+C...fragmentation function
+      FAin = PAR(20)
+      FB0in = PAR(21)
+
+C...Strange fragmentation function
+      FAs1 = PAR(35)
+      FAs2 = PAR(35)
+
+C...leading baryon fragmentation function
+c     hard proton mixing
+      CLEAD = PAR(50)
+
+      END
+C=======================================================================
+
+      SUBROUTINE PAR_INI_FROM_FILE
+      IMPLICIT NONE
+c     locals
+      CHARACTER*10 FILENA
+      CHARACTER*6 CNAME
+      CHARACTER*70 NUMBER
+
+      INTEGER ISTAT,J,IVAL,I
+      DOUBLE PRECISION VAL      
+c     commons
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      
+      DOUBLE PRECISION STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      COMMON /S_CUTOFF/ STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+
+      DOUBLE PRECISION FAin, FB0in
+      COMMON /S_CZDIS/ FAin, FB0in
+
+      DOUBLE PRECISION FAs1, fAs2
+      COMMON /S_CZDISs/ FAs1, fAs2
+      DOUBLE PRECISION ZDMAX, EPSI
+      COMMON /S_CZDISc/ ZDMAX, EPSI
+
+      DOUBLE PRECISION CLEAD, FLEAD
+      COMMON /S_CZLEAD/ CLEAD, FLEAD
+      DOUBLE PRECISION CCHIK
+      COMMON /S_CPSPL/ CCHIK(4,99)
+
+      SAVE
+      DATA FILENA /'sibyll.par'/
+ 14   FORMAT(A6,A70)
+ 15   FORMAT(A5,I3,A2,I8)
+ 16   FORMAT(A5,I3,A2,F8.2)      
+      OPEN(unit=4,file=filena,status='OLD')
+      istat = 1
+c     set standard parameters (full set)
+      CALL PAR_INI
+c     read new parameters from file
+      IF(ndebug.gt.0)WRITE(LUN,*)'reading parameter file: sibyll.par'
+      DO WHILE (istat.ge.0) 
+         READ(4,14,iostat=ISTAT) CNAME,NUMBER
+         IF(CNAME.eq.'IPAR  ')THEN
+            READ(NUMBER,*) j, ival
+            IF(ndebug.gt.1)write(LUN,15) 'IPAR(',j,')=', ival
+            IPAR(J) = iVAL
+         ELSEif(CNAME.eq.'PAR   ')THEN
+            READ(NUMBER,*) j, val
+            PAR(J) = VAL
+            IF(ndebug.gt.1)write(LUN,16) ' PAR(',j,')=', val
+         ELSE
+            WRITE(LUN,*)'wrong format in parameter file!'
+            WRITE(6,*)'wrong format in parameter file!'
+            WRITE(LUN,*) CNAME, NUMBER
+            stop
+         ENDIF
+      ENDDO
+C     copy parameter values to their respective COMMONs
+C...  valence quark distribution function
+c     large x suppression
+      do i=1,3                  ! quark flavors
+         CCHIK(i,13)=PAR(62)
+         CCHIK(i,14)=PAR(62)
+      enddo
+C...string fragmentation parameters
+c     effective quark mass
+      STR_mass_val = PAR(36) 
+      STR_mass_sea = PAR(41)
+C...fragmentation function
+      FAin = PAR(20)
+      FB0in = PAR(21)
+C...Strange fragmentation function
+      FAs1 = PAR(35)
+      FAs2 = PAR(35)
+C...leading baryon fragmentation function
+c     hard proton mixing
+      CLEAD = PAR(50)
+      END
+      
+C=======================================================================
+      
+      SUBROUTINE MESON_FLV_MRG_INI
+
+C-----------------------------------------------------------------------
+c     change flavor merging for pions (favor spin)
+C-----------------------------------------------------------------------
+      INTEGER KFLV
+      COMMON /S_KFLV/ KFLV(4,43)
+
+c     pi+ --> rho+
+      KFLV(2,1) = 25
+c     pi- --> rho-
+      KFLV(1,2) = 26
+c     pi0 --> rho0
+      KFLV(1,1) = 27
+      KFLV(2,2) = 27     
+      END
+C=======================================================================
+
+      BLOCK DATA PARAM_INI
+
+C-----------------------------------------------------------------------
+C....This block data contains default values
+C.   of the parameters used in fragmentation
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      
+      DOUBLE PRECISION STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      COMMON /S_CUTOFF/ STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      DOUBLE PRECISION FAin, FB0in
+      COMMON /S_CZDIS/ FAin, FB0in
+
+      DOUBLE PRECISION FAs1, fAs2
+      COMMON /S_CZDISs/ FAs1, fAs2
+      DOUBLE PRECISION ZDMAX, EPSI
+      COMMON /S_CZDISc/ ZDMAX, EPSI
+
+      DOUBLE PRECISION CLEAD, FLEAD
+      COMMON /S_CZLEAD/ CLEAD, FLEAD
+      DOUBLE PRECISION CCHIK
+      COMMON /S_CPSPL/ CCHIK(4,99)
+
+      INTEGER ITRY, NREJ
+      COMMON /S_CNT/ ITRY(20), NREJ(20)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+      COMMON /CKFRAG/ KODFRAG
+      SAVE
+
+      DATA ITRY /20*0/
+      DATA NREJ /5,5,20,10,20,20,14*0/ 
+      DATA EPS3,EPS5,EPS8,EPS10 /1.D-3,1.D-5,1.D-8,1.D-10/
+      DATA PI,TWOPI,CMBARN/3.14159265358979D0,6.283185308D0,0.389385D0/
+      DATA FACN /2.D0,5.D0,15.D0,60.D0,250.D0,1500.D0,12000.D0,
+     &     120000.D0/
+
+C...  default output unit
+      DATA LUN /7/
+c...new fragmentation for charmed particles
+      DATA EPSI /2.D0/
+C...mass cutoff for soft strings
+      data STR_mass_val /0.35D0/ 
+      data STR_mass_val_hyp /0.4D0/ 
+      data STR_mass_sea /1.D0/ 
+C...Longitudinal Fragmentation function
+      DATA FAin /0.5D0/, FB0in /0.8D0/
+C...Longitudinal Fragmentation function for leading baryons
+      DATA CLEAD  /0.6D0/, FLEAD  /0.6D0/
+c     strange fragmentation
+      data FAs1 /3.D0/, fAs2 /3.D0/
+C...  Splitting parameters
+      DATA CCHIK /20*0.D0,28*2.D0,8*3.D0,48*0.D0,4*2.D0,24*0.D0,
+     &     24*3.D0,76*0.D0,8*2.D0,40*0.D0,12*2.D0,40*0.D0,24*3.D0,
+     &     40*0.D0/
+C...Parameters of flavor formation 
+c     last in use: 158
+      DATA PAR/0.04D0,0.3D0,0.3D0,0.14D0,0.3D0,0.3D0,0.15D0,0.D0,7.D0, ! 10
+     &     2*0.D0,0.9D0,0.2D0,4*0.04D0,0.5D0,0.8D0,0.5D0,              ! 20 
+     &     0.8D0,6.D0,0.5D0,0.004D0,5*0.D0,0.7D0,                      ! 30
+     &     2*0.D0,0.1D0,0.D0,3.D0,0.35D0,0.D0,0.5D0,2*0.D0,            ! 40
+     &     1.D0,2.D0,0.D0,0.99D0,0.D0,0.3D0,0.45D0,0.6D0,0.6D0,0.6D0,  ! 50
+     &     .03D0,.03D0,6.D0,0.2D0,4*0.D0,1.1D0,0.8D0,                  ! 60
+     &     .33D0,3.D0,1.D0,.25D0,.3D0,0.3D0,0.6D0,.007D0,.03D0,.007D0, ! 70
+     &     1.D0,0.3D0,0.D0,0.3D0,0.0D0,0.2D0,0.5D0,1.0D0,10.D0,0.D0,   ! 80
+     &     1000.D0,1000.D0,1.D0,6.D0,1.D0,0.D0,0.3D0,0.8D0,0.3D0,31.D0,! 90
+     &     1.D0,6.5D0,1.D0,1.D0,0.D0,1.0D0,0.004D0,1.D0,0.33D0,1.D0,   ! 100
+     &     1.D0,0.D0,2.D0,0.3D0,0.15D0,3*0.D0,20.D0,0.25D0,            ! 110
+     &     0.D0,0.7D0,0.3D0,0.D0,0.D0,1.D0,3*0.D0,1.D0,                ! 120
+     &     0.3D0,0.D0,0.3D0,1.D0,1.D0,1.D0,6.D0,1.D0,1.D0,6.D0,        ! 130
+     &     0.0001D0,0.5D0,31.10362D0,-15.29012D0,6.5D0,                ! 135
+     &     0.D0,4 *0.D0,                                               ! 140
+     &     1.D0,0.D0,0.5D0,0.D0,0.5D0,0.D0,0.3D0,0.8D0,0.08D0,0.004D0, ! 150
+     &     2.D0,1.D0,1.D0,1.D0,1.D0,1.D0,0.D0,1.D0,2*0.D0,             ! 160      
+     &     40*0.D0/                                                    ! 200
+c     last in use:93
+      DATA IPAR /9*0,1,0,1,8*0,20*0,    ! 40
+     &     9*0,0,2,9*0,                 ! 60
+     &     100,25*0,2,1,0,0,0,1,0,7*0/  ! 100   
+
+C...Fragmentation of nuclei
+      DATA KODFRAG /0/
+C...Debug label and event counter
+      DATA Ndebug /0/
+      DATA Ncall /0/
+
+      END
+
+C=======================================================================
+
+      SUBROUTINE PARAM_PRINT(LUN)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON /S_CZLEAD/ CLEAD, FLEAD
+      COMMON /S_CPSPL/ CCHIK(4,99)
+      COMMON /S_DEBUG/ Ncall, Ndebug, Lunn
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+      DOUBLE PRECISION STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      COMMON /S_CUTOFF/ STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      DOUBLE PRECISION FAin, FB0in
+      COMMON /S_CZDIS/ FAin, FB0in
+
+      DOUBLE PRECISION PPT02
+      COMMON /S_CQDIS2/ PPT02(44)
+      DOUBLE PRECISION PPT0,ptflag
+      COMMON /S_CQDIS/ PPT0(35),ptflag
+      SAVE
+
+      WRITE (LUN, 25)
+25      FORMAT( /,1x,40('-'), /
+     +   ' SIBYLL MONTE CARLO PROGRAM. Version 2.3.f',/,
+     +    1x,40('-'),/'  List of parameters: ' )
+
+      WRITE (LUN, 31) FAin, FB0in
+31      FORMAT ('  Parameters of longitudinal fragmentation: ', /,
+     +          '   f(z) = (1-z)**a * exp(-b * mt**2/z) ', /,
+     +          '   a = ', f9.3, 3x, ' b = ', f9.3, ' GeV**-2' )
+      WRITE (LUN, 32) CLEAD, 1.D0/FLEAD-1.D0
+32      FORMAT ('  Parameters of leading fragmentation: ', /,
+     +   '   f(z) = c + (1-z)**a ', /,
+     +   '   c = ',f9.3,3x,' a = ',f9.3) 
+
+        WRITE (LUN, 33) str_mass_val, str_mass_sea
+ 33     FORMAT ('  Mass cuts ', /,
+     +          '   val = ', f9.3, 3x, ' sea = ', f9.3, ' GeV' )
+
+      WRITE (LUN, 35) PPT02(1), PPT02(3), PPT02(11),ppt02(10),ppt02(20)
+35      FORMAT ('   <pT> of sea partons ', /,
+     +   3x,'<pT>(u/d) ',F8.3,2x,'<pT>(s) ',f8.3,2x,'<pT>(qq) ',f8.3,
+     +     2x,'<pT>(val) ',f8.3,2x,'<pT>(sea) ',f8.3)
+
+      WRITE (LUN, 120) (PAR(K),K=1,24)
+120      FORMAT (1x, ' Parameters of flavor formation: ',/,
+     +   3x,'PAR(1) = Prob(qq)/Prob(q)              = ',F10.2,/,
+     +   3x,'PAR(2) = Prob(s)/Prob(u)               = ',F10.2,/,
+     +   3x,'PAR(3) = Prob(us)/Prob(ud)             = ',F10.2,/,
+     +   3x,'PAR(4) = Prob(ud_0)/Prob(ud_1)         = ',F10.2,/,
+     +   3x,'PAR(5) = Prob(Vector)/Prob(Scalar)     = ',F10.2,/,
+     +   3x,'PAR(6) = Prob(K*)/Prob(K)              = ',F10.2,/,
+     +   3x,'PAR(7) = Prob(spin 3/2)/Prob(spin=1/2) = ',F10.2,/,
+     +   3x,'PAR(8) = Prob(B-M-Bbar)/Prob(B-Bbar)   = ',F10.2,/,
+     +   3x,'PAR(9) = Phase space suppression of MI = ',F10.2,/,
+     +   3x,'PAR(10)= Low-energy limit for pt cutoff= ',F10.2,/,
+     +   3x,'PAR(11)= Pt cutoff factor for exp      = ',F10.2,/,
+     +   3x,'PAR(12)= Pt cutoff factor for exp      = ',F10.2,/,
+     +   3x,'PAR(13)= max. mass in diffraction      = ',F10.2,/,
+     +   3x,'PAR(14)= Prob(qq)/Prob(q) std. value   = ',F10.2,/,
+     +   3x,'PAR(15)= Prob(qq)/Prob(q) in hard jets = ',F10.2,/,
+     +   3x,'PAR(16)= Prob(qq)/Prob(q) in diff.     = ',F10.2,/,
+     +   3x,'PAR(17)= not used                      = ',F10.2,/,
+     +   3x,'PAR(18)= not used                      = ',F10.2,/,
+     +   3x,'PAR(19)= not used                      = ',F10.2,/,
+     +   3x,'PAR(20)= not used                      = ',F10.2,/,
+     +   3x,'PAR(21)= not used                      = ',F10.2,/,
+     +   3x,'PAR(22)= effective scale in PDF (Q2)   = ',F10.2,/,
+     +   3x,'PAR(23)= not used                      = ',F10.2,/,
+     +   3x,'PAR(24)= Prob(s->c)                    = ',F10.2  )
+
+      WRITE (LUN, 130) (IPAR(K),K=1,17)
+130      FORMAT (1x, ' Model switches: ',/,
+     +   3x,'IPAR(1) = not used                      =',I4,/,
+     +   3x,'IPAR(2) = not used                      =',I4,/,
+     +   3x,'IPAR(3) = exponential pt                =',I4,/,
+     +   3x,'IPAR(4) = decouple qq/q in val. strings =',I4,/,
+     +   3x,'IPAR(5) = decouple qq/q in hm. diff.    =',I4,/,
+     +   3x,'IPAR(6) = decouple qq/q in hard strings =',I4,/,
+     +   3x,'IPAR(7) = remnant (not implemented yet) =',I4,/,
+     +   3x,'IPAR(8) = jet kinematic pdf set (DO/GRV)=',I4,/,
+     +   3x,'IPAR(9) = smear lowest diff. mass       =',I4,/,
+     +   3x,'IPAR(10)= high mass diff. mode (d:ON)   =',I4,/,
+     +   3x,'IPAR(11)= leading vec. meson prod. model=',I4,/,
+     +   3x,'IPAR(12)= inel. screening in pAir       =',I4,/,
+     +   3x,'IPAR(13)= decouple qq/q in val. strings =',I4,/,
+     +   3x,'IPAR(14)= fireball model                =',I4,/,
+     +   3x,'IPAR(15)= charm production              =',I4,/,
+     +   3x,'IPAR(16)= charmed transverse momentum   =',I4,/,
+     +   3x,'IPAR(17)= full charm model              =',I4 )
+
+      WRITE (LUN, 40)
+      WRITE (LUN, 41) CCHIK (1,13), CCHIK(2,13)
+ 40   FORMAT(' Parameters of hadron splitting ' )
+ 41   FORMAT('   p -> [(ud) u] splitting: alpha = ', F10.3, /,
+     +       '   p -> [(uu) d] splitting: alpha = ', F10.3 )
+c     print rho0 splitting
+      WRITE (LUN, 42) CCHIK (1,27), CCHIK(2,27)        
+ 42   FORMAT(' rho0 -> [u ubar] splitting: alpha = ', F10.3, /,
+     +       ' rho0 -> [d dbar] splitting: alpha = ', F10.3 )
+c     print d+ splitting
+      WRITE (LUN, 43) CCHIK (4,59), CCHIK(2,59)        
+ 43   FORMAT('  dp -> [c ubar] splitting: alpha = ', F10.3, /,
+     +       '  dp -> [dbar c] splitting: alpha = ', F10.3 )
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIB_LIST(LUN)
+
+C-----------------------------------------------------------------------
+C...This routine prints the event record for the
+C.  current event on unit LUN
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON /S_DEBUG/ Ncall, Ndebug, Lunn
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+
+      INTEGER NFORIG,NPORIG,NIORIG,IPFLAG,IIFLAG,KINT
+      COMMON /S_PARTO/ NFORIG(NP_max),NPORIG(NP_max),NIORIG(NP_max),
+     &IPFLAG,IIFLAG,KINT
+      INTEGER LLIST1
+      COMMON /S_PLIST1/ LLIST1(8000)
+C     parameters that represent: NW: max. number of wounded nucleons,
+C     NS,NH: max. number of soft and hard interactions
+c      PARAMETER (NW_max = 20)
+C     The COMMON block /S_CHIST/ contains information about the
+C     the structure of the  generated event:
+C     NWD   = number of wounded nucleons
+C     NJET = total number of hard interactions
+C     NSOF = total number of soft interactions
+C     NNSOF (1:NW) = number of soft pomeron cuts in each interaction
+C     NNJET (1:NW) = number of minijets produced in each interaction 
+C     JDIF(1:NW) = diffraction code 
+C                  0 : non-diff,
+C                  1 : beam-diff
+C                  2 : target-diff
+C                  3 : double-diff
+      INTEGER NNSOF,NNJET,JDIF,NWD,NJET,NSOF
+      COMMON /S_CHIST/ NNSOF(NW_max),NNJET(NW_max),
+     &     JDIF(NW_max),NWD,NJET,NSOF
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+      INTEGER IISO,ISPN
+      COMMON /S_SPN/ IISO(99), ISPN(99)
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+      CHARACTER*6 NAMP
+      COMMON /S_CNAM/ NAMP (0:99)
+      INTEGER IRMNT,KRB,KRT
+      DOUBLE PRECISION XRMASS,XRMEX
+      COMMON /S_RMNT/ XRMASS(2),XRMEX(2),IRMNT(NW_max),KRB,KRT(NW_max)
+
+      CHARACTER*7 CTGT(0:20)
+      CHARACTER CODE*18
+      CHARACTER*18 NAMDIF(0:3)
+      CHARACTER*18 NAMRMNT(0:3)
+      SAVE
+      DATA CTGT /'Air    ','Proton ',19*'Nucleus'/
+      DATA NAMDIF /'Non-diff. event   ',
+     &  'Beam diffraction  ','Target diffraction','Double diffraction'/
+      DATA NAMRMNT /'No resolvd remnant',
+     &  'Beam remnant     ','Target remnant    ','Double remnant    '/
+
+ 50   FORMAT(3X,88('-'),/,25X,'SIBYLL EVENT SUMMARY',25X,
+     &     /,3X,88('-'))
+ 52   FORMAT( 3X,'Beam + Target @ Energy:',2X,A6,2X,'+',2X,A7,2X,
+     &     '@',1p,E11.3,' GeV')
+ 53   FORMAT( 3X,'Beam + Target @ Energy:',2X,'Anti-',A6,2X,'+',2X,A7,
+     &     2X,'@',1p,E11.3,' GeV')
+
+      WRITE (LUN,50)
+      IF (KB .GT. 0 ) THEN
+        WRITE (LUN,52)
+     &     NAMP(IABS(KB)),CTGT(IAT),SQS
+      ELSE 
+        WRITE (LUN,53)
+     &     NAMP(IABS(KB)),CTGT(IAT),SQS
+      ENDIF
+      if(NWD.eq.1)THEN
+         WRITE (LUN,*) '  ',NAMDIF(JDIF(1))
+         IF(jdif(1).eq.0)
+     &    WRITE (LUN,*) '  ',NAMRMNT(abs(IRMNT(1)))
+      else
+         WRITE (LUN,*) '  ',NAMDIF(0)
+      endif
+
+      WRITE (LUN,*) '  A/N_w/N_s/N_j = ', IAT , NWD, NSOF, NJET
+      WRITE (LUN,100)
+
+C...Print particle list
+      kchar = 0
+      ibary = 0
+      ichmd = 0
+      istrg = 0
+      DO J=1,NP
+        L = MOD(LLIST(J),10000)
+        CODE = '                  '
+        CODE(1:6) = NAMP(IABS(L))
+        IF (L .LT. 0) CODE(7:9) = 'bar'
+        IF(IABS(LLIST(J)) .GT. 10000)   CODE(10:10) = '*'
+        WRITE (LUN,120) J, CODE, NIORIG(J),JDIF(NIORIG(J)),LLIST1(J), 
+     &       NPORIG(J), (P(J,K),K=1,4)
+        if(abs(LLIST(J)).LT.10000) then
+          kchar = kchar+sign(1,l)*ICHP(iabs(l))
+          ibary = ibary+sign(1,l)*IBAR(iabs(l))
+          ichmd = ichmd+sign(1,l)*ICHM(iabs(l))
+          istrg = istrg+sign(1,l)*ISTR(iabs(l))
+        endif
+      ENDDO
+      CALL PFSUM(1,NP,Esum,PXsum,PYsum,PZsum,NF)
+      WRITE(LUN,140) PXsum,PYsum,PZsum,Esum
+100      FORMAT(3X,'N  Particle',12X,'Int',2x,'Jdif',2x,'Prnt',2x,'Proc'
+     +         ,6x,'PX',9x,'PY',9x,'PZ',9x,'E', /, 3X,88('-'))
+120      FORMAT(I6,1X,A18,3I5,I8,2F10.3,1p,2E11.3)
+140      FORMAT(3X,88('-'),/,'  Tot =',41X,2F10.3,1p,2E11.3)
+         write(LUN,'(1x,a,i3,3x,a,i3)') ' Total charge:     ',kchar,
+     &        'total baryon number:',ibary
+         write(LUN,'(1x,a,i3,3x,a,i3)') ' Total strangeness:',istrg,
+     &        'total charm number: ',ichmd
+
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE KCODE (J,CODE,NC)
+
+C-----------------------------------------------------------------------
+C...Produce the code for parton J
+C.  Input K, Output CODE, NC=number of characters
+C..................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      CHARACTER*5 CODE
+      CHARACTER*1 NAMQ(4)
+      SAVE
+      DATA NAMQ /'u','d','s','c'/
+
+      CODE = '     '
+      IF(J.EQ.0)  THEN
+         CODE(1:3) = 'glu'
+         NC = 3
+         RETURN
+      ENDIF
+      JA = IABS(J)
+      J1 = MOD(JA,10)
+      J2 = (JA-J1)/10
+      IF(JA .GT. 10) THEN
+         CODE(1:1) = NAMQ(J2)
+         CODE(2:2) = NAMQ(J1)
+         NC = 2
+      ELSE
+         CODE(1:1) = NAMQ(J1)
+         NC = 1      
+      ENDIF
+      IF (J .LT. 0)  THEN
+         CODE(NC+1:NC+3) = 'bar'
+         NC = NC+3
+      ENDIF
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE SIB_PARTPR(LUN)
+
+C----------------------------------------------------------------
+C     prints the particles known to SIBYLL with their internal
+C     and PDG labels \FR'13
+C----------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+
+      CHARACTER*6 NAMP
+      COMMON /S_CNAM/ NAMP (0:99)
+      SAVE
+
+      WRITE(LUN,50)
+ 50   FORMAT(/,2X,16X,'SIBYLL PARTICLE TABLE:',/,2x,80('-'))
+      WRITE(LUN,100)
+ 100  FORMAT(2X,'Particle',4X,'SIB PID',6x,'SIB2PDG',6x,'SIB2PDG^-1', 
+     &     4x,'MASS',4x,'STRG',4x,'CHRM',4x,'BRYN'/, 2X,80('-'))
+
+      DO J=1,99
+         IA = ISIB_PID2PDG( j )         
+         IF(IA.ne.0)THEN
+            ISIBPDG2PIDIA=ISIB_PDG2PID( IA )
+         ELSE
+            WRITE(LUN,'(1X,A,I2)') 'PDG conversion not found! pid=', j
+         ENDIF         
+         WRITE (LUN,120)  NAMP(J), J, IA, ISIBPDG2PIDIA, AM(J), ISTR(J),
+     &        ICHM(J), IBAR(J)
+      ENDDO
+ 120  FORMAT(4X,A6,4X,I4,7X,I7,8X,I4,5X,F9.3,3(6X,I2))
+
+      END
+
+C=======================================================================
+
+      INTEGER FUNCTION ISIB_PID2PDG(Npid)
+
+C----------------------------------------------------------------
+C     conversion of SIBYLL internal particle code to PDG standard
+C
+C     input:     Npid        internal particle number
+C     output:    sib_pid2pdg  PDG particle number
+C
+C     based on similar phojet function \FR'13
+C----------------------------------------------------------------
+      COMMON /S_PDG2PID/ ID_PDG_LIST(99),ID_LIST(577)
+      INTEGER NPIDA,NPID
+      SAVE
+
+      Npida = iabs(Npid)
+      ISIB_PID2PDG = ID_PDG_LIST(Npida)
+      IF(NPID.lt.0)ISIB_PID2PDG = isign(ISIB_PID2PDG,Npid)
+      RETURN
+      END
+
+C=======================================================================
+
+      INTEGER FUNCTION ISIB_PDG2PID(Npdg)
+
+C-----------------------------------------------------------------------
+C     conversion of PDG standard particle code to SIBYLL internal
+C
+C     input:     Npdg        PDG particle number
+C     output:    sib_pdg2pid internal particle id
+C
+C     based on similar phojet function \FR'13
+C----------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /S_PDG2PID/ IPID_PDG_LIST(99),ID_LIST(577)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+
+      DOUBLE PRECISION CBR
+      INTEGER KDEC,LBARP,IDB
+      COMMON /S_CSYDEC/ CBR(223+16+12+8), KDEC(1338+6*(16+12+8)),
+     &     LBARP(99), IDB(99)
+      SAVE
+
+      Nin = abs(Npdg)
+      if((Nin.gt.999999).or.(Nin.eq.0)) then
+C  invalid particle number
+        if(ndebug.gt.5) write(6,'(1x,A,I10)')
+     &    ' ISIB_PDG2PID: invalid PDG ID number ',Npdg
+        ISIB_PDG2PID = 0
+        return
+      else If(Nin.le.577) then
+C  simple case
+        Nout = Nin
+      else
+C  use hash algorithm
+        Nout = mod(Nin,577)
+      endif
+
+ 100  continue
+
+C  particle not in table
+      if(ID_list(Nout).Eq.0) then
+         if(ndebug.gt.0) write(6,'(1x,A,I10)')
+     &    ' ISIB_PDG2PID: particle not in table ',Npdg
+        ISIB_PDG2PID = 0
+        return
+      endif
+      ID_out = ID_list(Nout)
+      IF(abs(ID_out).gt.99)then
+         ISIB_PDG2PID = 0
+         return
+      else
+
+         if(IPID_PDG_LIST(ID_list(Nout)).eq.Nin) then
+C     particle ID found
+            ISIB_PDG2PID = ID_list(Nout)
+            if (NPDG.lt.0) ISIB_PDG2PID = lbarp( ISIB_PDG2PID )
+            return
+         else
+C     increment and try again
+            Nout = Nout + 5
+            If(Nout.gt.577) Nout = Mod(Nout,577)
+            goto 100
+         endif
+      endif
+      END
+
+C=======================================================================
+
+      SUBROUTINE PDG_INI
+
+C-----------------------------------------------------------------------
+C     PDG conversion blocks \FR'13
+C----------------------------------------------------------------
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER ( ID_PDG_MAX = 260 )
+      COMMON /S_PDG2PID/ ID_PDG_LIST(99),ID_LIST(577)
+      SAVE
+      DATA ID_PDG_LIST /22,-11,11,-13,13,111,211,-211,321,-321, !10
+     &     130,310,2212,2112,12,-12,14,-14,-2212,-2112,         !20
+     &     311,-311,221,331,213,-213,113,323,-323,313,          !30
+     &     -313,223,333,3222,3212,3112,3322,3312,3122,2224,     !40
+     &     2214,2114,1114,3224,3214,3114,3324,3314,3334,0,      !50
+     &     202212,202112,212212,212112,4*0,411,-411,            !60
+     &     900111,900211,-900211,7*0,                           !70
+     &     421,-421,441,431,-431,433,-433,413,-413,423,         !80
+     &     -423,0,443,4222,4212,4112,4232,4132,4122,-15,        !90
+     &     15,-16,16,4224,4214,4114,4324,4314,4332/
+
+      IF(Ndebug.gt.2)
+     & WRITE(LUN,*) ' INITIALIZING PDG TABLES..'
+      CALL SIB_CPCINI(ID_pdg_max,ID_pdg_list,ID_list)
+      
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIB_CPCINI(Nrows,Number,List)
+
+C-----------------------------------------------------------------------
+C     initialization of particle hash table
+C
+C     input:   Number     vector with Nrows entries according to PDG
+C                         convention
+C
+C     output:  List       vector with hash table
+C
+C     (this code is based on the function initpns written by
+C      Gerry Lynch, LBL, January 1990)
+C
+C***********************************************************************
+      IMPLICIT NONE
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      integer Number(*),List(*),Nrows
+      Integer Nin,Nout,Ip,I
+      SAVE
+
+      do I = 1,577
+        List(I) = 0
+      enddo
+
+C    Loop over all of the elements in the Number vector
+
+        Do 500 Ip = 1,Nrows
+            Nin = Number(Ip)
+
+C    Calculate a list number for this particle id number
+            If(Nin.Gt.999999.or.Nin.Le.0) Then
+                 Nout = -1
+            Else If(Nin.Le.577) Then
+                 Nout = Nin
+            Else
+               Nout = Mod(Nin,577)
+            End If
+
+ 200        continue
+
+            If(Nout.Lt.0) Then
+C    Count the bad entries
+               IF(Ndebug.gt.3) Write(LUN,'(1x,a,i10)')
+     &            ' SIB_CPCINI: invalid particle ID',Nin
+               Go to 500
+            End If
+            If(List(Nout).eq.0) Then
+                List(Nout) = Ip
+            Else
+                If(Nin.eq.Number(List(Nout))) Then
+                  IF(Ndebug.gt.3)Write(LUN,'(1x,a,i10)')
+     &              ' SIB_CPCINI: double particle  ID',Nin
+                End If
+                Nout = Nout + 5
+                If(Nout.Gt.577) Nout = Mod(Nout, 577)
+
+                Go to 200
+            End If
+ 500    Continue
+
+      END
+C=======================================================================
+
+      SUBROUTINE PFSUM(N1,N2,ETOT,PXT,PYT,PZT,NF)
+
+C-----------------------------------------------------------------------
+C...Return the energy,px,py,pz and the number of stable
+C.  particles in the list between N1 and N2
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+c      COMMON /S_PLIST/ P(8000,5), LLIST(8000), NP
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+      SAVE
+
+      NF=0
+      ETOT=0.D0
+      PXT=0.D0
+      PYT=0.D0
+      PZT=0.D0
+      DO J=N1,N2
+         L = LLIST(J)     
+         IF (IABS(L) .LT. 10000)  THEN
+           NF = NF+1
+           ETOT = ETOT + ABS( P(J,4) )
+           PXT = PXT + P(J,1)
+           PYT = PYT + P(J,2)
+           PZT = PZT + P(J,3)
+         ENDIF
+      ENDDO
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE QNUM (JQ,JS,JC,JB,JBA, NC, NF)
+
+C-----------------------------------------------------------------------
+C...Return the quantum numbers of one event
+C.  JQ = charge, JB = baryon number, JS = strangeness, JC = charmedness
+C.  JBA = (number of baryons+antibaryons)
+C.  NC  = number of charged particles
+C.  NF  = number of final particles
+C..................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+
+      INTEGER IISO,ISPN
+      COMMON /S_SPN/ IISO(99), ISPN(99)
+
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+      SAVE
+
+      JQ = 0
+      JB = 0
+      JS = 0
+      JC = 0
+      JBA= 0
+      NC = 0
+      NF = 0
+      DO J=1,NP
+          L = LLIST(J)
+          LL = IABS(L)
+          IF (LL .LT. 10000)  THEN
+              IF(ICHP(LL) .NE. 0) NC = NC + 1
+              NF = NF + 1
+              JQ = JQ + ICHP(LL)*ISIGN(1,L)
+              JB = JB + IBAR(LL)*ISIGN(1,L)
+              JBA= JBA+ IBAR(LL)
+              JS = JS + ISTR(LL)*ISIGN(1,L)
+              JC = JC + ICHM(LL)*ISIGN(1,L)
+          ENDIF
+      ENDDO
+      RETURN
+      END
+
+C=======================================================================
+
+      BLOCK DATA KFLV_INI
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      INTEGER KFLV
+      COMMON /S_KFLV/ KFLV(4,43)
+      SAVE
+      DATA (KFLV(1,i),i=1,4) /6,8,10,71/
+      DATA (KFLV(1,i),i=5,43) /6*0,40,13,34,84,6*0,13,14,39,89,6*0,
+     &     34,39,37,87,6*0,84,85,87/      
+      DATA (KFLV(2,i),i=1,4) /7,6,21,59/
+      DATA (KFLV(2,i),i=5,43) /6*0,13,14,39,89,6*0,14,43,36,86,6*0,
+     &     39,36,38,88,6*0,84,85,87/     
+      DATA (KFLV(3,i),i=1,4) /9,22,33,74/
+      DATA (KFLV(3,i),i=5,43) /6*0,34,39,35,87,6*0,39,36,38,88,6*0,
+     &     35,36,49,99,6*0,84,85,87/
+      DATA (KFLV(4,i),i=1,4) /72,60,75,83/
+      DATA (KFLV(4,i),i=5,43) /6*0,84,85,87,0,6*0,85,86,88,0,6*0,
+     &     87,88,99,0,6*0,0,0,0/
+
+      END
+C=======================================================================
+
+      SUBROUTINE SIB_I4FLAV (IFL1, IFL2_A, IRNK, IFL2, KF)
+
+C-----------------------------------------------------------------------
+C.  This subroutine receives as input IFL1 the flavor code
+C.  of a quark (antiquark) and  generates the antiquark (quark)
+C.  of flavor code IFL2 that combine with the original parton
+C.  to compose an hadron of code KF.
+C.
+C.  updated to 4 FLAVORS \FR'13
+C.  Baryon sector is from jetset code
+C.  assuming D*_s+- are J=1, only Charm=1 baryons
+C.
+C.  If (IFL2_A.NE.0) returns an hadron KF composed of IFL1 and IFL2_A
+c
+c     Input: IFL1 - flavor of first quark
+c            IFL2_A - flavor of second quark ( if 0 randomly chosen ) 
+c            IRNK - position in hadron chain
+c     Output: IFL2 - flavor of second quark partner to be passed on
+c             KF - final hadron
+C-----------------------------------------------------------------------
+Cf2py integer,intent(out) :: ifl2
+Cf2py integer,intent(out) :: kf
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)      
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+      DIMENSION KFLA(4,4,2), CDIAG(16), KDIAG(8)
+      DIMENSION KBAR(40), CFR(28), KFR(80)
+      SAVE
+      DATA KFLA /0,8,10,71,7,0,22,59,9,21,0,74,72,60,75,0, ! spin-zero mesons
+     +     0,26,29,80,25,0,31,78,28,30,0,76,81,79,77,0/ ! spin-one mesons
+      DATA CDIAG/.5D0,.25D0,.5D0,.25D0,1.D0,.5D0,2.D0,1.D0, !spin-zero diagonal mesons
+     +     .5D0,0.D0,.5D0,0.D0,1.D0,1.D0,2.D0,1.D0/ ! spin-one diagonal mesons
+      DATA KDIAG /6,23,24,73,27,32,33,83/
+      DATA KBAR /13,14,34,35,36,37,38,84,85,86, !jetset -> sibyll part. code map
+     +     87,88,99,3*0,39,89,87,88, 
+     +     40,41,42,43,44,45,46,47,48,49,      
+     +     94,95,96,97,98,99,4*0/ ! spin-3/2 css baryon added to 1/2 css
+      DATA CFR /0.75D0,0.D0,0.5D0,0.D0,0.D0,1.D0,0.1667D0,0.3333D0,
+     $          0.0833D0,0.6667D0,0.1667D0,0.3333D0,-3.D0,1.D0,-2.D0,
+     $          -2.D0,1.D0,0.D0,0.D0,-3.D0,1.D0,1.D0,1.D0,5*0.D0/
+      DATA KFR/0,16,17,19,100,104,109,115,0,26,27,29,122,126,131,137
+     +  ,0,40,42,47,144,158,178,205,0,1,3,6,10,15,21,28,0,0,56,57,240,
+     +  246,256,271,0,0,1,3,6,10,15,21,60,61,64,70,292,307,328,356,
+     +  0,1,3,6,10,15,21,28,16*0/
+
+      IF(NDEBUG.gt.6)
+     &     WRITE(LUN,*)' SIB_FLAV: input:',IFL1, IFL2_A, IRNK, IFL2, KF
+
+c     set rho0 / ( omega, phi ) ratio, i.e. I=1 to I=0
+c     default: 0.5, 0.0 ( phi only created from s-sbar)
+      CDIAG(8+1) =  1.D0-PAR(143) ! u-flavor, Prob. I=1 vs 0
+      CDIAG(8+3) =  1.D0-PAR(143) ! d-flavor, Prob. I=1 vs 0
+
+      XDIQ = 1.D0
+      
+      IARNK = IABS(IRNK)
+      IFLA = IABS(IFL1)
+c     check if diq production allowed?
+c     for strings with leading diquarks the immediate formation of another diquark may be forbidden
+      if(ifla.gt.100.and.mod(ifla,100).lt.10)then
+         XDIQ = PAR(158)
+         ifl1 = mod(ifl1,100)
+         IFLA = IABS(IFL1)
+      endif
+      
+      IFL2A = IFL2_A
+      IF (IFL2A .NE. 0)  THEN
+c     combine existing flavors to hadron
+c     three cases: input diquark (MB=2): need to sample additional quark,
+c                  input quark (MB=0,1): sample quark (0) or diquark (1)?         
+         IFL2A = MOD(IFL2A,100)
+         IFL2 = IFL2A
+         IFLB = IABS(IFL2A)
+         MB = 0
+         IF (IFLB .GT. 10)   MB=1
+         IF (IFLA .GT. 10)   MB=2
+      ELSE
+c     sample new flavor
+         MB = 2
+         IF (IFLA .LT. 10)   THEN
+             MB = 1
+             IF ((1.D0+PAR(1))*S_RNDM(0).LT. 1.D0)  MB=0
+             XDIQ = 1.D0             
+c     suppress baryons close to the string end
+c     IPAR(55) defines largest forbidden rank
+c     PAR(101) is the rejection probability
+             IF (IPAR(54).eq.1)THEN
+                IF(IARNK.le.IPAR(55).and.S_RNDM(1).lt.PAR(101)) MB=0
+             ENDIF
+         ENDIF
+      ENDIF
+
+ 50   IF (MB .EQ. 0)  THEN
+c     flavor open, sample from u,d,s,c
+         IF (IFL2A.EQ.0)THEN
+            IF(IPAR(69).eq.2)THEN
+c     asymmetric between u,d
+               IFL2 = MIN(2,1+INT((2.D0+PAR(115))*S_RNDM(0)))
+               IFLS = 3*INT(INT((2.D0+PAR(2))*S_RNDM(1))*0.5D0)
+               IFL2 = MAX(IFL2,IFLS)
+               IFL2 = ISIGN(IFL2,-IFL1)
+            ELSE
+c     symmetric in u,d
+               IFL2=ISIGN(1+INT((2.D0+PAR(2))*S_RNDM(0)),-IFL1)
+            ENDIF
+            IF(IABS(IFL2).eq.3) THEN
+               IF(S_RNDM(1).lt.PAR(24)*PAR(125))
+     +              IFL2=ISIGN(4,-IFL1)
+            ENDIF
+         ENDIF
+         IFLD = MAX(IFL1,IFL2)
+         IFLE = MIN(IFL1,IFL2)
+         GOTO 100
+      ENDIF
+
+C...  Decide if the diquark must be split
+c     if diquark is from previous splitting (popcorn) do NOT split diquark
+c     jump to sample quark and form baryon      
+      IF (MB .EQ. 2 .AND. IFLA .GT. 100)   THEN
+         IFLA = MOD(IFLA,100)
+           GOTO 200
+      ENDIF
+c     split diquark? if yes sample single flavor and form meson
+c     diquark with any flavor combination is passed on with id+100        
+      IF (MB .EQ. 2 .AND. IFL2A .EQ. 0)   THEN
+          IF (S_RNDM(0) .LT. PAR(8))  THEN
+             MB = 0
+             IFLG = MOD(IFL1,10)
+             IFLH =(IFL1-IFLG)/10
+             IF (S_RNDM(1) .GT. 0.5D0)  THEN
+                IFLDUM = IFLG
+                IFLG = IFLH
+                IFLH = IFLDUM
+             ENDIF
+             IFL11=IFLG
+             IFL22=ISIGN(1+INT((2.D0+PAR(2))*S_RNDM(2)),-IFL1)
+             IFLD = MAX(IFL11,IFL22)
+             IFLE = MIN(IFL11,IFL22)
+             IFL2 = -IFLH*10+IFL22
+             IF (S_RNDM(3) .GT. 0.5D0)  IFL2 = IFL22*10-IFLH
+c     limit diquark splitting to B-M-B (default: yes)             
+             IF(IPAR(92).eq.1) IFL2 = IFL2+ISIGN(100,IFL2)
+          ENDIF
+      ENDIF
+       
+C...Form a meson: consider spin and flavor mixing for the diagonal states
+ 100  IF (MB .EQ. 0)  THEN
+         IF1 = IABS(IFLD)
+         IF2 = IABS(IFLE)
+         IFLC = MAX(IF1,IF2)
+         KSP = INT(PAR(5)+S_RNDM(0))
+         KSP = MIN(KSP,1)
+         IF (IFLC.EQ.3)  KSP = INT(PAR(6)+S_RNDM(1))
+         IF (IFLC.EQ.4)  KSP = INT(PAR(6)+S_RNDM(2))
+         IF (IF1 .NE. IF2)   THEN
+            KF = KFLA(IF1,IF2,KSP+1)
+         ELSE
+            R = S_RNDM(0)
+            JF=1+INT(R+CDIAG(8*KSP+2*IF1-1))+
+     +             INT(R+CDIAG(8*KSP+2*IF1))
+            JF = MIN(JF,4)
+            KF=KDIAG(JF+4*KSP)
+c     suppress neutral pions
+            IF(KF.eq.6)THEN
+               IF(IPAR(82).eq.1.and.
+     +              S_RNDM(kf).lt.PAR(137))then
+                  IF(IFL2A.ne.0) goto 100
+                  IF(IFLA.gt.10) mb = 2                  
+                  GOTO 50
+               endif
+c     suppress neutral pions, depending on rank
+               IF(IPAR(82).eq.2.and.S_RNDM(3).lt.PAR(137).and.
+     +              irnk.gt.0.and.irnk.lt.2) then
+                  IF(IFL2A.ne.0) goto 100
+                  IF(IFLA.gt.10) mb = 2
+                  GOTO 50
+               endif
+            ENDIF
+c     suppress rank1 (leading) omega
+            IF(KF.eq.32)THEN
+               IF(IPAR(83).ne.0.and.
+     +              S_RNDM(kf).lt.PAR(138))then
+                  IF(IFL2A.ne.0) goto 100
+                  IF(IFLA.gt.10) mb = 2                  
+                  GOTO 50
+               endif
+            ENDIF
+         ENDIF
+c         PRINT*,' I4FLAV returns :(IFL1,IFL2,LL)',IFL1,IFL2,KF
+        IF(NDEBUG.gt.6)
+     &     WRITE(LUN,*)' SIB_FLAV: output:',IFL1, IFL2_A, IRNK, IFL2, KF
+         RETURN
+      ENDIF
+
+C...Form a baryon
+ 200  IF (IFL2A .NE. 0)   THEN
+         IF (MB .EQ. 1)  THEN
+            IFLD = IFLA
+            IFLE = IFLB/10
+            IFLF = MOD(IFLB,10)
+         ELSE
+            IFLD = IFLB
+            IFLE = IFLA/10
+            IFLF = MOD(IFLA,10)
+         ENDIF
+         LFR = 3+2*((2*(IFLE-IFLF))/(1+IABS(IFLE-IFLF)))
+         IF(IFLD.NE.IFLE.AND.IFLD.NE.IFLF)  LFR=LFR+1
+      ELSE
+ 110     CONTINUE
+         IF(MB.EQ.1)   THEN     ! generate diquark
+            IFLD = IFLA
+ 120        IFLE = 1+INT((2.D0+PAR(2)*PAR(3))*S_RNDM(0))
+            IFLF = 1+INT((2.D0+PAR(2)*PAR(3))*S_RNDM(1))          
+            IF(IFLD.NE.4)THEN
+               IF(IFLE.EQ.3)THEN 
+                  IF(S_RNDM(2).lt.PAR(24)*PAR(125))
+     +                 IFLE=4
+               ENDIF
+               IF(IFLF.EQ.3.and.IFLE.NE.4)THEN 
+                  IF(S_RNDM(3).lt.PAR(24)*PAR(125))
+     +                 IFLF=4
+               ENDIF
+            ENDIF
+            IF(IFLE.GE.IFLF.AND.PAR(4).LT.S_RNDM(4))    GOTO 120
+            IF(IFLE.LT.IFLF.AND.PAR(4)*S_RNDM(5).GT.1.D0) GOTO 120     
+            IFL2=ISIGN(10*IFLE+IFLF,IFL1)
+         ELSE                   ! generate quark
+            IF(IPAR(69).eq.2)THEN
+c     asymmetric between u,d
+               IFL2 = MIN(2,1+INT((2.D0+PAR(115))*S_RNDM(6)))
+               IFLS = 3*(INT((2.D0+PAR(2))*S_RNDM(7))/2)
+               IFL2 = MAX(IFL2,IFLS)
+               IFL2 = ISIGN(IFL2,IFL1)
+            ELSE
+c     symmetric in u,d
+               IFL2=ISIGN(1+INT((2.D0+PAR(2))*S_RNDM(8)),IFL1)
+            ENDIF
+            IFLE=IFLA/10
+            IFLF=MOD(IFLA,10)
+            IF(IABS(IFL2).EQ.3.and.IFLF.ne.4.and.IFLE.ne.4) THEN
+               IF(S_RNDM(9).lt.PAR(24)*PAR(125))
+     +              IFL2=ISIGN(4,IFL1)
+            ENDIF
+            IFLD=IABS(IFL2)
+         ENDIF
+C...SU(6) factors for baryon formation
+         LFR=3+2*((2*(IFLE-IFLF))/(1+IABS(IFLE-IFLF)))
+         IF(IFLD.NE.IFLE.AND.IFLD.NE.IFLF)  LFR=LFR+1
+         WT = CFR(2*LFR-1)+PAR(7)*CFR(2*LFR)
+         IF(IFLE.LT.IFLF)  WT=WT/3.D0
+         IF (WT.LT.S_RNDM(0)) GOTO 110
+      ENDIF
+
+C...Form Baryon
+      IFLG=MAX(IFLD,IFLE,IFLF)
+      IFLI=MIN(IFLD,IFLE,IFLF)
+      IFLH=IFLD+IFLE+IFLF-IFLG-IFLI
+c      IF(IFLG+IFLH.gt.7) GOTO 200 ! forbid double charmed
+      KSP=2+2*INT(1.D0-CFR(2*LFR-1)+(CFR(2*LFR-1)+PAR(7)*
+     1       CFR(2*LFR))*S_RNDM(0))
+
+C...Distinguish Lambda- and Sigma- like particles
+      IF (KSP.EQ.2.AND.IFLG.GT.IFLH.AND.IFLH.GT.IFLI)  THEN
+         IF(IFLE.GT.IFLF.AND.IFLD.NE.IFLG) KSP=2+INT(0.75D0+S_RNDM(1))
+         IF(IFLE.LT.IFLF.AND.IFLD.EQ.IFLG) KSP=3
+         IF(IFLE.LT.IFLF.AND.IFLD.NE.IFLG) KSP=2+INT(0.25D0+S_RNDM(2))
+      ENDIF
+      KF=KFR(16*KSP-16+IFLG)+KFR(16*KSP-8+IFLH)+IFLI
+      IF(KBAR(KF-40).eq.0)THEN
+         WRITE(LUN,*)' jetset code missing,flvs:',kf,IFLG,IFLH,IFLI
+         CALL SIB_REJECT('SIB_I4FLAV      ')
+      ENDIF
+      KF=KBAR(KF-40)
+      IF(KF.le.14)THEN
+         IF(PAR(106).gt.S_RNDM(3).and.IARNK.le.IPAR(61)) KF=KF-13+51
+     &        +2*INT(PAR(108)+S_RNDM(4))
+      ENDIF
+      KF=ISIGN(KF,IFL1)
+c     if leading baryon, mark quark to supress baryon production in the next iteration
+c     i.e. forbid: Blead-Bbar-B combination
+      if(iarnk.eq.1.and.IPAR(93).eq.1.and.iabs(mod(ifl1,100)).gt.10)then
+         IFL2 = IFL2 + ISIGN(100,IFL2)
+      endif
+
+      IF(NDEBUG.gt.6)
+     &     WRITE(LUN,*)' SIB_FLAV: output:',IFL1, IFL2_A, IRNK, IFL2, KF
+      
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE SIB_ICFLAV( Q2, IS0, IS, IFL )
+
+C-----------------------------------------------------------------------
+C     Routine that samples symmetric between the available flavors
+C     Input: Q2 - mass scale, usually filled with s_hat
+C           IS0 - input flavor sign
+C     
+C     Output: IFL - flavor code: u,d,s,c or anti-quarks
+C              IS - flavor sign: quark or anti-quark, if 0 passed then
+C                   a new value is sampled      
+C     Parameters:   kT_s and kT_c i.e. width of the fermi function
+C-----------------------------------------------------------------------
+C     f2py double precision,intent(in) :: q2
+Cf2py integer,intent(in) :: is0
+Cf2py integer,intent(out) :: is
+Cf2py integer,intent(out) :: ifl
+      IMPLICIT NONE
+      DOUBLE PRECISION Q2
+      INTEGER IFL,IS
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      
+      DOUBLE PRECISION XMS2,XMC2,P_S,P_C,S_RNDM,QMASS,FERMI
+      INTEGER IFL1,IS0
+      
+      IF( NDEBUG.gt.6 )
+     &     WRITE(LUN,*)'  SIB_ICFLAV: input (Q2,IFL,IS):',Q2,IFL,IS
+      
+c     quark or antiquark, sampled if input is zero
+      IF(IS0.eq.0) THEN
+         IS = -1 + 2*INT((2.D0-EPS8)*S_RNDM(IS0))
+      ELSE
+         IS = IS0
+      ENDIF
+      
+c     strange and charm quark masses
+      XMS2 = 4*QMASS(3)**2
+      XMC2 = 4*QMASS(4)**2 * PAR(153)
+      
+c     strange and charm parameters
+      IF(IPAR(89).eq.1)THEN
+c     exponential thresholds
+         P_S = PAR(154) *  EXP(-PAR(151)/Q2)
+         P_C = PAR(156) * EXP(-PAR(152)/Q2)
+      ELSE
+c     fermi func. threshold      
+c     P_s: 0 (u,d only) --> 1 (u,d,s equal) --> 2 (u+d,s+c equal)
+c     P_c: 0 (s only) --> 1 (s,c) equal
+         P_S = PAR(154) * FERMI( Q2, XMS2, -PAR(151) )
+     &        + PAR(155) * FERMI( Q2, XMC2, -PAR(152) )
+         P_C = PAR(156) * 0.5D0*FERMI( Q2, XMC2, -PAR(152) )
+      ENDIF
+      IF(NDEBUG.gt.6)THEN
+         WRITE(LUN,*)'  SIB_ICFLAV: (4*M_S**2, P_S, kT):',
+     &        xms2, P_s, PAR(151)
+         WRITE(LUN,*)'  SIB_ICFLAV: (4*M_C**2, P_C, kT):',
+     &        xmc2, P_c, PAR(152)
+      ENDIF
+
+c     sample u,d,s
+      IFL1 = MIN(INT((2.D0+P_S)*S_RNDM(IS0))+1,3)
+
+c     replace s with c
+      IFL1 = IFL1 + IFL1/3*MIN(INT(P_C+S_RNDM(IS0)),1)
+
+      IFL = IS*IFL1
+
+      IF(NDEBUG.gt.6)
+     &     WRITE(LUN,*)'  SIB_ICFLAV: output (Q2,IFL,IS):',Q2,IFL,IS
+
+      END
+C=======================================================================      
+      
+      SUBROUTINE SIB_DIFF (L0, JDIF1, Ecm, Irec, IREJ)
+
+C-----------------------------------------------------------------------
+C...diffraction dissociation
+C.  INPUT L0 = index of "beam particle"
+C.             the target is assumed to be a proton.
+C.    JDIF1 = 1  "beam diffraction"
+C.          = 2  "target diffraction"
+C.          = 3  "double diffraction"
+C     Irec  flag to avoid recursive calls of SIB_DIFF and SIB_NDIFF
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+      DOUBLE PRECISION XM2MIN,ALXMIN,SLOP0,ASLOP,BSLOP,XMASS
+      COMMON /S_DIFMAss/ XM2MIN(6),ALXMIN(6),SLOP0,ASLOP,BSLOP,XMASS(2)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+
+      INTEGER NFORIG,NPORIG,NIORIG,IPFLAG,IIFLAG,KINT
+      COMMON /S_PARTO/ NFORIG(NP_max),NPORIG(NP_max),NIORIG(NP_max),
+     &IPFLAG,IIFLAG,KINT
+
+      INTEGER LRNK
+      COMMON /SIB_RNK/ LRNK(8000)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+
+      INTEGER IISO,ISPN
+      COMMON /S_SPN/ IISO(99), ISPN(99)
+
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      
+      DIMENSION P0(5),P1(5),P2(5)
+      
+C     mapping array from particle space to diff. mass
+c     six groups: proton, pion, kaons, hyperons,
+c                 charmed mesons, charmed baryons
+      INTEGER KK,I
+      DIMENSION KK(99)      
+      SAVE
+      DATA (KK(I), I= 1,39) /5*0,3*2,4*3,2*1,6*0,6*2,3,6*2,6*4/      
+      DATA (KK(I), I=40,99) /19*0,5,5,10*0,5,5,0,5,5,11*0,6,6,6,9*0,6/
+
+      if(Ndebug.gt.1) 
+     &  WRITE(LUN,*)' SIB_DIFF: called with (L0,JDIF1,Ecm):',
+     &  L0,JDIF1,Ecm
+
+      if(Irec.eq.1) THEN
+         Ipflag= -1
+         IIFLAG = 1
+c     add incoming target particles
+         PZ = PAWT(ECM,AM(IABS(L0)),AM(13))
+         E2 = SQRT(PZ**2+AM2(13))
+         CALL ADD_PRTN(0.D0,0.D0,-PZ,E2,AM(13),13,-2,0,IREFout)
+
+c     add interactions
+        xjdif = dble(jdif1)
+        CALL ADD_PRTN(0.D0,0.D0,xjdif,ecm,0.D0,1,-1,IREFout,IREF)
+      ENDIF
+      CALL GET_NPP(NPP_0,NPP0_0)
+
+      IDBAD = 0
+      NTRY = 0
+ 20   IREJ = 1
+      CALL INI_PRTN_STCK(NPP_0,NPP0_0)
+
+      IF(NTRY.gt.20*Irec) RETURN ! zero tolerance for recursive calls 
+      NTRY = NTRY + 1
+     
+      LL = L0
+      LA = IABS(L0)
+      XM2MAX = PAR(13)*Ecm*Ecm
+      if(Ndebug.gt.1) 
+     &   WRITE(LUN,*)' SIB_DIFF: max diff. mass (M,Xi):',XM2MAX,PAR(13)
+      
+C...Double diffraction
+      IF (JDIF1 .EQ. 3)   THEN
+         K = MAX(1,2-IBAR(LA)-ISTR(LA)-ICHM(LA))
+         IF(Irec.eq.1) K = KK(LA)
+c     minimal mass if larger than particle mass plus one pion
+         XMMIN = XM2MIN(K)
+         IF(Irec.eq.0) XMMIN = MAX(XMMIN,(AM(LA)+AM(7)+0.02D0)**2)
+         XMB2 = XM2DIS(XMMIN,XM2MAX,1.D0)
+         XMB = SQRT (XMB2)
+         XMT2 = XM2DIS(XM2MIN(1),XM2MAX,1.D0)
+         XMT = SQRT (XMT2)
+         CALL TRANSFONSHELL(ECM,XMB,XMT,XM2MAX,0,P1,P2,IBAD)
+         IF(IBAD.ne.0) goto 20
+         XMASS(1) = XMB
+         IF(Irec.eq.1)THEN
+c     add diffractive system to parton stack
+            CALL ADD_PRTN_4VEC(P1,3,0,0,Iref)
+            CALL ADD_INT_REF(Iref,1)
+            CALL ADD_PRTN_4VEC(P2,-3,0,0,Iref)
+            CALL ADD_INT_REF(Iref,1)
+         ENDIF
+         if(Ndebug.gt.1) 
+     &        write(lun,*)' double-diff.: (kb,xmb,kt,xmt)',LL,xmb,13,xmt
+         CALL DIFDEC (LL, Irec, IDBAD, P1)
+         IF(IDBAD.eq.1)goto 20
+         Ipflag= -2
+         XMASS(2) = XMT
+         CALL DIFDEC (13, Irec, IDBAD, P2)
+         IF(IDBAD.eq.1)goto 20
+         IREJ = 0
+         RETURN
+      ENDIF
+
+C...Single diffraction
+      IF (JDIF1.EQ. 1)  THEN
+         K = MAX(1,2-IBAR(LA))
+         IF(Irec.eq.1) K = KK(LA)
+         EM  = AM(13)
+         EM2 = AM2(13)
+         L = 13
+         ZD = -1.D0
+         if(Ndebug.gt.1) 
+     &        write(lun,*)' single-diff. (beam): (kb)',LL
+      ELSE
+         K = 1
+         EM  = AM(LA)
+         EM2 = AM2(LA)
+         L = LL
+         LL = 13
+         ZD = +1.D0
+         if(Ndebug.gt.1) 
+     &        write(lun,*)' single-diff. (target): (kt)', LL
+
+      ENDIF
+C...Generate the mass of the diffracted system Mx (1/Mx**2 distribution)
+      XMMIN = XM2MIN(K)
+      IF(Irec.eq.0) XMMIN = MAX(XMMIN,(AM(LA)+AM(7)+0.02D0)**2)
+      XM2 = XM2DIS(XMMIN,XM2MAX,1.D0)
+      ALX = log(XM2)
+c... added part
+      X = XM2/XM2MAX*PAR(13)
+      IF (X.GT.PAR(13)-0.05D0) THEN
+        PRO = 0.5D0*(1.D0+(X-PAR(13))/0.05D0)
+        IF (S_RNDM(0).LT.PRO) X = 2.D0*PAR(13)-X
+        XM2 = XM2MAX*X/PAR(13)
+      ENDIF
+c...
+
+      XM = SQRT (XM2)
+      XMB = XM
+      XMT = XM
+      XMASS(1) = XMB
+      XMASS(2) = XMT
+
+C..   kinematics
+      CALL TRANSFONSHELL(ECM,XMB,EM,XM2MAX,0,P1,P2,IBAD)
+      IF(IBAD.ne.0) goto 20
+
+C...Generate the Kinematics of the pseudoelastic hadron
+      NP = NP+1
+      P(NP,4) = P2(4)
+      P(NP,3) = abs(P2(3))*ZD
+      P(NP,1) = p2(1)
+      P(NP,2) = p2(2)
+      P(NP,5) = EM
+      LLIST(NP) = L
+      NPORIG(NP) = IPFLAG
+      niorig(NP) = iiflag
+      LRNK(NP) = 0
+      
+C...Generating the hadronic system recoiling against the produced particle
+      P0(5) = SQRT(XM2)
+      P0(4) = P1(4)
+      DO J=1,3
+         P0(J) = -P(NP,J)
+      ENDDO
+      IF(Irec.eq.1)THEN
+c     add diffractive system to parton stack
+         CALL ADD_PRTN_4VEC(P1,JDIF1,0,0,Iref)
+         CALL ADD_INT_REF(Iref,1)
+         CALL ADD_PRTN_4VEC(P2,int(zd),0,0,Iref)
+         CALL ADD_INT_REF(Iref,1)
+      ENDIF
+      CALL DIFDEC (LL, Irec, IDBAD, P0)
+      IF(IDBAD.eq.1)goto 20
+      IREJ = 0
+
+      END
+      
+C=======================================================================
+      
+      SUBROUTINE DIFF_INI
+
+C----------------------------------------------------------------------
+      IMPLICIT NONE
+      INTEGER I,NPION
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      DOUBLE PRECISION XM2MIN,ALXMIN,SLOP0,ASLOP,BSLOP,XMASS
+      COMMON /S_DIFMAss/ XM2MIN(6),ALXMIN(6),SLOP0,ASLOP,BSLOP,XMASS(2)
+      INTEGER NIPAR_max,NPAR_max      
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+      SAVE      
+C...  Diffractive mass parameters from Sibyll 2.1
+c     minimal mass
+      DATA (XM2MIN(I), I=1,3) /1.5D0, 0.2D0, 0.6D0/ ! M_x**2(min) GeV**2
+      DATA (ALXMIN(I), I=1,3)   ! log[M_x**2(min)]
+     &     /0.405465D0,-1.6094379D0,-0.5108256D0/ 
+C...  pt spectrum
+      DATA SLOP0 /6.5D0/                 ! b (slope_ for Mx**2 > 5 GeV**2
+      DATA ASLOP /31.10362D0/            ! fit to the slope parameter.
+      DATA BSLOP /-15.29012D0/
+
+C     minimal mass for strange and charmed hadrons: 
+C     m_beam + n_pi * m_pi
+      NPION = IPAR(86)
+      
+C     hyperons (4), lowest mass: lambda
+      XM2MIN(4) = AM2(39) + NPION * AM2(7)
+      ALXMIN(4) = log(XM2MIN(4))
+      
+C     charmed mesons (5), lowest mass: Dmeson
+      XM2MIN(5) = AM2(59) + NPION * AM2(7)
+      ALXMIN(5) = log(XM2MIN(5))
+      
+C     charmed baryons (6), lowest mass: lambda_c
+      XM2MIN(6) = AM2(89) + NPION * AM2(7)
+      ALXMIN(6) = log(XM2MIN(6))
+
+c     debug output
+      IF(NDEBUG.gt.1)THEN
+         WRITE(LUN,*)'DIFF_INI: setting diff. mass parameters'
+         WRITE(LUN,*)' min mass: ', (XM2MIN(I), I=1,6)
+         WRITE(LUN,*)' log min mass: ', (ALXMIN(I), I=1,6)
+      ENDIF
+      
+      END
+
+C=======================================================================      
+
+      DOUBLE PRECISION FUNCTION SIGELA_PN(plab)
+
+C-----------------------------------------------------------------------
+C
+C     low-energy pn/np elastic cross section
+C     (based on spline interpolations)
+C
+C                                              (R.Engel 02/01)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+
+      dimension PTPP(100),STPP(100),DERIV(100,2),Z(10),FV(10),FD(10,2)
+      logical init
+      SAVE
+      data init /.true./
+
+C  pn elastic cross section
+      DATA (PTPP(K),K=    1,   18) /
+     &  -1.0128D+00,-8.8365D-01,-7.8000D-01,-6.8973D-01,-5.7462D-01,
+     &  -4.2138D-01,-2.9384D-01,-1.1581D-01, 1.1309D-01, 5.3273D-01,
+     &   9.6497D-01, 1.4860D+00, 2.0449D+00, 2.6798D+00, 3.5939D+00,
+     &   4.9903D+00, 6.2215D+00, 6.8942D+00/
+      DATA (STPP(K),K=    1,   18) /
+     &1.0001D+02,8.2414D+01,6.5819D+01,5.4660D+01,4.7794D+01,4.0500D+01,
+     &3.5781D+01,3.3208D+01,2.9921D+01,2.3919D+01,1.8633D+01,1.4206D+01,
+     &1.1068D+01,9.0752D+00,7.5167D+00,6.6817D+00,6.8455D+00,6.8568D+00/
+
+
+C  initialize cross section tables
+
+      if(init) then
+        N = 18
+        M = 0
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,-1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)') 
+     &      ' SIGELA_PN: spline initialization failed: ',IERR
+          stop
+        endif
+        NXY_save = NXY
+        init = .false.
+      endif
+
+C  spline interpolation 
+
+      sigela_pn = 0.D0
+      Z(1) = log(plab)
+
+      if((Z(1).gt.PTPP(1)).and.(Z(1).lt.PTPP(N))) then
+        M = 1
+        NXY = NXY_save
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)')
+     &      ' SIGELA_PN: spline interpolation failed: ',IERR
+          return
+        endif
+      else
+        return
+      endif
+
+      sigela_pn = FV(1) 
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIGELA_PP(plab)
+
+C-----------------------------------------------------------------------
+C
+C     low-energy pp elastic cross section
+C     (based on spline interpolations)
+C
+C                                              (R.Engel 02/01)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+
+      dimension PTPP(100),STPP(100),DERIV(100,2),Z(10),FV(10),FD(10,2)
+      logical init
+      SAVE
+      data init /.true./
+
+C  pp elastic cross section
+      DATA (PTPP(K),K=    1,   20) /
+     &  -1.0548D+00,-9.9070D-01,-8.2516D-01,-6.8608D-01,-4.7199D-01,
+     &  -2.7085D-01,-1.0784D-01,-7.6152D-03, 1.6806D-01, 3.3154D-01,
+     &   5.4551D-01, 8.2275D-01, 1.3768D+00, 2.0058D+00, 2.9862D+00,
+     &   3.7151D+00, 4.3182D+00, 5.1348D+00, 5.6750D+00, 6.2152D+00/
+      DATA (STPP(K),K=    1,   20) /
+     &4.2555D+01,3.7310D+01,2.8426D+01,2.4873D+01,2.2758D+01,2.2166D+01,
+     &2.3350D+01,2.4450D+01,2.5212D+01,2.4535D+01,2.2927D+01,1.9459D+01,
+     &1.4213D+01,1.0745D+01,8.4602D+00,7.3604D+00,6.8528D+00,6.6836D+00,
+     &6.6836D+00,6.6836D+00/
+
+
+C  initialize cross section tables
+
+      if(init) then
+        N = 20
+        M = 0
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,-1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)') 
+     &      ' SIGELA_PP: spline initialization failed: ',IERR
+          stop
+        endif
+        NXY_save = NXY
+        init = .false.
+      endif
+
+C  spline interpolation 
+
+      sigela_pp = 0.D0
+      Z(1) = log(plab)
+
+      if((Z(1).gt.PTPP(1)).and.(Z(1).lt.PTPP(N))) then
+        M = 1
+        NXY = NXY_save
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)')
+     &      ' SIGELA_PP: spline interpolation failed: ',IERR
+          return
+        endif
+      else
+        return
+      endif
+
+      sigela_pp = FV(1) 
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIGTOT_PN(plab)
+
+C-----------------------------------------------------------------------
+C
+C     low-energy pn and np total cross section
+C     (based on spline interpolations)
+C
+C                                              (R.Engel 02/01)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+
+      dimension PTPP(100),STPP(100),DERIV(100,2),Z(10),FV(10),FD(10,2)
+      logical init
+      SAVE
+      data init /.true./
+
+C  pn total cross section
+      DATA (PTPP(K),K=    1,   17) /
+     &  -1.0129D+00,-8.4520D-01,-7.4136D-01,-5.3626D-01,-3.3210D-01,
+     &  -1.2859D-01, 8.7237D-02, 3.1519D-01, 6.7022D-01, 1.0889D+00,
+     &   1.5714D+00, 2.0792D+00, 2.6760D+00, 3.9453D+00, 4.9226D+00,
+     &   5.6207D+00, 6.7629D+00/
+      DATA (STPP(K),K=    1,   17) /
+     &1.0000D+02,7.9053D+01,6.0976D+01,4.5194D+01,3.6729D+01,3.3429D+01,
+     &3.3142D+01,3.7303D+01,4.0316D+01,4.1607D+01,4.0746D+01,3.9885D+01,
+     &3.8594D+01,3.8307D+01,3.8881D+01,3.9168D+01,4.1320D+01/
+
+
+C  initialize cross section tables
+
+      if(init) then
+        N = 17
+        M = 0
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,-1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)') 
+     &      ' SIGTOT_PN: spline initialization failed: ',IERR
+          stop
+        endif
+        NXY_save = NXY
+        init = .false.
+      endif
+
+C  spline interpolation 
+
+      sigtot_pn = 0.D0
+      Z(1) = log(plab)
+
+      if((Z(1).gt.PTPP(1)).and.(Z(1).lt.PTPP(N))) then
+        M = 1
+        NXY = NXY_save
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)')
+     &      ' SIGTOT_PN: spline interpolation failed: ',IERR
+          return
+        endif
+      else
+        return
+      endif
+
+      sigtot_pn = FV(1) 
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIGTOT_PP(plab)
+
+C-----------------------------------------------------------------------
+C
+C     low-energy pp 
+C     (based on spline interpolations)
+C
+C                                              (R.Engel 02/01)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+
+      dimension PTPP(100),STPP(100),DERIV(100,2),Z(10),FV(10),FD(10,2)
+      logical init
+      SAVE
+      data init /.true./
+
+C  pp total cross section
+      DATA (PTPP(K),K=    1,   23) /
+     &  -1.4202D+00,-1.2583D+00,-1.0464D+00,-8.3253D-01,-6.0471D-01,
+     &  -3.6376D-01,-8.4289D-02, 6.8739D-02, 1.9666D-01, 3.2471D-01,
+     &   4.2673D-01, 5.5375D-01, 7.5675D-01, 1.0737D+00, 1.5176D+00,
+     &   2.1393D+00, 2.7230D+00, 3.5353D+00, 4.3223D+00, 5.1728D+00,
+     &   5.7949D+00, 6.2392D+00, 6.9122D+00/
+      DATA (STPP(K),K=    1,   23) /
+     &9.2081D+01,7.0000D+01,4.2437D+01,2.8579D+01,2.3858D+01,2.2335D+01,
+     &2.3858D+01,2.8883D+01,3.5888D+01,4.3807D+01,4.7157D+01,4.7766D+01,
+     &4.7157D+01,4.4569D+01,4.1523D+01,3.9695D+01,3.8782D+01,3.8173D+01,
+     &3.8173D+01,3.8477D+01,3.9391D+01,4.0000D+01,4.1523D+01/
+
+
+C  initialize cross section tables
+
+      if(init) then
+        N = 23
+        M = 0
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,-1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)') 
+     &      ' SIGTOT_PP: spline initialization failed: ',IERR
+          stop
+        endif
+        NXY_save = NXY
+        init = .false.
+      endif
+
+C  spline interpolation 
+
+      sigtot_pp = 0.D0
+      Z(1) = log(plab)
+
+      if((Z(1).gt.PTPP(1)).and.(Z(1).lt.PTPP(N))) then
+        M = 1
+        NXY = NXY_save
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)')
+     &      ' SIGTOT_PP: spline interpolation failed: ',IERR
+          return
+        endif
+      else
+        return
+      endif
+
+      sigtot_pp = FV(1) 
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIGELA_PIPP(plab)
+
+C-----------------------------------------------------------------------
+C
+C     low-energy pi+p elastic cross section
+C     (based on spline interpolations)
+C
+C                                              (R.Engel 05/01)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+
+      dimension PTPP(100),STPP(100),DERIV(100,2),Z(10),FV(10),FD(10,2)
+      logical init
+      SAVE
+      data init /.true./
+
+C  pi+p elastic cross section
+      DATA (PTPP(K),K=    1,   24) /
+     &  -9.1117D-01,-8.4887D-01,-7.8656D-01,-6.6196D-01,-5.3736D-01,
+     &  -4.4390D-01,-3.6083D-01,-2.6738D-01,-1.8431D-01,-5.9706D-02,
+     &   5.4515D-02, 1.3758D-01, 2.4142D-01, 3.5564D-01, 4.0756D-01,
+     &   5.1140D-01, 6.9830D-01, 1.0410D+00, 1.6225D+00, 2.2455D+00,
+     &   2.9620D+00, 3.7407D+00, 4.6026D+00, 5.5163D+00/
+      DATA (STPP(K),K=    1,   24) /
+     &7.3812D+01,5.8453D+01,4.5967D+01,3.1602D+01,2.2652D+01,1.6133D+01,
+     &1.2044D+01,9.2818D+00,8.3978D+00,9.9448D+00,1.2818D+01,1.4144D+01,
+     &1.6354D+01,1.8011D+01,1.7238D+01,1.2928D+01,1.0055D+01,7.1823D+00,
+     &5.5249D+00,4.6409D+00,3.6464D+00,2.9834D+00,3.2044D+00,3.0939D+00/
+
+
+C  initialize cross section tables
+
+      if(init) then
+        N = 24
+        M = 0
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,-1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)') 
+     &      ' SIGELA_PIPP: spline initialization failed: ',IERR
+          stop
+        endif
+        NXY_save = NXY
+        init = .false.
+      endif
+
+C  spline interpolation 
+
+      sigela_pipp = 0.D0
+      Z(1) = log(plab)
+
+      if((Z(1).gt.PTPP(1)).and.(Z(1).lt.PTPP(N))) then
+        M = 1
+        NXY = NXY_save
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)')
+     &      ' SIGELA_PIPP: spline interpolation failed: ',IERR
+          return
+        endif
+      else
+        return
+      endif
+
+      sigela_pipp = FV(1) 
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIGTOT_PIPP(plab)
+
+C-----------------------------------------------------------------------
+C
+C     low-energy pi+p total cross section
+C     (based on spline interpolations)
+C
+C                                              (R.Engel 05/01)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+
+      dimension PTPP(100),STPP(100),DERIV(100,2),Z(10),FV(10),FD(10,2)
+      logical init
+      SAVE
+      data init /.true./
+
+C  pi+p total cross section
+      DATA (PTPP(K),K=    1,   37) /
+     &  -9.2155D-01,-8.6963D-01,-8.0733D-01,-7.2426D-01,-5.4774D-01,
+     &  -4.7505D-01,-4.1275D-01,-3.6083D-01,-3.0891D-01,-2.2585D-01,
+     &  -1.7393D-01,-8.0473D-02, 2.3363D-02, 1.5835D-01, 2.3104D-01,
+     &   2.9334D-01, 3.1411D-01, 3.5564D-01, 4.1794D-01, 4.2833D-01,
+     &   4.9063D-01, 5.7370D-01, 6.7754D-01, 7.2945D-01, 8.1252D-01,
+     &   8.8521D-01, 9.9943D-01, 1.1033D+00, 1.4044D+00, 1.7782D+00,
+     &   2.1313D+00, 2.6712D+00, 3.2942D+00, 3.8342D+00, 4.6441D+00,
+     &   5.4748D+00, 5.8382D+00/
+      DATA (STPP(K),K=    1,   37) /
+     &7.3812D+01,6.4420D+01,5.0939D+01,3.7790D+01,2.3867D+01,1.8674D+01,
+     &1.6022D+01,1.5138D+01,1.4365D+01,1.5138D+01,1.7127D+01,2.0773D+01,
+     &2.4420D+01,2.7845D+01,3.3591D+01,3.9116D+01,4.0773D+01,4.1215D+01,
+     &4.0000D+01,3.8232D+01,3.3370D+01,3.0608D+01,2.9061D+01,2.8619D+01,
+     &2.9834D+01,3.0829D+01,3.0497D+01,2.9061D+01,2.7514D+01,2.5746D+01,
+     &2.4862D+01,2.3646D+01,2.3094D+01,2.2873D+01,2.3204D+01,2.3978D+01,
+     &2.4420D+01/
+
+
+C  initialize cross section tables
+
+      if(init) then
+        N = 37
+        M = 0
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,-1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)') 
+     &      ' SIGTOT_PIPP: spline initialization failed: ',IERR
+          stop
+        endif
+        NXY_save = NXY
+        init = .false.
+      endif
+
+C  spline interpolation 
+
+      sigtot_pipp = 0.D0
+      Z(1) = log(plab)
+
+      if((Z(1).gt.PTPP(1)).and.(Z(1).lt.PTPP(N))) then
+        M = 1
+        NXY = NXY_save
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)')
+     &      ' SIGTOT_PIPP: spline interpolation failed: ',IERR
+          return
+        endif
+      else
+        return
+      endif
+
+      sigtot_pipp = FV(1) 
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIGELA_PIMP(plab)
+
+C-----------------------------------------------------------------------
+C
+C     low-energy pi-p elastic cross section
+C     (based on spline interpolations)
+C
+C                                              (R.Engel 05/01)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+
+      dimension PTPP(100),STPP(100),DERIV(100,2),Z(10),FV(10),FD(10,2)
+      logical init
+      SAVE
+      data init /.true./
+
+C  pi-p elastic cross section
+      DATA (PTPP(K),K=    1,   56) /
+     &  -1.8980D+00,-1.5458D+00,-1.4323D+00,-1.3602D+00,-1.2880D+00,
+     &  -1.2571D+00,-1.1845D+00,-1.1531D+00,-1.1112D+00,-1.0691D+00,
+     &  -1.0063D+00,-9.1252D-01,-8.2935D-01,-7.0477D-01,-6.0118D-01,
+     &  -4.6652D-01,-4.1489D-01,-3.9435D-01,-3.6334D-01,-3.4267D-01,
+     &  -3.0100D-01,-2.6966D-01,-2.4866D-01,-2.1741D-01,-1.6542D-01,
+     &  -1.1357D-01,-9.2992D-02,-8.2923D-02,-4.1875D-02,-1.1054D-02,
+     &   3.0281D-02, 7.2145D-02, 8.2958D-02, 1.1458D-01, 1.5645D-01,
+     &   2.6051D-01, 3.4368D-01, 3.8539D-01, 4.7900D-01, 5.3080D-01,
+     &   6.3455D-01, 7.4898D-01, 9.1527D-01, 1.1023D+00, 1.3412D+00,
+     &   1.5594D+00, 1.9541D+00, 2.4007D+00, 2.7122D+00, 3.0653D+00,
+     &   3.4392D+00, 3.8130D+00, 4.2387D+00, 5.0175D+00, 5.3602D+00,
+     &   5.8897D+00/
+      DATA (STPP(K),K=    1,   56) /
+     &2.9793D+00,9.7103D+00,1.5007D+01,1.9862D+01,2.3393D+01,2.5269D+01,
+     &2.6041D+01,2.4276D+01,2.1076D+01,1.6772D+01,1.3021D+01,1.0372D+01,
+     &9.6000D+00,9.8207D+00,1.1697D+01,1.4234D+01,1.6441D+01,1.8207D+01,
+     &1.9310D+01,2.0083D+01,1.8979D+01,1.7545D+01,1.5779D+01,1.5007D+01,
+     &1.4455D+01,1.5007D+01,1.6441D+01,1.8869D+01,2.2621D+01,2.5159D+01,
+     &2.6703D+01,2.4166D+01,2.0855D+01,1.7214D+01,1.4676D+01,1.2910D+01,
+     &1.2138D+01,1.0814D+01,9.6000D+00,1.0483D+01,1.1145D+01,9.6000D+00,
+     &8.3862D+00,7.5034D+00,6.6207D+00,6.0690D+00,4.9655D+00,4.4138D+00,
+     &4.4138D+00,3.7517D+00,3.3103D+00,3.2000D+00,3.3103D+00,3.3103D+00,
+     &3.3103D+00,3.5310D+00/
+
+
+C  initialize cross section tables
+
+      if(init) then
+        N = 56
+        M = 0
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,-1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)') 
+     &      ' SIGELA_PIMP: spline initialization failed: ',IERR
+          stop
+        endif
+        NXY_save = NXY
+        init = .false.
+      endif
+
+C  spline interpolation 
+
+      sigela_pimp = 0.D0
+      Z(1) = log(plab)
+
+      if((Z(1).gt.PTPP(1)).and.(Z(1).lt.PTPP(N))) then
+        M = 1
+        NXY = NXY_save
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)')
+     &      ' SIGELA_PIMP: spline interpolation failed: ',IERR
+          return
+        endif
+      else
+        return
+      endif
+
+      sigela_pimp = FV(1) 
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIGTOT_PIMP(plab)
+
+C-----------------------------------------------------------------------
+C
+C     low-energy pi-p total cross section
+C     (based on spline interpolations)
+C
+C                                              (R.Engel 05/01)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+
+      dimension PTPP(100),STPP(100),DERIV(100,2),Z(10),FV(10),FD(10,2)
+      logical init
+      SAVE
+      data init /.true./
+
+C  pi-p total cross section
+      DATA (PTPP(K),K=    1,   53) /
+     &  -1.9302D+00,-1.8269D+00,-1.6617D+00,-1.5490D+00,-1.4577D+00,
+     &  -1.3146D+00,-1.2630D+00,-1.2211D+00,-1.1686D+00,-1.1364D+00,
+     &  -1.0937D+00,-1.0305D+00,-9.4645D-01,-8.5245D-01,-7.6915D-01,
+     &  -6.7584D-01,-5.2057D-01,-4.3813D-01,-4.0781D-01,-3.6669D-01,
+     &  -3.1507D-01,-2.8372D-01,-2.6240D-01,-2.0995D-01,-1.7861D-01,
+     &  -1.1661D-01,-9.6329D-02,-7.6149D-02,-3.5817D-02,-5.0811D-03,
+     &   1.5958D-02, 5.8095D-02, 1.1175D-01, 1.7444D-01, 1.9540D-01,
+     &   2.8868D-01, 3.7173D-01, 4.5500D-01, 5.4845D-01, 6.4176D-01,
+     &   7.1436D-01, 8.3919D-01, 9.6397D-01, 1.3069D+00, 1.7018D+00,
+     &   2.0447D+00, 2.5952D+00, 3.1249D+00, 3.6130D+00, 4.1426D+00,
+     &   4.8175D+00, 5.3159D+00, 5.9284D+00/
+      DATA (STPP(K),K=    1,   53) /
+     &1.1145D+01,1.5007D+01,2.2179D+01,3.4428D+01,5.0428D+01,6.7862D+01,
+     &7.0952D+01,6.7972D+01,6.3007D+01,5.5393D+01,4.6566D+01,3.9614D+01,
+     &3.1779D+01,2.7586D+01,2.5821D+01,2.6924D+01,3.0676D+01,3.5531D+01,
+     &4.1931D+01,4.5131D+01,4.7448D+01,4.5903D+01,4.1600D+01,3.7517D+01,
+     &3.6083D+01,3.8400D+01,4.2152D+01,4.6676D+01,5.5945D+01,5.9145D+01,
+     &5.7048D+01,5.2414D+01,3.9062D+01,3.6083D+01,3.4538D+01,3.5862D+01,
+     &3.6083D+01,3.4538D+01,3.4538D+01,3.5641D+01,3.6303D+01,3.4538D+01,
+     &3.3214D+01,3.1117D+01,2.8690D+01,2.7145D+01,2.5600D+01,2.4717D+01,
+     &2.4166D+01,2.4166D+01,2.3945D+01,2.4055D+01,2.5159D+01/
+
+
+C  initialize cross section tables
+
+      if(init) then
+        N = 53
+        M = 0
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,-1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)') 
+     &      ' SIGTOT_PIMP: spline initialization failed: ',IERR
+          stop
+        endif
+        NXY_save = NXY
+        init = .false.
+      endif
+
+C  spline interpolation 
+
+      sigtot_pimp = 0.D0
+      Z(1) = log(plab)
+
+      if((Z(1).gt.PTPP(1)).and.(Z(1).lt.PTPP(N))) then
+        M = 1
+        NXY = NXY_save
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)')
+     &      ' SIGTOT_PIMP: spline interpolation failed: ',IERR
+          return
+        endif
+      else
+        return
+      endif
+
+      sigtot_pimp = FV(1) 
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIGELA_KPP(plab)
+
+C-----------------------------------------------------------------------
+C
+C     low-energy K+p elastic cross section
+C     (based on spline interpolations)
+C
+C                                              (R.Engel 05/01)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+
+      dimension PTPP(100),STPP(100),DERIV(100,2),Z(10),FV(10),FD(10,2)
+      logical init
+      SAVE
+      data init /.true./
+
+C  K+p elastic cross section
+      DATA (PTPP(K),K=    1,   22) /
+     &  -1.1500D+00,-8.0733D-01,-5.4774D-01,-4.1275D-01,-2.5700D-01,
+     &  -8.0474D-02, 7.5281D-02, 2.5180D-01, 3.7641D-01, 5.3216D-01,
+     &   6.8792D-01, 8.4368D-01, 1.0929D+00, 1.5913D+00, 1.9340D+00,
+     &   2.3182D+00, 2.8166D+00, 3.2215D+00, 3.4708D+00, 3.9276D+00,
+     &   4.6233D+00, 5.5475D+00/
+      DATA (STPP(K),K=    1,   22) /
+     &1.2227D+01,1.2570D+01,1.2499D+01,1.2498D+01,1.2428D+01,1.2012D+01,
+     &1.1183D+01,1.0284D+01,9.4544D+00,8.2796D+00,6.8977D+00,5.9300D+00,
+     &4.6854D+00,3.6461D+00,3.2293D+00,3.0193D+00,2.6704D+00,2.4602D+00,
+     &2.3203D+00,2.0407D+00,2.2426D+00,2.5809D+00/
+
+
+C  initialize cross section tables
+
+      if(init) then
+        N = 22
+        M = 0
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,-1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)') 
+     &      ' SIGELA_KPP: spline initialization failed: ',IERR
+          stop
+        endif
+        NXY_save = NXY
+        init = .false.
+      endif
+
+C  spline interpolation 
+
+      sigela_kpp = 0.D0
+      Z(1) = log(plab)
+
+      if((Z(1).gt.PTPP(1)).and.(Z(1).lt.PTPP(N))) then
+        M = 1
+        NXY = NXY_save
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)')
+     &      ' SIGELA_KPP: spline interpolation failed: ',IERR
+          return
+        endif
+      else
+        return
+      endif
+
+      sigela_kpp = FV(1) 
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIGTOT_KPP(plab)
+
+C-----------------------------------------------------------------------
+C
+C     low-energy K+p total cross section
+C     (based on spline interpolations)
+C
+C                                              (R.Engel 05/01)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+
+      dimension PTPP(100),STPP(100),DERIV(100,2),Z(10),FV(10),FD(10,2)
+      logical init
+      SAVE
+      data init /.true./
+
+C  K+p total cross section
+      DATA (PTPP(K),K=    1,   20) /
+     &  -1.0981D+00,-7.1388D-01,-4.7505D-01,-3.1930D-01,-1.7393D-01,
+     &  -8.0474D-02, 2.3363D-02, 9.6049D-02, 1.9989D-01, 3.2449D-01,
+     &   4.6986D-01, 6.2562D-01, 8.3329D-01, 1.0825D+00, 1.4355D+00,
+     &   2.1001D+00, 2.6920D+00, 3.5434D+00, 4.6337D+00, 5.7448D+00/
+      DATA (STPP(K),K=    1,   20) /
+     &1.2158D+01,1.2362D+01,1.2429D+01,1.2428D+01,1.3187D+01,1.4429D+01,
+     &1.5809D+01,1.7327D+01,1.8224D+01,1.8430D+01,1.7945D+01,1.7806D+01,
+     &1.7459D+01,1.7250D+01,1.7041D+01,1.7381D+01,1.7446D+01,1.7853D+01,
+     &1.8881D+01,2.0529D+01/
+
+
+C  initialize cross section tables
+
+      if(init) then
+        N = 20
+        M = 0
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,-1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)') 
+     &      ' SIGTOT_KPP: spline initialization failed: ',IERR
+          stop
+        endif
+        NXY_save = NXY
+        init = .false.
+      endif
+
+C  spline interpolation 
+
+      sigtot_kpp = 0.D0
+      Z(1) = log(plab)
+
+      if((Z(1).gt.PTPP(1)).and.(Z(1).lt.PTPP(N))) then
+        M = 1
+        NXY = NXY_save
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)')
+     &      ' SIGTOT_KPP: spline interpolation failed: ',IERR
+          return
+        endif
+      else
+        return
+      endif
+
+      sigtot_kpp = FV(1) 
+
+      END
+
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIGELA_KMP(plab)
+
+C-----------------------------------------------------------------------
+C
+C     low-energy K-p elastic cross section
+C     (based on spline interpolations)
+C
+C                                              (R.Engel 05/01)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+
+      dimension PTPP(100),STPP(100),DERIV(100,2),Z(10),FV(10),FD(10,2)
+      logical init
+      SAVE
+      data init /.true./
+
+C  K-p elastic cross section
+      DATA (PTPP(K),K=    1,   36) /
+     &  -1.7871D+00,-1.4709D+00,-1.2813D+00,-1.1867D+00,-1.0179D+00,
+     &  -8.8055D-01,-8.0666D-01,-7.9648D-01,-7.7560D-01,-6.5951D-01,
+     &  -5.6450D-01,-4.7995D-01,-3.9539D-01,-3.4256D-01,-2.7894D-01,
+     &  -2.4691D-01,-2.0439D-01,-1.1952D-01,-1.3598D-02, 6.0479D-02,
+     &   1.1311D-01, 1.4462D-01, 2.0784D-01, 2.6053D-01, 3.2387D-01,
+     &   4.4022D-01, 5.5672D-01, 6.9424D-01, 8.6348D-01, 1.2127D+00,
+     &   1.6678D+00, 2.3770D+00, 3.2133D+00, 3.9226D+00, 4.6425D+00,
+     &   5.1612D+00/
+      DATA (STPP(K),K=    1,   36) /
+     &6.8962D+01,5.6135D+01,4.7307D+01,4.0271D+01,3.5582D+01,3.2549D+01,
+     &3.0480D+01,2.6617D+01,2.3858D+01,2.0410D+01,1.7927D+01,1.6549D+01,
+     &1.5308D+01,1.4343D+01,1.5310D+01,1.7794D+01,1.9451D+01,2.1108D+01,
+     &2.1661D+01,2.1386D+01,1.8490D+01,1.6144D+01,1.3386D+01,1.1041D+01,
+     &9.3860D+00,8.4219D+00,8.8376D+00,7.8738D+00,6.4965D+00,4.7080D+00,
+     &3.8869D+00,3.3456D+00,2.6682D+00,2.5409D+00,2.6896D+00,2.6974D+00/
+
+
+C  initialize cross section tables
+
+      if(init) then
+        N = 36
+        M = 0
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,-1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)') 
+     &      ' SIGELA_KMP: spline initialization failed: ',IERR
+          stop
+        endif
+        NXY_save = NXY
+        init = .false.
+      endif
+
+C  spline interpolation 
+
+      sigela_kmp = 0.D0
+      Z(1) = log(plab)
+
+      if((Z(1).gt.PTPP(1)).and.(Z(1).lt.PTPP(N))) then
+        M = 1
+        NXY = NXY_save
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)')
+     &      ' SIGELA_KMP: spline interpolation failed: ',IERR
+          return
+        endif
+      else
+        return
+      endif
+
+      sigela_kmp = FV(1) 
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIGTOT_KMP(plab)
+
+C-----------------------------------------------------------------------
+C
+C     low-energy K-p total cross section
+C     (based on spline interpolations)
+C
+C                                              (R.Engel 05/01)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+
+      dimension PTPP(100),STPP(100),DERIV(100,2),Z(10),FV(10),FD(10,2)
+      logical init
+      SAVE
+      data init /.true./
+
+C  K-p total cross section
+      DATA (PTPP(K),K=    1,   43) /
+     &  -1.3500D+00,-1.2345D+00,-9.8216D-01,-8.2491D-01,-7.4143D-01,
+     &  -6.1508D-01,-4.5679D-01,-3.7223D-01,-2.9802D-01,-2.6595D-01,
+     &  -1.7037D-01,-1.0660D-01,-2.1599D-02,-2.5037D-04, 6.3445D-02,
+     &   8.4428D-02, 1.3703D-01, 1.5769D-01, 1.8898D-01, 2.4156D-01,
+     &   3.3667D-01, 3.5796D-01, 4.1106D-01, 5.1700D-01, 5.9099D-01,
+     &   6.5431D-01, 6.9651D-01, 7.7067D-01, 8.5538D-01, 9.6104D-01,
+     &   1.1303D+00, 1.3209D+00, 1.4266D+00, 1.5853D+00, 1.8075D+00,
+     &   1.9769D+00, 2.4743D+00, 3.0353D+00, 3.5222D+00, 4.0515D+00,
+     &   4.6550D+00, 5.1949D+00, 5.7455D+00/
+      DATA (STPP(K),K=    1,   43) /
+     &9.7669D+01,8.8840D+01,7.2700D+01,5.8076D+01,4.6625D+01,4.0142D+01,
+     &3.5315D+01,3.4074D+01,3.5041D+01,3.7939D+01,4.0838D+01,4.3185D+01,
+     &4.6084D+01,4.7740D+01,4.9397D+01,4.7603D+01,4.4430D+01,3.9601D+01,
+     &3.5186D+01,3.1876D+01,3.0221D+01,3.1325D+01,3.2982D+01,3.3674D+01,
+     &3.2571D+01,3.0640D+01,2.9261D+01,2.9814D+01,2.9953D+01,2.8023D+01,
+     &2.6922D+01,2.6924D+01,2.5684D+01,2.4859D+01,2.4034D+01,2.3761D+01,
+     &2.2112D+01,2.1155D+01,2.0472D+01,2.0480D+01,2.0627D+01,2.0773D+01,
+     &2.1472D+01/
+
+
+C  initialize cross section tables
+
+      if(init) then
+        N = 43
+        M = 0
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,-1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)') 
+     &      ' SIGTOT_KMP: spline initialization failed: ',IERR
+          stop
+        endif
+        NXY_save = NXY
+        init = .false.
+      endif
+
+C  spline interpolation 
+
+      sigtot_kmp = 0.D0
+      Z(1) = log(plab)
+
+      if((Z(1).gt.PTPP(1)).and.(Z(1).lt.PTPP(N))) then
+        M = 1
+        NXY = NXY_save
+        CALL SPLIN3(PTPP,STPP,DERIV,N,100,Z,FV,FD,M,10,1)
+        if(IERR.ne.0) then
+          write(6,'(1x,a,i6)')
+     &      ' SIGTOT_KMP: spline interpolation failed: ',IERR
+          return
+        endif
+      else
+        return
+      endif
+
+      sigtot_kmp = FV(1) 
+
+      END
+
+
+C=======================================================================
+
+      SUBROUTINE SPLIN3(X,Y,DERIV,N,NC,Z,FVALUE,FDERIV,M,MC,IOP)
+
+C-----------------------------------------------------------------------
+C
+C     CERN LIBRARY PROGRAM NO E-209.
+C
+C     REVISED VERSION JULY 1973.
+C
+C     CHANGED BY R.ENGEL (10/10/93) TO CONFORM WITH F77 STANDARD
+C
+C     PURPOSE = TO COMPUTE A NATURAL SPLINE APPROXIMATION OF THIRD ORDER
+C               FOR A FUNCTION Y(X) GIVEN IN THE N POINTS (X(I),Y(I)) ,
+C               I=1(1)N.
+C
+C     PARAMETERS (IN LIST).
+C
+C     X       = AN ARRAY STORING THE INPUT ARGUMENTS.DIMENSION X(N).
+C     Y       = AN ARRAY STORING THE INPUT FUNCTION VALUES.THE ELEMENT
+C               Y(I) REPRESENT THE FUNCTION VALUE Y(X) FOR X=X(I).
+C     DERIV   = AN ARRAY USED FOR STORING THE COMPUTED DERIVATIVES OF
+C               THE FUNCTION Y(X).IN DERIV(I,1) AND DERIV(I,2) ARE STOR-
+C               ED THE FIRST-AND SECOND ORDER DERIVATIVES OF Y(X) FOR
+C               X=X(I) RESPECTIVELY.
+C     N       = NUMBER OF INPUT FUNCTION VALUES.
+C     NC      = ARRAY DERIV IS DIMENSIONED DERIV(NC,2) IN CALLING
+C               PROGRAM.
+C     Z       = AN ARRAY STORING THE ARGUMENTS FOR THE INTERPOLATED
+C               VALUES TO BE COMPUTED.
+C     FVALUE  = AN ARRAY STORING THE COMPUTED INTERPOLATED VALUES.
+C               FVALUE(J) REPRESENT THE FUNCTION VALUE FVALUE(Z) FOR
+C               Z=Z(J).
+C     FDERIV    = AN ARRAY USED FOR STORING THE DERIVATIVES OF THE COM-
+C               PUTED INTERPOLATED VALUES.EXPLANATION AS FOR DERIV.
+C     M       = NUMBER OF INTERPOLATED VALUES TO BE COMPUTED.
+C     MC      = ARRAY FDERIV IS DIMENSIONED FDERIV(MC,2) IN CALLING
+C               PROGRAM.
+C     IOP     = OPTION PARAMETER.FOR IOP.LE.0 THE DERIVATIVES FOR EACH
+C               SUB-INTERVAL IN THE SPLINE APPROXIMATION ARE COMPUTED.
+C                                  IOP=-1, THE SECOND ORDER END-POINT
+C                                          DERIVATIVES ARE COMPUTED BY
+C                                          LINEAR EXTRAPOLATION.
+C                                  IOP=0 , THE SECOND ORDER END-POINT
+C                                          DERIVATIVES ASSUMED TO BE GI-
+C                                          VEN (SEE COMMON /SPAPPR/).
+C                                  IOP=1 , COMPUTE SPLINE APPROXIMATIONS
+C                                          FOR THE ARGUMENTS GIVEN IN
+C                                          THE ARRAY Z,THE DERIVATIVES
+C                                          BEEING ASSUMED TO HAVE BEEN
+C                                          CALCULATED IN A PREVIOUS CALL
+C                                          ON THE ROUTINE.
+C
+C     PARAMETERS (IN COMMON BLOCK / SPAPPR /).
+C
+C     SECD1   = VALUE OF THE SECOND DERIVATIVE D2Y(X)/DX2 FOR THE INPUT
+C               ARGUMENT X=X(1).
+C     SECDN   = VALUE OF THE SECOND DERIVATIVE D2Y(X)/DX2 FOR THE INPUT
+C               ARGUMENT X=X(N).
+C               NB. VALUES HAVE TO BE ASSIGNED TO SECD1 AND SECDN IN THE
+C               CALLING PROGRAM.IF A NATURAL SPLINE FIT IS WANTED PUT
+C               SECD1=SECDN=0.
+C     VOFINT  = COMPUTED APPROXIMATION FOR THE INTEGRAL OF Y(X) TAKEN
+C               FROM X(1) TO X(N).
+C     IERR    = ERROR PARAMETER.IERR=0,NO ERRORS OCCURED.
+C                               IERR=1,THE NUMBER OF POINTS TOO SMALL
+C                                      I.E.N LESS THAN 4.
+C                               IERR=2,THE ARGUMENTS X(I) NOT IN INCREA-
+C                                      SING ORDER.
+C                               IERR=3,ARGUMENT TO BE USED IN INTERPOLA-
+C                                      TION ABOVE RANGE.
+C                               IERR=4,ARGUMENT TO BE USED IN INTERPOLA-
+C                                      TION BELOW RANGE.
+C     NXY     = N (SEE ABOVE),HAS TO BE STORED FOR ENTRIES CORRESPONDING
+C               TO IOP=1.
+C
+C**********************************************************************
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+C
+      DIMENSION X(NC) , Y(NC) , DERIV(NC,2) , Z(MC) , FVALUE(MC) ,
+     1          FDERIV(MC,2)
+C
+      COMMON / SPAPPR / SECD1 , SECDN , VOFINT , IERR , NXY
+      SAVE
+      DATA THIRD , SIXTH / .333333333333333D0 , .166666666666667D0 /
+C
+C 1000 
+      IF (IOP.GT.0) GO TO 1110
+C
+      IERR=0
+C
+C     CHECK IF ENOUGH DATA-POINTS ARE AVAILABLEI.E. IF N LESS THAN 4 NO
+C     THIRD ORDER SPLINE APPROXIMATION IS POSSIBLE.
+C
+      IF (N.GE.4) GO TO 1010
+C
+      IERR=1
+      GO TO 2000
+C
+C     START CALCULATION OF COEFFICIENTS TO BE USED IN THE SYSTEM OF EQU-
+C     ATIONS FOR THE SECOND ORDER DERIVATIVES OF Y(X).
+C
+ 1010 IF (IOP.NE.-1) GO TO 1015
+      SECD1=0.D0
+      SECDN = 0.D0
+      BET1=1.D0/(1.D0+0.5D0*(X(2)-X(1))/(X(3)-X(2)))
+      ALF1=BET1*(1.D0- ((X(2)-X(1))/(X(3)-X(2)))**2)
+      BETN=1.D0/(1.D0+0.5D0*(X(N)-X(N-1))/(X(N-1)-X(N-2)))
+      ALFN=BETN*(1.D0- ((X(N)-X(N-1))/(X(N-1)-X(N-2)))**2)
+C
+ 1015 DERIV(1,2)=SECD1
+      DERIV(N,2)=SECDN
+      DERIV(1,1)=0.D0
+      DXPLUS=X(2)-X(1)
+C
+C     CHECK IF ARGUMENTS ARE IN INCREASING ORDER.IF NOT PRINT ERROR
+C     MESSAGE AND STOP.
+C
+      IF ( DXPLUS.GT.0.D0) GO TO 1020
+      IN=1
+      IERR=2
+      GO TO 2000
+C
+ 1020 DYPLUS=(Y(2)-Y(1))/DXPLUS
+      IU=N-1
+      DO 1040 I=2,IU
+      DXMIN =DXPLUS
+      DYMIN =DYPLUS
+      DXPLUS=X(I+1)-X(I)
+C
+C     CHECK IF ARGUMENTS ARE IN INCREASING ORDER.IF NOT PRINT ERROR
+C     MESSAGE AND STOP.
+C
+      IF (DXPLUS.GT.0.D0) GO TO 1030
+C
+      IN=I
+      IERR=2
+      GO TO 2000
+C
+ 1030 DXINV =1.D0/(DXPLUS+DXMIN)
+      DYPLUS=(Y(I+1)-Y(I))/DXPLUS
+      DIVDIF=DXINV*(DYPLUS-DYMIN)
+      ALF   =0.5D0*DXINV*DXMIN
+      BET   =0.5D0-ALF
+C
+      IF (I.EQ.2)  DIVDIF=DIVDIF-THIRD*ALF*DERIV(1,2)
+      IF (I.EQ.IU) DIVDIF=DIVDIF-THIRD*BET*DERIV(N,2)
+      IF (I.EQ.2) ALF=0.D0
+C
+      IF (IOP.NE.-1) GO TO 1035
+      IF (I.NE.2) GO TO 1032
+      BET=BET*ALF1
+      DIVDIF=DIVDIF*BET1
+      GO TO 1035
+ 1032 IF (I.NE.IU) GO TO 1035
+      ALF=ALF*ALFN
+      DIVDIF=DIVDIF*BETN
+C
+ 1035 DXINV =1.D0/(1.D0+ALF*DERIV(I-1,1))
+      DERIV(I,1)=-DXINV*BET
+      DERIV(I,2)= DXINV*(3.D0*DIVDIF-ALF*DERIV(I-1,2))
+ 1040 CONTINUE
+C
+C     COMPUTE THE SECOND DERIVATIVES BY BACKWARDS RECURRENCE RELATION.
+C     THE SECOND ORDER DERIVATIVES FOR X=X(N-1) ALREADY COMPUTED.
+C
+C 1050 
+      DO 1060 I=2,IU
+      J=N-I
+      DERIV(J,2)=DERIV(J,1)*DERIV(J+1,2)+DERIV(J,2)
+ 1060 CONTINUE
+C
+      IF (IOP.NE.-1) GO TO 1070
+      DERIV(1,2)=((X(3)-X(1))/(X(3)-X(2)))*DERIV(2,2)-((X(2)-X(1))/(X(3)
+     $-X(2)))*DERIV(3,2)
+      DERIV(N,2)=-((X(N)-X(N-1))/(X(N-1)-X(N-2)))*DERIV(N-2,2)+((X(N)-X(
+     $N-2))/(X(N-1)-X(N-2)))*DERIV(N-1,2)
+C
+C     CALCULATION OF THE SECOND ORDER DERIVATIVES FINISHED.START CAL-
+C     CULATION OF THE FIRST ORDER DERIVATIVES AND OF THE INTEGRAL.
+C
+ 1070 VOFINT=0.D0
+      DO 1080 I=1,IU
+      DXPLUS=X(I+1)-X(I)
+      DYPLUS=Y(I+1)-Y(I)
+      DIVDIF=DYPLUS/DXPLUS
+      DERIV(I,1)=DIVDIF-DXPLUS*(THIRD*DERIV(I,2)+SIXTH*DERIV(I+1,2))
+      DXPLUS=0.5D0*DXPLUS
+      VOFINT=VOFINT+DXPLUS*(Y(I+1)+Y(I)-THIRD*(DERIV(I+1,2)+DERIV(I,2))*
+     $DXPLUS**2)
+ 1080 CONTINUE
+C
+C     COMPUTE THE LAST FIRST ORDER DERIVATIVE.
+C
+      DXPLUS=X(N)-X(N-1)
+      DYPLUS=Y(N)-Y(N-1)
+      DIVDIF=DYPLUS/DXPLUS
+      DERIV(N,1)=DIVDIF+DXPLUS*(SIXTH*DERIV(N-1,2)+THIRD*DERIV(N,2))
+C
+C     CALCULATION OF FIRST ORDER DERIVATIVES AND INTEGRAL FINISHED.
+C
+C     SET VALUE OF N IN COMMON BLOCK / SPAPPR /.
+C
+      NXY=N
+C
+C     COMPUTE INTERPOLATED VALUES IF ANY.
+C
+ 1110 IF (M.LT.1) RETURN
+C
+      XL=X(1)
+      XU=X(2)
+      IP=3
+      IL=0
+C
+C 1120 
+      DO 1160 J=1,M
+      ARG=Z(J)
+      IF (ARG.GT.XU) GO TO 1170
+      IF (ARG.LT.XL) GO TO 1190
+C
+C     ARGUMENT IN CORRECT RANGE.CHECK IF POLYNOMIAL COEFFICIENTS HAVE
+C     TO BE CALCULATED.
+C
+C 1130 
+      IF (IL.GT.0) GO TO 1150
+C
+C     COMPUTE POLYNOMIAL COEFFICIENTS.
+C
+ 1140 II=IP-2
+      A0=Y(II)
+      A1=DERIV(II,1)
+      A4=DERIV(II,2)
+      A6=(DERIV(II+1,2)-A4)/(XU-XL)
+      A2=0.5D0*A4
+      A3=SIXTH*A6
+      A5=0.5D0*A6
+      IL=1
+C
+C     CALCULATION OF POLYNOMIAL COEFFICIENTS FINISHED.COMPUTE VALUES.
+C
+ 1150 ARG=ARG-XL
+      FVALUE(J)=((A3*ARG+A2)*ARG+A1)*ARG+A0
+      FDERIV(J,1)=(A5*ARG+A4)*ARG+A1
+      FDERIV(J,2)=A6*ARG+A4
+C
+ 1155 CONTINUE
+      GOTO 1160
+C
+C     RANGE MOVING
+C
+C
+C     ARGUMENT ABOVE PRESENT RANGE.SHIFT RANGE UPWARDS.
+C
+ 1170 IF(IP.GT.NXY) GO TO 1185
+      IPP=IP
+      DO 1180 I=IPP,NXY
+      IF (ARG.GT.X(I)) GO TO 1180
+      XL=X(I-1)
+      XU=X(I)
+      IP=I+1
+      IL=0
+      GO TO 1140
+C
+ 1180 CONTINUE
+C
+C     ARGUMENT  OUT OF RANGE,I.E. ARG GREATER THAN X(N).
+C
+ 1185 IERR=3
+      IP=NXY+1
+      GO TO 2010
+C
+C     ARGUMENT BELOW PRESENT RANGE.SHIFT DOWNWARDS.
+C
+ 1190 IPP=IP
+      DO 1200 I=1,IPP
+      II=IP-I-2
+      IF (II.EQ.0) GO TO 1210
+      IF (ARG.LT.X(II)) GO TO 1200
+      XL=X(II)
+      XU=X(II+1)
+      IP=II+2
+      IL=0
+      GO TO 1140
+C
+ 1200 CONTINUE
+C
+C     ARGUMENT OUT OF RANGE,I.E. ARG LESS THAN X(1).
+C
+ 1210 IERR=4
+      IP=3
+      GO TO 2010
+C
+ 2010 WRITE(6,3000)  IERR , ARG
+C
+      FVALUE(J)=0.D0
+      FDERIV(J,1)=0.D0
+      FDERIV(J,2)=0.D0
+C
+      II=IP-2
+      XL=X(II)
+      XU=X(II+1)
+      IL=0
+      GO TO 1155
+C
+C
+C     END OF INTERPOLATION LOOP
+C
+ 1160 CONTINUE
+C
+C     CALCULATION OF INTERPOLATED VALUES FINISHED.
+C
+      RETURN
+C
+C     PRINT ERROR MESSAGES.
+C
+ 2000 IF (IERR.EQ.1) WRITE(6,3000)  IERR
+      IF (IERR.EQ.2) WRITE(6,3000)  IERR , X(IN) , X(IN+1)
+      RETURN
+C
+ 3000 FORMAT(//5X,'*** SUBROUTINE SPLIN3 ERROR NO ',I2,' ***',
+     $       2(4X,E21.14))
+C
+      END
+C=======================================================================
+
+      SUBROUTINE FRAG_VLNCE(IDX,LBAD)
+
+C-----------------------------------------------------------------------
+C     routine that fragments a quark - quark system               \FR'14
+C
+C     INPUT: IDX : parton stack index of central string
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+      INTEGER IDX,LBAD
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+C     parameters that represent: NW: max. number of wounded nucleons,
+C     NS,NH: max. number of soft and hard interactions
+c      PARAMETER (NW_max = 20)
+C     The COMMON block /S_CHIST/ contains information about the
+C     the structure of the  generated event:
+C     NWD   = number of wounded nucleons
+C     NJET = total number of hard interactions
+C     NSOF = total number of soft interactions
+C     NNSOF (1:NW) = number of soft pomeron cuts in each interaction
+C     NNJET (1:NW) = number of minijets produced in each interaction 
+C     JDIF(1:NW) = diffraction code 
+C                  0 : non-diff,
+C                  1 : beam-diff
+C                  2 : target-diff
+C                  3 : double-diff
+      INTEGER NNSOF,NNJET,JDIF,NWD,NJET,NSOF
+      COMMON /S_CHIST/ NNSOF(NW_max),NNJET(NW_max),
+     &     JDIF(NW_max),NWD,NJET,NSOF
+
+
+      INTEGER NFORIG,NPORIG,NIORIG,IPFLAG,IIFLAG,KINT
+      COMMON /S_PARTO/ NFORIG(NP_max),NPORIG(NP_max),NIORIG(NP_max),
+     &IPFLAG,IIFLAG,KINT
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+      DOUBLE PRECISION PST,PBM,PTG,PSTH,P1,P2,GABE,EE,
+     &     PAR1_def,PAR24_def,PX1,PY1,PX2,PY2,GAM,BET,P1TOT,P2TOT,
+     &     SIF,COF,COD,SID,ANORF,PZ
+      DIMENSION PST(5),PBM(5),PTG(5),PSTH(5),P1(4),P2(4),GABE(4)
+      INTEGER LSTH,IPID,IBMST,ITGST,ISTH,IFLB,IFLT,IST,I,IFBAD,JJ,
+     &     NOLD,II,K,J
+      SAVE
+      
+      LBAD = 2
+      LSTH = 0
+      
+c     references are:
+c     string --> bm-parton --> tg-parton (--> merged string/hadron)
+c     read string 4momentum from stack
+      CALL RD_PRTN_4VEC(IDX,PST,IPID,IBMST)
+      CALL RD_PRTN_4VEC(IBMST,PBM,IFLB,ITGST)
+      CALL RD_PRTN_4VEC(ITGST,PTG,IFLT,ISTH)
+
+C     kinematic variables
+      EE = PST(5)            ! string mass
+      
+      IF(NDEBUG.gt.1) WRITE(LUN,*)' FRAG_VLNCE: IDX,EE,IFLB,IFLT',
+     &     IDX,EE,IFLB,IFLT
+
+      IF(IDX.ne.ISTH) then
+c     read merged string and add hadron to final particle stack..
+         CALL RD_PRTN_4VEC(ISTH,PstH,LSTH,IST)
+         IF(NDEBUG.gt.1) WRITE(LUN,*)' FRAG_VLNCE: found merged string',
+     &        LSTH,(PSTH(I),I=1,5)         
+         IF(IDX.ne.IST) then
+            write(lun,*) ' FRAG_VLNCE: reference loop broken!' , IDX
+            CALL SIB_REJECT('FRAG_VLNCE      ')
+         endif
+         NP = NP + 1
+         DO I=1,4
+            P(NP,I) = PST(I)
+         ENDDO
+         P(NP,5) = AM(IABS(LSTH))
+         LLIST(NP) = LSTH
+         NPORIG(NP) = IPFLAG*2+KINT
+         niorig(NP) = iiflag
+         LBAD = 0
+         RETURN
+      ENDIF
+
+c     baryon production setup
+      PAR1_def = PAR(1)
+      if( NSOF+NJET.gt.0) then
+         PAR(1)= PAR(15)
+      else
+         PAR(1)= PAR(14)
+      endif
+
+c     charm fractions in different parameterizations
+      PAR24_def = PAR(24)
+      IF(IPAR(15).gt.2.and.IPAR(15).ne.7.and.IPAR(15).lt.12)THEN
+         PAR(24) = PAR(25)*EXP(-PAR(26)/EE)
+      ENDIF
+
+      IF(NDEBUG.gt.1)
+     &     WRITE(LUN,*)' FRAG_VLNCE: parameters (CHM,DIQ,STR,VEC,POP)',
+     &     PAR(24),PAR(1),PAR(2),PAR(5),PAR(8)
+
+      NOLD=NP
+      IF(IPAR(38).eq.1.or.IPAR(38).eq.2)THEN
+C...  rotate strings instead of attaching all pt to string end hadrons
+         PX1 = 0.D0
+         PY1 = 0.D0
+         PX2 = 0.D0
+         PY2 = 0.D0
+      ELSEIF(IPAR(38).eq.0.or.IPAR(38).eq.3)THEN
+c     assign pt to hadrons at string end (old model)
+         PX1 = PBM(1)
+         PY1 = PBM(2)
+         PX2 = PTG(1)
+         PY2 = PTG(2)
+         GAM = PST(4)/EE
+         BET = PST(3)/PST(4)
+      ENDIF         
+
+C...  fragment strings in string restframe
+      CALL STRING_FRAG_4FLV
+     &     (EE,IFLB,IFLT,PX1,PY1,PX2,PY2,IFBAD,1)
+
+      PAR(24) = PAR24_def
+      PAR(1) = PAR1_def
+      KINT= 0
+      IF (IFBAD .EQ. 1) then
+         if(Ndebug.gt.1) 
+     &        WRITE(LUN,*)' STRING_FRAG: rejection (Ncall):',Ncall
+         RETURN
+      ENDIF
+
+C...  rotate and boost string
+      IF(IPAR(38).eq.1.or.IPAR(38).eq.2)THEN
+C     boost quark momentum to string center-of-mass 
+c     to calculate rotation angles in string center-of-mass
+         do jj=1,3
+            gabe(jj) = PST(jj)/PST(5)
+         enddo
+         GABE(4) = PST(4)/PST(5)
+         CALL SIB_ALTRA(gabe(4),-gabe(1),-gabe(2),-gabe(3),
+     &        PBM(1),pbm(2),pbm(3),pbm(4),
+     &        P1TOT,p1(1),p1(2),p1(3),p1(4))
+         CALL SIB_ALTRA(gabe(4),-gabe(1),-gabe(2),-gabe(3),
+     &        PTG(1),pTG(2),ptg(3),ptg(4),
+     &        P2TOT,p2(1),p2(2),p2(3),p2(4))
+
+c     should be back-to-back...
+         IF(ndebug.gt.1)THEN
+            write(lun,*)
+     &      ' FRAG_VLNCE: string c.m. momentum, parton 1 (Pabs,P(i)):' ,
+     &           P1TOT, (P1(j),j=1,4)
+            write(lun,*)
+     &      ' FRAG_VLNCE: string c.m. momentum, parton 2 (Pabs,P(i)):' ,
+     &           P2TOT, (P2(j),j=1,4)
+            write(lun,*) '  partons should be back to back...'
+         ENDIF
+c     rotation factors
+         COD= P1(3)/P1TOT
+         SID= DSQRT(P1(1)**2+P1(2)**2)/P1TOT
+         COF=1.D0
+         SIF=0.D0
+         IF(P1TOT*SID.GT.EPS5) THEN
+            COF=P1(1)/(SID*P1TOT)
+            SIF=P1(2)/(SID*P1TOT)
+            ANORF=DSQRT(COF*COF+SIF*SIF)
+            COF=COF/ANORF
+            SIF=SIF/ANORF
+         ENDIF
+c     rotate string final state
+         DO K=NOLD+1,NP
+            CALL SIB_TRANI(P(K,1),P(k,2),P(k,3),cod,sid,cof,sif
+     &           ,P2(1),P2(2),P2(3))
+            do ii=1,3
+               P(K,ii)=P2(ii)
+            enddo
+         ENDDO
+c     boost to hadron - hadron center-of-mass
+         DO K=NOLD+1,NP
+            CALL SIB_ALTRA(gabe(4),gabe(1),gabe(2),
+     &           gabe(3),P(k,1),p(k,2),p(k,3),p(k,4),
+     &           P1TOT,p2(1),p2(2),p2(3),p2(4))
+            do ii=1,4
+               P(K,ii)=P2(ii)
+            enddo
+         ENDDO
+      ELSEIF(IPAR(38).eq.0.or.IPAR(38).eq.3)THEN
+C...  boost string
+         DO K=NOLD+1,NP
+            PZ = P(K,3)
+            P(K,3) = GAM*(PZ+BET*P(K,4))
+            P(K,4) = GAM*(P(K,4)+BET*PZ)
+         ENDDO
+      ENDIF
+      LBAD = 0
+      END
+
+
+C-----------------------------------------------------------------------
+C     fragmentation functions in SIBYLL                        \FR'14
+C=======================================================================
+
+      FUNCTION ZDIS_4FLV (IFL1,IFL2, XMT2)
+
+C-----------------------------------------------------------------------
+C...z distribution
+c     includes charmed fragmentation (Peterson/SLAC)
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DOUBLE PRECISION FAin, FB0in
+      COMMON /S_CZDIS/ FAin, FB0in
+
+      DOUBLE PRECISION FAs1, fAs2
+      COMMON /S_CZDISs/ FAs1, fAs2
+      DOUBLE PRECISION ZDMAX, EPSI
+      COMMON /S_CZDISc/ ZDMAX, EPSI
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+
+      IAFL1 = IABS(mod(IFL1,100))
+      IAFL2 = IABS(mod(IFL2,100))
+c     SLAC-Peterson fragmentation function for charm
+      IF ((IAFL1/10.eq.4.or.mod(IAFL1,10).eq.4)
+     +     .or.(IAFL2/10.eq.4.or.mod(IAFL2,10).eq.4))THEN
+ 90      z = max(S_RNDM(0),1.e-8)
+         tcp = zmefn(z,epsi)/zdmax
+         if (tcp .lt. S_RNDM(1)) goto 90
+         zdis_4flv = z
+      else                      
+c     original lund function, non charm
+         fa=fain                ! lund parameter a
+         fb0=fb0in              ! lund parameter b
+c     parameters for hard scattering (gluon) fragmentation
+         IF(IPAR(6).eq.2)THEN
+            fa= PAR(18)
+            fb0= PAR(19)
+         ENDIF   
+c     special parameters for strange fragmentation
+c     only active for baryon beams (or K0,K0bar)
+C     DH   correction  may 10-1996
+         if (iabs(kb).ge.13) then ! baryons only
+            if (iafl2.eq.3)  fa=fain+fas2
+            if (iafl1.eq.3)  fa=fain+fas1
+         endif
+c     special parameters for baryon fragmentation
+c     similar to pythia
+         IF((IAFL1+IAFL2).gt.10.and.
+     &        (IPAR(36).eq.1.or.IPAR(20).eq.3))then
+            fa = fain + PAR(45)
+            fb0 = PAR(60)
+         ENDIF        
+         FB = FB0*XMT2
+         IF(FA.GT.0.01D0.AND.ABS(FA-1.D0)/FB.LE.0.01D0)
+     +         ZMAX=FB/(1.D0+FB)+(1.D0-FA)*FB**2/(1.D0+FB)**3
+         IF(FA.GT.0.01D0.AND.ABS(FA-1.D0)/FB.GT.0.01D0)
+     +     ZMAX=0.5D0*(1.D0+FB-DSQRT((1.D0-FB)**2+4.D0*FA*FB))/(1.D0-FA)
+         IF(ZMAX.LT.0.1D0)  ZDIV=2.75D0*ZMAX
+         IF(ZMAX.GT.0.85D0) 
+     +        ZDIV=ZMAX-0.6D0/FB**2+(FA/FB)*dLOG((0.01D0+FA)/FB)
+C...  Choice if z, preweighted for peaks at low or high z
+ 100     Z=S_RNDM(0)
+         IDIV=1
+         FPRE=1.D0
+         IF (ZMAX.LT.0.1D0)  THEN
+            IF(1.D0.LT.S_RNDM(1)*(1.D0-dLOG(ZDIV)))  IDIV=2
+            IF (IDIV.EQ.1)  Z=ZDIV*Z
+            IF (IDIV.EQ.2)  Z=ZDIV**Z
+            IF (IDIV.EQ.2)  FPRE=ZDIV/Z
+         ELSEIF (ZMAX.GT.0.85D0)  THEN
+            IF(1.D0.LT.S_RNDM(2)*(FB*(1.D0-ZDIV)+1.D0)) IDIV=2
+            IF (IDIV.EQ.1)  Z=ZDIV+dLOG(Z)/FB
+            IF (IDIV.EQ.1)  FPRE=dEXP(FB*(Z-ZDIV))
+            IF (IDIV.EQ.2)  Z=ZDIV+Z*(1.D0-ZDIV)
+         ENDIF
+C...weighting according to the correct formula
+         IF (Z.LE.FB/(50.D0+FB).OR.Z.GE.1.D0)  GOTO 100
+         FVAL=(ZMAX/Z)*dEXP(FB*(1.D0/ZMAX-1.D0/Z))
+         IF(FA.GT.0.01D0)  FVAL=((1.D0-Z)/(1.D0-ZMAX))**FA*FVAL
+         IF(FVAL.LT.S_RNDM(3)*FPRE)  GOTO 100
+         ZDIS_4FLV=Z
+         
+      ENDIF
+      
+      RETURN
+      END
+C=======================================================================
+      
+      SUBROUTINE ZNORMAL
+
+C-----------------------------------------------------------------------
+C...  normalisation for Peterson/SLAC frag. func
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DOUBLE PRECISION ZDMAX, EPSI
+      COMMON /S_CZDISc/ ZDMAX, EPSI
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      SAVE
+
+c     get the maximum zmefn value first for normalisation
+      jmax = 1000
+      zdmax = 1.D-10
+
+      DO j = 1, jmax
+         z = dble(j)/dble(jmax+1)
+         zdmax = max(zdmax, zmefn(z,epsi))
+      enddo
+      if (ndebug .gt. 0) WRITE(LUN,*)' ZDMAX,EPS:',zdmax, epsi
+      RETURN
+      END
+C=======================================================================
+
+      FUNCTION ZMEFN(z,eps)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+
+C...  Peterson/SLAC frag. func
+cdh   zmefn = (z*(1.D0-z**(-1)-eps/(1.D0-z))**2)**(-1)
+      zmefn = 1.D0/(z*(1.D0-z**(-1)-eps/(1.D0-z))**2)
+      RETURN
+      END
+
+C=======================================================================
+
+      FUNCTION ZBLEAD (LB)
+
+C-----------------------------------------------------------------------
+C...fragmentation function for leading baryon
+C.  simple form:  f(z) = a + x**b
+C   INPUT : LB = particle code.
+C..................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      DOUBLE PRECISION CLEAD, FLEAD
+      COMMON /S_CZLEAD/ CLEAD, FLEAD
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+
+      INTEGER IISO,ISPN
+      COMMON /S_SPN/ IISO(99), ISPN(99)
+
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+
+c      ncall = ncall + 1
+c      print*,'leading baryon frag. called:',lb,ncall
+
+C...  leading z lower bound
+c     used for protons only in Sib21 (if ..)
+c     used for all baryons alike in Sib22 (else..)    
+      ZLMIN = PAR(55)
+      ZSMR = PAR(56)
+
+      IF(IPAR(30).ne.0)THEN
+C     Sibyll 2.1 hard fragmentation function
+
+        IC = ICHP(LB)*ISIGN(1,LB)
+      
+        if (LB.ge.34.and.LB.le.39)  then ! Lambda's and Sigma's
+           IF(IPAR(35).eq.1)then
+              zblead=zdisn(1)     ! zblead**2   !soft
+           ELSE
+ 665          ZBLEAD = S_RNDM(LB)
+              if (zblead.le.0.01D0) goto 665
+           ENDIF
+c     zblead=zdisn(1) ! blead**2   ! soft
+        elseif (ic.eq.0)     then
+           if(IPAR(30).eq.2)then
+ 555          zblead = S_RNDM(1)
+              if (zblead .le. 0.01D0) goto 555     
+           else
+              zblead=zdisn(1)     ! blead**2   !soft
+           endif
+        elseif (ic.eq.1)  then   ! fast protons only
+           if (abs(lb).eq.13) then
+ 661          IF (S_RNDM(2) .LT. CLEAD)  THEN
+ 666             ZBLEAD = S_RNDM(0)
+                 if (zblead.le.0.01D0) goto 666
+              ELSE
+                 zblead=1.D0-zdisn(1) ! zblead**2   !hard
+              ENDIF
+c     truncated zblead to fix antiprotons
+              if (zblead.le.ZLMIN+ZSMR*(1.D0-2.D0*S_RNDM(LB))) goto 661
+           else
+              zblead=zdisn(1)     ! zblead**2   !hard
+           endif   
+        else if (ic.eq.2)  then   ! fast delta++
+           zblead=1.D0- zdisn(1)    ! (zblead)**.3333
+        else
+           zblead=S_RNDM(0)       ! zdisn(1)     !hard
+        endif
+        RETURN
+      ELSE
+C...  Sein's flat baryon fragmentation function a.k.a. Sibyll 2.2
+ 999     zblead = S_RNDM(0)
+         if (zblead .le. 0.01D0) goto 999
+c     truncated zblead to fix instring pair production (antiprotons)
+         if (zblead.le.ZLMIN+ZSMR*(1.D0-2.D0*S_RNDM(LB))) goto 999
+         RETURN
+      ENDIF
+      END
+
+C=======================================================================
+
+      FUNCTION ZDISN (n)
+
+C-----------------------------------------------------------------------
+C...Generate (1-x)**n
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+
+666   rmin=1.1D0
+      do i=1,n+1
+         R1=S_RNDM(i)
+         IF (R1.LE.RMIN) RMIN=R1
+      ENDDO
+      ZDISn=RMIN
+      if (zdisn.le.0.01D0) goto 666
+      if (zdisn.ge.0.99D0) goto 666
+      END
+C=======================================================================
+
+      SUBROUTINE SIB_SIG(Jint,SIB_SQS,SIB_PTmin,SIB_SIG_tot,
+     &                 SIB_SIG_ine,SIB_diff,SIB_diff2,SIB_B_el,SIB_PJET)
+
+C-----------------------------------------------------------------------
+C
+C...SIBYLL 2.1 cross sections 
+C
+C   input parameter: SIB_SQS   c.m.s. energy (GeV)
+C                    Jint      1 p-p cross sections
+C                              2 pi-p cross sections
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+      DOUBLE PRECISION SIB_PJET(0:NS_max,0:NH_max)
+      DOUBLE PRECISION SIB_SQS,SIB_PTmin,
+     &     SIB_SIG_ine,SIB_SIG_tot,SIB_diff(3),SIB_diff2(3,2),SIB_B_el
+
+
+      COMMON /SIGMAS/SQS,SIGTOT,SIGEL,SIGINE,
+     &               SIGSD1(2),SIGSD2(2),SIGDD(2),
+     &               SLOPE,SLOPEc,RHO,PROB(0:NS_max,0:NH_max),SIGSUM
+
+
+      COMMON /PROFILE/XNUS2,XMUS2,XNUSPI2,
+     &                XNUH2,XMUH2,XNUHPI2,
+     &                ENHPP,ENHPIP,al1,be1,al2,be2
+
+      COMMON /S_CHDCNV/ABR(2,400),ABP(2,400),ABH(2,400),DB,NB
+
+      DIMENSION XI(50)
+
+      DIMENSION SIG_BRN(3)
+      DIMENSION SIG_dif_1(2),SIG_dif_2(2),SIG_dd(2)
+
+      DIMENSION IHAR(2)
+
+      PARAMETER ( NPARFIT = 22 )
+      DOUBLE PRECISION PARS
+      COMMON /XSCTN_FIT/ PARS( 50 , 2 )
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+      COMMON /QCD_XSCTN/SIGQCD(61,2),INIT
+      DOUBLE PRECISION SIGQCD
+      SAVE
+      DATA INIT /0/
+      DATA (SIGQCD(K,1),K=    1,   61) /
+     &8.4663D-02,1.8246D-01,3.3880D-01,5.6845D-01,8.8686D-01,1.3116D+00,
+     &1.8626D+00,2.5645D+00,3.4445D+00,4.5343D+00,5.8715D+00,7.4962D+00,
+     &9.4579D+00,1.1811D+01,1.4620D+01,1.7955D+01,2.1890D+01,2.6522D+01,
+     &3.1952D+01,3.8303D+01,4.5704D+01,5.4307D+01,6.4284D+01,7.5818D+01,
+     &8.9121D+01,1.0447D+02,1.2213D+02,1.4240D+02,1.6562D+02,1.9221D+02,
+     &2.2260D+02,2.5733D+02,2.9694D+02,3.4207D+02,3.9348D+02,4.5194D+02,
+     &5.1838D+02,5.9376D+02,6.7921D+02,7.7609D+02,8.8578D+02,1.0099D+03,
+     &1.1504D+03,1.3090D+03,1.4882D+03,1.6903D+03,1.9183D+03,2.1754D+03,
+     &2.4650D+03,2.7912D+03,3.1582D+03,3.5707D+03,4.0341D+03,4.5538D+03,
+     &5.1360D+03,5.7883D+03,6.5193D+03,7.3358D+03,8.2428D+03,9.2498D+03,
+     &1.0369D+04/
+      DATA (SIGQCD(K,2),K=    1,   61) /
+     &1.5665D-01,2.8800D-01,4.7863D-01,7.4235D-01,1.0949D+00,1.5547D+00,
+     &2.1433D+00,2.8859D+00,3.8118D+00,4.9547D+00,6.3534D+00,8.0525D+00,
+     &1.0103D+01,1.2563D+01,1.5498D+01,1.8986D+01,2.3111D+01,2.7971D+01,
+     &3.3678D+01,4.0358D+01,4.8154D+01,5.7228D+01,6.7762D+01,7.9965D+01,
+     &9.4071D+01,1.1034D+02,1.2909D+02,1.5063D+02,1.7536D+02,2.0370D+02,
+     &2.3613D+02,2.7321D+02,3.1553D+02,3.6379D+02,4.1875D+02,4.8129D+02,
+     &5.5238D+02,6.3311D+02,7.2470D+02,8.2854D+02,9.4614D+02,1.0792D+03,
+     &1.2298D+03,1.3999D+03,1.5920D+03,1.8089D+03,2.0534D+03,2.3291D+03,
+     &2.6396D+03,2.9892D+03,3.3825D+03,3.8248D+03,4.3219D+03,4.8803D+03,
+     &5.5072D+03,6.2109D+03,7.0001D+03,7.8849D+03,8.8764D+03,9.9871D+03,
+     &1.1231D+04/
+
+
+      IF(INIT.EQ.0) THEN
+*        CALL HAR_INI
+        CALL FACT_INI
+        IHAR(1) = 0
+        IHAR(2) = 0
+        INIT = 1
+      ENDIF
+
+      ECM = SIB_SQS
+
+      IF(JINT.EQ.1) THEN
+c     K = 1 , proton
+         DO K=1,NPARFIT
+            XI(K) = PARS(K,1)
+         ENDDO
+
+      ELSE IF(JINT.EQ.2) THEN
+c     K = 2 , pion
+         DO K=1,NPARFIT
+            XI(K) = PARS(K,2)
+         ENDDO
+
+      ENDIF
+
+      XNUS2   = XI(12)
+      XMUS2   = XI(13)
+      XNUSPI2 = XI(14)
+
+      XNUH2   = XI(15)
+      XMUH2   = XI(16)
+      XNUHPI2 = XI(17)
+
+      CALL HAD_CONV(IABS(JINT))
+
+      PTCUT = XI(10)+XI(21)*dEXP(XI(22)*DSQRT(2.D0*dLOG(ECM)))
+      INDX = abs(JINT)
+      IHAR(INDX) = IHAR(INDX)+1
+      SIGHAR = SIGQCD(IHAR(INDX),INDX)
+
+      S = ECM**2
+
+      BREG =  ABS(XI(18)) + XI(19)*dLOG(S)
+      BPOM =  ABS(XI(12)) + XI(13)*dLOG(S)
+      IK = ABS(JINT)
+      DO JB=1,NB
+        B = DB*DBLE(JB-1)
+        ABR(IK,JB) = 2.D0/(8.D0*PI*BREG)*dEXP(-B**2/(4.D0*BREG))
+        ABP(IK,JB) = 2.D0/(8.D0*PI*BPOM)*dEXP(-B**2/(4.D0*BPOM))
+      ENDDO
+
+C  reggeon
+      SIGSR = ABS(XI(2))*S**(-ABS(XI(4)))
+      SIG_BRN(1) = SIGSR/CMBARN
+C  pomeron (soft part)
+      SIGSP = ABS(XI(1))*S**ABS(XI(3))
+      SIG_BRN(2) = SIGSP/CMBARN
+C  pomeron (hard part)
+      SIG_BRN(3) = SIGHAR/CMBARN
+
+C  2x2 channel low-mass model and separate high-mass diffraction
+        
+      al1 = XI(5)
+      be1 = XI(6)
+      al2 = al1
+      be2 = be1
+      EnhPP  = XI(9)
+      EnhPiP = EnhPP
+
+      CALL SIG_JET_3 (SIG_brn,JINT,SIG_tot,SIG_ela,SIG_ine,SIG_sum,
+     &                SIG_dif_1,SIG_dif_2,SIG_dd,B_el,PROB)
+
+      SIGTOT = SIG_tot*CMBARN
+      SIGINE = SIG_ine*CMBARN
+      SIGSUM = SIG_sum*CMBARN
+      SIGELc = SIGTOT-SIGINE
+      SIGEL  = SIG_ela*CMBARN
+      SIGSD1(1) = SIG_dif_1(1)*CMBARN
+      SIGSD1(2) = SIG_dif_1(2)*CMBARN
+      SIGSD2(1) = SIG_dif_2(1)*CMBARN
+      SIGSD2(2) = SIG_dif_2(2)*CMBARN
+      SIGDD(1)  = SIG_dd(1)*CMBARN
+      SIGDD(2)  = SIG_dd(2)*CMBARN
+      SLOPE  = B_EL
+      SLOPEc = SIG_tot**2/(16.D0*PI*SIG_ela)
+
+      DE = ABS(SIGEL+SIGINE-SIGTOT)/SIGTOT
+      IF(DE.GT.0.01D0) THEN
+        print *,'SIBSIG:      Ecm: ',ECM
+        print *,'          SIGTOT: ',SIGTOT
+        print *,'        SIGEL1/2: ',SIGEL,SIGELc
+        print *,'        SLOPE1/2: ',SLOPE,SLOPEc
+        print *,'        SIGDIF 1: ',SIGSD1
+        print *,'        SIGDIF 2: ',SIGSD2
+        print *,'         SIGDDIF: ',SIGDD
+        print *,'      SUM-SIGTOT: ',SIGEL+SIGINE-SIGTOT
+      ENDIF
+
+C  SIBYLL interface to single precision
+
+      SIB_PTmin   = PTCUT
+      SIB_SIG_tot = SIGTOT
+      SIB_SIG_ine = SIGINE
+      SIB_diff(1) = SIGSD1(1)+SIGSD1(2)
+      SIB_diff(2) = SIGSD2(1)+SIGSD2(2)
+      SIB_diff(3) = SIGDD(1)+SIGDD(2)
+      SIB_B_el    = SLOPE
+      DO I=0,NS_max
+        DO K=0,NH_max
+          SIB_PJET(I,K) = PROB(I,K)
+        ENDDO
+      ENDDO
+c     full diff. cross section 
+c     ( ( b.single , t.single , double ) , ( low mass , high mass ) ) 
+      SIB_diff2(1,1) = SIGSD1(1)
+      SIB_diff2(1,2) = SIGSD1(2)
+      SIB_diff2(2,1) = SIGSD2(1)
+      SIB_diff2(2,2) = SIGSD2(2)
+      SIB_diff2(3,1) = SIGDD(1)
+      SIB_diff2(3,2) = SIGDD(2)
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIG_JET_3 (SIG_brn, JINT, SIG_TOT, SIG_ELA, 
+     &        SIG_INE, SIG_sum, SIG_DIF1, SIG_DIF2, SIG_DD, B_EL, P_int)
+
+C-----------------------------------------------------------------------
+C
+C...This subroutine  receives in INPUT:
+C.       SIG_brn (GeV-2)  Born graph cross sections
+C.       JINT (1 = pp interaction)    (2 pi-p interaction)
+C.       neg. value: without calculation of interaction probabilities
+C.
+C.  and returns as output:
+C.       SIG_???  , B_el
+C.       and P_int(0:NS_max,0:NH_max)   interaction probabilities
+C
+C   two x two -channel approximation for diffraction
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      DIMENSION SIG_brn(3)
+      PARAMETER (NS_max = 20, NH_max = 80)
+
+      COMMON /S_CFACT/ FACT(0:NH_max), CO_BIN(0:NH_max,0:NH_max)
+      COMMON /S_CHDCNV/ABR(2,400),ABP(2,400),ABH(2,400),DB,NB
+
+      COMMON /PROFILE/XNUS2,XMUS2,XNUSPI2,
+     &                XNUH2,XMUH2,XNUHPI2,
+     &                EnhPP,EnhPiP,al1,be1,al2,be2
+
+      DIMENSION SIG_DIF1(2),SIG_DIF2(2),SIG_DD(2),
+     &          P_int(0:NS_max,0:NH_max)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+      DOUBLE PRECISION EPS100
+      SAVE
+      DATA EPS100 /1.D-100/
+      
+      DO J=0,NH_max
+        DO I=0,NS_max
+          P_int(I,J) = 0.D0
+        ENDDO
+      ENDDO
+
+      ga1 = dsqrt(al1*al1+be1*be1)
+      ga2 = dsqrt(al2*al2+be2*be2)
+
+      fe_a_1  = (1.D0+al1/ga1)/2.D0
+      fe_a_2  = (1.D0-al1/ga1)/2.D0
+      fd_a_1  = sqrt(1.D0-(al1/ga1)**2)/2.D0
+      fd_a_2  = -fd_a_1
+
+      fe_b_1  = (1.D0+al2/ga2)/2.D0
+      fe_b_2  = (1.D0-al2/ga2)/2.D0
+      fd_b_1  = dsqrt(1.D0-(al2/ga2)**2)/2.D0
+      fd_b_2  = -fd_b_1
+
+      fe_11 = fe_a_1*fe_b_1
+      fe_22 = fe_a_2*fe_b_2
+      fe_12 = fe_a_1*fe_b_2
+      fe_21 = fe_a_2*fe_b_1
+
+      fd_a_11 = fd_a_1*fe_b_1
+      fd_a_22 = fd_a_2*fe_b_2
+      fd_a_12 = fd_a_1*fe_b_2
+      fd_a_21 = fd_a_2*fe_b_1
+
+      fd_b_11 = fe_a_1*fd_b_1
+      fd_b_22 = fe_a_2*fd_b_2
+      fd_b_12 = fe_a_1*fd_b_2
+      fd_b_21 = fe_a_2*fd_b_1
+
+      fdd_11 = fd_a_1*fd_b_1
+      fdd_22 = fd_a_2*fd_b_2
+      fdd_12 = fd_a_1*fd_b_2
+      fdd_21 = fd_a_2*fd_b_1
+
+
+      sum_abs = 0.D0
+      sum_tot = 0.D0
+      sum_ela = 0.D0
+      sum_sd_a = 0.D0
+      sum_sd_b = 0.D0
+      sum_dd  = 0.D0
+      sum_B   = 0.D0
+
+      IK = ABS(JINT)
+      if(JINT.GT.0) then
+        I0MAX = NS_max
+        J0MAX = NH_max
+      ELSE
+        I0MAX = 1
+        J0MAX = 1
+      ENDIF
+      SIG_REG = SIG_BRN(1)
+      SIG_POM = SIG_BRN(2)
+      SIG_HAR = SIG_BRN(3)
+
+      DO JB=1,NB
+
+         B = DB*DBLE(JB-1)
+
+         ABREG = ABR(IK,JB)
+         ABPOM = ABP(IK,JB)
+         ABHAR = ABH(IK,JB)
+
+         chi2_soft = ABREG*SIG_REG+ABPOM*SIG_POM
+         chi2_soft_11 = (1.D0-al1+ga1)*(1.D0-al2+ga2)*chi2_soft
+         chi2_soft_22 = (1.D0-al1-ga1)*(1.D0-al2-ga2)*chi2_soft
+         chi2_soft_12 = (1.D0-al1+ga1)*(1.D0-al2-ga2)*chi2_soft
+         chi2_soft_21 = (1.D0-al1-ga1)*(1.D0-al2+ga2)*chi2_soft
+
+         chi2_hard = ABHAR*SIG_HAR
+         chi2_hard_11 = (1.D0-al1+ga1)*(1.D0-al2+ga2)*chi2_hard
+         chi2_hard_22 = (1.D0-al1-ga1)*(1.D0-al2-ga2)*chi2_hard
+         chi2_hard_12 = (1.D0-al1+ga1)*(1.D0-al2-ga2)*chi2_hard
+         chi2_hard_21 = (1.D0-al1-ga1)*(1.D0-al2+ga2)*chi2_hard
+          
+         ef_11 = max(-0.5D0*(chi2_soft_11+chi2_hard_11),log(EPS100))
+         ef_22 = max(-0.5D0*(chi2_soft_22+chi2_hard_22),log(EPS100))
+         ef_12 = max(-0.5D0*(chi2_soft_12+chi2_hard_12),log(EPS100))
+         ef_21 = max(-0.5D0*(chi2_soft_21+chi2_hard_21),log(EPS100))
+         
+         ef_11 = dexp(ef_11)
+         ef_22 = dexp(ef_22)
+         ef_12 = dexp(ef_12)
+         ef_21 = dexp(ef_21)
+
+         esf_11  = max(ef_11,EPS100)**2
+         esf_22  = max(ef_22,EPS100)**2
+         esf_12  = max(ef_12,EPS100)**2
+         esf_21  = max(ef_21,EPS100)**2
+
+         F_ine = B*(1.D0 - fe_11*esf_11 - fe_12*esf_12 
+     &                   - fe_21*esf_21 - fe_22*esf_22)
+         F_tot = 1.D0 - fe_11*ef_11 - fe_12*ef_12
+     &                - fe_21*ef_21 - fe_22*ef_22
+         F_ela = B*F_tot**2
+         F_tot = B*F_tot
+
+         F_sd_a = B*(fd_a_11*ef_11 + fd_a_12*ef_12
+     &             + fd_a_21*ef_21 + fd_a_22*ef_22)**2
+         F_sd_b = B*(fd_b_11*ef_11 + fd_b_12*ef_12
+     &             + fd_b_21*ef_21 + fd_b_22*ef_22)**2
+         F_dd  = B*(fdd_11*ef_11 + fdd_12*ef_12
+     &            + fdd_21*ef_21 + fdd_22*ef_22)**2
+
+         sum_abs = sum_abs+F_ine
+         sum_tot = sum_tot+F_tot
+         sum_ela = sum_ela+F_ela
+
+         sum_sd_a = sum_sd_a+F_sd_a
+         sum_sd_b = sum_sd_b+F_sd_b
+         sum_dd  = sum_dd +F_dd 
+
+         sum_B   = sum_b+B**2*F_tot
+
+         fac_11 = B*esf_11
+         fac_22 = B*esf_22
+         fac_12 = B*esf_12
+         fac_21 = B*esf_21
+         soft_rec_11 = 1.D0/chi2_soft_11
+         soft_rec_22 = 1.D0/chi2_soft_22
+         soft_rec_12 = 1.D0/chi2_soft_12
+         soft_rec_21 = 1.D0/chi2_soft_21
+         chi2_hard_11 = max(chi2_hard_11,EPS100)
+         chi2_hard_22 = max(chi2_hard_22,EPS100)
+         chi2_hard_12 = max(chi2_hard_12,EPS100)
+         chi2_hard_21 = max(chi2_hard_21,EPS100)
+         DO I=0,I0MAX
+           soft_rec_11 = max(soft_rec_11*chi2_soft_11,EPS100)
+           soft_rec_22 = max(soft_rec_22*chi2_soft_22,EPS100)
+           soft_rec_12 = max(soft_rec_12*chi2_soft_12,EPS100)
+           soft_rec_21 = max(soft_rec_21*chi2_soft_21,EPS100)
+           hard_rec_11 = max(1.D0/chi2_hard_11,EPS100)
+           hard_rec_22 = max(1.D0/chi2_hard_22,EPS100)
+           hard_rec_12 = max(1.D0/chi2_hard_12,EPS100)
+           hard_rec_21 = max(1.D0/chi2_hard_21,EPS100)
+           DO J=0,J0MAX
+             hard_rec_11 = max(hard_rec_11*chi2_hard_11,EPS100)
+             hard_rec_22 = max(hard_rec_22*chi2_hard_22,EPS100)
+             hard_rec_12 = max(hard_rec_12*chi2_hard_12,EPS100)
+             hard_rec_21 = max(hard_rec_21*chi2_hard_21,EPS100)
+             P_int(I,J) = P_int(I,J) 
+     &                + fe_11*soft_rec_11*hard_rec_11*fac_11
+     &                + fe_22*soft_rec_22*hard_rec_22*fac_22
+     &                + fe_12*soft_rec_12*hard_rec_12*fac_12
+     &                + fe_21*soft_rec_21*hard_rec_21*fac_21
+           ENDDO
+         ENDDO
+
+      ENDDO
+
+      SIG_abs  = SUM_abs*TWOPI*DB
+      SIG_tot  = SUM_tot*4.D0*PI*DB
+      SIG_ela  = SUM_ela*TWOPI*DB
+      SIG_dif1(1) = SUM_sd_a*TWOPI*DB
+      SIG_dif2(1) = SUM_sd_b*TWOPI*DB
+      SIG_dd(1)   = SUM_dd*TWOPI*DB
+      SIG_ine  = SIG_abs + SIG_dif1(1) + SIG_dif2(1) + SIG_dd(1)
+      B_EL     = sum_B/SUM_tot/2.D0
+
+      SA = 0.D0
+      P_int(0,0) = 0.D0
+      DO I=0,I0MAX
+        DO J=0,J0MAX
+          fac = FACT(I)*FACT(J)
+          P_int(I,J) = P_int(I,J)/fac
+          SA = SA + P_int(I,J)
+        ENDDO
+      ENDDO
+
+      SIG_hmsd = EnhPP*(P_int(1,0)+P_int(0,1))*TWOPI*DB
+      SIG_hmdd = be1**2*SIG_hmsd + be2**2*SIG_hmsd
+     &          + EnhPP**2*P_int(1,1)*TWOPI*DB
+
+      SIG_dif1(2) = SIG_hmsd
+      SIG_dif2(2) = SIG_hmsd
+      SIG_dd(2)   = SIG_hmdd
+
+      SIG_sum = SA*TWOPI*DB
+
+      DO I=0,I0MAX
+        DO J=0,J0MAX
+          P_int(I,J) = P_int(I,J)/SA
+        ENDDO
+      ENDDO
+
+      END
+
+C=======================================================================
+
+      SUBROUTINE HAD_CONV(JINT)
+
+C-----------------------------------------------------------------------
+C
+C...Convolution of hadrons profile
+C.  [function A(b) of Durand and Pi]
+C.  precalculate and put  in COMMON block
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+C
+      COMMON /S_CHDCNV/ABR(2,400),ABP(2,400),ABH(2,400),DB,NB
+
+      DOUBLE PRECISION NU2, MU2, NUPI2, NU, MU, NUPI
+      COMMON /S_CH0CNV/ NU2, MU2, NUPI2, NU, MU, NUPI
+
+C
+      COMMON /PROFILE/XNUS2,XMUS2,XNUSPI2,
+     &                XNUH2,XMUH2,XNUHPI2,
+     &                ENHPP,ENHPIP,al1,be1,al2,be2
+      SAVE
+
+C...integration constants
+      BMAX = 50.D0
+      NB  = 400
+      DB = BMAX/DBLE(NB)
+
+C  soft reggeon interactions
+
+      NU2   = XNUS2
+      MU2   = XMUS2
+      NUPI2 = XNUSPI2
+
+      NU = SQRT(NU2)
+      MU = SQRT(ABS(MU2))
+      NUPI = SQRT(NUPI2) 
+
+      DO JB=1,NB
+         B = DB*DBLE(JB-1)
+         IF(JINT.EQ.1) THEN
+           ABR(JINT,JB) = A_PP(B)
+         ELSE
+           ABR(JINT,JB) = A_PIP(B)
+         ENDIF
+      ENDDO 
+
+C  soft pomeron interactions
+
+      NU2   = XNUS2
+      MU2   = XMUS2
+      NUPI2 = XNUSPI2
+
+      NU = SQRT(NU2)
+      MU = SQRT(ABS(MU2))
+      NUPI = SQRT(NUPI2)
+
+      DO JB=1,NB
+         B = DB*DBLE(JB-1)
+         IF(JINT.EQ.1) THEN
+           ABP(JINT,JB) = A_PP(B)
+         ELSE
+           ABP(JINT,JB) = A_PIP(B)
+         ENDIF
+      ENDDO
+
+C  hard pomeron interactions
+
+      NU2   = XNUH2
+      MU2   = XMUH2
+      NUPI2 = XNUHPI2
+
+      NU = SQRT(NU2)
+      MU = SQRT(ABS(MU2))
+      NUPI = SQRT(NUPI2)
+
+      DB = BMAX/DBLE(NB)
+      DO JB=1,NB
+         B = DB*DBLE(JB-1)
+         IF(JINT.EQ.1) THEN
+           ABH(JINT,JB) = A_PP(B)
+         ELSE
+           ABH(JINT,JB) = A_PIP(B)
+         ENDIF
+      ENDDO
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION A_PP (b)
+
+C-----------------------------------------------------------------------
+C...Convolution of parton distribution for pp interaction
+      IMPLICIT DOUBLE PRECISION (A-Z)
+C
+      DOUBLE PRECISION NU2, MU2, NUPI2, NU, MU, NUPI
+      COMMON /S_CH0CNV/ NU2, MU2, NUPI2, NU, MU, NUPI
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      ETA = NU2/MU2
+ 
+      IF(ETA.LT.0.D0) THEN
+   
+        c = nu**5/(96.D0*PI)
+        if (b .gt. 0.0001D0)  then
+           A_pp = c*b**3 * bessk (3, b*nu)
+        else
+           A_pp = nu**2/(12.D0*PI)
+        endif
+
+      ELSE
+
+        X = B*NU
+        Y = B*MU
+        C = NU2/(12.D0*PI)/(1.D0-ETA)**2
+        IF(X.GT.0.0001D0) THEN
+          A_PP = C*(1.D0/8.D0*X**3*BESSK(3,X)
+     &          -3.D0/2.D0*ETA/(1.D0-ETA)*X**2*BESSK(2,X)
+     &          + 9.D0*ETA**2/(1.D0-ETA)**2*X*BESSK1(X)
+     &          -24.D0*ETA**3/(1.D0-ETA)**3*(BESSK0(X)-BESSK0(Y))
+     &          + 3.D0*ETA**3/(1.D0-ETA)**2*Y*BESSK1(Y))
+        ELSE
+          A_PP = C*(1.D0 /8.D0*8.D0
+     &          -3.D0/2.D0*ETA/(1.D0-ETA)*2.D0
+     &          +9.D0*ETA**2/(1.D0-ETA)**2*1.D0
+     &          -24.D0*ETA**3/(1.D0-ETA)**3*LOG(MU/NU)
+     &          +3.D0*ETA**3/(1.D0-ETA)**2*1.D0)
+        ENDIF
+
+      ENDIF
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION A_PIP (b)
+
+C-----------------------------------------------------------------------
+C...Convolution of parton distribution for pip interaction
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-Z)
+C
+      DOUBLE PRECISION NU2, MU2, NUPI2, NU, MU, NUPI
+      COMMON /S_CH0CNV/ NU2, MU2, NUPI2, NU, MU, NUPI
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      eta = nu2/nupi2
+      c = nu2/(2.D0*PI) * 1.D0/(1.D0-eta)
+
+      if (b .gt. 0.0001D0)  then
+         b1 = b*nu
+         b2 = b*nupi
+         f1 = 0.5D0*b1 * bessk1(b1)
+         f2 = eta/(1.D0-eta)*(bessk0(b2)- bessk0(b1))
+         A_pip = c*(f1+f2)
+      else
+         A_pip = c*(0.5D0 + eta/(1.D0-eta)*log(nu/nupi))
+      endif
+      return
+      end
+C
+C
+C-----------------------------------------------------------------------
+C  Bessel functions
+C=======================================================================
+
+      FUNCTION BESSK0(X)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+C
+      DOUBLE PRECISION P1,P2,P3,P4,P5,P6,P7,
+     *                 Q1,Q2,Q3,Q4,Q5,Q6,Q7
+      SAVE
+      DATA P1,P2,P3,P4,P5,P6,P7/-0.57721566D0,0.42278420D0,
+     *    0.23069756D0,0.3488590D-1,0.262698D-2,0.10750D-3,0.74D-5/
+      DATA Q1,Q2,Q3,Q4,Q5,Q6,Q7/1.25331414D0,-0.7832358D-1,
+     * 0.2189568D-1,-0.1062446D-1,0.587872D-2,-0.251540D-2,0.53208D-3/
+
+      IF (X.LE.2.0D0) THEN
+        Y=X*X/4.D0
+        BESSK0=(-LOG(X/2.D0)*BESSI0(X))+(P1+Y*(P2+Y*(P3+
+     *        Y*(P4+Y*(P5+Y*(P6+Y*P7))))))
+      ELSE
+        Y=(2.D0/X)
+        BESSK0=(EXP(-X)/SQRT(X))*(Q1+Y*(Q2+Y*(Q3+
+     *        Y*(Q4+Y*(Q5+Y*(Q6+Y*Q7))))))
+      ENDIF
+      RETURN
+      END
+C
+C=======================================================================
+
+      FUNCTION BESSK1(X)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+C
+      DOUBLE PRECISION P1,P2,P3,P4,P5,P6,P7,
+     *                 Q1,Q2,Q3,Q4,Q5,Q6,Q7
+      SAVE
+      DATA P1,P2,P3,P4,P5,P6,P7/1.0D0,0.15443144D0,-0.67278579D0,
+     *    -0.18156897D0,-0.1919402D-1,-0.110404D-2,-0.4686D-4/
+      DATA Q1,Q2,Q3,Q4,Q5,Q6,Q7/1.25331414D0,0.23498619D0,
+     *    -0.3655620D-1,0.1504268D-1,-0.780353D-2,0.325614D-2,
+     *    -0.68245D-3/
+
+      IF (X.LE.2.D0) THEN
+        Y=X*X/4.D0
+        BESSK1=(LOG(X/2.D0)*BESSI1(X))+(1.D0/X)*(P1+Y*(P2+
+     *      Y*(P3+Y*(P4+Y*(P5+Y*(P6+Y*P7))))))
+      ELSE
+        Y=2.D0/X
+        BESSK1=(EXP(-X)/SQRT(X))*(Q1+Y*(Q2+Y*(Q3+
+     *      Y*(Q4+Y*(Q5+Y*(Q6+Y*Q7))))))
+      ENDIF
+      RETURN
+      END
+C
+C=======================================================================
+
+      FUNCTION BESSK(N,X)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+C
+      IF (N.LT.2) stop 'bad argument N in BESSK'
+      TOX=2.D0/X
+      BKM=BESSK0(X)
+      BK=BESSK1(X)
+      DO 11 J=1,N-1
+        BKP=BKM+J*TOX*BK
+        BKM=BK
+        BK=BKP
+11    CONTINUE
+      BESSK=BK
+      RETURN
+      END
+C
+C=======================================================================
+
+      FUNCTION BESSI0(X)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+C
+      DOUBLE PRECISION P1,P2,P3,P4,P5,P6,P7,
+     *                 Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9
+      SAVE
+      DATA P1,P2,P3,P4,P5,P6,P7/1.0D0,3.5156229D0,3.0899424D0,
+     *    1.2067492D0, 0.2659732D0,0.360768D-1,0.45813D-2/
+      DATA Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9/0.39894228D0,0.1328592D-1,
+     *    0.225319D-2,-0.157565D-2,0.916281D-2,-0.2057706D-1,
+     *    0.2635537D-1,-0.1647633D-1,0.392377D-2/
+
+      IF (ABS(X).LT.3.75D0) THEN
+        Y=(X/3.75D0)**2
+        BESSI0=P1+Y*(P2+Y*(P3+Y*(P4+Y*(P5+Y*(P6+Y*P7)))))
+      ELSE
+        AX=ABS(X)
+        Y=3.75D0/AX
+        BESSI0=(EXP(AX)/SQRT(AX))*(Q1+Y*(Q2+Y*(Q3+Y*(Q4
+     *      +Y*(Q5+Y*(Q6+Y*(Q7+Y*(Q8+Y*Q9))))))))
+      ENDIF
+      RETURN
+      END
+C
+C=======================================================================
+
+      FUNCTION BESSI1(X)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+C
+      DOUBLE PRECISION P1,P2,P3,P4,P5,P6,P7,
+     *                 Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9
+      SAVE
+      DATA P1,P2,P3,P4,P5,P6,P7/0.5D0,0.87890594D0,0.51498869D0,
+     *    0.15084934D0,0.2658733D-1,0.301532D-2,0.32411D-3/
+      DATA Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9/0.39894228D0,-0.3988024D-1,
+     *    -0.362018D-2,0.163801D-2,-0.1031555D-1,0.2282967D-1,
+     *    -0.2895312D-1,0.1787654D-1,-0.420059D-2/
+
+      IF (ABS(X).LT.3.75D0) THEN
+        Y=(X/3.75D0)**2
+        BESSI1=X*(P1+Y*(P2+Y*(P3+Y*(P4+Y*(P5+Y*(P6+Y*P7))))))
+      ELSE
+        AX=ABS(X)
+        Y=3.75D0/AX
+        BESSI1=(EXP(AX)/SQRT(AX))*(Q1+Y*(Q2+Y*(Q3+Y*(Q4+
+     *      Y*(Q5+Y*(Q6+Y*(Q7+Y*(Q8+Y*Q9))))))))
+      ENDIF
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE FACT_INI
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+      COMMON /S_CFACT/ FACT(0:NH_max), CO_BIN(0:NH_max,0:NH_max)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+      
+      FACT(0) = 1.D0
+      FACT(NS_max) = 1.D0  ! avoid unused warning and keep parameter block
+      DO J=1,NH_max
+         FACT(J) = FACT(J-1)*DBLE(J)
+      ENDDO
+      DO J=0,NH_max
+         DO K=0,J
+            CO_BIN(J,K) = FACT(J)/(FACT(K)*FACT(J-K))
+         ENDDO
+      ENDDO
+
+      END
+cC=======================================================================
+c
+c      SUBROUTINE SAMPLE_SOFT (STR_mass_min, X1,X2,PT)
+c
+C-----------------------------------------------------------------------
+C...  Routine for the sampling the kinematical variables of sea quarks
+C.     according to (1-x)**b / x**2
+C.  INPUT:  STR_mass_min : minimal string mass ** 2 = x1 * x2 * s
+C.          SLOPE : large x suppression exponent
+C.  OUTPUT:  gluon 4momenta on parton stack (GeV)                /FR'14
+C-----------------------------------------------------------------------
+c      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c      IMPLICIT INTEGER(I-N)
+c
+c      INTEGER NW_max
+c      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+c
+c     EVENT INFO COMMON
+c     contains overall interaction properties, like
+c     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+c      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+c      INTEGER KB,IAT,KT
+c      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+c
+c      INTEGER NCALL, NDEBUG, LUN
+c      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+c
+c      DOUBLE PRECISION PPT02
+c      COMMON /S_CQDIS2/ PPT02(44)
+c      INTEGER NIPAR_max,NPAR_max
+c      PARAMETER (NPAR_max=200,NIPAR_max=100)
+c      DOUBLE PRECISION PAR
+c      INTEGER IPAR
+c      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+c
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+c      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+c      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+c
+c      DOUBLE PRECISION PI,TWOPI,CMBARN
+c      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+c
+c      DOUBLE PRECISION FACN
+c      DIMENSION FACN(3:10)
+c      COMMON /SIB_FAC/ FACN
+c      SAVE
+c
+c      SLOPE = max(1.D0,PAR(42))
+c      ZSOF = 2.D0*dLOG(STR_mass_min/SQS) ! minim. mass ~ x1 * x2
+c 50   XMIN = dEXP(ZSOF)
+c      axmin = 1.D0/xmin
+c 100  Z1 = -1.D0*dLOG(axmin-(axmin-1.D0)*S_RNDM(0))
+c      x1 = dexp(z1)
+c      XR = dlog(1.D0-X1) - dlog(1.D0-xmin)
+c      if(SLOPE*XR.le.log(S_RNDM(0))) goto 100
+c
+c 200  Z2 = -1.D0*dLOG(axmin-(axmin-1.D0)*S_RNDM(0))
+c      X2 = dEXP(Z2)
+c      XR = dlog(1.D0-X2) - dlog(1.D0-dEXP(ZSOF))
+c      if(SLOPE*XR.le.dlog(S_RNDM(0))) goto 200     
+c
+c      IF(Z1+Z2.LE.ZSOF) GOTO 50
+c      STR_mass2 = dsqrt(X1*X2*S)/2.D0
+c      PPTT = PPT02(10)
+c 150  PT = PPTT*dSQRT(-dLOG(MAX(EPS10,S_RNDM(0))))
+c      IF(IPAR(3).eq.6)THEN
+c         XM = 0.D0
+c         XM2 = XM**2
+c         RNDM = MAX(EPS10,S_RNDM(IFL))
+c         XMT = PPTT * dLOG(RNDM) - XM
+c         XMT2 = XMT**2
+c         PT = dSQRT(XMT2-XM2)
+c      ENDIF
+c      IF(PT.GT.PTmin) GOTO 150
+c      IF(PT.GE.STR_mass2) GOTO 150
+c      END
+c
+cC=======================================================================
+c
+c      SUBROUTINE SAMPLE_SOFT2 (STR_mass_min, X1,X2,PT)
+c
+C-----------------------------------------------------------------------
+C...Routine for sampling the kinematical variables
+C.  that characterize a soft cut pomeron (x1,x2, pT)
+C.  from the differential cross section:
+C.     d3sigma/(dx1 dx2 dpT)
+C.      ~ 1/x_i**a .*. exp(-mT)
+C.  INPUT: STR_mass_min : minimal string mass defined by kinematic limits
+C.                        of the string fragmentation
+C.  PAR:   PAR(42) : exponent a
+C.  OUTPUT:  X1, X2, PT (GeV)
+C-----------------------------------------------------------------------
+c      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c      IMPLICIT INTEGER(I-N)
+c      INTEGER NW_max
+c      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+c
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+c      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+c      INTEGER KB,IAT,KT
+c      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+c
+c      INTEGER NCALL, NDEBUG, LUN
+c      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+c
+c      DOUBLE PRECISION PPT02
+c      COMMON /S_CQDIS2/ PPT02(44)
+c      INTEGER NIPAR_max,NPAR_max
+c      PARAMETER (NPAR_max=200,NIPAR_max=100)
+c      DOUBLE PRECISION PAR
+c      INTEGER IPAR
+c      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+c
+cC--------------------------------------------------------------------
+cC     SIBYLL utility common blocks containing constants       \FR'14
+cC--------------------------------------------------------------------
+c      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+c      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+c
+c      DOUBLE PRECISION PI,TWOPI,CMBARN
+c      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+c
+c      DOUBLE PRECISION FACN
+c      DIMENSION FACN(3:10)
+c      COMMON /SIB_FAC/ FACN
+c      SAVE
+c
+c      SLOPE = PAR(42)
+c      ZSOF = 2.D0*dLOG(STR_mass_min/SQS) ! zmin
+c      zsof = zsof * slope
+c 100  Z1=1.D0/SLOPE*(-zsof*S_RNDM(0)+zsof)
+c      Z2=1.D0/SLOPE*(-zsof*S_RNDM(0)+zsof)
+cc      print *,'zsof,z1,z2',zsof,z1,z2
+c      IF(Z1+Z2.LE.ZSOF) GOTO 100
+c      X1=dEXP(Z1)
+c      X2=dEXP(Z2)
+c      STR_mass2 = sqrt(X1*X2*S)/2.D0
+c      if(str_mass2.lt.0.9D0)goto 100
+c      PPTT = PPT02(10)
+cc      print *,'ptmin,str_mass:',ptmin,str_mass2
+c 150  PT = PPTT*dSQRT(-dLOG(MAX(EPS10,S_RNDM(0))))
+c      IF(IPAR(3).eq.6)THEN
+c         XM = 0.D0
+c         XM2 = XM**2
+c         RNDM = MAX(EPS10,S_RNDM(IFL))
+c         XMT = PPTT * dLOG(RNDM) - XM
+c         XMT2 = XMT**2
+c         PT = dSQRT(XMT2-XM2)
+c      ENDIF
+c      IF(PT.GT.PTmin) GOTO 150
+c      IF(PT.GE.STR_mass2) GOTO 150
+c      PHI = TWOPI*S_RNDM(L)
+c      END
+cC=======================================================================
+cc
+c      SUBROUTINE SAMPLE_SOFT3 (STR_mass_min, X1,X2,PT)
+c
+cC-----------------------------------------------------------------------
+cC...Routine for the sampling the kinematical variables
+cC.  that characterize a soft cut pomeron (x1,x2, pT)
+cC.  from the differential cross section:
+cC.     d3sigma/(dx1 dx2 dpT)
+cC.  INPUT:  L=1 incident proton, L=2  incident pi
+cC.          (soft strings identical for pi and p interactions)
+cC.  OUTPUT:  X1, X2, PT (GeV)
+cC-----------------------------------------------------------------------
+c      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c      IMPLICIT INTEGER(I-N)
+c      INTEGER NW_max
+c      PARAMETER (NW_max = 20)
+cC--------------------------------------------------------------------
+cC     SIBYLL common blocks containing event information       \FR'14
+cC--------------------------------------------------------------------
+c
+cC     EVENT INFO COMMON
+cC     contains overall interaction properties, like
+cC     SQS : center-of-mass energy
+cC     S   :         "       "     squared
+cC     PTmin : low pt cut of QCD cross section, 
+cC             i.e. minimal pt of hard minijets
+cC     Xmin : low-x bound for PDFs, 
+cC            i.e. minimal momentum fraction of hard partons
+cC     Zmin : logarithm of that
+cC     KB : PID of beam hadron
+cC     KT() : PID of target
+cC     IAT : mass number of target
+c      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+c      INTEGER KB,IAT,KT
+c      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+c
+c      INTEGER NCALL, NDEBUG, LUN
+c      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+c
+c      DOUBLE PRECISION PPT02
+c      COMMON /S_CQDIS2/ PPT02(44)
+c      INTEGER NIPAR_max,NPAR_max
+c      PARAMETER (NPAR_max=200,NIPAR_max=100)
+c      DOUBLE PRECISION PAR
+c      INTEGER IPAR
+c      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+c
+cC--------------------------------------------------------------------
+cC     SIBYLL utility common blocks containing constants       \FR'14
+cC--------------------------------------------------------------------
+c      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+c      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+c
+c      DOUBLE PRECISION PI,TWOPI,CMBARN
+c      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+c
+c      DOUBLE PRECISION FACN
+c      DIMENSION FACN(3:10)
+c      COMMON /SIB_FAC/ FACN
+c      SAVE
+c
+c      SLOPE = max(1.D0,PAR(42))
+c      ZSOF = 2.D0*dLOG(STR_mass_min/SQS) ! minim. mass ~ x1 * x2
+c 100  Z1=-ZSOF*S_RNDM(0)+ZSOF   ! sample envelope 1/x
+c      X1 = dEXP(Z1)
+cc      print *,'z1,x1:',z1,x1
+c      XR = dlog(1.D0-X1) - dlog(1.D0-dEXP(ZSOF))
+cc      print *,'ratio:',(1.-X1)/(1.-EXP(ZSOF)),(1.-X1),1.-EXP(ZSOF)
+cc      print *,'log ratio:',xr,log(1.-X1),log(1.-EXP(ZSOF))
+c      if(SLOPE*XR.le.dlog(S_RNDM(0))) goto 100
+c
+c 200  Z2=-ZSOF*S_RNDM(0)+ZSOF   ! sample envelope 1/x
+c      X2 = dEXP(Z2)
+c      XR = dlog(1.D0-X2) - dlog(1.D0-dEXP(ZSOF))
+c      if(SLOPE*XR.le.dlog(S_RNDM(0))) goto 200     
+cc      print *,'zsof,z1,z2',zsof,z1,z2
+c      IF(Z1+Z2.LE.ZSOF) GOTO 100
+c      STR_mass2 = sqrt(X1*X2*S)/2.D0
+c      PPTT = PPT02(10)
+c      IF(IPAR(3).eq.8) PPTT = PPT02(20)
+c 150  PT = PPTT*dSQRT(-dLOG(MAX(EPS10,S_RNDM(0))))
+c      IF(IPAR(3).ge.6)THEN
+c         XM = 0.D0
+c         XM2 = XM**2
+c         RNDM = MAX(EPS10,S_RNDM(IFL))
+c         XMT = PPTT * dLOG(RNDM) - XM
+c         XMT2 = XMT**2
+c         PT = dSQRT(XMT2-XM2)
+c      ENDIF
+c      IF(PT.GT.PTmin) GOTO 150
+c      IF(PT.GE.STR_mass2) GOTO 150
+c      PHI = TWOPI*S_RNDM(L)
+c      END
+cC=======================================================================
+c
+c      SUBROUTINE SAMPLE_SOFT5 (STR_mass_min, X1,X2,PT)
+c
+cC-----------------------------------------------------------------------
+cC...Routine for the sampling the kinematical variables of sea quarks
+cC.     according to (1-x)**b / x**2
+cC.  INPUT:  STR_mass_min : minimal string mass ** 2 = x1 * x2 * s
+cC.          SLOPE : large x suppression exponent
+cC.  OUTPUT:  X1, X2, PT (GeV)                                   /FR'14
+cC-----------------------------------------------------------------------
+c      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c      IMPLICIT INTEGER(I-N)
+c      INTEGER NW_max
+c      PARAMETER (NW_max = 20)
+cc      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, kb ,kt
+cC--------------------------------------------------------------------
+cC     SIBYLL common blocks containing event information       \FR'14
+cC--------------------------------------------------------------------
+c
+cC     EVENT INFO COMMON
+cC     contains overall interaction properties, like
+cC     SQS : center-of-mass energy
+cC     S   :         "       "     squared
+cC     PTmin : low pt cut of QCD cross section, 
+cC             i.e. minimal pt of hard minijets
+cC     Xmin : low-x bound for PDFs, 
+cC            i.e. minimal momentum fraction of hard partons
+cC     Zmin : logarithm of that
+cC     KB : PID of beam hadron
+cC     KT() : PID of target
+cC     IAT : mass number of target
+c      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+c      INTEGER KB,IAT,KT
+c      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+c
+c      INTEGER NCALL, NDEBUG, LUN
+c      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+c
+c      DOUBLE PRECISION PPT02
+c      COMMON /S_CQDIS2/ PPT02(44)
+c      INTEGER NIPAR_max,NPAR_max
+c      PARAMETER (NPAR_max=200,NIPAR_max=100)
+c      DOUBLE PRECISION PAR
+c      INTEGER IPAR
+c      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+c
+cC--------------------------------------------------------------------
+cC     SIBYLL utility common blocks containing constants       \FR'14
+cC--------------------------------------------------------------------
+c      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+c      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+c
+c      DOUBLE PRECISION PI,TWOPI,CMBARN
+c      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+c
+c      DOUBLE PRECISION FACN
+c      DIMENSION FACN(3:10)
+c      COMMON /SIB_FAC/ FACN
+c      SAVE
+c
+c      SLOPE = max(1.D0,PAR(42))
+c      ZSOF = 2.D0*dLOG(STR_mass_min/SQS) ! minim. mass ~ x1 * x2
+c 50   XMIN = dEXP(ZSOF)
+c      axmin = 1.D0/xmin
+c 100  Z1 = -1.D0*dLOG(axmin-(axmin-1.D0)*S_RNDM(0))
+c      x1 = dexp(z1)
+c      XR = dlog(1.D0-X1) - dlog(1.D0-xmin)
+c      if(SLOPE*XR.le.log(S_RNDM(0))) goto 100
+c
+c 200  Z2 = -1.D0*dLOG(axmin-(axmin-1.D0)*S_RNDM(0))
+c      X2 = dEXP(Z2)
+c      XR = dlog(1.D0-X2) - dlog(1.D0-dEXP(ZSOF))
+c      if(SLOPE*XR.le.dlog(S_RNDM(0))) goto 200     
+c
+c      IF(Z1+Z2.LE.ZSOF) GOTO 50
+c      STR_mass2 = dsqrt(X1*X2*S)/2.D0
+c      PPTT = PPT02(10)
+c      IF(IPAR(3).eq.8) PPTT = PPT02(20)
+c 150  PT = PPTT*dSQRT(-dLOG(MAX(EPS10,S_RNDM(0))))
+c      IF(IPAR(3).ge.6)THEN
+c         XM = 0.D0
+c         XM2 = XM**2
+c         RNDM = MAX(EPS10,S_RNDM(IFL))
+c         XMT = PPTT * dLOG(RNDM) - XM
+c         XMT2 = XMT**2
+c         PT = dSQRT(XMT2-XM2)
+c      ENDIF
+c      IF(PT.GT.PTmin) GOTO 150
+c      IF(PT.GE.STR_mass2) GOTO 150
+c      END
+c
+C=======================================================================
+
+      SUBROUTINE SAMPLE_SOFT6 (STR_mass_min, X1,X2,PT)
+
+C-----------------------------------------------------------------------
+C...Routine for the sampling the kinematical variables of sea quarks
+C.     according to (1-x)**b / x
+C.  INPUT:  STR_mass_min : minimal string mass ** 2 = x1 * x2 * s
+C.          SLOPE : large x suppression exponent
+C.  OUTPUT:  X1, X2, PT (GeV)                                   /FR'14
+C-----------------------------------------------------------------------
+Cf2py double precision, intent(in) :: STR_mass_min
+Cf2py double precision, intent(out) :: X1
+Cf2py double precision, intent(out) :: X2
+Cf2py double precision, intent(out) :: PT
+
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+      DOUBLE PRECISION PPT02
+      COMMON /S_CQDIS2/ PPT02(44)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+      
+      NOSLOPE = 0
+      SLOPE = PAR(42)
+      IF(SLOPE.lt.0.5D0) NOSLOPE = 1
+      XMAX = 0.8D0
+      ZSOF = 2.D0*LOG(STR_mass_min/SQS)       ! minim. mass ~ x1 * x2
+      XMINA = MAX(EXP(ZSOF),EPS10)
+      AXMINA = 1.D0/XMINA
+      IF(ndebug.gt.2)
+     &    write(lun,*) ' SAMPLE_SOFT6: Mmin,ZSOF,XMINA,XMAX,SLOPE:',
+     &     STR_mass_min,ZSOF,XMINA,XMAX,SLOPE
+      
+ 100  X1 = XM2DIS(XMINA,XMAX,1.D0)            ! ~(1/x)**alpha
+      IF(NOSLOPE.eq.1) goto 200
+      XRNDM = S_RNDM(0)
+      XR = LOG(1.D0-X1)-LOG(1.D0-XMINA)
+      IF(ndebug.gt.5)
+     &     write(lun,*) '  X1,XR,SLOPE*XR:',X1,XR,SLOPE*XR
+      if(SLOPE*XR.le.LOG(max(xrndm,eps10))) goto 100
+
+ 200  X2 = XM2DIS(XMINA,XMAX,1.D0)            ! ~(1/x)**alpha
+      IF(NOSLOPE.eq.1) goto 300
+      XRNDM = S_RNDM(1)
+      XR = log(1.D0-X2) - log(1.D0-XMINA)
+      IF(ndebug.gt.5)
+     &    write(lun,*) '  X2,XR,SLOPE*XR:',X2,XR,SLOPE*XR
+      if(SLOPE*XR.le.log(max(xrndm,eps10))) goto 200
+
+ 300  Z1 = log(X1)
+      Z2 = log(X2)
+      IF(Z1+Z2.LE.ZSOF) GOTO 100     
+      STR_mass2 = sqrt(X1*X2*S)/2.D0
+      PPTT = PPT02(10)
+      IF(IPAR(3).eq.8) PPTT = PPT02(20)
+      IF(ndebug.gt.2)
+     &    write(lun,*) ' SAMPLE_SOFT6: PPTT,Mmin2,PTmin:',
+     &PPTT,STR_mass2,PTmin
+ 150  PT = PPTT*SQRT(-LOG(MAX(EPS10,S_RNDM(0))))
+      IF(IPAR(3).ge.6)THEN
+         XM = 0.D0
+         XM2 = XM**2
+         RNDM = MAX(EPS10,S_RNDM(1))
+         XMT = PPTT * LOG(RNDM) - XM
+         XMT2 = XMT**2
+         PT = SQRT(XMT2-XM2)
+      ENDIF
+      IF(ndebug.gt.2)
+     &    write(lun,*) '  XM,XMT2,PT:',XM,XMT2,PT
+      IF(PT.GT.PTmin) GOTO 150
+      IF(PT.GE.STR_mass2) GOTO 150
+      END
+C=======================================================================
+
+      SUBROUTINE SIB_START_EV (SQS, L, IA, IAFLG, NW, JDIF)
+
+C-----------------------------------------------------------------------
+C...Beginning of a SIBYLL interaction 
+C.
+C.  add l.m. Glauber SD cross section for pAir  13/FR
+C.
+C.  INPUT : SQS = c.m.s. energy (GeV)
+C.          L = 1:proton, 2:charged pion
+C.          IA = mass of target nucleon
+C.          IAFLG = target is air
+C. 
+C.  OUTPUT: NW    = number of wounded nucleons
+C.          JDIF(JW)  = diffraction code    !!!! changed to field !!!!
+C.                  (0 : non-diffractive interaction)
+C.                  (1 : forward diffraction)
+C.                  (2 : backward diffraction)
+C.                  (3 : double diffraction)
+C.
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+c     external type declarations
+      INTEGER NW_max,JDIF,IA,L,IAFLG,NW
+      DOUBLE PRECISION SQS
+      PARAMETER (NW_max = 20)
+      DIMENSION JDIF(NW_max)
+      
+      DOUBLE PRECISION B, BMAX
+      INTEGER NTRY, NA
+      COMMON /S_CNCM0/ B, BMAX, NTRY, NA
+      DOUBLE PRECISION XM2MIN,ALXMIN,SLOP0,ASLOP,BSLOP,XMASS
+      COMMON /S_DIFMAss/ XM2MIN(6),ALXMIN(6),SLOP0,ASLOP,BSLOP,XMASS(2)
+      DOUBLE PRECISION XI_MAX, ALAM
+      COMMON /GLAUB_SCR/ XI_MAX, ALAM(61)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+c     local type declarations
+      DOUBLE PRECISION SIGT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO,
+     &     SIGPROD,SIGBDIF,SIGELA,S_RNDM,S,PF,PB,PD,P0,P1,P2,R
+      DIMENSION SIGDIF(3)
+      INTEGER K
+      SAVE
+
+      IF(NDEBUG.gt.0)
+     &WRITE(LUN,*)'SIB_START_EV:', SQS, L, IA, IAFLG, NW, JDIF
+      
+C...sample number of wounded nucleons
+c     read hadron-nucleon cross section from table
+      CALL SIB_SIGMA_HP(L,SQS,SIGT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO) 
+
+      IF (IA .GT. 1)  THEN
+         IF(IPAR(12).NE.0)THEN
+            IF(IPAR(12).eq.3)THEN
+c     distinguish between nuclear cross sections..
+               IF(IAFLG.eq.0)THEN
+c     if target is nucleus calc. hadron-nucleus cross section
+                  CALL SIB_SIGMA_HNUC(L,IA,SQS,SIGprod,SIGbdif,SIGela)
+               ELSE
+c     if target is air read hadron-air cross section from table
+                  CALL SIB_SIGMA_HAIR(L,SQS,SIGprod,SIGbdif)
+               ENDIF
+            ELSE
+c     always use air cross section...
+               CALL SIB_SIGMA_HAIR(L,SQS,SIGprod,SIGbdif)
+            ENDIF
+C     2channel low-mass (coherent) diffraction?
+            IF(S_RNDM(L).LT.SIGbdif/SIGprod)THEN
+               NW = 1
+               JDIF(1) = 1
+               RETURN
+            ENDIF
+         ENDIF
+c     sample number of wounded nucleons
+         CALL INT_H_NUC (IA, SIGT, SLOPE, RHO) 
+      ELSE
+         NA = 1
+      ENDIF      
+      NW = NA
+
+      IF(NDEBUG.gt.0) 
+     &   WRITE(LUN,'(A50,2I3,1P,3E10.3)')
+     &   '  START_EVT: IA, NW, SIGT, SLOPE, RHO:',IA,NW,SIGT,SLOPE,RHO
+C...new treatment of diffraction 
+      IF(IA.GT.1) THEN
+c     hadron-nucleus case
+         IF(NW.eq.1)THEN
+            IF(IPAR(12).NE.0)THEN
+c     high mass (incoherent) diffraction?
+               S = SQS ** 2
+               PF =(1.D0-dLOG(S*XI_MAX/XM2MIN(L))/
+     &              dLOG(S*PAR(13)/XM2MIN(L)))*SIGDIF(1)/SIGINEL
+               PB = SIGDIF(2)/SIGINEL
+               PD = SIGDIF(3)/SIGINEL
+            ELSE
+               PF = SIGDIF(1)/SIGINEL
+               PB = SIGDIF(2)/SIGINEL
+               PD = SIGDIF(3)/SIGINEL
+            ENDIF
+         ELSE
+c     Nw>1:
+            IF(IPAR(12).EQ.1)THEN
+c     all interactions with Nw>1 are non-diff.
+               DO K=1, NW
+                  JDIF(K) = 0
+               ENDDO
+               RETURN
+            ELSE
+c     some Nw>1 are attached by diff. 
+               PF = PAR(124)*SIGDIF(1)/SIGINEL
+               PB = PAR(124)*SIGDIF(2)/SIGINEL
+               PD = PAR(124)*SIGDIF(3)/SIGINEL
+            ENDIF
+         ENDIF
+      ELSE
+c     hadron-nucleon case
+         PF = SIGDIF(1)/SIGINEL
+         PB = SIGDIF(2)/SIGINEL
+         PD = SIGDIF(3)/SIGINEL
+      ENDIF
+      P0 = 1.D0-PF-PB-PD
+      P1 = P0 + PF
+      P2 = P1 + PB
+      DO K=1, NW
+         R = S_RNDM(0)
+         IF (R .LT. P0)  THEN
+            JDIF(K) = 0
+         ELSE IF (R .LT. P1)  THEN
+            JDIF(K) = 1
+         ELSE IF (R .LT. P2)  THEN
+            JDIF(K) = 2
+         ELSE 
+            JDIF(K) = 3
+         ENDIF
+      ENDDO
+      
+      END
+C=======================================================================
+
+      SUBROUTINE INI_EVENT(ECM,KBEAM,IATARG,IMOD)
+
+C-----------------------------------------------------------------------
+C     initializes the stacks and event info common
+c     if Imod : 0 - initiate subevent in recursive call
+c                  ( keeps the final hadron stack intact )
+C             : 1 - initiate entire new event
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+c     external type declarations
+      DOUBLE PRECISION ECM
+      INTEGER KBEAM,IATARG,IMOD
+
+c     COMMONs
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+C     parameters that represent: NW: max. number of wounded nucleons,
+C     NS,NH: max. number of soft and hard interactions
+c      PARAMETER (NW_max = 20)
+C     The COMMON block /S_CHIST/ contains information about the
+C     the structure of the  generated event:
+C     NWD   = number of wounded nucleons
+C     NJET = total number of hard interactions
+C     NSOF = total number of soft interactions
+C     NNSOF (1:NW) = number of soft pomeron cuts in each interaction
+C     NNJET (1:NW) = number of minijets produced in each interaction 
+C     JDIF(1:NW) = diffraction code 
+C                  0 : non-diff,
+C                  1 : beam-diff
+C                  2 : target-diff
+C                  3 : double-diff
+      INTEGER NNSOF,NNJET,JDIF,NWD,NJET,NSOF
+      COMMON /S_CHIST/ NNSOF(NW_max),NNJET(NW_max),
+     &     JDIF(NW_max),NWD,NJET,NSOF
+
+      INTEGER IBMRDX,ITGRDX,IHMJDX,ISMJDX,ICSTDX,IINTDX
+      COMMON /S_INDX/ IBMRDX(3),ITGRDX(NW_max,3),
+     &     IHMJDX(NW_max*NH_max),IINTDX(NW_max),
+     &     ISMJDX(NW_max*NS_max),ICSTDX(2*NW_max,3)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+      INTEGER II2,JJ2
+      DOUBLE PRECISION U2,C2,CD2,CM2
+      COMMON /SIB_RAND/ U2(97),C2,CD2,CM2,II2,JJ2
+
+c     local types
+      DOUBLE PRECISION PZ,E1,PAWT,S_RNDM,R,FOX
+      INTEGER KK,JJ,II,KBA,IREFout,JN
+      SAVE
+      DATA FOX /0.21522D0/  !atomic percentage of 'non-nitrogen' in air
+ 
+      
+      IF(NDEBUG.gt.0.and.IMOD.eq.1) 
+     &     WRITE(LUN,'(A50,F10.2,I4,I3,I3)')
+     &     '  INI_EVENT: called with (ECM,KBEAM,IATARG,NCALL):',
+     &     ECM,KBEAM,IATARG,NCALL
+
+c     set final particle stack to zero
+      IF(IMOD.eq.1)then
+         NP = 0
+         NWD = 0
+         NJET = 0
+         NSOF = 0
+      endif
+
+      CALL INI_PRTN_STCK(0,0)
+
+c     clear index cache
+      do kk=1,3
+         IBMRDX(kk) = 0
+      ENDDO
+      do jj=1,NW_max
+         do kk=1,3
+            ICSTDX(jj,kk) = 0
+            ICSTDX(jj+1,kk) = 0
+            ITGRDX(jj,kk) = 0
+            IINTDX(jj) = 0
+         ENDDO
+         do ii=1,NH_max
+            IHMJDX(NH_max*(JJ-1)+II) = 0
+         enddo
+         do ii=1,NS_max
+            ISMJDX(NS_max*(JJ-1)+II) = 0
+         enddo
+      ENDDO
+
+      SQS   = Ecm
+      S     = SQS*SQS
+      
+      KB = KBEAM
+      KBA = IABS(KBEAM)
+c     add beam particles to parton stack, lvl -2
+      PZ = PAWT(SQS,AM(KBA),AM(13))
+      E1 = SQRT(PZ**2+AM2(KBA))
+      CALL ADD_PRTN(0.D0,0.D0,PZ,E1,AM(KBA),KB,-2,0,IREFout)
+      IF(IMOD.eq.1)THEN
+         IAT = IATARG
+         IF(IATARG.EQ.1)THEN
+            KT(1) = 13
+         ELSE
+            IF(IATARG.eq.0)THEN
+C...  Generate an 'air' interaction by choosing Nitrogen or Oxygen
+               R = S_RNDM(0)
+               IATARG = 14
+               IF (R .LT. FOX)  IATARG = 16
+               if (NDEBUG.gt.0) 
+     *           WRITE(lun,*)'fox,rndm,iatarg,eps:',fox,r,iatarg,eps8
+            ENDIF
+            DO JN=1,IATARG
+c     for nuclear target: proton (13) or neutron (14)
+               KT(JN) = 13 + INT((2.D0-EPS8)*S_RNDM(JN))
+            ENDDO
+         ENDIF
+      ELSE
+         KT(1) = IATARG
+      ENDIF
+
+C...energy-dependent transverse momentum cutoff
+c...EJA correction 2007.03.27
+      IF(IPAR(27).eq.1)THEN
+         PTmin = PAR(10)+PAR(11)*EXP(PAR(12)*SQRT(LOG(SQS)))
+      else
+         PTmin = PAR(10)+PAR(11)*EXP(PAR(12)*SQRT(LOG(S)))
+      endif
+      XMIN = 4.D0*PTmin**2/S
+      ZMIN = LOG(XMIN)
+      IF(ndebug.gt.0)then
+         write(lun,*) ' INI_EVENT: ncall:', ncall
+         write(lun,'(2X,A33,F10.2,1X,F16.2,F8.5,E10.3,F10.5)')
+     &        'INI_EVENT: (SQS,S,PTmin,Xmin,Zmin)',
+     &        SQS,S,PTmin,Xmin,Zmin
+         write(lun,*) ' INI_EVENT: KB,IAT,IATARG,KT',KB,IAT,IATARG
+         write(lun,*) '         ',(KT(jj),jj=1,IATARG)
+      endif
+
+      CALL PTSETUP_4FLV(ECM)
+
+      return
+      END
+C-----------------------------------------------------------------------
+C     parton level administration tools for SIBYLL                \FR'14
+C-----------------------------------------------------------------------
+
+C...  COMMON /S_PRTNS/ : parton stack
+c     PP: 4momentum of parton, px,py,pz,energy,mass
+c     LPID(1): parton id, i.e. flavor (u:1,d:2,s:3,c:4) for quarks
+c     LPID(2): level of parton
+c              fragmenting systems (strings,remnants) are marked as level0
+c              partons that make up these systems are marked as level1
+c     LPID(3): 'downward' reference 
+c               pointer from level1 partons to their level0 parent
+c     LPID(4): 'upward' reference 
+c               pointer from level0 partons to their level-1 parent
+c     LVL0IDX: index cache for level0 partons
+c     NPP: total number of partons on stack
+c     NPP0: number of level0 partons on stack
+
+C=======================================================================
+
+      SUBROUTINE ADD_PRTN(PX,PY,PZ,E,XMS,IPID,LVL,IREFin,IREFout)
+
+C-----------------------------------------------------------------------
+C     routine to add a parton to the stack \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      SAVE
+
+      PP(NPP+1,1) = PX
+      PP(NPP+1,2) = PY
+      PP(NPP+1,3) = PZ
+      PP(NPP+1,4) = E
+      PP(NPP+1,5) = XMS
+      LPID(NPP+1,1) = IPID
+      LPID(NPP+1,2) = LVL     
+      LPID(NPP+1,3) = IREFin
+      NPP = NPP + 1
+c     level0 index
+      IF(LVL.eq.0)THEN
+         LVL0IDX(NPP0+1) = NPP
+         NPP0 = NPP0 + 1
+      ENDIF
+      IREFout = NPP
+      IF(NDEBUG.gt.6)THEN
+         WRITE(LUN,*) ' ADD_PRTN: (#,PID,LEVEL,REF)',
+     &        NPP,LPID(NPP,1),LPID(NPP,2),LPID(NPP,3)
+         WRITE(LUN,*) '  4momentum:        ',(PP(NPP,JJ),JJ=1,5)
+      ENDIF
+      END
+
+C=======================================================================
+
+      SUBROUTINE ADD_PRTN_4VEC(PIN,IPID,LVL,IREFin,IREFout)
+
+C-----------------------------------------------------------------------
+C     wrapper for ADD_PRTN to add 4momentum directly \FR'14
+C----------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      DIMENSION PIN(5)
+      SAVE
+
+      CALL ADD_PRTN
+     &     (PIN(1),PIN(2),PIN(3),PIN(4),PIN(5),IPID,LVL,IREFin,IRF)
+      IREFout = IRF
+      END
+
+C=======================================================================
+
+      SUBROUTINE ADD_REF(IDX,Irefin)
+
+C-----------------------------------------------------------------------
+C     routine to add a reference label to a particle
+C     after it has been added to the stack        \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      SAVE
+      
+c      IF(LPID(IDX,3).ne.0)  WRITE(LUN,*)
+c     &     ' ADD_REF: warning particle already has defined reference,',
+c     &     IDX,' overwritting..'
+      IF(NDEBUG.gt.6)
+     &WRITE(LUN,*) ' ADD_REF: (IDX,REFin)',IDX,Irefin
+      LPID(IDX,3) = Irefin
+      END
+
+C=======================================================================
+
+      SUBROUTINE RD_REF(IDX,Irefout)
+
+C-----------------------------------------------------------------------
+C     routine to add a reference label to a particle
+C     after it has been added to the stack        \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      SAVE
+
+      Irefout = LPID(IDX,3)
+      IF(NDEBUG.gt.6)
+     &  WRITE(LUN,*) ' RD_ref: (IDX,REFout)',IDX,Irefout
+      END
+
+C=======================================================================
+
+      SUBROUTINE ADD_INT_REF(IDX,Irefin)
+
+C-----------------------------------------------------------------------
+C     routine to add a reference label to an interaction
+C     after it has been added to the stack        \FR'15
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      SAVE
+
+      IF(NDEBUG.gt.6)
+     &    WRITE(LUN,*) ' ADD_INT_REF: (IDX,REFin)',IDX,Irefin
+      LPID(IDX,4) = Irefin
+      END
+
+C=======================================================================
+
+      SUBROUTINE RD_INT(IDX,Irefout,Iout)
+
+C-----------------------------------------------------------------------
+C     routine to add a reference label to an interaction
+C     after it has been added to the stack        \FR'15
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      SAVE
+
+      Irefout = LPID(IDX,4)
+      IF(Irefout.ne.0) Iout = LPID(Irefout,1)
+      IF(NDEBUG.gt.6)
+     &  WRITE(LUN,*) ' RD_INT: (IDX,REFout,Iint)',IDX,Irefout,Iout
+      END
+
+C=======================================================================
+
+      SUBROUTINE EDT_PRTN(IDX,PX,PY,PZ,EN,XMS,IREFout)
+
+C-----------------------------------------------------------------------
+C     routine to edit a parton already on stack   \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      SAVE
+
+      IF(NDEBUG.gt.6)THEN
+         WRITE(LUN,*) ' EDT_PRTN: (#,PID,LEVEL,REF)',
+     &        IDX,LPID(IDX,1),LPID(IDX,2),LPID(IDX,3)
+         WRITE(LUN,*) '  initial 4momentum:',(PP(IDX,JJ),JJ=1,5)
+      ENDIF
+      PP(IDX,1) = PX
+      PP(IDX,2) = PY
+      PP(IDX,3) = PZ
+      PP(IDX,4) = EN
+      PP(IDX,5) = XMS
+c     return reference to other partons
+      IREFout = LPID(IDX,3)
+      IF(NDEBUG.gt.6)
+     &     WRITE(LUN,*) '  final 4momentum:  ',(PP(IDX,JJ),JJ=1,5)
+      END
+
+C=======================================================================
+
+      SUBROUTINE RD_PRTN(IDX,PX,PY,PZ,EN,XMS,IFL,IREFout)
+
+C-----------------------------------------------------------------------
+C     routine to read a parton from the stack     \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      SAVE
+
+      IF(NDEBUG.gt.6)THEN
+         WRITE(LUN,*) ' RD_PRTN: (#,PID,LEVEL,REF)',
+     &        IDX,LPID(IDX,1),LPID(IDX,2),LPID(IDX,3)
+         WRITE(LUN,*) '  4momentum:        ',(PP(IDX,JJ),JJ=1,5)
+      ENDIF
+      PX = PP(IDX,1)
+      PY = PP(IDX,2)
+      PZ = PP(IDX,3)
+      EN = PP(IDX,4)
+      XMS = PP(IDX,5)
+      IFL = LPID(IDX,1)
+c     return reference to other partons
+      IREFout = LPID(IDX,3)
+      END
+
+C=======================================================================
+
+      SUBROUTINE RD_PRTN_4VEC(IDX,Pin,IFL,IREFout)
+
+C-----------------------------------------------------------------------
+C     routine to read a parton from the stack     \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      DIMENSION Pin(5)
+      SAVE
+
+      IF(IDX.EQ.0) THEN
+         WRITE(LUN,*) ' RD_PRTN_4VEC: invalid index!',IDX
+         xa = -1.D0
+         xa = log(xa)
+         RETURN
+      ELSE         
+         do ii = 1,5
+            PIN(ii) = PP(IDX,ii)
+         enddo
+         IFL = LPID(IDX,1)
+c     return reference to other partons
+         IREFout = LPID(IDX,3)
+         IF(NDEBUG.gt.6)THEN
+            WRITE(LUN,*) ' RD_PRTN: (#,PID,LEVEL,REF)',
+     &           IDX,IFL,LPID(IDX,2),IREFout
+            WRITE(LUN,*) '  4momentum:        ',(PIN(JJ),JJ=1,5)
+         ENDIF
+
+      ENDIF
+      END
+
+C=======================================================================
+
+      SUBROUTINE ITR_LVL0_PRTN(JJ,IDX,LID)
+
+C-----------------------------------------------------------------------
+C     routine that serves as iterator over the level0
+C     partons on the stack                        \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      SAVE
+ 
+      IDX = LVL0IDX(JJ)
+      IF(ndebug.gt.6)
+     &  WRITE(LUN,*) ' ITR_LVL0_PRTN: JJ,IDX',JJ,IDX
+      LID = LPID(IDX,1)
+      IF(JJ+1.gt.NPP0) THEN
+         JJ = -1
+         RETURN
+      ELSE
+         JJ = JJ + 1
+      ENDIF      
+      END
+
+C=======================================================================
+
+      SUBROUTINE INI_PRTN_STCK(NOLD,N0OLD)
+
+C-----------------------------------------------------------------------
+C     reset parton stack                          \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      SAVE
+
+      IF(NDEBUG.gt.6) WRITE(LUN,*) ' PRTN_STCK: reset .. '
+      IF(NDEBUG.gt.6) WRITE(LUN,*) '  old state: NPP,NPP0',NPP,NPP0
+      
+      NPP = NOLD
+      NPP0 = N0OLD
+
+      IF(NDEBUG.gt.6) WRITE(LUN,*) '  new state: NPP,NPP0',NPP,NPP0
+
+      END
+
+C=======================================================================
+
+      SUBROUTINE GET_NPP(NPPLD,NPP0LD)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      SAVE
+
+      NPPLD = NPP
+      NPP0LD = NPP0
+      END
+
+C=======================================================================
+
+      SUBROUTINE GET_LVL0(NPP0LD,IDXLIST)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      DIMENSION IDXLIST(NPP0_max)
+      INTEGER   N
+      SAVE
+
+      NPP0LD = NPP0
+      DO N = 1, NPP0_max
+        IDXLIST(N) = LVL0IDX(N)
+      ENDDO
+
+      END
+
+C=======================================================================
+
+      SUBROUTINE PRNT_PRTN_STCK
+
+C-----------------------------------------------------------------------
+C     as the name suggests, prints the current state
+C     of the parton stack                         
+C     print unit is defined in S_DEBUG:LUN        \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      CHARACTER*5 CDE
+      CHARACTER*9 CODE
+
+      CHARACTER*6 NAMP
+      COMMON /S_CNAM/ NAMP (0:99)
+      SAVE
+
+      WRITE (LUN,50) 
+ 50   FORMAT(3X,88('-'),/,21X,'SIBYLL PARTON LEVEL EVENT SUMMARY',21X,
+     &     /,3X,75('-'),13('-'))
+
+c     beam particles
+      WRITE(LUN,*) '  BEAM PARTICLES'
+ 52   FORMAT(4X,'#',3X,'PID',2x,'LVL',2x,'REF',20x,'PX',9x,'PY',7x,
+     +     'PZ',9x,'E',11X,'Mass', /, 3X,75('-'),13('-'))
+      WRITE (LUN,52)
+      DO J=1,NPP
+         IF(LPID(J,2).eq.-2)then
+            WRITE (LUN,60) J, (LPID(J,KK),KK=1,3), (PP(J,K),K=1,5)
+         ENDIF
+      ENDDO
+c     level -2 format
+ 60   FORMAT(4I5,14X,2F11.3,1p,2E11.3,0p,F9.3)
+      WRITE(LUN,61)
+ 61   FORMAT(3X,75('-'),13('-'))
+
+c     interactions
+      WRITE(LUN,*) '  INTERACTIONS'
+ 62   FORMAT(4X,'#',3X,'PID',2x,'LVL',2x,'REF',20x,'NSOF',8x,'NJET',7x,
+     +     'JDIF',7x,'E',11X,'Mass', /, 3X,75('-'),13('-'))
+      WRITE (LUN,62)
+      DO J=1,NPP
+         IF(LPID(J,2).eq.-1)then
+            WRITE (LUN,63) J, (LPID(J,KK),KK=1,3), (PP(J,K),K=1,5)
+         ENDIF
+      ENDDO
+c     level -1 format
+ 63   FORMAT(4I5,12X,4F12.0,F11.3)
+ 64   FORMAT(3X,75('-'),13('-'))
+      WRITE(LUN,64)
+      
+c     partons
+      WRITE (LUN,100)
+      DO J=1,NPP
+         IF(LPID(J,2).eq.0)then
+            WRITE (LUN,120) J, (LPID(J,KK),KK=1,3), (PP(J,K),K=1,5)
+         elseif(LPID(J,2).eq.1)then
+            CALL KCODE(LPID(J,1),cde,nc)
+            WRITE (LUN,121) J, CDE(1:nc),(LPID(J,KK),KK=2,3), 
+     &           (PP(J,K),K=1,5)
+         elseif(LPID(J,2).eq.2)then
+            CODE = '        '
+            L = LPID(J,1)
+            CODE(1:6) = NAMP(IABS(L))
+            IF (L .LT. 0) CODE(7:9) = 'bar'
+            WRITE (LUN,122) J,CODE,(LPID(J,KK),KK=2,3), (PP(J,K),K=1,5)
+         endif
+      ENDDO
+      CALL PPSUM(1,NPP,Esum,PXsum,PYsum,PZsum,NF)
+      WRITE(LUN,140) PXsum,PYsum,PZsum,Esum
+ 
+ 100  FORMAT(4X,'#',3X,'PID',2x,'LVL',2x,'REF',20x,'PX',9x,'PY',7x,
+     +     'PZ',9x,'E',11X,'Mass', /, 3X,75('-'),13('-'))
+c     level 0 format
+ 120  FORMAT(4I5,14X,2F11.3,1p,2E11.3,0p,F11.3)
+c     level 1 format cjoe
+ 121  FORMAT(I7,1X,A5,2I5,14X,2F11.3,1p,2E11.3,0p,F11.3)
+c     level 2 format
+ 122  FORMAT(I10,1X,A9,2I5,10X,2F11.3,1p,2E11.3,0p,F11.3)
+ 140  FORMAT(3X,75('-'),13('-'),/,'  Tot = ',26X,2F11.3,1p,2e11.3)
+
+      END
+
+C=======================================================================
+
+      SUBROUTINE PPSUM(N1,N2,ETOT,PXT,PYT,PZT,NF)
+
+C-----------------------------------------------------------------------
+C     Return the energy,px,py,pz of level0 partons 
+C     in the list between N1 and N2
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+
+      NF=0
+      ETOT=0.D0
+      PXT=0.D0
+      PYT=0.D0
+      PZT=0.D0
+      DO J=N1,N2
+         IF (LPID(J,2) .EQ. 0)  THEN
+           NF = NF+1
+           ETOT = ETOT + ABS( PP(J,4) )
+           PXT = PXT + PP(J,1)
+           PYT = PYT + PP(J,2)
+           PZT = PZT + PP(J,3)
+         ENDIF
+      ENDDO
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE FOUR_LENGTH(XP,XM2)
+
+C-----------------------------------------------------------------------
+C     Calculate the length of a 4vector (+---)    \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DIMENSION XP(5)
+      SAVE
+
+      XM2 = XP(4)**2 - XP(1)**2 - XP(2)**2 - XP(3)**2
+      END
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION CALC_INVM(XP1,XP2)
+
+C-----------------------------------------------------------------------
+C     Calculate the invariant mass of two 4vectors FR'15
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DIMENSION XP1(5),XP2(5)
+      SAVE
+
+      CALC_INVM = (XP1(4)+ XP2(4))**2
+      DO I=1,3
+         CALC_INVM = CALC_INVM-(XP1(I)+XP2(I))**2         
+      ENDDO
+      CALC_INVM = SQRT(CALC_INVM)
+      END
+
+C=======================================================================
+      
+      SUBROUTINE GET_XMT2(IDX,XM2)
+
+C-----------------------------------------------------------------------
+C     Calculate the transverse mass of a parton 
+C     on the stack                                \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      SAVE
+
+      XM2 = PP(IDX,1)**2 + PP(IDX,2)**2 + PP(IDX,5)**2
+      END
+C=======================================================================
+
+      SUBROUTINE GET_IMASS2(IDX,XM2)
+
+C-----------------------------------------------------------------------
+C     Calculate the invariant mass squared of a parton 
+C     on the stack  (+---)                        \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      SAVE
+
+      XM2 = PP(IDX,1)**2 + PP(IDX,2)**2 + PP(IDX,3)**2
+      XM2 = PP(IDX,4)**2 - XM2
+      END
+
+C=======================================================================
+
+      SUBROUTINE GET_MASS(IDX,XM)
+
+C-----------------------------------------------------------------------
+C     read mass of parton on stack                \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+
+      IF(IDX.EQ.0) THEN 
+         XM2 = 0.D0
+      else
+         XM = PP(IDX,5)
+      ENDIF
+      END
+C=======================================================================
+
+      SUBROUTINE GET_MASS2(IDX,XM2)
+
+C-----------------------------------------------------------------------
+C     read mass of parton on stack                \FR'14
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+
+      IF(IDX.EQ.0) THEN 
+         XM2 = 0.D0
+      else
+         XM2 = PP(IDX,5)**2
+      ENDIF
+      END
+
+C=======================================================================
+
+      SUBROUTINE GET_VRTLTY(IDX,XX)
+
+C-----------------------------------------------------------------------
+C     calculate virtuality of parton on stack     \FR'14
+C     = on-shell mass - inv. mass
+C-------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      PARAMETER (NPP_max = 1000, NPP0_max = 500)
+      COMMON /S_PRTNS/ PP(NPP_max,5), LPID(NPP_max,4), LVL0IDX(NPP0_max)
+     &     ,NPP,NPP0
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+      SAVE
+
+      IF(IDX.EQ.0) XM2 = 0.D0
+      CALL GET_IMASS2(IDX,xm2)
+      XX = PP(IDX,5)**2-xm2
+      END
+
+C=======================================================================
+
+      SUBROUTINE ADD_4VECS(P1,P2,POUT)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      DIMENSION P1(5),P2(5),POUT(5)
+      SAVE
+
+      DO II=1,4
+         POUT(II) = P1(II) + P2(II)
+      ENDDO
+      CALL FOUR_LENGTH(POUT,XM2)
+      IF(XM2.LT.0)THEN
+c     virtual particle
+         POUT(5) = -1.D0
+         IF(NDEBUG.gt.6)then
+            WRITE(LUN,*)
+     &           ' ADD_4VECS: resulting particle virtual!! (m**2):',XM2
+            WRITE(LUN,*) ' p**2' , POUT(1)**2+POUT(2)**2+POUT(3)**2
+            WRITE(LUN,*) ' E**2: ', POUT(4)**2
+         ENDIF
+      ELSE
+         POUT(5) = sqrt(xm2)
+      ENDIF
+      END
+C=======================================================================
+
+      SUBROUTINE DECPAR (LA,P0,ND,LL,P)
+
+C-----------------------------------------------------------------------
+C...This subroutine generates the decay of a particle
+C.  with ID = LA, and 5-momentum P0(1:5)
+C.  into ND particles of 5-momenta P(j,1:5) (j=1:ND)
+C.
+C.  If the initial particle code is LA=0
+C.  then ND and LL(1:ND) are considered as  input and
+C.  the routine generates a phase space decay into ND
+C.  particles of codes LL(1:nd)
+C.
+C.  june 1992
+C.  This version  contains the decay of polarized muons
+C.  The muon codes are  L =  4 : mu+ R
+C.                          -4 : mu+ L
+C.                           5 : mu- L
+C.                          -5 : mu- R
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      DOUBLE PRECISION CBR
+      INTEGER KDEC,LBARP,IDB
+      COMMON /S_CSYDEC/ CBR(223+16+12+8), KDEC(1338+6*(16+12+8)),
+     &     LBARP(99), IDB(99)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+      DIMENSION P0(5), LL(10), P(10,5)
+      DIMENSION PV(10,5), RORD(10), UE(3),BE(3)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+      
+C...Phase space decay into the particles in the list
+      IF (LA .EQ. 0)  THEN
+          MAT = 0
+          MBST = 0
+          PS = 0.D0
+          DO J=1,ND
+CDH          following statements corrected by D.H. dec 20.,1995
+             P (J,5) = AM(IABS(LL(J)))
+             PV(J,5) = AM(IABS(LL(J)))
+             PS = PS+P(J,5)
+          ENDDO
+          DO J=1,4
+             PV(1,J) = P0(J)
+          ENDDO
+          PV(1,5) = P0(5)
+          GOTO 140
+      ENDIF
+         
+C...Choose decay channel
+      L = IABS(LA)
+      ND=0
+      IDC = IDB(L)-1
+      IF (IDC+1 .LE.0)  RETURN
+      RBR = S_RNDM(0)
+110   IDC=IDC+1
+      IF(RBR.GT.CBR(IDC))  GOTO 110
+
+      KD =6*(IDC-1)+1
+      ND = KDEC(KD)
+      MAT= KDEC(KD+1)
+      MBST=0
+      IF (MAT .GT.0 .AND. P0(4) .GT. 20.D0*P0(5)) MBST=1
+      IF (MAT .GT.0 .AND. MBST .EQ. 0) 
+     +        BETA = DSQRT(P0(1)**2+P0(2)**2+P0(3)**2)/P0(4)
+      PS = 0.D0
+c     reduce omega mass by 50MeV to allow on-shell N(1710) decay
+      Xmomega = am(32)
+      IF(L.eq.53.or.L.eq.54) AM(32) = AM(32)-0.05D0
+      DO J=1,ND
+         LL(J) = KDEC(KD+1+J)
+         P(J,5)  = AM(LL(J))
+         PV(J,5) = AM(LL(J))
+         PS = PS + P(J,5)
+      ENDDO
+      AM(32) = Xmomega
+      DO J=1,4
+         PV(1,J) = 0.D0
+         IF (MBST .EQ. 0)  PV(1,J) = P0(J)
+      ENDDO
+      IF (MBST .EQ. 1)  PV(1,4) = P0(5)
+      PV(1,5) = P0(5)
+
+140   IF (ND .EQ. 2) GOTO 280
+
+      IF (ND .EQ. 1)  THEN
+         DO J=1,4
+            P(1,J) = P0(J)
+         ENDDO
+         RETURN
+      ENDIF
+
+C...Calculate maximum weight for ND-particle decay
+      WWTMAX = 1.D0/FACN(ND)      
+      PMAX=PV(1,5)-PS+P(ND,5)
+      PMIN=0.D0
+      DO IL=ND-1,1,-1
+         PMAX = PMAX+P(IL,5)
+         PMIN = PMIN+P(IL+1,5)
+         WWTMAX = WWTMAX*PAWT(PMAX,PMIN,P(IL,5))
+      ENDDO
+
+C...generation of the masses, compute weight, if rejected try again
+240   RORD(1) = 1.D0
+      DO 260 IL1=2,ND-1
+        RSAV = S_RNDM(0)
+        DO 250 IL2=IL1-1,1,-1
+          IF(RSAV.LE.RORD(IL2))   GOTO 260
+250     RORD(IL2+1)=RORD(IL2)
+260   RORD(IL2+1)=RSAV
+      RORD(ND) = 0.D0
+      WT = 1.D0      
+      DO 270 IL=ND-1,1,-1
+        PV(IL,5)=PV(IL+1,5)+P(IL,5)+(RORD(IL)-RORD(IL+1))*(PV(1,5)-PS)
+270   WT=WT*PAWT(PV(IL,5),PV(IL+1,5),P(IL,5))
+      IF (WT.LT.S_RNDM(1)*WWTMAX)   GOTO 240
+
+C...Perform two particle decays in respective cm frame
+280   DO 300 IL=1,ND-1
+        PA=PAWT(PV(IL,5),PV(IL+1,5),P(IL,5))
+        UE(3)=2.D0*S_RNDM(IL)-1.D0
+        PHI=TWOPI*S_RNDM(3)
+        UT = DSQRT(1.D0-UE(3)**2)
+        UE(1) = UT*dCOS(PHI)
+        UE(2) = UT*dSIN(PHI)
+        DO 290 J=1,3
+          P(IL,J)=PA*UE(J)
+290     PV(IL+1,J)=-PA*UE(J)
+        P(IL,4)=DSQRT(PA**2+P(IL,5)**2)
+300   PV(IL+1,4)=DSQRT(PA**2+PV(IL+1,5)**2)
+
+C...Lorentz transform decay products to lab frame
+      DO 310 J=1,4
+310   P(ND,J)=PV(ND,J)
+      DO 340 IL=ND-1,1,-1
+        DO 320 J=1,3
+320     BE(J)=PV(IL,J)/PV(IL,4)
+        GA=PV(IL,4)/PV(IL,5)
+        DO 340 I=IL,ND
+          BEP = BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
+          DO 330 J=1,3
+330       P(I,J)=P(I,J)+GA*(GA*BEP/(1.D0+GA)+P(I,4))*BE(J)
+340   P(I,4)=GA*(P(I,4)+BEP)
+      
+C...Weak decays
+      IF (MAT .EQ. 1)  THEN
+         F1=P(2,4)*P(3,4)-P(2,1)*P(3,1)-P(2,2)*P(3,2)-P(2,3)*P(3,3)     
+         IF (MBST.EQ.1)  THEN
+C           WT = P0(5)*P(1,4)*F1
+            WT = P0(5)*(P(1,4)+DBLE(LA/L)*P(1,3))*F1
+         ENDIF
+         IF (MBST.EQ.0)  THEN  
+            WT=F1*(P(1,4)*P0(4)-P(1,1)*P0(1)-P(1,2)*P0(2)-P(1,3)*P0(3))
+            IF(L.lt.50)
+     +           WT= WT-DBLE(LA/L)*(P0(4)*BETA*P(1,4)-P0(4)*P(1,3))*F1
+         ENDIF
+         WTMAX = P0(5)**4/8.D0
+         IF(WT.LT.S_RNDM(0)*WTMAX)   GOTO 240
+      ENDIF
+
+C...Boost back for rapidly moving particle
+      IF (MBST .EQ. 1)   THEN
+         DO 440 J=1,3
+440      BE(J)=P0(J)/P0(4)
+         GA= P0(4)/P0(5)
+         DO 460 I=1,ND
+           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
+           DO 450 J=1,3
+450        P(I,J)=P(I,J)+GA*(GA*BEP/(1.D0+GA)+P(I,4))*BE(J)
+460      P(I,4)=GA*(P(I,4)+BEP)
+      ENDIF
+
+C...labels for antiparticle decay
+      IF (LA .LT. 0 .AND. L .GT. 18)  THEN
+           DO J=1,ND
+            LL(J) = LBARP(LL(J))
+         ENDDO
+      ENDIF
+
+      RETURN
+      END
+
+C=======================================================================
+
+      BLOCK DATA DATDEC
+
+C-----------------------------------------------------------------------
+C...initialization of SIBYLL particle data
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      DOUBLE PRECISION CBR
+      INTEGER KDEC,LBARP,IDB
+      COMMON /S_CSYDEC/ CBR(223+16+12+8), KDEC(1338+6*(16+12+8)),
+     &     LBARP(99), IDB(99)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+      DOUBLE PRECISION AW,AW2
+      COMMON /S_WIDTH1/ AW(99), AW2(99)
+
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+
+      INTEGER IISO,ISPN
+      COMMON /S_SPN/ IISO(99), ISPN(99)
+
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+
+      CHARACTER*6 NAMP
+      COMMON /S_CNAM/ NAMP (0:99)
+      SAVE
+c     CBR contains the normed sum of the branching ratios of the decay channels
+c     indexed by IDB, i.e. a particle with 4 decay channels will have the entries
+c     [B1/Btot, (B1+B2)/Btot, (B1+B2+B3)/Btot, 1.]
+      DATA CBR /3*1.D0,0.D0,1.D0,1.D0,0.6354D0,0.8422D0,0.8981D0,
+     + 0.9157D0,0.9492D0,1.D0,0.6354D0,0.8422D0,0.8981D0,0.9157D0,
+     + 0.9492D0,1.D0,0.1965D0,0.3224D0,0.4579D0,0.5934D0,0.7967D0,1.D0,
+     + 0.6925D0,1.D0,3*0.D0,0.5D0,1.D0,0.5D0,1.D0,
+     + 0.3941D0,0.7197D0,0.9470D0,0.9930D0,1.D0,                     ! eta
+     + 0.4285D0,0.7193D0,0.9487D0,0.9750D0,0.9973D0,0.9999D0,1.D0,   ! eta'
+     + 3*1.D0,                                                       ! rho-mesons
+     + 0.6670D0,1.D0,                                                ! K*+
+     + 0.4894D0,0.8317D0,0.9850D0,0.9981D0,0.9994D0,0.9997D0,1.D0,   ! phi(1020)
+     + 2*0.D0,                                                       ! (empty)      
+     + 0.6670D0,1.D0,                                                ! K*-
+     + 0.6670D0,1.D0,                                                ! K*0
+     + 0.6670D0,1.D0,                                                ! K*0 bar
+     + 0.8940D0,0.9830D0,1.D0,                                       ! omega
+     + 4*0.D0,                                                       ! (empty)
+     + 0.5160D0,5*1.D0,0.6410D0,2*1.D0,0.67D0,1.D0,0.33D0,2*1.D0,
+     + 0.88D0,0.94D0,1.D0,0.88D0,0.94D0,1.D0,0.88D0,0.94D0,1.D0,0.33D0,
+     + 1.D0,0.67D0,1.D0,0.678D0,0.914D0,1.D0,0.217D0,0.398D0,0.506D0,
+     + 0.595D0,0.684D0,0.768D0,0.852D0,0.923D0,0.976D0,1.D0,0.217D0,
+     + 0.398D0,0.506D0,0.595D0,0.684D0,0.768D0,0.852D0,0.923D0,0.976D0,
+     + 1.D0,0.2490D0,0.4604D0,0.5338D0,0.5703D0,0.7440D0,0.7840D0,
+     + 0.8460D0,0.8880D0,0.9230D0,0.9650D0,1.D0,0.2490D0,0.4604D0,
+     + 0.5338D0,0.5703D0,0.7440D0,0.7840D0,0.8460D0,0.8880D0,0.9230D0,
+     + 0.9650D0,1.D0,0.1666D0,0.3332D0,0.4998D0,0.6664D0,0.8330D0,1.D0,
+     + 0.6770D0,0.9840D0,1.D0,
+     + 0.6770D0,0.9840D0,1.D0,0.6190D0,1.D0,0.6190D0,1.D0,0.0602D0,
+     + 0.1203D0,1.D0,3*1.D0,0.06D0,0.08D0,0.14D0,0.16D0,0.73D0,0.855D0,
+     + 0.98D0,1.D0,0.08D0,0.16D0,0.92D0,1.D0,0.2335D0,0.4283D0,0.6446D0,
+     + 0.7099D0,0.8080D0,0.9080D0,0.9380D0,0.9540D0,0.9840D0,1.D0,
+     + 3*1.D0,0.5D0,1.D0,0.5D0,1.D0,0.08D0,0.16D0,0.92D0,1.D0,0.942D0,
+     + 1.D0,0.942D0,1.D0,0.2493D0,0.4061D0,0.5602D0,0.6860D0,0.7608D0,
+     + 0.8305D0,0.8818D0,0.9277D0,0.9691D0,1.D0,0.2493D0,0.4061D0,
+     + 0.5602D0,0.6860D0,0.7608D0,0.8305D0,0.8818D0,0.9277D0,0.9691D0,
+     + 1.D0,
+     & 0.466D0,0.7D0,0.899D0,1.D0,0.466D0,0.7D0,0.899D0,1.D0, ! N1440+-
+     & 0.3334D0,0.5D0,0.6334D0,0.7634D0,0.8734D0,0.9394D0,1.D0, ! N1710+
+     & 0.3334D0,0.5D0,0.6334D0,0.7634D0,0.8734D0,0.9394D0,1.D0, ! N1710-
+     & 0.5D0, 1.D0, 0.5D0, 1.D0, 0.5D0, 1.0D0, ! pi1+-0      
+     & 0.6666D0,1.D0, 0.6666D0,1.D0,0.6666D0,1.D0,0.6666D0,1.D0/ ! K0*
+      DATA AM / 0.0,2*0.511D-3, 2*0.10566, 0.13497, 2*0.13957,
+     +   2*0.49368, 2*0.49761, 0.93827, 0.93957, 4*0.0,0.93827,
+     +   0.93957, 2*0.49761, 0.54785,0.95766,2*0.76690,0.76850,
+     +   2*0.89166D0,2*0.89600,0.78265,1.01946D0,1.18937D0,1.19264D0,
+     +   1.19745,1.31486,1.32171,1.11568,1.23100,1.23500,
+     +   1.23400,1.23300,1.38280,1.38370,1.38720,
+     +   1.53180,1.53500,1.67245,0.,1.44,1.44,1.71,1.71,4*0.0,
+     +   2*1.86926,1.30,1.30,1.30,4*1.430, 3*0.0,      
+     +   2*1.86484,2.9803,2*1.9685,2*2.1123,2*2.01027,2*2.00697,
+     +   0.0,3.09692,2.45402,2.4529,2.45376,2.4679,2.4710,
+     +   2.28646, 2*1.777, 2*0.0, 2.5184,2.5175, 2.5180, 2.6466,
+     +   2.6461, 2.6975 /
+      DATA AM2 /0.0,2*2.61121D-07,2*0.011164,0.018217,0.019480,
+     + 0.019480,0.243720,0.243720,0.247616,0.247616,0.880351,
+     + 0.882792,0.000000,0.000000,0.000000,0.000000,0.880351,
+     + 0.882792,0.247616,0.247616,0.300140,0.917113,0.588136,
+     + 0.588136,0.590592,0.795058,0.795058,0.802816,0.802816,
+     + 0.612541,1.039299,1.414601,1.422390,1.433887,1.728857,
+     + 1.746917,1.244742,1.515361,1.525225,1.522765,1.520289,
+     + 1.912136,1.914626,1.924324,2.346411,2.356225,2.797022,
+     + 0.,2.0736,2.0736,2.9241,2.9241,4*0.0, 2*3.49414,
+     + 1.690, 1.690, 1.690, 4*2.0449, 3*0.0, 2*3.477628, 8.882188,       
+     + 2*3.8750,2*4.4618,2*4.041186,2*4.027928, 0.0, 9.590914, 6.022214,
+     + 6.016718, 6.020938,6.09053, 6.105841, 5.227899, 2*3.158, 2*0.0,
+     + 6.342339, 6.337806, 6.340323,7.004492, 7.001845, 7.276506/
+      DATA AW /24*0.D0,0.022231D0,0.022231D0,0.022231D0,0.002581D0,
+     &     0.002581D0,0.D0,0.D0,7.20801D-05,1.81476D-05,6*0.D0,
+     &     0.013689D0,0.013689D0,0.013689D0,0.013689D0,0.001296D0,
+     &     0.001295D0,0.00155D0,8.281D-05,9.801D-05,0.D0,0.D0,0.09D0,
+     &     0.01D0,0.09D0,0.01D0,6*0.D0,0.1D0,0.1D0,0.1D0,4*0.27D0,
+     &     32*0.D0/
+      DATA AW2 /24*0.D0,0.022231D0,0.022231D0,0.022231D0,0.002581D0,
+     &     0.002581D0,0.D0,0.D0,7.20801D-05,1.81476D-05,6*0.D0,
+     &     0.013689D0,0.013689D0,0.013689D0,0.013689D0,0.001296D0,
+     &     0.001295D0,0.00155D0,8.281D-05,9.801D-05,0.D0,0.D0,0.09D0,
+     &     0.01D0,0.09D0,0.01D0,6*0.D0,0.01D0,0.01D0,0.01D0,4*0.0729D0,
+     &     32*0.D0/
+c     IDB is the index to the branching ratios (CBR) and decay channels (KDEC).
+c     always indicates the first decay channel
+      DATA IDB /
+     +     0,0,0,1,2,                                        ! leptons
+     +     3,5,6,7,13,19,25,                                 ! pions and kaons
+     +     8*0,30,32,34,39,46,47,48,49,60,62,64,66,51, !69,       ! meson resonances
+     +     73,75,76,77,78,79,81,82,84,86,87,90,93,96,98,100, ! baryons : Sibyll 2.1
+     +     0,224,228,232,239,4*0,                            ! Nucleon resonaces
+     +     103,113,246,248,250, 252,254,256,258,3*0,      
+     +     123,134,145,204,214,200,202,151,154,157,159,0,
+     +     161,164,165,166,167,175,179,4*0,189,190,191,192,194,196 /
+c     KDEC contains decay channels, format is [ND, MAT, LL(1:4)]
+c     where ND is the number of particles in the final state (max 4)
+C     MAT is 0, 1 for semi-leptonic (weak decay) or not
+c     (adds primitive matrix element)
+c     LL(1:4) are the particle ids of the final state particles
+      DATA KDEC /
+     + 3,1,15,2,18,0,3,1,16,3,17,0,2,0,1,1,8*0,2,0,4,17,0,0,2,0,5,18,0,
+     + 0,2,0,4,17,0,0,2,0,7,6,0,0,3,0,7,7,8,0,3,0,7,6,6,0,3,1,17,4,6,0,
+     + 3,1,15,2,6,0,2,0,5,18,0,0,2,0,8,6,0,0,3,0,8,8,7,0,3,0,8,6,6,0,3,
+     + 1,18,5,6,0,3,1,16,3,6,0,3,0,6,6,6,0,3,0,7,8,6,0,3,1,18,5,7,0,3,
+     + 1,17,4,8,0,3,1,16,3,7,0,3,1,15,2,8,0,2,0,7,8,0,0,2,0,6,6,20*0,1,
+     + 0,11,3*0,1,0,12,0,0,0,1,0,11,0,0,0,1,0,12,0,0,0,2,0,1,1,0,0,3,0,
+     + 6,6,6,0,3,0,7,8,6,0,3,0,1,7,8,0,3,0,1,3,2,0,
+     + 3,0,7,8,23,0, 3,0,6,6,23,0, 2,0,1,27,0,0, 2,0,1,32,0,0,           ! eta'
+     + 2,0,1,1,0,0, 3,0,6,6,6,0, 3,0,1,4,5,0,                            ! eta'
+     + 2,0,7,6,0,0,                                                      ! rho+
+     + 2,0,8,6,0,0,                                                      ! rho-
+     + 2,0,7,8,0,0,                                                      ! rho0
+     + 2,0,21,7,0,0, 2,0,9,6,0,0,                                        ! K*+
+     + 2,0,9,10,0,0, 2,0,11,12,0,0, 3,0,7,8,6,0, 2,0,1,23,0,0,           ! phi(1020)
+     + 2,0,1,6,0,0, 2,0,2,3,0,0, 2,0,4,5,0,0,                            ! phi(1020)                  
+     + 12*0,
+     + 2,0,22,8,0,0, 2,0,10,6,0,0,                                       ! K*-
+     + 2,0,9,8,0,0, 2,0,21,6,0,0,                                        ! K*0
+     + 2,0,10,7,0,0, 2,0,22,6,0,0,                                       ! K*0 bar
+     + 3,0,7,8,6,0, 2,0,1,6,0,0, 2,0,7,8,0,0,                            ! omega
+     + 24*0,
+     + 2,0,13,6,0,0,2,0,14,7,0,0,2,0,39,1,0,0,2,                         ! baryons
+     + 0,14,8,0,0,2,0,39,6,0,0,2,0,39,8,0,0,2,0,13,8,0,0,2,0,
+     + 14,6,0,0,2,0,13,7,0,0,2,0,13,6,
+     + 0,0,2,0,14,7,0,0,2,0,13,8,0,0,2,0,14,6,0,0,2,0,14,8,0,0,2,0,
+     + 39,7,0,0,2,0,34,6,0,0,2,0,35,7,0,0,2,0,39,6,0,0,2,0,34,8,0,0,
+     + 2,0,36,7,0,0,2,0,39,8,0,0,2,
+     + 0,35,8,0,0,2,0,36,6,0,0,2,0,37,6,0,0,2,0,38,7,0,0,2,0,
+     + 37,8,0,0,2,0,38,6,0,0,2,0,39,10,0,0,2,0,37,8,0,0,2,0,38,6,0,0,
+     + 3,0,22,7,6,0,3,0,22,9,22,0,2,0,22,7,0,0,3,1,2,15,22,0,3,1,4,17,
+     + 22,0,3,1,2,15,31,0,3,1,4,17,31,0,2,0,31,25,0,0,3,0,33,7,6,0,
+     + 3,0,10,7,7,0,
+     + 3,0,21,8,6,0,3,0,21,10,21,0,2,0,21,8,0,0,3,1,3,16,21,0,3,1,5,18,
+     + 21,0,3,1,3,16,30,0,3,1,5,18,30,0,2,0,30,26,0,0,3,0,33,8,6,0,
+     + 3,0,9,8,8,0,
+     + 2,0,29,7,0,0,2,0,31,6,0,0,2,0,22,6,0,0,2,0,10,7,0,0,2,0,31,27,0,
+     + 0,2,0,30,27,0,0,2,0,29,25,0,0,3,1,2,15,10,0,3,1,2,15,29,0,
+     + 3,1,4,17,10,0,3,1,4,17,29,0,
+     + 2,0,28,8,0,0,2,0,30,6,0,0,2,0,21,6,0,0,2,0,9,8,0,0,2,0,30,27,0,
+     + 0,2,0,31,27,0,0,2,0,28,26,0,0,3,1,3,16,9,0,3,1,3,16,28,0,
+     + 3,1,5,18,9,0,3,1,5,18,28,0,
+     + 3,0,6,21,22,0,3,0,6,9,10,0,3,0,23,6,6,0,3,0,23,7,8,0,3,0,24,6,6,
+     + 0,3,0,24,7,8,0,
+     + 2,0,71,7,0,0,2,0,59,6,0,0,2,0,59,1,0,0,
+     + 2,0,72,8,0,0,2,0,60,6,0,0,2,0,60,1,0,0,
+     + 2,0,71,6,0,0,2,0,71,1,0,0,2,0,72,6,0,0,2,0,72,1,0,0,
+     + 2,0,2,3,0,0,2,0,4,5,0,0,3,0,6,7,8,0,
+     + 2,0,89,7,0,0,2,0,89,6,0,0,2,0,89,8,0,0,
+     + 3,1,2,15,22,0,3,1,2,15,33,0,3,1,4,17,22,0,3,1,4,17,33,0,2,0,7,22,
+     + 0,0,2,0,9,22,0,0,2,0,7,33,0,0,2,0,9,33,0,0,
+     + 3,1,2,15,10,0,3,1,4,17,10,0,2,0,7,10,0,0,2,0,9,10,0,0,
+     + 3,0,7,10,13,0,3,0,7,22,14,0,3,0,7,8,13,0,3,0,9,10,13,0,3,0,9,22,
+     + 14,0,3,0,22,8,40,0,3,1,2,15,39,0,3,1,2,15,14,0,3,1,4,17,39,0,3,
+     + 1,4,17,14,0,
+     + 2,0,89,7,0,0,2,0,89,6,0,0,2,0,89,8,0,0,
+     + 2,0,87,6,0,0,2,0,87,1,0,0,2,0,88,6,0,0,2,0,88,1,0,0,
+     + 3,1,2,15,10,0,3,1,4,17,10,0,2,0,7,10,0,0,2,0,9,10,0,0 ,
+     + 2,0,74,1,0,0 ,2,0,74,6,0,0 , 2,0,75,1,0,0 ,2,0,75,6,0,0, !C=1,S=1 mesons
+     + 2,0,23,25,0,0, 4,0,9,10,7,6, 3,0,9,10,7,0, 2,0,33,7,0,0, 
+     + 3,1,23,2,15,0, 3,1,33,2,15,0, 2,0,23,7,0,0, 4,0,12,10,7,7,
+     + 2,0,9,12,0,0, 4,0,7,8,7,8, 2,0,23,26,0,0, 4,0,10,9,8,6, !  | D*(_s)
+     + 3,0,10,9,8,0, 2,0,33,8,0,0, 3,1,23,3,16,0, 3,1,33,3,16,0,! v
+     + 2,0,23,8,0,0, 4,0,12,9,8,8, 2,0,10,12,0,0, 4,0,7,8,7,8, ! ----
+     & 2,0,14,7,0,0, 2,0,13,6,0,0, 3,0,14,7,6,0, 3,0,13,7,8,0, ! N-res
+     & 2,0,13,8,0,0, 2,0,14,6,0,0, 3,0,13,6,8,0, 3,0,14,7,8,0, 
+     & 3,0,14,7,6,0, 3,0,13,7,8,0, 2,0,14,7,0,0, 2,0,13,32,0,0,  
+     & 2,0,39,9,0,0, 2,0,13,6,0,0, 2,0,13,23,0,0,
+     & 3,0,13,8,6,0, 3,0,14,7,8,0, 2,0,13,8,0,0, 2,0,14,32,0,0,  
+     & 2,0,39,21,0,0, 2,0,14,6,0,0, 2,0,14,23,0,0, ! ---
+     & 2,0,25,8,0,0, 2,0,26,7,0,0,    ! pi10 |  
+     & 2,0,25,6,0,0, 2,0,27,7,0,0,    !  +   v
+     & 2,0,27,8,0,0, 2,0,26,6,0,0,    !  -  ---
+     & 2,0,21,7,0,0, 2,0,9,6,0,0, 2,0,22,8,0,0, 2,0,10,6,0,0,    ! k0* |  
+     & 2,0,9,8,0,0, 2,0,21,6,0,0, 2,0,10,7,0,0, 2,0,22,6,0,0/ !        v
+      DATA LBARP/1,3,2,5,4,6,8,7,10,9,11,12,-13,-14,16,15,18,17,13,14,
+     +  22,21,23,24,26,25,27,29,28,31,30,32,33,-34,-35,-36,-37,-38,-39,
+     +  -40,-41,-42,-43,-44,-45,-46,-47,-48,-49,0,-51,-52,-53,-54,4*0,
+     +  60,59,61,63,62,65,64,67,66,3*0,72,71,
+     +  73,75,74,77,76,79,78,81,80,0,83,-84,-85,-86,-87,-88,-89,
+     +  91,90,93,92,-94,-95,-96,-97,-98,-99 /
+      DATA ICHP /0,1,-1,1,-1,0,1,-1,1,-1,0,0,1,0,4*0,-1,0,4*0, !24
+     + 1,-1,0,1,-1,4*0,1,0,-1,0,-1,0,2,1,0,-1,1,0,-1,0,-1,-1,  !49
+     + 0,1,0,1,0,4*0,1,-1,0,1,-1,1,-1,0,0,3*0,                 !70
+     + 0,0,0,1,-1,1,-1,1,-1,0,0,0,                             !82
+     + 0,2,1,0,1,0,1,1,-1,2*0,2,1,0,1,0,0 / ! charmed baryons + tau
+
+      DATA ISTR /8*0,-1,+1,-1,-1,8*0,-1,+1,5*0,-1,+1,-1,+1,2*0, ! mesons
+     +     3*1,2*2,1,4*0,3*1,2*2,3,0,4*0, ! 54
+     +     4*0,2*0,3*0,-1,1,-1,1,3*0,2*0,0,-1,1,-1,1,2*0,2*0,0,0, ! 83
+     +     3*0,2*1,0,4*0,3*0,2*1,2 / ! charmed baryons
+      DATA IBAR /12*0,2*1,4*0,2*-1,13*0,16*1,0,4*1,4*0,
+     +     2*0,10*0,2*0,0,4*0,2*0,2*0,0,0,6*1,4*0,6*1 /
+      DATA ICHM /58*0,1,-1,10*0,1,-1,0,1,-1,+1,-1,1,-1,1,-1,0,0,
+     +     6*1,4*0,6*1/
+      DATA NAMP /
+     +     '     ','gam   ','e+','e-','mu+','mu-','pi0',
+     +     'pi+','pi-','k+', 'k-', 'k0l','k0s',
+     +     'p', 'n', 'nue', 'nueb', 'num', 'numb', 'pbar', 'nbar',
+     +     'k0', 'k0b', 'eta', 'etap', 'rho+', 'rho-','rho0',
+     +     'k*+','k*-','k*0','k*0b','omeg', 'phi', 'SIG+', 'SIG0',
+     +     'SIG-','XI0','XI-','LAM','DELT++','DELT+','DELT0','DELT-',
+     +     'SIG*+','SIG*0','SIG*-', 'XI*0', 'XI*-', 'OME-',
+     +     '     ','N144_+','N144_0','N171_+','N171_0',
+     +     4*'     ', 'D+', 'D-','pi1_0 ','pi1_+ ','pi1_- ',
+     +     'k0*_+','k0*_-','k0*_0','k0*_0b',
+     +     3*'     ', 'D0', 'D0b', 'eta_c', 
+     +     'D_s+','D_s-','D*_s+','D*_s-','D*+', 'D*-', 'D*0', 'D*0b',
+     +     '     ', 'J/psi',
+     +     'SIGc++', 'SIGc+', 'SIGc0','XI_c+','XI_c0','LAM_c+',
+     +     'tau+  ','tau-  ','nut   ','nutb  ',
+     +     'SIc*++','SIGc*+','SIGc*0', 'XI_c*+', 'XI_c*0',
+     +     'OME_c0'  /
+      END
+C->
+C=======================================================================
+
+      SUBROUTINE DECPR (LUN)
+
+C-----------------------------------------------------------------------
+C...Print on unit LUN the list of particles and decay channels
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      DOUBLE PRECISION CBR
+      INTEGER KDEC,LBARP,IDB
+      COMMON /S_CSYDEC/ CBR(223+16+12+8), KDEC(1338+6*(16+12+8)),
+     &     LBARP(99), IDB(99)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+      DOUBLE PRECISION AW,AW2
+      COMMON /S_WIDTH1/ AW(99), AW2(99)
+
+      CHARACTER*6 NAMP
+      COMMON /S_CNAM/ NAMP (0:99)
+      DIMENSION LL(4)
+      SAVE
+      
+ 100  FORMAT(/,1X,75('-'),/,28X,'SIBYLL DECAY TABLE')
+      WRITE(LUN,100)
+ 101  FORMAT(1X,75('-'),/,2X,'PID',1X,'Particle',6X,'Mass',9X,'Width',/,
+     +     4X,'Channel',1X,'Br.frac.',1X,'Nf',2X,'MAT',1X,
+     +     'Final Particles',/,1X,75('-'))
+      WRITE(LUN,101)
+      DO L=1,99
+         IF(MOD(L,10).EQ.0)WRITE(LUN,101)
+         IDC = IDB(L)-1
+         NC = 0
+         WRITE (LUN,10) L,NAMP(L), AM(L), AW(L)
+         IF(IDC+1 .GT. 0)  THEN
+            CB = 0.D0
+110         IDC=IDC+1
+            NC = NC+1
+            CBOLD = CB
+            CB = CBR(IDC)
+            BR = CB-CBOLD
+            KD = 6*(IDC-1)+1
+            ND = KDEC(KD)
+            MAT= KDEC(KD+1)
+            DO J=1,ND
+               LL(J) = KDEC(KD+1+J)
+            ENDDO
+            WRITE (LUN,15) NC,BR,ND,MAT, (NAMP(LL(J)),J=1,ND)
+            IF (CB .LT. 1.D0)  GOTO 110
+         ENDIF
+      ENDDO
+      RETURN
+10    FORMAT(2X,I3,2X,A6,3X,F10.4,3X,F10.4)
+15    FORMAT(5X,I2,2X,F9.4,I4,I4,2X,3(A6,2X))
+      END
+
+C=======================================================================
+
+      SUBROUTINE DEC_DEBUG (L,P0, ND, LL, PD)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      CHARACTER*6 NAMP
+      COMMON /S_CNAM/ NAMP (0:99)
+      DIMENSION P0(5), LL(10), PD(10,5)
+      SAVE
+
+      ETOT = 0.D0
+      DO J=1,ND
+         ETOT = ETOT + PD(J,4)
+      ENDDO
+      WRITE(*,*)  NAMP(IABS(L)),' -> ', (NAMP(IABS(LL(J))),J=1,ND)
+      WRITE(*,*)  ' Ei, Ef = ', P0(4), ETOT, ' L = ', L
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE DEC_INI
+
+C-----------------------------------------------------------------------
+C     decay initialization routine
+C     sets which particles should decay and wich should be stable
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      DOUBLE PRECISION CBR
+      INTEGER KDEC,LBARP,IDB
+      COMMON /S_CSYDEC/ CBR(223+16+12+8), KDEC(1338+6*(16+12+8)),
+     &     LBARP(99), IDB(99)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      SAVE
+      
+      if ( ndebug .gt. 0 ) then
+        write(lun,*)' -----------------------------------------'
+        write(lun,*)' SIBYLL DEC_INI: setting particle decays!'
+        write(lun,*)'  to be used in stand-alone SIBYLL only ! '
+        write(lun,*)' -----------------------------------------'
+      endif
+      
+C...  Definition of stable particles
+      DO J=4,12
+         IDB(J) = -abs(IDB(J))
+      ENDDO
+c----------------------------------------------------------
+c     if the folowing is commented out then all particles
+c     except leptons, protons and neutrons are UNSTABLE
+c----------------------------------------------------------
+c     all particles with t<0.3e-10s are considered unstable
+c     i.e. all the mesons from K0s onwards(K0l is stable)
+c----------------------------------------------------------
+C     K0s stable
+      if (ndebug .gt. 0 ) write(lun,*)' making K0s stable..'
+      IDB(12) = -abs(IDB(12))
+
+C     Lambda/Anti-lambda stable
+      if (ndebug .gt. 0 ) write(lun,*)' making LAMBDA stable..'
+      IDB(39) = -abs(IDB(39))
+
+c     Sigmas stable
+      if (ndebug .gt. 0 ) write(lun,*)' making SIGMAs stable..'
+      do i=34,36
+         IDB(i) = -abs(IDB(i))
+      enddo
+      IDB(35) = -abs(IDB(35))
+C     Eta stable
+cfr   in reasonable contex eta is never stable !
+      
+cdh  initializing the pythia routines is done in corsika/SIBINI
+c     IF(IPAR(44).eq.1)THEN
+c     use pythia decay routine
+c        if (ndebug .gt. 0 ) write(LUN,*) ' using PYTHIA decay routine...'
+c        CALL PYDEC_INI
+c     endif
+
+      if (ndebug .gt. 0 ) 
+     *       write(lun,*)' ------------------------------------------'
+      end
+C=======================================================================
+
+      SUBROUTINE STRING_FRAG_4FLV
+     +     (E0,IFL1,IFL2,PX1,PY1,PX2,PY2,IFBAD,IFQRK)
+
+C-----------------------------------------------------------------------
+C.  This routine fragments a string of energy E0
+C.  the ends of the strings  have flavors IFL1 and IFL2
+C.  the particles produced are in the  jet-jet frame
+C.  with IFL1 going in the +z direction
+C.     E0 = total energy in jet-jet system
+C.  This version consider also a primordial pT attached
+C.  to the ends of the string PX1,PY1,  PX2,PY2
+C.  OUTPUT:  IFBAD =1  kinematically impossible decay
+c       2010.03.11 ifqrk - leading quark flag
+c       1 in valence quark, 0 in others
+c
+c      Modified Nov. 91.  RSF and TSS to fragment symmetrically
+c      ie forward and backward are fragmented as leading.
+c      Change- Dec. 92  RSF.  call to ptdis moved- to use flavor
+c      of NEW quark in fragmentation.
+c
+c     includes 4 FLAVORS \FR'13
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+      DOUBLE PRECISION ZLIST
+      COMMON /S_ZLIST/ ZLIST(8000)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+      INTEGER NFORIG,NPORIG,NIORIG,IPFLAG,IIFLAG,KINT
+      COMMON /S_PARTO/ NFORIG(NP_max),NPORIG(NP_max),NIORIG(NP_max),
+     &IPFLAG,IIFLAG,KINT
+      DOUBLE PRECISION FAin, FB0in
+      COMMON /S_CZDIS/ FAin, FB0in
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+      INTEGER LRNK
+      COMMON /SIB_RNK/ LRNK(8000)
+
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+
+      INTEGER IISO,ISPN
+      COMMON /S_SPN/ IISO(99), ISPN(99)
+
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+
+      DIMENSION WW(2,2), PTOT(4), PX(3),PY(3),IFL(3),ILEAD(2)
+      DIMENSION LPOINT(8000), PMQ(3), IRNK(2), LRES(6:99)
+      LOGICAL LRANK
+      SAVE
+      DATA LRANK/.true./
+
+      DATA (LRES(I),I=6, 39)
+     &     /27,25,26,28,29,9,9,41,42,19*0,44,45,46,47,48,39/
+      DATA (LRES(I),I=40, 49) /40,41,42,43,44,45,46,47,48,49/
+      DATA (LRES(I),I=50, 83) 
+     &     /0,51,52,53,54,4*0,78,79,10*0,71,72,73,76,77,76,
+     &     77,78,79,80,81,0,83/
+      DATA (LRES(I),I=84, 99) /94,95,96,97,98,89,4*0,94,95,96,97,98,99/
+      
+      IF(Ndebug.gt.3) THEN
+        WRITE(LUN,*)
+     &        ' STRING_FRAG_4FLV: called with ',
+     &        '(E0,IFL1,IFL2,PX1,PY1,PX2,PY2,IVAL)',
+     &        E0,IFL1,IFL2,PX1,PY1,PX2,PY2,IFQRK
+        WRITE(LUN,*)' STRING_FRAG_4FLV: NP before fragmentation:',NP
+      ENDIF
+
+c...  remember initial values
+c     strange fraction
+      par2_def = PAR(2)
+c     vector model
+      IPAR11_def = IPAR(11)
+c     vector fraction
+      PAR5_def = PAR(5)      
+c     charm fraction
+      PAR24_def = PAR(24)
+c     popcorn fraction
+      PAR8_def = PAR(8)
+
+C...initialise
+      NTRY = 0
+      IFBAD = 0
+ 200  NTRY = NTRY + 1
+
+c     reset parameters after rejection
+      PAR(2) = PAR2_def
+      PAR(5) = PAR5_def
+      PAR(24) = PAR24_def
+      IPAR(11) = IPAR11_def
+      PAR(8) = PAR8_def
+
+      IF (NTRY .GT. 50)  THEN
+         IFBAD = 1
+         RETURN
+      ENDIF
+      I = NP
+      DO K=1,2
+         WW(K,1) = 1.D0
+         WW(K,2) = 0.D0
+         IRNK(K) = 0
+      ENDDO
+      PX(1) = PX1
+      PY(1) = PY1
+      PX(2) = PX2
+      PY(2) = PY2
+      PX(3) = 0.D0
+      PY(3) = 0.D0
+      PTOT (1) = PX1+PX2
+      PTOT (2) = PY1+PY2
+      PTOT (3) = 0.D0
+      PTOT (4) = E0
+c     turn on/off splitting of leading diquark
+c     (1: no splitting, 0: diq may be split, producing leading meson)
+      IFL(1) = IFL1+ISIGN(100,IFL1)*MIN(1,IABS(IFL1)/10)*IPAR(90)
+      IFL(2) = IFL2+ISIGN(100,IFL2)*MIN(1,IABS(IFL2)/10)*IPAR(90)     
+      PMQ(1) = QMASS(IFL(1))
+      PMQ(2) = QMASS(IFL(2))
+
+      ILEAD(1) = 0
+      ILEAD(2) = 0
+      IBLEAD = 0
+      IF(IABS(IFQRK).eq.1) THEN
+         ILEAD(1) = 1
+         ILEAD(2) = 1
+      ENDIF
+c     switch leading baryon fragmentation function on/off
+      IF(IPAR(20).eq.0) GOTO 300
+c     set flags for leading baryon
+C
+C      SET FLAG FOR GENERATION OF LEADING PARTICLES. 
+C      "AND" IS FOR PPBAR ( DIQUARK AT BOTH ENDS)
+C      "OR" IS FOR PP, PPI, ( DIQUARK AT ONE END.)
+C
+      IF (IABS(IFL1) .GT. 10 .AND. IABS(IFL2) .GT. 10)  THEN
+         IBLEAD = 2
+         I = I+1
+         JT = INT(1.5D0+S_RNDM(0))
+         GOTO 350
+      ENDIF         
+      IF (IABS(IFL1) .GT. 10 .OR. IABS(IFL2) .GT. 10)  THEN
+         IBLEAD = 1
+         I = I+1
+         JT = 2
+         IF (IABS(IFL2) .GT. 10) JT = 1
+         GOTO 350
+      ENDIF         
+
+C...produce new particle: side, pT
+ 300  continue
+      I=I+1
+      if(i.gt.8000) then
+        write(LUN,'(1x,a,i8)') 
+     &        ' STRING_FRAG_4FLV: no space left in S_PLIST:',I
+        CALL SIB_REJECT('STRING_FRAG_4FLV')
+      endif
+      IF (IBLEAD .GT. 0)  THEN
+         JT = 3 - JT   
+         GO TO 350              
+      ENDIF
+c     
+c 349  continue
+c     choose side (1 or 2)
+      JT=INT(1.5D0+S_RNDM(0))
+c     set 'other' side
+ 350  JR=3-JT
+c     remember side particle was produced
+      LPOINT(I) = JT
+c     increase rank counter
+      IRNK(JT) = ISIGN(ABS(IRNK(JT))+1,1-JT)
+c     set particle rank
+      LRNK(I) = IRNK(JT)
+
+      nporig(I)= Ipflag*2 + KINT
+      niorig(I)= iiflag
+      IF(ILEAD(JT).eq.1) nporig(I)= -1 * nporig(I)
+      nforig(I) = 0
+
+ 555  CONTINUE
+c
+c.... CHARM config
+c
+      charmPARdef=PAR(24)
+      IF(IPAR(15).lt.9)THEN
+c     no s->c
+         PAR(24) = 0.D0
+         IF (IFQRK.EQ.1) THEN
+c     ifqrk = 1 (valence quark attatched) 
+            IF(IPAR(15).ge.1) THEN
+c     enforce s->c at string end
+               IF(ILEAD(JT).eq.1) PAR(24)=charmPARdef
+c     produce charm in all strings
+               IF(IPAR(15).eq.8) PAR(24)=charmPARdef
+            ELSE
+c     compatibility to broken version
+               PAR(24)=charmPARdef
+            ENDIF
+         ELSE
+c     no val. quark at string end or diff
+            PAR(24)=charmPARdef
+         ENDIF
+      ENDIF
+c
+C.... Vector meson config
+c
+c     increase vec.meson ratio for leading particle in str. diff.
+      IF(IFQRK.eq.-1)THEN
+         IF(IPAR(66).eq.1)THEN
+            IF(ILEAD(JT).EQ.1)THEN
+              IF(IBAR(IABS(kb)).eq.0.or.IPAR(70).eq.1) PAR(5) = PAR(113)
+           ENDIF
+        ELSEIF(IPAR(66).eq.2)THEN
+            IF(IBAR(IABS(kb)).eq.0.or.IPAR(70).eq.1) PAR(5) = PAR(113)
+
+        ELSEIF(IPAR(66).eq.3)THEN
+c     increase vector meson rate for meson beam
+c     on beam side (rank+) only!            
+            IF(ILEAD(JT).EQ.1)THEN               
+               IF(IBAR(IABS(kb)).eq.0.and.IRNK(JT).gt.0)
+     &              PAR(5) = PAR(113)
+c     always incr. vector rate for diff. strings independent of beam type
+               IF(IPAR(70).eq.1) PAR(5) = PAR(113)               
+            ENDIF         
+            
+         ENDIF           
+      endif
+      
+c...  switch off for proton beam
+      IF(IPAR(31).eq.1)then
+c         print*,'ipar11,ipar11def,1-kb/13,kb',IPAR(11),ipar11_def,
+c     +        max((1-iabs(kb)/13),0),kb
+         IPAR(11) = IPAR(11)*max((1-iabs(kb)/13),0) ! meson beam only
+      endif
+c     increase vec.meson ratio for leading quarks
+      IF(IABS(IFQRK).eq.1)THEN
+         IF(IPAR(11).le.-5.and.IPAR(11).ge.-7
+     &        .and.ilead(jt).eq.1)
+     &        PAR(5) = 9.D0
+         
+c     increase vec.meson ratio for diff.
+         IF(IFQRK.eq.-1.and.IPAR(11).le.-4.and.IPAR(11).ge.-7)
+     &        PAR(5) = 9.D0
+
+c     increase vec.meson ratio for leading particle in str. diff. (lvec16)
+         IF(IFQRK.eq.-1.and.IPAR(11).le.-11.and.ILEAD(JT).EQ.1)
+     &        PAR(5) = 99.D0
+      ENDIF
+
+c...  suppress leading charm for pion and kaon beams
+      IF(IPAR(15).eq.11)then
+         IF((1-IABS(KB)/13)*ILEAD(JT).gt.0) PAR(24)=0.D0
+      ENDIF
+
+C...  suppress rank-1 baryon through popcorn
+      IF(IBLEAD .GT. 0.and.abs(ifl(jt)).gt.10
+     &     .and.abs(ifl(3)).lt.10) PAR(8)=PAR(63)*PAR(8)
+
+C...  leading strange/charm
+      IF(ILEAD(JT).eq.1.and.IPAR(39).gt.0) PAR(2) = PAR(65)
+      
+c     scale valence string end charm for assoc. prod.      
+      IF(IPAR(41).eq.1)THEN
+         IF(ILEAD(JT).eq.1.and.IFQRK.eq.1) PAR(24) = PAR(71)*PAR(24)
+      ENDIF
+
+c     suppress direct pi0 for meson projectiles
+c     rate set by par( 137 )
+      ipar82_def = IPAR(82)
+c     skip if baryon projectile or minijet (i.e no flavor attached)
+      if(ibar(iabs(kb)).ne.0.or.ifqrk.eq.0) IPAR(82) = 0
+
+c     suppress direct omega for meson projectiles
+c     rate set by par( 138 )
+      ipar83_def = IPAR(83)
+c     skip if baryon projectile or central string
+      if(ibar(iabs(kb)).ne.0.or.(ifqrk.gt.0.and.IPAR(83).eq.2))
+     &     IPAR(83) = 0
+
+c     change rho0 / omega ratio
+      PAR143_def = PAR(143)
+      IF(IPAR(81).eq.1)THEN
+c     change if beam is meson
+         if(ibar(iabs(kb)).eq.0) PAR(143) = PAR(144)
+      ELSEIF(IPAR(81).eq.2)THEN         
+c     change if beam is meson, on meson side only         
+         if(ibar(iabs(kb)).eq.0.and.IRNK(JT).gt.0) PAR(143) = PAR(144) 
+      ELSEIF(IPAR(81).eq.3)THEN         
+c     change if beam is meson, on meson side only, for leading only
+         if(ibar(iabs(kb)).eq.0.and.ISIGN(ILEAD(JT),IRNK(JT)).eq.1)
+     &        PAR(143) = PAR(144)
+      ELSEIF(IPAR(81).eq.4)THEN         
+c     change if beam is meson, on meson side only, for diff. strings only
+         if(ibar(iabs(kb)).eq.0.and.IFQRK.eq.-1)
+     &        PAR(143) = PAR(144)
+      ELSEIF(IPAR(81).eq.5)THEN         
+c     change if beam is meson, for leading on meson side only and
+c     for diff. strings only
+         if(ibar(iabs(kb)).eq.0.and.IFQRK.eq.-1.and.
+     &        ISIGN(ILEAD(JT),IRNK(JT)).eq.1) PAR(143) = PAR(144)
+      ENDIF
+      
+C...particle ID and pt.
+
+      CALL SIB_I4FLAV (IFL(JT), 0, IRNK(JT), IFL(3), LLIST(I))
+
+c     reset strange fraction
+      PAR(2) = PAR2_def
+c     reset vec.meson production
+      PAR(5) = PAR5_def
+c     reset charm fraction
+      PAR(24) = PAR24_def
+c     reset popcorn
+      PAR(8) = par8_def
+
+c     reset pi0 suppr.
+      IPAR(82) = ipar82_def
+
+c     reset omega suppr.
+      IPAR(83) = ipar83_def
+
+c     reset rho0 / omega ratio
+      PAR(143) = PAR143_def
+      
+c     reject iso 0 spin 1 for meson projectiles
+      IF(IBAR(IABS(KB)).eq.0)THEN
+c     reject leading spin1,isospin singlett
+         IF(ILEAD(JT).EQ.1.and.LLIST(I).eq.32.and.
+     +        PAR(136).gt.S_RNDM(I)) LLIST(I) = 27
+      endif
+      
+c     replace leading or all pi0 with rho0
+      IF(IFQRK.eq.-1) THEN 
+         IF(IPAR(67).eq.1)THEN
+            IF(ILEAD(JT).EQ.1) THEN 
+c     replace leading pi0 with rho0
+               IF(ABS(LLIST(I)).EQ.6) LLIST(I) = 27*isign(1,LLIST(I))  
+            ENDIF
+         ELSEIF(IPAR(67).eq.2)THEN
+c     replace all pi0 with rho0 for all beams
+            IF(ABS(LLIST(I)).EQ.6) LLIST(I) = 27*isign(1,LLIST(I))
+         ELSEIF(IPAR(67).eq.3)THEN
+c     replace all pi0 with rho0 for meson beam only
+            IF(IBAR(IABS(KB)).eq.0)THEN
+               IF(ABS(LLIST(I)).EQ.6) LLIST(I) = 27*isign(1,LLIST(I))
+            ENDIF
+         ELSEIF(IPAR(67).eq.4)THEN
+c     replace all pi0 with rho0 for meson beam only
+c     replace some beam mesons with their vector partner
+            IF(IBAR(IABS(KB)).eq.0)THEN
+               IF(ABS(LLIST(I)).EQ.6) LLIST(I) = 27*isign(1,LLIST(I))
+c     reject leading spin1,isospin singlett
+               IF(ILEAD(JT).EQ.1.and.LLIST(I).eq.32.and.
+     +              PAR(136).gt.S_RNDM(I)) LLIST(I) = 27
+               IF(S_RNDM(0).lt.PAR(120).and.LLIST(I).eq.KB) 
+     &              LLIST(I) = LRES(LLIST(I))
+            ENDIF
+         ENDIF
+      ENDIF
+
+c     replace leading pi0 by rho0's
+      IF(IABS(IFQRK).eq.1)THEN
+         IF(ABS(IPAR(11)).ge.2.and.IPAR(11).ge.-3)THEN
+            IF(ilead(jt).EQ.1) then 
+               IF(ABS(LLIST(I)).EQ.6) THEN
+                  LLIST(I) = 27*isign(1,LLIST(I))
+               endif
+            endif
+        
+c     replace leading pi0 in string diff by rho0's (lvec15)
+         ELSEIF(IFQRK.eq.-1.and.IPAR(11).eq.-10)THEN
+            IF(ILEAD(JT).EQ.1) THEN 
+               IF(ABS(LLIST(I)).EQ.6) THEN
+                  LLIST(I) = 27*isign(1,LLIST(I))
+               ENDIF
+            ENDIF
+c     replace leading pi0 in string diff by rho0's 
+c     in addition to increased leading vec.meson ratio (lvec20)
+         ELSEIF(IFQRK.eq.-1.and.IPAR(11).eq.-15)THEN
+            IF(ILEAD(JT).EQ.1) THEN 
+               IF(ABS(LLIST(I)).EQ.6) THEN
+                  LLIST(I) = 27*isign(1,LLIST(I))
+               ENDIF
+            ENDIF     
+c     replace leading omega in string diff by rho0's 
+c     in addition to increased leading vec.meson ratio (lvec21)
+         ELSEIF(IFQRK.eq.-1.and.IPAR(11).eq.-16)THEN
+            IF(ILEAD(JT).EQ.1) THEN 
+               IF(ABS(LLIST(I)).EQ.32) 
+     &              LLIST(I) = 27*isign(1,LLIST(I))
+            ENDIF     
+c     replace leading omega in string diff by rho0's 
+c     suppress pi0 in diff. strings
+c     in addition to increased leading vec.meson ratio (lvec22)
+         ELSEIF(IFQRK.eq.-1.and.IPAR(11).eq.-17)THEN
+            IF(ILEAD(JT).EQ.1) THEN 
+c     print*,'replacing leading omega with rho0'
+               IF(ABS(LLIST(I)).EQ.32)
+     &              LLIST(I) = 27*isign(1,LLIST(I))
+            ENDIF
+            IF(LLIST(I).EQ.6) then
+c     print*,'pi0 found! start again.. '
+               GOTO 555
+            endif
+
+c     replace all for diff.
+         ELSEIF(IFQRK.eq.-1.and.IPAR(11).lt.0.and.
+     &           IPAR(11).ge.-3) then
+            IF(ABS(LLIST(I)).EQ.6)  LLIST(I) = 27*isign(1,LLIST(I))
+
+c     increased vec.meson ratio and replace pi0 with rho0 in str.diff
+         ELSEIF(IFQRK.eq.-1.and.IPAR(11).eq.-7) then
+            IF(ABS(LLIST(I)).EQ.6)  LLIST(I) = 27*isign(1,LLIST(I))  
+
+c     replace leading pi's by vec.mesons, iso-spin conserving
+         ELSEIF(IPAR(11).eq.-8.and.IPAR(11).lt.0)THEN
+            PAR(5) = 9.D0
+            IF(ilead(jt).EQ.1.and.
+     $                       INT((PAR(5)+1.D0)*S_RNDM(0)).gt.1) then 
+               IF(ABS(LLIST(I)).EQ.6) LLIST(I) = 27*isign(1,LLIST(I))
+               IF(ABS(LLIST(I)).EQ.7) LLIST(I) = 25*isign(1,LLIST(I))
+c     IF(ABS(LLIST(I)).EQ.8) LLIST(I) = 26*isign(1,LLIST(I))
+            endif
+
+c     replace almost all for diff.
+         ELSEIF(IFQRK.eq.-1.and.IPAR(11).eq.-8.and.IPAR(11).lt.0) then
+            PAR(5) = 9.D0
+            if( INT((PAR(5)+1.D0)*S_RNDM(0)).gt.1 ) then
+               IF(ABS(LLIST(I)).EQ.6)  LLIST(I) = 27*isign(1,LLIST(I))
+               IF(ABS(LLIST(I)).EQ.7) LLIST(I) = 25*isign(1,LLIST(I))
+            endif
+      
+c     replace leading pi0's by vec.mesons
+         ELSEIF(IPAR(11).eq.-9.and.IPAR(11).lt.0)THEN
+            PCHF = 0.1D0
+            IF(ilead(jt).EQ.1.and.ABS(LLIST(I)).EQ.6) 
+     &           LLIST(I) = 27*isign(1,LLIST(I))
+            if(ilead(jt).EQ.1.and.ABS(LLIST(I)).EQ.7)then
+               if(S_RNDM(0).lt.PCHF) LLIST(I) = 25*isign(1,LLIST(I))
+            endif        
+
+c     replace for string diff.
+         ELSEIF(IFQRK.eq.-1.and.IPAR(11).eq.-9) then
+            IF(ABS(LLIST(I)).EQ.6) 
+     &           LLIST(I) = 27*isign(1,LLIST(I))
+            if(ABS(LLIST(I)).EQ.7)then
+               if(S_RNDM(0).lt.PCHF) 
+     &              LLIST(I) = 25*isign(1,LLIST(I))
+            endif
+         ELSE
+            CONTINUE
+         ENDIF
+      ENDIF
+
+c     reset vec.meson ratio
+      PAR(5) = 0.3D0
+      IF(IABS(IFQRK).eq.1) ILEAD(JT) = 0
+      
+      PMQ(3) = QMASS(IFL(3))
+      P(I,5) = AM(IABS(LLIST(I)))
+      CALL PTDIS_4FLV (IFL(3), PX(3),PY(3))
+
+C...fill transverse momentum
+      P(I,1) = PX(JT) + PX(3)
+      P(I,2) = PY(JT) + PY(3)
+      XMT2 = P(I,5)**2+P(I,1)**2+P(I,2)**2
+
+C...test end of fragmentation
+
+      WREM2 = PTOT(4)**2-PTOT(1)**2-PTOT(2)**2-PTOT(3)**2
+c      IF (WREM2 .LT. 0.1)  GOTO 200
+      IF (WREM2 .LT. 0.1D0)  GOTO 200
+c      WMIN = PMQ(1)+PMQ(2)+2.*PMQ(3)+ 1.1 + (2.*S_RNDM(0)-1.)*0.2
+      WMIN=PMQ(1)+PMQ(2)+2.D0*PMQ(3)+PAR(59)+(2.D0*S_RNDM(0)-1.D0)*0.2D0
+      IF (WREM2 .LT. WMIN**2) Then
+         if (IABS(ifl(3)).ne.3.and.IABS(IFL(3)).ne.4) GOTO 400
+         goto 200
+      endif
+
+C...Choose z
+      IF(IABS(IFQRK).eq.1) THEN
+c     valence strings: ( str.diff and non diff. )
+         IF(IPAR(11).EQ.1) THEN
+c     use hard distribution for leading quarks ( no exchange )
+            IF(ILEAD(JT).eq.1) THEN
+               Z = ZBLEAD (IABS(LLIST(I)))
+            ELSE
+               IF(IBLEAD .GT. 0.and.iabs(ifl(jt)).gt.10
+     &              .and.iabs(ifl(3)).lt.10)  THEN
+                  Z = ZBLEAD (IABS(LLIST(I)))   
+                  IBLEAD = IBLEAD - 1
+               ELSE
+                  Z = ZDIS_4FLV (IFL(3),ifl(jt),XMT2)
+               ENDIF
+            ENDIF
+c     use hard frag. for leading particles
+         ELSEIF(IPAR(11).ge.3.or.IPAR(11).eq.-3.or.IPAR(11).eq.-6
+     &           .or.IPAR(11).eq.-7) THEN
+            IF(ILEAD(jt).eq.1) THEN
+               Z = ZBLEAD (IABS(LLIST(I)))
+            ELSE
+               IF(IBLEAD .GT. 0.and.iabs(ifl(jt)).gt.10
+     &              .and.iabs(ifl(3)).lt.10)  THEN
+                  Z = ZBLEAD (IABS(LLIST(I)))   
+                  IBLEAD = IBLEAD - 1
+               ELSE
+                  Z = ZDIS_4FLV (IFL(3),ifl(jt),XMT2)
+               ENDIF
+            ENDIF
+         ELSEIF(IPAR(11).EQ.-11) THEN
+c     very hard leading frag. for diff and non. diff val. strings (lvec16)
+            IF(IBLEAD .GT. 0.and.iabs(ifl(jt)).gt.10) THEN
+               Z = ZBLEAD (IABS(LLIST(I)))
+            ELSEIF(ILEAD(jt).eq.1)THEN
+               Z = 1.D0 - ZDISN(1)
+            ELSE
+               Z = ZDIS_4FLV (IFL(3),ifl(jt),XMT2)
+            ENDIF
+
+         ELSEIF(IPAR(11).EQ.-12.OR.IPAR(11).LE.-15.or.IPAR(68).eq.1)THEN
+c     very hard leading frag. for diff. val. strings only (lvec17)
+            IF(IBLEAD .GT. 0.and.iabs(ifl(jt)).gt.10) THEN
+               Z = ZBLEAD (IABS(LLIST(I)))
+            ELSEIF(ILEAD(jt).eq.1.and.IFQRK.eq.-1)THEN
+               Z = 1.D0 - ZDISN(1)
+            ELSE
+               Z = ZDIS_4FLV (IFL(3),ifl(jt),XMT2)
+            ENDIF
+
+         ELSEIF(IPAR(11).EQ.-13.AND.IFQRK.eq.-1) THEN
+c     hard leading frag. for diff. val. strings only (lvec18)
+            IF(IBLEAD .GT. 0.and.iabs(ifl(jt)).gt.10) THEN
+               Z = ZBLEAD (IABS(LLIST(I)))
+            ELSEIF(ILEAD(jt).eq.1)THEN
+               Z = S_RNDM(JT)
+            ELSE
+               Z = ZDIS_4FLV (IFL(3),ifl(jt),XMT2)
+            ENDIF
+         ELSEIF(IPAR(11).EQ.-14.AND.IFQRK.eq.-1) THEN
+c     hard leading frag. for diff. AND ndiff. val. strings (lvec19)
+            IF(IBLEAD .GT. 0.and.iabs(ifl(jt)).gt.10) THEN
+               Z = ZBLEAD (IABS(LLIST(I)))
+            ELSEIF(ILEAD(jt).eq.1)THEN
+               Z = S_RNDM(JT)
+            ELSE
+               Z = ZDIS_4FLV (IFL(3),ifl(jt),XMT2)
+            ENDIF
+            
+         ELSE
+
+c     hard leading baryons only ( standard )
+            IF(IBLEAD .GT. 0.and.iabs(ifl(jt)).gt.10
+     &           .and.abs(ifl(3)).lt.10)  THEN
+c           print*,'calling zblead: i,id,jt,ncall', i,llist(i),jt,ncall
+               IF(IPAR(20).eq.3)THEN
+c     use lund function with different parameters for leading baryon
+                  fa_def = FAin
+                  fb_def = FB0in
+                  FAin = PAR(57)
+                  FB0in = PAR(58)
+                  z = zdis_4flv(IFL(3),ifl(jt),xmt2)
+c     set parameters to initial values again
+                  FAin = fa_def
+                  FB0in = fb_def
+               ELSE
+                  Z = ZBLEAD (IABS(LLIST(I)))
+               ENDIF
+               IBLEAD = IBLEAD - 1
+            ELSE
+               Z = ZDIS_4FLV (IFL(3),ifl(jt),XMT2)
+            ENDIF
+         ENDIF
+      ELSE
+c     non valence string
+         IF (IBLEAD .GT. 0.and.iabs(ifl(jt)).gt.10
+     &        .and.iabs(ifl(3)).lt.10)  THEN
+C     Special frag. for leading Baryon only
+c            print*,'calling zblead: i,id,jt,ncall', i,llist(i),jt,ncall
+            Z = ZBLEAD (IABS(LLIST(I)))   
+            IBLEAD = IBLEAD - 1
+         ELSE
+            Z = ZDIS_4FLV (IFL(3),ifl(jt),XMT2)
+         ENDIF
+      ENDIF
+      IF(IPAR(20).eq.2)IBLEAD = 2
+      IF(IFQRK.eq.1) ILEAD(JT) = 0
+
+      ZLIST(I) = Z
+      WW(JT,2) = Z*WW(JT,1)
+      WW(JR,2) = XMT2/(WW(JT,2)*E0**2)
+
+      P(I,3) = WW(1,2)*0.5D0*E0 - WW(2,2)*0.5D0*E0
+      P(I,4) = WW(1,2)*0.5D0*E0 + WW(2,2)*0.5D0*E0
+
+      DO J=1,4
+         PTOT (J) = PTOT(J) - P(I,J)
+      ENDDO
+      DO K=1,2
+         WW(K,1) = WW(K,1) - WW(K,2)
+      ENDDO
+
+C...Reset pT and flavor at ends of the string
+      PX(JT) = -PX(3)
+      PY(JT) = -PY(3)
+      IFL(JT) =-IFL(3)
+      PMQ(JT) = PMQ(3)
+
+      GOTO 300
+
+C...Final two hadrons
+ 400  IAFL1 = IABS(mod(IFL(JR),100))
+      IAFL2 = IABS(mod(IFL(3),100))
+      IF(NDEBUG.gt.5)
+     &     write(lun,*)'STRING_FRAG: final flavors:', IFL(JR), -IFL(3)
+      
+C..   check if flavor combination is allowed..
+      
+c     reject anti-baryon next to leading baryon
+c     remaining anti-quark from leading baryon is marked by id+100
+      IF((IABS(IFL(JR)).gt.100.and.IAFL2.gt.10).or.
+     & (IABS(IFL(3)).gt.100.and.IAFL1.gt.10)) GOTO 200
+      
+      IF(IPAR(40).eq.0)THEN
+c     reject two diquarks, two anti-diquarks AND diquark anti-diquark pairs
+         IF (IAFL1*IAFL2 .GT. 100)  GOTO 200 
+      ELSE
+c     ONLY reject two diquarks or two anti-diquarks (unphysical) 
+c     AND KEEP diquark anti-diquark pairs 
+         IF (mod(IFL(JR),100)*mod(IFL(3),100).GT.100) GOTO 200 
+      ENDIF
+
+      IF ((IAFL1/10.eq.4.or.mod(IAFL1,10).eq.4)
+     +     .and.(IAFL2/10.eq.4.or.mod(IAFL2,10).eq.4))
+     +     GOTO 200             ! reject two charm quarks
+
+C.... Vector meson config
+c     increase vec.meson ration for diff.
+      IF(IFQRK.eq.-1.and.IPAR(11).le.-4.and.IPAR(11).gt.-8) PAR(5) =9.D0
+c     increase vec.meson ration for leading quarks in valence interactions
+      IF(IABS(IFQRK).eq.1.and.IPAR(11).le.-5.and.ilead(jr).eq.1
+     &     .and.IPAR(11).gt.-8) PAR(5) = 9.D0
+
+c     suppress direct pi0 for meson projectiles
+c     rate set by par( 137 )
+ 666  ipar82_def = IPAR(82)
+c     skip if baryon projectile
+      if(ibar(iabs(kb)).ne.0.or.ifqrk.eq.0) IPAR(82) = 0
+
+c     suppress direct omega for meson projectiles
+c     rate set by par( 138 )
+      ipar83_def = IPAR(83)
+c     skip if baryon projectile or central string     
+      if(ibar(iabs(kb)).ne.0.or.(ifqrk.gt.0.and.IPAR(83).eq.2))
+     &     IPAR(83) = 0
+
+c     set current rank
+      IRNK(JR)=ISIGN(IABS(IRNK(JR))+1,1-JR)
+      
+c     change rho0 / omega ratio
+      IF(IPAR(81).eq.1)THEN
+c     change if beam is meson
+         if(ibar(iabs(kb)).eq.0) PAR(143) = PAR(144)
+      ELSEIF(IPAR(81).eq.2)THEN         
+c     change if beam is meson, on meson side only         
+         if(ibar(iabs(kb)).eq.0.and.IRNK(JR).gt.0) PAR(143) = PAR(144)  
+      ELSEIF(IPAR(81).eq.3)THEN         
+c     change if beam is meson, on meson side only, for leading only
+         if(ibar(iabs(kb)).eq.0.and.ISIGN(ILEAD(JR),IRNK(JR)).eq.1)
+     &        PAR(143) = PAR(144)
+      ELSEIF(IPAR(81).eq.4)THEN         
+c     change if beam is meson, on meson side only, for diff. strings only
+         if(ibar(iabs(kb)).eq.0.and.IFQRK.eq.-1)
+     &        PAR(143) = PAR(144)
+      ELSEIF(IPAR(81).eq.5)THEN         
+c     change if beam is meson, for leading on meson side only and
+c     for diff. strings only
+         if(ibar(iabs(kb)).eq.0.and.IFQRK.eq.-1.and.
+     &        ISIGN(ILEAD(JR),IRNK(JR)).eq.1) PAR(143) = PAR(144)
+      ENDIF
+
+c     increase vec.meson ratio for leading particle in str. diff.
+      IF(IPAR(66).eq.1)THEN
+         IF(ILEAD(JT).EQ.1.and.IFQRK.eq.-1)THEN
+            IF(IBAR(IABS(kb)).eq.0.or.IPAR(70).eq.1) PAR(5) = PAR(113)
+         ENDIF
+
+      ELSEIF(IPAR(66).eq.2)THEN
+         IF(IFQRK.eq.-1)THEN
+            IF(IBAR(IABS(kb)).eq.0.or.IPAR(70).eq.1) PAR(5) = PAR(113)
+         ENDIF
+
+      ELSEIF(IPAR(66).eq.3)THEN
+c     increase vector meson rate for meson beam
+c     on beam side (rank+) only!
+         IF(IFQRK.eq.-1)THEN
+            IF(ILEAD(JR).EQ.1)THEN               
+               IF(IBAR(IABS(kb)).eq.0.and.IRNK(JR).gt.0)
+     &              PAR(5) = PAR(113)
+c     always incr. vector rate for diff. strings independent of beam type
+               IF(IPAR(70).eq.1) PAR(5) = PAR(113)               
+            ENDIF
+         ENDIF
+      ENDIF
+
+      CALL SIB_I4FLAV (IFL(JR), -IFL(3), IRNK(JR), IFLA, LLIST(I+1))
+
+      IPAR(82) = ipar82_def
+      IPAR(83) = ipar83_def
+      PAR(143) = PAR143_def
+      
+      nporig(I+1)= Ipflag*2 + KINT
+      niorig(I+1)= iiflag
+      IF(ILEAD(1).eq.1.or.ILEAD(2).eq.1) nporig(I+1)= -1 * nporig(I+1)
+
+c     replace leading or all pi0 with rho0
+      IF(IFQRK.eq.-1) THEN 
+         IF(IPAR(67).eq.1)THEN
+            IF(ILEAD(JR).EQ.1) THEN 
+               IF(IABS(LLIST(I+1)).EQ.6) 
+     &              LLIST(I+1) = 27*isign(1,LLIST(I+1))           
+            ENDIF
+         ELSEIF(IPAR(67).eq.2)THEN
+            IF(IABS(LLIST(I+1)).EQ.6) LLIST(I+1) =27*isign(1,LLIST(I+1))
+         ELSEIF(IPAR(67).eq.3)THEN
+            IF(IBAR(IABS(KB)).eq.0)THEN
+               IF(ABS(LLIST(I+1)).EQ.6)LLIST(I+1)=27*isign(1,LLIST(I+1))
+            ENDIF
+         ENDIF
+      ENDIF
+      
+c     replace all for diff.
+      IF(IABS(IFQRK).EQ.1)THEN
+         IF(IFQRK.eq.-1.and.IPAR(11).lt.0
+     &        .and.IPAR(11).ge.-3) then
+            IF(ABS(LLIST(I+1)).EQ.6) LLIST(I+1) = 27*isign(1,LLIST(I+1))
+         endif
+c     replace all for leading val.
+         IF(IPAR(11).le.-2.and.IPAR(11).ge.-3) then
+            if( ilead(jr).eq.1 ) then
+               IF(IABS(LLIST(I+1)).EQ.6)
+     &              LLIST(I+1) = 27*isign(1,LLIST(I+1))
+            endif
+         endif
+
+c     increased vec.meson ratio and replace pi0 with rho0
+         IF(IFQRK.eq.-1.and.IPAR(11).eq.-7) then
+           IF(IABS(LLIST(I+1)).EQ.6) LLIST(I+1) = 27*isign(1,LLIST(I+1))
+c     IF(ABS(LLIST(I+1)).EQ.7)  LLIST(I+1) = 25*isign(1,LLIST(I+1))
+         endif
+         
+c     replace all for diff. ( same as lvec6 but for rhop as well )
+c     reset vec.meson ratio
+         IF(IFQRK.eq.-1.and.IPAR(11).eq.-8) then
+            PAR(5) = 9.D0
+            if( INT((PAR(5)+1.D0)*S_RNDM(0)).gt.1 ) then
+               IF(IABS(LLIST(I+1)).EQ.6)
+     &              LLIST(I+1) = 27*isign(1,LLIST(I+1))
+               IF(IABS(LLIST(I+1)).EQ.7)
+     &              LLIST(I+1) = 25*isign(1,LLIST(I+1))
+            endif
+         endif
+c     replace leading pseudoscalar by vector
+         IF(IPAR(11).eq.-8.and.ilead(jr).eq.1) then
+            PAR(5) = 9.D0
+            if( INT((PAR(5)+1.D0)*S_RNDM(0)).gt.1 ) then
+               IF(IABS(LLIST(I+1)).EQ.6) 
+     &              LLIST(I+1) = 27*isign(1,LLIST(I+1))
+               IF(IABS(LLIST(I+1)).EQ.7)
+     &              LLIST(I+1) = 25*isign(1,LLIST(I+1))
+            endif
+         endif
+         
+c     replace all pi0 for string diff.( same as lvec7 but for rhop as well )
+         IF(IFQRK.eq.-1.and.IPAR(11).eq.-9) then
+            if(IABS(LLIST(I+1)).EQ.6) LLIST(I+1) =27*isign(1,LLIST(I+1))
+         endif
+c     replace leading pi0 by vector
+         IF(IPAR(11).eq.-9.and.ILEAD(JR).eq.1) then
+            if(IABS(LLIST(I+1)).EQ.6) LLIST(I+1) =27*isign(1,LLIST(I+1))
+         endif
+
+c     replace leading omega in string diff by rho0's 
+c     suppress pi0 in diff. strings
+c     in addition to increased leading vec.meson ratio (lvec22)
+         IF(IFQRK.eq.-1.and.IPAR(11).eq.-17)THEN
+            IF(IABS(LLIST(I+1)).EQ.6)THEN
+c     print*,'found pi0, restarting..'
+               GOTO 666
+            ENDIF
+         ENDIF
+         ILEAD(JR)= 0
+      ENDIF
+
+c     reject iso 0 spin 1 (omega) for meson projectiles
+      IF(IBAR(IABS(KB)).eq.0)THEN
+c     reject leading spin1,isospin singlett
+         IF(ILEAD(JR).EQ.1.and.LLIST(I+1).eq.32.and.
+     +        PAR(136).gt.S_RNDM(I)) LLIST(I+1) = 27
+      endif
+      
+c     reset vec.mes. ratio
+      PAR(5) = PAR5_def
+      PAR(24) = charmPARdef
+      IPAR(11) = IPAR11_def
+
+      P(I,1)   = PX(JT)+PX(3)      
+      P(I,2)   = PY(JT)+PY(3)
+      LPOINT(I) = JT
+      I1 = I+1
+      nforig(I1) = 0      
+      P(I1,5) = AM(IABS(LLIST(I1)))
+      P(I1,1) = PX(JR)-PX(3)      
+      P(I1,2) = PY(JR)-PY(3)   
+      LPOINT(I1) = JR 
+      LRNK(I1) = IRNK(JR)
+      XM1 = P(I,5)**2+P(I,1)**2+P(I,2)**2
+      XM2 = P(I1,5)**2+P(I1,1)**2+P(I1,2)**2
+      IF (DSQRT(XM1)+dSQRT(XM2) .GT. dSQRT(WREM2)) GOTO 200
+
+c...RE & EJA fix
+      PT2 = (P(I,1)+P(I1,1))**2+(P(I,2)+P(I1,2))**2
+      WREMPT = dsqrt(WREM2+PT2)
+      EA1 = (WREM2+XM1-XM2+PT2)/(2.D0*WREMPT)
+
+      PA2 = (EA1**2-XM1)
+      if (pa2.gt.0.D0)  then
+            PA = dSQRT(PA2)
+      else
+            goto 200
+      endif
+      BA = PTOT(3)/PTOT(4)
+      GA = PTOT(4)/WREMPT
+      SGN = DBLE(3-2*JT)
+      P(I,3) = GA*(BA*EA1+SGN*PA)
+      P(I,4) = GA*(EA1+BA*SGN*PA)
+      P(I+1,3) = PTOT(3)-P(I,3)
+      P(I+1,4) = PTOT(4)-P(I,4)
+
+c     mark as final hadrons
+      ZLIST(I) = 0.D0
+      ZLIST(I+1) = 0.D0
+
+      NA= NP+1
+      NP=I+1
+         
+C...reorder  particles along chain (in rank)
+      IF (LRANK)  THEN
+      N1 = NA-1
+      N2 = 0
+      DO J=NA,NP
+         IF(P(J,4).lt.0) THEN
+            NP=NA-1
+            GOTO 200            ! negative energy bug 'fix'
+         ENDIF
+         IF(LPOINT(J) .EQ. 2)  THEN
+            N2=N2+1
+            LLIST (NP+N2) = LLIST(J)
+            LRNK(NP+N2) = LRNK(J)
+            ZLIST (NP+N2) = ZLIST(J)
+            nporig(NP+N2) = nporig(J)
+            niorig(NP+N2) = niorig(J)
+            nforig(NP+N2) = 0
+            DO K=1,5
+               P(NP+N2,K)=P(J,K)
+            ENDDO
+         ELSE
+            N1= N1+1
+            IF (N1.LT.J)   THEN
+               LLIST(N1) = LLIST(J)
+               LRNK(N1) = LRNK(J)
+               ZLIST(N1) = ZLIST(J)
+               nporig(N1) = nporig(J)
+               niorig(N1) = niorig(J)
+               nforig(N1) = nforig(J)
+               DO K=1,5
+                  P(N1,K) = P(J,K)
+               ENDDO
+            ENDIF
+         ENDIF
+      ENDDO
+      JJ=N1
+      DO J=NP+N2,NP+1,-1
+         JJ= JJ+1
+         LLIST(JJ) = LLIST(J)
+         LRNK(JJ) = LRNK(J)
+         ZLIST(JJ) = ZLIST(J)
+         nporig(JJ) = nporig(J)
+         niorig(JJ) = niorig(J)
+         nforig(JJ) = nforig(J)
+         DO K=1,5
+            P(JJ,K) = P(J,K)
+         ENDDO
+      ENDDO
+      ENDIF
+
+      if(Ndebug.gt.3)
+     &  WRITE(LUN,*)' STRING_FRAG_4FLV: NP after fragmentation:',NP
+
+      END
+
+
+C=======================================================================
+
+      SUBROUTINE GG_FRAG_4FLV (E0)
+
+C-----------------------------------------------------------------------
+C...This routine fragments a  gluon-gluon system
+C.  of mass E0 (GeV)
+C.  the particles produced are in the  jet-jet frame
+C.  oriented along the z axis
+C...........................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+      DOUBLE PRECISION ZLIST
+      COMMON /S_ZLIST/ ZLIST(8000)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+      INTEGER NFORIG,NPORIG,NIORIG,IPFLAG,IIFLAG,KINT
+      COMMON /S_PARTO/ NFORIG(NP_max),NPORIG(NP_max),NIORIG(NP_max),
+     &IPFLAG,IIFLAG,KINT
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+      DIMENSION WW(2,2),PTOT(4),PX(3),PY(3),IFL(3),PMQ(3)
+      SAVE
+
+      if(Ndebug.gt.3) then
+        WRITE(LUN,*)
+     &    ' GG_FRAG_4FLV: called with (E0)',
+     &    E0
+        WRITE(LUN,*)' GG_FRAG_4FLV: NP before fragmentation:',NP
+      endif
+
+C...  'leading' strange fraction
+      PAR2_def = PAR(2)
+      IF(IPAR(39).eq.2) PAR(2) = PAR(66)
+
+      PAR24_def = PAR(24)
+C     leading charm fraction
+      IF(IPAR(87).eq.1) PAR(24) = PAR(150)
+      IF(IPAR(87).eq.2) PAR(24) = PAR(150)*PAR(24)
+
+      E0S = E0**2
+      
+C...Generate the 'forward' leading particle.
+100   I = NP+1
+c     dummy rank argument
+      IDM = 5
+c     sample new flavor, i.e. split gluon into quark-antiquark, quark or antiquark
+      if( IPAR(87).eq.3 )THEN
+C     flavor threshold model            
+c     u,d -> u,d,s -> u,d,s,c
+         CALL SIB_ICFLAV(E0S,0,I0,IFL1)
+      ELSE
+c     default u,d,s model, same rates as in hadronization (string frag.)
+         I0 = INT(-1 + 2.D0*INT((2.D0-EPS8)*S_RNDM(I)))               
+         CALL SIB_I4FLAV(I0,0,IDM,IFL1, LDUM)
+      ENDIF
+c     form first hadron from new flavor
+      CALL SIB_I4FLAV(IFL1,0,IDM,IFL2, LLIST(I))
+      CALL PTDIS_4FLV(IFL1,PX1,PY1)
+      CALL PTDIS_4FLV(IFL2,PX2,PY2)
+      P(I,1) = PX1+PX2
+      P(I,2) = PY1+PY2
+      P(I,5) = AM(IABS(LLIST(I)))
+      XM1 = P(I,5)**2+P(I,1)**2+P(I,2)**2
+      Z1 = ZDIS_4FLV (IFL1,1,0.25D0*XM1)
+      Z2 = ZDIS_4FLV (IFL2,1,0.25D0*XM1)
+      T1  = 4.D0*XM1/(E0S*(Z1+Z2))
+      P(I,4) = 0.25D0*E0*(Z1+Z2 + T1)
+      P(I,3) = 0.25D0*E0*(Z1+Z2 - T1)
+
+      nforig(I)= 0
+      nporig(I)= Ipflag*3 + KINT
+      niorig(I)= iiflag
+      ZLIST(I) = Z1 + Z2
+
+C...Generate the 'backward' leading particle.
+      I = I+1
+      IF( IPAR(87).eq.3 )THEN
+         CALL SIB_ICFLAV(E0S,-I0,IDM,IFL3)
+      ELSE
+         CALL SIB_I4FLAV(-I0,0,IDM,IFL3, LDUM)
+      ENDIF
+      CALL SIB_I4FLAV(IFL3,0,IDM,IFL4, LLIST(I))
+      CALL PTDIS_4FLV(IFL3,PX3,PY3)
+      CALL PTDIS_4FLV(IFL4,PX4,PY4)
+      P(I,1) = PX3+PX4
+      P(I,2) = PY3+PY4
+      P(I,5) = AM(IABS(LLIST(I)))
+      XM2 = P(I,5)**2+P(I,1)**2+P(I,2)**2
+      Z3 = ZDIS_4FLV (IFL3,1,0.25D0*XM2)
+      Z4 = ZDIS_4FLV (IFL4,1,0.25D0*XM2)
+      T2  = 4.D0*XM2/(E0S*(Z3+Z4))
+      P(I,4) = 0.25D0*E0*( Z3+Z4 + T2)
+      P(I,3) = 0.25D0*E0*(-Z3-Z4 + T2)
+
+      nforig(I)= 0
+      nporig(I)= Ipflag*3 + KINT
+      niorig(I)= iiflag
+      ZLIST(I) = Z3 + Z4
+c      PAR24def = PAR(24)
+c     charm QCD fusion
+c      IF(IPAR(17).eq.2) PAR(24) = 0.
+
+c     reset strange fraction
+      PAR(2) = PAR2_def
+
+c     reset charm fraction
+      PAR(24) = PAR24_def
+      
+C...Fragment the two remaning strings
+      N0 = 0
+      DO KS=1,2
+      
+      NTRY = 0
+200   NTRY = NTRY+1
+      I = NP+2+N0
+      IF (NTRY .GT. 30)  GOTO 100
+
+      IF (KS .EQ. 1)  THEN
+         WW(1,1) = 0.5D0 * (1.D0 - Z1 - 0.5D0*T2) 
+         WW(2,1) = 0.5D0 * (1.D0 - Z3 - 0.5D0*T1)
+         PX(1) = -PX1
+         PY(1) = -PY1
+         PX(2) = -PX3
+         PY(2) = -PY3
+         IFL(1) = -IFL1
+         IFL(2) = -IFL3
+      ELSE
+         WW(1,1) = 0.5D0 * (1.D0 - Z2 - 0.5D0*T2) 
+         WW(2,1) = 0.5D0 * (1.D0 - Z4 - 0.5D0*T1)
+         PX(1) = -PX2
+         PY(1) = -PY2
+         PX(2) = -PX4
+         PY(2) = -PY4
+         IFL(1) = -IFL2
+         IFL(2) = -IFL4
+      ENDIF
+      PX(3) = 0.D0
+      PY(3) = 0.D0
+      PTOT (1) = PX(1)+PX(2)
+      PTOT (2) = PY(1)+PY(2)
+      PTOT (3) = 0.5D0*E0*(WW(1,1)-WW(2,1))
+      PTOT (4) = 0.5D0*E0*(WW(1,1)+WW(2,1))
+
+      PMQ(1) = QMASS(IFL(1))
+      PMQ(2) = QMASS(IFL(2))
+
+C...produce new particle: side, pT
+300   I=I+1
+      if(i.gt.8000) then
+        write(LUN,'(1x,a,i8)') 
+     &    ' GG_FRAG: no space left in S_PLIST:',I
+        CALL SIB_REJECT ('GG_FRAG         ')
+      endif
+      nforig(I)= 0
+      nporig(I)= Ipflag*2 + KINT
+      niorig(I)= iiflag
+
+      JT=INT(1.5D0+S_RNDM(0))
+      JR=3-JT
+c      CALL PTDIS (IFL(JT), PX(3),PY(3))
+
+C...particle ID
+      CALL SIB_I4FLAV (IFL(JT), 0, IDM, IFL(3), LLIST(I))
+      PMQ(3) = QMASS(IFL(3))
+      P(I,5) = AM(IABS(LLIST(I)))
+
+      CALL PTDIS_4FLV (IFL(3), PX(3),PY(3))
+      
+C...test end of fragmentation
+      WREM2 = PTOT(4)**2-PTOT(1)**2-PTOT(2)**2-PTOT(3)**2
+      IF (WREM2 .LT. 0.1D0)  GOTO 200
+      WMIN = PMQ(1)+PMQ(2)+2.D0*PMQ(3)+1.1D0+(2.D0*S_RNDM(0)-1.D0)*0.2D0
+      IF (WREM2 .LT. WMIN**2)THEN
+         GOTO 400
+      ENDIF
+
+C...fill transverse momentum
+      P(I,1) = PX(JT) + PX(3)
+      P(I,2) = PY(JT) + PY(3)
+
+C...Choose z
+      XMT2 = P(I,5)**2+P(I,1)**2+P(I,2)**2
+      Z = ZDIS_4FLV (ifl(3),IFL(JT), XMT2)
+
+      ZLIST(I) = Z      
+      WW(JT,2) = Z*WW(JT,1)
+      WW(JR,2) = XMT2/(WW(JT,2)*E0S)
+
+      P(I,3) = WW(1,2)*0.5D0*E0 - WW(2,2)*0.5D0*E0
+      P(I,4) = WW(1,2)*0.5D0*E0 + WW(2,2)*0.5D0*E0
+
+      DO J=1,4
+         PTOT (J) = PTOT(J) - P(I,J)
+      ENDDO
+      DO K=1,2
+         WW(K,1) = WW(K,1) - WW(K,2)
+      ENDDO
+
+C...Reset pT and flavor at ends of the string
+      PX(JT) = -PX(3)
+      PY(JT) = -PY(3)
+      IFL(JT) =-IFL(3)
+      PMQ(JT) = PMQ(3)
+      GOTO 300
+
+C...Final two hadrons
+ 400  IAFL1 = mod(IABS(IFL(JR)),100)
+      IAFL2 = mod(IABS(IFL(3)),100)
+      IF (IAFL1*IAFL2 .GT. 100)  GOTO 200 ! reject two diquarks
+      IF ((IAFL1/10.eq.4.or.mod(IAFL1,10).eq.4)
+     +     .and.(IAFL2/10.eq.4.or.mod(IAFL2,10).eq.4))
+     +     GOTO 200             ! reject two charm quarks
+
+      CALL SIB_I4FLAV (IFL(JR), -IFL(3), IDM, IFLA, LLIST(I+1))
+      P(I+1,5) = AM(IABS(LLIST(I+1)))
+      P(I,1)   = PX(JT)+PX(3)      
+      P(I,2)   = PY(JT)+PY(3)      
+      nporig(I)= Ipflag*2 + KINT
+      niorig(I)= iiflag
+      I1 = I+1
+      nporig(I1)= Ipflag*2 + KINT
+      niorig(I1)= iiflag
+      P(I1,1) = PX(JR)-PX(3)      
+      P(I1,2) = PY(JR)-PY(3)      
+      XM1 = P(I,5)**2+P(I,1)**2+P(I,2)**2
+      XM2 = P(I1,5)**2+P(I1,1)**2+P(I1,2)**2
+      IF (dSQRT(XM1)+dSQRT(XM2) .GT. dSQRT(WREM2)) GOTO 200
+      if (ptot(4).le.0.D0) goto 200
+      PT2 = (P(I,1)+P(I1,1))**2+(P(I,2)+P(I1,2))**2
+      WREMPT = dsqrt(WREM2+PT2)
+      EA1 = (WREM2+XM1-XM2+PT2)/(2.D0*WREMPT)
+      PA2 = (EA1**2-XM1)
+      if (PA2.ge.0.D0) then
+        PA = dSQRT(PA2)
+      else
+         goto 200
+      endif
+      BA = PTOT(3)/PTOT(4)
+      GA = PTOT(4)/WREMPT
+      SGN = DBLE(3-2*JT)
+      P(I,3) = GA*(BA*EA1+SGN*PA)
+      P(I,4) = GA*(EA1+BA*SGN*PA)
+      P(I+1,3) = PTOT(3)-P(I,3)
+      P(I+1,4) = PTOT(4)-P(I,4)
+      ZLIST(I) = 0.D0
+      ZLIST(I+1) = 0.D0
+      N0 = I-NP-1
+      ENDDO                  ! loop on two `remaining strings'
+
+      NP = I+1
+c      PAR(24) = PAR24def 
+      IF(Ndebug.gt.3) then
+        WRITE(LUN,*)' GG_FRAG_4FLV: NP after fragmentation:',NP
+      ENDIF
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE DIFDEC (L0, Irec, IBAD, P0)
+
+C-----------------------------------------------------------------------
+C..."decay" of an excited state with the quantum numbers
+C.   of particle L0 and the 5-momentum P0
+C.   - low energy: phase space decay (fire ball model)
+C.   - intermediate energy: one-string decay (longitudinal phase space)
+C.   - high energy: pomeron-hadron scattering (multi-string model) 
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+
+c     external types
+      INTEGER L0, Irec, IBAD
+      DOUBLE PRECISION P0
+      DIMENSION P0(5)
+      
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+
+      INTEGER NFORIG,NPORIG,NIORIG,IPFLAG,IIFLAG,KINT
+      COMMON /S_PARTO/ NFORIG(NP_max),NPORIG(NP_max),NIORIG(NP_max),
+     &IPFLAG,IIFLAG,KINT
+
+      INTEGER LRNK
+      COMMON /SIB_RNK/ LRNK(8000)
+
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+
+      INTEGER IISO,ISPN
+      COMMON /S_SPN/ IISO(99), ISPN(99)
+
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+c     internal types
+      INTEGER LL,LCON,LRES,LRES1,NTRYS,NRJECT,LA,N1,IREJ,I,J,IFLA,
+     &     IFL1,IFL2,IFBAD,NPI,IRES,LA1,JQQ,JQTOT,K,JQR,
+     &     KB_0,IAT_0
+      DOUBLE PRECISION PD,BE,EMIN,EMIN2,PCHEX,PRES,DELTAE,
+     &     SQS_0,S_0,PTmin_0,XMIN_0,ZMIN_0,
+     &     PAR1_def,PAR24_def,PAR53_def,GA,BEP,S_RNDM,AV,GASDEV,PCXG,
+     &     XI1,XI2,XSMR         !,FERMI
+      DIMENSION LL(10), PD(10,5), BE(3), LCON(6:99),LRES1(6:99)
+      DIMENSION LRES(6:99)
+      SAVE
+      EXTERNAL GASDEV
+      DATA (LRES(k),k=6,22)  /27,25,26,28,29,0,0,51,52,6*0,30,31/
+      DATA (LRES(k),k=23,33) /23,24,25,26,27,28,29,30,31,27,27/
+      DATA (LRES(k),k=34,49) /34,35,36,37,38,39,40,41,42,43,34,35,36,
+     &     37,38,49/
+      DATA (LRES(k),k=50,83) /0,51,52,53,54,4*0,78,79,10*0,80,81,73,
+     &     74,75,76,77,78,79,80,81,0,83/
+      DATA (LRES(k),k=84,99) /94,95,96,97,98,89,4*0,94,95,96,97,98,99/
+      
+      DATA EMIN /0.7D0/
+      DATA EMIN2 /10.D0/
+      DATA LCON /7,6,6,11,11,9,9,14,13,19*0,35,34,35,38,37,39,
+     &     19*0,71,72,10*0,59,60,73,10*0,85,86,85,88,87,89,10*0/
+      DATA LRES1 /27,25,26,11,11,9,9,14,13,19*0,35,34,35,38,37,39,
+     &     19*0,78,79,10*0,80,81,83,10*0,94,95,96,97,98,89,10*0/      
+      DATA PCHEX /0.33D0/            ! probability of charge exchange
+      DATA PRES /0.7D0/         ! probability of forming a resonance
+      DATA NRJECT /0/
+
+      IF(NDEBUG.gt.2)
+     &     WRITE(LUN,'(2X,A,1x,I2,1x,I2,/,5(2x,F10.3))')
+     &     'DIFDEC: (L0,Irec,P0):',L0,Irec,(P0(i),i=1,5)
+      
+      
+      NTRYS = 0
+
+      LA = IABS(L0)
+      DELTAE = P0(5) - AM(LA)
+      IF(IBAR(LA).ne.0.or.IPAR(65).eq.0)THEN
+c     baryons
+         EMIN = PAR(30)
+      ELSE
+c     mesons
+         EMIN = PAR(112)
+      ENDIF
+c      IBAD = 0
+      PAR1_def= PAR(1)
+      if(Irec.gt.0) PAR(1)= PAR(16)
+c      XSMR = 0.5D0
+c     XI2=FERMI(DELTAE,EMIN2,XSMR)
+c     XI1=FERMI(DELTAE,EMIN,XSMR)
+      XSMR=PAR(131)*EMIN
+      XI1=MAX((EMIN-DELTAE)/XSMR,0.D0)      
+      XSMR=PAR(131)*EMIN2
+      XI2=MAX((EMIN2-DELTAE)/XSMR,0.D0)
+      if(Ndebug.gt.2) 
+     &     WRITE(LUN,'(1x,A29,2(2x,F5.2),2(2x,F8.3))')
+     &     '  DIFDEC: EMIN1,EMIN2,XI1,XI2',
+     &     EMIN,EMIN2,Xi1,Xi2
+      
+C...  pomeron-hadron scattering (pi0 is used instead of pomeron)      
+      IF ((IPAR(10).gt.0).and.(Irec.gt.0).and.
+     &     (DELTAE.gt.EMIN2.or.S_RNDM(LA).gt.XI2))  THEN
+         if(Ndebug.gt.2) 
+     &        WRITE(LUN,*)' DIFDEC: central (L0,DELTAE,NP,XI):',
+     &        L0,DELTAE,NP,XI2
+         N1 = NP+1
+         if(irec.gt.0.and.IPAR(5).eq.1) par(1)= par(15)
+ 50      CONTINUE
+         IPFLAG= IPFLAG*100
+c     create subevent
+         SQS_0   = SQS
+         S_0     = S
+         PTmin_0 = PTmin 
+         XMIN_0  = XMIN
+         ZMIN_0  = ZMIN
+         KB_0    = KB
+         IAT_0   = IAT
+         CALL INI_EVENT(P0(5),L0,6,0)
+c     create L0 - pi0 interaction, pi0(pid=6) target
+         CALL SIB_NDIFF(L0, 1, P0(5), 0, IREJ) ! ori
+c     restore main event
+         SQS   = SQS_0
+         S     = S_0
+         PTmin = PTmin_0         
+         XMIN  = XMIN_0
+         ZMIN  = ZMIN_0
+         KB    = KB_0
+         IAT   = IAT_0
+         IF(IREJ.NE.0) THEN
+            NP = N1-1
+            GOTO 50
+         ENDIF
+         PAR(1) = PAR1_def
+         DO J=1,3
+            BE(J)=P0(J)/P0(4)
+         ENDDO
+         GA=P0(4)/P0(5)
+         if(P0(3).lt.0.D0) then
+           do i=N1,NP
+             P(I,3) = -P(I,3)
+           enddo
+         endif
+         DO I=N1,NP
+            BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
+            DO J=1,3
+               P(I,J)=P(I,J)+GA*(GA*BEP/(1.D0+GA)+P(I,4))*BE(J)
+            ENDDO
+            P(I,4)=GA*(P(I,4)+BEP)
+         ENDDO
+
+C..."string-like" decay
+      ELSE IF (DELTAE .GT. EMIN .or. S_RNDM(LA).gt.XI1)  THEN          
+         IF(NDEBUG.gt.2) 
+     &        WRITE(LUN,'(2X,A,3(2x,F8.3))')
+     &        'DIFDEC: string-like, (DELTAE,E0,central prob.):',
+     &        DELTAE,P0(5),1.D0-XI2
+c     set charge exchange probability, i.e. prob for p* -> n + pip
+         PAR53_def = PAR(53)
+         PAR(53) = PAR(130)
+         N1 = NP+1
+         CALL HSPLI(L0,IFL1,IFL2)
+         PAR(53) = PAR53_def
+         IF (P0(3) .GT. 0.D0.and.L0.gt.0)  THEN
+            IFLA = IFL2
+            IFL2 = IFL1
+            IFL1 = IFLA
+         ENDIF
+c     randomize flavor orientation in string
+         IF(IPAR(25).eq.1.and.S_RNDM(L0).gt.PAR(39))THEN
+            IFLA = IFL2
+            IFL2 = IFL1
+            IFL1 = IFLA
+         ENDIF
+         PAR24_def = PAR(24)
+         IF(IPAR(15).eq.2.and.IPAR(15).eq.3.and.IPAR(15).ne.7.and.
+     &        IPAR(15).lt.12)THEN
+         PAR(24) = PAR(25)*dEXP(-PAR(26)/P0(5))
+         ELSEIF(IPAR(15).eq.7)THEN
+            PAR(24) = PAR(25)
+         ENDIF
+ 10      CONTINUE
+         IPFLAG = IPFLAG*10
+         CALL STRING_FRAG_4FLV 
+     +        (P0(5), IFL1, IFL2, 0.D0,0.D0,0.D0,0.D0,IFBAD,-1)
+         IF (IFBAD .EQ. 1)then
+            if(ndebug.gt.1)
+     &           WRITE(lun,*)' SIB_DIFF: string-frag rejection! ',
+     &           '(M,NCALL)',P0(5),NCALL
+            NTRYS = NTRYS + 1
+            NP = N1-1
+            IFBAD = 0
+            IF(NTRYS.gt.5)then ! resample diff. mass              
+               NP = 0
+               IBAD = 1
+               PAR(24) = PAR24_def
+               RETURN
+            endif
+            GOTO 10
+         ENDIF
+         DO J=1,3
+            BE(J)=P0(J)/P0(4)
+         ENDDO
+         GA=P0(4)/P0(5)
+         DO I=N1,NP
+            BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
+            DO J=1,3
+               P(I,J)=P(I,J)+GA*(GA*BEP/(1.D0+GA)+P(I,4))*BE(J)
+            ENDDO
+            P(I,4)=GA*(P(I,4)+BEP)
+         ENDDO
+         PAR(24) = PAR24_def
+
+C...Phase space decay of the excited state
+      ELSEIF(DELTAE.GT.AM(7)+0.02D0)THEN
+         if(Ndebug.gt.2) 
+     &        WRITE(LUN,*)' DIFDEC: fireball, (DELTAE,string prob.):',
+     &        DELTAE,1.D0-XI1
+         IF(IPAR(14).GT.0.and.IPAR(14).NE.7)THEN
+            IF(IPAR(14).eq.5) PCHEX = 0.D0
+            NPI=0
+            IRES = 0
+            IF (S_RNDM(0).LT.PRES) THEN
+               IF (LA.LT.9) THEN
+c     if kinematically possible produce rho0 in charge exchange
+                  LL(1) = LRES(LA)
+                  DELTAE = P0(5) -  AM(LRES(LA))
+                  IF (DELTAE.GT.AM(7)+0.02D0) GOTO 100
+               ENDIF
+            ENDIF
+c     switch charge exchange on/off
+            IF( S_RNDM(1).LT.PCHEX)THEN
+               LL(1) = LCON(LA)*ISIGN(1,L0)
+               IF( (L0 .EQ. 6) .OR. (L0 .EQ. 11) )
+     .              LL(1) = LL(1)+INT((2.D0-EPS8)*S_RNDM(2))
+            ELSE
+               LL(1) = L0
+            ENDIF
+            
+            DELTAE = P0(5) - AM(LA)
+ 100        AV = 2.D0*dSQRT(DELTAE)
+            LA1 = IABS(LL(1))
+            NPI = INT(AV*(2.D0+0.5D0*GASDEV(LA)))
+            IF (IPAR(14).EQ.6)THEN
+               IF(NPI.LT.1.OR.NPI.GT.9.OR.AM(LA1)+NPI*AM(7)+0.02D0
+     .              .GT.P0(5))  GOTO 100
+            ELSE
+               IF(NPI.LT.0.OR.NPI.GT.9.OR.AM(LA1)+NPI*AM(7)+0.02D0
+     .              .GT.P0(5))  GOTO 100
+            ENDIF
+c     create resonances inside fireball..
+            IF(IPAR(14).ge.2
+     +           .and.DELTAE.GE.AM(LA1)+AM(27)+(NPI-1)*AM(7)+0.02D0)
+     +           IRES = 1
+            IF(IPAR(14).ge.3.and.DELTAE.GE.AM(LA1)+NPI*AM(27)+0.02D0) 
+     +           IRES=3
+            JQQ = ICHP(LA)*ISIGN(1,L0)-
+     .           ICHP(IABS(LL(1)))*ISIGN(1,LL(1))  
+ 120        JQTOT = 0
+            DO K=2,NPI
+               LL(K) = 6+INT(S_RNDM(K)*(3.D0-EPS8))
+c     suppress pi0 in fireball
+               IF(IPAR(14).ge.4)
+     +              LL(K) = 7+INT(S_RNDM(0)*(2.D0-EPS8))
+c     IF(IRES.EQ.1.and.S_RNDM(LA).LT.0.5D0)
+               IF(IRES.EQ.1) THEN
+                  LL(K) = 27-INT(S_RNDM(1)*(3.D0-EPS8))
+                  IRES = 2
+               ENDIF
+               IF(IRES.EQ.3)
+     +              LL(K) = 27-INT(S_RNDM(2)*(3.D0-EPS8))
+               JQTOT = JQTOT + ICHP(LL(K))
+            ENDDO
+            JQR = JQQ-JQTOT
+            IF (JQR.LT.-1.OR.JQR.GT.1)  GOTO 120
+            LL(NPI+1) = 6+JQR
+            IF (LL(NPI+1) .EQ. 5)  LL(NPI+1)=8
+            CALL DECPAR (0,P0,NPI+1,LL, PD)
+            DO J=1,NPI+1
+               NP = NP+1
+               LLIST(NP) = LL(J)
+               nporig(NP)= Ipflag*2
+               lrnk(Np) = 0
+               niorig(NP)= iiflag
+               DO K=1,5
+                  P(NP,K) = PD(J,K)
+               ENDDO
+            ENDDO
+
+         ELSEIF (IPAR(14).EQ.7.AND.LA.LT.9) THEN
+c     all diff states go to resonances for pi beam ..
+            NPI=0
+            IRES = 0
+            LL(1) = LRES1(LA)
+            DELTAE = P0(5) -  AM(LL(1))
+cdh         IF( DELTAE.LT.AM(7)+0.02D0) GOTO 222
+            IF( DELTAE.LT.AM(7)+0.02D0) THEN
+              IF(IPAR(14).EQ.7)  DELTAE = P0(5) - AM(LA)
+              AV = 2.D0*DSQRT(DELTAE)
+ 201          NPI = INT(AV*(1.D0+0.5D0*GASDEV(LA)))
+c              print *,'npi:',npi,'av',av,'p05',p0(5),am(la),deltae
+              IF(NPI.LE.0.OR.NPI.GT.9.OR.AM(LA)+NPI*AM(7)+0.02D0
+     .             .GT.P0(5))  GOTO 201
+              IF (S_RNDM(0).LT.PCHEX)  THEN
+                 LL(NPI+1) = LCON(LA)*ISIGN(1,L0)
+                 IF( (L0 .EQ. 6) .OR. (L0 .EQ. 11) )
+     .                LL(NPI+1) = LL(NPI+1)+INT((2.D0-EPS8)*S_RNDM(1))
+              ELSE
+                 LL(NPI+1) = L0
+              ENDIF
+              JQQ = ICHP(LA)*ISIGN(1,L0)-
+     .             ICHP(IABS(LL(NPI+1)))*ISIGN(1,LL(NPI+1))
+ 221          JQTOT = 0
+              DO K=1,NPI-1
+                 LL(K) = 6+INT(S_RNDM(K)*(3.D0-EPS8))
+                 JQTOT = JQTOT + ICHP(LL(K))
+              ENDDO
+              JQR = JQQ-JQTOT
+              IF (JQR.LT.-1.OR.JQR.GT.1)  GOTO 221
+              LL(NPI) = 6+JQR
+              IF (LL(NPI) .EQ. 5)  LL(NPI)=8
+              CALL DECPAR (0,P0,NPI+1,LL, PD)
+              DO J=1,NPI+1
+                 NP = NP+1
+                 LLIST(NP) = LL(J)
+                 NPORIG(NP) = IPFLAG*2
+                 lrnk(Np) = 0
+                 niorig(NP)= iiflag
+                 DO K=1,5
+                    P(NP,K) = PD(J,K)
+                 ENDDO
+              ENDDO
+
+            ELSE
+              IF( S_RNDM(0).LT.PAR(31))THEN
+                 LL(1) = LRES1(LCON(LA))
+                 IF( (L0 .EQ. 6) .OR. (L0 .EQ. 11) )
+     .                LL(1) = LRES1(IABS(L0)+INT((2.D0-EPS8)*S_RNDM(1)))
+              ENDIF
+ 300          AV = 2.D0*dSQRT(DELTAE)
+              LA1 = IABS(LL(1))
+              NPI = INT(AV*(2.D0+0.5D0*GASDEV(LA)))
+              IF(ABS(PAR(32)).gt.0.D0)
+     &             NPI = INT(AV*(PAR(32)+0.5D0*GASDEV(LA)))
+              IF(NPI.LT.0.OR.NPI.GT.9.OR.AM(LA1)+NPI*AM(7)+0.02D0
+     .             .GT.P0(5))  GOTO 300
+c     create resonances inside fireball..
+c              IRES=3
+              JQQ = ICHP(LA)*ISIGN(1,L0)-
+     .             ICHP(IABS(LL(1)))*ISIGN(1,LL(1))
+ 320          JQTOT = 0
+              DO K=2,NPI
+                 LL(K) = 6+INT(S_RNDM(K)*(3.D0-EPS8))
+c     suppress pi0 in fireball
+c                 IF(IPAR(14).ge.4)
+c     +                LL(K) = 7+INT(S_RNDM(0)*1.99999D0)
+c       IF(IRES.EQ.1.and.S_RNDM(LA).LT.0.5D0)
+c                 LL(K) = 27-INT(S_RNDM(0)*2.99999D0)
+                 JQTOT = JQTOT + ICHP(LL(K))
+              ENDDO
+              JQR = JQQ-JQTOT
+              IF (JQR.LT.-1.OR.JQR.GT.1)  GOTO 320
+              LL(NPI+1) = 6+JQR
+              IF (LL(NPI+1) .EQ. 5)  LL(NPI+1)=8
+              CALL DECPAR (0,P0,NPI+1,LL, PD)
+              DO J=1,NPI+1
+                 NP = NP+1
+                 LLIST(NP) = LL(J)
+                 nporig(NP)= Ipflag*2
+                 lrnk(Np) = 0
+                 niorig(NP)= iiflag
+                 DO K=1,5
+                    P(NP,K) = PD(J,K)
+                 ENDDO
+              ENDDO
+            ENDIF
+
+         ELSEIF (IPAR(14).LE.-1) THEN
+C...  generalized fireball model
+            IF(Ndebug.gt.2) 
+     &           WRITE(LUN,*)' DIFDEC: using generalized fireball!'
+c     set charge exchange probability, 
+c     i.e. prob for p* -> n + pip
+            PCXG = PAR(61)
+            CALL FIREBALL_4FLV(L0,P0,PCXG,IFBAD)
+            IF(IFBAD.eq.1)THEN
+               IF(ndebug.gt.0)THEN
+                  IF(NRJECT.le.10)THEN
+                     WRITE(LUN,*)
+     &                    ' DIFDEC: warning: fireball rejection! ',
+     &                    'diff. mass to low to dissociate beam!'
+                     WRITE(LUN,*)
+     &                ' DIFDEC: m_Beam, DELTAE ,AM(7)+0.02, NCALL: ', 
+     &                AM(LA),DELTAE,'>',AM(7)+0.02D0,NCALL
+                  ENDIF
+                  IF(NRJECT.eq.10) 
+     &             write(lun,*)' this was the last warning.. good luck!'
+               ENDIF
+               NRJECT = NRJECT + 1
+               NP = 0
+               IBAD = 1
+               RETURN
+            ENDIF
+
+         ELSE
+cdh 222       IF(IPAR(14).EQ.7)  DELTAE = P0(5) - AM(LA)
+           IF(IPAR(14).EQ.7)  DELTAE = P0(5) - AM(LA)
+            AV = 2.D0*dSQRT(DELTAE)
+ 200        NPI = INT(AV*(1.D0+0.5D0*GASDEV(0)))
+c            print *,'npi:',npi,'av',av,'p05',p0(5),am(la),deltae
+            IF(NPI.LE.0.OR.NPI.GT.9.OR.AM(LA)+NPI*AM(7)+0.02D0
+     .           .GT.P0(5))  GOTO 200
+            IF (S_RNDM(0).LT.PCHEX)  THEN
+               LL(NPI+1) = LCON(LA)*ISIGN(1,L0)
+               IF( (L0 .EQ. 6) .OR. (L0 .EQ. 11) )
+     .              LL(NPI+1) = LL(NPI+1)+INT((2.D0-EPS8)*S_RNDM(1))
+            ELSE
+               LL(NPI+1) = L0
+            ENDIF
+            JQQ = ICHP(LA)*ISIGN(1,L0)-
+     .           ICHP(IABS(LL(NPI+1)))*ISIGN(1,LL(NPI+1))  
+ 220        JQTOT = 0
+            DO K=1,NPI-1
+               LL(K) = 6+INT(S_RNDM(K)*(3.D0-EPS8))
+               JQTOT = JQTOT + ICHP(LL(K))
+            ENDDO
+            JQR = JQQ-JQTOT
+            IF (JQR.LT.-1.OR.JQR.GT.1)  GOTO 220
+            LL(NPI) = 6+JQR
+            IF (LL(NPI) .EQ. 5)  LL(NPI)=8
+            CALL DECPAR (0,P0,NPI+1,LL, PD)
+            DO J=1,NPI+1
+               NP = NP+1
+               LLIST(NP) = LL(J)
+               NPORIG(NP) = IPFLAG*2
+               lrnk(Np) = 0
+               niorig(NP)= iiflag
+               DO K=1,5
+                  P(NP,K) = PD(J,K)
+               ENDDO
+            ENDDO
+         ENDIF
+      ELSE
+         if (ndebug .gt. 0) then
+           IF(NRJECT.le.10)THEN
+            WRITE(LUN,*) ' DIFDEC rejection! ',
+     &           'diff. mass to low to dissociate beam!'
+            WRITE(LUN,*) ' DIFDEC: LA, m_Beam, DELTAE, NCALL : ', 
+     &           LA, AM(LA),DELTAE,'>',AM(7)+0.02D0,NCALL
+            IF(Irec.ne.1) 
+     &           WRITE(LUN,*) '   was recursive call! (ECM):',P0(5)
+           ENDIF
+           IF(NRJECT.eq.10) 
+     &        write(lun,*)' this was the last warning.. good luck!'
+         endif
+         NRJECT = NRJECT + 1            
+         NP = 0
+         IBAD = 1
+         RETURN
+      ENDIF
+      PAR(1) = PAR1_def
+      END
+C=======================================================================
+
+      SUBROUTINE EXCT_RMNT(JW,KRMNT,IREJ)
+
+C-----------------------------------------------------------------------
+C     routine to produce massive excitations of beam and/or target \FR'14
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTMIN,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+
+      INTEGER IBMRDX,ITGRDX,IHMJDX,ISMJDX,ICSTDX,IINTDX
+      COMMON /S_INDX/ IBMRDX(3),ITGRDX(NW_max,3),
+     &     IHMJDX(NW_max*NH_max),IINTDX(NW_max),
+     &     ISMJDX(NW_max*NS_max),ICSTDX(2*NW_max,3)
+
+      INTEGER IRMNT,KRB,KRT
+      DOUBLE PRECISION XRMASS,XRMEX
+      COMMON /S_RMNT/ XRMASS(2),XRMEX(2),IRMNT(NW_max),KRB,KRT(NW_max)
+
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+
+      INTEGER IISO,ISPN
+      COMMON /S_SPN/ IISO(99), ISPN(99)
+
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+C     parameters that represent: NW: max. number of wounded nucleons,
+C     NS,NH: max. number of soft and hard interactions
+c      PARAMETER (NW_max = 20)
+C     The COMMON block /S_CHIST/ contains information about the
+C     the structure of the  generated event:
+C     NWD   = number of wounded nucleons
+C     NJET = total number of hard interactions
+C     NSOF = total number of soft interactions
+C     NNSOF (1:NW) = number of soft pomeron cuts in each interaction
+C     NNJET (1:NW) = number of minijets produced in each interaction 
+C     JDIF(1:NW) = diffraction code 
+C                  0 : non-diff,
+C                  1 : beam-diff
+C                  2 : target-diff
+C                  3 : double-diff
+      INTEGER NNSOF,NNJET,JDIF,NWD,NJET,NSOF
+      COMMON /S_CHIST/ NNSOF(NW_max),NNJET(NW_max),
+     &     JDIF(NW_max),NWD,NJET,NSOF
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      INTEGER ITRY, NREJ
+      COMMON /S_CNT/ ITRY(20), NREJ(20)
+      DOUBLE PRECISION XM2MIN,ALXMIN,SLOP0,ASLOP,BSLOP,XMASS
+      COMMON /S_DIFMAss/ XM2MIN(6),ALXMIN(6),SLOP0,ASLOP,BSLOP,XMASS(2)
+
+      DOUBLE PRECISION P1(5),P2(5),P1N(5),P2N(5),PBM1(5),PBM2(5),PBM(5),
+     &     PTG1(5),PTG2(5),PTG(5),PTT(5),GABE(4)
+      DOUBLE PRECISION XMB,XMB2,ALPHA,XMSQMIN,XM2MAX,XM2,SHAT,ECM,EE,EE2
+      DOUBLE PRECISION XMFRAC,XSFRAC,XMT,XMT2,XMT12,XMT22,P1TOT,P2TOT
+      DOUBLE PRECISION DELTAE,XMMIN,COD,COF,SID,SIF,ANORF,PX,PY,PZ
+      DOUBLE PRECISION XM1,ETOT,XI,XM2DIS,S_RNDM
+c     DOUBLE PRECISION XDUMMY
+
+      INTEGER   IMRG2HAD,LL(99)
+      INTEGER   IBM1,IBM2,IBMST1,IBMST2,ITG1,ITG2,ITGST1,ITGST2,ITGH
+      INTEGER   IDM,IFL,IBMH, IREF,I, II,K,J,JJ,L01,L02,NP0LD,NPLD
+      INTEGER   JW,IREJ,KRMNT,LREJ,IBD,ICST11,ICST21
+      INTEGER   IFLB1,IFLB2,IFLT1,IFLT2,L0,IDHAD,ISTH,IBMST,ITGST
+      INTEGER   IFL1,IFL2,IMRG,IMST,IMST1,IMRGBAR,ICST2,LBD
+      INTEGER   IMST11,IMST2,IMST21,ISTH1,ISTH2,IAFL1,IAFL2!,IMST22
+
+      SAVE
+      DATA LL /5*0,7*2,2*1,12*0,2,6*0,6*1,19*0,2,2,10*0,
+     &     2,2,0,2,2,11*0,1,1,1,9*0,1/     
+
+      
+c     default return point, beam and target sampling
+c      IREJ = 1
+
+      IF(NDEBUG.gt.2)
+     &     WRITE(LUN,*) ' EXCT_RMNT: input (JW,KRMNT,IREJ)', 
+     &     JW,KRMNT,IREJ
+
+      IF(NDEBUG.gt.3)THEN
+         write(LUN,*)'  beam remnant index: (lvl0,flv1,flv2)  ',IBMRDX
+         write(LUN,*)'  1st central string index: (lvl0,bm,tg)', 
+     &        (ICSTDX(2*(JW-1)+1,ii),ii=1,3)
+         write(LUN,*)'  2nd central string index: (lvl0,bm,tg)',
+     &        (ICSTDX(2*(JW-1)+2,ii),ii=1,3)
+         write(LUN,*)'  target remnant index: (lvl0,flv1,flv2)',
+     &        (ITGRDX(JW,ii),ii=1,3)
+      ENDIF
+
+      ITRY(5) = 0
+
+C...  select indices depending on configuration
+C     krmnt = 0 : no excitation on either side
+c           = 1 : beam side excited remnant
+c           = 2 : target side
+c           = 3 : both sides
+
+c     write remnant configuration to remnant common
+      IRMNT(JW) = KRMNT
+      IF(KRMNT.eq.1)THEN
+c     beam side remnant only
+c     proto-remnant position: IBMRDX(1)
+c     partons in : IBMRDX(2:3)
+         IBM1 = IBMRDX(2)
+         IBM2 = IBMRDX(3)
+c     target side to transfer energy from: 
+c     (sofar always choose valence pair)
+         ITG1 = ICSTDX(2*(JW-1)+1,3)
+         ITG2 = ICSTDX(2*(JW-1)+2,3)
+c     beam-side partons to go into central strings
+         IBMST1 = ICSTDX(2*(JW-1)+1,2)
+         IBMST2 = ICSTDX(2*(JW-1)+2,2)
+c     target-side partons to go into central strings
+         ITGST1 = ITG1
+         ITGST2 = ITG2
+
+      ELSEIF(KRMNT.eq.2)THEN
+c     target side remnant only
+c     proto-remnant in ITGRDX(JW,1)
+         ITG1 = ITGRDX(JW,2)
+         ITG2 = ITGRDX(JW,3)
+c     transfer energy from beam remnant or 
+c     central strings with valence quarks
+c     in ICSTDX(JW+0:1,2)
+c     means no beam remnant --> get from valence strings
+         IBM1 = ICSTDX(2*(JW-1)+1,2)
+         IBM2 = ICSTDX(2*(JW-1)+2,2)
+c     beam-side partons to go into central strings
+         IBMST1 = IBM1
+         IBMST2 = IBM2
+c     target-side partons to go into central strings
+         ITGST1 = ICSTDX(2*(JW-1)+1,3)
+         ITGST2 = ICSTDX(2*(JW-1)+2,3)
+
+      ELSEIF(KRMNT.eq.3)THEN
+c     beam and target side remnant
+c     transfer energy from pairs in rmnt or central strings
+c     listed in I?RDX and ICSTDX()
+         IBM1 = IBMRDX(2)
+         IBM2 = IBMRDX(3)
+         ITG1 = ITGRDX(JW,2)
+         ITG2 = ITGRDX(JW,3)
+
+      ELSEIF(KRMNT.eq.0)THEN
+c     no excited remnant case, jump straight to central strings..
+         GOTO 100
+
+      ENDIF
+
+      IF(NDEBUG.gt.3)then
+         write(lun,*) '  beam parton1:  ',IBM1
+         write(lun,*) '  beam parton2:  ',IBM2
+         write(lun,*) '  target parton1:',ITG1
+         write(lun,*) '  target parton2:',ITG2
+      endif
+
+c     save status of parton stack
+      CALL GET_NPP(NPLD,NP0LD)
+
+ 10   ITRY(5) = ITRY(5) + 1
+      IF(ITRY(5).GT.NREJ(5))THEN
+         IF(NDEBUG.gt.2) 
+     &        WRITE(LUN,*) ' EXCT_RMNT: no. of trials exceeded, ',
+     &        NREJ(5), 'resample minijets ...' , IREJ
+         RETURN
+      ENDIF
+c     reset parton stack after rmnt mass rejection
+      CALL INI_PRTN_STCK(NPLD,NP0LD)
+
+C..   construct 4momenta of proto-remnants
+c     index of beam remnant on stack: IBMRDX(1)
+
+C..   center-of-mass energy of parton system (s hat)
+c     calculated in hadron-hadron frame
+c     for first interaction (jw=1) partons are massless and collinear (sum pt=0)
+c     in this case ecm = SQS*SQRT(XB*XT), xb,t=x1+x2 
+c      for jw>1 beam partons may have already acquired mass and additional pt
+c     therefore ecm = sqs*sqrt(xb*xt) + corr.
+c     IRDX: index of remnant on parton stack
+c      SHAT = S*XB*XT+XM2+(XT/XB)*XMT2
+
+c     with 4momenta of partons on stack, momentum fractions are obsolete
+c     center-of-mass energy is simply: shat = (pbm+ptg)**2
+
+c     construct total 4momentum
+c     add beam-side parton momenta, in had.-had. frame
+      CALL RD_PRTN_4VEC(IBM1,PBM1,IFL,IDM)
+      CALL RD_PRTN_4VEC(IBM2,PBM2,IFL,IBMH)
+      CALL ADD_4VECS(PBM1,PBM2,PBM)
+      
+c     target-side parton momenta, in had.-had. frame
+      CALL RD_PRTN_4VEC(ITG1,PTG1,IFL,IDM)
+      CALL RD_PRTN_4VEC(ITG2,PTG2,IFL,IDM)
+      CALL ADD_4VECS(PTG1,PTG2,PTG)
+      
+c     add beam and target side to get total 4momentum
+      CALL ADD_4VECS(PBM,PTG,PTT)
+      SHAT = PTT(5)**2
+      ECM = PTT(5)
+c     catch virtual remnants
+      IF(PTT(5).LT.0.D0) THEN
+         IF(NDEBUG.GT.2)THEN
+            WRITE(LUN,*) ' EXCT_RMNT: too little mass left (Shat):',
+     &           SHAT
+            WRITE(LUN,*) '        resample minijets...'
+         ENDIF
+         LREJ = 2
+         RETURN                 ! resample minijets
+      ENDIF
+
+
+      IF(NDEBUG.GT.2) WRITE(LUN,*) ' EXCT_RMNT: try no.',ITRY(5)
+      IF(NDEBUG.GT.3)THEN
+         write(LUN,*) '  4momenta before scattering:'
+         write(LUN,*) '  PBM1:' , (PBM1(jj),jj=1,5)
+         write(LUN,*) '  PBM2:' , (PBM2(jj),jj=1,5)
+         write(LUN,*) '  PBM:' , (PBM(jj),jj=1,5)
+
+         write(LUN,*) '  PTG1:' , (PTG1(jj),jj=1,5)
+         write(LUN,*) '  PTG2:' , (PTG2(jj),jj=1,5)
+         write(LUN,*) '  PTG:' , (PTG(jj),jj=1,5)
+
+         write(LUN,*) '  PTT:' , (PTT(jj),jj=1,5)
+      ENDIF
+
+      IF(NDEBUG.gt.2)
+     &     WRITE(LUN,*)' EXCT_RMNT: SHAT:',SHAT
+
+      XMFRAC = PAR(81)
+      XSFRAC = PAR(82)
+
+c     exponent of remnant mass distribution (1/Mx**2)**alpha
+c     by default: alpha = 1
+c     different for baryons and mesons
+c      ALPHA = PAR(98)
+
+C..   Sample masses
+      IF(KRMNT.eq.1)THEN
+         XM2MAX = MIN(XSFRAC*S,XMFRAC*AM2(IABS(KB)))
+         XM2MAX = MAX(XM2MAX,1.D0)
+
+c     mass of target-side: 0
+         XMT = 0.D0
+         XMT2 = 0.D0
+c     get remnant mass
+c     (might have received mass from prior interaction)
+         CALL GET_MASS2(IBMRDX(1),XM2)
+c     allowing excitation to fallback to beam means min.
+c     mass is beam mass, or more exact smallest mass of hadrons 
+c     with flavors in remnant
+         IF(IPAR(64).eq.1)THEN
+c     remnant mass can also decrease through interactions
+            XMSQMIN = AM2(IABS(KB))
+         ELSE
+c     remnant mass only increased by multiple interactions..
+            XMSQMIN = MAX(AM2(IABS(KB)),XM2)
+         ENDIF
+C     select exponent from COMMON
+         ALPHA = XRMEX(LL(IABS(KB)))
+c     sample beam mass
+         XMB2 = XM2DIS(XMSQMIN,XM2MAX,ALPHA)
+         IF(NDEBUG.gt.2)
+     &        WRITE(LUN,*)' EXCT_RMNT: XM2min,XM2max,ALPHA,XM2:',
+     &        XMSQMIN,XM2MAX,ALPHA,XMB2
+c     check if resonance or massive hadron has to be formed
+         CALL SEL_RES(XMB2,KRB,IBMRDX(1),IBMH)
+         XMB = dsqrt(XMB2)
+
+      ELSEIF(KRMNT.eq.2)THEN
+c     target side mass
+         XM2MAX = MIN(XSFRAC*S,XMFRAC*AM2(IABS(KT(JW))))
+         XM2MAX = MAX(XM2MAX,1.D0)
+
+         XMB = 0.D0
+         XMB2 = 0.D0
+         XMSQMIN = AM2(KT(JW))
+C     select exponent from COMMON
+         ALPHA = XRMEX(LL(IABS(KT(JW))))
+         XMT2 = XM2DIS(XMSQMIN,XM2MAX,ALPHA)
+         IF(NDEBUG.gt.2)
+     &        WRITE(LUN,*)' EXCT_RMNT: XM2min,XM2max,ALPHA,XM2:',
+     &        XMSQMIN,XM2MAX,ALPHA,XMT2
+
+c     check if resonance or massive hadron has to be formed
+         CALL SEL_RES(XMT2,KRT(JW),ITGRDX(JW,1),ITGH)
+         XMT = dsqrt(XMT2)
+
+      ELSEIF(KRMNT.eq.3)THEN
+         XM2MAX = MIN(XSFRAC*S,XMFRAC*AM2(IABS(KB)))
+         XM2MAX = MAX(XM2MAX,1.D0)
+
+         CALL GET_MASS2(IBMRDX(1),XM2)
+         IF(IPAR(64).eq.1)THEN
+c     remnant mass can also decrease through interactions
+            XMSQMIN = AM2(IABS(KB))
+         ELSE
+c     remnant mass only increased by multiple interactions..
+            XMSQMIN = MAX(AM2(IABS(KB)),XM2)
+         ENDIF
+C     select exponent from COMMON
+         ALPHA = XRMEX(LL(IABS(KB)))        
+         XMB2 = XM2DIS(XMSQMIN,XM2MAX,ALPHA)
+         IF(NDEBUG.gt.2)
+     &        WRITE(LUN,*)' EXCT_RMNT: XM2min,XM2max,ALPHA,xm2:',
+     &        XMSQMIN,XM2MAX,ALPHA,XMB2
+
+c     check if resonance or massive hadron has to be formed
+         CALL SEL_RES(XMB2,KRB,IBMRDX(1),IBMH)
+         XMB = SQRT(XMB2)
+         
+c     target always nucleon
+         XM2MAX = MIN(XSFRAC*S,XMFRAC*AM2(IABS(KT(JW))))
+         XM2MAX = MAX(XM2MAX,1.D0)
+
+         XMSQMIN = AM2(IABS(KT(JW)))
+C     select exponent from COMMON
+         ALPHA = XRMEX(LL(IABS(KT(JW))))        
+         XMT2 = XM2DIS(XMSQMIN,XM2MAX,ALPHA)
+         IF(NDEBUG.gt.2)
+     &        WRITE(LUN,*)' EXCT_RMNT: XM2min,XM2max,alpha,XM2:',
+     &        XMSQMIN,XM2MAX,ALPHA,XMT2
+
+c     check if resonance or massive hadron has to be formed
+         CALL SEL_RES(XMT2,KRT(JW),ITGRDX(JW,1),ITGH)
+         XMT = SQRT(XMT2)
+
+      ENDIF
+c     write excitation mass to output common
+      XRMASS(1) = XMB
+      XRMASS(2) = XMT
+
+c     minimal mass requirement
+c      IF(SHAT.lt.XMB2+XMT2+0.3) GOTO 10
+      IF(SHAT.lt.XMB2+XMT2+2.D0*XMB*XMT+0.3D0) GOTO 10
+
+C     transfer cm energy to mass of particle in parton-parton cm
+      CALL TRANSFONSHELL(ECM,XMB,XMT,XM2MAX,1,P1,P2,IBD)
+      IF(IBD.eq.1) THEN
+         IF(NDEBUG.gt.2) WRITE(LUN,*) ' EXCT_RMNT: excitation rejected!'
+         RETURN
+      ENDIF
+
+C...  Boost 4momenta to hadron-hadron center-of-mass
+c     along z only if initial partons do not carry transverse momentum
+c     (cancels between val1 and val2)
+c     with multiple nucleons interacting beam val partons can aquire 
+c     transverse momentum from the target. in this case need arbitrary boost
+      DO K = 1,4
+         GABE(k) = PTT(k)/PTT(5)
+      ENDDO
+      CALL SIB_ALTRA(GABE(4), GABE(1), GABE(2), GABE(3),
+     &     P1(1),P1(2),P1(3),P1(4),
+     &     P1TOT,P1N(1),P1N(2),P1N(3),P1N(4))
+      P1N(5)=P1(5)
+      CALL SIB_ALTRA(GABE(4), GABE(1), GABE(2), GABE(3),
+     &     P2(1),P2(2),P2(3),P2(4),
+     &     P2TOT,P2N(1),P2N(2),P2N(3),P2N(4))
+      P2N(5)=P2(5)
+
+C...  Calculate new 4momentum of partons in had.-had. frame
+c     P1,P2: momenta after scattering in parton-parton cm.
+c     P1n,P2n: momenta after scattering in had.-had. cm
+c     PBM1,2: momenta of beam partons in had.-had. before scattering
+c     PTG1,2: momenta of target partons in had.-had. before scattering
+c     PBM: combined momentum of all beam partons before scattering
+c     PTG: combined momentum of all target partons before scattering
+
+c     energy and z component
+      DO II=3,4
+         PBM1(II) = PBM1(II)*P1n(II)/PBM(II)
+         PBM2(II) = PBM2(II)*P1n(II)/PBM(II)
+
+         PTG1(II) = PTG1(II)*abs(P2N(II)/PTG(II))
+         PTG2(ii) = PTG2(ii)*abs(P2N(II)/PTG(II))
+      ENDDO
+
+c     if transverse momentum prior to interaction zero then
+c     assign transverse momentum of partons according to random fraction
+      IF(ABS(PBM(1)).LT.EPS10.or.ABS(PBM(2)).LT.EPS10)THEN
+         DO II = 1,2
+            XI = S_RNDM(II)
+            PBM1(II) = XI*P1N(Ii)
+            PBM2(II) = (1.D0-XI)*P1N(II)
+         ENDDO
+      ELSE
+         DO II=1,2
+            PBM1(II) = PBM1(II)*P1N(II)/PBM(II)
+            PBM2(II) = PBM2(II)*P1N(II)/PBM(II)
+         ENDDO         
+      ENDIF
+
+      IF(ABS(PTG(1)).LT.EPS10.or.ABS(PTG(2)).LT.EPS10)THEN
+         DO II=1,2
+            XI = S_RNDM(II)
+            PTG1(II) = XI*P2N(II)
+            PTG2(II) = (1.D0-XI)*P2N(II)
+         ENDDO
+      ELSE
+         DO II=1,2
+            PTG1(II) = PTG1(II)*P2N(II)/PTG(II)
+            PTG2(II) = PTG2(II)*P2N(II)/PTG(II)
+         ENDDO                  
+      ENDIF
+
+      IF(NDEBUG.GT.3)THEN
+         write(LUN,*) '  parton 4momenta after scattering:'
+         write(LUN,*) '   PBM1:' , (PBM1(jj),jj=1,5)
+         write(LUN,*) '   PBM2:' , (PBM2(jj),jj=1,5)
+         write(LUN,*) '   sum: ' , (PBM2(jj)+PBM1(jj),jj=1,5)
+         write(LUN,*) '   PTG1:' , (PTG1(jj),jj=1,5)
+         write(LUN,*) '   PTG2:' , (PTG2(jj),jj=1,5)
+         write(LUN,*) '   sum: ' , (PTG2(jj)+PTG1(jj),jj=1,5)
+      ENDIF
+      
+C...  change parton 4momenta on stack
+      CALL EDT_PRTN(IBM1,PBM1(1),PBM1(2),PBM1(3),PBM1(4),PBM1(5),IDM)
+      CALL EDT_PRTN(IBM2,PBM2(1),PBM2(2),PBM2(3),PBM2(4),PBM2(5),IDM)
+
+      CALL EDT_PRTN(ITG1,PTG1(1),PTG1(2),PTG1(3),PTG1(4),PTG1(5),IDM)
+      CALL EDT_PRTN(ITG2,PTG2(1),PTG2(2),PTG2(3),PTG2(4),PTG2(5),IDM)
+         
+C...  add remnants
+c     references are circular: 
+c     rmnt --> parton1 --> parton2 --> lvl2 rmnt (hadron) --> rmnt
+      IF(KRMNT.eq.1)THEN
+c     beam side remnant, add only if does not exist yet otherwise edit
+         IF(IBMRDX(1).eq.0)THEN
+            CALL ADD_PRTN
+     &           (P1N(1),P1N(2),P1N(3),P1N(4),P1N(5),2,0,IBM1,IBMRDX(1))
+         ELSE
+            CALL EDT_PRTN
+     &           (IBMRDX(1),P1N(1),P1N(2),P1N(3),P1N(4),P1N(5),IREF)
+         ENDIF
+c     add beam hadron as hypothetical final state
+         IF(IBMH.eq.0)THEN
+            CALL ADD_PRTN
+     &         (P1N(1),P1N(2),P1N(3),P1N(4),P1N(5),KRB,2,IBMRDX(1),IBMH)
+         ELSE
+            CALL EDT_PRTN
+     &           (IBMH,P1N(1),P1N(2),P1N(3),P1N(4),P1N(5),IREF)
+         ENDIF
+c     add references rmnt --> parton1 etc
+         CALL ADD_REF(IBMRDX(1),IBM1)
+         CALL ADD_REF(IBM1,IBM2)
+         CALL ADD_REF(IBM2,IBMH)
+
+      ELSEIF(KRMNT.eq.2)THEN
+c     add target side remnant
+         IF(ITGRDX(JW,1).eq.0)THEN
+            CALL ADD_PRTN
+     &           (P2N(1),P2N(2),P2N(3),P2N(4),P2N(5),
+     &           -2,0,0,ITGRDX(JW,1))
+         ELSE
+            CALL EDT_PRTN
+     &           (ITGRDX(JW,1),P2N(1),P2N(2),P2N(3),P2N(4),P2N(5),IREF)
+         ENDIF
+         IF(ITGH.eq.0)THEN
+c     add target hadron as hypothetical final state, always nucleon
+            CALL ADD_PRTN
+     &           (P2N(1),P2N(2),P2N(3),P2N(4),P2N(5),
+     &           KRT(JW),2,ITGRDX(JW,1),ITGH)
+         ELSE
+            CALL EDT_PRTN
+     &           (ITGH,P2N(1),P2N(2),P2N(3),P2N(4),P2N(5),IREF)
+         ENDIF
+
+c     add references rmnt --> parton1 etc
+         CALL ADD_REF(ITGRDX(JW,1),ITG1)
+         CALL ADD_REF(ITG1,ITG2)
+         CALL ADD_REF(ITG2,ITGH)
+
+      ELSEIF(KRMNT.eq.3)THEN
+c     beam side remnant, add only if does not exist yet, otherwise edit
+         IF(IBMRDX(1).EQ.0)THEN
+            CALL ADD_PRTN
+     &           (P1N(1),P1N(2),P1N(3),P1N(4),P1N(5),2,0,0,IBMRDX(1))
+         ELSE
+            CALL EDT_PRTN
+     &           (IBMRDX(1),P1N(1),P1N(2),P1N(3),P1N(4),P1N(5),IREF)
+         ENDIF
+c     add beam hadron as hypothetical final state
+         IF(IBMH.EQ.0)THEN
+            CALL ADD_PRTN
+     &         (P1N(1),P1N(2),P1N(3),P1N(4),P1N(5),KRB,2,IBMRDX(1),IBMH)
+         ELSE
+            CALL EDT_PRTN
+     &           (IBMH,P1N(1),P1N(2),P1N(3),P1N(4),P1N(5),IREF)
+         ENDIF
+         CALL ADD_REF(IBMRDX(1),IBM1)
+         CALL ADD_REF(IBM1,IBM2)
+         CALL ADD_REF(IBM2,IBMH)
+
+c     add target side remnant
+         IF(ITGRDX(JW,1).eq.0)THEN
+            CALL ADD_PRTN
+     &           (P2N(1),P2N(2),P2N(3),P2N(4),P2N(5),-2,0,0,IREF)
+            ITGRDX(JW,1) = IREF
+         ELSE
+            CALL EDT_PRTN
+     &           (ITGRDX(JW,1),P2N(1),P2N(2),P2N(3),P2N(4),P2N(5),IREF)
+         ENDIF
+         IF(ITGH.eq.0)THEN
+c     add target hadron as hypothetical final state
+            CALL ADD_PRTN
+     &           (P2N(1),P2N(2),P2N(3),P2N(4),P2N(5),
+     &           KRT(JW),2,ITGRDX(JW,1),ITGH)
+         ELSE
+            CALL EDT_PRTN
+     &           (ITGH,P2N(1),P2N(2),P2N(3),P2N(4),P2N(5),IREF)
+         ENDIF
+c     add references rmnt --> parton1 etc
+         CALL ADD_REF(ITGRDX(JW,1),ITG1)
+         CALL ADD_REF(ITG1,ITG2)
+         CALL ADD_REF(ITG2,ITGH)
+
+      ENDIF
+
+ 100  IF(JDIF(JW).ne.0.and.NWD.ne.1)THEN
+c     incoherent diffraction case
+c     add parton 4momenta to obtain c.m energy
+         
+c     beam side
+         IBMST1 = ICSTDX(2*(JW-1)+1,2)
+         IBMST2 = ICSTDX(2*(JW-1)+2,2)
+
+c     target side
+         ITGST1 = ICSTDX(2*(JW-1)+1,3)
+         ITGST2 = ICSTDX(2*(JW-1)+2,3)
+         
+         CALL RD_PRTN_4VEC(IBMST1,PBM1,IFLB1,IDM)
+         CALL RD_PRTN_4VEC(IBMST2,PBM2,IFLB2,IDM)
+         CALL ADD_4VECS(PBM1,PBM2,PBM)
+         CALL RD_PRTN_4VEC(ITGST1,PTG1,IFLT1,IDM)
+         CALL RD_PRTN_4VEC(ITGST2,PTG2,IFLT2,IDM)
+         CALL ADD_4VECS(PTG1,PTG2,PTG)
+c     total 4momentum
+         CALL ADD_4VECS(PBM,PTG,PTT)
+c     add diffractive system to parton stack
+c     references are: diff --> diff. hadron 
+c     --> beam parton1 --> beam parton2 --> target parton1 etc
+         CALL ADD_PRTN_4VEC(PTT,-10*JDIF(JW),0,IBMST1,IREF)
+         CALL ADD_INT_REF(IREF,IINTDX(JW))
+c     both string indices point to diff. system
+         ICSTDX(2*(JW-1)+1,1) = IREF
+         ICSTDX(2*(JW-1)+2,1) = IREF
+c     add diff. beam hadron to stack
+c     model assumes remnant always excited in first interaction
+         L0 = KB
+c     if not first interaction or remnant excited, merge sea pair to hadron
+         IF(KRMNT.ne.0.or.JW.ne.1) THEN       
+            L0 = IMRG2HAD(IFLB1,IFLB2)
+c     CALL SIB_I4FLAV(IFLB1,IFLB2,IDM,IDM1,L0)
+         ENDIF
+c     check kinematic limits
+c     m2_max should be smaller than m2_min
+         IREJ = 1
+         EE = PTT(5)
+         EE2 = PTT(5)**2
+         K = 2-IBAR(IABS(L0))
+         IF(JDIF(jw).gt.1)THEN
+            DELTAE = EE-AM(13)
+            XMMIN=max(XM2MIN(1),(AM(IABS(l0))+AM(7)+0.02D0)**2)
+         ELSE
+            DELTAE = EE-AM(IABS(L0))
+            XMMIN=max(XM2MIN(K),(AM(IABS(l0))+AM(7)+0.02D0)**2)
+         ENDIF
+c         print *,'jw,jdif,nwd,l0,ifl1,ifl2,deltae,xmin,ee,xmax',
+c     &        jw,jdif(jw),nwd,l0,ifl1,ifl2,deltae,xmmin,ee,par(13)*ee2
+         IF(DELTAE.lt.AM(7)+0.02D0) THEN
+            IF(ndebug.gt.2) 
+     &           WRITE(lun,*) ' EXCT_RMNT: inchoherent diff. :',
+     &           ' not enough mass left for excitation! (DELTAE,PION,',
+     &           'IREJ,NCALL)',DELTAE,AM(7)+0.02D0,IREJ,NCALL
+            RETURN
+         ENDIF
+         IF(PAR(13)*EE2.lt.XMMIN)THEN
+            IF(ndebug.gt.2)
+     &           WRITE(lun,*) ' EXCT_RMNT: inchoherent diff. :',
+     &           ' not enough mass left for excitation! (min,max,',
+     &           'IREJ,NCALL)',PAR(13)*EE2,XMMIN,IREJ,NCALL
+            RETURN
+         ENDIF
+         CALL ADD_PRTN_4VEC(PTT,L0,2,IBMST1,IDHAD)
+         CALL ADD_REF(IREF,IDHAD)
+c     reset references of partons
+         CALL ADD_REF(IBMST1,IBMST2)
+         CALL ADD_REF(IBMST2,ITGST1)
+         CALL ADD_REF(ITGST1,ITGST2)
+         CALL ADD_REF(ITGST2,IREF)
+         IF(ndebug.gt.2) THEN
+            WRITE(LUN,*) ' EXCT_RMNT: incoherent diff. ',
+     &           '(IDX,IDX2,JDIF,ECM,L0)',IREF,IDHAD,JDIF(JW),PTT(5),L0
+            WRITE(LUN,*) ' EXCT_RMNT: DELTAE,XM2MAX:',DELTAE,PAR(13)*EE2
+         ENDIF
+         IREJ = 0
+         RETURN
+      ENDIF
+
+C...  add central strings to stack
+c     partons designated for central strings 
+c     are indexed in ICSTDX(JW,2:3)
+c     pstr_j = p_j_bm + p_j_tg
+c     string mass ** 2 = pstr_j ** 2
+c     --> read momenta from stack, add beam and target side, 
+c     references are set in a loop:
+c     string --> beam-parton --> target-parton --> string
+c     then write string 4momentum on stack
+      IMRG = 0
+      DO JJ=1,2
+         ISTH = 0
+         IBMST = ICSTDX(2*(JW-1)+JJ,2)
+         ITGST = ICSTDX(2*(JW-1)+JJ,3)
+         CALL RD_PRTN_4VEC(IBMST,PBM1,IFL1,IDM)
+         CALL RD_PRTN_4VEC(ITGST,PTG1,IFL2,IDM)
+         CALL ADD_4VECS(PBM1,PTG1,PTT)
+c     transverse mass of string end partons (pt**2)
+         CALL GET_XMT2(IBMST,XMT12)
+         CALL GET_XMT2(ITGST,XMT22)
+c     available mass for string
+         EE = SQRT(PTT(4)**2-PTT(3)**2)
+c     catch virtual strings
+         IF(PTT(5).lt.0.D0) THEN
+            IREJ = 1
+            IF(ndebug.gt.2)
+     &           write(LUN,*)' EXCT_RMNT: virt. string (M):',EE
+            IF(ndebug.gt.3)then
+               CALL GET_IMASS2(IBMST,XM2)
+               write(LUN,*) '  PBM1:', (PBM1(j),j=1,5),XM2
+               CALL GET_IMASS2(ITGST,xm2)
+               write(LUN,*) '  PTG1:', (PTG1(j),j=1,5),XM2
+               write(LUN,*) '  Ptot:', (PTT(j),j=1,5)
+            ENDIF
+c               stop
+            RETURN
+         ENDIF
+c     minimal string mass requirement
+         IF(EE.lt.sqrt(XMT12)+sqrt(XMT22)+PAR(123))THEN
+            IAFL1 = IABS(IFL1)
+            IAFL2 = IABS(IFL2)
+            IF(IPAR(74).eq.1)THEN
+c     try to form single meson, set merge flag
+               IF(IAFL1.gt.10.and.IAFL2.gt.10) THEN
+c     skip if two diquarks need merging..                  
+                  IREJ = 1
+                  RETURN
+               ENDIF
+               IF((IAFL1/10.eq.4.or.mod(IAFL1,10).eq.4)
+     +              .and.(IAFL2/10.eq.4.or.mod(IAFL2,10).eq.4)) THEN
+c     skip if two charm quarks need merging..                  
+                  IREJ = 1
+                  RETURN
+               ENDIF                             
+               L0 = IMRG2HAD(IFL1,IFL2)
+               IF(EE.gt.AM(IABS(L0))) then
+                  IMRG = IMRG + JJ
+                  CALL ADD_PRTN_4VEC(PTT,L0,2,IBMST,ISTH)
+                  IF(ndebug.gt.2)then
+                     write(lun,*)
+     &                    ' EXCT_RMNT: c.string mass too low! ',
+     &                    'merge into hadron..',l0
+                  ENDIF
+               ENDIF
+            ELSE
+               IF(ndebug.gt.2)then
+                  write(lun,*)
+     &                 ' EXCT_RMNT: c.string kinematic rejection!'
+                  write(lun,*) ' EE,limit,XMT1,XMT2:',
+     &                 EE,sqrt(XMT12)+sqrt(XMT22)+0.3D0,sqrt(XMT12),
+     &                 sqrt(XMT22)
+                  write(lun,*) ' return to momentum sampling..'
+               endif
+               IREJ = 1
+               RETURN
+            ENDIF
+         ENDIF
+c     add central string to stack, refering to beam-end parton
+         CALL ADD_PRTN_4VEC(PTT,1,0,IBMST,IREF)
+         ICSTDX(2*(JW-1)+JJ,1) = IREF
+         CALL ADD_INT_REF(Iref,IINTDX(JW))
+c     add reference to target parton to beam parton
+         CALL ADD_REF(IBMST,ITGST)
+         IF(ISTH.ne.0) THEN
+c     if string merged to hadron add reference corresponding reference            
+            CALL ADD_REF(ITGST,ISTH)
+            CALL ADD_REF(ISTH,IREF)
+         ELSE
+c     add reference to corresponding central string to target parton
+            CALL ADD_REF(ITGST,IREF)
+         ENDIF
+      ENDDO
+      
+c     form single hadron from string if mass was too low ..
+c     need to put hadron on shell by exchanging energy with other string            
+      IF(IMRG.eq.1.or.IMRG.eq.2)THEN
+         IF(ndebug.gt.2)
+     &        WRITE(LUN,*)' EXCT_RMNT: merging one string..',IMRG
+c     one string merged
+c     index of merged string and its last parton
+         IMST = ICSTDX(2*(JW-1)+IMRG,1)
+         IMST1 = ICSTDX(2*(JW-1)+IMRG,3)
+c     index of ordinary string
+         IMRGBAR = 3-IMRG
+         ICST2 = ICSTDX(2*(JW-1)+IMRGBAR,1)
+c     read 4momenta
+         CALL RD_REF(IMST1,ISTH)
+         CALL RD_PRTN_4VEC(ISTH,P1,L0,IREF)
+c     string two
+         CALL RD_PRTN_4VEC(ICST2,P2,IFL2,IDM)
+c     cm energy
+         CALL ADD_4VECS(P1,P2,PTT)
+         IF(ndebug.gt.2)THEN
+            write(lun,*)' EXCT_RMNT: string A :',(P1(i),i=1,5)
+            write(lun,*)' EXCT_RMNT: string B :',(P2(i),i=1,5)
+            write(lun,*)' EXCT_RMNT: total :',(PTT(i),i=1,5)
+         ENDIF
+         ECM = PTT(5)
+         XM1 = AM(IABS(L0))
+         XM2 = P2(5)
+         CALL TRANSFONSHELL(ECM,XM1,XM2,1.D0,3,P1N,P2N,LBD)
+         IF(LBD.eq.1) THEN
+            IF(NDEBUG.gt.2)
+     &           WRITE(LUN,*)' EXCT_RMNT: mass transfer failed!'
+            RETURN
+         ENDIF
+c     by definition p1n is along +z in string cm, need to invert if pzA < pzB
+c         IF(P2(3).gt.P1(3)) CALL SWTCH_LMNTS(P1N(3),P2N(3))
+
+C..   rotate parton-parton axis onto string-string axis
+c     therefore boost to parton-parton cm
+c     to calc. rotation angles BEFORE interaction !
+         DO K = 1,4
+            GABE(K) = PTT(K)/PTT(5)
+         enddo         
+         CALL SIB_ALTRA(GABE(4),-GABE(1),-GABE(2),-GABE(3),
+     &        P1(1),P1(2),P1(3),P1(4),
+     &        P1TOT,PBM1(1),PBM1(2),PBM1(3),PBM1(4))
+c     rotation factors
+         COD= PBM1(3)/P1TOT
+         SID= DSQRT(PBM1(1)**2+PBM1(2)**2)/P1TOT
+         COF=1.D0
+         SIF=0.D0
+         IF(P1TOT*SID.GT.EPS5) THEN
+            COF=PBM1(1)/(SID*P1TOT)
+            SIF=PBM1(2)/(SID*P1TOT)
+            ANORF=DSQRT(COF*COF+SIF*SIF)
+            COF=COF/ANORF
+            SIF=SIF/ANORF
+         ENDIF
+         IF(ndebug.gt.2)THEN
+            write(lun,*)' EXCT_RMNT: momentum in cm:',(PBM1(i),i=1,5)
+            write(lun,*)' EXCT_RMNT: rotation factors:',COD,SID,COF,SIF
+            write(lun,*)' EXCT_RMNT: rotation angles (theta,phi):',
+     &           ACOS(COD),ACOS(COF),ASIN(SID),ASIN(SIF)
+            write(lun,*)' EXCT_RMNT: momentum:',
+     &           sqrt(P1N(1)**2+P1N(2)**2+P1N(3)**2)
+         ENDIF
+c     rotate parton momenta after interaction, still in parton-parton frame
+         CALL SIB_TRANI(P1N(1),P1N(2),P1N(3),COD,SID,COF,SIF
+     &        ,PX,PY,PZ)
+         P1N(1)=PX
+         P1N(2)=PY
+         P1N(3)=PZ
+         CALL SIB_TRANI(P2N(1),P2N(2),P2N(3),COD,SID,COF,SIF
+     &        ,PX,PY,PZ)
+         P2N(1)=PX
+         P2N(2)=PY
+         P2N(3)=PZ
+         IF(ndebug.gt.2) write(lun,*)' EXCT_RMNT: momentum*:',
+     &        sqrt(P1N(1)**2+P1N(2)**2+P1N(3)**2)
+
+c     boost back to hadron-hadron
+         DO K = 1,4
+            GABE(K) = PTT(K)/PTT(5)
+         ENDDO
+         CALL SIB_ALTRA(GABE(4), GABE(1), GABE(2), GABE(3),
+     &        P1N(1),P1N(2),P1N(3),P1N(4),
+     &        P1TOT,P1(1),P1(2),P1(3),P1(4))
+         P1(5)=P1N(5)
+         CALL SIB_ALTRA(GABE(4), GABE(1), GABE(2), GABE(3),
+     &        P2N(1),P2N(2),P2N(3),P2N(4),
+     &        P2TOT,P2(1),P2(2),P2(3),P2(4))
+         p2(5)=p2n(5)
+         IF(ndebug.gt.2)THEN
+            write(lun,*)' EXCT_RMNT: momenta after scattering:'
+            write(lun,*)' EXCT_RMNT: hadron A :',(P1(i),i=1,5)
+            write(lun,*)' EXCT_RMNT: string B :',(P2(i),i=1,5)
+         ENDIF
+
+c     edit partons on stack
+         CALL EDT_PRTN
+     &        (ISTH,P1(1),P1(2),P1(3),P1(4),P1(5),IREF)
+         ICST11 = ICSTDX(2*(JW-1)+IMRG,2)
+         CALL EDT_PRTN
+     &        (IMST,P1(1),P1(2),P1(3),P1(4),P1(5),ICST11)
+         ICST21 = ICSTDX(2*(JW-1)+IMRGBAR,2)
+         CALL EDT_PRTN
+     &        (ICST2,P2(1),P2(2),P2(3),P2(4),P2(5),ICST21)
+         
+      ELSEIF(IMRG.eq.3)THEN
+         IF(ndebug.gt.2)
+     &        WRITE(LUN,*)' EXCT_RMNT: merge both strings..'
+
+c     both strings merged
+c     index of merged string and its last parton
+         IMST1 = ICSTDX(2*(JW-1)+1,1)
+         IMST11 = ICSTDX(2*(JW-1)+1,3)
+c     index of ordinary string
+         IMST2 = ICSTDX(2*(JW-1)+2,1)
+         IMST21 = ICSTDX(2*(JW-1)+2,3)
+c     read 4momenta
+         CALL RD_REF(IMST11,ISTH1)
+         CALL RD_PRTN_4VEC(ISTH1,P1,L01,IREF)
+c     string two
+         CALL RD_REF(IMST21,ISTH2)
+         CALL RD_PRTN_4VEC(ISTH2,P2,L02,IREF)
+         XM1 = AM(IABS(L01))
+         XM2 = AM(IABS(L02))
+c     cm energy
+         CALL ADD_4VECS(P1,P2,PTT)
+         ECM = PTT(5)
+         ETOT = PTT(4)
+         IF(ndebug.gt.2)THEN
+            write(lun,*)' EXCT_RMNT: string A :',(P1(i),i=1,5)
+            write(lun,*)' EXCT_RMNT: string B :',(P2(i),i=1,5)
+            write(lun,*)' EXCT_RMNT: total :',(PTT(i),i=1,5)
+         ENDIF
+
+         CALL TRANSFONSHELL(ecm,xm1,xm2,1.D0,3,P1n,P2n,LBD)
+         IF(LBD.eq.1) THEN
+            IF(NDEBUG.gt.2)
+     &           WRITE(LUN,*)' EXCT_RMNT: mass transfer failed!'
+            RETURN
+         ENDIF
+c     by definition p1n is along +z in string cm, need to invert if pzA < pzB
+c         IF(P2(3).gt.P1(3)) CALL SWTCH_LMNTS(P1N(3),P2N(3))
+c     rotate parton-parton axis onto string-string axis
+c     boost to parton-parton cm to calc. rotation angles BEFORE interaction!
+         DO K = 1,4
+            GABE(K) = PTT(K)/PTT(5)
+         ENDDO
+         CALL SIB_ALTRA(GABE(4),-GABE(1),-GABE(2),-GABE(3),
+     &        P1(1),P1(2),P1(3),P1(4),
+     &        P1TOT,PBM1(1),PBM1(2),PBM1(3),PBM1(4))
+c     rotation factors
+         COD= PBM1(3)/P1TOT
+         SID= DSQRT(PBM1(1)**2+PBM1(2)**2)/P1TOT
+         COF=1.D0
+         SIF=0.D0
+         IF(P1TOT*SID.GT.EPS5) THEN
+            COF=PBM1(1)/(SID*P1TOT)
+            SIF=PBM1(2)/(SID*P1TOT)
+            ANORF=DSQRT(COF*COF+SIF*SIF)
+            COF=COF/ANORF
+            SIF=SIF/ANORF
+         ENDIF
+c     rotate parton momenta after interaction
+         CALL SIB_TRANI(P1N(1),P1N(2),P1N(3),COD,SID,COF,SIF
+     &        ,PX,PY,PZ)
+         P1N(1)=PX
+         P1N(2)=PY
+         P1N(3)=PZ
+         CALL SIB_TRANI(P2N(1),P2N(2),P2N(3),COD,SID,COF,SIF
+     &        ,PX,PY,PZ)
+         P2N(1)=PX
+         P2N(2)=PY
+         P2N(3)=PZ
+
+c     boost massive hadrons back to hadron-hadron
+         CALL SIB_ALTRA(GABE(4), GABE(1), GABE(2), GABE(3),
+     &        P1N(1),P1N(2),P1N(3),P1N(4),
+     &        P1TOT,P1(1),P1(2),P1(3),P1(4))
+         P1(5)=P1N(5)
+         CALL SIB_ALTRA(GABE(4), GABE(1), GABE(2), GABE(3),
+     &        P2N(1),P2N(2),P2N(3),P2N(4),
+     &        P2TOT,P2(1),P2(2),P2(3),P2(4))
+         P2(5)=P2N(5)
+         IF(ndebug.gt.2)THEN
+            write(lun,*)' EXCT_RMNT: hadron A :',(P1(i),i=1,5)
+            write(lun,*)' EXCT_RMNT: hadron B :',(P2(i),i=1,5)
+         ENDIF
+
+c     edit partons on stack
+         CALL EDT_PRTN
+     &        (ISTH1,P1(1),P1(2),P1(3),P1(4),P1(5),IREF)
+         ICST11 = ICSTDX(2*(JW-1)+1,2)
+         CALL EDT_PRTN
+     &        (IMST1,P1(1),P1(2),P1(3),P1(4),P1(5),ICST11)
+
+         CALL EDT_PRTN
+     &        (ISTH2,P2(1),P2(2),P2(3),P2(4),P2(5),IREF)
+         ICST21 = ICSTDX(2*(JW-1)+2,2)
+         CALL EDT_PRTN
+     &        (IMST2,P2(1),P2(2),P2(3),P2(4),P2(5),ICST21)
+         
+      ENDIF
+
+      IREJ = 0
+
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE FIREBALL_4FLV(L0,P0,PCHEXin,IREJ)
+
+C-----------------------------------------------------------------------
+C... "decay" of an excited state with the quantum numbers
+C.   of particle L0 and the 5-momentum P0
+C.   4 flavor generalization /FR'13
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+
+      INTEGER IISO,ISPN
+      COMMON /S_SPN/ IISO(99), ISPN(99)
+
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+
+      CHARACTER*6 NAMP
+      COMMON /S_CNAM/ NAMP (0:99)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+      INTEGER NFORIG,NPORIG,NIORIG,IPFLAG,IIFLAG,KINT
+      COMMON /S_PARTO/ NFORIG(NP_max),NPORIG(NP_max),NIORIG(NP_max),
+     &IPFLAG,IIFLAG,KINT
+
+      DIMENSION P0(5), LL(10), PD(10,5), IFL(3), INONLEAD(2)
+      DIMENSION LRESCHEX(6:99), LRES(6:99), LCON(6:99), LPIC(-1:1)
+      DIMENSION LSTR(6:99), LPICS(-2:2)
+      
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+c     charge exchange map
+      DATA (LCON(I),I=6, 33)  /7,6,6,21,22,9,9,14,13,4*0,20,19,9,10,23,
+     &     24,27,27,25,30,31,28,29,32,33/
+      DATA (LCON(I),I=34, 49) 
+     &     /35,34,35,38,37,39,41,42,41,42,45,44,45,48,47,49/
+      DATA (LCON(I),I=50, 83) /0,52,51,54,53,4*0,71,72,10*0,
+     &     59,60,73,74,75,76,77,80,81,78,79,0,83/
+      DATA (LCON(I),I=84, 99) /84,85,86,87,88,89,4*0,94,95,96,97,98,99/
+c     pion charge conversion map
+      DATA LPIC /8,6,7/
+c     kaon charge conversion map      
+      DATA LPICS /9,21,0,22,10/     
+c     charge exchange to resonances map
+      DATA (LRESCHEX(I),I=6, 33) /26,27,27,30,31,9,9,42,41,19*0/
+      DATA (LRESCHEX(I),I=34, 39) /45,44,45,48,47,39/ 
+      DATA (LRESCHEX(I),I=40, 49) /41,42,43,42,45,46,45,48,47,49/
+      DATA (LRESCHEX(I),I=50, 83) 
+     &     /0,52,51,54,53,4*0,60,59,10*0,71,72,73,75,74,
+     &     77,76,79,78,80,81,0,83/
+      DATA (LRESCHEX(I),I=84, 99) 
+     &     /84,85,86,87,88,89,4*0,94,95,96,97,98,99/
+c     resonance excitation map
+      DATA (LRES(I),I=6, 39) 
+     &     /27,25,26,28,29,9,9,41,42,19*0,44,45,46,47,48,39/
+      DATA (LRES(I),I=40, 49) /40,41,42,43,44,45,46,47,48,49/
+      DATA (LRES(I),I=50, 83) 
+     &     /0,51,52,53,54,4*0,78,79,10*0,71,72,73,76,77,76,
+     &     77,78,79,80,81,0,83/
+      DATA (LRES(I),I=84, 99) /94,95,96,97,98,89,4*0,94,95,96,97,98,99/
+c     strangeness excitation map
+      DATA LSTR(6:27) /6,7,8,9,10,11,12,34,39,6*0,21,22,23,24,25,26,27/
+      DATA LSTR(28:39) /28,29,30,31,32,33,44,45,46,47,48,39/
+      DATA LSTR(40:49) /40,41,42,43,44,45,46,47,48,49/
+      DATA LSTR(50:83) /0,51,52,53,54,4*0,78,79,10*0,71,72,73,76,77,76,
+     &     77,78,79,80,81,0,83/
+      DATA LSTR(84:99) /94,95,96,97,98,89,4*0,94,95,96,97,98,99/
+      
+c...  charge exchange reaction rate
+c      DATA PCHEX /0.33/
+
+c     default parameter: PAR(61)
+      PCHEX = PCHEXin
+
+c     split charge exchange between 2 and 3+ fireballs
+      IF(IPAR(91).eq.1.and.NPI.gt.2)THEN
+         PCHEX = 1.D0-PCHEX
+      ENDIF
+
+c     hyperon production rate
+      PLAM = PAR(157)
+      
+c...  suppression of high mass particles in fireball
+c     xmpsuppr = prob. accepting additional proton
+      XMPSUPPR=PAR(33)
+      IF(ABS(XMPSUPPR).lt.EPS3) THEN
+         WRITE(LUN,*)
+     &        ' Error: too low mass suppression in 4 flv fireball!'
+         WRITE(LUN,*)
+     &        ' Probably PAR(33)/IPAR(14) not properly set, aborting..'
+         STOP
+      ENDIF
+      XTEMPH=(AM(6)-AM(13))/dLOG(XMPSUPPR)
+
+      IF(Ndebug.gt.3) THEN
+         WRITE(LUN,*)' FIRBALL_4FLV: called with (L0,P0):',
+     &        L0,P0
+         WRITE(LUN,*)' 2nd Proton rejection prob.:',XMPSUPPR
+         WRITE(LUN,*)' fireball temperature:',XTEMPH
+         WRITE(LUN,*)' charge exchange prob.:',PCHEX
+         WRITE(LUN,*)' multiplicity width:',PAR(38)
+      ENDIF
+
+c...  special vector resonance treatment for meson projectiles
+c     i.e. spin exchange probability
+      PAR5def = PAR(5)
+      IF(IPAR(14).eq.-2.and.abs(kb).lt.13)THEN
+         PAR(5)=PAR(34)
+      ENDIF
+
+      NTRY=0
+ 100  NTRY=NTRY+1
+      IF(NTRY.GT.20)THEN
+         WRITE(LUN,*)' FIRBALL_4FLV: unable to sample 4flv fireball!'
+         WRITE(LUN,*)' lacking rejection mechanism, abort..'
+         CALL SIB_REJECT ('FIRBALL_4FLV    ')
+c         RETURN
+      ENDIF
+
+      LA = ABS(L0)
+      ISGN = ISIGN(1,L0)
+      DELTAE = P0(5) - AM(LA)
+      IF(DELTAE.lt.AM(6)+0.02D0)THEN
+         IREJ = 1
+         IF(ndebug.gt.3)
+     &    WRITE(LUN,*)' FIRBALL_4FLV:  too low mass!! aborting...',IREJ
+c         xa=-1.
+c         xa=log(xa)
+c         stop        
+         RETURN
+      ENDIF
+      AV = 2.D0*SQRT(DELTAE)
+
+c...  select number of particles in fireball
+c     at least two
+ 200  XRNDM = GASDEV(LA)
+      NPI = INT(AV*(1.D0+PAR(38)*XRNDM))
+      XMMIN = AM(LA)+DBLE(NPI-1)*AM(6)+0.02D0
+      IF(Ndebug.gt.3)
+     &     WRITE(LUN,*)'  NPI,av,rndm,xmin,delta',
+     &     NPI,av,XRNDM,xmmin,P0(5)-XMMIN
+
+      IF((NPI.LE.1).OR.(NPI.GT.9).OR.(P0(5).LT.XMMIN))THEN
+         GOTO 200
+      ENDIF
+      IF(Ndebug.gt.3) 
+     &  WRITE(LUN,*)' FIRBALL_4FLV: No. of particles sampled. ',
+     &  '(NPI,DELTAE,NTRY):',NPI,DELTAE,NTRY
+
+c...  sample particle list      
+      NTRYL=0
+ 210  CONTINUE
+c...  special vector resonance treatment with meson projectile
+      IF(IPAR(14).eq.-3.and.LA.lt.13)THEN
+c     form resonance from meson beam
+cdh      IF(NTRY.GT.5) GOTO 211
+         IF(NTRY.GT.5) THEN
+c     split last hadron again to start hadron chain
+           CALL HSPLI (LL(I+1),IFL(1),IFL(2))
+
+           IF(Ndebug.gt.3)
+     &          WRITE(LUN,*)' FIRBALL_4FLV: Input hadron split. ',
+     &          '(L0,IFL1,IFL2):',LL(I+1),IFL(1),IFL(2)
+           WREM = P0(5)
+           WREM2 = AM2(ABS(LL(1)))
+           INONLEAD(1)=0
+           INONLEAD(2)=0
+         ELSE
+           I=1
+           IF(PCHEX.gt.S_RNDM(LA))THEN
+              LL(I)=LRESCHEX(LA)
+              CALL HSPLI(LCON(LA),IFL1,IFL2)
+              IFL(1)=IFL1
+              IFL(2)=IFL2
+           ELSE
+              LL(I)=LRES(LA)
+              CALL HSPLI(L0,IFL1,IFL2)
+              IFL(1)=-IFL1
+              IFL(2)=-IFL2
+           ENDIF
+           WREM = P0(5)-AM(ABS(LL(1)))
+           WREM2 = AM2(ABS(LL(1)))
+           INONLEAD(1)=1
+           INONLEAD(2)=1
+         ENDIF
+
+      ELSE
+c...  baryon projectile
+c     first two particles defined by charge exchange
+         I=1
+         LA1=LA
+c     add strangeness
+         XLIMLAM=sqrt(AM2(35)+AM2(9)+0.4)
+         IF(S_RNDM(LA1).lt.PLAM*(1-IABS(ISTR(LA))).and.
+     &        DELTAE.gt.XLIMLAM)THEN
+            LA1 = LSTR(LA)
+c            print *,'xlim<deltae?: ',xlimlam,deltae
+            IF(Ndebug.gt.3)
+     &write(lun,*)' FIRBALL_4FLV: producing hyperon:',namp(LA),namp(LA1)
+         endif        
+         IF(PCHEX.gt.S_RNDM(LA1))THEN
+            L1=LCON(LA1)
+            if(la.eq.42) l1 = l1 + 2 * int(2.D0*S_RNDM(L1))
+            LL(I)=L1*ISGN
+c            WRITE(LUN,*)' charge exchange!',ISGN*LA,'->',L1
+         ELSE
+            L1=LA1
+            LL(I)=LA1*ISGN
+         ENDIF
+c     determine remaining charge and strangeness         
+         IDQ=ICHP(LA1)*ISGN-ICHP(L1)*ISIGN(1,LL(I))
+         IDS=ISTR(LA)*ISGN-ISTR(L1)*ISIGN(1,LL(I))
+         IF(ABS(IDQ).gt.1) write(lun,*) 'LA,LA1,L1',LA,LA1,L1
+         IF(IABS(IDS).gt.1)
+     &        write(lun,*) 'too much strangeness,LA,LA1,L1:'
+     &        ,namp(LA),namp(LA1),namp(L1)
+         IF(IDS.ne.0)THEN
+            IDX = IDS-IDQ
+            LL(I+1)=LPICS(IDX)  ! compensate with strange meson if 
+         ELSE
+            LL(I+1)=LPIC(IDQ)   ! compensate with meson
+         ENDIF         
+         IF(NPI.eq.2) GOTO 300
+c     split last hadron again to start hadron chain
+cdh 211     CALL HSPLI (LL(I+1),IFL(1),IFL(2))
+         CALL HSPLI (LL(I+1),IFL(1),IFL(2))
+
+         IF(Ndebug.gt.3) 
+     &        WRITE(LUN,*)' FIRBALL_4FLV: Input hadron split. ',
+     &        '(L0,IFL1,IFL2):',LL(I+1),IFL(1),IFL(2)
+         WREM = P0(5)
+         WREM2 = AM2(ABS(LL(1)))
+         INONLEAD(1)=0
+         INONLEAD(2)=0
+      ENDIF
+
+      IF(NTRYL.gt.20) GOTO 100
+      NTRYL=NTRYL+1
+
+ 230  I=I+1    
+      JT=INT(1.5D0+S_RNDM(I))
+      JR=3-JT
+      NTRYS=0
+      IFLB=IFL(JT)
+      IDM = 5
+ 240  CALL SIB_I4FLAV (IFL(JT), 0, IDM, IFL(3), LL(I))
+      IF(NTRYS.gt.50) GOTO 210    
+      NTRYS=NTRYS+1
+      W=dEXP(-AM(ABS(LL(I)))/XTEMPH)
+      IF(Ndebug.gt.4) 
+     &  WRITE(LUN,*)' FIRBALL_4FLV: flavor added: ',
+     &  '(I,NTRYS,LL(I),IFL3,W):',I,NTRYS,LL(I),IFL(3),W
+      IF(W.LT.S_RNDM(I).and.INONLEAD(JT).eq.1) GOTO 240
+
+c...  kinematic limits...     
+      WREM = WREM-AM(IABS(LL(I)))
+      WREM2_2=WREM2+2.D0*dSQRT(WREM2)*AM(IABS(LL(I)))+AM2(IABS(LL(I)))
+      IF(Ndebug.gt.4) 
+     &  WRITE(LUN,*)' FIRBALL_4FLV: kinematic limits: ',
+     &  '(I,NTRYS,P05**2,WREM2):',I,NTRYS,P0(5)**2,WREM2_2
+      IF(WREM2_2+0.2D0*S_RNDM(I+1).ge.P0(5)**2) GOTO 240
+      WREM2=WREM2_2
+      IF(Ndebug.gt.3) 
+     & WRITE(LUN,*)
+     & ' FIRBALL_4FLV: Hadron added: (KF,NAMP,I,NONlead,WRME2)',
+     & LL(I),NAMP(ABS(LL(I))),I,INONLEAD(JT),WREM2
+
+      IFL(JT)=-IFL(3)
+      INONLEAD(JT)=1
+      IF(I.lt.NPI-1) GOTO 230
+      IF(ABS(IFL(JT)).gt.3.and.ABS(IFL(JR)).gt.3) THEN
+         IFL(JT)=IFLB
+         GOTO 240
+      ENDIF
+
+c...  close list
+      I=I+1
+      NTRYC=0
+c$$$      IAFL1 = IABS(mod(IFL(JR),100))
+c$$$      IAFL2 = IABS(mod(IFL(jt),100))
+c$$$      IF ((IAFL1/10.eq.4.or.mod(IAFL1,10).eq.4)
+c$$$     +     .and.(IAFL2/10.eq.4.or.mod(IAFL2,10).eq.4))
+c$$$     +     GOTO 100             ! reject two charm quarks
+c$$$      IF(IAFL1*IAFL2.GT.100)  GOTO 100
+ 250  CALL SIB_I4FLAV (IFL(JT), IFL(JR), IDM, IFL(3), LL(I))
+      IF(NTRYC.gt.10) GOTO 210
+      NTRYC=NTRYC+1
+      WREM2_2=WREM2+2.D0*dSQRT(WREM2)*AM(ABS(LL(I)))+AM2(ABS(LL(I)))
+      IF(Ndebug.gt.5) 
+     &  WRITE(LUN,*)' FIRBALL_4FLV: closing List: (IFL1,IFL2,KF,',
+     &             'NAMP,I,NTRYC,WREM2)',
+     &  IFL(JT),IFL(JR),LL(I),NAMP(ABS(LL(I))),I,NTRYC,WREM2_2
+
+      IF(WREM2_2+0.2D0*S_RNDM(I).ge.P0(5)**2) GOTO 250
+
+ 300  IF(Ndebug.gt.3) 
+     &     WRITE(LUN,*)
+     &     ' FIRBALL_4FLV: flavors sampled. (NPI,LL,WREM,NTRYL):',
+     &     NPI,(LL(ii),ii=1,NPI),WREM,NTRYL
+
+c...  fill phasespace
+      CALL DECPAR (0,P0,NPI,LL,PD)
+      DO J=1,NPI
+         NP = NP+1
+         LLIST(NP) = LL(J)
+         NPORIG(NP) = IPFLAG*2
+         niorig(NP)= iiflag
+         DO K=1,5
+            P(NP,K) = PD(J,K)
+         ENDDO
+      ENDDO
+      PAR(5)=PAR5def
+      IREJ = 0
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE SIG_RPP2014(L,KT,SQS,SLOPE,SIGT,SIGEL,SIGINEL,RHO)
+
+C-----------------------------------------------------------------------
+C     implementation of the PDG RPP 2014 cross section fit
+C     proton-, pion-, kaon-nucleon interactions
+C      
+c     projectile dependent parameters are stored in amp array
+c     dimensions are: (beam,target,exchange mode)
+c     cross section is used for interaction length in AIR
+c     therefore proton and neutron cross sections are averaged.
+c
+C     Input:
+c     L : beam id (1: proton, 2: pion, 3: kaon)
+c     KT: target id (0: Nucleon, 1: proton, 2: neutron)
+c     SQS: c.m. energy in GeV
+c     SLOPE: fit does not include elastic slope, need input to calc
+c            elastic and inelastic cross section
+c     Output:      
+c     SIGT,SIGEL,SIGINEL,RHO
+c     cross sections and ratio of real and imaginary part of ela. amp.
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+c     external types
+      DOUBLE PRECISION SQS,SIGT,SIGEL,SIGINEL,SLOPE,RHO!,SIGDIF
+      integer l,kt
+c     commons
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+c     internal types
+      DOUBLE PRECISION S,S0,SIG,RHO1,XI
+      INTEGER k,i,INIT
+C     universal constants and parameters
+      DOUBLE PRECISION M0,ETA1,ETA2,H
+      DOUBLE PRECISION AMP(3,2,3)
+      DOUBLE PRECISION XMA(3),XMB(2)
+      SAVE
+      DATA M0,ETA1,ETA2,H /2.076D0,0.412D0,0.5626D0,0.2838D0/
+c     hadron-proton
+      DATA (AMP(1,1,i),i=1,3) /33.73D0, 13.67D0, 7.77D0 /
+      DATA (AMP(2,1,i),i=1,3) /18.08D0, 10.44D0, 1.977D0 /
+      DATA (AMP(3,1,i),i=1,3) /15.84D0, 5.12D0, 3.538D0 /
+c     hadron-neutron
+      DATA (AMP(1,2,i),i=1,3) /33.77D0, 14.05D0, 6.93D0 /
+      DATA (AMP(2,2,i),i=1,3) /18.08D0, 10.44D0, 1.977D0 /
+      DATA (AMP(3,2,i),i=1,3) /15.73D0, 4.81D0, 1.86D0 /
+      DATA INIT/0/
+c     particle masses
+c     DATA XMA /0.93827D0,0.13957D0,0.493667D0/
+c     DATA XMB /0.93827D0,0.939565D0/
+
+      IF(INIT.EQ.0) THEN
+c  use the masses from the mass table
+        XMA(1) = AM(13)     ! proton
+        XMA(2) = AM(7)      ! pi+
+        XMA(3) = AM(9)      ! K+
+        XMB(1) = AM(13)     ! proton
+        XMB(2) = AM(14)     ! neutron
+        INIT = 1
+      ENDIF
+
+      s = SQS**2
+      sigt = 0.D0
+      rho = 0.D0
+      k = kt
+ 100  if(kt.eq.0.and.k.lt.2) k = k + 1
+      s0=XMA(l)+XMB(k)+M0
+      s0=s0**2
+      xi=s/s0
+c     print *,'s,s0,xi',s,s0,xi
+c     print *,'eta1,eta2,h,M0',eta1,eta2,h,M0
+c     print *,'P,R1,R2',amp(l,k,1),amp(l,k,2),amp(l,k,3)
+c     print *,H*log(xi)**2,amp(l,k,1),amp(l,k,2)*(1.D0/xi)**eta1,
+c     &        amp(l,k,3)*(1.D0/xi)**eta2
+      sig = H*log(xi)**2+amp(l,k,1)+amp(l,k,2)*(1.D0/xi)**eta1
+     &     +amp(l,k,3)*(1.D0/xi)**eta2
+c     print *,'sig',sig
+c     print *,'pi,0.5D0,0.D0',pi,0.5D0,0.D0
+c     print *,pi*h*log(xi),amp(l,k,2)*xi**(-eta1),tan(eta1*pi*0.5D0),
+c     &        amp(l,k,3)*xi**(-eta2),(tan(pi*eta2*0.5D0)+EPS5)
+      rho1 = PI*h*log(xi)-amp(l,k,2)*xi**(-eta1)*tan(eta1*PI*0.5D0)
+     &     +amp(l,k,3)*xi**(-eta2)/(tan(PI*eta2*0.5D0)+EPS5)
+c     print *,'rho:',rho1
+      rho = rho + rho1/sig
+      sigt = sigt + sig
+c     write(LUN,*) ' l,k,sig,rho:',l,k,sig,rho
+      if(kt.eq.0.and.k.lt.2) goto 100
+      if(kt.eq.0) then
+         sigt = sigt*0.5D0
+         rho = rho*0.5D0
+      endif
+c     derive elastic and inelastic cross section
+      sigel = sigt**2*(1.D0+rho**2)/(16.D0*PI*slope*cmbarn)
+      siginel = sigt-sigel
+      IF(ndebug.gt.2)
+     &  write(LUN,*)
+     &  ' SIG_RPP2014: L,KT,SQS,SIGT,SIGEL,SIGINEL,SLOPE,RHO',
+     &     L,KT,SQS,SIGT,SIGEL,SIGINEL,SLOPE,RHO
+      end
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION FERMI(XARG,X0,XALPH)
+
+C-----------------------------------------------------------------------
+C     fermi function, used to smoothen samplings
+C     f = 1/(1+exp((x-x0)/alpha))
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+c     externals
+      DOUBLE PRECISION XARG,X0,XALPH,XE
+c     COMMONs
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+
+c     internals
+      xe = max((xarg-x0)/xalph,-10.D0)
+      fermi=1.D0+exp(xe)
+      fermi=1.D0/fermi
+      END
+C=======================================================================
+      
+      SUBROUTINE SEL_RES(XM2in,KDin,IRDX,IKDH)
+      
+C--------------------------------------------------------------------
+C     routine that checks if excitation should go into resonant state
+C     or rather should fallback to on-shell beam hadron
+C     Input: XM2in : squared excitation mass
+C            KDin : projectile hadron code
+C            IRDX : reference to remnant on stack
+C     Output: adds hadron to stack
+C             IKDH : parton stack index of final hadron
+C--------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+      DOUBLE PRECISION AW,AW2
+      COMMON /S_WIDTH1/ AW(99), AW2(99)
+      INTEGER          MRES(6:99,2)
+      DOUBLE PRECISION XM2,XM1,DELTAE,EMIN1,EMIN2
+      INTEGER          KD
+      SAVE
+
+      DATA (MRES(k,1),k=6,22)  /27,25,26,28,29,0,0,51,52,6*0,30,31/
+      DATA (MRES(k,1),k=23,33) /23,24,25,26,27,28,29,30,31,27,27/
+      DATA (MRES(k,1),k=34,49) /34,35,36,37,38,39,40,41,42,43,34,35,36,
+     &     37,38,49/
+      DATA (MRES(k,1),k=50,83) /0,51,52,53,54,4*0,78,79,10*0,80,81,73,
+     &     74,75,76,77,78,79,80,81,0,83/
+      DATA (MRES(k,1),k=84,99) /94,95,96,97,98,89,4*0,94,95,96,97,98,99/
+
+      DATA (MRES(k,2),k=6,22)  /61,62,63,64,65,0,0,53,54,6*0,66,67/
+      DATA (MRES(k,2),k=23,33) /61,61,62,63,61,64,65,66,67,61,61/
+      DATA (MRES(k,2),k=34,49) /34,35,36,37,38,39,40,41,42,43,44,45,46,
+     &     47,48,49/
+      DATA (MRES(k,2),k=50,83) /0,51,52,53,54,4*0,78,79,10*0,80,81,73,74
+     &     ,75,76,77,78,79,80,81,0,83/
+      DATA (MRES(k,2),k=84,99) /94,95,96,97,98,89,4*0,94,95,96,97,98,99/
+
+      XM2 = XM2in
+      XM1 = sqrt(XM2)
+      KD = KDin
+
+C     thresholds
+c     fallback threshold
+      EMIN1 = PAR(76)
+      
+c     resonance threshold
+      EMIN2 = PAR(77)
+      
+c     parton stack index of incoming hadron
+      IKDH = 0
+      
+c     if too low, fallback on beam
+      IF(ndebug.gt.2)
+     &     write(lun,*)' SEL_RES: input (XM2in,KDin,IRDX):',XM2,KD,IRDX
+      DELTAE = XM1-AM(ABS(KD))
+      IF(ndebug.gt.1)then
+         write(lun,*)' SEL_RES: DELTAE,EMIN1,EMIN2',deltae,emin1,emin2
+         write(lun,*)' SEL_RES: XM,XM1,XM2',
+     &        XM1,emin1+AM(ABS(KD)),emin2+AM(ABS(KD))
+      endif
+      IF(DELTAE.LT.EMIN1)THEN
+c     fallback to beam region
+         KDH = kd
+         XM1 = AM(abs(kd))
+         XM2 = AM2(abs(kd))
+
+      ELSEIF(DELTAE.LT.EMIN2)THEN
+c     form resonance
+         II = 1
+         KDH = KD
+         DO WHILE (II.le.2.and.KDH.eq.KD)
+            KDD = IABS(KD)
+            
+c     K0s and K0l projection on K0 and K0bar
+cdh         IF(KDD.eq.11.or.KDD.eq.12)KDD=21
+cdh  &                              +INT((2.D0-EPS10)*S_RNDM(KD))
+            IF(KDD.eq.11.or.KDD.eq.12)KDD=21
+     &                              +INT(0.5D0+S_RNDM(KD))
+            IL = MRES(KDD,II)
+            IF(ndebug.gt.2) then
+               write(lun,*) ' SEL_RES: res. select (KD,II,IL):',
+     &         KD,II,IL
+            ENDif
+cdh   to prevent  index of array AW2 out of range
+            IF(IL.eq.0) write(lun,*) ' SEL_RES: KD,KDD:' , KD,KDD
+            IF(IL.eq.0) CALL SIB_REJECT('SEL_RES         ')
+c     sample probability for resonance to occur at this mass
+c     from the relativistic breit-wigner dist.
+c     scale widths to artificially increase or decrease resonance occurence
+            XWDTH = PAR(94)*AW2(IL)
+            PRES = BREIT_WIGNER(XM2,AM2(IL),XWDTH)
+            IF(ndebug.gt.2)
+     &           write(lun,*)
+     &           ' SEL_RES: res. proposal (AM2,AW2,Prob.):',
+     &           AM2(IL),XWDTH,PRES
+            IF(S_RNDM(ii).lt.PRES) KDH = ISIGN(IL,KD)            
+            II = II + 1
+         ENDDO
+c     no resonance selected, fallback to beam or phasespace decay?
+         IF(IPAR(59).eq.1.and.KDH.eq.KD)THEN
+c     distinguish regions in deltaE
+            IF(DELTAE.LT.EMIN1)THEN
+c     fallback to beam
+               XM1 = AM(abs(kdh))
+               XM2 = AM2(abs(kdh))           
+            ELSE
+               KDH = 0
+            ENDIF
+         ELSE
+c     case where resonance has been selected 
+c     or no overlap between resonance and phasespace region exists
+c     set mass to pole masses of selected particles
+            XM1 = AM(abs(kdh))
+            XM2 = AM2(abs(kdh))
+         ENDIF
+      ELSE
+c     neither resonance nor fallback
+         KDH = 0
+      ENDIF
+      IF(KDH.ne.0)THEN
+c     add new beam hadron to stack
+         XM2in = XM2
+         CALL ADD_PRTN
+     &        (0.D0,0.D0,0.D0,0.D0,XM1,KDH,2,IRDX,IKDH)
+      endif
+      IF(ndebug.gt.2)
+     &     write(lun,*)' SEL_RES: output (XM2in,KDin,KDH):',XM2,KD,KDH
+
+      RETURN
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION BREIT_WIGNER(S,XM2,XWDTH2)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+
+C     peak set to one
+      x1 = (s-xm2)**2+xm2*xwdth2
+      breit_wigner = xm2*xwdth2/x1
+      end
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION TBREIT_WIGNER(S,XM2,XWDTH2)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+C     breit-wigner truncated at 2*gamma from peak
+C     peak set to one
+      DATA N /10/
+
+      XMLOW = MAX(XM2-N*XWDTH2,0.D0)
+      XCUT = SIGN(1.D0,S-XMLOW)
+      XCUT = MAX(XCUT,0.D0)
+      x1 = (S-xm2)**2+xm2*xwdth2
+      TBREIT_WIGNER = xcut * xm2*xwdth2/x1
+      
+      end
+C=======================================================================
+
+      SUBROUTINE FRAG_MINIJET(IDX,IBAD)
+
+C-----------------------------------------------------------------------
+C     routine that fragments a gluon - gluon system \FR'14
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+      INTEGER IDX,IBAD
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+C     parameters that represent: NW: max. number of wounded nucleons,
+C     NS,NH: max. number of soft and hard interactions
+c      PARAMETER (NW_max = 20)
+C     The COMMON block /S_CHIST/ contains information about the
+C     the structure of the  generated event:
+C     NWD   = number of wounded nucleons
+C     NJET = total number of hard interactions
+C     NSOF = total number of soft interactions
+C     NNSOF (1:NW) = number of soft pomeron cuts in each interaction
+C     NNJET (1:NW) = number of minijets produced in each interaction 
+C     JDIF(1:NW) = diffraction code 
+C                  0 : non-diff,
+C                  1 : beam-diff
+C                  2 : target-diff
+C                  3 : double-diff
+      INTEGER NNSOF,NNJET,JDIF,NWD,NJET,NSOF
+      COMMON /S_CHIST/ NNSOF(NW_max),NNJET(NW_max),
+     &     JDIF(NW_max),NWD,NJET,NSOF
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      
+      DOUBLE PRECISION PGG,PST,PBM,PTG,E0,PT2JET,PTJET,TH,FI,S_RNDM,
+     &     PAR1_def,PAR24_def,PAR3_def,PAR2_1_def,PAR2_2_def,PAR5_def,
+     &     PAR6_def,PAR24_2_def,XM,QMASS,DBETJ      
+      DIMENSION PST(5),PBM(5),PTG(5)
+      INTEGER IST,ITGST,IBMST,IPID,IFLB,IFLT,NOLD,IS,IFL1,IFBAD,IDM,
+     &     ipar82_def
+      SAVE
+      DATA PGG /1.D0/
+
+C     read partons from stack
+c     references are string --> bm-parton --> tg-parton
+c     read string 4momentum from stack
+      CALL RD_PRTN_4VEC(IDX,PST,IPID,IBMST)
+      CALL RD_PRTN_4VEC(IBMST,PBM,IFLB,ITGST)
+      CALL RD_PRTN_4VEC(ITGST,PTG,IFLT,IST)
+      IF(IDX.ne.IST) then
+         write(lun,*) ' FRAG_MINIJET: reference loop broken!' , IDX
+         CALL SIB_REJECT('FRAG_MINIJET    ')
+      endif
+
+C..   kinematic variables
+      E0 = PST(5)            ! string mass
+      PT2JET = PBM(1)**2 + PBM(2)**2
+      PTJET = sqrt(PT2JET)
+      TH = ASIN(MIN((1.D0-EPS8),2.D0*PTJET/E0))
+c      FI = ASIN(MIN((1.D0-EPS8),PBM(2)/PTJET))
+      FI = TWOPI*S_RNDM(IDX)
+c      TH = PST(1)
+c      FI = PST(2)
+
+      IF(NDEBUG.gt.1) WRITE(LUN,*)' FRAG_MINIJET: IDX,EE,IFLB,IFLT,PT',
+     &     IDX,E0,IFLB,IFLT,PTJET,IBAD
+      IF(NDEBUG.gt.1) WRITE(LUN,*)' FRAG_MINIJET: PTJET,TH,FI:',
+     &     PTJET,TH,FI
+
+C...  parameter setup (string fragmentation)
+
+c     baryon production setup
+      PAR1_def = PAR(1)
+      if( NSOF+NJET.gt.0) then
+         PAR(1)= PAR(15)
+      else
+         PAR(1)= PAR(14)
+      endif
+            
+C...  charm setup
+      PAR24_def = PAR(24)
+      IF(IPAR(15).eq.2.or.IPAR(15).eq.3)THEN
+         PAR(24) = PAR(25)*EXP(-PAR(26)/E0)
+      ELSEIF(IPAR(15).eq.4)THEN
+         PAR(24) = PAR(27)*EXP(-PAR(26)/E0)
+      ELSEIF(IPAR(15).eq.5)THEN
+         PAR(24) = PAR(27)*EXP(-PAR(26)/E0)
+         PAR(29) = PAR(27)*EXP(-PAR(28)/E0)
+      ELSEIF(IPAR(15).eq.6.or.IPAR(15).eq.8.or.IPAR(15).eq.9.or.
+     &        IPAR(15).eq.11)THEN
+         PAR(24) = PAR(27)*EXP(-PAR(28)/E0)
+      ELSEIF(IPAR(15).eq.7)THEN
+         PAR(24) = PAR(27)
+      ELSEIF(IPAR(15).eq.10)THEN
+         WRITE(LUN,*)' FRAG_minijet: charm model not implemented!'
+         CALL SIB_REJECT('FRAG_minijet    ')
+      ENDIF
+
+C...  strange setup
+      PAR2_1_def = PAR(2)
+      PAR3_def = PAR(3)
+      IF(IPAR(42).eq.1)THEN
+c     change to constant value 
+         PAR(2) = PAR(72)
+      ELSEIF(IPAR(42).eq.2)THEN
+c     change according to string mass, saturating
+         PAR(2) = PAR(72)*EXP(-PAR(73)/E0)
+      ELSEIF(IPAR(42).eq.3)THEN
+c     change strange diq fraction as well
+         PAR(2) = PAR(72)       ! P_s / P_ud
+         PAR(3) = PAR(73)       ! P_us / P_ud
+      ENDIF
+
+C...  vector setup
+      PAR5_def = PAR(5)
+      PAR6_def = PAR(6)
+      IF(IPAR(43).eq.1)THEN
+c     change vector rate and kaon vector rate
+         PAR(5) = PAR(74)       ! P_vec
+         PAR(6) = PAR(74)       ! P_K* from K
+         
+      ENDIF
+      
+C...  switch off pi0 suppression
+c     should only be applied for remnant, diff and valence
+c     in case of meson projectile
+      ipar82_def = IPAR(82)
+      IF(IPAR(95).eq.1)THEN
+         IPAR(82) = 0
+      ENDIF
+      
+      NOLD = NP
+      IF ( (E0.LT.8.D0) .OR. (S_RNDM(0).GT.PGG)) THEN
+C...  one string case, q - qbar
+         
+C     sample flavor for q-qbar minijet        
+         IF( IPAR(87).eq.3 )THEN
+C     flavor threshold model            
+c     u,d -> u,d,s -> u,d,s,c
+c     s and transition from massive to massless at m_s and m_c thresholds
+c     beyond the charm mass all flavors are equally likely
+            CALL SIB_ICFLAV(E0**2,0,IDM,IFL1)
+            
+         ELSE
+C     default u,d,s model, same rates as in hadronization (string frag.)
+            PAR2_2_def = PAR(2)
+            PAR24_2_def = PAR(24)
+C     set 'leading' strange fraction         
+            IF(IPAR(39).eq.2) PAR(2) = PAR(66)         
+c     leading charm fraction
+            IF( IPAR(87).eq.1 )THEN
+               PAR(24) = PAR(150)
+            ELSEIF( IPAR(87).eq.2 )THEN
+               PAR(24) = PAR(150)*PAR(24)
+            ENDIF
+
+            IS = -1 + 2*INT((2.D0-EPS8)*S_RNDM(0))
+ 100        IFL1 = IS*(INT((2.D0+PAR(2))*S_RNDM(0))+1)
+            XM = 2.D0*QMASS(IFL1)+0.3D0
+            if(E0.LE.XM) GOTO 100
+            IF(IABS(IFL1).eq.3)THEN
+               IF(S_RNDM(IFL1).lt.PAR(24)*PAR(125))IFL1 = IS*4
+               XM = 2.D0*QMASS(IFL1)+0.3D0
+               if(E0.LE.XM) GOTO 100
+            ENDIF
+            PAR(2) = PAR2_2_def
+            PAR(24) = PAR24_2_def                        
+         ENDIF
+      
+         CALL STRING_FRAG_4FLV 
+     &        (E0,IFL1,-IFL1,0.D0,0.D0,0.D0,0.D0,IFBAD,0)
+         if(IFBAD.gt.0) then
+            IF(ndebug.gt.1)
+     &       WRITE(LUN,*)
+     &           ' JET_FRAG: rejection in STRING_FRAG (IFL,E0,NCALL):',
+     &           IFL1,E0,NCALL
+            PAR(24) = PAR24_def
+            PAR(1) = PAR1_def
+            PAR(2) = PAR2_1_def
+            PAR(5) = PAR5_def
+            PAR(6) = PAR6_def
+            PAR(3) = PAR3_def
+            IPAR(82) = ipar82_def       
+            RETURN
+         ENDIF
+      ELSE
+C...  two string case, gluon - gluon
+         CALL GG_FRAG_4FLV(E0)
+      ENDIF
+
+c      DBETJ = (DX1J-DX2J)/(DX1J+DX2J)
+      DBETJ = PST(3)/PST(4)
+      CALL SIROBO (NOLD+1,NP,TH,FI,0.D0,0.D0,DBETJ)
+
+      if(Ndebug.gt.1) WRITE(LUN,*)
+     &     ' JET_FRAG: particles produced:',NP-NOLD
+      PAR(24) = PAR24_def
+      PAR(1) = PAR1_def
+      PAR(2) = PAR2_1_def
+      PAR(5) = PAR5_def
+      PAR(6) = PAR6_def
+      PAR(3) = PAR3_def
+      IPAR(82) = ipar82_def  
+      IBAD = 0
+      END
+C=======================================================================
+
+      SUBROUTINE INT_H_NUC (IA, SIGT, SLOPE, RHO) 
+
+C-----------------------------------------------------------------------
+C...Compute with a montecarlo method the "multiple interaction structure"
+C.  of an hadron-nucleus collision.
+C.  
+C.
+C.  INPUT : IA               = mass of target nucleus
+C.          SIGT (mbarn)     = total hp cross section
+C.          SLOPE (GeV**-2)  = slope of hp elastic scattering
+C.          RHO              = real/imaginary part of forward elastic
+C.                             scattering amplitude
+C.
+C.  OUTPUT : in COMMON block /CNCMS0/
+C.           B = impact parameter (fm)
+C.           BMAX = maximum impact parameter for generation
+C.           NTRY = number of "trials" before one interaction
+C.           NA = number of wounded nucleons in A
+C. Author : P.Lipari  (may 1993)
+C---------------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      PARAMETER (IAMAX=56)
+      COMMON /S_CNCM0/ B, BMAX, NTRY, NA
+      DIMENSION XA(IAMAX), YA(IAMAX)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+
+
+      PI=4.d0*atan(1.d0)
+
+      CC = SIGT/(4.D0*PI*SLOPE*CMBARN)         
+      DEN = 2.D0*SLOPE*CMBARN*0.1D0
+      BMAX = 1.D0*10.D0             ! fm
+      NTRY = 0
+      CALL NUC_CONF (IA, XA, YA)
+1000  CONTINUE
+      B = BMAX*dSQRT(S_RNDM(0))
+      PHI = 2.D0*PI*S_RNDM(NTRY)
+      BX = B*DCOS(PHI)
+      BY = B*DSIN(PHI)
+      NTRY = NTRY + 1
+      NA = 0
+      DO JA=1,IA
+         S = (XA(JA)-BX)**2 + (YA(JA)-BY)**2
+         F = dEXP(-S/DEN)
+         PEL = CC*CC*(1.D0+RHO*RHO)*F*F
+         PINEL  = 2.D0*CC*F-PEL
+         R = S_RNDM(JA)
+         IF (R .LT. PINEL)  THEN
+            NA = NA + 1
+         ENDIF
+      ENDDO
+      IF (NA .EQ. 0 .and. NTRY .lt. 1000)  GOTO 1000
+
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE SIB_REJECT(text)
+
+C-----------------------------------------------------------------------
+c     subroutine dumps state of random number generator 
+c     at beginning of event to file then produces fpe/stops
+C----------------------------------------------------------
+      IMPLICIT NONE
+
+      character*16  text
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER II2,JJ2
+      DOUBLE PRECISION U2,C2,CD2,CM2
+      COMMON /SIB_RAND/ U2(97),C2,CD2,CM2,II2,JJ2
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+      DOUBLE PRECISION XDM
+c      CHARACTER*13 FILENA
+      SAVE
+c      DATA FILENA /'sib_rjctn.rnd'/
+
+      WRITE(LUN,*)
+     &     ' SIB_REJECT:(from,ncall,KB,iat,ECM) ',
+     &                   text,ncall,kb,iat,sqs
+c     produce floating point error
+      XDM = -1.D0
+      XDM = LOG(XDM)
+      STOP
+      END
+C=======================================================================
+
+      SUBROUTINE CUT_PRO (L, SQS, PTmin, NSOFR, NJETR)
+
+C-----------------------------------------------------------------------
+C...  Generate a number of soft/hard (jet-)pairs for a 'projectile'
+C     (K=1:p),(K=2:pi) interacting with a nucleon at sqrt(s)=SQS(GeV)
+C     the interaction structure is only destinguished between nucleons
+C     (L=1) and mesons (L=2), for cross sections there is a 
+C     distinction between pions and kaons as well (L=2 or 3).
+C     For Hyperons the same cross section and interaction structure
+C     as for nucleons is used (L=1).
+C
+C     requires initialization by JET_INI                         /FR'14
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+c      COMMON /S_DEBUG/ Ncall, Ndebug, Lun
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+      
+      DOUBLE PRECISION SSIG,PJETC,SSIGN,SSIGNSD,SSIGNEL,ALINT,ASQSMIN,
+     &     ASQSMAX,DASQS
+      INTEGER NSQS
+      COMMON /S_CCSIG/ SSIG(61,3), PJETC(0:NS_max,0:NH_max,61,2),
+     &     SSIGN(61,3,3), SSIGNSD(61,3,3), SSIGNEL(61,3,3), 
+     &     ALINT(61,3,3), ASQSMIN, ASQSMAX, DASQS, NSQS
+      DOUBLE PRECISION STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      COMMON /S_CUTOFF/ STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+
+C     check if tables initialized
+      IF(NSQS.eq.0) THEN
+         WRITE(LUN,*) ' CUT_PRO: tables not initialized! aborting...'
+         xa = -1.D0
+         xa = log(xa)
+         stop
+      ENDIF
+      IF(NDEBUG.GT.1) 
+     &     WRITE(LUN,*) ' CUT_PRO: input: L, SQS, PTmin',L, SQS, PTmin
+
+c     choose nucleon or meson table
+      K = L
+      if(K.eq.3) K = 2
+
+      AL = dLOG10 (SQS)
+      IF (AL .LT. ASQSMIN)  THEN
+          WRITE(LUN,*)  ' CUT_PRO:  low sqrt(s) ', SQS
+          NSOFR = 1
+          NJETR = 0
+          RETURN
+      ENDIF
+      IF (AL .GT. ASQSMAX)  THEN
+          WRITE(LUN,*)  ' CUT_PRO:  sqrt(s) out of bounds ', SQS
+          NJETR = 0
+          RETURN
+      ENDIF
+
+      J1 = INT((AL - ASQSMIN)/DASQS + 1)
+      J1 = MIN(J1,60)
+      J1 = MAX(J1,1)
+      J2 = J1+1
+      T = (AL-ASQSMIN)/DASQS - DBLE(J1-1)
+
+      R = (1.D0-EPS8)*S_RNDM(0)
+      DO I=0,NS_max
+        DO J=0,NH_max
+          IF (R.LT.(1.D0-T)*PJETC(I,J,J1,K)+T*PJETC(I,J,J2,K)) GOTO 100
+        ENDDO
+      ENDDO
+100   CONTINUE
+
+C...phase space limitation
+
+ 120  CONTINUE
+      XM = DBLE(2*I)*STR_mass_sea + DBLE(2*J)*PTmin
+      PACC = EXP(PAR(9)*(2.D0-XM)/SQS)
+      IF(S_RNDM(0).GT.PACC) THEN
+        IF(I+J.GT.1) THEN
+          IF(I.GT.0) THEN
+            I = I-1
+            GOTO 120
+          ELSE IF(J.GT.0) THEN
+            J = J-1
+            GOTO 120
+          ENDIF
+        ENDIF
+      ENDIF
+
+      NSOFR = I
+      NJETR = J
+
+      if(Ndebug.gt.1) 
+     &  write(lun,*)' CUT_PRO: (L,SQS,PTmin,Ns,Nh) ',K,SQS,PTmin,I,J
+
+      END
+
+C=======================================================================
+
+      SUBROUTINE JET_INI
+
+C-----------------------------------------------------------------------
+C...Compute table of cross sections, and table of probability
+C.  for the production of multiple soft and hard interactions
+C.
+C.  The output of this routine  is the COMMON block /S_CCSIG/
+C.  that contains  the cross sections h-p, h-Air, and the 
+C.  cumulative probability of NS soft and NH hard interactions
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+      
+      DOUBLE PRECISION SSIG,PJETC,SSIGN,SSIGNSD,SSIGNEL,ALINT,ASQSMIN,
+     &     ASQSMAX,DASQS
+      INTEGER NSQS
+      COMMON /S_CCSIG/ SSIG(61,3), PJETC(0:NS_max,0:NH_max,61,2),
+     &     SSIGN(61,3,3), SSIGNSD(61,3,3), SSIGNEL(61,3,3), 
+     &     ALINT(61,3,3), ASQSMIN, ASQSMAX, DASQS, NSQS
+      DOUBLE PRECISION SSIG_TOT,SSIG_SD1,SSIG_SD2,SSIG_DD,SSIG_B,
+     &     SSIG_RHO
+      COMMON /S_CCSIG2/ SSIG_TOT(61,3),SSIG_SD1(61,3),SSIG_SD2(61,3),
+     &    SSIG_DD(61,3),SSIG_B(61,3),SSIG_RHO(61,3)
+      DOUBLE PRECISION SSIG_SD1LM,SSIG_SD1HM,SSIG_SD2LM,SSIG_SD2HM,
+     &     SSIG_DDLM,SSIG_DDHM
+      COMMON /S_CCSIG3/ SSIG_SD1LM(61,3),SSIG_SD1HM(61,3),
+     &     SSIG_SD2LM(61,3),SSIG_SD2HM(61,3),
+     &     SSIG_DDLM(61,3),SSIG_DDHM(61,3)
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+
+      DIMENSION Pjet(0:NS_max,0:NH_max)
+      DIMENSION SIG_df(3),SIG_df2(3,2),SIGDIF(3),SIGDIF_pi(3),
+     &          PS_tab(61),PH_tab(61),PT_tab(61)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+
+C...spacing in energy for table of cross sections.
+
+      NSQS = 61
+      ASQSMIN = 1.D0
+      ASQSMAX = 7.D0
+      DASQS = (ASQSMAX-ASQSMIN)/DBLE(NSQS-1)
+
+C...initialization of proton and pion tables
+      
+      IF(LUN.ne.6) WRITE(6,*)' Calculating cross section tables...'
+      DO KK=1,2
+
+         IF(NDEBUG.gt.0)
+     &    WRITE(LUN,'(2(/,1X,A,A))') 
+     &     'Table: J, sqs,  PT_cut,  SIG_tot, SIG_inel, B_el,  ',
+     &     'rho,    <n_s>,  <n_h>, SIG_SD, SD1_lm, SD1_hm',
+     &     '---------------------------------------------------',
+     &     '----------------------------------------------'
+
+         JINT = KK
+         DO J=1, NSQS
+           ASQS = ASQSMIN + DASQS*DBLE(J-1)
+           SQS = 10.D0**ASQS
+
+           CALL SIB_SIG (JINT, SQS, PTmin,
+     &                   SIG_tot, SIG_inel, SIG_df, SIG_df2, B_el, Pjet)
+
+C...low-energy interpolation with data-parametrizations
+           CALL SIB_HADCSL(JINT,SQS,
+     &                     SIGTOT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO)
+           if(SQS.le.100.D0) then
+             SIG_TOT  = SIGTOT
+             SIG_inel = SIGINEL
+             B_EL     = SLOPE
+           else if(SQS.le.1000.D0) then
+             Xi = dlog(SQS/100.D0)/2.30258509299405D0
+             SIG_TOT  = Xi*SIG_TOT+(1.D0-Xi)*SIGTOT
+             SIG_inel = Xi*SIG_inel+(1.D0-Xi)*SIGINEL
+             B_EL     = Xi*B_EL+(1.D0-Xi)*SLOPE
+           endif
+
+           SSIG_TOT(J,KK) = SIG_TOT
+           SSIG(J,KK)     = SIG_inel
+           SSIG_SD1(J,KK) = SIGDIF(1)
+           SSIG_SD2(J,KK) = SIGDIF(2)
+           SSIG_DD(J,KK)  = SIG_df(3)
+           SSIG_B(J,KK)   = B_EL
+           SSIG_RHO(J,KK) = RHO
+
+           SSIG_SD1LM(J,KK) = SIG_df2(1,1)
+           SSIG_SD1HM(J,KK) = SIG_df2(1,2)
+           SSIG_SD2LM(J,KK) = SIG_df2(2,1)
+           SSIG_SD2HM(J,KK) = SIG_df2(2,2)
+           SSIG_DDLM(J,KK) = SIG_df2(3,1)
+           SSIG_DDHM(J,KK) = SIG_df2(3,2)
+
+           PSUM = 0.D0
+           PH = 0.D0
+           PS = 0.D0
+           DO NS=0,NS_max
+             DO NJ=0,NH_max
+
+               PS = PS+DBLE(NS)*Pjet(NS,NJ)
+               PH = PH+DBLE(NJ)*Pjet(NS,NJ)
+
+               PSUM = PSUM+Pjet(NS,NJ)
+               PJETC(NS,NJ,J,KK) = PSUM
+
+             ENDDO
+           ENDDO
+           PS_tab(J) = PS
+           PH_tab(J) = PH
+           PT_tab(J) = PTmin
+
+           IF(NDEBUG.gt.0)
+     &      WRITE(LUN,'(3X,I2,1P,E12.3,0P,4F8.2,6F8.3)') 
+     &       JINT,SQS,PTmin,SIG_tot,SIG_inel,B_el,RHO,PS,PH
+     &          ,SIGDIF(1)+SIGDIF(2),SIG_df2(1,1),SIG_df2(1,2)
+
+         ENDDO
+      ENDDO
+
+C...initialization of kaon tables
+
+      JINT = 3
+
+      IF(NDEBUG.gt.0)
+     & WRITE(LUN,'(2(/,1X,A,A))') 
+     &  'Table: J, sqs,  PT_cut,  SIG_tot, SIG_inel, B_el,  ',
+     &  'rho,    <n_s>,  <n_h>',
+     &  '---------------------------------------------------',
+     &  '---------------------'
+      DO J=1, NSQS
+        ASQS = ASQSMIN + DASQS*DBLE(J-1)
+        SQS = 10.D0**ASQS
+C...use pion cross section rescaled for high-energy extrapolation
+        SIG_tot   = SSIG_TOT(J,2)
+        SIG_inel  = SSIG(J,2)
+        SIG_df(1) = SSIG_SD1(J,2)
+        SIG_df(2) = SSIG_SD2(J,2)
+        SIG_df(3) = SSIG_DD(J,2)
+        B_el = SSIG_B(J,2)
+        PTmin = PT_tab(J)
+        PS = PS_tab(J)
+        PH = PH_tab(J)
+
+C...low-energy interpolation with data-parametrizations
+        CALL SIB_HADCSL(2,SQS,
+     &                  SIGTOT_pi,SIGEL_pi,SIGINEL,SIGDIF_pi,SLOPE,RHO)
+        CALL SIB_HADCSL(3,SQS,
+     &                  SIGTOT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO)
+        SIG_el    = (SIGEL/SIGEL_pi)*(SIG_TOT-SIG_inel)
+        SIG_TOT   = (SIGTOT/SIGTOT_pi)*SIG_TOT
+        SIG_inel  = SIG_TOT-SIG_el
+        SIG_df(3) = (SIGDIF(3)/SIGDIF_pi(3))*SIG_df(3)
+        if(SQS.le.100.D0) then
+          SIG_TOT  = SIGTOT
+          SIG_inel = SIGINEL
+          B_EL     = SLOPE
+        else if(SQS.le.1000.D0) then
+          Xi = dlog(SQS/100.D0)/2.30258509299405D0
+          SIG_TOT  = Xi*SIG_TOT+(1.D0-Xi)*SIGTOT
+          SIG_inel = Xi*SIG_inel+(1.D0-Xi)*SIGINEL
+          B_EL     = Xi*B_EL+(1.D0-Xi)*SLOPE
+        endif
+
+        SSIG_TOT(J,3) = SIG_TOT
+        SSIG(J,3)     = SIG_inel
+        SSIG_SD1(J,3) = SIGDIF(1)
+        SSIG_SD2(J,3) = SIGDIF(2)
+        SSIG_DD(J,3)  = SIG_df(3)
+        SSIG_B(J,3)   = B_EL
+        SSIG_RHO(J,3) = RHO
+
+        IF(NDEBUG.gt.0)
+     &   WRITE(LUN,'(3X,I2,1P,E12.3,0P,4F8.2,3F8.3)') 
+     &    JINT,SQS,PTmin,SIG_tot,SIG_inel,B_el,RHO,PS,PH
+
+      ENDDO
+
+      END
+
+C=======================================================================
+
+      SUBROUTINE INI_WRITE (LUN)
+
+C-----------------------------------------------------------------------
+C   This subroutine prints on unit LUN
+C   a table of the cross sections  used in the program
+C   and of the average number of hard interactions, and the average
+C   number of wounded nucleons in a hadron-air interaction
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+      
+      DOUBLE PRECISION SSIG,PJETC,SSIGN,SSIGNSD,SSIGNEL,ALINT,ASQSMIN,
+     &     ASQSMAX,DASQS
+      INTEGER NSQS
+      COMMON /S_CCSIG/ SSIG(61,3), PJETC(0:NS_max,0:NH_max,61,2),
+     &     SSIGN(61,3,3), SSIGNSD(61,3,3), SSIGNEL(61,3,3), 
+     &     ALINT(61,3,3), ASQSMIN, ASQSMAX, DASQS, NSQS
+      DIMENSION PJ(2),PS(2),PW(2)
+
+      SAVE
+      DATA ATARGET /14.514D0/
+
+      if ( ndebug .gt. 3 ) CALL PARAM_PRINT(LUN)
+      if ( ndebug .gt. 0 ) THEN
+        WRITE (LUN, 10)
+        WRITE (LUN, 15)
+        WRITE (LUN, 16)
+        WRITE (LUN, 18)
+10    FORMAT(//,' Table of cross sections, and average number',
+     &         ' of minijets and wounded nucleons ')
+15    FORMAT('        [sqrt(s) in GeV, cross sections in mbarn]. ')
+16    FORMAT(' sqrt(s) sig(pp) sig(pA) <n_s> <n_j> <n_w>',
+     &    ' sig(pip) sig(piA) <n_s> <n_j> <n_w>')
+18    FORMAT(1X,77('-') )
+        DO J=1,61,1
+         SQS = 10.D0**(ASQSMIN + DASQS*DBLE(J-1))
+
+         DO K=1,2
+
+           PW(K) = ATARGET*SSIG(J,K)/SSIGN(J,K,1)
+
+           PJ(K) = 0.D0
+           PS(K) = 0.D0
+           DO NS=0,NS_max
+             DO NJ=0,NH_max
+               IF(NJ.GT.0) THEN
+                 PROB = PJETC(NS,NJ,J,K) - PJETC(NS,NJ-1,J,K)
+               ELSE IF(NS.GT.0) THEN
+                 PROB = PJETC(NS,NJ,J,K) - PJETC(NS-1,NH_max,J,K)
+               ELSE
+                 PROB = 0.D0
+               ENDIF
+               PJ(K) = PJ(K)+DBLE(NJ)*PROB
+               PS(K) = PS(K)+DBLE(NS)*PROB
+             ENDDO
+           ENDDO
+
+         ENDDO
+
+         WRITE(LUN,20) SQS,SSIG(J,1),SSIGN(J,1,1),PS(1),PJ(1),PW(1)
+     &                      ,SSIG(J,2),SSIGN(J,2,1),PS(2),PJ(2),PW(2)
+
+        ENDDO
+
+        WRITE(LUN, 18)
+      endif
+20    FORMAT(1p,E10.2,2(2F7.1,1X,3F6.2,1X))
+
+      return
+      END
+
+C=======================================================================
+
+            SUBROUTINE SIG_AIR_INI 
+
+C-----------------------------------------------------------------------
+C...  Initialize the cross section and interaction lengths on air, 
+C.    nitrogen and oxygen      
+C.  (this version initializes p-air, pi-air, and K-air cross sections)
+C.
+C.  also calculates the low mass beam diffraction cross section in hAir \FR
+C.  using the same lambda for all hadrons
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+      
+      DOUBLE PRECISION SSIG,PJETC,SSIGN,SSIGNSD,SSIGNEL,ALINT,ASQSMIN,
+     &     ASQSMAX,DASQS
+      INTEGER NSQS
+      COMMON /S_CCSIG/ SSIG(61,3), PJETC(0:NS_max,0:NH_max,61,2),
+     &     SSIGN(61,3,3), SSIGNSD(61,3,3), SSIGNEL(61,3,3), 
+     &     ALINT(61,3,3), ASQSMIN, ASQSMAX, DASQS, NSQS
+      COMMON /GLAUB_SCR/ XI_MAX , ALAM(61)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      DIMENSION SIGDIF(3)
+      DIMENSION ITARGC(3)
+      CHARACTER*3 TARGN
+      DIMENSION TARGN(3)
+      SAVE
+      DATA AVOG /6.0221367D-04/
+      DATA ATARGET /14.514D0/
+      DATA ITARGC /0,14,16/
+      DATA TARGN /'air','nit','oxy'/
+
+      IF ( IPAR(12).GT.0 ) THEN
+         if (ndebug.gt.0) then
+           WRITE(LUN,*) ' SIG_AIR_INI:'
+           WRITE(LUN,*)' using Goulianos param. for res.coupling..'
+         endif
+         XI_MAX = 0.02D0
+         if (ndebug.gt.0)WRITE(LUN,*)' low mass Xi_max: ' , XI_MAX
+      ENDIF
+
+C...target loop (air, N, O)      
+      DO IK=1,3
+         IAT = ITARGC(IK)
+         WRITE(6,*) 'SIG_AIR_INI: initializing target: (i,A)',
+     &    ik, IAT, TARGN(IK) , '..'
+C...particle loop (p, pi, K)
+         DO K=1,3
+         
+            if (NDEBUG .gt. 0 ) then
+               WRITE(6,'(/,1X,A,A)') 
+     &          'Table: J, IK, sqs,    SIGtot,     SIGprod,    SIG_SD,',
+     &'     Lambda  '
+               WRITE(6,*) 
+     &              '-------------------------------------------------',
+     &              '-------------'
+            endif
+            DO J=1,NSQS
+
+               ASQS = ASQSMIN + DASQS*DBLE(J-1)
+               SQS = 10.D0**ASQS
+
+               IF (K.EQ.1) THEN
+c     Goulianos param. from GAP-2012-056, Mx**2s = 0.02
+c     against PDG elastic cross section
+                  CALL SIB_HADCS1
+     &             (K,SQS,SIGT1,SIGEL1,SIGINEL1,SLOPE1,RHO1)
+                  SIGEFF = 0.68D0*(1.D0+36.D0/SQS**2)*
+     &                 dlog(0.6D0+XI_MAX/1.5D0*SQS**2)
+                  ALAM(J) = dSQRT(SIGEFF/SIGEL1)
+               ENDIF
+               CALL SIB_SIGMA_HP(K,SQS,
+     &              SIGT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO)
+               IF(IK.eq.1)THEN
+c     fixed O-N mixture
+                  CALL SIG_H_AIR
+     &                 (SIGT, SLOPE, RHO, ALAM(J),
+     &                 SSIGT, SSIGEL, SSIGQE, SSIGSD, SSIGQSD)
+               ELSE
+                  CALL SIG_H_NUC
+     &                 (IAT, SIGT, SLOPE, RHO, ALAM(J),
+     &                 SSIGT, SSIGEL, SSIGQE, SSIGSD, SSIGQSD)
+               ENDIF
+               if (ndebug .gt. 0 ) WRITE(6,'(1X,I2,1P,5E12.3)') 
+     &              K,SQS,SSIGT,SSIGT-SSIGQE,SSIGQSD,ALAM(J)
+C     particle production cross section
+               SSIGN(J,K,IK) = SSIGT-SSIGQE
+c     diffractive cross section               
+               SSIGNSD(J,K,IK) = SSIGQSD
+c     elastic cross section
+               SSIGNEL(J,K,IK) = SSIGEL
+c     interaction length
+               IF(IK.eq.1)then
+                  ALINT(J,K,IK) = 1.D0/(AVOG*SSIGn(j,K,IK)/ATARGET)
+               else
+                  ALINT(J,K,IK) = 1.D0/(AVOG*SSIGn(j,K,IK)/IAT)
+               endif
+            ENDDO
+         ENDDO
+     
+         if (ndebug .gt. 0 ) then
+            WRITE(6,'(/,1X,A)') 
+     &           ' SIG_AIR_INI: NUCLIB interaction lengths [g/cm**2]'
+            WRITE(6,*) 'target:', TARGN(IK)
+            WRITE(6,'(1X,A)') 
+     &           '     sqs,       p-targ,      pi-targ,     K-targ'
+            DO J=1,NSQS
+               ASQS = ASQSMIN + DASQS*DBLE(J-1)
+               SQS = 10.D0**ASQS
+               WRITE(6,'(1X,1P,4E12.3)') 
+     &              SQS,ALINT(J,1,IK),ALINT(J,2,IK),ALINT(J,3,IK)
+            ENDDO
+         endif
+      ENDDO
+      END
+C=======================================================================
+
+      SUBROUTINE SAMPLE_TARGET(NW,XCHG,KRMNT,XJET,Irec,IREJ)
+
+C-----------------------------------------------------------------------/
+C...Subroutine to sample valence and sea quark kinematic variables
+C     on the target side
+C.    fills IFLT,X2 and PXT,PYT
+C.    1,2 are valence quarks, 3,4 are additional sea quarks
+C.    transverse momentum is shared between the val. and sea pairs
+C.    X and flv are exchanged occasionally, not pt so far
+C-------------------------------------------------------------------      
+      IMPLICIT NONE
+
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+c     external types
+      DOUBLE PRECISION XJET,XCHG
+      DIMENSION XJET(NW_max)
+      INTEGER KRMNT,NW,IREC,IREJ
+      DIMENSION KRMNT(NW_max)
+
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      
+      DOUBLE PRECISION STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      COMMON /S_CUTOFF/ STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+
+      INTEGER IBMRDX,ITGRDX,IHMJDX,ISMJDX,ICSTDX,IINTDX
+      COMMON /S_INDX/ IBMRDX(3),ITGRDX(NW_max,3),
+     &     IHMJDX(NW_max*NH_max),IINTDX(NW_max),
+     &     ISMJDX(NW_max*NS_max),ICSTDX(2*NW_max,3)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+      INTEGER IRMNT,KRB,KRT
+      DOUBLE PRECISION XRMASS,XRMEX
+      COMMON /S_RMNT/ XRMASS(2),XRMEX(2),IRMNT(NW_max),KRB,KRT(NW_max)
+
+c     internal types
+      DOUBLE PRECISION XX,X2,PX,PXT,PY,PYT,PZ,PZ1,PZ2
+      DIMENSION XX(2*NW_max+2),PX(2*NW_max+2),PY(2*NW_max+2)
+      DIMENSION X2(4*NW_max),PXT(4*NW_max),PYT(4*NW_max)
+      INTEGER IFL,IFLT,IREJ1,J,J1,J2,J3,J4,JJ,JJJ,JI,I,KID,Iref1,
+     &     Iref,KID1
+      DIMENSION IFL(2*NW_max+2),IFLT(4*NW_max)
+      SAVE
+
+      IREJ1 = 1
+
+      IF(ndebug.gt.2) 
+     +     WRITE(LUN,*)
+     +     ' SAMPLE_TARGET: NW,XCHG,LRMNT,XJET,IREC,IREJ',
+     +     NW,XCHG,(KRMNT(j),j=1,NW),(XJET(j),j=1,NW),IREC,IREJ
+
+      DO J=1,NW ! zero arrays
+         j1 = 1+4*(j-1)
+         j2 = j1 + 1
+         j3 = j2 + 1
+         j4 = j3 + 1
+         X2(j1) = 0.D0
+         X2(j2) = 0.D0
+         X2(j3) = 0.D0
+         X2(j4) = 0.D0
+         PXT(j1) = 0.D0
+         PXT(j2) = 0.D0
+         PXT(j3) = 0.D0
+         PXT(j4) = 0.D0
+         PyT(j1) = 0.D0
+         PyT(j2) = 0.D0
+         PyT(j3) = 0.D0
+         PyT(j4) = 0.D0
+      ENDDO
+
+      DO j=1,NW
+c     read target id from event info 
+         KID = KT(J)
+c     reset rejection
+         IREJ = IREJ1
+c     always fills remnant partons into 1,2 and c.strings into 3,4
+c     so far only one interaction possible (beam is always a single hadron!)        
+         CALL SAMPLE_PROJECTILE
+     +        (KID,1,KRMNT(j),XCHG,XJET(j),XX,PX,PY,IFL,KID1,IREJ)
+         IF(IREJ.ne.0) RETURN
+
+c     write to target variables
+         do jj=3-2*KRMNT(j),4
+            ji = jj+4*(j-1)
+            IFLT(ji) = IFL(jj)
+            X2(ji) = XX(jj)
+            PXT(ji) = PX(jj)
+            PYT(ji) = PY(jj)
+         enddo
+
+         IF(KRMNT(j).ne.0)THEN
+c     by convention hadron is split such that diq is 2nd flv
+c     for string frag routine argument flv1 is along +z, flv2 -z
+c     by convention again flv2 in the remnant is passed to +z and flv1 to -z
+c     therefor on the target side the flavors need to be switched such that
+c     the diq is along -z
+            j1 = 1+4*(j-1)
+            j2 = j1 + 1
+            CALL ISWTCH_LMNTS(IFLT(j1),IFLT(j2))
+         ENDIF
+
+c     central strings
+c     flavors need to be switched as well (strictly speaking color)
+c     in dual-parton model: q : color , diq : anticolor
+c     need to combine q with diq for color neutral system..
+         j3 = 3+4*(j-1)
+         j4 = j3 + 1
+         CALL ISWTCH_LMNTS(IFLT(j3),IFLT(j4))
+         CALL SWTCH_LMNTS(X2(j3),X2(j4))
+         
+c     reset remnant id 
+c     might have changed in flavor exchange (actually color)...
+         KRT(J) = KID1
+      ENDDO
+
+C..   write target partons to stack
+      DO I=1,NW
+         IF(KRMNT(I).ne.0)THEN
+c     add proto-remnant
+            j1 = 1+4*(i-1)
+            j2 = j1 + 1
+            CALL ADD_PRTN(PXT(J1)+PXT(J2),PYT(J1)+PYT(J2),
+     &           -0.5D0*SQS*(X2(J1)+X2(j2)),0.5D0*SQS*(X2(J1)+X2(j2)),
+     &           0.D0,-2,0,0,Iref1)
+            ITGRDX(I,1) = Iref1
+            CALL ADD_INT_REF(Iref1,IINTDX(I))
+c     add quarks to stack
+            do j = 1,2
+               jj = 4*(i-1)+j
+               jjj = 4*(i-1)+j + 2
+               pz1 = (0.5D0*SQS*X2(JJ))**2
+c               PZ1 = (0.5D0*SQS*X2(JJ))**2-PXT(JJ)**2-PYT(JJ)**2
+               CALL ADD_PRTN(PXT(JJ),PYT(JJ),-sqrt(pz1),
+     &              0.5D0*SQS*X2(JJ),0.D0,IFLT(JJ),1,Iref1,Iref)
+               ITGRDX(I,j+1) = Iref
+               pz2 = (0.5D0*SQS*X2(JJj))**2
+c               pz2 = (0.5D0*SQS*X2(JJj))**2-PXT(JJj)**2-PYT(JJj)**2
+               CALL ADD_PRTN(PXT(JJj),PYT(JJj),-sqrt(pz2),
+     &              0.5D0*SQS*X2(JJj),0.D0,IFLT(JJj),1,0,Iref)
+               ICSTDX(2*(I-1)+j,3) = Iref
+            enddo
+         else
+            do j = 3,4
+               jj = 4*(i-1)+j
+               pz = (0.5D0*SQS*X2(JJ))**2
+c               pz = (0.5D0*SQS*X2(JJ))**2-PXT(JJ)**2-PYT(JJ)**2
+               CALL ADD_PRTN(PXT(JJ),PYT(JJ),-sqrt(pz),
+     &              0.5D0*SQS*X2(JJ),0.D0,IFLT(JJ),1,0,Iref)
+               ICSTDX(2*(I-1)+(J-2),3) = Iref
+            enddo
+         ENDIF
+      ENDDO
+      IF(NDEBUG.GT.3) CALL PRNT_PRTN_STCK
+
+      IREJ = 0
+      END
+C=======================================================================
+
+      SUBROUTINE SIGMA_NUC_AIR(IA,ECM,KINT)
+
+C-----------------------------------------------------------------------
+C.  wrapping for SIGMA_NUC in NUCLIB
+C...Compute with a montecarlo method the "production"
+C.  and "quasi-elastic" cross section for  
+C.  a nucleus-nucleus interaction
+C.  nucleon - nucleon cross section is taken from 
+C.  the table calculated by SIBYLL_INI
+C.
+C.  INPUT : IA            = mass of target nucleus
+C.          ECM          = c.m. energy
+C.          KINT            = number  of interactions to generate
+C.  OUTPUT : SIGMA (mbarn) = "production" cross section
+C.           DSIGMA   "    = error
+C.           SIGQE    "    = "quasi-elastic" cross section
+C.           DSIGQE   "    = error
+C.      in COMMON /NUCNUCSIG/ 
+C.           additional output is in the common block  /CPROBAB/
+C.           Prob(n_A), Prob(n_B), Prob(n_int)
+C..........................................................................
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /NUCNUCSIG/ SIGPROD,DSIGPROD,SIGQE,DSIGQE,IBE,ITG
+      DIMENSION SIGDIF(3)
+      SAVE
+      DATA NDB /0/
+      
+      DSIGPROD = 0.D0
+      DSIGQE = 0.D0
+
+      CALL SIB_SIGMA_HP(1,ECM,SIGT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO)
+      CALL SIGMA_AIR(IA,SIGINEL,SIGEL,KINT,SIGPROD,DSIGPROD,
+     +     SIGQE,DSIGQE)
+      IBE = IA
+      ITG = 0
+      IF(DSIGPROD/SIGPROD.gt.0.1D0)THEN
+         IF( NDB.EQ.0 ) 
+     +     PRINT*,'SIG_NUC_AIR: warning! : large error in cross section'
+         NDB = 1
+      ENDIF
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIG_NUC_AIR(IA,SIGPP,SIGPPEL,KINT)
+
+C-----------------------------------------------------------------------
+C.  wrapping for SIGMA_NUC in NUCLIB
+C...Compute with a montecarlo method the "production"
+C.  and "quasi-elastic" cross section for  
+C.  a nucleus-nucleus interaction
+C.
+C.  INPUT : IA            = mass of target nucleus
+C.          IB            = mass of projectile nucleus
+C.          SIGPP (mbarn)  = inelastic pp cross section
+C.          SIGPPEL        = elastic pp cross section
+C.          KINT            = number  of interactions to generate
+C.  OUTPUT : SIGMA (mbarn) = "production" cross section
+C.           DSIGMA   "    = error
+C.           SIGQE    "    = "quasi-elastic" cross section
+C.           DSIGQE   "    = error
+C.      in COMMON /NUCNUCSIG/ 
+C.           additional output is in the common block  /CPROBAB/
+C.           Prob(n_A), Prob(n_B), Prob(n_int)
+C..........................................................................
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /NUCNUCSIG/ SIGPROD,DSIGPROD,SIGQE,DSIGQE,IBE,ITG
+      SAVE
+
+      DSIGPROD = 0.D0
+      DSIGQE = 0.D0
+      CALL SIGMA_AIR(IA,SIGPP,SIGPPEL,KINT,SIGPROD,DSIGPROD,
+     +     SIGQE,DSIGQE)
+      IBE = IA
+      ITG = 0
+      IF(DSIGPROD/SIGPROD.gt.0.1D0)THEN
+         IF( NDB.EQ.0 ) 
+     +     PRINT*,'SIG_NUC_AIR: warning! : large error in cross section'
+         NDB = 1
+      ENDIF
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIG_NUC_NUC(IA,IB,SIGPP,SIGPPEL,KINT)
+
+C-----------------------------------------------------------------------
+C.  wrapping for SIGMA_NUC in NUCLIB
+C...Compute with a montecarlo method the "production"
+C.  and "quasi-elastic" cross section for  
+C.  a nucleus-nucleus interaction
+C.
+C.  INPUT : IA            = mass of target nucleus
+C.          IB            = mass of projectile nucleus
+C.          SIGPP (mbarn)  = inelastic pp cross section
+C.          SIGPPEL        = elastic pp cross section
+C.          KINT            = number  of interactions to generate
+C.  OUTPUT : SIGMA (mbarn) = "production" cross section
+C.           DSIGMA   "    = error
+C.           SIGQE    "    = "quasi-elastic" cross section
+C.           DSIGQE   "    = error
+C.      in COMMON /NUCNUCSIG/ 
+C.           additional output is in the common block  /CPROBAB/
+C.           Prob(n_A), Prob(n_B), Prob(n_int)
+C..........................................................................
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /NUCNUCSIG/ SIGPROD,DSIGPROD,SIGQE,DSIGQE,IBE,ITG
+      SAVE
+
+      DSIGPROD = 0.D0
+      DSIGQE = 0.D0
+      CALL SIGMA_MC(IA,IB,SIGPP,SIGPPEL,KINT,SIGPROD,DSIGPROD,
+     +     SIGQE,DSIGQE)
+      IBE = IA
+      ITG = IB
+      IF(DSIGPROD/SIGPROD.gt.0.1D0)THEN
+         IF( NDB.EQ.0 ) 
+     +     PRINT*,'SIG_NUC_NUC: warning! : large error in cross section'
+         NDB = 1
+      ENDIF
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE SIG_HAD_NUC(L,IA,ECM,ALAM,ICSMOD,IPARM)
+
+C-----------------------------------------------------------------------
+C**********************************************************************
+C...Subroutine to compute hadron-nucleus cross sections
+C.  according to:
+C.  R.J. Glauber and G.Matthiae  Nucl.Phys. B21, 135, (1970)
+C.
+C.
+C.  INPUT :  L projectile particle (1:p , 2:pi, 3:K )
+C.           IA mass-number of target nucleus
+C.           SSIG  (mbarn) total pp cross section
+C.           SLOPE (GeV**-2)  elastic scattering slope for pp
+C.           ALPHA    real/imaginary part of the forward pp elastic
+C.                                               scattering amplitude
+C.           ALAM: inel. screening coupling
+C.
+C.  OUTPUT : ( in COMMON block /NUCSIG/ )
+C.           SIGT  = Total cross section
+C.           SIGEL = Elastic cross section
+C.           SIGQEL  = Elastic + Quasi elastic cross section
+C.           SIGSD  = beam single diff. cross section
+C......................................................................
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /NUCSIG/ SIGT,SIGEL,SIGINEL,SIGQE,SIGSD,
+     +     SIGQSD,SIGPPT,SIGPPEL,SIGPPSD,ITG
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+c      double precision dplab
+c      double precision DSSIG,DSLOPE,DALPHA,DALAM
+c      DOUBLE PRECISION SG1,SGEL1,SGQE1,SGSD1,SGQSD1
+      DIMENSION SSIGDIF(3),XM(4)     
+      SAVE
+c     DATA XM / 0.93956563, 0.13956995, 0.493677, 0.93956563 /
+      DATA GEV2MB /0.3893D0/
+      DATA INIT/0/
+
+      IF(INIT.EQ.0) THEN
+c  use the masses from the mass table
+cdh     XM(1) = AM(14)     ! neutron
+        XM(1) = AM(13)     ! proton
+        XM(2) = AM(7)      ! pi+
+        XM(3) = AM(9)      ! K+
+        XM(4) = AM(14)     ! neutron
+        INIT = 1
+      ENDIF
+
+      xma = XM(L)
+      xmb = (XM(1)+XM(4))/2.D0
+
+      Plab = dsqrt(((ecm**2-xma**2-xmb**2)/(2.D0*xmb))**2-xma**2)
+
+C     hadron proton cross section to be used for calculation
+
+      IF( ICSMOD.EQ.1 ) THEN
+c     sibyll 2.1 cross section
+
+         CALL SIB_SIGMA_HP(L,ECM,SSIG,SSIGEL,SSIGINEL,SSIGDIF,SLOPE,RHO)
+
+      ELSEIF( ICSMOD.EQ.0 ) THEN
+c     cross section parametrizations
+
+         if(Ecm.gt.12.D0) then
+
+           CALL SIB_HADCSL(L,ECM,SSIG,SSIGEL,SSIGINEL,SSIGDIF,SLOPE,RHO)
+
+         else
+c     low energy parametrization
+            SSIG = (sigtot_pp(Plab)+sigtot_pn(plab))/2.D0
+            SSIGEL  = (sigela_pp(Plab)+sigela_pn(plab))/2.D0
+C     parametrization from U. Dersch et al. Nucl Phys. B579 (2000) 277
+            RHO = 6.8D0/plab**0.742D0-6.6D0/plab**0.599D0+0.124D0
+            SLOPE = (1.D0+RHO**2)*SIGTOT**2/(16.D0*PI*SIGEL)/GEV2MB
+            SSIGDIF(1) = 0.D0
+            SSIGDIF(2) = 0.D0
+            SSIGDIF(3) = 0.D0
+         endif
+      ENDIF
+      SSIGSD = SSIGDIF(1) + SSIGDIF(2)
+
+c     energy dependence of lambda parameter
+      if( IPARM.eq.1 ) then
+
+c     empirical parametrization
+         SIGEFF = 0.25D0*Ecm**2/(Ecm**2+10.D0**2)*dLOG(1000.D0*Ecm**2)
+     &        -1.5D0/2.D0
+         SIGEFF = MAX(0.D0,SIGEFF)
+         
+         ALAM = dsqrt(SIGEFF/SSIGEL)
+
+         SSIGSD = 2.D0 * SIGEFF
+         
+      elseif( IPARM.EQ.2 ) then
+         
+c     lambda derived from proton interactions
+         CALL SIB_HADCS1(1,ECM,SIGT1,SSIGEL1,SIGINEL1,SLOPE1,RHO1)
+C     parametrization by Goulianos for diff. interaction
+         SIGEFF = 0.68D0*(1.D0+36.D0/Ecm**2)
+     &        *LOG(0.6D0+0.02D0/1.5D0*Ecm**2)
+         SIGEFF = MAX(0.D0,SIGEFF)
+         ALAM = sqrt(SIGEFF/SSIGEL1)
+         
+         SSIGSD = 2.D0 * SIGEFF
+         
+      elseif( IPARM.eq.3)then
+
+C     data from Paolo Lipari's note
+         SIGTOT = 129.D0
+         SIGEL  = 0.3D0*SIGTOT
+         SIGEFF = ECM*0.01D0*SIGTOT
+         RHO    = 0.D0
+         SLOPE  = (1.D0+RHO**2)*SIGTOT**2/(16.D0*PI*SIGEL)/GEV2MB
+         ALAM   = dsqrt(SIGEFF/SIGEL)
+         
+         SSIG = SIGTOT
+         SSIGEL = SIGEL
+         SSIGSD = 2.D0 * SIGEFF
+      endif 
+
+      ALPHA = RHO
+
+C     hadron - nucleon cross section
+      
+      IF( IA.EQ.0 ) THEN
+         CALL SIG_H_AIR
+     +        (SSIG,SLOPE,ALPHA,ALAM,SG1,SGEL1,SGQE1,SGSD1,SGQSD1)
+      else
+         CALL GLAUBER2
+     +        (IA,SSIG,SLOPE,ALPHA,ALAM,SG1,SGEL1,SGQE1,SGSD1,SGQSD1)
+      endif
+
+      ITG = IA
+
+      SIGPPT = SSIG
+      SIGPPEL = SSIGEL
+      SIGPPSD = SSIGSD
+      SIGT  = SG1
+      SIGEL = SGEL1
+      SIGQE = SGQE1
+      SIGSD = SGSD1
+      SIGQSD = SGQSD1
+      SIGINEL = SIGT - SIGEL
+
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE SIG_H_AIR
+     +     (SSIG,SLOPE,ALPHA,ALAM,SIGT,SIGEL,SIGQE,SIGSD,SIGQSD)
+
+C-----------------------------------------------------------------------
+C**********************************************************************
+C...Subroutine to compute hadron-air cross sections
+C.  according to:
+C.  R.J. Glauber and G.Matthiae  Nucl.Phys. B21, 135, (1970)
+C.
+C.  Air is a linear combination of Nitrogen and oxygen
+C.
+C.  INPUT :  SSIG  (mbarn) total pp cross section
+C.           SLOPE (GeV**-2)  elastic scattering slope for pp
+C.           ALPHA    real/imaginary part of the forward pp elastic
+C.                                               scattering amplitude
+C.           ALAM  coupling to inel. intermediat states
+C.  OUTPUT : SIGT  = Total cross section
+C.           SIGEL = Elastic cross section
+C.           SIGQEL  = Elastic + Quasi elastic cross section
+C.           SIGSD   = single diff. cross section (beam) 
+C.           SIGQSD  = Elastic + Quasi elastic SD cross section (beam)
+C.
+C.  ALSO including interface from single precision in SIBYLL to
+C.       double precision in GLAUBER2
+C......................................................................
+      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+      DATA FOX /0.21522D0/  !atomic percentage of 'non-nitrogen' in air
+
+      CALL GLAUBER2
+     +  (14,SSIG,SLOPE,ALPHA,ALAM,SIG1,SIGEL1,SIGQE1,SIGSD1,SIGQSD1)
+      CALL GLAUBER2
+     +  (16,SSIG,SLOPE,ALPHA,ALAM,SIG2,SIGEL2,SIGQE2,SIGSD2,SIGQSD2)
+
+      SIGT  = (1.D0-FOX)*SIG1   + FOX*SIG2
+      SIGEL = (1.D0-FOX)*SIGEL1 + FOX*SIGEL2
+      SIGQE = (1.D0-FOX)*SIGQE1 + FOX*SIGQE2
+      SIGSD = (1.D0-FOX)*SIGSD1 + FOX*SIGSD2
+      SIGQSD = (1.D0-FOX)*SIGQSD1 + FOX*SIGQSD2
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIG_H_NUC
+     +     (IAT,SSIG,SLOPE,ALPHA,ALAM,SIGT,SIGEL,SIGQE,SIGSD,SIGQSD)
+
+C-----------------------------------------------------------------------
+C**********************************************************************
+C...Subroutine to compute hadron-nucleus cross sections
+C.  according to:
+C.  R.J. Glauber and G.Matthiae  Nucl.Phys. B21, 135, (1970)
+C.
+C.  INPUT :  IAT   nucleon number in target nucleus
+C.           SSIG  (mbarn) total pp cross section
+C.           SLOPE (GeV**-2)  elastic scattering slope for pp
+C.           ALPHA    real/imaginary part of the forward pp elastic
+C.                                               scattering amplitude
+C.  OUTPUT : SIGT  = Total cross section
+C.           SIGEL = Elastic cross section
+C.           SIGQEL  = Elastic + Quasi elastic cross section
+C.           SIGSD   = single diff. cross section (beam) 
+C.           SIGQSD  = Elastic + Quasi elastic SD cross section (beam)
+C.
+C......................................................................
+      IMPLICIT NONE
+      INTEGER IAT
+      DOUBLE PRECISION SSIG,SLOPE,ALPHA,ALAM      
+      DOUBLE PRECISION SIG1,SIGEL1,SIGQE1,SIGSD1,SIGQSD1
+      DOUBLE PRECISION SIGT,SIGEL,SIGQE,SIGSD,SIGQSD
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      SAVE
+      IF(IAT.eq.0.or.IAT.gt.18) THEN
+         WRITE(LUN,'(//,1X,A)') 
+     &        ' SIG_H_NUC: number of target nucleons too large!',
+     &        ' (1<=IAT<=18)'
+         SIGT = -1.D0
+         STOP
+      ENDIF
+
+      CALL GLAUBER2
+     +  (IAT,SSIG,SLOPE,ALPHA,ALAM,SIG1,SIGEL1,SIGQE1,SIGSD1,SIGQSD1)
+      SIGT  = SIG1   
+      SIGEL = SIGEL1 
+      SIGQE = SIGQE1 
+      SIGSD = SIGSD1 
+      SIGQSD = SIGQSD1
+      RETURN
+      END
+
+C=======================================================================
+      
+      SUBROUTINE GLAUBER2
+     +     (JA,SSIG,SLOPE,ALPHA,ALAM,SIGT,SIGEL,SIGQEL,SIGSD,SIGQSD)
+
+C-----------------------------------------------------------------------
+C...Subroutine to compute hadron-Nucleus cross sections
+C.  according to:
+C.  R.J. Glauber and G.Matthiae  Nucl.Phys. B21, 135, (1970)
+C.
+C.  This formulas assume that the target nucleus  density is
+C.  modeled by a shell-model form.  A reasonable range of models
+C.  is  4 < JA < 18
+C.
+C.  This is a modified version with a two-channel model for inelastic
+C.  intermediate states of low mass (R. Engel 2012/03/26)
+C.
+C.  INPUT :  A = mass number of the nucleus
+C.           SSIG  (mbarn) total pp cross section
+C.           SLOPE (GeV**-2)  elastic scattering slope for pp
+C.           ALAM  enhancement factor (sqrt of sigma_sd1/sigma_ela)
+C.           ALPHA    real/imaginary part of the forward pp elastic
+C.                                               scattering amplitude
+C.  OUTPUT : SIGT  = Total cross section
+C.           SIGEL = Elastic cross section
+C.           SIGQEL  = Elastic + Quasi elastic cross section
+C.           SIGSD = single diff. cross section
+C.           SIGQSD = Quasi single diff. cross section
+C.
+C. Internally  everything is computed in GeV (length = GeV**-1)
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CA0SH/ R0, R02
+      COMPLEX*16  ZS1, ZS2, ZP1, ZP2, Z1, Z2, OM12
+      DIMENSION RR(18)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+      DATA BMAX /100.D0/            ! GeV**-1
+      DATA NB /500/
+C...data on Sqrt[<r**2>] (fm). (A=5,8 are not correct).
+C   From Barett and Jackson
+      DATA RR /0.81,2.095,1.88,1.674, 2.56,2.56,2.41,2.5,2.519,2.45
+     +          ,2.37, 2.460, 2.440, 2.54, 2.58, 2.718, 2.662,2.789 /
+
+      A = DBLE(JA)
+C...Parameter of shell model density
+      R0 = RR(JA)/0.197D0/dSQRT(5.D0/2.D0 - 4.D0/A)    ! GeV**-1
+      R02 = R0*R0
+
+      SIG1 = (1.D0+ALAM) * SSIG/CMBARN            ! GeV**-2
+      SIG2 = (1.D0-ALAM) * SSIG/CMBARN
+      SIG12 = dSQRT((1.D0+ALAM)*(1.D0-ALAM)) * SSIG/CMBARN
+      DB = BMAX/DBLE(NB)
+      SUM0 = 0.D0
+      SUM1 = 0.D0
+      SUM2 = 0.D0
+      SUM3 = 0.D0
+      SUM4 = 0.D0
+      DO JB=1,NB
+
+        B = DB*(DBLE(JB)-0.5D0)
+
+        GS1 = GLAUBGS_D (B,SLOPE, SIG1)
+        XS1 = (1.D0- GS1)
+        YS1 = GS1*ALPHA
+        ZS1 = DCMPLX(XS1,YS1)
+
+        GP1 = GLAUBGP_D (B,SLOPE, SIG1)
+        XP1 = (1.D0- GP1)
+        YP1 = GP1*ALPHA
+        ZP1 = DCMPLX(XP1,YP1)
+
+        Z1 = ZS1**4 * ZP1**(A-4.D0)
+
+        GS2 = GLAUBGS_D (B,SLOPE, SIG2)
+        XS2 = (1.D0- GS2)
+        YS2 = GS2*ALPHA
+        ZS2 = DCMPLX(XS2,YS2)
+
+        GP2 = GLAUBGP_D (B,SLOPE, SIG2)
+        XP2 = (1.D0- GP2)
+        YP2 = GP2*ALPHA
+        ZP2 = DCMPLX(XP2,YP2)
+
+        Z2 = ZS2**4 * ZP2**(A-4.D0)
+
+        XZ = 0.5D0 * DREAL(Z1+Z2)
+        YZ = 0.5D0 * DIMAG(Z1+Z2)
+
+        XZ2 = 0.5D0 * DREAL(Z2-Z1)
+        YZ2 = 0.5D0 * DIMAG(Z2-Z1)
+
+        SUM0 = SUM0 + (1.D0-XZ)*B
+
+        SUM1 = SUM1 + ((1.D0-XZ)**2 + YZ**2)*B
+
+        SUM3 = SUM3 + (XZ2**2 + YZ2**2)*B
+
+        OMS1 = OMEGAS_D(B,SIG1,SLOPE,ALPHA)
+        OMS2 = OMEGAS_D(B,SIG2,SLOPE,ALPHA)
+        OMS12 = OMEGAS_D(B,SIG12,SLOPE,ALPHA)
+
+        OMP1 = OMEGAP_D(B,SIG1,SLOPE,ALPHA)
+        OMP2 = OMEGAP_D(B,SIG2,SLOPE,ALPHA)
+        OMP12 = OMEGAP_D(B,SIG12,SLOPE,ALPHA)
+
+        OM1 = (1.D0 - 2.D0*GS1 + OMS1)**4
+     &      * (1.D0 - 2.D0*GP1 + OMP1)**(A-4.D0)
+        OM2 = (1.D0 - 2.D0*GS2 + OMS2)**4
+     &      * (1.D0 - 2.D0*GP2 + OMP2)**(A-4.D0)
+        OM12 = (1.D0 - GS1*DCMPLX(1.D0,ALPHA)-GS2*DCMPLX(1.D0,-ALPHA)
+     &               + OMS12)**4
+     &       * (1.D0 - GP1*DCMPLX(1.D0,ALPHA)-GP2*DCMPLX(1.D0,-ALPHA)
+     &               + OMP12)**(A-4.D0)
+        SUM2 = SUM2 + (1.D0-2.D0*XZ + (OM1+OM2)/4.D0
+     &                 + DREAL(OM12)/2.D0)*B
+        SUM4 = SUM4 + ((OM1+OM2)/4.D0
+     &                 - DREAL(OM12)/2.D0)*B
+
+      ENDDO
+
+      SIGT =   SUM0 * DB * 4.D0*PI * CMBARN
+      SIGEL =  SUM1 * DB * TWOPI * CMBARN
+      SIGQEL = SUM2 * DB * TWOPI * CMBARN
+      SIGSD =  SUM3 * DB * TWOPI * CMBARN
+      SIGQSD = SUM4 * DB * TWOPI * CMBARN
+      END
+
+C=======================================================================
+
+      FUNCTION GLAUBGS_D (B,SLOPE, SIG)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CA0SH/ A0, A02
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      GAMMA2 = A02/4.D0 + 0.5D0*SLOPE
+      ARG = B**2/(4.D0*GAMMA2)
+      GLAUBGS_D = SIG/(8.D0*PI*GAMMA2) * EXP(-ARG)
+      RETURN
+      END
+
+C=======================================================================
+
+      FUNCTION GLAUBGP_D (B,SLOPE, SIG)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CA0SH/ A0, A02
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      GAMMA2 = A02/4.D0 + 0.5D0*SLOPE
+      ARG = B**2/(4.D0*GAMMA2)
+      C1 = 1.D0- A02/(6.D0*GAMMA2)*(1.D0-ARG)
+      GLAUBGP_D = SIG/(8.D0*PI*GAMMA2) *  C1 * EXP(-ARG)
+      RETURN
+      END
+
+C=======================================================================
+
+      FUNCTION OMEGAS_D (B, SIG, SLOPE, RHO)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CA0SH/ A0, A02
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      ETA2 = 0.25D0*(A02 + SLOPE)
+      F02 = SIG*SIG*(1.D0+RHO*RHO)/(16.D0*PI**2)
+      ARG = -B*B/(4.D0*ETA2)
+      OMEGAS_D = F02/(4.D0*ETA2*SLOPE) *EXP(ARG)
+      RETURN
+      END
+
+C=======================================================================
+
+      FUNCTION OMEGAP_D (B, SIG, SLOPE, RHO)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CA0SH/ A0, A02
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      ETA2 = 0.25D0*(A02 + SLOPE)
+      F02 = SIG*SIG*(1.D0+RHO*RHO)/(16.D0*PI**2)
+      ARG = -B*B/(4.D0*ETA2)
+      OMEGAP_D=F02/(4.D0*ETA2*SLOPE)*(1.D0-A02/(6.D0*ETA2)*(1.D0+ARG))
+     $                                         *EXP(ARG)
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE REMOVE_PI0(XRATE,N1,N2)
+
+C-----------------------------------------------------------------------
+C     routine to exchange pi0 on stack with charged pions
+C     violating charge conservation.
+C     final pions will be off-shell
+C      
+C     Input: exchange rate and stack positions inbetween
+C     which pions shall be exchanged.
+C     
+C---------------------------------------------------------     
+      IMPLICIT NONE
+c     Commons
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+C     external types
+      DOUBLE PRECISION XRATE
+      INTEGER N1,N2
+C     internals
+      INTEGER I,LL,LA,IFPI0
+      DOUBLE PRECISION S_RNDM
+      SAVE
+
+      IF(NDEBUG.gt.0)write(lun,*)
+     &               ' REMOVE_PI0: Rate,Mode:',xrate,IPAR(50)
+C     select exchange model      
+      IF(IPAR(50).eq.1)THEN
+C     stack loop     
+         DO I=N1,N2
+            LL = MOD(LLIST(I),10000)
+            LA = IABS(LL)
+c     IF(LA.eq.6)THEN
+            IFPI0=(1-MIN(IABS(1-LA/6),1))*MAX(1-MOD(LA,6),0)
+c     replace with pi+ or pi-
+            LL=LL+IFPI0*(2-INT(MIN((2.D0+XRATE)*S_RNDM(LA),
+     &                                                 3.D0-EPS10)))
+            LLIST(I) = LL
+            IF(NDEBUG.gt.1)
+     &           WRITE(LUN,*) ' REMOVE_PI0: LA,IFPI0,LNEW:',LA,IFPI0,LL
+         ENDDO
+      ENDIF         
+      END
+C=======================================================================
+
+      SUBROUTINE SAMPLE_SEA_INDV(KRMNT,XMINA,XMINA_SEA,NSEA,
+     &     XREM0,ALPHA,ASUP,XQMASS,XMAX,XX,IREJ)
+
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      INTEGER ITRY, NREJ
+      COMMON /S_CNT/ ITRY(20), NREJ(20)
+
+      DOUBLE PRECISION XMINA,XMINA_SEA,XREM0,ALPHA,ASUP,XQMASS,XMAX
+      INTEGER NSEA,KRMNT
+      DOUBLE PRECISION XX
+      DIMENSION XX(2*NW_max+2)
+      INTEGER IREJ
+
+      DOUBLE PRECISION XREM,XKIN,X1,X2,pt,S_RNDM,XQM
+      INTEGER ICNT2,J,jj1,jj2
+      SAVE
+      DATA ICNT2 /0/
+      
+      IF(ndebug.gt.2)
+     &    write(lun,*)' SAMPLE_SEA_INDV: called with ',
+     &     '(KRMNT,XMINA,XMINA_SEA,NSEA,XREM0,ALPHA,ASUP,XQMASS,XMAX):',
+     &     KRMNT,XMINA,XMINA_SEA,NSEA,XREM0,ALPHA,ASUP,XQMASS,XMAX
+      XREM = 0.D0
+      XKIN = 0.1D0
+      XQM = XQMASS
+      ITRY(4) = 0
+      DO WHILE ( XREM .lt. XMINA )
+         XREM = XREM0
+         IF ( XREM .LT. 2.D0*XMINA + Nsea*XMINA_SEA
+     &        +XKIN*(1.5D0-S_RNDM(ICNT2)) ) THEN
+            IREJ = 2            ! resample event
+            RETURN
+         ENDIF
+         IF(ITRY(4).gt.Nsea/2*NREJ(4))THEN
+            ICNT2 = ICNT2 + 1
+            IF(ndebug.gt.2)THEN
+               IF(ICNT2.le.5)THEN
+                  write(lun,*)' SAMPLE_SEA_INDV: rejection!' 
+                  write(lun,*)' reached max. no. of trials!', NREJ(4)
+                  write(lun,*)' XREM0,N,XMIN:' ,XREM0,Nsea,XMINA_SEA
+               ENDIF
+               IF(ICNT2.eq.5) 
+     &              write(lun,*)' last warning of this type..'
+            ENDIF
+            IREJ = IPAR(51)
+            RETURN
+         ENDIF
+         DO j=1,Nsea/2
+c     scale for interactions other than first if Nw>1
+            IF(IPAR(75).eq.1.and.J.gt.1) XQM = XQM*PAR(118)
+            CALL SAMPLE_SEA(ALPHA,ASUP,XQM,XMAX,x1,x2,pt)
+            jj1 = 2 + 2*(j-1) + 1
+            IF(KRMNT.eq.0) jj1 = 4+2*(j-1) + 1
+            jj2 = jj1 + 1
+            XX(jj1) = x1
+            XX(jj2) = x2
+            XREM = XREM - XX(jj1) - XX(jj2)
+            IF(NDEBUG.gt.2) 
+     &           WRITE(LUN,*) '  x-frac: JW,X3,X4,XREM',
+     &           J,XX(jj1),XX(jj2),XREM
+         ENDDO
+         ITRY(4) = ITRY(4) + 1
+         IF(NDEBUG.gt.1) WRITE(LUN,*) 
+     &        ' SAMPLE_SEA_INDV: ISMPL,XREM0,XREM,XMINA,XMINSEA',
+     &        ITRY(4),XREM0,XREM,XMINA,XMINA_SEA
+      ENDDO
+      XREM0 = XREM
+      IREJ = 0
+      END
+C=======================================================================
+
+      SUBROUTINE FORCE_VECTORS(XRATE,N1,N2)
+
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+      INTEGER NFORIG,NPORIG,NIORIG,IPFLAG,IIFLAG,KINT
+      COMMON /S_PARTO/ NFORIG(NP_max),NPORIG(NP_max),NIORIG(NP_max),
+     &IPFLAG,IIFLAG,KINT
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+c     external types
+      double precision xrate
+      integer n1,n2
+
+c     internal types
+      integer ipi2vec,lcon,lreschex,ll,la,la_new,i,j,kba
+      DIMENSION IPI2VEC(99)
+      double precision pz2,xmts,xf,xfs,S_RNDM!,pts
+      
+      DIMENSION LCON(6:43),LRESCHEX(6:39)
+      INTEGER IFIRST
+      SAVE
+c     charge exchange map, i.e. pip -> pi0 ...
+      DATA LCON /7,6,6,22,21,9,9,14,13,4*0,20,19,10,9,23,24,27,27,25,
+     &     31,30,29,28,32,33,35,34,35,38,37,39,41,42,41,42/
+c     charge and spin exchange map, i.e. pip -> rho0
+c     approximate, proton and neutron should go to N(1520) not Delta
+      DATA LRESCHEX /26,27,27,31,30,9,9,42,41,19*0,45,44,45,48,47,39/ 
+      DATA IFIRST /0/
+
+      if(ifirst.eq.0)then
+         print *,'initializing..'
+         do j=1,99
+            IPI2VEC(J) = J
+         enddo
+         IPI2VEC(6) = 27      ! pi(0) ---> rho(0)
+         IPI2VEC(7) = 25      ! pi+   ---> rho+
+         IPI2VEC(8) = 26      ! pi-   ---> rho-
+         ifirst = 1
+      endif
+
+      KBA = IABS(KB)
+      
+      IF(IPAR(45).eq.1)THEN
+c     trivial exchange model      
+         do I=N1,N2
+c     replace pions with vector mesons
+            LL = mod(llist(I),10000)
+            LA = abs(LL)
+            IF(S_RNDM(I).lt.xrate)then
+c     put back on mass shell
+               la_new = IPI2VEC(LA)
+               xmts = p(i,1)**2 + p(i,2)**2 + am2(la_new)
+               pz2 = p(i,4)**2 - xmts
+               if(pz2.gt.EPS8)then
+                  p(i,3) = sign(sqrt(pz2),p(i,3))
+                  p(i,5) = am(la_new)
+                  LLIST(I) = ISIGN(la_new,ll)
+               endif
+            endif
+         enddo
+
+      ELSEIF(IPAR(45).eq.2)THEN
+c     large xf only, neutral pions only
+         do I=N1,N2
+            LL = mod(llist(I),10000)
+            LA = abs(LL)
+            IF(LA.eq.6)then
+               xf = 2.D0*p(i,3)/SQS
+               IF(S_RNDM(I).lt.xrate*xf)then
+c     exhcange and put back on mass shell
+                  la_new = IPI2VEC(la)
+                  xmts = p(i,1)**2 + p(i,2)**2 + am2(la_new)
+                  pz2 = p(i,4)**2 - xmts
+                  if(pz2.gt.EPS8)then
+                     p(i,3) = sign(dsqrt(pz2),p(i,3))
+                     p(i,5) = am(la_new)
+                     LLIST(I) = ISIGN(la_new,ll)
+                  endif
+               endif
+            endif
+         enddo
+
+      ELSEIF(IPAR(45).eq.3)THEN
+c     large xf only, charge and spin exchange
+         do I=N1,N2
+            LL = mod(llist(I),10000)
+            LA = abs(LL)
+            IF(ll.eq.LCON(KBA))then
+               xf = 2.D0*p(i,3)/sqs
+               IF(S_RNDM(I).lt.xrate*xf)then
+c     replace charge exchange product of beam with
+c     charge and spin exchange product, i.e.
+c     pip-beam -> rho0 instead of pip-beam -> pi0
+c     so replace pi0 with rho0 in final state
+                  la_new = LRESCHEX(KBA)
+c     put back on mass shell
+                  xmts = p(i,1)**2 + p(i,2)**2 + am2(la_new)
+                  pz2 = p(i,4)**2 - xmts
+                  if(pz2.gt.EPS8)then
+                     p(i,3) = sign(dsqrt(pz2),p(i,3))
+                     p(i,5) = am(la_new)
+                     LLIST(I) = ISIGN(la_new,ll)
+                  endif
+               endif
+            endif
+         enddo
+         
+      ELSEIF(IPAR(45).eq.4)THEN
+c     large xf only, charge and spin exchange
+         do I=N1,N2
+            LL = mod(llist(I),10000)
+            LA = abs(ll)
+            IF(LL.eq.LCON(KBA))then
+               xf = 2.D0*p(i,3)/sqs
+               xfs = xf ** 2
+               IF(S_RNDM(I).lt.xrate*xfs)then
+c     replace charge exchange product of beam with
+c     charge and spin exchange product, i.e.
+c     pip-beam -> rho0 instead of pip-beam -> pi0
+c     so replace pi0 with rho0 in final state
+                  la_new = LRESCHEX(KBA)
+c     put back on mass shell
+                  xmts = p(i,1)**2 + p(i,2)**2 + am2(la_new)
+                  pz2 = p(i,4)**2 - xmts
+                  if(pz2.gt.EPS8)then
+                     p(i,3) = sign(dsqrt(pz2),p(i,3))
+                     p(i,5) = am(la_new)
+                     LLIST(I) = ISIGN(la_new,ll)
+                  endif
+               endif
+            endif
+         enddo
+      ENDIF
+      if(ndebug.ge.5) CALL SIB_LIST(6)
+      END
+C=======================================================================
+
+      SUBROUTINE SAMPLE_BEAM(KID,NW,XCHG,KRMNT,XJET,IREJ)
+
+C-----------------------------------------------------------------------
+C...Subroutine to sample valence and sea quark kinematics
+C.    fills IFL?,X? and PX?,PY?
+C.    1,2 are valence quarks, 3,4 are additional sea quarks
+C.    transverse momentum is shared between the val. and sea pairs
+C.    X and flv are exchanged occasionally
+C-------------------------------------------------------------------      
+      IMPLICIT NONE
+
+      DOUBLE PRECISION XCHG,XJET
+      INTEGER KID,NW,KRMNT,IREJ
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+
+      INTEGER IBMRDX,ITGRDX,IHMJDX,ISMJDX,ICSTDX,IINTDX
+      COMMON /S_INDX/ IBMRDX(3),ITGRDX(NW_max,3),
+     &     IHMJDX(NW_max*NH_max),IINTDX(NW_max),
+     &     ISMJDX(NW_max*NS_max),ICSTDX(2*NW_max,3)
+
+      INTEGER IRMNT,KRB,KRT
+      DOUBLE PRECISION XRMASS,XRMEX
+      COMMON /S_RMNT/ XRMASS(2),XRMEX(2),IRMNT(NW_max),KRB,KRT(NW_max)
+
+      DOUBLE PRECISION X1,PXB,PYB
+      DIMENSION X1(2*NW_max+2),PXB(2*NW_max+2),PYB(2*NW_max+2)
+      INTEGER IFLB,KID1,J,J1,J2,J3,J4,Iref1,Iref,Idm
+      DIMENSION IFLB(2*NW_max+2)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+
+c     default rejection
+c     options are: 1: resample minijets (Xjet)..
+c                  2: resample non-diff event (Ns,Nh)..
+c                  3: resample event (Nw,diff,ndiff)..
+      IREJ = 1
+
+      IF(ndebug.gt.2) 
+     +     WRITE(LUN,*)
+     +     ' SAMPLE_BEAM: KID,NW,XCHG,KRMNT,XJET,IREJ',
+     +     KID,NW,XCHG,KRMNT,XJET,IREJ
+
+      CALL SAMPLE_PROJECTILE
+     +     (KID,NW,KRMNT,XCHG,XJET,X1,PXB,PYB,IFLB,KID1,IREJ)    
+      IF(IREJ.ne.0) RETURN
+
+c     set remnant id to beam
+c     will be changed if flavor is exchanged between central strings and remnant
+      KRB = KID1        
+
+C..   write beam partons to stack
+c     order is: val1, val2, q, qbar etc
+      IF(KRMNT.ne.0)THEN
+         j1 = 1
+         j2 = 2
+c     add proto-remnant (still massless)
+         CALL ADD_PRTN(PXB(J1)+PXB(J2),PYB(J1)+PYB(J2),
+     &        0.5D0*SQS*(X1(J1)+X1(J2)),
+     &        0.5D0*SQS*(X1(J1)+X1(J2)),0.D0,2,0,0,Iref1)
+         IBMRDX(1) = Iref1
+c     beam remnant always associated with first interaction
+         CALL ADD_INT_REF(Iref1,IINTDX(1))
+c     add quarks designated for remnant
+         IF(KID.lt.0)THEN
+c     if beam is antibaryon then hspli puts diq into 1st flv
+c     need to switch to fit call to string frag routine 
+c     such that diq is along +z
+            CALL ISWTCH_LMNTS(IFLB(j1),IFLB(j2))
+         ENDIF
+         CALL ADD_PRTN(PXB(J1),PYB(J1),0.5D0*SQS*X1(J1),
+     &        0.5D0*SQS*X1(J1),0.D0,IFLB(J1),1,Iref1,Iref)
+         IBMRDX(2) = Iref
+         CALL ADD_PRTN(PXB(J2),PYB(J2),0.5D0*SQS*X1(J2),
+     &        0.5D0*SQS*X1(J2),0.D0,IFLB(J2),1,Idm,Iref)
+         IBMRDX(3) = Iref
+      ENDIF
+      DO j=1,NW
+         j3 = 3+(j-1)*2
+         j4 = j3+1
+c     add sea quarks
+         CALL ADD_PRTN(PXB(J3),PYB(J3),0.5D0*SQS*X1(J3),
+     &        0.5D0*SQS*X1(J3),0.D0,IFLB(J3),1,0,Iref)
+         ICSTDX(2*(J-1)+1,2) = Iref
+         CALL ADD_PRTN(PXB(J4),PYB(J4),0.5D0*SQS*X1(J4),
+     &        0.5D0*SQS*X1(J4),0.D0,IFLB(J4),1,0,Iref)
+         ICSTDX(2*(J-1)+2,2) = Iref
+c     add parton index to cache
+      ENDDO
+      IF(NDEBUG.GT.3) CALL PRNT_PRTN_STCK
+
+      IREJ = 0
+
+      END
+C=======================================================================
+
+      SUBROUTINE FRAG_INCHRNT_DIFF(IDX,LBAD)
+
+C-----------------------------------------------------------------------
+C     routine that fragments a diffractive system               \FR'15
+C
+C     INPUT: IDX : parton stack index of 4momentum
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+      INTEGER IDX,LBAD
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+
+      INTEGER NFORIG,NPORIG,NIORIG,IPFLAG,IIFLAG,KINT
+      COMMON /S_PARTO/ NFORIG(NP_max),NPORIG(NP_max),NIORIG(NP_max),
+     &IPFLAG,IIFLAG,KINT
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+      DOUBLE PRECISION PST,PDIFF,GABE,P2,EE,P1TOT
+      DIMENSION PST(5),PDIFF(5),GABE(4),P2(4)
+      INTEGER IDIFF1,IDIFF,IPID,L0,JDIFF,NOLD,LXBAD,K,II
+      SAVE
+
+      LBAD = 2
+
+c     references are diff --> diff.hadron --> bm-partons --> tg-partons
+c     only diff and diff. hadron are read out
+c     read diff 4momentum from stack
+      CALL RD_PRTN_4VEC(IDX,PST,IPID,IDIFF1)
+      CALL RD_PRTN_4VEC(IDIFF1,PDIFF,L0,IDIFF)
+      
+C     kinematic variables
+      EE = PDIFF(5)             ! center of mass energy in diff. system
+      
+c     set diffraction code of system (1:beam,2:target,3:double)
+      JDIFF = ABS(IPID)/10
+
+      IF(NDEBUG.gt.1) WRITE(LUN,*)' FRAG_INCHRNT_DIFF: IDX,EE,L0',
+     &     IDX,EE,L0
+
+      IPFLAG = -1
+
+      NOLD = NP
+
+c     diffractive interaction in center-of-mass system of (sea,rmnt)-nuc
+      CALL SIB_DIFF(L0,JDIFF,EE,0,LXBAD)
+      IF(LXBAD.ne.0) THEN
+         IF(NDEBUG.gt.1) 
+     &        WRITE(LUN,*)' FRAG_INCHRNT_DIFF: fragmentation rejection' 
+         RETURN
+      ENDIF
+      IF(NDEBUG.gt.1) 
+     &     WRITE(LUN,*)' FRAG_INCHRNT_DIFF: particles before/after :',
+     &     NOLD,NP
+
+c     boost to hadron - hadron center-of-mass
+      do ii=1,4
+         gabe(ii) = PDIFF(ii)/PDIFF(5)
+      enddo
+      DO K=NOLD+1,NP
+         CALL SIB_ALTRA(gabe(4),gabe(1),gabe(2),
+     &        gabe(3),P(k,1),p(k,2),p(k,3),p(k,4),
+     &        P1TOT,p2(1),p2(2),p2(3),p2(4))
+         do ii=1,4
+            P(K,ii)=P2(ii)
+         enddo
+      ENDDO
+
+      LBAD = 0
+      END
+C=======================================================================
+
+      SUBROUTINE SAMPLE_MINIJET
+     &     (L,NW,NNJET,NNSOF,NJET,NSOF,X1JET,X2JET,LBAD)
+
+C-----------------------------------------------------------------------
+C     routine to sample minijets
+C     INPUT: L - hadron type (1:nucleon,2:pion or 3:kaon)
+C            NW - number of hadron-nucleon interactions
+C            NNJET(1:NW) - number of hard interactions per nucleon
+C            NNSOF(1:NW) - number of soft interactions per nucleon
+C     OUTPUT: X1JET - momentum fraction of beam in minijets
+C             X2JET(1:NW) - momentum fraction of target in minijets
+C     
+C     in addition minijets are added to parton stack
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+      
+c     external types
+      INTEGER L,NW,NNJET,NNSOF,NJET,NSOF,LBAD
+      DOUBLE PRECISION X1JET,X2JET
+      
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      
+      DOUBLE PRECISION STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      COMMON /S_CUTOFF/ STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+      INTEGER IBMRDX,ITGRDX,IHMJDX,ISMJDX,ICSTDX,IINTDX
+      COMMON /S_INDX/ IBMRDX(3),ITGRDX(NW_max,3),
+     &     IHMJDX(NW_max*NH_max),IINTDX(NW_max),
+     &     ISMJDX(NW_max*NS_max),ICSTDX(2*NW_max,3)
+      DIMENSION NNSOF(NW_max),NNJET(NW_max),X2JET(NW_max)
+
+c     internal types
+      INTEGER NALL,JW,JJ,IREF,IREFG1,IREFG2,NSOF_JW,II
+      DOUBLE PRECISION X1JJ,X2JJ,PTJET,FI,S_RNDM,SQSHALF,XM,
+     &     X1S,X2S,PTSOF,PZ,EN     
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+
+      if(Ndebug.gt.1) WRITE(LUN,*)
+     &     ' SAMPLE_MINIJETS: (L,NW,NNJET,NNSOF):',
+     &     L,NW,(NNJET(ii),ii=1,nw),(NNSOF(ii),ii=1,nw)
+
+      IF(L.eq.0) THEN
+         WRITE(LUN,*) 'SAMPLE_minijets: unknown particle? L=',L
+         CALL SIB_REJECT('SAMPLE_minijets ')
+      ENDIF
+      
+      NJET = 0
+      NSOF = 0
+      Nall = 0
+      X1JET = 0.D0
+      DO JW=1,NW
+C...hard sea-sea interactions
+         X2JET(JW) = 0.D0
+         DO JJ=1,NNJET(JW)
+           Nall = Nall+1
+           NJET = NJET+1
+           CALL SAMPLE_HARD (L,X1Jj,X2Jj,PTJET)
+           X1JET = X1JET + X1Jj           
+           X2JET(JW) = X2JET(JW)+X2Jj
+           if(Ndebug.gt.2) THEN
+              WRITE(LUN,*)
+     &             ' SAMPLE_MINIJETS: hard JJ,JW,X1JET,X2JET(JW):',
+     &             JJ,JW,X1JET,X2JET(JW)
+              WRITE(LUN,*)
+     &             '  X1,X2,PT:',X1JJ,X2JJ,PTJET
+           ENDIF
+           IF ((X2JET(JW).GT.0.9D0).OR.(X1JET.GT.0.9D0)) then
+              if(Ndebug.gt.2) WRITE(LUN,*)
+     &        ' SAMPLE_MINIJETS: not enough phase space',
+     &             ' (Ncall,Njet,lbad):',Ncall,Njet,lBAD
+              return
+           ENDIF
+           FI = TWOPI*S_RNDM(JJ)
+           XM = SQS*sqrt(X1jj*X2jj)
+           SQSHALF = 0.5D0*SQS
+c           TH = ASIN(MIN((1.D0-EPS8),2.D0*PTJET/XM))
+c     add gluon-gluon string to stack
+           CALL ADD_PRTN
+     &          (0.D0,0.D0,SQSHALF*(X1jj-X2jj),SQSHALF*(X1jj+X2jj),
+     &          XM,100,0,0,Iref)
+           CALL ADD_INT_REF(Iref,IINTDX(JW))
+c     add gluon-gluon system to hard minijet index
+           IHMJDX(NJET) = Iref
+c     add gluons to stack
+           CALL ADD_PRTN(PTJET*COS(FI),PTJET*SIN(FI),
+     &          SQSHALF*X1jj,SQSHALF*X1jj,0.D0,0,1,0,Irefg1)
+           CALL ADD_PRTN(-PTJET*COS(FI),-PTJET*SIN(FI),
+     &          -SQSHALF*X2jj,SQSHALF*X2jj,0.D0,0,1,Iref,Irefg2)
+c     set up references
+c     minijet --> gluon1 --> gluon2 --> minijet
+           CALL ADD_REF(Irefg1,Irefg2)
+           CALL ADD_REF(Iref,Irefg1)
+
+         ENDDO
+
+C...soft sea-sea interactions 
+         NSOF_JW = 0
+         DO JJ=1,NNSOF(JW)-1
+c     different soft distributions
+            CALL SAMPLE_SOFT6 (STR_mass_sea,X1S,X2S,PTSOF)
+            IF ((X2JET(JW)+X2S.LT.0.9D0).AND.(X1JET+X1S.LT.0.9D0)) THEN
+               NSOF = NSOF+1
+               Nall = Nall+1
+               NSOF_JW = NSOF_JW+1
+               X1JET = X1JET + X1S
+               X2JET(JW) = X2JET(JW)+X2S
+c     add to stack
+c     add gluon-gluon string to stack
+               XM = SQS*SQRT(X1S*X2S)
+               SQSHALF = 0.5D0*SQS
+               PZ = SQSHALF*(X1S-X2S)
+               EN = SQSHALF*(X1S+X2S)
+               FI = TWOPI*S_RNDM(JJ)
+               CALL ADD_PRTN(0.D0,0.D0,PZ,EN,XM,10,0,0,Iref)
+               CALL ADD_INT_REF(Iref,IINTDX(JW))
+c     add gluons to stack
+c     add gluon-gluon system to soft minijet index
+               ISMJDX(NSOF) = Iref                              
+               CALL ADD_PRTN(PTSOF*COS(FI),PTSOF*SIN(FI),
+     &              SQSHALF*X1S,SQSHALF*X1S,0.D0,0,1,0,Irefg1)
+               CALL ADD_PRTN(-PTSOF*COS(FI),-PTSOF*SIN(FI),
+     &              -SQSHALF*X2S,SQSHALF*X2S,0.D0,0,1,Iref,Irefg2)
+c     set up references
+c     minijet --> gluon1 --> gluon2 --> minijet
+               CALL ADD_REF(Irefg1,Irefg2)
+               CALL ADD_REF(Iref,Irefg1)
+               IF(Ndebug.gt.2)THEN
+                  WRITE(LUN,*)
+     &                 ' SAMPLE_MINIJETS: soft JJ,JW,X1JET,X2JET(JW):',
+     &                 JJ,JW,X1JET,X2JET(JW)
+                  WRITE(LUN,*)
+     &                 '  X1,X2,PT:',X1s,X2s,PTSOF
+               ENDIF
+            ELSE
+               IF(Ndebug.gt.1) WRITE(LUN,*)
+     &        ' SAMPLE_MINIJETS: not enough phase space',
+     &             ' (Ncall,Nsof,lbad):',Ncall,Njet,lBAD
+               RETURN
+            ENDIF
+         ENDDO
+         NNSOF(JW) = NSOF_JW+1
+      ENDDO
+      lbad = 0
+
+      END
+C=======================================================================
+
+      SUBROUTINE SIB_SIGMA_EXT
+     &     (L0,SQS,SIGT,SIGEL,SIGINEL,SLOPE,RHO)
+
+C-----------------------------------------------------------------------
+C     Hadron-proton cross sections
+C     taken from EXTERNAL(!) interpolation table (calculated elsewhere)
+C     can be used to run NUCLIB with alternative cross section/int.length
+C
+C     input:       L     1,2,3      proton-,pion-,kaon-proton
+C                  SQS   sqrt(s)
+C
+C     output:      SIGT       total cross section (mb)
+C                  SIGEL      elastic cross section (mb)
+C                  SIGINEL    inelastic cross section (mb)
+C                  SLOPE      elastic slope parameter (GeV^-2)
+C                  RHO        real/imaginary part of forward amplitude
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+
+c     external types
+      DOUBLE PRECISION SQS,SIGT,SIGEL,SIGINEL,SLOPE,RHO
+      INTEGER L0
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+c     external cross section tables
+C     cross sections in model: 23rc1_sib23
+      INTEGER K
+      DOUBLE PRECISION SSIG_TOT(61,3)
+      DOUBLE PRECISION SSIG(61,3)
+      DOUBLE PRECISION SSIG_B(61,3)
+      DOUBLE PRECISION SSIG_RHO(61,3)
+c     internal type declarations
+      DOUBLE PRECISION T,AL,ASQSMIN,ASQSMAX,DASQS
+      INTEGER LL,L,J1,NSQS
+      DIMENSION LL(39)
+      SAVE
+C     proton-proton:
+C     total cross section
+      DATA (SSIG_TOT(K,1),K=    1,   61) /
+     &3.8328D+01,3.8267D+01,3.8435D+01,3.8838D+01,3.9463D+01,
+     &4.0288D+01,4.1277D+01,4.2391D+01,4.3586D+01,4.4918D+01,
+     &4.6354D+01,4.7836D+01,4.9394D+01,5.1050D+01,5.2835D+01,
+     &5.4789D+01,5.6957D+01,5.9392D+01,6.2151D+01,6.5294D+01,
+     &6.8883D+01,7.2529D+01,7.6458D+01,8.0673D+01,8.5172D+01,
+     &8.9955D+01,9.5017D+01,1.0035D+02,1.0595D+02,1.1181D+02,
+     &1.1790D+02,1.2423D+02,1.3077D+02,1.3751D+02,1.4444D+02,
+     &1.5156D+02,1.5885D+02,1.6631D+02,1.7392D+02,1.8169D+02,
+     &1.8960D+02,1.9766D+02,2.0584D+02,2.1416D+02,2.2260D+02,
+     &2.3115D+02,2.3982D+02,2.4860D+02,2.5749D+02,2.6648D+02,
+     &2.7556D+02,2.8475D+02,2.9403D+02,3.0340D+02,3.1287D+02,
+     &3.2242D+02,3.3206D+02,3.4179D+02,3.5159D+02,3.6149D+02,
+     &3.7146D+02/
+C     inel. cross section
+      DATA (SSIG(K,1),K=    1,   61) /
+     &3.0881D+01,3.1156D+01,3.1540D+01,3.2046D+01,3.2673D+01,
+     &3.3410D+01,3.4236D+01,3.5126D+01,3.6050D+01,3.7062D+01,
+     &3.8139D+01,3.9280D+01,4.0476D+01,4.1740D+01,4.3092D+01,
+     &4.4556D+01,4.6161D+01,4.7937D+01,4.9918D+01,5.2137D+01,
+     &5.4629D+01,5.7057D+01,5.9635D+01,6.2361D+01,6.5230D+01,
+     &6.8236D+01,7.1376D+01,7.4643D+01,7.8029D+01,8.1529D+01,
+     &8.5138D+01,8.8847D+01,9.2654D+01,9.6552D+01,1.0054D+02,
+     &1.0461D+02,1.0875D+02,1.1298D+02,1.1727D+02,1.2164D+02,
+     &1.2607D+02,1.3057D+02,1.3512D+02,1.3974D+02,1.4441D+02,
+     &1.4914D+02,1.5393D+02,1.5877D+02,1.6365D+02,1.6859D+02,
+     &1.7357D+02,1.7860D+02,1.8368D+02,1.8880D+02,1.9397D+02,
+     &1.9918D+02,2.0443D+02,2.0972D+02,2.1505D+02,2.2042D+02,
+     &2.2583D+02/
+C     slope parameter
+      DATA (SSIG_B(K,1),K=    1,   61) /
+     &1.0828D+01,1.1096D+01,1.1363D+01,1.1629D+01,1.1894D+01,
+     &1.2159D+01,1.2424D+01,1.2688D+01,1.2953D+01,1.3217D+01,
+     &1.3482D+01,1.3728D+01,1.3980D+01,1.4237D+01,1.4500D+01,
+     &1.4770D+01,1.5047D+01,1.5333D+01,1.5632D+01,1.5945D+01,
+     &1.6278D+01,1.6613D+01,1.6961D+01,1.7324D+01,1.7703D+01,
+     &1.8100D+01,1.8515D+01,1.8949D+01,1.9404D+01,1.9880D+01,
+     &2.0378D+01,2.0899D+01,2.1443D+01,2.2010D+01,2.2600D+01,
+     &2.3212D+01,2.3845D+01,2.4499D+01,2.5173D+01,2.5867D+01,
+     &2.6579D+01,2.7309D+01,2.8055D+01,2.8819D+01,2.9599D+01,
+     &3.0394D+01,3.1205D+01,3.2031D+01,3.2870D+01,3.3724D+01,
+     &3.4590D+01,3.5470D+01,3.6362D+01,3.7266D+01,3.8181D+01,
+     &3.9109D+01,4.0047D+01,4.0995D+01,4.1955D+01,4.2924D+01,
+     &4.3903D+01/
+C     
+      DATA (SSIG_RHO(K,1),K=    1,   61) /
+     &-1.8490D-01,-1.2654D-01,-7.7648D-02,-3.7250D-02,-4.2495D-03,
+     &2.2457D-02,4.3908D-02,6.1032D-02,7.4637D-02,8.5403D-02,
+     &9.3897D-02,1.0058D-01,1.0583D-01,1.0995D-01,1.1318D-01,
+     &1.1571D-01,1.1768D-01,1.1923D-01,1.2044D-01,1.2138D-01,
+     &1.2212D-01,1.2269D-01,1.2314D-01,1.2349D-01,1.2376D-01,
+     &1.2398D-01,1.2414D-01,1.2427D-01,1.2437D-01,1.2445D-01,
+     &1.2451D-01,1.2456D-01,1.2460D-01,1.2463D-01,1.2465D-01,
+     &1.2467D-01,1.2468D-01,1.2470D-01,1.2470D-01,1.2471D-01,
+     &1.2472D-01,1.2472D-01,1.2472D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01/
+C     pion-proton:
+C     total cross section
+      DATA (SSIG_TOT(K,2),K=    1,   61) /
+     &2.3119D+01,2.3225D+01,2.3487D+01,2.3867D+01,2.4328D+01,
+     &2.4886D+01,2.5529D+01,2.6249D+01,2.7038D+01,2.7890D+01,
+     &2.8802D+01,2.9725D+01,3.0766D+01,3.1961D+01,3.3355D+01,
+     &3.4994D+01,3.6931D+01,3.9223D+01,4.1928D+01,4.5104D+01,
+     &4.8811D+01,5.2129D+01,5.5692D+01,5.9498D+01,6.3545D+01,
+     &6.7832D+01,7.2350D+01,7.7094D+01,8.2059D+01,8.7235D+01,
+     &9.2612D+01,9.8183D+01,1.0394D+02,1.0987D+02,1.1596D+02,
+     &1.2221D+02,1.2862D+02,1.3518D+02,1.4188D+02,1.4871D+02,
+     &1.5568D+02,1.6278D+02,1.7001D+02,1.7735D+02,1.8481D+02,
+     &1.9239D+02,2.0008D+02,2.0788D+02,2.1578D+02,2.2378D+02,
+     &2.3189D+02,2.4009D+02,2.4839D+02,2.5679D+02,2.6528D+02,
+     &2.7386D+02,2.8253D+02,2.9129D+02,3.0014D+02,3.0908D+02,
+     &3.1810D+02/
+C     inel. cross section
+      DATA (SSIG(K,2),K=    1,   61) /
+     &1.9941D+01,2.0212D+01,2.0566D+01,2.0995D+01,2.1492D+01,
+     &2.1955D+01,2.2477D+01,2.3056D+01,2.3685D+01,2.4360D+01,
+     &2.5076D+01,2.5721D+01,2.6455D+01,2.7304D+01,2.8298D+01,
+     &2.9466D+01,3.0844D+01,3.2465D+01,3.4364D+01,3.6574D+01,
+     &3.9128D+01,4.1429D+01,4.3864D+01,4.6428D+01,4.9117D+01,
+     &5.1926D+01,5.4847D+01,5.7875D+01,6.1006D+01,6.4233D+01,
+     &6.7551D+01,7.0956D+01,7.4444D+01,7.8010D+01,8.1651D+01,
+     &8.5363D+01,8.9145D+01,9.2994D+01,9.6906D+01,1.0088D+02,
+     &1.0491D+02,1.0901D+02,1.1315D+02,1.1736D+02,1.2161D+02,
+     &1.2592D+02,1.3028D+02,1.3469D+02,1.3915D+02,1.4366D+02,
+     &1.4821D+02,1.5281D+02,1.5746D+02,1.6215D+02,1.6688D+02,
+     &1.7166D+02,1.7648D+02,1.8134D+02,1.8625D+02,1.9119D+02,
+     &1.9618D+02/
+C     slope parameter
+      DATA (SSIG_B(K,2),K=    1,   61) /
+     &1.0120D+01,1.0270D+01,1.0416D+01,1.0559D+01,1.0698D+01,
+     &1.0836D+01,1.0971D+01,1.1105D+01,1.1238D+01,1.1371D+01,
+     &1.1502D+01,1.1435D+01,1.1392D+01,1.1377D+01,1.1395D+01,
+     &1.1452D+01,1.1549D+01,1.1690D+01,1.1878D+01,1.2118D+01,
+     &1.2413D+01,1.2781D+01,1.3163D+01,1.3558D+01,1.3967D+01,
+     &1.4391D+01,1.4829D+01,1.5282D+01,1.5751D+01,1.6236D+01,
+     &1.6738D+01,1.7256D+01,1.7791D+01,1.8343D+01,1.8912D+01,
+     &1.9498D+01,2.0100D+01,2.0718D+01,2.1351D+01,2.1999D+01,
+     &2.2661D+01,2.3338D+01,2.4029D+01,2.4733D+01,2.5451D+01,
+     &2.6182D+01,2.6926D+01,2.7682D+01,2.8450D+01,2.9231D+01,
+     &3.0023D+01,3.0827D+01,3.1642D+01,3.2468D+01,3.3305D+01,
+     &3.4152D+01,3.5010D+01,3.5878D+01,3.6757D+01,3.7645D+01,
+     &3.8543D+01/
+C     
+      DATA (SSIG_RHO(K,2),K=    1,   61) /
+     &-6.7332D-02,-3.0879D-02,-5.4256D-04,2.4410D-02,4.4739D-02,
+     &6.1172D-02,7.4371D-02,8.4920D-02,9.3315D-02,9.9976D-02,
+     &1.0525D-01,1.0941D-01,1.1269D-01,1.1528D-01,1.1731D-01,
+     &1.1891D-01,1.2016D-01,1.2115D-01,1.2192D-01,1.2253D-01,
+     &1.2300D-01,1.2338D-01,1.2367D-01,1.2390D-01,1.2408D-01,
+     &1.2422D-01,1.2433D-01,1.2442D-01,1.2449D-01,1.2454D-01,
+     &1.2458D-01,1.2462D-01,1.2464D-01,1.2466D-01,1.2468D-01,
+     &1.2469D-01,1.2470D-01,1.2471D-01,1.2471D-01,1.2472D-01,
+     &1.2472D-01,1.2472D-01,1.2473D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01/
+C     kaon-proton:
+C     total cross section
+      DATA (SSIG_TOT(K,3),K=    1,   61) /
+     &1.8299D+01,1.8827D+01,1.9408D+01,2.0016D+01,2.0633D+01,
+     &2.1318D+01,2.2044D+01,2.2810D+01,2.3615D+01,2.4458D+01,
+     &2.5339D+01,2.6253D+01,2.7209D+01,2.8235D+01,2.9372D+01,
+     &3.0683D+01,3.2250D+01,3.4173D+01,3.6576D+01,3.9602D+01,
+     &4.3417D+01,4.6380D+01,4.9560D+01,5.2954D+01,5.6563D+01,
+     &6.0384D+01,6.4411D+01,6.8639D+01,7.3062D+01,7.7674D+01,
+     &8.2464D+01,8.7426D+01,9.2551D+01,9.7831D+01,1.0326D+02,
+     &1.0883D+02,1.1454D+02,1.2037D+02,1.2634D+02,1.3243D+02,
+     &1.3864D+02,1.4496D+02,1.5139D+02,1.5793D+02,1.6458D+02,
+     &1.7133D+02,1.7817D+02,1.8512D+02,1.9215D+02,1.9928D+02,
+     &2.0650D+02,2.1380D+02,2.2119D+02,2.2867D+02,2.3623D+02,
+     &2.4387D+02,2.5160D+02,2.5940D+02,2.6728D+02,2.7524D+02,
+     &2.8328D+02/
+C     inel. cross section
+      DATA (SSIG(K,3),K=    1,   61) /
+     &1.6131D+01,1.6687D+01,1.7256D+01,1.7835D+01,1.8414D+01,
+     &1.8990D+01,1.9596D+01,2.0228D+01,2.0887D+01,2.1572D+01,
+     &2.2282D+01,2.3007D+01,2.3748D+01,2.4525D+01,2.5373D+01,
+     &2.6337D+01,2.7475D+01,2.8859D+01,3.0574D+01,3.2718D+01,
+     &3.5399D+01,3.7521D+01,3.9768D+01,4.2138D+01,4.4626D+01,
+     &4.7228D+01,4.9939D+01,5.2752D+01,5.5666D+01,5.8673D+01,
+     &6.1770D+01,6.4952D+01,6.8215D+01,7.1555D+01,7.4969D+01,
+     &7.8453D+01,8.2007D+01,8.5626D+01,8.9308D+01,9.3052D+01,
+     &9.6855D+01,1.0072D+02,1.0463D+02,1.0861D+02,1.1263D+02,
+     &1.1671D+02,1.2084D+02,1.2501D+02,1.2924D+02,1.3352D+02,
+     &1.3784D+02,1.4220D+02,1.4662D+02,1.5107D+02,1.5558D+02,
+     &1.6012D+02,1.6471D+02,1.6934D+02,1.7401D+02,1.7872D+02,
+     &1.8348D+02/
+C     slope parameter
+      DATA (SSIG_B(K,3),K=    1,   61) /
+     &8.8352D+00,9.1363D+00,9.4011D+00,9.6374D+00,9.8515D+00,
+     &1.0048D+01,1.0230D+01,1.0402D+01,1.0564D+01,1.0720D+01,
+     &1.0870D+01,1.1058D+01,1.1205D+01,1.1322D+01,1.1419D+01,
+     &1.1511D+01,1.1611D+01,1.1734D+01,1.1897D+01,1.2116D+01,
+     &1.2413D+01,1.2781D+01,1.3163D+01,1.3558D+01,1.3967D+01,
+     &1.4391D+01,1.4829D+01,1.5282D+01,1.5751D+01,1.6236D+01,
+     &1.6738D+01,1.7256D+01,1.7791D+01,1.8343D+01,1.8912D+01,
+     &1.9498D+01,2.0100D+01,2.0718D+01,2.1351D+01,2.1999D+01,
+     &2.2661D+01,2.3338D+01,2.4029D+01,2.4733D+01,2.5451D+01,
+     &2.6182D+01,2.6926D+01,2.7682D+01,2.8450D+01,2.9231D+01,
+     &3.0023D+01,3.0827D+01,3.1642D+01,3.2468D+01,3.3305D+01,
+     &3.4152D+01,3.5010D+01,3.5878D+01,3.6757D+01,3.7645D+01,
+     &3.8543D+01/
+C     
+      DATA (SSIG_RHO(K,3),K=    1,   61) /
+     &-2.4506D-02,9.2028D-03,3.5513D-02,5.5961D-02,7.1799D-02,
+     &8.4036D-02,9.3471D-02,1.0074D-01,1.0632D-01,1.1061D-01,
+     &1.1391D-01,1.1643D-01,1.1837D-01,1.1986D-01,1.2100D-01,
+     &1.2187D-01,1.2254D-01,1.2305D-01,1.2345D-01,1.2375D-01,
+     &1.2398D-01,1.2416D-01,1.2429D-01,1.2439D-01,1.2447D-01,
+     &1.2453D-01,1.2458D-01,1.2462D-01,1.2464D-01,1.2467D-01,
+     &1.2468D-01,1.2469D-01,1.2470D-01,1.2471D-01,1.2472D-01,
+     &1.2472D-01,1.2472D-01,1.2473D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,1.2473D-01,
+     &1.2473D-01/
+      
+      DATA LL /5*0,3*2,4*3,2*1,19*0,6*1/
+
+
+      L = L0
+      NSQS = 61
+      ASQSMIN = 1.D0
+      ASQSMAX = 7.D0
+      DASQS = (ASQSMAX-ASQSMIN)/DBLE(NSQS-1)
+
+      IF(NSQS.LE.0) THEN
+        WRITE(LUN,'(//,1X,A)') 
+     &    'SIB_SIGMA_EXT: interpolation table not initialized.'
+        STOP
+      ENDIF
+      IF(IABS(L).gt.39)THEN
+         WRITE(LUN,*)     
+     &        ' SIB_SIGMA_EXT: unknown beam particle!',L
+         STOP
+      ENDIF
+      IF(L.GT.3) L=LL(IABS(L))
+      IF(L.EQ.0)THEN
+         WRITE(LUN,*)     
+     &        ' SIB_SIGMA_EXT: unknown beam particle!', L
+         STOP
+      ENDIF
+        
+      AL = LOG10(SQS)
+      J1 = INT((AL-1.D0)*10.D0 + 1)
+      if((j1.lt.1).or.(j1.gt.NSQS)) then
+        if (ndebug .gt. 0) 
+     *    write (LUN,'(1x,a,i3,1p,e12.3)') 
+     &      ' SIB_SIGMA_EXT: energy out of range ',L,sqs
+      endif
+      if((j1.lt.1).or.(j1.ge.NSQS)) then
+        J1 = min(J1,NSQS-1)
+        J1 = max(J1,1)
+      endif
+      T = (AL-1.D0)*10.D0 - DBLE(J1-1)
+      SIGT    = SSIG_TOT(J1,L)*(1.D0-T) + SSIG_TOT(J1+1,L)*T
+      SIGINEL = SSIG(J1,L)*(1.D0-T) + SSIG(J1+1,L)*T
+      SIGEL   = SIGT-SIGINEL
+      SLOPE   = SSIG_B(J1,L) *(1.D0-T) + SSIG_B(J1+1,L)*T
+      RHO     = SSIG_RHO(J1,L) *(1.D0-T) + SSIG_RHO(J1+1,L)*T
+
+      END
+C=======================================================================
+
+      SUBROUTINE SAMPLE_PROJECTILE
+     +     (KID,KINT,LRMNT,XCHG,XJET,XX,PX,PY,IFL,KID1,IREJ)
+
+C-----------------------------------------------------------------------
+C...  Subroutine to sample sea and valence quarks in a hadron.
+C.    variables are stored in xx,px,py and ifl arrays.
+C.    for each interaction the hadron undergoes there is one 
+C.    pair of partons attached to the ends of two strings
+C.    (one cut pomeron)
+C.    In addition flavor and momentum may be set aside for the remnant
+C.    arrays are filled: rmnt1,rmnt2, c.str1,c.str2, etc..
+C.    i.e. positions 1 and 2 are reserved for remnant.
+C.
+C.    Input: KINT  : number of interactions the hadron takes part in
+C.           KID   : particle id of hadron
+C.           LRMNT : remnant excitation flag,
+C.                   defines if valence quarks need to be sampled
+C.           XCHG  : flavor exchange prob. between remnant and 
+C.                   central strings
+C.           XJET  : momentum fraction already asigned to minijets
+C.           IREJ  : rejection flag, default set in calling routine
+C.
+C.    Output: XX,IFL,PX,PY  : arrays of momentum fractions, flavor 
+C.                            and transverse momentum
+C.            KID1 : new hadron id (in case of flavor exchange)
+C-------------------------------------------------------------------      
+      IMPLICIT NONE
+
+C     include COMMONs
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      
+      DOUBLE PRECISION STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      COMMON /S_CUTOFF/ STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+
+      INTEGER IISO,ISPN
+      COMMON /S_SPN/ IISO(99), ISPN(99)
+
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      INTEGER ITRY, NREJ
+      COMMON /S_CNT/ ITRY(20), NREJ(20)
+
+C     input type declarations
+      INTEGER KID,KINT,LRMNT
+      DOUBLE PRECISION XCHG,XJET
+      
+C     output type declarations
+      DOUBLE PRECISION XX,PX,PY
+      INTEGER IFL,KID1,IREJ
+      DIMENSION XX(2*NW_max+2),PX(2*NW_max+2),PY(2*NW_max+2),
+     &     IFL(2*NW_max+2)
+
+c     local type declarations
+      INTEGER ICNT1,ICNT2,J,JJ,j1,j2,j3,j4,KRMNT,IRNK,
+     &     IDXVAL,IDX,ISWTD,i,IFLS,NVAL,NSEA,IR,IDUM,IDUM2,KIDA,IMRG2HAD
+      DOUBLE PRECISION XSEAJET,XVAL,XMINA,XMINA_SEA,GAMMA,XREM,XMINA2,
+     &     XMAX2,ALPHA,XM2DIS,ASUP,XMAX,XQM,S_RNDM,
+     &     CHIDIS,CHI,GAMDIQ,XSUPP,XSUPP1,PAR53_def,PAR5_def,PAR6_def,
+     &     PAR7_def,PAR143_def,XSUM,STR_mass,PTS,XSCL
+      SAVE
+      DATA ICNT1,ICNT2 /0,0/
+      
+C..   initialization
+      ITRY(3) = 0
+      XVAL = 0.D0
+      XSCL = 1.D0
+      XSEAJET = 0.D0
+      XSUM = 0.D0
+      DO J=1,KINT               ! zero arrays
+         j1 = 1+2*(j-1)
+         j2 = j1 + 1
+         j3 = 3+2*(j-1)
+         j4 = j3 + 1
+         XX(j1) = 0.D0
+         XX(j2) = 0.D0
+         XX(j3) = 0.D0
+         XX(j4) = 0.D0
+         PX(j1) = 0.D0
+         PX(j2) = 0.D0
+         PX(j3) = 0.D0
+         PX(j4) = 0.D0
+      ENDDO
+
+      KRMNT = MIN(LRMNT,1)
+
+      IF(ndebug.gt.3) 
+     +     WRITE(LUN,*)
+     +     ' SAMPLE_PROJECTILE: KID,KINT,KRMNT,XCHG,XJET,IREJ',
+     +     KID,KINT,KRMNT,XCHG,XJET,IREJ
+
+      KID1 = KID
+      KIDA = IABS(KID)
+      
+c     number of valence quarks to sample
+c     if remnant is resolved (krmnt=1) no valence pair needed
+      Nval = 2*(1-KRMNT)
+
+c     number of sea quarks to sample (one pair per interaction)
+c     if remnant is not resolved then on pair less is needed 
+c     (valence pair takes role of one sea pair)
+      Nsea = 2*(KINT-(1-KRMNT))
+
+      IF(ndebug.gt.3) 
+     +     WRITE(LUN,*)
+     +     ' SAMPLE_PROJECTILE: number of partons to sample ',
+     +     '(tot,val,sea):',Nval+Nsea,Nval,Nsea
+
+c     change proton splitting to enhance charge exchange by allowing
+c     ud more often than uu, default scenario is ud,du,uu: 3:1:2
+      PAR53_def = PAR(53)
+      PAR(53) = PAR(84)
+c     change proton splitting in case no remnant is present
+      IF(LRMNT.eq.0) PAR(53) = PAR(127)
+
+ 20   ITRY(3) = ITRY(3) + 1
+      IF(ITRY(3).gt.NREJ(3)) THEN
+         ICNT1 = ICNT1 + 1
+         IF(ICNT1.lt.10)THEN
+          if (NDEBUG.gt.0) then
+            WRITE(LUN,*)' SAMPLE_PROJECTILE: trials exceeded! return..'
+            WRITE(LUN,*)
+     +           '  KID,KINT,KRMNT,XCHG,XJET,XVAL,IREJ,NCALL',
+     +           KID,KINT,KRMNT,XCHG,XJET,XVAL,IREJ,NCALL           
+          endif
+         ENDIF
+         PAR(53) = PAR53_def
+         RETURN 
+      ENDIF
+
+C...  kinematic limits
+ 22   XSEAJET = XJET
+      IF(KRMNT.eq.0)THEN
+c     minimal momentum fraction for valences
+         XMINA = 2.D0*STR_mass_val/SQS
+c     default for valence quarks: 0.35 , xmin@10GeV = 0.07
+c     taken from COMMON s_cutoff
+         IF(ISTR(KIDA)*IBAR(KIDA).ne.0)
+     &        XMINA = 2.D0*STR_mass_val_hyp/SQS
+      ELSE
+         IF(IPAR(47).eq.4.or.IPAR(47).eq.4.or.IPAR(47).eq.6)then
+c     no valence sampling model
+c     if remnant present then the minimal remnant mass has to be provided
+            XMINA = PAR(96)*AM(IABS(KID))/SQS            
+         ELSEIF(IPAR(47).lt.4)THEN
+c     valences sampled, even if combined again in remnant
+            XMINA = 2.D0*STR_mass_val/SQS
+         ELSEIF(IPAR(47).eq.7)THEN
+c     minimal remnant mass not requiered,
+c     mass is taken from central strings anyway..
+            XMINA = AM(IABS(KID))/SQS
+         ENDIF
+      ENDIF
+         
+c     minimal momentum fraction for sea partons
+      IF(IPAR(47).eq.0.or.IPAR(47).eq.3)THEN
+c     same as valence quarks
+         STR_mass = STR_mass_val
+      ELSEIF(IPAR(47).eq.1.or.IPAR(47).eq.2.or.IPAR(47).gt.4)THEN
+c     set by parameter
+         STR_mass = PAR(87)
+      ELSEIF(IPAR(47).eq.4)THEN
+c     same as soft minijets
+         STR_mass = STR_mass_sea
+      ENDIF
+      IF(IPAR(72).eq.2.and.KINT.gt.1)THEN
+         STR_mass = STR_mass * PAR(118)
+      ENDIF
+      XMINA_SEA = 2.D0*STR_mass/SQS
+c     default for sea quarks: 1.0 , xmin@10GeV = 0.2
+c     taken from COMMON s_cutoff or s_cflafr
+c     should be the same as min. string mass in SAMPLE_SOFT !
+
+c     dependence on number of interactions
+      IF(IPAR(72).eq.1.and.KINT.gt.1)THEN
+         XMINA_SEA = XMINA_SEA * PAR(118)
+      ENDIF
+
+C..   check if enough energy left to sample all partons
+      IF (1.D0-XJET.LT.(Nsea*XMINA_SEA+2.D0*XMINA))THEN
+         ICNT2 = ICNT2 + 1
+         IF(ICNT2.le.10)THEN
+            IF(NDEBUG.gt.3)THEN
+               write(lun,*)' SAMPLE_PROJECTILE: rejection!' 
+               write(lun,*)'  too little energy to sample all partons!'
+               write(lun,*)'  (NW,Ntot,Nval,Nsea,XMIN,XMIN*N',
+     &              'XREM,XALL,NCALL,ICNT:)',KINT,nval+nsea,Nval,nsea,
+     &              2*xmina,nsea*xmina_sea,1.D0-xjet,
+     &              Nsea*XMINA_SEA+2*XMINA,NCALL,ICNT2
+               IF(ICNT2.eq.10) write(lun,*)' last warning ! good luck..'
+            ENDIF
+         ENDIF
+
+         IREJ = 2
+         PAR(53) = PAR53_def
+         RETURN
+      ENDIF
+
+
+C...  sample sea partons
+c     if no additional partons need to be sampled 
+C     jump straight to valence quarks
+      IF(Nsea.EQ.0) GOTO 100
+
+C     select sea quark model
+      IF(IPAR(47).eq.0.or.IPAR(47).eq.3.or.IPAR(47).eq.4.or.
+     &     IPAR(47).eq.5.or.IPAR(47).eq.7)THEN
+         GAMMA = PAR(103)
+         IF(IPAR(73).eq.1.and.KINT.gt.1) GAMMA = PAR(119)
+         CALL SAMPLE_SEA_TOT
+     &        (KRMNT,KINT,NSEA,GAMMA,XJET,STR_MASS,XSEAJET,XX)
+
+      ELSEIF(IPAR(47).eq.1)THEN
+c     sample from 1/x individually then reject if too large
+         XREM = 0.D0
+         XMINA2 = XMINA_SEA ** 2
+         XMAX2 = 0.8D0**2
+         ALPHA = 1.D0
+         DO WHILE ( XREM .lt. 2*XMINA )
+            XREM = 1.D0-XJET
+            IF(NDEBUG.gt.3)
+     &           WRITE(LUN,*) '  N,XREM,XMINA,XMIN2,XMAX2,ALPHA',
+     &           Nsea,XREM,XMINA_SEA,XMINA2,XMAX2,ALPHA
+            DO j=1,Nsea
+               jj = 2 + j
+               IF(KRMNT.eq.0) jj = 4+j
+               XX(jj) = XM2DIS(XMINA2,XMAX2,ALPHA)
+               IF(NDEBUG.gt.3) 
+     &           WRITE(LUN,*) ' J,X,XREM',JJ,XX(JJ),XREM
+               XREM = XREM - XX(jj)
+            ENDDO
+         ENDDO
+         XSEAJET = 1.D0-XREM
+
+      ELSEIF(IPAR(47).eq.2.or.IPAR(47).eq.6)THEN
+c     sample from (1-x)**b / x with common mass constraint
+         XREM = 1.D0-XJET
+         XMAX = PAR(88)
+         ALPHA = PAR(85)
+         ASUP = PAR(86)
+         XQM = STR_mass
+         CALL SAMPLE_SEA_INDV(KRMNT,XMINA,XMINA_SEA,NSEA,
+     &        XREM,ALPHA,ASUP,XQM,XMAX,XX,IR)
+         IF(IR.ne.0)THEN
+            IREJ = IR
+            PAR(53) = PAR53_def
+            RETURN
+         ENDIF
+
+         XSEAJET = 1.D0-XREM
+      ENDIF
+
+C...  sample sea flavor: u,d,s,c
+c     write to ifl after valences..
+      DO J=1+Nval/2,KINT
+         j3 = 3+2*(j-1)
+         j4 = j3 + 1
+c     turn on strange sea..
+         IF(IPAR(29).eq.1)THEN
+            IF(IPAR(69).ne.0)THEN
+c     sample asymmetric u,d
+               IFL(j3) = MIN(2,1+INT((2.D0+PAR(114))*S_RNDM(KID)))
+c     sample strange
+               IFLS = 3*(INT((2+PAR(43))*S_RNDM(j3))/2)
+               IFL(j3) = MAX(IFL(j3),IFLS)
+            else
+               IFL(j3) = 1+INT((2.D0+PAR(43))*S_RNDM(j4))
+            endif
+c     sample charm
+c     scale up for mesons
+            IF(IPAR(76).eq.1) XSCL=XSCL+(1-IABS(IBAR(KIDA)))*PAR(126)
+            IF(IFL(j3).eq.3.and.S_RNDM(kid).lt.PAR(97)*PAR(125)*XSCL)
+     &           IFL(j3) = 4
+         ELSE
+            IFL(j3) = INT(1.5D0+S_RNDM(KID))
+         ENDIF
+         IFL(j4) = -IFL(j3)
+         IF(NDEBUG.gt.3) 
+     &        WRITE(LUN,*) '  flavor: JW,FLV1,FLV2',J,IFL(j3),IFL(j4)
+
+C...  sample sea pt
+ 33      IF(IPAR(49).eq.1)THEN
+c     in-string pt for sea partons
+c     flavor and cm energy dependent avg, exponential dist.
+c     avg pt (defined in subroutine ptsetup ):
+c     u,d : PAR(46)+PAR(68)*log10(sqs/20.D0)**2
+c     s:    PAR(47)+PAR(70)*log10(sqs/20.D0)**2
+c     diq:  PAR(48)+PAR(69)*log10(sqs/20.D0)**2
+            CALL PTDIS_4FLV (IFL(j3),PX(j3),PY(j3))
+            PX(j4) = -PX(j3)
+            PY(j4) = -PY(j3)
+
+         ELSEIF(IPAR(49).eq.2)THEN
+c     'primordial' pt
+c     c.m. energy dependent avg, exponential
+c     same for all flavors
+c     avg: PAR(49)+PAR(69)*log10(sqs/20.)**2
+            CALL PTDIS_4FLV (10,PX(j3),PY(j3))
+            PX(j4) = -PX(j3)
+            PY(j4) = -PY(j3)
+
+         ELSEIF(IPAR(49).eq.3)THEN
+c     constant pt
+            PX(j3) = EPS5
+            PY(j3) = EPS5
+            PX(j4) = -PX(j3)
+            PY(j4) = -PY(j3)
+
+         ELSEIF(IPAR(49).eq.4)THEN
+c     sea pt, same as primordial but different params..
+c     c.m. energy dependent avg, exponential
+c     same for all flavors
+c     avg: PAR(132)
+            CALL PTDIS_4FLV (30,PX(j3),PY(j3))
+            PX(j4) = -PX(j3)
+            PY(j4) = -PY(j3)
+         ENDIF
+c     limit parton virtuality         
+         PTS = MAX(PX(j3)**2+PY(j3)**2,EPS10)
+         IF((XX(j3)**2+XX(J4)**2)/PTS.lt.8.D0*PAR(122)/S) GOTO 33
+         IF(NDEBUG.gt.3) 
+     &        WRITE(LUN,*)'  pt: JW,PX,PY,pt',J,Px(j3),Py(j3),sqrt(pts)
+      ENDDO     
+
+C...  Prepare the valence partons
+ 100  XVAL=1.D0-XSEAJET
+      IF(ndebug.gt.3)
+     &     write(lun,*) ' SAMPLE_PROJECTILE: val. fraction remaining:',
+     &     XVAL
+
+      IF(IPAR(47).eq.7)THEN
+c     no remnant, sample valence quarks
+         IF(KRMNT.eq.0) THEN
+c     enough momentum left?
+            IF (XVAL.LT.XMINA) goto 20 ! reject sea kinematics
+         ELSE
+c     sample remnant
+            IF(IPAR(53).eq.1)THEN
+c     momentum dis: x**alpha
+               IF(S_RNDM(KID).gt.XVAL**(PAR(100)+1)) GOTO 22
+            ENDIF
+c     split remnant momentum into partons, just to fill slots
+            
+         ENDIF            
+      ELSE
+         IF(KRMNT.eq.0.or.IPAR(47).lt.4)THEN
+            IF (XVAL.LT.XMINA) goto 20 ! reject sea kinematics
+         ENDIF
+c     remnant momentum fraction
+         IF(KRMNT.ne.0.and.IPAR(53).eq.1)THEN
+            IF(S_RNDM(KID).gt.XVAL**(PAR(100)+1)) GOTO 22
+         ENDIF
+      ENDIF
+c     valence quarks are in 1,2 of IFL,XX etc.
+      IDXVAL = 3
+      IF(KRMNT.ne.0) IDXVAL = 1
+      CALL HSPLI (KID,IFL(IDXVAL),IFL(IDXVAL+1))
+ 110  CHI = CHIDIS(KID,IFL(IDXVAL),IFL(IDXVAL+1))
+      XX(IDXVAL) = MAX(CHI*XVAL,XMINA)
+      XX(IDXVAL) = MIN(XX(IDXVAL),XVAL-XMINA)
+C     FOR MESONS, SPLIT ENERGY SYMMETRICALLY.
+      IF (IABS(KID).LT.13.AND.S_RNDM(0).LE.0.5D0) 
+     &     XX(IDXVAL)=XVAL-XX(IDXVAL)
+      XX(IDXVAL+1)=XVAL-XX(IDXVAL)
+      IF(ndebug.gt.3)
+     &     write(lun,*) ' SAMPLE_PROJECTILE: val. sampled (x1,x2):',
+     &     XX(IDXVAL),XX(IDXVAL+1)
+c     for baryons force diq distribution
+      IF(IBAR(IABS(KID)).ne.0.and.IPAR(47).ne.7)THEN
+         IF(IPAR(52).eq.1)THEN
+            GAMDIQ=PAR(95)
+            IF(S_RNDM(KID).gt.XX(IDXVAL+1)**(GAMDIQ+1)) GOTO 110
+         ELSE
+            IF(KRMNT.eq.0.or.IPAR(47).lt.4.and.IPAR(53).eq.0)THEN
+c     force diquark distribution
+               GAMDIQ=PAR(95)
+               IF(S_RNDM(KID).gt.XX(IDXVAL+1)**(GAMDIQ+1)) GOTO 20
+            ENDIF
+         ENDIF
+      ENDIF
+C...  val. quark transverse momentum
+      CALL PTDIS_4FLV (10,PX(IDXVAL),PY(IDXVAL))
+      PX(IDXVAL+1) = -PX(IDXVAL)
+      PY(IDXVAL+1) = -PY(IDXVAL)     
+      IF(ndebug.gt.3)
+     &     write(lun,*) ' SAMPLE_PROJECTILE: val. pt (px,py):',
+     &     PX(IDXVAL),PY(IDXVAL)
+
+C...  exchange flavor between central strings and remnant
+c     there is one pair of strings for each interaction with another hadron
+c     in general allowed for both flavors but diquarks usually strongly suppressed
+c     Xchg : prob. of flv exchange between strgs and rmnt
+      IF(KRMNT.ne.0)THEN
+         do idx=1,2
+            iswtd = 0
+            i = 1
+            XSUPP = 1.D0
+            IF(iabs(ifl(idx)).gt.10)THEN
+c     suppress exchange of diq: prob_exchange = prob0 * xsupp
+               XSUPP = PAR(83)
+            ELSEIF(IPAR(46).eq.2)THEN
+c     suppress exchange for fast quark ( usually in mesons )
+               IF(xx(idx).gt.xx(3-idx)) XSUPP = PAR(139)
+            ENDIF
+            DO WHILE (ISWTD.eq.0.and.i.le.KINT)
+c     sea flavor index
+               jj = idx+2*i
+c     forbid exchange for charmed hadrons if sea pair is charmed too
+c     needed to avoid double charmed particles
+               XSUPP1 = XSUPP
+               IF(IABS(KID).gt.50.and.IABS(IFL(JJ)).eq.4) XSUPP1 = 0.D0
+               if(S_RNDM(I).lt.XCHG*XSUPP1) THEN               
+c     exchange flavor between remnant and sea
+                  CALL ISWTCH_LMNTS(ifl(jj),ifl(idx))
+c     also exchange momentum fraction
+                  IF(IPAR(46).ne.0) CALL SWTCH_LMNTS(xx(jj),xx(idx))
+c     change flavor id accordingly, i.e. reassamble remnant from new flavor
+                  IF(IPAR(58).eq.0)THEN
+c     combine to any hadron that matches flavor wise, ignoring (iso)spin
+                     CALL SIB_I4FLAV(ifl(1),ifl(2),idum,idum2,KID1)
+                  ELSEIF(IPAR(58).eq.1)THEN
+c     combine to lightest hadron
+                     KID1 = IMRG2HAD(IFL(1),IFL(2))
+                  ELSEIF(IPAR(58).eq.2.or.IPAR(58).eq.3)THEN
+c     combine to any hadron that matches flavor wise, ignoring (iso)spin
+c     set vector meson rate
+                     PAR5_def = PAR(5)
+                     PAR(5) = PAR(104)
+c     set strange vector rate
+                     PAR6_def = PAR(6)
+                     PAR(6) = PAR(121)
+c     set spin3/2 vs spin1/2 rate
+                     PAR7_def = PAR(7)
+                     PAR(7) = PAR(105)
+c     set rho / omega-phi rate
+                     PAR143_def = PAR(143)
+                     if(ibar(iabs(kb)).eq.0.and.IPAR(85).eq.1)
+     &                    PAR(143) = PAR(145)
+                     irnk = 0                     
+                     IF(IPAR(58).eq.3) irnk = 1                     
+                     CALL SIB_I4FLAV(ifl(1),ifl(2),irnk,idum2,KID1)
+                     PAR(5) = PAR5_def
+                     PAR(6) = PAR6_def
+                     PAR(7) = PAR7_def
+                     PAR(143) = PAR143_def
+
+c     reject spin1,isospin singlett
+                     IF(KID1.eq.32.and.PAR(111).gt.S_RNDM(KID1))
+     &                    KID1 = 27
+                  ENDIF
+                  iswtd = 1
+               endif
+               i = i + 1
+            ENDDO
+         enddo
+      ENDIF
+      IF(ndebug.gt.3)THEN        
+         WRITE(LUN,*)' SAMPLE_PROJECTILE: rmnt PID,NTRY: ',KID1,ITRY(3)
+         WRITE(LUN,*)' SAMPLE_PROJECTILE: output: I,FLV,PX,PY,X,XSUM'
+      ENDIF
+      XSUM = XJET
+      DO j=IDXVAL,2*(KINT+Krmnt)+2*(1-Krmnt)
+         XSUM = XSUM + XX(j)
+         IF(NDEBUG.gt.3) WRITE(LUN,*) j,IFL(j),PX(J),PY(J),XX(j),XSUM
+      ENDDO
+      IF(ABS(XSUM-1.D0).gt.EPS3) THEN
+         WRITE(LUN,*)' SAMPLE_PROJECTILE: parton sum incomplete!',
+     &        '(ID,XSUM,NCALL):' , KID1,XSUM, NCALL,' aborting..'
+         CALL SIB_REJECT('SAMPLE_PROJECTIL')
+      ENDIF
+      IREJ = 0
+
+      END
+C=======================================================================
+
+      SUBROUTINE DECSIB 
+
+C-----------------------------------------------------------------------
+C...Decay all unstable particle in Sibyll
+C.  decayed particle have the code increased by 10000
+C
+C   changed to allow for multiple calls to DECSIB in one event
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      DOUBLE PRECISION CBR
+      INTEGER KDEC,LBARP,IDB
+      COMMON /S_CSYDEC/ CBR(223+16+12+8), KDEC(1338+6*(16+12+8)),
+     &     LBARP(99), IDB(99)
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+      INTEGER LLIST1
+      COMMON /S_PLIST1/ LLIST1(8000)
+
+      INTEGER NFORIG,NPORIG,NIORIG,IPFLAG,IIFLAG,KINT
+      COMMON /S_PARTO/ NFORIG(NP_max),NPORIG(NP_max),NIORIG(NP_max),
+     &IPFLAG,IIFLAG,KINT
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+      INTEGER LRNK
+      COMMON /SIB_RNK/ LRNK(8000)
+      DIMENSION P0(5), LL(10), PD(10,5)
+      SAVE
+
+c     call pythia decay routine      
+c      IF(IPAR(44).eq.1) CALL PYDEC
+
+c     decay with sibyll
+      NN = 1
+      IF(IPAR(44).ne.1)THEN
+         DO J=1,NP
+            LLIST1(J) = 0
+         ENDDO
+      ENDIF
+      DO WHILE (NN .LE. NP)
+         L= LLIST(NN)
+         LA = IABS(L)
+         if(LA.lt.100) then
+           IF (IDB(LA) .GT. 0)  THEN
+              DO K=1,5
+                P0(K) = P(NN,K)
+              ENDDO
+              CALL DECPAR (L,P0,ND,LL,PD)
+              LLIST(NN) = LLIST(NN)+ISIGN(10000,LLIST(NN))
+              DO J=1,ND
+                NP = NP+1
+                if(NP.gt.8000) then
+                  write(LUN,'(1x,a,2i8)') 
+     &              ' DECSIB: no space left in S_PLIST (NP,ND):',NP,ND
+                  NP = NP-1
+                  return
+                endif
+                DO K=1,5
+                  P(NP,K) = PD(J,K)
+                ENDDO
+                LLIST(NP)=LL(J)
+                LLIST1(NP)=NN
+                LRNK(NP)=LRNK(NN)
+                NPORIG(NP)= NPORIG(NN)
+                niorig(NP)= NIORIG(NN)
+                NFORIG(NP) = L
+              ENDDO
+           ENDIF
+         endif
+         NN = NN+1
+      ENDDO
+
+c      CALL SIB_LIST(20)
+
+      END
+C=======================================================================
+
+      SUBROUTINE SIB_SIGMA_HP
+     &     (L0,SQS,SIGT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO)
+
+C-----------------------------------------------------------------------
+C     Hadron-proton cross sections, taken from interpolation table
+C     calculated by SIBYLL_INI
+C
+C     input:       L     1      proton-proton
+C                        2      pi-proton
+C                        3      K-proton
+C                  SQS   sqrt(s)
+C
+C     output:      SIGT       total cross section (mb)
+C                  SIGEL      elastic cross section (mb)
+C                  SIGINEL    inelastic cross section (mb)
+C                  SIGDIF     diffraction dissociation CS (mb)
+C                  SLOPE      elastic slope parameter (GeV^-2)
+C                  RHO        real/imaginary part of forward amplitude
+C-----------------------------------------------------------------------
+Cf2py integer, intent(in) :: L0
+Cf2py double precision, intent(in) :: SQS
+Cf2py double precision, intent(out) :: SIGT,SIGEL,SIGINEL,SLOPE,RHO
+Cf2py double precision(3), intent(out) :: SIGDIF
+      IMPLICIT NONE
+
+c     external types
+      DOUBLE PRECISION SQS,SIGT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO      
+      DIMENSION SIGDIF(3)
+      INTEGER L0
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+      
+      DOUBLE PRECISION SSIG,PJETC,SSIGN,SSIGNSD,SSIGNEL,ALINT,ASQSMIN,
+     &     ASQSMAX,DASQS
+      INTEGER NSQS
+      COMMON /S_CCSIG/ SSIG(61,3), PJETC(0:NS_max,0:NH_max,61,2),
+     &     SSIGN(61,3,3), SSIGNSD(61,3,3), SSIGNEL(61,3,3), 
+     &     ALINT(61,3,3), ASQSMIN, ASQSMAX, DASQS, NSQS
+      DOUBLE PRECISION SSIG_TOT,SSIG_SD1,SSIG_SD2,SSIG_DD,SSIG_B,
+     &     SSIG_RHO
+      COMMON /S_CCSIG2/ SSIG_TOT(61,3),SSIG_SD1(61,3),SSIG_SD2(61,3),
+     &    SSIG_DD(61,3),SSIG_B(61,3),SSIG_RHO(61,3)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+c     internal type declarations
+      DOUBLE PRECISION T,AL
+      INTEGER LL,L,J1
+      DIMENSION LL(39)
+      SAVE
+      DATA LL /5*0,3*2,4*3,2*1,19*0,6*1/
+
+
+      L = L0
+      IF(NSQS.LE.0) THEN
+        WRITE(LUN,'(//,1X,A)') 
+     &    ' SIB_SIGMA_HP: interpolation table not initialized.'
+        STOP
+      ENDIF
+      IF(IABS(L).gt.39)THEN
+         WRITE(LUN,*)     
+     &        ' SIB_SIGMA_HP: unknown beam particle!',L
+         STOP
+      ENDIF
+      IF(L.GT.3) L=LL(IABS(L))
+      IF(L.EQ.0)THEN
+         WRITE(LUN,*)     
+     &        ' SIB_SIGMA_HP: unknown beam particle!', L
+         STOP
+      ENDIF
+        
+      AL = LOG10(SQS)
+      J1 = INT((AL-1.D0)*10.D0 + 1)
+      if((j1.lt.1).or.(j1.gt.NSQS)) then
+        if(ndebug.gt.0)
+     &         write (LUN,'(1x,a,i3,1p,e12.3)') 
+     &         ' SIB_SIGMA_HP: energy out of range ',L,sqs
+      endif
+      if((j1.lt.1).or.(j1.ge.NSQS)) then
+        J1 = min(J1,NSQS-1)
+        J1 = max(J1,1)
+      endif
+      T = (AL-1.D0)*10.D0 - DBLE(J1-1)
+      SIGT    = SSIG_TOT(J1,L)*(1.D0-T) + SSIG_TOT(J1+1,L)*T
+      SIGINEL = SSIG(J1,L)*(1.D0-T) + SSIG(J1+1,L)*T
+      SIGEL   = SIGT-SIGINEL
+      SIGDIF(1) = SSIG_SD1(J1,L)*(1.D0-T) + SSIG_SD1(J1+1,L)*T
+      SIGDIF(2) = SSIG_SD2(J1,L)*(1.D0-T) + SSIG_SD2(J1+1,L)*T
+      SIGDIF(3) = SSIG_DD(J1,L)*(1.D0-T) + SSIG_DD(J1+1,L)*T
+      SLOPE   = SSIG_B(J1,L) *(1.D0-T) + SSIG_B(J1+1,L)*T
+      RHO     = SSIG_RHO(J1,L) *(1.D0-T) + SSIG_RHO(J1+1,L)*T
+
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIB_SIGMA_HP2
+     +     (L,SQS,SIGT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO)
+
+C-----------------------------------------------------------------------
+C     Hadron-proton cross sections, taken from interpolation table
+C     calculated by SIBYLL_INI
+C
+C     input:       L     1      proton-proton
+C                        2      pi-proton
+C                        3      K-proton
+C                  SQS   sqrt(s)
+C
+C     output:      SIGT       total cross section (mb)
+C                  SIGEL      elastic cross section (mb)
+C                  SIGINEL    inelastic cross section (mb)
+C                  SIGDIF     diffraction dissociation CS (mb)
+C                             split in high and low mass !!
+C                             ( taken from S_CCSIG3 )
+C                  SLOPE      elastic slope parameter (GeV^-2)
+C                  RHO        real/imaginary part of forward amplitude
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+c     external types      
+      DOUBLE PRECISION SQS,SIGT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO
+      DIMENSION SIGDIF(3,2)
+      INTEGER L
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+      
+      DOUBLE PRECISION SSIG,PJETC,SSIGN,SSIGNSD,SSIGNEL,ALINT,ASQSMIN,
+     &     ASQSMAX,DASQS
+      INTEGER NSQS
+      COMMON /S_CCSIG/ SSIG(61,3), PJETC(0:NS_max,0:NH_max,61,2),
+     &     SSIGN(61,3,3), SSIGNSD(61,3,3), SSIGNEL(61,3,3), 
+     &     ALINT(61,3,3), ASQSMIN, ASQSMAX, DASQS, NSQS
+      DOUBLE PRECISION SSIG_TOT,SSIG_SD1,SSIG_SD2,SSIG_DD,SSIG_B,
+     &     SSIG_RHO
+      COMMON /S_CCSIG2/ SSIG_TOT(61,3),SSIG_SD1(61,3),SSIG_SD2(61,3),
+     &    SSIG_DD(61,3),SSIG_B(61,3),SSIG_RHO(61,3)
+      DOUBLE PRECISION SSIG_SD1LM,SSIG_SD1HM,SSIG_SD2LM,SSIG_SD2HM,
+     &     SSIG_DDLM,SSIG_DDHM
+      COMMON /S_CCSIG3/ SSIG_SD1LM(61,3),SSIG_SD1HM(61,3),
+     &     SSIG_SD2LM(61,3),SSIG_SD2HM(61,3),
+     &     SSIG_DDLM(61,3),SSIG_DDHM(61,3)
+
+c     internal types
+      INTEGER J1
+      DOUBLE PRECISION T,AL
+      SAVE
+
+      IF(NSQS.LE.0) THEN
+        WRITE(LUN,'(//,1X,A)') 
+     &    ' SIB_SIGMA_HP2: interpolation table not initialized.'
+        STOP
+      ENDIF
+        
+      AL = dLOG10(SQS)
+      J1 = INT((AL - 1.D0)*10.D0 + 1)
+      if((j1.lt.1).or.(j1.gt.NSQS)) then
+        if(ndebug.gt.0)write(LUN,'(1x,a,i3,1p,e12.3)') 
+     &    ' SIB_SIGMA_HP2: energy out of range ',L,sqs
+      endif
+      if((j1.lt.1).or.(j1.ge.NSQS)) then
+        J1 = min(J1,NSQS-1)
+        J1 = max(J1,1)
+      endif
+      T = (AL-1.D0)*10.D0 - DBLE(J1-1)
+      SIGT    = SSIG_TOT(J1,L)*(1.D0-T) + SSIG_TOT(J1+1,L)*T
+      SIGINEL = SSIG(J1,L)*(1.D0-T) + SSIG(J1+1,L)*T
+      SIGEL   = SIGT-SIGINEL
+      SIGDIF(1,1) = SSIG_SD1LM(J1,L)*(1.D0-T) + SSIG_SD1LM(J1+1,L)*T
+      SIGDIF(1,2) = SSIG_SD1HM(J1,L)*(1.D0-T) + SSIG_SD1HM(J1+1,L)*T
+      SIGDIF(2,1) = SSIG_SD2LM(J1,L)*(1.D0-T) + SSIG_SD2LM(J1+1,L)*T
+      SIGDIF(2,2) = SSIG_SD2HM(J1,L)*(1.D0-T) + SSIG_SD2HM(J1+1,L)*T
+      SIGDIF(3,1) = SSIG_DDLM(J1,L)*(1.D0-T) + SSIG_DDLM(J1+1,L)*T
+      SIGDIF(3,2) = SSIG_DDHM(J1,L)*(1.D0-T) + SSIG_DDHM(J1+1,L)*T
+      SLOPE   = SSIG_B(J1,L) *(1.D0-T) + SSIG_B(J1+1,L)*T
+      RHO     = SSIG_RHO(J1,L) *(1.D0-T) + SSIG_RHO(J1+1,L)*T
+
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIB_SIGMA_HAIR (L,SQS,SIGprod,SIGbdif) 
+
+C-----------------------------------------------------------------------
+C     Hadron-air cross sections, taken from interpolation table
+C     calculated by SIBYLL_INI
+C
+C     input:       L     1      proton-air
+C                        2      pi-air
+C                        3      K-air
+C                  SQS   sqrt(s)
+C
+C     output:      SIGprod    particle production cross section (mb)
+C                  SIGbdif    q.ela and ela beam diff. cross section
+C-----------------------------------------------------------------------
+Cf2py integer, intent(in) :: L
+Cf2py double precision, intent(in) :: SQS
+Cf2py double precision, intent(out) :: SIGprod,SIGbdif
+      IMPLICIT NONE
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+      
+      DOUBLE PRECISION SSIG,PJETC,SSIGN,SSIGNSD,SSIGNEL,ALINT,ASQSMIN,
+     &     ASQSMAX,DASQS
+      INTEGER NSQS
+      COMMON /S_CCSIG/ SSIG(61,3), PJETC(0:NS_max,0:NH_max,61,2),
+     &     SSIGN(61,3,3), SSIGNSD(61,3,3), SSIGNEL(61,3,3), 
+     &     ALINT(61,3,3), ASQSMIN, ASQSMAX, DASQS, NSQS
+
+c     external
+      DOUBLE PRECISION SQS,SIGPROD,SIGBDIF
+      INTEGER L
+
+c     internal
+      DOUBLE PRECISION AL,T
+      INTEGER J1
+      SAVE
+
+      IF(NSQS.LE.0) THEN
+        WRITE(LUN,'(//,1X,A)') 
+     &    ' SIB_SIGMA_HAIR: interpolation table not initialized.'
+        STOP
+      ENDIF
+        
+      AL = LOG10(SQS)
+      J1 = INT((AL - 1.D0)*10.D0 + 1)
+      if((j1.lt.1).or.(j1.gt.NSQS)) then
+        if (ndebug .gt. 0) 
+     &          write (LUN,'(1x,a,i3,1p,e12.3)') 
+     &          ' SIB_SIGMA_HAIR: energy out of range ',L,sqs
+      endif
+      if((j1.lt.1).or.(j1.ge.NSQS)) then
+        J1 = min(J1,NSQS-1)
+        J1 = max(J1,1)
+      endif
+      T = (AL-1.D0)*10.D0 - DBLE(J1-1)
+      SIGprod = SSIGN(J1,L,1)*(1.D0-T) + SSIGN(J1+1,L,1)*T
+      SIGbdif = SSIGNSD(J1,L,1)*(1.D0-T) + SSIGNSD(J1+1,L,1)*T
+
+      END
+C=======================================================================
+      SUBROUTINE SIB_SIGMA_HNUC (L,IAT,SQS,SIGprod,SIGbdif,SIGela) 
+
+C-----------------------------------------------------------------------
+C     calculate Hadron-nucleus cross sections
+C
+C     input:       L     1      proton-nuc
+C                        2      pi-nuc
+C                        3      K-nuc
+C                  IAT   0-18   mass number of target nucleus
+C                        (beyond A=18 nuclear profiles are inaccurate)
+C                  SQS   sqrt(s)
+C
+C     output:      SIGprod    particle production cross section (mb)
+C                  SIGbdif    q.ela and ela beam diff. cross section
+C                  SIGela     elastic cross section
+C-----------------------------------------------------------------------
+Cf2py integer, intent(in) :: L,IAT
+Cf2py double precision, intent(in) :: SQS
+Cf2py double precision, intent(out) :: SIGprod,SIGbdif,SIGela
+      IMPLICIT NONE
+
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+      
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      DOUBLE PRECISION SSIG,PJETC,SSIGN,SSIGNSD,SSIGNEL,ALINT,ASQSMIN,
+     &     ASQSMAX,DASQS
+      INTEGER NSQS
+      COMMON /S_CCSIG/ SSIG(61,3), PJETC(0:NS_max,0:NH_max,61,2),
+     &     SSIGN(61,3,3), SSIGNSD(61,3,3), SSIGNEL(61,3,3), 
+     &     ALINT(61,3,3), ASQSMIN, ASQSMAX, DASQS, NSQS
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      DOUBLE PRECISION SIGT,SIGEL,SIGINEL,SIGQE,SIGSD,SIGQSD,SIGPPT,
+     &     SIGPPEL,SIGPPSD
+      INTEGER ITG
+      COMMON /NUCSIG/ SIGT,SIGEL,SIGINEL,SIGQE,SIGSD,
+     +     SIGQSD,SIGPPT,SIGPPEL,SIGPPSD,ITG
+
+c     external
+      DOUBLE PRECISION SQS,SIGPROD,SIGBDIF,SIGELA
+      INTEGER L,IAT
+
+c     internal
+      DOUBLE PRECISION ALAM,T,AL
+      INTEGER IPARM,ICSMOD,IK,J1
+      SAVE
+      IF(NSQS.LE.0) THEN
+        WRITE(LUN,'(//,1X,A)') 
+     &    ' SIB_SIGMA_HNUC: interpolation table not initialized.'
+        STOP
+      ENDIF
+      IF(IAT.eq.0.or.IAT.eq.14.or.IAT.eq.16)THEN
+c     read cross section from table
+         IF(IAT.eq.0) THEN
+            IK=1
+         ELSEIF(IAT.eq.14)THEN
+            IK=2
+         ELSE
+            IK=3
+         ENDIF            
+         AL = LOG10(SQS)
+         J1 = INT((AL - 1.D0)*10.D0 + 1)
+         if((j1.lt.1).or.(j1.gt.NSQS)) then
+            if (ndebug .gt. 0) 
+     &           write (LUN,'(1x,a,i3,1p,e12.3)') 
+     &           ' SIB_SIGMA_HNUC: energy out of range ',L,sqs
+         endif
+         if((j1.lt.1).or.(j1.ge.NSQS)) then
+            J1 = min(J1,NSQS-1)
+            J1 = max(J1,1)
+         endif
+         T = (AL-1.D0)*10.D0 - DBLE(J1-1)
+         SIGprod = SSIGN(J1,L,IK)*(1.D0-T) + SSIGN(J1+1,L,IK)*T
+         SIGbdif = SSIGNSD(J1,L,IK)*(1.D0-T) + SSIGNSD(J1+1,L,IK)*T
+         SIGela  = SSIGNEL(J1,L,IK)*(1.D0-T) + SSIGNEL(J1+1,L,IK)*T
+      ELSEIF(IAT.lt.19)THEN
+c     calculate cross section         
+         IF(ndebug.gt.0)THEN
+            WRITE(LUN,'(1X,A,2I4,F8.2)')
+     &           'SIB_SIGMA_HNUC: L,IAT,SQS:',L,IAT,SQS
+         ENDIF
+c     calculate hadron - nucleus cross section
+c     dummy arg, coupling derived from dif xsctn
+         ALAM = 1.D0              
+c     use Sibyll p-p cross section as input
+         ICSMOD = 1             
+c     use Goulianos param. for inel. coupling param.
+         IPARM = 2 
+         CALL SIG_HAD_NUC(L,IAT,SQS,ALAM,ICSMOD,IPARM)
+C     particle production cross section        
+         SIGprod = SIGT-SIGQE
+C     quasi elastic + elastic singl. diff cross section
+         SIGbdif = SIGQSD
+c     elastic cross section
+         SIGela = SIGel
+         if(ndebug.gt.0)THEN
+            WRITE(LUN,'(1X,A,3F8.2)')
+     &           'SIB_SIGMA_HNUC: SIGprod, SIGbdif, ALAM:',
+     &           SIGprod, SIGbdif, ALAM
+         ENDIF
+      ELSE
+         WRITE(LUN,'(//,1X,A)') 
+     &     ' SIB_SIGMA_HNUC: number of target nucleons too large!',
+     &     ' (0<=IAT<=18)'
+         SIGprod = -1.D0
+      ENDIF
+      RETURN
+      END
+
+C----------------------------------------------------------------------
+C     sampling routines for hard partons in SIBYLL
+C     includes GRV98 pdf table and initialization routines
+C----------------------------------------------------------------------
+C=======================================================================
+
+      SUBROUTINE SAMPLE_HARD (L,X1,X2,PT)
+
+C-----------------------------------------------------------------------
+C...Routine for sampling the kinematical variables 
+C.  that determine a jet-jet (gluon - gluon) system (x1,x2, pT) 
+C.  from the differential cross section:
+C.     d3sigma/(dx1 dx2 dpT)
+C.  This version assumes the `single parton approximation'
+C.  INPUT:  L=1 incident proton, L=2  incident pi
+C.          NPLD: position on parton stack
+C.  OUTPUT:  gluon 4momenta
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+
+c     external types
+      INTEGER L
+      DOUBLE PRECISION X1,X2,PT
+      
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+c     internal types
+      DOUBLE PRECISION Z1,Z2,SIG,S_RNDM,Q2,ZSAMPLE      
+      SAVE
+ 
+      IF(ndebug.gt.2)then
+         write(lun,*) ' SAMPLE_HARD: (SQS,S,PTmin,Xmin,Zmin)',
+     &        SQS,S,PTmin,Xmin,Zmin
+      endif
+
+ 100  Z1=ZSAMPLE (ZMIN,L)       ! beam L=1,2 for proton or pion
+      Z2=ZSAMPLE (ZMIN,1)       ! target always a nucleon
+      SIG=1.D0-XMIN*dEXP(-Z1-Z2)
+      IF (SIG .LT. S_RNDM(0))  GOTO 100      
+      X1=dEXP(Z1)
+      X2=dEXP(Z2)
+      IF (X1.gt.0.9D0.or.X2.gt.0.9D0) GOTO 100
+      Q2=PTmin**2/(1.D0-S_RNDM(L)*SIG)
+      IF(Q2.gt.S*X1*X2) goto 100
+      PT=dSQRT(Q2*(1.D0-Q2/(S*X1*X2)))
+
+      IF(ndebug.gt.2)then
+         write(lun,*) ' SAMPLE_HARD: (X1,X2,PT)',
+     &        X1,X2,PT
+      endif
+
+      RETURN
+      END
+
+C=======================================================================
+
+      FUNCTION ZSAMPLE (ZMIN,L)
+
+C-----------------------------------------------------------------------
+C...This function returns as output a value z=log(x)
+C.  distributed as f(x) = g(x) + 4/9 *(q(x) + qbar(x))
+C.  from a minimum value ZMIN to 0,
+C.  for a proton (L=1) or a pi (L=2)
+C.  needs to be initialised with: CALL ZSAMPLE_INI
+C.....................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      COMMON /S_CZGEN/ XA(2),XB(2),XMAX,ZA(2),ZB(2),ZMAX,
+     +     DX(2),DZ(2),APART(2),FFA(2),FFB(2),
+     +     DFX(2),DFZ(2),XX(200,2),ZZ(200,2),FFX(200,2),FFZ(200,2),
+     +     NX,NZ
+      PARAMETER (b=0.268D0)
+      PARAMETER (bpi=3.7D0)
+      PARAMETER (cpi=0.698D0)
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+      SAVE
+
+      F = PART_INT(ZMIN,L)*S_RNDM(0)
+      IF (F .GE. FFA(L))  THEN
+         IF(IPAR(8).EQ.0)THEN
+            ZSAMPLE = ZA(L) - (F-FFA(L))/APART(L)
+         ELSE
+            if(L.eq.1) then
+               ZSAMPLE = -1.D0/b * dLOG( 1.D0 - F / APART(L) ) 
+            else
+               ZSAMPLE = -1.D0 * ( (F - cpi)/APART(L) )**(1.D0/bpi)
+            endif
+         ENDIF
+      ELSE IF (F .GE. FFB(L))  THEN
+         JF = INT((F-FFB(L))/DFZ(L) + 1.D0)
+         JF = min(JF,199)
+         F0 = FFB(L) + DFZ(L)*DBLE(JF-1)
+         T = (F-F0)/DFZ(L)
+         ZSAMPLE = ZZ(JF,L)*(1.D0-T)+ZZ(JF+1,L)*T
+      ELSE
+         JF = INT(F/DFX(L)+1.D0)
+         JF = min(JF,199)
+         F0 = DFX(L)*DBLE(JF-1)
+         T = (F-F0)/DFX(L)
+         X = XX(JF,L)*(1.D0-T)+XX(JF+1,L)*T
+         ZSAMPLE = dLOG(X)
+      ENDIF
+
+      RETURN
+      END
+
+C=======================================================================
+
+      FUNCTION PART_INT (ZMIN,L)
+
+C-----------------------------------------------------------------------
+C...This function returns as output the integral of
+C.  the parton structure function:
+C.     f(x) = g(x) + 4/9 *(q(x) + qbar(x))
+C.  from xmin = exp(zmin) to 1 
+C.  for a proton (L=1) or a pi (L=2)
+C.  needs to be initialised with: CALL ZSAMPLE_INI
+C.....................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      COMMON /S_CZGEN/ XA(2),XB(2),XMAX,ZA(2),ZB(2),ZMAX,
+     +     DX(2),DZ(2),APART(2),FFA(2),FFB(2),
+     +     DFX(2),DFZ(2),XX(200,2),ZZ(200,2),FFX(200,2),FFZ(200,2),
+     +     NX,NZ
+      DOUBLE PRECISION b,bpi,cpi
+      PARAMETER (b=0.268D0)
+      PARAMETER (bpi=3.7D0)
+      PARAMETER (cpi=0.698D0)
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+      SAVE
+
+      IF (ZMIN .LT. ZA(L))  THEN
+         IF(IPAR(8).EQ.0)THEN
+            PART_INT = FFA(L) + APART(L) * (ZA(L) - ZMIN)
+         ELSE
+            if(L.eq.1) then
+               PART_INT = APART(L) * ( 1.D0 - dEXP(-b*ZMIN) ) 
+            else
+               PART_INT = APART(L) * ( -ZMIN )**bpi + cpi
+            endif
+         ENDIF
+      ELSE IF (ZMIN .LT. ZB(L)) THEN
+         JZ = INT((ZB(L)-ZMIN)/DZ(L)+1.D0)
+         JZ = min(JZ,199)
+         Z0 = ZB(L)-DZ(L)*DBLE(JZ-1)
+         T = (Z0-ZMIN)/DZ(L)
+         PART_INT = FFZ(JZ,L)*(1.D0-T) + FFZ(JZ+1,L)*T
+
+      ELSE
+         X = EXP(ZMIN)
+         JX = INT((XMAX-X)/DX(L)+1.D0)
+         JX = min(JX,199)
+         X0 = XMAX-DX(L)*DBLE(JX-1)
+         T = (X0-X)/DX(L)
+         PART_INT = FFX(JX,L)*(1.D0-T) + FFX(JX+1,L)*T
+      
+      ENDIF
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE GRV_INI
+
+C-----------------------------------------------------------------------
+C...This subroutine initializes the COMMON block
+C   used for sampling z, according to the GRV98LO
+C   pdf set
+C..................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      COMMON /S_CZGEN/ XA(2),XB(2),XMAX,ZA(2),ZB(2),ZMAX,
+     +     DX(2),DZ(2),APART(2),FFA(2),FFB(2),
+     +     DFX(2),DFZ(2),XX(200,2),ZZ(200,2),FFX(200,2),FFZ(200,2),
+     +     NX,NZ
+      DOUBLE PRECISION b,bpi,cpi
+      PARAMETER (b=0.268D0)
+      PARAMETER (bpi=3.7D0)
+      PARAMETER (cpi=0.698D0)
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+      SAVE
+
+      IPAR(8) = 1
+
+      XA(1) = 1.D-06
+      XB(1) = 1.D-01
+
+      XA(2) = 1.D-04
+      XB(2) = 1.D-01
+
+      XMAX = 0.8D0
+      ZMAX = dLOG(XMAX)
+      NX = 200
+      NZ = 200
+
+      DO L=1,2
+
+         ZA(L) = dLOG(XA(L))
+         ZB(L) = dLOG(XB(L))
+         DX(L) = (XMAX-XB(L))/DBLE(NX)
+         DZ(L) = (ZB(L)-ZA(L))/DBLE(NZ)
+
+C     large x: interpolation in x
+         FFX(1,L) = 0.D0
+         DO J=2,NX
+            X = XMAX - DX(L)*(DBLE(J)-1.D0)
+            G = PARTON(X,L)/X
+            FFX(J,L) = FFX(J-1,L)+G*DX(L)
+         ENDDO
+         CALL INVERT_ARRAY (FFX(1,L),XMAX,-DX(L),NX,XX(1,L),FMIN,DFX(L))
+
+C     small x: interpolation in log(x)
+         FFZ(1,L) = FFX(NX,L)
+         DO J=2,NZ
+            Z = ZB(L) - DZ(L)*(DBLE(J)-1.D0)
+            X = dEXP(Z)
+            G = PARTON(X,L)
+            FFZ(J,L) = FFZ(J-1,L)+G*DZ(L)
+         ENDDO
+         CALL INVERT_ARRAY(FFZ(1,L),ZB(L),-DZ(L),NZ,ZZ(1,L),FMIN,DFZ(L))
+         FFA(L) = FFZ(NZ,L)
+         FFB(L) = FFX(NX,L)
+         
+C     very small x:  f(x) = A/x**b b=1.268
+         IF(L.eq.1) THEN
+            APART(L) = FFA(L) / ( 1.D0 - dEXP(-b*ZA(L)) )
+         ELSE
+            APART(L) = ( FFA(L) - cpi ) / ( -ZA(L) )**bpi
+         ENDIF
+      ENDDO
+
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE ZSAMPLE_INI
+
+C-----------------------------------------------------------------------
+C...This subroutine initialise the generation of
+C.  z = log(x)  for the generation  of z according
+C.  to the structure functions
+C..................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      COMMON /S_CZGEN/ XA(2),XB(2),XMAX,ZA(2),ZB(2),ZMAX,
+     +     DX(2),DZ(2),APART(2),FFA(2),FFB(2),
+     +     DFX(2),DFZ(2),XX(200,2),ZZ(200,2),FFX(200,2),FFZ(200,2),
+     +     NX,NZ
+      SAVE
+
+      IPAR(8) = 0
+
+      XA(1) = 1.D-04
+      XB(1) = 1.D-01
+      XMAX = 0.8D0
+      ZA(1) = dLOG(XA(1))
+      ZB(1) = dLOG(XB(1))
+      ZMAX = dLOG(XMAX)
+      NX = 200
+      NZ = 200
+      DX(1) = (XMAX-XB(1))/DBLE(NX-1)
+      DZ(1) = (ZB(1)-ZA(1))/DBLE(NZ-1)
+
+      XA(2) = 1.D-04
+      XB(2) = 1.D-01
+      XMAX = 0.8D0
+      ZA(2) = dLOG(XA(2))
+      ZB(2) = dLOG(XB(2))
+      ZMAX = dLOG(XMAX)
+      NX = 200
+      NZ = 200
+      DX(2) = (XMAX-XB(2))/DBLE(NX-1)
+      DZ(2) = (ZB(2)-ZA(2))/DBLE(NZ-1)
+
+      DO L=1,2
+            
+C     very small x:  f(x) = A/x
+         APART(L) = PARTON(0.D0,L)
+            
+C         large x: interpolation in x
+         FFX(1,L) = 0.D0
+         DO J=2,NX
+            X = XMAX - DX(L)*(DBLE(J)-0.5D0)
+            G = PARTON(X,L)/X
+            FFX(J,L) = FFX(J-1,L)+G*DX(L)
+         ENDDO
+         CALL INVERT_ARRAY (FFX(1,L),XMAX,-DX(L),NX,XX(1,L),FMIN,DFX(L))
+            
+C     small x: interpolation in log(x)
+         FFZ(1,L) = FFX(NX,L)
+         DO J=2,NZ
+            Z = ZB(L) - DZ(L)*(DBLE(J)-0.5D0)
+            X = dEXP(Z)
+            G = PARTON(X,L)
+            FFZ(J,L) = FFZ(J-1,L)+G*DZ(L)
+         ENDDO
+         CALL INVERT_ARRAY(FFZ(1,L),ZB(L),-DZ(L),NZ,ZZ(1,L),FMIN,DFZ(L))
+         FFA(L) = FFZ(NZ,L)
+         FFB(L) = FFX(NX,L)
+         
+      ENDDO
+      RETURN
+      END
+
+C=======================================================================
+
+      FUNCTION PARTON(X,L)
+
+C-----------------------------------------------------------------------
+C...This function returns the structure function
+C.   f(x) = x * [ g(x) + 4/9 *(q(x) + qbar(x)) ]
+C.  for a proton. 
+C................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      PARAMETER (beta=1.925978D0)
+      SAVE
+      DATA NOUTP /0/
+
+c     effective scale
+      Q2inp = PAR(22)
+      IF (L .EQ. 2)  GOTO 1000
+
+      IF(IPAR(8).eq.0) THEN
+C...  Eichten et al.  (set 1)
+c     tp060203 100      uv = 1.78 * x**0.5 * (1.-x**1.51)**3.5
+         uv = 1.78D0 * x**0.5D0 * (1.D0-x**1.51D0)**3.5D0
+         dv = 0.67D0 * x**0.4D0 * (1.D0-x**1.51D0)**4.5D0
+         us = 0.182D0 * (1.D0-x)**8.54D0
+         ss = 0.081D0 * (1.D0-x)**8.54D0
+         qq0 = uv + dv + 4.D0*us + 2.D0*ss
+         glu0 = (2.62D0 + 9.17D0*x)* (1.D0-x)**5.9D0
+      ELSE
+         IF( NOUTP.eq.0 ) print *,' using GRV pdf set'
+         IF( NOUTP.eq.0 ) print *,' Q2 scale in pdf:',Q2INP
+         NOUTP = 1
+
+         CALL SIB_DOR98LO (X, Q2inp, UV, DV, US, DS, SS, GL)
+         qq0 = uv + dv + 4.D0* (us + ds) + 2.D0*ss
+         glu0 = gl
+      ENDIF
+      parton = glu0 + 4.D0/9.D0*qq0
+      RETURN
+
+ 1000 CONTINUE
+      IF(IPAR(8).eq.0) THEN
+C...Owens set 1   from STRF from Wisc. Pheno. group. for q2=q2_min
+         AV=0.4D0
+         BV=0.7D0
+c      BETA=GGAMMA(AV)*GGAMMA(BV+1.)/GGAMMA(AV+BV+1.)  =1.925978
+         uv=X**(AV)*(1.D0-X)**BV/BETA
+         dv=uv
+
+         A=0.9D0
+         BET=5.D0
+         us=(A*(1.D0-X)**BET)/6.D0
+         
+         A=0.888D0
+         BET=3.11D0
+         GA1=6.D0
+         glu0=A*(1.D0-X)**BET*(1.D0+GA1*X)
+c   Bug Fix thanks to Sue Kashahara- correct factor in front of 
+c   sea quarks for Owens S.F.  5-94
+         qq0 = uv + dv + 6.D0*us
+         parton = (glu0 + 4.D0/9.D0*qq0)
+         RETURN
+      ELSE
+
+c     duv = valence quark distribution
+c     dgl = gluon distribution
+c     dus = sea quark distribution (u,d,s)
+c     dds = sea charm quark ( neglected )
+c     dss = sea bottom quark ( neglected )
+         CALL DORPLO (X, Q2inp, uv, gl, us, ds, ss)
+         qq0 = uv + dv + 4.D0*us
+         glu0 = gl
+         parton = (glu0 + 4.D0/9.D0*qq0)
+         RETURN
+      ENDIF
+      END
+C=======================================================================
+
+      SUBROUTINE PDF_INI
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      COMMON /S_CZGEN/ XA(2),XB(2),XMAX,ZA(2),ZB(2),ZMAX,
+     +     DX(2),DZ(2),APART(2),FFA(2),FFB(2),
+     +     DFX(2),DFZ(2),XX(200,2),ZZ(200,2),FFX(200,2),FFZ(200,2),
+     +     NX,NZ
+      SAVE
+
+      IF(IPAR(8).eq.0) THEN
+         if (ndebug .gt. 0 ) WRITE(LUN,*)
+     *       ' PDF_INI: calcuLating pdf table using Eichten param..'
+         CALL ZSAMPLE_INI
+      ELSEIF(IPAR(8).eq.2) THEN
+         if (ndebug .gt. 0 ) then
+           WRITE(LUN,*)' PDF_INI: calculating pdf table using GRV',
+     *                  '  param..'
+           WRITE(LUN,*)' does not work with -fbounds-check !!'
+         endif
+         CALL GRV_INI
+      ELSE
+         if (ndebug .gt. 0 ) WRITE(LUN,*)
+     *        ' PDF_INI: using common table of GRV parametrization..'
+      ENDIF
+      if (ndebug .gt. 0 )  THEN
+           WRITE(LUN,*)APART(1),FFA(1),FFB(1),DX(1),DZ(1)
+           WRITE(LUN,*)APART(2),FFA(2),FFB(2),DX(2),DZ(2)
+      ENDIF
+      END
+
+C=======================================================================
+
+      BLOCK DATA PDFINI
+
+C-----------------------------------------------------------------------
+C..   tabled parton distribution function
+c     Proton: GRV98LO , Eur.Phys.J. C5(1998) 461-470
+c     Pion:   GRV91 , Z. Phys. C53, 651-655 (1992)
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)      
+      IMPLICIT INTEGER(I-N)
+      COMMON /S_CZGEN/ XA(2),XB(2),XMAX,ZA(2),ZB(2),ZMAX,
+     +     DX(2),DZ(2),APART(2),FFA(2),FFB(2),
+     +     DFX(2),DFZ(2),XX(200,2),ZZ(200,2),FFX(200,2),FFZ(200,2),
+     +     NX,NZ
+      SAVE
+      DATA XA /1.D-06,0.0001D0/
+      DATA XB /0.1D0,0.1D0/
+      DATA XMAX /0.800000011921D0/
+      DATA ZMAX /-0.223143532872D0/
+      DATA NX /200/
+      DATA NZ /200/
+      DATA ZA /-13.8155D0,-9.21034D0/
+      DATA ZB /-2.30259D0,-2.30259D0/
+      DATA DX /0.00351759D0,0.00351759D0/
+      DATA DZ /0.0578539D0,0.0347123D0/
+      DATA DFX /0.00952501D0,0.00847474D0/
+      DATA DFZ /1.93863D0,0.326082D0/
+      DATA APART /-9.80215D0,0.0178207D0/
+      DATA FFA /387.684D0,66.5767D0/
+      DATA FFB /1.89548D0,1.68647D0/
+      
+      DATA (FFX(K,1),K=1,200 ) /
+     &0.000D+00,6.380D-05,1.315D-04,2.034D-04,2.795D-04,
+     &3.601D-04,4.454D-04,5.356D-04,6.309D-04,7.315D-04,
+     &8.377D-04,9.497D-04,1.068D-03,1.192D-03,1.323D-03,
+     &1.460D-03,1.605D-03,1.756D-03,1.916D-03,2.083D-03,
+     &2.258D-03,2.441D-03,2.633D-03,2.835D-03,3.045D-03,
+     &3.265D-03,3.496D-03,3.736D-03,3.988D-03,4.250D-03,
+     &4.524D-03,4.810D-03,5.108D-03,5.418D-03,5.742D-03,
+     &6.078D-03,6.429D-03,6.794D-03,7.174D-03,7.570D-03,
+     &7.981D-03,8.408D-03,8.852D-03,9.313D-03,9.793D-03,
+     &1.029D-02,1.081D-02,1.134D-02,1.190D-02,1.247D-02,
+     &1.307D-02,1.369D-02,1.433D-02,1.500D-02,1.568D-02,
+     &1.640D-02,1.714D-02,1.790D-02,1.869D-02,1.951D-02,
+     &2.035D-02,2.123D-02,2.213D-02,2.307D-02,2.403D-02,
+     &2.503D-02,2.607D-02,2.713D-02,2.823D-02,2.937D-02,
+     &3.054D-02,3.176D-02,3.301D-02,3.430D-02,3.563D-02,
+     &3.701D-02,3.842D-02,3.989D-02,4.139D-02,4.295D-02,
+     &4.455D-02,4.620D-02,4.791D-02,4.966D-02,5.147D-02,
+     &5.334D-02,5.526D-02,5.724D-02,5.927D-02,6.137D-02,
+     &6.353D-02,6.576D-02,6.805D-02,7.041D-02,7.284D-02,
+     &7.534D-02,7.791D-02,8.056D-02,8.329D-02,8.609D-02,
+     &8.898D-02,9.195D-02,9.500D-02,9.814D-02,1.014D-01,
+     &1.047D-01,1.081D-01,1.116D-01,1.153D-01,1.190D-01,
+     &1.228D-01,1.267D-01,1.308D-01,1.350D-01,1.392D-01,
+     &1.436D-01,1.481D-01,1.528D-01,1.575D-01,1.624D-01,
+     &1.674D-01,1.725D-01,1.778D-01,1.832D-01,1.888D-01,
+     &1.946D-01,2.005D-01,2.066D-01,2.128D-01,2.193D-01,
+     &2.259D-01,2.327D-01,2.397D-01,2.469D-01,2.543D-01,
+     &2.619D-01,2.698D-01,2.778D-01,2.862D-01,2.947D-01,
+     &3.035D-01,3.125D-01,3.218D-01,3.314D-01,3.413D-01,
+     &3.514D-01,3.618D-01,3.726D-01,3.836D-01,3.950D-01,
+     &4.067D-01,4.188D-01,4.312D-01,4.440D-01,4.572D-01,
+     &4.708D-01,4.848D-01,4.992D-01,5.141D-01,5.294D-01,
+     &5.452D-01,5.615D-01,5.783D-01,5.956D-01,6.134D-01,
+     &6.319D-01,6.509D-01,6.706D-01,6.909D-01,7.118D-01,
+     &7.334D-01,7.558D-01,7.789D-01,8.029D-01,8.276D-01,
+     &8.532D-01,8.797D-01,9.072D-01,9.356D-01,9.650D-01,
+     &9.956D-01,1.027D+00,1.060D+00,1.094D+00,1.130D+00,
+     &1.167D+00,1.205D+00,1.245D+00,1.287D+00,1.331D+00,
+     &1.376D+00,1.423D+00,1.473D+00,1.525D+00,1.579D+00,
+     &1.636D+00,1.696D+00,1.759D+00,1.826D+00,1.895D+00/
+      
+      DATA (FFX(K,2),K=1,200 ) /
+     &0.000D+00,7.266D-04,1.470D-03,2.231D-03,3.009D-03,
+     &3.805D-03,4.619D-03,5.450D-03,6.300D-03,7.168D-03,
+     &8.055D-03,8.961D-03,9.886D-03,1.083D-02,1.179D-02,
+     &1.278D-02,1.378D-02,1.481D-02,1.585D-02,1.692D-02,
+     &1.800D-02,1.911D-02,2.024D-02,2.139D-02,2.256D-02,
+     &2.376D-02,2.498D-02,2.622D-02,2.748D-02,2.877D-02,
+     &3.008D-02,3.142D-02,3.278D-02,3.416D-02,3.557D-02,
+     &3.701D-02,3.847D-02,3.996D-02,4.147D-02,4.301D-02,
+     &4.458D-02,4.617D-02,4.779D-02,4.945D-02,5.112D-02,
+     &5.283D-02,5.457D-02,5.634D-02,5.813D-02,5.996D-02,
+     &6.182D-02,6.371D-02,6.563D-02,6.759D-02,6.957D-02,
+     &7.159D-02,7.365D-02,7.573D-02,7.786D-02,8.001D-02,
+     &8.221D-02,8.443D-02,8.670D-02,8.900D-02,9.134D-02,
+     &9.372D-02,9.614D-02,9.860D-02,1.011D-01,1.036D-01,
+     &1.062D-01,1.088D-01,1.115D-01,1.142D-01,1.170D-01,
+     &1.197D-01,1.226D-01,1.255D-01,1.284D-01,1.314D-01,
+     &1.344D-01,1.375D-01,1.406D-01,1.438D-01,1.470D-01,
+     &1.503D-01,1.536D-01,1.570D-01,1.605D-01,1.640D-01,
+     &1.675D-01,1.712D-01,1.748D-01,1.786D-01,1.824D-01,
+     &1.862D-01,1.901D-01,1.941D-01,1.982D-01,2.023D-01,
+     &2.065D-01,2.107D-01,2.151D-01,2.195D-01,2.239D-01,
+     &2.285D-01,2.331D-01,2.378D-01,2.426D-01,2.474D-01,
+     &2.524D-01,2.574D-01,2.625D-01,2.677D-01,2.730D-01,
+     &2.784D-01,2.839D-01,2.895D-01,2.951D-01,3.009D-01,
+     &3.068D-01,3.128D-01,3.189D-01,3.251D-01,3.314D-01,
+     &3.378D-01,3.443D-01,3.510D-01,3.578D-01,3.647D-01,
+     &3.717D-01,3.789D-01,3.862D-01,3.937D-01,4.012D-01,
+     &4.090D-01,4.169D-01,4.249D-01,4.331D-01,4.415D-01,
+     &4.500D-01,4.587D-01,4.676D-01,4.767D-01,4.859D-01,
+     &4.954D-01,5.050D-01,5.148D-01,5.249D-01,5.352D-01,
+     &5.457D-01,5.564D-01,5.674D-01,5.786D-01,5.901D-01,
+     &6.019D-01,6.139D-01,6.262D-01,6.388D-01,6.517D-01,
+     &6.649D-01,6.785D-01,6.923D-01,7.066D-01,7.212D-01,
+     &7.362D-01,7.516D-01,7.673D-01,7.836D-01,8.002D-01,
+     &8.174D-01,8.350D-01,8.532D-01,8.718D-01,8.911D-01,
+     &9.109D-01,9.313D-01,9.524D-01,9.742D-01,9.966D-01,
+     &1.020D+00,1.044D+00,1.069D+00,1.094D+00,1.121D+00,
+     &1.149D+00,1.177D+00,1.207D+00,1.238D+00,1.271D+00,
+     &1.304D+00,1.339D+00,1.376D+00,1.414D+00,1.454D+00,
+     &1.496D+00,1.540D+00,1.586D+00,1.635D+00,1.686D+00/
+      
+      DATA (FFZ(K,1),K=1,200 ) /
+     &1.895D+00,2.014D+00,2.137D+00,2.263D+00,2.393D+00,
+     &2.527D+00,2.665D+00,2.807D+00,2.953D+00,3.103D+00,
+     &3.257D+00,3.417D+00,3.580D+00,3.748D+00,3.921D+00,
+     &4.098D+00,4.281D+00,4.469D+00,4.663D+00,4.861D+00,
+     &5.065D+00,5.274D+00,5.489D+00,5.710D+00,5.937D+00,
+     &6.170D+00,6.409D+00,6.654D+00,6.906D+00,7.164D+00,
+     &7.430D+00,7.702D+00,7.981D+00,8.267D+00,8.561D+00,
+     &8.862D+00,9.171D+00,9.487D+00,9.811D+00,1.014D+01,
+     &1.048D+01,1.083D+01,1.119D+01,1.156D+01,1.193D+01,
+     &1.232D+01,1.271D+01,1.311D+01,1.352D+01,1.395D+01,
+     &1.438D+01,1.482D+01,1.527D+01,1.573D+01,1.621D+01,
+     &1.669D+01,1.718D+01,1.769D+01,1.821D+01,1.874D+01,
+     &1.928D+01,1.983D+01,2.040D+01,2.097D+01,2.156D+01,
+     &2.217D+01,2.278D+01,2.341D+01,2.406D+01,2.471D+01,
+     &2.539D+01,2.607D+01,2.677D+01,2.749D+01,2.822D+01,
+     &2.896D+01,2.973D+01,3.050D+01,3.130D+01,3.211D+01,
+     &3.293D+01,3.378D+01,3.464D+01,3.552D+01,3.642D+01,
+     &3.733D+01,3.827D+01,3.922D+01,4.020D+01,4.119D+01,
+     &4.220D+01,4.323D+01,4.429D+01,4.536D+01,4.646D+01,
+     &4.758D+01,4.872D+01,4.988D+01,5.106D+01,5.227D+01,
+     &5.350D+01,5.476D+01,5.604D+01,5.735D+01,5.868D+01,
+     &6.003D+01,6.142D+01,6.282D+01,6.426D+01,6.572D+01,
+     &6.721D+01,6.873D+01,7.028D+01,7.186D+01,7.346D+01,
+     &7.510D+01,7.677D+01,7.847D+01,8.020D+01,8.196D+01,
+     &8.375D+01,8.558D+01,8.744D+01,8.934D+01,9.127D+01,
+     &9.324D+01,9.524D+01,9.728D+01,9.936D+01,1.015D+02,
+     &1.036D+02,1.058D+02,1.080D+02,1.103D+02,1.126D+02,
+     &1.150D+02,1.174D+02,1.198D+02,1.223D+02,1.248D+02,
+     &1.274D+02,1.300D+02,1.327D+02,1.354D+02,1.381D+02,
+     &1.409D+02,1.438D+02,1.467D+02,1.496D+02,1.526D+02,
+     &1.557D+02,1.588D+02,1.619D+02,1.652D+02,1.684D+02,
+     &1.718D+02,1.751D+02,1.786D+02,1.821D+02,1.856D+02,
+     &1.892D+02,1.929D+02,1.967D+02,2.005D+02,2.043D+02,
+     &2.083D+02,2.122D+02,2.163D+02,2.204D+02,2.246D+02,
+     &2.289D+02,2.332D+02,2.376D+02,2.421D+02,2.467D+02,
+     &2.513D+02,2.560D+02,2.608D+02,2.656D+02,2.706D+02,
+     &2.756D+02,2.807D+02,2.859D+02,2.911D+02,2.965D+02,
+     &3.019D+02,3.074D+02,3.130D+02,3.187D+02,3.245D+02,
+     &3.304D+02,3.364D+02,3.425D+02,3.486D+02,3.549D+02,
+     &3.612D+02,3.677D+02,3.743D+02,3.809D+02,3.877D+02/
+      
+      DATA (FFZ(K,2),K=1,200 ) /
+     &1.686D+00,1.738D+00,1.791D+00,1.844D+00,1.899D+00,
+     &1.955D+00,2.011D+00,2.069D+00,2.128D+00,2.188D+00,
+     &2.249D+00,2.311D+00,2.374D+00,2.438D+00,2.504D+00,
+     &2.570D+00,2.638D+00,2.708D+00,2.778D+00,2.850D+00,
+     &2.923D+00,2.997D+00,3.072D+00,3.149D+00,3.228D+00,
+     &3.307D+00,3.388D+00,3.471D+00,3.555D+00,3.640D+00,
+     &3.727D+00,3.815D+00,3.905D+00,3.997D+00,4.090D+00,
+     &4.184D+00,4.281D+00,4.378D+00,4.478D+00,4.579D+00,
+     &4.682D+00,4.787D+00,4.893D+00,5.002D+00,5.112D+00,
+     &5.224D+00,5.337D+00,5.453D+00,5.571D+00,5.690D+00,
+     &5.811D+00,5.935D+00,6.060D+00,6.188D+00,6.317D+00,
+     &6.449D+00,6.583D+00,6.719D+00,6.857D+00,6.997D+00,
+     &7.139D+00,7.284D+00,7.431D+00,7.580D+00,7.732D+00,
+     &7.886D+00,8.042D+00,8.201D+00,8.363D+00,8.526D+00,
+     &8.693D+00,8.862D+00,9.033D+00,9.207D+00,9.384D+00,
+     &9.563D+00,9.746D+00,9.930D+00,1.012D+01,1.031D+01,
+     &1.050D+01,1.070D+01,1.090D+01,1.110D+01,1.130D+01,
+     &1.151D+01,1.172D+01,1.194D+01,1.215D+01,1.237D+01,
+     &1.260D+01,1.283D+01,1.306D+01,1.329D+01,1.353D+01,
+     &1.377D+01,1.401D+01,1.426D+01,1.451D+01,1.476D+01,
+     &1.502D+01,1.528D+01,1.554D+01,1.581D+01,1.608D+01,
+     &1.636D+01,1.664D+01,1.692D+01,1.721D+01,1.750D+01,
+     &1.780D+01,1.810D+01,1.840D+01,1.871D+01,1.902D+01,
+     &1.934D+01,1.966D+01,1.998D+01,2.031D+01,2.065D+01,
+     &2.098D+01,2.133D+01,2.167D+01,2.203D+01,2.238D+01,
+     &2.274D+01,2.311D+01,2.348D+01,2.385D+01,2.423D+01,
+     &2.462D+01,2.501D+01,2.541D+01,2.581D+01,2.621D+01,
+     &2.662D+01,2.704D+01,2.746D+01,2.789D+01,2.832D+01,
+     &2.875D+01,2.920D+01,2.965D+01,3.010D+01,3.056D+01,
+     &3.103D+01,3.150D+01,3.198D+01,3.246D+01,3.295D+01,
+     &3.344D+01,3.395D+01,3.445D+01,3.497D+01,3.549D+01,
+     &3.601D+01,3.655D+01,3.709D+01,3.763D+01,3.819D+01,
+     &3.875D+01,3.931D+01,3.989D+01,4.047D+01,4.105D+01,
+     &4.165D+01,4.225D+01,4.286D+01,4.347D+01,4.410D+01,
+     &4.473D+01,4.537D+01,4.601D+01,4.666D+01,4.732D+01,
+     &4.799D+01,4.867D+01,4.935D+01,5.005D+01,5.075D+01,
+     &5.146D+01,5.217D+01,5.290D+01,5.363D+01,5.437D+01,
+     &5.512D+01,5.588D+01,5.665D+01,5.743D+01,5.821D+01,
+     &5.901D+01,5.981D+01,6.062D+01,6.145D+01,6.228D+01,
+     &6.312D+01,6.397D+01,6.483D+01,6.570D+01,6.658D+01/
+      
+      DATA (XX(K,1),K=1,200 ) /
+     &8.000D-01,6.472D-01,5.944D-01,5.597D-01,5.335D-01,
+     &5.121D-01,4.941D-01,4.785D-01,4.647D-01,4.522D-01,
+     &4.409D-01,4.306D-01,4.210D-01,4.122D-01,4.039D-01,
+     &3.961D-01,3.887D-01,3.817D-01,3.751D-01,3.688D-01,
+     &3.628D-01,3.571D-01,3.516D-01,3.463D-01,3.413D-01,
+     &3.365D-01,3.318D-01,3.273D-01,3.230D-01,3.188D-01,
+     &3.147D-01,3.108D-01,3.070D-01,3.033D-01,2.998D-01,
+     &2.963D-01,2.929D-01,2.896D-01,2.864D-01,2.833D-01,
+     &2.802D-01,2.773D-01,2.744D-01,2.715D-01,2.688D-01,
+     &2.661D-01,2.634D-01,2.608D-01,2.583D-01,2.558D-01,
+     &2.534D-01,2.510D-01,2.487D-01,2.464D-01,2.442D-01,
+     &2.420D-01,2.398D-01,2.377D-01,2.356D-01,2.336D-01,
+     &2.316D-01,2.296D-01,2.277D-01,2.257D-01,2.239D-01,
+     &2.220D-01,2.202D-01,2.184D-01,2.167D-01,2.150D-01,
+     &2.132D-01,2.116D-01,2.099D-01,2.083D-01,2.067D-01,
+     &2.051D-01,2.036D-01,2.020D-01,2.005D-01,1.990D-01,
+     &1.976D-01,1.961D-01,1.947D-01,1.933D-01,1.919D-01,
+     &1.905D-01,1.891D-01,1.878D-01,1.865D-01,1.852D-01,
+     &1.839D-01,1.826D-01,1.814D-01,1.801D-01,1.789D-01,
+     &1.777D-01,1.765D-01,1.753D-01,1.741D-01,1.730D-01,
+     &1.718D-01,1.707D-01,1.696D-01,1.685D-01,1.674D-01,
+     &1.663D-01,1.653D-01,1.642D-01,1.632D-01,1.622D-01,
+     &1.611D-01,1.601D-01,1.591D-01,1.581D-01,1.572D-01,
+     &1.562D-01,1.552D-01,1.543D-01,1.534D-01,1.524D-01,
+     &1.515D-01,1.506D-01,1.497D-01,1.488D-01,1.479D-01,
+     &1.471D-01,1.462D-01,1.453D-01,1.445D-01,1.437D-01,
+     &1.428D-01,1.420D-01,1.412D-01,1.404D-01,1.396D-01,
+     &1.388D-01,1.380D-01,1.372D-01,1.365D-01,1.357D-01,
+     &1.349D-01,1.342D-01,1.335D-01,1.327D-01,1.320D-01,
+     &1.313D-01,1.306D-01,1.299D-01,1.292D-01,1.284D-01,
+     &1.278D-01,1.271D-01,1.264D-01,1.257D-01,1.251D-01,
+     &1.244D-01,1.237D-01,1.231D-01,1.224D-01,1.218D-01,
+     &1.212D-01,1.205D-01,1.199D-01,1.193D-01,1.187D-01,
+     &1.181D-01,1.175D-01,1.169D-01,1.163D-01,1.157D-01,
+     &1.151D-01,1.145D-01,1.139D-01,1.134D-01,1.128D-01,
+     &1.123D-01,1.117D-01,1.112D-01,1.106D-01,1.101D-01,
+     &1.095D-01,1.090D-01,1.085D-01,1.079D-01,1.074D-01,
+     &1.069D-01,1.064D-01,1.059D-01,1.054D-01,1.049D-01,
+     &1.044D-01,1.039D-01,1.034D-01,1.029D-01,1.024D-01,
+     &1.019D-01,1.014D-01,1.010D-01,1.005D-01,1.000D-01/
+      
+      DATA (XX(K,2),K=1,200 ) /
+     &8.000D-01,7.632D-01,7.331D-01,7.073D-01,6.846D-01,
+     &6.643D-01,6.458D-01,6.289D-01,6.132D-01,5.986D-01,
+     &5.849D-01,5.721D-01,5.600D-01,5.485D-01,5.376D-01,
+     &5.272D-01,5.172D-01,5.077D-01,4.986D-01,4.899D-01,
+     &4.815D-01,4.734D-01,4.656D-01,4.581D-01,4.508D-01,
+     &4.438D-01,4.370D-01,4.304D-01,4.240D-01,4.178D-01,
+     &4.118D-01,4.059D-01,4.002D-01,3.947D-01,3.893D-01,
+     &3.840D-01,3.789D-01,3.739D-01,3.690D-01,3.643D-01,
+     &3.597D-01,3.551D-01,3.507D-01,3.464D-01,3.421D-01,
+     &3.380D-01,3.340D-01,3.300D-01,3.261D-01,3.223D-01,
+     &3.186D-01,3.150D-01,3.114D-01,3.079D-01,3.045D-01,
+     &3.011D-01,2.978D-01,2.945D-01,2.914D-01,2.883D-01,
+     &2.852D-01,2.822D-01,2.792D-01,2.763D-01,2.735D-01,
+     &2.707D-01,2.679D-01,2.652D-01,2.625D-01,2.599D-01,
+     &2.574D-01,2.548D-01,2.523D-01,2.499D-01,2.475D-01,
+     &2.451D-01,2.428D-01,2.405D-01,2.382D-01,2.360D-01,
+     &2.338D-01,2.316D-01,2.295D-01,2.274D-01,2.254D-01,
+     &2.233D-01,2.213D-01,2.193D-01,2.174D-01,2.155D-01,
+     &2.136D-01,2.117D-01,2.099D-01,2.081D-01,2.063D-01,
+     &2.045D-01,2.028D-01,2.011D-01,1.994D-01,1.977D-01,
+     &1.961D-01,1.944D-01,1.929D-01,1.913D-01,1.897D-01,
+     &1.882D-01,1.867D-01,1.851D-01,1.837D-01,1.822D-01,
+     &1.808D-01,1.793D-01,1.779D-01,1.765D-01,1.752D-01,
+     &1.738D-01,1.725D-01,1.711D-01,1.698D-01,1.686D-01,
+     &1.673D-01,1.660D-01,1.648D-01,1.635D-01,1.623D-01,
+     &1.611D-01,1.599D-01,1.588D-01,1.576D-01,1.564D-01,
+     &1.553D-01,1.542D-01,1.531D-01,1.520D-01,1.509D-01,
+     &1.498D-01,1.488D-01,1.477D-01,1.467D-01,1.457D-01,
+     &1.447D-01,1.437D-01,1.427D-01,1.417D-01,1.407D-01,
+     &1.398D-01,1.388D-01,1.379D-01,1.369D-01,1.360D-01,
+     &1.351D-01,1.342D-01,1.333D-01,1.324D-01,1.316D-01,
+     &1.307D-01,1.299D-01,1.290D-01,1.282D-01,1.273D-01,
+     &1.265D-01,1.257D-01,1.249D-01,1.241D-01,1.233D-01,
+     &1.225D-01,1.218D-01,1.210D-01,1.203D-01,1.195D-01,
+     &1.188D-01,1.180D-01,1.173D-01,1.166D-01,1.159D-01,
+     &1.152D-01,1.144D-01,1.138D-01,1.131D-01,1.124D-01,
+     &1.117D-01,1.110D-01,1.104D-01,1.097D-01,1.091D-01,
+     &1.084D-01,1.078D-01,1.072D-01,1.065D-01,1.059D-01,
+     &1.053D-01,1.047D-01,1.041D-01,1.035D-01,1.029D-01,
+     &1.023D-01,1.017D-01,1.012D-01,1.006D-01,1.000D-01/
+      
+      DATA (ZZ(K,1),K=1,200 ) /
+     &-2.303D+00,-3.084D+00,-3.649D+00,-4.098D+00,
+     &-4.472D+00,-4.795D+00,-5.080D+00,-5.335D+00,
+     &-5.568D+00,-5.781D+00,-5.978D+00,-6.161D+00,
+     &-6.333D+00,-6.494D+00,-6.647D+00,-6.792D+00,
+     &-6.929D+00,-7.060D+00,-7.186D+00,-7.306D+00,
+     &-7.421D+00,-7.532D+00,-7.639D+00,-7.742D+00,
+     &-7.842D+00,-7.938D+00,-8.031D+00,-8.122D+00,
+     &-8.210D+00,-8.295D+00,-8.378D+00,-8.459D+00,
+     &-8.538D+00,-8.614D+00,-8.689D+00,-8.762D+00,
+     &-8.834D+00,-8.904D+00,-8.972D+00,-9.039D+00,
+     &-9.104D+00,-9.168D+00,-9.231D+00,-9.293D+00,
+     &-9.353D+00,-9.412D+00,-9.470D+00,-9.528D+00,
+     &-9.584D+00,-9.639D+00,-9.693D+00,-9.746D+00,
+     &-9.799D+00,-9.851D+00,-9.901D+00,-9.951D+00,
+     &-1.000D+01,-1.005D+01,-1.010D+01,-1.014D+01,
+     &-1.019D+01,-1.024D+01,-1.028D+01,-1.033D+01,
+     &-1.037D+01,-1.041D+01,-1.046D+01,-1.050D+01,
+     &-1.054D+01,-1.058D+01,-1.062D+01,-1.066D+01,
+     &-1.070D+01,-1.074D+01,-1.078D+01,-1.082D+01,
+     &-1.086D+01,-1.089D+01,-1.093D+01,-1.097D+01,
+     &-1.101D+01,-1.104D+01,-1.108D+01,-1.111D+01,
+     &-1.115D+01,-1.118D+01,-1.122D+01,-1.125D+01,
+     &-1.128D+01,-1.132D+01,-1.135D+01,-1.138D+01,
+     &-1.141D+01,-1.145D+01,-1.148D+01,-1.151D+01,
+     &-1.154D+01,-1.157D+01,-1.160D+01,-1.163D+01,
+     &-1.166D+01,-1.169D+01,-1.172D+01,-1.175D+01,
+     &-1.178D+01,-1.181D+01,-1.184D+01,-1.186D+01,
+     &-1.189D+01,-1.192D+01,-1.195D+01,-1.198D+01,
+     &-1.200D+01,-1.203D+01,-1.206D+01,-1.208D+01,
+     &-1.211D+01,-1.214D+01,-1.216D+01,-1.219D+01,
+     &-1.221D+01,-1.224D+01,-1.226D+01,-1.229D+01,
+     &-1.231D+01,-1.234D+01,-1.236D+01,-1.239D+01,
+     &-1.241D+01,-1.244D+01,-1.246D+01,-1.248D+01,
+     &-1.251D+01,-1.253D+01,-1.255D+01,-1.258D+01,
+     &-1.260D+01,-1.262D+01,-1.264D+01,-1.267D+01,
+     &-1.269D+01,-1.271D+01,-1.273D+01,-1.276D+01,
+     &-1.278D+01,-1.280D+01,-1.282D+01,-1.284D+01,
+     &-1.286D+01,-1.289D+01,-1.291D+01,-1.293D+01,
+     &-1.295D+01,-1.297D+01,-1.299D+01,-1.301D+01,
+     &-1.303D+01,-1.305D+01,-1.307D+01,-1.309D+01,
+     &-1.311D+01,-1.313D+01,-1.315D+01,-1.317D+01,
+     &-1.319D+01,-1.321D+01,-1.323D+01,-1.325D+01,
+     &-1.327D+01,-1.329D+01,-1.330D+01,-1.332D+01,
+     &-1.334D+01,-1.336D+01,-1.338D+01,-1.340D+01,
+     &-1.342D+01,-1.343D+01,-1.345D+01,-1.347D+01,
+     &-1.349D+01,-1.351D+01,-1.352D+01,-1.354D+01,
+     &-1.356D+01,-1.358D+01,-1.360D+01,-1.361D+01,
+     &-1.363D+01,-1.365D+01,-1.366D+01,-1.368D+01,
+     &-1.370D+01,-1.372D+01,-1.373D+01,-1.375D+01,
+     &-1.377D+01,-1.378D+01,-1.380D+01,-1.382D+01/
+      
+      DATA (ZZ(K,2),K=1,200 ) /
+     &-2.303D+00,-2.512D+00,-2.700D+00,-2.871D+00,
+     &-3.029D+00,-3.175D+00,-3.310D+00,-3.438D+00,
+     &-3.557D+00,-3.670D+00,-3.778D+00,-3.880D+00,
+     &-3.977D+00,-4.070D+00,-4.159D+00,-4.245D+00,
+     &-4.328D+00,-4.407D+00,-4.484D+00,-4.558D+00,
+     &-4.630D+00,-4.699D+00,-4.767D+00,-4.832D+00,
+     &-4.896D+00,-4.958D+00,-5.019D+00,-5.078D+00,
+     &-5.135D+00,-5.191D+00,-5.246D+00,-5.300D+00,
+     &-5.352D+00,-5.403D+00,-5.453D+00,-5.503D+00,
+     &-5.551D+00,-5.598D+00,-5.645D+00,-5.690D+00,
+     &-5.735D+00,-5.779D+00,-5.822D+00,-5.864D+00,
+     &-5.906D+00,-5.947D+00,-5.988D+00,-6.027D+00,
+     &-6.067D+00,-6.105D+00,-6.143D+00,-6.181D+00,
+     &-6.217D+00,-6.254D+00,-6.290D+00,-6.325D+00,
+     &-6.360D+00,-6.394D+00,-6.428D+00,-6.462D+00,
+     &-6.495D+00,-6.528D+00,-6.560D+00,-6.592D+00,
+     &-6.624D+00,-6.655D+00,-6.686D+00,-6.716D+00,
+     &-6.746D+00,-6.776D+00,-6.805D+00,-6.835D+00,
+     &-6.863D+00,-6.892D+00,-6.920D+00,-6.948D+00,
+     &-6.976D+00,-7.003D+00,-7.030D+00,-7.057D+00,
+     &-7.084D+00,-7.110D+00,-7.136D+00,-7.162D+00,
+     &-7.188D+00,-7.213D+00,-7.238D+00,-7.263D+00,
+     &-7.288D+00,-7.312D+00,-7.336D+00,-7.360D+00,
+     &-7.384D+00,-7.408D+00,-7.431D+00,-7.455D+00,
+     &-7.478D+00,-7.501D+00,-7.523D+00,-7.546D+00,
+     &-7.568D+00,-7.590D+00,-7.612D+00,-7.634D+00,
+     &-7.656D+00,-7.677D+00,-7.698D+00,-7.720D+00,
+     &-7.741D+00,-7.761D+00,-7.782D+00,-7.803D+00,
+     &-7.823D+00,-7.843D+00,-7.863D+00,-7.883D+00,
+     &-7.903D+00,-7.923D+00,-7.943D+00,-7.962D+00,
+     &-7.981D+00,-8.001D+00,-8.020D+00,-8.039D+00,
+     &-8.057D+00,-8.076D+00,-8.095D+00,-8.113D+00,
+     &-8.132D+00,-8.150D+00,-8.168D+00,-8.186D+00,
+     &-8.204D+00,-8.222D+00,-8.239D+00,-8.257D+00,
+     &-8.274D+00,-8.292D+00,-8.309D+00,-8.326D+00,
+     &-8.343D+00,-8.360D+00,-8.377D+00,-8.394D+00,
+     &-8.411D+00,-8.427D+00,-8.444D+00,-8.460D+00,
+     &-8.476D+00,-8.493D+00,-8.509D+00,-8.525D+00,
+     &-8.541D+00,-8.557D+00,-8.572D+00,-8.588D+00,
+     &-8.604D+00,-8.619D+00,-8.635D+00,-8.650D+00,
+     &-8.666D+00,-8.681D+00,-8.696D+00,-8.711D+00,
+     &-8.726D+00,-8.741D+00,-8.756D+00,-8.771D+00,
+     &-8.786D+00,-8.800D+00,-8.815D+00,-8.829D+00,
+     &-8.844D+00,-8.858D+00,-8.872D+00,-8.887D+00,
+     &-8.901D+00,-8.915D+00,-8.929D+00,-8.943D+00,
+     &-8.957D+00,-8.971D+00,-8.985D+00,-8.998D+00,
+     &-9.012D+00,-9.026D+00,-9.039D+00,-9.053D+00,
+     &-9.066D+00,-9.080D+00,-9.093D+00,-9.106D+00,
+     &-9.119D+00,-9.133D+00,-9.146D+00,-9.159D+00,
+     &-9.172D+00,-9.185D+00,-9.197D+00,-9.210D+00/
+      END
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION CHIDIS (KPARTin, IFL1, IFL2)
+
+C-----------------------------------------------------------------------
+C...Generate CHI (fraction of energy of a hadron carried by 
+C.                the valence quark, or diquark, as specified by IFL1)
+C.  INPUT KPART = code of particle
+C.        IFL1, IFL2 = codes of partons (3, 3bar of color)
+C.........................................................
+      IMPLICIT NONE
+c     external types
+      INTEGER KPARTIN,IFL1,IFL2
+c     COMMONs
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      DOUBLE PRECISION CCHIK
+      COMMON /S_CPSPL/ CCHIK(4,99)
+      
+      DOUBLE PRECISION STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+      COMMON /S_CUTOFF/ STR_mass_val, STR_mass_val_hyp, STR_mass_sea
+c     internal types
+      DOUBLE PRECISION CUT,S_RNDM
+      INTEGER KPART,IFQ
+      SAVE
+
+      kpart=IABS(kpartin)
+      IFQ=IABS(IFL1)
+      IF (IFQ.GT.10) IFQ=IABS(IFL2)
+      CUT=2.D0*STR_mass_val/SQS
+c     hyperon beam cut
+      IF(kpart.gt.14) CUT=2.D0*STR_mass_val_hyp/SQS
+100   CHIDIS=S_RNDM(0)**2
+      if (chidis.lt.cut) goto 100
+      if (chidis.gt.(1.D0-cut)) goto 100
+      IF((CHIDIS**2/(CHIDIS**2+CUT**2))**0.5D0
+     +   *(1.D0-CHIDIS)**CCHIK(IFQ,KPART).LT.S_RNDM(1)) GOTO 100
+      CHIDIS = MAX(0.5D0*CUT,CHIDIS)
+      CHIDIS = MIN(1.D0-CUT,CHIDIS)
+c     diquarks or charm quarks      
+      IF (IABS(IFL1).GT.3)  CHIDIS=1.D0-CHIDIS
+      RETURN
+      END
+C=======================================================================
+
+      FUNCTION QMASS(IFL)
+
+C-----------------------------------------------------------------------
+C...Return quark or diquark constituent masses
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DIMENSION QMAS(4)
+      SAVE
+      DATA QMAS /0.325D0,0.325D0,0.5D0,1.5D0/
+
+      IFLA = IABS(IFL)
+      IFLA = MOD(IFLA,100)
+      IF (IFLA .LE. 4)       THEN
+         QMASS = QMAS(IFLA)
+      ELSE
+         QMA = QMAS(IFLA/10)
+         QMB = QMAS(MOD(IFLA,10))
+         QMASS = QMA+QMB
+      ENDIF
+      RETURN
+      END
+C=======================================================================
+
+      FUNCTION XM2DIS(XM2MIN,XM2MAX,ALPHA)
+
+C-----------------------------------------------------------------------
+C     function that samples mass**2 from (1/M**2)**alpha
+C     with alpha <= 1                                             
+C     INPUT: Mmin**2 : minimal mass
+C            Mmax**2 : maximal mass
+C            alpha   : slope                                      \FR'14
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+      
+c     reduced alpha
+      ALPHArdc = 2.d0*(ALPHA-1.d0)
+      AMIN = LOG(XM2MIN)
+      AMAX = LOG(XM2MAX)
+      ADLT = AMAX-AMIN
+      IF(ABS(ALPHArdc).LT.1.d-3)THEN
+c     alpha = 1
+         XRNDM = MAX(S_RNDM(0),1.D-10)
+         AX = AMIN+ADLT*XRNDM
+         XM2DIS = EXP(AX)
+      ELSEIF(ALPHArdc.LT.0.D0.and.ALPHA.gt.0.D0)THEN
+c     0 < alpha < 1
+         XRNDM = MAX(S_RNDM(0),1.D-10)
+c     AX = AMAX-LOG(XRNDM)*ALPHArdc
+         DX = XM2MAX**(1.D0-ALPHA)*XRNDM +
+     +        XM2MIN**(1.D0-ALPHA)*(1.D0-XRNDM)
+         AX = LOG(DX)/(1.D0-ALPHA)
+         XM2DIS = EXP(AX)
+      ELSEIF(ALPHArdc.GE.1.D0)THEN
+c     alpha >= 1
+         ALPHAr = 1.D0-ALPHA
+         XMINA = XM2MIN**ALPHAr
+         XMAXA = XM2MAX**ALPHAr
+         XDLT = XMAXA-XMINA
+         XRNDM = MAX(S_RNDM(0),1.D-10)
+         Z = LOG(XMINA+XDLT*XRNDM)/ALPHAR
+         XM2DIS = EXP(Z)
+      ELSE
+         WRITE(6,*) 'M2DIS: undefined exponent in mass distribution!',
+     &        ALPHA
+         XM2DIS = 0.D0
+         CALL SIB_REJECT('M2DIS           ')
+      ENDIF
+      END
+C=======================================================================
+
+      SUBROUTINE EXCTDEC( IDX, LBAD)
+
+C-----------------------------------------------------------------------
+C     routine to fragment an excited system with known flavor via
+C     resonance decay
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+c     external variables
+      INTEGER IDX,LBAD
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+
+      INTEGER NFORIG,NPORIG,NIORIG,IPFLAG,IIFLAG,KINT
+      COMMON /S_PARTO/ NFORIG(NP_max),NPORIG(NP_max),NIORIG(NP_max),
+     &IPFLAG,IIFLAG,KINT
+
+      INTEGER LRNK
+      COMMON /SIB_RNK/ LRNK(8000)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+
+      INTEGER IISO,ISPN
+      COMMON /S_SPN/ IISO(99), ISPN(99)
+
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+c     local variables
+      DOUBLE PRECISION P0,BE,PR1,PR2,PRH,GABE,P2,
+     &     PAR2_def,PAR8_def,PAR24_def,DELTAE,PCXG,
+     &     EMIN1,EMIN2,EMIN3,EMIN4,S_RNDM,GA,PTR,PTOT,P1TOT,PX,PY,
+     &     COD,SID,COF,SIF,ANORF,BEP
+      DIMENSION P0(5),BE(3),PR1(5),PR2(5),PRH(5),GABE(4),
+     &     P2(5)
+      INTEGER IPID,IR1DX,IFLR1,IR2DX,IFLR2,IRH,IRHPID,IR,
+     &     KK,KD,IFAIL,N1,IFBAD,J,K,I
+      SAVE
+      
+c      LBAD = 1
+
+c     initial parameters
+      PAR2_def = PAR(2)         ! ud/s rate
+      PAR8_def = PAR(8)         ! popcorn rate
+      PAR24_def = PAR(24)       ! c/s rate
+      if(ndebug.gt.1)
+     &     WRITE(LUN,*) ' EXCTDEC: IDX,IREJ',IDX,LBAD
+      
+c     read remnant 4momentum from stack
+      CALL RD_PRTN_4VEC(IDX,P0,IPID,IR1DX)
+      CALL RD_PRTN_4VEC(IR1DX,PR1,IFLR1,IR2DX)
+      CALL RD_PRTN_4VEC(IR2DX,PR2,IFLR2,IRH)
+      CALL RD_PRTN_4VEC(IRH,PRH,IRHPID,IR)
+      IPFLAG = IPID
+      IF(IDX.ne.IR)then
+         write(lun,*) ' EXCTDEC: reference loop broken!',IDX,IR
+         CALL SIB_REJECT('EXCTDEC         ')
+      endif
+      IF(NDEBUG.GT.2)THEN
+         WRITE(LUN,*) ' EXCTDEC: P0:' , (P0(kk),kk=1,5)
+         WRITE(LUN,*) ' EXCTDEC: PR1:' , (PR1(kk),kk=1,5)
+         WRITE(LUN,*) ' EXCTDEC: PR2:' , (PR2(kk),kk=1,5)
+         WRITE(LUN,*) ' EXCTDEC: PH:' , (PRH(kk),kk=1,5)
+      ENDIF
+      
+C     identity of remnant
+c     form hadron from flavors in remnant
+c     (not preserving spin or isospin!)
+c      CALL SIB_I4FLAV(iflr1,iflr2,Idm, KD )
+      KD = IRHPID
+
+c     available kinetic energy
+      DELTAE = P0(5)-AM(ABS(KD))
+c     fallback region: 0 < DELTAE < EMIN1
+      EMIN1 = PAR(76)
+c     resonance region: EMIN1 < DELTAE < EMIN2
+      EMIN2 = PAR(77)
+c     phasespace decay region: EMIN2 < DELTAE < EMIN3
+      EMIN3 = PAR(78)
+c     string decay region: EMIN3 < DELTAE < EMIN4
+      EMIN4 = PAR(79)
+
+      IF(NDEBUG.gt.2)THEN
+         WRITE(LUN,*) 
+     &        ' EXCTDEC: MASS,IFL1,IFL2,PID',P0(5),IFLR1,IFLR2,KD
+         WRITE(LUN,*) ' EXCTDEC: DELTAE,EMIN1,EMIN2,EMIN3',
+     &        DELTAE,EMIN1,EMIN2,EMIN3
+      ENDIF
+      
+c     strange quark rate
+      IF(IPAR(48).eq.1)THEN
+         PAR(2) = PAR(89)
+      ENDIF
+
+c     charm quark rate
+      IF(IPAR(62).eq.1)THEN
+         PAR(24) = PAR(107)
+      ENDIF
+     
+c     popcorn rate in remnant
+      IF(IPAR(56).eq.1)THEN
+         PAR(8) = PAR(102)
+      ENDIF     
+
+      IF(DELTAE.lt.EMIN2)THEN
+c     beam or resonance region
+         IF(NDEBUG.gt.1) then 
+            if(DELTAE.lt.EMIN1)then
+               WRITE(LUN,*)' EXCTDEC: fallback to beam..'
+            else
+               WRITE(LUN,*)' EXCTDEC: forming resonance..'
+            endif
+         endif
+         NP = NP + 1
+         LLIST(NP) = KD
+         NPORIG(NP) = IPFLAG
+         LRNK(NP) = 0
+         niorig(NP) = iiflag
+         DO kk=1,5
+            P(NP,KK) = P0(KK)
+         ENDDO
+         LBAD = 0
+         PAR(2) = PAR2_def
+         PAR(8) = PAR8_def
+         PAR(24) = PAR24_def
+         RETURN         
+
+      ELSEIF(DELTAE.lt.EMIN3)THEN
+c     phasespace decay region
+         IF(NDEBUG.gt.1) WRITE(LUN,*)' EXCTDEC: phasespace decay ..'
+         IPFLAG = IPID/iabs(IPID) + ISIGN(1000,IPID)
+c     set charge exchange probability, 
+c     i.e. prob for p* -> n + pip
+         PCXG = PAR(99)
+         CALL FIREBALL_4FLV(KD,P0,PCXG,IFAIL)
+         PAR(2) = PAR2_def
+         PAR(8) = PAR8_def
+         PAR(24) = PAR24_def
+         IF(IFAIL.eq.1) THEN
+            IF(ndebug.gt.0)
+     &           WRITE(LUN,*) ' EXCTDEC: remnant frag. rejection!'
+            LBAD = 1
+            RETURN
+         ENDIF
+         LBAD = 0
+         RETURN
+
+c      ELSEIF(DELTAE.lt.EMIN4)THEN
+      ELSE
+C     string fragmentation region
+         IF(NDEBUG.gt.1) WRITE(LUN,*)' EXCTDEC: string decay ..'
+         N1 = NP+1
+         IPFLAG = IPFLAG + ISIGN(3000,IPID)
+c     for meson remnant quark and anti-quark should be treated equally
+c     therefor switch randomly
+         IF(IBAR(ABS(KD)).eq.0.and.S_RNDM(KD).lt.0.5D0)
+     &        CALL ISWTCH_LMNTS(IFLR1,IFLR2)
+
+c     turn remnant string around
+         IF(IPAR(23).eq.1)THEN
+            IF(S_RNDM(0).gt.PAR(39))
+     &           CALL ISWTCH_LMNTS(IFLR1,IFLR2)
+         ENDIF
+
+         CALL STRING_FRAG_4FLV 
+     +        (P0(5), IFLR2, IFLR1, 0.D0,0.D0,0.D0,0.D0,IFBAD,1)
+         IF (IFBAD .EQ. 1)THEN
+            IF(ndebug.gt.0)
+     &           WRITE(LUN,*) ' EXCTDEC: remnant frag. rejection!'
+            LBAD = 1
+            PAR(2) = PAR2_def
+            PAR(8) = PAR8_def
+            PAR(24) = PAR24_def
+            RETURN
+         ENDIF
+         DO J=1,3
+            BE(J)=P0(J)/P0(4)
+            GABE(J)=P0(J)/P0(5)
+         ENDDO
+         GA=P0(4)/P0(5)
+         GABE(4)=P0(4)/P0(5)
+C...  rotate and boost string
+         IF(IPAR(38).eq.1.or.IPAR(38).eq.3)THEN
+c     sample additional soft pt for remnant partons
+            CALL PTDIS_4FLV(0,PX,PY)
+            PTR = SQRT(PX**2+PY**2)
+            PTOT = SQRT(4.D0*PTR**2+P0(5)**2)*0.5D0
+c     rotation factors
+            COD = 0.5D0*P0(5)/PTOT
+            SID = PTR/PTOT
+c            COD= 1.D0/SQRT(1.D0+4.D0*PTR**2/P0(5))
+c            SID= 2.D0*PTR/P0(5)*COD
+            COF=1.D0
+            SIF=0.D0
+            IF(PTOT*SID.GT.EPS5) THEN
+               COF=PX/(SID*PTOT)
+               SIF=PY/(SID*PTOT)
+               ANORF=DSQRT(COF*COF+SIF*SIF)
+               COF=COF/ANORF
+               SIF=SIF/ANORF
+            ENDIF
+            IF(ndebug.gt.3)THEN
+            write(lun,*)' EXCTDEC: rotation factors (cod,sid,cof,sif):',
+     &           cod,sid,cof,sif
+            write(lun,*)' EXCTDEC: rotation angles (theta,phi):',
+     &           ACOS(cod),ACOS(cof)
+            ENDIF
+c     rotate string final state
+            DO K=N1,NP
+               CALL SIB_TRANI(P(K,1),P(k,2),P(k,3),cod,sid,cof,sif
+     &              ,P2(1),P2(2),P2(3))
+               do j=1,3
+                  P(K,j)=P2(j)
+               enddo
+            ENDDO
+c     boost to hadron-hadron center-of-mass
+            IF(ndebug.gt.3)
+     &        write(lun,*) ' EXCTDEC: boost to had-had (gabe,gam):',
+     &           (gabe(j),j=1,4)
+            DO K=N1,NP
+               NPORIG(K) = IPFLAG
+               niorig(K) = iiflag
+               CALL SIB_ALTRA(gabe(4),gabe(1),gabe(2),
+     &              gabe(3),P(k,1),p(k,2),p(k,3),p(k,4),
+     &              P1TOT,p2(1),p2(2),p2(3),p2(4))
+               do j=1,4
+                  P(K,j)=P2(j)
+               enddo
+            ENDDO
+         ELSEIF(IPAR(38).eq.2.or.IPAR(38).eq.0)THEN            
+C...  boost string
+            DO I=N1,NP
+               NPORIG(I) = IPFLAG
+               niorig(I) = iiflag
+               BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
+               DO J=1,3
+                  P(I,J)=P(I,J)+GA*(GA*BEP/(1.D0+GA)+P(I,4))*BE(J)
+               ENDDO
+               P(I,4)=GA*(P(I,4)+BEP)
+            ENDDO
+         ENDIF
+      ENDIF
+      LBAD = 0
+      PAR(2) = PAR2_def
+      PAR(8) = PAR8_def
+      PAR(24) = PAR24_def
+      return
+      END
+C=======================================================================
+
+      SUBROUTINE PTDIS_4FLV (IFL,PX,PY)
+
+C-----------------------------------------------------------------------
+C...Generate pT
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      DOUBLE PRECISION PPT02
+      COMMON /S_CQDIS2/ PPT02(44)
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+
+      IF(IFL.eq.0)THEN
+c     quark confinement pt
+         PPTT = PAR(110)
+         XM = 0.325D0
+         XM2 = XM**2
+         RNDM = MAX(EPS10,S_RNDM(IFL))
+         XMT = PPTT * LOG(RNDM) - XM
+         XMT2 = XMT**2
+         PT = SQRT(XMT2-XM2)         
+      ELSE
+         IFLA = IABS(IFL)
+         IFLA = MOD(IFLA,100)
+         PPTT = PPT02(IFLA)
+c     Gaussian distribution
+         PT = PPTT*SQRT(-LOG(MAX(EPS10,S_RNDM(IFL))))
+         IF (IPAR(3).GE.1) THEN
+            IF(MOD(IFLA,10).NE.0) THEN
+               XM = QMASS(IFL)
+            ELSE
+               XM = 0.5D0        ! pomeron mass
+               IF(IPAR(3).ge.6) XM = 0.D0
+            ENDIF
+c     exponential transverse mass
+            XM2 = XM**2
+            RNDM = MAX(EPS10,S_RNDM(IFL))
+            XMT = PPTT * LOG(RNDM) - XM
+            XMT2 = XMT**2
+            PT = SQRT(XMT2-XM2)
+         ENDIF      
+      ENDIF
+      PHI= TWOPI*S_RNDM(IFL)
+      PX=PT*COS(PHI)
+      PY=PT*SIN(PHI)
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE PTSETUP_4FLV(ECM)
+
+C-----------------------------------------------------------------------
+C     moved from sib_ndiff to seperate subroutine 
+c     so that changes will affect diff. /FR'13
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+      DOUBLE PRECISION PPT02
+      COMMON /S_CQDIS2/ PPT02(44)
+      SAVE
+
+      SQS = ECM
+
+c     NA22 piC retune
+      PTU=.3D0+.08D0*dlog10(sqs/30.D0)
+      PTS=.45D0+.08D0*dlog10(sqs/30.D0)
+      PTQQ=.6D0+.08D0*dlog10(sqs/30.D0)
+      PTPOM= .6D0+.08D0*dlog10(sqs/30.D0)
+      if ( IPAR(3).eq.1 ) then 
+c     pt0
+         ptu=.15D0+.007D0*dlog10(sqs/20.D0)**2
+         pts=.3D0+.007D0*dlog10(sqs/20.D0)**2
+         ptqq=.3D0+.03D0*dlog10(sqs/20.D0)**2
+         ptpom= .6D0+.08D0*dlog10(sqs/30.D0)
+      elseif ( IPAR(3).eq.2 ) then
+C     pt1
+         ptu=.15D0+.007D0*dlog10(sqs/20.D0)**2
+         pts=.32D0+.007D0*dlog10(sqs/20.D0)**2
+         ptqq=.4D0+.007D0*dlog10(sqs/20.D0)**2
+         ptpom= .6D0+.08D0*dlog10(sqs/30.D0)
+c     pt2
+      elseif ( IPAR(3).eq.3 ) then
+         ptu=.17D0+.007D0*dlog10(sqs/20.D0)**2
+         pts=.3D0+.007D0*dlog10(sqs/20.D0)**2
+         ptqq=.3D0+.03D0*dlog10(sqs/20.D0)**2
+         ptpom = .6D0+.08D0*dlog10(sqs/30.D0)
+      elseif ( IPAR(3).eq.5 ) then
+         PTU=.16D0+.007D0*dlog10(sqs/20.D0)**2
+         PTS=.28D0+.007D0*dlog10(sqs/20.D0)**2
+         PTQQ= .3D0+.03D0*dlog10(sqs/20.D0)**2
+         PTPOM = .23D0+.03D0*dlog10(sqs/20.D0)**2
+      elseif ( IPAR(3).eq.6 ) then
+         PTU=.16D0+.007D0*dlog10(sqs/20.D0)**2
+         PTS=.28D0+.007D0*dlog10(sqs/20.D0)**2
+         PTQQ= .3D0+.03D0*dlog10(sqs/20.D0)**2
+         PTPOM = .23D0+.03D0*dlog10(sqs/20.D0)**2
+      elseif ( IPAR(3).eq.7 ) then
+         PTU= PAR(46) + .007D0*dlog10(sqs/20.D0)**2
+         PTS= PAR(47) + .007D0*dlog10(sqs/20.D0)**2
+         PTQQ= PAR(48) + .03D0*dlog10(sqs/20.D0)**2
+         PTPOM = PAR(49) + .03D0*dlog10(sqs/20.D0)**2
+      elseif ( IPAR(3).eq.8 ) then
+         ASQS = MAX(log10(SQS/PAR(109)),0.D0)
+         PTU= PAR(46) + PAR(68)*ASQS**2
+         PTS= PAR(47) + PAR(70)*ASQS**2
+         PTQQ= PAR(48) + PAR(69)*ASQS**2
+         PTPOM = PAR(49) + PAR(51)*ASQS**2
+         PTSEA = PAR(67) + PAR(52)*ASQS**2
+      endif
+      PPT02 (1) = PTU
+      PPT02 (2) = PTU
+      PPT02 (3) = PTS
+c     valence pt
+      PPT02 (10) = PTPOM
+      DO J=11,33
+         PPT02(J) = PTQQ
+      ENDDO
+c     soft minijet pt
+      PPT02 (20) = PTSEA
+c     sea quark pt
+      PPT02 (30) = PAR(132)
+c     charm pt
+      ASQS = MAX(log10(SQS/30.D0),0.D0)
+      IF(IPAR(16).eq.8)THEN
+         PTCHM= PAR(147) + PAR(149)*ASQS
+         PTCHB= PAR(148) + PAR(149)*ASQS         
+      ELSE
+c     rc4a charm pt
+         PTCHM=0.308D0 + .165D0*ASQS
+         PTCHB=0.5D0 + .165D0*ASQS         
+      ENDIF
+      PPT02(4) = PTCHM
+      PPT02(14) = PTCHB
+      PPT02(24) = PTCHB
+      DO J=34,44
+         PPT02(J) = PTCHB
+      ENDDO
+     
+      IF(ndebug.gt.2)THEN
+         WRITE(LUN,*)' PTSETUP_4FLV: (sqs,(u,d),s,diq,pom,cm,cb)',sqs
+     +      ,ppt02(1),ppt02(3),ppt02(11), ppt02(10),ppt02(4),ppt02(34)
+      ENDIF
+
+      RETURN
+      END
+C=======================================================================
+
+      INTEGER FUNCTION IMRG2HAD(IFLB1,IFLB2)
+
+C-----------------------------------------------------------------------
+C     -----------------------------------------------------
+C     function that merges two flavors into lightest hadron
+C     -----------------------------------------------------
+      IMPLICIT NONE
+c     flavor merging array
+      INTEGER KFLV
+      COMMON /S_KFLV/ KFLV(4,43)
+      INTEGER IFLB1,IFLB2,IFLA,IFLB,IFL1,IFL2
+      SAVE
+
+      IFLA = IFLB1
+      IFLB = IFLB2
+c     order by flavor, meson: antiquark-quark, baryon: quark-diquark
+      IF(IFLB.lt.IFLA) CALL ISWTCH_LMNTS(ifla,iflb)
+c     if antibaryon switch again..
+      IF(IFLB.lt.0) CALL ISWTCH_LMNTS(ifla,iflb)
+      IFL1 = IABS(IFLA)
+      IFL2 = IABS(IFLB)
+      IMRG2HAD = ISIGN(KFLV(IFL1,IFL2),IFLB)
+      END
+
+C=======================================================================
+
+      SUBROUTINE SAMPLE_SEA_TOT
+     &     (KRMNT,KINT,NSEA,XGAM,XJET,STR_MASS,XSJ,XX)
+
+C-----------------------------------------------------------------------
+C   input parameter: xgam,xjet,str_mass,  Nsea,KINT,krmnt
+c   outpt parameter: xsj,xx
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+
+c     include COMMON blocks
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      
+c     input/output type definitions
+      DOUBLE PRECISION XGAM,XJET,STR_MASS,XSEA,XX,XSJ
+      DIMENSION XX(2*NW_max+2)
+
+      INTEGER NSEA,KINT,KRMNT
+
+c     local type definitions
+      DOUBLE PRECISION AC,GAMMAX,S_RNDM,XA,XREM,R,Z,Z1,Z2,XMINA
+      INTEGER j,jj,ilast
+      SAVE
+      DATA AC /-0.2761856692D0/ ! log(2) - gamma(Eulero)
+
+      GAMMAX = xgam
+      XMINA = 2.D0*STR_mass/SQS
+      IF(IPAR(73).eq.1.and.KINT.gt.1) GAMMAX = PAR(119)
+      IF(ndebug.gt.3) THEN
+         WRITE(LUN,*)' IMRG2HAD: called with ',
+     &        '(KRMNT,KINT,NSEA,XGAM,XJET,STR_MASS):', 
+     &        KRMNT,KINT,NSEA,XGAM,XJET,STR_MASS
+         
+         WRITE(LUN,*)' IMRG2HAD: XMIN,XMIN*N,XREM:',
+     &        XMINA,NSEA*XMINA,1.D0-XJET
+      ENDIF
+c     sample total fraction for sea partons..
+      Z1 = LOG(DBLE(NSEA))
+ 50   Z2 = LOG(0.5D0*SQS*(1.D0-XJET)/STR_MASS-2.D0)
+      R = S_RNDM(0)
+      Z=(Z1+AC)*(1.D0+R*(((Z2+AC)/(Z1+AC))**NSEA-1.D0))
+     &     **(1.D0/DBLE(NSEA))-AC
+      XSEA = XMINA*EXP(Z)
+      IF(ndebug.gt.3) WRITE(LUN,*) '  total SEA fraction:' , xsea
+      IF ( (1.D0-XSEA)**GAMMAX .LT. S_RNDM(1)) GOTO 50
+c     maximal fraction remaining for valence..
+ 60   XREM = XSEA - DBLE(Nsea)*XMINA
+      IF(ndebug.gt.3) 
+     &     WRITE(LUN,*) '  Xsea,xval,xjet:',
+     &     xsea,1.D0-XSEA-XJET,xjet
+      
+C...  Split the energy of sea partons among the different partons
+      DO j=1,Nsea-1
+         jj = 2+j
+         IF(KRMNT.eq.0) jj = 4+j
+c     fraction for first parton
+         XA = XREM*S_RNDM(J)
+c     for interactions other than first decrease energy fraction
+c     (beam side hadron can participate in multiple binary collisions)
+c     IF(KINT.gt.1.and.j.gt.2*KRMNT) XA=SIGN(ABS(XA)**PAR(116),XA)
+         XX(jj) = XMINA + XA
+c     new remainder
+         XREM = XREM - XA
+         IF(ndebug.gt.3) write(lun,*)'  x1,j,rem,xa',xX(jj),jj,xrem,xa
+      ENDDO
+c     last parton..
+      ilast = 2+Nsea
+      IF(KRMNT.eq.0) ilast = 4+Nsea
+      XX(ILAST) = XMINA + XREM
+
+c     break symmetry between nucleon interactions
+c     first interaction takes most energy
+      IF(KINT.gt.1.and.IPAR(71).eq.1)THEN
+         JJ = 3
+         IF(KRMNT.eq.0) JJ = 5
+         if(ndebug.gt.4) write(lun,*) '  x1+x2,p*xeq:',
+     &        XX(JJ)+XX(JJ+1),PAR(117)*XSEA/KINT
+         IF(XX(JJ)+XX(JJ+1).lt.PAR(117)*XSEA/KINT) GOTO 60
+      ENDIF
+
+      XSJ = XSJ + XSEA
+      IF(ndebug.gt.3)THEN  
+         write(lun,*)'  x1,N,rem',xx(ilast),ilast,xrem
+         write(lun,*) '  xseajet',xsj
+      endif
+
+      END
+C-----------------------------------------------------------------------
+C
+C     dummy subroutines, remove to link PDFLIB
+C
+C=======================================================================
+c
+c     SUBROUTINE PDFSET(PARAM,VALUE)
+c
+c-----------------------------------------------------------------------
+c     IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c     IMPLICIT INTEGER(I-N)
+c     DIMENSION PARAM(20),VALUE(20)
+c     CHARACTER*20 PARAM
+c     END
+c
+c=======================================================================
+c
+c     SUBROUTINE STRUCTM(XI,SCALE2,UV,DV,US,DS,SS,CS,BS,TS,GL)
+c
+c-----------------------------------------------------------------------
+c     IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c     IMPLICIT INTEGER(I-N)
+c     END
+c
+c=======================================================================
+c
+c     SUBROUTINE STRUCTP(XI,SCALE2,P2,IP2,UV,DV,US,DS,SS,CS,BS,TS,GL)
+c
+c-----------------------------------------------------------------------
+c     IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c     IMPLICIT INTEGER(I-N)
+c     END
+c
+C-----------------------------------------------------------------------
+C
+C=======================================================================
+
+      SUBROUTINE SIB_NDIFF(K_beam, NW, Ecm, Irec, IREJ)
+
+C-----------------------------------------------------------------------
+C     routine that samples and fragments a non-diffractive interaction
+C
+C     3 stages: 0: setup
+C               1: sampling of event structure (number of parton interactions)
+C                  (labeled as 2000)
+C               2: sampling of kinematics
+C                  (labeled as 3000)
+C               3: fragmentation
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+
+c     external types
+      DOUBLE PRECISION ECM
+      INTEGER K_beam, NW, Irec, IREJ
+
+c     COMMONs
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+C     The final particle output is contained in COMMON /S_PLIST/    
+C     NP           : number of final particles
+C     P(1:NP, 1:5) : 4-momenta + masses of the final particles 
+C     LLIST (1:NP) : codes of final particles
+      DOUBLE PRECISION P
+      INTEGER NP,LLIST,NP_max
+      PARAMETER (NP_max=8000)
+      COMMON /S_PLIST/ P(NP_max,5), LLIST(NP_max), NP
+
+      INTEGER NFORIG,NPORIG,NIORIG,IPFLAG,IIFLAG,KINT
+      COMMON /S_PARTO/ NFORIG(NP_max),NPORIG(NP_max),NIORIG(NP_max),
+     &IPFLAG,IIFLAG,KINT
+C     parameters that represent: NW: max. number of wounded nucleons,
+C     NS,NH: max. number of soft and hard interactions
+c      PARAMETER (NW_max = 20)
+C     The COMMON block /S_CHIST/ contains information about the
+C     the structure of the  generated event:
+C     NWD   = number of wounded nucleons
+C     NJET = total number of hard interactions
+C     NSOF = total number of soft interactions
+C     NNSOF (1:NW) = number of soft pomeron cuts in each interaction
+C     NNJET (1:NW) = number of minijets produced in each interaction 
+C     JDIF(1:NW) = diffraction code 
+C                  0 : non-diff,
+C                  1 : beam-diff
+C                  2 : target-diff
+C                  3 : double-diff
+      INTEGER NNSOF,NNJET,JDIF,NWD,NJET,NSOF
+      COMMON /S_CHIST/ NNSOF(NW_max),NNJET(NW_max),
+     &     JDIF(NW_max),NWD,NJET,NSOF
+      INTEGER NS_max, NH_max
+      PARAMETER (NS_max = 20, NH_max = 80)
+
+      INTEGER IBMRDX,ITGRDX,IHMJDX,ISMJDX,ICSTDX,IINTDX
+      COMMON /S_INDX/ IBMRDX(3),ITGRDX(NW_max,3),
+     &     IHMJDX(NW_max*NH_max),IINTDX(NW_max),
+     &     ISMJDX(NW_max*NS_max),ICSTDX(2*NW_max,3)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+      INTEGER ITRY, NREJ
+      COMMON /S_CNT/ ITRY(20), NREJ(20)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+c     internal type declarations
+      DOUBLE PRECISION X2JET,SQS_0,PZ,E2,PAWT,xnsof,xnjet,xjdif,x1jet,
+     &     Esum,PXsum,PYsum,PZsum
+      DIMENSION X2JET(NW_max)
+      INTEGER LL,LXBAD,NP_0,NPP_0,NPP0_0,J,JJ,I,KBA,L,NPP_1,NPP0_1,
+     &     IREFout,IREF,nj,ns,nv,II,Idm,LPID,NF,NPP,NPP0
+      DIMENSION LL(99)      
+      SAVE
+      DATA LL /5*0,7*2,2*1,12*0,2,6*0,6*1,19*0,2,2,10*0,
+     &     2,2,0,2,2,11*0,1,1,1,9*0,1/
+
+
+C..   setup stage
+      IREJ = 1
+c     default return point is kinematic sampling stage
+      LXBAD = 3
+
+c     remember initial setup
+      NP_0    = NP
+      SQS_0   = SQS
+c     remember position on parton stack
+      CALL GET_NPP(NPP_0,NPP0_0)
+
+c     set interaction properties
+c      IF(Irec.ne.1) CALL INI_EVENT(ECM,K_beam,Idm,Irec)
+
+      IF(ndebug.gt.0)then
+         IF(Irec.eq.0)THEN
+            WRITE(LUN,*) 
+     &           ' SIB_NDIFF: recursive call with (ecm,kb,kt,np,jdif):',
+     &           ecm,k_beam,kt(1),(jdif(j),j=1,NW),NP
+         ELSE
+            WRITE(LUN,*)' SIB_NDIFF: regular call with (ECM,KB,NW,KT,',
+     &           'JDIF,NP):',ecm,k_beam,NW,(kt(ii),ii=1,NW),
+     &           (jdif(j),j=1,NW),NP
+         ENDIF
+      ENDIF
+      
+ 2000 CONTINUE
+
+c     reset parton stack
+      CALL INI_PRTN_STCK(NPP_0,NPP0_0)
+
+C...  sample multiple interaction configuration
+      KBA = IABS(K_beam)
+      L = LL(KBA)
+      DO I=1,NW
+        if(JDIF(I).eq.0) then
+           CALL CUT_PRO(L, SQS, PTmin, NNSOF(I), NNJET(I))
+        else
+          NNSOF(I) = 1
+          NNJET(I) = 0
+        endif
+c     add incoming target particles
+        PZ = PAWT(SQS,AM(KBA),AM(KT(I)))
+        E2 = SQRT(PZ**2+AM2(KT(I)))
+        CALL ADD_PRTN(0.D0,0.D0,-PZ,E2,AM(KT(I)),KT(I),-2,0,IREFout)
+
+c     add interactions
+        xjdif = dble(jdif(I))
+        xnjet = dble(nnjet(I))
+        xnsof = dble(nnsof(I))
+        CALL ADD_PRTN(xnsof,xnjet,xjdif,sqs,0.D0,I,-1,IREFout,IREF)
+c     write parton stack index to interaction index
+        IINTDX(I) = IREF
+      ENDDO
+c     remember state of parton stack
+      CALL GET_NPP(NPP_1,NPP0_1)
+
+C...  kinematic sampling stage
+
+C...  sample x values
+      ITRY(1) = 0
+ 3000 CONTINUE
+      ITRY(1) = ITRY(1)+1
+      IF(ITRY(1).GT.NREJ(1)) THEN 
+c         NCALL = NCALL + 1
+         GOTO 2000
+      ENDIF
+      NP = NP_0
+      CALL INI_PRTN_STCK(NPP_1,NPP0_1)
+
+      CALL SAMPLE_MINIJET(L,NW,NNJET,NNSOF,NJET,NSOF,x1jet,x2jet,lxbad)
+      IF(LXBAD.eq.3)THEN
+c     reject kinematics
+         GOTO 3000
+      ELSEIF(LXBAD.eq.2)THEN
+c     reject kinematics and event structure
+c         NCALL = NCALL + 1
+         GOTO 2000
+      ELSEIF(LXBAD.eq.1)THEN
+c     reject entire event
+         if(Ndebug.gt.0) 
+     &        WRITE(LUN,*)' SIB_NDIFF: minijet rejection (Ncall):',Ncall
+c     restore initial state
+         NP    = NP_0
+         CALL INI_PRTN_STCK(NPP_0,NPP0_0)
+         SQS   = SQS_0
+         S     = SQS*SQS
+         RETURN
+      ENDIF
+
+C...  Prepare 2*NW valence/sea color strings and/or remnant.
+
+c     default return point, jump back to sampling interaction structure
+c      LXBAD = 2
+      CALl SAMPLE_RMNT(K_beam,NW,X1Jet,X2JET,Irec,LXBAD)
+      IF(LXBAD.eq.3)THEN
+c     reject kinematics
+         GOTO 3000
+      ELSEIF(LXBAD.eq.2)THEN         
+c     reject kinematics and event structure
+c         NCALL = NCALL + 1
+         GOTO 2000
+      ELSEIF(LXBAD.eq.1)THEN         
+c     reject entire event
+         if(Ndebug.gt.0) 
+     &   WRITE(LUN,*)' SIB_NDIFF: rmnt rejection (Ncall,NW):',Ncall,NW
+c     restore initial state
+         NP    = NP_0
+         CALL INI_PRTN_STCK(NPP_0,NPP0_0)
+         SQS   = SQS_0
+         S     = SQS*SQS
+         RETURN
+      ENDIF
+
+C     Check parton final state..
+      CALL GET_NPP(NPP,NPP0)
+      CALL PPSUM(1,NPP,Esum,PXsum,PYsum,PZsum,NF)
+      IF(ABS(Esum/(0.5D0*Ecm*DBLE(NW+1))-1.D0).GT.EPS3)THEN
+         WRITE(LUN,*) ' SIB_NDIFF: energy not conserved! : ',Ncall
+         WRITE(LUN,*) '  sqs_inp = ', Ecm, ' sqs_out = ', Esum
+         CALL PRNT_PRTN_STCK
+         WRITE(LUN,*) ' SIB_NDIFF: event rejected! ',
+     &        'partons do not conserve energy'
+         WRITE(LUN,*)' (Ncall,NW,NPP,NJET,NSOF):',Ncall,NW,NPP,NJET,NSOF
+c     CALL SIB_REJECT('SIB_NDIFF       ')
+c     restore initial state
+         NP    = NP_0
+         CALL INI_PRTN_STCK(NPP_0,NPP0_0)
+         SQS   = SQS_0
+         S     = SQS*SQS
+         RETURN
+      ENDIF
+      IF(NDEBUG.gt.0) THEN
+         IF(NDEBUG.gt.1) CALL PRNT_PRTN_STCK
+         WRITE(LUN,*) ' SIB_NDIFF: entering fragmentation stage...'
+      ENDIF
+
+C...  Fragmentation stage
+      nj = 0
+      ns = 0
+      nv = 0
+      II = NPP0_0+1
+      DO WHILE (II.gt.0)
+c     default return point: reject event if fragmentation fails
+         LXBAD = 1         
+c     loop over level0 partons
+         CALL ITR_LVL0_PRTN(II,JJ,LPID)
+c     read interaction
+         CALL RD_INT(jj,Idm,iiflag)
+
+C...  Fragmentation of soft/hard sea color strings
+         IF(LPID.eq.100)THEN
+            nj = nj + 1
+            ipflag = 100
+            KINT = nj
+            CALL FRAG_MINIJET(jj,LXBAD)
+            IF(LXBAD.ne.0) RETURN
+
+         ELSEIF(LPID.eq.10)THEN
+            ns = ns + 1
+            ipflag = 10
+            KINT = ns
+            CALL FRAG_MINIJET(jj,LXBAD)
+            IF(LXBAD.ne.0) RETURN
+
+C...  fragment 'valence' strings
+         ELSEIF(LPID.eq.1)THEN
+            nv = nv + 1
+            KINT = nv
+            ipflag = 1
+            CALL FRAG_VLNCE(jj,LXBAD)
+            IF(LXBAD.ne.0) RETURN
+
+C...  fragment remnants
+         ELSEIF(IABS(LPID).eq.2)THEN
+            CALL EXCTDEC(JJ,LXBAD)
+            IF(LXBAD.ne.0) RETURN
+
+C...  fragment incoherent diffraction
+         ELSEIF(LPID.eq.-10.or.LPID.eq.-20.or.LPID.eq.-30)THEN
+            CALL FRAG_INCHRNT_DIFF(jj,lxbad)
+            IF(LXBAD.ne.0) RETURN
+
+         ENDIF
+      ENDDO
+      IREJ = 0
+      
+      END
+C=======================================================================
+
+      SUBROUTINE SAMPLE_RMNT(Kbeam,NW,X1JET,X2JET,Irec,LBAD)
+
+C-----------------------------------------------------------------------
+C     routine to sample remnants
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+      INTEGER ITRY, NREJ
+      COMMON /S_CNT/ ITRY(20), NREJ(20)
+      
+c     external type declarations
+      DOUBLE PRECISION X1JET,X2JET
+      DIMENSION X2JET(NW_max)
+      INTEGER KBEAM,NW,IREC,LBAD
+
+C     COMMONs
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+C     parameters that represent: NW: max. number of wounded nucleons,
+C     NS,NH: max. number of soft and hard interactions
+c      PARAMETER (NW_max = 20)
+C     The COMMON block /S_CHIST/ contains information about the
+C     the structure of the  generated event:
+C     NWD   = number of wounded nucleons
+C     NJET = total number of hard interactions
+C     NSOF = total number of soft interactions
+C     NNSOF (1:NW) = number of soft pomeron cuts in each interaction
+C     NNJET (1:NW) = number of minijets produced in each interaction 
+C     JDIF(1:NW) = diffraction code 
+C                  0 : non-diff,
+C                  1 : beam-diff
+C                  2 : target-diff
+C                  3 : double-diff
+      INTEGER NNSOF,NNJET,JDIF,NWD,NJET,NSOF
+      COMMON /S_CHIST/ NNSOF(NW_max),NNJET(NW_max),
+     &     JDIF(NW_max),NWD,NJET,NSOF
+
+      INTEGER IRMNT,KRB,KRT
+      DOUBLE PRECISION XRMASS,XRMEX
+      COMMON /S_RMNT/ XRMASS(2),XRMEX(2),IRMNT(NW_max),KRB,KRT(NW_max)
+
+      INTEGER ICHP,ISTR,IBAR
+      COMMON /S_CHP/ ICHP(99), ISTR(99), IBAR(99)
+
+      INTEGER IISO,ISPN
+      COMMON /S_SPN/ IISO(99), ISPN(99)
+
+      INTEGER ICHM
+      COMMON /S_CHM/ ICHM(99)
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+c     internals
+      DOUBLE PRECISION PREM,PREM_NUC,R,R2,S_RNDM,FLVXCHG,ALPH
+      INTEGER ITGRMNT,IBMRMNT,I,j,jj,K,NPPLD,NPP0LD,IBMRMNT_OLD,
+     &     IBAD,IKBAD,KBM
+      DIMENSION ITGRMNT(NW_max)
+      SAVE
+      DATA PREM /0.D0/ , PREM_NUC /0.D0/
+
+      IF(Ndebug.gt.1) 
+     &  WRITE(LUN,*)' SAMPLE_RMNT: called with (Kbeam,NW,X1JET,',
+     &     'X2JET,JDIF,Irec):',Kbeam,NW,X1JET,(X2JET(JJ),JJ=1,NW),
+     &     (JDIF(JJ),JJ=1,NW),Irec
+
+      IF(Irec.eq.0.and.NW.ne.1)then
+         WRITE(LUN,*)' SAMPLE_RMNT: recursive call inconsistent!'
+         CALL SIB_REJECT('SAMPLE_RMNT     ')
+      endif
+
+c     default return point for remnant excitation routine:
+c     beam and target sampling
+      IBAD = 1
+
+c     set trial counter
+      ITRY(2) = 0
+c     remember position on parton stack
+      CALL GET_NPP(NPPLD,NPP0LD)
+
+C...  sample no. of remnants
+c     ibmrmnt: 0,1..NW : number of excitations on beamside
+C     itgrmnt: 0,1 : target side excitation
+
+c     prob. of remnant excitation
+      IF(IPAR(78).ne.0)THEN
+         PREM = PAR(23)
+         PREM_NUC = PAR(23)
+         IF(IPAR(84).eq.2.and.IBAR(IABS(KBeam)).eq.0)
+     &        PREM = PAR(140)
+      ENDIF           
+
+c     define Prem as probablility for remnant survival
+c     switch to sampling of remnant de-excitation
+      IF(IPAR(79).ne.0) PREM = 1.D0-PREM     
+
+c     prob. of remnant excitation target side
+      IF(IPAR(79).ne.0) PREM_NUC = 1.D0-PAR(23)
+      IF(IPAR(63).eq.1) PREM_NUC = PREM_NUC/dble(NW)
+
+c     turn of remnant for Nw>1
+      IF(IPAR(77).eq.1)THEN
+c     only beamside
+         IF(NW.gt.1) PREM = 0
+      ELSEIF(IPAR(77).eq.2)THEN
+c     target and beam-side
+         IF(NW.gt.1) then
+            PREM = 0.D0
+            PREM_NUC = 0.D0
+         endif
+      ELSE
+         CONTINUE
+      ENDIF
+
+C...  remnant mass dis. exponents
+      XRMEX(1) = PAR(98)        ! baryons
+      IF(IPAR(84).gt.0)THEN
+         XRMEX(2) = PAR(141)    ! mesons
+      else
+         XRMEX(2) = PAR(98)     ! mesons same as baryons
+      endif
+      
+      IBMRMNT = 0
+      DO K=1, NW
+c     additionally penalize remnant survival for multiple nucleon interactions
+         IF(IPAR(79).eq.2.and.K.gt.1) PREM=1.D0-PAR(23)*PAR(128)
+c     penalize remnant survival for multiple parton interactions
+         IF(IPAR(80).ne.0) THEN
+c     multiple interaction penalty for remnant survival, individual interaction
+            ALPH = 1.D0+PAR(129)*DBLE(NNSOF(K)+NNJET(K)-1)
+            PREM = 1.D0-(1.D0-PREM)**ALPH
+            PREM_NUC = 1.D0-(1.D0-PREM_NUC)**ALPH
+         ENDIF
+         IF(JDIF(K).eq.0)THEN
+            R = S_RNDM(k)
+            R2 = S_RNDM(0)
+            IF(R.LT.PREM) IBMRMNT = IBMRMNT + 1
+c     no target side excitation if recursive call (irec=0)!
+            IF(R2.LT.PREM_NUC*Irec) THEN
+               ITGRMNT(K) = 1
+            ELSE
+               ITGRMNT(K) = 0
+            ENDIF
+         ELSE
+            ITGRMNT(K) = 0
+         ENDIF
+         IF(Ndebug.gt.1) 
+     &        WRITE(LUN,'(2X,A,1X,I2,1X,F5.3,1X,I2,1X,I2,1X,I2,1X,I2)')
+     &        'SAMPLE_RMNT: (JW,PREM,NS,NH,IBMRMNT,LTGRMNT):',
+     &        K,PREM,NNSOF(k),NNJET(k),IBMRMNT,ITGRMNT(k)
+      ENDDO
+      IF(IPAR(79).ne.0)THEN
+c     Prem was redefined as probablility for remnant destruction
+c     therefore invert configuration..
+         DO K=1, NW
+            IF(JDIF(K).eq.0)THEN
+               ITGRMNT(K)=IABS(ITGRMNT(K)-1)
+            ENDIF
+         ENDDO
+c     multiple de-excitations not possible..
+         IBMRMNT=MIN(IBMRMNT,1)
+         IBMRMNT=IABS(IBMRMNT-1)*Irec
+      ENDIF
+      IF(Ndebug.gt.1) 
+     &     WRITE(LUN,*)
+     &     ' SAMPLE_RMNT: remnant sampling (PREM,NW,LBMRMNT,LTGRMNT): ',
+     &     PREM,NW,IBMRMNT,(ITGRMNT(j),j=1,NW)
+
+      IBMRMNT_OLD = IBMRMNT
+
+C...  Sample flavor and momentum fractions
+ 20   ITRY(2) = ITRY(2) + 1
+c     reset parton stack
+      CALL INI_PRTN_STCK(NPPLD,NPP0LD)
+      IBMRMNT = IBMRMNT_OLD
+
+c     retry without counting
+c 22   CONTINUE
+      IF(ITRY(2).gt.NREJ(2))THEN
+         LBAD = 2
+         IF(ndebug.gt.1)then 
+            WRITE(LUN,*)' SAMPLE_RMNT: number of trials exceeded'
+            WRITE(LUN,*)' resample minijets...(IREJ,NW,NCALL)',
+     &           LBAD, NW, NCALL
+         endif
+c     raise event call counter
+c         NCALL = NCALL + 1
+         RETURN
+      ENDIF
+
+      Kbm = Kbeam
+
+C..   sample central strings and remnant flavor
+      flvXchg = PAR(80)     ! prob. of flv exchange between strgs and rmnt
+c     remnant and sea on beam side
+      CALL SAMPLE_BEAM(Kbm,NW,flvXchg,IBMRMNT,X1JET,IKBAD)
+      IF(IKBAD.eq.1)THEN
+c     resample minijets event
+         LBAD = 3
+         RETURN
+      ELSEIF(IKBAD.eq.2)THEN
+c     too many partons, reject NW, i.e. entire event
+         LBAD = 1
+         RETURN
+      ENDIF
+
+c     remnants and sea on target side
+      CALL SAMPLE_TARGET(NW,flvXchg,ITGRMNT,X2JET,Irec,IKBAD)
+      IF(IKBAD.eq.1)THEN
+c     resample minijets event
+         LBAD = 3
+         RETURN
+      ELSEIF(IKBAD.eq.2)THEN
+c     too many partons, reject NW, i.e. entire event
+         LBAD = 1
+         RETURN
+      ENDIF
+
+C...  sample remnant excitation masses and add to parton stack
+c     beam-side (one remnant, formed by several interactions)
+c     target-side (possibly NW remnants)
+
+      DO I=1,NW
+c     default return point
+         IBAD = 1
+         IF(IPAR(78).EQ.1)THEN
+c$$$            write(lun,*) 
+c$$$     &           ' SIB_RMNT: multiple excitation model',
+c$$$     &           ' not implemented yet!'
+c$$$            stop
+c     model where beam side remnant can receive mass from multiple target nucleons
+            IF(IBMRMNT.gt.0)THEN
+c     beam side remnant excited               
+               if(ITGRMNT(I).eq.0)then
+                  CALL EXCT_RMNT(I,1,IBAD)
+               else
+                  CALL EXCT_RMNT(I,3,IBAD)
+               endif
+               IBMRMNT = IBMRMNT - 1
+            ELSE
+c     beam side remnant not excited
+               if(ITGRMNT(I).ne.0)then
+                  CALL EXCT_RMNT(I,2,IBAD)
+               else
+                  CALL EXCT_RMNT(I,0,IBAD)
+               endif
+            ENDIF
+
+         ELSEIF(IPAR(78).eq.2)then
+            IF(IBMRMNT.gt.0)then
+c     beam side remnant excited, only once!
+               IF(ITGRMNT(I).eq.0)then
+                  CALL EXCT_RMNT(I,1,IBAD)
+               else
+                  CALL EXCT_RMNT(I,3,IBAD)
+               endif
+               IBMRMNT = 0
+            ELSE
+c     beam side remnant not excited
+               IF(ITGRMNT(I).ne.0)then
+                  CALL EXCT_RMNT(I,2,IBAD)
+               else
+                  CALL EXCT_RMNT(I,0,IBAD)
+               endif
+            ENDIF
+         ELSE
+c     no remnant model
+            CALL EXCT_RMNT(I,0,IBAD)
+         ENDIF
+c     catch remant excitation exception, redo sea kinematics..
+         IF(IBAD.eq.1) GOTO 20
+c     catch severe exception, resample minijet kinematics..
+         IF(IBAD.eq.2) THEN
+            LBAD = 3
+            RETURN              ! resample event
+         ENDIF
+      ENDDO
+      LBAD = 0
+      
+      END
+C=======================================================================
+
+      SUBROUTINE SIB_HADCSL(L,ECM,SIGTOT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO)
+
+C-----------------------------------------------------------------------
+C     low-energy cross section parametrizations (target always proton)
+C
+C     input:   L           beam particle: (1 - proton,
+C                                          2 - pion,
+C                                          3 - kaon)
+C                          target is always proton
+C              ECM         c.m. energy (GeV)
+C
+C     output:  SIGTOT      total cross section (mb)
+C              SIGEL       elastic cross section (mb)
+C              SIGDIF      diffractive cross section (sd-1,sd-2,dd, mb)
+C              SLOPE       forward elastic slope (GeV**-2)
+C              RHO         real/imaginary part of elastic amplitude
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DIMENSION SIGDIF(3)
+
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      SAVE
+
+C  proton-proton cross section as reference
+      CALL SIB_HADCS1(1,ECM,SIGTOT,SIGEL,SIGINEL,SLOPE,RHO)
+
+C  parametrization for diffraction
+      Xi_min = 1.5D0/(ECM*ECM)
+      Xi_max = PAR(13)
+      SIGeff = SIGEL
+      CALL SIB_HADCS2(ECM,Xi_min,Xi_max,SIGeff,SIGDIF)
+
+      if(L.eq.1) return
+
+C  regge motivated rescaling of diffraction dissociation
+      sigtot_pp = SIGTOT
+      sigel_pp  = SIGEL
+      slope_pp  = SLOPE
+      CALL SIB_HADCS1(L,ECM,SIGTOT,SIGEL,SIGINEL,SLOPE,RHO)
+      SIGDIF(1) = slope_pp/SLOPE*SIGTOT/sigtot_pp*SIGDIF(1)
+      SIGDIF(2) = slope_pp/SLOPE*SIGEL/sigel_pp*SIGDIF(2)
+      SIGDIF(3) = SIGTOT/sigtot_pp*SIGDIF(3)
+
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIB_HADCS1(L,ECM,SIGTOT,SIGEL,SIGINEL,SLOPE,RHO)
+
+C-----------------------------------------------------------------------
+C     low-energy cross section parametrizations
+C
+C     input:   L           beam particle: (1 - proton,
+C                                          2 - pion,
+C                                          3 - kaon)
+C                          target is always proton
+C              ECM         c.m. energy (GeV)
+C
+C     output:  SIGTOT      total cross section (mb)
+C              SIGEL       elastic cross section (mb)
+C              SIGDIF      diffractive cross section (sd-1,sd-2,dd, mb)
+C              SLOPE       forward elastic slope (GeV**-2)
+C              RHO         real/imaginary part of elastic amplitude
+C
+C     comments:
+C     - low-energy data interpolation uses PDG fits from 1992
+C     - slopes from ???, new fit to pp data
+C     - high-energy extrapolation by Donnachie-Landshoff like fit made
+C       by PDG 1996
+C     - analytic extension of amplitude to calculate rho
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+      DIMENSION TPDG92(7,2,6),TPDG96(9,6),BURQ83(3,6),XMA(6)
+      SAVE
+
+      DATA TPDG92  /
+     &  3.D0, 2100.D0, 48.D0, 0.D0, 1.D0, 0.522D0, -4.51D0,
+     &  3.D0, 2100.D0, 11.9D0, 26.9D0, -1.21D0, 0.169D0, -1.85D0,
+     &  5.D0, 2100.D0, 38.4D0, 77.6D0, -0.64D0, 0.26D0, -1.2D0,
+     &  5.D0, 2100.D0, 10.2D0, 52.7D0, -1.16D0, 0.125D0, -1.28D0,
+     &  4.D0, 340.D0,  16.4D0, 19.3D0, -0.42D0, 0.19D0, 0.D0,
+     &  4.D0, 340.D0,  0.D0, 11.4D0, -0.4D0, 0.079D0, 0.D0,
+     &  2.5D0, 370.D0, 33.D0, 14.D0, -1.36D0, 0.456D0, -4.03D0,
+     &  2.5D0, 370.D0, 1.76D0, 11.2D0, -0.64D0, 0.043D0, 0.D0,
+     &  2.D0, 310.D0,  18.1D0, 0.D0, 1.D0, 0.26D0, -1.D0,
+     &  2.D0, 310.D0,  5.D0, 8.1D0, -1.8D0, 0.16D0, -1.3D0,
+     &  3.D0, 310.D0,  32.1D0, 0.D0, 1.D0, 0.66D0, -5.6D0,
+     &  3.D0, 310.D0,  7.3D0, 0.D0, 1.D0, 0.29D0, -2.4D0  /
+
+      DATA TPDG96  /
+     &  50.D0, 22.D0,0.079D0,0.25D0,0.D0,
+     &         77.15D0,-21.05D0,0.46D0,0.9D0,
+     &  50.D0, 22.D0,0.079D0,0.25D0,0.D0,
+     &         77.15D0,21.05D0,0.46D0,0.9D0,
+     &  10.D0, 13.70D0,0.079D0,0.25D0,0.D0,
+     &         31.85D0,-4.05D0,0.45D0,0.9D0,
+     &  10.D0, 13.70D0,0.079D0,0.25D0,0.D0,
+     &         31.85D0,4.05D0,0.45D0,0.9D0,
+     &  10.D0, 12.20D0,0.079D0,0.25D0,0.D0,
+     &         17.35D0,-9.05D0,0.50D0,0.9D0,
+     &  10.D0, 12.20D0,0.079D0,0.25D0,0.D0,
+     &         17.35D0,9.05D0,0.50D0,0.9D0  /
+
+      DATA BURQ83 /
+     &  8.557D0,  0.00D0, 0.574D0,
+     &  11.13D0,  7.23D0, 0.30D0,
+     &  9.11D0,  -0.73D0, 0.28D0,
+     &  9.11D0,   0.65D0, 0.28D0,
+     &  8.55D0,  -5.98D0, 0.28D0,
+     &  8.55D0,   1.60D0, 0.28D0  /
+
+c     DATA XMA / 2*0.93956563D0, 2*0.13956995D0, 2*0.493677D0 /
+      DATA GEV2MB /0.389365D0/
+      DATA INIT/0/
+
+      IF(INIT.EQ.0) THEN
+c  use the internal masses 
+        XMA(1) =  AM(13)   ! proton
+        XMA(2) =  AM(14)   ! neutron
+        XMA(3) =  AM(7)    ! pi+
+        XMA(4) =  AM(8)    ! pi-
+        XMA(5) =  AM(9)    ! K+
+        XMA(6) =  AM(10)   ! K-
+        INIT = 1
+      ENDIF
+
+C  find index
+      IF    (L.eq.1) THEN
+        K = 1                            ! p p
+      ELSEIF(L.eq.2) THEN
+        K = 3                            ! pi+ p
+*       K = 4                            ! pi- p
+      ELSEIF(L.eq.3) THEN
+        K = 5                            ! K+ p
+*       K = 6                            ! K- p
+      ELSE
+        GOTO 100
+      ENDIF
+
+C  calculate lab momentum
+      SS = ECM**2
+      E1 = (SS-XMA(1)**2-XMA(K)**2)/(2.D0*XMA(1))
+      PL = dSQRT((E1-XMA(K))*(E1+XMA(K)))
+      PLL = dLOG(PL)
+
+C  check against lower limit
+      IF(ECM.LE.XMA(1)+XMA(K)) GOTO 200
+
+      XP  = TPDG96(2,K)*SS**TPDG96(3,K)
+      YP  = TPDG96(6,K)/SS**TPDG96(8,K)
+      YM  = TPDG96(7,K)/SS**TPDG96(8,K)
+
+      PHR = dTAN(PI/2.D0*(1.D0-TPDG96(8,K)))
+      PHP = dTAN(PI/2.D0*(1.D0+TPDG96(3,K)))
+      RHO = (-YP/PHR + YM*PHR - XP/PHP)/(YP+YM+XP)
+
+      SLOPE = BURQ83(1,K)+BURQ83(2,K)/dSQRT(PL)+BURQ83(3,K)*PLL
+
+C  select energy range and interpolation method
+      IF(PL.LT.TPDG96(1,K)) THEN
+        SIGTOT = TPDG92(3,1,K)+TPDG92(4,1,K)*PL**TPDG92(5,1,K)
+     &          + TPDG92(6,1,K)*PLL**2+TPDG92(7,1,K)*PLL
+        SIGEL  = TPDG92(3,2,K)+TPDG92(4,2,K)*PL**TPDG92(5,2,K)
+     &          + TPDG92(6,2,K)*PLL**2+TPDG92(7,2,K)*PLL
+      ELSE IF(PL.LT.TPDG92(2,1,K)) THEN
+        SIGTO1 = TPDG92(3,1,K)+TPDG92(4,1,K)*PL**TPDG92(5,1,K)
+     &          + TPDG92(6,1,K)*PLL**2+TPDG92(7,1,K)*PLL
+        SIGEL1 = TPDG92(3,2,K)+TPDG92(4,2,K)*PL**TPDG92(5,2,K)
+     &          + TPDG92(6,2,K)*PLL**2+TPDG92(7,2,K)*PLL
+        SIGTO2 = YP+YM+XP
+        SIGEL2 = SIGTO2**2/(16.D0*PI*SLOPE*GEV2MB)*(1.D0+RHO**2)
+        X2 = dLOG(PL/TPDG96(1,K))/dLOG(TPDG92(2,1,K)/TPDG96(1,K))
+        X1 = 1.D0 - X2
+        SIGTOT = SIGTO2*X2 + SIGTO1*X1
+        SIGEL  = SIGEL2*X2 + SIGEL1*X1
+      ELSE
+        SIGTOT = YP+YM+XP
+        SIGEL  = SIGTOT**2/(16.D0*PI*SLOPE*GEV2MB)*(1.D0+RHO**2)
+      ENDIF
+      SIGINEL = SIGTOT-SIGEL
+
+      RETURN
+
+ 100  CONTINUE
+        WRITE(LUN,'(1X,2A,2I7)') ' SIB_HADCS1: ',
+     &    'invalid beam particle: ',L
+        RETURN
+
+ 200  CONTINUE
+        WRITE(LUN,'(1X,2A,1P,E12.4)') ' SIB_HADCS1: ',
+     &    'energy too small (Ecm): ',ECM
+
+      END
+C=======================================================================
+
+      SUBROUTINE SIB_HADCS2(SQS,Xi_min,Xi_max,SIGeff,SIGDIF)
+
+C-----------------------------------------------------------------------
+C   cross section for diffraction dissociation 
+C
+C   - single diffraction dissociation:
+C     Goulianos' parametrization (Ref: PL B358 (1995) 379)
+C   - double diffration dissociation: simple scaling model using 
+C     single diff. cross section
+C
+C     in addition rescaling for different particles is applied using
+C     internal rescaling tables (not implemented yet)
+C
+C     input:     SQS         c.m. energy (GeV)
+C                Xi_min      min. diff mass (squared) = Xi_min*SQS**2
+C                Xi_max      max. diff mass (squared) = Xi_max*SQS**2
+C                SIGeff      effective cross section for DD scaling
+C
+C     output:    sig_sd1     cross section for diss. of particle 1 (mb)
+C                sig_sd2     cross section for diss. of particle 2 (mb)
+C                sig_dd      cross section for diss. of both particles
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      DIMENSION SIGDIF(3)
+      DIMENSION Xpos1(96),Xwgh1(96),Xpos2(96),Xwgh2(96)
+      DOUBLE PRECISION xil,xiu,tl,tu
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+C  model parameters
+      DATA delta    / 0.104D0 /
+      DATA alphap   / 0.25D0 /
+      DATA beta0    / 6.56D0 /
+      DATA gpom0    / 1.21D0 /
+      DATA xm_p     / 0.938D0 /
+      DATA x_rad2   / 0.71D0 /
+
+C  integration precision
+      DATA Ngau1    / 32 /
+      DATA Ngau2    / 32 /
+
+      DATA GEV2MB /0.389365D0/
+
+      SIGDIF(1) = 0.D0
+      SIGDIF(2) = 0.D0
+      SIGDIF(3) = 0.D0
+
+      XIL = dLOG(Xi_min)
+      XIU = dLOG(Xi_max)
+
+      if(XIL.ge.XIU) return
+
+      SS = SQS*SQS
+      xm4_p2 = 4.D0*xm_p**2
+      fac = beta0**2/(16.D0*PI)
+
+      t1 = -5.D0
+      t2 = 0.D0
+      tl = x_rad2/3.D0/(1.D0-t1/x_rad2)**3
+      tu = x_rad2/3.D0/(1.D0-t2/x_rad2)**3
+
+C  flux renormalization and cross section for pp/ppbar case
+
+      Xnorm  = 0.D0
+
+      xil = dlog(1.5D0/SS)
+      xiu = dlog(0.1D0)
+
+      IF(xiu.LE.xil) goto 1000
+
+      CALL SIB_GAUSET(xil,xiu,Ngau1,xpos1,xwgh1)
+      CALL SIB_GAUSET(tl,tu,Ngau2,xpos2,xwgh2)
+
+      do i1=1,Ngau1
+
+        xi = dexp(xpos1(i1))
+        w_xi = Xwgh1(i1)
+
+        do i2=1,Ngau2
+
+          tt = x_rad2-x_rad2*(x_rad2/(3.D0*xpos2(i2)))**(1.D0/3.D0)
+
+          alpha_t =  1.D0+delta+alphap*tt
+          f2_t = ((xm4_p2-2.8D0*tt)/(xm4_p2-tt))**2
+            
+          Xnorm = Xnorm
+     &      + f2_t*xi**(2.D0-2.D0*alpha_t)*Xwgh2(i2)*w_xi
+
+        enddo
+      enddo   
+
+      Xnorm = Xnorm*fac
+
+ 1000 continue
+
+      XIL = dLOG(Xi_min)
+      XIU = dLOG(Xi_max)
+
+      T1 = -5.D0
+      T2 = 0.D0
+
+      TL = x_rad2/3.D0/(1.D0-t1/x_rad2)**3
+      TU = x_rad2/3.D0/(1.D0-t2/x_rad2)**3
+
+C  single diffraction diss. cross section 
+
+      CSdiff = 0.D0
+
+      CALL SIB_GAUSET(XIL,XIU,NGAU1,XPOS1,XWGH1)
+      CALL SIB_GAUSET(TL,TU,NGAU2,XPOS2,XWGH2)
+
+      do i1=1,Ngau1
+
+        xi = dexp(xpos1(i1))
+        w_xi = Xwgh1(i1)*beta0*gpom0*(xi*ss)**delta
+
+        do i2=1,Ngau2
+
+          tt = x_rad2-x_rad2*(x_rad2/(3.D0*xpos2(i2)))**(1.D0/3.D0)
+
+          alpha_t =  1.D0+delta+alphap*tt
+          f2_t = ((xm4_p2-2.8D0*tt)/(xm4_p2-tt))**2
+
+          CSdiff = CSdiff 
+     &      + f2_t*xi**(2.D0-2.D0*alpha_t)*Xwgh2(i2)*w_xi
+
+        enddo
+      enddo
+
+      CSdiff = CSdiff*fac*GEV2MB/MAX(1.D0,Xnorm)
+
+*     write(LUN,'(1x,1p,4e14.3)') 
+*    &  sqrt(SS),Xnorm,2.d0*CSdiff*MAX(1.d0,Xnorm),2.d0*CSdiff
+
+      SIGDIF(1) = CSdiff
+      SIGDIF(2) = CSdiff
+
+C  double diff. dissociation from simple probability consideration
+*     Pdiff = 0.5d0-sqrt(0.25d0-CSdiff/SIGeff)
+      Pdiff = CSdiff/SIGeff
+      SIGDIF(3) = Pdiff*Pdiff*SIGeff
+
+      END
+C=======================================================================
+
+      SUBROUTINE SIB_GAUSET(AX,BX,NX,Z,W)
+
+C-----------------------------------------------------------------------
+C
+C     N-point gauss zeros and weights for the interval (AX,BX) are
+C           stored in  arrays Z and W respectively.
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+C
+      COMMON /GQCOM/A(273),X(273),KTAB(96)
+      DIMENSION Z(NX),W(NX)
+      SAVE
+      DATA INIT/0/
+C
+      ALPHA=0.5D0*(BX+AX)
+      BETA=0.5D0*(BX-AX)
+      N=NX
+*
+*  the N=1 case:
+      IF(N.NE.1) GO TO 1
+      Z(1)=ALPHA
+      W(1)=BX-AX
+      RETURN
+*
+*  the Gauss cases:
+    1 IF((N.LE.16).AND.(N.GT.1)) GO TO 2
+      IF(N.EQ.20) GO TO 2
+      IF(N.EQ.24) GO TO 2
+      IF(N.EQ.32) GO TO 2
+      IF(N.EQ.40) GO TO 2
+      IF(N.EQ.48) GO TO 2
+      IF(N.EQ.64) GO TO 2
+      IF(N.EQ.80) GO TO 2
+      IF(N.EQ.96) GO TO 2
+*
+*  the extended Gauss cases:
+      IF((N/96)*96.EQ.N) GO TO 3
+*
+C  jump to center of intervall intrgration:
+      GO TO 100
+*
+C  get Gauss point array
+*
+    2 CALL PO106BD
+C     -print out message
+*     IF(INIT.LE.20)THEN
+*       INIT=init+1
+*       WRITE (6,*) ' initialization of Gauss int. N=',N
+*     ENDIF
+C  extract real points
+      K=KTAB(N)
+      M=N/2
+      DO 21 J=1,M
+C       extract values from big array
+        JTAB=K-1+J
+        WTEMP=BETA*A(JTAB)
+        DELTA=BETA*X(JTAB)
+C       store them backward
+        Z(J)=ALPHA-DELTA
+        W(J)=WTEMP
+C       store them forward
+        JP=N+1-J
+        Z(JP)=ALPHA+DELTA
+        W(JP)=WTEMP
+   21 CONTINUE
+C     store central point (odd N)
+      IF((N-M-M).EQ.0) RETURN
+      Z(M+1)=ALPHA
+      JMID=K+M
+      W(M+1)=BETA*A(JMID)
+      RETURN
+C
+C  get ND96 times chained 96 Gauss point array
+C
+    3 CALL PO106BD
+C  print out message
+      IF(INIT.LE.20)THEN
+        INIT=init+1
+        WRITE (6,*) ' initialization of extended Gauss int. N=',N
+      ENDIF
+C     -extract real points
+      K=KTAB(96)
+      ND96=N/96
+      DO 31 J=1,48
+C       extract values from big array
+        JTAB=K-1+J
+        WTEMP=BETA*A(JTAB)
+        DELTA=BETA*X(JTAB)
+        WTeMP=WTEMP/ND96
+        DeLTA=DELTA/ND96
+        DO 32 JD96=0,ND96-1
+          ZCNTR= (ALPHA-BETA)+ BETA*DBLE(2*JD96+1)/DBLE(ND96)
+C         store them backward
+          Z(J+JD96*96)=ZCNTR-DELTA
+          W(J+JD96*96)=WTEMP
+C         store them forward
+          JP=96+1-J
+          Z(JP+JD96*96)=ZCNTR+DELTA
+          W(JP+JD96*96)=WTEMP
+   32   CONTINUE
+   31 CONTINUE
+      RETURN
+*
+C  the center of intervall cases:
+  100 CONTINUE
+C  print out message
+      IF(INIT.LE.20)THEN
+        INIT=init+1
+        WRITE (6,*) ' init. of center of intervall int. N=',N
+      ENDIF
+C  put in constant weight and equally spaced central points
+      N=IABS(N)
+      DO 111 IN=1,N
+        WIN=(BX-AX)/DBLE(N)
+        Z(IN)=AX  + (DBLE(IN)-.5D0)*WIN
+  111 W(IN)=WIN
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE PO106BD
+
+C-----------------------------------------------------------------------
+C
+C     store big arrays needed for Gauss integral, CERNLIB D106BD
+C     (arrays A,X,ITAB copied on B,Y,LTAB)
+C
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+C
+      COMMON /GQCOM/ B(273),Y(273),LTAB(96)
+      DIMENSION      A(273),X(273),KTAB(96)
+      SAVE
+C
+C-----TABLE OF INITIAL SUBSCRIPTS FOR N=2(1)16(4)96
+      DATA KTAB(2)/1/
+      DATA KTAB(3)/2/
+      DATA KTAB(4)/4/
+      DATA KTAB(5)/6/
+      DATA KTAB(6)/9/
+      DATA KTAB(7)/12/
+      DATA KTAB(8)/16/
+      DATA KTAB(9)/20/
+      DATA KTAB(10)/25/
+      DATA KTAB(11)/30/
+      DATA KTAB(12)/36/
+      DATA KTAB(13)/42/
+      DATA KTAB(14)/49/
+      DATA KTAB(15)/56/
+      DATA KTAB(16)/64/
+      DATA KTAB(20)/72/
+      DATA KTAB(24)/82/
+      DATA KTAB(28)/82/
+      DATA KTAB(32)/94/
+      DATA KTAB(36)/94/
+      DATA KTAB(40)/110/
+      DATA KTAB(44)/110/
+      DATA KTAB(48)/130/
+      DATA KTAB(52)/130/
+      DATA KTAB(56)/130/
+      DATA KTAB(60)/130/
+      DATA KTAB(64)/154/
+      DATA KTAB(68)/154/
+      DATA KTAB(72)/154/
+      DATA KTAB(76)/154/
+      DATA KTAB(80)/186/
+      DATA KTAB(84)/186/
+      DATA KTAB(88)/186/
+      DATA KTAB(92)/186/
+      DATA KTAB(96)/226/
+C
+C-----TABLE OF ABSCISSAE (X) AND WEIGHTS (A) FOR INTERVAL (-1,+1).
+C
+C-----N=2
+      DATA X(1)/0.577350269189626D0  /, A(1)/1.000000000000000D0  /
+C-----N=3
+      DATA X(2)/0.774596669241483D0  /, A(2)/0.555555555555556D0  /
+      DATA X(3)/0.000000000000000D0  /, A(3)/0.888888888888889D0  /
+C-----N=4
+      DATA X(4)/0.861136311594053D0  /, A(4)/0.347854845137454D0  /
+      DATA X(5)/0.339981043584856D0  /, A(5)/0.652145154862546D0  /
+C-----N=5
+      DATA X(6)/0.906179845938664D0  /, A(6)/0.236926885056189D0  /
+      DATA X(7)/0.538469310105683D0  /, A(7)/0.478628670499366D0  /
+      DATA X(8)/0.000000000000000D0  /, A(8)/0.568888888888889D0  /
+C-----N=6
+      DATA X(9)/0.932469514203152D0  /, A(9)/0.171324492379170D0  /
+      DATA X(10)/0.661209386466265D0 /, A(10)/0.360761573048139D0 /
+      DATA X(11)/0.238619186083197D0 /, A(11)/0.467913934572691D0 /
+C-----N=7
+      DATA X(12)/0.949107912342759D0 /, A(12)/0.129484966168870D0 /
+      DATA X(13)/0.741531185599394D0 /, A(13)/0.279705391489277D0 /
+      DATA X(14)/0.405845151377397D0 /, A(14)/0.381830050505119D0 /
+      DATA X(15)/0.000000000000000D0 /, A(15)/0.417959183673469D0 /
+C-----N=8
+      DATA X(16)/0.960289856497536D0 /, A(16)/0.101228536290376D0 /
+      DATA X(17)/0.796666477413627D0 /, A(17)/0.222381034453374D0 /
+      DATA X(18)/0.525532409916329D0 /, A(18)/0.313706645877887D0 /
+      DATA X(19)/0.183434642495650D0 /, A(19)/0.362683783378362D0 /
+C-----N=9
+      DATA X(20)/0.968160239507626D0 /, A(20)/0.081274388361574D0 /
+      DATA X(21)/0.836031107326636D0 /, A(21)/0.180648160694857D0 /
+      DATA X(22)/0.613371432700590D0 /, A(22)/0.260610696402935D0 /
+      DATA X(23)/0.324253423403809D0 /, A(23)/0.312347077040003D0 /
+      DATA X(24)/0.000000000000000D0 /, A(24)/0.330239355001260D0 /
+C-----N=10
+      DATA X(25)/0.973906528517172D0 /, A(25)/0.066671344308688D0 /
+      DATA X(26)/0.865063366688985D0 /, A(26)/0.149451349150581D0 /
+      DATA X(27)/0.679409568299024D0 /, A(27)/0.219086362515982D0 /
+      DATA X(28)/0.433395394129247D0 /, A(28)/0.269266719309996D0 /
+      DATA X(29)/0.148874338981631D0 /, A(29)/0.295524224714753D0 /
+C-----N=11
+      DATA X(30)/0.978228658146057D0 /, A(30)/0.055668567116174D0 /
+      DATA X(31)/0.887062599768095D0 /, A(31)/0.125580369464905D0 /
+      DATA X(32)/0.730152005574049D0 /, A(32)/0.186290210927734D0 /
+      DATA X(33)/0.519096129206812D0 /, A(33)/0.233193764591990D0 /
+      DATA X(34)/0.269543155952345D0 /, A(34)/0.262804544510247D0 /
+      DATA X(35)/0.000000000000000D0 /, A(35)/0.272925086777901D0 /
+C-----N=12
+      DATA X(36)/0.981560634246719D0 /, A(36)/0.047175336386512D0 /
+      DATA X(37)/0.904117256370475D0 /, A(37)/0.106939325995318D0 /
+      DATA X(38)/0.769902674194305D0 /, A(38)/0.160078328543346D0 /
+      DATA X(39)/0.587317954286617D0 /, A(39)/0.203167426723066D0 /
+      DATA X(40)/0.367831498998180D0 /, A(40)/0.233492536538355D0 /
+      DATA X(41)/0.125233408511469D0 /, A(41)/0.249147045813403D0 /
+C-----N=13
+      DATA X(42)/0.984183054718588D0 /, A(42)/0.040484004765316D0 /
+      DATA X(43)/0.917598399222978D0 /, A(43)/0.092121499837728D0 /
+      DATA X(44)/0.801578090733310D0 /, A(44)/0.138873510219787D0 /
+      DATA X(45)/0.642349339440340D0 /, A(45)/0.178145980761946D0 /
+      DATA X(46)/0.448492751036447D0 /, A(46)/0.207816047536889D0 /
+      DATA X(47)/0.230458315955135D0 /, A(47)/0.226283180262897D0 /
+      DATA X(48)/0.000000000000000D0 /, A(48)/0.232551553230874D0 /
+C-----N=14
+      DATA X(49)/0.986283808696812D0 /, A(49)/0.035119460331752D0 /
+      DATA X(50)/0.928434883663574D0 /, A(50)/0.080158087159760D0 /
+      DATA X(51)/0.827201315069765D0 /, A(51)/0.121518570687903D0 /
+      DATA X(52)/0.687292904811685D0 /, A(52)/0.157203167158194D0 /
+      DATA X(53)/0.515248636358154D0 /, A(53)/0.185538397477938D0 /
+      DATA X(54)/0.319112368927890D0 /, A(54)/0.205198463721296D0 /
+      DATA X(55)/0.108054948707344D0 /, A(55)/0.215263853463158D0 /
+C-----N=15
+      DATA X(56)/0.987992518020485D0 /, A(56)/0.030753241996117D0 /
+      DATA X(57)/0.937273392400706D0 /, A(57)/0.070366047488108D0 /
+      DATA X(58)/0.848206583410427D0 /, A(58)/0.107159220467172D0 /
+      DATA X(59)/0.724417731360170D0 /, A(59)/0.139570677926154D0 /
+      DATA X(60)/0.570972172608539D0 /, A(60)/0.166269205816994D0 /
+      DATA X(61)/0.394151347077563D0 /, A(61)/0.186161000015562D0 /
+      DATA X(62)/0.201194093997435D0 /, A(62)/0.198431485327111D0 /
+      DATA X(63)/0.000000000000000D0 /, A(63)/0.202578241925561D0 /
+C-----N=16
+      DATA X(64)/0.989400934991650D0 /, A(64)/0.027152459411754D0 /
+      DATA X(65)/0.944575023073233D0 /, A(65)/0.062253523938648D0 /
+      DATA X(66)/0.865631202387832D0 /, A(66)/0.095158511682493D0 /
+      DATA X(67)/0.755404408355003D0 /, A(67)/0.124628971255534D0 /
+      DATA X(68)/0.617876244402644D0 /, A(68)/0.149595988816577D0 /
+      DATA X(69)/0.458016777657227D0 /, A(69)/0.169156519395003D0 /
+      DATA X(70)/0.281603550779259D0 /, A(70)/0.182603415044924D0 /
+      DATA X(71)/0.095012509837637D0 /, A(71)/0.189450610455069D0 /
+C-----N=20
+      DATA X(72)/0.993128599185094D0 /, A(72)/0.017614007139152D0 /
+      DATA X(73)/0.963971927277913D0 /, A(73)/0.040601429800386D0 /
+      DATA X(74)/0.912234428251325D0 /, A(74)/0.062672048334109D0 /
+      DATA X(75)/0.839116971822218D0 /, A(75)/0.083276741576704D0 /
+      DATA X(76)/0.746331906460150D0 /, A(76)/0.101930119817240D0 /
+      DATA X(77)/0.636053680726515D0 /, A(77)/0.118194531961518D0 /
+      DATA X(78)/0.510867001950827D0 /, A(78)/0.131688638449176D0 /
+      DATA X(79)/0.373706088715419D0 /, A(79)/0.142096109318382D0 /
+      DATA X(80)/0.227785851141645D0 /, A(80)/0.149172986472603D0 /
+      DATA X(81)/0.076526521133497D0 /, A(81)/0.152753387130725D0 /
+C-----N=24
+      DATA X(82)/0.995187219997021D0 /, A(82)/0.012341229799987D0 /
+      DATA X(83)/0.974728555971309D0 /, A(83)/0.028531388628933D0 /
+      DATA X(84)/0.938274552002732D0 /, A(84)/0.044277438817419D0 /
+      DATA X(85)/0.886415527004401D0 /, A(85)/0.059298584915436D0 /
+      DATA X(86)/0.820001985973902D0 /, A(86)/0.073346481411080D0 /
+      DATA X(87)/0.740124191578554D0 /, A(87)/0.086190161531953D0 /
+      DATA X(88)/0.648093651936975D0 /, A(88)/0.097618652104113D0 /
+      DATA X(89)/0.545421471388839D0 /, A(89)/0.107444270115965D0 /
+      DATA X(90)/0.433793507626045D0 /, A(90)/0.115505668053725D0 /
+      DATA X(91)/0.315042679696163D0 /, A(91)/0.121670472927803D0 /
+      DATA X(92)/0.191118867473616D0 /, A(92)/0.125837456346828D0 /
+      DATA X(93)/0.064056892862605D0 /, A(93)/0.127938195346752D0 /
+C-----N=32
+      DATA X(94)/0.997263861849481D0 /, A(94)/0.007018610009470D0 /
+      DATA X(95)/0.985611511545268D0 /, A(95)/0.016274394730905D0 /
+      DATA X(96)/0.964762255587506D0 /, A(96)/0.025392065309262D0 /
+      DATA X(97)/0.934906075937739D0 /, A(97)/0.034273862913021D0 /
+      DATA X(98)/0.896321155766052D0 /, A(98)/0.042835898022226D0 /
+      DATA X(99)/0.849367613732569D0 /, A(99)/0.050998059262376D0 /
+      DATA X(100)/0.794483795967942D0/, A(100)/0.058684093478535D0/
+      DATA X(101)/0.732182118740289D0/, A(101)/0.065822222776361D0/
+      DATA X(102)/0.663044266930215D0/, A(102)/0.072345794108848D0/
+      DATA X(103)/0.587715757240762D0/, A(103)/0.078193895787070D0/
+      DATA X(104)/0.506899908932229D0/, A(104)/0.083311924226946D0/
+      DATA X(105)/0.421351276130635D0/, A(105)/0.087652093004403D0/
+      DATA X(106)/0.331868602282127D0/, A(106)/0.091173878695763D0/
+      DATA X(107)/0.239287362252137D0/, A(107)/0.093844399080804D0/
+      DATA X(108)/0.144471961582796D0/, A(108)/0.095638720079274D0/
+      DATA X(109)/0.048307665687738D0/, A(109)/0.096540088514727D0/
+C-----N=40
+      DATA X(110)/0.998237709710559D0/, A(110)/0.004521277098533D0/
+      DATA X(111)/0.990726238699457D0/, A(111)/0.010498284531152D0/
+      DATA X(112)/0.977259949983774D0/, A(112)/0.016421058381907D0/
+      DATA X(113)/0.957916819213791D0/, A(113)/0.022245849194166D0/
+      DATA X(114)/0.932812808278676D0/, A(114)/0.027937006980023D0/
+      DATA X(115)/0.902098806968874D0/, A(115)/0.033460195282547D0/
+      DATA X(116)/0.865959503212259D0/, A(116)/0.038782167974472D0/
+      DATA X(117)/0.824612230833311D0/, A(117)/0.043870908185673D0/
+      DATA X(118)/0.778305651426519D0/, A(118)/0.048695807635072D0/
+      DATA X(119)/0.727318255189927D0/, A(119)/0.053227846983936D0/
+      DATA X(120)/0.671956684614179D0/, A(120)/0.057439769099391D0/
+      DATA X(121)/0.612553889667980D0/, A(121)/0.061306242492928D0/
+      DATA X(122)/0.549467125095128D0/, A(122)/0.064804013456601D0/
+      DATA X(123)/0.483075801686178D0/, A(123)/0.067912045815233D0/
+      DATA X(124)/0.413779204371605D0/, A(124)/0.070611647391286D0/
+      DATA X(125)/0.341994090825758D0/, A(125)/0.072886582395804D0/
+      DATA X(126)/0.268152185007253D0/, A(126)/0.074723169057968D0/
+      DATA X(127)/0.192697580701371D0/, A(127)/0.076110361900626D0/
+      DATA X(128)/0.116084070675255D0/, A(128)/0.077039818164247D0/
+      DATA X(129)/0.038772417506050D0/, A(129)/0.077505947978424D0/
+C-----N=48
+      DATA X(130)/0.998771007252426D0/, A(130)/0.003153346052305D0/
+      DATA X(131)/0.993530172266350D0/, A(131)/0.007327553901276D0/
+      DATA X(132)/0.984124583722826D0/, A(132)/0.011477234579234D0/
+      DATA X(133)/0.970591592546247D0/, A(133)/0.015579315722943D0/
+      DATA X(134)/0.952987703160430D0/, A(134)/0.019616160457355D0/
+      DATA X(135)/0.931386690706554D0/, A(135)/0.023570760839324D0/
+      DATA X(136)/0.905879136715569D0/, A(136)/0.027426509708356D0/
+      DATA X(137)/0.876572020274247D0/, A(137)/0.031167227832798D0/
+      DATA X(138)/0.843588261624393D0/, A(138)/0.034777222564770D0/
+      DATA X(139)/0.807066204029442D0/, A(139)/0.038241351065830D0/
+      DATA X(140)/0.767159032515740D0/, A(140)/0.041545082943464D0/
+      DATA X(141)/0.724034130923814D0/, A(141)/0.044674560856694D0/
+      DATA X(142)/0.677872379632663D0/, A(142)/0.047616658492490D0/
+      DATA X(143)/0.628867396776513D0/, A(143)/0.050359035553854D0/
+      DATA X(144)/0.577224726083972D0/, A(144)/0.052890189485193D0/
+      DATA X(145)/0.523160974722233D0/, A(145)/0.055199503699984D0/
+      DATA X(146)/0.466902904750958D0/, A(146)/0.057277292100403D0/
+      DATA X(147)/0.408686481990716D0/, A(147)/0.059114839698395D0/
+      DATA X(148)/0.348755886292160D0/, A(148)/0.060704439165893D0/
+      DATA X(149)/0.287362487355455D0/, A(149)/0.062039423159892D0/
+      DATA X(150)/0.224763790394689D0/, A(150)/0.063114192286254D0/
+      DATA X(151)/0.161222356068891D0/, A(151)/0.063924238584648D0/
+      DATA X(152)/0.097004699209462D0/, A(152)/0.064466164435950D0/
+      DATA X(153)/0.032380170962869D0/, A(153)/0.064737696812683D0/
+C-----N=64
+      DATA X(154)/0.999305041735772D0/, A(154)/0.001783280721696D0/
+      DATA X(155)/0.996340116771955D0/, A(155)/0.004147033260562D0/
+      DATA X(156)/0.991013371476744D0/, A(156)/0.006504457968978D0/
+      DATA X(157)/0.983336253884625D0/, A(157)/0.008846759826363D0/
+      DATA X(158)/0.973326827789910D0/, A(158)/0.011168139460131D0/
+      DATA X(159)/0.961008799652053D0/, A(159)/0.013463047896718D0/
+      DATA X(160)/0.946411374858402D0/, A(160)/0.015726030476024D0/
+      DATA X(161)/0.929569172131939D0/, A(161)/0.017951715775697D0/
+      DATA X(162)/0.910522137078502D0/, A(162)/0.020134823153530D0/
+      DATA X(163)/0.889315445995114D0/, A(163)/0.022270173808383D0/
+      DATA X(164)/0.865999398154092D0/, A(164)/0.024352702568710D0/
+      DATA X(165)/0.840629296252580D0/, A(165)/0.026377469715054D0/
+      DATA X(166)/0.813265315122797D0/, A(166)/0.028339672614259D0/
+      DATA X(167)/0.783972358943341D0/, A(167)/0.030234657072402D0/
+      DATA X(168)/0.752819907260531D0/, A(168)/0.032057928354851D0/
+      DATA X(169)/0.719881850171610D0/, A(169)/0.033805161837141D0/
+      DATA X(170)/0.685236313054233D0/, A(170)/0.035472213256882D0/
+      DATA X(171)/0.648965471254657D0/, A(171)/0.037055128540240D0/
+      DATA X(172)/0.611155355172393D0/, A(172)/0.038550153178615D0/
+      DATA X(173)/0.571895646202634D0/, A(173)/0.039953741132720D0/
+      DATA X(174)/0.531279464019894D0/, A(174)/0.041262563242623D0/
+      DATA X(175)/0.489403145707052D0/, A(175)/0.042473515123653D0/
+      DATA X(176)/0.446366017253464D0/, A(176)/0.043583724529323D0/
+      DATA X(177)/0.402270157963991D0/, A(177)/0.044590558163756D0/
+      DATA X(178)/0.357220158337668D0/, A(178)/0.045491627927418D0/
+      DATA X(179)/0.311322871990210D0/, A(179)/0.046284796581314D0/
+      DATA X(180)/0.264687162208767D0/, A(180)/0.046968182816210D0/
+      DATA X(181)/0.217423643740007D0/, A(181)/0.047540165714830D0/
+      DATA X(182)/0.169644420423992D0/, A(182)/0.047999388596458D0/
+      DATA X(183)/0.121462819296120D0/, A(183)/0.048344762234802D0/
+      DATA X(184)/0.072993121787799D0/, A(184)/0.048575467441503D0/
+      DATA X(185)/0.024350292663424D0/, A(185)/0.048690957009139D0/
+C-----N=80
+      DATA X(186)/0.999553822651630D0/, A(186)/0.001144950003186D0/
+      DATA X(187)/0.997649864398237D0/, A(187)/0.002663533589512D0/
+      DATA X(188)/0.994227540965688D0/, A(188)/0.004180313124694D0/
+      DATA X(189)/0.989291302499755D0/, A(189)/0.005690922451403D0/
+      DATA X(190)/0.982848572738629D0/, A(190)/0.007192904768117D0/
+      DATA X(191)/0.974909140585727D0/, A(191)/0.008683945269260D0/
+      DATA X(192)/0.965485089043799D0/, A(192)/0.010161766041103D0/
+      DATA X(193)/0.954590766343634D0/, A(193)/0.011624114120797D0/
+      DATA X(194)/0.942242761309872D0/, A(194)/0.013068761592401D0/
+      DATA X(195)/0.928459877172445D0/, A(195)/0.014493508040509D0/
+      DATA X(196)/0.913263102571757D0/, A(196)/0.015896183583725D0/
+      DATA X(197)/0.896675579438770D0/, A(197)/0.017274652056269D0/
+      DATA X(198)/0.878722567678213D0/, A(198)/0.018626814208299D0/
+      DATA X(199)/0.859431406663111D0/, A(199)/0.019950610878141D0/
+      DATA X(200)/0.838831473580255D0/, A(200)/0.021244026115782D0/
+      DATA X(201)/0.816954138681463D0/, A(201)/0.022505090246332D0/
+      DATA X(202)/0.793832717504605D0/, A(202)/0.023731882865930D0/
+      DATA X(203)/0.769502420135041D0/, A(203)/0.024922535764115D0/
+      DATA X(204)/0.744000297583597D0/, A(204)/0.026075235767565D0/
+      DATA X(205)/0.717365185362099D0/, A(205)/0.027188227500486D0/
+      DATA X(206)/0.689637644342027D0/, A(206)/0.028259816057276D0/
+      DATA X(207)/0.660859898986119D0/, A(207)/0.029288369583267D0/
+      DATA X(208)/0.631075773046871D0/, A(208)/0.030272321759557D0/
+      DATA X(209)/0.600330622829751D0/, A(209)/0.031210174188114D0/
+      DATA X(210)/0.568671268122709D0/, A(210)/0.032100498673487D0/
+      DATA X(211)/0.536145920897131D0/, A(211)/0.032941939397645D0/
+      DATA X(212)/0.502804111888784D0/, A(212)/0.033733214984611D0/
+      DATA X(213)/0.468696615170544D0/, A(213)/0.034473120451753D0/
+      DATA X(214)/0.433875370831756D0/, A(214)/0.035160529044747D0/
+      DATA X(215)/0.398393405881969D0/, A(215)/0.035794393953416D0/
+      DATA X(216)/0.362304753499487D0/, A(216)/0.036373749905835D0/
+      DATA X(217)/0.325664370747701D0/, A(217)/0.036897714638276D0/
+      DATA X(218)/0.288528054884511D0/, A(218)/0.037365490238730D0/
+      DATA X(219)/0.250952358392272D0/, A(219)/0.037776364362001D0/
+      DATA X(220)/0.212994502857666D0/, A(220)/0.038129711314477D0/
+      DATA X(221)/0.174712291832646D0/, A(221)/0.038424993006959D0/
+      DATA X(222)/0.136164022809143D0/, A(222)/0.038661759774076D0/
+      DATA X(223)/0.097408398441584D0/, A(223)/0.038839651059051D0/
+      DATA X(224)/0.058504437152420D0/, A(224)/0.038958395962769D0/
+      DATA X(225)/0.019511383256793D0/, A(225)/0.039017813656306D0/
+C-----N=96
+      DATA X(226)/0.999689503883230D0/, A(226)/0.000796792065552D0/
+      DATA X(227)/0.998364375863181D0/, A(227)/0.001853960788946D0/
+      DATA X(228)/0.995981842987209D0/, A(228)/0.002910731817934D0/
+      DATA X(229)/0.992543900323762D0/, A(229)/0.003964554338444D0/
+      DATA X(230)/0.988054126329623D0/, A(230)/0.005014202742927D0/
+      DATA X(231)/0.982517263563014D0/, A(231)/0.006058545504235D0/
+      DATA X(232)/0.975939174585136D0/, A(232)/0.007096470791153D0/
+      DATA X(233)/0.968326828463264D0/, A(233)/0.008126876925698D0/
+      DATA X(234)/0.959688291448742D0/, A(234)/0.009148671230783D0/
+      DATA X(235)/0.950032717784437D0/, A(235)/0.010160770535008D0/
+      DATA X(236)/0.939370339752755D0/, A(236)/0.011162102099838D0/
+      DATA X(237)/0.927712456722308D0/, A(237)/0.012151604671088D0/
+      DATA X(238)/0.915071423120898D0/, A(238)/0.013128229566961D0/
+      DATA X(239)/0.901460635315852D0/, A(239)/0.014090941772314D0/
+      DATA X(240)/0.886894517402420D0/, A(240)/0.015038721026994D0/
+      DATA X(241)/0.871388505909296D0/, A(241)/0.015970562902562D0/
+      DATA X(242)/0.854959033434601D0/, A(242)/0.016885479864245D0/
+      DATA X(243)/0.837623511228187D0/, A(243)/0.017782502316045D0/
+      DATA X(244)/0.819400310737931D0/, A(244)/0.018660679627411D0/
+      DATA X(245)/0.800308744139140D0/, A(245)/0.019519081140145D0/
+      DATA X(246)/0.780369043867433D0/, A(246)/0.020356797154333D0/
+      DATA X(247)/0.759602341176647D0/, A(247)/0.021172939892191D0/
+      DATA X(248)/0.738030643744400D0/, A(248)/0.021966644438744D0/
+      DATA X(249)/0.715676812348967D0/, A(249)/0.022737069658329D0/
+      DATA X(250)/0.692564536642171D0/, A(250)/0.023483399085926D0/
+      DATA X(251)/0.668718310043916D0/, A(251)/0.024204841792364D0/
+      DATA X(252)/0.644163403784967D0/, A(252)/0.024900633222483D0/
+      DATA X(253)/0.618925840125468D0/, A(253)/0.025570036005349D0/
+      DATA X(254)/0.593032364777572D0/, A(254)/0.026212340735672D0/
+      DATA X(255)/0.566510418561397D0/, A(255)/0.026826866725591D0/
+      DATA X(256)/0.539388108324357D0/, A(256)/0.027412962726029D0/
+      DATA X(257)/0.511694177154667D0/, A(257)/0.027970007616848D0/
+      DATA X(258)/0.483457973920596D0/, A(258)/0.028497411065085D0/
+      DATA X(259)/0.454709422167743D0/, A(259)/0.028994614150555D0/
+      DATA X(260)/0.425478988407300D0/, A(260)/0.029461089958167D0/
+      DATA X(261)/0.395797649828908D0/, A(261)/0.029896344136328D0/
+      DATA X(262)/0.365696861472313D0/, A(262)/0.030299915420827D0/
+      DATA X(263)/0.335208522892625D0/, A(263)/0.030671376123669D0/
+      DATA X(264)/0.304364944354496D0/, A(264)/0.031010332586313D0/
+      DATA X(265)/0.273198812591049D0/, A(265)/0.031316425596861D0/
+      DATA X(266)/0.241743156163840D0/, A(266)/0.031589330770727D0/
+      DATA X(267)/0.210031310460567D0/, A(267)/0.031828758894411D0/
+      DATA X(268)/0.178096882367618D0/, A(268)/0.032034456231992D0/
+      DATA X(269)/0.145973714654896D0/, A(269)/0.032206204794030D0/
+      DATA X(270)/0.113695850110665D0/, A(270)/0.032343822568575D0/
+      DATA X(271)/0.081297495464425D0/, A(271)/0.032447163714064D0/
+      DATA X(272)/0.048812985136049D0/, A(272)/0.032516118713868D0/
+      DATA X(273)/0.016276744849602D0/, A(273)/0.032550614492363D0/
+      DATA IBD/0/
+
+      IF(IBD.NE.0) RETURN
+      IBD=1
+      DO 10 I=1,273
+        B(I) = A(I)
+10      Y(I) = X(I)
+      DO 20 I=1,96
+20      LTAB(I) = KTAB(I)
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE SIB_ALTRA(GA,BGX,BGY,BGZ,PCX,PCY,PCZ,EC,P,PX,PY,PZ,E)
+
+C-----------------------------------------------------------------------
+C
+C    arbitrary Lorentz transformation
+C
+C     Input: GA : gamma factor
+C            BG? : components of gamma * beta
+C            PC?,EC : components of initial 4 vector
+C
+C     Output: P?,E : components of 4vector in final frame
+C             P : 3-norm in final frame, a.k.a momentum
+C
+C     PHO_ALTRA taken from PHOJET /FR'14
+C*********************************************************************
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      DOUBLE PRECISION P,E
+      SAVE
+
+c     consistency check: (gamma*beta)**2 = gamma**2 - 1
+      BETGAM2 = BGX**2+BGY**2+BGZ**2
+      xtst = 1.D0-BETGAM2/GA**2 - 1.D0/GA**2
+      IF(abs(xtst).gt.1.D-5) THEN
+         WRITE(LUN,*) ' SIB_ALTRA: transf. inconsistent!'
+         WRITE(LUN,*) ' SIB_ALTRA: input (GA,GABE):',GA,BGX,BGY,BGZ
+      ENDIF
+      IF(GA.LT.1.D0) THEN
+         WRITE(LUN,*) ' SIB_ALTRA: you are joking right? GAMMA=',GA
+         CALL SIB_REJECT('SIB_ALTRA       ')
+      ENDIF
+      EP=PCX*BGX+PCY*BGY+PCZ*BGZ
+      PE=EP/(GA+1.D0)+EC
+      PX=PCX+BGX*PE
+      PY=PCY+BGY*PE
+      PZ=PCZ+BGZ*PE
+      P=DSQRT(PX*PX+PY*PY+PZ*PZ)
+      E=GA*EC+EP
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIB_TRANS(XO,YO,ZO,CDE,SDE,CFE,SFE,X,Y,Z)
+
+C-----------------------------------------------------------------------
+C
+C  rotation of coordinate frame (1) de rotation around y axis
+C                               (2) fe rotation around z axis
+C  (inverse rotation to SIB_TRANI)
+C
+C     Input: ?0 : vector components in initial frame
+C            C? : cosine of rotation angle
+C            S? : sine of rotation angle
+C            DE : angle of rotation around y axis 
+C                 (polar angle in spherical coord.)
+C            FE : angle of rotation around z axis 
+C                 (azimuthal angle in spherical coord.)
+C
+C     Output: X,Y,Z: components of vector in rotated frame
+C
+C     PHO_TRANS taken from PHOJET \FR'14
+C**********************************************************************
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+ 
+      X= CDE*CFE*XO-SFE*YO+SDE*CFE*ZO
+      Y= CDE*SFE*XO+CFE*YO+SDE*SFE*ZO
+      Z=-SDE    *XO       +CDE    *ZO
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIB_TRANI(XO,YO,ZO,CDE,SDE,CFE,SFE,X,Y,Z)
+
+C-----------------------------------------------------------------------
+C
+C  rotation of coordinate frame (1) -fe rotation around z axis
+C                               (2) -de rotation around y axis
+C  (inverse rotation to SIB_TRANS)
+C
+C     Input: ?0 : vector components in initial frame
+C            C? : cosine of rotation angle
+C            S? : sine of rotation angle
+C            DE : angle of rotation around y axis 
+C                 (polar angle in spherical coord.)
+C            FE : angle of rotation around z axis 
+C                 (azimuthal angle in spherical coord.)
+C
+C     Output: X,Y,Z: components of vector in rotated frame
+C
+C     PHO_TRANS taken from PHOJET \FR'14
+C**********************************************************************
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+
+      X= CDE*CFE*XO+CDE*SFE*YO-SDE*ZO
+      Y=-SFE    *XO+CFE*    YO
+      Z= SDE*CFE*XO+SDE*SFE*YO+CDE*ZO
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIROBO( NBEG, NEND, THE, PHI, DBEX, DBEY, DBEZ)
+
+C-----------------------------------------------------------------------
+C   THIS IS A SLIGHTLY ALTERED VERSION OF "LUROBO" [JETSET63.PYTHIA]   *
+C SET TO WORK IN THE SIBYL ENVIROMENT. THE TRANSFORMATION IS PERFORMED *
+C ON PARTICLES NUMBER FROM NBEG TO NEND. COMMON BLOCKS CHANGED.        *
+C                                      TSS,   Oct '87                  *
+C  modification  use directly BETA in double precision in input (PL)   *
+C **********************************************************************
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /S_PLIST/ P(8000,5), LLIST(8000), NP
+      DIMENSION ROT(3,3),PV(3),DP(4)
+      SAVE
+
+      IF(THE**2+PHI**2 .LE. 1.D-20) GO TO 131
+C...ROTATE (TYPICALLY FROM Z AXIS TO DIRECTION THETA,PHI)
+       ROT(1,1)=dCOS(THE)*dCOS(PHI)
+       ROT(1,2)=-dSIN(PHI)
+       ROT(1,3)=dSIN(THE)*dCOS(PHI)
+       ROT(2,1)=dCOS(THE)*dSIN(PHI)
+       ROT(2,2)=dCOS(PHI)
+       ROT(2,3)=dSIN(THE)*dSIN(PHI)
+       ROT(3,1)=-dSIN(THE)
+       ROT(3,2)=0.D0
+       ROT(3,3)=dCOS(THE)
+       DO 120 I=NBEG,NEND
+       DO 100 J=1,3
+ 100   PV(J)=P(I,J)
+       DO 110 J=1,3
+ 110   P(I,J)=ROT(J,1)*PV(1)+ROT(J,2)*PV(2)+ROT(J,3)*PV(3)
+ 120   CONTINUE
+ 131    IF(DBEX**2+DBEY**2+DBEZ**2 .LE. 1.D-20) GO TO 151
+C...LORENTZ BOOST (TYPICALLY FROM REST TO MOMENTUM/ENERGY=BETA)
+       DGA=1.D0/DSQRT(1D0-DBEX**2-DBEY**2-DBEZ**2)
+       DO 140 I=NBEG, NEND
+       DO 130 J=1,4
+ 130   DP(J)=P(I,J)
+       DBEP=DBEX*DP(1)+DBEY*DP(2)+DBEZ*DP(3)
+       DGABEP=DGA*(DGA*DBEP/(1.D0+DGA)+DP(4))
+       P(I,1)=DP(1)+DGABEP*DBEX
+       P(I,2)=DP(2)+DGABEP*DBEY
+       P(I,3)=DP(3)+DGABEP*DBEZ
+       P(I,4)=DGA*(DP(4)+DBEP)
+ 140   CONTINUE
+ 151   RETURN
+      END
+
+
+C=======================================================================
+
+      SUBROUTINE ISWTCH_LMNTS(ia,ib)
+
+C-----------------------------------------------------------------------
+      IMPLICIT INTEGER(I-N)
+      SAVE
+
+      itmp = ia
+      ia = ib
+      ib = itmp
+      end
+C=======================================================================
+
+      SUBROUTINE SWTCH_LMNTS(a,b)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+
+      tmp = a
+      a = b
+      b = tmp
+      end
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION PAWT(A,B,C)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+      SAVE
+
+C...  c.m.s. Momentum in two particle decays
+      PAWT = SQRT((A**2-(B+C)**2+EPS10)*(A**2-(B-C)**2))/(2.D0*A)
+      END
+
+C=======================================================================
+
+      SUBROUTINE HSPLI (KF,KP1,KP2)
+
+C-----------------------------------------------------------------------
+C...This subroutine splits one hadron of code KF
+C.  into 2 partons of code KP1 and KP2
+C.  KP1 refers to a color triplet [q or (qq)bar]         
+C.  KP2 to a a color anti-triplet [qbar or (qq)]         
+C.  allowed inputs:
+C.  KF = 6:14 pi0,pi+-,k+-,k0L,k0s, p,n
+C.     = -13,-14  pbar,nbar
+C.     = 34:39 Sig+, Sig0, Sig-, Xi0, Xi-, Lam0 
+C.     = 49: Omega-
+C.   \FR'16
+C------------------------------------------------
+      IMPLICIT NONE
+
+c     external types
+      INTEGER KF,KP1,KP2
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+
+c     internal types
+      INTEGER KPP
+      DOUBLE PRECISION R,XBUG,S_RNDM
+      SAVE
+
+      IF(IABS(KF).eq.6.or.IABS(KF).eq.27)THEN     ! pi0, rho0
+         R = S_RNDM(0)              
+         XBUG = 0.D0
+         IF(IPAR(19).eq.1) XBUG = 0.5D0
+         IF (R.LE.XBUG)  THEN
+            KP1 = 1                  
+            KP2 = -1
+         ELSE
+            KP1 = 2
+            KP2 = -2
+         ENDIF
+
+      ELSEIF(IABS(KF).eq.7)THEN ! pi+
+         KP1 = 1                  
+         KP2 = -2
+
+      ELSEIF(IABS(KF).eq.8)THEN ! pi-
+         KP1 = 2                  
+         KP2 = -1
+
+      ELSEIF(IABS(KF).eq.9)THEN                 ! K+
+         KP1 = 1                  
+         KP2 = -3
+      ELSEIF(IABS(KF).eq.10)THEN                ! K-
+         KP1 = 3                  
+         KP2 = -1
+      ELSEIF(IABS(KF).eq.11.or.IABS(KF).eq.12)THEN             ! K0S/K0L
+         KP1 = 2
+         KP2 = -3
+         IF (S_RNDM(1).GT. 0.5D0)  THEN
+            KP1 = 3
+            KP2 = -2
+         ENDIF
+      ELSEIF(IABS(KF).eq.21)THEN                ! K0
+         KP1 = 2
+         KP2 = -3
+      ELSEIF(IABS(KF).eq.22)THEN                ! K0bar
+         KP1 = 3
+         KP2 = -2
+      ELSEIF(IABS(KF).eq.33)THEN                 ! phi
+         KP1 = 3
+         KP2 = -3
+      ELSEIF(IABS(KF).eq.13.or.IABS(KF).eq.41)THEN             ! p/pbar,delta+
+         R = PAR(53)*S_RNDM(KF)
+         IF (R .LT.3.D0)       THEN
+            KP1 = 1
+            KP2 = 12
+         ELSEIF (R .LT. 4.D0)  THEN
+            KP1 = 1
+            KP2 = 21
+         ELSE
+            KP1 = 2
+            KP2 = 11
+         ENDIF
+      ELSEIF(IABS(KF).eq.14.or.IABS(KF).eq.42)THEN             ! n/nbar,delta0
+         R = 6.D0*S_RNDM(0)                  
+         IF (R .LT.3.D0)       THEN
+            KP1 = 2
+            KP2 = 12
+         ELSEIF (R .LT. 4.D0)  THEN
+            KP1 = 2
+            KP2 = 21
+         ELSE
+            KP1 = 1
+            KP2 = 22
+         ENDIF
+      ELSEIF(IABS(KF).eq.40)THEN                ! delta++
+         KP1 = 1
+         KP2 = 11
+      ELSEIF(IABS(KF).eq.43)THEN                ! delta-
+         KP1 = 2
+         KP2 = 22
+      ELSEIF(IABS(KF).eq.34)THEN                !Sigma+
+         R = 6.D0*S_RNDM(0)                  
+         IF (R .LT.3.D0)       THEN
+            KP1 = 3
+            KP2 = 11
+         ELSEIF (R .LT. 4.D0)  THEN
+            KP1 = 1
+            KP2 = 31
+         ELSE
+            KP1 = 1
+            KP2 = 13
+         ENDIF
+      ELSEIF(IABS(KF).eq.35.or.IABS(KF).eq.39)THEN             !Sigma0/Lambda0     
+c     all configurations equally likely --> Knuth shuffle
+c     setup quarks: u,d,s
+         CALL SHFFL_QRKS(1,2,3,KP1,KP2)
+         
+      ELSEIF(IABS(KF).eq.36)THEN                !Sigma-
+         R = 6.D0*S_RNDM(0)                  
+         IF (R .LT.3.D0)       THEN
+            KP1 = 3
+            KP2 = 22
+         ELSEIF (R .LT. 4.D0)  THEN
+            KP1 = 2
+            KP2 = 32
+         ELSE
+            KP1 = 2
+            KP2 = 23
+         ENDIF
+      ELSEIF(IABS(KF).eq.37)THEN                !Xi0
+         R = 6.D0*S_RNDM(0)                  
+         IF (R .LT.3.D0)       THEN
+            KP1 = 1
+            KP2 = 33
+         ELSEIF (R .LT. 4.D0)  THEN
+            KP1 = 3
+            KP2 = 13
+         ELSE
+            KP1 = 1
+            KP2 = 33
+         ENDIF
+      ELSEIF(IABS(KF).eq.38)THEN                !Xi-
+         R = 6.D0*S_RNDM(0)                  
+         IF (R .LT.3.D0)       THEN
+            KP1 = 2
+            KP2 = 33
+         ELSEIF (R .LT. 4.D0)  THEN
+            KP1 = 3
+            KP2 = 23
+         ELSE
+            KP1 = 2
+            KP2 = 33
+         ENDIF
+      ELSEIF(IABS(KF).eq.49)THEN                 ! Omega-
+         KP1 = 3
+         KP2 = 33
+
+      ELSEIF(IABS(KF).eq.59)THEN                 ! D+
+         KP1 = 4
+         KP2 = -2
+
+      ELSEIF(IABS(KF).eq.60)THEN                 ! D-
+         KP1 = 2
+         KP2 = -4
+
+      ELSEIF(IABS(KF).eq.71)THEN                 ! D0
+         KP1 = 4
+         KP2 = -1
+
+      ELSEIF(IABS(KF).eq.72)THEN                 ! D0bar
+         KP1 = 1
+         KP2 = -4
+
+      ELSEIF(IABS(KF).eq.73)THEN                 ! eta_c
+         KP1 = 4
+         KP2 = -4
+
+      ELSEIF(IABS(KF).eq.74)THEN                 ! Ds+
+         KP1 = 4
+         KP2 = -3
+
+      ELSEIF(IABS(KF).eq.75)THEN                 ! Ds-
+         KP1 = 3
+         KP2 = -4
+
+      ELSEIF(IABS(KF).eq.76)THEN                 ! Ds*+
+         KP1 = 4
+         KP2 = -3
+
+      ELSEIF(IABS(KF).eq.77)THEN                 ! Ds*-
+         KP1 = 3
+         KP2 = -4
+
+      ELSEIF(IABS(KF).eq.78)THEN                 ! D*+
+         KP1 = 4
+         KP2 = -2
+
+      ELSEIF(IABS(KF).eq.79)THEN                 ! D*-
+         KP1 = 2
+         KP2 = -4
+
+      ELSEIF(IABS(KF).eq.80)THEN                 ! D*0
+         KP1 = 4
+         KP2 = -1
+
+      ELSEIF(IABS(KF).eq.81)THEN                 ! D*0bar
+         KP1 = 1
+         KP2 = -4
+
+      ELSEIF(IABS(KF).eq.83)THEN                 ! J/psi
+         KP1 = 4
+         KP2 = -4
+         
+      ELSEIF(IABS(KF).eq.84)THEN                  ! Sigma_c++
+         R = 6.D0*S_RNDM(0)                  
+         IF (R .LT.3.D0)       THEN
+            KP1 = 4
+            KP2 = 11
+         ELSEIF (R .LT. 4.D0)  THEN
+            KP1 = 1
+            KP2 = 41
+         ELSE
+            KP1 = 1
+            KP2 = 14
+         ENDIF
+
+      ELSEIF(IABS(KF).eq.85.or.IABS(KF).eq.89)THEN               ! Sigma_c+ / Lambda_c+
+c     setup quarks: u,d,c
+         CALL SHFFL_QRKS(1,2,4,KP1,KP2)
+
+      ELSEIF(IABS(KF).eq.86)THEN                  ! Sigma_c0
+         R = 6.D0*S_RNDM(0)                  
+         IF (R .LT.3.D0)       THEN
+            KP1 = 4
+            KP2 = 22
+         ELSEIF (R .LT. 4.D0)  THEN
+            KP1 = 2
+            KP2 = 42
+         ELSE
+            KP1 = 2
+            KP2 = 24
+         ENDIF
+
+      ELSEIF(IABS(KF).eq.87)THEN               ! Xi_c+
+c     setup quarks: u,s,c
+         CALL SHFFL_QRKS(1,3,4,KP1,KP2)
+
+      ELSEIF(IABS(KF).eq.88)THEN                  ! Xi_c0
+         CALL SHFFL_QRKS(2,3,4,KP1,KP2)
+
+      ELSEIF(IABS(KF).eq.99)THEN                  ! Omega_c0
+         R = 6.D0*S_RNDM(0)                  
+         IF (R .LT.3.D0)       THEN
+            KP1 = 4
+            KP2 = 33
+         ELSEIF (R .LT. 4.D0)  THEN
+            KP1 = 3
+            KP2 = 43
+         ELSE
+            KP1 = 3
+            KP2 = 34
+         ENDIF         
+
+      ELSE
+C...  Test for good input
+         WRITE(LUN,*)
+     &        ' HSPLI : Routine entered with illegal particle code ',KF
+         CALL SIB_REJECT('HSPLI           ')
+      ENDIF
+
+C     if anti-baryon, invert valences
+      IF (KF .LT. 0) THEN
+         KPP = KP1
+         KP1 = -KP2
+         KP2 = -KPP
+      ENDIF
+      RETURN
+      END
+
+C=======================================================================      
+
+      SUBROUTINE SHFFL_QRKS(IQF1,IQF2,IQF3,KF1,KF2)
+
+C-----------------------------------------------------------------------
+c     routine to shuffle 3 quark flavors
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+      INTEGER IQF1,IQF2,IQF3,KF1,KF2
+      INTEGER KPL,JJ,II,IFL
+      DOUBLE PRECISION S_RNDM
+      DIMENSION KPL(3)
+c     quark flavors to shuffle
+      KPL(1) = IQF1
+      KPL(2) = IQF2
+      KPL(3) = IQF3
+c     Knuth shuffle..
+      DO II=3,2,-1
+         JJ=1+INT(II*S_RNDM(II))
+         IFL=KPL(jj)
+         KPL(jj)=KPL(ii)
+         KPL(ii)=IFL
+      ENDDO
+      KF1=KPL(1)
+      KF2=KPL(2)*10+KPL(3)     
+      END
+            
+
+      SUBROUTINE TRANSFONSHELL(ECM,XM1in,XM2in,XMAX,IMOD,P1,P2,LBAD)
+
+C-----------------------------------------------------------------------
+C     samples 2 --> 2 scattering that puts a particle on its mass shell
+C
+C     particle1 is along +z, always receives mass
+C     particle2 is along -z, mass only sampled if both aquire mass
+C
+C     DEPENDS: slope-parameter in s_difmass
+C
+C     INPUT: ECM : center-of-mass energy of scattering particles
+C            M1in  : mass of first particle
+C            M2in  : mass of second particle
+C            XMAX  : maximal mass that can be obtained
+C            IMOD  : remnant or diffraction mode
+C     
+C     OUTPUT: P1,P2 : final state 4vectors in two-particle c.m.   \FR'14
+C-----------------------------------------------------------------------
+      IMPLICIT NONE
+      
+c     external types
+      DOUBLE PRECISION ECM,XM1in,XM2in,XMAX,P1,P2
+      DIMENSION P1(5),P2(5)
+      INTEGER IMOD,LBAD
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NIPAR_max,NPAR_max
+      PARAMETER (NPAR_max=200,NIPAR_max=100)
+      DOUBLE PRECISION PAR
+      INTEGER IPAR
+      COMMON /S_CFLAFR/ PAR(NPAR_max), IPAR(NIPAR_max)
+      INTEGER ITRY, NREJ
+      COMMON /S_CNT/ ITRY(20), NREJ(20)
+      DOUBLE PRECISION AM,AM2
+      COMMON /S_MASS1/ AM(99), AM2(99)
+
+c     internal types
+      DOUBLE PRECISION XMB2,XMT2,AXMX,S,X1,X2,ALX,SLOP0,SLOPE,DB,
+     &     T,PTS,PZB2,PZT2,PT,PHI,XMB,XMT,S_RNDM,PTSWTCH
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      DOUBLE PRECISION SLOP0_0,ASLOP,BSLOP
+      INTEGER II
+      SAVE
+      DATA SLOP0_0 /6.5D0/        ! b (slope_ for Mx**2 > 5 GeV**2
+      DATA ASLOP /31.10362D0/     ! fit to the slope parameter.
+      DATA BSLOP /-15.29012D0/
+
+      IF(NDEBUG.gt.3)
+     &     WRITE(LUN,*) ' TRANSFONSHELL: called with (Ecm,M1,M2,XMAX):',
+     &     ECM,XM1in,XM2in,XMAX
+      
+      XMB2 = XM1in**2
+      XMT2 = XM2in**2     
+
+      AXMX = LOG(XMAX)
+      
+      ITRY(6) = 0
+      LBAD = 1
+
+C     remnant pt parameters
+c     distribution is: exp(-slope*t)
+c     slope = aslop + bslop * log(Mx**2)
+c     (by default same as in diff.
+c      scale with paramterers 90 and 91)
+
+c     diff. pt paramters
+      ASLOP = PAR(133)
+      BSLOP = PAR(134)
+      SLOP0_0 = PAR(135)
+      
+      S = ECM*ECM
+      X1 = 1.D0-(XMT2-XMB2)/S
+      X2 = 2.D0-X1
+      IF(X2.LT.EPS5) RETURN
+
+ 60   ITRY(6) = ITRY(6) + 1
+      IF(ITRY(6).GT.NREJ(6)) RETURN
+c     sample transverse momentum
+      ALX = LOG(MAX(XMT2,XMB2))
+c     set slope of pt distribution
+      IF(IMOD.eq.0)THEN
+c     diffraction dissociation
+         SLOP0 = SLOP0_0*PAR(93)
+         SLOPE = MAX(SLOP0,ASLOP+BSLOP*ALX)
+         PTSWTCH = 1.D0
+
+      ELSEIF(IMOD.eq.1)THEN
+c     remnant excitation
+         IF(IPAR(57).eq.0)THEN
+            ALX = ALX-LOG(AM2(13))
+            SLOP0 = PAR(92)
+            DB = (SLOP0-PAR(90))/AXMX
+            SLOPE = MAX(SLOP0,PAR(90)+DB*PAR(91)*ALX)
+         ELSE
+            ALX = ALX-LOG(AM2(13))
+            SLOP0 = PAR(92)
+            SLOPE = MAX(SLOP0,PAR(90)+PAR(91)*ALX)
+         ENDIF
+         PTSWTCH = 1.D0
+
+      ELSEIF(IMOD.eq.3)THEN
+c     no pt
+         PTSWTCH = 0.D0
+         SLOPE = 1.D0
+      ENDIF
+      IF(ndebug.gt.3)
+     &     WRITE(LUN,*) ' TRANSFONSHELL: (SLOP0,SLOPE,log(M**2)):',
+     &     SLOP0,SLOPE,ALX
+      T = -DLOG(MAX(EPS10,S_RNDM(0)))/SLOPE
+      PTS = T*X1*PTSWTCH
+      PZB2 = S*0.5D0*0.5D0*X1*X1-XMB2-PTS
+      PZT2 = S*0.5D0*0.5D0*X2*X2-XMT2-PTS
+      IF(NDEBUG.gt.3) 
+     &     WRITE(LUN,*) ' TRANSFONSHELL: (PTS,PZB2,PZT2):',PTS,PZB2,PZT2
+c      IF (ABS(PZB2)-PZT2.GT.EPS10) GOTO 60
+      IF (PZB2.lt.0.D0.or.PZT2.LT.0.D0) GOTO 60
+      PT = DSQRT(PTS)
+      PHI = TWOPI*S_RNDM(1)
+      XMB = sqrt(XMB2)
+      XMT = sqrt(XMT2)
+      P2(4) = 0.5D0*ECM*X2
+      P2(3) = -DSQRT(PZT2)
+      P2(1) = PT*dCOS(PHI)
+      P2(2) = PT*dSIN(PHI)
+      P2(5) = XMT
+
+      P1(4) = 0.5D0*ECM*X1
+      P1(3) = DSQRT(PZB2)
+      do ii = 1,2
+         P1(ii) = -P2(ii)
+      enddo
+      P1(5) = XMB
+      IF(NDEBUG.gt.3) THEN
+          WRITE(LUN,*) ' TRANSFONSHELL: (P1):',(p1(ii),ii=1,5)
+          WRITE(LUN,*) ' TRANSFONSHELL: (P2):',(p2(ii),ii=1,5)
+       ENDIF
+      LBAD = 0
+      END
+C=======================================================================
+
+      SUBROUTINE SAMPLE_SEA (ALPHA,ASUP,XMASS,XMAX,X1,X2,PT)
+
+C-----------------------------------------------------------------------
+C.    Routine that samples the kinematical variables of a sea quark pair.
+C.  INPUT:  STR_mass_min : minimal string mass ** 2 = x1 * x2 * s
+C.          ASUP : large x suppression exponent
+C.  OUTPUT:  X1, X2, PT (GeV)                                   /FR'14
+C-----------------------------------------------------------------------
+Cf2py double precision, intent(in) :: ALPHA,ASUP,XMASS,XMAX
+Cf2py double precision, intent(out) :: X1,X2,PT
+      IMPLICIT NONE
+
+c     include COMMONs
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+      INTEGER NW_max
+      PARAMETER (NW_max = 20)
+C--------------------------------------------------------------------
+C     SIBYLL common blocks containing event information       \FR'14
+C--------------------------------------------------------------------
+
+C     EVENT INFO COMMON
+C     contains overall interaction properties, like
+C     SQS : center-of-mass energy
+C     S   :         "       "     squared
+C     PTmin : low pt cut of QCD cross section, 
+C             i.e. minimal pt of hard minijets
+C     Xmin : low-x bound for PDFs, 
+C            i.e. minimal momentum fraction of hard partons
+C     Zmin : logarithm of that
+C     KB : PID of beam hadron
+C     KT() : PID of target
+C     IAT : mass number of target
+      DOUBLE PRECISION SQS,S,PTmin,XMIN,ZMIN
+      INTEGER KB,IAT,KT
+      COMMON /S_RUN/ SQS, S, PTmin, XMIN, ZMIN, KB, KT(NW_max), IAT
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+
+c     external type declarations
+      DOUBLE PRECISION ALPHA,ASUP,XMASS,XMAX,X1,X2,PT
+
+c     internal types
+      DOUBLE PRECISION XMINA,XM2DIS,XR,SLOPE,S_RNDM,XRNDM
+      SAVE
+      
+      IF(ndebug.gt.3)
+     &    write(lun,*) ' SAMPLE_SEA: alpha,asup,qmass,xmax',
+     &    ALPHA,ASUP,XMASS,XMAX
+
+c     min. momentum fraction for massive quarks
+c     i.e. sample from 1/(x+x_min)
+      XMINA = 2.D0*XMASS/SQS
+      IF(ndebug.gt.3)
+     &     write(lun,*) ' SAMPLE_SEA: xmina:',XMINA
+c     exponent of large x suppression: (1-x)**b, b=0 or b>1
+      IF(ABS(ASUP).lt.EPS3)THEN
+c     b = 0 , no suppression, sample bare 1/(x+xmin)       
+         X1 = XM2DIS(XMINA,XMAX,ALPHA) ! ~(1/x)**alpha
+         X2 = XM2DIS(XMINA,XMAX,ALPHA) ! ~(1/x)**alpha
+         
+      ELSEIF(ASUP.ge.EPS3)THEN
+c     b >= 1 , sample bare (1-x)**b/(x+xmin)
+         SLOPE = MAX(ASUP,EPS3)
+c     quark
+ 100     X1 = XM2DIS(XMINA,XMAX,ALPHA) ! ~(1/x)**alpha
+         XR = LOG(1.D0-X1)-LOG(1.D0-XMINA)
+         XRNDM = S_RNDM(1)
+         IF(ndebug.gt.4)
+     &        write(lun,*) '  X1,XR,SLOPE*XR:',X1,XR,SLOPE*XR
+         if(SLOPE*XR.le.LOG(max(XRNDM,eps10))) goto 100
+
+c     anti-quark
+ 200     X2 = XM2DIS(XMINA,XMAX,ALPHA) ! ~(1/x)**alpha
+         XR = log(1.D0-X2)-log(1.D0-XMINA)
+         XRNDM = S_RNDM(2)
+         IF(ndebug.gt.4)
+     &        write(lun,*) '  X2,XR,SLOPE*XR,XRNDM:',
+     &    X2,XR,SLOPE*XR,XRNDM
+         if(SLOPE*XR.le.log(max(XRNDM,eps10))) goto 200     
+      ELSE
+         WRITE(LUN,*) ' SAMPLE_SEA: suppression exponent out of range.'
+         WRITE(LUN,*) ' SAMPLE_SEA: ASUP:',ASUP
+         STOP
+      ENDIF
+
+c     sample pt
+c     not yet implemented... to avoid problem with virtual partons
+      pt = 0.D0
+      IF(ndebug.gt.3)
+     &     write(lun,*) ' SAMPLE_SEA: X1,X2,PT:',X1,X2,PT
+
+      END
+C**********************************************
+C
+C     contains the src for pion and proton pdf
+C     parametrizations according to GRV
+C     ( see function head for refs. )
+C
+C     1 pion pdf
+C     2 proton pdf GRV98LO
+C
+C**********************************************
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+*                                                                 *
+*         G R V - P I O N - P A R A M E T R I Z A T I O N S       *
+*                                                                 *
+*                 FOR A DETAILED EXPLANATION SEE :                *
+*              M. GLUECK, E.REYA, A.VOGT: DO-TH 91/16             *
+*                                                                 *
+*   THE PARAMETRIZATIONS ARE FITTED TO THE PARTON DISTRIBUTIONS   *
+*   FOR Q ** 2 BETWEEN MU ** 2 (=  0.25 / 0.30  GEV ** 2  IN LO   *
+*   / HO) AND  1.E8 GEV ** 2  AND FOR X BETWEEN  1.E-5  AND  1.   *
+*   REGIONS, WHERE THE DISTRIBUTION UNDER CONSIDERATION IS NEG-   *
+*   LIGIBLE, I.E. BELOW ABOUT 1.E-4, WERE EXCLUDED FROM THE FIT.  *
+*                                                                 *
+*              HEAVY QUARK THRESHOLDS  Q(H) = M(H) :              *
+*         M(C)  =  1.5,  M(B)  =  4.5,  M(T)  =  100  GEV         *
+*                                                                 *
+*      CORRESPONDING LAMBDA(F) VALUES FOR F ACTIVE FLAVOURS :     *
+*      LO :   LAMBDA(3)  =  0.232,   LAMBDA(4)  =  0.200,         *
+*             LAMBDA(5)  =  0.153,   LAMBDA(6)  =  0.082  GEV     *
+*      HO :   LAMBDA(3)  =  0.248,   LAMBDA(4)  =  0.200,         *
+*             LAMBDA(5)  =  0.131,   LAMBDA(6)  =  0.053  GEV     *
+*                                                                 *
+*   HO DISTRIBUTION REFER TO THE MS-BAR SCHEME OF BARDEEN ET AL.  *
+*                                                                 *
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+C=======================================================================
+
+       SUBROUTINE DORPLO (X, Q2, VAP, GLP, QBP, CBP, BBP)
+
+C-----------------------------------------------------------------------
+       IMPLICIT DOUBLE PRECISION (A - Z)
+       SAVE
+
+       MU2  = 0.25D0
+       LAM2 = 0.232D0 * 0.232D0
+       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
+       DS = SQRT (S)
+       S2 = S * S
+C...X * VALENCE :
+       NV  =  0.519D0 + 0.180D0 * S - 0.011D0 * S2
+       AKV =  0.499D0 - 0.027D0 * S
+       AGV =  0.381D0 - 0.419D0 * S
+       DV  =  0.367D0 + 0.563D0 * S
+       VAP =  DORFVP (X, NV, AKV, AGV, DV)
+C...X * GLUON :
+       ALG =  0.599D0
+       BEG =  1.263D0
+       AKG =  0.482D0 + 0.341D0 * DS
+       BKG =   0.0D0
+       AGG =  0.678D0 + 0.877D0 * S  - 0.175D0 * S2
+       BGG =  0.338D0 - 1.597D0 * S
+       CG  =   0.0D0  - 0.233D0 * S  + 0.406D0 * S2
+       DG  =  0.390D0 + 1.053D0 * S
+       EG  =  0.618D0 + 2.070D0 * S
+       ESG =  3.676D0
+       GLP =DORFGP(X, S, ALG, BEG, AKG, BKG, AGG, BGG, CG, DG, EG, ESG)
+C...X * QBAR (SU(3)-SYMMETRIC SEA) :
+       SL  =   0.0D0
+       ALS =   0.55D0
+       BES =   0.56D0
+       AKS =  2.538D0 - 0.763D0 * S
+       AGS = -0.748D0
+       BS  =  0.313D0 + 0.935D0 * S
+       DS  =  3.359D0
+       EST =  4.433D0 + 1.301D0 * S
+       ESS =   9.30D0 - 0.887D0 * S
+       QBP =  DORFQP (X, S, SL, ALS, BES, AKS, AGS, BS, DS, EST, ESS)
+C...X * CBAR = X * C :
+       SC  =  0.888D0
+       ALC =   1.02D0
+       BEC =   0.39D0
+       AKC =   0.0D0
+       AGC =   0.0D0
+       BC  =  1.008D0
+       DC  =  1.208D0 + 0.771D0 * S
+       EC  =   4.40D0 + 1.493D0 * S
+       ESC =  2.032D0 + 1.901D0 * S
+       CBP =  DORFQP (X, S, SC, ALC, BEC, AKC, AGC, BC, DC, EC, ESC)
+C...X * BBAR = X * B :
+       SBO =  1.351D0
+       ALB =   1.03D0
+       BEB =   0.39D0
+       AKB =   0.0D0
+       AGB =   0.0D0
+       BBO =   0.0D0
+       DB  =  0.697D0 + 0.855D0 * S
+       EB  =   4.51D0 + 1.490D0 * S
+       ESB =  3.056D0 + 1.694D0 * S
+       BBP =  DORFQP (X, S, SBO, ALB, BEB, AKB, AGB, BBO, DB, EB, ESB)
+       RETURN
+       END
+C
+C=======================================================================
+
+       SUBROUTINE DORPHO (X, Q2, VAP, GLP, QBP, CBP, BBP)
+
+C-----------------------------------------------------------------------
+       IMPLICIT DOUBLE PRECISION (A - Z)
+       SAVE
+
+       MU2  = 0.3D0
+       LAM2 = 0.248D0 * 0.248D0
+       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
+       DS = SQRT (S)
+       S2 = S * S
+C...X * VALENCE :
+       NV  =  0.456D0 + 0.150D0 * DS + 0.112D0 * S - 0.019D0 * S2
+       AKV =  0.505D0 - 0.033D0 * S
+       AGV =  0.748D0 - 0.669D0 * DS - 0.133D0 * S
+       DV  =  0.365D0 + 0.197D0 * DS + 0.394D0 * S
+       VAP =  DORFVP (X, NV, AKV, AGV, DV)
+C...X * GLUON :
+       ALG =  1.096D0
+       BEG =  1.371D0
+       AKG =  0.437D0 - 0.689D0 * DS
+       BKG = -0.631D0
+       AGG =  1.324D0 - 0.441D0 * DS - 0.130D0 * S
+       BGG = -0.955D0 + 0.259D0 * S
+       CG  =  1.075D0 - 0.302D0 * S
+       DG  =  1.158D0 + 1.229D0 * S
+       EG  =   0.0D0  + 2.510D0 * S
+       ESG =  2.604D0 + 0.165D0 * S
+       GLP =DORFGP(X, S, ALG, BEG, AKG, BKG, AGG, BGG, CG, DG, EG, ESG)
+C...X * QBAR (SU(3)-SYMMETRIC SEA) :
+       SL  =   0.0D0
+       ALS =   0.85D0
+       BES =   0.96D0
+       AKS = -0.350D0 + 0.806D0 * S
+       AGS = -1.663D0
+       BS  =  3.148D0
+       DS  =  2.273D0 + 1.438D0 * S
+       EST =  3.214D0 + 1.545D0 * S
+       ESS =  1.341D0 + 1.938D0 * S
+       QBP =  DORFQP (X, S, SL, ALS, BES, AKS, AGS, BS, DS, EST, ESS)
+C...X * CBAR = X * C :
+       SC  =  0.820D0
+       ALC =   0.98D0
+       BEC =   0.0D0
+       AKC =   0.0D0  - 0.457D0 * S
+       AGC =   0.0D0
+       BC  =  -1.00D0 +  1.40 D0* S
+       DC  =  1.318D0 + 0.584D0 * S
+       EC  =   4.45D0 + 1.235D0 * S
+       ESC =  1.496D0 + 1.010D0 * S
+       CBP =  DORFQP (X, S, SC, ALC, BEC, AKC, AGC, BC, DC, EC, ESC)
+C...X * BBAR = X * B :
+       SBO =  1.297D0
+       ALB =   0.99D0
+       BEB =   0.0D0
+       AKB =   0.0D0  - 0.172D0 * S
+       AGB =   0.0D0
+       BBO =   0.0D0
+       DB  =  1.447D0 + 0.485D0 * S
+       EB  =   4.79D0 + 1.164D0 * S
+       ESB =  1.724D0 + 2.121D0 * S
+       BBP =  DORFQP (X, S, SBO, ALB, BEB, AKB, AGB, BBO, DB, EB, ESB)
+       RETURN
+       END
+C
+C=======================================================================
+
+       FUNCTION DORFVP (X, N, AK, AG, D)
+
+C-----------------------------------------------------------------------
+       IMPLICIT DOUBLE PRECISION (A - Z)
+       SAVE
+
+       DX = SQRT (X)
+       DORFVP = N * X**AK * (1.D0+ AG*DX) * (1.D0- X)**D
+       RETURN
+       END
+C
+C=======================================================================
+
+       FUNCTION DORFGP (X, S, AL, BE, AK, BK, AG, BG, C, D, E, ES)
+
+C-----------------------------------------------------------------------
+       IMPLICIT DOUBLE PRECISION (A - Z)
+       SAVE
+
+       DX = SQRT (X)
+       LX = LOG (1.D0/X)
+       DORFGP = (X**AK * (AG + BG*DX + C*X) * LX**BK + S**AL
+     1       * EXP (-E + SQRT (ES * S**BE * LX))) * (1.D0- X)**D
+       RETURN
+       END
+C
+C=======================================================================
+
+       FUNCTION DORFQP (X, S, ST, AL, BE, AK, AG, B, D, E, ES)
+
+C-----------------------------------------------------------------------
+       IMPLICIT DOUBLE PRECISION (A - Z)
+       SAVE
+
+       DX = SQRT (X)
+       LX = LOG (1./X)
+       IF (S .LE. ST) THEN
+          DORFQP = 0.0D0
+       ELSE
+          DORFQP = (S-ST)**AL / LX**AK * (1.D0+AG*DX+B*X) * (1.D0- X)**D
+     1           * EXP(-E + SQRT(ES * S**BE * LX))
+       END IF
+       RETURN
+       END
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIB_DOR92FS(X,S,ST,AL,BE,AK,AG,B,D,E,ES)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A - Z)
+      SAVE
+
+       DX = SQRT (X)
+       LX = LOG (1.D0/X)
+       IF (S .LE. ST) THEN
+         SIB_DOR92FS = 0.D0
+       ELSE
+         SIB_DOR92FS = (S-ST)**AL/LX**AK*(1.D0+AG*DX+B*X)*(1.D0-X)**D
+     1          * EXP (-E + SQRT (ES * S**BE * LX))
+       END IF
+
+      END
+
+C=======================================================================
+
+      DOUBLE PRECISION FUNCTION SIB_DBFINT(NARG,ARG,NA,ENT,TABLE)
+
+C-----------------------------------------------------------------------
+C
+C     routine based on CERN library E104
+C
+C     multi-dimensional interpolation routine, needed for PHOJET
+C     internal cross section tables and several PDF sets (GRV98 and AGL)
+C
+C     changed to avoid recursive function calls (R.Engel, 09/98)
+C
+C***********************************************************************
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      INTEGER NA(NARG), INDE(32)
+      DOUBLE PRECISION ARG(NARG),ENT(NARG),TABLE(*),WEIGHT(32)
+      SAVE
+
+
+      DBFINT     =  0.D0
+      SIB_DBFINT =  0.D0
+      IF(NARG .LT. 1  .OR.  NARG .GT. 5)  RETURN
+
+           LMAX      =  0
+           ISTEP     =  1
+           KNOTS     =  1
+           INDE(1)   =  1
+           WEIGHT(1) =  1.D0
+           DO 100    N  =  1, NARG
+              X     =  ARG(N)
+              NDIM  =  NA(N)
+              LOCA  =  LMAX
+              LMIN  =  LMAX + 1
+              LMAX  =  LMAX + NDIM
+              IF(NDIM .GT. 2)  GOTO 10
+              IF(NDIM .EQ. 1)  GOTO 100
+              H  =  X - ENT(LMIN)
+              IF(ABS(H) .LT. 0.D-8)  GOTO 90
+              ISHIFT  =  ISTEP
+              IF(ABS(X-ENT(LMIN+1)) .LT. 0.D-8)  GOTO 21
+              ISHIFT  =  0
+              ETA     =  H / (ENT(LMIN+1) - ENT(LMIN))
+              GOTO 30
+   10         LOCB  =  LMAX + 1
+   11         LOCC  =  (LOCA+LOCB) / 2
+              IF(X-ENT(LOCC))  12, 20, 13
+   12         LOCB  =  LOCC
+              GOTO 14
+   13         LOCA  =  LOCC
+   14         IF(LOCB-LOCA .GT. 1)  GOTO 11
+              LOCA    =  MIN ( MAX (LOCA,LMIN), LMAX-1 )
+              ISHIFT  =  (LOCA - LMIN) * ISTEP
+              ETA     =  (X - ENT(LOCA)) / (ENT(LOCA+1) - ENT(LOCA))
+              GOTO 30
+   20         ISHIFT  =  (LOCC - LMIN) * ISTEP
+   21         DO 22  K  =  1, KNOTS
+                 INDE(K)  =  INDE(K) + ISHIFT
+   22         CONTINUE
+              GOTO 90
+   30         DO 31  K  =  1, KNOTS
+                 INDE(K)         =  INDE(K) + ISHIFT
+                 INDE(K+KNOTS)   =  INDE(K) + ISTEP
+                 WEIGHT(K+KNOTS) =  WEIGHT(K) * ETA
+                 WEIGHT(K)       =  WEIGHT(K) - WEIGHT(K+KNOTS)
+   31         CONTINUE
+              KNOTS  =  2*KNOTS
+   90         ISTEP  =  ISTEP * NDIM
+  100      CONTINUE
+           DO 200    K  =  1, KNOTS
+              I  =  INDE(K)
+              DBFINT =  DBFINT + WEIGHT(K) * TABLE(I)
+  200      CONTINUE
+
+      SIB_DBFINT = DBFINT
+
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIB_DOR98LO (Xinp, Q2inp, UV, DV, US, DS, SS, GL)
+
+C-----------------------------------------------------------------------
+C***********************************************************************
+C
+C   GRV98 parton densities, leading order set
+C
+C                  For a detailed explanation see
+C                   M. Glueck, E. Reya, A. Vogt :
+C        hep-ph/9806404  =  DO-TH 98/07  =  WUE-ITP-98-019
+C                  (To appear in Eur. Phys. J. C)
+C
+C   interpolation routine based on the original GRV98PA routine,
+C   adapted to define interpolation table as DATA statements
+C
+C                                                   (R.Engel, 09/98)
+C
+C
+C   INPUT:   X  =  Bjorken-x        (between  1.E-9 and 1.)
+C            Q2 =  scale in GeV**2  (between  0.8 and 1.E6)
+C
+C   OUTPUT:  UV = u - u(bar),  DV = d - d(bar),  US = u(bar),
+C            DS = d(bar),  SS = s = s(bar),  GL = gluon.
+C            Always x times the distribution is returned.
+C
+C******************************************************i****************
+      IMPLICIT DOUBLE PRECISION (A-H, O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      PARAMETER (NX=68, NQ=27, NARG=2)
+      DIMENSION XUVF(NX,NQ), XDVF(NX,NQ), XDEF(NX,NQ), XUDF(NX,NQ),
+     1          XSF(NX,NQ), XGF(NX,NQ),
+     2          XT(NARG), NA(NARG), ARRF(NX+NQ)
+
+      DIMENSION XUVF_L(NX*NQ), XDVF_L(NX*NQ), XDEF_L(NX*NQ),
+     &  XUDF_L(NX*NQ), XSF_L(NX*NQ), XGF_L(NX*NQ)
+
+      EQUIVALENCE (XUVF(1,1),XUVF_L(1))
+      EQUIVALENCE (XDVF(1,1),XDVF_L(1))
+      EQUIVALENCE (XDEF(1,1),XDEF_L(1))
+      EQUIVALENCE (XUDF(1,1),XUDF_L(1))
+      EQUIVALENCE (XSF(1,1),XSF_L(1))
+      EQUIVALENCE (XGF(1,1),XGF_L(1))
+      SAVE
+
+      DATA (ARRF(K),K=    1,   95) /
+     &  -2.0723D+01,-2.0135D+01,-1.9560D+01,-1.8983D+01,-1.8421D+01,
+     &  -1.7833D+01,-1.7258D+01,-1.6680D+01,-1.6118D+01,-1.5530D+01,
+     &  -1.4955D+01,-1.4378D+01,-1.3816D+01,-1.3479D+01,-1.3122D+01,
+     &  -1.2717D+01,-1.2311D+01,-1.1913D+01,-1.1513D+01,-1.1176D+01,
+     &  -1.0820D+01,-1.0414D+01,-1.0009D+01,-9.6108D+00,-9.2103D+00,
+     &  -8.8739D+00,-8.5172D+00,-8.1117D+00,-7.7063D+00,-7.3082D+00,
+     &  -6.9078D+00,-6.5713D+00,-6.2146D+00,-5.8091D+00,-5.4037D+00,
+     &  -5.0056D+00,-4.6052D+00,-4.2687D+00,-3.9120D+00,-3.5066D+00,
+     &  -3.1011D+00,-2.8134D+00,-2.5257D+00,-2.3026D+00,-2.0794D+00,
+     &  -1.8971D+00,-1.7430D+00,-1.6094D+00,-1.4917D+00,-1.3863D+00,
+     &  -1.2910D+00,-1.2040D+00,-1.1239D+00,-1.0498D+00,-9.8083D-01,
+     &  -9.1629D-01,-7.9851D-01,-6.9315D-01,-5.9784D-01,-5.1083D-01,
+     &  -4.3078D-01,-3.5667D-01,-2.8768D-01,-2.2314D-01,-1.6252D-01,
+     &  -1.0536D-01,-5.1293D-02, 0.0000D+00,-2.2314D-01, 0.0000D+00,
+     &   2.6236D-01, 5.8779D-01, 9.9325D-01, 1.3863D+00, 1.8563D+00,
+     &   2.3026D+00, 2.7726D+00, 3.2189D+00, 3.6889D+00, 4.1589D+00,
+     &   4.6052D+00, 5.1930D+00, 5.7683D+00, 6.3456D+00, 6.9078D+00,
+     &   7.4955D+00, 8.0709D+00, 8.6482D+00, 9.2103D+00, 9.9988D+00,
+     &   1.0736D+01, 1.1513D+01, 1.2301D+01, 1.3039D+01, 1.3816D+01/
+      DATA (XUVF_L(K),K=    1,  114) /
+     &2.3186D+00,2.2915D+00,2.2645D+00,2.2385D+00,2.2140D+00,2.1876D+00,
+     &2.1623D+00,2.1366D+00,2.1121D+00,2.0862D+00,2.0612D+00,2.0358D+00,
+     &2.0110D+00,1.9963D+00,1.9806D+00,1.9624D+00,1.9446D+00,1.9263D+00,
+     &1.9072D+00,1.8904D+00,1.8724D+00,1.8515D+00,1.8294D+00,1.8085D+00,
+     &1.7865D+00,1.7680D+00,1.7483D+00,1.7249D+00,1.6993D+00,1.6715D+00,
+     &1.6385D+00,1.6141D+00,1.5884D+00,1.5597D+00,1.5337D+00,1.5121D+00,
+     &1.4985D+00,1.4980D+00,1.5116D+00,1.5555D+00,1.6432D+00,1.7434D+00,
+     &1.8861D+00,2.0327D+00,2.2174D+00,2.4015D+00,2.5849D+00,2.7671D+00,
+     &2.9488D+00,3.1308D+00,3.3142D+00,3.4998D+00,3.6885D+00,3.8826D+00,
+     &4.0815D+00,4.2069D+00,4.5481D+00,4.8830D+00,5.2116D+00,5.5351D+00,
+     &5.8553D+00,6.1665D+00,6.4745D+00,6.7767D+00,7.0735D+00,7.3628D+00,
+     &7.6283D+00,0.0000D+00,2.3948D+00,2.3665D+00,2.3388D+00,2.3126D+00,
+     &2.2860D+00,2.2592D+00,2.2327D+00,2.2065D+00,2.1810D+00,2.1541D+00,
+     &2.1284D+00,2.1020D+00,2.0760D+00,2.0605D+00,2.0443D+00,2.0259D+00,
+     &2.0068D+00,1.9873D+00,1.9676D+00,1.9500D+00,1.9312D+00,1.9081D+00,
+     &1.8860D+00,1.8635D+00,1.8406D+00,1.8221D+00,1.8007D+00,1.7764D+00,
+     &1.7489D+00,1.7195D+00,1.6855D+00,1.6600D+00,1.6332D+00,1.6031D+00,
+     &1.5760D+00,1.5532D+00,1.5397D+00,1.5376D+00,1.5507D+00,1.5929D+00,
+     &1.6784D+00,1.7759D+00,1.9129D+00,2.0531D+00,2.2292D+00,2.4032D+00/
+      DATA (XUVF_L(K),K=  115,  228) /
+     &2.5752D+00,2.7449D+00,2.9135D+00,3.0810D+00,3.2491D+00,3.4183D+00,
+     &3.5898D+00,3.7650D+00,3.9437D+00,4.0443D+00,4.3402D+00,4.6262D+00,
+     &4.9009D+00,5.1640D+00,5.4156D+00,5.6530D+00,5.8759D+00,6.0779D+00,
+     &6.2540D+00,6.3836D+00,6.4062D+00,0.0000D+00,2.4808D+00,2.4513D+00,
+     &2.4236D+00,2.3948D+00,2.3680D+00,2.3397D+00,2.3127D+00,2.2853D+00,
+     &2.2585D+00,2.2307D+00,2.2026D+00,2.1762D+00,2.1490D+00,2.1332D+00,
+     &2.1164D+00,2.0964D+00,2.0766D+00,2.0565D+00,2.0353D+00,2.0171D+00,
+     &1.9969D+00,1.9738D+00,1.9501D+00,1.9258D+00,1.9026D+00,1.8821D+00,
+     &1.8594D+00,1.8330D+00,1.8046D+00,1.7734D+00,1.7378D+00,1.7112D+00,
+     &1.6829D+00,1.6514D+00,1.6228D+00,1.5994D+00,1.5840D+00,1.5808D+00,
+     &1.5927D+00,1.6334D+00,1.7157D+00,1.8093D+00,1.9406D+00,2.0735D+00,
+     &2.2394D+00,2.4019D+00,2.5615D+00,2.7178D+00,2.8718D+00,3.0246D+00,
+     &3.1766D+00,3.3284D+00,3.4820D+00,3.6370D+00,3.7952D+00,3.8716D+00,
+     &4.1225D+00,4.3580D+00,4.5798D+00,4.7847D+00,4.9730D+00,5.1395D+00,
+     &5.2832D+00,5.3945D+00,5.4634D+00,5.4612D+00,5.2940D+00,0.0000D+00,
+     &2.5823D+00,2.5527D+00,2.5226D+00,2.4928D+00,2.4650D+00,2.4358D+00,
+     &2.4071D+00,2.3783D+00,2.3505D+00,2.3212D+00,2.2928D+00,2.2636D+00,
+     &2.2360D+00,2.2185D+00,2.2005D+00,2.1801D+00,2.1591D+00,2.1376D+00,
+     &2.1153D+00,2.0960D+00,2.0747D+00,2.0505D+00,2.0247D+00,1.9991D+00/
+      DATA (XUVF_L(K),K=  229,  342) /
+     &1.9746D+00,1.9523D+00,1.9287D+00,1.9000D+00,1.8693D+00,1.8361D+00,
+     &1.7994D+00,1.7711D+00,1.7409D+00,1.7076D+00,1.6772D+00,1.6517D+00,
+     &1.6345D+00,1.6302D+00,1.6408D+00,1.6789D+00,1.7574D+00,1.8457D+00,
+     &1.9692D+00,2.0939D+00,2.2474D+00,2.3969D+00,2.5419D+00,2.6837D+00,
+     &2.8216D+00,2.9573D+00,3.0915D+00,3.2246D+00,3.3583D+00,3.4917D+00,
+     &3.6273D+00,3.6791D+00,3.8823D+00,4.0673D+00,4.2350D+00,4.3813D+00,
+     &4.5072D+00,4.6083D+00,4.6757D+00,4.7055D+00,4.6825D+00,4.5674D+00,
+     &4.2566D+00,0.0000D+00,2.7025D+00,2.6705D+00,2.6393D+00,2.6093D+00,
+     &2.5790D+00,2.5484D+00,2.5184D+00,2.4880D+00,2.4590D+00,2.4277D+00,
+     &2.3971D+00,2.3669D+00,2.3380D+00,2.3200D+00,2.3002D+00,2.2782D+00,
+     &2.2557D+00,2.2331D+00,2.2092D+00,2.1887D+00,2.1660D+00,2.1400D+00,
+     &2.1126D+00,2.0859D+00,2.0586D+00,2.0351D+00,2.0094D+00,1.9786D+00,
+     &1.9453D+00,1.9096D+00,1.8707D+00,1.8406D+00,1.8084D+00,1.7728D+00,
+     &1.7392D+00,1.7128D+00,1.6933D+00,1.6875D+00,1.6949D+00,1.7295D+00,
+     &1.8023D+00,1.8845D+00,1.9991D+00,2.1134D+00,2.2525D+00,2.3868D+00,
+     &2.5160D+00,2.6405D+00,2.7609D+00,2.8781D+00,2.9929D+00,3.1059D+00,
+     &3.2180D+00,3.3292D+00,3.4407D+00,3.4675D+00,3.6225D+00,3.7573D+00,
+     &3.8710D+00,3.9617D+00,4.0270D+00,4.0642D+00,4.0675D+00,4.0263D+00,
+     &3.9240D+00,3.7262D+00,3.3217D+00,0.0000D+00,2.8135D+00,2.7813D+00/
+      DATA (XUVF_L(K),K=  343,  456) /
+     &2.7489D+00,2.7166D+00,2.6850D+00,2.6527D+00,2.6212D+00,2.5898D+00,
+     &2.5592D+00,2.5267D+00,2.4943D+00,2.4636D+00,2.4320D+00,2.4129D+00,
+     &2.3929D+00,2.3695D+00,2.3453D+00,2.3211D+00,2.2959D+00,2.2740D+00,
+     &2.2496D+00,2.2221D+00,2.1931D+00,2.1653D+00,2.1356D+00,2.1112D+00,
+     &2.0830D+00,2.0503D+00,2.0147D+00,1.9766D+00,1.9361D+00,1.9037D+00,
+     &1.8696D+00,1.8318D+00,1.7966D+00,1.7677D+00,1.7459D+00,1.7378D+00,
+     &1.7430D+00,1.7738D+00,1.8407D+00,1.9169D+00,2.0223D+00,2.1273D+00,
+     &2.2537D+00,2.3742D+00,2.4892D+00,2.5990D+00,2.7043D+00,2.8056D+00,
+     &2.9038D+00,3.0000D+00,3.0936D+00,3.1864D+00,3.2782D+00,3.2867D+00,
+     &3.4021D+00,3.4971D+00,3.5691D+00,3.6188D+00,3.6422D+00,3.6335D+00,
+     &3.5908D+00,3.5036D+00,3.3552D+00,3.1085D+00,2.6634D+00,0.0000D+00,
+     &2.9406D+00,2.9062D+00,2.8726D+00,2.8385D+00,2.8060D+00,2.7720D+00,
+     &2.7392D+00,2.7058D+00,2.6734D+00,2.6399D+00,2.6057D+00,2.5722D+00,
+     &2.5390D+00,2.5194D+00,2.4975D+00,2.4728D+00,2.4471D+00,2.4216D+00,
+     &2.3945D+00,2.3712D+00,2.3458D+00,2.3152D+00,2.2856D+00,2.2545D+00,
+     &2.2237D+00,2.1966D+00,2.1672D+00,2.1312D+00,2.0926D+00,2.0521D+00,
+     &2.0093D+00,1.9748D+00,1.9384D+00,1.8975D+00,1.8601D+00,1.8275D+00,
+     &1.8036D+00,1.7924D+00,1.7948D+00,1.8206D+00,1.8808D+00,1.9499D+00,
+     &2.0450D+00,2.1390D+00,2.2512D+00,2.3570D+00,2.4564D+00,2.5501D+00/
+      DATA (XUVF_L(K),K=  457,  570) /
+     &2.6391D+00,2.7240D+00,2.8053D+00,2.8834D+00,2.9590D+00,3.0326D+00,
+     &3.1042D+00,3.0942D+00,3.1727D+00,3.2289D+00,3.2628D+00,3.2739D+00,
+     &3.2574D+00,3.2103D+00,3.1297D+00,3.0047D+00,2.8211D+00,2.5467D+00,
+     &2.0897D+00,0.0000D+00,3.0557D+00,3.0193D+00,2.9840D+00,2.9497D+00,
+     &2.9150D+00,2.8801D+00,2.8454D+00,2.8109D+00,2.7771D+00,2.7412D+00,
+     &2.7065D+00,2.6716D+00,2.6360D+00,2.6149D+00,2.5923D+00,2.5663D+00,
+     &2.5395D+00,2.5120D+00,2.4834D+00,2.4589D+00,2.4330D+00,2.4011D+00,
+     &2.3676D+00,2.3363D+00,2.3027D+00,2.2736D+00,2.2422D+00,2.2040D+00,
+     &2.1629D+00,2.1194D+00,2.0750D+00,2.0384D+00,1.9996D+00,1.9565D+00,
+     &1.9160D+00,1.8811D+00,1.8541D+00,1.8409D+00,1.8399D+00,1.8611D+00,
+     &1.9143D+00,1.9764D+00,2.0622D+00,2.1459D+00,2.2457D+00,2.3385D+00,
+     &2.4249D+00,2.5051D+00,2.5806D+00,2.6515D+00,2.7182D+00,2.7823D+00,
+     &2.8427D+00,2.9008D+00,2.9564D+00,2.9332D+00,2.9828D+00,3.0094D+00,
+     &3.0142D+00,2.9955D+00,2.9537D+00,2.8796D+00,2.7735D+00,2.6260D+00,
+     &2.4242D+00,2.1388D+00,1.6900D+00,0.0000D+00,3.1718D+00,3.1348D+00,
+     &3.0971D+00,3.0610D+00,3.0260D+00,2.9896D+00,2.9533D+00,2.9173D+00,
+     &2.8818D+00,2.8449D+00,2.8072D+00,2.7709D+00,2.7340D+00,2.7121D+00,
+     &2.6877D+00,2.6605D+00,2.6319D+00,2.6032D+00,2.5732D+00,2.5471D+00,
+     &2.5180D+00,2.4851D+00,2.4511D+00,2.4170D+00,2.3817D+00,2.3505D+00/
+      DATA (XUVF_L(K),K=  571,  684) /
+     &2.3172D+00,2.2762D+00,2.2328D+00,2.1868D+00,2.1400D+00,2.1012D+00,
+     &2.0601D+00,2.0136D+00,1.9704D+00,1.9335D+00,1.9035D+00,1.8868D+00,
+     &1.8827D+00,1.8990D+00,1.9452D+00,2.0005D+00,2.0763D+00,2.1507D+00,
+     &2.2377D+00,2.3179D+00,2.3917D+00,2.4592D+00,2.5218D+00,2.5799D+00,
+     &2.6336D+00,2.6843D+00,2.7314D+00,2.7753D+00,2.8166D+00,2.7824D+00,
+     &2.8054D+00,2.8081D+00,2.7893D+00,2.7474D+00,2.6818D+00,2.5888D+00,
+     &2.4646D+00,2.3032D+00,2.0902D+00,1.8025D+00,1.3740D+00,0.0000D+00,
+     &3.2793D+00,3.2385D+00,3.2014D+00,3.1643D+00,3.1270D+00,3.0888D+00,
+     &3.0517D+00,3.0141D+00,2.9773D+00,2.9392D+00,2.9009D+00,2.8610D+00,
+     &2.8230D+00,2.8000D+00,2.7754D+00,2.7459D+00,2.7163D+00,2.6858D+00,
+     &2.6545D+00,2.6270D+00,2.5962D+00,2.5617D+00,2.5271D+00,2.4903D+00,
+     &2.4527D+00,2.4207D+00,2.3851D+00,2.3421D+00,2.2960D+00,2.2476D+00,
+     &2.1987D+00,2.1578D+00,2.1146D+00,2.0670D+00,2.0202D+00,1.9796D+00,
+     &1.9468D+00,1.9282D+00,1.9203D+00,1.9319D+00,1.9712D+00,2.0197D+00,
+     &2.0872D+00,2.1524D+00,2.2288D+00,2.2981D+00,2.3606D+00,2.4177D+00,
+     &2.4692D+00,2.5159D+00,2.5591D+00,2.5981D+00,2.6339D+00,2.6669D+00,
+     &2.6962D+00,2.6528D+00,2.6566D+00,2.6395D+00,2.6028D+00,2.5437D+00,
+     &2.4622D+00,2.3555D+00,2.2200D+00,2.0488D+00,1.8335D+00,1.5506D+00,
+     &1.1442D+00,0.0000D+00,3.3868D+00,3.3470D+00,3.3075D+00,3.2689D+00/
+      DATA (XUVF_L(K),K=  685,  798) /
+     &3.2300D+00,3.1909D+00,3.1517D+00,3.1129D+00,3.0747D+00,3.0335D+00,
+     &2.9946D+00,2.9537D+00,2.9140D+00,2.8896D+00,2.8638D+00,2.8337D+00,
+     &2.8021D+00,2.7705D+00,2.7373D+00,2.7075D+00,2.6767D+00,2.6403D+00,
+     &2.6031D+00,2.5649D+00,2.5258D+00,2.4917D+00,2.4537D+00,2.4080D+00,
+     &2.3597D+00,2.3091D+00,2.2580D+00,2.2150D+00,2.1692D+00,2.1186D+00,
+     &2.0701D+00,2.0257D+00,1.9901D+00,1.9679D+00,1.9571D+00,1.9629D+00,
+     &1.9955D+00,2.0378D+00,2.0963D+00,2.1529D+00,2.2178D+00,2.2766D+00,
+     &2.3287D+00,2.3749D+00,2.4162D+00,2.4529D+00,2.4850D+00,2.5140D+00,
+     &2.5392D+00,2.5617D+00,2.5798D+00,2.5298D+00,2.5151D+00,2.4811D+00,
+     &2.4282D+00,2.3561D+00,2.2611D+00,2.1439D+00,2.0005D+00,1.8252D+00,
+     &1.6091D+00,1.3345D+00,9.5375D-01,0.0000D+00,3.4912D+00,3.4507D+00,
+     &3.4100D+00,3.3696D+00,3.3310D+00,3.2893D+00,3.2496D+00,3.2088D+00,
+     &3.1686D+00,3.1278D+00,3.0865D+00,3.0438D+00,3.0020D+00,2.9766D+00,
+     &2.9494D+00,2.9180D+00,2.8850D+00,2.8520D+00,2.8174D+00,2.7877D+00,
+     &2.7550D+00,2.7169D+00,2.6762D+00,2.6369D+00,2.5958D+00,2.5594D+00,
+     &2.5195D+00,2.4721D+00,2.4211D+00,2.3680D+00,2.3145D+00,2.2695D+00,
+     &2.2214D+00,2.1684D+00,2.1154D+00,2.0706D+00,2.0303D+00,2.0058D+00,
+     &1.9909D+00,1.9920D+00,2.0177D+00,2.0531D+00,2.1031D+00,2.1511D+00,
+     &2.2060D+00,2.2548D+00,2.2972D+00,2.3339D+00,2.3655D+00,2.3927D+00/
+      DATA (XUVF_L(K),K=  799,  912) /
+     &2.4159D+00,2.4357D+00,2.4520D+00,2.4644D+00,2.4735D+00,2.4171D+00,
+     &2.3878D+00,2.3397D+00,2.2743D+00,2.1907D+00,2.0861D+00,1.9611D+00,
+     &1.8128D+00,1.6351D+00,1.4227D+00,1.1584D+00,8.0371D-01,0.0000D+00,
+     &3.5892D+00,3.5473D+00,3.5055D+00,3.4637D+00,3.4230D+00,3.3809D+00,
+     &3.3396D+00,3.2976D+00,3.2571D+00,3.2126D+00,3.1696D+00,3.1272D+00,
+     &3.0840D+00,3.0569D+00,3.0286D+00,2.9959D+00,2.9619D+00,2.9273D+00,
+     &2.8910D+00,2.8598D+00,2.8266D+00,2.7863D+00,2.7448D+00,2.7029D+00,
+     &2.6598D+00,2.6219D+00,2.5804D+00,2.5305D+00,2.4773D+00,2.4214D+00,
+     &2.3662D+00,2.3191D+00,2.2698D+00,2.2126D+00,2.1577D+00,2.1092D+00,
+     &2.0674D+00,2.0393D+00,2.0210D+00,2.0173D+00,2.0367D+00,2.0654D+00,
+     &2.1076D+00,2.1485D+00,2.1942D+00,2.2338D+00,2.2678D+00,2.2959D+00,
+     &2.3193D+00,2.3386D+00,2.3539D+00,2.3660D+00,2.3738D+00,2.3789D+00,
+     &2.3799D+00,2.3197D+00,2.2776D+00,2.2186D+00,2.1426D+00,2.0495D+00,
+     &1.9397D+00,1.8097D+00,1.6583D+00,1.4814D+00,1.2736D+00,1.0200D+00,
+     &6.8880D-01,0.0000D+00,3.7157D+00,3.6699D+00,3.6275D+00,3.5842D+00,
+     &3.5420D+00,3.4972D+00,3.4542D+00,3.4107D+00,3.3678D+00,3.3234D+00,
+     &3.2774D+00,3.2332D+00,3.1870D+00,3.1600D+00,3.1297D+00,3.0952D+00,
+     &3.0595D+00,3.0231D+00,2.9850D+00,2.9534D+00,2.9160D+00,2.8740D+00,
+     &2.8312D+00,2.7872D+00,2.7408D+00,2.7014D+00,2.6568D+00,2.6045D+00/
+      DATA (XUVF_L(K),K=  913, 1026) /
+     &2.5481D+00,2.4895D+00,2.4315D+00,2.3817D+00,2.3283D+00,2.2697D+00,
+     &2.2106D+00,2.1591D+00,2.1128D+00,2.0807D+00,2.0578D+00,2.0477D+00,
+     &2.0583D+00,2.0796D+00,2.1122D+00,2.1433D+00,2.1777D+00,2.2069D+00,
+     &2.2299D+00,2.2483D+00,2.2618D+00,2.2718D+00,2.2778D+00,2.2803D+00,
+     &2.2797D+00,2.2749D+00,2.2668D+00,2.2019D+00,2.1468D+00,2.0761D+00,
+     &1.9902D+00,1.8883D+00,1.7711D+00,1.6370D+00,1.4847D+00,1.3103D+00,
+     &1.1091D+00,8.7047D-01,5.6856D-01,0.0000D+00,3.8327D+00,3.7877D+00,
+     &3.7424D+00,3.6981D+00,3.6540D+00,3.6083D+00,3.5637D+00,3.5184D+00,
+     &3.4753D+00,3.4271D+00,3.3800D+00,3.3325D+00,3.2860D+00,3.2564D+00,
+     &3.2258D+00,3.1893D+00,3.1519D+00,3.1135D+00,3.0738D+00,3.0389D+00,
+     &3.0010D+00,2.9580D+00,2.9118D+00,2.8654D+00,2.8178D+00,2.7758D+00,
+     &2.7289D+00,2.6738D+00,2.6146D+00,2.5530D+00,2.4924D+00,2.4399D+00,
+     &2.3845D+00,2.3213D+00,2.2605D+00,2.2040D+00,2.1540D+00,2.1186D+00,
+     &2.0908D+00,2.0749D+00,2.0772D+00,2.0914D+00,2.1145D+00,2.1368D+00,
+     &2.1613D+00,2.1804D+00,2.1941D+00,2.2037D+00,2.2088D+00,2.2101D+00,
+     &2.2083D+00,2.2031D+00,2.1942D+00,2.1826D+00,2.1665D+00,2.0987D+00,
+     &2.0321D+00,1.9516D+00,1.8571D+00,1.7497D+00,1.6281D+00,1.4923D+00,
+     &1.3406D+00,1.1697D+00,9.7635D-01,7.5209D-01,4.7638D-01,0.0000D+00,
+     &3.9497D+00,3.9009D+00,3.8555D+00,3.8080D+00,3.7630D+00,3.7163D+00/
+      DATA (XUVF_L(K),K= 1027, 1140) /
+     &3.6699D+00,3.6231D+00,3.5765D+00,3.5285D+00,3.4807D+00,3.4305D+00,
+     &3.3810D+00,3.3511D+00,3.3185D+00,3.2805D+00,3.2414D+00,3.2016D+00,
+     &3.1598D+00,3.1244D+00,3.0837D+00,3.0383D+00,2.9908D+00,2.9424D+00,
+     &2.8919D+00,2.8477D+00,2.7990D+00,2.7403D+00,2.6784D+00,2.6142D+00,
+     &2.5507D+00,2.4960D+00,2.4362D+00,2.3710D+00,2.3058D+00,2.2463D+00,
+     &2.1931D+00,2.1539D+00,2.1216D+00,2.0996D+00,2.0940D+00,2.1012D+00,
+     &2.1154D+00,2.1294D+00,2.1444D+00,2.1543D+00,2.1597D+00,2.1610D+00,
+     &2.1585D+00,2.1523D+00,2.1432D+00,2.1307D+00,2.1155D+00,2.0964D+00,
+     &2.0742D+00,2.0035D+00,1.9273D+00,1.8396D+00,1.7387D+00,1.6273D+00,
+     &1.5032D+00,1.3665D+00,1.2164D+00,1.0501D+00,8.6515D-01,6.5470D-01,
+     &4.0284D-01,0.0000D+00,4.0572D+00,4.0093D+00,3.9616D+00,3.9140D+00,
+     &3.8670D+00,3.8185D+00,3.7706D+00,3.7224D+00,3.6746D+00,3.6251D+00,
+     &3.5744D+00,3.5233D+00,3.4720D+00,3.4406D+00,3.4062D+00,3.3671D+00,
+     &3.3263D+00,3.2847D+00,3.2414D+00,3.2046D+00,3.1620D+00,3.1150D+00,
+     &3.0653D+00,3.0145D+00,2.9619D+00,2.9153D+00,2.8641D+00,2.8032D+00,
+     &2.7388D+00,2.6715D+00,2.6056D+00,2.5481D+00,2.4880D+00,2.4171D+00,
+     &2.3496D+00,2.2862D+00,2.2282D+00,2.1865D+00,2.1502D+00,2.1217D+00,
+     &2.1086D+00,2.1086D+00,2.1149D+00,2.1216D+00,2.1275D+00,2.1295D+00,
+     &2.1273D+00,2.1212D+00,2.1119D+00,2.0992D+00,2.0837D+00,2.0653D+00/
+      DATA (XUVF_L(K),K= 1141, 1254) /
+     &2.0442D+00,2.0194D+00,1.9912D+00,1.9193D+00,1.8359D+00,1.7412D+00,
+     &1.6366D+00,1.5214D+00,1.3956D+00,1.2594D+00,1.1115D+00,9.5033D-01,
+     &7.7356D-01,5.7585D-01,3.4506D-01,0.0000D+00,4.1710D+00,4.1201D+00,
+     &4.0712D+00,4.0213D+00,3.9730D+00,3.9228D+00,3.8734D+00,3.8233D+00,
+     &3.7726D+00,3.7217D+00,3.6699D+00,3.6160D+00,3.5640D+00,3.5311D+00,
+     &3.4960D+00,3.4549D+00,3.4121D+00,3.3689D+00,3.3237D+00,3.2848D+00,
+     &3.2425D+00,3.1917D+00,3.1399D+00,3.0866D+00,3.0319D+00,2.9838D+00,
+     &2.9306D+00,2.8668D+00,2.7992D+00,2.7291D+00,2.6605D+00,2.6007D+00,
+     &2.5375D+00,2.4631D+00,2.3919D+00,2.3261D+00,2.2643D+00,2.2183D+00,
+     &2.1772D+00,2.1426D+00,2.1222D+00,2.1155D+00,2.1135D+00,2.1130D+00,
+     &2.1102D+00,2.1039D+00,2.0941D+00,2.0815D+00,2.0652D+00,2.0466D+00,
+     &2.0251D+00,2.0014D+00,1.9746D+00,1.9450D+00,1.9116D+00,1.8381D+00,
+     &1.7481D+00,1.6484D+00,1.5404D+00,1.4225D+00,1.2963D+00,1.1611D+00,
+     &1.0161D+00,8.6047D-01,6.9193D-01,5.0691D-01,2.9581D-01,0.0000D+00,
+     &4.2754D+00,4.2238D+00,4.1737D+00,4.1233D+00,4.0740D+00,4.0219D+00,
+     &3.9713D+00,3.9196D+00,3.8675D+00,3.8160D+00,3.7618D+00,3.7060D+00,
+     &3.6510D+00,3.6173D+00,3.5808D+00,3.5380D+00,3.4941D+00,3.4493D+00,
+     &3.4027D+00,3.3623D+00,3.3163D+00,3.2647D+00,3.2114D+00,3.1563D+00,
+     &3.0989D+00,3.0489D+00,2.9929D+00,2.9263D+00,2.8563D+00,2.7837D+00/
+      DATA (XUVF_L(K),K= 1255, 1368) /
+     &2.7122D+00,2.6501D+00,2.5825D+00,2.5073D+00,2.4327D+00,2.3623D+00,
+     &2.2962D+00,2.2474D+00,2.2020D+00,2.1616D+00,2.1335D+00,2.1209D+00,
+     &2.1113D+00,2.1034D+00,2.0929D+00,2.0795D+00,2.0634D+00,2.0439D+00,
+     &2.0222D+00,1.9982D+00,1.9716D+00,1.9428D+00,1.9113D+00,1.8773D+00,
+     &1.8394D+00,1.7649D+00,1.6692D+00,1.5658D+00,1.4547D+00,1.3360D+00,
+     &1.2095D+00,1.0761D+00,9.3485D-01,7.8430D-01,6.2380D-01,4.5010D-01,
+     &2.5625D-01,0.0000D+00,4.3798D+00,4.3275D+00,4.2762D+00,4.2239D+00,
+     &4.1730D+00,4.1196D+00,4.0674D+00,4.0143D+00,3.9623D+00,3.9056D+00,
+     &3.8502D+00,3.7935D+00,3.7370D+00,3.7018D+00,3.6642D+00,3.6200D+00,
+     &3.5742D+00,3.5277D+00,3.4786D+00,3.4371D+00,3.3901D+00,3.3359D+00,
+     &3.2800D+00,3.2235D+00,3.1639D+00,3.1115D+00,3.0537D+00,2.9847D+00,
+     &2.9116D+00,2.8364D+00,2.7623D+00,2.6973D+00,2.6275D+00,2.5497D+00,
+     &2.4705D+00,2.3972D+00,2.3281D+00,2.2747D+00,2.2253D+00,2.1793D+00,
+     &2.1444D+00,2.1253D+00,2.1081D+00,2.0939D+00,2.0755D+00,2.0555D+00,
+     &2.0332D+00,2.0081D+00,1.9814D+00,1.9522D+00,1.9205D+00,1.8875D+00,
+     &1.8520D+00,1.8139D+00,1.7725D+00,1.6968D+00,1.5976D+00,1.4911D+00,
+     &1.3772D+00,1.2577D+00,1.1320D+00,1.0005D+00,8.6242D-01,7.1750D-01,
+     &5.6466D-01,4.0150D-01,2.2333D-01,0.0000D+00,4.4809D+00,4.4265D+00,
+     &4.3735D+00,4.3193D+00,4.2670D+00,4.2128D+00,4.1585D+00,4.1039D+00/
+      DATA (XUVF_L(K),K= 1369, 1482) /
+     &4.0509D+00,3.9928D+00,3.9351D+00,3.8769D+00,3.8180D+00,3.7821D+00,
+     &3.7434D+00,3.6974D+00,3.6501D+00,3.6019D+00,3.5513D+00,3.5093D+00,
+     &3.4594D+00,3.4035D+00,3.3456D+00,3.2870D+00,3.2250D+00,3.1715D+00,
+     &3.1110D+00,3.0396D+00,2.9639D+00,2.8863D+00,2.8096D+00,2.7429D+00,
+     &2.6702D+00,2.5884D+00,2.5068D+00,2.4296D+00,2.3560D+00,2.3003D+00,
+     &2.2464D+00,2.1951D+00,2.1530D+00,2.1283D+00,2.1045D+00,2.0843D+00,
+     &2.0591D+00,2.0328D+00,2.0047D+00,1.9749D+00,1.9429D+00,1.9096D+00,
+     &1.8740D+00,1.8369D+00,1.7978D+00,1.7560D+00,1.7116D+00,1.6360D+00,
+     &1.5322D+00,1.4233D+00,1.3084D+00,1.1885D+00,1.0637D+00,9.3449D-01,
+     &7.9961D-01,6.6020D-01,5.1453D-01,3.6103D-01,1.9641D-01,0.0000D+00,
+     &4.6169D+00,4.5608D+00,4.5060D+00,4.4504D+00,4.3960D+00,4.3395D+00,
+     &4.2837D+00,4.2262D+00,4.1710D+00,4.1106D+00,4.0517D+00,3.9908D+00,
+     &3.9300D+00,3.8920D+00,3.8509D+00,3.8030D+00,3.7538D+00,3.7035D+00,
+     &3.6494D+00,3.6055D+00,3.5556D+00,3.4966D+00,3.4351D+00,3.3738D+00,
+     &3.3090D+00,3.2518D+00,3.1888D+00,3.1141D+00,3.0348D+00,2.9533D+00,
+     &2.8730D+00,2.8020D+00,2.7264D+00,2.6400D+00,2.5551D+00,2.4732D+00,
+     &2.3941D+00,2.3329D+00,2.2742D+00,2.2147D+00,2.1644D+00,2.1317D+00,
+     &2.0986D+00,2.0700D+00,2.0363D+00,2.0021D+00,1.9668D+00,1.9299D+00,
+     &1.8922D+00,1.8532D+00,1.8125D+00,1.7704D+00,1.7270D+00,1.6809D+00/
+      DATA (XUVF_L(K),K= 1483, 1596) /
+     &1.6327D+00,1.5570D+00,1.4497D+00,1.3373D+00,1.2215D+00,1.1020D+00,
+     &9.7897D-01,8.5304D-01,7.2349D-01,5.9074D-01,4.5411D-01,3.1307D-01,
+     &1.6547D-01,0.0000D+00,4.7403D+00,4.6834D+00,4.6262D+00,4.5696D+00,
+     &4.5140D+00,4.4557D+00,4.3978D+00,4.3393D+00,4.2817D+00,4.2191D+00,
+     &4.1578D+00,4.0941D+00,4.0310D+00,3.9917D+00,3.9492D+00,3.8995D+00,
+     &3.8481D+00,3.7958D+00,3.7411D+00,3.6937D+00,3.6405D+00,3.5806D+00,
+     &3.5171D+00,3.4520D+00,3.3840D+00,3.3254D+00,3.2596D+00,3.1812D+00,
+     &3.0985D+00,3.0137D+00,2.9301D+00,2.8556D+00,2.7782D+00,2.6879D+00,
+     &2.5974D+00,2.5119D+00,2.4281D+00,2.3629D+00,2.2982D+00,2.2324D+00,
+     &2.1730D+00,2.1332D+00,2.0922D+00,2.0570D+00,2.0152D+00,1.9739D+00,
+     &1.9323D+00,1.8902D+00,1.8474D+00,1.8039D+00,1.7589D+00,1.7129D+00,
+     &1.6654D+00,1.6163D+00,1.5652D+00,1.4896D+00,1.3789D+00,1.2649D+00,
+     &1.1487D+00,1.0300D+00,9.0896D-01,7.8619D-01,6.6149D-01,5.3498D-01,
+     &4.0654D-01,2.7586D-01,1.4208D-01,0.0000D+00,4.8699D+00,4.8107D+00,
+     &4.7518D+00,4.6928D+00,4.6350D+00,4.5750D+00,4.5152D+00,4.4524D+00,
+     &4.3956D+00,4.3299D+00,4.2674D+00,4.2014D+00,4.1350D+00,4.0939D+00,
+     &4.0503D+00,3.9982D+00,3.9448D+00,3.8905D+00,3.8328D+00,3.7846D+00,
+     &3.7300D+00,3.6664D+00,3.5991D+00,3.5326D+00,3.4620D+00,3.3998D+00,
+     &3.3311D+00,3.2494D+00,3.1632D+00,3.0752D+00,2.9881D+00,2.9120D+00/
+      DATA (XUVF_L(K),K= 1597, 1710) /
+     &2.8299D+00,2.7339D+00,2.6398D+00,2.5493D+00,2.4611D+00,2.3911D+00,
+     &2.3215D+00,2.2482D+00,2.1812D+00,2.1342D+00,2.0854D+00,2.0427D+00,
+     &1.9932D+00,1.9453D+00,1.8978D+00,1.8504D+00,1.8030D+00,1.7545D+00,
+     &1.7059D+00,1.6565D+00,1.6056D+00,1.5535D+00,1.4989D+00,1.4245D+00,
+     &1.3108D+00,1.1959D+00,1.0798D+00,9.6219D-01,8.4358D-01,7.2422D-01,
+     &6.0451D-01,4.8425D-01,3.6380D-01,2.4286D-01,1.2189D-01,0.0000D+00,
+     &4.9964D+00,4.9356D+00,4.8755D+00,4.8147D+00,4.7550D+00,4.6935D+00,
+     &4.6315D+00,4.5697D+00,4.5062D+00,4.4406D+00,4.3752D+00,4.3061D+00,
+     &4.2380D+00,4.1962D+00,4.1500D+00,4.0963D+00,4.0405D+00,3.9832D+00,
+     &3.9245D+00,3.8728D+00,3.8172D+00,3.7504D+00,3.6811D+00,3.6108D+00,
+     &3.5381D+00,3.4734D+00,3.4018D+00,3.3164D+00,3.2269D+00,3.1352D+00,
+     &3.0446D+00,2.9657D+00,2.8794D+00,2.7800D+00,2.6821D+00,2.5867D+00,
+     &2.4930D+00,2.4184D+00,2.3433D+00,2.2634D+00,2.1877D+00,2.1342D+00,
+     &2.0772D+00,2.0279D+00,1.9713D+00,1.9172D+00,1.8642D+00,1.8120D+00,
+     &1.7600D+00,1.7076D+00,1.6553D+00,1.6027D+00,1.5491D+00,1.4938D+00,
+     &1.4374D+00,1.3637D+00,1.2481D+00,1.1325D+00,1.0166D+00,9.0047D-01,
+     &7.8428D-01,6.6889D-01,5.5381D-01,4.3953D-01,3.2652D-01,2.1461D-01,
+     &1.0498D-01,0.0000D+00,5.1134D+00,5.0511D+00,4.9886D+00,4.9273D+00,
+     &4.8660D+00,4.8016D+00,4.7382D+00,4.6744D+00,4.6106D+00,4.5420D+00/
+      DATA (XUVF_L(K),K= 1711, 1824) /
+     &4.4742D+00,4.4028D+00,4.3320D+00,4.2892D+00,4.2413D+00,4.1858D+00,
+     &4.1281D+00,4.0682D+00,4.0067D+00,3.9556D+00,3.8955D+00,3.8271D+00,
+     &3.7556D+00,3.6829D+00,3.6071D+00,3.5401D+00,3.4662D+00,3.3777D+00,
+     &3.2849D+00,3.1898D+00,3.0960D+00,3.0140D+00,2.9244D+00,2.8224D+00,
+     &2.7183D+00,2.6191D+00,2.5219D+00,2.4431D+00,2.3628D+00,2.2767D+00,
+     &2.1931D+00,2.1332D+00,2.0695D+00,2.0145D+00,1.9514D+00,1.8920D+00,
+     &1.8340D+00,1.7775D+00,1.7215D+00,1.6664D+00,1.6108D+00,1.5553D+00,
+     &1.4995D+00,1.4421D+00,1.3839D+00,1.3103D+00,1.1944D+00,1.0782D+00,
+     &9.6271D-01,8.4822D-01,7.3481D-01,6.2240D-01,5.1184D-01,4.0291D-01,
+     &2.9618D-01,1.9206D-01,9.1846D-02,0.0000D+00,5.2367D+00,5.1713D+00,
+     &5.1071D+00,5.0425D+00,4.9800D+00,4.9141D+00,4.8489D+00,4.7833D+00,
+     &4.7181D+00,4.6457D+00,4.5768D+00,4.5034D+00,4.4300D+00,4.3847D+00,
+     &4.3353D+00,4.2782D+00,4.2182D+00,4.1570D+00,4.0921D+00,4.0385D+00,
+     &3.9782D+00,3.9074D+00,3.8331D+00,3.7575D+00,3.6781D+00,3.6086D+00,
+     &3.5313D+00,3.4401D+00,3.3439D+00,3.2455D+00,3.1483D+00,3.0623D+00,
+     &2.9694D+00,2.8629D+00,2.7561D+00,2.6527D+00,2.5508D+00,2.4669D+00,
+     &2.3816D+00,2.2887D+00,2.1979D+00,2.1317D+00,2.0613D+00,2.0002D+00,
+     &1.9307D+00,1.8659D+00,1.8033D+00,1.7426D+00,1.6834D+00,1.6247D+00,
+     &1.5668D+00,1.5085D+00,1.4504D+00,1.3916D+00,1.3311D+00,1.2591D+00/
+      DATA (XUVF_L(K),K= 1825, 1836) /
+     &1.1415D+00,1.0256D+00,9.1107D-01,7.9840D-01,6.8736D-01,5.7902D-01,
+     &4.7260D-01,3.6895D-01,2.6838D-01,1.7161D-01,8.0264D-02,0.0000D+00/
+      DATA (XDVF_L(K),K=    1,  114) /
+     &1.4230D+00,1.4064D+00,1.3903D+00,1.3749D+00,1.3590D+00,1.3424D+00,
+     &1.3271D+00,1.3114D+00,1.2962D+00,1.2803D+00,1.2647D+00,1.2492D+00,
+     &1.2340D+00,1.2246D+00,1.2155D+00,1.2044D+00,1.1927D+00,1.1814D+00,
+     &1.1695D+00,1.1589D+00,1.1479D+00,1.1347D+00,1.1214D+00,1.1080D+00,
+     &1.0944D+00,1.0824D+00,1.0700D+00,1.0544D+00,1.0371D+00,1.0188D+00,
+     &9.9884D-01,9.8287D-01,9.6563D-01,9.4645D-01,9.2847D-01,9.1313D-01,
+     &9.0246D-01,8.9955D-01,9.0461D-01,9.2737D-01,9.7648D-01,1.0343D+00,
+     &1.1168D+00,1.2030D+00,1.3129D+00,1.4240D+00,1.5357D+00,1.6492D+00,
+     &1.7643D+00,1.8818D+00,2.0016D+00,2.1253D+00,2.2535D+00,2.3853D+00,
+     &2.5225D+00,2.5620D+00,2.7906D+00,3.0230D+00,3.2574D+00,3.4983D+00,
+     &3.7459D+00,4.0062D+00,4.2803D+00,4.5790D+00,4.9150D+00,5.3263D+00,
+     &5.9228D+00,0.0000D+00,1.4698D+00,1.4526D+00,1.4360D+00,1.4199D+00,
+     &1.4030D+00,1.3864D+00,1.3702D+00,1.3542D+00,1.3386D+00,1.3221D+00,
+     &1.3059D+00,1.2896D+00,1.2740D+00,1.2644D+00,1.2544D+00,1.2425D+00,
+     &1.2309D+00,1.2185D+00,1.2061D+00,1.1953D+00,1.1836D+00,1.1697D+00,
+     &1.1558D+00,1.1417D+00,1.1275D+00,1.1154D+00,1.1011D+00,1.0844D+00,
+     &1.0663D+00,1.0471D+00,1.0261D+00,1.0092D+00,9.9133D-01,9.7103D-01,
+     &9.5184D-01,9.3560D-01,9.2380D-01,9.1922D-01,9.2378D-01,9.4563D-01,
+     &9.9235D-01,1.0474D+00,1.1262D+00,1.2078D+00,1.3110D+00,1.4146D+00/
+      DATA (XDVF_L(K),K=  115,  228) /
+     &1.5192D+00,1.6241D+00,1.7298D+00,1.8375D+00,1.9471D+00,2.0592D+00,
+     &2.1741D+00,2.2925D+00,2.4144D+00,2.4425D+00,2.6407D+00,2.8375D+00,
+     &3.0361D+00,3.2345D+00,3.4343D+00,3.6388D+00,3.8488D+00,4.0682D+00,
+     &4.3043D+00,4.5737D+00,4.9280D+00,0.0000D+00,1.5226D+00,1.5047D+00,
+     &1.4874D+00,1.4702D+00,1.4530D+00,1.4363D+00,1.4193D+00,1.4023D+00,
+     &1.3860D+00,1.3690D+00,1.3520D+00,1.3351D+00,1.3190D+00,1.3083D+00,
+     &1.2983D+00,1.2858D+00,1.2733D+00,1.2606D+00,1.2476D+00,1.2362D+00,
+     &1.2237D+00,1.2092D+00,1.1943D+00,1.1795D+00,1.1645D+00,1.1509D+00,
+     &1.1365D+00,1.1185D+00,1.0994D+00,1.0784D+00,1.0566D+00,1.0388D+00,
+     &1.0195D+00,9.9801D-01,9.7765D-01,9.6019D-01,9.4712D-01,9.4158D-01,
+     &9.4524D-01,9.6454D-01,1.0088D+00,1.0604D+00,1.1346D+00,1.2112D+00,
+     &1.3076D+00,1.4038D+00,1.4995D+00,1.5957D+00,1.6918D+00,1.7888D+00,
+     &1.8877D+00,1.9877D+00,2.0896D+00,2.1940D+00,2.2999D+00,2.3168D+00,
+     &2.4844D+00,2.6497D+00,2.8098D+00,2.9678D+00,3.1219D+00,3.2743D+00,
+     &3.4260D+00,3.5742D+00,3.7237D+00,3.8717D+00,4.0300D+00,0.0000D+00,
+     &1.5849D+00,1.5662D+00,1.5482D+00,1.5298D+00,1.5130D+00,1.4944D+00,
+     &1.4769D+00,1.4593D+00,1.4423D+00,1.4243D+00,1.4066D+00,1.3894D+00,
+     &1.3720D+00,1.3607D+00,1.3499D+00,1.3366D+00,1.3237D+00,1.3101D+00,
+     &1.2963D+00,1.2840D+00,1.2709D+00,1.2553D+00,1.2396D+00,1.2232D+00/
+      DATA (XDVF_L(K),K=  229,  342) /
+     &1.2075D+00,1.1932D+00,1.1776D+00,1.1584D+00,1.1377D+00,1.1152D+00,
+     &1.0922D+00,1.0729D+00,1.0524D+00,1.0294D+00,1.0074D+00,9.8843D-01,
+     &9.7377D-01,9.6751D-01,9.6901D-01,9.8606D-01,1.0264D+00,1.0745D+00,
+     &1.1435D+00,1.2136D+00,1.3018D+00,1.3894D+00,1.4758D+00,1.5619D+00,
+     &1.6474D+00,1.7332D+00,1.8194D+00,1.9063D+00,1.9941D+00,2.0832D+00,
+     &2.1725D+00,2.1789D+00,2.3166D+00,2.4460D+00,2.5708D+00,2.6884D+00,
+     &2.7987D+00,2.9025D+00,2.9974D+00,3.0823D+00,3.1538D+00,3.2013D+00,
+     &3.2043D+00,0.0000D+00,1.6586D+00,1.6391D+00,1.6202D+00,1.6014D+00,
+     &1.5830D+00,1.5638D+00,1.5457D+00,1.5267D+00,1.5087D+00,1.4899D+00,
+     &1.4711D+00,1.4517D+00,1.4340D+00,1.4224D+00,1.4107D+00,1.3972D+00,
+     &1.3827D+00,1.3684D+00,1.3535D+00,1.3404D+00,1.3263D+00,1.3096D+00,
+     &1.2927D+00,1.2758D+00,1.2575D+00,1.2422D+00,1.2250D+00,1.2046D+00,
+     &1.1821D+00,1.1579D+00,1.1331D+00,1.1127D+00,1.0905D+00,1.0655D+00,
+     &1.0415D+00,1.0207D+00,1.0042D+00,9.9612D-01,9.9507D-01,1.0089D+00,
+     &1.0451D+00,1.0887D+00,1.1514D+00,1.2146D+00,1.2936D+00,1.3711D+00,
+     &1.4469D+00,1.5220D+00,1.5960D+00,1.6694D+00,1.7428D+00,1.8159D+00,
+     &1.8894D+00,1.9620D+00,2.0344D+00,2.0313D+00,2.1357D+00,2.2333D+00,
+     &2.3215D+00,2.4009D+00,2.4706D+00,2.5292D+00,2.5750D+00,2.6036D+00,
+     &2.6096D+00,2.5783D+00,2.4673D+00,0.0000D+00,1.7269D+00,1.7065D+00/
+      DATA (XDVF_L(K),K=  343,  456) /
+     &1.6866D+00,1.6676D+00,1.6480D+00,1.6279D+00,1.6089D+00,1.5891D+00,
+     &1.5701D+00,1.5502D+00,1.5307D+00,1.5113D+00,1.4910D+00,1.4799D+00,
+     &1.4673D+00,1.4526D+00,1.4373D+00,1.4221D+00,1.4060D+00,1.3922D+00,
+     &1.3771D+00,1.3596D+00,1.3414D+00,1.3234D+00,1.3045D+00,1.2879D+00,
+     &1.2689D+00,1.2468D+00,1.2227D+00,1.1966D+00,1.1706D+00,1.1487D+00,
+     &1.1248D+00,1.0980D+00,1.0724D+00,1.0495D+00,1.0310D+00,1.0212D+00,
+     &1.0181D+00,1.0291D+00,1.0609D+00,1.1002D+00,1.1563D+00,1.2136D+00,
+     &1.2840D+00,1.3528D+00,1.4201D+00,1.4854D+00,1.5492D+00,1.6125D+00,
+     &1.6751D+00,1.7368D+00,1.7981D+00,1.8579D+00,1.9157D+00,1.9057D+00,
+     &1.9875D+00,2.0577D+00,2.1190D+00,2.1700D+00,2.2094D+00,2.2370D+00,
+     &2.2484D+00,2.2403D+00,2.2047D+00,2.1261D+00,1.9567D+00,0.0000D+00,
+     &1.8047D+00,1.7833D+00,1.7626D+00,1.7418D+00,1.7220D+00,1.7009D+00,
+     &1.6810D+00,1.6603D+00,1.6403D+00,1.6193D+00,1.5986D+00,1.5775D+00,
+     &1.5570D+00,1.5441D+00,1.5309D+00,1.5156D+00,1.4991D+00,1.4828D+00,
+     &1.4658D+00,1.4510D+00,1.4350D+00,1.4160D+00,1.3966D+00,1.3772D+00,
+     &1.3565D+00,1.3386D+00,1.3184D+00,1.2942D+00,1.2680D+00,1.2404D+00,
+     &1.2125D+00,1.1887D+00,1.1631D+00,1.1342D+00,1.1064D+00,1.0813D+00,
+     &1.0608D+00,1.0480D+00,1.0426D+00,1.0500D+00,1.0774D+00,1.1111D+00,
+     &1.1608D+00,1.2107D+00,1.2719D+00,1.3315D+00,1.3886D+00,1.4445D+00/
+      DATA (XDVF_L(K),K=  457,  570) /
+     &1.4984D+00,1.5505D+00,1.6020D+00,1.6524D+00,1.7009D+00,1.7480D+00,
+     &1.7926D+00,1.7763D+00,1.8327D+00,1.8794D+00,1.9154D+00,1.9405D+00,
+     &1.9531D+00,1.9537D+00,1.9362D+00,1.8986D+00,1.8325D+00,1.7203D+00,
+     &1.5163D+00,0.0000D+00,1.8755D+00,1.8533D+00,1.8314D+00,1.8106D+00,
+     &1.7890D+00,1.7672D+00,1.7464D+00,1.7248D+00,1.7038D+00,1.6817D+00,
+     &1.6601D+00,1.6385D+00,1.6160D+00,1.6033D+00,1.5889D+00,1.5721D+00,
+     &1.5552D+00,1.5380D+00,1.5199D+00,1.5042D+00,1.4871D+00,1.4670D+00,
+     &1.4463D+00,1.4249D+00,1.4036D+00,1.3843D+00,1.3630D+00,1.3364D+00,
+     &1.3086D+00,1.2791D+00,1.2500D+00,1.2245D+00,1.1971D+00,1.1662D+00,
+     &1.1361D+00,1.1090D+00,1.0858D+00,1.0721D+00,1.0641D+00,1.0676D+00,
+     &1.0898D+00,1.1195D+00,1.1627D+00,1.2069D+00,1.2603D+00,1.3118D+00,
+     &1.3607D+00,1.4079D+00,1.4534D+00,1.4968D+00,1.5392D+00,1.5794D+00,
+     &1.6181D+00,1.6552D+00,1.6888D+00,1.6690D+00,1.7073D+00,1.7353D+00,
+     &1.7530D+00,1.7595D+00,1.7531D+00,1.7338D+00,1.6988D+00,1.6428D+00,
+     &1.5583D+00,1.4293D+00,1.2136D+00,0.0000D+00,1.9470D+00,1.9238D+00,
+     &1.9021D+00,1.8782D+00,1.8570D+00,1.8343D+00,1.8123D+00,1.7898D+00,
+     &1.7680D+00,1.7449D+00,1.7222D+00,1.6994D+00,1.6760D+00,1.6624D+00,
+     &1.6469D+00,1.6299D+00,1.6118D+00,1.5933D+00,1.5742D+00,1.5574D+00,
+     &1.5392D+00,1.5179D+00,1.4955D+00,1.4738D+00,1.4506D+00,1.4300D+00/
+      DATA (XDVF_L(K),K=  571,  684) /
+     &1.4069D+00,1.3792D+00,1.3492D+00,1.3178D+00,1.2868D+00,1.2597D+00,
+     &1.2307D+00,1.1976D+00,1.1654D+00,1.1363D+00,1.1108D+00,1.0945D+00,
+     &1.0840D+00,1.0845D+00,1.1017D+00,1.1268D+00,1.1637D+00,1.2016D+00,
+     &1.2473D+00,1.2910D+00,1.3324D+00,1.3719D+00,1.4090D+00,1.4450D+00,
+     &1.4784D+00,1.5109D+00,1.5404D+00,1.5681D+00,1.5925D+00,1.5689D+00,
+     &1.5916D+00,1.6043D+00,1.6067D+00,1.5981D+00,1.5779D+00,1.5449D+00,
+     &1.4949D+00,1.4262D+00,1.3303D+00,1.1932D+00,9.7657D-01,0.0000D+00,
+     &2.0122D+00,1.9881D+00,1.9640D+00,1.9418D+00,1.9190D+00,1.8954D+00,
+     &1.8721D+00,1.8492D+00,1.8262D+00,1.8024D+00,1.7784D+00,1.7550D+00,
+     &1.7300D+00,1.7157D+00,1.6999D+00,1.6818D+00,1.6627D+00,1.6435D+00,
+     &1.6233D+00,1.6058D+00,1.5866D+00,1.5643D+00,1.5417D+00,1.5178D+00,
+     &1.4926D+00,1.4705D+00,1.4465D+00,1.4174D+00,1.3856D+00,1.3527D+00,
+     &1.3198D+00,1.2914D+00,1.2605D+00,1.2257D+00,1.1915D+00,1.1601D+00,
+     &1.1326D+00,1.1142D+00,1.1016D+00,1.0982D+00,1.1114D+00,1.1321D+00,
+     &1.1637D+00,1.1958D+00,1.2352D+00,1.2722D+00,1.3071D+00,1.3397D+00,
+     &1.3704D+00,1.3995D+00,1.4267D+00,1.4516D+00,1.4736D+00,1.4942D+00,
+     &1.5100D+00,1.4848D+00,1.4955D+00,1.4964D+00,1.4873D+00,1.4675D+00,
+     &1.4366D+00,1.3933D+00,1.3349D+00,1.2585D+00,1.1565D+00,1.0171D+00,
+     &8.0601D-01,0.0000D+00,2.0789D+00,2.0539D+00,2.0294D+00,2.0053D+00/
+      DATA (XDVF_L(K),K=  685,  798) /
+     &1.9820D+00,1.9581D+00,1.9336D+00,1.9096D+00,1.8860D+00,1.8609D+00,
+     &1.8367D+00,1.8106D+00,1.7860D+00,1.7706D+00,1.7543D+00,1.7350D+00,
+     &1.7150D+00,1.6945D+00,1.6735D+00,1.6550D+00,1.6349D+00,1.6112D+00,
+     &1.5864D+00,1.5617D+00,1.5356D+00,1.5128D+00,1.4868D+00,1.4555D+00,
+     &1.4224D+00,1.3876D+00,1.3532D+00,1.3231D+00,1.2904D+00,1.2536D+00,
+     &1.2173D+00,1.1838D+00,1.1545D+00,1.1338D+00,1.1185D+00,1.1113D+00,
+     &1.1199D+00,1.1362D+00,1.1627D+00,1.1895D+00,1.2222D+00,1.2529D+00,
+     &1.2813D+00,1.3080D+00,1.3324D+00,1.3546D+00,1.3756D+00,1.3938D+00,
+     &1.4103D+00,1.4232D+00,1.4319D+00,1.4055D+00,1.4052D+00,1.3959D+00,
+     &1.3768D+00,1.3480D+00,1.3084D+00,1.2576D+00,1.1928D+00,1.1110D+00,
+     &1.0066D+00,8.6804D-01,6.6615D-01,0.0000D+00,2.1434D+00,2.1178D+00,
+     &2.0930D+00,2.0676D+00,2.0440D+00,2.0184D+00,1.9935D+00,1.9686D+00,
+     &1.9439D+00,1.9179D+00,1.8915D+00,1.8663D+00,1.8400D+00,1.8239D+00,
+     &1.8067D+00,1.7863D+00,1.7654D+00,1.7440D+00,1.7219D+00,1.7025D+00,
+     &1.6814D+00,1.6565D+00,1.6311D+00,1.6045D+00,1.5766D+00,1.5526D+00,
+     &1.5250D+00,1.4925D+00,1.4574D+00,1.4213D+00,1.3849D+00,1.3532D+00,
+     &1.3191D+00,1.2800D+00,1.2418D+00,1.2062D+00,1.1743D+00,1.1517D+00,
+     &1.1338D+00,1.1237D+00,1.1272D+00,1.1399D+00,1.1608D+00,1.1828D+00,
+     &1.2092D+00,1.2341D+00,1.2570D+00,1.2774D+00,1.2962D+00,1.3135D+00/
+      DATA (XDVF_L(K),K=  799,  912) /
+     &1.3280D+00,1.3406D+00,1.3511D+00,1.3588D+00,1.3613D+00,1.3335D+00,
+     &1.3246D+00,1.3067D+00,1.2801D+00,1.2441D+00,1.1985D+00,1.1418D+00,
+     &1.0724D+00,9.8806D-01,8.8293D-01,7.4746D-01,5.5665D-01,0.0000D+00,
+     &2.2035D+00,2.1769D+00,2.1514D+00,2.1259D+00,2.1000D+00,2.0743D+00,
+     &2.0488D+00,2.0226D+00,1.9973D+00,1.9702D+00,1.9428D+00,1.9166D+00,
+     &1.8890D+00,1.8729D+00,1.8548D+00,1.8337D+00,1.8116D+00,1.7895D+00,
+     &1.7662D+00,1.7461D+00,1.7239D+00,1.6980D+00,1.6714D+00,1.6436D+00,
+     &1.6146D+00,1.5889D+00,1.5604D+00,1.5266D+00,1.4895D+00,1.4515D+00,
+     &1.4138D+00,1.3806D+00,1.3448D+00,1.3040D+00,1.2638D+00,1.2261D+00,
+     &1.1920D+00,1.1669D+00,1.1469D+00,1.1341D+00,1.1335D+00,1.1420D+00,
+     &1.1583D+00,1.1760D+00,1.1971D+00,1.2168D+00,1.2343D+00,1.2501D+00,
+     &1.2640D+00,1.2762D+00,1.2866D+00,1.2942D+00,1.2996D+00,1.3020D+00,
+     &1.3003D+00,1.2725D+00,1.2557D+00,1.2312D+00,1.1982D+00,1.1569D+00,
+     &1.1068D+00,1.0465D+00,9.7460D-01,8.8884D-01,7.8459D-01,6.5333D-01,
+     &4.7359D-01,0.0000D+00,2.2800D+00,2.2524D+00,2.2256D+00,2.1987D+00,
+     &2.1730D+00,2.1459D+00,2.1192D+00,2.0922D+00,2.0656D+00,2.0374D+00,
+     &2.0100D+00,1.9802D+00,1.9520D+00,1.9346D+00,1.9156D+00,1.8937D+00,
+     &1.8706D+00,1.8475D+00,1.8228D+00,1.8017D+00,1.7783D+00,1.7509D+00,
+     &1.7221D+00,1.6937D+00,1.6627D+00,1.6354D+00,1.6050D+00,1.5688D+00/
+      DATA (XDVF_L(K),K=  913, 1026) /
+     &1.5301D+00,1.4898D+00,1.4503D+00,1.4150D+00,1.3772D+00,1.3339D+00,
+     &1.2911D+00,1.2510D+00,1.2138D+00,1.1866D+00,1.1637D+00,1.1458D+00,
+     &1.1403D+00,1.1441D+00,1.1548D+00,1.1669D+00,1.1817D+00,1.1950D+00,
+     &1.2065D+00,1.2163D+00,1.2249D+00,1.2313D+00,1.2355D+00,1.2379D+00,
+     &1.2379D+00,1.2348D+00,1.2275D+00,1.1987D+00,1.1744D+00,1.1427D+00,
+     &1.1035D+00,1.0570D+00,1.0018D+00,9.3862D-01,8.6494D-01,7.7913D-01,
+     &6.7747D-01,5.5266D-01,3.8741D-01,0.0000D+00,2.3524D+00,2.3243D+00,
+     &2.2963D+00,2.2689D+00,2.2420D+00,2.2137D+00,2.1858D+00,2.1579D+00,
+     &2.1301D+00,2.1011D+00,2.0718D+00,2.0424D+00,2.0120D+00,1.9937D+00,
+     &1.9743D+00,1.9509D+00,1.9267D+00,1.9020D+00,1.8763D+00,1.8541D+00,
+     &1.8295D+00,1.8006D+00,1.7713D+00,1.7402D+00,1.7077D+00,1.6794D+00,
+     &1.6475D+00,1.6087D+00,1.5679D+00,1.5259D+00,1.4840D+00,1.4470D+00,
+     &1.4072D+00,1.3615D+00,1.3163D+00,1.2738D+00,1.2336D+00,1.2045D+00,
+     &1.1783D+00,1.1563D+00,1.1459D+00,1.1457D+00,1.1504D+00,1.1577D+00,
+     &1.1662D+00,1.1742D+00,1.1807D+00,1.1857D+00,1.1886D+00,1.1902D+00,
+     &1.1899D+00,1.1878D+00,1.1830D+00,1.1751D+00,1.1633D+00,1.1345D+00,
+     &1.1039D+00,1.0667D+00,1.0230D+00,9.7228D-01,9.1417D-01,8.4905D-01,
+     &7.7478D-01,6.9004D-01,5.9155D-01,4.7371D-01,3.2191D-01,0.0000D+00,
+     &2.4233D+00,2.3947D+00,2.3653D+00,2.3365D+00,2.3090D+00,2.2800D+00/
+      DATA (XDVF_L(K),K= 1027, 1140) /
+     &2.2512D+00,2.2220D+00,2.1934D+00,2.1628D+00,2.1319D+00,2.1007D+00,
+     &2.0700D+00,2.0512D+00,2.0301D+00,2.0057D+00,1.9809D+00,1.9549D+00,
+     &1.9281D+00,1.9049D+00,1.8791D+00,1.8497D+00,1.8175D+00,1.7854D+00,
+     &1.7507D+00,1.7209D+00,1.6878D+00,1.6474D+00,1.6047D+00,1.5603D+00,
+     &1.5164D+00,1.4777D+00,1.4358D+00,1.3879D+00,1.3403D+00,1.2952D+00,
+     &1.2523D+00,1.2206D+00,1.1913D+00,1.1661D+00,1.1505D+00,1.1462D+00,
+     &1.1460D+00,1.1481D+00,1.1518D+00,1.1545D+00,1.1559D+00,1.1562D+00,
+     &1.1548D+00,1.1523D+00,1.1478D+00,1.1414D+00,1.1331D+00,1.1212D+00,
+     &1.1055D+00,1.0763D+00,1.0405D+00,9.9877D-01,9.5130D-01,8.9815D-01,
+     &8.3813D-01,7.7188D-01,6.9792D-01,6.1492D-01,5.2020D-01,4.0920D-01,
+     &2.7020D-01,0.0000D+00,2.4906D+00,2.4607D+00,2.4307D+00,2.4014D+00,
+     &2.3730D+00,2.3427D+00,2.3127D+00,2.2828D+00,2.2528D+00,2.2213D+00,
+     &2.1903D+00,2.1577D+00,2.1250D+00,2.1053D+00,2.0839D+00,2.0583D+00,
+     &2.0318D+00,2.0051D+00,1.9771D+00,1.9527D+00,1.9259D+00,1.8935D+00,
+     &1.8607D+00,1.8269D+00,1.7917D+00,1.7606D+00,1.7253D+00,1.6833D+00,
+     &1.6387D+00,1.5925D+00,1.5465D+00,1.5061D+00,1.4624D+00,1.4121D+00,
+     &1.3623D+00,1.3152D+00,1.2700D+00,1.2349D+00,1.2036D+00,1.1745D+00,
+     &1.1544D+00,1.1457D+00,1.1410D+00,1.1389D+00,1.1378D+00,1.1357D+00,
+     &1.1332D+00,1.1290D+00,1.1244D+00,1.1176D+00,1.1099D+00,1.0996D+00/
+      DATA (XDVF_L(K),K= 1141, 1254) /
+     &1.0875D+00,1.0729D+00,1.0538D+00,1.0249D+00,9.8511D-01,9.3994D-01,
+     &8.8948D-01,8.3410D-01,7.7332D-01,7.0681D-01,6.3377D-01,5.5280D-01,
+     &4.6214D-01,3.5755D-01,2.2965D-01,0.0000D+00,2.5589D+00,2.5291D+00,
+     &2.4979D+00,2.4676D+00,2.4370D+00,2.4060D+00,2.3753D+00,2.3443D+00,
+     &2.3135D+00,2.2809D+00,2.2486D+00,2.2146D+00,2.1810D+00,2.1602D+00,
+     &2.1376D+00,2.1114D+00,2.0841D+00,2.0557D+00,2.0265D+00,2.0011D+00,
+     &1.9730D+00,1.9392D+00,1.9055D+00,1.8697D+00,1.8327D+00,1.8003D+00,
+     &1.7635D+00,1.7197D+00,1.6727D+00,1.6246D+00,1.5770D+00,1.5346D+00,
+     &1.4890D+00,1.4363D+00,1.3841D+00,1.3341D+00,1.2867D+00,1.2492D+00,
+     &1.2151D+00,1.1824D+00,1.1578D+00,1.1451D+00,1.1356D+00,1.1298D+00,
+     &1.1233D+00,1.1169D+00,1.1105D+00,1.1027D+00,1.0940D+00,1.0840D+00,
+     &1.0726D+00,1.0592D+00,1.0444D+00,1.0265D+00,1.0045D+00,9.7613D-01,
+     &9.3249D-01,8.8451D-01,8.3193D-01,7.7510D-01,7.1373D-01,6.4749D-01,
+     &5.7554D-01,4.9725D-01,4.1072D-01,3.1254D-01,1.9551D-01,0.0000D+00,
+     &2.6244D+00,2.5927D+00,2.5615D+00,2.5299D+00,2.4990D+00,2.4671D+00,
+     &2.4356D+00,2.4034D+00,2.3717D+00,2.3377D+00,2.3034D+00,2.2689D+00,
+     &2.2340D+00,2.2126D+00,2.1892D+00,2.1616D+00,2.1331D+00,2.1040D+00,
+     &2.0736D+00,2.0471D+00,2.0180D+00,1.9830D+00,1.9472D+00,1.9112D+00,
+     &1.8717D+00,1.8375D+00,1.7996D+00,1.7538D+00,1.7053D+00,1.6548D+00/
+      DATA (XDVF_L(K),K= 1255, 1368) /
+     &1.6053D+00,1.5612D+00,1.5138D+00,1.4590D+00,1.4045D+00,1.3516D+00,
+     &1.3023D+00,1.2626D+00,1.2251D+00,1.1889D+00,1.1601D+00,1.1441D+00,
+     &1.1302D+00,1.1201D+00,1.1098D+00,1.0996D+00,1.0888D+00,1.0782D+00,
+     &1.0659D+00,1.0531D+00,1.0388D+00,1.0228D+00,1.0047D+00,9.8480D-01,
+     &9.6040D-01,9.3234D-01,8.8589D-01,8.3563D-01,7.8162D-01,7.2366D-01,
+     &6.6215D-01,5.9658D-01,5.2617D-01,4.5043D-01,3.6787D-01,2.7575D-01,
+     &1.6826D-01,0.0000D+00,2.6886D+00,2.6564D+00,2.6234D+00,2.5908D+00,
+     &2.5600D+00,2.5268D+00,2.4943D+00,2.4612D+00,2.4283D+00,2.3924D+00,
+     &2.3582D+00,2.3219D+00,2.2860D+00,2.2642D+00,2.2394D+00,2.2113D+00,
+     &2.1817D+00,2.1512D+00,2.1198D+00,2.0920D+00,2.0618D+00,2.0268D+00,
+     &1.9890D+00,1.9503D+00,1.9098D+00,1.8739D+00,1.8343D+00,1.7867D+00,
+     &1.7365D+00,1.6843D+00,1.6329D+00,1.5870D+00,1.5377D+00,1.4807D+00,
+     &1.4239D+00,1.3692D+00,1.3169D+00,1.2751D+00,1.2350D+00,1.1954D+00,
+     &1.1624D+00,1.1425D+00,1.1247D+00,1.1110D+00,1.0963D+00,1.0827D+00,
+     &1.0687D+00,1.0547D+00,1.0396D+00,1.0240D+00,1.0070D+00,9.8853D-01,
+     &9.6834D-01,9.4569D-01,9.1962D-01,8.9220D-01,8.4321D-01,7.9105D-01,
+     &7.3592D-01,6.7777D-01,6.1620D-01,5.5143D-01,4.8272D-01,4.0962D-01,
+     &3.3102D-01,2.4455D-01,1.4574D-01,0.0000D+00,2.7496D+00,2.7153D+00,
+     &2.6835D+00,2.6504D+00,2.6180D+00,2.5834D+00,2.5502D+00,2.5161D+00/
+      DATA (XDVF_L(K),K= 1369, 1482) /
+     &2.4824D+00,2.4466D+00,2.4095D+00,2.3736D+00,2.3360D+00,2.3124D+00,
+     &2.2875D+00,2.2580D+00,2.2274D+00,2.1960D+00,2.1631D+00,2.1347D+00,
+     &2.1032D+00,2.0670D+00,2.0277D+00,1.9882D+00,1.9458D+00,1.9086D+00,
+     &1.8675D+00,1.8179D+00,1.7658D+00,1.7122D+00,1.6586D+00,1.6112D+00,
+     &1.5600D+00,1.5010D+00,1.4420D+00,1.3855D+00,1.3294D+00,1.2858D+00,
+     &1.2435D+00,1.2006D+00,1.1641D+00,1.1410D+00,1.1193D+00,1.1023D+00,
+     &1.0837D+00,1.0664D+00,1.0496D+00,1.0329D+00,1.0157D+00,9.9745D-01,
+     &9.7803D-01,9.5735D-01,9.3539D-01,9.1075D-01,8.8302D-01,8.5608D-01,
+     &8.0509D-01,7.5168D-01,6.9580D-01,6.3743D-01,5.7619D-01,5.1233D-01,
+     &4.4547D-01,3.7496D-01,2.9995D-01,2.1862D-01,1.2745D-01,0.0000D+00,
+     &2.8331D+00,2.7978D+00,2.7648D+00,2.7299D+00,2.6960D+00,2.6609D+00,
+     &2.6263D+00,2.5910D+00,2.5561D+00,2.5197D+00,2.4802D+00,2.4424D+00,
+     &2.4030D+00,2.3791D+00,2.3526D+00,2.3216D+00,2.2897D+00,2.2570D+00,
+     &2.2225D+00,2.1925D+00,2.1595D+00,2.1199D+00,2.0799D+00,2.0383D+00,
+     &1.9938D+00,1.9551D+00,1.9121D+00,1.8601D+00,1.8054D+00,1.7494D+00,
+     &1.6932D+00,1.6435D+00,1.5898D+00,1.5280D+00,1.4659D+00,1.4056D+00,
+     &1.3471D+00,1.3010D+00,1.2550D+00,1.2078D+00,1.1652D+00,1.1383D+00,
+     &1.1114D+00,1.0902D+00,1.0668D+00,1.0451D+00,1.0248D+00,1.0039D+00,
+     &9.8353D-01,9.6205D-01,9.4076D-01,9.1705D-01,8.9229D-01,8.6577D-01/
+      DATA (XDVF_L(K),K= 1483, 1596) /
+     &8.3604D-01,8.0985D-01,7.5687D-01,7.0190D-01,6.4516D-01,5.8700D-01,
+     &5.2660D-01,4.6452D-01,3.9995D-01,3.3310D-01,2.6289D-01,1.8826D-01,
+     &1.0655D-01,0.0000D+00,2.9096D+00,2.8732D+00,2.8390D+00,2.8027D+00,
+     &2.7690D+00,2.7325D+00,2.6961D+00,2.6597D+00,2.6231D+00,2.5833D+00,
+     &2.5456D+00,2.5047D+00,2.4650D+00,2.4391D+00,2.4120D+00,2.3799D+00,
+     &2.3462D+00,2.3123D+00,2.2763D+00,2.2451D+00,2.2108D+00,2.1692D+00,
+     &2.1276D+00,2.0835D+00,2.0378D+00,1.9974D+00,1.9525D+00,1.8983D+00,
+     &1.8413D+00,1.7827D+00,1.7243D+00,1.6725D+00,1.6166D+00,1.5520D+00,
+     &1.4872D+00,1.4244D+00,1.3627D+00,1.3136D+00,1.2649D+00,1.2130D+00,
+     &1.1663D+00,1.1352D+00,1.1040D+00,1.0787D+00,1.0514D+00,1.0264D+00,
+     &1.0021D+00,9.7883D-01,9.5548D-01,9.3171D-01,9.0763D-01,8.8283D-01,
+     &8.5596D-01,8.2732D-01,7.9601D-01,7.7056D-01,7.1598D-01,6.6027D-01,
+     &6.0340D-01,5.4514D-01,4.8601D-01,4.2556D-01,3.6359D-01,2.9984D-01,
+     &2.3396D-01,1.6486D-01,9.0844D-02,0.0000D+00,2.9880D+00,2.9510D+00,
+     &2.9150D+00,2.8782D+00,2.8430D+00,2.8048D+00,2.7677D+00,2.7301D+00,
+     &2.6924D+00,2.6517D+00,2.6110D+00,2.5696D+00,2.5280D+00,2.5017D+00,
+     &2.4728D+00,2.4393D+00,2.4042D+00,2.3687D+00,2.3313D+00,2.2988D+00,
+     &2.2631D+00,2.2204D+00,2.1768D+00,2.1312D+00,2.0828D+00,2.0405D+00,
+     &1.9928D+00,1.9364D+00,1.8772D+00,1.8164D+00,1.7558D+00,1.7018D+00/
+      DATA (XDVF_L(K),K= 1597, 1710) /
+     &1.6434D+00,1.5762D+00,1.5084D+00,1.4432D+00,1.3783D+00,1.3261D+00,
+     &1.2741D+00,1.2182D+00,1.1669D+00,1.1315D+00,1.0961D+00,1.0671D+00,
+     &1.0360D+00,1.0071D+00,9.7992D-01,9.5371D-01,9.2801D-01,9.0200D-01,
+     &8.7588D-01,8.4862D-01,8.2038D-01,7.9020D-01,7.5770D-01,7.3298D-01,
+     &6.7721D-01,6.2090D-01,5.6394D-01,5.0631D-01,4.4841D-01,3.8970D-01,
+     &3.3019D-01,2.6973D-01,2.0791D-01,1.4420D-01,7.7416D-02,0.0000D+00,
+     &3.0661D+00,3.0288D+00,2.9911D+00,2.9537D+00,2.9160D+00,2.8778D+00,
+     &2.8392D+00,2.8000D+00,2.7610D+00,2.7200D+00,2.6782D+00,2.6345D+00,
+     &2.5900D+00,2.5625D+00,2.5329D+00,2.4982D+00,2.4617D+00,2.4247D+00,
+     &2.3857D+00,2.3518D+00,2.3145D+00,2.2697D+00,2.2245D+00,2.1764D+00,
+     &2.1269D+00,2.0819D+00,2.0331D+00,1.9746D+00,1.9126D+00,1.8497D+00,
+     &1.7862D+00,1.7303D+00,1.6696D+00,1.5995D+00,1.5285D+00,1.4608D+00,
+     &1.3929D+00,1.3377D+00,1.2826D+00,1.2228D+00,1.1669D+00,1.1279D+00,
+     &1.0882D+00,1.0555D+00,1.0205D+00,9.8876D-01,9.5876D-01,9.2969D-01,
+     &9.0171D-01,8.7356D-01,8.4551D-01,8.1668D-01,7.8701D-01,7.5564D-01,
+     &7.2196D-01,6.9797D-01,6.4121D-01,5.8469D-01,5.2810D-01,4.7131D-01,
+     &4.1460D-01,3.5783D-01,3.0063D-01,2.4338D-01,1.8544D-01,1.2660D-01,
+     &6.6270D-02,0.0000D+00,3.1379D+00,3.0995D+00,3.0600D+00,3.0213D+00,
+     &2.9840D+00,2.9442D+00,2.9047D+00,2.8641D+00,2.8239D+00,2.7813D+00/
+      DATA (XDVF_L(K),K= 1711, 1824) /
+     &2.7383D+00,2.6928D+00,2.6470D+00,2.6191D+00,2.5880D+00,2.5519D+00,
+     &2.5145D+00,2.4761D+00,2.4357D+00,2.4004D+00,2.3615D+00,2.3153D+00,
+     &2.2678D+00,2.2180D+00,2.1669D+00,2.1208D+00,2.0699D+00,2.0087D+00,
+     &1.9447D+00,1.8795D+00,1.8139D+00,1.7558D+00,1.6930D+00,1.6205D+00,
+     &1.5467D+00,1.4759D+00,1.4054D+00,1.3484D+00,1.2895D+00,1.2267D+00,
+     &1.1663D+00,1.1242D+00,1.0808D+00,1.0449D+00,1.0065D+00,9.7194D-01,
+     &9.3967D-01,9.0840D-01,8.7834D-01,8.4891D-01,8.1928D-01,7.8930D-01,
+     &7.5803D-01,7.2562D-01,6.9124D-01,6.6796D-01,6.1058D-01,5.5392D-01,
+     &4.9752D-01,4.4176D-01,3.8633D-01,3.3127D-01,2.7648D-01,2.2186D-01,
+     &1.6735D-01,1.1268D-01,5.7652D-02,0.0000D+00,3.2129D+00,3.1726D+00,
+     &3.1325D+00,3.0928D+00,3.0540D+00,3.0127D+00,2.9717D+00,2.9303D+00,
+     &2.8887D+00,2.8449D+00,2.8001D+00,2.7537D+00,2.7060D+00,2.6766D+00,
+     &2.6453D+00,2.6073D+00,2.5683D+00,2.5286D+00,2.4866D+00,2.4501D+00,
+     &2.4107D+00,2.3628D+00,2.3125D+00,2.2620D+00,2.2079D+00,2.1597D+00,
+     &2.1067D+00,2.0440D+00,1.9778D+00,1.9097D+00,1.8421D+00,1.7819D+00,
+     &1.7169D+00,1.6416D+00,1.5664D+00,1.4922D+00,1.4189D+00,1.3583D+00,
+     &1.2971D+00,1.2300D+00,1.1652D+00,1.1200D+00,1.0729D+00,1.0343D+00,
+     &9.9254D-01,9.5513D-01,9.2006D-01,8.8711D-01,8.5555D-01,8.2426D-01,
+     &7.9305D-01,7.6193D-01,7.2963D-01,6.9636D-01,6.6128D-01,6.3868D-01/
+      DATA (XDVF_L(K),K= 1825, 1836) /
+     &5.8093D-01,5.2428D-01,4.6858D-01,4.1372D-01,3.5972D-01,3.0648D-01,
+     &2.5392D-01,2.0208D-01,1.5083D-01,1.0018D-01,5.0068D-02,0.0000D+00/
+      DATA (XDEF_L(K),K=    1,  114) /
+     &4.3007D-01,4.2474D-01,4.1967D-01,4.1458D-01,4.0970D-01,4.0443D-01,
+     &3.9925D-01,3.9397D-01,3.8864D-01,3.8302D-01,3.7707D-01,3.7100D-01,
+     &3.6470D-01,3.6080D-01,3.5639D-01,3.5109D-01,3.4531D-01,3.3914D-01,
+     &3.3238D-01,3.2609D-01,3.1913D-01,3.1062D-01,3.0152D-01,2.9176D-01,
+     &2.8100D-01,2.7114D-01,2.5952D-01,2.4467D-01,2.2784D-01,2.0937D-01,
+     &1.9117D-01,1.7470D-01,1.5685D-01,1.3678D-01,1.1825D-01,1.0349D-01,
+     &9.4854D-02,9.5054D-02,1.0589D-01,1.3527D-01,1.8584D-01,2.3426D-01,
+     &2.9021D-01,3.3527D-01,3.7670D-01,4.0255D-01,4.1326D-01,4.0880D-01,
+     &3.8831D-01,3.5045D-01,2.9287D-01,2.1298D-01,1.0773D-01,0.0000D+00,
+     &0.0000D+00,2.0644D-01,1.5422D-01,1.0950D-01,7.3614D-02,4.6726D-02,
+     &2.7433D-02,1.4144D-02,6.5080D-03,2.4719D-03,0.0000D+00,0.0000D+00,
+     &0.0000D+00,0.0000D+00,4.4398D-01,4.3864D-01,4.3346D-01,4.2809D-01,
+     &4.2290D-01,4.1747D-01,4.1205D-01,4.0650D-01,4.0098D-01,3.9480D-01,
+     &3.8873D-01,3.8226D-01,3.7560D-01,3.7145D-01,3.6678D-01,3.6108D-01,
+     &3.5488D-01,3.4833D-01,3.4123D-01,3.3464D-01,3.2718D-01,3.1811D-01,
+     &3.0838D-01,2.9811D-01,2.8670D-01,2.7630D-01,2.6412D-01,2.4861D-01,
+     &2.3110D-01,2.1209D-01,1.9355D-01,1.7681D-01,1.5878D-01,1.3870D-01,
+     &1.2044D-01,1.0620D-01,9.8341D-02,9.9345D-02,1.1086D-01,1.4055D-01,
+     &1.9033D-01,2.3696D-01,2.8983D-01,3.3137D-01,3.6834D-01,3.8982D-01/
+      DATA (XDEF_L(K),K=  115,  228) /
+     &3.9672D-01,3.8896D-01,3.6609D-01,3.2678D-01,2.6933D-01,1.9181D-01,
+     &9.1683D-02,0.0000D+00,0.0000D+00,1.8955D-01,1.4041D-01,9.8873D-02,
+     &6.5928D-02,4.1462D-02,2.3905D-02,1.2324D-02,5.6113D-03,2.1050D-03,
+     &0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,4.5980D-01,4.5420D-01,
+     &4.4884D-01,4.4319D-01,4.3780D-01,4.3208D-01,4.2642D-01,4.2053D-01,
+     &4.1457D-01,4.0824D-01,4.0181D-01,3.9484D-01,3.8780D-01,3.8328D-01,
+     &3.7831D-01,3.7223D-01,3.6559D-01,3.5853D-01,3.5072D-01,3.4400D-01,
+     &3.3590D-01,3.2633D-01,3.1598D-01,3.0508D-01,2.9301D-01,2.8197D-01,
+     &2.6915D-01,2.5289D-01,2.3470D-01,2.1511D-01,1.9623D-01,1.7918D-01,
+     &1.6098D-01,1.4092D-01,1.2294D-01,1.0928D-01,1.0224D-01,1.0401D-01,
+     &1.1623D-01,1.4620D-01,1.9488D-01,2.3948D-01,2.8894D-01,3.2681D-01,
+     &3.5905D-01,3.7613D-01,3.7908D-01,3.6817D-01,3.4299D-01,3.0266D-01,
+     &2.4596D-01,1.7115D-01,7.6792D-02,0.0000D+00,0.0000D+00,1.7267D-01,
+     &1.2670D-01,8.8446D-02,5.8458D-02,3.6380D-02,2.0551D-02,1.0608D-02,
+     &4.7732D-03,1.7670D-03,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,
+     &4.7845D-01,4.7258D-01,4.6687D-01,4.6107D-01,4.5540D-01,4.4938D-01,
+     &4.4336D-01,4.3728D-01,4.3070D-01,4.2403D-01,4.1702D-01,4.0968D-01,
+     &4.0210D-01,3.9723D-01,3.9181D-01,3.8522D-01,3.7808D-01,3.7047D-01,
+     &3.6211D-01,3.5469D-01,3.4619D-01,3.3582D-01,3.2478D-01,3.1314D-01/
+      DATA (XDEF_L(K),K=  229,  342) /
+     &3.0021D-01,2.8848D-01,2.7488D-01,2.5781D-01,2.3886D-01,2.1865D-01,
+     &1.9932D-01,1.8196D-01,1.6359D-01,1.4359D-01,1.2596D-01,1.1295D-01,
+     &1.0678D-01,1.0933D-01,1.2234D-01,1.5242D-01,1.9969D-01,2.4187D-01,
+     &2.8742D-01,3.2112D-01,3.4825D-01,3.6067D-01,3.5959D-01,3.4546D-01,
+     &3.1813D-01,2.7719D-01,2.2151D-01,1.5037D-01,6.2862D-02,0.0000D+00,
+     &0.0000D+00,1.5516D-01,1.1270D-01,7.7856D-02,5.0916D-02,3.1337D-02,
+     &1.7279D-02,8.9355D-03,3.9672D-03,1.4465D-03,0.0000D+00,0.0000D+00,
+     &0.0000D+00,0.0000D+00,5.0059D-01,4.9450D-01,4.8826D-01,4.8213D-01,
+     &4.7610D-01,4.6972D-01,4.6326D-01,4.5655D-01,4.4999D-01,4.4265D-01,
+     &4.3505D-01,4.2703D-01,4.1870D-01,4.1345D-01,4.0758D-01,4.0034D-01,
+     &3.9260D-01,3.8434D-01,3.7539D-01,3.6725D-01,3.5804D-01,3.4696D-01,
+     &3.3492D-01,3.2231D-01,3.0852D-01,2.9601D-01,2.8154D-01,2.6348D-01,
+     &2.4363D-01,2.2272D-01,2.0295D-01,1.8526D-01,1.6669D-01,1.4678D-01,
+     &1.2956D-01,1.1726D-01,1.1212D-01,1.1548D-01,1.2910D-01,1.5906D-01,
+     &2.0458D-01,2.4395D-01,2.8508D-01,3.1418D-01,3.3593D-01,3.4343D-01,
+     &3.3827D-01,3.2104D-01,2.9189D-01,2.5067D-01,1.9688D-01,1.3016D-01,
+     &5.0498D-02,0.0000D+00,0.0000D+00,1.3742D-01,9.8602D-02,6.7357D-02,
+     &4.3555D-02,2.6444D-02,1.4175D-02,7.3561D-03,3.2181D-03,1.1530D-03,
+     &0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,5.2114D-01,5.1454D-01/
+      DATA (XDEF_L(K),K=  343,  456) /
+     &5.0806D-01,5.0160D-01,4.9520D-01,4.8843D-01,4.8165D-01,4.7456D-01,
+     &4.6738D-01,4.5962D-01,4.5149D-01,4.4293D-01,4.3400D-01,4.2833D-01,
+     &4.2194D-01,4.1420D-01,4.0580D-01,3.9678D-01,3.8741D-01,3.7848D-01,
+     &3.6878D-01,3.5682D-01,3.4416D-01,3.3062D-01,3.1602D-01,3.0269D-01,
+     &2.8749D-01,2.6857D-01,2.4798D-01,2.2641D-01,2.0626D-01,1.8828D-01,
+     &1.6960D-01,1.4976D-01,1.3293D-01,1.2126D-01,1.1684D-01,1.2099D-01,
+     &1.3505D-01,1.6471D-01,2.0841D-01,2.4521D-01,2.8248D-01,3.0770D-01,
+     &3.2484D-01,3.2845D-01,3.1999D-01,3.0047D-01,2.7030D-01,2.2924D-01,
+     &1.7739D-01,1.1482D-01,4.2174D-02,0.0000D+00,0.0000D+00,1.2330D-01,
+     &8.7586D-02,5.9211D-02,3.7890D-02,2.2733D-02,1.1877D-02,6.1865D-03,
+     &2.6713D-03,9.4247D-04,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,
+     &5.4423D-01,5.3740D-01,5.3068D-01,5.2385D-01,5.1700D-01,5.0982D-01,
+     &5.0256D-01,4.9509D-01,4.8731D-01,4.7895D-01,4.7023D-01,4.6094D-01,
+     &4.5130D-01,4.4506D-01,4.3820D-01,4.2973D-01,4.2069D-01,4.1108D-01,
+     &4.0069D-01,3.9131D-01,3.8063D-01,3.6796D-01,3.5430D-01,3.3991D-01,
+     &3.2433D-01,3.1014D-01,2.9407D-01,2.7418D-01,2.5281D-01,2.3056D-01,
+     &2.0999D-01,1.9171D-01,1.7291D-01,1.5321D-01,1.3677D-01,1.2578D-01,
+     &1.2220D-01,1.2696D-01,1.4132D-01,1.7056D-01,2.1212D-01,2.4603D-01,
+     &2.7912D-01,3.0023D-01,3.1274D-01,3.1234D-01,3.0087D-01,2.7925D-01/
+      DATA (XDEF_L(K),K=  457,  570) /
+     &2.4820D-01,2.0782D-01,1.5841D-01,1.0056D-01,3.5470D-02,0.0000D+00,
+     &0.0000D+00,1.0941D-01,7.6864D-02,5.1391D-02,3.2506D-02,1.9250D-02,
+     &9.7741D-03,5.1192D-03,2.1775D-03,0.0000D+00,0.0000D+00,0.0000D+00,
+     &0.0000D+00,0.0000D+00,5.6542D-01,5.5814D-01,5.5101D-01,5.4385D-01,
+     &5.3670D-01,5.2913D-01,5.2140D-01,5.1352D-01,5.0533D-01,4.9639D-01,
+     &4.8702D-01,4.7710D-01,4.6670D-01,4.6011D-01,4.5270D-01,4.4365D-01,
+     &4.3394D-01,4.2383D-01,4.1271D-01,4.0253D-01,3.9137D-01,3.7783D-01,
+     &3.6325D-01,3.4810D-01,3.3163D-01,3.1674D-01,2.9988D-01,2.7922D-01,
+     &2.5706D-01,2.3429D-01,2.1333D-01,1.9484D-01,1.7592D-01,1.5634D-01,
+     &1.4028D-01,1.2985D-01,1.2692D-01,1.3218D-01,1.4678D-01,1.7535D-01,
+     &2.1492D-01,2.4628D-01,2.7582D-01,2.9349D-01,3.0215D-01,2.9865D-01,
+     &2.8479D-01,2.6176D-01,2.3025D-01,1.9073D-01,1.4372D-01,9.0030D-02,
+     &3.1431D-02,0.0000D+00,0.0000D+00,9.8561D-02,6.8571D-02,4.5400D-02,
+     &2.8439D-02,1.6650D-02,8.2414D-03,4.3377D-03,1.8226D-03,0.0000D+00,
+     &0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,5.8660D-01,5.7912D-01,
+     &5.7170D-01,5.6412D-01,5.5660D-01,5.4858D-01,5.4040D-01,5.3194D-01,
+     &5.2336D-01,5.1383D-01,5.0381D-01,4.9326D-01,4.8220D-01,4.7515D-01,
+     &4.6719D-01,4.5756D-01,4.4719D-01,4.3619D-01,4.2441D-01,4.1376D-01,
+     &4.0188D-01,3.8750D-01,3.7220D-01,3.5617D-01,3.3884D-01,3.2317D-01/
+      DATA (XDEF_L(K),K=  571,  684) /
+     &3.0561D-01,2.8413D-01,2.6132D-01,2.3801D-01,2.1667D-01,1.9794D-01,
+     &1.7898D-01,1.5951D-01,1.4381D-01,1.3395D-01,1.3154D-01,1.3722D-01,
+     &1.5183D-01,1.7978D-01,2.1726D-01,2.4615D-01,2.7227D-01,2.8668D-01,
+     &2.9185D-01,2.8560D-01,2.6981D-01,2.4566D-01,2.1405D-01,1.7560D-01,
+     &1.3093D-01,8.1317D-02,2.8821D-02,0.0000D+00,0.0000D+00,8.9016D-02,
+     &6.1335D-02,4.0241D-02,2.4960D-02,1.4451D-02,6.9787D-03,3.6912D-03,
+     &1.5320D-03,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,
+     &6.0621D-01,5.9821D-01,5.9043D-01,5.8253D-01,5.7470D-01,5.6625D-01,
+     &5.5768D-01,5.4870D-01,5.3948D-01,5.2962D-01,5.1919D-01,5.0796D-01,
+     &4.9620D-01,4.8867D-01,4.8027D-01,4.7003D-01,4.5907D-01,4.4740D-01,
+     &4.3484D-01,4.2392D-01,4.1127D-01,3.9627D-01,3.8010D-01,3.6326D-01,
+     &3.4524D-01,3.2900D-01,3.1064D-01,2.8853D-01,2.6510D-01,2.4135D-01,
+     &2.1970D-01,2.0080D-01,1.8175D-01,1.6242D-01,1.4701D-01,1.3753D-01,
+     &1.3572D-01,1.4160D-01,1.5623D-01,1.8343D-01,2.1902D-01,2.4571D-01,
+     &2.6885D-01,2.8059D-01,2.8292D-01,2.7441D-01,2.5704D-01,2.3223D-01,
+     &2.0062D-01,1.6317D-01,1.2079D-01,7.4733D-02,2.7461D-02,0.0000D+00,
+     &0.0000D+00,8.1334D-02,5.5577D-02,3.6150D-02,2.2243D-02,1.2749D-02,
+     &6.0264D-03,3.2009D-03,1.3143D-03,0.0000D+00,0.0000D+00,0.0000D+00,
+     &0.0000D+00,0.0000D+00,6.2581D-01,6.1778D-01,6.0953D-01,6.0134D-01/
+      DATA (XDEF_L(K),K=  685,  798) /
+     &5.9310D-01,5.8428D-01,5.7523D-01,5.6587D-01,5.5625D-01,5.4565D-01,
+     &5.3457D-01,5.2280D-01,5.1030D-01,5.0236D-01,4.9350D-01,4.8267D-01,
+     &4.7104D-01,4.5899D-01,4.4560D-01,4.3381D-01,4.2066D-01,4.0485D-01,
+     &3.8801D-01,3.7047D-01,3.5165D-01,3.3476D-01,3.1574D-01,2.9293D-01,
+     &2.6889D-01,2.4469D-01,2.2279D-01,2.0369D-01,1.8458D-01,1.6537D-01,
+     &1.5025D-01,1.4125D-01,1.3980D-01,1.4589D-01,1.6046D-01,1.8686D-01,
+     &2.2052D-01,2.4502D-01,2.6530D-01,2.7444D-01,2.7406D-01,2.6361D-01,
+     &2.4491D-01,2.1954D-01,1.8819D-01,1.5193D-01,1.1170D-01,6.9146D-02,
+     &2.6829D-02,0.0000D+00,0.0000D+00,7.4387D-02,5.0398D-02,3.2529D-02,
+     &1.9840D-02,1.1260D-02,5.2109D-03,2.7796D-03,1.1291D-03,0.0000D+00,
+     &0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,6.4510D-01,6.3663D-01,
+     &6.2809D-01,6.1948D-01,6.1090D-01,6.0165D-01,5.9256D-01,5.8263D-01,
+     &5.7237D-01,5.6121D-01,5.4960D-01,5.3710D-01,5.2390D-01,5.1555D-01,
+     &5.0615D-01,4.9474D-01,4.8273D-01,4.6980D-01,4.5603D-01,4.4343D-01,
+     &4.2983D-01,4.1325D-01,3.9561D-01,3.7731D-01,3.5765D-01,3.4017D-01,
+     &3.2063D-01,2.9709D-01,2.7258D-01,2.4795D-01,2.2572D-01,2.0647D-01,
+     &1.8735D-01,1.6824D-01,1.5339D-01,1.4470D-01,1.4366D-01,1.4990D-01,
+     &1.6437D-01,1.8986D-01,2.2169D-01,2.4408D-01,2.6175D-01,2.6863D-01,
+     &2.6585D-01,2.5363D-01,2.3397D-01,2.0813D-01,1.7714D-01,1.4205D-01/
+      DATA (XDEF_L(K),K=  799,  912) /
+     &1.0396D-01,6.4602D-02,2.6785D-02,0.0000D+00,0.0000D+00,6.8343D-02,
+     &4.5962D-02,2.9434D-02,1.7812D-02,1.0015D-02,4.5458D-03,2.4331D-03,
+     &9.7866D-04,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,
+     &6.6281D-01,6.5407D-01,6.4523D-01,6.3631D-01,6.2740D-01,6.1775D-01,
+     &6.0821D-01,5.9770D-01,5.8724D-01,5.7535D-01,5.6321D-01,5.5021D-01,
+     &5.3640D-01,5.2763D-01,5.1775D-01,5.0583D-01,4.9310D-01,4.7946D-01,
+     &4.6520D-01,4.5225D-01,4.3811D-01,4.2074D-01,4.0247D-01,3.8355D-01,
+     &3.6315D-01,3.4516D-01,3.2502D-01,3.0091D-01,2.7589D-01,2.5090D-01,
+     &2.2842D-01,2.0903D-01,1.8987D-01,1.7087D-01,1.5631D-01,1.4790D-01,
+     &1.4709D-01,1.5345D-01,1.6771D-01,1.9243D-01,2.2253D-01,2.4307D-01,
+     &2.5846D-01,2.6327D-01,2.5857D-01,2.4493D-01,2.2441D-01,1.9832D-01,
+     &1.6773D-01,1.3380D-01,9.7606D-02,6.1077D-02,2.7123D-02,4.1687D-04,
+     &0.0000D+00,6.3316D-02,4.2290D-02,2.6899D-02,1.6166D-02,9.0143D-03,
+     &4.0214D-03,2.1587D-03,8.6042D-04,0.0000D+00,0.0000D+00,0.0000D+00,
+     &0.0000D+00,0.0000D+00,6.8558D-01,6.7623D-01,6.6716D-01,6.5776D-01,
+     &6.4840D-01,6.3825D-01,6.2778D-01,6.1697D-01,6.0589D-01,5.9350D-01,
+     &5.8071D-01,5.6677D-01,5.5220D-01,5.4293D-01,5.3246D-01,5.1980D-01,
+     &5.0630D-01,4.9221D-01,4.7690D-01,4.6348D-01,4.4839D-01,4.3024D-01,
+     &4.1112D-01,3.9125D-01,3.7016D-01,3.5134D-01,3.3054D-01,3.0571D-01/
+      DATA (XDEF_L(K),K=  913, 1026) /
+     &2.8005D-01,2.5463D-01,2.3186D-01,2.1230D-01,1.9311D-01,1.7422D-01,
+     &1.5985D-01,1.5187D-01,1.5138D-01,1.5783D-01,1.7178D-01,1.9543D-01,
+     &2.2331D-01,2.4162D-01,2.5415D-01,2.5666D-01,2.4964D-01,2.3438D-01,
+     &2.1293D-01,1.8681D-01,1.5680D-01,1.2430D-01,9.0488D-02,5.7352D-02,
+     &2.7942D-02,7.0995D-03,2.4780D-03,5.7612D-02,3.8138D-02,2.4057D-02,
+     &1.4329D-02,7.9111D-03,3.4566D-03,1.8603D-03,7.3347D-04,0.0000D+00,
+     &0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,7.0709D-01,6.9744D-01,
+     &6.8784D-01,6.7803D-01,6.6830D-01,6.5763D-01,6.4678D-01,6.3540D-01,
+     &6.2360D-01,6.1071D-01,5.9715D-01,5.8240D-01,5.6710D-01,5.5722D-01,
+     &5.4625D-01,5.3291D-01,5.1856D-01,5.0380D-01,4.8797D-01,4.7363D-01,
+     &4.5801D-01,4.3900D-01,4.1917D-01,3.9846D-01,3.7656D-01,3.5717D-01,
+     &3.3564D-01,3.1017D-01,2.8397D-01,2.5816D-01,2.3508D-01,2.1538D-01,
+     &1.9615D-01,1.7737D-01,1.6324D-01,1.5559D-01,1.5535D-01,1.6175D-01,
+     &1.7537D-01,1.9793D-01,2.2384D-01,2.4005D-01,2.5009D-01,2.5051D-01,
+     &2.4150D-01,2.2495D-01,2.0291D-01,1.7668D-01,1.4739D-01,1.1625D-01,
+     &8.4583D-02,5.4470D-02,2.9013D-02,1.3147D-02,1.4553D-02,5.2777D-02,
+     &3.4672D-02,2.1686D-02,1.2821D-02,7.0105D-03,3.0093D-03,1.6226D-03,
+     &6.3321D-04,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,
+     &7.2796D-01,7.1795D-01,7.0799D-01,6.9776D-01,6.8760D-01,6.7649D-01/
+      DATA (XDEF_L(K),K= 1027, 1140) /
+     &6.6523D-01,6.5299D-01,6.4099D-01,6.2720D-01,6.1289D-01,5.9763D-01,
+     &5.8140D-01,5.7108D-01,5.5954D-01,5.4555D-01,5.3082D-01,5.1501D-01,
+     &4.9841D-01,4.8352D-01,4.6718D-01,4.4758D-01,4.2678D-01,4.0543D-01,
+     &3.8267D-01,3.6267D-01,3.4052D-01,3.1445D-01,2.8771D-01,2.6154D-01,
+     &2.3817D-01,2.1835D-01,1.9910D-01,1.8043D-01,1.6662D-01,1.5905D-01,
+     &1.5900D-01,1.6548D-01,1.7871D-01,2.0015D-01,2.2403D-01,2.3835D-01,
+     &2.4610D-01,2.4469D-01,2.3394D-01,2.1634D-01,1.9372D-01,1.6761D-01,
+     &1.3910D-01,1.0920D-01,7.9530D-02,5.2165D-02,3.0250D-02,1.8723D-02,
+     &2.5275D-02,4.8575D-02,3.1676D-02,1.9677D-02,1.1540D-02,6.2533D-03,
+     &2.6411D-03,1.4253D-03,5.5072D-04,0.0000D+00,0.0000D+00,0.0000D+00,
+     &0.0000D+00,0.0000D+00,7.4788D-01,7.3751D-01,7.2708D-01,7.1644D-01,
+     &7.0580D-01,6.9430D-01,6.8256D-01,6.6975D-01,6.5712D-01,6.4276D-01,
+     &6.2791D-01,6.1180D-01,5.9490D-01,5.8409D-01,5.7199D-01,5.5739D-01,
+     &5.4166D-01,5.2544D-01,5.0821D-01,4.9288D-01,4.7590D-01,4.5544D-01,
+     &4.3393D-01,4.1178D-01,3.8837D-01,3.6775D-01,3.4513D-01,3.1844D-01,
+     &2.9125D-01,2.6472D-01,2.4110D-01,2.2115D-01,2.0189D-01,1.8330D-01,
+     &1.6955D-01,1.6237D-01,1.6243D-01,1.6875D-01,1.8164D-01,2.0201D-01,
+     &2.2410D-01,2.3665D-01,2.4236D-01,2.3927D-01,2.2710D-01,2.0852D-01,
+     &1.8563D-01,1.5962D-01,1.3170D-01,1.0314D-01,7.5292D-02,5.0347D-02/
+      DATA (XDEF_L(K),K= 1141, 1254) /
+     &3.1513D-02,2.3688D-02,3.4520D-02,4.4988D-02,2.9140D-02,1.7975D-02,
+     &1.0472D-02,5.6268D-03,2.3442D-03,1.2646D-03,4.8432D-04,0.0000D+00,
+     &0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,7.6812D-01,7.5731D-01,
+     &7.4653D-01,7.3551D-01,7.2440D-01,7.1234D-01,6.9989D-01,6.8692D-01,
+     &6.7357D-01,6.5855D-01,6.4312D-01,6.2624D-01,6.0850D-01,5.9719D-01,
+     &5.8457D-01,5.6934D-01,5.5297D-01,5.3626D-01,5.1802D-01,5.0223D-01,
+     &4.8440D-01,4.6329D-01,4.4109D-01,4.1826D-01,3.9408D-01,3.7291D-01,
+     &3.4966D-01,3.2243D-01,2.9475D-01,2.6790D-01,2.4406D-01,2.2399D-01,
+     &2.0470D-01,1.8621D-01,1.7262D-01,1.6558D-01,1.6576D-01,1.7201D-01,
+     &1.8441D-01,2.0372D-01,2.2403D-01,2.3482D-01,2.3856D-01,2.3398D-01,
+     &2.2040D-01,2.0103D-01,1.7782D-01,1.5205D-01,1.2492D-01,9.7540D-02,
+     &7.1452D-02,4.8817D-02,3.2832D-02,2.8412D-02,4.3068D-02,4.1684D-02,
+     &2.6819D-02,1.6431D-02,9.5049D-03,5.0674D-03,2.0840D-03,1.1231D-03,
+     &4.2643D-04,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,
+     &7.8709D-01,7.7617D-01,7.6509D-01,7.5353D-01,7.4210D-01,7.2955D-01,
+     &7.1666D-01,7.0326D-01,6.8906D-01,6.7364D-01,6.5743D-01,6.3988D-01,
+     &6.2140D-01,6.0962D-01,5.9645D-01,5.8083D-01,5.6382D-01,5.4630D-01,
+     &5.2750D-01,5.1079D-01,4.9267D-01,4.7078D-01,4.4780D-01,4.2425D-01,
+     &3.9948D-01,3.7773D-01,3.5398D-01,3.2619D-01,2.9811D-01,2.7093D-01/
+      DATA (XDEF_L(K),K= 1255, 1368) /
+     &2.4686D-01,2.2668D-01,2.0735D-01,1.8888D-01,1.7555D-01,1.6865D-01,
+     &1.6887D-01,1.7500D-01,1.8693D-01,2.0522D-01,2.2377D-01,2.3300D-01,
+     &2.3501D-01,2.2902D-01,2.1428D-01,1.9427D-01,1.7084D-01,1.4533D-01,
+     &1.1889D-01,9.2655D-02,6.8174D-02,4.7575D-02,3.4123D-02,3.2605D-02,
+     &5.0454D-02,3.8820D-02,2.4822D-02,1.5113D-02,8.6857D-03,4.5962D-03,
+     &1.8704D-03,1.0050D-03,3.7856D-04,0.0000D+00,0.0000D+00,0.0000D+00,
+     &0.0000D+00,0.0000D+00,8.0606D-01,7.9455D-01,7.8312D-01,7.7128D-01,
+     &7.5940D-01,7.4610D-01,7.3287D-01,7.1917D-01,7.0456D-01,6.8825D-01,
+     &6.7140D-01,6.5313D-01,6.3390D-01,6.2170D-01,6.0798D-01,5.9180D-01,
+     &5.7419D-01,5.5596D-01,5.3636D-01,5.1934D-01,5.0050D-01,4.7790D-01,
+     &4.5436D-01,4.3012D-01,4.0458D-01,3.8238D-01,3.5808D-01,3.2984D-01,
+     &3.0133D-01,2.7388D-01,2.4957D-01,2.2930D-01,2.0996D-01,1.9168D-01,
+     &1.7832D-01,1.7159D-01,1.7177D-01,1.7770D-01,1.8921D-01,2.0651D-01,
+     &2.2344D-01,2.3117D-01,2.3152D-01,2.2426D-01,2.0844D-01,1.8790D-01,
+     &1.6440D-01,1.3914D-01,1.1342D-01,8.8280D-02,6.5276D-02,4.6578D-02,
+     &3.5360D-02,3.6411D-02,5.6986D-02,3.6256D-02,2.3040D-02,1.3948D-02,
+     &7.9676D-03,4.1856D-03,1.6876D-03,9.0394D-04,3.3789D-04,0.0000D+00,
+     &0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,8.2409D-01,8.1223D-01,
+     &8.0027D-01,7.8810D-01,7.7580D-01,7.6250D-01,7.4852D-01,7.3383D-01/
+      DATA (XDEF_L(K),K= 1369, 1482) /
+     &7.1879D-01,7.0216D-01,6.8466D-01,6.6571D-01,6.4580D-01,6.3303D-01,
+     &6.1887D-01,6.0161D-01,5.8362D-01,5.6485D-01,5.4490D-01,5.2736D-01,
+     &5.0788D-01,4.8465D-01,4.6048D-01,4.3549D-01,4.0949D-01,3.8678D-01,
+     &3.6198D-01,3.3325D-01,3.0435D-01,2.7667D-01,2.5212D-01,2.3179D-01,
+     &2.1241D-01,1.9410D-01,1.8093D-01,1.7428D-01,1.7445D-01,1.8022D-01,
+     &1.9133D-01,2.0758D-01,2.2299D-01,2.2941D-01,2.2823D-01,2.1990D-01,
+     &2.0319D-01,1.8211D-01,1.5852D-01,1.3371D-01,1.0856D-01,8.4430D-02,
+     &6.2776D-02,4.5758D-02,3.6514D-02,3.9756D-02,6.2597D-02,3.4019D-02,
+     &2.1502D-02,1.2943D-02,7.3506D-03,3.8366D-03,1.5351D-03,8.1923D-04,
+     &3.0383D-04,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,
+     &8.4844D-01,8.3627D-01,8.2378D-01,8.1114D-01,7.9820D-01,7.8411D-01,
+     &7.6977D-01,7.5436D-01,7.3871D-01,7.2101D-01,7.0269D-01,6.8280D-01,
+     &6.6180D-01,6.4849D-01,6.3365D-01,6.1605D-01,5.9682D-01,5.7721D-01,
+     &5.5628D-01,5.3805D-01,5.1772D-01,4.9378D-01,4.6868D-01,4.4295D-01,
+     &4.1599D-01,3.9262D-01,3.6722D-01,3.3788D-01,3.0847D-01,2.8040D-01,
+     &2.5562D-01,2.3513D-01,2.1572D-01,1.9746D-01,1.8447D-01,1.7787D-01,
+     &1.7810D-01,1.8358D-01,1.9394D-01,2.0894D-01,2.2227D-01,2.2689D-01,
+     &2.2385D-01,2.1408D-01,1.9620D-01,1.7461D-01,1.5108D-01,1.2667D-01,
+     &1.0243D-01,7.9635D-02,5.9715D-02,4.4804D-02,3.7997D-02,4.3894D-02/
+      DATA (XDEF_L(K),K= 1483, 1596) /
+     &6.9391D-02,3.1240D-02,1.9603D-02,1.1712D-02,6.6036D-03,3.4150D-03,
+     &1.3549D-03,7.1812D-04,2.6373D-04,0.0000D+00,0.0000D+00,0.0000D+00,
+     &0.0000D+00,0.0000D+00,8.7089D-01,8.5819D-01,8.4535D-01,8.3207D-01,
+     &8.1860D-01,8.0424D-01,7.8877D-01,7.7320D-01,7.5642D-01,7.3822D-01,
+     &7.1895D-01,6.9816D-01,6.7640D-01,6.6244D-01,6.4701D-01,6.2817D-01,
+     &6.0860D-01,5.8841D-01,5.6672D-01,5.4767D-01,5.2667D-01,5.0182D-01,
+     &4.7599D-01,4.4955D-01,4.2190D-01,3.9787D-01,3.7196D-01,3.4199D-01,
+     &3.1220D-01,2.8382D-01,2.5874D-01,2.3816D-01,2.1874D-01,2.0063D-01,
+     &1.8770D-01,1.8107D-01,1.8121D-01,1.8638D-01,1.9622D-01,2.0994D-01,
+     &2.2156D-01,2.2456D-01,2.1986D-01,2.0892D-01,1.9015D-01,1.6817D-01,
+     &1.4465D-01,1.2070D-01,9.7309D-02,7.5665D-02,5.7234D-02,4.4095D-02,
+     &3.9289D-02,4.7307D-02,7.4739D-02,2.8958D-02,1.8046D-02,1.0716D-02,
+     &6.0010D-03,3.0801D-03,1.2145D-03,6.3833D-04,2.3251D-04,0.0000D+00,
+     &0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,8.9366D-01,8.8058D-01,
+     &8.6727D-01,8.5353D-01,8.3950D-01,8.2436D-01,8.0890D-01,7.9205D-01,
+     &7.7476D-01,7.5566D-01,7.3557D-01,7.1393D-01,6.9120D-01,6.7672D-01,
+     &6.6059D-01,6.4145D-01,6.2086D-01,5.9962D-01,5.7716D-01,5.5756D-01,
+     &5.3584D-01,5.1022D-01,4.8344D-01,4.5615D-01,4.2780D-01,4.0320D-01,
+     &3.7671D-01,3.4621D-01,3.1594D-01,2.8727D-01,2.6196D-01,2.4126D-01/
+      DATA (XDEF_L(K),K= 1597, 1710) /
+     &2.2177D-01,2.0361D-01,1.9078D-01,1.8427D-01,1.8432D-01,1.8918D-01,
+     &1.9834D-01,2.1079D-01,2.2065D-01,2.2210D-01,2.1587D-01,2.0383D-01,
+     &1.8424D-01,1.6197D-01,1.3849D-01,1.1505D-01,9.2463D-02,7.1949D-02,
+     &5.4952D-02,4.3474D-02,4.0525D-02,5.0376D-02,7.9517D-02,2.6835D-02,
+     &1.6616D-02,9.8004D-03,5.4489D-03,2.7768D-03,1.0900D-03,5.6728D-04,
+     &2.0489D-04,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,
+     &9.1643D-01,9.0298D-01,8.8901D-01,8.7472D-01,8.6030D-01,8.4449D-01,
+     &8.2790D-01,8.1090D-01,7.9278D-01,7.7287D-01,7.5201D-01,7.2942D-01,
+     &7.0580D-01,6.9067D-01,6.7395D-01,6.5357D-01,6.3264D-01,6.1082D-01,
+     &5.8728D-01,5.6718D-01,5.4478D-01,5.1825D-01,4.9075D-01,4.6263D-01,
+     &4.3360D-01,4.0844D-01,3.8138D-01,3.5032D-01,3.1963D-01,2.9065D-01,
+     &2.6511D-01,2.4428D-01,2.2479D-01,2.0678D-01,1.9385D-01,1.8735D-01,
+     &1.8722D-01,1.9179D-01,2.0029D-01,2.1158D-01,2.1961D-01,2.1971D-01,
+     &2.1194D-01,1.9894D-01,1.7862D-01,1.5609D-01,1.3279D-01,1.0972D-01,
+     &8.8007D-02,6.8578D-02,5.2905D-02,4.2942D-02,4.1624D-02,5.3065D-02,
+     &8.3506D-02,2.4920D-02,1.5334D-02,8.9876D-03,4.9653D-03,2.5112D-03,
+     &9.8300D-04,5.0629D-04,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,
+     &0.0000D+00,0.0000D+00,9.3762D-01,9.2325D-01,9.0916D-01,8.9432D-01,
+     &8.7930D-01,8.6312D-01,8.4579D-01,8.2807D-01,8.0954D-01,7.8866D-01/
+      DATA (XDEF_L(K),K= 1711, 1824) /
+     &7.6704D-01,7.4360D-01,7.1911D-01,7.0343D-01,6.8612D-01,6.6512D-01,
+     &6.4349D-01,6.2048D-01,5.9676D-01,5.7574D-01,5.5261D-01,5.2556D-01,
+     &4.9731D-01,4.6862D-01,4.3881D-01,4.1318D-01,3.8556D-01,3.5408D-01,
+     &3.2299D-01,2.9375D-01,2.6794D-01,2.4706D-01,2.2744D-01,2.0939D-01,
+     &1.9662D-01,1.9016D-01,1.8990D-01,1.9412D-01,2.0192D-01,2.1208D-01,
+     &2.1863D-01,2.1745D-01,2.0845D-01,1.9458D-01,1.7365D-01,1.5094D-01,
+     &1.2783D-01,1.0526D-01,8.4228D-02,6.5746D-02,5.1203D-02,4.2521D-02,
+     &4.2531D-02,5.5238D-02,8.6619D-02,2.3321D-02,1.4266D-02,8.3142D-03,
+     &4.5684D-03,2.2945D-03,8.9721D-04,4.5700D-04,0.0000D+00,0.0000D+00,
+     &0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,9.5912D-01,9.4446D-01,
+     &9.2967D-01,9.1446D-01,8.9890D-01,8.8176D-01,8.6424D-01,8.4567D-01,
+     &8.2630D-01,8.0492D-01,7.8242D-01,7.5817D-01,7.3271D-01,7.1653D-01,
+     &6.9849D-01,6.7725D-01,6.5433D-01,6.3091D-01,6.0625D-01,5.8456D-01,
+     &5.6088D-01,5.3305D-01,5.0402D-01,4.7461D-01,4.4411D-01,4.1800D-01,
+     &3.8988D-01,3.5790D-01,3.2644D-01,2.9690D-01,2.7087D-01,2.4987D-01,
+     &2.3039D-01,2.1219D-01,1.9955D-01,1.9298D-01,1.9248D-01,1.9636D-01,
+     &2.0355D-01,2.1258D-01,2.1752D-01,2.1512D-01,2.0490D-01,1.9021D-01,
+     &1.6876D-01,1.4586D-01,1.2296D-01,1.0090D-01,8.0587D-02,6.3034D-02,
+     &4.9591D-02,4.2122D-02,4.3355D-02,5.7203D-02,8.9336D-02,2.1802D-02/
+      DATA (XDEF_L(K),K= 1825, 1836) /
+     &1.3258D-02,7.6843D-03,4.1967D-03,2.0952D-03,8.1932D-04,4.1202D-04,
+     &0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00,0.0000D+00/
+      DATA (XUDF_L(K),K=    1,  114) /
+     &1.8987D-02,1.9947D-02,2.0980D-02,2.2068D-02,2.3225D-02,2.4540D-02,
+     &2.5957D-02,2.7526D-02,2.9229D-02,3.1232D-02,3.3453D-02,3.6003D-02,
+     &3.8855D-02,4.0763D-02,4.2980D-02,4.5778D-02,4.8895D-02,5.2320D-02,
+     &5.6174D-02,5.9765D-02,6.3980D-02,6.9315D-02,7.5299D-02,8.1888D-02,
+     &8.9292D-02,9.6162D-02,1.0414D-01,1.1410D-01,1.2505D-01,1.3674D-01,
+     &1.4937D-01,1.6060D-01,1.7296D-01,1.8730D-01,2.0166D-01,2.1531D-01,
+     &2.2821D-01,2.3833D-01,2.4848D-01,2.6049D-01,2.7586D-01,2.9166D-01,
+     &3.1456D-01,3.3942D-01,3.7230D-01,4.0597D-01,4.3921D-01,4.7071D-01,
+     &4.9846D-01,5.2057D-01,5.3433D-01,5.3610D-01,5.2141D-01,4.8433D-01,
+     &4.1719D-01,6.3794D-01,6.7411D-01,7.2040D-01,7.8812D-01,8.9495D-01,
+     &1.0702D+00,1.3629D+00,1.8763D+00,2.8399D+00,4.8968D+00,1.0506D+01,
+     &3.7793D+01,0.0000D+00,3.1111D-02,3.2336D-02,3.3580D-02,3.4906D-02,
+     &3.6247D-02,3.7773D-02,3.9337D-02,4.1056D-02,4.2876D-02,4.5001D-02,
+     &4.7299D-02,4.9897D-02,5.2761D-02,5.4666D-02,5.6867D-02,5.9620D-02,
+     &6.2679D-02,6.6018D-02,6.9775D-02,7.3275D-02,7.7353D-02,8.2522D-02,
+     &8.8327D-02,9.4694D-02,1.0184D-01,1.0846D-01,1.1615D-01,1.2575D-01,
+     &1.3628D-01,1.4752D-01,1.5964D-01,1.7036D-01,1.8215D-01,1.9580D-01,
+     &2.0933D-01,2.2213D-01,2.3411D-01,2.4341D-01,2.5275D-01,2.6387D-01,
+     &2.7831D-01,2.9333D-01,3.1510D-01,3.3876D-01,3.6995D-01,4.0170D-01/
+      DATA (XUDF_L(K),K=  115,  228) /
+     &4.3298D-01,4.6172D-01,4.8742D-01,5.0700D-01,5.1856D-01,5.1873D-01,
+     &5.0352D-01,4.6746D-01,4.0418D-01,6.1801D-01,6.5339D-01,6.9923D-01,
+     &7.6627D-01,8.7125D-01,1.0408D+00,1.3199D+00,1.8020D+00,2.6920D+00,
+     &4.5574D+00,9.5310D+00,3.2877D+01,0.0000D+00,5.1176D-02,5.2640D-02,
+     &5.4100D-02,5.5603D-02,5.7095D-02,5.8737D-02,6.0416D-02,6.2154D-02,
+     &6.4016D-02,6.6046D-02,6.8273D-02,7.0765D-02,7.3444D-02,7.5182D-02,
+     &7.7263D-02,7.9781D-02,8.2626D-02,8.5707D-02,8.9176D-02,9.2402D-02,
+     &9.6182D-02,1.0098D-01,1.0635D-01,1.1227D-01,1.1893D-01,1.2513D-01,
+     &1.3230D-01,1.4128D-01,1.5115D-01,1.6164D-01,1.7300D-01,1.8301D-01,
+     &1.9397D-01,2.0660D-01,2.1907D-01,2.3072D-01,2.4154D-01,2.4985D-01,
+     &2.5817D-01,2.6810D-01,2.8136D-01,2.9535D-01,3.1585D-01,3.3824D-01,
+     &3.6743D-01,3.9701D-01,4.2565D-01,4.5205D-01,4.7460D-01,4.9184D-01,
+     &5.0110D-01,4.9954D-01,4.8363D-01,4.4878D-01,3.8940D-01,5.9452D-01,
+     &6.2820D-01,6.7181D-01,7.3612D-01,8.3598D-01,9.9560D-01,1.2543D+00,
+     &1.6953D+00,2.4947D+00,4.1415D+00,8.4275D+00,2.7797D+01,0.0000D+00,
+     &8.6266D-02,8.7847D-02,8.9380D-02,9.0869D-02,9.2337D-02,9.3826D-02,
+     &9.5315D-02,9.6842D-02,9.8333D-02,1.0003D-01,1.0178D-01,1.0370D-01,
+     &1.0575D-01,1.0710D-01,1.0872D-01,1.1075D-01,1.1295D-01,1.1538D-01,
+     &1.1821D-01,1.2088D-01,1.2396D-01,1.2796D-01,1.3252D-01,1.3756D-01/
+      DATA (XUDF_L(K),K=  229,  342) /
+     &1.4331D-01,1.4870D-01,1.5500D-01,1.6291D-01,1.7166D-01,1.8100D-01,
+     &1.9111D-01,2.0002D-01,2.0977D-01,2.2095D-01,2.3189D-01,2.4200D-01,
+     &2.5123D-01,2.5821D-01,2.6512D-01,2.7351D-01,2.8514D-01,2.9789D-01,
+     &3.1683D-01,3.3731D-01,3.6424D-01,3.9124D-01,4.1697D-01,4.4030D-01,
+     &4.6002D-01,4.7419D-01,4.8085D-01,4.7740D-01,4.6086D-01,4.2728D-01,
+     &3.7241D-01,5.6656D-01,5.9684D-01,6.3694D-01,6.9622D-01,7.8804D-01,
+     &9.3343D-01,1.1653D+00,1.5545D+00,2.2504D+00,3.6537D+00,7.2124D+00,
+     &2.2653D+01,0.0000D+00,1.4838D-01,1.4960D-01,1.5068D-01,1.5161D-01,
+     &1.5242D-01,1.5316D-01,1.5373D-01,1.5426D-01,1.5470D-01,1.5511D-01,
+     &1.5554D-01,1.5602D-01,1.5660D-01,1.5698D-01,1.5750D-01,1.5830D-01,
+     &1.5923D-01,1.6034D-01,1.6181D-01,1.6324D-01,1.6509D-01,1.6746D-01,
+     &1.7054D-01,1.7402D-01,1.7811D-01,1.8208D-01,1.8687D-01,1.9296D-01,
+     &1.9986D-01,2.0734D-01,2.1554D-01,2.2281D-01,2.3075D-01,2.3983D-01,
+     &2.4863D-01,2.5660D-01,2.6366D-01,2.6883D-01,2.7387D-01,2.8026D-01,
+     &2.8982D-01,3.0088D-01,3.1780D-01,3.3626D-01,3.6021D-01,3.8399D-01,
+     &4.0666D-01,4.2682D-01,4.4278D-01,4.5386D-01,4.5774D-01,4.5230D-01,
+     &4.3509D-01,4.0314D-01,3.5321D-01,5.3325D-01,5.5916D-01,5.9448D-01,
+     &6.4707D-01,7.2797D-01,8.5557D-01,1.0563D+00,1.3882D+00,1.9717D+00,
+     &3.1223D+00,5.9601D+00,1.7750D+01,0.0000D+00,2.3139D-01,2.3138D-01/
+      DATA (XUDF_L(K),K=  343,  456) /
+     &2.3120D-01,2.3076D-01,2.3006D-01,2.2907D-01,2.2788D-01,2.2645D-01,
+     &2.2489D-01,2.2308D-01,2.2120D-01,2.1929D-01,2.1743D-01,2.1630D-01,
+     &2.1526D-01,2.1411D-01,2.1311D-01,2.1231D-01,2.1171D-01,2.1148D-01,
+     &2.1150D-01,2.1182D-01,2.1271D-01,2.1412D-01,2.1601D-01,2.1822D-01,
+     &2.2096D-01,2.2496D-01,2.2961D-01,2.3481D-01,2.4086D-01,2.4622D-01,
+     &2.5214D-01,2.5891D-01,2.6537D-01,2.7104D-01,2.7588D-01,2.7922D-01,
+     &2.8235D-01,2.8664D-01,2.9413D-01,3.0352D-01,3.1845D-01,3.3481D-01,
+     &3.5617D-01,3.7737D-01,3.9689D-01,4.1403D-01,4.2736D-01,4.3558D-01,
+     &4.3712D-01,4.3016D-01,4.1245D-01,3.8197D-01,3.3645D-01,5.0322D-01,
+     &5.2507D-01,5.5559D-01,6.0172D-01,6.7286D-01,7.8413D-01,9.5797D-01,
+     &1.2422D+00,1.7341D+00,2.6883D+00,4.9868D+00,1.4177D+01,0.0000D+00,
+     &3.6389D-01,3.6098D-01,3.5780D-01,3.5400D-01,3.5016D-01,3.4553D-01,
+     &3.4044D-01,3.3521D-01,3.2971D-01,3.2369D-01,3.1755D-01,3.1120D-01,
+     &3.0494D-01,3.0120D-01,2.9724D-01,2.9287D-01,2.8855D-01,2.8449D-01,
+     &2.8072D-01,2.7770D-01,2.7469D-01,2.7175D-01,2.6933D-01,2.6740D-01,
+     &2.6613D-01,2.6556D-01,2.6563D-01,2.6631D-01,2.6763D-01,2.6975D-01,
+     &2.7268D-01,2.7539D-01,2.7857D-01,2.8224D-01,2.8565D-01,2.8841D-01,
+     &2.9040D-01,2.9139D-01,2.9220D-01,2.9395D-01,2.9888D-01,3.0633D-01,
+     &3.1877D-01,3.3296D-01,3.5147D-01,3.6947D-01,3.8604D-01,3.9986D-01/
+      DATA (XUDF_L(K),K=  457,  570) /
+     &4.1008D-01,4.1548D-01,4.1467D-01,4.0620D-01,3.8830D-01,3.5965D-01,
+     &3.1902D-01,4.7020D-01,4.8772D-01,5.1303D-01,5.5185D-01,6.1224D-01,
+     &7.0699D-01,8.5323D-01,1.0903D+00,1.4950D+00,2.2640D+00,4.0723D+00,
+     &0.0000D+00,0.0000D+00,5.2666D-01,5.1909D-01,5.1100D-01,5.0238D-01,
+     &4.9333D-01,4.8312D-01,4.7293D-01,4.6180D-01,4.5066D-01,4.3890D-01,
+     &4.2692D-01,4.1467D-01,4.0262D-01,3.9542D-01,3.8784D-01,3.7925D-01,
+     &3.7080D-01,3.6267D-01,3.5482D-01,3.4841D-01,3.4190D-01,3.3492D-01,
+     &3.2852D-01,3.2287D-01,3.1768D-01,3.1409D-01,3.1066D-01,3.0785D-01,
+     &3.0564D-01,3.0446D-01,3.0380D-01,3.0388D-01,3.0402D-01,3.0458D-01,
+     &3.0488D-01,3.0475D-01,3.0386D-01,3.0263D-01,3.0116D-01,3.0045D-01,
+     &3.0296D-01,3.0852D-01,3.1888D-01,3.3085D-01,3.4677D-01,3.6222D-01,
+     &3.7600D-01,3.8707D-01,3.9488D-01,3.9799D-01,3.9530D-01,3.8568D-01,
+     &3.6791D-01,3.4080D-01,3.0424D-01,4.4195D-01,4.5570D-01,4.7648D-01,
+     &5.0935D-01,5.6099D-01,6.4225D-01,7.6680D-01,9.6736D-01,1.3053D+00,
+     &1.9393D+00,3.3976D+00,0.0000D+00,0.0000D+00,7.4015D-01,7.2498D-01,
+     &7.0940D-01,6.9297D-01,6.7620D-01,6.5800D-01,6.3935D-01,6.2047D-01,
+     &6.0114D-01,5.8076D-01,5.6065D-01,5.4030D-01,5.2035D-01,5.0839D-01,
+     &4.9583D-01,4.8167D-01,4.6773D-01,4.5434D-01,4.4113D-01,4.3035D-01,
+     &4.1922D-01,4.0719D-01,3.9582D-01,3.8536D-01,3.7557D-01,3.6805D-01/
+      DATA (XUDF_L(K),K=  571,  684) /
+     &3.6079D-01,3.5336D-01,3.4710D-01,3.4173D-01,3.3719D-01,3.3400D-01,
+     &3.3124D-01,3.2819D-01,3.2494D-01,3.2158D-01,3.1765D-01,3.1400D-01,
+     &3.1011D-01,3.0684D-01,3.0682D-01,3.1046D-01,3.1856D-01,3.2861D-01,
+     &3.4189D-01,3.5475D-01,3.6597D-01,3.7463D-01,3.8003D-01,3.8108D-01,
+     &3.7681D-01,3.6631D-01,3.4865D-01,3.2327D-01,2.9078D-01,4.1488D-01,
+     &4.2529D-01,4.4193D-01,4.6945D-01,5.1322D-01,5.8236D-01,6.8846D-01,
+     &8.5739D-01,1.1394D+00,1.6617D+00,2.8395D+00,0.0000D+00,0.0000D+00,
+     &9.8501D-01,9.5975D-01,9.3420D-01,9.0757D-01,8.8092D-01,8.5237D-01,
+     &8.2383D-01,7.9445D-01,7.6556D-01,7.3524D-01,7.0484D-01,6.7495D-01,
+     &6.4547D-01,6.2798D-01,6.0969D-01,5.8904D-01,5.6882D-01,5.4932D-01,
+     &5.3014D-01,5.1443D-01,4.9826D-01,4.8058D-01,4.6380D-01,4.4815D-01,
+     &4.3330D-01,4.2167D-01,4.1020D-01,3.9827D-01,3.8748D-01,3.7784D-01,
+     &3.6931D-01,3.6303D-01,3.5669D-01,3.4992D-01,3.4358D-01,3.3710D-01,
+     &3.3025D-01,3.2429D-01,3.1817D-01,3.1242D-01,3.1001D-01,3.1195D-01,
+     &3.1802D-01,3.2610D-01,3.3719D-01,3.4770D-01,3.5674D-01,3.6357D-01,
+     &3.6695D-01,3.6631D-01,3.6075D-01,3.4960D-01,3.3214D-01,3.0855D-01,
+     &2.7931D-01,3.9198D-01,3.9931D-01,4.1263D-01,4.3550D-01,4.7310D-01,
+     &5.3259D-01,6.2375D-01,7.6876D-01,1.0087D+00,1.4464D+00,2.4185D+00,
+     &0.0000D+00,0.0000D+00,1.2917D+00,1.2523D+00,1.2128D+00,1.1722D+00/
+      DATA (XUDF_L(K),K=  685,  798) /
+     &1.1321D+00,1.0894D+00,1.0473D+00,1.0044D+00,9.6262D-01,9.1838D-01,
+     &8.7565D-01,8.3283D-01,7.9186D-01,7.6734D-01,7.4146D-01,7.1300D-01,
+     &6.8484D-01,6.5787D-01,6.3134D-01,6.0963D-01,5.8730D-01,5.6294D-01,
+     &5.3947D-01,5.1767D-01,4.9689D-01,4.8039D-01,4.6398D-01,4.4675D-01,
+     &4.3087D-01,4.1650D-01,4.0371D-01,3.9342D-01,3.8361D-01,3.7293D-01,
+     &3.6284D-01,3.5305D-01,3.4307D-01,3.3468D-01,3.2613D-01,3.1788D-01,
+     &3.1306D-01,3.1309D-01,3.1715D-01,3.2346D-01,3.3232D-01,3.4066D-01,
+     &3.4779D-01,3.5251D-01,3.5401D-01,3.5184D-01,3.4519D-01,3.3347D-01,
+     &3.1650D-01,2.9433D-01,2.6872D-01,3.6968D-01,3.7446D-01,3.8477D-01,
+     &4.0368D-01,4.3551D-01,4.8654D-01,5.6457D-01,6.8832D-01,8.9135D-01,
+     &1.2583D+00,2.0601D+00,0.0000D+00,0.0000D+00,1.6499D+00,1.5928D+00,
+     &1.5356D+00,1.4773D+00,1.4202D+00,1.3601D+00,1.3009D+00,1.2413D+00,
+     &1.1836D+00,1.1235D+00,1.0650D+00,1.0076D+00,9.5212D-01,9.1919D-01,
+     &8.8569D-01,8.4733D-01,8.1006D-01,7.7436D-01,7.3955D-01,7.1104D-01,
+     &6.8173D-01,6.4966D-01,6.1893D-01,5.9026D-01,5.6287D-01,5.4114D-01,
+     &5.1941D-01,4.9621D-01,4.7490D-01,4.5564D-01,4.3786D-01,4.2408D-01,
+     &4.1024D-01,3.9562D-01,3.8175D-01,3.6853D-01,3.5541D-01,3.4455D-01,
+     &3.3366D-01,3.2286D-01,3.1565D-01,3.1397D-01,3.1618D-01,3.2069D-01,
+     &3.2744D-01,3.3383D-01,3.3911D-01,3.4194D-01,3.4194D-01,3.3844D-01/
+      DATA (XUDF_L(K),K=  799,  912) /
+     &3.3088D-01,3.1887D-01,3.0224D-01,2.8177D-01,2.5901D-01,3.4945D-01,
+     &3.5200D-01,3.5959D-01,3.7518D-01,4.0212D-01,4.4590D-01,5.1305D-01,
+     &6.1934D-01,7.9273D-01,1.1025D+00,1.7693D+00,0.0000D+00,0.0000D+00,
+     &2.0413D+00,1.9626D+00,1.8840D+00,1.8053D+00,1.7284D+00,1.6480D+00,
+     &1.5697D+00,1.4911D+00,1.4157D+00,1.3375D+00,1.2620D+00,1.1875D+00,
+     &1.1168D+00,1.0751D+00,1.0321D+00,9.8410D-01,9.3682D-01,8.9196D-01,
+     &8.4816D-01,8.1245D-01,7.7582D-01,7.3576D-01,6.9745D-01,6.6154D-01,
+     &6.2742D-01,6.0036D-01,5.7319D-01,5.4409D-01,5.1721D-01,4.9291D-01,
+     &4.7049D-01,4.5284D-01,4.3541D-01,4.1671D-01,3.9926D-01,3.8274D-01,
+     &3.6660D-01,3.5348D-01,3.4035D-01,3.2727D-01,3.1788D-01,3.1459D-01,
+     &3.1499D-01,3.1792D-01,3.2291D-01,3.2764D-01,3.3124D-01,3.3250D-01,
+     &3.3120D-01,3.2663D-01,3.1834D-01,3.0608D-01,2.8998D-01,2.7085D-01,
+     &2.5085D-01,3.3191D-01,3.3258D-01,3.3808D-01,3.5072D-01,3.7379D-01,
+     &4.1182D-01,4.7005D-01,5.6257D-01,7.1233D-01,9.7788D-01,1.5412D+00,
+     &0.0000D+00,0.0000D+00,2.6325D+00,2.5188D+00,2.4060D+00,2.2942D+00,
+     &2.1863D+00,2.0740D+00,1.9650D+00,1.8571D+00,1.7537D+00,1.6473D+00,
+     &1.5453D+00,1.4458D+00,1.3515D+00,1.2965D+00,1.2394D+00,1.1767D+00,
+     &1.1150D+00,1.0560D+00,9.9927D-01,9.5301D-01,9.0565D-01,8.5400D-01,
+     &8.0462D-01,7.5858D-01,7.1481D-01,6.7994D-01,6.4502D-01,6.0799D-01/
+      DATA (XUDF_L(K),K=  913, 1026) /
+     &5.7349D-01,5.4206D-01,5.1299D-01,4.9028D-01,4.6789D-01,4.4387D-01,
+     &4.2168D-01,4.0096D-01,3.8070D-01,3.6457D-01,3.4857D-01,3.3249D-01,
+     &3.2026D-01,3.1503D-01,3.1326D-01,3.1423D-01,3.1703D-01,3.1974D-01,
+     &3.2120D-01,3.2086D-01,3.1799D-01,3.1221D-01,3.0315D-01,2.9072D-01,
+     &2.7522D-01,2.5796D-01,2.4114D-01,3.1079D-01,3.0956D-01,3.1267D-01,
+     &3.2223D-01,3.4089D-01,3.7246D-01,4.2134D-01,4.9853D-01,6.2305D-01,
+     &8.4191D-01,1.2983D+00,0.0000D+00,0.0000D+00,3.2997D+00,3.1427D+00,
+     &2.9900D+00,2.8374D+00,2.6927D+00,2.5421D+00,2.3973D+00,2.2549D+00,
+     &2.1191D+00,1.9809D+00,1.8488D+00,1.7209D+00,1.6001D+00,1.5300D+00,
+     &1.4576D+00,1.3771D+00,1.2999D+00,1.2268D+00,1.1551D+00,1.0975D+00,
+     &1.0385D+00,9.7437D-01,9.1327D-01,8.5649D-01,8.0236D-01,7.5952D-01,
+     &7.1667D-01,6.7091D-01,6.2847D-01,5.9005D-01,5.5422D-01,5.2636D-01,
+     &4.9890D-01,4.6976D-01,4.4269D-01,4.1752D-01,3.9377D-01,3.7477D-01,
+     &3.5594D-01,3.3710D-01,3.2226D-01,3.1511D-01,3.1131D-01,3.1067D-01,
+     &3.1132D-01,3.1227D-01,3.1198D-01,3.1021D-01,3.0606D-01,2.9926D-01,
+     &2.8958D-01,2.7716D-01,2.6233D-01,2.4655D-01,2.3275D-01,2.9229D-01,
+     &2.8941D-01,2.9061D-01,2.9753D-01,3.1273D-01,3.3909D-01,3.8034D-01,
+     &4.4548D-01,5.5028D-01,7.3256D-01,1.1074D+00,0.0000D+00,0.0000D+00,
+     &4.0557D+00,3.8486D+00,3.6460D+00,3.4480D+00,3.2579D+00,3.0626D+00/
+      DATA (XUDF_L(K),K= 1027, 1140) /
+     &2.8756D+00,2.6929D+00,2.5196D+00,2.3441D+00,2.1778D+00,2.0170D+00,
+     &1.8670D+00,1.7797D+00,1.6902D+00,1.5909D+00,1.4960D+00,1.4058D+00,
+     &1.3191D+00,1.2484D+00,1.1764D+00,1.0991D+00,1.0253D+00,9.5689D-01,
+     &8.9197D-01,8.4046D-01,7.8904D-01,7.3442D-01,6.8367D-01,6.3780D-01,
+     &5.9520D-01,5.6218D-01,5.2934D-01,4.9500D-01,4.6300D-01,4.3370D-01,
+     &4.0611D-01,3.8431D-01,3.6284D-01,3.4121D-01,3.2389D-01,3.1494D-01,
+     &3.0926D-01,3.0697D-01,3.0594D-01,3.0501D-01,3.0330D-01,3.0019D-01,
+     &2.9492D-01,2.8734D-01,2.7718D-01,2.6476D-01,2.5057D-01,2.3646D-01,
+     &2.2503D-01,2.7558D-01,2.7132D-01,2.7089D-01,2.7569D-01,2.8794D-01,
+     &3.1000D-01,3.4491D-01,4.0016D-01,4.8886D-01,6.4191D-01,9.5232D-01,
+     &0.0000D+00,0.0000D+00,4.8799D+00,4.6116D+00,4.3560D+00,4.1035D+00,
+     &3.8608D+00,3.6163D+00,3.3822D+00,3.1557D+00,2.9412D+00,2.7247D+00,
+     &2.5209D+00,2.3248D+00,2.1421D+00,2.0368D+00,1.9287D+00,1.8094D+00,
+     &1.6955D+00,1.5877D+00,1.4841D+00,1.4003D+00,1.3154D+00,1.2237D+00,
+     &1.1368D+00,1.0563D+00,9.8015D-01,9.2005D-01,8.5978D-01,7.9615D-01,
+     &7.3715D-01,6.8369D-01,6.3441D-01,5.9609D-01,5.5830D-01,5.1865D-01,
+     &4.8192D-01,4.4872D-01,4.1747D-01,3.9300D-01,3.6895D-01,3.4483D-01,
+     &3.2508D-01,3.1459D-01,3.0709D-01,3.0328D-01,3.0056D-01,2.9840D-01,
+     &2.9543D-01,2.9107D-01,2.8485D-01,2.7655D-01,2.6610D-01,2.5368D-01/
+      DATA (XUDF_L(K),K= 1141, 1254) /
+     &2.4019D-01,2.2736D-01,2.1837D-01,2.6080D-01,2.5542D-01,2.5362D-01,
+     &2.5693D-01,2.6661D-01,2.8505D-01,3.1490D-01,3.6226D-01,4.3798D-01,
+     &5.6769D-01,8.2836D-01,0.0000D+00,0.0000D+00,5.8340D+00,5.4940D+00,
+     &5.1700D+00,4.8532D+00,4.5515D+00,4.2463D+00,3.9559D+00,3.6752D+00,
+     &3.4138D+00,3.1496D+00,2.9022D+00,2.6648D+00,2.4450D+00,2.3189D+00,
+     &2.1896D+00,2.0476D+00,1.9120D+00,1.7843D+00,1.6621D+00,1.5639D+00,
+     &1.4648D+00,1.3569D+00,1.2556D+00,1.1618D+00,1.0734D+00,1.0037D+00,
+     &9.3416D-01,8.6065D-01,7.9257D-01,7.3145D-01,6.7463D-01,6.3082D-01,
+     &5.8786D-01,5.4262D-01,5.0118D-01,4.6374D-01,4.2883D-01,4.0146D-01,
+     &3.7490D-01,3.4814D-01,3.2612D-01,3.1397D-01,3.0482D-01,2.9958D-01,
+     &2.9536D-01,2.9178D-01,2.8756D-01,2.8208D-01,2.7504D-01,2.6611D-01,
+     &2.5539D-01,2.4319D-01,2.3031D-01,2.1877D-01,2.1195D-01,2.4673D-01,
+     &2.4036D-01,2.3746D-01,2.3912D-01,2.4677D-01,2.6223D-01,2.8748D-01,
+     &3.2792D-01,3.9255D-01,5.0271D-01,7.2095D-01,0.0000D+00,0.0000D+00,
+     &6.8578D+00,6.4388D+00,6.0380D+00,5.6501D+00,5.2825D+00,4.9103D+00,
+     &4.5613D+00,4.2230D+00,3.9070D+00,3.5911D+00,3.2966D+00,3.0156D+00,
+     &2.7567D+00,2.6078D+00,2.4563D+00,2.2905D+00,2.1319D+00,1.9837D+00,
+     &1.8421D+00,1.7287D+00,1.6141D+00,1.4902D+00,1.3730D+00,1.2663D+00,
+     &1.1652D+00,1.0858D+00,1.0067D+00,9.2337D-01,8.4648D-01,7.7710D-01/
+      DATA (XUDF_L(K),K= 1255, 1368) /
+     &7.1333D-01,6.6392D-01,6.1566D-01,5.6531D-01,5.1904D-01,4.7761D-01,
+     &4.3908D-01,4.0927D-01,3.8022D-01,3.5109D-01,3.2686D-01,3.1318D-01,
+     &3.0244D-01,2.9602D-01,2.9031D-01,2.8538D-01,2.8024D-01,2.7382D-01,
+     &2.6607D-01,2.5668D-01,2.4571D-01,2.3364D-01,2.2155D-01,2.1116D-01,
+     &2.0617D-01,2.3421D-01,2.2704D-01,2.2320D-01,2.2366D-01,2.2952D-01,
+     &2.4241D-01,2.6402D-01,2.9884D-01,3.5437D-01,4.4860D-01,6.3331D-01,
+     &0.0000D+00,0.0000D+00,7.9784D+00,7.4673D+00,6.9820D+00,6.5121D+00,
+     &6.0712D+00,5.6250D+00,5.2080D+00,4.8065D+00,4.4309D+00,4.0590D+00,
+     &3.7131D+00,3.3843D+00,3.0816D+00,2.9094D+00,2.7332D+00,2.5420D+00,
+     &2.3595D+00,2.1895D+00,2.0271D+00,1.8966D+00,1.7658D+00,1.6248D+00,
+     &1.4933D+00,1.3718D+00,1.2579D+00,1.1683D+00,1.0795D+00,9.8589D-01,
+     &8.9996D-01,8.2253D-01,7.5153D-01,6.9648D-01,6.4287D-01,5.8736D-01,
+     &5.3655D-01,4.9109D-01,4.4891D-01,4.1655D-01,3.8518D-01,3.5367D-01,
+     &3.2738D-01,3.1221D-01,3.0006D-01,2.9246D-01,2.8544D-01,2.7940D-01,
+     &2.7319D-01,2.6601D-01,2.5763D-01,2.4782D-01,2.3676D-01,2.2486D-01,
+     &2.1329D-01,2.0405D-01,2.0083D-01,2.2267D-01,2.1489D-01,2.1027D-01,
+     &2.0967D-01,2.1409D-01,2.2473D-01,2.4320D-01,2.7316D-01,3.2113D-01,
+     &4.0209D-01,5.5899D-01,0.0000D+00,0.0000D+00,9.1575D+00,8.5458D+00,
+     &7.9700D+00,7.4123D+00,6.8876D+00,6.3653D+00,5.8736D+00,5.4042D+00/
+      DATA (XUDF_L(K),K= 1369, 1482) /
+     &4.9684D+00,4.5359D+00,4.1366D+00,3.7576D+00,3.4110D+00,3.2138D+00,
+     &3.0122D+00,2.7943D+00,2.5871D+00,2.3944D+00,2.2102D+00,2.0646D+00,
+     &1.9163D+00,1.7581D+00,1.6109D+00,1.4753D+00,1.3483D+00,1.2486D+00,
+     &1.1500D+00,1.0462D+00,9.5130D-01,8.6585D-01,7.8770D-01,7.2741D-01,
+     &6.6891D-01,6.0781D-01,5.5266D-01,5.0342D-01,4.5788D-01,4.2322D-01,
+     &3.8960D-01,3.5594D-01,3.2768D-01,3.1125D-01,2.9779D-01,2.8890D-01,
+     &2.8091D-01,2.7385D-01,2.6670D-01,2.5886D-01,2.4989D-01,2.3976D-01,
+     &2.2861D-01,2.1703D-01,2.0604D-01,1.9777D-01,1.9598D-01,2.1238D-01,
+     &2.0408D-01,1.9879D-01,1.9735D-01,2.0048D-01,2.0933D-01,2.2523D-01,
+     &2.5120D-01,2.9296D-01,3.6305D-01,4.9711D-01,0.0000D+00,0.0000D+00,
+     &1.0956D+01,1.0188D+01,9.4660D+00,8.7704D+00,8.1209D+00,7.4727D+00,
+     &6.8721D+00,6.2972D+00,5.7646D+00,5.2434D+00,4.7595D+00,4.3051D+00,
+     &3.8911D+00,3.6559D+00,3.4174D+00,3.1598D+00,2.9153D+00,2.6889D+00,
+     &2.4732D+00,2.3031D+00,2.1311D+00,1.9475D+00,1.7771D+00,1.6202D+00,
+     &1.4748D+00,1.3609D+00,1.2481D+00,1.1301D+00,1.0222D+00,9.2549D-01,
+     &8.3728D-01,7.6947D-01,7.0373D-01,6.3561D-01,5.7438D-01,5.1959D-01,
+     &4.6984D-01,4.3187D-01,3.9529D-01,3.5864D-01,3.2783D-01,3.0967D-01,
+     &2.9444D-01,2.8428D-01,2.7469D-01,2.6638D-01,2.5813D-01,2.4942D-01,
+     &2.3986D-01,2.2937D-01,2.1819D-01,2.0682D-01,1.9665D-01,1.8966D-01/
+      DATA (XUDF_L(K),K= 1483, 1596) /
+     &1.8971D-01,1.9926D-01,1.9036D-01,1.8442D-01,1.8192D-01,1.8362D-01,
+     &1.9037D-01,2.0318D-01,2.2459D-01,2.5904D-01,3.1665D-01,4.2407D-01,
+     &0.0000D+00,0.0000D+00,1.2798D+01,1.1861D+01,1.0986D+01,1.0144D+01,
+     &9.3643D+00,8.5887D+00,7.8706D+00,7.1866D+00,6.5568D+00,5.9419D+00,
+     &5.3754D+00,4.8419D+00,4.3593D+00,4.0864D+00,3.8109D+00,3.5127D+00,
+     &3.2315D+00,2.9714D+00,2.7252D+00,2.5309D+00,2.3356D+00,2.1269D+00,
+     &1.9338D+00,1.7578D+00,1.5939D+00,1.4656D+00,1.3394D+00,1.2075D+00,
+     &1.0875D+00,9.8023D-01,8.8256D-01,8.0772D-01,7.3533D-01,6.6054D-01,
+     &5.9364D-01,5.3423D-01,4.8009D-01,4.3930D-01,4.0003D-01,3.6079D-01,
+     &3.2768D-01,3.0809D-01,2.9130D-01,2.7993D-01,2.6898D-01,2.5976D-01,
+     &2.5062D-01,2.4123D-01,2.3116D-01,2.2040D-01,2.0917D-01,1.9814D-01,
+     &1.8865D-01,1.8272D-01,1.8428D-01,1.8820D-01,1.7883D-01,1.7238D-01,
+     &1.6914D-01,1.6979D-01,1.7482D-01,1.8534D-01,2.0325D-01,2.3214D-01,
+     &2.8022D-01,3.6659D-01,0.0000D+00,0.0000D+00,1.4900D+01,1.3767D+01,
+     &1.2708D+01,1.1700D+01,1.0766D+01,9.8403D+00,8.9832D+00,8.1757D+00,
+     &7.4366D+00,6.7121D+00,6.0486D+00,5.4300D+00,4.8704D+00,4.5555D+00,
+     &4.2371D+00,3.8955D+00,3.5734D+00,3.2760D+00,2.9952D+00,2.7738D+00,
+     &2.5528D+00,2.3175D+00,2.1001D+00,1.9012D+00,1.7176D+00,1.5750D+00,
+     &1.4344D+00,1.2880D+00,1.1547D+00,1.0364D+00,9.2859D-01,8.4652D-01/
+      DATA (XUDF_L(K),K= 1597, 1710) /
+     &7.6723D-01,6.8578D-01,6.1255D-01,5.4848D-01,4.9034D-01,4.4649D-01,
+     &4.0456D-01,3.6275D-01,3.2738D-01,3.0624D-01,2.8805D-01,2.7544D-01,
+     &2.6343D-01,2.5315D-01,2.4318D-01,2.3314D-01,2.2263D-01,2.1166D-01,
+     &2.0051D-01,1.8983D-01,1.8102D-01,1.7610D-01,1.7901D-01,1.7764D-01,
+     &1.6791D-01,1.6102D-01,1.5715D-01,1.5684D-01,1.6056D-01,1.6899D-01,
+     &1.8376D-01,2.0786D-01,2.4776D-01,3.1470D-01,0.0000D+00,0.0000D+00,
+     &1.7212D+01,1.5853D+01,1.4590D+01,1.3390D+01,1.2283D+01,1.1191D+01,
+     &1.0185D+01,9.2395D+00,8.3762D+00,7.5315D+00,6.7670D+00,6.0503D+00,
+     &5.4086D+00,5.0481D+00,4.6843D+00,4.2940D+00,3.9280D+00,3.5917D+00,
+     &3.2752D+00,3.0252D+00,2.7768D+00,2.5132D+00,2.2690D+00,2.0490D+00,
+     &1.8445D+00,1.6857D+00,1.5301D+00,1.3685D+00,1.2219D+00,1.0920D+00,
+     &9.7438D-01,8.8478D-01,7.9825D-01,7.1007D-01,6.3111D-01,5.6196D-01,
+     &5.0016D-01,4.5321D-01,4.0867D-01,3.6435D-01,3.2686D-01,3.0431D-01,
+     &2.8470D-01,2.7109D-01,2.5789D-01,2.4674D-01,2.3605D-01,2.2547D-01,
+     &2.1459D-01,2.0348D-01,1.9237D-01,1.8201D-01,1.7376D-01,1.6982D-01,
+     &1.7398D-01,1.6789D-01,1.5795D-01,1.5065D-01,1.4630D-01,1.4521D-01,
+     &1.4773D-01,1.5443D-01,1.6659D-01,1.8664D-01,2.1966D-01,2.6878D-01,
+     &0.0000D+00,0.0000D+00,1.9526D+01,1.7951D+01,1.6470D+01,1.5074D+01,
+     &1.3790D+01,1.2527D+01,1.1370D+01,1.0282D+01,9.2958D+00,8.3330D+00/
+      DATA (XUDF_L(K),K= 1711, 1824) /
+     &7.4603D+00,6.6536D+00,5.9285D+00,5.5219D+00,5.1141D+00,4.6768D+00,
+     &4.2681D+00,3.8926D+00,3.5402D+00,3.2626D+00,2.9882D+00,2.6963D+00,
+     &2.4284D+00,2.1851D+00,1.9619D+00,1.7885D+00,1.6187D+00,1.4429D+00,
+     &1.2838D+00,1.1431D+00,1.0159D+00,9.1924D-01,8.2663D-01,7.3180D-01,
+     &6.4793D-01,5.7429D-01,5.0828D-01,4.5904D-01,4.1215D-01,3.6558D-01,
+     &3.2620D-01,3.0238D-01,2.8167D-01,2.6700D-01,2.5302D-01,2.4098D-01,
+     &2.2975D-01,2.1873D-01,2.0756D-01,1.9633D-01,1.8532D-01,1.7533D-01,
+     &1.6763D-01,1.6450D-01,1.6959D-01,1.5953D-01,1.4943D-01,1.4185D-01,
+     &1.3716D-01,1.3545D-01,1.3705D-01,1.4238D-01,1.5258D-01,1.6945D-01,
+     &1.9705D-01,2.3049D-01,0.0000D+00,0.0000D+00,2.2141D+01,2.0286D+01,
+     &1.8570D+01,1.6948D+01,1.5466D+01,1.4010D+01,1.2679D+01,1.1431D+01,
+     &1.0303D+01,9.2106D+00,8.2239D+00,7.3077D+00,6.4926D+00,6.0348D+00,
+     &5.5765D+00,5.0879D+00,4.6321D+00,4.2138D+00,3.8233D+00,3.5162D+00,
+     &3.2122D+00,2.8907D+00,2.5960D+00,2.3300D+00,2.0856D+00,1.8954D+00,
+     &1.7110D+00,1.5199D+00,1.3476D+00,1.1955D+00,1.0584D+00,9.5478D-01,
+     &8.5531D-01,7.5417D-01,6.6439D-01,5.8623D-01,5.1682D-01,4.6468D-01,
+     &4.1541D-01,3.6662D-01,3.2538D-01,3.0035D-01,2.7843D-01,2.6291D-01,
+     &2.4798D-01,2.3522D-01,2.2346D-01,2.1203D-01,2.0062D-01,1.8935D-01,
+     &1.7843D-01,1.6874D-01,1.6163D-01,1.5920D-01,1.6520D-01,1.5147D-01/
+      DATA (XUDF_L(K),K= 1825, 1836) /
+     &1.4120D-01,1.3349D-01,1.2844D-01,1.2620D-01,1.2701D-01,1.3118D-01,
+     &1.3954D-01,1.5369D-01,1.7631D-01,1.9416D-01,0.0000D+00,0.0000D+00/
+      DATA (XSF_L(K),K=    1,  114) /
+     &8.9277D-03,9.2838D-03,9.6380D-03,9.9960D-03,1.0349D-02,1.0719D-02,
+     &1.1082D-02,1.1442D-02,1.1792D-02,1.2148D-02,1.2489D-02,1.2817D-02,
+     &1.3124D-02,1.3295D-02,1.3474D-02,1.3661D-02,1.3835D-02,1.3985D-02,
+     &1.4121D-02,1.4217D-02,1.4303D-02,1.4379D-02,1.4419D-02,1.4434D-02,
+     &1.4412D-02,1.4366D-02,1.4286D-02,1.4158D-02,1.3991D-02,1.3790D-02,
+     &1.3553D-02,1.3335D-02,1.3094D-02,1.2821D-02,1.2580D-02,1.2410D-02,
+     &1.2357D-02,1.2459D-02,1.2790D-02,1.3571D-02,1.5018D-02,1.6665D-02,
+     &1.9113D-02,2.1832D-02,2.5587D-02,2.9818D-02,3.4535D-02,3.9813D-02,
+     &4.5737D-02,5.2358D-02,5.9765D-02,6.8021D-02,7.7185D-02,8.7258D-02,
+     &9.8198D-02,1.1073D-01,1.4216D-01,1.8364D-01,2.3959D-01,3.1758D-01,
+     &4.3050D-01,6.0203D-01,8.8214D-01,1.3845D+00,2.4294D+00,5.2463D+00,
+     &1.8903D+01,0.0000D+00,1.4987D-02,1.5468D-02,1.5936D-02,1.6403D-02,
+     &1.6855D-02,1.7319D-02,1.7760D-02,1.8194D-02,1.8600D-02,1.9008D-02,
+     &1.9382D-02,1.9730D-02,2.0033D-02,2.0199D-02,2.0359D-02,2.0523D-02,
+     &2.0654D-02,2.0760D-02,2.0831D-02,2.0870D-02,2.0886D-02,2.0858D-02,
+     &2.0798D-02,2.0680D-02,2.0523D-02,2.0363D-02,2.0127D-02,1.9825D-02,
+     &1.9464D-02,1.9060D-02,1.8607D-02,1.8200D-02,1.7750D-02,1.7240D-02,
+     &1.6759D-02,1.6362D-02,1.6103D-02,1.6050D-02,1.6240D-02,1.6916D-02,
+     &1.8336D-02,2.0030D-02,2.2586D-02,2.5447D-02,2.9418D-02,3.3874D-02/
+      DATA (XSF_L(K),K=  115,  228) /
+     &3.8821D-02,4.4375D-02,5.0509D-02,5.7343D-02,6.4974D-02,7.3385D-02,
+     &8.2640D-02,9.2732D-02,1.0354D-01,1.1667D-01,1.4809D-01,1.8910D-01,
+     &2.4387D-01,3.1940D-01,4.2764D-01,5.9054D-01,8.5228D-01,1.3150D+00,
+     &2.2623D+00,4.7596D+00,1.6445D+01,0.0000D+00,2.5010D-02,2.5616D-02,
+     &2.6180D-02,2.6758D-02,2.7279D-02,2.7792D-02,2.8274D-02,2.8729D-02,
+     &2.9134D-02,2.9513D-02,2.9836D-02,3.0110D-02,3.0324D-02,3.0417D-02,
+     &3.0492D-02,3.0537D-02,3.0551D-02,3.0517D-02,3.0432D-02,3.0326D-02,
+     &3.0181D-02,2.9954D-02,2.9663D-02,2.9316D-02,2.8913D-02,2.8508D-02,
+     &2.8021D-02,2.7422D-02,2.6741D-02,2.5997D-02,2.5204D-02,2.4500D-02,
+     &2.3734D-02,2.2858D-02,2.2019D-02,2.1281D-02,2.0698D-02,2.0402D-02,
+     &2.0365D-02,2.0844D-02,2.2137D-02,2.3807D-02,2.6404D-02,2.9338D-02,
+     &3.3433D-02,3.8036D-02,4.3135D-02,4.8799D-02,5.5061D-02,6.1999D-02,
+     &6.9633D-02,7.8024D-02,8.7156D-02,9.6998D-02,1.0742D-01,1.2099D-01,
+     &1.5162D-01,1.9121D-01,2.4363D-01,3.1510D-01,4.1638D-01,5.6669D-01,
+     &8.0557D-01,1.2216D+00,2.0572D+00,4.2084D+00,1.3911D+01,0.0000D+00,
+     &4.2554D-02,4.3210D-02,4.3820D-02,4.4379D-02,4.4862D-02,4.5317D-02,
+     &4.5708D-02,4.6037D-02,4.6300D-02,4.6434D-02,4.6540D-02,4.6530D-02,
+     &4.6426D-02,4.6317D-02,4.6155D-02,4.5919D-02,4.5622D-02,4.5267D-02,
+     &4.4833D-02,4.4425D-02,4.3932D-02,4.3298D-02,4.2582D-02,4.1785D-02/
+      DATA (XSF_L(K),K=  229,  342) /
+     &4.0903D-02,4.0097D-02,3.9179D-02,3.8047D-02,3.6815D-02,3.5547D-02,
+     &3.4199D-02,3.3020D-02,3.1748D-02,3.0298D-02,2.8905D-02,2.7644D-02,
+     &2.6563D-02,2.5882D-02,2.5485D-02,2.5614D-02,2.6651D-02,2.8199D-02,
+     &3.0731D-02,3.3652D-02,3.7768D-02,4.2390D-02,4.7530D-02,5.3188D-02,
+     &5.9436D-02,6.6257D-02,7.3734D-02,8.1918D-02,9.0696D-02,1.0004D-01,
+     &1.0978D-01,1.2357D-01,1.5274D-01,1.8999D-01,2.3888D-01,3.0452D-01,
+     &3.9656D-01,5.3136D-01,7.4246D-01,1.1043D+00,1.8158D+00,3.6023D+00,
+     &0.0000D+00,0.0000D+00,7.3602D-02,7.4085D-02,7.4460D-02,7.4729D-02,
+     &7.4904D-02,7.4982D-02,7.4902D-02,7.4713D-02,7.4446D-02,7.3972D-02,
+     &7.3397D-02,7.2626D-02,7.1803D-02,7.1200D-02,7.0479D-02,6.9610D-02,
+     &6.8654D-02,6.7624D-02,6.6495D-02,6.5467D-02,6.4313D-02,6.2898D-02,
+     &6.1380D-02,5.9788D-02,5.8079D-02,5.6557D-02,5.4876D-02,5.2866D-02,
+     &5.0733D-02,4.8592D-02,4.6341D-02,4.4415D-02,4.2370D-02,4.0073D-02,
+     &3.7825D-02,3.5778D-02,3.3956D-02,3.2702D-02,3.1749D-02,3.1334D-02,
+     &3.1922D-02,3.3216D-02,3.5534D-02,3.8322D-02,4.2321D-02,4.6830D-02,
+     &5.1816D-02,5.7335D-02,6.3369D-02,6.9947D-02,7.7109D-02,8.4752D-02,
+     &9.2948D-02,1.0153D-01,1.1031D-01,1.2405D-01,1.5100D-01,1.8509D-01,
+     &2.2905D-01,2.8761D-01,3.6847D-01,4.8537D-01,6.6543D-01,9.6831D-01,
+     &1.5524D+00,2.9766D+00,0.0000D+00,0.0000D+00,1.1509D-01,1.1500D-01/
+      DATA (XSF_L(K),K=  343,  456) /
+     &1.1474D-01,1.1430D-01,1.1371D-01,1.1292D-01,1.1196D-01,1.1079D-01,
+     &1.0948D-01,1.0791D-01,1.0620D-01,1.0426D-01,1.0215D-01,1.0076D-01,
+     &9.9224D-02,9.7466D-02,9.5472D-02,9.3507D-02,9.1346D-02,8.9460D-02,
+     &8.7382D-02,8.4914D-02,8.2326D-02,7.9663D-02,7.6874D-02,7.4459D-02,
+     &7.1794D-02,6.8694D-02,6.5489D-02,6.2266D-02,5.8964D-02,5.6164D-02,
+     &5.3226D-02,4.9916D-02,4.6721D-02,4.3794D-02,4.1128D-02,3.9225D-02,
+     &3.7654D-02,3.6613D-02,3.6666D-02,3.7626D-02,3.9655D-02,4.2227D-02,
+     &4.6000D-02,5.0288D-02,5.5044D-02,6.0308D-02,6.6020D-02,7.2218D-02,
+     &7.8943D-02,8.6079D-02,9.3611D-02,1.0141D-01,1.0925D-01,1.2274D-01,
+     &1.4748D-01,1.7840D-01,2.1791D-01,2.6997D-01,3.4109D-01,4.4280D-01,
+     &5.9706D-01,8.5325D-01,1.3371D+00,2.4909D+00,0.0000D+00,0.0000D+00,
+     &1.8131D-01,1.7986D-01,1.7802D-01,1.7597D-01,1.7372D-01,1.7110D-01,
+     &1.6825D-01,1.6515D-01,1.6187D-01,1.5820D-01,1.5428D-01,1.5016D-01,
+     &1.4582D-01,1.4314D-01,1.4017D-01,1.3677D-01,1.3315D-01,1.2951D-01,
+     &1.2571D-01,1.2248D-01,1.1891D-01,1.1472D-01,1.1045D-01,1.0615D-01,
+     &1.0173D-01,9.7944D-02,9.3854D-02,8.9131D-02,8.4347D-02,7.9597D-02,
+     &7.4799D-02,7.0788D-02,6.6599D-02,6.1932D-02,5.7438D-02,5.3307D-02,
+     &4.9546D-02,4.6816D-02,4.4417D-02,4.2536D-02,4.1862D-02,4.2361D-02,
+     &4.3960D-02,4.6198D-02,4.9612D-02,5.3553D-02,5.7974D-02,6.2830D-02/
+      DATA (XSF_L(K),K=  457,  570) /
+     &6.8141D-02,7.3865D-02,7.9970D-02,8.6422D-02,9.3160D-02,1.0006D-01,
+     &1.0685D-01,1.1989D-01,1.4199D-01,1.6937D-01,2.0407D-01,2.4925D-01,
+     &3.1029D-01,3.9635D-01,5.2529D-01,7.3579D-01,1.1263D+00,2.0347D+00,
+     &0.0000D+00,0.0000D+00,2.6278D-01,2.5883D-01,2.5460D-01,2.5007D-01,
+     &2.4526D-01,2.3995D-01,2.3437D-01,2.2848D-01,2.2242D-01,2.1578D-01,
+     &2.0894D-01,2.0181D-01,1.9465D-01,1.9018D-01,1.8540D-01,1.7984D-01,
+     &1.7415D-01,1.6846D-01,1.6261D-01,1.5768D-01,1.5234D-01,1.4615D-01,
+     &1.3987D-01,1.3368D-01,1.2736D-01,1.2199D-01,1.1628D-01,1.0975D-01,
+     &1.0321D-01,9.6788D-02,9.0380D-02,8.5059D-02,7.9532D-02,7.3436D-02,
+     &6.7594D-02,6.2243D-02,5.7363D-02,5.3720D-02,5.0502D-02,4.7772D-02,
+     &4.6346D-02,4.6358D-02,4.7497D-02,4.9377D-02,5.2401D-02,5.5965D-02,
+     &6.0009D-02,6.4489D-02,6.9334D-02,7.4546D-02,8.0117D-02,8.5936D-02,
+     &9.1972D-02,9.8056D-02,1.0398D-01,1.1644D-01,1.3628D-01,1.6068D-01,
+     &1.9127D-01,2.3085D-01,2.8377D-01,3.5756D-01,4.6698D-01,6.4315D-01,
+     &9.6485D-01,1.6969D+00,0.0000D+00,0.0000D+00,3.6944D-01,3.6187D-01,
+     &3.5380D-01,3.4525D-01,3.3659D-01,3.2716D-01,3.1761D-01,3.0767D-01,
+     &2.9759D-01,2.8675D-01,2.7586D-01,2.6462D-01,2.5339D-01,2.4660D-01,
+     &2.3933D-01,2.3101D-01,2.2257D-01,2.1415D-01,2.0571D-01,1.9854D-01,
+     &1.9083D-01,1.8216D-01,1.7338D-01,1.6480D-01,1.5613D-01,1.4885D-01/
+      DATA (XSF_L(K),K=  571,  684) /
+     &1.4115D-01,1.3244D-01,1.2380D-01,1.1542D-01,1.0713D-01,1.0031D-01,
+     &9.3226D-02,8.5515D-02,7.8171D-02,7.1449D-02,6.5307D-02,6.0723D-02,
+     &5.6523D-02,5.2878D-02,5.0622D-02,5.0109D-02,5.0720D-02,5.2187D-02,
+     &5.4770D-02,5.7950D-02,6.1582D-02,6.5595D-02,6.9997D-02,7.4716D-02,
+     &7.9677D-02,8.4886D-02,9.0221D-02,9.5543D-02,1.0065D-01,1.1245D-01,
+     &1.3012D-01,1.5166D-01,1.7859D-01,2.1305D-01,2.5881D-01,3.2188D-01,
+     &4.1454D-01,5.6186D-01,8.2718D-01,1.4188D+00,0.0000D+00,0.0000D+00,
+     &4.9195D-01,4.7916D-01,4.6620D-01,4.5277D-01,4.3908D-01,4.2463D-01,
+     &4.0985D-01,3.9491D-01,3.7975D-01,3.6377D-01,3.4790D-01,3.3178D-01,
+     &3.1592D-01,3.0640D-01,2.9622D-01,2.8462D-01,2.7303D-01,2.6160D-01,
+     &2.5012D-01,2.4047D-01,2.3023D-01,2.1867D-01,2.0717D-01,1.9597D-01,
+     &1.8477D-01,1.7546D-01,1.6568D-01,1.5468D-01,1.4387D-01,1.3343D-01,
+     &1.2319D-01,1.1482D-01,1.0622D-01,9.6828D-02,8.7978D-02,7.9884D-02,
+     &7.2526D-02,6.6973D-02,6.1948D-02,5.7359D-02,5.4304D-02,5.3263D-02,
+     &5.3381D-02,5.4456D-02,5.6601D-02,5.9380D-02,6.2613D-02,6.6252D-02,
+     &7.0174D-02,7.4432D-02,7.8943D-02,8.3559D-02,8.8282D-02,9.2963D-02,
+     &9.7382D-02,1.0858D-01,1.2441D-01,1.4363D-01,1.6745D-01,1.9778D-01,
+     &2.3771D-01,2.9246D-01,3.7200D-01,4.9738D-01,7.2010D-01,1.2083D+00,
+     &0.0000D+00,0.0000D+00,6.4521D-01,6.2534D-01,6.0540D-01,5.8499D-01/
+      DATA (XSF_L(K),K=  685,  798) /
+     &5.6467D-01,5.4301D-01,5.2143D-01,4.9951D-01,4.7813D-01,4.5538D-01,
+     &4.3325D-01,4.1083D-01,3.8899D-01,3.7591D-01,3.6210D-01,3.4648D-01,
+     &3.3091D-01,3.1578D-01,3.0062D-01,2.8797D-01,2.7469D-01,2.5979D-01,
+     &2.4501D-01,2.3066D-01,2.1649D-01,2.0481D-01,1.9252D-01,1.7884D-01,
+     &1.6549D-01,1.5274D-01,1.4029D-01,1.3018D-01,1.1985D-01,1.0865D-01,
+     &9.8135D-02,8.8550D-02,7.9829D-02,7.3318D-02,6.7269D-02,6.1748D-02,
+     &5.7838D-02,5.6250D-02,5.5826D-02,5.6474D-02,5.8181D-02,6.0533D-02,
+     &6.3373D-02,6.6563D-02,7.0085D-02,7.3865D-02,7.7842D-02,8.1937D-02,
+     &8.6092D-02,9.0169D-02,9.3962D-02,1.0448D-01,1.1858D-01,1.3561D-01,
+     &1.5663D-01,1.8318D-01,2.1803D-01,2.6529D-01,3.3349D-01,4.3985D-01,
+     &6.2661D-01,1.0291D+00,0.0000D+00,0.0000D+00,8.2462D-01,7.9558D-01,
+     &7.6680D-01,7.3764D-01,7.0860D-01,6.7834D-01,6.4822D-01,6.1798D-01,
+     &5.8880D-01,5.5792D-01,5.2800D-01,4.9801D-01,4.6912D-01,4.5197D-01,
+     &4.3393D-01,4.1360D-01,3.9348D-01,3.7394D-01,3.5462D-01,3.3856D-01,
+     &3.2180D-01,3.0303D-01,2.8460D-01,2.6681D-01,2.4932D-01,2.3502D-01,
+     &2.2005D-01,2.0359D-01,1.8747D-01,1.7224D-01,1.5746D-01,1.4551D-01,
+     &1.3337D-01,1.2028D-01,1.0805D-01,9.6986D-02,8.6877D-02,7.9334D-02,
+     &7.2326D-02,6.5799D-02,6.1060D-02,5.8911D-02,5.7957D-02,5.8189D-02,
+     &5.9441D-02,6.1387D-02,6.3834D-02,6.6632D-02,6.9732D-02,7.3070D-02/
+      DATA (XSF_L(K),K=  799,  912) /
+     &7.6595D-02,8.0190D-02,8.3816D-02,8.7358D-02,9.0631D-02,1.0046D-01,
+     &1.1304D-01,1.2815D-01,1.4670D-01,1.7006D-01,2.0049D-01,2.4154D-01,
+     &3.0039D-01,3.9121D-01,5.4894D-01,8.8378D-01,0.0000D+00,0.0000D+00,
+     &1.0199D+00,9.8025D-01,9.4100D-01,9.0151D-01,8.6283D-01,8.2243D-01,
+     &7.8262D-01,7.4321D-01,7.0465D-01,6.6494D-01,6.2647D-01,5.8811D-01,
+     &5.5152D-01,5.2985D-01,5.0721D-01,4.8183D-01,4.5681D-01,4.3274D-01,
+     &4.0883D-01,3.8916D-01,3.6878D-01,3.4589D-01,3.2366D-01,3.0238D-01,
+     &2.8152D-01,2.6437D-01,2.4685D-01,2.2733D-01,2.0858D-01,1.9085D-01,
+     &1.7375D-01,1.6000D-01,1.4607D-01,1.3115D-01,1.1722D-01,1.0469D-01,
+     &9.3284D-02,8.4739D-02,7.6803D-02,6.9420D-02,6.3844D-02,6.1178D-02,
+     &5.9720D-02,5.9561D-02,6.0398D-02,6.1984D-02,6.4051D-02,6.6494D-02,
+     &6.9202D-02,7.2161D-02,7.5274D-02,7.8453D-02,8.1651D-02,8.4728D-02,
+     &8.7564D-02,9.6777D-02,1.0806D-01,1.2157D-01,1.3806D-01,1.5882D-01,
+     &1.8566D-01,2.2170D-01,2.7301D-01,3.5168D-01,4.8696D-01,7.7010D-01,
+     &0.0000D+00,0.0000D+00,1.3158D+00,1.2585D+00,1.2024D+00,1.1462D+00,
+     &1.0919D+00,1.0352D+00,9.8042D-01,9.2608D-01,8.7345D-01,8.1987D-01,
+     &7.6814D-01,7.1724D-01,6.6882D-01,6.4053D-01,6.1093D-01,5.7796D-01,
+     &5.4572D-01,5.1470D-01,4.8433D-01,4.5934D-01,4.3358D-01,4.0495D-01,
+     &3.7717D-01,3.5082D-01,3.2513D-01,3.0408D-01,2.8258D-01,2.5918D-01/
+      DATA (XSF_L(K),K=  913, 1026) /
+     &2.3648D-01,2.1538D-01,1.9510D-01,1.7888D-01,1.6255D-01,1.4508D-01,
+     &1.2895D-01,1.1443D-01,1.0131D-01,9.1507D-02,8.2387D-02,7.3778D-02,
+     &6.7147D-02,6.3813D-02,6.1721D-02,6.1065D-02,6.1373D-02,6.2475D-02,
+     &6.4105D-02,6.6079D-02,6.8362D-02,7.0856D-02,7.3440D-02,7.6143D-02,
+     &7.8812D-02,8.1388D-02,8.3726D-02,9.2167D-02,1.0190D-01,1.1355D-01,
+     &1.2780D-01,1.4554D-01,1.6841D-01,1.9900D-01,2.4223D-01,3.0775D-01,
+     &4.1920D-01,6.4849D-01,0.0000D+00,0.0000D+00,1.6483D+00,1.5703D+00,
+     &1.4940D+00,1.4180D+00,1.3449D+00,1.2694D+00,1.1966D+00,1.1250D+00,
+     &1.0566D+00,9.8644D-01,9.1985D-01,8.5482D-01,7.9312D-01,7.5722D-01,
+     &7.1986D-01,6.7849D-01,6.3821D-01,5.9972D-01,5.6214D-01,5.3143D-01,
+     &4.9987D-01,4.6500D-01,4.3136D-01,3.9956D-01,3.6875D-01,3.4379D-01,
+     &3.1832D-01,2.9044D-01,2.6397D-01,2.3923D-01,2.1580D-01,1.9706D-01,
+     &1.7829D-01,1.5838D-01,1.3999D-01,1.2356D-01,1.0875D-01,9.7664D-02,
+     &8.7392D-02,7.7645D-02,7.0035D-02,6.6062D-02,6.3365D-02,6.2239D-02,
+     &6.2062D-02,6.2731D-02,6.3942D-02,6.5526D-02,6.7390D-02,6.9436D-02,
+     &7.1635D-02,7.3891D-02,7.6122D-02,7.8246D-02,8.0196D-02,8.7884D-02,
+     &9.6357D-02,1.0648D-01,1.1880D-01,1.3413D-01,1.5386D-01,1.7993D-01,
+     &2.1655D-01,2.7189D-01,3.6486D-01,5.5332D-01,0.0000D+00,0.0000D+00,
+     &2.0271D+00,1.9234D+00,1.8224D+00,1.7226D+00,1.6272D+00,1.5293D+00/
+      DATA (XSF_L(K),K= 1027, 1140) /
+     &1.4356D+00,1.3438D+00,1.2568D+00,1.1682D+00,1.0841D+00,1.0026D+00,
+     &9.2625D-01,8.8207D-01,8.3568D-01,7.8523D-01,7.3607D-01,6.8926D-01,
+     &6.4385D-01,6.0685D-01,5.6892D-01,5.2730D-01,4.8731D-01,4.4961D-01,
+     &4.1331D-01,3.8417D-01,3.5441D-01,3.2210D-01,2.9168D-01,2.6323D-01,
+     &2.3631D-01,2.1500D-01,1.9374D-01,1.7129D-01,1.5067D-01,1.3231D-01,
+     &1.1579D-01,1.0349D-01,9.2080D-02,8.1205D-02,7.2626D-02,6.8039D-02,
+     &6.4761D-02,6.3188D-02,6.2549D-02,6.2795D-02,6.3617D-02,6.4835D-02,
+     &6.6329D-02,6.8017D-02,6.9809D-02,7.1667D-02,7.3520D-02,7.5270D-02,
+     &7.6864D-02,8.3899D-02,9.1206D-02,1.0002D-01,1.1070D-01,1.2399D-01,
+     &1.4094D-01,1.6341D-01,1.9474D-01,2.4163D-01,3.1971D-01,4.7587D-01,
+     &0.0000D+00,0.0000D+00,2.4392D+00,2.3049D+00,2.1760D+00,2.0502D+00,
+     &1.9296D+00,1.8065D+00,1.6895D+00,1.5750D+00,1.4674D+00,1.3585D+00,
+     &1.2554D+00,1.1565D+00,1.0638D+00,1.0103D+00,9.5527D-01,8.9449D-01,
+     &8.3572D-01,7.8018D-01,7.2635D-01,6.8280D-01,6.3819D-01,5.8948D-01,
+     &5.4299D-01,4.9923D-01,4.5740D-01,4.2371D-01,3.8978D-01,3.5296D-01,
+     &3.1832D-01,2.8629D-01,2.5599D-01,2.3212D-01,2.0840D-01,1.8346D-01,
+     &1.6065D-01,1.4043D-01,1.2229D-01,1.0880D-01,9.6294D-02,8.4335D-02,
+     &7.4905D-02,6.9717D-02,6.5897D-02,6.3914D-02,6.2851D-02,6.2731D-02,
+     &6.3183D-02,6.4075D-02,6.5225D-02,6.6597D-02,6.8048D-02,6.9577D-02/
+      DATA (XSF_L(K),K= 1141, 1254) /
+     &7.1093D-02,7.2525D-02,7.3842D-02,8.0241D-02,8.6615D-02,9.4292D-02,
+     &1.0360D-01,1.1517D-01,1.2992D-01,1.4936D-01,1.7633D-01,2.1652D-01,
+     &2.8294D-01,4.1389D-01,0.0000D+00,0.0000D+00,2.9162D+00,2.7470D+00,
+     &2.5840D+00,2.4244D+00,2.2743D+00,2.1215D+00,1.9764D+00,1.8358D+00,
+     &1.7035D+00,1.5708D+00,1.4463D+00,1.3268D+00,1.2152D+00,1.1514D+00,
+     &1.0857D+00,1.0132D+00,9.4449D-01,8.7867D-01,8.1556D-01,7.6453D-01,
+     &7.1252D-01,6.5602D-01,6.0218D-01,5.5192D-01,5.0387D-01,4.6545D-01,
+     &4.2679D-01,3.8521D-01,3.4602D-01,3.1005D-01,2.7623D-01,2.4962D-01,
+     &2.2332D-01,1.9577D-01,1.7070D-01,1.4856D-01,1.2874D-01,1.1402D-01,
+     &1.0040D-01,8.7343D-02,7.6984D-02,7.1254D-02,6.6892D-02,6.4508D-02,
+     &6.3019D-02,6.2518D-02,6.2667D-02,6.3211D-02,6.4031D-02,6.5064D-02,
+     &6.6243D-02,6.7458D-02,6.8679D-02,6.9830D-02,7.0885D-02,7.6672D-02,
+     &8.2192D-02,8.8844D-02,9.6930D-02,1.0696D-01,1.1972D-01,1.3654D-01,
+     &1.5978D-01,1.9411D-01,2.5048D-01,3.6023D-01,0.0000D+00,0.0000D+00,
+     &3.4281D+00,3.2194D+00,3.0180D+00,2.8239D+00,2.6400D+00,2.4537D+00,
+     &2.2781D+00,2.1087D+00,1.9503D+00,1.7915D+00,1.6433D+00,1.5021D+00,
+     &1.3711D+00,1.2958D+00,1.2191D+00,1.1350D+00,1.0536D+00,9.7846D-01,
+     &9.0526D-01,8.4668D-01,7.8697D-01,7.2243D-01,6.6110D-01,6.0402D-01,
+     &5.4971D-01,5.0652D-01,4.6307D-01,4.1647D-01,3.7287D-01,3.3288D-01/
+      DATA (XSF_L(K),K= 1255, 1368) /
+     &2.9545D-01,2.6636D-01,2.3751D-01,2.0740D-01,1.8012D-01,1.5611D-01,
+     &1.3467D-01,1.1881D-01,1.0414D-01,9.0105D-02,7.8839D-02,7.2563D-02,
+     &6.7703D-02,6.4930D-02,6.3070D-02,6.2241D-02,6.2071D-02,6.2347D-02,
+     &6.2882D-02,6.3645D-02,6.4526D-02,6.5473D-02,6.6427D-02,6.7333D-02,
+     &6.8194D-02,7.3430D-02,7.8217D-02,8.3974D-02,9.1017D-02,9.9745D-02,
+     &1.1088D-01,1.2552D-01,1.4563D-01,1.7528D-01,2.2351D-01,3.1636D-01,
+     &0.0000D+00,0.0000D+00,3.9892D+00,3.7328D+00,3.4900D+00,3.2549D+00,
+     &3.0344D+00,2.8108D+00,2.6014D+00,2.4001D+00,2.2123D+00,2.0253D+00,
+     &1.8518D+00,1.6860D+00,1.5339D+00,1.4463D+00,1.3575D+00,1.2608D+00,
+     &1.1678D+00,1.0809D+00,9.9767D-01,9.3087D-01,8.6314D-01,7.8996D-01,
+     &7.2083D-01,6.5671D-01,5.9602D-01,5.4775D-01,4.9935D-01,4.4773D-01,
+     &3.9951D-01,3.5571D-01,3.1467D-01,2.8272D-01,2.5135D-01,2.1871D-01,
+     &1.8923D-01,1.6331D-01,1.4031D-01,1.2332D-01,1.0762D-01,9.2560D-02,
+     &8.0473D-02,7.3714D-02,6.8385D-02,6.5246D-02,6.3019D-02,6.1878D-02,
+     &6.1420D-02,6.1413D-02,6.1734D-02,6.2226D-02,6.2861D-02,6.3564D-02,
+     &6.4288D-02,6.4985D-02,6.5657D-02,7.0367D-02,7.4522D-02,7.9506D-02,
+     &8.5651D-02,9.3297D-02,1.0298D-01,1.1572D-01,1.3323D-01,1.5884D-01,
+     &2.0039D-01,2.7925D-01,0.0000D+00,0.0000D+00,4.5788D+00,4.2729D+00,
+     &3.9840D+00,3.7039D+00,3.4438D+00,3.1812D+00,2.9349D+00,2.6996D+00/
+      DATA (XSF_L(K),K= 1369, 1482) /
+     &2.4810D+00,2.2644D+00,2.0633D+00,1.8732D+00,1.6979D+00,1.5988D+00,
+     &1.4974D+00,1.3865D+00,1.2812D+00,1.1834D+00,1.0891D+00,1.0143D+00,
+     &9.3839D-01,8.5662D-01,7.7948D-01,7.0838D-01,6.4106D-01,5.8780D-01,
+     &5.3454D-01,4.7781D-01,4.2528D-01,3.7737D-01,3.3289D-01,2.9818D-01,
+     &2.6446D-01,2.2932D-01,1.9770D-01,1.7005D-01,1.4552D-01,1.2746D-01,
+     &1.1078D-01,9.4770D-02,8.1957D-02,7.4689D-02,6.8915D-02,6.5457D-02,
+     &6.2902D-02,6.1493D-02,6.0768D-02,6.0515D-02,6.0585D-02,6.0863D-02,
+     &6.1298D-02,6.1789D-02,6.2311D-02,6.2835D-02,6.3340D-02,6.7601D-02,
+     &7.1162D-02,7.5516D-02,8.0878D-02,8.7566D-02,9.6095D-02,1.0725D-01,
+     &1.2258D-01,1.4495D-01,1.8090D-01,2.4841D-01,0.0000D+00,0.0000D+00,
+     &5.4774D+00,5.0929D+00,4.7320D+00,4.3841D+00,4.0592D+00,3.7350D+00,
+     &3.4329D+00,3.1454D+00,2.8799D+00,2.6172D+00,2.3747D+00,2.1466D+00,
+     &1.9383D+00,1.8195D+00,1.6996D+00,1.5689D+00,1.4457D+00,1.3301D+00,
+     &1.2211D+00,1.1339D+00,1.0456D+00,9.5119D-01,8.6259D-01,7.8097D-01,
+     &7.0419D-01,6.4380D-01,5.8358D-01,5.1955D-01,4.6051D-01,4.0719D-01,
+     &3.5768D-01,3.1962D-01,2.8220D-01,2.4360D-01,2.0909D-01,1.7895D-01,
+     &1.5240D-01,1.3282D-01,1.1484D-01,9.7655D-02,8.3739D-02,7.5857D-02,
+     &6.9509D-02,6.5616D-02,6.2633D-02,6.0853D-02,5.9819D-02,5.9271D-02,
+     &5.9038D-02,5.9046D-02,5.9192D-02,5.9432D-02,5.9709D-02,6.0008D-02/
+      DATA (XSF_L(K),K= 1483, 1596) /
+     &6.0340D-02,6.4032D-02,6.6851D-02,7.0446D-02,7.4870D-02,8.0457D-02,
+     &8.7554D-02,9.6862D-02,1.0964D-01,1.2821D-01,1.5779D-01,2.1189D-01,
+     &0.0000D+00,0.0000D+00,6.3982D+00,5.9307D+00,5.4920D+00,5.0710D+00,
+     &4.6822D+00,4.2915D+00,3.9337D+00,3.5898D+00,3.2756D+00,2.9660D+00,
+     &2.6817D+00,2.4150D+00,2.1724D+00,2.0348D+00,1.8961D+00,1.7457D+00,
+     &1.6034D+00,1.4714D+00,1.3471D+00,1.2473D+00,1.1476D+00,1.0408D+00,
+     &9.4083D-01,8.4932D-01,7.6350D-01,6.9606D-01,6.2897D-01,5.5833D-01,
+     &4.9315D-01,4.3444D-01,3.8044D-01,3.3861D-01,2.9817D-01,2.5642D-01,
+     &2.1917D-01,1.8685D-01,1.5838D-01,1.3752D-01,1.1831D-01,9.9987D-02,
+     &8.5224D-02,7.6762D-02,6.9910D-02,6.5655D-02,6.2297D-02,6.0213D-02,
+     &5.8897D-02,5.8096D-02,5.7624D-02,5.7400D-02,5.7322D-02,5.7351D-02,
+     &5.7432D-02,5.7560D-02,5.7758D-02,6.0939D-02,6.3212D-02,6.6167D-02,
+     &6.9884D-02,7.4560D-02,8.0552D-02,8.8432D-02,9.9242D-02,1.1491D-01,
+     &1.3966D-01,1.8320D-01,0.0000D+00,0.0000D+00,7.4490D+00,6.8826D+00,
+     &6.3540D+00,5.8477D+00,5.3805D+00,4.9187D+00,4.4884D+00,4.0843D+00,
+     &3.7147D+00,3.3516D+00,3.0193D+00,2.7088D+00,2.4279D+00,2.2696D+00,
+     &2.1091D+00,1.9368D+00,1.7739D+00,1.6237D+00,1.4821D+00,1.3692D+00,
+     &1.2557D+00,1.1358D+00,1.0238D+00,9.2133D-01,8.2567D-01,7.5070D-01,
+     &6.7656D-01,5.9850D-01,5.2688D-01,4.6263D-01,4.0371D-01,3.5842D-01/
+      DATA (XSF_L(K),K= 1597, 1710) /
+     &3.1427D-01,2.6933D-01,2.2930D-01,1.9466D-01,1.6427D-01,1.4208D-01,
+     &1.2168D-01,1.0226D-01,8.6560D-02,7.7553D-02,7.0202D-02,6.5576D-02,
+     &6.1860D-02,5.9487D-02,5.7920D-02,5.6852D-02,5.6166D-02,5.5736D-02,
+     &5.5458D-02,5.5289D-02,5.5193D-02,5.5163D-02,5.5243D-02,5.7935D-02,
+     &5.9740D-02,6.2111D-02,6.5158D-02,6.9050D-02,7.4078D-02,8.0683D-02,
+     &8.9776D-02,1.0288D-01,1.2351D-01,1.5725D-01,0.0000D+00,0.0000D+00,
+     &8.6044D+00,7.9255D+00,7.2940D+00,6.6940D+00,6.1391D+00,5.5940D+00,
+     &5.0907D+00,4.6180D+00,4.1841D+00,3.7622D+00,3.3775D+00,3.0195D+00,
+     &2.6967D+00,2.5153D+00,2.3331D+00,2.1364D+00,1.9521D+00,1.7815D+00,
+     &1.6211D+00,1.4944D+00,1.3683D+00,1.2334D+00,1.1084D+00,9.9465D-01,
+     &8.8864D-01,8.0585D-01,7.2432D-01,6.3866D-01,5.6038D-01,4.9058D-01,
+     &4.2648D-01,3.7768D-01,3.3036D-01,2.8189D-01,2.3907D-01,2.0214D-01,
+     &1.6987D-01,1.4635D-01,1.2479D-01,1.0428D-01,8.7748D-02,7.8203D-02,
+     &7.0386D-02,6.5431D-02,6.1373D-02,5.8719D-02,5.6916D-02,5.5642D-02,
+     &5.4751D-02,5.4118D-02,5.3653D-02,5.3314D-02,5.3067D-02,5.2897D-02,
+     &5.2861D-02,5.5140D-02,5.6493D-02,5.8378D-02,6.0860D-02,6.4090D-02,
+     &6.8261D-02,7.3828D-02,8.1439D-02,9.2423D-02,1.0952D-01,1.3424D-01,
+     &0.0000D+00,0.0000D+00,9.7645D+00,8.9701D+00,8.2340D+00,7.5357D+00,
+     &6.8926D+00,6.2607D+00,5.6834D+00,5.1374D+00,4.6459D+00,4.1625D+00/
+      DATA (XSF_L(K),K= 1711, 1824) /
+     &3.7261D+00,3.3206D+00,2.9567D+00,2.7529D+00,2.5476D+00,2.3274D+00,
+     &2.1217D+00,1.9320D+00,1.7541D+00,1.6131D+00,1.4740D+00,1.3257D+00,
+     &1.1879D+00,1.0631D+00,9.4732D-01,8.5726D-01,7.6844D-01,6.7586D-01,
+     &5.9131D-01,5.1597D-01,4.4748D-01,3.9504D-01,3.4470D-01,2.9317D-01,
+     &2.4779D-01,2.0880D-01,1.7478D-01,1.5007D-01,1.2748D-01,1.0600D-01,
+     &8.8713D-02,7.8704D-02,7.0472D-02,6.5220D-02,6.0885D-02,5.7993D-02,
+     &5.5967D-02,5.4536D-02,5.3470D-02,5.2665D-02,5.2054D-02,5.1577D-02,
+     &5.1203D-02,5.0930D-02,5.0809D-02,5.2731D-02,5.3716D-02,5.5192D-02,
+     &5.7203D-02,5.9902D-02,6.3412D-02,6.8123D-02,7.4602D-02,8.3905D-02,
+     &9.8185D-02,1.1515D-01,0.0000D+00,0.0000D+00,1.1069D+01,1.0141D+01,
+     &9.2840D+00,8.4741D+00,7.7316D+00,7.0038D+00,6.3364D+00,5.7137D+00,
+     &5.1475D+00,4.6031D+00,4.1059D+00,3.6477D+00,3.2381D+00,3.0086D+00,
+     &2.7788D+00,2.5333D+00,2.3033D+00,2.0926D+00,1.8951D+00,1.7404D+00,
+     &1.5854D+00,1.4229D+00,1.2715D+00,1.1352D+00,1.0089D+00,9.1089D-01,
+     &8.1457D-01,7.1424D-01,6.2332D-01,5.4229D-01,4.6872D-01,4.1295D-01,
+     &3.5903D-01,3.0454D-01,2.5654D-01,2.1539D-01,1.7965D-01,1.5373D-01,
+     &1.3011D-01,1.0766D-01,8.9530D-02,7.9108D-02,7.0483D-02,6.4943D-02,
+     &6.0331D-02,5.7203D-02,5.4990D-02,5.3395D-02,5.2144D-02,5.1206D-02,
+     &5.0454D-02,4.9840D-02,4.9351D-02,4.8978D-02,4.8801D-02,5.0351D-02/
+      DATA (XSF_L(K),K= 1825, 1836) /
+     &5.1017D-02,5.2127D-02,5.3737D-02,5.5934D-02,5.8835D-02,6.2800D-02,
+     &6.8260D-02,7.6135D-02,8.7873D-02,0.0000D+00,0.0000D+00,0.0000D+00/
+      DATA (XGF_L(K),K=    1,  114) /
+     &1.0646D+00,1.0934D+00,1.1214D+00,1.1484D+00,1.1741D+00,1.1999D+00,
+     &1.2242D+00,1.2466D+00,1.2676D+00,1.2873D+00,1.3042D+00,1.3194D+00,
+     &1.3313D+00,1.3376D+00,1.3430D+00,1.3472D+00,1.3502D+00,1.3504D+00,
+     &1.3501D+00,1.3478D+00,1.3430D+00,1.3356D+00,1.3267D+00,1.3149D+00,
+     &1.3003D+00,1.2857D+00,1.2680D+00,1.2451D+00,1.2189D+00,1.1899D+00,
+     &1.1575D+00,1.1282D+00,1.0947D+00,1.0543D+00,1.0121D+00,9.6983D-01,
+     &9.2809D-01,8.9556D-01,8.6663D-01,8.4606D-01,8.4971D-01,8.7714D-01,
+     &9.3569D-01,1.0140D+00,1.1325D+00,1.2706D+00,1.4268D+00,1.6005D+00,
+     &1.7918D+00,2.0014D+00,2.2301D+00,2.4791D+00,2.7490D+00,3.0404D+00,
+     &3.3541D+00,3.5718D+00,4.2579D+00,5.0478D+00,5.9674D+00,7.0458D+00,
+     &8.3375D+00,9.9284D+00,1.1949D+01,1.4650D+01,1.8560D+01,2.5096D+01,
+     &4.0067D+01,0.0000D+00,1.6404D+00,1.6723D+00,1.7014D+00,1.7287D+00,
+     &1.7533D+00,1.7768D+00,1.7973D+00,1.8152D+00,1.8297D+00,1.8417D+00,
+     &1.8498D+00,1.8540D+00,1.8544D+00,1.8526D+00,1.8489D+00,1.8424D+00,
+     &1.8335D+00,1.8221D+00,1.8091D+00,1.7949D+00,1.7784D+00,1.7555D+00,
+     &1.7310D+00,1.7034D+00,1.6713D+00,1.6428D+00,1.6093D+00,1.5680D+00,
+     &1.5230D+00,1.4754D+00,1.4241D+00,1.3785D+00,1.3278D+00,1.2681D+00,
+     &1.2068D+00,1.1462D+00,1.0867D+00,1.0400D+00,9.9665D-01,9.6041D-01,
+     &9.4923D-01,9.6563D-01,1.0117D+00,1.0781D+00,1.1816D+00,1.3028D+00/
+      DATA (XGF_L(K),K=  115,  228) /
+     &1.4397D+00,1.5912D+00,1.7573D+00,1.9376D+00,2.1326D+00,2.3425D+00,
+     &2.5677D+00,2.8078D+00,3.0611D+00,3.2398D+00,3.7904D+00,4.4126D+00,
+     &5.1162D+00,5.9322D+00,6.8841D+00,8.0278D+00,9.4403D+00,1.1276D+01,
+     &1.3844D+01,1.7948D+01,2.6821D+01,0.0000D+00,2.5295D+00,2.5563D+00,
+     &2.5800D+00,2.5995D+00,2.6174D+00,2.6286D+00,2.6363D+00,2.6395D+00,
+     &2.6379D+00,2.6306D+00,2.6184D+00,2.6000D+00,2.5768D+00,2.5598D+00,
+     &2.5397D+00,2.5137D+00,2.4839D+00,2.4516D+00,2.4161D+00,2.3833D+00,
+     &2.3459D+00,2.3000D+00,2.2499D+00,2.1966D+00,2.1407D+00,2.0900D+00,
+     &2.0320D+00,1.9647D+00,1.8929D+00,1.8190D+00,1.7411D+00,1.6734D+00,
+     &1.5997D+00,1.5142D+00,1.4279D+00,1.3438D+00,1.2617D+00,1.1967D+00,
+     &1.1353D+00,1.0800D+00,1.0501D+00,1.0526D+00,1.0849D+00,1.1369D+00,
+     &1.2228D+00,1.3250D+00,1.4410D+00,1.5691D+00,1.7085D+00,1.8587D+00,
+     &2.0200D+00,2.1915D+00,2.3728D+00,2.5633D+00,2.7603D+00,2.9047D+00,
+     &3.3315D+00,3.8026D+00,4.3243D+00,4.9121D+00,5.5828D+00,6.3648D+00,
+     &7.3038D+00,8.4817D+00,1.0068D+01,1.2484D+01,1.7398D+01,0.0000D+00,
+     &3.9781D+00,3.9859D+00,3.9880D+00,3.9845D+00,3.9763D+00,3.9582D+00,
+     &3.9337D+00,3.9028D+00,3.8636D+00,3.8159D+00,3.7613D+00,3.6984D+00,
+     &3.6287D+00,3.5836D+00,3.5326D+00,3.4703D+00,3.4046D+00,3.3350D+00,
+     &3.2612D+00,3.1962D+00,3.1248D+00,3.0388D+00,2.9485D+00,2.8565D+00/
+      DATA (XGF_L(K),K=  229,  342) /
+     &2.7591D+00,2.6752D+00,2.5823D+00,2.4756D+00,2.3627D+00,2.2510D+00,
+     &2.1352D+00,2.0365D+00,1.9308D+00,1.8097D+00,1.6896D+00,1.5737D+00,
+     &1.4618D+00,1.3735D+00,1.2886D+00,1.2087D+00,1.1551D+00,1.1411D+00,
+     &1.1545D+00,1.1903D+00,1.2550D+00,1.3356D+00,1.4282D+00,1.5306D+00,
+     &1.6419D+00,1.7606D+00,1.8869D+00,2.0194D+00,2.1574D+00,2.2992D+00,
+     &2.4432D+00,2.5568D+00,2.8674D+00,3.2008D+00,3.5626D+00,3.9572D+00,
+     &4.3932D+00,4.8857D+00,5.4544D+00,6.1386D+00,7.0188D+00,8.2895D+00,
+     &1.0709D+01,0.0000D+00,6.3697D+00,6.3265D+00,6.2740D+00,6.2091D+00,
+     &6.1391D+00,6.0517D+00,5.9560D+00,5.8525D+00,5.7367D+00,5.6106D+00,
+     &5.4709D+00,5.3235D+00,5.1695D+00,5.0724D+00,4.9662D+00,4.8411D+00,
+     &4.7105D+00,4.5784D+00,4.4412D+00,4.3226D+00,4.1943D+00,4.0442D+00,
+     &3.8903D+00,3.7360D+00,3.5773D+00,3.4420D+00,3.2967D+00,3.1301D+00,
+     &2.9593D+00,2.7916D+00,2.6229D+00,2.4802D+00,2.3301D+00,2.1613D+00,
+     &1.9957D+00,1.8382D+00,1.6875D+00,1.5691D+00,1.4545D+00,1.3433D+00,
+     &1.2614D+00,1.2264D+00,1.2177D+00,1.2342D+00,1.2749D+00,1.3313D+00,
+     &1.3987D+00,1.4740D+00,1.5559D+00,1.6431D+00,1.7346D+00,1.8295D+00,
+     &1.9260D+00,2.0232D+00,2.1174D+00,2.2034D+00,2.4118D+00,2.6289D+00,
+     &2.8563D+00,3.0948D+00,3.3486D+00,3.6231D+00,3.9250D+00,4.2677D+00,
+     &4.6847D+00,5.2492D+00,6.2650D+00,0.0000D+00,9.3778D+00,9.2428D+00/
+      DATA (XGF_L(K),K=  343,  456) /
+     &9.0960D+00,8.9365D+00,8.7665D+00,8.5746D+00,8.3714D+00,8.1544D+00,
+     &7.9343D+00,7.6882D+00,7.4352D+00,7.1724D+00,6.9027D+00,6.7360D+00,
+     &6.5571D+00,6.3494D+00,6.1374D+00,5.9260D+00,5.7093D+00,5.5249D+00,
+     &5.3270D+00,5.0995D+00,4.8700D+00,4.6419D+00,4.4114D+00,4.2173D+00,
+     &4.0129D+00,3.7786D+00,3.5451D+00,3.3173D+00,3.0900D+00,2.9004D+00,
+     &2.7040D+00,2.4853D+00,2.2734D+00,2.0742D+00,1.8851D+00,1.7372D+00,
+     &1.5941D+00,1.4536D+00,1.3433D+00,1.2893D+00,1.2607D+00,1.2587D+00,
+     &1.2792D+00,1.3153D+00,1.3616D+00,1.4149D+00,1.4736D+00,1.5361D+00,
+     &1.6012D+00,1.6677D+00,1.7344D+00,1.7990D+00,1.8589D+00,1.9261D+00,
+     &2.0646D+00,2.2044D+00,2.3456D+00,2.4882D+00,2.6342D+00,2.7823D+00,
+     &2.9370D+00,3.1022D+00,3.2902D+00,3.5288D+00,3.9528D+00,0.0000D+00,
+     &1.3926D+01,1.3617D+01,1.3298D+01,1.2959D+01,1.2612D+01,1.2230D+01,
+     &1.1845D+01,1.1442D+01,1.1036D+01,1.0599D+01,1.0158D+01,9.7041D+00,
+     &9.2562D+00,8.9827D+00,8.6974D+00,8.3632D+00,8.0255D+00,7.6946D+00,
+     &7.3614D+00,7.0802D+00,6.7814D+00,6.4439D+00,6.1064D+00,5.7775D+00,
+     &5.4468D+00,5.1723D+00,4.8858D+00,4.5617D+00,4.2425D+00,3.9361D+00,
+     &3.6353D+00,3.3874D+00,3.1301D+00,2.8506D+00,2.5816D+00,2.3318D+00,
+     &2.0965D+00,1.9136D+00,1.7368D+00,1.5622D+00,1.4211D+00,1.3452D+00,
+     &1.2937D+00,1.2737D+00,1.2719D+00,1.2868D+00,1.3119D+00,1.3437D+00/
+      DATA (XGF_L(K),K=  457,  570) /
+     &1.3799D+00,1.4189D+00,1.4596D+00,1.5003D+00,1.5401D+00,1.5761D+00,
+     &1.6073D+00,1.6574D+00,1.7377D+00,1.8158D+00,1.8902D+00,1.9601D+00,
+     &2.0263D+00,2.0884D+00,2.1452D+00,2.1990D+00,2.2512D+00,2.3118D+00,
+     &2.4354D+00,0.0000D+00,1.9256D+01,1.8699D+01,1.8142D+01,1.7563D+01,
+     &1.6980D+01,1.6355D+01,1.5725D+01,1.5081D+01,1.4443D+01,1.3769D+01,
+     &1.3097D+01,1.2422D+01,1.1755D+01,1.1358D+01,1.0937D+01,1.0454D+01,
+     &9.9818D+00,9.5167D+00,9.0465D+00,8.6570D+00,8.2473D+00,7.7870D+00,
+     &7.3320D+00,6.8911D+00,6.4569D+00,6.0969D+00,5.7223D+00,5.3051D+00,
+     &4.8992D+00,4.5131D+00,4.1351D+00,3.8285D+00,3.5148D+00,3.1749D+00,
+     &2.8517D+00,2.5534D+00,2.2748D+00,2.0598D+00,1.8527D+00,1.6465D+00,
+     &1.4780D+00,1.3832D+00,1.3129D+00,1.2758D+00,1.2566D+00,1.2544D+00,
+     &1.2628D+00,1.2778D+00,1.2971D+00,1.3186D+00,1.3412D+00,1.3637D+00,
+     &1.3845D+00,1.4021D+00,1.4142D+00,1.4518D+00,1.4945D+00,1.5327D+00,
+     &1.5661D+00,1.5941D+00,1.6160D+00,1.6309D+00,1.6386D+00,1.6381D+00,
+     &1.6291D+00,1.6176D+00,1.6271D+00,0.0000D+00,2.5945D+01,2.5063D+01,
+     &2.4160D+01,2.3234D+01,2.2336D+01,2.1370D+01,2.0417D+01,1.9450D+01,
+     &1.8508D+01,1.7517D+01,1.6548D+01,1.5580D+01,1.4645D+01,1.4085D+01,
+     &1.3496D+01,1.2836D+01,1.2181D+01,1.1547D+01,1.0921D+01,1.0404D+01,
+     &9.8614D+00,9.2547D+00,8.6616D+00,8.0926D+00,7.5352D+00,7.0774D+00/
+      DATA (XGF_L(K),K=  571,  684) /
+     &6.6043D+00,6.0842D+00,5.5816D+00,5.1040D+00,4.6450D+00,4.2749D+00,
+     &3.8995D+00,3.4941D+00,3.1134D+00,2.7651D+00,2.4423D+00,2.1941D+00,
+     &1.9564D+00,1.7198D+00,1.5241D+00,1.4112D+00,1.3220D+00,1.2705D+00,
+     &1.2348D+00,1.2175D+00,1.2113D+00,1.2119D+00,1.2167D+00,1.2238D+00,
+     &1.2321D+00,1.2398D+00,1.2460D+00,1.2491D+00,1.2470D+00,1.2752D+00,
+     &1.2894D+00,1.2998D+00,1.3055D+00,1.3049D+00,1.2991D+00,1.2860D+00,
+     &1.2655D+00,1.2370D+00,1.1998D+00,1.1564D+00,1.1181D+00,0.0000D+00,
+     &3.3362D+01,3.2051D+01,3.0740D+01,2.9429D+01,2.8133D+01,2.6758D+01,
+     &2.5422D+01,2.4082D+01,2.2784D+01,2.1435D+01,2.0130D+01,1.8839D+01,
+     &1.7597D+01,1.6865D+01,1.6098D+01,1.5241D+01,1.4397D+01,1.3587D+01,
+     &1.2791D+01,1.2130D+01,1.1444D+01,1.0687D+01,9.9507D+00,9.2501D+00,
+     &8.5659D+00,8.0104D+00,7.4390D+00,6.8118D+00,6.2125D+00,5.6506D+00,
+     &5.1096D+00,4.6780D+00,4.2434D+00,3.7769D+00,3.3424D+00,2.9475D+00,
+     &2.5842D+00,2.3061D+00,2.0409D+00,1.7770D+00,1.5572D+00,1.4290D+00,
+     &1.3248D+00,1.2609D+00,1.2112D+00,1.1814D+00,1.1636D+00,1.1530D+00,
+     &1.1469D+00,1.1433D+00,1.1407D+00,1.1378D+00,1.1337D+00,1.1269D+00,
+     &1.1152D+00,1.1360D+00,1.1320D+00,1.1243D+00,1.1127D+00,1.0960D+00,
+     &1.0739D+00,1.0461D+00,1.0122D+00,9.7100D-01,9.2292D-01,8.6909D-01,
+     &8.1432D-01,0.0000D+00,4.2364D+01,4.0483D+01,3.8640D+01,3.6792D+01/
+      DATA (XGF_L(K),K=  685,  798) /
+     &3.4991D+01,3.3112D+01,3.1295D+01,2.9487D+01,2.7748D+01,2.5953D+01,
+     &2.4235D+01,2.2543D+01,2.0935D+01,1.9990D+01,1.9011D+01,1.7921D+01,
+     &1.6852D+01,1.5830D+01,1.4831D+01,1.4013D+01,1.3165D+01,1.2236D+01,
+     &1.1337D+01,1.0485D+01,9.6616D+00,8.9943D+00,8.3137D+00,7.5711D+00,
+     &6.8670D+00,6.2090D+00,5.5842D+00,5.0866D+00,4.5873D+00,4.0564D+00,
+     &3.5646D+00,3.1234D+00,2.7185D+00,2.4107D+00,2.1172D+00,1.8273D+00,
+     &1.5836D+00,1.4407D+00,1.3211D+00,1.2459D+00,1.1839D+00,1.1433D+00,
+     &1.1153D+00,1.0949D+00,1.0794D+00,1.0667D+00,1.0555D+00,1.0443D+00,
+     &1.0317D+00,1.0172D+00,9.9883D-01,1.0131D+00,9.9503D-01,9.7446D-01,
+     &9.5064D-01,9.2316D-01,8.9156D-01,8.5528D-01,8.1439D-01,7.6837D-01,
+     &7.1718D-01,6.6210D-01,6.0243D-01,0.0000D+00,5.2603D+01,5.0038D+01,
+     &4.7540D+01,4.5053D+01,4.2652D+01,4.0175D+01,3.7784D+01,3.5407D+01,
+     &3.3154D+01,3.0851D+01,2.8651D+01,2.6507D+01,2.4488D+01,2.3310D+01,
+     &2.2084D+01,2.0735D+01,1.9418D+01,1.8166D+01,1.6951D+01,1.5960D+01,
+     &1.4935D+01,1.3817D+01,1.2742D+01,1.1732D+01,1.0759D+01,9.9749D+00,
+     &9.1794D+00,8.3186D+00,7.5044D+00,6.7510D+00,6.0386D+00,5.4762D+00,
+     &4.9137D+00,4.3200D+00,3.7728D+00,3.2842D+00,2.8391D+00,2.5026D+00,
+     &2.1835D+00,1.8677D+00,1.6033D+00,1.4461D+00,1.3138D+00,1.2277D+00,
+     &1.1557D+00,1.1057D+00,1.0689D+00,1.0407D+00,1.0176D+00,9.9768D-01/
+      DATA (XGF_L(K),K=  799,  912) /
+     &9.7951D-01,9.6199D-01,9.4331D-01,9.2359D-01,9.0058D-01,9.0921D-01,
+     &8.8156D-01,8.5244D-01,8.2081D-01,7.8702D-01,7.5025D-01,7.1005D-01,
+     &6.6667D-01,6.1984D-01,5.6969D-01,5.1748D-01,4.5895D-01,0.0000D+00,
+     &6.3459D+01,6.0127D+01,5.6900D+01,5.3695D+01,5.0615D+01,4.7464D+01,
+     &4.4440D+01,4.1483D+01,3.8684D+01,3.5826D+01,3.3122D+01,3.0500D+01,
+     &2.8040D+01,2.6617D+01,2.5143D+01,2.3518D+01,2.1950D+01,2.0455D+01,
+     &1.9011D+01,1.7842D+01,1.6646D+01,1.5337D+01,1.4094D+01,1.2920D+01,
+     &1.1799D+01,1.0903D+01,9.9940D+00,9.0166D+00,8.0967D+00,7.2512D+00,
+     &6.4551D+00,5.8279D+00,5.2081D+00,4.5519D+00,3.9568D+00,3.4237D+00,
+     &2.9425D+00,2.5798D+00,2.2371D+00,1.8995D+00,1.6161D+00,1.4477D+00,
+     &1.3046D+00,1.2096D+00,1.1285D+00,1.0709D+00,1.0274D+00,9.9290D-01,
+     &9.6399D-01,9.3860D-01,9.1550D-01,8.9324D-01,8.7036D-01,8.4674D-01,
+     &8.2129D-01,8.2506D-01,7.9094D-01,7.5633D-01,7.2031D-01,6.8307D-01,
+     &6.4387D-01,6.0237D-01,5.5907D-01,5.1344D-01,4.6618D-01,4.1810D-01,
+     &3.6329D-01,0.0000D+00,7.9498D+01,7.4941D+01,7.0580D+01,6.6266D+01,
+     &6.2169D+01,5.8002D+01,5.4045D+01,5.0164D+01,4.6539D+01,4.2847D+01,
+     &3.9386D+01,3.6065D+01,3.2968D+01,3.1180D+01,2.9347D+01,2.7330D+01,
+     &2.5394D+01,2.3566D+01,2.1811D+01,2.0388D+01,1.8944D+01,1.7368D+01,
+     &1.5877D+01,1.4488D+01,1.3164D+01,1.2111D+01,1.1051D+01,9.9162D+00/
+      DATA (XGF_L(K),K=  913, 1026) /
+     &8.8542D+00,7.8839D+00,6.9777D+00,6.2689D+00,5.5695D+00,4.8410D+00,
+     &4.1789D+00,3.5909D+00,3.0635D+00,2.6689D+00,2.2973D+00,1.9324D+00,
+     &1.6270D+00,1.4446D+00,1.2882D+00,1.1839D+00,1.0926D+00,1.0266D+00,
+     &9.7585D-01,9.3473D-01,8.9976D-01,8.6898D-01,8.4068D-01,8.1374D-01,
+     &7.8714D-01,7.6011D-01,7.3262D-01,7.3148D-01,6.9170D-01,6.5270D-01,
+     &6.1357D-01,5.7426D-01,5.3417D-01,4.9316D-01,4.5166D-01,4.0914D-01,
+     &3.6649D-01,3.2429D-01,2.7651D-01,0.0000D+00,9.7091D+01,9.1127D+01,
+     &8.5440D+01,7.9869D+01,7.4603D+01,6.9275D+01,6.4220D+01,5.9343D+01,
+     &5.4780D+01,5.0195D+01,4.5912D+01,4.1816D+01,3.8028D+01,3.5857D+01,
+     &3.3637D+01,3.1205D+01,2.8880D+01,2.6695D+01,2.4601D+01,2.2923D+01,
+     &2.1219D+01,1.9374D+01,1.7634D+01,1.6009D+01,1.4488D+01,1.3276D+01,
+     &1.2064D+01,1.0772D+01,9.5709D+00,8.4795D+00,7.4649D+00,6.6775D+00,
+     &5.9046D+00,5.1015D+00,4.3733D+00,3.7372D+00,3.1677D+00,2.7434D+00,
+     &2.3459D+00,1.9566D+00,1.6317D+00,1.4368D+00,1.2699D+00,1.1572D+00,
+     &1.0581D+00,9.8558D-01,9.2913D-01,8.8297D-01,8.4349D-01,8.0862D-01,
+     &7.7667D-01,7.4686D-01,7.1760D-01,6.8906D-01,6.6005D-01,6.5493D-01,
+     &6.1209D-01,5.7080D-01,5.3038D-01,4.9085D-01,4.5137D-01,4.1231D-01,
+     &3.7316D-01,3.3442D-01,2.9613D-01,2.5928D-01,2.1912D-01,0.0000D+00,
+     &1.1660D+02,1.0899D+02,1.0178D+02,9.4752D+01,8.8142D+01,8.1480D+01/
+      DATA (XGF_L(K),K= 1027, 1140) /
+     &7.5219D+01,6.9198D+01,6.3578D+01,5.7986D+01,5.2800D+01,4.7867D+01,
+     &4.3328D+01,4.0736D+01,3.8088D+01,3.5213D+01,3.2469D+01,2.9907D+01,
+     &2.7451D+01,2.5501D+01,2.3516D+01,2.1392D+01,1.9391D+01,1.7546D+01,
+     &1.5800D+01,1.4426D+01,1.3057D+01,1.1607D+01,1.0266D+01,9.0517D+00,
+     &7.9294D+00,7.0617D+00,6.2165D+00,5.3397D+00,4.5572D+00,3.8687D+00,
+     &3.2598D+00,2.8078D+00,2.3859D+00,1.9745D+00,1.6317D+00,1.4267D+00,
+     &1.2497D+00,1.1305D+00,1.0247D+00,9.4657D-01,8.8556D-01,8.3542D-01,
+     &7.9253D-01,7.5465D-01,7.2037D-01,6.8840D-01,6.5775D-01,6.2793D-01,
+     &5.9852D-01,5.9015D-01,5.4553D-01,5.0339D-01,4.6306D-01,4.2411D-01,
+     &3.8622D-01,3.4909D-01,3.1294D-01,2.7773D-01,2.4373D-01,2.1150D-01,
+     &1.7848D-01,0.0000D+00,1.3738D+02,1.2796D+02,1.1904D+02,1.1042D+02,
+     &1.0233D+02,9.4222D+01,8.6662D+01,7.9409D+01,7.2655D+01,6.6001D+01,
+     &5.9833D+01,5.4007D+01,4.8672D+01,4.5642D+01,4.2552D+01,3.9214D+01,
+     &3.6040D+01,3.3082D+01,3.0272D+01,2.8026D+01,2.5779D+01,2.3361D+01,
+     &2.1093D+01,1.9009D+01,1.7062D+01,1.5526D+01,1.4003D+01,1.2396D+01,
+     &1.0916D+01,9.5845D+00,8.3611D+00,7.4188D+00,6.5021D+00,5.5589D+00,
+     &4.7169D+00,3.9865D+00,3.3389D+00,2.8617D+00,2.4178D+00,1.9872D+00,
+     &1.6283D+00,1.4143D+00,1.2296D+00,1.1049D+00,9.9315D-01,9.1079D-01,
+     &8.4623D-01,7.9317D-01,7.4768D-01,7.0802D-01,6.7178D-01,6.3836D-01/
+      DATA (XGF_L(K),K= 1141, 1254) /
+     &6.0703D-01,5.7658D-01,5.4733D-01,5.3630D-01,4.9100D-01,4.4879D-01,
+     &4.0920D-01,3.7138D-01,3.3521D-01,3.0054D-01,2.6721D-01,2.3523D-01,
+     &2.0485D-01,1.7634D-01,1.4852D-01,0.0000D+00,1.6103D+02,1.4938D+02,
+     &1.3848D+02,1.2798D+02,1.1818D+02,1.0840D+02,9.9309D+01,9.0651D+01,
+     &8.2647D+01,7.4733D+01,6.7469D+01,6.0672D+01,5.4433D+01,5.0913D+01,
+     &4.7343D+01,4.3482D+01,3.9833D+01,3.6452D+01,3.3242D+01,3.0689D+01,
+     &2.8134D+01,2.5404D+01,2.2863D+01,2.0531D+01,1.8362D+01,1.6652D+01,
+     &1.4967D+01,1.3197D+01,1.1573D+01,1.0120D+01,8.7877D+00,7.7679D+00,
+     &6.7819D+00,5.7685D+00,4.8731D+00,4.0967D+00,3.4122D+00,2.9097D+00,
+     &2.4451D+00,1.9953D+00,1.6222D+00,1.3995D+00,1.2076D+00,1.0771D+00,
+     &9.6151D-01,8.7563D-01,8.0819D-01,7.5269D-01,7.0548D-01,6.6395D-01,
+     &6.2666D-01,5.9253D-01,5.6034D-01,5.3005D-01,5.0122D-01,4.8790D-01,
+     &4.4273D-01,4.0115D-01,3.6251D-01,3.2632D-01,2.9224D-01,2.5988D-01,
+     &2.2931D-01,2.0039D-01,1.7324D-01,1.4805D-01,1.2201D-01,0.0000D+00,
+     &1.8591D+02,1.7193D+02,1.5886D+02,1.4632D+02,1.3469D+02,1.2310D+02,
+     &1.1237D+02,1.0218D+02,9.2839D+01,8.3643D+01,7.5256D+01,6.7382D+01,
+     &6.0231D+01,5.6204D+01,5.2127D+01,4.7743D+01,4.3601D+01,3.9784D+01,
+     &3.6172D+01,3.3310D+01,3.0455D+01,2.7410D+01,2.4579D+01,2.2009D+01,
+     &1.9599D+01,1.7727D+01,1.5886D+01,1.3956D+01,1.2193D+01,1.0620D+01/
+      DATA (XGF_L(K),K= 1255, 1368) /
+     &9.1866D+00,8.0925D+00,7.0383D+00,5.9623D+00,5.0119D+00,4.1917D+00,
+     &3.4750D+00,2.9503D+00,2.4663D+00,1.9999D+00,1.6141D+00,1.3840D+00,
+     &1.1856D+00,1.0518D+00,9.3192D-01,8.4324D-01,7.7348D-01,7.1642D-01,
+     &6.6779D-01,6.2531D-01,5.8732D-01,5.5231D-01,5.2039D-01,4.9037D-01,
+     &4.6218D-01,4.4711D-01,4.0225D-01,3.6159D-01,3.2438D-01,2.8982D-01,
+     &2.5765D-01,2.2765D-01,1.9954D-01,1.7331D-01,1.4889D-01,1.2621D-01,
+     &9.6984D-02,0.0000D+00,2.1269D+02,1.9609D+02,1.8060D+02,1.6582D+02,
+     &1.5214D+02,1.3863D+02,1.2613D+02,1.1431D+02,1.0351D+02,9.2957D+01,
+     &8.3294D+01,7.4318D+01,6.6188D+01,6.1617D+01,5.7019D+01,5.2073D+01,
+     &4.7428D+01,4.3153D+01,3.9122D+01,3.5941D+01,3.2764D+01,2.9404D+01,
+     &2.6282D+01,2.3458D+01,2.0836D+01,1.8796D+01,1.6786D+01,1.4693D+01,
+     &1.2792D+01,1.1101D+01,9.5678D+00,8.4010D+00,7.2773D+00,6.1402D+00,
+     &5.1403D+00,4.2791D+00,3.5311D+00,2.9851D+00,2.4835D+00,2.0017D+00,
+     &1.6039D+00,1.3677D+00,1.1646D+00,1.0265D+00,9.0375D-01,8.1271D-01,
+     &7.4135D-01,6.8280D-01,6.3328D-01,5.9018D-01,5.5184D-01,5.1677D-01,
+     &4.8494D-01,4.5537D-01,4.2797D-01,4.1146D-01,3.6736D-01,3.2788D-01,
+     &2.9207D-01,2.5923D-01,2.2901D-01,2.0110D-01,1.7527D-01,1.5131D-01,
+     &1.2926D-01,1.0839D-01,6.9776D-02,0.0000D+00,2.4043D+02,2.2104D+02,
+     &2.0300D+02,1.8582D+02,1.7003D+02,1.5443D+02,1.4007D+02,1.2658D+02/
+      DATA (XGF_L(K),K= 1369, 1482) /
+     &1.1426D+02,1.0227D+02,9.1332D+01,8.1197D+01,7.2119D+01,6.6989D+01,
+     &6.1846D+01,5.6342D+01,5.1188D+01,4.6448D+01,4.2002D+01,3.8498D+01,
+     &3.5016D+01,3.1335D+01,2.7931D+01,2.4848D+01,2.2009D+01,1.9797D+01,
+     &1.7637D+01,1.5389D+01,1.3354D+01,1.1550D+01,9.9187D+00,8.6824D+00,
+     &7.4988D+00,6.3022D+00,5.2549D+00,4.3589D+00,3.5788D+00,3.0139D+00,
+     &2.4962D+00,2.0005D+00,1.5931D+00,1.3514D+00,1.1435D+00,1.0028D+00,
+     &8.7751D-01,7.8479D-01,7.1218D-01,6.5272D-01,6.0250D-01,5.5920D-01,
+     &5.2061D-01,4.8590D-01,4.5422D-01,4.2519D-01,3.9858D-01,3.8094D-01,
+     &3.3789D-01,2.9975D-01,2.6524D-01,2.3401D-01,2.0560D-01,1.7956D-01,
+     &1.5565D-01,1.3374D-01,1.1354D-01,9.4096D-02,3.9275D-02,0.0000D+00,
+     &2.8195D+02,2.5830D+02,2.3640D+02,2.1554D+02,1.9645D+02,1.7774D+02,
+     &1.6058D+02,1.4448D+02,1.2990D+02,1.1575D+02,1.0299D+02,9.1121D+01,
+     &8.0574D+01,7.4642D+01,6.8724D+01,6.2402D+01,5.6498D+01,5.1101D+01,
+     &4.6042D+01,4.2081D+01,3.8152D+01,3.4014D+01,3.0201D+01,2.6780D+01,
+     &2.3611D+01,2.1171D+01,1.8789D+01,1.6329D+01,1.4107D+01,1.2148D+01,
+     &1.0386D+01,9.0557D+00,7.7874D+00,6.5118D+00,5.4006D+00,4.4539D+00,
+     &3.6370D+00,3.0467D+00,2.5088D+00,1.9959D+00,1.5762D+00,1.3274D+00,
+     &1.1142D+00,9.7065D-01,8.4265D-01,7.4825D-01,6.7451D-01,6.1445D-01,
+     &5.6374D-01,5.2024D-01,4.8166D-01,4.4741D-01,4.1643D-01,3.8830D-01/
+      DATA (XGF_L(K),K= 1483, 1596) /
+     &3.6282D-01,3.4411D-01,3.0249D-01,2.6607D-01,2.3369D-01,2.0474D-01,
+     &1.7852D-01,1.5489D-01,1.3341D-01,1.1384D-01,9.5862D-02,7.7509D-02,
+     &0.0000D+00,0.0000D+00,3.2379D+02,2.9556D+02,2.6960D+02,2.4513D+02,
+     &2.2265D+02,2.0073D+02,1.8071D+02,1.6202D+02,1.4515D+02,1.2887D+02,
+     &1.1419D+02,1.0071D+02,8.8650D+01,8.1931D+01,7.5233D+01,6.8140D+01,
+     &6.1510D+01,5.5467D+01,4.9832D+01,4.5419D+01,4.1070D+01,3.6493D+01,
+     &3.2295D+01,2.8536D+01,2.5086D+01,2.2426D+01,1.9846D+01,1.7175D+01,
+     &1.4781D+01,1.2681D+01,1.0797D+01,9.3831D+00,8.0380D+00,6.6897D+00,
+     &5.5221D+00,4.5337D+00,3.6831D+00,3.0714D+00,2.5159D+00,1.9884D+00,
+     &1.5586D+00,1.3048D+00,1.0886D+00,9.4191D-01,8.1217D-01,7.1679D-01,
+     &6.4238D-01,5.8194D-01,5.3136D-01,4.8766D-01,4.4965D-01,4.1594D-01,
+     &3.8570D-01,3.5847D-01,3.3403D-01,3.1456D-01,2.7454D-01,2.3977D-01,
+     &2.0922D-01,1.8216D-01,1.5795D-01,1.3622D-01,1.1669D-01,9.9012D-02,
+     &8.2668D-02,6.4604D-02,0.0000D+00,0.0000D+00,3.7071D+02,3.3727D+02,
+     &3.0660D+02,2.7790D+02,2.5169D+02,2.2608D+02,2.0283D+02,1.8123D+02,
+     &1.6179D+02,1.4311D+02,1.2635D+02,1.1097D+02,9.7357D+01,8.9759D+01,
+     &8.2263D+01,7.4239D+01,6.6821D+01,6.0073D+01,5.3813D+01,4.8927D+01,
+     &4.4114D+01,3.9072D+01,3.4471D+01,3.0351D+01,2.6592D+01,2.3699D+01,
+     &2.0903D+01,1.8031D+01,1.5459D+01,1.3211D+01,1.1204D+01,9.7024D+00/
+      DATA (XGF_L(K),K= 1597, 1710) /
+     &8.2828D+00,6.8644D+00,5.6367D+00,4.6059D+00,3.7241D+00,3.0915D+00,
+     &2.5189D+00,1.9786D+00,1.5396D+00,1.2816D+00,1.0611D+00,9.1306D-01,
+     &7.8207D-01,6.8594D-01,6.1118D-01,5.5075D-01,5.0031D-01,4.5732D-01,
+     &4.1996D-01,3.8671D-01,3.5732D-01,3.3101D-01,3.0775D-01,2.8769D-01,
+     &2.4931D-01,2.1637D-01,1.8763D-01,1.6241D-01,1.4002D-01,1.2013D-01,
+     &1.0238D-01,8.6311D-02,7.1348D-02,5.2982D-02,0.0000D+00,0.0000D+00,
+     &4.2142D+02,3.8237D+02,3.4660D+02,3.1292D+02,2.8259D+02,2.5300D+02,
+     &2.2626D+02,2.0148D+02,1.7927D+02,1.5797D+02,1.3896D+02,1.2163D+02,
+     &1.0632D+02,9.7858D+01,8.9366D+01,8.0488D+01,7.2234D+01,6.4771D+01,
+     &5.7843D+01,5.2468D+01,4.7182D+01,4.1663D+01,3.6633D+01,3.2165D+01,
+     &2.8082D+01,2.4971D+01,2.1960D+01,1.8866D+01,1.6118D+01,1.3723D+01,
+     &1.1595D+01,1.0008D+01,8.5101D+00,7.0232D+00,5.7443D+00,4.6705D+00,
+     &3.7584D+00,3.1066D+00,2.5189D+00,1.9659D+00,1.5193D+00,1.2575D+00,
+     &1.0346D+00,8.8517D-01,7.5338D-01,6.5695D-01,5.8219D-01,5.2200D-01,
+     &4.7218D-01,4.2954D-01,3.9258D-01,3.6043D-01,3.3190D-01,3.0663D-01,
+     &2.8431D-01,2.6413D-01,2.2746D-01,1.9612D-01,1.6912D-01,1.4557D-01,
+     &1.2488D-01,1.0660D-01,9.0362D-02,7.5731D-02,6.1890D-02,4.2720D-02,
+     &0.0000D+00,0.0000D+00,4.7166D+02,4.2676D+02,3.8580D+02,3.4749D+02,
+     &3.1273D+02,2.7927D+02,2.4899D+02,2.2108D+02,1.9611D+02,1.7230D+02/
+      DATA (XGF_L(K),K= 1711, 1824) /
+     &1.5107D+02,1.3178D+02,1.1483D+02,1.0548D+02,9.6179D+01,8.6383D+01,
+     &7.7331D+01,6.9156D+01,6.1613D+01,5.5763D+01,5.0019D+01,4.4056D+01,
+     &3.8633D+01,3.3819D+01,2.9446D+01,2.6108D+01,2.2889D+01,1.9617D+01,
+     &1.6706D+01,1.4179D+01,1.1938D+01,1.0276D+01,8.7112D+00,7.1630D+00,
+     &5.8345D+00,4.7275D+00,3.7856D+00,3.1171D+00,2.5164D+00,1.9532D+00,
+     &1.4997D+00,1.2350D+00,1.0108D+00,8.6027D-01,7.2804D-01,6.3166D-01,
+     &5.5726D-01,4.9745D-01,4.4802D-01,4.0623D-01,3.7002D-01,3.3850D-01,
+     &3.1081D-01,2.8644D-01,2.6509D-01,2.4476D-01,2.0951D-01,1.7979D-01,
+     &1.5426D-01,1.3217D-01,1.1290D-01,9.5951D-02,8.0975D-02,6.7483D-02,
+     &5.4483D-02,3.4309D-02,0.0000D+00,0.0000D+00,5.2745D+02,4.7595D+02,
+     &4.2900D+02,3.8543D+02,3.4589D+02,3.0795D+02,2.7377D+02,2.4235D+02,
+     &2.1434D+02,1.8771D+02,1.6408D+02,1.4266D+02,1.2392D+02,1.1358D+02,
+     &1.0335D+02,9.2593D+01,8.2702D+01,7.3780D+01,6.5553D+01,5.9207D+01,
+     &5.2983D+01,4.6535D+01,4.0700D+01,3.5531D+01,3.0842D+01,2.7278D+01,
+     &2.3855D+01,2.0386D+01,1.7301D+01,1.4635D+01,1.2282D+01,1.0538D+01,
+     &8.9065D+00,7.2932D+00,5.9178D+00,4.7769D+00,3.8086D+00,3.1240D+00,
+     &2.5114D+00,1.9387D+00,1.4794D+00,1.2125D+00,9.8604D-01,8.3538D-01,
+     &7.0309D-01,6.0683D-01,5.3289D-01,4.7378D-01,4.2493D-01,3.8387D-01,
+     &3.4846D-01,3.1778D-01,2.9097D-01,2.6744D-01,2.4699D-01,2.2688D-01/
+      DATA (XGF_L(K),K= 1825, 1836) /
+     &1.9308D-01,1.6489D-01,1.4079D-01,1.2009D-01,1.0214D-01,8.6447D-02,
+     &7.2603D-02,6.0131D-02,4.7893D-02,2.6613D-02,0.0000D+00,0.0000D+00/
+
+*
+      X = Xinp
+*...CHECK OF X AND Q2 VALUES :
+      IF ( (X.LT.0.99D-9) .OR. (X.GT.1.D0) ) THEN
+*        WRITE(6,91) X
+*  91     FORMAT (2X,'PHO_DOR98LO: x out of range',1p,E12.4)
+         X = 0.99D-9
+*        STOP
+      ENDIF
+
+      Q2 = Q2inp
+      IF ( (Q2.LT.0.799D0) .OR. (Q2.GT.1.E6) ) THEN
+*        WRITE(6,92) Q2
+*  92     FORMAT (2X,'PHO_DOR98LO: Q2 out of range',1p,E12.4)
+         Q2 = 0.99D6
+*        STOP
+      ENDIF
+
+*
+*...INTERPOLATION :
+      NA(1) = NX
+      NA(2) = NQ
+      XT(1) = DLOG(X)
+      XT(2) = DLOG(Q2)
+      X1 = 1.D0- X
+      XV = X**0.5D0
+      XS = X**(-0.2D0)
+      UV = SIB_DBFINT(NARG,XT,NA,ARRF,XUVF) * X1**3 * XV
+      DV = SIB_DBFINT(NARG,XT,NA,ARRF,XDVF) * X1**4 * XV
+      DE = SIB_DBFINT(NARG,XT,NA,ARRF,XDEF) * X1**7 * XV
+      UD = SIB_DBFINT(NARG,XT,NA,ARRF,XUDF) * X1**7 * XS
+      US = 0.5D0 * (UD - DE)
+      DS = 0.5D0 * (UD + DE)
+      SS = SIB_DBFINT(NARG,XT,NA,ARRF,XSF)  * X1**7 * XS
+      GL = SIB_DBFINT(NARG,XT,NA,ARRF,XGF)  * X1**5 * XS
+
+      END
diff --git a/dependencies/sibyll/sibyll2.3d.hpp b/dependencies/sibyll/sibyll2.3d.hpp
new file mode 100644
index 000000000..9d6b1942c
--- /dev/null
+++ b/dependencies/sibyll/sibyll2.3d.hpp
@@ -0,0 +1,120 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+/**
+ * \function sibyll::rndm_interface
+ *
+ * this is the random number hook to external packages.
+ *
+ * CORSIKA8, for example, has to provide an implementation of this.
+ **/
+namespace sibyll {
+  extern double rndm_interface();
+}
+
+//----------------------------------------------
+//  C++ interface for the SIBYLL event generator
+//----------------------------------------------
+// wrapper
+
+extern "C" {
+
+typedef char s_name[6];
+
+  /**
+     \struct s_plist_
+
+    SIBYLL particle stack (FORTRAN COMMON)
+    variables are: np : numer of particles on stack
+                    p : 4momentum + mass of particles on stack
+                llist : id of particles on stack
+   **/
+extern struct {
+  double p[5][8000];
+  int llist[8000];
+  int np;
+} s_plist_;
+
+// additional information about interactions.
+// number of wounded nucleons, number of hard and soft scatterings etc.
+extern struct { int nnsof[20], nnjet[20], jdif[20], nwd, njet, nsof; } s_chist_;
+
+extern struct {
+  double cbr[223 + 16 + 12 + 8];
+  int kdec[1338 + 6 * (16 + 12 + 8)];
+  int lbarp[99];
+  int idb[99];
+} s_csydec_;
+
+// additional particle stack for the mother particles of unstable particles
+// stable particles have entry zero
+extern struct { int llist1[8000]; } s_plist1_;
+
+// tables with particle properties
+// charge, strangeness and baryon number
+extern struct {
+  int ichp[99];
+  int istr[99];
+  int ibar[99];
+} s_chp_;
+
+// tables with particle properties
+// mass and mass squared
+extern struct {
+  double am[99];
+  double am2[99];
+} s_mass1_;
+
+// table with particle names
+extern struct { char namp[6][99]; } s_cnam_;
+
+// debug info
+extern struct {
+  int ncall;
+  int ndebug;
+  int lun;
+} s_debug_;
+
+// lund random generator setup
+// extern struct {int mrlu[6]; float rrlu[100]; }ludatr_;
+
+// sibyll main subroutine
+void sibyll_(const int&, const int&, const double&);
+
+// subroutine to initiate sibyll
+void sibyll_ini_();
+
+// subroutine to SET DECAYS
+void dec_ini_();
+
+// subroutine to initiate random number generator
+// void rnd_ini_();
+
+// print event
+void sib_list_(int&);
+
+// decay routine
+void decsib_();
+
+// interaction length
+// double fpni_(double&, int&);
+
+void sib_sigma_hnuc_(const int&, const int&, const double&, double&, double&, double&);
+void sib_sigma_hp_(const int&, const double&, double&, double&, double&, double*, double&,
+                   double&);
+
+double s_rndm_(int&);
+
+int get_nwounded();
+double get_sibyll_mass2(int&);
+
+// phojet random generator setup
+void pho_rndin_(int&, int&, int&, int&);
+}
diff --git a/Processes/Sibyll/signuc.f b/dependencies/sibyll/signuc.f
similarity index 100%
rename from Processes/Sibyll/signuc.f
rename to dependencies/sibyll/signuc.f
diff --git a/do-copyright.py b/do-copyright.py
index adc278d11..ec10db429 100755
--- a/do-copyright.py
+++ b/do-copyright.py
@@ -21,8 +21,8 @@ Debug settings are 0: nothing, 1: checking, 2: filesystem
 """
 Debug = 0 
 
-excludeDirs = ["modules", "git", "build", "install", "externals"]
-excludeFiles = ['PhysicalConstants.h','CorsikaFenvOSX.cc', 'sgn.h', 'quartic.h']
+excludeDirs = ["ThirdParty", "externals", "dependencies", "git"]
+excludeFiles = ['PhysicalConstants.h','CorsikaFenvOSX.cc', 'sgn.h']
 
 extensions = [".cpp", ".hpp"]
 
diff --git a/Documentation/Doxygen/Doxyfile.in b/documentation/Doxyfile.in
similarity index 96%
rename from Documentation/Doxygen/Doxyfile.in
rename to documentation/Doxyfile.in
index b733d0925..355d1903b 100644
--- a/Documentation/Doxygen/Doxyfile.in
+++ b/documentation/Doxyfile.in
@@ -1,4 +1,4 @@
-PROJECT_NAME           = CORSIKA 8
+ePROJECT_NAME           = CORSIKA 8
 PROJECT_NUMBER         = 0.0.0
 
 GENERATE_HTML          = YES
diff --git a/Documentation/Examples/CMakeLists.txt b/examples/CMakeLists.txt
similarity index 100%
rename from Documentation/Examples/CMakeLists.txt
rename to examples/CMakeLists.txt
diff --git a/Documentation/Examples/boundary_example.cc b/examples/boundary_example.cc
similarity index 81%
rename from Documentation/Examples/boundary_example.cc
rename to examples/boundary_example.cc
index ed9d7bd43..addd6f4a9 100644
--- a/Documentation/Examples/boundary_example.cc
+++ b/examples/boundary_example.cc
@@ -6,18 +6,15 @@
  * the license.
  */
 
-#include <corsika/cascade/Cascade.h>
-#include <corsika/process/ProcessSequence.h>
+#include <corsika/framework/core/Cascade.hpp>
+#include <corsika/framework/sequence/ProcessSequence.hpp>
+#include <corsika/process/tracking_line/TrackingLine.hpp>
 
-#include <corsika/setup/SetupEnvironment.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/HomogeneousMedium.hpp>
+#include <corsika/media/NuclearComposition.hpp>
 
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/HomogeneousMedium.h>
-#include <corsika/environment/NuclearComposition.h>
-
-#include <corsika/geometry/Sphere.h>
+#include <corsika/framework/geometry/Sphere.hpp>
 
 #include <corsika/process/sibyll/Decay.h>
 #include <corsika/process/sibyll/Interaction.h>
@@ -25,13 +22,13 @@
 
 #include <corsika/process/track_writer/TrackWriter.h>
 
-#include <corsika/process/particle_cut/ParticleCut.h>
+#include <corsika/process/particle_cut/ParticleCut.hpp>
 
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-#include <corsika/random/RNGManager.h>
+#include <corsika/framework/random/RNGManager.hpp>
 
-#include <corsika/utl/CorsikaFenv.h>
+#include <corsika/framework/utility/CorsikaFenv.hpp>
 
 #include <corsika/logging/Logging.h>
 
@@ -39,12 +36,17 @@
 #include <limits>
 #include <typeinfo>
 
+#include "../../corsika/setup/SetupEnvironment.hpp"
+#include "../../corsika/setup/SetupStack.hpp"
+#include "../../corsika/setup/SetupTrajectory.hpp"
+
+using namespace corsika;
 using namespace corsika;
-using namespace corsika::process;
 using namespace corsika::units;
-using namespace corsika::particles;
-using namespace corsika::random;
-using namespace corsika::geometry;
+using namespace corsika;
+using namespace corsika;
+using namespace corsika;
+using namespace corsika;
 using namespace corsika::environment;
 
 using namespace std;
@@ -161,17 +163,14 @@ int main() {
     };
     auto const [px, py, pz] =
         momentumComponents(theta / 180. * M_PI, phi / 180. * M_PI, P0);
-    auto plab = corsika::stack::MomentumVector(rootCS, {px, py, pz});
-    C8LOG_INFO(
-        "input particle: {} "
-        "input angles: theta={} phi={}"
-        "input momentum: {} GeV",
-        beamCode, theta, phi, plab.GetComponents() / 1_GeV);
-    // shoot particles from inside target out
+    auto plab = corsika::MomentumVector(rootCS, {px, py, pz});
+    cout << "input particle: " << beamCode << endl;
+    cout << "input angles: theta=" << theta << " phi=" << phi << endl;
+    cout << "input momentum: " << plab.GetComponents() / 1_GeV << endl;
     Point pos(rootCS, 0_m, 0_m, 0_m);
     stack.AddParticle(
         std::tuple<particles::Code, units::si::HEPEnergyType,
-                   corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{
+                   corsika::MomentumVector, geometry::Point, units::si::TimeType>{
             beamCode, E0, plab, pos, 0_ns});
   }
 
diff --git a/Documentation/Examples/cascade_example.cc b/examples/cascade_example.cc
similarity index 82%
rename from Documentation/Examples/cascade_example.cc
rename to examples/cascade_example.cc
index 8b9b5b8ad..1915125f1 100644
--- a/Documentation/Examples/cascade_example.cc
+++ b/examples/cascade_example.cc
@@ -6,45 +6,46 @@
  * the license.
  */
 
-#include <corsika/cascade/Cascade.h>
-#include <corsika/process/ProcessSequence.h>
-#include <corsika/process/energy_loss/EnergyLoss.h>
-#include <corsika/process/stack_inspector/StackInspector.h>
 
-#include <corsika/setup/SetupEnvironment.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
+#include <corsika/framework/core/Cascade.hpp>
+#include <corsika/framework/sequence/ProcessSequence.hpp>
+#include <corsika/process/energy_loss/EnergyLoss.h>
+#include <corsika/process/stack_inspector/StackInspector.hpp>
+#include <corsika/process/tracking_line/TrackingLine.hpp>
 
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/HomogeneousMedium.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/environment/ShowerAxis.h>
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/HomogeneousMedium.hpp>
+#include <corsika/media/NuclearComposition.hpp>
 
-#include <corsika/geometry/Sphere.h>
+#include <corsika/framework/geometry/Sphere.hpp>
 
 #include <corsika/process/sibyll/Decay.h>
 #include <corsika/process/sibyll/Interaction.h>
 #include <corsika/process/sibyll/NuclearInteraction.h>
 
-#include <corsika/process/particle_cut/ParticleCut.h>
+#include <corsika/process/particle_cut/ParticleCut.hpp>
 #include <corsika/process/track_writer/TrackWriter.h>
 
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-#include <corsika/random/RNGManager.h>
+#include <corsika/framework/random/RNGManager.hpp>
 
-#include <corsika/utl/CorsikaFenv.h>
-#include <corsika/logging/Logging.h>
+#include <corsika/framework/utility/CorsikaFenv.hpp>
 
 #include <iostream>
 #include <limits>
 
+#include "../../corsika/setup/SetupEnvironment.hpp"
+#include "../../corsika/setup/SetupStack.hpp"
+#include "../../corsika/setup/SetupTrajectory.hpp"
+
+using namespace corsika;
 using namespace corsika;
-using namespace corsika::process;
 using namespace corsika::units;
-using namespace corsika::particles;
-using namespace corsika::random;
-using namespace corsika::geometry;
+using namespace corsika;
+using namespace corsika;
+using namespace corsika;
+using namespace corsika;
 using namespace corsika::environment;
 
 using namespace std;
@@ -125,13 +126,13 @@ int main() {
     };
     auto const [px, py, pz] =
         momentumComponents(theta / 180. * M_PI, phi / 180. * M_PI, P0);
-    auto plab = corsika::stack::MomentumVector(rootCS, {px, py, pz});
+    auto plab = corsika::MomentumVector(rootCS, {px, py, pz});
     cout << "input particle: " << beamCode << endl;
     cout << "input angles: theta=" << theta << " phi=" << phi << endl;
     cout << "input momentum: " << plab.GetComponents() / 1_GeV << endl;
     stack.AddParticle(std::tuple<particles::Code, units::si::HEPEnergyType,
-                                 corsika::stack::MomentumVector, geometry::Point,
-                                 units::si::TimeType, unsigned short, unsigned short>{
+                                 corsika::MomentumVector, geometry::Point,
+		      units::si::TimeType, unsigned short, unsigned short>{
         beamCode, E0, plab, injectionPos, 0_ns, nuclA, nuclZ});
   }
 
diff --git a/Documentation/Examples/cascade_proton_example.cc b/examples/cascade_proton_example.cc
similarity index 80%
rename from Documentation/Examples/cascade_proton_example.cc
rename to examples/cascade_proton_example.cc
index b36239219..3512cac6a 100644
--- a/Documentation/Examples/cascade_proton_example.cc
+++ b/examples/cascade_proton_example.cc
@@ -6,21 +6,17 @@
  * the license.
  */
 
-#include <corsika/cascade/Cascade.h>
-#include <corsika/process/ProcessSequence.h>
+#include <corsika/framework/core/Cascade.hpp>
+#include <corsika/framework/sequence/ProcessSequence.hpp>
 #include <corsika/process/hadronic_elastic_model/HadronicElasticModel.h>
-#include <corsika/process/stack_inspector/StackInspector.h>
-#include <corsika/process/energy_loss/EnergyLoss.h>
+#include <corsika/process/stack_inspector/StackInspector.hpp>
+#include <corsika/process/tracking_line/TrackingLine.hpp>
 
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/HomogeneousMedium.hpp>
+#include <corsika/media/NuclearComposition.hpp>
 
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/HomogeneousMedium.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/environment/ShowerAxis.h>
-
-#include <corsika/geometry/Sphere.h>
+#include <corsika/framework/geometry/Sphere.hpp>
 
 #include <corsika/process/sibyll/Decay.h>
 #include <corsika/process/sibyll/Interaction.h>
@@ -31,26 +27,31 @@
 
 #include <corsika/process/track_writer/TrackWriter.h>
 
-#include <corsika/process/particle_cut/ParticleCut.h>
+#include <corsika/process/particle_cut/ParticleCut.hpp>
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/random/RNGManager.hpp>
 
-#include <corsika/random/RNGManager.h>
+#include <corsika/framework/utility/CorsikaFenv.hpp>
 
-#include <corsika/utl/CorsikaFenv.h>
+#include <boost/type_index.hpp>
 
-#include <corsika/logging/Logging.h>
+#include "../../corsika/setup/SetupStack.hpp"
+#include "../../corsika/setup/SetupTrajectory.hpp"
+using boost::typeindex::type_id_with_cvr;
 
 #include <iostream>
 #include <limits>
 #include <typeinfo>
 
 using namespace corsika;
-using namespace corsika::process;
+using namespace corsika;
 using namespace corsika::units;
-using namespace corsika::particles;
-using namespace corsika::random;
-using namespace corsika::geometry;
+using namespace corsika;
+using namespace corsika;
+using namespace corsika;
+using namespace corsika;
 using namespace corsika::environment;
 
 using namespace std;
@@ -111,14 +112,14 @@ int main() {
     };
     auto const [px, py, pz] =
         momentumComponents(theta / 180. * M_PI, phi / 180. * M_PI, P0);
-    auto plab = corsika::stack::MomentumVector(rootCS, {px, py, pz});
+    auto plab = corsika::MomentumVector(rootCS, {px, py, pz});
     cout << "input particle: " << beamCode << endl;
     cout << "input angles: theta=" << theta << " phi=" << phi << endl;
     cout << "input momentum: " << plab.GetComponents() / 1_GeV << endl;
     stack.AddParticle(
         std::tuple<particles::Code, units::si::HEPEnergyType,
-                   corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{
-            beamCode, E0, plab, injectionPos, 0_ns});
+                   corsika::MomentumVector, geometry::Point, units::si::TimeType>{
+            beamCode, E0, plab, pos, 0_ns});
   }
 
   // setup processes, decays and interactions
diff --git a/Documentation/Examples/geometry_example.cc b/examples/geometry_example.cpp
similarity index 90%
rename from Documentation/Examples/geometry_example.cc
rename to examples/geometry_example.cpp
index da23d81e0..751ac316e 100644
--- a/Documentation/Examples/geometry_example.cc
+++ b/examples/geometry_example.cpp
@@ -6,18 +6,18 @@
  * the license.
  */
 
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Sphere.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Sphere.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
 
 #include <cstdlib>
 #include <iostream>
 #include <typeinfo>
 
 using namespace corsika;
-using namespace corsika::geometry;
+using namespace corsika;
 using namespace corsika::units::si;
 
 int main() {
diff --git a/Documentation/Examples/helix_example.cc b/examples/helix_example.cpp
similarity index 83%
rename from Documentation/Examples/helix_example.cc
rename to examples/helix_example.cpp
index 9f3eba67e..b45252574 100644
--- a/Documentation/Examples/helix_example.cc
+++ b/examples/helix_example.cpp
@@ -6,17 +6,17 @@
  * the license.
  */
 
-#include <corsika/geometry/Helix.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/units/PhysicalUnits.h>
 #include <array>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Helix.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
 #include <cstdlib>
 #include <iostream>
 
 using namespace corsika;
-using namespace corsika::geometry;
+using namespace corsika;
 using namespace corsika::units::si;
 
 int main() {
diff --git a/examples/stack_example.cpp b/examples/stack_example.cpp
new file mode 100644
index 000000000..f4966c283
--- /dev/null
+++ b/examples/stack_example.cpp
@@ -0,0 +1,55 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/stack/super_stupid/SuperStupidStack.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+
+#include <cassert>
+#include <iomanip>
+#include <iostream>
+
+using namespace corsika;
+using namespace corsika::units::si;
+using namespace corsika;
+using namespace corsika;
+using namespace std;
+
+void fill(corsika::super_stupid::SuperStupidStack& s) {
+  const geometry::CoordinateSystem& rootCS =
+      geometry::RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+  for (int i = 0; i < 11; ++i) {
+    s.AddParticle(std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                             geometry::Point, units::si::TimeType>{
+        Code::Electron, 1.5_GeV * i,
+        corsika::MomentumVector(rootCS, {0_GeV, 0_GeV, 1_GeV}),
+        geometry::Point(rootCS, 0_m, 0_m, 0_m), 0_ns});
+  }
+}
+
+void read(corsika::super_stupid::SuperStupidStack& s) {
+  assert(s.GetSize() == 11); // stack has 11 particles
+
+  HEPEnergyType total_energy;
+  int i = 0;
+  for (auto& p : s) {
+    total_energy += p.GetEnergy();
+    // particles are electrons with 1.5 GeV energy times i
+    assert(p.GetPID() == Code::Electron);
+    assert(p.GetEnergy() == 1.5_GeV * (i++));
+  }
+}
+
+int main() {
+  corsika::super_stupid::SuperStupidStack s;
+  fill(s);
+  read(s);
+  return 0;
+}
diff --git a/Documentation/Examples/staticsequence_example.cc b/examples/staticsequence_example.cpp
similarity index 90%
rename from Documentation/Examples/staticsequence_example.cc
rename to examples/staticsequence_example.cpp
index 659a3d6c2..ffeed210c 100644
--- a/Documentation/Examples/staticsequence_example.cc
+++ b/examples/staticsequence_example.cpp
@@ -10,15 +10,15 @@
 #include <iomanip>
 #include <iostream>
 
-#include <corsika/process/ProcessSequence.h>
+#include <corsika/framework/sequence/ProcessSequence.hpp>
 
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
 
 using namespace corsika;
 using namespace corsika::units::si;
-using namespace corsika::process;
+using namespace corsika;
 using namespace std;
 
 const int nData = 10;
diff --git a/Documentation/Examples/stopping_power.cc b/examples/stopping_power.cc
similarity index 81%
rename from Documentation/Examples/stopping_power.cc
rename to examples/stopping_power.cc
index 100594f6a..d6d5bb89e 100644
--- a/Documentation/Examples/stopping_power.cc
+++ b/examples/stopping_power.cc
@@ -6,24 +6,21 @@
  * the license.
  */
 
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/HomogeneousMedium.h>
-#include <corsika/environment/IMediumModel.h>
-#include <corsika/environment/ShowerAxis.h>
-#include <corsika/geometry/Sphere.h>
+#include <corsika/media/Environment.hpp>
+#include <corsika/framework/geometry/Sphere.hpp>
 #include <corsika/process/energy_loss/EnergyLoss.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <corsika/utl/CorsikaFenv.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/utility/CorsikaFenv.hpp>
 
 #include <fstream>
 #include <iostream>
 #include <limits>
+#include "../../corsika/setup/SetupStack.hpp"
 
 using namespace corsika;
-using namespace corsika::process;
-using namespace corsika::particles;
-using namespace corsika::geometry;
+using namespace corsika;
+using namespace corsika;
+using namespace corsika;
 using namespace corsika::environment;
 
 using namespace std;
@@ -76,14 +73,14 @@ int main() {
     };
     auto const [px, py, pz] =
         momentumComponents(theta / 180. * M_PI, phi / 180. * M_PI, P0);
-    auto plab = corsika::stack::MomentumVector(rootCS, {px, py, pz});
+    auto plab = corsika::MomentumVector(rootCS, {px, py, pz});
     cout << "input particle: " << beamCode << endl;
     cout << "input angles: theta=" << theta << " phi=" << phi << endl;
     cout << "input momentum: " << plab.GetComponents() / 1_GeV << endl;
 
     stack.AddParticle(
         std::tuple<particles::Code, units::si::HEPEnergyType,
-                   corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{
+                   corsika::MomentumVector, geometry::Point, units::si::TimeType>{
             beamCode, E0, plab, injectionPos, 0_ns});
 
     auto const p = stack.GetNextParticle();
diff --git a/Documentation/Examples/vertical_EAS.cc b/examples/vertical_EAS.cc
similarity index 81%
rename from Documentation/Examples/vertical_EAS.cc
rename to examples/vertical_EAS.cc
index 6fbed4a73..50071a8f8 100644
--- a/Documentation/Examples/vertical_EAS.cc
+++ b/examples/vertical_EAS.cc
@@ -6,59 +6,53 @@
  * the license.
  */
 
-/* clang-format off */
-// InteractionCounter used boost/histogram, which
-// fails if boost/type_traits have been included before. Thus, we have
-// to include it first...
-#include <corsika/process/interaction_counter/InteractionCounter.hpp>
-/* clang-format on */
-#include <corsika/cascade/Cascade.h>
-#include <corsika/environment/Environment.h>
-#include <corsika/environment/FlatExponential.h>
-#include <corsika/environment/HomogeneousMedium.h>
-#include <corsika/environment/IMagneticFieldModel.h>
-#include <corsika/environment/LayeredSphericalAtmosphereBuilder.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/environment/ShowerAxis.h>
-#include <corsika/environment/SlidingPlanarExponential.h>
-#include <corsika/environment/UniformMagneticField.h>
-#include <corsika/geometry/Plane.h>
-#include <corsika/geometry/Sphere.h>
-#include <corsika/logging/Logging.h>
-#include <corsika/process/ProcessSequence.h>
-#include <corsika/process/SwitchProcessSequence.h>
+#include <corsika/framework/core/Cascade.hpp>
+#include <corsika/framework/sequence/ProcessSequence.hpp>
 #include <corsika/process/StackProcess.h>
 #include <corsika/process/energy_loss/EnergyLoss.h>
-#include <corsika/process/longitudinal_profile/LongitudinalProfile.h>
-#include <corsika/process/observation_plane/ObservationPlane.h>
-#include <corsika/process/on_shell_check/OnShellCheck.h>
-#include <corsika/process/particle_cut/ParticleCut.h>
-#include <corsika/process/track_writer/TrackWriter.h>
-#include <corsika/process/proposal/ContinuousProcess.h>
-#include <corsika/process/proposal/Interaction.h>
-#include <corsika/process/pythia/Decay.h>
+#include <corsika/process/observation_plane/ObservationPlane.hpp>
+#include <corsika/process/particle_cut/ParticleCut.hpp>
+#include <corsika/process/switch_process/SwitchProcess.hpp>
+#include <corsika/process/tracking_line/TrackingLine.hpp>
+
+#include <corsika/media/LayeredSphericalAtmosphereBuilder.hpp>
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/FlatExponential.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+
+#include <corsika/framework/geometry/Plane.hpp>
+#include <corsika/framework/geometry/Sphere.hpp>
+
 #include <corsika/process/sibyll/Decay.h>
 #include <corsika/process/stack_inspector/StackInspector.h>
 #include <corsika/process/sibyll/Interaction.h>
 #include <corsika/process/sibyll/NuclearInteraction.h>
 #include <corsika/process/urqmd/UrQMD.h>
-#include <corsika/random/RNGManager.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <corsika/utl/CorsikaFenv.h>
+
+#include <corsika/process/particle_cut/ParticleCut.hpp>
+#include <corsika/process/track_writer/TrackWriter.h>
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <corsika/framework/random/RNGManager.hpp>
+
+#include <corsika/framework/utility/CorsikaFenv.hpp>
 
 #include <iomanip>
 #include <iostream>
 #include <limits>
 #include <string>
 
+#include "../../corsika/setup/SetupStack.hpp"
+#include "../../corsika/setup/SetupTrajectory.hpp"
+
+using namespace corsika;
 using namespace corsika;
-using namespace corsika::process;
 using namespace corsika::units;
-using namespace corsika::particles;
-using namespace corsika::random;
-using namespace corsika::geometry;
+using namespace corsika;
+using namespace corsika;
+using namespace corsika;
+using namespace corsika;
 using namespace corsika::environment;
 
 using namespace std;
@@ -140,9 +134,9 @@ int main(int argc, char** argv) {
   auto momentumComponents = [](double thetaRad, HEPMomentumType ptot) {
     return std::make_tuple(ptot * sin(thetaRad), 0_eV, -ptot * cos(thetaRad));
   };
-
-  auto const [px, py, pz] = momentumComponents(thetaRad, P0);
-  auto plab = corsika::stack::MomentumVector(rootCS, {px, py, pz});
+  auto const [px, py, pz] =
+      momentumComponents(theta / 180. * M_PI, phi / 180. * M_PI, P0);
+  auto plab = corsika::MomentumVector(rootCS, {px, py, pz});
   cout << "input particle: " << beamCode << endl;
   cout << "input angles: theta=" << theta << endl;
   cout << "input momentum: " << plab.GetComponents() / 1_GeV << ", norm = " << plab.norm()
@@ -191,10 +185,11 @@ int main(int argc, char** argv) {
 
   // setup processes, decays and interactions
 
-  process::particle_cut::ParticleCut cut{60_GeV, false, true};
-  process::proposal::Interaction proposal(env, cut.GetECut());
-  process::proposal::ContinuousProcess em_continuous(env, cut.GetECut());
-  process::interaction_counter::InteractionCounter proposalCounted(proposal);
+  stack.AddParticle(
+      std::tuple<particles::Code, units::si::HEPEnergyType,
+                 corsika::MomentumVector, geometry::Point, units::si::TimeType>{
+          beamCode, E0, plab, injectionPos, 0_ns});
+  //  }
 
   process::sibyll::Interaction sibyll;
   process::interaction_counter::InteractionCounter sibyllCounted(sibyll);
diff --git a/ThirdParty/catch2/catch.hpp b/externals/catch2/catch2/catch.hpp
similarity index 78%
rename from ThirdParty/catch2/catch.hpp
rename to externals/catch2/catch2/catch.hpp
index 02302b8d3..506cfe44d 100644
--- a/ThirdParty/catch2/catch.hpp
+++ b/externals/catch2/catch2/catch.hpp
@@ -1,9 +1,9 @@
 /*
- *  Catch v2.8.0
- *  Generated: 2019-05-26 21:29:22.235281
+ *  Catch v2.13.2
+ *  Generated: 2020-10-07 11:32:53.302017
  *  ----------------------------------------------------------
  *  This file has been merged from multiple headers. Please don't edit it directly
- *  Copyright (c) 2019 Two Blue Cubes Ltd. All rights reserved.
+ *  Copyright (c) 2020 Two Blue Cubes Ltd. All rights reserved.
  *
  *  Distributed under the Boost Software License, Version 1.0. (See accompanying
  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -14,8 +14,8 @@
 
 
 #define CATCH_VERSION_MAJOR 2
-#define CATCH_VERSION_MINOR 8
-#define CATCH_VERSION_PATCH 0
+#define CATCH_VERSION_MINOR 13
+#define CATCH_VERSION_PATCH 2
 
 #ifdef __clang__
 #    pragma clang system_header
@@ -132,36 +132,51 @@ namespace Catch {
 
 #endif
 
-#if defined(CATCH_CPP17_OR_GREATER)
-#  define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
+// We have to avoid both ICC and Clang, because they try to mask themselves
+// as gcc, and we want only GCC in this block
+#if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC) && !defined(__CUDACC__)
+#    define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic push" )
+#    define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION  _Pragma( "GCC diagnostic pop" )
+
+#    define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__)
+
 #endif
 
-#ifdef __clang__
+#if defined(__clang__)
+
+#    define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "clang diagnostic push" )
+#    define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION  _Pragma( "clang diagnostic pop" )
+
+// As of this writing, IBM XL's implementation of __builtin_constant_p has a bug
+// which results in calls to destructors being emitted for each temporary,
+// without a matching initialization. In practice, this can result in something
+// like `std::string::~string` being called on an uninitialized value.
+//
+// For example, this code will likely segfault under IBM XL:
+// ```
+// REQUIRE(std::string("12") + "34" == "1234")
+// ```
+//
+// Therefore, `CATCH_INTERNAL_IGNORE_BUT_WARN` is not implemented.
+#  if !defined(__ibmxl__) && !defined(__CUDACC__)
+#    define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__) /* NOLINT(cppcoreguidelines-pro-type-vararg, hicpp-vararg) */
+#  endif
+
+#    define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+         _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) \
+         _Pragma( "clang diagnostic ignored \"-Wglobal-constructors\"")
+
+#    define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \
+         _Pragma( "clang diagnostic ignored \"-Wparentheses\"" )
 
-#       define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
-            _Pragma( "clang diagnostic push" ) \
-            _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) \
-            _Pragma( "clang diagnostic ignored \"-Wglobal-constructors\"")
-#       define CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \
-            _Pragma( "clang diagnostic pop" )
-
-#       define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \
-            _Pragma( "clang diagnostic push" ) \
-            _Pragma( "clang diagnostic ignored \"-Wparentheses\"" )
-#       define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS \
-            _Pragma( "clang diagnostic pop" )
-
-#       define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \
-            _Pragma( "clang diagnostic push" ) \
-            _Pragma( "clang diagnostic ignored \"-Wunused-variable\"" )
-#       define CATCH_INTERNAL_UNSUPPRESS_UNUSED_WARNINGS \
-            _Pragma( "clang diagnostic pop" )
-
-#       define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \
-            _Pragma( "clang diagnostic push" ) \
-            _Pragma( "clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"" )
-#       define CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS \
-            _Pragma( "clang diagnostic pop" )
+#    define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \
+         _Pragma( "clang diagnostic ignored \"-Wunused-variable\"" )
+
+#    define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \
+         _Pragma( "clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"" )
+
+#    define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
+         _Pragma( "clang diagnostic ignored \"-Wunused-template\"" )
 
 #endif // __clang__
 
@@ -186,6 +201,7 @@ namespace Catch {
 // Android somehow still does not support std::to_string
 #if defined(__ANDROID__)
 #    define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING
+#    define CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE
 #endif
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -210,20 +226,19 @@ namespace Catch {
 // some versions of cygwin (most) do not support std::to_string. Use the libstd check.
 // https://gcc.gnu.org/onlinedocs/gcc-4.8.2/libstdc++/api/a01053_source.html line 2812-2813
 # if !((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \
-	       && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
+           && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
 
-#	define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING
+#    define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING
 
 # endif
 #endif // __CYGWIN__
 
 ////////////////////////////////////////////////////////////////////////////////
 // Visual C++
-#ifdef _MSC_VER
+#if defined(_MSC_VER)
 
-#  if _MSC_VER >= 1900 // Visual Studio 2015 or newer
-#    define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
-#  endif
+#  define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION __pragma( warning(push) )
+#  define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION  __pragma( warning(pop) )
 
 // Universal Windows platform does not support SEH
 // Or console colours (or console at all...)
@@ -236,10 +251,17 @@ namespace Catch {
 // MSVC traditional preprocessor needs some workaround for __VA_ARGS__
 // _MSVC_TRADITIONAL == 0 means new conformant preprocessor
 // _MSVC_TRADITIONAL == 1 means old traditional non-conformant preprocessor
-#  if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL)
-#    define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
-#  endif
+#  if !defined(__clang__) // Handle Clang masquerading for msvc
+#    if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL)
+#      define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
+#    endif // MSVC_TRADITIONAL
+#  endif // __clang__
+
+#endif // _MSC_VER
 
+#if defined(_REENTRANT) || defined(_MSC_VER)
+// Enable async processing, as -pthread is specified or no additional linking is required
+# define CATCH_INTERNAL_CONFIG_USE_ASYNC
 #endif // _MSC_VER
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -272,40 +294,56 @@ namespace Catch {
 #endif
 
 ////////////////////////////////////////////////////////////////////////////////
-// Check if string_view is available and usable
-// The check is split apart to work around v140 (VS2015) preprocessor issue...
-#if defined(__has_include)
-#if __has_include(<string_view>) && defined(CATCH_CPP17_OR_GREATER)
-#    define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW
-#endif
+
+// RTX is a special version of Windows that is real time.
+// This means that it is detected as Windows, but does not provide
+// the same set of capabilities as real Windows does.
+#if defined(UNDER_RTSS) || defined(RTX64_BUILD)
+    #define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH
+    #define CATCH_INTERNAL_CONFIG_NO_ASYNC
+    #define CATCH_CONFIG_COLOUR_NONE
 #endif
 
-////////////////////////////////////////////////////////////////////////////////
-// Check if optional is available and usable
-#if defined(__has_include)
-#  if __has_include(<optional>) && defined(CATCH_CPP17_OR_GREATER)
-#    define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL
-#  endif // __has_include(<optional>) && defined(CATCH_CPP17_OR_GREATER)
-#endif // __has_include
+#if !defined(_GLIBCXX_USE_C99_MATH_TR1)
+#define CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER
+#endif
 
-////////////////////////////////////////////////////////////////////////////////
-// Check if variant is available and usable
+// Various stdlib support checks that require __has_include
 #if defined(__has_include)
-#  if __has_include(<variant>) && defined(CATCH_CPP17_OR_GREATER)
-#    if defined(__clang__) && (__clang_major__ < 8)
-       // work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852
-       // fix should be in clang 8, workaround in libstdc++ 8.2
-#      include <ciso646>
-#      if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9)
-#        define CATCH_CONFIG_NO_CPP17_VARIANT
-#      else
-#        define CATCH_INTERNAL_CONFIG_CPP17_VARIANT
-#      endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9)
-#    else
-#      define CATCH_INTERNAL_CONFIG_CPP17_VARIANT
-#    endif // defined(__clang__) && (__clang_major__ < 8)
-#  endif // __has_include(<variant>) && defined(CATCH_CPP17_OR_GREATER)
-#endif // __has_include
+  // Check if string_view is available and usable
+  #if __has_include(<string_view>) && defined(CATCH_CPP17_OR_GREATER)
+  #    define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW
+  #endif
+
+  // Check if optional is available and usable
+  #  if __has_include(<optional>) && defined(CATCH_CPP17_OR_GREATER)
+  #    define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL
+  #  endif // __has_include(<optional>) && defined(CATCH_CPP17_OR_GREATER)
+
+  // Check if byte is available and usable
+  #  if __has_include(<cstddef>) && defined(CATCH_CPP17_OR_GREATER)
+  #    include <cstddef>
+  #    if __cpp_lib_byte > 0
+  #      define CATCH_INTERNAL_CONFIG_CPP17_BYTE
+  #    endif
+  #  endif // __has_include(<cstddef>) && defined(CATCH_CPP17_OR_GREATER)
+
+  // Check if variant is available and usable
+  #  if __has_include(<variant>) && defined(CATCH_CPP17_OR_GREATER)
+  #    if defined(__clang__) && (__clang_major__ < 8)
+         // work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852
+         // fix should be in clang 8, workaround in libstdc++ 8.2
+  #      include <ciso646>
+  #      if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9)
+  #        define CATCH_CONFIG_NO_CPP17_VARIANT
+  #      else
+  #        define CATCH_INTERNAL_CONFIG_CPP17_VARIANT
+  #      endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9)
+  #    else
+  #      define CATCH_INTERNAL_CONFIG_CPP17_VARIANT
+  #    endif // defined(__clang__) && (__clang_major__ < 8)
+  #  endif // __has_include(<variant>) && defined(CATCH_CPP17_OR_GREATER)
+#endif // defined(__has_include)
 
 #if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER)
 #   define CATCH_CONFIG_COUNTER
@@ -330,10 +368,6 @@ namespace Catch {
 #  define CATCH_CONFIG_CPP17_OPTIONAL
 #endif
 
-#if defined(CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS) && !defined(CATCH_CONFIG_NO_CPP17_UNCAUGHT_EXCEPTIONS) && !defined(CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS)
-#  define CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
-#endif
-
 #if defined(CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_NO_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_CPP17_STRING_VIEW)
 #  define CATCH_CONFIG_CPP17_STRING_VIEW
 #endif
@@ -342,6 +376,10 @@ namespace Catch {
 #  define CATCH_CONFIG_CPP17_VARIANT
 #endif
 
+#if defined(CATCH_INTERNAL_CONFIG_CPP17_BYTE) && !defined(CATCH_CONFIG_NO_CPP17_BYTE) && !defined(CATCH_CONFIG_CPP17_BYTE)
+#  define CATCH_CONFIG_CPP17_BYTE
+#endif
+
 #if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT)
 #  define CATCH_INTERNAL_CONFIG_NEW_CAPTURE
 #endif
@@ -358,21 +396,53 @@ namespace Catch {
 #  define CATCH_CONFIG_POLYFILL_ISNAN
 #endif
 
+#if defined(CATCH_INTERNAL_CONFIG_USE_ASYNC)  && !defined(CATCH_INTERNAL_CONFIG_NO_ASYNC) && !defined(CATCH_CONFIG_NO_USE_ASYNC) && !defined(CATCH_CONFIG_USE_ASYNC)
+#  define CATCH_CONFIG_USE_ASYNC
+#endif
+
+#if defined(CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE) && !defined(CATCH_CONFIG_NO_ANDROID_LOGWRITE) && !defined(CATCH_CONFIG_ANDROID_LOGWRITE)
+#  define CATCH_CONFIG_ANDROID_LOGWRITE
+#endif
+
+#if defined(CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_NO_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_GLOBAL_NEXTAFTER)
+#  define CATCH_CONFIG_GLOBAL_NEXTAFTER
+#endif
+
+// Even if we do not think the compiler has that warning, we still have
+// to provide a macro that can be used by the code.
+#if !defined(CATCH_INTERNAL_START_WARNINGS_SUPPRESSION)
+#   define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
+#endif
+#if !defined(CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION)
+#   define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
+#endif
 #if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS)
 #   define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS
-#   define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS
 #endif
 #if !defined(CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS)
 #   define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
-#   define CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS
 #endif
 #if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS)
 #   define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS
-#   define CATCH_INTERNAL_UNSUPPRESS_UNUSED_WARNINGS
 #endif
 #if !defined(CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS)
 #   define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS
-#   define CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS
+#endif
+
+// The goal of this macro is to avoid evaluation of the arguments, but
+// still have the compiler warn on problems inside...
+#if !defined(CATCH_INTERNAL_IGNORE_BUT_WARN)
+#   define CATCH_INTERNAL_IGNORE_BUT_WARN(...)
+#endif
+
+#if defined(__APPLE__) && defined(__apple_build_version__) && (__clang_major__ < 10)
+#   undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS
+#elif defined(__clang__) && (__clang_major__ < 5)
+#   undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS
+#endif
+
+#if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS)
+#   define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS
 #endif
 
 #if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
@@ -437,7 +507,7 @@ namespace Catch {
         SourceLineInfo( SourceLineInfo&& )              noexcept = default;
         SourceLineInfo& operator = ( SourceLineInfo&& ) noexcept = default;
 
-        bool empty() const noexcept;
+        bool empty() const noexcept { return file[0] == '\0'; }
         bool operator == ( SourceLineInfo const& other ) const noexcept;
         bool operator < ( SourceLineInfo const& other ) const noexcept;
 
@@ -478,9 +548,10 @@ namespace Catch {
 } // end namespace Catch
 
 #define CATCH_REGISTER_TAG_ALIAS( alias, spec ) \
+    CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
     CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
     namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); } \
-    CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS
+    CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
 
 // end catch_tag_alias_autoregistrar.h
 // start catch_test_registry.h
@@ -507,6 +578,7 @@ namespace Catch {
         virtual std::vector<TestCase> const& getAllTestsSorted( IConfig const& config ) const = 0;
     };
 
+    bool isThrowSafe( TestCase const& testCase, IConfig const& config );
     bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config );
     std::vector<TestCase> filterTests( std::vector<TestCase> const& testCases, TestSpec const& testSpec, IConfig const& config );
     std::vector<TestCase> const& getAllTestCasesSorted( IConfig const& config );
@@ -519,53 +591,30 @@ namespace Catch {
 #include <cstddef>
 #include <string>
 #include <iosfwd>
+#include <cassert>
 
 namespace Catch {
 
     /// A non-owning string class (similar to the forthcoming std::string_view)
     /// Note that, because a StringRef may be a substring of another string,
-    /// it may not be null terminated. c_str() must return a null terminated
-    /// string, however, and so the StringRef will internally take ownership
-    /// (taking a copy), if necessary. In theory this ownership is not externally
-    /// visible - but it does mean (substring) StringRefs should not be shared between
-    /// threads.
+    /// it may not be null terminated.
     class StringRef {
     public:
         using size_type = std::size_t;
+        using const_iterator = const char*;
 
     private:
-        friend struct StringRefTestAccess;
-
-        char const* m_start;
-        size_type m_size;
-
-        char* m_data = nullptr;
-
-        void takeOwnership();
-
         static constexpr char const* const s_empty = "";
 
-    public: // construction/ assignment
-        StringRef() noexcept
-        :   StringRef( s_empty, 0 )
-        {}
-
-        StringRef( StringRef const& other ) noexcept
-        :   m_start( other.m_start ),
-            m_size( other.m_size )
-        {}
+        char const* m_start = s_empty;
+        size_type m_size = 0;
 
-        StringRef( StringRef&& other ) noexcept
-        :   m_start( other.m_start ),
-            m_size( other.m_size ),
-            m_data( other.m_data )
-        {
-            other.m_data = nullptr;
-        }
+    public: // construction
+        constexpr StringRef() noexcept = default;
 
         StringRef( char const* rawChars ) noexcept;
 
-        StringRef( char const* rawChars, size_type size ) noexcept
+        constexpr StringRef( char const* rawChars, size_type size ) noexcept
         :   m_start( rawChars ),
             m_size( size )
         {}
@@ -575,101 +624,64 @@ namespace Catch {
             m_size( stdString.size() )
         {}
 
-        ~StringRef() noexcept {
-            delete[] m_data;
+        explicit operator std::string() const {
+            return std::string(m_start, m_size);
         }
 
-        auto operator = ( StringRef const &other ) noexcept -> StringRef& {
-            delete[] m_data;
-            m_data = nullptr;
-            m_start = other.m_start;
-            m_size = other.m_size;
-            return *this;
-        }
-
-        operator std::string() const;
-
-        void swap( StringRef& other ) noexcept;
-
     public: // operators
         auto operator == ( StringRef const& other ) const noexcept -> bool;
-        auto operator != ( StringRef const& other ) const noexcept -> bool;
+        auto operator != (StringRef const& other) const noexcept -> bool {
+            return !(*this == other);
+        }
 
-        auto operator[] ( size_type index ) const noexcept -> char;
+        auto operator[] ( size_type index ) const noexcept -> char {
+            assert(index < m_size);
+            return m_start[index];
+        }
 
     public: // named queries
-        auto empty() const noexcept -> bool {
+        constexpr auto empty() const noexcept -> bool {
             return m_size == 0;
         }
-        auto size() const noexcept -> size_type {
+        constexpr auto size() const noexcept -> size_type {
             return m_size;
         }
 
-        auto numberOfCharacters() const noexcept -> size_type;
+        // Returns the current start pointer. If the StringRef is not
+        // null-terminated, throws std::domain_exception
         auto c_str() const -> char const*;
 
     public: // substrings and searches
-        auto substr( size_type start, size_type size ) const noexcept -> StringRef;
+        // Returns a substring of [start, start + length).
+        // If start + length > size(), then the substring is [start, size()).
+        // If start > size(), then the substring is empty.
+        auto substr( size_type start, size_type length ) const noexcept -> StringRef;
 
-        // Returns the current start pointer.
-        // Note that the pointer can change when if the StringRef is a substring
-        auto currentData() const noexcept -> char const*;
+        // Returns the current start pointer. May not be null-terminated.
+        auto data() const noexcept -> char const*;
 
-    private: // ownership queries - may not be consistent between calls
-        auto isOwned() const noexcept -> bool;
-        auto isSubstring() const noexcept -> bool;
-    };
+        constexpr auto isNullTerminated() const noexcept -> bool {
+            return m_start[m_size] == '\0';
+        }
 
-    auto operator + ( StringRef const& lhs, StringRef const& rhs ) -> std::string;
-    auto operator + ( StringRef const& lhs, char const* rhs ) -> std::string;
-    auto operator + ( char const* lhs, StringRef const& rhs ) -> std::string;
+    public: // iterators
+        constexpr const_iterator begin() const { return m_start; }
+        constexpr const_iterator end() const { return m_start + m_size; }
+    };
 
     auto operator += ( std::string& lhs, StringRef const& sr ) -> std::string&;
     auto operator << ( std::ostream& os, StringRef const& sr ) -> std::ostream&;
 
-    inline auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef {
+    constexpr auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef {
         return StringRef( rawChars, size );
     }
-
 } // namespace Catch
 
-inline auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef {
+constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef {
     return Catch::StringRef( rawChars, size );
 }
 
 // end catch_stringref.h
-// start catch_type_traits.hpp
-
-
-#include <type_traits>
-
-namespace Catch{
-
-#ifdef CATCH_CPP17_OR_GREATER
-	template <typename...>
-	inline constexpr auto is_unique = std::true_type{};
-
-	template <typename T, typename... Rest>
-	inline constexpr auto is_unique<T, Rest...> = std::bool_constant<
-		(!std::is_same_v<T, Rest> && ...) && is_unique<Rest...>
-	>{};
-#else
-
-template <typename...>
-struct is_unique : std::true_type{};
-
-template <typename T0, typename T1, typename... Rest>
-struct is_unique<T0, T1, Rest...> : std::integral_constant
-<bool,
-     !std::is_same<T0, T1>::value
-     && is_unique<T0, Rest...>::value
-     && is_unique<T1, Rest...>::value
->{};
-
-#endif
-}
-
-// end catch_type_traits.hpp
 // start catch_preprocessor.hpp
 
 
@@ -754,7 +766,7 @@ struct is_unique<T0, T1, Rest...> : std::integral_constant
 #define INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_0, _1, _2, _3) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_1, _2, _3)
 #define INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_0, _1, _2, _3, _4) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_1, _2, _3, _4)
 #define INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_0, _1, _2, _3, _4, _5) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_1, _2, _3, _4, _5)
-#define INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_0, _1, _2, _3, _4, _5, _6) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_1, _2, _4, _5, _6)
+#define INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_0, _1, _2, _3, _4, _5, _6) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_1, _2, _3, _4, _5, _6)
 #define INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_0, _1, _2, _3, _4, _5, _6, _7) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_1, _2, _3, _4, _5, _6, _7)
 #define INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_1, _2, _3, _4, _5, _6, _7, _8)
 #define INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9)
@@ -766,31 +778,49 @@ struct is_unique<T0, T1, Rest...> : std::integral_constant
     template<typename...> struct TypeList {};\
     template<typename...Ts>\
     constexpr auto get_wrapper() noexcept -> TypeList<Ts...> { return {}; }\
+    template<template<typename...> class...> struct TemplateTypeList{};\
+    template<template<typename...> class...Cs>\
+    constexpr auto get_wrapper() noexcept -> TemplateTypeList<Cs...> { return {}; }\
+    template<typename...>\
+    struct append;\
+    template<typename...>\
+    struct rewrap;\
+    template<template<typename...> class, typename...>\
+    struct create;\
+    template<template<typename...> class, typename>\
+    struct convert;\
     \
-    template<template<typename...> class L1, typename...E1, template<typename...> class L2, typename...E2> \
-    constexpr auto append(L1<E1...>, L2<E2...>) noexcept -> L1<E1...,E2...> { return {}; }\
+    template<typename T> \
+    struct append<T> { using type = T; };\
     template< template<typename...> class L1, typename...E1, template<typename...> class L2, typename...E2, typename...Rest>\
-    constexpr auto append(L1<E1...>, L2<E2...>, Rest...) noexcept -> decltype(append(L1<E1...,E2...>{}, Rest{}...)) { return {}; }\
+    struct append<L1<E1...>, L2<E2...>, Rest...> { using type = typename append<L1<E1...,E2...>, Rest...>::type; };\
+    template< template<typename...> class L1, typename...E1, typename...Rest>\
+    struct append<L1<E1...>, TypeList<mpl_::na>, Rest...> { using type = L1<E1...>; };\
     \
     template< template<typename...> class Container, template<typename...> class List, typename...elems>\
-    constexpr auto rewrap(List<elems...>) noexcept -> TypeList<Container<elems...>> { return {}; }\
+    struct rewrap<TemplateTypeList<Container>, List<elems...>> { using type = TypeList<Container<elems...>>; };\
     template< template<typename...> class Container, template<typename...> class List, class...Elems, typename...Elements>\
-    constexpr auto rewrap(List<Elems...>,Elements...) noexcept -> decltype(append(TypeList<Container<Elems...>>{}, rewrap<Container>(Elements{}...))) { return {}; }\
+    struct rewrap<TemplateTypeList<Container>, List<Elems...>, Elements...> { using type = typename append<TypeList<Container<Elems...>>, typename rewrap<TemplateTypeList<Container>, Elements...>::type>::type; };\
     \
     template<template <typename...> class Final, template< typename...> class...Containers, typename...Types>\
-    constexpr auto create(TypeList<Types...>) noexcept -> decltype(append(Final<>{}, rewrap<Containers>(Types{}...)...)) { return {}; }
+    struct create<Final, TemplateTypeList<Containers...>, TypeList<Types...>> { using type = typename append<Final<>, typename rewrap<TemplateTypeList<Containers>, Types...>::type...>::type; };\
+    template<template <typename...> class Final, template <typename...> class List, typename...Ts>\
+    struct convert<Final, List<Ts...>> { using type = typename append<Final<>,TypeList<Ts>...>::type; };
 
 #define INTERNAL_CATCH_NTTP_1(signature, ...)\
     template<INTERNAL_CATCH_REMOVE_PARENS(signature)> struct Nttp{};\
     template<INTERNAL_CATCH_REMOVE_PARENS(signature)>\
     constexpr auto get_wrapper() noexcept -> Nttp<__VA_ARGS__> { return {}; } \
+    template<template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class...> struct NttpTemplateTypeList{};\
+    template<template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class...Cs>\
+    constexpr auto get_wrapper() noexcept -> NttpTemplateTypeList<Cs...> { return {}; } \
     \
     template< template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class Container, template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class List, INTERNAL_CATCH_REMOVE_PARENS(signature)>\
-    constexpr auto rewrap(List<__VA_ARGS__>) noexcept -> TypeList<Container<__VA_ARGS__>> { return {}; }\
+    struct rewrap<NttpTemplateTypeList<Container>, List<__VA_ARGS__>> { using type = TypeList<Container<__VA_ARGS__>>; };\
     template< template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class Container, template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class List, INTERNAL_CATCH_REMOVE_PARENS(signature), typename...Elements>\
-    constexpr auto rewrap(List<__VA_ARGS__>,Elements...elems) noexcept -> decltype(append(TypeList<Container<__VA_ARGS__>>{}, rewrap<Container>(elems...))) { return {}; }\
+    struct rewrap<NttpTemplateTypeList<Container>, List<__VA_ARGS__>, Elements...> { using type = typename append<TypeList<Container<__VA_ARGS__>>, typename rewrap<NttpTemplateTypeList<Container>, Elements...>::type>::type; };\
     template<template <typename...> class Final, template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class...Containers, typename...Types>\
-    constexpr auto create(TypeList<Types...>) noexcept -> decltype(append(Final<>{}, rewrap<Containers>(Types{}...)...)) { return {}; }
+    struct create<Final, NttpTemplateTypeList<Containers...>, TypeList<Types...>> { using type = typename append<Final<>, typename rewrap<NttpTemplateTypeList<Containers>, Types...>::type...>::type; };
 
 #define INTERNAL_CATCH_DECLARE_SIG_TEST0(TestName)
 #define INTERNAL_CATCH_DECLARE_SIG_TEST1(TestName, signature)\
@@ -888,8 +918,38 @@ struct is_unique<T0, T1, Rest...> : std::integral_constant
 namespace Catch {
     template<typename T>
     struct always_false : std::false_type {};
+
+    template <typename> struct true_given : std::true_type {};
+    struct is_callable_tester {
+        template <typename Fun, typename... Args>
+        true_given<decltype(std::declval<Fun>()(std::declval<Args>()...))> static test(int);
+        template <typename...>
+        std::false_type static test(...);
+    };
+
+    template <typename T>
+    struct is_callable;
+
+    template <typename Fun, typename... Args>
+    struct is_callable<Fun(Args...)> : decltype(is_callable_tester::test<Fun, Args...>(0)) {};
+
+#if defined(__cpp_lib_is_invocable) && __cpp_lib_is_invocable >= 201703
+    // std::result_of is deprecated in C++17 and removed in C++20. Hence, it is
+    // replaced with std::invoke_result here.
+    template <typename Func, typename... U>
+    using FunctionReturnType = std::remove_reference_t<std::remove_cv_t<std::invoke_result_t<Func, U...>>>;
+#else
+    // Keep ::type here because we still support C++11
+    template <typename Func, typename... U>
+    using FunctionReturnType = typename std::remove_reference<typename std::remove_cv<typename std::result_of<Func(U...)>::type>::type>::type;
+#endif
+
 } // namespace Catch
 
+namespace mpl_{
+    struct na;
+}
+
 // end catch_meta.hpp
 namespace Catch {
 
@@ -981,21 +1041,24 @@ struct AutoReg : NonCopyable {
     ///////////////////////////////////////////////////////////////////////////////
     #define INTERNAL_CATCH_TESTCASE2( TestName, ... ) \
         static void TestName(); \
+        CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
         namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &TestName ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \
-        CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \
+        CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
         static void TestName()
     #define INTERNAL_CATCH_TESTCASE( ... ) \
         INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), __VA_ARGS__ )
 
     ///////////////////////////////////////////////////////////////////////////////
     #define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, ... ) \
+        CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
         namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &QualifiedMethod ), CATCH_INTERNAL_LINEINFO, "&" #QualifiedMethod, Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \
-        CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS
+        CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
 
     ///////////////////////////////////////////////////////////////////////////////
     #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\
+        CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
         namespace{ \
             struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName) { \
@@ -1003,21 +1066,24 @@ struct AutoReg : NonCopyable {
             }; \
             Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( Catch::makeTestInvoker( &TestName::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \
         } \
-        CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \
+        CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
         void TestName::test()
     #define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, ... ) \
         INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), ClassName, __VA_ARGS__ )
 
     ///////////////////////////////////////////////////////////////////////////////
     #define INTERNAL_CATCH_REGISTER_TESTCASE( Function, ... ) \
+        CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
         Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( Function ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \
-        CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS
+        CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
 
     ///////////////////////////////////////////////////////////////////////////////
     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_2(TestName, TestFunc, Name, Tags, Signature, ... )\
+        CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
         CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \
+        CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
         INTERNAL_CATCH_DECLARE_SIG_TEST(TestFunc, INTERNAL_CATCH_REMOVE_PARENS(Signature));\
         namespace {\
         namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){\
@@ -1030,7 +1096,7 @@ struct AutoReg : NonCopyable {
                     int index = 0;                                    \
                     constexpr char const* tmpl_types[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, __VA_ARGS__)};\
                     using expander = int[];\
-                    (void)expander{(reg_test(Types{}, Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index]), Tags } ), index++, 0)... };/* NOLINT */ \
+                    (void)expander{(reg_test(Types{}, Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index]), Tags } ), index++)... };/* NOLINT */ \
                 }\
             };\
             static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){\
@@ -1039,8 +1105,7 @@ struct AutoReg : NonCopyable {
         }();\
         }\
         }\
-        CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \
-        CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS \
+        CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
         INTERNAL_CATCH_DEFINE_SIG_TEST(TestFunc,INTERNAL_CATCH_REMOVE_PARENS(Signature))
 
 #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
@@ -1060,8 +1125,10 @@ struct AutoReg : NonCopyable {
 #endif
 
     #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(TestName, TestFuncName, Name, Tags, Signature, TmplTypes, TypesList) \
+        CATCH_INTERNAL_START_WARNINGS_SUPPRESSION                      \
         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS                      \
         CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS                \
+        CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS              \
         template<typename TestType> static void TestFuncName();       \
         namespace {\
         namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName) {                                     \
@@ -1075,19 +1142,18 @@ struct AutoReg : NonCopyable {
                     constexpr char const* tmpl_types[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, INTERNAL_CATCH_REMOVE_PARENS(TmplTypes))};\
                     constexpr char const* types_list[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, INTERNAL_CATCH_REMOVE_PARENS(TypesList))};\
                     constexpr auto num_types = sizeof(types_list) / sizeof(types_list[0]);\
-                    (void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestFuncName<Types> ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index / num_types]) + "<" + std::string(types_list[index % num_types]) + ">", Tags } ), index++, 0)... };/* NOLINT */\
+                    (void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestFuncName<Types> ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index / num_types]) + "<" + std::string(types_list[index % num_types]) + ">", Tags } ), index++)... };/* NOLINT */\
                 }                                                     \
             };                                                        \
             static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){ \
-                using TestInit = decltype(create<TestName, INTERNAL_CATCH_REMOVE_PARENS(TmplTypes)>(TypeList<INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(INTERNAL_CATCH_REMOVE_PARENS(TypesList))>{})); \
+                using TestInit = typename create<TestName, decltype(get_wrapper<INTERNAL_CATCH_REMOVE_PARENS(TmplTypes)>()), TypeList<INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(INTERNAL_CATCH_REMOVE_PARENS(TypesList))>>::type; \
                 TestInit t;                                           \
                 t.reg_tests();                                        \
                 return 0;                                             \
             }();                                                      \
         }                                                             \
         }                                                             \
-        CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS                    \
-        CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS              \
+        CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION                       \
         template<typename TestType>                                   \
         static void TestFuncName()
 
@@ -1107,9 +1173,41 @@ struct AutoReg : NonCopyable {
         INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, Signature, __VA_ARGS__ ) )
 #endif
 
+    #define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2(TestName, TestFunc, Name, Tags, TmplList)\
+        CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+        CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+        CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
+        template<typename TestType> static void TestFunc();       \
+        namespace {\
+        namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){\
+        INTERNAL_CATCH_TYPE_GEN\
+        template<typename... Types>                               \
+        struct TestName {                                         \
+            void reg_tests() {                                          \
+                int index = 0;                                    \
+                using expander = int[];                           \
+                (void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestFunc<Types> ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ Name " - " + std::string(INTERNAL_CATCH_STRINGIZE(TmplList)) + " - " + std::to_string(index), Tags } ), index++)... };/* NOLINT */\
+            }                                                     \
+        };\
+        static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){ \
+                using TestInit = typename convert<TestName, TmplList>::type; \
+                TestInit t;                                           \
+                t.reg_tests();                                        \
+                return 0;                                             \
+            }();                                                      \
+        }}\
+        CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION                       \
+        template<typename TestType>                                   \
+        static void TestFunc()
+
+    #define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE(Name, Tags, TmplList) \
+        INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, TmplList )
+
     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( TestNameClass, TestName, ClassName, Name, Tags, Signature, ... ) \
+        CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
         CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \
+        CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
         namespace {\
         namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){ \
             INTERNAL_CATCH_TYPE_GEN\
@@ -1122,7 +1220,7 @@ struct AutoReg : NonCopyable {
                     int index = 0;                                    \
                     constexpr char const* tmpl_types[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, __VA_ARGS__)};\
                     using expander = int[];\
-                    (void)expander{(reg_test(Types{}, #ClassName, Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index]), Tags } ), index++, 0)... };/* NOLINT */ \
+                    (void)expander{(reg_test(Types{}, #ClassName, Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index]), Tags } ), index++)... };/* NOLINT */ \
                 }\
             };\
             static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){\
@@ -1131,8 +1229,7 @@ struct AutoReg : NonCopyable {
         }();\
         }\
         }\
-        CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS\
-        CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS\
+        CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
         INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD(TestName, INTERNAL_CATCH_REMOVE_PARENS(Signature))
 
 #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
@@ -1152,8 +1249,10 @@ struct AutoReg : NonCopyable {
 #endif
 
     #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2(TestNameClass, TestName, ClassName, Name, Tags, Signature, TmplTypes, TypesList)\
+        CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
         CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \
+        CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
         template<typename TestType> \
             struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName <TestType>) { \
                 void test();\
@@ -1170,19 +1269,18 @@ struct AutoReg : NonCopyable {
                     constexpr char const* tmpl_types[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, INTERNAL_CATCH_REMOVE_PARENS(TmplTypes))};\
                     constexpr char const* types_list[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, INTERNAL_CATCH_REMOVE_PARENS(TypesList))};\
                     constexpr auto num_types = sizeof(types_list) / sizeof(types_list[0]);\
-                    (void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestName<Types>::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index / num_types]) + "<" + std::string(types_list[index % num_types]) + ">", Tags } ), index++, 0)... };/* NOLINT */ \
+                    (void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestName<Types>::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index / num_types]) + "<" + std::string(types_list[index % num_types]) + ">", Tags } ), index++)... };/* NOLINT */ \
                 }\
             };\
             static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){\
-                using TestInit = decltype(create<TestNameClass, INTERNAL_CATCH_REMOVE_PARENS(TmplTypes)>(TypeList<INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(INTERNAL_CATCH_REMOVE_PARENS(TypesList))>{}));\
+                using TestInit = typename create<TestNameClass, decltype(get_wrapper<INTERNAL_CATCH_REMOVE_PARENS(TmplTypes)>()), TypeList<INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(INTERNAL_CATCH_REMOVE_PARENS(TypesList))>>::type;\
                 TestInit t;\
                 t.reg_tests();\
                 return 0;\
             }(); \
         }\
         }\
-        CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \
-        CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS \
+        CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
         template<typename TestType> \
         void TestName<TestType>::test()
 
@@ -1202,6 +1300,39 @@ struct AutoReg : NonCopyable {
         INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), ClassName, Name, Tags, Signature,__VA_ARGS__ ) )
 #endif
 
+    #define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2( TestNameClass, TestName, ClassName, Name, Tags, TmplList) \
+        CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
+        CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
+        CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \
+        template<typename TestType> \
+        struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName <TestType>) { \
+            void test();\
+        };\
+        namespace {\
+        namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){ \
+            INTERNAL_CATCH_TYPE_GEN\
+            template<typename...Types>\
+            struct TestNameClass{\
+                void reg_tests(){\
+                    int index = 0;\
+                    using expander = int[];\
+                    (void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestName<Types>::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ Name " - " + std::string(INTERNAL_CATCH_STRINGIZE(TmplList)) + " - " + std::to_string(index), Tags } ), index++)... };/* NOLINT */ \
+                }\
+            };\
+            static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){\
+                using TestInit = typename convert<TestNameClass, TmplList>::type;\
+                TestInit t;\
+                t.reg_tests();\
+                return 0;\
+            }(); \
+        }}\
+        CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
+        template<typename TestType> \
+        void TestName<TestType>::test()
+
+#define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD(ClassName, Name, Tags, TmplList) \
+        INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), ClassName, Name, Tags, TmplList )
+
 // end catch_test_registry.h
 // start catch_capture.hpp
 
@@ -1301,7 +1432,7 @@ namespace Catch {
 
     auto makeStream( StringRef const &filename ) -> IStream const*;
 
-    class ReusableStringStream {
+    class ReusableStringStream : NonCopyable {
         std::size_t m_index;
         std::ostream* m_oss;
     public:
@@ -1329,7 +1460,7 @@ namespace Catch {
     namespace Detail {
         struct EnumInfo {
             StringRef m_name;
-            std::vector<std::pair<int, std::string>> m_values;
+            std::vector<std::pair<int, StringRef>> m_values;
 
             ~EnumInfo();
 
@@ -1344,6 +1475,7 @@ namespace Catch {
 
         template<typename E>
         Detail::EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::initializer_list<E> values ) {
+            static_assert(sizeof(int) >= sizeof(E), "Cannot serialize enum to int");
             std::vector<int> intValues;
             intValues.reserve( values.size() );
             for( auto enumValue : values )
@@ -1425,9 +1557,9 @@ namespace Catch {
 
         template<typename T>
         class IsStreamInsertable {
-            template<typename SS, typename TT>
+            template<typename Stream, typename U>
             static auto test(int)
-                -> decltype(std::declval<SS&>() << std::declval<TT>(), std::true_type());
+                -> decltype(std::declval<Stream&>() << std::declval<U>(), std::true_type());
 
             template<typename, typename>
             static auto test(...)->std::false_type;
@@ -1589,6 +1721,12 @@ namespace Catch {
         }
     };
 
+#if defined(CATCH_CONFIG_CPP17_BYTE)
+    template<>
+    struct StringMaker<std::byte> {
+        static std::string convert(std::byte value);
+    };
+#endif // defined(CATCH_CONFIG_CPP17_BYTE)
     template<>
     struct StringMaker<int> {
         static std::string convert(int value);
@@ -1682,8 +1820,8 @@ namespace Catch {
 #endif
 
     namespace Detail {
-        template<typename InputIterator>
-        std::string rangeToString(InputIterator first, InputIterator last) {
+        template<typename InputIterator, typename Sentinel = InputIterator>
+        std::string rangeToString(InputIterator first, Sentinel last) {
             ReusableStringStream rss;
             rss << "{ ";
             if (first != last) {
@@ -1841,20 +1979,27 @@ namespace Catch {
 #endif // CATCH_CONFIG_ENABLE_VARIANT_STRINGMAKER
 
 namespace Catch {
-    struct not_this_one {}; // Tag type for detecting which begin/ end are being selected
-
-    // Import begin/ end from std here so they are considered alongside the fallback (...) overloads in this namespace
+    // Import begin/ end from std here
     using std::begin;
     using std::end;
 
-    not_this_one begin( ... );
-    not_this_one end( ... );
+    namespace detail {
+        template <typename...>
+        struct void_type {
+            using type = void;
+        };
+
+        template <typename T, typename = void>
+        struct is_range_impl : std::false_type {
+        };
+
+        template <typename T>
+        struct is_range_impl<T, typename void_type<decltype(begin(std::declval<T>()))>::type> : std::true_type {
+        };
+    } // namespace detail
 
     template <typename T>
-    struct is_range {
-        static const bool value =
-            !std::is_same<decltype(begin(std::declval<T>())), not_this_one>::value &&
-            !std::is_same<decltype(end(std::declval<T>())), not_this_one>::value;
+    struct is_range : detail::is_range_impl<T> {
     };
 
 #if defined(_MANAGED) // Managed types are never ranges
@@ -2024,7 +2169,7 @@ namespace Catch { \
     template<> struct StringMaker<enumName> { \
         static std::string convert( enumName value ) { \
             static const auto& enumInfo = ::Catch::getMutableRegistryHub().getMutableEnumValuesRegistry().registerEnum( #enumName, #__VA_ARGS__, { __VA_ARGS__ } ); \
-            return enumInfo.lookup( static_cast<int>( value ) ); \
+            return static_cast<std::string>(enumInfo.lookup( static_cast<int>( value ) )); \
         } \
     }; \
 }
@@ -2222,6 +2367,18 @@ namespace Catch {
         auto operator <= ( RhsT const& rhs ) -> BinaryExpr<LhsT, RhsT const&> const {
             return { static_cast<bool>(m_lhs <= rhs), m_lhs, "<=", rhs };
         }
+        template <typename RhsT>
+        auto operator | (RhsT const& rhs) -> BinaryExpr<LhsT, RhsT const&> const {
+            return { static_cast<bool>(m_lhs | rhs), m_lhs, "|", rhs };
+        }
+        template <typename RhsT>
+        auto operator & (RhsT const& rhs) -> BinaryExpr<LhsT, RhsT const&> const {
+            return { static_cast<bool>(m_lhs & rhs), m_lhs, "&", rhs };
+        }
+        template <typename RhsT>
+        auto operator ^ (RhsT const& rhs) -> BinaryExpr<LhsT, RhsT const&> const {
+            return { static_cast<bool>(m_lhs ^ rhs), m_lhs, "^", rhs };
+        }
 
         template<typename RhsT>
         auto operator && ( RhsT const& ) -> BinaryExpr<LhsT, RhsT const&> const {
@@ -2270,6 +2427,7 @@ namespace Catch {
 // start catch_interfaces_capture.h
 
 #include <string>
+#include <chrono>
 
 namespace Catch {
 
@@ -2280,14 +2438,18 @@ namespace Catch {
     struct MessageInfo;
     struct MessageBuilder;
     struct Counts;
-    struct BenchmarkInfo;
-    struct BenchmarkStats;
     struct AssertionReaction;
     struct SourceLineInfo;
 
     struct ITransientExpression;
     struct IGeneratorTracker;
 
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+    struct BenchmarkInfo;
+    template <typename Duration = std::chrono::duration<double, std::nano>>
+    struct BenchmarkStats;
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
     struct IResultCapture {
 
         virtual ~IResultCapture();
@@ -2297,10 +2459,14 @@ namespace Catch {
         virtual void sectionEnded( SectionEndInfo const& endInfo ) = 0;
         virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) = 0;
 
-        virtual auto acquireGeneratorTracker( SourceLineInfo const& lineInfo ) -> IGeneratorTracker& = 0;
+        virtual auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker& = 0;
 
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+        virtual void benchmarkPreparing( std::string const& name ) = 0;
         virtual void benchmarkStarting( BenchmarkInfo const& info ) = 0;
-        virtual void benchmarkEnded( BenchmarkStats const& stats ) = 0;
+        virtual void benchmarkEnded( BenchmarkStats<> const& stats ) = 0;
+        virtual void benchmarkFailed( std::string const& error ) = 0;
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
         virtual void pushScopedMessage( MessageInfo const& message ) = 0;
         virtual void popScopedMessage( MessageInfo const& message ) = 0;
@@ -2531,15 +2697,16 @@ namespace Catch {
 ///////////////////////////////////////////////////////////////////////////////
 #define INTERNAL_CATCH_TEST( macroName, resultDisposition, ... ) \
     do { \
+        CATCH_INTERNAL_IGNORE_BUT_WARN(__VA_ARGS__); \
         Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__), resultDisposition ); \
         INTERNAL_CATCH_TRY { \
+            CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
             CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \
             catchAssertionHandler.handleExpr( Catch::Decomposer() <= __VA_ARGS__ ); \
-            CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS \
+            CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
         } INTERNAL_CATCH_CATCH( catchAssertionHandler ) \
         INTERNAL_CATCH_REACT( catchAssertionHandler ) \
-    } while( (void)0, (false) && static_cast<bool>( !!(__VA_ARGS__) ) ) // the expression here is never evaluated at runtime but it forces the compiler to give it a look
-    // The double negation silences MSVC's C4800 warning, the static_cast forces short-circuit evaluation if the type has overloaded &&.
+    } while( (void)0, (false) && static_cast<bool>( !!(__VA_ARGS__) ) )
 
 ///////////////////////////////////////////////////////////////////////////////
 #define INTERNAL_CATCH_IF( macroName, resultDisposition, ... ) \
@@ -2756,62 +2923,18 @@ namespace Catch {
 } // end namespace Catch
 
 #define INTERNAL_CATCH_SECTION( ... ) \
+    CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
     CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \
     if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) ) \
-    CATCH_INTERNAL_UNSUPPRESS_UNUSED_WARNINGS
+    CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
 
 #define INTERNAL_CATCH_DYNAMIC_SECTION( ... ) \
+    CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
     CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \
     if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, (Catch::ReusableStringStream() << __VA_ARGS__).str() ) ) \
-    CATCH_INTERNAL_UNSUPPRESS_UNUSED_WARNINGS
+    CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
 
 // end catch_section.h
-// start catch_benchmark.h
-
-#include <cstdint>
-#include <string>
-
-namespace Catch {
-
-    class BenchmarkLooper {
-
-        std::string m_name;
-        std::size_t m_count = 0;
-        std::size_t m_iterationsToRun = 1;
-        uint64_t m_resolution;
-        Timer m_timer;
-
-        static auto getResolution() -> uint64_t;
-    public:
-        // Keep most of this inline as it's on the code path that is being timed
-        BenchmarkLooper( StringRef name )
-        :   m_name( name ),
-            m_resolution( getResolution() )
-        {
-            reportStart();
-            m_timer.start();
-        }
-
-        explicit operator bool() {
-            if( m_count < m_iterationsToRun )
-                return true;
-            return needsMoreIterations();
-        }
-
-        void increment() {
-            ++m_count;
-        }
-
-        void reportStart();
-        auto needsMoreIterations() -> bool;
-    };
-
-} // end namespace Catch
-
-#define BENCHMARK( name ) \
-    for( Catch::BenchmarkLooper looper( name ); looper; looper.increment() )
-
-// end catch_benchmark.h
 // start catch_interfaces_exception.h
 
 // start catch_interfaces_registry_hub.h
@@ -2900,6 +3023,9 @@ namespace Catch {
             {}
 
             std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const override {
+#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+                return "";
+#else
                 try {
                     if( it == itEnd )
                         std::rethrow_exception(std::current_exception());
@@ -2909,6 +3035,7 @@ namespace Catch {
                 catch( T& ex ) {
                     return m_translateFunction( ex );
                 }
+#endif
             }
 
         protected:
@@ -2927,9 +3054,10 @@ namespace Catch {
 ///////////////////////////////////////////////////////////////////////////////
 #define INTERNAL_CATCH_TRANSLATE_EXCEPTION2( translatorName, signature ) \
     static std::string translatorName( signature ); \
+    CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \
     CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \
     namespace{ Catch::ExceptionTranslatorRegistrar INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionRegistrar )( &translatorName ); } \
-    CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \
+    CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \
     static std::string translatorName( signature )
 
 #define INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION2( INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ), signature )
@@ -3071,7 +3199,10 @@ namespace Catch {
     bool contains( std::string const& s, std::string const& infix );
     void toLowerInPlace( std::string& s );
     std::string toLower( std::string const& s );
+    //! Returns a new string without whitespace at the start/end
     std::string trim( std::string const& str );
+    //! Returns a substring of the original ref without whitespace. Beware lifetimes!
+    StringRef trim(StringRef ref);
 
     // !!! Be aware, returns refs into original string - make sure original string outlives them
     std::vector<StringRef> splitStringRef( StringRef str, char delimiter );
@@ -3127,6 +3258,15 @@ namespace Matchers {
             virtual bool match( ObjectT const& arg ) const = 0;
         };
 
+#if defined(__OBJC__)
+        // Hack to fix Catch GH issue #1661. Could use id for generic Object support.
+        // use of const for Object pointers is very uncommon and under ARC it causes some kind of signature mismatch that breaks compilation
+        template<>
+        struct MatcherMethod<NSString*> {
+            virtual bool match( NSString* arg ) const = 0;
+        };
+#endif
+
 #ifdef __clang__
 #    pragma clang diagnostic pop
 #endif
@@ -3164,9 +3304,10 @@ namespace Matchers {
                 return description;
             }
 
-            MatchAllOf<ArgT>& operator && ( MatcherBase<ArgT> const& other ) {
-                m_matchers.push_back( &other );
-                return *this;
+            MatchAllOf<ArgT> operator && ( MatcherBase<ArgT> const& other ) {
+                auto copy(*this);
+                copy.m_matchers.push_back( &other );
+                return copy;
             }
 
             std::vector<MatcherBase<ArgT> const*> m_matchers;
@@ -3197,9 +3338,10 @@ namespace Matchers {
                 return description;
             }
 
-            MatchAnyOf<ArgT>& operator || ( MatcherBase<ArgT> const& other ) {
-                m_matchers.push_back( &other );
-                return *this;
+            MatchAnyOf<ArgT> operator || ( MatcherBase<ArgT> const& other ) {
+                auto copy(*this);
+                copy.m_matchers.push_back( &other );
+                return copy;
             }
 
             std::vector<MatcherBase<ArgT> const*> m_matchers;
@@ -3243,10 +3385,34 @@ using Matchers::Impl::MatcherBase;
 } // namespace Catch
 
 // end catch_matchers.h
-// start catch_matchers_floating.h
+// start catch_matchers_exception.hpp
 
-#include <type_traits>
-#include <cmath>
+namespace Catch {
+namespace Matchers {
+namespace Exception {
+
+class ExceptionMessageMatcher : public MatcherBase<std::exception> {
+    std::string m_message;
+public:
+
+    ExceptionMessageMatcher(std::string const& message):
+        m_message(message)
+    {}
+
+    bool match(std::exception const& ex) const override;
+
+    std::string describe() const override;
+};
+
+} // namespace Exception
+
+Exception::ExceptionMessageMatcher Message(std::string const& message);
+
+} // namespace Matchers
+} // namespace Catch
+
+// end catch_matchers_exception.hpp
+// start catch_matchers_floating.h
 
 namespace Catch {
 namespace Matchers {
@@ -3265,22 +3431,43 @@ namespace Matchers {
         };
 
         struct WithinUlpsMatcher : MatcherBase<double> {
-            WithinUlpsMatcher(double target, int ulps, FloatingPointKind baseType);
+            WithinUlpsMatcher(double target, uint64_t ulps, FloatingPointKind baseType);
             bool match(double const& matchee) const override;
             std::string describe() const override;
         private:
             double m_target;
-            int m_ulps;
+            uint64_t m_ulps;
             FloatingPointKind m_type;
         };
 
+        // Given IEEE-754 format for floats and doubles, we can assume
+        // that float -> double promotion is lossless. Given this, we can
+        // assume that if we do the standard relative comparison of
+        // |lhs - rhs| <= epsilon * max(fabs(lhs), fabs(rhs)), then we get
+        // the same result if we do this for floats, as if we do this for
+        // doubles that were promoted from floats.
+        struct WithinRelMatcher : MatcherBase<double> {
+            WithinRelMatcher(double target, double epsilon);
+            bool match(double const& matchee) const override;
+            std::string describe() const override;
+        private:
+            double m_target;
+            double m_epsilon;
+        };
+
     } // namespace Floating
 
     // The following functions create the actual matcher objects.
     // This allows the types to be inferred
-    Floating::WithinUlpsMatcher WithinULP(double target, int maxUlpDiff);
-    Floating::WithinUlpsMatcher WithinULP(float target, int maxUlpDiff);
+    Floating::WithinUlpsMatcher WithinULP(double target, uint64_t maxUlpDiff);
+    Floating::WithinUlpsMatcher WithinULP(float target, uint64_t maxUlpDiff);
     Floating::WithinAbsMatcher WithinAbs(double target, double margin);
+    Floating::WithinRelMatcher WithinRel(double target, double eps);
+    // defaults epsilon to 100*numeric_limits<double>::epsilon()
+    Floating::WithinRelMatcher WithinRel(double target);
+    Floating::WithinRelMatcher WithinRel(float target, float eps);
+    // defaults epsilon to 100*numeric_limits<float>::epsilon()
+    Floating::WithinRelMatcher WithinRel(float target);
 
 } // namespace Matchers
 } // namespace Catch
@@ -3411,12 +3598,12 @@ namespace Catch {
 namespace Matchers {
 
     namespace Vector {
-        template<typename T>
-        struct ContainsElementMatcher : MatcherBase<std::vector<T>> {
+        template<typename T, typename Alloc>
+        struct ContainsElementMatcher : MatcherBase<std::vector<T, Alloc>> {
 
             ContainsElementMatcher(T const &comparator) : m_comparator( comparator) {}
 
-            bool match(std::vector<T> const &v) const override {
+            bool match(std::vector<T, Alloc> const &v) const override {
                 for (auto const& el : v) {
                     if (el == m_comparator) {
                         return true;
@@ -3432,12 +3619,12 @@ namespace Matchers {
             T const& m_comparator;
         };
 
-        template<typename T>
-        struct ContainsMatcher : MatcherBase<std::vector<T>> {
+        template<typename T, typename AllocComp, typename AllocMatch>
+        struct ContainsMatcher : MatcherBase<std::vector<T, AllocMatch>> {
 
-            ContainsMatcher(std::vector<T> const &comparator) : m_comparator( comparator ) {}
+            ContainsMatcher(std::vector<T, AllocComp> const &comparator) : m_comparator( comparator ) {}
 
-            bool match(std::vector<T> const &v) const override {
+            bool match(std::vector<T, AllocMatch> const &v) const override {
                 // !TBD: see note in EqualsMatcher
                 if (m_comparator.size() > v.size())
                     return false;
@@ -3459,18 +3646,18 @@ namespace Matchers {
                 return "Contains: " + ::Catch::Detail::stringify( m_comparator );
             }
 
-            std::vector<T> const& m_comparator;
+            std::vector<T, AllocComp> const& m_comparator;
         };
 
-        template<typename T>
-        struct EqualsMatcher : MatcherBase<std::vector<T>> {
+        template<typename T, typename AllocComp, typename AllocMatch>
+        struct EqualsMatcher : MatcherBase<std::vector<T, AllocMatch>> {
 
-            EqualsMatcher(std::vector<T> const &comparator) : m_comparator( comparator ) {}
+            EqualsMatcher(std::vector<T, AllocComp> const &comparator) : m_comparator( comparator ) {}
 
-            bool match(std::vector<T> const &v) const override {
+            bool match(std::vector<T, AllocMatch> const &v) const override {
                 // !TBD: This currently works if all elements can be compared using !=
                 // - a more general approach would be via a compare template that defaults
-                // to using !=. but could be specialised for, e.g. std::vector<T> etc
+                // to using !=. but could be specialised for, e.g. std::vector<T, Alloc> etc
                 // - then just call that directly
                 if (m_comparator.size() != v.size())
                     return false;
@@ -3482,15 +3669,15 @@ namespace Matchers {
             std::string describe() const override {
                 return "Equals: " + ::Catch::Detail::stringify( m_comparator );
             }
-            std::vector<T> const& m_comparator;
+            std::vector<T, AllocComp> const& m_comparator;
         };
 
-        template<typename T>
-        struct ApproxMatcher : MatcherBase<std::vector<T>> {
+        template<typename T, typename AllocComp, typename AllocMatch>
+        struct ApproxMatcher : MatcherBase<std::vector<T, AllocMatch>> {
 
-            ApproxMatcher(std::vector<T> const& comparator) : m_comparator( comparator ) {}
+            ApproxMatcher(std::vector<T, AllocComp> const& comparator) : m_comparator( comparator ) {}
 
-            bool match(std::vector<T> const &v) const override {
+            bool match(std::vector<T, AllocMatch> const &v) const override {
                 if (m_comparator.size() != v.size())
                     return false;
                 for (std::size_t i = 0; i < v.size(); ++i)
@@ -3517,16 +3704,14 @@ namespace Matchers {
                 return *this;
             }
 
-            std::vector<T> const& m_comparator;
+            std::vector<T, AllocComp> const& m_comparator;
             mutable Catch::Detail::Approx approx = Catch::Detail::Approx::custom();
         };
 
-        template<typename T>
-        struct UnorderedEqualsMatcher : MatcherBase<std::vector<T>> {
-            UnorderedEqualsMatcher(std::vector<T> const& target) : m_target(target) {}
-            bool match(std::vector<T> const& vec) const override {
-                // Note: This is a reimplementation of std::is_permutation,
-                //       because I don't want to include <algorithm> inside the common path
+        template<typename T, typename AllocComp, typename AllocMatch>
+        struct UnorderedEqualsMatcher : MatcherBase<std::vector<T, AllocMatch>> {
+            UnorderedEqualsMatcher(std::vector<T, AllocComp> const& target) : m_target(target) {}
+            bool match(std::vector<T, AllocMatch> const& vec) const override {
                 if (m_target.size() != vec.size()) {
                     return false;
                 }
@@ -3537,7 +3722,7 @@ namespace Matchers {
                 return "UnorderedEquals: " + ::Catch::Detail::stringify(m_target);
             }
         private:
-            std::vector<T> const& m_target;
+            std::vector<T, AllocComp> const& m_target;
         };
 
     } // namespace Vector
@@ -3545,29 +3730,29 @@ namespace Matchers {
     // The following functions create the actual matcher objects.
     // This allows the types to be inferred
 
-    template<typename T>
-    Vector::ContainsMatcher<T> Contains( std::vector<T> const& comparator ) {
-        return Vector::ContainsMatcher<T>( comparator );
+    template<typename T, typename AllocComp = std::allocator<T>, typename AllocMatch = AllocComp>
+    Vector::ContainsMatcher<T, AllocComp, AllocMatch> Contains( std::vector<T, AllocComp> const& comparator ) {
+        return Vector::ContainsMatcher<T, AllocComp, AllocMatch>( comparator );
     }
 
-    template<typename T>
-    Vector::ContainsElementMatcher<T> VectorContains( T const& comparator ) {
-        return Vector::ContainsElementMatcher<T>( comparator );
+    template<typename T, typename Alloc = std::allocator<T>>
+    Vector::ContainsElementMatcher<T, Alloc> VectorContains( T const& comparator ) {
+        return Vector::ContainsElementMatcher<T, Alloc>( comparator );
     }
 
-    template<typename T>
-    Vector::EqualsMatcher<T> Equals( std::vector<T> const& comparator ) {
-        return Vector::EqualsMatcher<T>( comparator );
+    template<typename T, typename AllocComp = std::allocator<T>, typename AllocMatch = AllocComp>
+    Vector::EqualsMatcher<T, AllocComp, AllocMatch> Equals( std::vector<T, AllocComp> const& comparator ) {
+        return Vector::EqualsMatcher<T, AllocComp, AllocMatch>( comparator );
     }
 
-    template<typename T>
-    Vector::ApproxMatcher<T> Approx( std::vector<T> const& comparator ) {
-        return Vector::ApproxMatcher<T>( comparator );
+    template<typename T, typename AllocComp = std::allocator<T>, typename AllocMatch = AllocComp>
+    Vector::ApproxMatcher<T, AllocComp, AllocMatch> Approx( std::vector<T, AllocComp> const& comparator ) {
+        return Vector::ApproxMatcher<T, AllocComp, AllocMatch>( comparator );
     }
 
-    template<typename T>
-    Vector::UnorderedEqualsMatcher<T> UnorderedEquals(std::vector<T> const& target) {
-        return Vector::UnorderedEqualsMatcher<T>(target);
+    template<typename T, typename AllocComp = std::allocator<T>, typename AllocMatch = AllocComp>
+    Vector::UnorderedEqualsMatcher<T, AllocComp, AllocMatch> UnorderedEquals(std::vector<T, AllocComp> const& target) {
+        return Vector::UnorderedEqualsMatcher<T, AllocComp, AllocMatch>( target );
     }
 
 } // namespace Matchers
@@ -3678,7 +3863,7 @@ namespace Catch {
 // end catch_interfaces_generatortracker.h
 // start catch_enforce.h
 
-#include <stdexcept>
+#include <exception>
 
 namespace Catch {
 #if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
@@ -3691,18 +3876,30 @@ namespace Catch {
     [[noreturn]]
     void throw_exception(std::exception const& e);
 #endif
+
+    [[noreturn]]
+    void throw_logic_error(std::string const& msg);
+    [[noreturn]]
+    void throw_domain_error(std::string const& msg);
+    [[noreturn]]
+    void throw_runtime_error(std::string const& msg);
+
 } // namespace Catch;
 
-#define CATCH_PREPARE_EXCEPTION( type, msg ) \
-    type( ( Catch::ReusableStringStream() << msg ).str() )
-#define CATCH_INTERNAL_ERROR( msg ) \
-    Catch::throw_exception(CATCH_PREPARE_EXCEPTION( std::logic_error, CATCH_INTERNAL_LINEINFO << ": Internal Catch error: " << msg))
-#define CATCH_ERROR( msg ) \
-    Catch::throw_exception(CATCH_PREPARE_EXCEPTION( std::domain_error, msg ))
-#define CATCH_RUNTIME_ERROR( msg ) \
-    Catch::throw_exception(CATCH_PREPARE_EXCEPTION( std::runtime_error, msg ))
-#define CATCH_ENFORCE( condition, msg ) \
-    do{ if( !(condition) ) CATCH_ERROR( msg ); } while(false)
+#define CATCH_MAKE_MSG(...) \
+    (Catch::ReusableStringStream() << __VA_ARGS__).str()
+
+#define CATCH_INTERNAL_ERROR(...) \
+    Catch::throw_logic_error(CATCH_MAKE_MSG( CATCH_INTERNAL_LINEINFO << ": Internal Catch2 error: " << __VA_ARGS__))
+
+#define CATCH_ERROR(...) \
+    Catch::throw_domain_error(CATCH_MAKE_MSG( __VA_ARGS__ ))
+
+#define CATCH_RUNTIME_ERROR(...) \
+    Catch::throw_runtime_error(CATCH_MAKE_MSG( __VA_ARGS__ ))
+
+#define CATCH_ENFORCE( condition, ... ) \
+    do{ if( !(condition) ) CATCH_ERROR( __VA_ARGS__ ); } while(false)
 
 // end catch_enforce.h
 #include <memory>
@@ -3751,7 +3948,6 @@ namespace Generators {
     class SingleValueGenerator final : public IGenerator<T> {
         T m_value;
     public:
-        SingleValueGenerator(T const& value) : m_value( value ) {}
         SingleValueGenerator(T&& value) : m_value(std::move(value)) {}
 
         T const& get() const override {
@@ -3764,6 +3960,9 @@ namespace Generators {
 
     template<typename T>
     class FixedValuesGenerator final : public IGenerator<T> {
+        static_assert(!std::is_same<T, bool>::value,
+            "FixedValuesGenerator does not support bools because of std::vector<bool>"
+            "specialization, use SingleValue Generator instead.");
         std::vector<T> m_values;
         size_t m_idx = 0;
     public:
@@ -3811,21 +4010,21 @@ namespace Generators {
             m_generators.emplace_back(std::move(generator));
         }
         void populate(T&& val) {
-            m_generators.emplace_back(value(std::move(val)));
+            m_generators.emplace_back(value(std::forward<T>(val)));
         }
         template<typename U>
         void populate(U&& val) {
-            populate(T(std::move(val)));
+            populate(T(std::forward<U>(val)));
         }
         template<typename U, typename... Gs>
-        void populate(U&& valueOrGenerator, Gs... moreGenerators) {
+        void populate(U&& valueOrGenerator, Gs &&... moreGenerators) {
             populate(std::forward<U>(valueOrGenerator));
             populate(std::forward<Gs>(moreGenerators)...);
         }
 
     public:
         template <typename... Gs>
-        Generators(Gs... moreGenerators) {
+        Generators(Gs &&... moreGenerators) {
             m_generators.reserve(sizeof...(Gs));
             populate(std::forward<Gs>(moreGenerators)...);
         }
@@ -3856,7 +4055,7 @@ namespace Generators {
     struct as {};
 
     template<typename T, typename... Gs>
-    auto makeGenerators( GeneratorWrapper<T>&& generator, Gs... moreGenerators ) -> Generators<T> {
+    auto makeGenerators( GeneratorWrapper<T>&& generator, Gs &&... moreGenerators ) -> Generators<T> {
         return Generators<T>(std::move(generator), std::forward<Gs>(moreGenerators)...);
     }
     template<typename T>
@@ -3864,24 +4063,24 @@ namespace Generators {
         return Generators<T>(std::move(generator));
     }
     template<typename T, typename... Gs>
-    auto makeGenerators( T&& val, Gs... moreGenerators ) -> Generators<T> {
+    auto makeGenerators( T&& val, Gs &&... moreGenerators ) -> Generators<T> {
         return makeGenerators( value( std::forward<T>( val ) ), std::forward<Gs>( moreGenerators )... );
     }
     template<typename T, typename U, typename... Gs>
-    auto makeGenerators( as<T>, U&& val, Gs... moreGenerators ) -> Generators<T> {
+    auto makeGenerators( as<T>, U&& val, Gs &&... moreGenerators ) -> Generators<T> {
         return makeGenerators( value( T( std::forward<U>( val ) ) ), std::forward<Gs>( moreGenerators )... );
     }
 
-    auto acquireGeneratorTracker( SourceLineInfo const& lineInfo ) -> IGeneratorTracker&;
+    auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker&;
 
     template<typename L>
     // Note: The type after -> is weird, because VS2015 cannot parse
     //       the expression used in the typedef inside, when it is in
     //       return type. Yeah.
-    auto generate( SourceLineInfo const& lineInfo, L const& generatorExpression ) -> decltype(std::declval<decltype(generatorExpression())>().get()) {
+    auto generate( StringRef generatorName, SourceLineInfo const& lineInfo, L const& generatorExpression ) -> decltype(std::declval<decltype(generatorExpression())>().get()) {
         using UnderlyingType = typename decltype(generatorExpression())::type;
 
-        IGeneratorTracker& tracker = acquireGeneratorTracker( lineInfo );
+        IGeneratorTracker& tracker = acquireGeneratorTracker( generatorName, lineInfo );
         if (!tracker.hasGenerator()) {
             tracker.setGenerator(pf::make_unique<Generators<UnderlyingType>>(generatorExpression()));
         }
@@ -3894,11 +4093,17 @@ namespace Generators {
 } // namespace Catch
 
 #define GENERATE( ... ) \
-    Catch::Generators::generate( CATCH_INTERNAL_LINEINFO, [ ]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } )
+    Catch::Generators::generate( INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_UNIQUE_NAME(generator)), \
+                                 CATCH_INTERNAL_LINEINFO, \
+                                 [ ]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } ) //NOLINT(google-build-using-namespace)
 #define GENERATE_COPY( ... ) \
-    Catch::Generators::generate( CATCH_INTERNAL_LINEINFO, [=]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } )
+    Catch::Generators::generate( INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_UNIQUE_NAME(generator)), \
+                                 CATCH_INTERNAL_LINEINFO, \
+                                 [=]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } ) //NOLINT(google-build-using-namespace)
 #define GENERATE_REF( ... ) \
-    Catch::Generators::generate( CATCH_INTERNAL_LINEINFO, [&]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } )
+    Catch::Generators::generate( INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_UNIQUE_NAME(generator)), \
+                                 CATCH_INTERNAL_LINEINFO, \
+                                 [&]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } ) //NOLINT(google-build-using-namespace)
 
 // end catch_generators.hpp
 // start catch_generators_generic.hpp
@@ -3983,6 +4188,9 @@ namespace Generators {
 
     template <typename T>
     class RepeatGenerator : public IGenerator<T> {
+        static_assert(!std::is_same<T, bool>::value,
+            "RepeatGenerator currently does not support bools"
+            "because of std::vector<bool> specialization");
         GeneratorWrapper<T> m_generator;
         mutable std::vector<T> m_returned;
         size_t m_target_repeats;
@@ -4061,18 +4269,7 @@ namespace Generators {
         }
     };
 
-#if defined(__cpp_lib_is_invocable) && __cpp_lib_is_invocable >= 201703
-    // std::result_of is deprecated in C++17 and removed in C++20. Hence, it is
-    // replaced with std::invoke_result here. Also *_t format is preferred over
-    // typename *::type format.
-    template <typename Func, typename U>
-    using MapFunctionReturnType = std::remove_reference_t<std::remove_cv_t<std::invoke_result_t<Func, U>>>;
-#else
-    template <typename Func, typename U>
-    using MapFunctionReturnType = typename std::remove_reference<typename std::remove_cv<typename std::result_of<Func(U)>::type>::type>::type;
-#endif
-
-    template <typename Func, typename U, typename T = MapFunctionReturnType<Func, U>>
+    template <typename Func, typename U, typename T = FunctionReturnType<Func, U>>
     GeneratorWrapper<T> map(Func&& function, GeneratorWrapper<U>&& generator) {
         return GeneratorWrapper<T>(
             pf::make_unique<MapGenerator<T, U, Func>>(std::forward<Func>(function), std::move(generator))
@@ -4097,12 +4294,14 @@ namespace Generators {
             m_chunk_size(size), m_generator(std::move(generator))
         {
             m_chunk.reserve(m_chunk_size);
-            m_chunk.push_back(m_generator.get());
-            for (size_t i = 1; i < m_chunk_size; ++i) {
-                if (!m_generator.next()) {
-                    Catch::throw_exception(GeneratorException("Not enough values to initialize the first chunk"));
-                }
+            if (m_chunk_size != 0) {
                 m_chunk.push_back(m_generator.get());
+                for (size_t i = 1; i < m_chunk_size; ++i) {
+                    if (!m_generator.next()) {
+                        Catch::throw_exception(GeneratorException("Not enough values to initialize the first chunk"));
+                    }
+                    m_chunk.push_back(m_generator.get());
+                }
             }
         }
         std::vector<T> const& get() const override {
@@ -4173,6 +4372,7 @@ namespace Catch {
     {
         if( !IMutableContext::currentContext )
             IMutableContext::createContext();
+        // NOLINTNEXTLINE(clang-analyzer-core.uninitialized.UndefReturn)
         return *IMutableContext::currentContext;
     }
 
@@ -4182,25 +4382,94 @@ namespace Catch {
     }
 
     void cleanUpContext();
+
+    class SimplePcg32;
+    SimplePcg32& rng();
 }
 
 // end catch_context.h
 // start catch_interfaces_config.h
 
-#include <iosfwd>
-#include <string>
-#include <vector>
-#include <memory>
+// start catch_option.hpp
 
 namespace Catch {
 
-    enum class Verbosity {
-        Quiet = 0,
-        Normal,
-        High
-    };
+    // An optional type
+    template<typename T>
+    class Option {
+    public:
+        Option() : nullableValue( nullptr ) {}
+        Option( T const& _value )
+        : nullableValue( new( storage ) T( _value ) )
+        {}
+        Option( Option const& _other )
+        : nullableValue( _other ? new( storage ) T( *_other ) : nullptr )
+        {}
 
-    struct WarnAbout { enum What {
+        ~Option() {
+            reset();
+        }
+
+        Option& operator= ( Option const& _other ) {
+            if( &_other != this ) {
+                reset();
+                if( _other )
+                    nullableValue = new( storage ) T( *_other );
+            }
+            return *this;
+        }
+        Option& operator = ( T const& _value ) {
+            reset();
+            nullableValue = new( storage ) T( _value );
+            return *this;
+        }
+
+        void reset() {
+            if( nullableValue )
+                nullableValue->~T();
+            nullableValue = nullptr;
+        }
+
+        T& operator*() { return *nullableValue; }
+        T const& operator*() const { return *nullableValue; }
+        T* operator->() { return nullableValue; }
+        const T* operator->() const { return nullableValue; }
+
+        T valueOr( T const& defaultValue ) const {
+            return nullableValue ? *nullableValue : defaultValue;
+        }
+
+        bool some() const { return nullableValue != nullptr; }
+        bool none() const { return nullableValue == nullptr; }
+
+        bool operator !() const { return nullableValue == nullptr; }
+        explicit operator bool() const {
+            return some();
+        }
+
+    private:
+        T *nullableValue;
+        alignas(alignof(T)) char storage[sizeof(T)];
+    };
+
+} // end namespace Catch
+
+// end catch_option.hpp
+#include <chrono>
+#include <iosfwd>
+#include <string>
+#include <vector>
+#include <memory>
+
+namespace Catch {
+
+    enum class Verbosity {
+        Quiet = 0,
+        Normal,
+        High
+    };
+
+    struct WarnAbout { enum What {
         Nothing = 0x00,
         NoAssertions = 0x01,
         NoTests = 0x02
@@ -4244,21 +4513,77 @@ namespace Catch {
         virtual int abortAfter() const = 0;
         virtual bool showInvisibles() const = 0;
         virtual ShowDurations::OrNot showDurations() const = 0;
+        virtual double minDuration() const = 0;
         virtual TestSpec const& testSpec() const = 0;
         virtual bool hasTestFilters() const = 0;
         virtual std::vector<std::string> const& getTestsOrTags() const = 0;
         virtual RunTests::InWhatOrder runOrder() const = 0;
         virtual unsigned int rngSeed() const = 0;
-        virtual int benchmarkResolutionMultiple() const = 0;
         virtual UseColour::YesOrNo useColour() const = 0;
         virtual std::vector<std::string> const& getSectionsToRun() const = 0;
         virtual Verbosity verbosity() const = 0;
+
+        virtual bool benchmarkNoAnalysis() const = 0;
+        virtual int benchmarkSamples() const = 0;
+        virtual double benchmarkConfidenceInterval() const = 0;
+        virtual unsigned int benchmarkResamples() const = 0;
+        virtual std::chrono::milliseconds benchmarkWarmupTime() const = 0;
     };
 
     using IConfigPtr = std::shared_ptr<IConfig const>;
 }
 
 // end catch_interfaces_config.h
+// start catch_random_number_generator.h
+
+#include <cstdint>
+
+namespace Catch {
+
+    // This is a simple implementation of C++11 Uniform Random Number
+    // Generator. It does not provide all operators, because Catch2
+    // does not use it, but it should behave as expected inside stdlib's
+    // distributions.
+    // The implementation is based on the PCG family (http://pcg-random.org)
+    class SimplePcg32 {
+        using state_type = std::uint64_t;
+    public:
+        using result_type = std::uint32_t;
+        static constexpr result_type (min)() {
+            return 0;
+        }
+        static constexpr result_type (max)() {
+            return static_cast<result_type>(-1);
+        }
+
+        // Provide some default initial state for the default constructor
+        SimplePcg32():SimplePcg32(0xed743cc4U) {}
+
+        explicit SimplePcg32(result_type seed_);
+
+        void seed(result_type seed_);
+        void discard(uint64_t skip);
+
+        result_type operator()();
+
+    private:
+        friend bool operator==(SimplePcg32 const& lhs, SimplePcg32 const& rhs);
+        friend bool operator!=(SimplePcg32 const& lhs, SimplePcg32 const& rhs);
+
+        // In theory we also need operator<< and operator>>
+        // In practice we do not use them, so we will skip them for now
+
+        std::uint64_t m_state;
+        // This part of the state determines which "stream" of the numbers
+        // is chosen -- we take it as a constant for Catch2, so we only
+        // need to deal with seeding the main state.
+        // Picked by reading 8 bytes from `/dev/random` :-)
+        static const std::uint64_t s_inc = (0x13ed0cc53f939476ULL << 1ULL) | 1ULL;
+    };
+
+} // end namespace Catch
+
+// end catch_random_number_generator.h
 #include <random>
 
 namespace Catch {
@@ -4266,14 +4591,13 @@ namespace Generators {
 
 template <typename Float>
 class RandomFloatingGenerator final : public IGenerator<Float> {
-    // FIXME: What is the right seed?
-    std::minstd_rand m_rand;
+    Catch::SimplePcg32& m_rng;
     std::uniform_real_distribution<Float> m_dist;
     Float m_current_number;
 public:
 
     RandomFloatingGenerator(Float a, Float b):
-        m_rand(getCurrentContext().getConfig()->rngSeed()),
+        m_rng(rng()),
         m_dist(a, b) {
         static_cast<void>(next());
     }
@@ -4282,20 +4606,20 @@ public:
         return m_current_number;
     }
     bool next() override {
-        m_current_number = m_dist(m_rand);
+        m_current_number = m_dist(m_rng);
         return true;
     }
 };
 
 template <typename Integer>
 class RandomIntegerGenerator final : public IGenerator<Integer> {
-    std::minstd_rand m_rand;
+    Catch::SimplePcg32& m_rng;
     std::uniform_int_distribution<Integer> m_dist;
     Integer m_current_number;
 public:
 
     RandomIntegerGenerator(Integer a, Integer b):
-        m_rand(getCurrentContext().getConfig()->rngSeed()),
+        m_rng(rng()),
         m_dist(a, b) {
         static_cast<void>(next());
     }
@@ -4304,7 +4628,7 @@ public:
         return m_current_number;
     }
     bool next() override {
-        m_current_number = m_dist(m_rand);
+        m_current_number = m_dist(m_rng);
         return true;
     }
 };
@@ -4364,7 +4688,7 @@ public:
 
 template <typename T>
 GeneratorWrapper<T> range(T const& start, T const& end, T const& step) {
-    static_assert(std::is_integral<T>::value && !std::is_same<T, bool>::value, "Type must be an integer");
+    static_assert(std::is_arithmetic<T>::value && !std::is_same<T, bool>::value, "Type must be numeric");
     return GeneratorWrapper<T>(pf::make_unique<RangeGenerator<T>>(start, end, step));
 }
 
@@ -4374,6 +4698,45 @@ GeneratorWrapper<T> range(T const& start, T const& end) {
     return GeneratorWrapper<T>(pf::make_unique<RangeGenerator<T>>(start, end));
 }
 
+template <typename T>
+class IteratorGenerator final : public IGenerator<T> {
+    static_assert(!std::is_same<T, bool>::value,
+        "IteratorGenerator currently does not support bools"
+        "because of std::vector<bool> specialization");
+
+    std::vector<T> m_elems;
+    size_t m_current = 0;
+public:
+    template <typename InputIterator, typename InputSentinel>
+    IteratorGenerator(InputIterator first, InputSentinel last):m_elems(first, last) {
+        if (m_elems.empty()) {
+            Catch::throw_exception(GeneratorException("IteratorGenerator received no valid values"));
+        }
+    }
+
+    T const& get() const override {
+        return m_elems[m_current];
+    }
+
+    bool next() override {
+        ++m_current;
+        return m_current != m_elems.size();
+    }
+};
+
+template <typename InputIterator,
+          typename InputSentinel,
+          typename ResultType = typename std::iterator_traits<InputIterator>::value_type>
+GeneratorWrapper<ResultType> from_range(InputIterator from, InputSentinel to) {
+    return GeneratorWrapper<ResultType>(pf::make_unique<IteratorGenerator<ResultType>>(from, to));
+}
+
+template <typename Container,
+          typename ResultType = typename Container::value_type>
+GeneratorWrapper<ResultType> from_range(Container const& cnt) {
+    return GeneratorWrapper<ResultType>(pf::make_unique<IteratorGenerator<ResultType>>(cnt.begin(), cnt.end()));
+}
+
 } // namespace Generators
 } // namespace Catch
 
@@ -4577,7 +4940,7 @@ namespace Catch {
                     arcSafeRelease( m_substr );
                 }
 
-                bool match( NSString* const& str ) const override {
+                bool match( NSString* str ) const override {
                     return false;
                 }
 
@@ -4587,7 +4950,7 @@ namespace Catch {
             struct Equals : StringHolder {
                 Equals( NSString* substr ) : StringHolder( substr ){}
 
-                bool match( NSString* const& str ) const override {
+                bool match( NSString* str ) const override {
                     return  (str != nil || m_substr == nil ) &&
                             [str isEqualToString:m_substr];
                 }
@@ -4600,7 +4963,7 @@ namespace Catch {
             struct Contains : StringHolder {
                 Contains( NSString* substr ) : StringHolder( substr ){}
 
-                bool match( NSString* const& str ) const override {
+                bool match( NSString* str ) const override {
                     return  (str != nil || m_substr == nil ) &&
                             [str rangeOfString:m_substr].location != NSNotFound;
                 }
@@ -4613,7 +4976,7 @@ namespace Catch {
             struct StartsWith : StringHolder {
                 StartsWith( NSString* substr ) : StringHolder( substr ){}
 
-                bool match( NSString* const& str ) const override {
+                bool match( NSString* str ) const override {
                     return  (str != nil || m_substr == nil ) &&
                             [str rangeOfString:m_substr].location == 0;
                 }
@@ -4625,7 +4988,7 @@ namespace Catch {
             struct EndsWith : StringHolder {
                 EndsWith( NSString* substr ) : StringHolder( substr ){}
 
-                bool match( NSString* const& str ) const override {
+                bool match( NSString* str ) const override {
                     return  (str != nil || m_substr == nil ) &&
                             [str rangeOfString:m_substr].location == [str length] - [m_substr length];
                 }
@@ -4676,7 +5039,8 @@ return @ desc; \
 // end catch_objc.hpp
 #endif
 
-#ifdef CATCH_CONFIG_EXTERNAL_INTERFACES
+// Benchmarking needs the externally-facing parts of reporters to work
+#if defined(CATCH_CONFIG_EXTERNAL_INTERFACES) || defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
 // start catch_external_interfaces.h
 
 // start catch_reporter_bases.hpp
@@ -4718,7 +5082,7 @@ namespace Catch
         virtual bool matches( std::string const& str ) const;
 
     private:
-        std::string adjustCase( std::string const& str ) const;
+        std::string normaliseString( std::string const& str ) const;
         CaseSensitive::Choice m_caseSensitivity;
         WildcardPosition m_wildcard = NoWildcard;
         std::string m_pattern;
@@ -4732,17 +5096,23 @@ namespace Catch
 
 namespace Catch {
 
+    struct IConfig;
+
     class TestSpec {
-        struct Pattern {
+        class Pattern {
+        public:
+            explicit Pattern( std::string const& name );
             virtual ~Pattern();
             virtual bool matches( TestCaseInfo const& testCase ) const = 0;
+            std::string const& name() const;
+        private:
+            std::string const m_name;
         };
         using PatternPtr = std::shared_ptr<Pattern>;
 
         class NamePattern : public Pattern {
         public:
-            NamePattern( std::string const& name );
-            virtual ~NamePattern();
+            explicit NamePattern( std::string const& name, std::string const& filterString );
             bool matches( TestCaseInfo const& testCase ) const override;
         private:
             WildcardPattern m_wildcardPattern;
@@ -4750,8 +5120,7 @@ namespace Catch {
 
         class TagPattern : public Pattern {
         public:
-            TagPattern( std::string const& tag );
-            virtual ~TagPattern();
+            explicit TagPattern( std::string const& tag, std::string const& filterString );
             bool matches( TestCaseInfo const& testCase ) const override;
         private:
             std::string m_tag;
@@ -4759,8 +5128,7 @@ namespace Catch {
 
         class ExcludedPattern : public Pattern {
         public:
-            ExcludedPattern( PatternPtr const& underlyingPattern );
-            virtual ~ExcludedPattern();
+            explicit ExcludedPattern( PatternPtr const& underlyingPattern );
             bool matches( TestCaseInfo const& testCase ) const override;
         private:
             PatternPtr m_underlyingPattern;
@@ -4770,15 +5138,25 @@ namespace Catch {
             std::vector<PatternPtr> m_patterns;
 
             bool matches( TestCaseInfo const& testCase ) const;
+            std::string name() const;
         };
 
     public:
+        struct FilterMatch {
+            std::string name;
+            std::vector<TestCase const*> tests;
+        };
+        using Matches = std::vector<FilterMatch>;
+        using vectorStrings = std::vector<std::string>;
+
         bool hasFilters() const;
         bool matches( TestCaseInfo const& testCase ) const;
+        Matches matchesByFilter( std::vector<TestCase> const& testCases, IConfig const& config ) const;
+        const vectorStrings & getInvalidArgs() const;
 
     private:
         std::vector<Filter> m_filters;
-
+        std::vector<std::string> m_invalidArgs;
         friend class TestSpecParser;
     };
 }
@@ -4813,9 +5191,13 @@ namespace Catch {
     class TestSpecParser {
         enum Mode{ None, Name, QuotedName, Tag, EscapedName };
         Mode m_mode = None;
+        Mode lastMode = None;
         bool m_exclusion = false;
-        std::size_t m_start = std::string::npos, m_pos = 0;
+        std::size_t m_pos = 0;
+        std::size_t m_realPatternPos = 0;
         std::string m_arg;
+        std::string m_substring;
+        std::string m_patternName;
         std::vector<std::size_t> m_escapeChars;
         TestSpec::Filter m_currentFilter;
         TestSpec m_testSpec;
@@ -4828,32 +5210,32 @@ namespace Catch {
         TestSpec testSpec();
 
     private:
-        void visitChar( char c );
-        void startNewMode( Mode mode, std::size_t start );
+        bool visitChar( char c );
+        void startNewMode( Mode mode );
+        bool processNoneChar( char c );
+        void processNameChar( char c );
+        bool processOtherChar( char c );
+        void endMode();
         void escape();
-        std::string subString() const;
+        bool isControlChar( char c ) const;
+        void saveLastMode();
+        void revertBackToLastMode();
+        void addFilter();
+        bool separate();
 
-        template<typename T>
-        void addPattern() {
-            std::string token = subString();
-            for( std::size_t i = 0; i < m_escapeChars.size(); ++i )
-                token = token.substr( 0, m_escapeChars[i]-m_start-i ) + token.substr( m_escapeChars[i]-m_start-i+1 );
-            m_escapeChars.clear();
-            if( startsWith( token, "exclude:" ) ) {
-                m_exclusion = true;
-                token = token.substr( 8 );
-            }
-            if( !token.empty() ) {
-                TestSpec::PatternPtr pattern = std::make_shared<T>( token );
-                if( m_exclusion )
-                    pattern = std::make_shared<TestSpec::ExcludedPattern>( pattern );
-                m_currentFilter.m_patterns.push_back( pattern );
-            }
-            m_exclusion = false;
-            m_mode = None;
+        // Handles common preprocessing of the pattern for name/tag patterns
+        std::string preprocessPattern();
+        // Adds the current pattern as a test name
+        void addNamePattern();
+        // Adds the current pattern as a tag
+        void addTagPattern();
+
+        inline void addCharToPattern(char c) {
+            m_substring += c;
+            m_patternName += c;
+            m_realPatternPos++;
         }
 
-        void addFilter();
     };
     TestSpec parseTestSpec( std::string const& arg );
 
@@ -4894,11 +5276,17 @@ namespace Catch {
 
         int abortAfter = -1;
         unsigned int rngSeed = 0;
-        int benchmarkResolutionMultiple = 100;
+
+        bool benchmarkNoAnalysis = false;
+        unsigned int benchmarkSamples = 100;
+        double benchmarkConfidenceInterval = 0.95;
+        unsigned int benchmarkResamples = 100000;
+        std::chrono::milliseconds::rep benchmarkWarmupTime = 100;
 
         Verbosity verbosity = Verbosity::Normal;
         WarnAbout::What warnings = WarnAbout::Nothing;
         ShowDurations::OrNot showDurations = ShowDurations::DefaultForReporter;
+        double minDuration = -1;
         RunTests::InWhatOrder runOrder = RunTests::InDeclarationOrder;
         UseColour::YesOrNo useColour = UseColour::Auto;
         WaitForKeypress::When waitForKeypress = WaitForKeypress::Never;
@@ -4949,14 +5337,19 @@ namespace Catch {
         bool warnAboutMissingAssertions() const override;
         bool warnAboutNoTests() const override;
         ShowDurations::OrNot showDurations() const override;
+        double minDuration() const override;
         RunTests::InWhatOrder runOrder() const override;
         unsigned int rngSeed() const override;
-        int benchmarkResolutionMultiple() const override;
         UseColour::YesOrNo useColour() const override;
         bool shouldDebugBreak() const override;
         int abortAfter() const override;
         bool showInvisibles() const override;
         Verbosity verbosity() const override;
+        bool benchmarkNoAnalysis() const override;
+        int benchmarkSamples() const override;
+        double benchmarkConfidenceInterval() const override;
+        unsigned int benchmarkResamples() const override;
+        std::chrono::milliseconds benchmarkWarmupTime() const override;
 
     private:
 
@@ -5017,76 +5410,59 @@ namespace Catch {
 } // end namespace Catch
 
 // end catch_assertionresult.h
-// start catch_option.hpp
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+// start catch_estimate.hpp
 
-namespace Catch {
-
-    // An optional type
-    template<typename T>
-    class Option {
-    public:
-        Option() : nullableValue( nullptr ) {}
-        Option( T const& _value )
-        : nullableValue( new( storage ) T( _value ) )
-        {}
-        Option( Option const& _other )
-        : nullableValue( _other ? new( storage ) T( *_other ) : nullptr )
-        {}
+ // Statistics estimates
 
-        ~Option() {
-            reset();
-        }
 
-        Option& operator= ( Option const& _other ) {
-            if( &_other != this ) {
-                reset();
-                if( _other )
-                    nullableValue = new( storage ) T( *_other );
+namespace Catch {
+    namespace Benchmark {
+        template <typename Duration>
+        struct Estimate {
+            Duration point;
+            Duration lower_bound;
+            Duration upper_bound;
+            double confidence_interval;
+
+            template <typename Duration2>
+            operator Estimate<Duration2>() const {
+                return { point, lower_bound, upper_bound, confidence_interval };
             }
-            return *this;
-        }
-        Option& operator = ( T const& _value ) {
-            reset();
-            nullableValue = new( storage ) T( _value );
-            return *this;
-        }
-
-        void reset() {
-            if( nullableValue )
-                nullableValue->~T();
-            nullableValue = nullptr;
-        }
-
-        T& operator*() { return *nullableValue; }
-        T const& operator*() const { return *nullableValue; }
-        T* operator->() { return nullableValue; }
-        const T* operator->() const { return nullableValue; }
-
-        T valueOr( T const& defaultValue ) const {
-            return nullableValue ? *nullableValue : defaultValue;
-        }
+        };
+    } // namespace Benchmark
+} // namespace Catch
 
-        bool some() const { return nullableValue != nullptr; }
-        bool none() const { return nullableValue == nullptr; }
+// end catch_estimate.hpp
+// start catch_outlier_classification.hpp
 
-        bool operator !() const { return nullableValue == nullptr; }
-        explicit operator bool() const {
-            return some();
-        }
+// Outlier information
 
-    private:
-        T *nullableValue;
-        alignas(alignof(T)) char storage[sizeof(T)];
-    };
+namespace Catch {
+    namespace Benchmark {
+        struct OutlierClassification {
+            int samples_seen = 0;
+            int low_severe = 0;     // more than 3 times IQR below Q1
+            int low_mild = 0;       // 1.5 to 3 times IQR below Q1
+            int high_mild = 0;      // 1.5 to 3 times IQR above Q3
+            int high_severe = 0;    // more than 3 times IQR above Q3
+
+            int total() const {
+                return low_severe + low_mild + high_mild + high_severe;
+            }
+        };
+    } // namespace Benchmark
+} // namespace Catch
 
-} // end namespace Catch
+// end catch_outlier_classification.hpp
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
-// end catch_option.hpp
 #include <string>
 #include <iosfwd>
 #include <map>
 #include <set>
 #include <memory>
+#include <algorithm>
 
 namespace Catch {
 
@@ -5222,14 +5598,43 @@ namespace Catch {
         bool aborting;
     };
 
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
     struct BenchmarkInfo {
         std::string name;
+        double estimatedDuration;
+        int iterations;
+        int samples;
+        unsigned int resamples;
+        double clockResolution;
+        double clockCost;
     };
+
+    template <class Duration>
     struct BenchmarkStats {
         BenchmarkInfo info;
-        std::size_t iterations;
-        uint64_t elapsedTimeInNanoseconds;
+
+        std::vector<Duration> samples;
+        Benchmark::Estimate<Duration> mean;
+        Benchmark::Estimate<Duration> standardDeviation;
+        Benchmark::OutlierClassification outliers;
+        double outlierVariance;
+
+        template <typename Duration2>
+        operator BenchmarkStats<Duration2>() const {
+            std::vector<Duration2> samples2;
+            samples2.reserve(samples.size());
+            std::transform(samples.begin(), samples.end(), std::back_inserter(samples2), [](Duration d) { return Duration2(d); });
+            return {
+                info,
+                std::move(samples2),
+                mean,
+                standardDeviation,
+                outliers,
+                outlierVariance,
+            };
+        }
     };
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
     struct IStreamingReporter {
         virtual ~IStreamingReporter() = default;
@@ -5242,23 +5647,26 @@ namespace Catch {
 
         virtual void noMatchingTestCases( std::string const& spec ) = 0;
 
+        virtual void reportInvalidArguments(std::string const&) {}
+
         virtual void testRunStarting( TestRunInfo const& testRunInfo ) = 0;
         virtual void testGroupStarting( GroupInfo const& groupInfo ) = 0;
 
         virtual void testCaseStarting( TestCaseInfo const& testInfo ) = 0;
         virtual void sectionStarting( SectionInfo const& sectionInfo ) = 0;
 
-        // *** experimental ***
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+        virtual void benchmarkPreparing( std::string const& ) {}
         virtual void benchmarkStarting( BenchmarkInfo const& ) {}
+        virtual void benchmarkEnded( BenchmarkStats<> const& ) {}
+        virtual void benchmarkFailed( std::string const& ) {}
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
         virtual void assertionStarting( AssertionInfo const& assertionInfo ) = 0;
 
         // The return value indicates if the messages buffer should be cleared:
         virtual bool assertionEnded( AssertionStats const& assertionStats ) = 0;
 
-        // *** experimental ***
-        virtual void benchmarkEnded( BenchmarkStats const& ) {}
-
         virtual void sectionEnded( SectionStats const& sectionStats ) = 0;
         virtual void testCaseEnded( TestCaseStats const& testCaseStats ) = 0;
         virtual void testGroupEnded( TestGroupStats const& testGroupStats ) = 0;
@@ -5307,6 +5715,9 @@ namespace Catch {
     // Returns double formatted as %.3f (format expected on output)
     std::string getFormattedDuration( double duration );
 
+    //! Should the reporter show
+    bool shouldShowDuration( IConfig const& config, double duration );
+
     std::string serializeFilters( std::vector<std::string> const& container );
 
     template<typename DerivedT>
@@ -5333,6 +5744,8 @@ namespace Catch {
 
         void noMatchingTestCases(std::string const&) override {}
 
+        void reportInvalidArguments(std::string const&) override {}
+
         void testRunStarting(TestRunInfo const& _testRunInfo) override {
             currentTestRunInfo = _testRunInfo;
         }
@@ -5667,14 +6080,16 @@ namespace Catch {
 #if !defined(CATCH_CONFIG_DISABLE)
 
 #define CATCH_REGISTER_REPORTER( name, reporterType ) \
+    CATCH_INTERNAL_START_WARNINGS_SUPPRESSION         \
     CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS          \
     namespace{ Catch::ReporterRegistrar<reporterType> catch_internal_RegistrarFor##reporterType( name ); } \
-    CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS
+    CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
 
 #define CATCH_REGISTER_LISTENER( listenerType ) \
-     CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS   \
-     namespace{ Catch::ListenerRegistrar<listenerType> catch_internal_RegistrarFor##listenerType; } \
-     CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
+    CATCH_INTERNAL_START_WARNINGS_SUPPRESSION   \
+    CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS    \
+    namespace{ Catch::ListenerRegistrar<listenerType> catch_internal_RegistrarFor##listenerType; } \
+    CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
 #else // CATCH_CONFIG_DISABLE
 
 #define CATCH_REGISTER_REPORTER(name, reporterType)
@@ -5696,8 +6111,6 @@ namespace Catch {
 
         static std::string getDescription();
 
-        ReporterPreferences getPreferences() const override;
-
         void noMatchingTestCases(std::string const& spec) override;
 
         void assertionStarting(AssertionInfo const&) override;
@@ -5736,6 +6149,8 @@ namespace Catch {
 
         void noMatchingTestCases(std::string const& spec) override;
 
+        void reportInvalidArguments(std::string const&arg) override;
+
         void assertionStarting(AssertionInfo const&) override;
 
         bool assertionEnded(AssertionStats const& _assertionStats) override;
@@ -5743,8 +6158,12 @@ namespace Catch {
         void sectionStarting(SectionInfo const& _sectionInfo) override;
         void sectionEnded(SectionStats const& _sectionStats) override;
 
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+        void benchmarkPreparing(std::string const& name) override;
         void benchmarkStarting(BenchmarkInfo const& info) override;
-        void benchmarkEnded(BenchmarkStats const& stats) override;
+        void benchmarkEnded(BenchmarkStats<> const& stats) override;
+        void benchmarkFailed(std::string const& error) override;
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
         void testCaseEnded(TestCaseStats const& _testCaseStats) override;
         void testGroupEnded(TestGroupStats const& _testGroupStats) override;
@@ -5791,6 +6210,14 @@ namespace Catch {
 #include <vector>
 
 namespace Catch {
+    enum class XmlFormatting {
+        None = 0x00,
+        Indent = 0x01,
+        Newline = 0x02,
+    };
+
+    XmlFormatting operator | (XmlFormatting lhs, XmlFormatting rhs);
+    XmlFormatting operator & (XmlFormatting lhs, XmlFormatting rhs);
 
     class XmlEncode {
     public:
@@ -5812,14 +6239,14 @@ namespace Catch {
 
         class ScopedElement {
         public:
-            ScopedElement( XmlWriter* writer );
+            ScopedElement( XmlWriter* writer, XmlFormatting fmt );
 
             ScopedElement( ScopedElement&& other ) noexcept;
             ScopedElement& operator=( ScopedElement&& other ) noexcept;
 
             ~ScopedElement();
 
-            ScopedElement& writeText( std::string const& text, bool indent = true );
+            ScopedElement& writeText( std::string const& text, XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent );
 
             template<typename T>
             ScopedElement& writeAttribute( std::string const& name, T const& attribute ) {
@@ -5827,156 +6254,1189 @@ namespace Catch {
                 return *this;
             }
 
-        private:
-            mutable XmlWriter* m_writer = nullptr;
-        };
+        private:
+            mutable XmlWriter* m_writer = nullptr;
+            XmlFormatting m_fmt;
+        };
+
+        XmlWriter( std::ostream& os = Catch::cout() );
+        ~XmlWriter();
+
+        XmlWriter( XmlWriter const& ) = delete;
+        XmlWriter& operator=( XmlWriter const& ) = delete;
+
+        XmlWriter& startElement( std::string const& name, XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent);
+
+        ScopedElement scopedElement( std::string const& name, XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent);
+
+        XmlWriter& endElement(XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent);
+
+        XmlWriter& writeAttribute( std::string const& name, std::string const& attribute );
+
+        XmlWriter& writeAttribute( std::string const& name, bool attribute );
+
+        template<typename T>
+        XmlWriter& writeAttribute( std::string const& name, T const& attribute ) {
+            ReusableStringStream rss;
+            rss << attribute;
+            return writeAttribute( name, rss.str() );
+        }
+
+        XmlWriter& writeText( std::string const& text, XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent);
+
+        XmlWriter& writeComment(std::string const& text, XmlFormatting fmt = XmlFormatting::Newline | XmlFormatting::Indent);
+
+        void writeStylesheetRef( std::string const& url );
+
+        XmlWriter& writeBlankLine();
+
+        void ensureTagClosed();
+
+    private:
+
+        void applyFormatting(XmlFormatting fmt);
+
+        void writeDeclaration();
+
+        void newlineIfNecessary();
+
+        bool m_tagIsOpen = false;
+        bool m_needsNewline = false;
+        std::vector<std::string> m_tags;
+        std::string m_indent;
+        std::ostream& m_os;
+    };
+
+}
+
+// end catch_xmlwriter.h
+namespace Catch {
+
+    class JunitReporter : public CumulativeReporterBase<JunitReporter> {
+    public:
+        JunitReporter(ReporterConfig const& _config);
+
+        ~JunitReporter() override;
+
+        static std::string getDescription();
+
+        void noMatchingTestCases(std::string const& /*spec*/) override;
+
+        void testRunStarting(TestRunInfo const& runInfo) override;
+
+        void testGroupStarting(GroupInfo const& groupInfo) override;
+
+        void testCaseStarting(TestCaseInfo const& testCaseInfo) override;
+        bool assertionEnded(AssertionStats const& assertionStats) override;
+
+        void testCaseEnded(TestCaseStats const& testCaseStats) override;
+
+        void testGroupEnded(TestGroupStats const& testGroupStats) override;
+
+        void testRunEndedCumulative() override;
+
+        void writeGroup(TestGroupNode const& groupNode, double suiteTime);
+
+        void writeTestCase(TestCaseNode const& testCaseNode);
+
+        void writeSection(std::string const& className,
+                          std::string const& rootName,
+                          SectionNode const& sectionNode);
+
+        void writeAssertions(SectionNode const& sectionNode);
+        void writeAssertion(AssertionStats const& stats);
+
+        XmlWriter xml;
+        Timer suiteTimer;
+        std::string stdOutForSuite;
+        std::string stdErrForSuite;
+        unsigned int unexpectedExceptions = 0;
+        bool m_okToFail = false;
+    };
+
+} // end namespace Catch
+
+// end catch_reporter_junit.h
+// start catch_reporter_xml.h
+
+namespace Catch {
+    class XmlReporter : public StreamingReporterBase<XmlReporter> {
+    public:
+        XmlReporter(ReporterConfig const& _config);
+
+        ~XmlReporter() override;
+
+        static std::string getDescription();
+
+        virtual std::string getStylesheetRef() const;
+
+        void writeSourceInfo(SourceLineInfo const& sourceInfo);
+
+    public: // StreamingReporterBase
+
+        void noMatchingTestCases(std::string const& s) override;
+
+        void testRunStarting(TestRunInfo const& testInfo) override;
+
+        void testGroupStarting(GroupInfo const& groupInfo) override;
+
+        void testCaseStarting(TestCaseInfo const& testInfo) override;
+
+        void sectionStarting(SectionInfo const& sectionInfo) override;
+
+        void assertionStarting(AssertionInfo const&) override;
+
+        bool assertionEnded(AssertionStats const& assertionStats) override;
+
+        void sectionEnded(SectionStats const& sectionStats) override;
+
+        void testCaseEnded(TestCaseStats const& testCaseStats) override;
+
+        void testGroupEnded(TestGroupStats const& testGroupStats) override;
+
+        void testRunEnded(TestRunStats const& testRunStats) override;
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+        void benchmarkPreparing(std::string const& name) override;
+        void benchmarkStarting(BenchmarkInfo const&) override;
+        void benchmarkEnded(BenchmarkStats<> const&) override;
+        void benchmarkFailed(std::string const&) override;
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
+    private:
+        Timer m_testCaseTimer;
+        XmlWriter m_xml;
+        int m_sectionDepth = 0;
+    };
+
+} // end namespace Catch
+
+// end catch_reporter_xml.h
+
+// end catch_external_interfaces.h
+#endif
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+// start catch_benchmarking_all.hpp
+
+// A proxy header that includes all of the benchmarking headers to allow
+// concise include of the benchmarking features. You should prefer the
+// individual includes in standard use.
+
+// start catch_benchmark.hpp
+
+ // Benchmark
+
+// start catch_chronometer.hpp
+
+// User-facing chronometer
+
+
+// start catch_clock.hpp
+
+// Clocks
+
+
+#include <chrono>
+#include <ratio>
+
+namespace Catch {
+    namespace Benchmark {
+        template <typename Clock>
+        using ClockDuration = typename Clock::duration;
+        template <typename Clock>
+        using FloatDuration = std::chrono::duration<double, typename Clock::period>;
+
+        template <typename Clock>
+        using TimePoint = typename Clock::time_point;
+
+        using default_clock = std::chrono::steady_clock;
+
+        template <typename Clock>
+        struct now {
+            TimePoint<Clock> operator()() const {
+                return Clock::now();
+            }
+        };
+
+        using fp_seconds = std::chrono::duration<double, std::ratio<1>>;
+    } // namespace Benchmark
+} // namespace Catch
+
+// end catch_clock.hpp
+// start catch_optimizer.hpp
+
+ // Hinting the optimizer
+
+
+#if defined(_MSC_VER)
+#   include <atomic> // atomic_thread_fence
+#endif
+
+namespace Catch {
+    namespace Benchmark {
+#if defined(__GNUC__) || defined(__clang__)
+        template <typename T>
+        inline void keep_memory(T* p) {
+            asm volatile("" : : "g"(p) : "memory");
+        }
+        inline void keep_memory() {
+            asm volatile("" : : : "memory");
+        }
+
+        namespace Detail {
+            inline void optimizer_barrier() { keep_memory(); }
+        } // namespace Detail
+#elif defined(_MSC_VER)
+
+#pragma optimize("", off)
+        template <typename T>
+        inline void keep_memory(T* p) {
+            // thanks @milleniumbug
+            *reinterpret_cast<char volatile*>(p) = *reinterpret_cast<char const volatile*>(p);
+        }
+        // TODO equivalent keep_memory()
+#pragma optimize("", on)
+
+        namespace Detail {
+            inline void optimizer_barrier() {
+                std::atomic_thread_fence(std::memory_order_seq_cst);
+            }
+        } // namespace Detail
+
+#endif
+
+        template <typename T>
+        inline void deoptimize_value(T&& x) {
+            keep_memory(&x);
+        }
+
+        template <typename Fn, typename... Args>
+        inline auto invoke_deoptimized(Fn&& fn, Args&&... args) -> typename std::enable_if<!std::is_same<void, decltype(fn(args...))>::value>::type {
+            deoptimize_value(std::forward<Fn>(fn) (std::forward<Args...>(args...)));
+        }
+
+        template <typename Fn, typename... Args>
+        inline auto invoke_deoptimized(Fn&& fn, Args&&... args) -> typename std::enable_if<std::is_same<void, decltype(fn(args...))>::value>::type {
+            std::forward<Fn>(fn) (std::forward<Args...>(args...));
+        }
+    } // namespace Benchmark
+} // namespace Catch
+
+// end catch_optimizer.hpp
+// start catch_complete_invoke.hpp
+
+// Invoke with a special case for void
+
+
+#include <type_traits>
+#include <utility>
+
+namespace Catch {
+    namespace Benchmark {
+        namespace Detail {
+            template <typename T>
+            struct CompleteType { using type = T; };
+            template <>
+            struct CompleteType<void> { struct type {}; };
+
+            template <typename T>
+            using CompleteType_t = typename CompleteType<T>::type;
+
+            template <typename Result>
+            struct CompleteInvoker {
+                template <typename Fun, typename... Args>
+                static Result invoke(Fun&& fun, Args&&... args) {
+                    return std::forward<Fun>(fun)(std::forward<Args>(args)...);
+                }
+            };
+            template <>
+            struct CompleteInvoker<void> {
+                template <typename Fun, typename... Args>
+                static CompleteType_t<void> invoke(Fun&& fun, Args&&... args) {
+                    std::forward<Fun>(fun)(std::forward<Args>(args)...);
+                    return {};
+                }
+            };
+
+            // invoke and not return void :(
+            template <typename Fun, typename... Args>
+            CompleteType_t<FunctionReturnType<Fun, Args...>> complete_invoke(Fun&& fun, Args&&... args) {
+                return CompleteInvoker<FunctionReturnType<Fun, Args...>>::invoke(std::forward<Fun>(fun), std::forward<Args>(args)...);
+            }
+
+            const std::string benchmarkErrorMsg = "a benchmark failed to run successfully";
+        } // namespace Detail
+
+        template <typename Fun>
+        Detail::CompleteType_t<FunctionReturnType<Fun>> user_code(Fun&& fun) {
+            CATCH_TRY{
+                return Detail::complete_invoke(std::forward<Fun>(fun));
+            } CATCH_CATCH_ALL{
+                getResultCapture().benchmarkFailed(translateActiveException());
+                CATCH_RUNTIME_ERROR(Detail::benchmarkErrorMsg);
+            }
+        }
+    } // namespace Benchmark
+} // namespace Catch
+
+// end catch_complete_invoke.hpp
+namespace Catch {
+    namespace Benchmark {
+        namespace Detail {
+            struct ChronometerConcept {
+                virtual void start() = 0;
+                virtual void finish() = 0;
+                virtual ~ChronometerConcept() = default;
+            };
+            template <typename Clock>
+            struct ChronometerModel final : public ChronometerConcept {
+                void start() override { started = Clock::now(); }
+                void finish() override { finished = Clock::now(); }
+
+                ClockDuration<Clock> elapsed() const { return finished - started; }
+
+                TimePoint<Clock> started;
+                TimePoint<Clock> finished;
+            };
+        } // namespace Detail
+
+        struct Chronometer {
+        public:
+            template <typename Fun>
+            void measure(Fun&& fun) { measure(std::forward<Fun>(fun), is_callable<Fun(int)>()); }
+
+            int runs() const { return k; }
+
+            Chronometer(Detail::ChronometerConcept& meter, int k)
+                : impl(&meter)
+                , k(k) {}
+
+        private:
+            template <typename Fun>
+            void measure(Fun&& fun, std::false_type) {
+                measure([&fun](int) { return fun(); }, std::true_type());
+            }
+
+            template <typename Fun>
+            void measure(Fun&& fun, std::true_type) {
+                Detail::optimizer_barrier();
+                impl->start();
+                for (int i = 0; i < k; ++i) invoke_deoptimized(fun, i);
+                impl->finish();
+                Detail::optimizer_barrier();
+            }
+
+            Detail::ChronometerConcept* impl;
+            int k;
+        };
+    } // namespace Benchmark
+} // namespace Catch
+
+// end catch_chronometer.hpp
+// start catch_environment.hpp
+
+// Environment information
+
+
+namespace Catch {
+    namespace Benchmark {
+        template <typename Duration>
+        struct EnvironmentEstimate {
+            Duration mean;
+            OutlierClassification outliers;
+
+            template <typename Duration2>
+            operator EnvironmentEstimate<Duration2>() const {
+                return { mean, outliers };
+            }
+        };
+        template <typename Clock>
+        struct Environment {
+            using clock_type = Clock;
+            EnvironmentEstimate<FloatDuration<Clock>> clock_resolution;
+            EnvironmentEstimate<FloatDuration<Clock>> clock_cost;
+        };
+    } // namespace Benchmark
+} // namespace Catch
+
+// end catch_environment.hpp
+// start catch_execution_plan.hpp
+
+ // Execution plan
+
+
+// start catch_benchmark_function.hpp
+
+ // Dumb std::function implementation for consistent call overhead
+
+
+#include <cassert>
+#include <type_traits>
+#include <utility>
+#include <memory>
+
+namespace Catch {
+    namespace Benchmark {
+        namespace Detail {
+            template <typename T>
+            using Decay = typename std::decay<T>::type;
+            template <typename T, typename U>
+            struct is_related
+                : std::is_same<Decay<T>, Decay<U>> {};
+
+            /// We need to reinvent std::function because every piece of code that might add overhead
+            /// in a measurement context needs to have consistent performance characteristics so that we
+            /// can account for it in the measurement.
+            /// Implementations of std::function with optimizations that aren't always applicable, like
+            /// small buffer optimizations, are not uncommon.
+            /// This is effectively an implementation of std::function without any such optimizations;
+            /// it may be slow, but it is consistently slow.
+            struct BenchmarkFunction {
+            private:
+                struct callable {
+                    virtual void call(Chronometer meter) const = 0;
+                    virtual callable* clone() const = 0;
+                    virtual ~callable() = default;
+                };
+                template <typename Fun>
+                struct model : public callable {
+                    model(Fun&& fun) : fun(std::move(fun)) {}
+                    model(Fun const& fun) : fun(fun) {}
+
+                    model<Fun>* clone() const override { return new model<Fun>(*this); }
+
+                    void call(Chronometer meter) const override {
+                        call(meter, is_callable<Fun(Chronometer)>());
+                    }
+                    void call(Chronometer meter, std::true_type) const {
+                        fun(meter);
+                    }
+                    void call(Chronometer meter, std::false_type) const {
+                        meter.measure(fun);
+                    }
+
+                    Fun fun;
+                };
+
+                struct do_nothing { void operator()() const {} };
+
+                template <typename T>
+                BenchmarkFunction(model<T>* c) : f(c) {}
+
+            public:
+                BenchmarkFunction()
+                    : f(new model<do_nothing>{ {} }) {}
+
+                template <typename Fun,
+                    typename std::enable_if<!is_related<Fun, BenchmarkFunction>::value, int>::type = 0>
+                    BenchmarkFunction(Fun&& fun)
+                    : f(new model<typename std::decay<Fun>::type>(std::forward<Fun>(fun))) {}
+
+                BenchmarkFunction(BenchmarkFunction&& that)
+                    : f(std::move(that.f)) {}
+
+                BenchmarkFunction(BenchmarkFunction const& that)
+                    : f(that.f->clone()) {}
+
+                BenchmarkFunction& operator=(BenchmarkFunction&& that) {
+                    f = std::move(that.f);
+                    return *this;
+                }
+
+                BenchmarkFunction& operator=(BenchmarkFunction const& that) {
+                    f.reset(that.f->clone());
+                    return *this;
+                }
+
+                void operator()(Chronometer meter) const { f->call(meter); }
+
+            private:
+                std::unique_ptr<callable> f;
+            };
+        } // namespace Detail
+    } // namespace Benchmark
+} // namespace Catch
+
+// end catch_benchmark_function.hpp
+// start catch_repeat.hpp
+
+// repeat algorithm
+
+
+#include <type_traits>
+#include <utility>
+
+namespace Catch {
+    namespace Benchmark {
+        namespace Detail {
+            template <typename Fun>
+            struct repeater {
+                void operator()(int k) const {
+                    for (int i = 0; i < k; ++i) {
+                        fun();
+                    }
+                }
+                Fun fun;
+            };
+            template <typename Fun>
+            repeater<typename std::decay<Fun>::type> repeat(Fun&& fun) {
+                return { std::forward<Fun>(fun) };
+            }
+        } // namespace Detail
+    } // namespace Benchmark
+} // namespace Catch
+
+// end catch_repeat.hpp
+// start catch_run_for_at_least.hpp
+
+// Run a function for a minimum amount of time
+
+
+// start catch_measure.hpp
+
+// Measure
+
+
+// start catch_timing.hpp
+
+// Timing
+
+
+#include <tuple>
+#include <type_traits>
+
+namespace Catch {
+    namespace Benchmark {
+        template <typename Duration, typename Result>
+        struct Timing {
+            Duration elapsed;
+            Result result;
+            int iterations;
+        };
+        template <typename Clock, typename Func, typename... Args>
+        using TimingOf = Timing<ClockDuration<Clock>, Detail::CompleteType_t<FunctionReturnType<Func, Args...>>>;
+    } // namespace Benchmark
+} // namespace Catch
+
+// end catch_timing.hpp
+#include <utility>
+
+namespace Catch {
+    namespace Benchmark {
+        namespace Detail {
+            template <typename Clock, typename Fun, typename... Args>
+            TimingOf<Clock, Fun, Args...> measure(Fun&& fun, Args&&... args) {
+                auto start = Clock::now();
+                auto&& r = Detail::complete_invoke(fun, std::forward<Args>(args)...);
+                auto end = Clock::now();
+                auto delta = end - start;
+                return { delta, std::forward<decltype(r)>(r), 1 };
+            }
+        } // namespace Detail
+    } // namespace Benchmark
+} // namespace Catch
+
+// end catch_measure.hpp
+#include <utility>
+#include <type_traits>
+
+namespace Catch {
+    namespace Benchmark {
+        namespace Detail {
+            template <typename Clock, typename Fun>
+            TimingOf<Clock, Fun, int> measure_one(Fun&& fun, int iters, std::false_type) {
+                return Detail::measure<Clock>(fun, iters);
+            }
+            template <typename Clock, typename Fun>
+            TimingOf<Clock, Fun, Chronometer> measure_one(Fun&& fun, int iters, std::true_type) {
+                Detail::ChronometerModel<Clock> meter;
+                auto&& result = Detail::complete_invoke(fun, Chronometer(meter, iters));
+
+                return { meter.elapsed(), std::move(result), iters };
+            }
+
+            template <typename Clock, typename Fun>
+            using run_for_at_least_argument_t = typename std::conditional<is_callable<Fun(Chronometer)>::value, Chronometer, int>::type;
+
+            struct optimized_away_error : std::exception {
+                const char* what() const noexcept override {
+                    return "could not measure benchmark, maybe it was optimized away";
+                }
+            };
+
+            template <typename Clock, typename Fun>
+            TimingOf<Clock, Fun, run_for_at_least_argument_t<Clock, Fun>> run_for_at_least(ClockDuration<Clock> how_long, int seed, Fun&& fun) {
+                auto iters = seed;
+                while (iters < (1 << 30)) {
+                    auto&& Timing = measure_one<Clock>(fun, iters, is_callable<Fun(Chronometer)>());
+
+                    if (Timing.elapsed >= how_long) {
+                        return { Timing.elapsed, std::move(Timing.result), iters };
+                    }
+                    iters *= 2;
+                }
+                throw optimized_away_error{};
+            }
+        } // namespace Detail
+    } // namespace Benchmark
+} // namespace Catch
+
+// end catch_run_for_at_least.hpp
+#include <algorithm>
+
+namespace Catch {
+    namespace Benchmark {
+        template <typename Duration>
+        struct ExecutionPlan {
+            int iterations_per_sample;
+            Duration estimated_duration;
+            Detail::BenchmarkFunction benchmark;
+            Duration warmup_time;
+            int warmup_iterations;
+
+            template <typename Duration2>
+            operator ExecutionPlan<Duration2>() const {
+                return { iterations_per_sample, estimated_duration, benchmark, warmup_time, warmup_iterations };
+            }
+
+            template <typename Clock>
+            std::vector<FloatDuration<Clock>> run(const IConfig &cfg, Environment<FloatDuration<Clock>> env) const {
+                // warmup a bit
+                Detail::run_for_at_least<Clock>(std::chrono::duration_cast<ClockDuration<Clock>>(warmup_time), warmup_iterations, Detail::repeat(now<Clock>{}));
+
+                std::vector<FloatDuration<Clock>> times;
+                times.reserve(cfg.benchmarkSamples());
+                std::generate_n(std::back_inserter(times), cfg.benchmarkSamples(), [this, env] {
+                    Detail::ChronometerModel<Clock> model;
+                    this->benchmark(Chronometer(model, iterations_per_sample));
+                    auto sample_time = model.elapsed() - env.clock_cost.mean;
+                    if (sample_time < FloatDuration<Clock>::zero()) sample_time = FloatDuration<Clock>::zero();
+                    return sample_time / iterations_per_sample;
+                });
+                return times;
+            }
+        };
+    } // namespace Benchmark
+} // namespace Catch
+
+// end catch_execution_plan.hpp
+// start catch_estimate_clock.hpp
+
+ // Environment measurement
+
+
+// start catch_stats.hpp
+
+// Statistical analysis tools
+
+
+#include <algorithm>
+#include <functional>
+#include <vector>
+#include <iterator>
+#include <numeric>
+#include <tuple>
+#include <cmath>
+#include <utility>
+#include <cstddef>
+#include <random>
+
+namespace Catch {
+    namespace Benchmark {
+        namespace Detail {
+            using sample = std::vector<double>;
+
+            double weighted_average_quantile(int k, int q, std::vector<double>::iterator first, std::vector<double>::iterator last);
+
+            template <typename Iterator>
+            OutlierClassification classify_outliers(Iterator first, Iterator last) {
+                std::vector<double> copy(first, last);
+
+                auto q1 = weighted_average_quantile(1, 4, copy.begin(), copy.end());
+                auto q3 = weighted_average_quantile(3, 4, copy.begin(), copy.end());
+                auto iqr = q3 - q1;
+                auto los = q1 - (iqr * 3.);
+                auto lom = q1 - (iqr * 1.5);
+                auto him = q3 + (iqr * 1.5);
+                auto his = q3 + (iqr * 3.);
+
+                OutlierClassification o;
+                for (; first != last; ++first) {
+                    auto&& t = *first;
+                    if (t < los) ++o.low_severe;
+                    else if (t < lom) ++o.low_mild;
+                    else if (t > his) ++o.high_severe;
+                    else if (t > him) ++o.high_mild;
+                    ++o.samples_seen;
+                }
+                return o;
+            }
+
+            template <typename Iterator>
+            double mean(Iterator first, Iterator last) {
+                auto count = last - first;
+                double sum = std::accumulate(first, last, 0.);
+                return sum / count;
+            }
+
+            template <typename URng, typename Iterator, typename Estimator>
+            sample resample(URng& rng, int resamples, Iterator first, Iterator last, Estimator& estimator) {
+                auto n = last - first;
+                std::uniform_int_distribution<decltype(n)> dist(0, n - 1);
+
+                sample out;
+                out.reserve(resamples);
+                std::generate_n(std::back_inserter(out), resamples, [n, first, &estimator, &dist, &rng] {
+                    std::vector<double> resampled;
+                    resampled.reserve(n);
+                    std::generate_n(std::back_inserter(resampled), n, [first, &dist, &rng] { return first[dist(rng)]; });
+                    return estimator(resampled.begin(), resampled.end());
+                });
+                std::sort(out.begin(), out.end());
+                return out;
+            }
+
+            template <typename Estimator, typename Iterator>
+            sample jackknife(Estimator&& estimator, Iterator first, Iterator last) {
+                auto n = last - first;
+                auto second = std::next(first);
+                sample results;
+                results.reserve(n);
 
-        XmlWriter( std::ostream& os = Catch::cout() );
-        ~XmlWriter();
+                for (auto it = first; it != last; ++it) {
+                    std::iter_swap(it, first);
+                    results.push_back(estimator(second, last));
+                }
 
-        XmlWriter( XmlWriter const& ) = delete;
-        XmlWriter& operator=( XmlWriter const& ) = delete;
+                return results;
+            }
 
-        XmlWriter& startElement( std::string const& name );
+            inline double normal_cdf(double x) {
+                return std::erfc(-x / std::sqrt(2.0)) / 2.0;
+            }
 
-        ScopedElement scopedElement( std::string const& name );
+            double erfc_inv(double x);
+
+            double normal_quantile(double p);
+
+            template <typename Iterator, typename Estimator>
+            Estimate<double> bootstrap(double confidence_level, Iterator first, Iterator last, sample const& resample, Estimator&& estimator) {
+                auto n_samples = last - first;
+
+                double point = estimator(first, last);
+                // Degenerate case with a single sample
+                if (n_samples == 1) return { point, point, point, confidence_level };
+
+                sample jack = jackknife(estimator, first, last);
+                double jack_mean = mean(jack.begin(), jack.end());
+                double sum_squares, sum_cubes;
+                std::tie(sum_squares, sum_cubes) = std::accumulate(jack.begin(), jack.end(), std::make_pair(0., 0.), [jack_mean](std::pair<double, double> sqcb, double x) -> std::pair<double, double> {
+                    auto d = jack_mean - x;
+                    auto d2 = d * d;
+                    auto d3 = d2 * d;
+                    return { sqcb.first + d2, sqcb.second + d3 };
+                });
+
+                double accel = sum_cubes / (6 * std::pow(sum_squares, 1.5));
+                int n = static_cast<int>(resample.size());
+                double prob_n = std::count_if(resample.begin(), resample.end(), [point](double x) { return x < point; }) / (double)n;
+                // degenerate case with uniform samples
+                if (prob_n == 0) return { point, point, point, confidence_level };
+
+                double bias = normal_quantile(prob_n);
+                double z1 = normal_quantile((1. - confidence_level) / 2.);
+
+                auto cumn = [n](double x) -> int {
+                    return std::lround(normal_cdf(x) * n); };
+                auto a = [bias, accel](double b) { return bias + b / (1. - accel * b); };
+                double b1 = bias + z1;
+                double b2 = bias - z1;
+                double a1 = a(b1);
+                double a2 = a(b2);
+                auto lo = std::max(cumn(a1), 0);
+                auto hi = std::min(cumn(a2), n - 1);
+
+                return { point, resample[lo], resample[hi], confidence_level };
+            }
 
-        XmlWriter& endElement();
+            double outlier_variance(Estimate<double> mean, Estimate<double> stddev, int n);
 
-        XmlWriter& writeAttribute( std::string const& name, std::string const& attribute );
+            struct bootstrap_analysis {
+                Estimate<double> mean;
+                Estimate<double> standard_deviation;
+                double outlier_variance;
+            };
 
-        XmlWriter& writeAttribute( std::string const& name, bool attribute );
+            bootstrap_analysis analyse_samples(double confidence_level, int n_resamples, std::vector<double>::iterator first, std::vector<double>::iterator last);
+        } // namespace Detail
+    } // namespace Benchmark
+} // namespace Catch
 
-        template<typename T>
-        XmlWriter& writeAttribute( std::string const& name, T const& attribute ) {
-            ReusableStringStream rss;
-            rss << attribute;
-            return writeAttribute( name, rss.str() );
-        }
+// end catch_stats.hpp
+#include <algorithm>
+#include <iterator>
+#include <tuple>
+#include <vector>
+#include <cmath>
 
-        XmlWriter& writeText( std::string const& text, bool indent = true );
+namespace Catch {
+    namespace Benchmark {
+        namespace Detail {
+            template <typename Clock>
+            std::vector<double> resolution(int k) {
+                std::vector<TimePoint<Clock>> times;
+                times.reserve(k + 1);
+                std::generate_n(std::back_inserter(times), k + 1, now<Clock>{});
+
+                std::vector<double> deltas;
+                deltas.reserve(k);
+                std::transform(std::next(times.begin()), times.end(), times.begin(),
+                    std::back_inserter(deltas),
+                    [](TimePoint<Clock> a, TimePoint<Clock> b) { return static_cast<double>((a - b).count()); });
+
+                return deltas;
+            }
 
-        XmlWriter& writeComment( std::string const& text );
+            const auto warmup_iterations = 10000;
+            const auto warmup_time = std::chrono::milliseconds(100);
+            const auto minimum_ticks = 1000;
+            const auto warmup_seed = 10000;
+            const auto clock_resolution_estimation_time = std::chrono::milliseconds(500);
+            const auto clock_cost_estimation_time_limit = std::chrono::seconds(1);
+            const auto clock_cost_estimation_tick_limit = 100000;
+            const auto clock_cost_estimation_time = std::chrono::milliseconds(10);
+            const auto clock_cost_estimation_iterations = 10000;
+
+            template <typename Clock>
+            int warmup() {
+                return run_for_at_least<Clock>(std::chrono::duration_cast<ClockDuration<Clock>>(warmup_time), warmup_seed, &resolution<Clock>)
+                    .iterations;
+            }
+            template <typename Clock>
+            EnvironmentEstimate<FloatDuration<Clock>> estimate_clock_resolution(int iterations) {
+                auto r = run_for_at_least<Clock>(std::chrono::duration_cast<ClockDuration<Clock>>(clock_resolution_estimation_time), iterations, &resolution<Clock>)
+                    .result;
+                return {
+                    FloatDuration<Clock>(mean(r.begin(), r.end())),
+                    classify_outliers(r.begin(), r.end()),
+                };
+            }
+            template <typename Clock>
+            EnvironmentEstimate<FloatDuration<Clock>> estimate_clock_cost(FloatDuration<Clock> resolution) {
+                auto time_limit = std::min(resolution * clock_cost_estimation_tick_limit, FloatDuration<Clock>(clock_cost_estimation_time_limit));
+                auto time_clock = [](int k) {
+                    return Detail::measure<Clock>([k] {
+                        for (int i = 0; i < k; ++i) {
+                            volatile auto ignored = Clock::now();
+                            (void)ignored;
+                        }
+                    }).elapsed;
+                };
+                time_clock(1);
+                int iters = clock_cost_estimation_iterations;
+                auto&& r = run_for_at_least<Clock>(std::chrono::duration_cast<ClockDuration<Clock>>(clock_cost_estimation_time), iters, time_clock);
+                std::vector<double> times;
+                int nsamples = static_cast<int>(std::ceil(time_limit / r.elapsed));
+                times.reserve(nsamples);
+                std::generate_n(std::back_inserter(times), nsamples, [time_clock, &r] {
+                    return static_cast<double>((time_clock(r.iterations) / r.iterations).count());
+                });
+                return {
+                    FloatDuration<Clock>(mean(times.begin(), times.end())),
+                    classify_outliers(times.begin(), times.end()),
+                };
+            }
 
-        void writeStylesheetRef( std::string const& url );
+            template <typename Clock>
+            Environment<FloatDuration<Clock>> measure_environment() {
+                static Environment<FloatDuration<Clock>>* env = nullptr;
+                if (env) {
+                    return *env;
+                }
 
-        XmlWriter& writeBlankLine();
+                auto iters = Detail::warmup<Clock>();
+                auto resolution = Detail::estimate_clock_resolution<Clock>(iters);
+                auto cost = Detail::estimate_clock_cost<Clock>(resolution.mean);
 
-        void ensureTagClosed();
+                env = new Environment<FloatDuration<Clock>>{ resolution, cost };
+                return *env;
+            }
+        } // namespace Detail
+    } // namespace Benchmark
+} // namespace Catch
 
-    private:
+// end catch_estimate_clock.hpp
+// start catch_analyse.hpp
 
-        void writeDeclaration();
+ // Run and analyse one benchmark
 
-        void newlineIfNecessary();
 
-        bool m_tagIsOpen = false;
-        bool m_needsNewline = false;
-        std::vector<std::string> m_tags;
-        std::string m_indent;
-        std::ostream& m_os;
-    };
+// start catch_sample_analysis.hpp
 
-}
+// Benchmark results
 
-// end catch_xmlwriter.h
-namespace Catch {
 
-    class JunitReporter : public CumulativeReporterBase<JunitReporter> {
-    public:
-        JunitReporter(ReporterConfig const& _config);
+#include <algorithm>
+#include <vector>
+#include <string>
+#include <iterator>
 
-        ~JunitReporter() override;
+namespace Catch {
+    namespace Benchmark {
+        template <typename Duration>
+        struct SampleAnalysis {
+            std::vector<Duration> samples;
+            Estimate<Duration> mean;
+            Estimate<Duration> standard_deviation;
+            OutlierClassification outliers;
+            double outlier_variance;
+
+            template <typename Duration2>
+            operator SampleAnalysis<Duration2>() const {
+                std::vector<Duration2> samples2;
+                samples2.reserve(samples.size());
+                std::transform(samples.begin(), samples.end(), std::back_inserter(samples2), [](Duration d) { return Duration2(d); });
+                return {
+                    std::move(samples2),
+                    mean,
+                    standard_deviation,
+                    outliers,
+                    outlier_variance,
+                };
+            }
+        };
+    } // namespace Benchmark
+} // namespace Catch
 
-        static std::string getDescription();
+// end catch_sample_analysis.hpp
+#include <algorithm>
+#include <iterator>
+#include <vector>
 
-        void noMatchingTestCases(std::string const& /*spec*/) override;
+namespace Catch {
+    namespace Benchmark {
+        namespace Detail {
+            template <typename Duration, typename Iterator>
+            SampleAnalysis<Duration> analyse(const IConfig &cfg, Environment<Duration>, Iterator first, Iterator last) {
+                if (!cfg.benchmarkNoAnalysis()) {
+                    std::vector<double> samples;
+                    samples.reserve(last - first);
+                    std::transform(first, last, std::back_inserter(samples), [](Duration d) { return d.count(); });
+
+                    auto analysis = Catch::Benchmark::Detail::analyse_samples(cfg.benchmarkConfidenceInterval(), cfg.benchmarkResamples(), samples.begin(), samples.end());
+                    auto outliers = Catch::Benchmark::Detail::classify_outliers(samples.begin(), samples.end());
+
+                    auto wrap_estimate = [](Estimate<double> e) {
+                        return Estimate<Duration> {
+                            Duration(e.point),
+                                Duration(e.lower_bound),
+                                Duration(e.upper_bound),
+                                e.confidence_interval,
+                        };
+                    };
+                    std::vector<Duration> samples2;
+                    samples2.reserve(samples.size());
+                    std::transform(samples.begin(), samples.end(), std::back_inserter(samples2), [](double d) { return Duration(d); });
+                    return {
+                        std::move(samples2),
+                        wrap_estimate(analysis.mean),
+                        wrap_estimate(analysis.standard_deviation),
+                        outliers,
+                        analysis.outlier_variance,
+                    };
+                } else {
+                    std::vector<Duration> samples;
+                    samples.reserve(last - first);
+
+                    Duration mean = Duration(0);
+                    int i = 0;
+                    for (auto it = first; it < last; ++it, ++i) {
+                        samples.push_back(Duration(*it));
+                        mean += Duration(*it);
+                    }
+                    mean /= i;
+
+                    return {
+                        std::move(samples),
+                        Estimate<Duration>{mean, mean, mean, 0.0},
+                        Estimate<Duration>{Duration(0), Duration(0), Duration(0), 0.0},
+                        OutlierClassification{},
+                        0.0
+                    };
+                }
+            }
+        } // namespace Detail
+    } // namespace Benchmark
+} // namespace Catch
 
-        void testRunStarting(TestRunInfo const& runInfo) override;
+// end catch_analyse.hpp
+#include <algorithm>
+#include <functional>
+#include <string>
+#include <vector>
+#include <cmath>
 
-        void testGroupStarting(GroupInfo const& groupInfo) override;
+namespace Catch {
+    namespace Benchmark {
+        struct Benchmark {
+            Benchmark(std::string &&name)
+                : name(std::move(name)) {}
+
+            template <class FUN>
+            Benchmark(std::string &&name, FUN &&func)
+                : fun(std::move(func)), name(std::move(name)) {}
+
+            template <typename Clock>
+            ExecutionPlan<FloatDuration<Clock>> prepare(const IConfig &cfg, Environment<FloatDuration<Clock>> env) const {
+                auto min_time = env.clock_resolution.mean * Detail::minimum_ticks;
+                auto run_time = std::max(min_time, std::chrono::duration_cast<decltype(min_time)>(cfg.benchmarkWarmupTime()));
+                auto&& test = Detail::run_for_at_least<Clock>(std::chrono::duration_cast<ClockDuration<Clock>>(run_time), 1, fun);
+                int new_iters = static_cast<int>(std::ceil(min_time * test.iterations / test.elapsed));
+                return { new_iters, test.elapsed / test.iterations * new_iters * cfg.benchmarkSamples(), fun, std::chrono::duration_cast<FloatDuration<Clock>>(cfg.benchmarkWarmupTime()), Detail::warmup_iterations };
+            }
 
-        void testCaseStarting(TestCaseInfo const& testCaseInfo) override;
-        bool assertionEnded(AssertionStats const& assertionStats) override;
+            template <typename Clock = default_clock>
+            void run() {
+                IConfigPtr cfg = getCurrentContext().getConfig();
 
-        void testCaseEnded(TestCaseStats const& testCaseStats) override;
+                auto env = Detail::measure_environment<Clock>();
 
-        void testGroupEnded(TestGroupStats const& testGroupStats) override;
+                getResultCapture().benchmarkPreparing(name);
+                CATCH_TRY{
+                    auto plan = user_code([&] {
+                        return prepare<Clock>(*cfg, env);
+                    });
 
-        void testRunEndedCumulative() override;
+                    BenchmarkInfo info {
+                        name,
+                        plan.estimated_duration.count(),
+                        plan.iterations_per_sample,
+                        cfg->benchmarkSamples(),
+                        cfg->benchmarkResamples(),
+                        env.clock_resolution.mean.count(),
+                        env.clock_cost.mean.count()
+                    };
 
-        void writeGroup(TestGroupNode const& groupNode, double suiteTime);
+                    getResultCapture().benchmarkStarting(info);
 
-        void writeTestCase(TestCaseNode const& testCaseNode);
+                    auto samples = user_code([&] {
+                        return plan.template run<Clock>(*cfg, env);
+                    });
 
-        void writeSection(std::string const& className,
-                          std::string const& rootName,
-                          SectionNode const& sectionNode);
+                    auto analysis = Detail::analyse(*cfg, env, samples.begin(), samples.end());
+                    BenchmarkStats<FloatDuration<Clock>> stats{ info, analysis.samples, analysis.mean, analysis.standard_deviation, analysis.outliers, analysis.outlier_variance };
+                    getResultCapture().benchmarkEnded(stats);
 
-        void writeAssertions(SectionNode const& sectionNode);
-        void writeAssertion(AssertionStats const& stats);
+                } CATCH_CATCH_ALL{
+                    if (translateActiveException() != Detail::benchmarkErrorMsg) // benchmark errors have been reported, otherwise rethrow.
+                        std::rethrow_exception(std::current_exception());
+                }
+            }
 
-        XmlWriter xml;
-        Timer suiteTimer;
-        std::string stdOutForSuite;
-        std::string stdErrForSuite;
-        unsigned int unexpectedExceptions = 0;
-        bool m_okToFail = false;
-    };
+            // sets lambda to be used in fun *and* executes benchmark!
+            template <typename Fun,
+                typename std::enable_if<!Detail::is_related<Fun, Benchmark>::value, int>::type = 0>
+                Benchmark & operator=(Fun func) {
+                fun = Detail::BenchmarkFunction(func);
+                run();
+                return *this;
+            }
 
-} // end namespace Catch
+            explicit operator bool() {
+                return true;
+            }
 
-// end catch_reporter_junit.h
-// start catch_reporter_xml.h
+        private:
+            Detail::BenchmarkFunction fun;
+            std::string name;
+        };
+    }
+} // namespace Catch
 
-namespace Catch {
-    class XmlReporter : public StreamingReporterBase<XmlReporter> {
-    public:
-        XmlReporter(ReporterConfig const& _config);
+#define INTERNAL_CATCH_GET_1_ARG(arg1, arg2, ...) arg1
+#define INTERNAL_CATCH_GET_2_ARG(arg1, arg2, ...) arg2
 
-        ~XmlReporter() override;
+#define INTERNAL_CATCH_BENCHMARK(BenchmarkName, name, benchmarkIndex)\
+    if( Catch::Benchmark::Benchmark BenchmarkName{name} ) \
+        BenchmarkName = [&](int benchmarkIndex)
 
-        static std::string getDescription();
+#define INTERNAL_CATCH_BENCHMARK_ADVANCED(BenchmarkName, name)\
+    if( Catch::Benchmark::Benchmark BenchmarkName{name} ) \
+        BenchmarkName = [&]
 
-        virtual std::string getStylesheetRef() const;
+// end catch_benchmark.hpp
+// start catch_constructor.hpp
 
-        void writeSourceInfo(SourceLineInfo const& sourceInfo);
+// Constructor and destructor helpers
 
-    public: // StreamingReporterBase
 
-        void noMatchingTestCases(std::string const& s) override;
+#include <type_traits>
 
-        void testRunStarting(TestRunInfo const& testInfo) override;
+namespace Catch {
+    namespace Benchmark {
+        namespace Detail {
+            template <typename T, bool Destruct>
+            struct ObjectStorage
+            {
+                using TStorage = typename std::aligned_storage<sizeof(T), std::alignment_of<T>::value>::type;
 
-        void testGroupStarting(GroupInfo const& groupInfo) override;
+                ObjectStorage() : data() {}
 
-        void testCaseStarting(TestCaseInfo const& testInfo) override;
+                ObjectStorage(const ObjectStorage& other)
+                {
+                    new(&data) T(other.stored_object());
+                }
 
-        void sectionStarting(SectionInfo const& sectionInfo) override;
+                ObjectStorage(ObjectStorage&& other)
+                {
+                    new(&data) T(std::move(other.stored_object()));
+                }
 
-        void assertionStarting(AssertionInfo const&) override;
+                ~ObjectStorage() { destruct_on_exit<T>(); }
 
-        bool assertionEnded(AssertionStats const& assertionStats) override;
+                template <typename... Args>
+                void construct(Args&&... args)
+                {
+                    new (&data) T(std::forward<Args>(args)...);
+                }
 
-        void sectionEnded(SectionStats const& sectionStats) override;
+                template <bool AllowManualDestruction = !Destruct>
+                typename std::enable_if<AllowManualDestruction>::type destruct()
+                {
+                    stored_object().~T();
+                }
 
-        void testCaseEnded(TestCaseStats const& testCaseStats) override;
+            private:
+                // If this is a constructor benchmark, destruct the underlying object
+                template <typename U>
+                void destruct_on_exit(typename std::enable_if<Destruct, U>::type* = 0) { destruct<true>(); }
+                // Otherwise, don't
+                template <typename U>
+                void destruct_on_exit(typename std::enable_if<!Destruct, U>::type* = 0) { }
 
-        void testGroupEnded(TestGroupStats const& testGroupStats) override;
+                T& stored_object() {
+                    return *static_cast<T*>(static_cast<void*>(&data));
+                }
 
-        void testRunEnded(TestRunStats const& testRunStats) override;
+                T const& stored_object() const {
+                    return *static_cast<T*>(static_cast<void*>(&data));
+                }
 
-    private:
-        Timer m_testCaseTimer;
-        XmlWriter m_xml;
-        int m_sectionDepth = 0;
-    };
+                TStorage data;
+            };
+        }
 
-} // end namespace Catch
+        template <typename T>
+        using storage_for = Detail::ObjectStorage<T, true>;
 
-// end catch_reporter_xml.h
+        template <typename T>
+        using destructable_object = Detail::ObjectStorage<T, false>;
+    }
+}
 
-// end catch_external_interfaces.h
+// end catch_constructor.hpp
+// end catch_benchmarking_all.hpp
 #endif
 
 #endif // ! CATCH_CONFIG_IMPL_ONLY
@@ -6004,23 +7464,37 @@ namespace TestCaseTracking {
         SourceLineInfo location;
 
         NameAndLocation( std::string const& _name, SourceLineInfo const& _location );
+        friend bool operator==(NameAndLocation const& lhs, NameAndLocation const& rhs) {
+            return lhs.name == rhs.name
+                && lhs.location == rhs.location;
+        }
     };
 
-    struct ITracker;
+    class ITracker;
 
     using ITrackerPtr = std::shared_ptr<ITracker>;
 
-    struct ITracker {
-        virtual ~ITracker();
+    class  ITracker {
+        NameAndLocation m_nameAndLocation;
+
+    public:
+        ITracker(NameAndLocation const& nameAndLoc) :
+            m_nameAndLocation(nameAndLoc)
+        {}
 
         // static queries
-        virtual NameAndLocation const& nameAndLocation() const = 0;
+        NameAndLocation const& nameAndLocation() const {
+            return m_nameAndLocation;
+        }
+
+        virtual ~ITracker();
 
         // dynamic queries
         virtual bool isComplete() const = 0; // Successfully completed or failed
         virtual bool isSuccessfullyCompleted() const = 0;
         virtual bool isOpen() const = 0; // Started but not complete
         virtual bool hasChildren() const = 0;
+        virtual bool hasStarted() const = 0;
 
         virtual ITracker& parent() = 0;
 
@@ -6075,7 +7549,6 @@ namespace TestCaseTracking {
         };
 
         using Children = std::vector<ITrackerPtr>;
-        NameAndLocation m_nameAndLocation;
         TrackerContext& m_ctx;
         ITracker* m_parent;
         Children m_children;
@@ -6084,11 +7557,13 @@ namespace TestCaseTracking {
     public:
         TrackerBase( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent );
 
-        NameAndLocation const& nameAndLocation() const override;
         bool isComplete() const override;
         bool isSuccessfullyCompleted() const override;
         bool isOpen() const override;
         bool hasChildren() const override;
+        bool hasStarted() const override {
+            return m_runState != NotStarted;
+        }
 
         void addChild( ITrackerPtr const& child ) override;
 
@@ -6113,6 +7588,7 @@ namespace TestCaseTracking {
 
     class SectionTracker : public TrackerBase {
         std::vector<std::string> m_filters;
+        std::string m_trimmed_name;
     public:
         SectionTracker( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent );
 
@@ -6150,6 +7626,217 @@ namespace Catch {
 }
 // end catch_leak_detector.h
 // Cpp files will be included in the single-header file here
+// start catch_stats.cpp
+
+// Statistical analysis tools
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+
+#include <cassert>
+#include <random>
+
+#if defined(CATCH_CONFIG_USE_ASYNC)
+#include <future>
+#endif
+
+namespace {
+    double erf_inv(double x) {
+        // Code accompanying the article "Approximating the erfinv function" in GPU Computing Gems, Volume 2
+        double w, p;
+
+        w = -log((1.0 - x) * (1.0 + x));
+
+        if (w < 6.250000) {
+            w = w - 3.125000;
+            p = -3.6444120640178196996e-21;
+            p = -1.685059138182016589e-19 + p * w;
+            p = 1.2858480715256400167e-18 + p * w;
+            p = 1.115787767802518096e-17 + p * w;
+            p = -1.333171662854620906e-16 + p * w;
+            p = 2.0972767875968561637e-17 + p * w;
+            p = 6.6376381343583238325e-15 + p * w;
+            p = -4.0545662729752068639e-14 + p * w;
+            p = -8.1519341976054721522e-14 + p * w;
+            p = 2.6335093153082322977e-12 + p * w;
+            p = -1.2975133253453532498e-11 + p * w;
+            p = -5.4154120542946279317e-11 + p * w;
+            p = 1.051212273321532285e-09 + p * w;
+            p = -4.1126339803469836976e-09 + p * w;
+            p = -2.9070369957882005086e-08 + p * w;
+            p = 4.2347877827932403518e-07 + p * w;
+            p = -1.3654692000834678645e-06 + p * w;
+            p = -1.3882523362786468719e-05 + p * w;
+            p = 0.0001867342080340571352 + p * w;
+            p = -0.00074070253416626697512 + p * w;
+            p = -0.0060336708714301490533 + p * w;
+            p = 0.24015818242558961693 + p * w;
+            p = 1.6536545626831027356 + p * w;
+        } else if (w < 16.000000) {
+            w = sqrt(w) - 3.250000;
+            p = 2.2137376921775787049e-09;
+            p = 9.0756561938885390979e-08 + p * w;
+            p = -2.7517406297064545428e-07 + p * w;
+            p = 1.8239629214389227755e-08 + p * w;
+            p = 1.5027403968909827627e-06 + p * w;
+            p = -4.013867526981545969e-06 + p * w;
+            p = 2.9234449089955446044e-06 + p * w;
+            p = 1.2475304481671778723e-05 + p * w;
+            p = -4.7318229009055733981e-05 + p * w;
+            p = 6.8284851459573175448e-05 + p * w;
+            p = 2.4031110387097893999e-05 + p * w;
+            p = -0.0003550375203628474796 + p * w;
+            p = 0.00095328937973738049703 + p * w;
+            p = -0.0016882755560235047313 + p * w;
+            p = 0.0024914420961078508066 + p * w;
+            p = -0.0037512085075692412107 + p * w;
+            p = 0.005370914553590063617 + p * w;
+            p = 1.0052589676941592334 + p * w;
+            p = 3.0838856104922207635 + p * w;
+        } else {
+            w = sqrt(w) - 5.000000;
+            p = -2.7109920616438573243e-11;
+            p = -2.5556418169965252055e-10 + p * w;
+            p = 1.5076572693500548083e-09 + p * w;
+            p = -3.7894654401267369937e-09 + p * w;
+            p = 7.6157012080783393804e-09 + p * w;
+            p = -1.4960026627149240478e-08 + p * w;
+            p = 2.9147953450901080826e-08 + p * w;
+            p = -6.7711997758452339498e-08 + p * w;
+            p = 2.2900482228026654717e-07 + p * w;
+            p = -9.9298272942317002539e-07 + p * w;
+            p = 4.5260625972231537039e-06 + p * w;
+            p = -1.9681778105531670567e-05 + p * w;
+            p = 7.5995277030017761139e-05 + p * w;
+            p = -0.00021503011930044477347 + p * w;
+            p = -0.00013871931833623122026 + p * w;
+            p = 1.0103004648645343977 + p * w;
+            p = 4.8499064014085844221 + p * w;
+        }
+        return p * x;
+    }
+
+    double standard_deviation(std::vector<double>::iterator first, std::vector<double>::iterator last) {
+        auto m = Catch::Benchmark::Detail::mean(first, last);
+        double variance = std::accumulate(first, last, 0., [m](double a, double b) {
+            double diff = b - m;
+            return a + diff * diff;
+            }) / (last - first);
+            return std::sqrt(variance);
+    }
+
+}
+
+namespace Catch {
+    namespace Benchmark {
+        namespace Detail {
+
+            double weighted_average_quantile(int k, int q, std::vector<double>::iterator first, std::vector<double>::iterator last) {
+                auto count = last - first;
+                double idx = (count - 1) * k / static_cast<double>(q);
+                int j = static_cast<int>(idx);
+                double g = idx - j;
+                std::nth_element(first, first + j, last);
+                auto xj = first[j];
+                if (g == 0) return xj;
+
+                auto xj1 = *std::min_element(first + (j + 1), last);
+                return xj + g * (xj1 - xj);
+            }
+
+            double erfc_inv(double x) {
+                return erf_inv(1.0 - x);
+            }
+
+            double normal_quantile(double p) {
+                static const double ROOT_TWO = std::sqrt(2.0);
+
+                double result = 0.0;
+                assert(p >= 0 && p <= 1);
+                if (p < 0 || p > 1) {
+                    return result;
+                }
+
+                result = -erfc_inv(2.0 * p);
+                // result *= normal distribution standard deviation (1.0) * sqrt(2)
+                result *= /*sd * */ ROOT_TWO;
+                // result += normal disttribution mean (0)
+                return result;
+            }
+
+            double outlier_variance(Estimate<double> mean, Estimate<double> stddev, int n) {
+                double sb = stddev.point;
+                double mn = mean.point / n;
+                double mg_min = mn / 2.;
+                double sg = std::min(mg_min / 4., sb / std::sqrt(n));
+                double sg2 = sg * sg;
+                double sb2 = sb * sb;
+
+                auto c_max = [n, mn, sb2, sg2](double x) -> double {
+                    double k = mn - x;
+                    double d = k * k;
+                    double nd = n * d;
+                    double k0 = -n * nd;
+                    double k1 = sb2 - n * sg2 + nd;
+                    double det = k1 * k1 - 4 * sg2 * k0;
+                    return (int)(-2. * k0 / (k1 + std::sqrt(det)));
+                };
+
+                auto var_out = [n, sb2, sg2](double c) {
+                    double nc = n - c;
+                    return (nc / n) * (sb2 - nc * sg2);
+                };
+
+                return std::min(var_out(1), var_out(std::min(c_max(0.), c_max(mg_min)))) / sb2;
+            }
+
+            bootstrap_analysis analyse_samples(double confidence_level, int n_resamples, std::vector<double>::iterator first, std::vector<double>::iterator last) {
+                CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
+                CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
+                static std::random_device entropy;
+                CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
+
+                auto n = static_cast<int>(last - first); // seriously, one can't use integral types without hell in C++
+
+                auto mean = &Detail::mean<std::vector<double>::iterator>;
+                auto stddev = &standard_deviation;
+
+#if defined(CATCH_CONFIG_USE_ASYNC)
+                auto Estimate = [=](double(*f)(std::vector<double>::iterator, std::vector<double>::iterator)) {
+                    auto seed = entropy();
+                    return std::async(std::launch::async, [=] {
+                        std::mt19937 rng(seed);
+                        auto resampled = resample(rng, n_resamples, first, last, f);
+                        return bootstrap(confidence_level, first, last, resampled, f);
+                    });
+                };
+
+                auto mean_future = Estimate(mean);
+                auto stddev_future = Estimate(stddev);
+
+                auto mean_estimate = mean_future.get();
+                auto stddev_estimate = stddev_future.get();
+#else
+                auto Estimate = [=](double(*f)(std::vector<double>::iterator, std::vector<double>::iterator)) {
+                    auto seed = entropy();
+                    std::mt19937 rng(seed);
+                    auto resampled = resample(rng, n_resamples, first, last, f);
+                    return bootstrap(confidence_level, first, last, resampled, f);
+                };
+
+                auto mean_estimate = Estimate(mean);
+                auto stddev_estimate = Estimate(stddev);
+#endif // CATCH_USE_ASYNC
+
+                double outlier_variance = Detail::outlier_variance(mean_estimate, stddev_estimate, n);
+
+                return { mean_estimate, stddev_estimate, outlier_variance };
+            }
+        } // namespace Detail
+    } // namespace Benchmark
+} // namespace Catch
+
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+// end catch_stats.cpp
 // start catch_approx.cpp
 
 #include <cmath>
@@ -6194,7 +7881,8 @@ namespace Detail {
     bool Approx::equalityComparisonImpl(const double other) const {
         // First try with fixed margin, then compute margin based on epsilon, scale and Approx's value
         // Thanks to Richard Harris for his help refining the scaled margin value
-        return marginComparison(m_value, other, m_margin) || marginComparison(m_value, other, m_epsilon * (m_scale + std::fabs(m_value)));
+        return marginComparison(m_value, other, m_margin)
+            || marginComparison(m_value, other, m_epsilon * (m_scale + std::fabs(std::isinf(m_value)? 0 : m_value)));
     }
 
     void Approx::setMargin(double newMargin) {
@@ -6238,7 +7926,24 @@ namespace Catch {
 
 #ifdef CATCH_PLATFORM_MAC
 
-    #define CATCH_TRAP() __asm__("int $3\n" : : ) /* NOLINT */
+    #if defined(__i386__) || defined(__x86_64__)
+        #define CATCH_TRAP() __asm__("int $3\n" : : ) /* NOLINT */
+    #elif defined(__aarch64__)
+        #define CATCH_TRAP()  __asm__(".inst 0xd4200000")
+    #endif
+
+#elif defined(CATCH_PLATFORM_IPHONE)
+
+    // use inline assembler
+    #if defined(__i386__) || defined(__x86_64__)
+        #define CATCH_TRAP()  __asm__("int $3")
+    #elif defined(__aarch64__)
+        #define CATCH_TRAP()  __asm__(".inst 0xd4200000")
+    #elif defined(__arm__) && !defined(__thumb__)
+        #define CATCH_TRAP()  __asm__(".inst 0xe7f001f0")
+    #elif defined(__arm__) &&  defined(__thumb__)
+        #define CATCH_TRAP()  __asm__(".inst 0xde01")
+    #endif
 
 #elif defined(CATCH_PLATFORM_LINUX)
     // If we can use inline assembler, do it because this allows us to break
@@ -6258,10 +7963,12 @@ namespace Catch {
     #define CATCH_TRAP() DebugBreak()
 #endif
 
-#ifdef CATCH_TRAP
-    #define CATCH_BREAK_INTO_DEBUGGER() []{ if( Catch::isDebuggerActive() ) { CATCH_TRAP(); } }()
-#else
-    #define CATCH_BREAK_INTO_DEBUGGER() []{}()
+#ifndef CATCH_BREAK_INTO_DEBUGGER
+    #ifdef CATCH_TRAP
+        #define CATCH_BREAK_INTO_DEBUGGER() []{ if( Catch::isDebuggerActive() ) { CATCH_TRAP(); } }()
+    #else
+        #define CATCH_BREAK_INTO_DEBUGGER() []{}()
+    #endif
 #endif
 
 // end catch_debugger.h
@@ -6408,10 +8115,14 @@ namespace Catch {
         void sectionEnded( SectionEndInfo const& endInfo ) override;
         void sectionEndedEarly( SectionEndInfo const& endInfo ) override;
 
-        auto acquireGeneratorTracker( SourceLineInfo const& lineInfo ) -> IGeneratorTracker& override;
+        auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker& override;
 
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+        void benchmarkPreparing( std::string const& name ) override;
         void benchmarkStarting( BenchmarkInfo const& info ) override;
-        void benchmarkEnded( BenchmarkStats const& stats ) override;
+        void benchmarkEnded( BenchmarkStats<> const& stats ) override;
+        void benchmarkFailed( std::string const& error ) override;
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
         void pushScopedMessage( MessageInfo const& message ) override;
         void popScopedMessage( MessageInfo const& message ) override;
@@ -6475,6 +8186,8 @@ namespace Catch {
         bool m_includeSuccessfulResults;
     };
 
+    void seedRng(IConfig const& config);
+    unsigned int rngSeed();
 } // end namespace Catch
 
 // end catch_run_context.h
@@ -6621,7 +8334,7 @@ namespace Catch {
     }
 
     bool AssertionResult::hasExpression() const {
-        return m_info.capturedExpression[0] != 0;
+        return !m_info.capturedExpression.empty();
     }
 
     bool AssertionResult::hasMessage() const {
@@ -6629,16 +8342,22 @@ namespace Catch {
     }
 
     std::string AssertionResult::getExpression() const {
-        if( isFalseTest( m_info.resultDisposition ) )
-            return "!(" + m_info.capturedExpression + ")";
-        else
-            return m_info.capturedExpression;
+        // Possibly overallocating by 3 characters should be basically free
+        std::string expr; expr.reserve(m_info.capturedExpression.size() + 3);
+        if (isFalseTest(m_info.resultDisposition)) {
+            expr += "!(";
+        }
+        expr += m_info.capturedExpression;
+        if (isFalseTest(m_info.resultDisposition)) {
+            expr += ')';
+        }
+        return expr;
     }
 
     std::string AssertionResult::getExpressionInMacro() const {
         std::string expr;
-        if( m_info.macroName[0] == 0 )
-            expr = m_info.capturedExpression;
+        if( m_info.macroName.empty() )
+            expr = static_cast<std::string>(m_info.capturedExpression);
         else {
             expr.reserve( m_info.macroName.size() + m_info.capturedExpression.size() + 4 );
             expr += m_info.macroName;
@@ -6673,32 +8392,6 @@ namespace Catch {
 
 } // end namespace Catch
 // end catch_assertionresult.cpp
-// start catch_benchmark.cpp
-
-namespace Catch {
-
-    auto BenchmarkLooper::getResolution() -> uint64_t {
-        return getEstimatedClockResolution() * getCurrentContext().getConfig()->benchmarkResolutionMultiple();
-    }
-
-    void BenchmarkLooper::reportStart() {
-        getResultCapture().benchmarkStarting( { m_name } );
-    }
-    auto BenchmarkLooper::needsMoreIterations() -> bool {
-        auto elapsed = m_timer.getElapsedNanoseconds();
-
-        // Exponentially increasing iterations until we're confident in our timer resolution
-        if( elapsed < m_resolution ) {
-            m_iterationsToRun *= 10;
-            return true;
-        }
-
-        getResultCapture().benchmarkEnded( { { m_name }, m_count, elapsed } );
-        return false;
-    }
-
-} // end namespace Catch
-// end catch_benchmark.cpp
 // start catch_capture_matchers.cpp
 
 namespace Catch {
@@ -7398,7 +9091,7 @@ namespace detail {
     }
     inline auto convertInto( std::string const &source, bool &target ) -> ParserResult {
         std::string srcLC = source;
-        std::transform( srcLC.begin(), srcLC.end(), srcLC.begin(), []( char c ) { return static_cast<char>( std::tolower(c) ); } );
+        std::transform( srcLC.begin(), srcLC.end(), srcLC.begin(), []( unsigned char c ) { return static_cast<char>( std::tolower(c) ); } );
         if (srcLC == "y" || srcLC == "1" || srcLC == "true" || srcLC == "yes" || srcLC == "on")
             target = true;
         else if (srcLC == "n" || srcLC == "0" || srcLC == "false" || srcLC == "no" || srcLC == "off")
@@ -8046,9 +9739,14 @@ namespace Catch {
                     if( !line.empty() && !startsWith( line, '#' ) ) {
                         if( !startsWith( line, '"' ) )
                             line = '"' + line + '"';
-                        config.testsOrTags.push_back( line + ',' );
+                        config.testsOrTags.push_back( line );
+                        config.testsOrTags.emplace_back( "," );
                     }
                 }
+                //Remove comma in the end
+                if(!config.testsOrTags.empty())
+                    config.testsOrTags.erase( config.testsOrTags.end()-1 );
+
                 return ParserResult::ok( ParseResultType::Matched );
             };
         auto const setTestOrder = [&]( std::string const& order ) {
@@ -8083,14 +9781,16 @@ namespace Catch {
             };
         auto const setWaitForKeypress = [&]( std::string const& keypress ) {
                 auto keypressLc = toLower( keypress );
-                if( keypressLc == "start" )
+                if (keypressLc == "never")
+                    config.waitForKeypress = WaitForKeypress::Never;
+                else if( keypressLc == "start" )
                     config.waitForKeypress = WaitForKeypress::BeforeStart;
                 else if( keypressLc == "exit" )
                     config.waitForKeypress = WaitForKeypress::BeforeExit;
                 else if( keypressLc == "both" )
                     config.waitForKeypress = WaitForKeypress::BeforeStartAndExit;
                 else
-                    return ParserResult::runtimeError( "keypress argument must be one of: start, exit or both. '" + keypress + "' not recognised" );
+                    return ParserResult::runtimeError( "keypress argument must be one of: never, start, exit or both. '" + keypress + "' not recognised" );
             return ParserResult::ok( ParseResultType::Matched );
             };
         auto const setVerbosity = [&]( std::string const& verbosity ) {
@@ -8160,6 +9860,9 @@ namespace Catch {
             | Opt( [&]( bool flag ) { config.showDurations = flag ? ShowDurations::Always : ShowDurations::Never; }, "yes|no" )
                 ["-d"]["--durations"]
                 ( "show test durations" )
+            | Opt( config.minDuration, "seconds" )
+                ["-D"]["--min-duration"]
+                ( "show test durations for tests taking at least the given number of seconds" )
             | Opt( loadTestNamesFromFile, "filename" )
                 ["-f"]["--input-file"]
                 ( "load test names to run from a file" )
@@ -8190,13 +9893,24 @@ namespace Catch {
             | Opt( config.libIdentify )
                 ["--libidentify"]
                 ( "report name and version according to libidentify standard" )
-            | Opt( setWaitForKeypress, "start|exit|both" )
+            | Opt( setWaitForKeypress, "never|start|exit|both" )
                 ["--wait-for-keypress"]
                 ( "waits for a keypress before exiting" )
-            | Opt( config.benchmarkResolutionMultiple, "multiplier" )
-                ["--benchmark-resolution-multiple"]
-                ( "multiple of clock resolution to run benchmarks" )
-
+            | Opt( config.benchmarkSamples, "samples" )
+                ["--benchmark-samples"]
+                ( "number of samples to collect (default: 100)" )
+            | Opt( config.benchmarkResamples, "resamples" )
+                ["--benchmark-resamples"]
+                ( "number of resamples for the bootstrap (default: 100000)" )
+            | Opt( config.benchmarkConfidenceInterval, "confidence interval" )
+                ["--benchmark-confidence-interval"]
+                ( "confidence interval for the bootstrap (between 0 and 1, default: 0.95)" )
+            | Opt( config.benchmarkNoAnalysis )
+                ["--benchmark-no-analysis"]
+                ( "perform only measurements; do not perform any analysis" )
+            | Opt( config.benchmarkWarmupTime, "benchmarkWarmupTime" )
+                ["--benchmark-warmup-time"]
+                ( "amount of time in milliseconds spent on warming up each test (default: 100)" )
             | Arg( config.testsOrTags, "test name|pattern|tags" )
                 ( "which test or tests to use" );
 
@@ -8212,9 +9926,6 @@ namespace Catch {
 
 namespace Catch {
 
-    bool SourceLineInfo::empty() const noexcept {
-        return file[0] == '\0';
-    }
     bool SourceLineInfo::operator == ( SourceLineInfo const& other ) const noexcept {
         return line == other.line && (file == other.file || std::strcmp(file, other.file) == 0);
     }
@@ -8250,11 +9961,23 @@ namespace Catch {
     :   m_data( data ),
         m_stream( openStream() )
     {
+        // We need to trim filter specs to avoid trouble with superfluous
+        // whitespace (esp. important for bdd macros, as those are manually
+        // aligned with whitespace).
+
+        for (auto& elem : m_data.testsOrTags) {
+            elem = trim(elem);
+        }
+        for (auto& elem : m_data.sectionsToRun) {
+            elem = trim(elem);
+        }
+
         TestSpecParser parser(ITagAliasRegistry::get());
-        if (!data.testsOrTags.empty()) {
+        if (!m_data.testsOrTags.empty()) {
             m_hasTestFilters = true;
-            for( auto const& testOrTags : data.testsOrTags )
-                parser.parse( testOrTags );
+            for (auto const& testOrTags : m_data.testsOrTags) {
+                parser.parse(testOrTags);
+            }
         }
         m_testSpec = parser.testSpec();
     }
@@ -8287,15 +10010,21 @@ namespace Catch {
     bool Config::warnAboutMissingAssertions() const    { return !!(m_data.warnings & WarnAbout::NoAssertions); }
     bool Config::warnAboutNoTests() const              { return !!(m_data.warnings & WarnAbout::NoTests); }
     ShowDurations::OrNot Config::showDurations() const { return m_data.showDurations; }
+    double Config::minDuration() const                 { return m_data.minDuration; }
     RunTests::InWhatOrder Config::runOrder() const     { return m_data.runOrder; }
     unsigned int Config::rngSeed() const               { return m_data.rngSeed; }
-    int Config::benchmarkResolutionMultiple() const    { return m_data.benchmarkResolutionMultiple; }
     UseColour::YesOrNo Config::useColour() const       { return m_data.useColour; }
     bool Config::shouldDebugBreak() const              { return m_data.shouldDebugBreak; }
     int Config::abortAfter() const                     { return m_data.abortAfter; }
     bool Config::showInvisibles() const                { return m_data.showInvisibles; }
     Verbosity Config::verbosity() const                { return m_data.verbosity; }
 
+    bool Config::benchmarkNoAnalysis() const                      { return m_data.benchmarkNoAnalysis; }
+    int Config::benchmarkSamples() const                          { return m_data.benchmarkSamples; }
+    double Config::benchmarkConfidenceInterval() const            { return m_data.benchmarkConfidenceInterval; }
+    unsigned int Config::benchmarkResamples() const               { return m_data.benchmarkResamples; }
+    std::chrono::milliseconds Config::benchmarkWarmupTime() const { return std::chrono::milliseconds(m_data.benchmarkWarmupTime); }
+
     IStream const* Config::openStream() {
         return Catch::makeStream(m_data.outputFilename);
     }
@@ -8335,7 +10064,7 @@ namespace Catch {
         };
 
         struct NoColourImpl : IColourImpl {
-            void use( Colour::Code ) {}
+            void use( Colour::Code ) override {}
 
             static IColourImpl* instance() {
                 static NoColourImpl s_instance;
@@ -8467,7 +10196,7 @@ namespace {
 
     bool useColourOnPlatform() {
         return
-#ifdef CATCH_PLATFORM_MAC
+#if defined(CATCH_PLATFORM_MAC) || defined(CATCH_PLATFORM_IPHONE)
             !isDebuggerActive() &&
 #endif
 #if !(defined(__DJGPP__) && defined(__STRICT_ANSI__))
@@ -8508,13 +10237,13 @@ namespace Catch {
 namespace Catch {
 
     Colour::Colour( Code _colourCode ) { use( _colourCode ); }
-    Colour::Colour( Colour&& rhs ) noexcept {
-        m_moved = rhs.m_moved;
-        rhs.m_moved = true;
+    Colour::Colour( Colour&& other ) noexcept {
+        m_moved = other.m_moved;
+        other.m_moved = true;
     }
-    Colour& Colour::operator=( Colour&& rhs ) noexcept {
-        m_moved = rhs.m_moved;
-        rhs.m_moved  = true;
+    Colour& Colour::operator=( Colour&& other ) noexcept {
+        m_moved = other.m_moved;
+        other.m_moved  = true;
         return *this;
     }
 
@@ -8522,7 +10251,13 @@ namespace Catch {
 
     void Colour::use( Code _colourCode ) {
         static IColourImpl* impl = platformColourInstance();
-        impl->use( _colourCode );
+        // Strictly speaking, this cannot possibly happen.
+        // However, under some conditions it does happen (see #1626),
+        // and this change is small enough that we can let practicality
+        // triumph over purity in this case.
+        if (impl != nullptr) {
+            impl->use( _colourCode );
+        }
     }
 
     std::ostream& operator << ( std::ostream& os, Colour const& ) {
@@ -8589,6 +10324,12 @@ namespace Catch {
     IContext::~IContext() = default;
     IMutableContext::~IMutableContext() = default;
     Context::~Context() = default;
+
+    SimplePcg32& rng() {
+        static SimplePcg32 s_rng;
+        return s_rng;
+    }
+
 }
 // end catch_context.cpp
 // start catch_debug_console.cpp
@@ -8602,7 +10343,16 @@ namespace Catch {
 }
 
 // end catch_debug_console.h
-#ifdef CATCH_PLATFORM_WINDOWS
+#if defined(CATCH_CONFIG_ANDROID_LOGWRITE)
+#include <android/log.h>
+
+    namespace Catch {
+        void writeToDebugConsole( std::string const& text ) {
+            __android_log_write( ANDROID_LOG_DEBUG, "Catch", text.c_str() );
+        }
+    }
+
+#elif defined(CATCH_PLATFORM_WINDOWS)
 
     namespace Catch {
         void writeToDebugConsole( std::string const& text ) {
@@ -8623,10 +10373,9 @@ namespace Catch {
 // end catch_debug_console.cpp
 // start catch_debugger.cpp
 
-#ifdef CATCH_PLATFORM_MAC
+#if defined(CATCH_PLATFORM_MAC) || defined(CATCH_PLATFORM_IPHONE)
 
-#  include <assert.h>
-#  include <stdbool.h>
+#  include <cassert>
 #  include <sys/types.h>
 #  include <unistd.h>
 #  include <cstddef>
@@ -8751,6 +10500,8 @@ namespace Catch {
 // end catch_decomposer.cpp
 // start catch_enforce.cpp
 
+#include <stdexcept>
+
 namespace Catch {
 #if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) && !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS_CUSTOM_HANDLER)
     [[noreturn]]
@@ -8760,6 +10511,22 @@ namespace Catch {
         std::terminate();
     }
 #endif
+
+    [[noreturn]]
+    void throw_logic_error(std::string const& msg) {
+        throw_exception(std::logic_error(msg));
+    }
+
+    [[noreturn]]
+    void throw_domain_error(std::string const& msg) {
+        throw_exception(std::domain_error(msg));
+    }
+
+    [[noreturn]]
+    void throw_runtime_error(std::string const& msg) {
+        throw_exception(std::runtime_error(msg));
+    }
+
 } // namespace Catch;
 // end catch_enforce.cpp
 // start catch_enum_values_registry.cpp
@@ -8781,7 +10548,7 @@ namespace Catch {
             EnumInfo const& registerEnum( StringRef enumName, StringRef allEnums, std::vector<int> const& values) override;
         };
 
-        std::vector<std::string> parseEnums( StringRef enums );
+        std::vector<StringRef> parseEnums( StringRef enums );
 
     } // Detail
 
@@ -8798,13 +10565,25 @@ namespace Catch {
 
     namespace Detail {
 
-        std::vector<std::string> parseEnums( StringRef enums ) {
+        namespace {
+            // Extracts the actual name part of an enum instance
+            // In other words, it returns the Blue part of Bikeshed::Colour::Blue
+            StringRef extractInstanceName(StringRef enumInstance) {
+                // Find last occurence of ":"
+                size_t name_start = enumInstance.size();
+                while (name_start > 0 && enumInstance[name_start - 1] != ':') {
+                    --name_start;
+                }
+                return enumInstance.substr(name_start, enumInstance.size() - name_start);
+            }
+        }
+
+        std::vector<StringRef> parseEnums( StringRef enums ) {
             auto enumValues = splitStringRef( enums, ',' );
-            std::vector<std::string> parsed;
+            std::vector<StringRef> parsed;
             parsed.reserve( enumValues.size() );
             for( auto const& enumValue : enumValues ) {
-                auto identifiers = splitStringRef( enumValue, ':' );
-                parsed.push_back( Catch::trim( identifiers.back() ) );
+                parsed.push_back(trim(extractInstanceName(enumValue)));
             }
             return parsed;
         }
@@ -8816,7 +10595,7 @@ namespace Catch {
                 if( valueToName.first == value )
                     return valueToName.second;
             }
-            return "{** unexpected enum value **}";
+            return "{** unexpected enum value **}"_sr;
         }
 
         std::unique_ptr<EnumInfo> makeEnumInfo( StringRef enumName, StringRef allValueNames, std::vector<int> const& values ) {
@@ -8828,16 +10607,14 @@ namespace Catch {
             assert( valueNames.size() == values.size() );
             std::size_t i = 0;
             for( auto value : values )
-                enumInfo->m_values.push_back({ value, valueNames[i++] });
+                enumInfo->m_values.emplace_back(value, valueNames[i++]);
 
             return enumInfo;
         }
 
         EnumInfo const& EnumValuesRegistry::registerEnum( StringRef enumName, StringRef allValueNames, std::vector<int> const& values ) {
-            auto enumInfo = makeEnumInfo( enumName, allValueNames, values );
-            EnumInfo* raw = enumInfo.get();
-            m_enumInfos.push_back( std::move( enumInfo ) );
-            return *raw;
+            m_enumInfos.push_back(makeEnumInfo(enumName, allValueNames, values));
+            return *m_enumInfos.back();
         }
 
     } // Detail
@@ -9038,7 +10815,7 @@ namespace Catch {
 
     // 32kb for the alternate stack seems to be sufficient. However, this value
     // is experimentally determined, so that's not guaranteed.
-    constexpr static std::size_t sigStackSize = 32768 >= MINSIGSTKSZ ? 32768 : MINSIGSTKSZ;
+    static constexpr std::size_t sigStackSize = 32768 >= MINSIGSTKSZ ? 32768 : MINSIGSTKSZ;
 
     static SignalDefs signalDefs[] = {
         { SIGINT,  "SIGINT - Terminal interrupt signal" },
@@ -9115,22 +10892,6 @@ namespace Catch {
 // end catch_fatal_condition.cpp
 // start catch_generators.cpp
 
-// start catch_random_number_generator.h
-
-#include <algorithm>
-#include <random>
-
-namespace Catch {
-
-    struct IConfig;
-
-    std::mt19937& rng();
-    void seedRng( IConfig const& config );
-    unsigned int rngSeed();
-
-}
-
-// end catch_random_number_generator.h
 #include <limits>
 #include <set>
 
@@ -9146,8 +10907,8 @@ namespace Generators {
 
     GeneratorUntypedBase::~GeneratorUntypedBase() {}
 
-    auto acquireGeneratorTracker( SourceLineInfo const& lineInfo ) -> IGeneratorTracker& {
-        return getResultCapture().acquireGeneratorTracker( lineInfo );
+    auto acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker& {
+        return getResultCapture().acquireGeneratorTracker( generatorName, lineInfo );
     }
 
 } // namespace Generators
@@ -9203,10 +10964,16 @@ namespace Catch {
 
         void noMatchingTestCases( std::string const& spec ) override;
 
+        void reportInvalidArguments(std::string const&arg) override;
+
         static std::set<Verbosity> getSupportedVerbosities();
 
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+        void benchmarkPreparing(std::string const& name) override;
         void benchmarkStarting( BenchmarkInfo const& benchmarkInfo ) override;
-        void benchmarkEnded( BenchmarkStats const& benchmarkStats ) override;
+        void benchmarkEnded( BenchmarkStats<> const& benchmarkStats ) override;
+        void benchmarkFailed(std::string const&) override;
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
         void testRunStarting( TestRunInfo const& testRunInfo ) override;
         void testGroupStarting( GroupInfo const& groupInfo ) override;
@@ -9416,7 +11183,7 @@ namespace Catch {
 namespace Catch {
 
     std::size_t listTests( Config const& config ) {
-        TestSpec testSpec = config.testSpec();
+        TestSpec const& testSpec = config.testSpec();
         if( config.hasTestFilters() )
             Catch::cout() << "Matching test cases:\n";
         else {
@@ -9450,7 +11217,7 @@ namespace Catch {
     }
 
     std::size_t listTestsNamesOnly( Config const& config ) {
-        TestSpec testSpec = config.testSpec();
+        TestSpec const& testSpec = config.testSpec();
         std::size_t matchedTests = 0;
         std::vector<TestCase> matchedTestCases = filterTests( getAllTestCasesSorted( config ), testSpec, config );
         for( auto const& testCaseInfo : matchedTestCases ) {
@@ -9472,14 +11239,23 @@ namespace Catch {
     }
 
     std::string TagInfo::all() const {
-        std::string out;
-        for( auto const& spelling : spellings )
-            out += "[" + spelling + "]";
+        size_t size = 0;
+        for (auto const& spelling : spellings) {
+            // Add 2 for the brackes
+            size += spelling.size() + 2;
+        }
+
+        std::string out; out.reserve(size);
+        for (auto const& spelling : spellings) {
+            out += '[';
+            out += spelling;
+            out += ']';
+        }
         return out;
     }
 
     std::size_t listTags( Config const& config ) {
-        TestSpec testSpec = config.testSpec();
+        TestSpec const& testSpec = config.testSpec();
         if( config.hasTestFilters() )
             Catch::cout() << "Tags for matching test cases:\n";
         else {
@@ -9573,6 +11349,29 @@ using Matchers::Impl::MatcherBase;
 
 } // namespace Catch
 // end catch_matchers.cpp
+// start catch_matchers_exception.cpp
+
+namespace Catch {
+namespace Matchers {
+namespace Exception {
+
+bool ExceptionMessageMatcher::match(std::exception const& ex) const {
+    return ex.what() == m_message;
+}
+
+std::string ExceptionMessageMatcher::describe() const {
+    return "exception message matches \"" + m_message + "\"";
+}
+
+}
+Exception::ExceptionMessageMatcher Message(std::string const& message) {
+    return Exception::ExceptionMessageMatcher(message);
+}
+
+// namespace Exception
+} // namespace Matchers
+} // namespace Catch
+// end catch_matchers_exception.cpp
 // start catch_matchers_floating.cpp
 
 // start catch_polyfills.hpp
@@ -9601,74 +11400,100 @@ namespace Catch {
 } // end namespace Catch
 
 // end catch_to_string.hpp
+#include <algorithm>
+#include <cmath>
 #include <cstdlib>
 #include <cstdint>
 #include <cstring>
+#include <sstream>
+#include <type_traits>
+#include <iomanip>
+#include <limits>
 
 namespace Catch {
-namespace Matchers {
-namespace Floating {
-enum class FloatingPointKind : uint8_t {
-    Float,
-    Double
-};
-}
-}
-}
-
 namespace {
 
-template <typename T>
-struct Converter;
-
-template <>
-struct Converter<float> {
-    static_assert(sizeof(float) == sizeof(int32_t), "Important ULP matcher assumption violated");
-    Converter(float f) {
+    int32_t convert(float f) {
+        static_assert(sizeof(float) == sizeof(int32_t), "Important ULP matcher assumption violated");
+        int32_t i;
         std::memcpy(&i, &f, sizeof(f));
+        return i;
     }
-    int32_t i;
-};
 
-template <>
-struct Converter<double> {
-    static_assert(sizeof(double) == sizeof(int64_t), "Important ULP matcher assumption violated");
-    Converter(double d) {
+    int64_t convert(double d) {
+        static_assert(sizeof(double) == sizeof(int64_t), "Important ULP matcher assumption violated");
+        int64_t i;
         std::memcpy(&i, &d, sizeof(d));
+        return i;
     }
-    int64_t i;
-};
 
-template <typename T>
-auto convert(T t) -> Converter<T> {
-    return Converter<T>(t);
-}
+    template <typename FP>
+    bool almostEqualUlps(FP lhs, FP rhs, uint64_t maxUlpDiff) {
+        // Comparison with NaN should always be false.
+        // This way we can rule it out before getting into the ugly details
+        if (Catch::isnan(lhs) || Catch::isnan(rhs)) {
+            return false;
+        }
 
-template <typename FP>
-bool almostEqualUlps(FP lhs, FP rhs, int maxUlpDiff) {
-    // Comparison with NaN should always be false.
-    // This way we can rule it out before getting into the ugly details
-    if (Catch::isnan(lhs) || Catch::isnan(rhs)) {
-        return false;
+        auto lc = convert(lhs);
+        auto rc = convert(rhs);
+
+        if ((lc < 0) != (rc < 0)) {
+            // Potentially we can have +0 and -0
+            return lhs == rhs;
+        }
+
+        auto ulpDiff = std::abs(lc - rc);
+        return static_cast<uint64_t>(ulpDiff) <= maxUlpDiff;
+    }
+
+#if defined(CATCH_CONFIG_GLOBAL_NEXTAFTER)
+
+    float nextafter(float x, float y) {
+        return ::nextafterf(x, y);
+    }
+
+    double nextafter(double x, double y) {
+        return ::nextafter(x, y);
     }
 
-    auto lc = convert(lhs);
-    auto rc = convert(rhs);
+#endif // ^^^ CATCH_CONFIG_GLOBAL_NEXTAFTER ^^^
 
-    if ((lc.i < 0) != (rc.i < 0)) {
-        // Potentially we can have +0 and -0
-        return lhs == rhs;
+template <typename FP>
+FP step(FP start, FP direction, uint64_t steps) {
+    for (uint64_t i = 0; i < steps; ++i) {
+#if defined(CATCH_CONFIG_GLOBAL_NEXTAFTER)
+        start = Catch::nextafter(start, direction);
+#else
+        start = std::nextafter(start, direction);
+#endif
     }
+    return start;
+}
 
-    auto ulpDiff = std::abs(lc.i - rc.i);
-    return ulpDiff <= maxUlpDiff;
+// Performs equivalent check of std::fabs(lhs - rhs) <= margin
+// But without the subtraction to allow for INFINITY in comparison
+bool marginComparison(double lhs, double rhs, double margin) {
+    return (lhs + margin >= rhs) && (rhs + margin >= lhs);
 }
 
+template <typename FloatingPoint>
+void write(std::ostream& out, FloatingPoint num) {
+    out << std::scientific
+        << std::setprecision(std::numeric_limits<FloatingPoint>::max_digits10 - 1)
+        << num;
 }
 
-namespace Catch {
+} // end anonymous namespace
+
 namespace Matchers {
 namespace Floating {
+
+    enum class FloatingPointKind : uint8_t {
+        Float,
+        Double
+    };
+
     WithinAbsMatcher::WithinAbsMatcher(double target, double margin)
         :m_target{ target }, m_margin{ margin } {
         CATCH_ENFORCE(margin >= 0, "Invalid margin: " << margin << '.'
@@ -9685,10 +11510,11 @@ namespace Floating {
         return "is within " + ::Catch::Detail::stringify(m_margin) + " of " + ::Catch::Detail::stringify(m_target);
     }
 
-    WithinUlpsMatcher::WithinUlpsMatcher(double target, int ulps, FloatingPointKind baseType)
+    WithinUlpsMatcher::WithinUlpsMatcher(double target, uint64_t ulps, FloatingPointKind baseType)
         :m_target{ target }, m_ulps{ ulps }, m_type{ baseType } {
-        CATCH_ENFORCE(ulps >= 0, "Invalid ULP setting: " << ulps << '.'
-            << " ULPs have to be non-negative.");
+        CATCH_ENFORCE(m_type == FloatingPointKind::Double
+                   || m_ulps < (std::numeric_limits<uint32_t>::max)(),
+            "Provided ULP is impossibly large for a float comparison.");
     }
 
 #if defined(__clang__)
@@ -9713,16 +11539,59 @@ namespace Floating {
 #endif
 
     std::string WithinUlpsMatcher::describe() const {
-        return "is within " + Catch::to_string(m_ulps) + " ULPs of " + ::Catch::Detail::stringify(m_target) + ((m_type == FloatingPointKind::Float)? "f" : "");
+        std::stringstream ret;
+
+        ret << "is within " << m_ulps << " ULPs of ";
+
+        if (m_type == FloatingPointKind::Float) {
+            write(ret, static_cast<float>(m_target));
+            ret << 'f';
+        } else {
+            write(ret, m_target);
+        }
+
+        ret << " ([";
+        if (m_type == FloatingPointKind::Double) {
+            write(ret, step(m_target, static_cast<double>(-INFINITY), m_ulps));
+            ret << ", ";
+            write(ret, step(m_target, static_cast<double>( INFINITY), m_ulps));
+        } else {
+            // We have to cast INFINITY to float because of MinGW, see #1782
+            write(ret, step(static_cast<float>(m_target), static_cast<float>(-INFINITY), m_ulps));
+            ret << ", ";
+            write(ret, step(static_cast<float>(m_target), static_cast<float>( INFINITY), m_ulps));
+        }
+        ret << "])";
+
+        return ret.str();
+    }
+
+    WithinRelMatcher::WithinRelMatcher(double target, double epsilon):
+        m_target(target),
+        m_epsilon(epsilon){
+        CATCH_ENFORCE(m_epsilon >= 0., "Relative comparison with epsilon <  0 does not make sense.");
+        CATCH_ENFORCE(m_epsilon  < 1., "Relative comparison with epsilon >= 1 does not make sense.");
+    }
+
+    bool WithinRelMatcher::match(double const& matchee) const {
+        const auto relMargin = m_epsilon * (std::max)(std::fabs(matchee), std::fabs(m_target));
+        return marginComparison(matchee, m_target,
+                                std::isinf(relMargin)? 0 : relMargin);
+    }
+
+    std::string WithinRelMatcher::describe() const {
+        Catch::ReusableStringStream sstr;
+        sstr << "and " << m_target << " are within " << m_epsilon * 100. << "% of each other";
+        return sstr.str();
     }
 
 }// namespace Floating
 
-Floating::WithinUlpsMatcher WithinULP(double target, int maxUlpDiff) {
+Floating::WithinUlpsMatcher WithinULP(double target, uint64_t maxUlpDiff) {
     return Floating::WithinUlpsMatcher(target, maxUlpDiff, Floating::FloatingPointKind::Double);
 }
 
-Floating::WithinUlpsMatcher WithinULP(float target, int maxUlpDiff) {
+Floating::WithinUlpsMatcher WithinULP(float target, uint64_t maxUlpDiff) {
     return Floating::WithinUlpsMatcher(target, maxUlpDiff, Floating::FloatingPointKind::Float);
 }
 
@@ -9730,6 +11599,22 @@ Floating::WithinAbsMatcher WithinAbs(double target, double margin) {
     return Floating::WithinAbsMatcher(target, margin);
 }
 
+Floating::WithinRelMatcher WithinRel(double target, double eps) {
+    return Floating::WithinRelMatcher(target, eps);
+}
+
+Floating::WithinRelMatcher WithinRel(double target) {
+    return Floating::WithinRelMatcher(target, std::numeric_limits<double>::epsilon() * 100);
+}
+
+Floating::WithinRelMatcher WithinRel(float target, float eps) {
+    return Floating::WithinRelMatcher(target, eps);
+}
+
+Floating::WithinRelMatcher WithinRel(float target) {
+    return Floating::WithinRelMatcher(target, std::numeric_limits<float>::epsilon() * 100);
+}
+
 } // namespace Matchers
 } // namespace Catch
 
@@ -9910,10 +11795,10 @@ namespace Catch {
 
     Capturer::Capturer( StringRef macroName, SourceLineInfo const& lineInfo, ResultWas::OfType resultType, StringRef names ) {
         auto trimmed = [&] (size_t start, size_t end) {
-            while (names[start] == ',' || isspace(names[start])) {
+            while (names[start] == ',' || isspace(static_cast<unsigned char>(names[start]))) {
                 ++start;
             }
-            while (names[end] == ',' || isspace(names[end])) {
+            while (names[end] == ',' || isspace(static_cast<unsigned char>(names[end]))) {
                 --end;
             }
             return names.substr(start, end - start + 1);
@@ -9952,17 +11837,17 @@ namespace Catch {
                 pos = skipq(pos, c);
                 break;
             case ',':
-                if (start != pos && openings.size() == 0) {
+                if (start != pos && openings.empty()) {
                     m_messages.emplace_back(macroName, lineInfo, resultType);
-                    m_messages.back().message = trimmed(start, pos);
+                    m_messages.back().message = static_cast<std::string>(trimmed(start, pos));
                     m_messages.back().message += " := ";
                     start = pos;
                 }
             }
         }
-        assert(openings.size() == 0 && "Mismatched openings");
+        assert(openings.empty() && "Mismatched openings");
         m_messages.emplace_back(macroName, lineInfo, resultType);
-        m_messages.back().message = trimmed(start, names.size() - 1);
+        m_messages.back().message = static_cast<std::string>(trimmed(start, names.size() - 1));
         m_messages.back().message += " := ";
     }
     Capturer::~Capturer() {
@@ -10148,7 +12033,7 @@ namespace Catch {
         if (tmpnam_s(m_buffer)) {
             CATCH_RUNTIME_ERROR("Could not get a temp filename");
         }
-        if (fopen_s(&m_file, m_buffer, "w")) {
+        if (fopen_s(&m_file, m_buffer, "w+")) {
             char buffer[100];
             if (strerror_s(buffer, errno)) {
                 CATCH_RUNTIME_ERROR("Could not translate errno to a string");
@@ -10256,20 +12141,61 @@ namespace Catch {
 
 namespace Catch {
 
-    std::mt19937& rng() {
-        static std::mt19937 s_rng;
-        return s_rng;
+namespace {
+
+#if defined(_MSC_VER)
+#pragma warning(push)
+#pragma warning(disable:4146) // we negate uint32 during the rotate
+#endif
+        // Safe rotr implementation thanks to John Regehr
+        uint32_t rotate_right(uint32_t val, uint32_t count) {
+            const uint32_t mask = 31;
+            count &= mask;
+            return (val >> count) | (val << (-count & mask));
+        }
+
+#if defined(_MSC_VER)
+#pragma warning(pop)
+#endif
+
+}
+
+    SimplePcg32::SimplePcg32(result_type seed_) {
+        seed(seed_);
+    }
+
+    void SimplePcg32::seed(result_type seed_) {
+        m_state = 0;
+        (*this)();
+        m_state += seed_;
+        (*this)();
     }
 
-    void seedRng( IConfig const& config ) {
-        if( config.rngSeed() != 0 ) {
-            std::srand( config.rngSeed() );
-            rng().seed( config.rngSeed() );
+    void SimplePcg32::discard(uint64_t skip) {
+        // We could implement this to run in O(log n) steps, but this
+        // should suffice for our use case.
+        for (uint64_t s = 0; s < skip; ++s) {
+            static_cast<void>((*this)());
         }
     }
 
-    unsigned int rngSeed() {
-        return getCurrentContext().getConfig()->rngSeed();
+    SimplePcg32::result_type SimplePcg32::operator()() {
+        // prepare the output value
+        const uint32_t xorshifted = static_cast<uint32_t>(((m_state >> 18u) ^ m_state) >> 27u);
+        const auto output = rotate_right(xorshifted, m_state >> 59u);
+
+        // advance state
+        m_state = m_state * 6364136223846793005ULL + s_inc;
+
+        return output;
+    }
+
+    bool operator==(SimplePcg32 const& lhs, SimplePcg32 const& rhs) {
+        return lhs.m_state == rhs.m_state;
+    }
+
+    bool operator!=(SimplePcg32 const& lhs, SimplePcg32 const& rhs) {
+        return lhs.m_state != rhs.m_state;
     }
 }
 // end catch_random_number_generator.cpp
@@ -10288,6 +12214,8 @@ namespace Catch {
     struct IConfig;
 
     std::vector<TestCase> sortTests( IConfig const& config, std::vector<TestCase> const& unsortedTestCases );
+
+    bool isThrowSafe( TestCase const& testCase, IConfig const& config );
     bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config );
 
     void enforceNoDuplicateTestCases( std::vector<TestCase> const& functions );
@@ -10400,11 +12328,13 @@ namespace Catch {
 namespace Catch {
 
     class StartupExceptionRegistry {
+#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
     public:
         void add(std::exception_ptr const& exception) noexcept;
         std::vector<std::exception_ptr> const& getExceptions() const noexcept;
     private:
         std::vector<std::exception_ptr> m_exceptions;
+#endif
     };
 
 } // end namespace Catch
@@ -10487,7 +12417,11 @@ namespace Catch {
                 m_tagAliasRegistry.add( alias, tag, lineInfo );
             }
             void registerStartupException() noexcept override {
+#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
                 m_exceptionRegistry.add(std::current_exception());
+#else
+                CATCH_INTERNAL_ERROR("Attempted to register active exception under CATCH_CONFIG_DISABLE_EXCEPTIONS!");
+#endif
             }
             IMutableEnumValuesRegistry& getMutableEnumValuesRegistry() override {
                 return m_enumValuesRegistry;
@@ -10591,17 +12525,32 @@ namespace Catch {
                 std::shared_ptr<GeneratorTracker> tracker;
 
                 ITracker& currentTracker = ctx.currentTracker();
-                if( TestCaseTracking::ITrackerPtr childTracker = currentTracker.findChild( nameAndLocation ) ) {
+                // Under specific circumstances, the generator we want
+                // to acquire is also the current tracker. If this is
+                // the case, we have to avoid looking through current
+                // tracker's children, and instead return the current
+                // tracker.
+                // A case where this check is important is e.g.
+                //     for (int i = 0; i < 5; ++i) {
+                //         int n = GENERATE(1, 2);
+                //     }
+                //
+                // without it, the code above creates 5 nested generators.
+                if (currentTracker.nameAndLocation() == nameAndLocation) {
+                    auto thisTracker = currentTracker.parent().findChild(nameAndLocation);
+                    assert(thisTracker);
+                    assert(thisTracker->isGeneratorTracker());
+                    tracker = std::static_pointer_cast<GeneratorTracker>(thisTracker);
+                } else if ( TestCaseTracking::ITrackerPtr childTracker = currentTracker.findChild( nameAndLocation ) ) {
                     assert( childTracker );
                     assert( childTracker->isGeneratorTracker() );
                     tracker = std::static_pointer_cast<GeneratorTracker>( childTracker );
-                }
-                else {
+                } else {
                     tracker = std::make_shared<GeneratorTracker>( nameAndLocation, ctx, &currentTracker );
                     currentTracker.addChild( tracker );
                 }
 
-                if( !ctx.completedCycle() && !tracker->isComplete() ) {
+                if( !tracker->isComplete() ) {
                     tracker->open();
                 }
 
@@ -10615,8 +12564,28 @@ namespace Catch {
             }
             void close() override {
                 TrackerBase::close();
-                // Generator interface only finds out if it has another item on atual move
-                if (m_runState == CompletedSuccessfully && m_generator->next()) {
+                // If a generator has a child (it is followed by a section)
+                // and none of its children have started, then we must wait
+                // until later to start consuming its values.
+                // This catches cases where `GENERATE` is placed between two
+                // `SECTION`s.
+                // **The check for m_children.empty cannot be removed**.
+                // doing so would break `GENERATE` _not_ followed by `SECTION`s.
+                const bool should_wait_for_child =
+                    !m_children.empty() &&
+                    std::find_if( m_children.begin(),
+                                  m_children.end(),
+                                  []( TestCaseTracking::ITrackerPtr tracker ) {
+                                      return tracker->hasStarted();
+                                  } ) == m_children.end();
+
+                // This check is a bit tricky, because m_generator->next()
+                // has a side-effect, where it consumes generator's current
+                // value, but we do not want to invoke the side-effect if
+                // this generator is still waiting for any child to start.
+                if ( should_wait_for_child ||
+                     ( m_runState == CompletedSuccessfully &&
+                       m_generator->next() ) ) {
                     m_children.clear();
                     m_runState = Executing;
                 }
@@ -10752,10 +12721,10 @@ namespace Catch {
 
         return true;
     }
-    auto RunContext::acquireGeneratorTracker( SourceLineInfo const& lineInfo ) -> IGeneratorTracker& {
+    auto RunContext::acquireGeneratorTracker( StringRef generatorName, SourceLineInfo const& lineInfo ) -> IGeneratorTracker& {
         using namespace Generators;
-        GeneratorTracker& tracker = GeneratorTracker::acquire( m_trackerContext, TestCaseTracking::NameAndLocation( "generator", lineInfo ) );
-        assert( tracker.isOpen() );
+        GeneratorTracker& tracker = GeneratorTracker::acquire(m_trackerContext,
+                                                              TestCaseTracking::NameAndLocation( static_cast<std::string>(generatorName), lineInfo ) );
         m_lastAssertionInfo.lineInfo = lineInfo;
         return tracker;
     }
@@ -10795,12 +12764,21 @@ namespace Catch {
 
         m_unfinishedSections.push_back(endInfo);
     }
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+    void RunContext::benchmarkPreparing(std::string const& name) {
+        m_reporter->benchmarkPreparing(name);
+    }
     void RunContext::benchmarkStarting( BenchmarkInfo const& info ) {
         m_reporter->benchmarkStarting( info );
     }
-    void RunContext::benchmarkEnded( BenchmarkStats const& stats ) {
+    void RunContext::benchmarkEnded( BenchmarkStats<> const& stats ) {
         m_reporter->benchmarkEnded( stats );
     }
+    void RunContext::benchmarkFailed(std::string const & error) {
+        m_reporter->benchmarkFailed(error);
+    }
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
     void RunContext::pushScopedMessage(MessageInfo const & message) {
         m_messages.push_back(message);
@@ -10835,7 +12813,7 @@ namespace Catch {
         // Don't rebuild the result -- the stringification itself can cause more fatal errors
         // Instead, fake a result data.
         AssertionResultData tempResult( ResultWas::FatalErrorCondition, { false } );
-        tempResult.message = message;
+        tempResult.message = static_cast<std::string>(message);
         AssertionResult result(m_lastAssertionInfo, tempResult);
 
         assertionEnded(result);
@@ -10998,7 +12976,7 @@ namespace Catch {
         m_lastAssertionInfo = info;
 
         AssertionResultData data( resultType, LazyExpression( false ) );
-        data.message = message;
+        data.message = static_cast<std::string>(message);
         AssertionResult assertionResult{ m_lastAssertionInfo, data };
         assertionEnded( assertionResult );
         if( !assertionResult.isOk() )
@@ -11061,6 +13039,18 @@ namespace Catch {
         else
             CATCH_INTERNAL_ERROR("No result capture instance");
     }
+
+    void seedRng(IConfig const& config) {
+        if (config.rngSeed() != 0) {
+            std::srand(config.rngSeed());
+            rng().seed(config.rngSeed());
+        }
+    }
+
+    unsigned int rngSeed() {
+        return getCurrentContext().getConfig()->rngSeed();
+    }
+
 }
 // end catch_run_context.cpp
 // start catch_section.cpp
@@ -11122,7 +13112,7 @@ namespace Catch {
         void libIdentify();
 
         int applyCommandLine( int argc, char const * const * argv );
-    #if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE)
+    #if defined(CATCH_CONFIG_WCHAR) && defined(_WIN32) && defined(UNICODE)
         int applyCommandLine( int argc, wchar_t const * const * argv );
     #endif
 
@@ -11189,6 +13179,8 @@ namespace Catch {
 // end catch_version.h
 #include <cstdlib>
 #include <iomanip>
+#include <set>
+#include <iterator>
 
 namespace Catch {
 
@@ -11222,45 +13214,61 @@ namespace Catch {
             return ret;
         }
 
-        Catch::Totals runTests(std::shared_ptr<Config> const& config) {
-            auto reporter = makeReporter(config);
-
-            RunContext context(config, std::move(reporter));
-
-            Totals totals;
-
-            context.testGroupStarting(config->name(), 1, 1);
-
-            TestSpec testSpec = config->testSpec();
-
-            auto const& allTestCases = getAllTestCasesSorted(*config);
-            for (auto const& testCase : allTestCases) {
-                bool matching = (!testSpec.hasFilters() && !testCase.isHidden()) ||
-                                 (testSpec.hasFilters() && matchTest(testCase, testSpec, *config));
-
-                if (!context.aborting() && matching)
-                    totals += context.runTest(testCase);
-                else
-                    context.reporter().skipTest(testCase);
+        class TestGroup {
+        public:
+            explicit TestGroup(std::shared_ptr<Config> const& config)
+            : m_config{config}
+            , m_context{config, makeReporter(config)}
+            {
+                auto const& allTestCases = getAllTestCasesSorted(*m_config);
+                m_matches = m_config->testSpec().matchesByFilter(allTestCases, *m_config);
+                auto const& invalidArgs = m_config->testSpec().getInvalidArgs();
+
+                if (m_matches.empty() && invalidArgs.empty()) {
+                    for (auto const& test : allTestCases)
+                        if (!test.isHidden())
+                            m_tests.emplace(&test);
+                } else {
+                    for (auto const& match : m_matches)
+                        m_tests.insert(match.tests.begin(), match.tests.end());
+                }
             }
 
-            if (config->warnAboutNoTests() && totals.testCases.total() == 0) {
-                ReusableStringStream testConfig;
+            Totals execute() {
+                auto const& invalidArgs = m_config->testSpec().getInvalidArgs();
+                Totals totals;
+                m_context.testGroupStarting(m_config->name(), 1, 1);
+                for (auto const& testCase : m_tests) {
+                    if (!m_context.aborting())
+                        totals += m_context.runTest(*testCase);
+                    else
+                        m_context.reporter().skipTest(*testCase);
+                }
 
-                bool first = true;
-                for (const auto& input : config->getTestsOrTags()) {
-                    if (!first) { testConfig << ' '; }
-                    first = false;
-                    testConfig << input;
+                for (auto const& match : m_matches) {
+                    if (match.tests.empty()) {
+                        m_context.reporter().noMatchingTestCases(match.name);
+                        totals.error = -1;
+                    }
+                }
+
+                if (!invalidArgs.empty()) {
+                    for (auto const& invalidArg: invalidArgs)
+                         m_context.reporter().reportInvalidArguments(invalidArg);
                 }
 
-                context.reporter().noMatchingTestCases(testConfig.str());
-                totals.error = -1;
+                m_context.testGroupEnded(m_config->name(), totals, 1, 1);
+                return totals;
             }
 
-            context.testGroupEnded(config->name(), totals, 1, 1);
-            return totals;
-        }
+        private:
+            using Tests = std::set<TestCase const*>;
+
+            std::shared_ptr<Config> m_config;
+            RunContext m_context;
+            Tests m_tests;
+            TestSpec::Matches m_matches;
+        };
 
         void applyFilenamesAsTags(Catch::IConfig const& config) {
             auto& tests = const_cast<std::vector<TestCase>&>(getAllTestCasesSorted(config));
@@ -11329,7 +13337,7 @@ namespace Catch {
     }
     void Session::libIdentify() {
         Catch::cout()
-                << std::left << std::setw(16) << "description: " << "A Catch test executable\n"
+                << std::left << std::setw(16) << "description: " << "A Catch2 test executable\n"
                 << std::left << std::setw(16) << "category: " << "testframework\n"
                 << std::left << std::setw(16) << "framework: " << "Catch Test\n"
                 << std::left << std::setw(16) << "version: " << libraryVersion() << std::endl;
@@ -11360,17 +13368,17 @@ namespace Catch {
         return 0;
     }
 
-#if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE)
+#if defined(CATCH_CONFIG_WCHAR) && defined(_WIN32) && defined(UNICODE)
     int Session::applyCommandLine( int argc, wchar_t const * const * argv ) {
 
         char **utf8Argv = new char *[ argc ];
 
         for ( int i = 0; i < argc; ++i ) {
-            int bufSize = WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, NULL, 0, NULL, NULL );
+            int bufSize = WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, nullptr, 0, nullptr, nullptr );
 
             utf8Argv[ i ] = new char[ bufSize ];
 
-            WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, utf8Argv[i], bufSize, NULL, NULL );
+            WideCharToMultiByte( CP_UTF8, 0, argv[i], -1, utf8Argv[i], bufSize, nullptr, nullptr );
         }
 
         int returnCode = applyCommandLine( argc, utf8Argv );
@@ -11437,7 +13445,12 @@ namespace Catch {
             if( Option<std::size_t> listed = list( m_config ) )
                 return static_cast<int>( *listed );
 
-            auto totals = runTests( m_config );
+            TestGroup tests { m_config };
+            auto const totals = tests.execute();
+
+            if( m_config->warnAboutNoTests() && totals.error == -1 )
+                return 2;
+
             // Note that on unices only the lower 8 bits are usually used, clamping
             // the return value to 255 prevents false negative when some multiple
             // of 256 tests has failed
@@ -11485,6 +13498,7 @@ namespace Catch {
 // end catch_singletons.cpp
 // start catch_startup_exception_registry.cpp
 
+#if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
 namespace Catch {
 void StartupExceptionRegistry::add( std::exception_ptr const& exception ) noexcept {
         CATCH_TRY {
@@ -11500,6 +13514,7 @@ void StartupExceptionRegistry::add( std::exception_ptr const& exception ) noexce
     }
 
 } // end namespace Catch
+#endif
 // end catch_startup_exception_registry.cpp
 // start catch_stream.cpp
 
@@ -11514,7 +13529,7 @@ namespace Catch {
 
     Catch::IStream::~IStream() = default;
 
-    namespace detail { namespace {
+    namespace Detail { namespace {
         template<typename WriterF, std::size_t bufferSize=256>
         class StreamBufImpl : public std::streambuf {
             char data[bufferSize];
@@ -11613,15 +13628,15 @@ namespace Catch {
 
     auto makeStream( StringRef const &filename ) -> IStream const* {
         if( filename.empty() )
-            return new detail::CoutStream();
+            return new Detail::CoutStream();
         else if( filename[0] == '%' ) {
             if( filename == "%debug" )
-                return new detail::DebugOutStream();
+                return new Detail::DebugOutStream();
             else
                 CATCH_ERROR( "Unrecognised stream: '" << filename << "'" );
         }
         else
-            return new detail::FileStream( filename );
+            return new Detail::FileStream( filename );
     }
 
     // This class encapsulates the idea of a pool of ostringstreams that can be reused.
@@ -11684,7 +13699,7 @@ namespace Catch {
 
     namespace {
         char toLowerCh(char c) {
-            return static_cast<char>( std::tolower( c ) );
+            return static_cast<char>( std::tolower( static_cast<unsigned char>(c) ) );
         }
     }
 
@@ -11719,6 +13734,18 @@ namespace Catch {
         return start != std::string::npos ? str.substr( start, 1+end-start ) : std::string();
     }
 
+    StringRef trim(StringRef ref) {
+        const auto is_ws = [](char c) {
+            return c == ' ' || c == '\t' || c == '\n' || c == '\r';
+        };
+        size_t real_begin = 0;
+        while (real_begin < ref.size() && is_ws(ref[real_begin])) { ++real_begin; }
+        size_t real_end = ref.size();
+        while (real_end > real_begin && is_ws(ref[real_end - 1])) { --real_end; }
+
+        return ref.substr(real_begin, real_end - real_begin);
+    }
+
     bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis ) {
         bool replaced = false;
         std::size_t i = str.find( replaceThis );
@@ -11764,124 +13791,46 @@ namespace Catch {
 // end catch_string_manip.cpp
 // start catch_stringref.cpp
 
-#if defined(__clang__)
-#    pragma clang diagnostic push
-#    pragma clang diagnostic ignored "-Wexit-time-destructors"
-#endif
-
+#include <algorithm>
 #include <ostream>
 #include <cstring>
 #include <cstdint>
 
-namespace {
-    const uint32_t byte_2_lead = 0xC0;
-    const uint32_t byte_3_lead = 0xE0;
-    const uint32_t byte_4_lead = 0xF0;
-}
-
 namespace Catch {
     StringRef::StringRef( char const* rawChars ) noexcept
     : StringRef( rawChars, static_cast<StringRef::size_type>(std::strlen(rawChars) ) )
     {}
 
-    StringRef::operator std::string() const {
-        return std::string( m_start, m_size );
-    }
-
-    void StringRef::swap( StringRef& other ) noexcept {
-        std::swap( m_start, other.m_start );
-        std::swap( m_size, other.m_size );
-        std::swap( m_data, other.m_data );
-    }
-
     auto StringRef::c_str() const -> char const* {
-        if( !isSubstring() )
-            return m_start;
-
-        const_cast<StringRef *>( this )->takeOwnership();
-        return m_data;
-    }
-    auto StringRef::currentData() const noexcept -> char const* {
+        CATCH_ENFORCE(isNullTerminated(), "Called StringRef::c_str() on a non-null-terminated instance");
         return m_start;
     }
-
-    auto StringRef::isOwned() const noexcept -> bool {
-        return m_data != nullptr;
-    }
-    auto StringRef::isSubstring() const noexcept -> bool {
-        return m_start[m_size] != '\0';
+    auto StringRef::data() const noexcept -> char const* {
+        return m_start;
     }
 
-    void StringRef::takeOwnership() {
-        if( !isOwned() ) {
-            m_data = new char[m_size+1];
-            memcpy( m_data, m_start, m_size );
-            m_data[m_size] = '\0';
-        }
-    }
     auto StringRef::substr( size_type start, size_type size ) const noexcept -> StringRef {
-        if( start < m_size )
-            return StringRef( m_start+start, size );
-        else
+        if (start < m_size) {
+            return StringRef(m_start + start, (std::min)(m_size - start, size));
+        } else {
             return StringRef();
-    }
-    auto StringRef::operator == ( StringRef const& other ) const noexcept -> bool {
-        return
-            size() == other.size() &&
-            (std::strncmp( m_start, other.m_start, size() ) == 0);
-    }
-    auto StringRef::operator != ( StringRef const& other ) const noexcept -> bool {
-        return !operator==( other );
-    }
-
-    auto StringRef::operator[](size_type index) const noexcept -> char {
-        return m_start[index];
-    }
-
-    auto StringRef::numberOfCharacters() const noexcept -> size_type {
-        size_type noChars = m_size;
-        // Make adjustments for uft encodings
-        for( size_type i=0; i < m_size; ++i ) {
-            char c = m_start[i];
-            if( ( c & byte_2_lead ) == byte_2_lead ) {
-                noChars--;
-                if (( c & byte_3_lead ) == byte_3_lead )
-                    noChars--;
-                if( ( c & byte_4_lead ) == byte_4_lead )
-                    noChars--;
-            }
         }
-        return noChars;
-    }
-
-    auto operator + ( StringRef const& lhs, StringRef const& rhs ) -> std::string {
-        std::string str;
-        str.reserve( lhs.size() + rhs.size() );
-        str += lhs;
-        str += rhs;
-        return str;
     }
-    auto operator + ( StringRef const& lhs, const char* rhs ) -> std::string {
-        return std::string( lhs ) + std::string( rhs );
-    }
-    auto operator + ( char const* lhs, StringRef const& rhs ) -> std::string {
-        return std::string( lhs ) + std::string( rhs );
+    auto StringRef::operator == ( StringRef const& other ) const noexcept -> bool {
+        return m_size == other.m_size
+            && (std::memcmp( m_start, other.m_start, m_size ) == 0);
     }
 
     auto operator << ( std::ostream& os, StringRef const& str ) -> std::ostream& {
-        return os.write(str.currentData(), str.size());
+        return os.write(str.data(), str.size());
     }
 
     auto operator+=( std::string& lhs, StringRef const& rhs ) -> std::string& {
-        lhs.append(rhs.currentData(), rhs.size());
+        lhs.append(rhs.data(), rhs.size());
         return lhs;
     }
 
 } // namespace Catch
-
-#if defined(__clang__)
-#    pragma clang diagnostic pop
-#endif
 // end catch_stringref.cpp
 // start catch_tag_alias.cpp
 
@@ -12000,8 +13949,7 @@ namespace Catch {
         std::vector<std::string> tags;
         std::string desc, tag;
         bool inTag = false;
-        std::string _descOrTags = nameAndTags.tags;
-        for (char c : _descOrTags) {
+        for (char c : nameAndTags.tags) {
             if( !inTag ) {
                 if( c == '[' )
                     inTag = true;
@@ -12031,10 +13979,11 @@ namespace Catch {
             }
         }
         if( isHidden ) {
-            tags.push_back( "." );
+            // Add all "hidden" tags to make them behave identically
+            tags.insert( tags.end(), { ".", "!hide" } );
         }
 
-        TestCaseInfo info( nameAndTags.name, _className, desc, tags, _lineInfo );
+        TestCaseInfo info( static_cast<std::string>(nameAndTags.name), _className, desc, tags, _lineInfo );
         return TestCase( _testCase, std::move(info) );
     }
 
@@ -12122,34 +14071,89 @@ namespace Catch {
         return *this;
     }
 
-} // end namespace Catch
-// end catch_test_case_info.cpp
-// start catch_test_case_registry_impl.cpp
+} // end namespace Catch
+// end catch_test_case_info.cpp
+// start catch_test_case_registry_impl.cpp
+
+#include <algorithm>
+#include <sstream>
+
+namespace Catch {
+
+    namespace {
+        struct TestHasher {
+            explicit TestHasher(Catch::SimplePcg32& rng_instance) {
+                basis = rng_instance();
+                basis <<= 32;
+                basis |= rng_instance();
+            }
+
+            uint64_t basis;
+
+            uint64_t operator()(TestCase const& t) const {
+                // Modified FNV-1a hash
+                static constexpr uint64_t prime = 1099511628211;
+                uint64_t hash = basis;
+                for (const char c : t.name) {
+                    hash ^= c;
+                    hash *= prime;
+                }
+                return hash;
+            }
+        };
+    } // end unnamed namespace
+
+    std::vector<TestCase> sortTests( IConfig const& config, std::vector<TestCase> const& unsortedTestCases ) {
+        switch( config.runOrder() ) {
+            case RunTests::InDeclarationOrder:
+                // already in declaration order
+                break;
+
+            case RunTests::InLexicographicalOrder: {
+                std::vector<TestCase> sorted = unsortedTestCases;
+                std::sort( sorted.begin(), sorted.end() );
+                return sorted;
+            }
+
+            case RunTests::InRandomOrder: {
+                seedRng( config );
+                TestHasher h( rng() );
 
-#include <sstream>
+                using hashedTest = std::pair<uint64_t, TestCase const*>;
+                std::vector<hashedTest> indexed_tests;
+                indexed_tests.reserve( unsortedTestCases.size() );
 
-namespace Catch {
+                for (auto const& testCase : unsortedTestCases) {
+                    indexed_tests.emplace_back(h(testCase), &testCase);
+                }
 
-    std::vector<TestCase> sortTests( IConfig const& config, std::vector<TestCase> const& unsortedTestCases ) {
+                std::sort(indexed_tests.begin(), indexed_tests.end(),
+                          [](hashedTest const& lhs, hashedTest const& rhs) {
+                          if (lhs.first == rhs.first) {
+                              return lhs.second->name < rhs.second->name;
+                          }
+                          return lhs.first < rhs.first;
+                });
 
-        std::vector<TestCase> sorted = unsortedTestCases;
+                std::vector<TestCase> sorted;
+                sorted.reserve( indexed_tests.size() );
 
-        switch( config.runOrder() ) {
-            case RunTests::InLexicographicalOrder:
-                std::sort( sorted.begin(), sorted.end() );
-                break;
-            case RunTests::InRandomOrder:
-                seedRng( config );
-                std::shuffle( sorted.begin(), sorted.end(), rng() );
-                break;
-            case RunTests::InDeclarationOrder:
-                // already in declaration order
-                break;
+                for (auto const& hashed : indexed_tests) {
+                    sorted.emplace_back(*hashed.second);
+                }
+
+                return sorted;
+            }
         }
-        return sorted;
+        return unsortedTestCases;
+    }
+
+    bool isThrowSafe( TestCase const& testCase, IConfig const& config ) {
+        return !testCase.throws() || config.allowThrows();
     }
+
     bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ) {
-        return testSpec.matches( testCase ) && ( config.allowThrows() || !testCase.throws() );
+        return testSpec.matches( testCase ) && isThrowSafe( testCase, config );
     }
 
     void enforceNoDuplicateTestCases( std::vector<TestCase> const& functions ) {
@@ -12210,7 +14214,7 @@ namespace Catch {
     }
 
     std::string extractClassName( StringRef const& classOrQualifiedMethodName ) {
-        std::string className = classOrQualifiedMethodName;
+        std::string className(classOrQualifiedMethodName);
         if( startsWith( className, '&' ) )
         {
             std::size_t lastColons = className.rfind( "::" );
@@ -12278,15 +14282,12 @@ namespace TestCaseTracking {
         m_currentTracker = tracker;
     }
 
-    TrackerBase::TrackerBase( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent )
-    :   m_nameAndLocation( nameAndLocation ),
+    TrackerBase::TrackerBase( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent ):
+        ITracker(nameAndLocation),
         m_ctx( ctx ),
         m_parent( parent )
     {}
 
-    NameAndLocation const& TrackerBase::nameAndLocation() const {
-        return m_nameAndLocation;
-    }
     bool TrackerBase::isComplete() const {
         return m_runState == CompletedSuccessfully || m_runState == Failed;
     }
@@ -12352,7 +14353,7 @@ namespace TestCaseTracking {
                 m_runState = CompletedSuccessfully;
                 break;
             case ExecutingChildren:
-                if( m_children.empty() || m_children.back()->isComplete() )
+                if( std::all_of(m_children.begin(), m_children.end(), [](ITrackerPtr const& t){ return t->isComplete(); }) )
                     m_runState = CompletedSuccessfully;
                 break;
 
@@ -12387,7 +14388,8 @@ namespace TestCaseTracking {
     }
 
     SectionTracker::SectionTracker( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent )
-    :   TrackerBase( nameAndLocation, ctx, parent )
+    :   TrackerBase( nameAndLocation, ctx, parent ),
+        m_trimmed_name(trim(nameAndLocation.name))
     {
         if( parent ) {
             while( !parent->isSectionTracker() )
@@ -12401,12 +14403,12 @@ namespace TestCaseTracking {
     bool SectionTracker::isComplete() const {
         bool complete = true;
 
-        if ((m_filters.empty() || m_filters[0] == "") ||
-             std::find(m_filters.begin(), m_filters.end(),
-                       m_nameAndLocation.name) != m_filters.end())
+        if (m_filters.empty()
+            || m_filters[0] == ""
+            || std::find(m_filters.begin(), m_filters.end(), m_trimmed_name) != m_filters.end()) {
             complete = TrackerBase::isComplete();
+        }
         return complete;
-
     }
 
     bool SectionTracker::isSectionTracker() const { return true; }
@@ -12430,20 +14432,21 @@ namespace TestCaseTracking {
     }
 
     void SectionTracker::tryOpen() {
-        if( !isComplete() && (m_filters.empty() || m_filters[0].empty() ||  m_filters[0] == m_nameAndLocation.name ) )
+        if( !isComplete() )
             open();
     }
 
     void SectionTracker::addInitialFilters( std::vector<std::string> const& filters ) {
         if( !filters.empty() ) {
-            m_filters.push_back(""); // Root - should never be consulted
-            m_filters.push_back(""); // Test Case - not a section filter
+            m_filters.reserve( m_filters.size() + filters.size() + 2 );
+            m_filters.emplace_back(""); // Root - should never be consulted
+            m_filters.emplace_back(""); // Test Case - not a section filter
             m_filters.insert( m_filters.end(), filters.begin(), filters.end() );
         }
     }
     void SectionTracker::addNextFilters( std::vector<std::string> const& filters ) {
         if( filters.size() > 1 )
-            m_filters.insert( m_filters.end(), ++filters.begin(), filters.end() );
+            m_filters.insert( m_filters.end(), filters.begin()+1, filters.end() );
     }
 
 } // namespace TestCaseTracking
@@ -12495,47 +14498,81 @@ namespace Catch {
 
 namespace Catch {
 
+    TestSpec::Pattern::Pattern( std::string const& name )
+    : m_name( name )
+    {}
+
     TestSpec::Pattern::~Pattern() = default;
-    TestSpec::NamePattern::~NamePattern() = default;
-    TestSpec::TagPattern::~TagPattern() = default;
-    TestSpec::ExcludedPattern::~ExcludedPattern() = default;
 
-    TestSpec::NamePattern::NamePattern( std::string const& name )
-    : m_wildcardPattern( toLower( name ), CaseSensitive::No )
+    std::string const& TestSpec::Pattern::name() const {
+        return m_name;
+    }
+
+    TestSpec::NamePattern::NamePattern( std::string const& name, std::string const& filterString )
+    : Pattern( filterString )
+    , m_wildcardPattern( toLower( name ), CaseSensitive::No )
     {}
+
     bool TestSpec::NamePattern::matches( TestCaseInfo const& testCase ) const {
-        return m_wildcardPattern.matches( toLower( testCase.name ) );
+        return m_wildcardPattern.matches( testCase.name );
     }
 
-    TestSpec::TagPattern::TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
+    TestSpec::TagPattern::TagPattern( std::string const& tag, std::string const& filterString )
+    : Pattern( filterString )
+    , m_tag( toLower( tag ) )
+    {}
+
     bool TestSpec::TagPattern::matches( TestCaseInfo const& testCase ) const {
         return std::find(begin(testCase.lcaseTags),
                          end(testCase.lcaseTags),
                          m_tag) != end(testCase.lcaseTags);
     }
 
-    TestSpec::ExcludedPattern::ExcludedPattern( PatternPtr const& underlyingPattern ) : m_underlyingPattern( underlyingPattern ) {}
-    bool TestSpec::ExcludedPattern::matches( TestCaseInfo const& testCase ) const { return !m_underlyingPattern->matches( testCase ); }
+    TestSpec::ExcludedPattern::ExcludedPattern( PatternPtr const& underlyingPattern )
+    : Pattern( underlyingPattern->name() )
+    , m_underlyingPattern( underlyingPattern )
+    {}
+
+    bool TestSpec::ExcludedPattern::matches( TestCaseInfo const& testCase ) const {
+        return !m_underlyingPattern->matches( testCase );
+    }
 
     bool TestSpec::Filter::matches( TestCaseInfo const& testCase ) const {
-        // All patterns in a filter must match for the filter to be a match
-        for( auto const& pattern : m_patterns ) {
-            if( !pattern->matches( testCase ) )
-                return false;
-        }
-        return true;
+        return std::all_of( m_patterns.begin(), m_patterns.end(), [&]( PatternPtr const& p ){ return p->matches( testCase ); } );
+    }
+
+    std::string TestSpec::Filter::name() const {
+        std::string name;
+        for( auto const& p : m_patterns )
+            name += p->name();
+        return name;
     }
 
     bool TestSpec::hasFilters() const {
         return !m_filters.empty();
     }
+
     bool TestSpec::matches( TestCaseInfo const& testCase ) const {
-        // A TestSpec matches if any filter matches
-        for( auto const& filter : m_filters )
-            if( filter.matches( testCase ) )
-                return true;
-        return false;
+        return std::any_of( m_filters.begin(), m_filters.end(), [&]( Filter const& f ){ return f.matches( testCase ); } );
+    }
+
+    TestSpec::Matches TestSpec::matchesByFilter( std::vector<TestCase> const& testCases, IConfig const& config ) const
+    {
+        Matches matches( m_filters.size() );
+        std::transform( m_filters.begin(), m_filters.end(), matches.begin(), [&]( Filter const& filter ){
+            std::vector<TestCase const*> currentMatches;
+            for( auto const& test : testCases )
+                if( isThrowSafe( test, config ) && filter.matches( test ) )
+                    currentMatches.emplace_back( &test );
+            return FilterMatch{ filter.name(), currentMatches };
+        } );
+        return matches;
+    }
+
+    const TestSpec::vectorStrings& TestSpec::getInvalidArgs() const{
+        return  (m_invalidArgs);
     }
+
 }
 // end catch_test_spec.cpp
 // start catch_test_spec_parser.cpp
@@ -12547,64 +14584,136 @@ namespace Catch {
     TestSpecParser& TestSpecParser::parse( std::string const& arg ) {
         m_mode = None;
         m_exclusion = false;
-        m_start = std::string::npos;
         m_arg = m_tagAliases->expandAliases( arg );
         m_escapeChars.clear();
+        m_substring.reserve(m_arg.size());
+        m_patternName.reserve(m_arg.size());
+        m_realPatternPos = 0;
+
         for( m_pos = 0; m_pos < m_arg.size(); ++m_pos )
-            visitChar( m_arg[m_pos] );
-        if( m_mode == Name )
-            addPattern<TestSpec::NamePattern>();
+          //if visitChar fails
+           if( !visitChar( m_arg[m_pos] ) ){
+               m_testSpec.m_invalidArgs.push_back(arg);
+               break;
+           }
+        endMode();
         return *this;
     }
     TestSpec TestSpecParser::testSpec() {
         addFilter();
         return m_testSpec;
     }
+    bool TestSpecParser::visitChar( char c ) {
+        if( (m_mode != EscapedName) && (c == '\\') ) {
+            escape();
+            addCharToPattern(c);
+            return true;
+        }else if((m_mode != EscapedName) && (c == ',') )  {
+            return separate();
+        }
 
-    void TestSpecParser::visitChar( char c ) {
-        if( m_mode == None ) {
-            switch( c ) {
-            case ' ': return;
-            case '~': m_exclusion = true; return;
-            case '[': return startNewMode( Tag, ++m_pos );
-            case '"': return startNewMode( QuotedName, ++m_pos );
-            case '\\': return escape();
-            default: startNewMode( Name, m_pos ); break;
-            }
+        switch( m_mode ) {
+        case None:
+            if( processNoneChar( c ) )
+                return true;
+            break;
+        case Name:
+            processNameChar( c );
+            break;
+        case EscapedName:
+            endMode();
+            addCharToPattern(c);
+            return true;
+        default:
+        case Tag:
+        case QuotedName:
+            if( processOtherChar( c ) )
+                return true;
+            break;
         }
-        if( m_mode == Name ) {
-            if( c == ',' ) {
-                addPattern<TestSpec::NamePattern>();
-                addFilter();
-            }
-            else if( c == '[' ) {
-                if( subString() == "exclude:" )
-                    m_exclusion = true;
-                else
-                    addPattern<TestSpec::NamePattern>();
-                startNewMode( Tag, ++m_pos );
-            }
-            else if( c == '\\' )
-                escape();
+
+        m_substring += c;
+        if( !isControlChar( c ) ) {
+            m_patternName += c;
+            m_realPatternPos++;
+        }
+        return true;
+    }
+    // Two of the processing methods return true to signal the caller to return
+    // without adding the given character to the current pattern strings
+    bool TestSpecParser::processNoneChar( char c ) {
+        switch( c ) {
+        case ' ':
+            return true;
+        case '~':
+            m_exclusion = true;
+            return false;
+        case '[':
+            startNewMode( Tag );
+            return false;
+        case '"':
+            startNewMode( QuotedName );
+            return false;
+        default:
+            startNewMode( Name );
+            return false;
+        }
+    }
+    void TestSpecParser::processNameChar( char c ) {
+        if( c == '[' ) {
+            if( m_substring == "exclude:" )
+                m_exclusion = true;
+            else
+                endMode();
+            startNewMode( Tag );
         }
-        else if( m_mode == EscapedName )
-            m_mode = Name;
-        else if( m_mode == QuotedName && c == '"' )
-            addPattern<TestSpec::NamePattern>();
-        else if( m_mode == Tag && c == ']' )
-            addPattern<TestSpec::TagPattern>();
     }
-    void TestSpecParser::startNewMode( Mode mode, std::size_t start ) {
+    bool TestSpecParser::processOtherChar( char c ) {
+        if( !isControlChar( c ) )
+            return false;
+        m_substring += c;
+        endMode();
+        return true;
+    }
+    void TestSpecParser::startNewMode( Mode mode ) {
         m_mode = mode;
-        m_start = start;
+    }
+    void TestSpecParser::endMode() {
+        switch( m_mode ) {
+        case Name:
+        case QuotedName:
+            return addNamePattern();
+        case Tag:
+            return addTagPattern();
+        case EscapedName:
+            revertBackToLastMode();
+            return;
+        case None:
+        default:
+            return startNewMode( None );
+        }
     }
     void TestSpecParser::escape() {
-        if( m_mode == None )
-            m_start = m_pos;
+        saveLastMode();
         m_mode = EscapedName;
-        m_escapeChars.push_back( m_pos );
+        m_escapeChars.push_back(m_realPatternPos);
+    }
+    bool TestSpecParser::isControlChar( char c ) const {
+        switch( m_mode ) {
+            default:
+                return false;
+            case None:
+                return c == '~';
+            case Name:
+                return c == '[';
+            case EscapedName:
+                return true;
+            case QuotedName:
+                return c == '"';
+            case Tag:
+                return c == '[' || c == ']';
+        }
     }
-    std::string TestSpecParser::subString() const { return m_arg.substr( m_start, m_pos - m_start ); }
 
     void TestSpecParser::addFilter() {
         if( !m_currentFilter.m_patterns.empty() ) {
@@ -12613,6 +14722,86 @@ namespace Catch {
         }
     }
 
+    void TestSpecParser::saveLastMode() {
+      lastMode = m_mode;
+    }
+
+    void TestSpecParser::revertBackToLastMode() {
+      m_mode = lastMode;
+    }
+
+    bool TestSpecParser::separate() {
+      if( (m_mode==QuotedName) || (m_mode==Tag) ){
+         //invalid argument, signal failure to previous scope.
+         m_mode = None;
+         m_pos = m_arg.size();
+         m_substring.clear();
+         m_patternName.clear();
+         m_realPatternPos = 0;
+         return false;
+      }
+      endMode();
+      addFilter();
+      return true; //success
+    }
+
+    std::string TestSpecParser::preprocessPattern() {
+        std::string token = m_patternName;
+        for (std::size_t i = 0; i < m_escapeChars.size(); ++i)
+            token = token.substr(0, m_escapeChars[i] - i) + token.substr(m_escapeChars[i] - i + 1);
+        m_escapeChars.clear();
+        if (startsWith(token, "exclude:")) {
+            m_exclusion = true;
+            token = token.substr(8);
+        }
+
+        m_patternName.clear();
+        m_realPatternPos = 0;
+
+        return token;
+    }
+
+    void TestSpecParser::addNamePattern() {
+        auto token = preprocessPattern();
+
+        if (!token.empty()) {
+            TestSpec::PatternPtr pattern = std::make_shared<TestSpec::NamePattern>(token, m_substring);
+            if (m_exclusion)
+                pattern = std::make_shared<TestSpec::ExcludedPattern>(pattern);
+            m_currentFilter.m_patterns.push_back(pattern);
+        }
+        m_substring.clear();
+        m_exclusion = false;
+        m_mode = None;
+    }
+
+    void TestSpecParser::addTagPattern() {
+        auto token = preprocessPattern();
+
+        if (!token.empty()) {
+            // If the tag pattern is the "hide and tag" shorthand (e.g. [.foo])
+            // we have to create a separate hide tag and shorten the real one
+            if (token.size() > 1 && token[0] == '.') {
+                token.erase(token.begin());
+                TestSpec::PatternPtr pattern = std::make_shared<TestSpec::TagPattern>(".", m_substring);
+                if (m_exclusion) {
+                    pattern = std::make_shared<TestSpec::ExcludedPattern>(pattern);
+                }
+                m_currentFilter.m_patterns.push_back(pattern);
+            }
+
+            TestSpec::PatternPtr pattern = std::make_shared<TestSpec::TagPattern>(token, m_substring);
+
+            if (m_exclusion) {
+                pattern = std::make_shared<TestSpec::ExcludedPattern>(pattern);
+            }
+            m_currentFilter.m_patterns.push_back(pattern);
+        }
+        m_substring.clear();
+        m_exclusion = false;
+        m_mode = None;
+    }
+
     TestSpec parseTestSpec( std::string const& arg ) {
         return TestSpecParser( ITagAliasRegistry::get() ).parse( arg ).testSpec();
     }
@@ -12714,13 +14903,11 @@ namespace Detail {
             enum Arch { Big, Little };
 
             static Arch which() {
-                union _{
-                    int asInt;
-                    char asChar[sizeof (int)];
-                } u;
-
-                u.asInt = 1;
-                return ( u.asChar[sizeof(int)-1] == 1 ) ? Big : Little;
+                int one = 1;
+                // If the lowest byte we read is non-zero, we can assume
+                // that little endian format is used.
+                auto value = *reinterpret_cast<char*>(&one);
+                return value ? Little : Big;
             }
         };
     }
@@ -12844,6 +15031,13 @@ std::string StringMaker<wchar_t *>::convert(wchar_t * str) {
 }
 #endif
 
+#if defined(CATCH_CONFIG_CPP17_BYTE)
+#include <cstddef>
+std::string StringMaker<std::byte>::convert(std::byte value) {
+    return ::Catch::Detail::stringify(std::to_integer<unsigned long long>(value));
+}
+#endif // defined(CATCH_CONFIG_CPP17_BYTE)
+
 std::string StringMaker<int>::convert(int value) {
     return ::Catch::Detail::stringify(static_cast<long long>(value));
 }
@@ -12989,11 +15183,48 @@ namespace Catch {
 // end catch_totals.cpp
 // start catch_uncaught_exceptions.cpp
 
+// start catch_config_uncaught_exceptions.hpp
+
+//              Copyright Catch2 Authors
+// Distributed under the Boost Software License, Version 1.0.
+//   (See accompanying file LICENSE_1_0.txt or copy at
+//        https://www.boost.org/LICENSE_1_0.txt)
+
+// SPDX-License-Identifier: BSL-1.0
+
+#ifndef CATCH_CONFIG_UNCAUGHT_EXCEPTIONS_HPP
+#define CATCH_CONFIG_UNCAUGHT_EXCEPTIONS_HPP
+
+#if defined(_MSC_VER)
+#  if _MSC_VER >= 1900 // Visual Studio 2015 or newer
+#    define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
+#  endif
+#endif
+
+#include <exception>
+
+#if defined(__cpp_lib_uncaught_exceptions) \
+    && !defined(CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS)
+
+#  define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
+#endif // __cpp_lib_uncaught_exceptions
+
+#if defined(CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS) \
+    && !defined(CATCH_CONFIG_NO_CPP17_UNCAUGHT_EXCEPTIONS) \
+    && !defined(CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS)
+
+#  define CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS
+#endif
+
+#endif // CATCH_CONFIG_UNCAUGHT_EXCEPTIONS_HPP
+// end catch_config_uncaught_exceptions.hpp
 #include <exception>
 
 namespace Catch {
     bool uncaught_exceptions() {
-#if defined(CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS)
+#if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS)
+        return false;
+#elif defined(CATCH_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS)
         return std::uncaught_exceptions() > 0;
 #else
         return std::uncaught_exception();
@@ -13033,7 +15264,7 @@ namespace Catch {
     }
 
     Version const& libraryVersion() {
-        static Version version( 2, 8, 0, "", 0 );
+        static Version version( 2, 13, 2, "", 0 );
         return version;
     }
 
@@ -13041,14 +15272,12 @@ namespace Catch {
 // end catch_version.cpp
 // start catch_wildcard_pattern.cpp
 
-#include <sstream>
-
 namespace Catch {
 
     WildcardPattern::WildcardPattern( std::string const& pattern,
                                       CaseSensitive::Choice caseSensitivity )
     :   m_caseSensitivity( caseSensitivity ),
-        m_pattern( adjustCase( pattern ) )
+        m_pattern( normaliseString( pattern ) )
     {
         if( startsWith( m_pattern, '*' ) ) {
             m_pattern = m_pattern.substr( 1 );
@@ -13063,28 +15292,27 @@ namespace Catch {
     bool WildcardPattern::matches( std::string const& str ) const {
         switch( m_wildcard ) {
             case NoWildcard:
-                return m_pattern == adjustCase( str );
+                return m_pattern == normaliseString( str );
             case WildcardAtStart:
-                return endsWith( adjustCase( str ), m_pattern );
+                return endsWith( normaliseString( str ), m_pattern );
             case WildcardAtEnd:
-                return startsWith( adjustCase( str ), m_pattern );
+                return startsWith( normaliseString( str ), m_pattern );
             case WildcardAtBothEnds:
-                return contains( adjustCase( str ), m_pattern );
+                return contains( normaliseString( str ), m_pattern );
             default:
                 CATCH_INTERNAL_ERROR( "Unknown enum" );
         }
     }
 
-    std::string WildcardPattern::adjustCase( std::string const& str ) const {
-        return m_caseSensitivity == CaseSensitive::No ? toLower( str ) : str;
+    std::string WildcardPattern::normaliseString( std::string const& str ) const {
+        return trim( m_caseSensitivity == CaseSensitive::No ? toLower( str ) : str );
     }
 }
 // end catch_wildcard_pattern.cpp
 // start catch_xmlwriter.cpp
 
 #include <iomanip>
-
-using uchar = unsigned char;
+#include <type_traits>
 
 namespace Catch {
 
@@ -13124,8 +15352,30 @@ namespace {
         os.flags(f);
     }
 
+    bool shouldNewline(XmlFormatting fmt) {
+        return !!(static_cast<std::underlying_type<XmlFormatting>::type>(fmt & XmlFormatting::Newline));
+    }
+
+    bool shouldIndent(XmlFormatting fmt) {
+        return !!(static_cast<std::underlying_type<XmlFormatting>::type>(fmt & XmlFormatting::Indent));
+    }
+
 } // anonymous namespace
 
+    XmlFormatting operator | (XmlFormatting lhs, XmlFormatting rhs) {
+        return static_cast<XmlFormatting>(
+            static_cast<std::underlying_type<XmlFormatting>::type>(lhs) |
+            static_cast<std::underlying_type<XmlFormatting>::type>(rhs)
+        );
+    }
+
+    XmlFormatting operator & (XmlFormatting lhs, XmlFormatting rhs) {
+        return static_cast<XmlFormatting>(
+            static_cast<std::underlying_type<XmlFormatting>::type>(lhs) &
+            static_cast<std::underlying_type<XmlFormatting>::type>(rhs)
+        );
+    }
+
     XmlEncode::XmlEncode( std::string const& str, ForWhat forWhat )
     :   m_str( str ),
         m_forWhat( forWhat )
@@ -13136,7 +15386,7 @@ namespace {
         // (see: http://www.w3.org/TR/xml/#syntax)
 
         for( std::size_t idx = 0; idx < m_str.size(); ++ idx ) {
-            uchar c = m_str[idx];
+            unsigned char c = m_str[idx];
             switch (c) {
             case '<':   os << "&lt;"; break;
             case '&':   os << "&amp;"; break;
@@ -13196,7 +15446,7 @@ namespace {
                 bool valid = true;
                 uint32_t value = headerValue(c);
                 for (std::size_t n = 1; n < encBytes; ++n) {
-                    uchar nc = m_str[idx + n];
+                    unsigned char nc = m_str[idx + n];
                     valid &= ((nc & 0xC0) == 0x80);
                     value = (value << 6) | (nc & 0x3F);
                 }
@@ -13230,13 +15480,17 @@ namespace {
         return os;
     }
 
-    XmlWriter::ScopedElement::ScopedElement( XmlWriter* writer )
-    :   m_writer( writer )
+    XmlWriter::ScopedElement::ScopedElement( XmlWriter* writer, XmlFormatting fmt )
+    :   m_writer( writer ),
+        m_fmt(fmt)
     {}
 
     XmlWriter::ScopedElement::ScopedElement( ScopedElement&& other ) noexcept
-    :   m_writer( other.m_writer ){
+    :   m_writer( other.m_writer ),
+        m_fmt(other.m_fmt)
+    {
         other.m_writer = nullptr;
+        other.m_fmt = XmlFormatting::None;
     }
     XmlWriter::ScopedElement& XmlWriter::ScopedElement::operator=( ScopedElement&& other ) noexcept {
         if ( m_writer ) {
@@ -13244,16 +15498,19 @@ namespace {
         }
         m_writer = other.m_writer;
         other.m_writer = nullptr;
+        m_fmt = other.m_fmt;
+        other.m_fmt = XmlFormatting::None;
         return *this;
     }
 
     XmlWriter::ScopedElement::~ScopedElement() {
-        if( m_writer )
-            m_writer->endElement();
+        if (m_writer) {
+            m_writer->endElement(m_fmt);
+        }
     }
 
-    XmlWriter::ScopedElement& XmlWriter::ScopedElement::writeText( std::string const& text, bool indent ) {
-        m_writer->writeText( text, indent );
+    XmlWriter::ScopedElement& XmlWriter::ScopedElement::writeText( std::string const& text, XmlFormatting fmt ) {
+        m_writer->writeText( text, fmt );
         return *this;
     }
 
@@ -13263,37 +15520,47 @@ namespace {
     }
 
     XmlWriter::~XmlWriter() {
-        while( !m_tags.empty() )
+        while (!m_tags.empty()) {
             endElement();
+        }
+        newlineIfNecessary();
     }
 
-    XmlWriter& XmlWriter::startElement( std::string const& name ) {
+    XmlWriter& XmlWriter::startElement( std::string const& name, XmlFormatting fmt ) {
         ensureTagClosed();
         newlineIfNecessary();
-        m_os << m_indent << '<' << name;
+        if (shouldIndent(fmt)) {
+            m_os << m_indent;
+            m_indent += "  ";
+        }
+        m_os << '<' << name;
         m_tags.push_back( name );
-        m_indent += "  ";
         m_tagIsOpen = true;
+        applyFormatting(fmt);
         return *this;
     }
 
-    XmlWriter::ScopedElement XmlWriter::scopedElement( std::string const& name ) {
-        ScopedElement scoped( this );
-        startElement( name );
+    XmlWriter::ScopedElement XmlWriter::scopedElement( std::string const& name, XmlFormatting fmt ) {
+        ScopedElement scoped( this, fmt );
+        startElement( name, fmt );
         return scoped;
     }
 
-    XmlWriter& XmlWriter::endElement() {
-        newlineIfNecessary();
-        m_indent = m_indent.substr( 0, m_indent.size()-2 );
+    XmlWriter& XmlWriter::endElement(XmlFormatting fmt) {
+        m_indent = m_indent.substr(0, m_indent.size() - 2);
+
         if( m_tagIsOpen ) {
             m_os << "/>";
             m_tagIsOpen = false;
+        } else {
+            newlineIfNecessary();
+            if (shouldIndent(fmt)) {
+                m_os << m_indent;
+            }
+            m_os << "</" << m_tags.back() << ">";
         }
-        else {
-            m_os << m_indent << "</" << m_tags.back() << ">";
-        }
-        m_os << std::endl;
+        m_os << std::flush;
+        applyFormatting(fmt);
         m_tags.pop_back();
         return *this;
     }
@@ -13309,22 +15576,26 @@ namespace {
         return *this;
     }
 
-    XmlWriter& XmlWriter::writeText( std::string const& text, bool indent ) {
+    XmlWriter& XmlWriter::writeText( std::string const& text, XmlFormatting fmt) {
         if( !text.empty() ){
             bool tagWasOpen = m_tagIsOpen;
             ensureTagClosed();
-            if( tagWasOpen && indent )
+            if (tagWasOpen && shouldIndent(fmt)) {
                 m_os << m_indent;
+            }
             m_os << XmlEncode( text );
-            m_needsNewline = true;
+            applyFormatting(fmt);
         }
         return *this;
     }
 
-    XmlWriter& XmlWriter::writeComment( std::string const& text ) {
+    XmlWriter& XmlWriter::writeComment( std::string const& text, XmlFormatting fmt) {
         ensureTagClosed();
-        m_os << m_indent << "<!--" << text << "-->";
-        m_needsNewline = true;
+        if (shouldIndent(fmt)) {
+            m_os << m_indent;
+        }
+        m_os << "<!--" << text << "-->";
+        applyFormatting(fmt);
         return *this;
     }
 
@@ -13340,11 +15611,16 @@ namespace {
 
     void XmlWriter::ensureTagClosed() {
         if( m_tagIsOpen ) {
-            m_os << ">" << std::endl;
+            m_os << '>' << std::flush;
+            newlineIfNecessary();
             m_tagIsOpen = false;
         }
     }
 
+    void XmlWriter::applyFormatting(XmlFormatting fmt) {
+        m_needsNewline = shouldNewline(fmt);
+    }
+
     void XmlWriter::writeDeclaration() {
         m_os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
     }
@@ -13390,6 +15666,17 @@ namespace Catch {
         return std::string(buffer);
     }
 
+    bool shouldShowDuration( IConfig const& config, double duration ) {
+        if ( config.showDurations() == ShowDurations::Always ) {
+            return true;
+        }
+        if ( config.showDurations() == ShowDurations::Never ) {
+            return false;
+        }
+        const double min = config.minDuration();
+        return min >= 0 && duration >= min;
+    }
+
     std::string serializeFilters( std::vector<std::string> const& container ) {
         ReusableStringStream oss;
         bool first = true;
@@ -13620,24 +15907,25 @@ private:
         if (itMessage == messages.end())
             return;
 
-        // using messages.end() directly yields (or auto) compilation error:
-        std::vector<MessageInfo>::const_iterator itEnd = messages.end();
-        const std::size_t N = static_cast<std::size_t>(std::distance(itMessage, itEnd));
+        const auto itEnd = messages.cend();
+        const auto N = static_cast<std::size_t>(std::distance(itMessage, itEnd));
 
         {
             Colour colourGuard(colour);
             stream << " with " << pluralise(N, "message") << ':';
         }
 
-        for (; itMessage != itEnd; ) {
+        while (itMessage != itEnd) {
             // If this assertion is a warning ignore any INFO messages
             if (printInfoMessages || itMessage->type != ResultWas::Info) {
-                stream << " '" << itMessage->message << '\'';
-                if (++itMessage != itEnd) {
+                printMessage();
+                if (itMessage != itEnd) {
                     Colour colourGuard(dimColour());
                     stream << " and";
                 }
+                continue;
             }
+            ++itMessage;
         }
     }
 
@@ -13655,10 +15943,6 @@ private:
             return "Reports test results on a single line, suitable for IDEs";
         }
 
-        ReporterPreferences CompactReporter::getPreferences() const {
-            return m_reporterPrefs;
-        }
-
         void CompactReporter::noMatchingTestCases( std::string const& spec ) {
             stream << "No test cases matched '" << spec << '\'' << std::endl;
         }
@@ -13685,8 +15969,9 @@ private:
         }
 
         void CompactReporter::sectionEnded(SectionStats const& _sectionStats) {
-            if (m_config->showDurations() == ShowDurations::Always) {
-                stream << getFormattedDuration(_sectionStats.durationInSeconds) << " s: " << _sectionStats.sectionInfo.name << std::endl;
+            double dur = _sectionStats.durationInSeconds;
+            if ( shouldShowDuration( *m_config, dur ) ) {
+                stream << getFormattedDuration( dur ) << " s: " << _sectionStats.sectionInfo.name << std::endl;
             }
         }
 
@@ -13710,8 +15995,13 @@ private:
 #if defined(_MSC_VER)
 #pragma warning(push)
 #pragma warning(disable:4061) // Not all labels are EXPLICITLY handled in switch
- // Note that 4062 (not all labels are handled
- // and default is missing) is enabled
+ // Note that 4062 (not all labels are handled and default is missing) is enabled
+#endif
+
+#if defined(__clang__)
+#  pragma clang diagnostic push
+// For simplicity, benchmarking-only helpers are always enabled
+#  pragma clang diagnostic ignored "-Wunused-function"
 #endif
 
 namespace Catch {
@@ -13893,11 +16183,11 @@ class Duration {
     static const uint64_t s_nanosecondsInASecond = 1000 * s_nanosecondsInAMillisecond;
     static const uint64_t s_nanosecondsInAMinute = 60 * s_nanosecondsInASecond;
 
-    uint64_t m_inNanoseconds;
+    double m_inNanoseconds;
     Unit m_units;
 
 public:
-    explicit Duration(uint64_t inNanoseconds, Unit units = Unit::Auto)
+    explicit Duration(double inNanoseconds, Unit units = Unit::Auto)
         : m_inNanoseconds(inNanoseconds),
         m_units(units) {
         if (m_units == Unit::Auto) {
@@ -13926,7 +16216,7 @@ public:
         case Unit::Minutes:
             return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMinute);
         default:
-            return static_cast<double>(m_inNanoseconds);
+            return m_inNanoseconds;
         }
     }
     auto unitsAsString() const -> std::string {
@@ -13947,7 +16237,7 @@ public:
 
     }
     friend auto operator << (std::ostream& os, Duration const& duration) -> std::ostream& {
-        return os << duration.value() << " " << duration.unitsAsString();
+        return os << duration.value() << ' ' << duration.unitsAsString();
     }
 };
 } // end anon namespace
@@ -13972,10 +16262,16 @@ public:
         if (!m_isOpen) {
             m_isOpen = true;
             *this << RowBreak();
-            for (auto const& info : m_columnInfos)
-                *this << info.name << ColumnBreak();
-            *this << RowBreak();
-            m_os << Catch::getLineOfChars<'-'>() << "\n";
+
+			Columns headerCols;
+			Spacer spacer(2);
+			for (auto const& info : m_columnInfos) {
+				headerCols += Column(info.name).width(static_cast<std::size_t>(info.width - 2));
+				headerCols += spacer;
+			}
+			m_os << headerCols << '\n';
+
+            m_os << Catch::getLineOfChars<'-'>() << '\n';
         }
     }
     void close() {
@@ -13994,30 +16290,29 @@ public:
 
     friend TablePrinter& operator << (TablePrinter& tp, ColumnBreak) {
         auto colStr = tp.m_oss.str();
-        // This takes account of utf8 encodings
-        auto strSize = Catch::StringRef(colStr).numberOfCharacters();
+        const auto strSize = colStr.size();
         tp.m_oss.str("");
         tp.open();
         if (tp.m_currentColumn == static_cast<int>(tp.m_columnInfos.size() - 1)) {
             tp.m_currentColumn = -1;
-            tp.m_os << "\n";
+            tp.m_os << '\n';
         }
         tp.m_currentColumn++;
 
         auto colInfo = tp.m_columnInfos[tp.m_currentColumn];
-        auto padding = (strSize + 2 < static_cast<std::size_t>(colInfo.width))
-            ? std::string(colInfo.width - (strSize + 2), ' ')
+        auto padding = (strSize + 1 < static_cast<std::size_t>(colInfo.width))
+            ? std::string(colInfo.width - (strSize + 1), ' ')
             : std::string();
         if (colInfo.justification == ColumnInfo::Left)
-            tp.m_os << colStr << padding << " ";
+            tp.m_os << colStr << padding << ' ';
         else
-            tp.m_os << padding << colStr << " ";
+            tp.m_os << padding << colStr << ' ';
         return tp;
     }
 
     friend TablePrinter& operator << (TablePrinter& tp, RowBreak) {
         if (tp.m_currentColumn > 0) {
-            tp.m_os << "\n";
+            tp.m_os << '\n';
             tp.m_currentColumn = -1;
         }
         return tp;
@@ -14027,12 +16322,26 @@ public:
 ConsoleReporter::ConsoleReporter(ReporterConfig const& config)
     : StreamingReporterBase(config),
     m_tablePrinter(new TablePrinter(config.stream(),
-    {
-        { "benchmark name", CATCH_CONFIG_CONSOLE_WIDTH - 32, ColumnInfo::Left },
-        { "iters", 8, ColumnInfo::Right },
-        { "elapsed ns", 14, ColumnInfo::Right },
-        { "average", 14, ColumnInfo::Right }
-    })) {}
+        [&config]() -> std::vector<ColumnInfo> {
+        if (config.fullConfig()->benchmarkNoAnalysis())
+        {
+            return{
+                { "benchmark name", CATCH_CONFIG_CONSOLE_WIDTH - 43, ColumnInfo::Left },
+                { "     samples", 14, ColumnInfo::Right },
+                { "  iterations", 14, ColumnInfo::Right },
+                { "        mean", 14, ColumnInfo::Right }
+            };
+        }
+        else
+        {
+            return{
+                { "benchmark name", CATCH_CONFIG_CONSOLE_WIDTH - 43, ColumnInfo::Left },
+                { "samples      mean       std dev", 14, ColumnInfo::Right },
+                { "iterations   low mean   low std dev", 14, ColumnInfo::Right },
+                { "estimated    high mean  high std dev", 14, ColumnInfo::Right }
+            };
+        }
+    }())) {}
 ConsoleReporter::~ConsoleReporter() = default;
 
 std::string ConsoleReporter::getDescription() {
@@ -14043,6 +16352,10 @@ void ConsoleReporter::noMatchingTestCases(std::string const& spec) {
     stream << "No test cases matched '" << spec << '\'' << std::endl;
 }
 
+void ConsoleReporter::reportInvalidArguments(std::string const&arg){
+    stream << "Invalid Filter: " << arg << std::endl;
+}
+
 void ConsoleReporter::assertionStarting(AssertionInfo const&) {}
 
 bool ConsoleReporter::assertionEnded(AssertionStats const& _assertionStats) {
@@ -14063,6 +16376,7 @@ bool ConsoleReporter::assertionEnded(AssertionStats const& _assertionStats) {
 }
 
 void ConsoleReporter::sectionStarting(SectionInfo const& _sectionInfo) {
+    m_tablePrinter->close();
     m_headerPrinted = false;
     StreamingReporterBase::sectionStarting(_sectionInfo);
 }
@@ -14077,8 +16391,9 @@ void ConsoleReporter::sectionEnded(SectionStats const& _sectionStats) {
             stream << "\nNo assertions in test case";
         stream << " '" << _sectionStats.sectionInfo.name << "'\n" << std::endl;
     }
-    if (m_config->showDurations() == ShowDurations::Always) {
-        stream << getFormattedDuration(_sectionStats.durationInSeconds) << " s: " << _sectionStats.sectionInfo.name << std::endl;
+    double dur = _sectionStats.durationInSeconds;
+    if (shouldShowDuration(*m_config, dur)) {
+        stream << getFormattedDuration(dur) << " s: " << _sectionStats.sectionInfo.name << std::endl;
     }
     if (m_headerPrinted) {
         m_headerPrinted = false;
@@ -14086,28 +16401,53 @@ void ConsoleReporter::sectionEnded(SectionStats const& _sectionStats) {
     StreamingReporterBase::sectionEnded(_sectionStats);
 }
 
-void ConsoleReporter::benchmarkStarting(BenchmarkInfo const& info) {
-    lazyPrintWithoutClosingBenchmarkTable();
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+void ConsoleReporter::benchmarkPreparing(std::string const& name) {
+	lazyPrintWithoutClosingBenchmarkTable();
 
-    auto nameCol = Column( info.name ).width( static_cast<std::size_t>( m_tablePrinter->columnInfos()[0].width - 2 ) );
+	auto nameCol = Column(name).width(static_cast<std::size_t>(m_tablePrinter->columnInfos()[0].width - 2));
 
-    bool firstLine = true;
-    for (auto line : nameCol) {
-        if (!firstLine)
-            (*m_tablePrinter) << ColumnBreak() << ColumnBreak() << ColumnBreak();
-        else
-            firstLine = false;
+	bool firstLine = true;
+	for (auto line : nameCol) {
+		if (!firstLine)
+			(*m_tablePrinter) << ColumnBreak() << ColumnBreak() << ColumnBreak();
+		else
+			firstLine = false;
+
+		(*m_tablePrinter) << line << ColumnBreak();
+	}
+}
 
-        (*m_tablePrinter) << line << ColumnBreak();
+void ConsoleReporter::benchmarkStarting(BenchmarkInfo const& info) {
+    (*m_tablePrinter) << info.samples << ColumnBreak()
+        << info.iterations << ColumnBreak();
+    if (!m_config->benchmarkNoAnalysis())
+        (*m_tablePrinter) << Duration(info.estimatedDuration) << ColumnBreak();
+}
+void ConsoleReporter::benchmarkEnded(BenchmarkStats<> const& stats) {
+    if (m_config->benchmarkNoAnalysis())
+    {
+        (*m_tablePrinter) << Duration(stats.mean.point.count()) << ColumnBreak();
+    }
+    else
+    {
+        (*m_tablePrinter) << ColumnBreak()
+            << Duration(stats.mean.point.count()) << ColumnBreak()
+            << Duration(stats.mean.lower_bound.count()) << ColumnBreak()
+            << Duration(stats.mean.upper_bound.count()) << ColumnBreak() << ColumnBreak()
+            << Duration(stats.standardDeviation.point.count()) << ColumnBreak()
+            << Duration(stats.standardDeviation.lower_bound.count()) << ColumnBreak()
+            << Duration(stats.standardDeviation.upper_bound.count()) << ColumnBreak() << ColumnBreak() << ColumnBreak() << ColumnBreak() << ColumnBreak();
     }
 }
-void ConsoleReporter::benchmarkEnded(BenchmarkStats const& stats) {
-    Duration average(stats.elapsedTimeInNanoseconds / stats.iterations);
+
+void ConsoleReporter::benchmarkFailed(std::string const& error) {
+	Colour colour(Colour::Red);
     (*m_tablePrinter)
-        << stats.iterations << ColumnBreak()
-        << stats.elapsedTimeInNanoseconds << ColumnBreak()
-        << average << ColumnBreak();
+        << "Benchmark failed (" << error << ')'
+        << ColumnBreak() << RowBreak();
 }
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
 void ConsoleReporter::testCaseEnded(TestCaseStats const& _testCaseStats) {
     m_tablePrinter->close();
@@ -14186,11 +16526,9 @@ void ConsoleReporter::printTestCaseAndSectionHeader() {
 
     SourceLineInfo lineInfo = m_sectionStack.back().lineInfo;
 
-    if (!lineInfo.empty()) {
-        stream << getLineOfChars<'-'>() << '\n';
-        Colour colourGuard(Colour::FileName);
-        stream << lineInfo << '\n';
-    }
+    stream << getLineOfChars<'-'>() << '\n';
+    Colour colourGuard(Colour::FileName);
+    stream << lineInfo << '\n';
     stream << getLineOfChars<'.'>() << '\n' << std::endl;
 }
 
@@ -14315,8 +16653,10 @@ void ConsoleReporter::printSummaryDivider() {
 }
 
 void ConsoleReporter::printTestFilters() {
-    if (m_config->testSpec().hasFilters())
-        stream << Colour(Colour::BrightYellow) << "Filters: " << serializeFilters( m_config->getTestsOrTags() ) << '\n';
+    if (m_config->testSpec().hasFilters()) {
+        Colour guard(Colour::BrightYellow);
+        stream << "Filters: " << serializeFilters(m_config->getTestsOrTags()) << '\n';
+    }
 }
 
 CATCH_REGISTER_REPORTER("console", ConsoleReporter)
@@ -14326,6 +16666,10 @@ CATCH_REGISTER_REPORTER("console", ConsoleReporter)
 #if defined(_MSC_VER)
 #pragma warning(pop)
 #endif
+
+#if defined(__clang__)
+#  pragma clang diagnostic pop
+#endif
 // end catch_reporter_console.cpp
 // start catch_reporter_junit.cpp
 
@@ -14462,8 +16806,8 @@ namespace Catch {
         for( auto const& child : groupNode.children )
             writeTestCase( *child );
 
-        xml.scopedElement( "system-out" ).writeText( trim( stdOutForSuite ), false );
-        xml.scopedElement( "system-err" ).writeText( trim( stdErrForSuite ), false );
+        xml.scopedElement( "system-out" ).writeText( trim( stdOutForSuite ), XmlFormatting::Newline );
+        xml.scopedElement( "system-err" ).writeText( trim( stdErrForSuite ), XmlFormatting::Newline );
     }
 
     void JunitReporter::writeTestCase( TestCaseNode const& testCaseNode ) {
@@ -14508,13 +16852,18 @@ namespace Catch {
                 xml.writeAttribute( "name", name );
             }
             xml.writeAttribute( "time", ::Catch::Detail::stringify( sectionNode.stats.durationInSeconds ) );
+            // This is not ideal, but it should be enough to mimic gtest's
+            // junit output.
+            // Ideally the JUnit reporter would also handle `skipTest`
+            // events and write those out appropriately.
+            xml.writeAttribute( "status", "run" );
 
             writeAssertions( sectionNode );
 
             if( !sectionNode.stdOut.empty() )
-                xml.scopedElement( "system-out" ).writeText( trim( sectionNode.stdOut ), false );
+                xml.scopedElement( "system-out" ).writeText( trim( sectionNode.stdOut ), XmlFormatting::Newline );
             if( !sectionNode.stdErr.empty() )
-                xml.scopedElement( "system-err" ).writeText( trim( sectionNode.stdErr ), false );
+                xml.scopedElement( "system-err" ).writeText( trim( sectionNode.stdErr ), XmlFormatting::Newline );
         }
         for( auto const& childNode : sectionNode.childSections )
             if( className.empty() )
@@ -14538,11 +16887,7 @@ namespace Catch {
                     elementName = "error";
                     break;
                 case ResultWas::ExplicitFailure:
-                    elementName = "failure";
-                    break;
                 case ResultWas::ExpressionFailed:
-                    elementName = "failure";
-                    break;
                 case ResultWas::DidntThrowException:
                     elementName = "failure";
                     break;
@@ -14560,10 +16905,25 @@ namespace Catch {
 
             XmlWriter::ScopedElement e = xml.scopedElement( elementName );
 
-            xml.writeAttribute( "message", result.getExpandedExpression() );
+            xml.writeAttribute( "message", result.getExpression() );
             xml.writeAttribute( "type", result.getTestMacroName() );
 
             ReusableStringStream rss;
+            if (stats.totals.assertions.total() > 0) {
+                rss << "FAILED" << ":\n";
+                if (result.hasExpression()) {
+                    rss << "  ";
+                    rss << result.getExpressionInMacro();
+                    rss << '\n';
+                }
+                if (result.hasExpandedExpression()) {
+                    rss << "with expansion:\n";
+                    rss << Column(result.getExpandedExpression()).indent(2) << '\n';
+                }
+            } else {
+                rss << '\n';
+            }
+
             if( !result.getMessage().empty() )
                 rss << result.getMessage() << '\n';
             for( auto const& msg : stats.infoMessages )
@@ -14571,7 +16931,7 @@ namespace Catch {
                     rss << msg.message << '\n';
 
             rss << "at " << result.getSourceInfo();
-            xml.writeText( rss.str(), false );
+            xml.writeText( rss.str(), XmlFormatting::Newline );
         }
     }
 
@@ -14615,19 +16975,41 @@ namespace Catch {
         m_reporter->noMatchingTestCases( spec );
     }
 
+    void ListeningReporter::reportInvalidArguments(std::string const&arg){
+        for ( auto const& listener : m_listeners ) {
+            listener->reportInvalidArguments( arg );
+        }
+        m_reporter->reportInvalidArguments( arg );
+    }
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+    void ListeningReporter::benchmarkPreparing( std::string const& name ) {
+		for (auto const& listener : m_listeners) {
+			listener->benchmarkPreparing(name);
+		}
+		m_reporter->benchmarkPreparing(name);
+	}
     void ListeningReporter::benchmarkStarting( BenchmarkInfo const& benchmarkInfo ) {
         for ( auto const& listener : m_listeners ) {
             listener->benchmarkStarting( benchmarkInfo );
         }
         m_reporter->benchmarkStarting( benchmarkInfo );
     }
-    void ListeningReporter::benchmarkEnded( BenchmarkStats const& benchmarkStats ) {
+    void ListeningReporter::benchmarkEnded( BenchmarkStats<> const& benchmarkStats ) {
         for ( auto const& listener : m_listeners ) {
             listener->benchmarkEnded( benchmarkStats );
         }
         m_reporter->benchmarkEnded( benchmarkStats );
     }
 
+	void ListeningReporter::benchmarkFailed( std::string const& error ) {
+		for (auto const& listener : m_listeners) {
+			listener->benchmarkFailed(error);
+		}
+		m_reporter->benchmarkFailed(error);
+	}
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
     void ListeningReporter::testRunStarting( TestRunInfo const& testRunInfo ) {
         for ( auto const& listener : m_listeners ) {
             listener->testRunStarting( testRunInfo );
@@ -14895,9 +17277,9 @@ namespace Catch {
             e.writeAttribute( "durationInSeconds", m_testCaseTimer.getElapsedSeconds() );
 
         if( !testCaseStats.stdOut.empty() )
-            m_xml.scopedElement( "StdOut" ).writeText( trim( testCaseStats.stdOut ), false );
+            m_xml.scopedElement( "StdOut" ).writeText( trim( testCaseStats.stdOut ), XmlFormatting::Newline );
         if( !testCaseStats.stdErr.empty() )
-            m_xml.scopedElement( "StdErr" ).writeText( trim( testCaseStats.stdErr ), false );
+            m_xml.scopedElement( "StdErr" ).writeText( trim( testCaseStats.stdErr ), XmlFormatting::Newline );
 
         m_xml.endElement();
     }
@@ -14909,6 +17291,10 @@ namespace Catch {
             .writeAttribute( "successes", testGroupStats.totals.assertions.passed )
             .writeAttribute( "failures", testGroupStats.totals.assertions.failed )
             .writeAttribute( "expectedFailures", testGroupStats.totals.assertions.failedButOk );
+        m_xml.scopedElement( "OverallResultsCases")
+            .writeAttribute( "successes", testGroupStats.totals.testCases.passed )
+            .writeAttribute( "failures", testGroupStats.totals.testCases.failed )
+            .writeAttribute( "expectedFailures", testGroupStats.totals.testCases.failedButOk );
         m_xml.endElement();
     }
 
@@ -14918,8 +17304,57 @@ namespace Catch {
             .writeAttribute( "successes", testRunStats.totals.assertions.passed )
             .writeAttribute( "failures", testRunStats.totals.assertions.failed )
             .writeAttribute( "expectedFailures", testRunStats.totals.assertions.failedButOk );
+        m_xml.scopedElement( "OverallResultsCases")
+            .writeAttribute( "successes", testRunStats.totals.testCases.passed )
+            .writeAttribute( "failures", testRunStats.totals.testCases.failed )
+            .writeAttribute( "expectedFailures", testRunStats.totals.testCases.failedButOk );
+        m_xml.endElement();
+    }
+
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+    void XmlReporter::benchmarkPreparing(std::string const& name) {
+        m_xml.startElement("BenchmarkResults")
+            .writeAttribute("name", name);
+    }
+
+    void XmlReporter::benchmarkStarting(BenchmarkInfo const &info) {
+        m_xml.writeAttribute("samples", info.samples)
+            .writeAttribute("resamples", info.resamples)
+            .writeAttribute("iterations", info.iterations)
+            .writeAttribute("clockResolution", info.clockResolution)
+            .writeAttribute("estimatedDuration", info.estimatedDuration)
+            .writeComment("All values in nano seconds");
+    }
+
+    void XmlReporter::benchmarkEnded(BenchmarkStats<> const& benchmarkStats) {
+        m_xml.startElement("mean")
+            .writeAttribute("value", benchmarkStats.mean.point.count())
+            .writeAttribute("lowerBound", benchmarkStats.mean.lower_bound.count())
+            .writeAttribute("upperBound", benchmarkStats.mean.upper_bound.count())
+            .writeAttribute("ci", benchmarkStats.mean.confidence_interval);
+        m_xml.endElement();
+        m_xml.startElement("standardDeviation")
+            .writeAttribute("value", benchmarkStats.standardDeviation.point.count())
+            .writeAttribute("lowerBound", benchmarkStats.standardDeviation.lower_bound.count())
+            .writeAttribute("upperBound", benchmarkStats.standardDeviation.upper_bound.count())
+            .writeAttribute("ci", benchmarkStats.standardDeviation.confidence_interval);
+        m_xml.endElement();
+        m_xml.startElement("outliers")
+            .writeAttribute("variance", benchmarkStats.outlierVariance)
+            .writeAttribute("lowMild", benchmarkStats.outliers.low_mild)
+            .writeAttribute("lowSevere", benchmarkStats.outliers.low_severe)
+            .writeAttribute("highMild", benchmarkStats.outliers.high_mild)
+            .writeAttribute("highSevere", benchmarkStats.outliers.high_severe);
+        m_xml.endElement();
+        m_xml.endElement();
+    }
+
+    void XmlReporter::benchmarkFailed(std::string const &error) {
+        m_xml.scopedElement("failed").
+            writeAttribute("message", error);
         m_xml.endElement();
     }
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
 
     CATCH_REGISTER_REPORTER( "xml", XmlReporter )
 
@@ -14946,7 +17381,7 @@ namespace Catch {
 
 #ifndef __OBJC__
 
-#if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(_UNICODE) && !defined(DO_NOT_USE_WMAIN)
+#if defined(CATCH_CONFIG_WCHAR) && defined(CATCH_PLATFORM_WINDOWS) && defined(_UNICODE) && !defined(DO_NOT_USE_WMAIN)
 // Standard C/C++ Win32 Unicode wmain entry point
 extern "C" int wmain (int argc, wchar_t * argv[], wchar_t * []) {
 #else
@@ -15077,6 +17512,13 @@ int main (int argc, char * const argv[]) {
 #define CATCH_THEN( desc )      INTERNAL_CATCH_DYNAMIC_SECTION( "     Then: " << desc )
 #define CATCH_AND_THEN( desc )  INTERNAL_CATCH_DYNAMIC_SECTION( "      And: " << desc )
 
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+#define CATCH_BENCHMARK(...) \
+    INTERNAL_CATCH_BENCHMARK(INTERNAL_CATCH_UNIQUE_NAME(____C_A_T_C_H____B_E_N_C_H____), INTERNAL_CATCH_GET_1_ARG(__VA_ARGS__,,), INTERNAL_CATCH_GET_2_ARG(__VA_ARGS__,,))
+#define CATCH_BENCHMARK_ADVANCED(name) \
+    INTERNAL_CATCH_BENCHMARK_ADVANCED(INTERNAL_CATCH_UNIQUE_NAME(____C_A_T_C_H____B_E_N_C_H____), name)
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
 // If CATCH_CONFIG_PREFIX_ALL is not defined then the CATCH_ prefix is not required
 #else
 
@@ -15136,6 +17578,8 @@ int main (int argc, char * const argv[]) {
 #define TEMPLATE_PRODUCT_TEST_CASE_SIG( ... ) INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG( __VA_ARGS__ )
 #define TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, __VA_ARGS__ )
 #define TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ )
+#define TEMPLATE_LIST_TEST_CASE( ... ) INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE(__VA_ARGS__)
+#define TEMPLATE_LIST_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD( className, __VA_ARGS__ )
 #else
 #define TEMPLATE_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ ) )
 #define TEMPLATE_TEST_CASE_SIG( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG( __VA_ARGS__ ) )
@@ -15145,6 +17589,8 @@ int main (int argc, char * const argv[]) {
 #define TEMPLATE_PRODUCT_TEST_CASE_SIG( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG( __VA_ARGS__ ) )
 #define TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, __VA_ARGS__ ) )
 #define TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ ) )
+#define TEMPLATE_LIST_TEST_CASE( ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE( __VA_ARGS__ ) )
+#define TEMPLATE_LIST_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD( className, __VA_ARGS__ ) )
 #endif
 
 #if !defined(CATCH_CONFIG_RUNTIME_STATIC_REQUIRE)
@@ -15170,6 +17616,13 @@ int main (int argc, char * const argv[]) {
 #define THEN( desc )      INTERNAL_CATCH_DYNAMIC_SECTION( "     Then: " << desc )
 #define AND_THEN( desc )  INTERNAL_CATCH_DYNAMIC_SECTION( "      And: " << desc )
 
+#if defined(CATCH_CONFIG_ENABLE_BENCHMARKING)
+#define BENCHMARK(...) \
+    INTERNAL_CATCH_BENCHMARK(INTERNAL_CATCH_UNIQUE_NAME(____C_A_T_C_H____B_E_N_C_H____), INTERNAL_CATCH_GET_1_ARG(__VA_ARGS__,,), INTERNAL_CATCH_GET_2_ARG(__VA_ARGS__,,))
+#define BENCHMARK_ADVANCED(name) \
+    INTERNAL_CATCH_BENCHMARK_ADVANCED(INTERNAL_CATCH_UNIQUE_NAME(____C_A_T_C_H____B_E_N_C_H____), name)
+#endif // CATCH_CONFIG_ENABLE_BENCHMARKING
+
 using Catch::Detail::Approx;
 
 #else // CATCH_CONFIG_DISABLE
diff --git a/externals/catch2/catch2/catch_reporter_automake.hpp b/externals/catch2/catch2/catch_reporter_automake.hpp
new file mode 100644
index 000000000..dbebe9751
--- /dev/null
+++ b/externals/catch2/catch2/catch_reporter_automake.hpp
@@ -0,0 +1,62 @@
+/*
+ *  Created by Justin R. Wilson on 2/19/2017.
+ *  Copyright 2017 Justin R. Wilson. All rights reserved.
+ *
+ *  Distributed under the Boost Software License, Version 1.0. (See accompanying
+ *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef TWOBLUECUBES_CATCH_REPORTER_AUTOMAKE_HPP_INCLUDED
+#define TWOBLUECUBES_CATCH_REPORTER_AUTOMAKE_HPP_INCLUDED
+
+// Don't #include any Catch headers here - we can assume they are already
+// included before this header.
+// This is not good practice in general but is necessary in this case so this
+// file can be distributed as a single header that works with the main
+// Catch single header.
+
+namespace Catch {
+
+    struct AutomakeReporter : StreamingReporterBase<AutomakeReporter> {
+        AutomakeReporter( ReporterConfig const& _config )
+          :   StreamingReporterBase( _config )
+        {}
+
+        ~AutomakeReporter() override;
+
+        static std::string getDescription() {
+            return "Reports test results in the format of Automake .trs files";
+        }
+
+        void assertionStarting( AssertionInfo const& ) override {}
+
+        bool assertionEnded( AssertionStats const& /*_assertionStats*/ ) override { return true; }
+
+        void testCaseEnded( TestCaseStats const& _testCaseStats ) override {
+            // Possible values to emit are PASS, XFAIL, SKIP, FAIL, XPASS and ERROR.
+            stream << ":test-result: ";
+            if (_testCaseStats.totals.assertions.allPassed()) {
+                stream << "PASS";
+            } else if (_testCaseStats.totals.assertions.allOk()) {
+                stream << "XFAIL";
+            } else {
+                stream << "FAIL";
+            }
+            stream << ' ' << _testCaseStats.testInfo.name << '\n';
+            StreamingReporterBase::testCaseEnded( _testCaseStats );
+        }
+
+        void skipTest( TestCaseInfo const& testInfo ) override {
+            stream << ":test-result: SKIP " << testInfo.name << '\n';
+        }
+
+    };
+
+#ifdef CATCH_IMPL
+    AutomakeReporter::~AutomakeReporter() {}
+#endif
+
+    CATCH_REGISTER_REPORTER( "automake", AutomakeReporter)
+
+} // end namespace Catch
+
+#endif // TWOBLUECUBES_CATCH_REPORTER_AUTOMAKE_HPP_INCLUDED
diff --git a/externals/catch2/catch2/catch_reporter_sonarqube.hpp b/externals/catch2/catch2/catch_reporter_sonarqube.hpp
new file mode 100644
index 000000000..bf7d9299a
--- /dev/null
+++ b/externals/catch2/catch2/catch_reporter_sonarqube.hpp
@@ -0,0 +1,181 @@
+/*
+ *  Created by Daniel Garcia on 2018-12-04.
+ *  Copyright Social Point SL. All rights reserved.
+ *
+ *  Distributed under the Boost Software License, Version 1.0. (See accompanying
+ *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef CATCH_REPORTER_SONARQUBE_HPP_INCLUDED
+#define CATCH_REPORTER_SONARQUBE_HPP_INCLUDED
+
+
+// Don't #include any Catch headers here - we can assume they are already
+// included before this header.
+// This is not good practice in general but is necessary in this case so this
+// file can be distributed as a single header that works with the main
+// Catch single header.
+
+#include <map>
+
+namespace Catch {
+
+    struct SonarQubeReporter : CumulativeReporterBase<SonarQubeReporter> {
+
+        SonarQubeReporter(ReporterConfig const& config)
+        : CumulativeReporterBase(config)
+        , xml(config.stream()) {
+            m_reporterPrefs.shouldRedirectStdOut = true;
+            m_reporterPrefs.shouldReportAllAssertions = true;
+        }
+
+        ~SonarQubeReporter() override;
+
+        static std::string getDescription() {
+            return "Reports test results in the Generic Test Data SonarQube XML format";
+        }
+
+        static std::set<Verbosity> getSupportedVerbosities() {
+            return { Verbosity::Normal };
+        }
+
+        void noMatchingTestCases(std::string const& /*spec*/) override {}
+
+        void testRunStarting(TestRunInfo const& testRunInfo) override {
+            CumulativeReporterBase::testRunStarting(testRunInfo);
+            xml.startElement("testExecutions");
+            xml.writeAttribute("version", "1");
+        }
+
+        void testGroupEnded(TestGroupStats const& testGroupStats) override {
+            CumulativeReporterBase::testGroupEnded(testGroupStats);
+            writeGroup(*m_testGroups.back());
+        }
+
+        void testRunEndedCumulative() override {
+            xml.endElement();
+        }
+
+        void writeGroup(TestGroupNode const& groupNode) {
+            std::map<std::string, TestGroupNode::ChildNodes> testsPerFile;
+            for(auto const& child : groupNode.children)
+                testsPerFile[child->value.testInfo.lineInfo.file].push_back(child);
+
+            for(auto const& kv : testsPerFile)
+                writeTestFile(kv.first.c_str(), kv.second);
+        }
+
+        void writeTestFile(const char* filename, TestGroupNode::ChildNodes const& testCaseNodes) {
+            XmlWriter::ScopedElement e = xml.scopedElement("file");
+            xml.writeAttribute("path", filename);
+
+            for(auto const& child : testCaseNodes)
+                writeTestCase(*child);
+        }
+
+        void writeTestCase(TestCaseNode const& testCaseNode) {
+            // All test cases have exactly one section - which represents the
+            // test case itself. That section may have 0-n nested sections
+            assert(testCaseNode.children.size() == 1);
+            SectionNode const& rootSection = *testCaseNode.children.front();
+            writeSection("", rootSection, testCaseNode.value.testInfo.okToFail());
+        }
+
+        void writeSection(std::string const& rootName, SectionNode const& sectionNode, bool okToFail) {
+            std::string name = trim(sectionNode.stats.sectionInfo.name);
+            if(!rootName.empty())
+                name = rootName + '/' + name;
+
+            if(!sectionNode.assertions.empty() || !sectionNode.stdOut.empty() || !sectionNode.stdErr.empty()) {
+                XmlWriter::ScopedElement e = xml.scopedElement("testCase");
+                xml.writeAttribute("name", name);
+                xml.writeAttribute("duration", static_cast<long>(sectionNode.stats.durationInSeconds * 1000));
+
+                writeAssertions(sectionNode, okToFail);
+            }
+
+            for(auto const& childNode : sectionNode.childSections)
+                writeSection(name, *childNode, okToFail);
+        }
+
+        void writeAssertions(SectionNode const& sectionNode, bool okToFail) {
+            for(auto const& assertion : sectionNode.assertions)
+                writeAssertion( assertion, okToFail);
+        }
+
+        void writeAssertion(AssertionStats const& stats, bool okToFail) {
+            AssertionResult const& result = stats.assertionResult;
+            if(!result.isOk()) {
+                std::string elementName;
+                if(okToFail) {
+                    elementName = "skipped";
+                }
+                else {
+                    switch(result.getResultType()) {
+                        case ResultWas::ThrewException:
+                        case ResultWas::FatalErrorCondition:
+                            elementName = "error";
+                            break;
+                        case ResultWas::ExplicitFailure:
+                            elementName = "failure";
+                            break;
+                        case ResultWas::ExpressionFailed:
+                            elementName = "failure";
+                            break;
+                        case ResultWas::DidntThrowException:
+                            elementName = "failure";
+                            break;
+
+                            // We should never see these here:
+                        case ResultWas::Info:
+                        case ResultWas::Warning:
+                        case ResultWas::Ok:
+                        case ResultWas::Unknown:
+                        case ResultWas::FailureBit:
+                        case ResultWas::Exception:
+                            elementName = "internalError";
+                            break;
+                    }
+                }
+
+                XmlWriter::ScopedElement e = xml.scopedElement(elementName);
+
+                ReusableStringStream messageRss;
+                messageRss << result.getTestMacroName() << "(" << result.getExpression() << ")";
+                xml.writeAttribute("message", messageRss.str());
+
+                ReusableStringStream textRss;
+                if (stats.totals.assertions.total() > 0) {
+                    textRss << "FAILED:\n";
+                    if (result.hasExpression()) {
+                        textRss << "\t" << result.getExpressionInMacro() << "\n";
+                    }
+                    if (result.hasExpandedExpression()) {
+                        textRss << "with expansion:\n\t" << result.getExpandedExpression() << "\n";
+                    }
+                }
+
+                if(!result.getMessage().empty())
+                    textRss << result.getMessage() << "\n";
+
+                for(auto const& msg : stats.infoMessages)
+                    if(msg.type == ResultWas::Info)
+                        textRss << msg.message << "\n";
+
+                textRss << "at " << result.getSourceInfo();
+                xml.writeText(textRss.str(), XmlFormatting::Newline);
+            }
+        }
+
+    private:
+        XmlWriter xml;
+    };
+
+#ifdef CATCH_IMPL
+    SonarQubeReporter::~SonarQubeReporter() {}
+#endif
+
+    CATCH_REGISTER_REPORTER( "sonarqube", SonarQubeReporter )
+
+} // end namespace Catch
+
+#endif // CATCH_REPORTER_SONARQUBE_HPP_INCLUDED
\ No newline at end of file
diff --git a/externals/catch2/catch2/catch_reporter_tap.hpp b/externals/catch2/catch2/catch_reporter_tap.hpp
new file mode 100644
index 000000000..5ac8524ce
--- /dev/null
+++ b/externals/catch2/catch2/catch_reporter_tap.hpp
@@ -0,0 +1,254 @@
+/*
+ *  Created by Colton Wolkins on 2015-08-15.
+ *  Copyright 2015 Martin Moene. All rights reserved.
+ *
+ *  Distributed under the Boost Software License, Version 1.0. (See accompanying
+ *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef TWOBLUECUBES_CATCH_REPORTER_TAP_HPP_INCLUDED
+#define TWOBLUECUBES_CATCH_REPORTER_TAP_HPP_INCLUDED
+
+
+// Don't #include any Catch headers here - we can assume they are already
+// included before this header.
+// This is not good practice in general but is necessary in this case so this
+// file can be distributed as a single header that works with the main
+// Catch single header.
+
+#include <algorithm>
+
+namespace Catch {
+
+    struct TAPReporter : StreamingReporterBase<TAPReporter> {
+
+        using StreamingReporterBase::StreamingReporterBase;
+
+        TAPReporter( ReporterConfig const& config ):
+            StreamingReporterBase( config ) {
+            m_reporterPrefs.shouldReportAllAssertions = true;
+        }
+
+        ~TAPReporter() override;
+
+        static std::string getDescription() {
+            return "Reports test results in TAP format, suitable for test harnesses";
+        }
+
+        void noMatchingTestCases( std::string const& spec ) override {
+            stream << "# No test cases matched '" << spec << "'" << std::endl;
+        }
+
+        void assertionStarting( AssertionInfo const& ) override {}
+
+        bool assertionEnded( AssertionStats const& _assertionStats ) override {
+            ++counter;
+
+            stream << "# " << currentTestCaseInfo->name << std::endl;
+            AssertionPrinter printer( stream, _assertionStats, counter );
+            printer.print();
+
+            stream << std::endl;
+            return true;
+        }
+
+        void testRunEnded( TestRunStats const& _testRunStats ) override {
+            printTotals( _testRunStats.totals );
+            stream << "\n" << std::endl;
+            StreamingReporterBase::testRunEnded( _testRunStats );
+        }
+
+    private:
+        std::size_t counter = 0;
+        class AssertionPrinter {
+        public:
+            AssertionPrinter& operator= ( AssertionPrinter const& ) = delete;
+            AssertionPrinter( AssertionPrinter const& ) = delete;
+            AssertionPrinter( std::ostream& _stream, AssertionStats const& _stats, std::size_t _counter )
+            : stream( _stream )
+            , result( _stats.assertionResult )
+            , messages( _stats.infoMessages )
+            , itMessage( _stats.infoMessages.begin() )
+            , printInfoMessages( true )
+            , counter(_counter)
+            {}
+
+            void print() {
+                itMessage = messages.begin();
+
+                switch( result.getResultType() ) {
+                    case ResultWas::Ok:
+                        printResultType( passedString() );
+                        printOriginalExpression();
+                        printReconstructedExpression();
+                        if ( ! result.hasExpression() )
+                            printRemainingMessages( Colour::None );
+                        else
+                            printRemainingMessages();
+                        break;
+                    case ResultWas::ExpressionFailed:
+                        if (result.isOk()) {
+                            printResultType(passedString());
+                        } else {
+                            printResultType(failedString());
+                        }
+                        printOriginalExpression();
+                        printReconstructedExpression();
+                        if (result.isOk()) {
+                            printIssue(" # TODO");
+                        }
+                        printRemainingMessages();
+                        break;
+                    case ResultWas::ThrewException:
+                        printResultType( failedString() );
+                        printIssue( "unexpected exception with message:" );
+                        printMessage();
+                        printExpressionWas();
+                        printRemainingMessages();
+                        break;
+                    case ResultWas::FatalErrorCondition:
+                        printResultType( failedString() );
+                        printIssue( "fatal error condition with message:" );
+                        printMessage();
+                        printExpressionWas();
+                        printRemainingMessages();
+                        break;
+                    case ResultWas::DidntThrowException:
+                        printResultType( failedString() );
+                        printIssue( "expected exception, got none" );
+                        printExpressionWas();
+                        printRemainingMessages();
+                        break;
+                    case ResultWas::Info:
+                        printResultType( "info" );
+                        printMessage();
+                        printRemainingMessages();
+                        break;
+                    case ResultWas::Warning:
+                        printResultType( "warning" );
+                        printMessage();
+                        printRemainingMessages();
+                        break;
+                    case ResultWas::ExplicitFailure:
+                        printResultType( failedString() );
+                        printIssue( "explicitly" );
+                        printRemainingMessages( Colour::None );
+                        break;
+                    // These cases are here to prevent compiler warnings
+                    case ResultWas::Unknown:
+                    case ResultWas::FailureBit:
+                    case ResultWas::Exception:
+                        printResultType( "** internal error **" );
+                        break;
+                }
+            }
+
+        private:
+            static Colour::Code dimColour() { return Colour::FileName; }
+
+            static const char* failedString() { return "not ok"; }
+            static const char* passedString() { return "ok"; }
+
+            void printSourceInfo() const {
+                Colour colourGuard( dimColour() );
+                stream << result.getSourceInfo() << ":";
+            }
+
+            void printResultType( std::string const& passOrFail ) const {
+                if( !passOrFail.empty() ) {
+                    stream << passOrFail << ' ' << counter << " -";
+                }
+            }
+
+            void printIssue( std::string const& issue ) const {
+                stream << " " << issue;
+            }
+
+            void printExpressionWas() {
+                if( result.hasExpression() ) {
+                    stream << ";";
+                    {
+                        Colour colour( dimColour() );
+                        stream << " expression was:";
+                    }
+                    printOriginalExpression();
+                }
+            }
+
+            void printOriginalExpression() const {
+                if( result.hasExpression() ) {
+                    stream << " " << result.getExpression();
+                }
+            }
+
+            void printReconstructedExpression() const {
+                if( result.hasExpandedExpression() ) {
+                    {
+                        Colour colour( dimColour() );
+                        stream << " for: ";
+                    }
+                    std::string expr = result.getExpandedExpression();
+                    std::replace( expr.begin(), expr.end(), '\n', ' ');
+                    stream << expr;
+                }
+            }
+
+            void printMessage() {
+                if ( itMessage != messages.end() ) {
+                    stream << " '" << itMessage->message << "'";
+                    ++itMessage;
+                }
+            }
+
+            void printRemainingMessages( Colour::Code colour = dimColour() ) {
+                if (itMessage == messages.end()) {
+                    return;
+                }
+
+                const auto itEnd = messages.cend();
+                const auto N = static_cast<std::size_t>( std::distance( itMessage, itEnd ) );
+
+                {
+                    Colour colourGuard( colour );
+                    stream << " with " << pluralise( N, "message" ) << ":";
+                }
+
+                while( itMessage != itEnd ) {
+                    // If this assertion is a warning ignore any INFO messages
+                    if( printInfoMessages || itMessage->type != ResultWas::Info ) {
+                        stream << " '" << itMessage->message << "'";
+                        if ( ++itMessage != itEnd ) {
+                            Colour colourGuard( dimColour() );
+                            stream << " and";
+                        }
+                        continue;
+                    }
+                    ++itMessage;
+                }
+            }
+
+        private:
+            std::ostream& stream;
+            AssertionResult const& result;
+            std::vector<MessageInfo> messages;
+            std::vector<MessageInfo>::const_iterator itMessage;
+            bool printInfoMessages;
+            std::size_t counter;
+        };
+
+        void printTotals( const Totals& totals ) const {
+            stream << "1.." << totals.assertions.total();
+            if( totals.testCases.total() == 0 ) {
+                stream << " # Skipped: No tests ran.";
+            }
+        }
+    };
+
+#ifdef CATCH_IMPL
+    TAPReporter::~TAPReporter() {}
+#endif
+
+    CATCH_REGISTER_REPORTER( "tap", TAPReporter )
+
+} // end namespace Catch
+
+#endif // TWOBLUECUBES_CATCH_REPORTER_TAP_HPP_INCLUDED
diff --git a/externals/catch2/catch2/catch_reporter_teamcity.hpp b/externals/catch2/catch2/catch_reporter_teamcity.hpp
new file mode 100644
index 000000000..47b7e4aac
--- /dev/null
+++ b/externals/catch2/catch2/catch_reporter_teamcity.hpp
@@ -0,0 +1,219 @@
+/*
+ *  Created by Phil Nash on 19th December 2014
+ *  Copyright 2014 Two Blue Cubes Ltd. All rights reserved.
+ *
+ *  Distributed under the Boost Software License, Version 1.0. (See accompanying
+ *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ */
+#ifndef TWOBLUECUBES_CATCH_REPORTER_TEAMCITY_HPP_INCLUDED
+#define TWOBLUECUBES_CATCH_REPORTER_TEAMCITY_HPP_INCLUDED
+
+// Don't #include any Catch headers here - we can assume they are already
+// included before this header.
+// This is not good practice in general but is necessary in this case so this
+// file can be distributed as a single header that works with the main
+// Catch single header.
+
+#include <cstring>
+
+#ifdef __clang__
+#   pragma clang diagnostic push
+#   pragma clang diagnostic ignored "-Wpadded"
+#endif
+
+namespace Catch {
+
+    struct TeamCityReporter : StreamingReporterBase<TeamCityReporter> {
+        TeamCityReporter( ReporterConfig const& _config )
+        :   StreamingReporterBase( _config )
+        {
+            m_reporterPrefs.shouldRedirectStdOut = true;
+        }
+
+        static std::string escape( std::string const& str ) {
+            std::string escaped = str;
+            replaceInPlace( escaped, "|", "||" );
+            replaceInPlace( escaped, "'", "|'" );
+            replaceInPlace( escaped, "\n", "|n" );
+            replaceInPlace( escaped, "\r", "|r" );
+            replaceInPlace( escaped, "[", "|[" );
+            replaceInPlace( escaped, "]", "|]" );
+            return escaped;
+        }
+        ~TeamCityReporter() override;
+
+        static std::string getDescription() {
+            return "Reports test results as TeamCity service messages";
+        }
+
+        void skipTest( TestCaseInfo const& /* testInfo */ ) override {
+        }
+
+        void noMatchingTestCases( std::string const& /* spec */ ) override {}
+
+        void testGroupStarting( GroupInfo const& groupInfo ) override {
+            StreamingReporterBase::testGroupStarting( groupInfo );
+            stream << "##teamcity[testSuiteStarted name='"
+                << escape( groupInfo.name ) << "']\n";
+        }
+        void testGroupEnded( TestGroupStats const& testGroupStats ) override {
+            StreamingReporterBase::testGroupEnded( testGroupStats );
+            stream << "##teamcity[testSuiteFinished name='"
+                << escape( testGroupStats.groupInfo.name ) << "']\n";
+        }
+
+
+        void assertionStarting( AssertionInfo const& ) override {}
+
+        bool assertionEnded( AssertionStats const& assertionStats ) override {
+            AssertionResult const& result = assertionStats.assertionResult;
+            if( !result.isOk() ) {
+
+                ReusableStringStream msg;
+                if( !m_headerPrintedForThisSection )
+                    printSectionHeader( msg.get() );
+                m_headerPrintedForThisSection = true;
+
+                msg << result.getSourceInfo() << "\n";
+
+                switch( result.getResultType() ) {
+                    case ResultWas::ExpressionFailed:
+                        msg << "expression failed";
+                        break;
+                    case ResultWas::ThrewException:
+                        msg << "unexpected exception";
+                        break;
+                    case ResultWas::FatalErrorCondition:
+                        msg << "fatal error condition";
+                        break;
+                    case ResultWas::DidntThrowException:
+                        msg << "no exception was thrown where one was expected";
+                        break;
+                    case ResultWas::ExplicitFailure:
+                        msg << "explicit failure";
+                        break;
+
+                    // We shouldn't get here because of the isOk() test
+                    case ResultWas::Ok:
+                    case ResultWas::Info:
+                    case ResultWas::Warning:
+                        CATCH_ERROR( "Internal error in TeamCity reporter" );
+                    // These cases are here to prevent compiler warnings
+                    case ResultWas::Unknown:
+                    case ResultWas::FailureBit:
+                    case ResultWas::Exception:
+                        CATCH_ERROR( "Not implemented" );
+                }
+                if( assertionStats.infoMessages.size() == 1 )
+                    msg << " with message:";
+                if( assertionStats.infoMessages.size() > 1 )
+                    msg << " with messages:";
+                for( auto const& messageInfo : assertionStats.infoMessages )
+                    msg << "\n  \"" << messageInfo.message << "\"";
+
+
+                if( result.hasExpression() ) {
+                    msg <<
+                        "\n  " << result.getExpressionInMacro() << "\n"
+                        "with expansion:\n" <<
+                        "  " << result.getExpandedExpression() << "\n";
+                }
+
+                if( currentTestCaseInfo->okToFail() ) {
+                    msg << "- failure ignore as test marked as 'ok to fail'\n";
+                    stream << "##teamcity[testIgnored"
+                           << " name='" << escape( currentTestCaseInfo->name )<< "'"
+                           << " message='" << escape( msg.str() ) << "'"
+                           << "]\n";
+                }
+                else {
+                    stream << "##teamcity[testFailed"
+                           << " name='" << escape( currentTestCaseInfo->name )<< "'"
+                           << " message='" << escape( msg.str() ) << "'"
+                           << "]\n";
+                }
+            }
+            stream.flush();
+            return true;
+        }
+
+        void sectionStarting( SectionInfo const& sectionInfo ) override {
+            m_headerPrintedForThisSection = false;
+            StreamingReporterBase::sectionStarting( sectionInfo );
+        }
+
+        void testCaseStarting( TestCaseInfo const& testInfo ) override {
+            m_testTimer.start();
+            StreamingReporterBase::testCaseStarting( testInfo );
+            stream << "##teamcity[testStarted name='"
+                << escape( testInfo.name ) << "']\n";
+            stream.flush();
+        }
+
+        void testCaseEnded( TestCaseStats const& testCaseStats ) override {
+            StreamingReporterBase::testCaseEnded( testCaseStats );
+            if( !testCaseStats.stdOut.empty() )
+                stream << "##teamcity[testStdOut name='"
+                    << escape( testCaseStats.testInfo.name )
+                    << "' out='" << escape( testCaseStats.stdOut ) << "']\n";
+            if( !testCaseStats.stdErr.empty() )
+                stream << "##teamcity[testStdErr name='"
+                    << escape( testCaseStats.testInfo.name )
+                    << "' out='" << escape( testCaseStats.stdErr ) << "']\n";
+            stream << "##teamcity[testFinished name='"
+                    << escape( testCaseStats.testInfo.name ) << "' duration='"
+                    << m_testTimer.getElapsedMilliseconds() << "']\n";
+            stream.flush();
+        }
+
+    private:
+        void printSectionHeader( std::ostream& os ) {
+            assert( !m_sectionStack.empty() );
+
+            if( m_sectionStack.size() > 1 ) {
+                os << getLineOfChars<'-'>() << "\n";
+
+                std::vector<SectionInfo>::const_iterator
+                it = m_sectionStack.begin()+1, // Skip first section (test case)
+                itEnd = m_sectionStack.end();
+                for( ; it != itEnd; ++it )
+                    printHeaderString( os, it->name );
+                os << getLineOfChars<'-'>() << "\n";
+            }
+
+            SourceLineInfo lineInfo = m_sectionStack.front().lineInfo;
+
+            os << lineInfo << "\n";
+            os << getLineOfChars<'.'>() << "\n\n";
+        }
+
+        // if string has a : in first line will set indent to follow it on
+        // subsequent lines
+        static void printHeaderString( std::ostream& os, std::string const& _string, std::size_t indent = 0 ) {
+            std::size_t i = _string.find( ": " );
+            if( i != std::string::npos )
+                i+=2;
+            else
+                i = 0;
+            os << Column( _string )
+                           .indent( indent+i)
+                           .initialIndent( indent ) << "\n";
+        }
+    private:
+        bool m_headerPrintedForThisSection = false;
+        Timer m_testTimer;
+    };
+
+#ifdef CATCH_IMPL
+    TeamCityReporter::~TeamCityReporter() {}
+#endif
+
+    CATCH_REGISTER_REPORTER( "teamcity", TeamCityReporter )
+
+} // end namespace Catch
+
+#ifdef __clang__
+#   pragma clang diagnostic pop
+#endif
+
+#endif // TWOBLUECUBES_CATCH_REPORTER_TEAMCITY_HPP_INCLUDED
diff --git a/ThirdParty/phys/units/io.hpp b/externals/phys_units/phys/units/io.hpp
similarity index 100%
rename from ThirdParty/phys/units/io.hpp
rename to externals/phys_units/phys/units/io.hpp
diff --git a/ThirdParty/phys/units/io_output.hpp b/externals/phys_units/phys/units/io_output.hpp
similarity index 100%
rename from ThirdParty/phys/units/io_output.hpp
rename to externals/phys_units/phys/units/io_output.hpp
diff --git a/ThirdParty/phys/units/io_output_eng.hpp b/externals/phys_units/phys/units/io_output_eng.hpp
similarity index 100%
rename from ThirdParty/phys/units/io_output_eng.hpp
rename to externals/phys_units/phys/units/io_output_eng.hpp
diff --git a/ThirdParty/phys/units/io_symbols.hpp b/externals/phys_units/phys/units/io_symbols.hpp
similarity index 100%
rename from ThirdParty/phys/units/io_symbols.hpp
rename to externals/phys_units/phys/units/io_symbols.hpp
diff --git a/ThirdParty/phys/units/other_units.hpp b/externals/phys_units/phys/units/other_units.hpp
similarity index 100%
rename from ThirdParty/phys/units/other_units.hpp
rename to externals/phys_units/phys/units/other_units.hpp
diff --git a/ThirdParty/phys/units/physical_constants.hpp b/externals/phys_units/phys/units/physical_constants.hpp
similarity index 100%
rename from ThirdParty/phys/units/physical_constants.hpp
rename to externals/phys_units/phys/units/physical_constants.hpp
diff --git a/ThirdParty/phys/units/quantity.hpp b/externals/phys_units/phys/units/quantity.hpp
similarity index 99%
rename from ThirdParty/phys/units/quantity.hpp
rename to externals/phys_units/phys/units/quantity.hpp
index 0751923b0..970773d59 100644
--- a/ThirdParty/phys/units/quantity.hpp
+++ b/externals/phys_units/phys/units/quantity.hpp
@@ -31,7 +31,6 @@
 #include <cmath>
 #include <cstdlib>
 #include <utility> // std::declval
-#include <type_traits> // std::enable_if
 
 /// namespace phys.
 
@@ -359,10 +358,6 @@ namespace phys {
       static constexpr quantity zero() { return quantity{value_type(0.0)}; }
       //    static constexpr quantity zero = quantity{ value_type( 0.0 ) };
 
-      // RU, added conversion to T (often: double) for dimensionless_d
-      template <typename DIM=Dims, std::enable_if_t<std::is_same_v<DIM, dimensionless_d>, int> = 0>
-      operator T() { return m_value; }
-      
     private:
       /**
        * private initializing constructor.
diff --git a/ThirdParty/phys/units/quantity_io.hpp b/externals/phys_units/phys/units/quantity_io.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io.hpp
rename to externals/phys_units/phys/units/quantity_io.hpp
diff --git a/ThirdParty/phys/units/quantity_io_ampere.hpp b/externals/phys_units/phys/units/quantity_io_ampere.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_ampere.hpp
rename to externals/phys_units/phys/units/quantity_io_ampere.hpp
diff --git a/ThirdParty/phys/units/quantity_io_becquerel.hpp b/externals/phys_units/phys/units/quantity_io_becquerel.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_becquerel.hpp
rename to externals/phys_units/phys/units/quantity_io_becquerel.hpp
diff --git a/ThirdParty/phys/units/quantity_io_candela.hpp b/externals/phys_units/phys/units/quantity_io_candela.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_candela.hpp
rename to externals/phys_units/phys/units/quantity_io_candela.hpp
diff --git a/ThirdParty/phys/units/quantity_io_celsius.hpp b/externals/phys_units/phys/units/quantity_io_celsius.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_celsius.hpp
rename to externals/phys_units/phys/units/quantity_io_celsius.hpp
diff --git a/ThirdParty/phys/units/quantity_io_coulomb.hpp b/externals/phys_units/phys/units/quantity_io_coulomb.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_coulomb.hpp
rename to externals/phys_units/phys/units/quantity_io_coulomb.hpp
diff --git a/ThirdParty/phys/units/quantity_io_dimensionless.hpp b/externals/phys_units/phys/units/quantity_io_dimensionless.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_dimensionless.hpp
rename to externals/phys_units/phys/units/quantity_io_dimensionless.hpp
diff --git a/ThirdParty/phys/units/quantity_io_engineering.hpp b/externals/phys_units/phys/units/quantity_io_engineering.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_engineering.hpp
rename to externals/phys_units/phys/units/quantity_io_engineering.hpp
diff --git a/ThirdParty/phys/units/quantity_io_farad.hpp b/externals/phys_units/phys/units/quantity_io_farad.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_farad.hpp
rename to externals/phys_units/phys/units/quantity_io_farad.hpp
diff --git a/ThirdParty/phys/units/quantity_io_gray.hpp b/externals/phys_units/phys/units/quantity_io_gray.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_gray.hpp
rename to externals/phys_units/phys/units/quantity_io_gray.hpp
diff --git a/ThirdParty/phys/units/quantity_io_henry.hpp b/externals/phys_units/phys/units/quantity_io_henry.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_henry.hpp
rename to externals/phys_units/phys/units/quantity_io_henry.hpp
diff --git a/ThirdParty/phys/units/quantity_io_hertz.hpp b/externals/phys_units/phys/units/quantity_io_hertz.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_hertz.hpp
rename to externals/phys_units/phys/units/quantity_io_hertz.hpp
diff --git a/ThirdParty/phys/units/quantity_io_joule.hpp b/externals/phys_units/phys/units/quantity_io_joule.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_joule.hpp
rename to externals/phys_units/phys/units/quantity_io_joule.hpp
diff --git a/ThirdParty/phys/units/quantity_io_kelvin.hpp b/externals/phys_units/phys/units/quantity_io_kelvin.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_kelvin.hpp
rename to externals/phys_units/phys/units/quantity_io_kelvin.hpp
diff --git a/ThirdParty/phys/units/quantity_io_kilogram.hpp b/externals/phys_units/phys/units/quantity_io_kilogram.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_kilogram.hpp
rename to externals/phys_units/phys/units/quantity_io_kilogram.hpp
diff --git a/ThirdParty/phys/units/quantity_io_lumen.hpp b/externals/phys_units/phys/units/quantity_io_lumen.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_lumen.hpp
rename to externals/phys_units/phys/units/quantity_io_lumen.hpp
diff --git a/ThirdParty/phys/units/quantity_io_lux.hpp b/externals/phys_units/phys/units/quantity_io_lux.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_lux.hpp
rename to externals/phys_units/phys/units/quantity_io_lux.hpp
diff --git a/ThirdParty/phys/units/quantity_io_meter.hpp b/externals/phys_units/phys/units/quantity_io_meter.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_meter.hpp
rename to externals/phys_units/phys/units/quantity_io_meter.hpp
diff --git a/ThirdParty/phys/units/quantity_io_mole.hpp b/externals/phys_units/phys/units/quantity_io_mole.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_mole.hpp
rename to externals/phys_units/phys/units/quantity_io_mole.hpp
diff --git a/ThirdParty/phys/units/quantity_io_newton.hpp b/externals/phys_units/phys/units/quantity_io_newton.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_newton.hpp
rename to externals/phys_units/phys/units/quantity_io_newton.hpp
diff --git a/ThirdParty/phys/units/quantity_io_ohm.hpp b/externals/phys_units/phys/units/quantity_io_ohm.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_ohm.hpp
rename to externals/phys_units/phys/units/quantity_io_ohm.hpp
diff --git a/ThirdParty/phys/units/quantity_io_pascal.hpp b/externals/phys_units/phys/units/quantity_io_pascal.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_pascal.hpp
rename to externals/phys_units/phys/units/quantity_io_pascal.hpp
diff --git a/ThirdParty/phys/units/quantity_io_radian.hpp b/externals/phys_units/phys/units/quantity_io_radian.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_radian.hpp
rename to externals/phys_units/phys/units/quantity_io_radian.hpp
diff --git a/ThirdParty/phys/units/quantity_io_second.hpp b/externals/phys_units/phys/units/quantity_io_second.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_second.hpp
rename to externals/phys_units/phys/units/quantity_io_second.hpp
diff --git a/ThirdParty/phys/units/quantity_io_siemens.hpp b/externals/phys_units/phys/units/quantity_io_siemens.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_siemens.hpp
rename to externals/phys_units/phys/units/quantity_io_siemens.hpp
diff --git a/ThirdParty/phys/units/quantity_io_sievert.hpp b/externals/phys_units/phys/units/quantity_io_sievert.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_sievert.hpp
rename to externals/phys_units/phys/units/quantity_io_sievert.hpp
diff --git a/ThirdParty/phys/units/quantity_io_speed.hpp b/externals/phys_units/phys/units/quantity_io_speed.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_speed.hpp
rename to externals/phys_units/phys/units/quantity_io_speed.hpp
diff --git a/ThirdParty/phys/units/quantity_io_steradian.hpp b/externals/phys_units/phys/units/quantity_io_steradian.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_steradian.hpp
rename to externals/phys_units/phys/units/quantity_io_steradian.hpp
diff --git a/ThirdParty/phys/units/quantity_io_symbols.hpp b/externals/phys_units/phys/units/quantity_io_symbols.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_symbols.hpp
rename to externals/phys_units/phys/units/quantity_io_symbols.hpp
diff --git a/ThirdParty/phys/units/quantity_io_tesla.hpp b/externals/phys_units/phys/units/quantity_io_tesla.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_tesla.hpp
rename to externals/phys_units/phys/units/quantity_io_tesla.hpp
diff --git a/ThirdParty/phys/units/quantity_io_volt.hpp b/externals/phys_units/phys/units/quantity_io_volt.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_volt.hpp
rename to externals/phys_units/phys/units/quantity_io_volt.hpp
diff --git a/ThirdParty/phys/units/quantity_io_watt.hpp b/externals/phys_units/phys/units/quantity_io_watt.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_watt.hpp
rename to externals/phys_units/phys/units/quantity_io_watt.hpp
diff --git a/ThirdParty/phys/units/quantity_io_weber.hpp b/externals/phys_units/phys/units/quantity_io_weber.hpp
similarity index 100%
rename from ThirdParty/phys/units/quantity_io_weber.hpp
rename to externals/phys_units/phys/units/quantity_io_weber.hpp
diff --git a/Main/CMakeLists.txt b/src/Main/CMakeLists.txt
similarity index 100%
rename from Main/CMakeLists.txt
rename to src/Main/CMakeLists.txt
diff --git a/Main/shower.cc b/src/Main/shower.cpp
similarity index 100%
rename from Main/shower.cc
rename to src/Main/shower.cpp
diff --git a/tests/framework/CMakeLists.txt b/tests/framework/CMakeLists.txt
new file mode 100644
index 000000000..d62ee295f
--- /dev/null
+++ b/tests/framework/CMakeLists.txt
@@ -0,0 +1,38 @@
+
+set (sources
+  # testCascade.cpp this is most important, but whole content of former Processes folder missing yet
+  testCombinedStack.cpp
+  testCOMBoost.cpp
+  #testCorsikaFenv.cpp # does not work because of use of exceptions in catch2
+  testFourVector.cpp
+  testGeometry.cpp
+  #testLogging.cpp # irrelevant -> not used back in March
+  TestMain.cpp
+  testParticles.cpp
+  testProcessSequence.cpp
+  testRandom.cpp
+  testSecondaryView.cpp
+  testStackInterface.cpp
+  testUnits.cpp
+  )
+
+
+add_executable (testFramework ${sources})
+
+target_link_libraries (testFramework CORSIKA8 Catch2)
+
+target_compile_options (testFramework PRIVATE -g) # do not skip asserts
+
+target_include_directories (testFramework PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+
+file (MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/test_outputs/)
+
+if (CORSIKA_SANITIZERS_ENABLED)
+  # -O1 is suggested in clang docs to get reasonable performance
+  target_compile_options (${name} PRIVATE -O1 -fno-omit-frame-pointer -fsanitize=${sanitize} -fno-sanitize-recover=all)
+  set_target_properties (${name} PROPERTIES LINK_FLAGS "-fsanitize=${sanitize}")
+endif ()
+
+add_test (
+  NAME testFramework
+  COMMAND testFramework -o ${PROJECT_BINARY_DIR}/test_outputs/junit-${name}.xml -s -r junit)
diff --git a/Framework/Testing/TestMain.cc b/tests/framework/TestMain.cpp
similarity index 100%
rename from Framework/Testing/TestMain.cc
rename to tests/framework/TestMain.cpp
diff --git a/Framework/Utilities/testCOMBoost.cc b/tests/framework/testCOMBoost.cpp
similarity index 96%
rename from Framework/Utilities/testCOMBoost.cc
rename to tests/framework/testCOMBoost.cpp
index b6b677d23..58beafd52 100644
--- a/Framework/Utilities/testCOMBoost.cc
+++ b/tests/framework/testCOMBoost.cpp
@@ -8,16 +8,16 @@
 
 #include <catch2/catch.hpp>
 
-#include <corsika/geometry/FourVector.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <corsika/utl/COMBoost.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/framework/utility/COMBoost.hpp>
 
 #include <iostream>
 
-using namespace corsika::geometry;
-using namespace corsika::utl;
+using namespace corsika;
+using namespace corsika;
 using namespace corsika::units::si;
 using corsika::units::constants::c;
 using corsika::units::constants::cSquared;
diff --git a/Framework/Cascade/testCascade.cc b/tests/framework/testCascade.cpp
similarity index 68%
rename from Framework/Cascade/testCascade.cc
rename to tests/framework/testCascade.cpp
index a4863d65e..3caaf7484 100644
--- a/Framework/Cascade/testCascade.cc
+++ b/tests/framework/testCascade.cpp
@@ -6,30 +6,31 @@
  * the license.
  */
 
-#include <corsika/cascade/testCascade.h>
+#include <testCascade.h>
 
-#include <corsika/cascade/Cascade.h>
+#include <corsika/framework/core/Cascade.hpp>
 
-#include <corsika/process/ProcessSequence.h>
-#include <corsika/process/NullModel.h>
-#include <corsika/process/stack_inspector/StackInspector.h>
+#include <corsika/framework/sequence/ProcessSequence.hpp>
+#include <corsika/process/NullModel.hpp>
+#include <corsika/process/StackInspector.hpp>
+#include <corsika/process/TrackingLine.hpp>
 
-#include <corsika/particles/ParticleProperties.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
 
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
 
-#include <corsika/environment/HomogeneousMedium.h>
-#include <corsika/environment/NuclearComposition.h>
+#include <corsika/media/HomogeneousMedium.hpp>
+#include <corsika/media/NuclearComposition.hpp>
 
 #include <catch2/catch.hpp>
 
 using namespace corsika;
-using namespace corsika::process;
+using namespace corsika;
 using namespace corsika::units;
 using namespace corsika::units::si;
-using namespace corsika::geometry;
+using namespace corsika;
 
 #include <limits>
 using namespace std;
@@ -52,8 +53,11 @@ auto MakeDummyEnv() {
       Point{env.GetCoordinateSystem(), 0_m, 0_m, 0_m},
       1_m * std::numeric_limits<double>::infinity());
 
-  using MyEmptyModel = environment::Empty<environment::IEmpty>;
-  world->SetModelProperties<MyEmptyModel>();
+  using MyHomogeneousModel = environment::HomogeneousMedium<environment::IMediumModel>;
+  theMedium->SetModelProperties<MyHomogeneousModel>(
+      1_g / (1_cm * 1_cm * 1_cm),
+      environment::NuclearComposition(std::vector<Code>{Code::Proton},
+                                      std::vector<float>{1.}));
 
   universe.AddChild(std::move(world));
 
@@ -96,17 +100,16 @@ public:
     return 0_g / square(1_cm);
   }
 
-  template <typename TSecondaryView>
-  corsika::process::EProcessReturn DoInteraction(TSecondaryView& view) {
+  template <typename TProjectile>
+  corsika::EProcessReturn DoInteraction(TProjectile& vP) {
     fCalls++;
-    auto const projectile = view.GetProjectile();
-    const HEPEnergyType E = projectile.GetEnergy();
-    view.AddSecondary(std::make_tuple(projectile.GetPID(), E / 2,
-                                      projectile.GetMomentum(), projectile.GetPosition(),
-                                      projectile.GetTime()));
-    view.AddSecondary(std::make_tuple(projectile.GetPID(), E / 2,
-                                      projectile.GetMomentum(), projectile.GetPosition(),
-                                      projectile.GetTime()));
+    const HEPEnergyType E = vP.GetEnergy();
+    vP.AddSecondary(std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                               geometry::Point, units::si::TimeType>{
+        vP.GetPID(), E / 2, vP.GetMomentum(), vP.GetPosition(), vP.GetTime()});
+    vP.AddSecondary(std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                               geometry::Point, units::si::TimeType>{
+        vP.GetPID(), E / 2, vP.GetMomentum(), vP.GetPosition(), vP.GetTime()});
     return EProcessReturn::eInteracted;
   }
 
@@ -165,16 +168,12 @@ TEST_CASE("Cascade", "[Cascade]") {
   auto sequence = process::sequence(nullModel, stackInspect, split, cut);
   TestCascadeStack stack;
   stack.Clear();
-  stack.AddParticle(std::make_tuple(
-      particles::Code::Electron, E0,
-      corsika::stack::MomentumVector(
-          rootCS, {0_GeV, 0_GeV,
-                   -sqrt(E0 * E0 - units::static_pow<2>(
-                                       particles::GetMass(particles::Code::Electron)))}),
-      Point(rootCS, {0_m, 0_m, 10_km}), 0_ns));
-
-  DummyTracking tracking;
-  cascade::Cascade<DummyTracking, decltype(sequence), TestCascadeStack,
+  stack.AddParticle(std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                               geometry::Point, units::si::TimeType>{
+      Code::Electron, E0, corsika::MomentumVector(rootCS, {0_GeV, 0_GeV, -1_GeV}),
+      Point(rootCS, {0_m, 0_m, 10_km}), 0_ns});
+
+  cascade::Cascade<tracking_line::TrackingLine, decltype(sequence), TestCascadeStack,
                    TestCascadeStackView>
       EAS(env, tracking, sequence, stack);
 
diff --git a/tests/framework/testCascade.h b/tests/framework/testCascade.h
new file mode 100644
index 000000000..715012b9b
--- /dev/null
+++ b/tests/framework/testCascade.h
@@ -0,0 +1,40 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/Environment.hpp>
+
+#include <corsika/setup/SetupStack.hpp>
+
+using TestEnvironmentInterface = corsika::environment::IEmpty;
+using TestEnvironmentType = corsika::environment::Environment<TestEnvironmentInterface>;
+
+template <typename T>
+using SetupGeometryDataInterface =
+    corsika::stack::node::GeometryDataInterface<T, TestEnvironmentType>;
+
+// combine particle data stack with geometry information for tracking
+template <typename StackIter>
+using StackWithGeometryInterface =
+    corsika::CombinedParticleInterface<corsika::detail::ParticleDataStack::PIType,
+                                       SetupGeometryDataInterface, StackIter>;
+
+using TestCascadeStack =
+    corsika::CombinedStack<typename corsika::detail::ParticleDataStack::StackImpl,
+                           GeometryData<TestEnvironmentType>, StackWithGeometryInterface>;
+
+/*
+  See also Issue 161
+*/
+#if defined(__clang__)
+using TestCascadeStackView = corsika::SecondaryView<typename TestCascadeStack::StackImpl,
+                                                    StackWithGeometryInterface>;
+#elif defined(__GNUC__) || defined(__GNUG__)
+using TestCascadeStackView = corsika::MakeView<TestCascadeStack>::type;
+#endif
diff --git a/Framework/StackInterface/testCombinedStack.cc b/tests/framework/testCombinedStack.cpp
similarity index 92%
rename from Framework/StackInterface/testCombinedStack.cc
rename to tests/framework/testCombinedStack.cpp
index 9e4d9274f..43da9a9e7 100644
--- a/Framework/StackInterface/testCombinedStack.cc
+++ b/tests/framework/testCombinedStack.cpp
@@ -6,14 +6,15 @@
  * the license.
  */
 
-#define protected public // to also test the internal state of objects
+#include <corsika/framework/stack/CombinedStack.hpp>
+#include <corsika/framework/stack/SecondaryView.hpp>
+#include <corsika/framework/stack/Stack.hpp>
 
-#include <corsika/stack/CombinedStack.h>
-#include <corsika/stack/SecondaryView.h>
-#include <corsika/stack/Stack.h>
+#include <boost/type_index.hpp>
+#include <type_traits>
 
-#include <testTestStack.h> // for testing: simple stack. This is a
-// test-build, and inluce file is obtained from CMAKE_CURRENT_SOURCE_DIR
+#include <tests/framework/testTestStack.h> // for testing: simple stack. This is a
+using boost::typeindex::type_id_with_cvr;
 
 #include <iomanip>
 #include <vector>
@@ -21,7 +22,7 @@
 #include <catch2/catch.hpp>
 
 using namespace corsika;
-using namespace corsika::stack;
+using namespace corsika;
 using namespace std;
 
 ////////////////////////////////////////////////////////////
@@ -81,8 +82,8 @@ public:
 // combined stack: StackTest = (TestStackData + TestStackData2)
 template <typename StackIter>
 using CombinedTestInterfaceType =
-    corsika::stack::CombinedParticleInterface<TestParticleInterface,
-                                              TestParticleInterface2, StackIter>;
+    corsika::CombinedParticleInterface<TestParticleInterface, TestParticleInterface2,
+                                       StackIter>;
 
 using StackTest = CombinedStack<TestStackData, TestStackData2, CombinedTestInterfaceType>;
 
@@ -276,8 +277,8 @@ public:
 // combined stack
 template <typename StackIter>
 using CombinedTestInterfaceType2 =
-    corsika::stack::CombinedParticleInterface<StackTest::MPIType, TestParticleInterface3,
-                                              StackIter>;
+    corsika::CombinedParticleInterface<StackTest::PIType, TestParticleInterface3,
+                                       StackIter>;
 
 using StackTest2 = CombinedStack<typename StackTest::StackImpl, TestStackData3,
                                  CombinedTestInterfaceType2>;
@@ -362,8 +363,8 @@ TEST_CASE("Combined Stack - multi", "[stack]") {
  */
 template <typename StackIter>
 using CombinedTestInterfaceType2 =
-    corsika::stack::CombinedParticleInterface<StackTest::MPIType, TestParticleInterface3,
-                                              StackIter>;
+    corsika::CombinedParticleInterface<StackTest::PIType, TestParticleInterface3,
+                                       StackIter>;
 
 using StackTest2 = CombinedStack<typename StackTest::StackImpl, TestStackData3,
                                  CombinedTestInterfaceType2>;
@@ -372,7 +373,7 @@ using StackTest2 = CombinedStack<typename StackTest::StackImpl, TestStackData3,
 using StackTestView =
     SecondaryView<typename StackTest2::StackImpl, CombinedTestInterfaceType2>;
 #elif defined(__GNUC__) || defined(__GNUG__)
-using StackTestView = corsika::stack::MakeView<StackTest2>::type;
+using StackTestView = corsika::MakeView<StackTest2>::type;
 #endif
 
 using Particle2 = typename StackTest2::ParticleType;
diff --git a/Framework/Utilities/testCorsikaFenv.cc b/tests/framework/testCorsikaFenv.cpp
similarity index 52%
rename from Framework/Utilities/testCorsikaFenv.cc
rename to tests/framework/testCorsikaFenv.cpp
index ebfde1043..323c0fa18 100644
--- a/Framework/Utilities/testCorsikaFenv.cc
+++ b/tests/framework/testCorsikaFenv.cpp
@@ -6,21 +6,28 @@
  * the license.
  */
 
-#include <corsika/utl/CorsikaFenv.h>
+#include <catch2/catch.hpp>
+#include <corsika/framework/utility/CorsikaFenv.hpp>
 
 #include <cmath>
 #include <csignal>
 #include <iostream>
 
+int gRESULT = 1;
+
 extern "C" {
-static void handle_fpe(int /*signo*/) { exit(0); }
+static void handle_fpe(int /*signo*/) { gRESULT = 0; }
 }
 
-int main() {
+TEST_CASE("CorsikaFenv", "[fenv]") {
+
   feenableexcept(FE_ALL_EXCEPT);
   signal(SIGFPE, handle_fpe);
 
-  std::cout << std::log(0.) << std::endl;
+  SECTION("exception") {
 
-  exit(1);
-}
\ No newline at end of file
+    [[maybe_unused]] auto trigger = std::log(0.);
+    std::cout << "trigger: " << trigger << std::endl;
+    CHECK(gRESULT == 0);
+  }
+}
diff --git a/Framework/Geometry/testFourVector.cc b/tests/framework/testFourVector.cpp
similarity index 93%
rename from Framework/Geometry/testFourVector.cc
rename to tests/framework/testFourVector.cpp
index 4c1692582..6623eb7ca 100644
--- a/Framework/Geometry/testFourVector.cc
+++ b/tests/framework/testFourVector.cpp
@@ -8,14 +8,17 @@
 
 #include <catch2/catch.hpp>
 
-#include <corsika/geometry/CoordinateSystem.h>
-#include <corsika/geometry/FourVector.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/units/PhysicalUnits.h>
 #include <cmath>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/CoordinateSystem.hpp>
+#include <corsika/framework/geometry/FourVector.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
 
-using namespace corsika::geometry;
+#include <boost/type_index.hpp>
+using boost::typeindex::type_id_with_cvr;
+
+using namespace corsika;
 using namespace corsika::units::si;
 
 TEST_CASE("four vectors") {
diff --git a/Framework/Geometry/testGeometry.cc b/tests/framework/testGeometry.cpp
similarity index 93%
rename from Framework/Geometry/testGeometry.cc
rename to tests/framework/testGeometry.cpp
index b528bf1bf..c6b0b68e3 100644
--- a/Framework/Geometry/testGeometry.cc
+++ b/tests/framework/testGeometry.cpp
@@ -8,17 +8,17 @@
 
 #include <catch2/catch.hpp>
 
-#include <corsika/geometry/CoordinateSystem.h>
-#include <corsika/geometry/Helix.h>
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Sphere.h>
-#include <corsika/geometry/Trajectory.h>
-#include <corsika/units/PhysicalUnits.h>
 #include <cmath>
-
-using namespace corsika::geometry;
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/CoordinateSystem.hpp>
+#include <corsika/framework/geometry/Helix.hpp>
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Sphere.hpp>
+#include <corsika/framework/geometry/Trajectory.hpp>
+
+using namespace corsika;
 using namespace corsika::units::si;
 
 double constexpr absMargin = 1.0e-8;
@@ -27,8 +27,7 @@ TEST_CASE("transformations between CoordinateSystems") {
   CoordinateSystem& rootCS =
       RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
 
-  REQUIRE(CoordinateSystem::GetTransformation(rootCS, rootCS)
-              .isApprox(EigenTransform::Identity()));
+  REQUIRE(getTransformation(rootCS, rootCS).isApprox(EigenTransform::Identity()));
 
   QuantityVector<length_d> const coordinates{0_m, 0_m, 0_m};
   Point p1(rootCS, coordinates);
@@ -79,9 +78,9 @@ TEST_CASE("transformations between CoordinateSystems") {
 
     REQUIRE(cs4.GetReference()->GetReference() == &rootCS);
 
-    REQUIRE(CoordinateSystem::GetTransformation(cs3, cs2).isApprox(
+    REQUIRE(getTransformation(cs3, cs2).isApprox(
         rootCS.translate({3_m, -5_m, 0_m}).GetTransform()));
-    REQUIRE(CoordinateSystem::GetTransformation(cs2, cs3).isApprox(
+    REQUIRE(getTransformation(cs2, cs3).isApprox(
         rootCS.translate({-3_m, +5_m, 0_m}).GetTransform()));
   }
 
diff --git a/Framework/Logging/testLogging.cc b/tests/framework/testLogging.cpp
similarity index 98%
rename from Framework/Logging/testLogging.cc
rename to tests/framework/testLogging.cpp
index bf9190580..505c96c24 100644
--- a/Framework/Logging/testLogging.cc
+++ b/tests/framework/testLogging.cpp
@@ -6,7 +6,7 @@
  * the license.
  */
 
-#include <corsika/logging/Logging.h>
+#include <corsika/framework/logging/Logger.h>
 
 #include <catch2/catch.hpp>
 
diff --git a/Framework/Particles/testParticles.cc b/tests/framework/testParticles.cpp
similarity index 97%
rename from Framework/Particles/testParticles.cc
rename to tests/framework/testParticles.cpp
index 8b3f7184c..9d13c2cac 100644
--- a/Framework/Particles/testParticles.cc
+++ b/tests/framework/testParticles.cpp
@@ -6,14 +6,14 @@
  * the license.
  */
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <catch2/catch.hpp>
 
 using namespace corsika::units;
 using namespace corsika::units::si;
-using namespace corsika::particles;
+using namespace corsika;
 
 TEST_CASE("ParticleProperties", "[Particles]") {
 
diff --git a/Framework/ProcessSequence/testProcessSequence.cc b/tests/framework/testProcessSequence.cpp
similarity index 72%
rename from Framework/ProcessSequence/testProcessSequence.cc
rename to tests/framework/testProcessSequence.cpp
index 875cbc582..f506d5701 100644
--- a/Framework/ProcessSequence/testProcessSequence.cc
+++ b/tests/framework/testProcessSequence.cpp
@@ -13,13 +13,12 @@
 #include <iostream>
 #include <typeinfo>
 
-#include <corsika/process/ProcessSequence.h>
-#include <corsika/process/SwitchProcessSequence.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/sequence/ProcessSequence.hpp>
+//#include <corsika/process/SwitchProcess.hpp>
 
 using namespace corsika;
 using namespace corsika::units::si;
-using namespace corsika::process;
+using namespace corsika;
 using namespace std;
 
 static const int nData = 10;
@@ -373,107 +372,14 @@ TEST_CASE("Process Sequence", "[Process Sequence]") {
   }
 }
 
-TEST_CASE("Switch Process Sequence", "[Process Sequence]") {
-
-  SECTION("Check construction") {
-
-    struct TestSelect {
-      corsika::process::SwitchResult operator()(const DummyData& p) const {
-        std::cout << "TestSelect data=" << p.data_[0] << std::endl;
-        if (p.data_[0] > 0) return corsika::process::SwitchResult::First;
-        return corsika::process::SwitchResult::Second;
-      }
-    };
-    TestSelect select;
-
-    auto sequence1 = process::sequence(Process1(0), ContinuousProcess2(0), Decay1(0));
-    auto sequence2 = process::sequence(ContinuousProcess3(0), Process2(0), Decay2(0));
-
-    auto sequence =
-        process::sequence(ContinuousProcess1(0), Process3(0),
-                          SwitchProcessSequence(sequence1, sequence2, select));
-
-    auto sequence_alt = process::sequence(
-        ContinuousProcess1(0), Process3(0),
-        process::select(process::sequence(Process1(0), ContinuousProcess2(0), Decay1(0)),
-                        process::sequence(ContinuousProcess3(0), Process2(0), Decay2(0)),
-                        select));
-
-    // check that same process sequence can be build in different ways
-    CHECK(typeid(sequence) == typeid(sequence_alt));
-    CHECK(is_process_sequence_v<decltype(sequence)> == true);
-    CHECK(is_process_sequence_v<decltype(
-              SwitchProcessSequence(sequence1, sequence2, select))> == true);
-
-    DummyData particle;
-    DummyTrajectory track;
-    DummyView view(particle);
-
-    checkDecay = 0;
-    checkInteract = 0;
-    checkSec = 0;
-    checkCont = 0;
-    particle.data_[0] = 100; // data positive
-    sequence.DoContinuous(particle, track);
-    CHECK(checkInteract == 0);
-    CHECK(checkDecay == 0);
-    CHECK(checkCont == 0b011);
-    CHECK(checkSec == 0);
-
-    checkDecay = 0;
-    checkInteract = 0;
-    checkSec = 0;
-    checkCont = 0;
-    particle.data_[0] = -100; // data negative
-    sequence_alt.DoContinuous(particle, track);
-    CHECK(checkInteract == 0);
-    CHECK(checkDecay == 0);
-    CHECK(checkCont == 0b101);
-    CHECK(checkSec == 0);
-
-    // 1/(30g/cm2) is Process3
-    corsika::units::si::InverseGrammageType lambda_select = .9 / 30. * square(1_cm) / 1_g;
-    corsika::units::si::InverseTimeType time_select = 0.1 / second;
-
-    checkDecay = 0;
-    checkInteract = 0;
-    checkSec = 0;
-    checkCont = 0;
-    particle.data_[0] = 100; // data positive
-    sequence.SelectInteraction(view, lambda_select);
-    sequence.SelectDecay(view, time_select);
-    CHECK(checkInteract == 0b100); // this is Process3
-    CHECK(checkDecay == 0b001);    // this is Decay1
-    CHECK(checkCont == 0);
-    CHECK(checkSec == 0);
-    lambda_select = 1.01 / 30. * square(1_cm) / 1_g;
-    checkInteract = 0;
-    sequence.SelectInteraction(view, lambda_select);
-    CHECK(checkInteract == 0b001); // this is Process1
-
-    checkDecay = 0;
-    checkInteract = 0;
-    checkSec = 0;
-    checkCont = 0;
-    particle.data_[0] = -100; // data negative
-    sequence.SelectInteraction(view, lambda_select);
-    sequence.SelectDecay(view, time_select);
-    CHECK(checkInteract == 0b010); // this is Process2
-    CHECK(checkDecay == 0b010);    // this is Decay2
-    CHECK(checkCont == 0);
-    CHECK(checkSec == 0);
-
-    checkDecay = 0;
-    checkInteract = 0;
-    checkSec = 0;
-    checkCont = 0;
-    particle.data_[0] = -100; // data negative
-    sequence.DoSecondaries(view);
-    Stack1 stack(0);
-    sequence.DoStack(stack);
-    CHECK(checkInteract == 0);
-    CHECK(checkDecay == 0);
-    CHECK(checkCont == 0);
-    CHECK(checkSec == 0);
-  }
-}
+/*
+  Note: there is a fine-grained dedicated test-suite for SwitchProcess
+  in Processes/SwitchProcess/testSwtichProcess
+ */
+/*
+TEST_CASE("SwitchProcess") {
+  Process1 p1(0);
+  Process2 p2(0);
+  switch_process::SwitchProcess s(p1, p2, 10_GeV);
+  REQUIRE(is_switch_process_v<decltype(s)>);
+  }*/
diff --git a/Framework/Random/testRandom.cc b/tests/framework/testRandom.cpp
similarity index 57%
rename from Framework/Random/testRandom.cc
rename to tests/framework/testRandom.cpp
index d9053f74d..5a8bcb0f5 100644
--- a/Framework/Random/testRandom.cc
+++ b/tests/framework/testRandom.cpp
@@ -1,6 +1,8 @@
 /*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
+ * See file AUTHORS for a list of contributors.
+ *
  * This software is distributed under the terms of the GNU General Public
  * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
  * the license.
@@ -8,46 +10,33 @@
 
 #include <catch2/catch.hpp>
 
-#include <corsika/random/ExponentialDistribution.h>
-#include <corsika/random/RNGManager.h>
-#include <corsika/random/UniformRealDistribution.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/random/ExponentialDistribution.hpp>
+#include <corsika/framework/random/RNGManager.hpp>
+#include <corsika/framework/random/UniformRealDistribution.hpp>
 #include <iostream>
 #include <limits>
 #include <random>
+#include <type_traits>
 
-using namespace corsika::random;
+using namespace corsika;
 
 SCENARIO("random-number streams can be registered and retrieved") {
   GIVEN("a RNGManager") {
     RNGManager& rngManager = RNGManager::GetInstance();
 
-    WHEN("the sequence name is not registered") {
-      REQUIRE(rngManager.IsRegistered("stream_A") == false);
-
-      THEN("a sequence is registered by name") {
-        rngManager.RegisterRandomStream("stream_A");
-
-        THEN("the sequence can be retrieved") {
-          REQUIRE_NOTHROW(rngManager.GetRandomStream("stream_A"));
-
-          THEN("we can check that the sequence exists") {
-            REQUIRE_NOTHROW(rngManager.GetRandomStream("stream_A"));
+    WHEN("a sequence is registered by name") {
+      rngManager.RegisterRandomStream("stream_A");
 
-            THEN("an unknown sequence cannot be retrieved") {
-              REQUIRE(rngManager.IsRegistered("stream_A") == true);
-
-              THEN("an unknown sequence cannot be retrieved") {
-                REQUIRE_THROWS(rngManager.GetRandomStream("stream_UNKNOWN"));
+      THEN("the sequence can be retrieved") {
+        REQUIRE_NOTHROW(rngManager.GetRandomStream("stream_A"));
+      }
 
-                THEN("an unknown sequence is not registered") {
-                  REQUIRE(rngManager.IsRegistered("stream_UNKNOWN") == false);
-                }
-              }
-            }
-          }
-        }
+      THEN("an unknown sequence cannot be retrieved") {
+        REQUIRE_THROWS(rngManager.GetRandomStream("stream_UNKNOWN"));
       }
+
+      // seeding not covered yet
     }
   }
 }
@@ -56,10 +45,10 @@ TEST_CASE("UniformRealDistribution") {
   using namespace corsika::units::si;
   std::mt19937 rng;
 
-  corsika::random::UniformRealDistribution<LengthType> dist(1_m, 2_m);
+  corsika::UniformRealDistribution<LengthType> dist(1_m, 2_m);
 
   SECTION("range") {
-    corsika::random::UniformRealDistribution<LengthType> dist(1_m, 2_m);
+    corsika::UniformRealDistribution<LengthType> dist(1_m, 2_m);
 
     LengthType min =
         +1_m * std::numeric_limits<typename LengthType::value_type>::infinity();
@@ -77,7 +66,7 @@ TEST_CASE("UniformRealDistribution") {
   }
 
   SECTION("range") {
-    corsika::random::UniformRealDistribution<LengthType> dist(18_cm);
+    corsika::UniformRealDistribution<LengthType> dist(18_cm);
 
     LengthType min =
         +1_m * std::numeric_limits<typename LengthType::value_type>::infinity();
@@ -101,7 +90,7 @@ TEST_CASE("ExponentialDistribution") {
 
   auto const beta = 15_m;
 
-  corsika::random::ExponentialDistribution dist(beta);
+  corsika::ExponentialDistribution dist(beta);
 
   SECTION("mean") {
     std::remove_const<decltype(beta)>::type mean = beta * 0;
diff --git a/Framework/StackInterface/testSecondaryView.cc b/tests/framework/testSecondaryView.cpp
similarity index 95%
rename from Framework/StackInterface/testSecondaryView.cc
rename to tests/framework/testSecondaryView.cpp
index 9cd1e4666..ab8f1a85d 100644
--- a/Framework/StackInterface/testSecondaryView.cc
+++ b/tests/framework/testSecondaryView.cpp
@@ -6,13 +6,14 @@
  * the license.
  */
 
-#define protected public // to also test the internal state of objects
+#include <corsika/framework/stack/SecondaryView.hpp>
+#include <corsika/framework/stack/Stack.hpp>
 
-#include <corsika/stack/SecondaryView.h>
-#include <corsika/stack/Stack.h>
+#include <boost/type_index.hpp>
+#include <type_traits>
 
-#include <testTestStack.h> // for testing: simple stack. This is a
-// test-build, and inluce file is obtained from CMAKE_CURRENT_SOURCE_DIR
+#include <tests/framework/testTestStack.h> // for testing: simple stack. This is a
+using boost::typeindex::type_id_with_cvr;
 
 #include <iomanip>
 #include <vector>
@@ -20,7 +21,7 @@
 #include <catch2/catch.hpp>
 
 using namespace corsika;
-using namespace corsika::stack;
+using namespace corsika;
 using namespace std;
 
 typedef Stack<TestStackData, TestParticleInterface> StackTest;
diff --git a/Framework/StackInterface/testStackInterface.cc b/tests/framework/testStackInterface.cpp
similarity index 94%
rename from Framework/StackInterface/testStackInterface.cc
rename to tests/framework/testStackInterface.cpp
index af1f217ad..5e34a0560 100644
--- a/Framework/StackInterface/testStackInterface.cc
+++ b/tests/framework/testStackInterface.cpp
@@ -6,13 +6,13 @@
  * the license.
  */
 
-#define protected public // to also test the internal state of objects
+#include <corsika/framework/stack/Stack.hpp>
 
-#include <corsika/stack/Stack.h>
+#include <boost/type_index.hpp>
+#include <type_traits>
 
-#include <testTestStack.h> // simple test-stack for testing. This is
-                           // for testing only: include from
-                           // CMAKE_CURRENT_SOURCE_DIR
+#include <tests/framework/testTestStack.h> // simple test-stack for testing. This is
+using boost::typeindex::type_id_with_cvr;
 
 #include <iomanip>
 #include <tuple>
@@ -21,7 +21,7 @@
 #include <catch2/catch.hpp>
 
 using namespace corsika;
-using namespace corsika::stack;
+using namespace corsika;
 using namespace std;
 
 typedef Stack<TestStackData, TestParticleInterface> StackTest;
diff --git a/Framework/StackInterface/testTestStack.h b/tests/framework/testTestStack.h
similarity index 89%
rename from Framework/StackInterface/testTestStack.h
rename to tests/framework/testTestStack.h
index 9765dda8b..9aaa63320 100644
--- a/Framework/StackInterface/testTestStack.h
+++ b/tests/framework/testTestStack.h
@@ -1,4 +1,4 @@
-/*
+n/*
  * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
  *
  * This software is distributed under the terms of the GNU General Public
@@ -8,7 +8,7 @@
 
 #pragma once
 
-#include <corsika/stack/Stack.h>
+#include <corsika/framework/stack/Stack.hpp>
 #include <tuple>
 #include <vector>
 
@@ -59,12 +59,11 @@ private:
  *
  */
 template <typename StackIteratorInterface>
-class TestParticleInterface
-    : public corsika::stack::ParticleBase<StackIteratorInterface> {
+class TestParticleInterface : public corsika::ParticleBase<StackIteratorInterface> {
 
 public:
-  using corsika::stack::ParticleBase<StackIteratorInterface>::GetStackData;
-  using corsika::stack::ParticleBase<StackIteratorInterface>::GetIndex;
+  using corsika::ParticleBase<StackIteratorInterface>::GetStackData;
+  using corsika::ParticleBase<StackIteratorInterface>::GetIndex;
 
   /*
      The SetParticleData methods are called for creating new entries
diff --git a/Framework/Units/testUnits.cc b/tests/framework/testUnits.cpp
similarity index 98%
rename from Framework/Units/testUnits.cc
rename to tests/framework/testUnits.cpp
index bae1ce1d7..1bd307bde 100644
--- a/Framework/Units/testUnits.cc
+++ b/tests/framework/testUnits.cpp
@@ -8,7 +8,7 @@
 
 #include <catch2/catch.hpp>
 
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <array>
 #include <sstream>
diff --git a/tests/media/CMakeLists.txt b/tests/media/CMakeLists.txt
new file mode 100644
index 000000000..25e0d35d3
--- /dev/null
+++ b/tests/media/CMakeLists.txt
@@ -0,0 +1,26 @@
+
+set (sources
+  TestMain.cpp
+  testEnvironment.cpp
+  )
+
+
+add_executable (testEnvironment ${sources})
+
+target_link_libraries (testEnvironment CORSIKA8 Catch2)
+
+target_compile_options (testEnvironment PRIVATE -g) # do not skip asserts
+
+target_include_directories (testEnvironment PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+
+file (MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/test_outputs/)
+
+if (CORSIKA_SANITIZERS_ENABLED)
+  # -O1 is suggested in clang docs to get reasonable performance
+  target_compile_options (${name} PRIVATE -O1 -fno-omit-frame-pointer -fsanitize=${sanitize} -fno-sanitize-recover=all)
+  set_target_properties (${name} PROPERTIES LINK_FLAGS "-fsanitize=${sanitize}")
+endif ()
+
+add_test (
+  NAME testEnvironment
+  COMMAND testEnvironment -o ${PROJECT_BINARY_DIR}/test_outputs/junit-media.xml -s -r junit)
diff --git a/tests/media/TestMain.cpp b/tests/media/TestMain.cpp
new file mode 100644
index 000000000..da6f2c3f1
--- /dev/null
+++ b/tests/media/TestMain.cpp
@@ -0,0 +1,13 @@
+/*
+ * (c) Copyright 2019 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one
+                          // cpp file
+#include <catch2/catch.hpp>
diff --git a/Environment/testEnvironment.cc b/tests/media/testEnvironment.cpp
similarity index 91%
rename from Environment/testEnvironment.cc
rename to tests/media/testEnvironment.cpp
index eecae6292..bce84c881 100644
--- a/Environment/testEnvironment.cc
+++ b/tests/media/testEnvironment.cpp
@@ -6,37 +6,28 @@
  * the license.
  */
 
-#include <corsika/environment/DensityFunction.h>
-#include <corsika/environment/FlatExponential.h>
-#include <corsika/environment/HomogeneousMedium.h>
-#include <corsika/environment/IMagneticFieldModel.h>
-#include <corsika/environment/IMediumModel.h>
-#include <corsika/environment/IMediumPropertyModel.h>
-#include <corsika/environment/IRefractiveIndexModel.h>
-#include <corsika/environment/InhomogeneousMedium.h>
-#include <corsika/environment/LayeredSphericalAtmosphereBuilder.h>
-#include <corsika/environment/LinearApproximationIntegrator.h>
-#include <corsika/environment/MediumPropertyModel.h>
-#include <corsika/environment/NuclearComposition.h>
-#include <corsika/environment/SlidingPlanarExponential.h>
-#include <corsika/environment/UniformMagneticField.h>
-#include <corsika/environment/UniformRefractiveIndex.h>
-#include <corsika/environment/VolumeTreeNode.h>
-#include <corsika/geometry/Line.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Line.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/media/DensityFunction.hpp>
+#include <corsika/media/FlatExponential.hpp>
+#include <corsika/media/HomogeneousMedium.hpp>
+#include <corsika/media/IMediumModel.hpp>
+#include <corsika/media/InhomogeneousMedium.hpp>
+#include <corsika/media/LayeredSphericalAtmosphereBuilder.hpp>
+#include <corsika/media/LinearApproximationIntegrator.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+#include <corsika/media/SlidingPlanarExponential.hpp>
+#include <corsika/media/VolumeTreeNode.hpp>
 
 #include <corsika/setup/SetupTrajectory.h>
 
 #include <catch2/catch.hpp>
 
-using namespace corsika::geometry;
-using namespace corsika::environment;
-using namespace corsika::particles;
-using namespace corsika::units::si;
 using namespace corsika;
+using namespace corsika::units::si;
 
 CoordinateSystem const& gCS =
     RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
@@ -142,7 +133,7 @@ TEST_CASE("SlidingPlanarExponential") {
 auto constexpr rho0 = 1_kg / 1_m / 1_m / 1_m;
 
 struct Exponential {
-  auto operator()(corsika::geometry::Point const& p) const {
+  auto operator()(corsika::Point const& p) const {
     return exp(p.GetCoordinates()[0] / 1_m) * rho0;
   }
 
@@ -203,13 +194,8 @@ TEST_CASE("InhomogeneousMedium") {
 }
 
 TEST_CASE("LayeredSphericalAtmosphereBuilder") {
-
-  LayeredSphericalAtmosphereBuilder builder =
-      environment::make_layered_spherical_atmosphere_builder<>::create(
-          gOrigin, units::constants::EarthRadius::Mean);
-
-  builder.setNuclearComposition(
-      {{{particles::Code::Nitrogen, particles::Code::Oxygen}}, {{.6, .4}}});
+  LayeredSphericalAtmosphereBuilder builder(gOrigin);
+  builder.setNuclearComposition({{{Code::Nitrogen, Code::Oxygen}}, {{.6, .4}}});
 
   builder.addLinearLayer(1_km, 10_km);
   builder.addLinearLayer(2_km, 20_km);
diff --git a/tests/modules/CMakeLists.txt b/tests/modules/CMakeLists.txt
new file mode 100644
index 000000000..f4c2fea50
--- /dev/null
+++ b/tests/modules/CMakeLists.txt
@@ -0,0 +1,26 @@
+
+set (test_modules_sources
+  TestMain.cpp
+  testSibyll.cpp
+  )
+
+
+add_executable (testModules ${test_modules_sources})
+
+target_link_libraries (testModules CORSIKA8 Sibyll_static Catch2)
+
+target_compile_options (testModules PRIVATE -g) # do not skip asserts
+
+target_include_directories (testModules PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+
+file (MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/test_outputs/)
+
+if (CORSIKA_SANITIZERS_ENABLED)
+  # -O1 is suggested in clang docs to get reasonable performance
+  target_compile_options (${name} PRIVATE -O1 -fno-omit-frame-pointer -fsanitize=${sanitize} -fno-sanitize-recover=all)
+  set_target_properties (${name} PROPERTIES LINK_FLAGS "-fsanitize=${sanitize}")
+endif ()
+
+add_test (
+  NAME testModules
+  COMMAND testModules -o ${PROJECT_BINARY_DIR}/test_outputs/junit-modules.xml -s -r junit)
diff --git a/tests/modules/TestMain.cpp b/tests/modules/TestMain.cpp
new file mode 100644
index 000000000..da6f2c3f1
--- /dev/null
+++ b/tests/modules/TestMain.cpp
@@ -0,0 +1,13 @@
+/*
+ * (c) Copyright 2019 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one
+                          // cpp file
+#include <catch2/catch.hpp>
diff --git a/tests/modules/testSibyll.cpp b/tests/modules/testSibyll.cpp
new file mode 100644
index 000000000..0fbb7dffd
--- /dev/null
+++ b/tests/modules/testSibyll.cpp
@@ -0,0 +1,191 @@
+/*
+ * (c) Copyright 2019 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/modules/sibyll/Decay.hpp>
+#include <corsika/modules/sibyll/Interaction.hpp>
+#include <corsika/modules/sibyll/NuclearInteraction.hpp>
+#include <corsika/modules/sibyll/ParticleConversion.hpp>
+#include <corsika/modules/sibyll/Random.hpp>
+
+#include <corsika/framework/random/RNGManager.hpp>
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+
+#include <catch2/catch.hpp>
+#include <tuple>
+
+using namespace corsika;
+using namespace corsika::sibyll;
+
+TEST_CASE("Sibyll", "[processes]") {
+
+  SECTION("Sibyll -> Corsika") {
+    REQUIRE(Electron::GetCode() ==
+            corsika::sibyll::ConvertFromSibyll(corsika::sibyll::SibyllCode::Electron));
+  }
+
+  SECTION("Corsika -> Sibyll") {
+    REQUIRE(corsika::sibyll::ConvertToSibyll(Electron::GetCode()) ==
+            corsika::sibyll::SibyllCode::Electron);
+    REQUIRE(corsika::sibyll::ConvertToSibyllRaw(Proton::GetCode()) == 13);
+  }
+
+  SECTION("canInteractInSibyll") {
+
+    REQUIRE(corsika::sibyll::CanInteract(Proton::GetCode()));
+    REQUIRE(corsika::sibyll::CanInteract(Code::XiCPlus));
+
+    REQUIRE_FALSE(corsika::sibyll::CanInteract(Electron::GetCode()));
+    REQUIRE_FALSE(corsika::sibyll::CanInteract(SigmaC0::GetCode()));
+
+    REQUIRE_FALSE(corsika::sibyll::CanInteract(Nucleus::GetCode()));
+    REQUIRE_FALSE(corsika::sibyll::CanInteract(Helium::GetCode()));
+  }
+
+  SECTION("cross-section type") {
+
+    REQUIRE(corsika::sibyll::GetSibyllXSCode(Code::Electron) == 0);
+    REQUIRE(corsika::sibyll::GetSibyllXSCode(Code::K0Long) == 3);
+    REQUIRE(corsika::sibyll::GetSibyllXSCode(Code::SigmaPlus) == 1);
+    REQUIRE(corsika::sibyll::GetSibyllXSCode(Code::PiMinus) == 2);
+  }
+}
+
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
+
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
+
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/HomogeneousMedium.hpp>
+#include <corsika/media/NuclearComposition.hpp>
+
+#include <sibyll2.3d.hpp>
+
+using namespace corsika::units::si;
+using namespace corsika::units;
+
+TEST_CASE("SibyllInterface", "[processes]") {
+
+  // setup environment, geometry
+  corsika::Environment<corsika::IMediumModel> env;
+  auto& universe = *(env.GetUniverse());
+
+  auto theMedium =
+      corsika::Environment<corsika::IMediumModel>::CreateNode<corsika::Sphere>(
+          corsika::Point{env.GetCoordinateSystem(), 0_m, 0_m, 0_m},
+          1_km * std::numeric_limits<double>::infinity());
+
+  using MyHomogeneousModel = corsika::HomogeneousMedium<corsika::IMediumModel>;
+  theMedium->SetModelProperties<MyHomogeneousModel>(
+      1_kg / (1_m * 1_m * 1_m),
+      corsika::NuclearComposition(std::vector<Code>{Code::Oxygen},
+                                  std::vector<float>{1.}));
+
+  auto const* nodePtr = theMedium.get();
+  universe.AddChild(std::move(theMedium));
+
+  const corsika::CoordinateSystem& cs = env.GetCoordinateSystem();
+
+  corsika::RNGManager::GetInstance().RegisterRandomStream("s_rndm");
+
+  SECTION("InteractionInterface") {
+
+    corsika::setup::Stack stack;
+    const HEPEnergyType E0 = 100_GeV;
+    HEPMomentumType P0 = sqrt(E0 * E0 - Proton::GetMass() * Proton::GetMass());
+    auto plab = corsika::MomentumVector(cs, {0_GeV, 0_GeV, -P0});
+    corsika::Point pos(cs, 0_m, 0_m, 0_m);
+    auto particle = stack.AddParticle(
+        std::tuple<Code, corsika::units::si::HEPEnergyType, corsika::MomentumVector,
+                   corsika::Point, corsika::units::si::TimeType>{Code::Proton, E0, plab,
+                                                                 pos, 0_ns});
+    particle.SetNode(nodePtr);
+    corsika::SecondaryView view(particle);
+    auto projectile = view.GetProjectile();
+
+    Interaction model;
+
+    model.Init();
+    [[maybe_unused]] const corsika::EProcessReturn ret = model.DoInteraction(projectile);
+    [[maybe_unused]] const GrammageType length = model.GetInteractionLength(particle);
+  }
+
+  SECTION("NuclearInteractionInterface") {
+
+    setup::Stack stack;
+    const HEPEnergyType E0 = 400_GeV;
+    HEPMomentumType P0 = sqrt(E0 * E0 - Proton::GetMass() * Proton::GetMass());
+    auto plab = corsika::MomentumVector(cs, {0_GeV, 0_GeV, -P0});
+    corsika::Point pos(cs, 0_m, 0_m, 0_m);
+
+    auto particle = stack.AddParticle(
+        std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                   corsika::Point, units::si::TimeType, unsigned short, unsigned short>{
+            Code::Nucleus, E0, plab, pos, 0_ns, 4, 2});
+    particle.SetNode(nodePtr);
+    corsika::SecondaryView view(particle);
+    auto projectile = view.GetProjectile();
+
+    Interaction hmodel;
+    NuclearInteraction model(hmodel, env);
+
+    model.Init();
+    [[maybe_unused]] const corsika::EProcessReturn ret = model.DoInteraction(projectile);
+    [[maybe_unused]] const GrammageType length = model.GetInteractionLength(particle);
+  }
+
+  SECTION("DecayInterface") {
+
+    setup::Stack stack;
+    const HEPEnergyType E0 = 10_GeV;
+    HEPMomentumType P0 = sqrt(E0 * E0 - Proton::GetMass() * Proton::GetMass());
+    auto plab = corsika::MomentumVector(cs, {0_GeV, 0_GeV, -P0});
+    corsika::Point pos(cs, 0_m, 0_m, 0_m);
+    auto particle = stack.AddParticle(
+        std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                   corsika::Point, units::si::TimeType>{Code::Lambda0, E0, plab, pos,
+                                                        0_ns});
+    corsika::SecondaryView view(particle);
+    auto projectile = view.GetProjectile();
+
+    Decay model;
+
+    model.Init();
+    /*[[maybe_unused]] const corsika::EProcessReturn ret =*/model.DoDecay(projectile);
+    // run checks
+    [[maybe_unused]] const TimeType time = model.GetLifetime(particle);
+  }
+
+  SECTION("DecayConfiguration") {
+
+    Decay model;
+
+    const std::vector<Code> particleTestList = {Code::PiPlus, Code::PiMinus,
+                                                Code::KPlus,  Code::Lambda0Bar,
+                                                Code::NuE,    Code::D0Bar};
+
+    for (auto& pCode : particleTestList) {
+      model.SetUnstable(pCode);
+      // get state of sibyll internal config
+      REQUIRE(0 <= s_csydec_.idb[abs(corsika::sibyll::ConvertToSibyllRaw(pCode)) - 1]);
+
+      model.SetStable(pCode);
+      // get state of sibyll internal config
+      REQUIRE(0 >= s_csydec_.idb[abs(corsika::sibyll::ConvertToSibyllRaw(pCode)) - 1]);
+    }
+  }
+}
diff --git a/tests/processes/TrackingLine/testTrackingLineStack.h b/tests/processes/TrackingLine/testTrackingLineStack.h
new file mode 100644
index 000000000..96998fe6e
--- /dev/null
+++ b/tests/processes/TrackingLine/testTrackingLineStack.h
@@ -0,0 +1,34 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#pragma once
+
+#include <corsika/media/Environment.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/setup/SetupStack.hpp>
+
+using TestEnvironmentType =
+    corsika::environment::Environment<corsika::environment::Empty>;
+
+template <typename T>
+using SetupGeometryDataInterface =
+    corsika::stack::node::GeometryDataInterface<T, TestEnvironmentType>;
+
+// combine particle data stack with geometry information for tracking
+template <typename StackIter>
+using StackWithGeometryInterface = corsika::CombinedParticleInterface<
+    corsika::detail::ParticleDataStack::PIType, SetupGeometryDataInterface,
+    StackIter>;
+using TestTrackingLineStack = corsika::CombinedStack<
+    typename corsika::detail::ParticleDataStack::StackImpl,
+    GeometryData<TestEnvironmentType>, StackWithGeometryInterface>;
+
+
diff --git a/Processes/NullModel/testNullModel.cc b/tests/processes/testNullModel.cc
similarity index 64%
rename from Processes/NullModel/testNullModel.cc
rename to tests/processes/testNullModel.cc
index cc142637f..853361352 100644
--- a/Processes/NullModel/testNullModel.cc
+++ b/tests/processes/testNullModel.cc
@@ -8,19 +8,19 @@
 
 #include <catch2/catch.hpp>
 
-#include <corsika/process/null_model/NullModel.h>
+#include <corsika/process/NullModel.hpp>
 
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
 
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
 
 using namespace corsika::units::si;
-using namespace corsika::process::null_model;
+using namespace corsika::null_model;
 using namespace corsika;
 
 TEST_CASE("NullModel", "[processes]") {
@@ -41,6 +41,13 @@ TEST_CASE("NullModel", "[processes]") {
   geometry::Line line(origin, v);
   geometry::Trajectory<geometry::Line> track(line, 10_s);
 
+  setup::Stack stack;
+  setup::Stack::ParticleType particle = stack.AddParticle(
+      std::tuple<particles::Code, units::si::HEPEnergyType,
+                 corsika::MomentumVector, geometry::Point, units::si::TimeType>{
+          particles::Code::Electron, 100_GeV,
+          corsika::MomentumVector(dummyCS, {0_GeV, 0_GeV, -1_GeV}),
+          geometry::Point(dummyCS, {0_m, 0_m, 10_km}), 0_ns});
   SECTION("interface") {
 
     NullModel model(10_m);
diff --git a/Processes/ObservationPlane/testObservationPlane.cc b/tests/processes/testObservationPlane.cc
similarity index 70%
rename from Processes/ObservationPlane/testObservationPlane.cc
rename to tests/processes/testObservationPlane.cc
index ddaaaad96..243d091ce 100644
--- a/Processes/ObservationPlane/testObservationPlane.cc
+++ b/tests/processes/testObservationPlane.cc
@@ -10,23 +10,23 @@
                           // cpp file
 #include <catch2/catch.hpp>
 
-#include <corsika/process/observation_plane/ObservationPlane.h>
+#include <corsika/process/ObservationPlane.hpp>
 
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <corsika/setup/SetupStack.h>
 #include <corsika/setup/SetupTrajectory.h>
 
 using namespace corsika::units::si;
-using namespace corsika::process::observation_plane;
+using namespace corsika::observation_plane;
+using namespace corsika;
+using namespace corsika;
 using namespace corsika;
-using namespace corsika::geometry;
-using namespace corsika::particles;
 
 TEST_CASE("ContinuousProcess interface", "[proccesses][observation_plane]") {
 
@@ -50,10 +50,24 @@ TEST_CASE("ContinuousProcess interface", "[proccesses][observation_plane]") {
   Vector<units::si::SpeedType::dimension_type> vec(cs, 0_m / second, 0_m / second,
                                                    -units::constants::c);
   Line line(start, vec);
-  setup::Trajectory track =
-      setup::testing::make_track<setup::Trajectory>(line, 12_m / units::constants::c);
-
-  particle.SetPosition(Point(cs, {1_m, 1_m, 10_m})); // moving already along -z
+  Trajectory<Line> track(line, 12_m / units::constants::c);
+
+  // setup particle stack, and add primary particle
+  setup::Stack stack;
+  stack.Clear();
+  {
+    auto elab2plab = [](HEPEnergyType Elab, HEPMassType m) {
+      return sqrt((Elab - m) * (Elab + m));
+    };
+    stack.AddParticle(
+        std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector, Point,
+                   units::si::TimeType>{
+            Code::NuMu, 1_GeV,
+            corsika::MomentumVector(
+                rootCS, {0_GeV, 0_GeV, -elab2plab(1_GeV, NuMu::GetMass())}),
+            Point(rootCS, {1_m, 1_m, 10_m}), 0_ns});
+  }
+  auto particle = stack.GetNextParticle();
 
   SECTION("horizontal plane") {
 
diff --git a/Processes/ParticleCut/testParticleCut.cc b/tests/processes/testParticleCut.cc
similarity index 75%
rename from Processes/ParticleCut/testParticleCut.cc
rename to tests/processes/testParticleCut.cc
index c2343f763..7385a82b5 100644
--- a/Processes/ParticleCut/testParticleCut.cc
+++ b/tests/processes/testParticleCut.cc
@@ -6,22 +6,20 @@
  * the license.
  */
 
-#include <corsika/process/particle_cut/ParticleCut.h>
+#include <corsika/process/ParticleCut.hpp>
 
-#include <corsika/environment/Environment.h>
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
-#include <corsika/units/PhysicalUnits.h>
-#include <corsika/utl/CorsikaFenv.h>
-
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
+#include <corsika/media/Environment.hpp>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/utility/CorsikaFenv.hpp>
 
 #include <catch2/catch.hpp>
+#include <corsika/setup/SetupStack.hpp>
 
 using namespace corsika;
-using namespace corsika::process::particle_cut;
+using namespace corsika::particle_cut;
 using namespace corsika::units;
 using namespace corsika::units::si;
 
@@ -56,24 +54,23 @@ TEST_CASE("ParticleCut", "[processes]") {
     // add primary particle to stack
     auto particle = stack.AddParticle(
         std::tuple<particles::Code, units::si::HEPEnergyType,
-                   corsika::stack::MomentumVector, geometry::Point, units::si::TimeType>{
+                   corsika::MomentumVector, geometry::Point, units::si::TimeType>{
             particles::Code::Proton, Eabove,
-            corsika::stack::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}), point0, 0_ns});
+            corsika::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}),
+            geometry::Point(rootCS, 0_m, 0_m, 0_m), 0_ns});
     // view on secondary particles
-    setup::StackView view(particle);
+    corsika::SecondaryView view(particle);
     // ref. to primary particle through the secondary view.
     // only this way the secondary view is populated
     auto projectile = view.GetProjectile();
     // add secondaries, all with energies above the threshold
     // only cut is by species
     for (auto proType : particleList)
-      projectile.AddSecondary(std::make_tuple(
-          proType, Eabove, corsika::stack::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}),
-          point0, 0_ns));
-    CHECK(view.getEntries() == 11);
-    CHECK(stack.getEntries() == 12);
-
-    cut.DoSecondaries(view);
+      projectile.AddSecondary(std::tuple<particles::Code, units::si::HEPEnergyType,
+                                         corsika::MomentumVector, geometry::Point,
+                                         units::si::TimeType>{
+          proType, Eabove, corsika::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}),
+          geometry::Point(rootCS, 0_m, 0_m, 0_m), 0_ns});
 
     CHECK(view.getEntries() == 9);
     CHECK(cut.GetNumberInvParticles() == 2);
@@ -111,30 +108,25 @@ TEST_CASE("ParticleCut", "[processes]") {
     ParticleCut cut(20_GeV, true, true);
 
     // add primary particle to stack
-    auto particle = stack.AddParticle(std::make_tuple(
-        particles::Code::Proton, Eabove,
-        corsika::stack::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}), point0, 0_ns));
+    auto particle = stack.AddParticle(
+        std::tuple<particles::Code, units::si::HEPEnergyType,
+                   corsika::MomentumVector, geometry::Point, units::si::TimeType>{
+            particles::Code::Proton, Eabove,
+            corsika::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}),
+            geometry::Point(rootCS, 0_m, 0_m, 0_m), 0_ns});
     // view on secondary particles
-    setup::StackView view{particle};
+    corsika::SecondaryView view(particle);
     // ref. to primary particle through the secondary view.
     // only this way the secondary view is populated
     auto projectile = view.GetProjectile();
     // add secondaries, all with energies below the threshold
     // only cut is by species
     for (auto proType : particleList)
-      projectile.AddSecondary(std::make_tuple(
-          proType, Ebelow, corsika::stack::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}),
-          point0, 0_ns));
-    unsigned short A = 18;
-    unsigned short Z = 8;
-    projectile.AddSecondary(
-        std::make_tuple(particles::Code::Nucleus, Eabove * A,
-                        corsika::stack::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}),
-                        point0, 0_ns, A, Z));
-    projectile.AddSecondary(
-        std::make_tuple(particles::Code::Nucleus, Ebelow * A,
-                        corsika::stack::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}),
-                        point0, 0_ns, A, Z));
+      projectile.AddSecondary(std::tuple<particles::Code, units::si::HEPEnergyType,
+                                         corsika::MomentumVector, geometry::Point,
+                                         units::si::TimeType>{
+          proType, Ebelow, corsika::MomentumVector(rootCS, {0_GeV, 0_GeV, 0_GeV}),
+          geometry::Point(rootCS, 0_m, 0_m, 0_m), 0_ns});
 
     cut.DoSecondaries(view);
 
diff --git a/Processes/QGSJetII/testQGSJetII.cc b/tests/processes/testQGSJetII.cc
similarity index 63%
rename from Processes/QGSJetII/testQGSJetII.cc
rename to tests/processes/testQGSJetII.cc
index 84dad94cf..ca203d3f9 100644
--- a/Processes/QGSJetII/testQGSJetII.cc
+++ b/tests/processes/testQGSJetII.cc
@@ -6,15 +6,14 @@
  * the license.
  */
 
-#include <corsika/process/qgsjetII/Interaction.h>
-#include <corsika/process/qgsjetII/ParticleConversion.h>
+#include <corsika/process/QGSJetII.hpp>
 
-#include <corsika/random/RNGManager.h>
+#include <corsika/framework/random/RNGManager.hpp>
 
-#include <corsika/particles/ParticleProperties.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
 
-#include <corsika/geometry/Point.h>
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
 #include <catch2/catch.hpp>
 
@@ -23,42 +22,7 @@
 #include <iostream>
 
 using namespace corsika;
-using namespace corsika::process::qgsjetII;
-using namespace corsika::units::si;
-
-template <typename TStackView>
-auto sumCharge(TStackView const& view) {
-  int totalCharge = 0;
-
-  for (auto const& p : view) { totalCharge += particles::GetChargeNumber(p.GetPID()); }
-
-  return totalCharge;
-}
-
-template <typename TStackView>
-auto sumMomentum(TStackView const& view, geometry::CoordinateSystem const& vCS) {
-  geometry::Vector<hepenergy_d> sum{vCS, 0_eV, 0_eV, 0_eV};
-
-  for (auto const& p : view) { sum += p.GetMomentum(); }
-
-  return sum;
-}
-
-TEST_CASE("CORSIKA_DATA", "[processes]") {
-
-  SECTION("check CORSIKA_DATA") {
-
-    const char* data = std::getenv("CORSIKA_DATA");
-    // these REQUIRES are needed:
-    REQUIRE(data != 0);
-    REQUIRE(std::experimental::filesystem::is_directory(
-        std::experimental::filesystem::path(std::string(data) + "/QGSJetII")));
-    std::cout << "data: " << data << " isDir: "
-              << std::experimental::filesystem::is_directory(std::string(data) +
-                                                             "/QGSJetII")
-              << std::endl;
-  }
-}
+using namespace corsika::qgsjetII;
 
 TEST_CASE("QgsjetII", "[processes]") {
 
@@ -103,16 +67,19 @@ TEST_CASE("QgsjetII", "[processes]") {
   }
 }
 
-#include <corsika/geometry/Point.h>
-#include <corsika/geometry/RootCoordinateSystem.h>
-#include <corsika/geometry/Vector.h>
+#include <corsika/framework/geometry/Point.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+#include <corsika/framework/geometry/Vector.hpp>
+
+#include <corsika/framework/core/PhysicalUnits.hpp>
 
-#include <corsika/units/PhysicalUnits.h>
+#include <corsika/framework/core/ParticleProperties.hpp>
+#include <corsika/setup/SetupStack.hpp>
+#include <corsika/setup/SetupTrajectory.hpp>
 
-#include <corsika/particles/ParticleProperties.h>
-#include <corsika/setup/SetupEnvironment.h>
-#include <corsika/setup/SetupStack.h>
-#include <corsika/setup/SetupTrajectory.h>
+#include <corsika/media/Environment.hpp>
+#include <corsika/media/HomogeneousMedium.hpp>
+#include <corsika/media/NuclearComposition.hpp>
 
 using namespace corsika::units::si;
 using namespace corsika::units;
@@ -128,12 +95,23 @@ TEST_CASE("QgsjetIIInterface", "[processes]") {
 
   SECTION("InteractionInterface") {
 
-    auto [stackPtr, secViewPtr] = setup::testing::setupStack(particles::Code::Proton, 0,
-                                                             0, 110_GeV, nodePtr, *csPtr);
-    setup::StackView& view = *(secViewPtr.get());
-    auto particle = stackPtr->first();
-    auto projectile = secViewPtr->GetProjectile();
-    auto const projectileMomentum = projectile.GetMomentum();
+    setup::Stack stack;
+    const HEPEnergyType E0 = 100_GeV;
+    HEPMomentumType P0 =
+        sqrt(E0 * E0 - particles::Proton::GetMass() * particles::Proton::GetMass());
+    auto plab = corsika::MomentumVector(cs, {0_GeV, 0_GeV, -P0});
+    geometry::Point pos(cs, 0_m, 0_m, 0_m);
+    auto particle =
+        stack.AddParticle(std::tuple<particles::Code, units::si::HEPEnergyType,
+                                     corsika::MomentumVector, geometry::Point,
+                                     units::si::TimeType, unsigned int, unsigned int>{
+            particles::Code::Nucleus, E0, plab, pos, 0_ns, 16, 8});
+    // corsika::MomentumVector, geometry::Point, units::si::TimeType>{
+    //	  particles::Code::PiPlus, E0, plab, pos, 0_ns});
+
+    particle.SetNode(nodePtr);
+    corsika::SecondaryView view(particle);
+    auto projectile = view.GetProjectile();
 
     Interaction model;
 
diff --git a/tests/stack/CMakeLists.txt b/tests/stack/CMakeLists.txt
new file mode 100644
index 000000000..70045765c
--- /dev/null
+++ b/tests/stack/CMakeLists.txt
@@ -0,0 +1,28 @@
+
+set (sources
+  TestMain.cpp
+  testSuperStupidStack.cpp
+  testNuclearStackExtension.cpp
+  )
+
+
+add_executable (testStack ${sources})
+
+target_link_libraries (testStack CORSIKA8 Catch2)
+
+target_compile_options (testStack PRIVATE -g) # do not skip asserts
+
+target_include_directories (testStack PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+
+file (MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/test_outputs/)
+
+if (CORSIKA_SANITIZERS_ENABLED)
+  # -O1 is suggested in clang docs to get reasonable performance
+  target_compile_options (${name} PRIVATE -O1 -fno-omit-frame-pointer -fsanitize=${sanitize} -fno-sanitize-recover=all)
+  set_target_properties (${name} PROPERTIES LINK_FLAGS "-fsanitize=${sanitize}")
+endif ()
+
+add_test (
+  NAME testStack
+  COMMAND testStack -o ${PROJECT_BINARY_DIR}/test_outputs/junit-${name}.xml -s -r junit
+  )
diff --git a/tests/stack/TestMain.cpp b/tests/stack/TestMain.cpp
new file mode 100644
index 000000000..da6f2c3f1
--- /dev/null
+++ b/tests/stack/TestMain.cpp
@@ -0,0 +1,13 @@
+/*
+ * (c) Copyright 2019 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * See file AUTHORS for a list of contributors.
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#define CATCH_CONFIG_MAIN // This tells Catch to provide a main() - only do this in one
+                          // cpp file
+#include <catch2/catch.hpp>
diff --git a/tests/stack/testNuclearStackExtension.cpp b/tests/stack/testNuclearStackExtension.cpp
new file mode 100644
index 000000000..ba09fded0
--- /dev/null
+++ b/tests/stack/testNuclearStackExtension.cpp
@@ -0,0 +1,262 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/stack/NuclearStackExtension.h>
+#include <corsika/stack/SuperStupidStack.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+
+using namespace corsika;
+using namespace corsika::nuclear_extension;
+using namespace corsika;
+using namespace corsika::units::si;
+
+#include <catch2/catch.hpp>
+
+// this is an auxiliary help typedef, which I don't know how to put
+// into NuclearStackExtension.h where it belongs...
+template <typename StackIter>
+using ExtendedParticleInterfaceType =
+    corsika::nuclear_extension::NuclearParticleInterface<
+        corsika::super_stupid::SuperStupidStack::template PIType, StackIter>;
+
+using ExtStack = NuclearStackExtension<corsika::super_stupid::SuperStupidStack,
+                                       ExtendedParticleInterfaceType>;
+
+#include <iostream>
+using namespace std;
+
+TEST_CASE("NuclearStackExtension", "[stack]") {
+
+  CoordinateSystem& dummyCS =
+      RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+
+  SECTION("write non nucleus") {
+    NuclearStackExtension<corsika::super_stupid::SuperStupidStack,
+                          ExtendedParticleInterfaceType>
+        s;
+    s.AddParticle(std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                             Point, units::si::TimeType>{
+        Code::Electron, 1.5_GeV, corsika::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s});
+    REQUIRE(s.GetSize() == 1);
+  }
+
+  SECTION("write nucleus") {
+    NuclearStackExtension<corsika::super_stupid::SuperStupidStack,
+                          ExtendedParticleInterfaceType>
+        s;
+    s.AddParticle(std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                             Point, units::si::TimeType, unsigned short, unsigned short>{
+        Code::Nucleus, 1.5_GeV, corsika::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 10, 10});
+    REQUIRE(s.GetSize() == 1);
+  }
+
+  SECTION("write invalid nucleus") {
+    ExtStack s;
+    REQUIRE_THROWS(s.AddParticle(
+        std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector, Point,
+                   units::si::TimeType, unsigned short, unsigned short>{
+            Code::Nucleus, 1.5_GeV,
+            corsika::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+            Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 0, 0}));
+  }
+
+  SECTION("read non nucleus") {
+    ExtStack s;
+    s.AddParticle(std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                             Point, units::si::TimeType>{
+        Code::Electron, 1.5_GeV, corsika::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s});
+    const auto pout = s.GetNextParticle();
+    REQUIRE(pout.GetPID() == Code::Electron);
+    REQUIRE(pout.GetEnergy() == 1.5_GeV);
+    REQUIRE(pout.GetTime() == 100_s);
+  }
+
+  SECTION("read nucleus") {
+    ExtStack s;
+    s.AddParticle(std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                             Point, units::si::TimeType, unsigned short, unsigned short>{
+        Code::Nucleus, 1.5_GeV, corsika::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 10, 9});
+    const auto pout = s.GetNextParticle();
+    REQUIRE(pout.GetPID() == Code::Nucleus);
+    REQUIRE(pout.GetEnergy() == 1.5_GeV);
+    REQUIRE(pout.GetTime() == 100_s);
+    REQUIRE(pout.GetNuclearA() == 10);
+    REQUIRE(pout.GetNuclearZ() == 9);
+  }
+
+  SECTION("read invalid nucleus") {
+    ExtStack s;
+    s.AddParticle(std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                             Point, units::si::TimeType>{
+        Code::Electron, 1.5_GeV, corsika::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s});
+    const auto pout = s.GetNextParticle();
+    CHECK_THROWS(pout.GetNuclearA());
+    CHECK_THROWS(pout.GetNuclearZ());
+  }
+
+  SECTION("stack fill and cleanup") {
+
+    ParticleDataStack s;
+    // add 99 particles, each 10th particle is a nucleus with A=i and Z=A/2!
+    for (int i = 0; i < 99; ++i) {
+      if ((i + 1) % 10 == 0) {
+        s.AddParticle(
+            std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector, Point,
+                       units::si::TimeType, unsigned short, unsigned short>{
+                Code::Nucleus, 1.5_GeV,
+                corsika::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+                Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, i, i / 2});
+      } else {
+        s.AddParticle(std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                                 Point, units::si::TimeType>{
+            Code::Electron, 1.5_GeV,
+            corsika::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+            Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s});
+      }
+    }
+
+    CHECK(s.getEntries() == 99);
+    for (int i = 0; i < 99; ++i) s.GetNextParticle().Delete();
+    CHECK(s.getEntries() == 0);
+  }
+
+  SECTION("stack operations") {
+
+    ParticleDataStack s;
+    // add 99 particles, each 10th particle is a nucleus with A=i and Z=A/2!
+    // i=9, 19, 29, etc. are nuclei
+    for (int i = 0; i < 99; ++i) {
+      if ((i + 1) % 10 == 0) {
+        s.AddParticle(
+            std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector, Point,
+                       units::si::TimeType, unsigned short, unsigned short>{
+                Code::Nucleus, i * 15_GeV,
+                corsika::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+                Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, i, i / 2});
+      } else {
+        s.AddParticle(std::tuple<Code, units::si::HEPEnergyType, corsika::MomentumVector,
+                                 Point, units::si::TimeType>{
+            Code::Electron, i * 1.5_GeV,
+            corsika::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+            Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s});
+      }
+    }
+
+    // copy
+    {
+      s.Copy(s.begin() + 9, s.begin() + 10); // nuclei to non-nuclei
+      const auto& p9 = s.cbegin() + 9;
+      const auto& p10 = s.cbegin() + 10;
+
+      REQUIRE(p9.GetPID() == Code::Nucleus);
+      REQUIRE(p9.GetEnergy() == 9 * 15_GeV);
+      REQUIRE(p9.GetTime() == 100_s);
+      REQUIRE(p9.GetNuclearA() == 9);
+      REQUIRE(p9.GetNuclearZ() == 9 / 2);
+
+      REQUIRE(p10.GetPID() == Code::Nucleus);
+      REQUIRE(p10.GetEnergy() == 9 * 15_GeV);
+      REQUIRE(p10.GetTime() == 100_s);
+      REQUIRE(p10.GetNuclearA() == 9);
+      REQUIRE(p10.GetNuclearZ() == 9 / 2);
+    }
+
+    // copy
+    {
+      s.Copy(s.begin() + 93, s.begin() + 9); // non-nuclei to nuclei
+      const auto& p93 = s.cbegin() + 93;
+      const auto& p9 = s.cbegin() + 9;
+
+      REQUIRE(p9.GetPID() == Code::Electron);
+      REQUIRE(p9.GetEnergy() == 93 * 1.5_GeV);
+      REQUIRE(p9.GetTime() == 100_s);
+
+      REQUIRE(p93.GetPID() == Code::Electron);
+      REQUIRE(p93.GetEnergy() == 93 * 1.5_GeV);
+      REQUIRE(p93.GetTime() == 100_s);
+    }
+
+    // swap
+    {
+      s.Swap(s.begin() + 11, s.begin() + 10);
+      const auto& p11 = s.cbegin() + 11; // now: nucleus
+      const auto& p10 = s.cbegin() + 10; // now: electron
+
+      REQUIRE(p11.GetPID() == Code::Nucleus);
+      REQUIRE(p11.GetEnergy() == 9 * 15_GeV);
+      REQUIRE(p11.GetTime() == 100_s);
+      REQUIRE(p11.GetNuclearA() == 9);
+      REQUIRE(p11.GetNuclearZ() == 9 / 2);
+
+      REQUIRE(p10.GetPID() == Code::Electron);
+      REQUIRE(p10.GetEnergy() == 11 * 1.5_GeV);
+      REQUIRE(p10.GetTime() == 100_s);
+    }
+
+    // swap two nuclei
+    {
+      s.Swap(s.begin() + 29, s.begin() + 59);
+      const auto& p29 = s.cbegin() + 29;
+      const auto& p59 = s.cbegin() + 59;
+
+      REQUIRE(p29.GetPID() == Code::Nucleus);
+      REQUIRE(p29.GetEnergy() == 59 * 15_GeV);
+      REQUIRE(p29.GetTime() == 100_s);
+      REQUIRE(p29.GetNuclearA() == 59);
+      REQUIRE(p29.GetNuclearZ() == 59 / 2);
+
+      REQUIRE(p59.GetPID() == Code::Nucleus);
+      REQUIRE(p59.GetEnergy() == 29 * 15_GeV);
+      REQUIRE(p59.GetTime() == 100_s);
+      REQUIRE(p59.GetNuclearA() == 29);
+      REQUIRE(p59.GetNuclearZ() == 29 / 2);
+    }
+
+    for (int i = 0; i < 99; ++i) s.last().Delete();
+    CHECK(s.getEntries() == 0);
+  }
+
+  SECTION("not allowed") {
+    NuclearStackExtension<corsika::stack::super_stupid::SuperStupidStack,
+                          ExtendedParticleInterfaceType>
+        s;
+
+    // not valid:
+    CHECK_THROWS(s.AddParticle(std::make_tuple(
+        particles::Code::Oxygen, 1.5_GeV,
+        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 16, 8)));
+
+    // valid
+    auto particle = s.AddParticle(
+        std::make_tuple(particles::Code::Nucleus, 1.5_GeV,
+                        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+                        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 10, 9));
+
+    // not valid
+    CHECK_THROWS(particle.AddSecondary(std::make_tuple(
+        particles::Code::Oxygen, 1.5_GeV,
+        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 16, 8)));
+
+    // add a another nucleus, so there are two now
+    s.AddParticle(
+        std::make_tuple(particles::Code::Nucleus, 1.5_GeV,
+                        corsika::stack::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+                        Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s, 10, 9));
+
+    // not valid, since end() is not a valid entry
+    CHECK_THROWS(s.Swap(s.begin(), s.end()));
+  }
+}
diff --git a/tests/stack/testSuperStupidStack.cpp b/tests/stack/testSuperStupidStack.cpp
new file mode 100644
index 000000000..b566d952e
--- /dev/null
+++ b/tests/stack/testSuperStupidStack.cpp
@@ -0,0 +1,68 @@
+/*
+ * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
+ *
+ * This software is distributed under the terms of the GNU General Public
+ * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
+ * the license.
+ */
+
+#include <corsika/stack/SuperStupidStack.h>
+#include <corsika/framework/core/PhysicalUnits.hpp>
+#include <corsika/framework/geometry/RootCoordinateSystem.hpp>
+
+using namespace corsika;
+using namespace corsika::units::si;
+
+#include <catch2/catch.hpp>
+
+using namespace corsika;
+using namespace corsika::super_stupid;
+
+using namespace std;
+
+TEST_CASE("SuperStupidStack", "[stack]") {
+
+  CoordinateSystem& dummyCS =
+      RootCoordinateSystem::GetInstance().GetRootCoordinateSystem();
+
+  SECTION("read+write") {
+
+    SuperStupidStack s;
+    s.AddParticle(
+        std::tuple<corsika::Code, corsika::units::si::HEPEnergyType,
+                   corsika::MomentumVector, corsika::Point, corsika::units::si::TimeType>{
+            Code::Electron, 1.5_GeV,
+            corsika::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+            Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s});
+
+    // read
+    CHECK(s.getEntries() == 1);
+    CHECK(s.getSize() == 1);
+    auto pout = s.GetNextParticle();
+    REQUIRE(pout.GetPID() == Code::Electron);
+    REQUIRE(pout.GetEnergy() == 1.5_GeV);
+    // REQUIRE(pout.GetMomentum() == stack::MomentumVector(dummyCS, {1_GeV,
+    // 1_GeV, 1_GeV})); REQUIRE(pout.GetPosition() == Point(dummyCS, {1 * meter, 1 *
+    // meter, 1 * meter}));
+    REQUIRE(pout.GetTime() == 100_s);
+  }
+
+  SECTION("write+delete") {
+
+    SuperStupidStack s;
+    for (int i = 0; i < 99; ++i)
+      s.AddParticle(std::tuple<corsika::Code, corsika::units::si::HEPEnergyType,
+                               corsika::MomentumVector, corsika::Point,
+                               corsika::units::si::TimeType>{
+          Code::Electron, 1.5_GeV,
+          corsika::MomentumVector(dummyCS, {1_GeV, 1_GeV, 1_GeV}),
+          Point(dummyCS, {1 * meter, 1 * meter, 1 * meter}), 100_s});
+
+    CHECK(s.getSize() == 99);
+
+    for (int i = 0; i < 99; ++i) s.GetNextParticle().Delete();
+
+    CHECK(s.getEntries() == 0);
+    CHECK(s.getSize() == 1);
+  }
+}
diff --git a/Tools/plot_crossings.sh b/tools/plot_crossings.sh
similarity index 100%
rename from Tools/plot_crossings.sh
rename to tools/plot_crossings.sh
diff --git a/Tools/plot_tracks.sh b/tools/plot_tracks.sh
similarity index 100%
rename from Tools/plot_tracks.sh
rename to tools/plot_tracks.sh
-- 
GitLab